node: Throw a TypeError for unsupported GPUQueryTypes

The WebGPU spec requires this so that an extension not being enabled or
not implemented by the browser both behave the same.

Bug: None
Change-Id: I52d991ba63438068d4adaf1391771336186a402a
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/112422
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Austin Eng <enga@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 95c4916..f2718bd 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1609,8 +1609,14 @@
             out = wgpu::QueryType::Occlusion;
             return true;
         case interop::GPUQueryType::kTimestamp:
-            out = wgpu::QueryType::Timestamp;
-            return true;
+            if (HasFeature(wgpu::FeatureName::TimestampQuery)) {
+                out = wgpu::QueryType::Timestamp;
+                return true;
+            } else {
+                Napi::TypeError::New(env, "invalid value for GPUQueryType")
+                    .ThrowAsJavaScriptException();
+                return false;
+            }
     }
     Napi::Error::New(env, "invalid value for GPUQueryType").ThrowAsJavaScriptException();
     return false;
diff --git a/src/dawn/node/binding/GPUDevice.cpp b/src/dawn/node/binding/GPUDevice.cpp
index b540d50..5aab3eb 100644
--- a/src/dawn/node/binding/GPUDevice.cpp
+++ b/src/dawn/node/binding/GPUDevice.cpp
@@ -472,7 +472,7 @@
 interop::Interface<interop::GPUQuerySet> GPUDevice::createQuerySet(
     Napi::Env env,
     interop::GPUQuerySetDescriptor descriptor) {
-    Converter conv(env);
+    Converter conv(env, device_);
 
     wgpu::QuerySetDescriptor desc{};
     if (!conv(desc.label, descriptor.label) || !conv(desc.type, descriptor.type) ||