[dawn][test] Update all RequestAdapter usages in tests to new API.

Bug: 369445924
Change-Id: I0b266abfb966d6e47df3cb0bbc1273d2bbc7dcf0
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/218695
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Shrek Shao <shrekshao@google.com>
Auto-Submit: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/tests/end2end/AdapterCreationTests.cpp b/src/dawn/tests/end2end/AdapterCreationTests.cpp
index 7b72e0d..d7e06a4 100644
--- a/src/dawn/tests/end2end/AdapterCreationTests.cpp
+++ b/src/dawn/tests/end2end/AdapterCreationTests.cpp
@@ -46,10 +46,14 @@
 
 using testing::_;
 using testing::EmptySizedString;
-using testing::MockCallback;
-using testing::SaveArg;
+using testing::IsNull;
+using testing::MockCppCallback;
+using testing::StrictMock;
+using testing::WithArg;
 
-class AdapterCreationTest : public ::testing::TestWithParam<std::optional<wgpu::CallbackMode>> {
+using MockRequestAdapterCallback = MockCppCallback<wgpu::RequestAdapterCallback2<void>*>;
+
+class AdapterCreationTest : public ::testing::TestWithParam<wgpu::CallbackMode> {
   protected:
     void SetUp() override {
         // TODO(345685638): these tests are timed out on TSAN bots.
@@ -83,24 +87,13 @@
         dawnProcSetProcs(nullptr);
     }
 
-    void RequestAdapter(const wgpu::Instance& inst,
-                        const wgpu::RequestAdapterOptions* options,
-                        WGPURequestAdapterCallback callback,
-                        void* userdata) {
-        if (GetParam() == std::nullopt) {
-            // Legacy RequestAdapter. It should call the callback immediately.
-            inst.RequestAdapter(options, callback, userdata);
-            return;
-        }
-
-        wgpu::Future future =
-            inst.RequestAdapter(options, {nullptr, *GetParam(), callback, userdata});
-        switch (*GetParam()) {
+    void RequestAdapter(const wgpu::Instance& inst, const wgpu::RequestAdapterOptions* options) {
+        wgpu::CallbackMode callbackMode = GetParam();
+        wgpu::Future future = inst.RequestAdapter(options, callbackMode, mMockCb.Callback());
+        switch (callbackMode) {
             case wgpu::CallbackMode::WaitAnyOnly: {
                 // Callback should complete as soon as poll once.
-                wgpu::FutureWaitInfo waitInfo = {future};
-                EXPECT_EQ(inst.WaitAny(1, &waitInfo, 0), wgpu::WaitStatus::Success);
-                ASSERT_TRUE(waitInfo.completed);
+                EXPECT_EQ(inst.WaitAny(future, 0), wgpu::WaitStatus::Success);
                 break;
             }
             case wgpu::CallbackMode::AllowSpontaneous:
@@ -113,54 +106,46 @@
     }
 
     wgpu::Instance instance;
+    StrictMock<MockRequestAdapterCallback> mMockCb;
     bool anyAdapterAvailable = false;
     bool swiftShaderAvailable = false;
     bool discreteGPUAvailable = false;
     bool integratedGPUAvailable = false;
 };
 
-INSTANTIATE_TEST_SUITE_P(
-    ,
-    AdapterCreationTest,
-    ::testing::ValuesIn(std::initializer_list<std::optional<wgpu::CallbackMode>>{
-        wgpu::CallbackMode::WaitAnyOnly, wgpu::CallbackMode::AllowProcessEvents,
-        wgpu::CallbackMode::AllowSpontaneous, std::nullopt}));
+INSTANTIATE_TEST_SUITE_P(,
+                         AdapterCreationTest,
+                         ::testing::ValuesIn(std::initializer_list<wgpu::CallbackMode>{
+                             wgpu::CallbackMode::WaitAnyOnly,
+                             wgpu::CallbackMode::AllowProcessEvents,
+                             wgpu::CallbackMode::AllowSpontaneous}));
 
-// Test that requesting the default adapter works
-TEST_P(AdapterCreationTest, DefaultAdapter) {
+// Test that requesting the default adapter works and is non-compat.
+TEST_P(AdapterCreationTest, DefaultNonCompatAdapter) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
+    RequestAdapter(instance, &options);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
+
+    wgpu::AdapterInfo info;
+    adapter.GetInfo(&info);
+    EXPECT_FALSE(info.compatibilityMode);
 }
 
 // Test that passing nullptr for the options gets the default adapter
 TEST_P(AdapterCreationTest, NullGivesDefaultAdapter) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
+    RequestAdapter(instance, nullptr);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
-
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this + 1))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, nullptr, cb.Callback(), cb.MakeUserdata(this + 1));
-
-    wgpu::Adapter adapter2 = wgpu::Adapter::Acquire(cAdapter);
-    EXPECT_EQ(adapter2 != nullptr, anyAdapterAvailable);
 }
 
 // Test that requesting the fallback adapter returns SwiftShader.
@@ -168,19 +153,16 @@
     wgpu::RequestAdapterOptions options = {};
     options.forceFallbackAdapter = true;
 
-    MockCallback<WGPURequestAdapterCallback> cb;
-
-    WGPUAdapter cAdapter = nullptr;
+    wgpu::Adapter adapter;
     if (swiftShaderAvailable) {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     } else {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Unavailable, nullptr, _, this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Unavailable, IsNull(), _))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     }
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
+    RequestAdapter(instance, &options);
 
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, swiftShaderAvailable);
     if (adapter != nullptr) {
         wgpu::AdapterInfo info;
@@ -196,19 +178,16 @@
     wgpu::RequestAdapterOptions options = {};
     options.powerPreference = wgpu::PowerPreference::HighPerformance;
 
-    MockCallback<WGPURequestAdapterCallback> cb;
-
-    WGPUAdapter cAdapter = nullptr;
+    wgpu::Adapter adapter;
     if (anyAdapterAvailable) {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     } else {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Unavailable, nullptr, _, this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Unavailable, IsNull(), _))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     }
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
+    RequestAdapter(instance, &options);
 
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (discreteGPUAvailable) {
         wgpu::AdapterInfo info;
@@ -225,19 +204,16 @@
     wgpu::RequestAdapterOptions options = {};
     options.powerPreference = wgpu::PowerPreference::LowPower;
 
-    MockCallback<WGPURequestAdapterCallback> cb;
-
-    WGPUAdapter cAdapter = nullptr;
+    wgpu::Adapter adapter;
     if (anyAdapterAvailable) {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     } else {
-        EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Unavailable, nullptr, _, this))
-            .WillOnce(SaveArg<1>(&cAdapter));
+        EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Unavailable, IsNull(), _))
+            .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
     }
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
+    RequestAdapter(instance, &options);
 
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (integratedGPUAvailable) {
         wgpu::AdapterInfo info;
@@ -254,54 +230,27 @@
     wgpu::RequestAdapterOptions options = {};
     options.compatibilityMode = true;
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
-
     wgpu::AdapterInfo info;
     adapter.GetInfo(&info);
     EXPECT_TRUE(info.compatibilityMode);
 }
 
-// Test that requesting a Non-Compatibility adapter is supported and is default.
-TEST_P(AdapterCreationTest, NonCompatibility) {
-    wgpu::RequestAdapterOptions options = {};
-
-    MockCallback<WGPURequestAdapterCallback> cb;
-
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
-    EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
-
-    wgpu::AdapterInfo info;
-    adapter.GetInfo(&info);
-    EXPECT_FALSE(info.compatibilityMode);
-}
-
 // Test that GetInstance() returns the correct Instance.
 TEST_P(AdapterCreationTest, GetInstance) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
-
     EXPECT_EQ(adapter.GetInstance().Get(), instance.Get());
 }
 
@@ -310,14 +259,11 @@
 TEST_P(AdapterCreationTest, InfoUnique) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (!adapter) {
         return;
@@ -342,14 +288,11 @@
 TEST_P(AdapterCreationTest, InfoMoveAssign) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (!adapter) {
         return;
@@ -403,14 +346,11 @@
 TEST_P(AdapterCreationTest, InfoMoveConstruct) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (!adapter) {
         return;
@@ -462,14 +402,11 @@
 TEST_P(AdapterCreationTest, InfoOutliveAdapter) {
     wgpu::RequestAdapterOptions options = {};
 
-    MockCallback<WGPURequestAdapterCallback> cb;
+    wgpu::Adapter adapter;
+    EXPECT_CALL(mMockCb, Call(wgpu::RequestAdapterStatus::Success, _, EmptySizedString()))
+        .WillOnce(WithArg<1>([&](wgpu::Adapter result) { adapter = std::move(result); }));
+    RequestAdapter(instance, &options);
 
-    WGPUAdapter cAdapter = nullptr;
-    EXPECT_CALL(cb, Call(WGPURequestAdapterStatus_Success, _, EmptySizedString(), this))
-        .WillOnce(SaveArg<1>(&cAdapter));
-    RequestAdapter(instance, &options, cb.Callback(), cb.MakeUserdata(this));
-
-    wgpu::Adapter adapter = wgpu::Adapter::Acquire(cAdapter);
     EXPECT_EQ(adapter != nullptr, anyAdapterAvailable);
     if (!adapter) {
         return;
diff --git a/src/dawn/tests/unittests/wire/WireDeviceLifetimeTests.cpp b/src/dawn/tests/unittests/wire/WireDeviceLifetimeTests.cpp
index 996d0c3..e0bb03a 100644
--- a/src/dawn/tests/unittests/wire/WireDeviceLifetimeTests.cpp
+++ b/src/dawn/tests/unittests/wire/WireDeviceLifetimeTests.cpp
@@ -53,13 +53,11 @@
         options.backendType = wgpu::BackendType::Null;
 
         instance.RequestAdapter(
-            &options,
-            [](WGPURequestAdapterStatus status, WGPUAdapter cAdapter, WGPUStringView,
-               void* userdata) {
-                ASSERT_EQ(status, WGPURequestAdapterStatus_Success);
-                *static_cast<wgpu::Adapter*>(userdata) = wgpu::Adapter::Acquire(cAdapter);
-            },
-            &adapter);
+            &options, wgpu::CallbackMode::AllowSpontaneous,
+            [this](wgpu::RequestAdapterStatus status, wgpu::Adapter a, wgpu::StringView) {
+                ASSERT_EQ(status, wgpu::RequestAdapterStatus::Success);
+                adapter = std::move(a);
+            });
         ASSERT_TRUE(wireHelper->FlushClient());
         ASSERT_TRUE(wireHelper->FlushServer());
         ASSERT_NE(adapter, nullptr);