[WebGLOnWebGPU] Fix texture target handling in deleteTexture

1. Add validation for invalid texture targets to avoid OOB access in
   bound_textures_.
2. Fix the binding cleanup loop to ensure all texture units are
   iterated over.

Bug: 466163478
Change-Id: Id386db9245f9d1b9b1990a483269b3e99b1553bd
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7231049
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Kai Ninomiya <kainino@chromium.org>
Reviewed-by: Corentin Wallez <cwallez@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1558353}
diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_webgpu_base.cc b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_webgpu_base.cc
index cf2b3ae..8d7834e 100644
--- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_webgpu_base.cc
+++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_webgpu_base.cc
@@ -885,14 +885,15 @@
     return;
   }
 
-  size_t texture_type_idx =
-      static_cast<size_t>(GLenumToTextureTarget(texture->GetTarget()));
-  for (size_t texture_unit_idx = 0; texture_unit_idx < bound_textures_.size();
-       texture_unit_idx++) {
-    Member<WebGLTexture>& bound_texture =
-        bound_textures_[texture_type_idx][texture_unit_idx];
-    if (bound_texture == texture) {
-      bound_texture = nullptr;
+  TextureTarget texture_target = GLenumToTextureTarget(texture->GetTarget());
+  if (texture_target != TextureTarget::kUnkown) {
+    size_t texture_type_idx = static_cast<size_t>(texture_target);
+    CHECK_LT(texture_type_idx, bound_textures_.size());
+    auto& bound_textures_for_type = bound_textures_[texture_type_idx];
+    for (auto& bound_texture : bound_textures_for_type) {
+      if (bound_texture == texture) {
+        bound_texture = nullptr;
+      }
     }
   }