[dawn][headers] Removes old WGSLFeatureName and entry points.

- Removes WGSLFeatureName entirely.
- Removes remaining references to WGSLFeatureName and the
  instance.EnumerateWGSLLanguageFeatures entry point.
- Updates dawn.node to reflect these changes.

Bug: 368672124
Change-Id: Iece2f764e1f96abdaedde1485b3701e4c880dd38
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/223595
Commit-Queue: Loko Kung <lokokung@google.com>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
diff --git a/src/dawn/dawn.json b/src/dawn/dawn.json
index 6a0e92c..e798af8 100644
--- a/src/dawn/dawn.json
+++ b/src/dawn/dawn.json
@@ -2384,13 +2384,6 @@
                 ]
             },
             {
-                "name": "enumerate WGSL language features",
-                "returns": "size_t",
-                "args": [
-                    {"name": "features", "type": "WGSL feature name", "annotation": "*"}
-                ]
-            },
-            {
                 "name": "get WGSL language features",
                 "returns": "status",
                 "args": [
@@ -4089,21 +4082,6 @@
             {"value": 41, "name": "unorm8x4 BGRA", "jsrepr": "'unorm8x4-bgra'"}
         ]
     },
-    "WGSL feature name": {
-        "category": "enum",
-        "values": [
-            {"value": 1, "name": "readonly and readwrite storage textures",  "jsrepr": "'readonly_and_readwrite_storage_textures'"},
-            {"value": 2, "name": "packed 4x8 integer dot product", "jsrepr": "'packed_4x8_integer_dot_product'"},
-            {"value": 3, "name": "unrestricted pointer parameters", "jsrepr": "'unrestricted_pointer_parameters'"},
-            {"value": 4, "name": "pointer composite access", "jsrepr": "'pointer_composite_access'"},
-
-            {"value": 0, "name": "chromium testing unimplemented", "jsrepr": "'chromium_testing_unimplemented'", "tags": ["dawn"]},
-            {"value": 1, "name": "chromium testing unsafe experimental", "jsrepr": "'chromium_testing_unsafe_experimental'", "tags": ["dawn"]},
-            {"value": 2, "name": "chromium testing experimental", "jsrepr": "'chromium_testing_experimental'", "tags": ["dawn"]},
-            {"value": 3, "name": "chromium testing shipped with killswitch", "jsrepr": "'chromium_testing_shipped_with_killswitch'", "tags": ["dawn"]},
-            {"value": 4, "name": "chromium testing shipped", "jsrepr": "'chromium_testing_shipped'", "tags": ["dawn"]}
-        ]
-    },
     "WGSL language feature name": {
         "category": "enum",
         "values": [
diff --git a/src/dawn/dawn_wire.json b/src/dawn/dawn_wire.json
index 076fd40..ca6df05 100644
--- a/src/dawn/dawn_wire.json
+++ b/src/dawn/dawn_wire.json
@@ -239,7 +239,6 @@
             "DevicePopErrorScopeF",
             "DevicePopErrorScope2",
             "DeviceSetLoggingCallback",
-            "InstanceEnumerateWGSLLanguageFeatures",
             "InstanceGetWGSLLanguageFeatures",
             "InstanceHasWGSLLanguageFeature",
             "InstanceCreateSurface",
diff --git a/src/dawn/native/Instance.cpp b/src/dawn/native/Instance.cpp
index bc5c49a..01c75e9 100644
--- a/src/dawn/native/Instance.cpp
+++ b/src/dawn/native/Instance.cpp
@@ -697,16 +697,6 @@
     return wgpu::Status::Success;
 }
 
-size_t InstanceBase::APIEnumerateWGSLLanguageFeatures(wgpu::WGSLFeatureName* features) const {
-    if (features != nullptr) {
-        for (wgpu::WGSLLanguageFeatureName f : mWGSLFeatures) {
-            *features = static_cast<wgpu::WGSLFeatureName>(f);
-            ++features;
-        }
-    }
-    return mWGSLFeatures.size();
-}
-
 void APISupportedWGSLLanguageFeaturesFreeMembers(
     WGPUSupportedWGSLLanguageFeatures supportedFeatures) {
     delete[] supportedFeatures.features;
diff --git a/src/dawn/native/Instance.h b/src/dawn/native/Instance.h
index aca1b1e..038ef96 100644
--- a/src/dawn/native/Instance.h
+++ b/src/dawn/native/Instance.h
@@ -151,9 +151,6 @@
                                               uint64_t timeoutNS);
     bool APIHasWGSLLanguageFeature(wgpu::WGSLLanguageFeatureName feature) const;
     wgpu::Status APIGetWGSLLanguageFeatures(SupportedWGSLLanguageFeatures* features) const;
-    // Always writes the full list when features is not nullptr.
-    // TODO(https://github.com/webgpu-native/webgpu-headers/issues/252): Add a count argument.
-    size_t APIEnumerateWGSLLanguageFeatures(wgpu::WGSLFeatureName* features) const;
 
     void DisconnectDawnPlatform();
 
diff --git a/src/dawn/node/binding/Converter.cpp b/src/dawn/node/binding/Converter.cpp
index 0b5b97c..a4c72ed 100644
--- a/src/dawn/node/binding/Converter.cpp
+++ b/src/dawn/node/binding/Converter.cpp
@@ -1621,44 +1621,44 @@
     return false;
 }
 
-bool Converter::Convert(wgpu::WGSLFeatureName& out, interop::WGSLFeatureName in) {
+bool Converter::Convert(wgpu::WGSLLanguageFeatureName& out, interop::WGSLLanguageFeatureName in) {
     switch (in) {
-        case interop::WGSLFeatureName::kReadonlyAndReadwriteStorageTextures:
-            out = wgpu::WGSLFeatureName::ReadonlyAndReadwriteStorageTextures;
+        case interop::WGSLLanguageFeatureName::kReadonlyAndReadwriteStorageTextures:
+            out = wgpu::WGSLLanguageFeatureName::ReadonlyAndReadwriteStorageTextures;
             return true;
-        case interop::WGSLFeatureName::kPacked4X8IntegerDotProduct:
-            out = wgpu::WGSLFeatureName::Packed4x8IntegerDotProduct;
+        case interop::WGSLLanguageFeatureName::kPacked4X8IntegerDotProduct:
+            out = wgpu::WGSLLanguageFeatureName::Packed4x8IntegerDotProduct;
             return true;
-        case interop::WGSLFeatureName::kUnrestrictedPointerParameters:
-            out = wgpu::WGSLFeatureName::UnrestrictedPointerParameters;
+        case interop::WGSLLanguageFeatureName::kUnrestrictedPointerParameters:
+            out = wgpu::WGSLLanguageFeatureName::UnrestrictedPointerParameters;
             return true;
-        case interop::WGSLFeatureName::kPointerCompositeAccess:
-            out = wgpu::WGSLFeatureName::PointerCompositeAccess;
+        case interop::WGSLLanguageFeatureName::kPointerCompositeAccess:
+            out = wgpu::WGSLLanguageFeatureName::PointerCompositeAccess;
             return true;
     }
     return false;
 }
 
-bool Converter::Convert(interop::WGSLFeatureName& out, wgpu::WGSLFeatureName in) {
+bool Converter::Convert(interop::WGSLLanguageFeatureName& out, wgpu::WGSLLanguageFeatureName in) {
     switch (in) {
-        case wgpu::WGSLFeatureName::ReadonlyAndReadwriteStorageTextures:
-            out = interop::WGSLFeatureName::kReadonlyAndReadwriteStorageTextures;
+        case wgpu::WGSLLanguageFeatureName::ReadonlyAndReadwriteStorageTextures:
+            out = interop::WGSLLanguageFeatureName::kReadonlyAndReadwriteStorageTextures;
             return true;
-        case wgpu::WGSLFeatureName::Packed4x8IntegerDotProduct:
-            out = interop::WGSLFeatureName::kPacked4X8IntegerDotProduct;
+        case wgpu::WGSLLanguageFeatureName::Packed4x8IntegerDotProduct:
+            out = interop::WGSLLanguageFeatureName::kPacked4X8IntegerDotProduct;
             return true;
-        case wgpu::WGSLFeatureName::UnrestrictedPointerParameters:
-            out = interop::WGSLFeatureName::kUnrestrictedPointerParameters;
+        case wgpu::WGSLLanguageFeatureName::UnrestrictedPointerParameters:
+            out = interop::WGSLLanguageFeatureName::kUnrestrictedPointerParameters;
             return true;
-        case wgpu::WGSLFeatureName::PointerCompositeAccess:
-            out = interop::WGSLFeatureName::kPointerCompositeAccess;
+        case wgpu::WGSLLanguageFeatureName::PointerCompositeAccess:
+            out = interop::WGSLLanguageFeatureName::kPointerCompositeAccess;
             return true;
 
-        case wgpu::WGSLFeatureName::ChromiumTestingUnimplemented:
-        case wgpu::WGSLFeatureName::ChromiumTestingUnsafeExperimental:
-        case wgpu::WGSLFeatureName::ChromiumTestingExperimental:
-        case wgpu::WGSLFeatureName::ChromiumTestingShippedWithKillswitch:
-        case wgpu::WGSLFeatureName::ChromiumTestingShipped:
+        case wgpu::WGSLLanguageFeatureName::ChromiumTestingUnimplemented:
+        case wgpu::WGSLLanguageFeatureName::ChromiumTestingUnsafeExperimental:
+        case wgpu::WGSLLanguageFeatureName::ChromiumTestingExperimental:
+        case wgpu::WGSLLanguageFeatureName::ChromiumTestingShippedWithKillswitch:
+        case wgpu::WGSLLanguageFeatureName::ChromiumTestingShipped:
             return false;
     }
     return false;
diff --git a/src/dawn/node/binding/Converter.h b/src/dawn/node/binding/Converter.h
index ef839c9..aa5aa80 100644
--- a/src/dawn/node/binding/Converter.h
+++ b/src/dawn/node/binding/Converter.h
@@ -290,8 +290,10 @@
     // https://gpuweb.github.io/gpuweb/#gpu-supportedfeatures)
     [[nodiscard]] bool Convert(wgpu::FeatureName& out, interop::GPUFeatureName in);
     [[nodiscard]] bool Convert(interop::GPUFeatureName& out, wgpu::FeatureName in);
-    [[nodiscard]] bool Convert(wgpu::WGSLFeatureName& out, interop::WGSLFeatureName in);
-    [[nodiscard]] bool Convert(interop::WGSLFeatureName& out, wgpu::WGSLFeatureName in);
+    [[nodiscard]] bool Convert(wgpu::WGSLLanguageFeatureName& out,
+                               interop::WGSLLanguageFeatureName in);
+    [[nodiscard]] bool Convert(interop::WGSLLanguageFeatureName& out,
+                               wgpu::WGSLLanguageFeatureName in);
 
     // std::string to C string / wgpu::StringView types
     [[nodiscard]] inline bool Convert(const char*& out, const std::string& in) {
diff --git a/src/dawn/node/binding/GPU.cpp b/src/dawn/node/binding/GPU.cpp
index 0df0f3a..a83469d 100644
--- a/src/dawn/node/binding/GPU.cpp
+++ b/src/dawn/node/binding/GPU.cpp
@@ -290,15 +290,15 @@
 }
 
 interop::Interface<interop::WGSLLanguageFeatures> GPU::getWgslLanguageFeatures(Napi::Env env) {
-    using InteropWGSLFeatureSet = std::unordered_set<interop::WGSLFeatureName>;
+    using InteropWGSLFeatureSet = std::unordered_set<interop::WGSLLanguageFeatureName>;
 
     struct Features : public interop::WGSLLanguageFeatures {
         explicit Features(InteropWGSLFeatureSet features) : features_(features) {}
         ~Features() = default;
 
         bool has(Napi::Env env, std::string name) {
-            interop::WGSLFeatureName feature;
-            if (!interop::Converter<interop::WGSLFeatureName>::FromString(name, feature)) {
+            interop::WGSLLanguageFeatureName feature;
+            if (!interop::Converter<interop::WGSLLanguageFeatureName>::FromString(name, feature)) {
                 return false;
             }
             return features_.count(feature);
@@ -307,7 +307,8 @@
             std::vector<std::string> out;
             out.reserve(features_.size());
             for (auto feature : features_) {
-                out.push_back(interop::Converter<interop::WGSLFeatureName>::ToString(feature));
+                out.push_back(
+                    interop::Converter<interop::WGSLLanguageFeatureName>::ToString(feature));
             }
             return out;
         }
@@ -320,21 +321,20 @@
     };
 
     wgpu::Instance instance = instance_->Get();
-    size_t count = instance.EnumerateWGSLLanguageFeatures(nullptr);
-
-    std::vector<wgpu::WGSLFeatureName> features(count);
-    instance.EnumerateWGSLLanguageFeatures(features.data());
+    wgpu::SupportedWGSLLanguageFeatures supportedFeatures = {};
+    instance.GetWGSLLanguageFeatures(&supportedFeatures);
 
     // Add all known WGSLLangaugeFeatures known by dawn.node but warn loudly when there are unknown
     // ones.
     InteropWGSLFeatureSet featureSet;
     Converter conv(env);
-    for (auto feature : features) {
-        interop::WGSLFeatureName wgslFeature;
+    for (size_t i = 0; i < supportedFeatures.featureCount; i++) {
+        wgpu::WGSLLanguageFeatureName feature = supportedFeatures.features[i];
+        interop::WGSLLanguageFeatureName wgslFeature;
         if (conv(wgslFeature, feature)) {
             featureSet.emplace(wgslFeature);
         } else {
-            LOG("Unknown WGSLFeatureName ", feature);
+            LOG("Unknown WGSLLanguageFeatureName ", feature);
         }
     }
 
diff --git a/src/dawn/node/interop/DawnExtensions.idl b/src/dawn/node/interop/DawnExtensions.idl
index 2aef172..150f6dd 100644
--- a/src/dawn/node/interop/DawnExtensions.idl
+++ b/src/dawn/node/interop/DawnExtensions.idl
@@ -55,7 +55,7 @@
     GPUTextureViewDimension? textureBindingViewDimension;
 };
 
-enum WGSLFeatureName {
+enum WGSLLanguageFeatureName {
     "readonly_and_readwrite_storage_textures",
     "packed_4x8_integer_dot_product",
     "unrestricted_pointer_parameters",
diff --git a/src/dawn/wire/client/Instance.cpp b/src/dawn/wire/client/Instance.cpp
index 9966be1..2592d62 100644
--- a/src/dawn/wire/client/Instance.cpp
+++ b/src/dawn/wire/client/Instance.cpp
@@ -304,16 +304,6 @@
     return WGPUStatus_Success;
 }
 
-size_t Instance::EnumerateWGSLLanguageFeatures(WGPUWGSLFeatureName* features) const {
-    if (features != nullptr) {
-        for (WGPUWGSLLanguageFeatureName f : mWGSLFeatures) {
-            *features = static_cast<WGPUWGSLFeatureName>(f);
-            ++features;
-        }
-    }
-    return mWGSLFeatures.size();
-}
-
 WGPUSurface Instance::CreateSurface(const WGPUSurfaceDescriptor* desc) const {
     dawn::ErrorLog() << "Instance::CreateSurface is not supported in the wire. Use "
                         "dawn::wire::client::WireClient::InjectSurface instead.";
diff --git a/src/dawn/wire/client/Instance.h b/src/dawn/wire/client/Instance.h
index 72d425c..0e82a0f 100644
--- a/src/dawn/wire/client/Instance.h
+++ b/src/dawn/wire/client/Instance.h
@@ -52,9 +52,6 @@
 
     bool HasWGSLLanguageFeature(WGPUWGSLLanguageFeatureName feature) const;
     WGPUStatus GetWGSLLanguageFeatures(WGPUSupportedWGSLLanguageFeatures* features) const;
-    // Always writes the full list when features is not nullptr.
-    // TODO(https://github.com/webgpu-native/webgpu-headers/issues/252): Add a count argument.
-    size_t EnumerateWGSLLanguageFeatures(WGPUWGSLFeatureName* features) const;
 
     WGPUSurface CreateSurface(const WGPUSurfaceDescriptor* desc) const;
 
diff --git a/tools/android/BUILD.gn b/tools/android/BUILD.gn
index f8f9a14..ff6dede 100644
--- a/tools/android/BUILD.gn
+++ b/tools/android/BUILD.gn
@@ -211,7 +211,6 @@
     "java/android/dawn/VertexFormat.kt",
     "java/android/dawn/VertexState.kt",
     "java/android/dawn/VertexStepMode.kt",
-    "java/android/dawn/WGSLFeatureName.kt",
     "java/android/dawn/WGSLLanguageFeatureName.kt",
     "java/android/dawn/WaitStatus.kt",
   ]
diff --git a/tools/android/webgpu/src/test/java/android/dawn/MappedNamedConstantsTest.kt b/tools/android/webgpu/src/test/java/android/dawn/MappedNamedConstantsTest.kt
index 8f47d0f..af343d2 100644
--- a/tools/android/webgpu/src/test/java/android/dawn/MappedNamedConstantsTest.kt
+++ b/tools/android/webgpu/src/test/java/android/dawn/MappedNamedConstantsTest.kt
@@ -69,8 +69,7 @@
         VertexFormat::class,
         VertexStepMode::class,
         WaitStatus::class,
-        WGSLLanguageFeatureName::class,
-        WGSLFeatureName::class
+        WGSLLanguageFeatureName::class
     )
 
     /**