diff --git a/src/dawn_native/Device.cpp b/src/dawn_native/Device.cpp index e97a4bd030..8102600571 100644 --- a/src/dawn_native/Device.cpp +++ b/src/dawn_native/Device.cpp @@ -711,9 +711,10 @@ namespace dawn_native { ComputePipelineBase* result = nullptr; if (IsToggleEnabled(Toggle::DisallowUnsafeAPIs)) { - ConsumedError( - DAWN_VALIDATION_ERROR("CreateComputePipelineAsync is disallowed because it isn't " - "completely implemented yet.")); + callback(WGPUCreatePipelineAsyncStatus_Error, nullptr, + "CreateComputePipelineAsync is disallowed because it isn't completely " + "implemented yet.", + userdata); return; } @@ -763,9 +764,10 @@ namespace dawn_native { RenderPipelineBase* result = nullptr; if (IsToggleEnabled(Toggle::DisallowUnsafeAPIs)) { - ConsumedError( - DAWN_VALIDATION_ERROR("CreateRenderPipelineAsync is disallowed because it isn't " - "completely implemented yet.")); + callback(WGPUCreatePipelineAsyncStatus_Error, nullptr, + "CreateRenderPipelineAsync is disallowed because it isn't completely " + "implemented yet.", + userdata); return; } diff --git a/src/tests/unittests/validation/UnsafeAPIValidationTests.cpp b/src/tests/unittests/validation/UnsafeAPIValidationTests.cpp index bb07e48ad5..587a60fa3e 100644 --- a/src/tests/unittests/validation/UnsafeAPIValidationTests.cpp +++ b/src/tests/unittests/validation/UnsafeAPIValidationTests.cpp @@ -14,6 +14,7 @@ #include "tests/unittests/validation/ValidationTest.h" +#include "tests/MockCallback.h" #include "utils/ComboRenderBundleEncoderDescriptor.h" #include "utils/ComboRenderPipelineDescriptor.h" #include "utils/WGPUHelpers.h" @@ -223,15 +224,13 @@ TEST_F(UnsafeAPIValidationTest, CreateComputePipelineAsyncDisallowed) { // Control case: CreateComputePipeline is allowed. device.CreateComputePipeline(&desc); + testing::MockCallback callback; + EXPECT_CALL(callback, + Call(WGPUCreatePipelineAsyncStatus_Error, nullptr, testing::NotNull(), this)); // Error case: CreateComputePipelineAsync is disallowed. - ASSERT_DEVICE_ERROR(device.CreateComputePipelineAsync( - &desc, - [](WGPUCreatePipelineAsyncStatus status, WGPUComputePipeline returnPipeline, - const char* message, void* userdata) { - // Status can be Error or Unkown (when using the wire). - EXPECT_NE(WGPUCreatePipelineAsyncStatus::WGPUCreatePipelineAsyncStatus_Success, status); - }, - nullptr)); + device.CreateComputePipelineAsync(&desc, callback.Callback(), callback.MakeUserdata(this)); + + WaitForAllOperations(device); } // Check that CreateRenderPipelineAsync is disallowed as part of unsafe APIs @@ -252,13 +251,11 @@ TEST_F(UnsafeAPIValidationTest, CreateRenderPipelineAsyncDisallowed) { // Control case: CreateRenderPipeline is allowed. device.CreateRenderPipeline(&desc); + testing::MockCallback callback; + EXPECT_CALL(callback, + Call(WGPUCreatePipelineAsyncStatus_Error, nullptr, testing::NotNull(), this)); // Error case: CreateRenderPipelineAsync is disallowed. - ASSERT_DEVICE_ERROR(device.CreateRenderPipelineAsync( - &desc, - [](WGPUCreatePipelineAsyncStatus status, WGPURenderPipeline returnPipeline, - const char* message, void* userdata) { - // Status can be Error or Unkown (when using the wire). - EXPECT_NE(WGPUCreatePipelineAsyncStatus::WGPUCreatePipelineAsyncStatus_Success, status); - }, - nullptr)); + device.CreateRenderPipelineAsync(&desc, callback.Callback(), callback.MakeUserdata(this)); + + WaitForAllOperations(device); }