Make the templates of mocking api flexible
Rename mock_webgpu to mock_api and define the function "GetProcTableAndDevice" to "GetProcTable" for removing the special arguments "WGPUDevice* device" that can be got with "GetNewDevice()".
BUG=dawn:1201
Change-Id: I4fc47e4497ba4b6d280cc8af8605f1d93f43497e
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/72761
Reviewed-by: Jiawei Shao <jiawei.shao@intel.com>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Junwei Fu <junwei.fu@intel.com>
diff --git a/generator/dawn_json_generator.py b/generator/dawn_json_generator.py
index b7efbb0..ffee315 100644
--- a/generator/dawn_json_generator.py
+++ b/generator/dawn_json_generator.py
@@ -726,7 +726,7 @@
def add_commandline_arguments(self, parser):
allowed_targets = [
'dawn_headers', 'dawncpp_headers', 'dawncpp', 'dawn_proc',
- 'mock_webgpu', 'dawn_wire', "dawn_native_utils"
+ 'mock_api', 'dawn_wire', "dawn_native_utils"
]
parser.add_argument('--dawn-json',
@@ -823,25 +823,25 @@
FileRender('api_cpp.cpp', 'emscripten-bits/' + api + '_cpp.cpp',
[RENDER_PARAMS_BASE, params_emscripten]))
renders.append(
- FileRender('webgpu_struct_info.json',
- 'emscripten-bits/webgpu_struct_info.json',
+ FileRender('api_struct_info.json',
+ 'emscripten-bits/' + api + '_struct_info.json',
[RENDER_PARAMS_BASE, params_emscripten]))
renders.append(
- FileRender('library_webgpu_enum_tables.js',
- 'emscripten-bits/library_webgpu_enum_tables.js',
+ FileRender('library_api_enum_tables.js',
+ 'emscripten-bits/library_' + api + '_enum_tables.js',
[RENDER_PARAMS_BASE, params_emscripten]))
- if 'mock_webgpu' in targets:
+ if 'mock_api' in targets:
mock_params = [
RENDER_PARAMS_BASE, params_dawn, {
'has_callback_arguments': has_callback_arguments
}
]
renders.append(
- FileRender('mock_webgpu.h', 'src/dawn/mock_webgpu.h',
+ FileRender('mock_api.h', 'src/dawn/mock_' + api + '.h',
mock_params))
renders.append(
- FileRender('mock_webgpu.cpp', 'src/dawn/mock_webgpu.cpp',
+ FileRender('mock_api.cpp', 'src/dawn/mock_' + api + '.cpp',
mock_params))
if 'dawn_native_utils' in targets:
diff --git a/generator/templates/webgpu_struct_info.json b/generator/templates/api_struct_info.json
similarity index 92%
rename from generator/templates/webgpu_struct_info.json
rename to generator/templates/api_struct_info.json
index 6dd38af..ff3a35c 100644
--- a/generator/templates/webgpu_struct_info.json
+++ b/generator/templates/api_struct_info.json
@@ -19,10 +19,11 @@
//* https://github.com/emscripten-core/emscripten/blob/master/src/struct_info.json
//*
{
- "file": "webgpu/webgpu.h",
+ {% set api = metadata.api.lower() %}
+ "file": "{api}/{api}.h",
"defines": [],
"structs": {
- "WGPUChainedStruct": [
+ "{{metatdata.c_prefix}}ChainedStruct": [
"next",
"sType"
],
diff --git a/generator/templates/library_webgpu_enum_tables.js b/generator/templates/library_api_enum_tables.js
similarity index 100%
rename from generator/templates/library_webgpu_enum_tables.js
rename to generator/templates/library_api_enum_tables.js
diff --git a/generator/templates/mock_webgpu.cpp b/generator/templates/mock_api.cpp
similarity index 95%
rename from generator/templates/mock_webgpu.cpp
rename to generator/templates/mock_api.cpp
index d25793b..bf8f871 100644
--- a/generator/templates/mock_webgpu.cpp
+++ b/generator/templates/mock_api.cpp
@@ -12,7 +12,8 @@
//* See the License for the specific language governing permissions and
//* limitations under the License.
-#include "mock_webgpu.h"
+{% set api = metadata.api.lower() %}
+#include "mock_{{api}}.h"
using namespace testing;
@@ -40,9 +41,8 @@
ProcTableAsClass::~ProcTableAsClass() {
}
-void ProcTableAsClass::GetProcTableAndDevice(DawnProcTable* table, WGPUDevice* device) {
- *device = GetNewDevice();
-
+{% set Prefix = metadata.proc_table_prefix %}
+void ProcTableAsClass::GetProcTable({{Prefix}}ProcTable* table) {
{% for type in by_category["object"] %}
{% for method in c_methods(type) %}
table->{{as_varName(type.name, method.name)}} = reinterpret_cast<{{as_cProc(type.name, method.name)}}>(Forward{{as_MethodSuffix(type.name, method.name)}});
diff --git a/generator/templates/mock_webgpu.h b/generator/templates/mock_api.h
similarity index 94%
rename from generator/templates/mock_webgpu.h
rename to generator/templates/mock_api.h
index ea583fa..1c0a880 100644
--- a/generator/templates/mock_webgpu.h
+++ b/generator/templates/mock_api.h
@@ -12,11 +12,15 @@
//* See the License for the specific language governing permissions and
//* limitations under the License.
-#ifndef MOCK_WEBGPU_H
-#define MOCK_WEBGPU_H
+{% set API = metadata.api.upper() %}
+{% set api = API.lower() %}
+#ifndef MOCK_{{API}}_H
+#define MOCK_{{API}}_H
-#include <dawn/dawn_proc_table.h>
-#include <dawn/webgpu.h>
+{% set Prefix = metadata.proc_table_prefix %}
+{% set prefix = Prefix.lower() %}
+#include <dawn/{{prefix}}_proc_table.h>
+#include <dawn/{{api}}.h>
#include <gmock/gmock.h>
#include <memory>
@@ -28,7 +32,7 @@
public:
virtual ~ProcTableAsClass();
- void GetProcTableAndDevice(DawnProcTable* table, WGPUDevice* device);
+ void GetProcTable({{Prefix}}ProcTable* table);
// Creates an object that can be returned by a mocked call as in WillOnce(Return(foo)).
// It returns an object of the write type that isn't equal to any previously returned object.
@@ -131,4 +135,4 @@
{% endfor %}
};
-#endif // MOCK_WEBGPU_H
+#endif // MOCK_{{API}}_H
diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn
index 59544b3..db919f4 100644
--- a/src/tests/BUILD.gn
+++ b/src/tests/BUILD.gn
@@ -119,7 +119,7 @@
###############################################################################
dawn_json_generator("mock_webgpu_gen") {
- target = "mock_webgpu"
+ target = "mock_api"
outputs = [
"src/dawn/mock_webgpu.h",
"src/dawn/mock_webgpu.cpp",
diff --git a/src/tests/unittests/wire/WireTest.cpp b/src/tests/unittests/wire/WireTest.cpp
index 557bba4..db64325 100644
--- a/src/tests/unittests/wire/WireTest.cpp
+++ b/src/tests/unittests/wire/WireTest.cpp
@@ -38,8 +38,8 @@
void WireTest::SetUp() {
DawnProcTable mockProcs;
- WGPUDevice mockDevice;
- api.GetProcTableAndDevice(&mockProcs, &mockDevice);
+ api.GetProcTable(&mockProcs);
+ WGPUDevice mockDevice = api.GetNewDevice();
// This SetCallback call cannot be ignored because it is done as soon as we start the server
EXPECT_CALL(api, OnDeviceSetUncapturedErrorCallback(_, _, _)).Times(Exactly(1));