[dawn][fuzzers] Add override for requestAdapterF/2 for fuzzers.

Bug: 341142179
Change-Id: If4ddccea16026fe432b15b5670533445200a611b
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/189101
Auto-Submit: Loko Kung <lokokung@google.com>
Reviewed-by: Shrek Shao <shrekshao@google.com>
Commit-Queue: Loko Kung <lokokung@google.com>
diff --git a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
index 7ddc02c..61497f8 100644
--- a/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
+++ b/src/dawn/fuzzers/DawnWireServerFuzzer.cpp
@@ -111,9 +111,10 @@
     DawnProcTable procs = dawn::native::GetProcs();
 
     // Override requestAdapter to find an adapter that the fuzzer supports.
-    procs.instanceRequestAdapter = [](WGPUInstance cInstance,
-                                      const WGPURequestAdapterOptions* options,
-                                      WGPURequestAdapterCallback callback, void* userdata) {
+    // TODO: crbug.com/42241461 - Remove overrides once older entry points are deprecated.
+    static constexpr auto RequestAdapter = [](WGPUInstance cInstance,
+                                              WGPURequestAdapterCallback2 callback, void* userdata1,
+                                              void* userdata2) -> WGPUFuture {
         std::vector<dawn::native::Adapter> adapters =
             dawn::native::Instance(reinterpret_cast<dawn::native::InstanceBase*>(cInstance))
                 .EnumerateAdapters();
@@ -121,11 +122,40 @@
             if (sAdapterSupported(adapter)) {
                 WGPUAdapter cAdapter = adapter.Get();
                 dawn::native::GetProcs().adapterAddRef(cAdapter);
-                callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata);
-                return;
+                callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata1, userdata2);
+                return {};
             }
         }
-        callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata);
+        callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata1,
+                 userdata2);
+        return {};
+    };
+    procs.instanceRequestAdapter = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                      WGPURequestAdapterCallback callback, void* userdata) {
+        RequestAdapter(
+            cInstance,
+            [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+               void* callback, void* userdata) {
+                auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+                cb(status, adapter, message, userdata);
+            },
+            reinterpret_cast<void*>(callback), userdata);
+    };
+    procs.instanceRequestAdapterF = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                       WGPURequestAdapterCallbackInfo callbackInfo) -> WGPUFuture {
+        return RequestAdapter(
+            cInstance,
+            [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+               void* callback, void* userdata) {
+                auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+                cb(status, adapter, message, userdata);
+            },
+            reinterpret_cast<void*>(callbackInfo.callback), callbackInfo.userdata);
+    };
+    procs.instanceRequestAdapter2 = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                       WGPURequestAdapterCallbackInfo2 callbackInfo) -> WGPUFuture {
+        return RequestAdapter(cInstance, callbackInfo.callback, callbackInfo.userdata1,
+                              callbackInfo.userdata2);
     };
 
     dawnProcSetProcs(&procs);
diff --git a/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp b/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
index b30c205..fbe0259 100644
--- a/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
+++ b/src/dawn/fuzzers/lpmfuzz/DawnLPMFuzzer.cpp
@@ -85,9 +85,10 @@
     DawnProcTable procs = dawn::native::GetProcs();
 
     // Override requestAdapter to find an adapter that the fuzzer supports.
-    procs.instanceRequestAdapter = [](WGPUInstance cInstance,
-                                      const WGPURequestAdapterOptions* options,
-                                      WGPURequestAdapterCallback callback, void* userdata) {
+    // TODO: crbug.com/42241461 - Remove overrides once older entry points are deprecated.
+    static constexpr auto RequestAdapter = [](WGPUInstance cInstance,
+                                              WGPURequestAdapterCallback2 callback, void* userdata1,
+                                              void* userdata2) -> WGPUFuture {
         std::vector<dawn::native::Adapter> adapters =
             dawn::native::Instance(reinterpret_cast<dawn::native::InstanceBase*>(cInstance))
                 .EnumerateAdapters();
@@ -95,11 +96,40 @@
             if (sAdapterSupported(adapter)) {
                 WGPUAdapter cAdapter = adapter.Get();
                 dawn::native::GetProcs().adapterAddRef(cAdapter);
-                callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata);
-                return;
+                callback(WGPURequestAdapterStatus_Success, cAdapter, nullptr, userdata1, userdata2);
+                return {};
             }
         }
-        callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata);
+        callback(WGPURequestAdapterStatus_Unavailable, nullptr, "No supported adapter.", userdata1,
+                 userdata2);
+        return {};
+    };
+    procs.instanceRequestAdapter = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                      WGPURequestAdapterCallback callback, void* userdata) {
+        RequestAdapter(
+            cInstance,
+            [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+               void* callback, void* userdata) {
+                auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+                cb(status, adapter, message, userdata);
+            },
+            reinterpret_cast<void*>(callback), userdata);
+    };
+    procs.instanceRequestAdapterF = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                       WGPURequestAdapterCallbackInfo callbackInfo) -> WGPUFuture {
+        return RequestAdapter(
+            cInstance,
+            [](WGPURequestAdapterStatus status, WGPUAdapter adapter, const char* message,
+               void* callback, void* userdata) {
+                auto cb = reinterpret_cast<WGPURequestAdapterCallback>(callback);
+                cb(status, adapter, message, userdata);
+            },
+            reinterpret_cast<void*>(callbackInfo.callback), callbackInfo.userdata);
+    };
+    procs.instanceRequestAdapter2 = [](WGPUInstance cInstance, const WGPURequestAdapterOptions*,
+                                       WGPURequestAdapterCallbackInfo2 callbackInfo) -> WGPUFuture {
+        return RequestAdapter(cInstance, callbackInfo.callback, callbackInfo.userdata1,
+                              callbackInfo.userdata2);
     };
 
     dawnProcSetProcs(&procs);