Revert "Change sync objects to not be available in the current frame." Revert "Attempt to fix build broken in last merge: c0a0e9d983dee38d425cdc207b54b102780ab336"

This reverts commits c0a0e9d983dee38d425cdc207b54b102780ab336 and
7e81a8f804af16333f9fd9ba057c1ff7358f13cc .

Will have to do this merge-back manually and test the compile locally.

TBR=kbr@chromium.org

Bug: 808744
Cq-Include-Trybots: master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I5928c38ac142181f0d8dcc9c298cd4cb64b4d5e9
Reviewed-on: https://chromium-review.googlesource.com/917405
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Cr-Commit-Position: refs/branch-heads/3325@{#456}
Cr-Branched-From: bc084a8b5afa3744a74927344e304c02ae54189f-refs/heads/master@{#530369}
diff --git a/content/browser/gpu/gpu_data_manager_impl.cc b/content/browser/gpu/gpu_data_manager_impl.cc
index f1fecdc..2ca8d12 100644
--- a/content/browser/gpu/gpu_data_manager_impl.cc
+++ b/content/browser/gpu/gpu_data_manager_impl.cc
@@ -117,12 +117,6 @@
   private_->SetGpuInfo(gpu_info);
 }
 
-void GpuDataManagerImpl::GetDisabledWebGLExtensions(
-    std::string* disabled_webgl_extensions) const {
-  base::AutoLock auto_lock(lock_);
-  private_->GetDisabledWebGLExtensions(disabled_webgl_extensions);
-}
-
 void GpuDataManagerImpl::Initialize() {
   base::AutoLock auto_lock(lock_);
   private_->Initialize();
diff --git a/content/browser/gpu/gpu_data_manager_impl.h b/content/browser/gpu/gpu_data_manager_impl.h
index 6342bde..54e4e79 100644
--- a/content/browser/gpu/gpu_data_manager_impl.h
+++ b/content/browser/gpu/gpu_data_manager_impl.h
@@ -89,8 +89,6 @@
   void GetDisabledExtensions(std::string* disabled_extensions) const override;
   void SetGpuInfo(const gpu::GPUInfo& gpu_info) override;
 
-  void GetDisabledWebGLExtensions(std::string* disabled_webgl_extensions) const;
-
   bool IsGpuFeatureInfoAvailable() const;
   gpu::GpuFeatureStatus GetFeatureStatus(gpu::GpuFeatureType feature) const;
 
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc
index a399375..f5f51f6 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.cc
+++ b/content/browser/gpu/gpu_data_manager_impl_private.cc
@@ -861,12 +861,6 @@
   *disabled_extensions = gpu_feature_info_.disabled_extensions;
 }
 
-void GpuDataManagerImplPrivate::GetDisabledWebGLExtensions(
-    std::string* disabled_webgl_extensions) const {
-  DCHECK(disabled_webgl_extensions);
-  *disabled_webgl_extensions = gpu_feature_info_.disabled_webgl_extensions;
-}
-
 void GpuDataManagerImplPrivate::BlockDomainFrom3DAPIs(
     const GURL& url, GpuDataManagerImpl::DomainGuilt guilt) {
   BlockDomainFrom3DAPIsAtTime(url, guilt, base::Time::Now());
diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h
index bfebf68..b1d1f19 100644
--- a/content/browser/gpu/gpu_data_manager_impl_private.h
+++ b/content/browser/gpu/gpu_data_manager_impl_private.h
@@ -88,7 +88,6 @@
   void HandleGpuSwitch();
 
   void GetDisabledExtensions(std::string* disabled_extensions) const;
-  void GetDisabledWebGLExtensions(std::string* disabled_webgl_extensions) const;
 
   void BlockDomainFrom3DAPIs(
       const GURL& url, GpuDataManagerImpl::DomainGuilt guilt);
diff --git a/content/browser/gpu/gpu_data_manager_testing_autogen.cc b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
index 0f2db3e..05c1e100 100644
--- a/content/browser/gpu/gpu_data_manager_testing_autogen.cc
+++ b/content/browser/gpu/gpu_data_manager_testing_autogen.cc
@@ -23,8 +23,6 @@
         kFeatureListForEntry1,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -51,8 +49,6 @@
         kFeatureListForEntry2,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -79,8 +75,6 @@
         kFeatureListForEntry3,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -107,8 +101,6 @@
         kFeatureListForEntry4,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -135,8 +127,6 @@
         kFeatureListForEntry5,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -163,8 +153,6 @@
         kFeatureListForEntry6,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -191,8 +179,6 @@
         kFeatureListForEntry7,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
diff --git a/content/browser/gpu/gpu_internals_ui.cc b/content/browser/gpu/gpu_internals_ui.cc
index 2861a05..faa2948 100644
--- a/content/browser/gpu/gpu_internals_ui.cc
+++ b/content/browser/gpu/gpu_internals_ui.cc
@@ -182,10 +182,6 @@
   GpuDataManagerImpl::GetInstance()->GetDisabledExtensions(
       &disabled_extensions);
 
-  std::string disabled_webgl_extensions;
-  GpuDataManagerImpl::GetInstance()->GetDisabledWebGLExtensions(
-      &disabled_webgl_extensions);
-
   basic_info->Append(
       NewDescriptionValuePair("Driver vendor", gpu_info.driver_vendor));
   basic_info->Append(NewDescriptionValuePair("Driver version",
@@ -212,8 +208,6 @@
                                              gpu_info.gl_extensions));
   basic_info->Append(NewDescriptionValuePair("Disabled Extensions",
                                              disabled_extensions));
-  basic_info->Append(NewDescriptionValuePair("Disabled WebGL Extensions",
-                                             disabled_webgl_extensions));
   basic_info->Append(NewDescriptionValuePair("Window system binding vendor",
                                              gpu_info.gl_ws_vendor));
   basic_info->Append(NewDescriptionValuePair("Window system binding version",
diff --git a/content/test/data/gpu/functional_webgl_disabled_extension.html b/content/test/data/gpu/functional_webgl_disabled_extension.html
deleted file mode 100644
index f1222bcf..0000000
--- a/content/test/data/gpu/functional_webgl_disabled_extension.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<html>
-<script type="text/javascript">
-function runTest() {
-  var canvas = document.getElementById("glcanvas");
-  var gl = canvas.getContext('webgl');
-  if (!gl) {
-    if (window.domAutomationController) {
-      window.domAutomationController.send("FAILED");
-    } else {
-      alert("Unable to initialize WebGL");
-    }
-    return;
-  }
-  // This extension is supposed to be disabled via a blacklist entry.
-  if (gl.getExtension('WEBGL_lose_context')) {
-    window.domAutomationController.send("FAILED");
-  } else {
-    window.domAutomationController.send("FINISHED");
-  }
-}
-</script>
-<body onload="runTest()">
-  <canvas id="glcanvas" width="640" height="480">
-    Your browser doesn't appear to support the HTML5 <code>&lt;canvas&gt;</code> element.
-  </canvas>
-</body>
-</html>
diff --git a/content/test/gpu/gpu_tests/gpu_process_integration_test.py b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
index c4343aa..6aab352 100644
--- a/content/test/gpu/gpu_tests/gpu_process_integration_test.py
+++ b/content/test/gpu/gpu_tests/gpu_process_integration_test.py
@@ -15,14 +15,8 @@
 test_harness_script = r"""
   var domAutomationController = {};
   domAutomationController._finished = false;
-  domAutomationController._succeeded = false;
   domAutomationController.send = function(msg) {
     domAutomationController._finished = true;
-    if (msg.toLowerCase() == "finished") {
-      domAutomationController._succeeded = true;
-    } else {
-      domAutomationController._succeeded = false;
-    }
   }
 
   window.domAutomationController = domAutomationController;
@@ -84,9 +78,7 @@
              ('GpuProcess_disable_gpu_and_swiftshader',
               'gpu/functional_webgl.html'),
              ('GpuProcess_disabling_workarounds_works', 'chrome:gpu'),
-             ('GpuProcess_swiftshader_for_webgl', 'gpu/functional_webgl.html'),
-             ('GpuProcess_webgl_disabled_extension',
-              'gpu/functional_webgl_disabled_extension.html'))
+             ('GpuProcess_swiftshader_for_webgl', 'gpu/functional_webgl.html'))
 
     # The earlier has_transparent_visuals_gpu_process and
     # no_transparent_visuals_gpu_process tests became no-ops in
@@ -113,11 +105,8 @@
 
   def _NavigateAndWait(self, test_path):
     self._Navigate(test_path)
-    tab = self.tab
-    tab.action_runner.WaitForJavaScriptCondition(
+    self.tab.action_runner.WaitForJavaScriptCondition(
       'window.domAutomationController._finished', timeout=10)
-    if not tab.EvaluateJavaScript('window.domAutomationController._succeeded'):
-      self.fail('Test reported that it failed')
 
   def _VerifyGpuProcessPresent(self):
     tab = self.tab
@@ -412,13 +401,6 @@
         if tab.EvaluateJavaScript('!gl_context.getExtension("' + ext + '")'):
           self.fail("Expected " + ext + " support")
 
-  def _GpuProcess_webgl_disabled_extension(self, test_path):
-    # Hit exception from id 257 from kGpuDriverBugListEntries.
-    self.RestartBrowserIfNecessaryWithArgs([
-      '--gpu-driver-bug-list-test-group=2',
-    ])
-    self._NavigateAndWait(test_path)
-
 def load_tests(loader, tests, pattern):
   del loader, tests, pattern  # Unused.
   return gpu_integration_test.LoadAllTestsInModule(sys.modules[__name__])
diff --git a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
index 98d68cd..87820f3 100644
--- a/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl2_conformance_expectations.py
@@ -32,7 +32,6 @@
         ['win', 'mac', 'linux'])
     self.Skip('WebglExtension_WEBGL_compressed_texture_s3tc_srgb',
         ['win', 'mac', 'linux'])
-    self.Skip('WebglExtension_EXT_disjoint_timer_query_webgl2', bug=808744)
 
     # ========================
     # Conformance expectations
@@ -871,6 +870,8 @@
     # Linux Intel
     self.Fail('conformance2/extensions/ext-color-buffer-float.html',
         ['linux', 'intel'], bug=640389)
+    self.Fail('WebglExtension_EXT_disjoint_timer_query_webgl2',
+        ['linux', 'intel'], bug=687210)
 
     # See https://bugs.freedesktop.org/show_bug.cgi?id=94477
     self.Skip('conformance/glsl/bugs/temp-expressions-should-not-crash.html',
diff --git a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
index dd192c7..29e75fd 100644
--- a/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
+++ b/content/test/gpu/gpu_tests/webgl_conformance_expectations.py
@@ -56,9 +56,10 @@
         ['win', 'mac', 'linux'])
     self.Skip('WebglExtension_WEBGL_compressed_texture_s3tc_srgb',
         ['win', 'mac', 'linux', 'android'])
-    self.Skip('WebglExtension_EXT_disjoint_timer_query', bug=808744)
 
     # Extensions not available under D3D9
+    self.Fail('WebglExtension_EXT_disjoint_timer_query',
+        ['win', 'd3d9'])
     self.Fail('WebglExtension_EXT_sRGB',
         ['win', 'd3d9'])
 
@@ -69,6 +70,8 @@
         ['win', 'd3d9'])
 
     # Android general
+    self.Fail('WebglExtension_EXT_disjoint_timer_query',
+        ['android'])
     self.Fail('WebglExtension_EXT_frag_depth',
         ['android'])
     self.Fail('WebglExtension_EXT_shader_texture_lod',
@@ -529,6 +532,9 @@
     self.Fail('conformance/rendering/clipping-wide-points.html',
         ['linux', 'intel'], bug=642822)
 
+    self.Fail('WebglExtension_EXT_disjoint_timer_query',
+        ['linux', 'intel'], bug=687210)
+
     # Linux Intel HD 630
     self.Fail('conformance/textures/misc/texture-size-limit.html',
         ['linux', ('intel', 0x5912)], bug=745888)
diff --git a/gpu/config/gpu_blacklist_unittest.cc b/gpu/config/gpu_blacklist_unittest.cc
index 17f2bf8..45bfe72c 100644
--- a/gpu/config/gpu_blacklist_unittest.cc
+++ b/gpu/config/gpu_blacklist_unittest.cc
@@ -30,8 +30,6 @@
         kFeatureListForEntry1,  // features
         0,                      // DisabledExtensions size
         nullptr,                // DisabledExtensions
-        0,                      // DisabledWebGLExtensions size
-        nullptr,                // DisabledWebGLExtensions
         0,                      // CrBugs size
         nullptr,                // CrBugs
         {
diff --git a/gpu/config/gpu_control_list.cc b/gpu/config/gpu_control_list.cc
index f93c1d2..a1a29a0 100644
--- a/gpu/config/gpu_control_list.cc
+++ b/gpu/config/gpu_control_list.cc
@@ -605,19 +605,6 @@
                                   disabled_extensions.end());
 }
 
-std::vector<std::string> GpuControlList::GetDisabledWebGLExtensions() {
-  std::set<std::string> disabled_webgl_extensions;
-  for (auto index : active_entries_) {
-    DCHECK_LT(index, entry_count_);
-    const Entry& entry = entries_[index];
-    for (size_t ii = 0; ii < entry.disabled_webgl_extension_size; ++ii) {
-      disabled_webgl_extensions.insert(entry.disabled_webgl_extensions[ii]);
-    }
-  }
-  return std::vector<std::string>(disabled_webgl_extensions.begin(),
-                                  disabled_webgl_extensions.end());
-}
-
 void GpuControlList::GetReasons(base::ListValue* problem_list,
                                 const std::string& tag,
                                 const std::vector<uint32_t>& entries) const {
diff --git a/gpu/config/gpu_control_list.h b/gpu/config/gpu_control_list.h
index 416386d..de98ea8 100644
--- a/gpu/config/gpu_control_list.h
+++ b/gpu/config/gpu_control_list.h
@@ -191,8 +191,6 @@
     const int* features;
     size_t disabled_extension_size;
     const char* const* disabled_extensions;
-    size_t disabled_webgl_extension_size;
-    const char* const* disabled_webgl_extensions;
     size_t cr_bug_size;
     const uint32_t* cr_bugs;
     Conditions conditions;
@@ -245,8 +243,6 @@
 
   // Collects all disabled extensions.
   std::vector<std::string> GetDisabledExtensions();
-  // Collects all disabled WebGL extensions.
-  std::vector<std::string> GetDisabledWebGLExtensions();
 
   // Returns the description and bugs from active entries provided.
   // Each problems has:
diff --git a/gpu/config/gpu_control_list_testing_autogen.cc b/gpu/config/gpu_control_list_testing_autogen.cc
index 72408ae..5525743 100644
--- a/gpu/config/gpu_control_list_testing_autogen.cc
+++ b/gpu/config/gpu_control_list_testing_autogen.cc
@@ -23,10 +23,8 @@
         kFeatureListForEntry1,                    // features
         arraysize(kDisabledExtensionsForEntry1),  // DisabledExtensions size
         kDisabledExtensionsForEntry1,             // DisabledExtensions
-        0,                            // DisabledWebGLExtensions size
-        nullptr,                      // DisabledWebGLExtensions
-        arraysize(kCrBugsForEntry1),  // CrBugs size
-        kCrBugsForEntry1,             // CrBugs
+        arraysize(kCrBugsForEntry1),              // CrBugs size
+        kCrBugsForEntry1,                         // CrBugs
         {
             GpuControlList::kOsMacosx,  // os_type
             {GpuControlList::kEQ, GpuControlList::kVersionStyleNumerical,
@@ -51,8 +49,6 @@
         kFeatureListForEntry2,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -79,8 +75,6 @@
         kFeatureListForEntry3,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -107,8 +101,6 @@
         kFeatureListForEntry4,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -135,8 +127,6 @@
         kFeatureListForEntry5,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -163,8 +153,6 @@
         kFeatureListForEntry6,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -191,8 +179,6 @@
         kFeatureListForEntry7,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -219,8 +205,6 @@
         kFeatureListForEntry8,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -247,8 +231,6 @@
         kFeatureListForEntry9,             // features
         0,                                 // DisabledExtensions size
         nullptr,                           // DisabledExtensions
-        0,                                 // DisabledWebGLExtensions size
-        nullptr,                           // DisabledWebGLExtensions
         0,                                 // CrBugs size
         nullptr,                           // CrBugs
         {
@@ -275,8 +257,6 @@
         kFeatureListForEntry10,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -303,8 +283,6 @@
         kFeatureListForEntry11,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -331,8 +309,6 @@
         kFeatureListForEntry12,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -359,8 +335,6 @@
         kFeatureListForEntry13,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -387,8 +361,6 @@
         kFeatureListForEntry14,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -415,8 +387,6 @@
         kFeatureListForEntry15,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -443,8 +413,6 @@
         kFeatureListForEntry16,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -471,8 +439,6 @@
         kFeatureListForEntry17,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -499,8 +465,6 @@
         kFeatureListForEntry18,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -527,8 +491,6 @@
         kFeatureListForEntry19,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -555,8 +517,6 @@
         kFeatureListForEntry20,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -583,8 +543,6 @@
         kFeatureListForEntry21,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -611,8 +569,6 @@
         kFeatureListForEntry22,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -639,8 +595,6 @@
         kFeatureListForEntry23,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -667,8 +621,6 @@
         kFeatureListForEntry24,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -695,8 +647,6 @@
         kFeatureListForEntry25,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -723,8 +673,6 @@
         kFeatureListForEntry26,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -751,8 +699,6 @@
         kFeatureListForEntry27,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -779,8 +725,6 @@
         kFeatureListForEntry28,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -807,8 +751,6 @@
         kFeatureListForEntry29,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -835,8 +777,6 @@
         kFeatureListForEntry30,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -863,8 +803,6 @@
         kFeatureListForEntry31,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -891,8 +829,6 @@
         kFeatureListForEntry32,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -919,8 +855,6 @@
         kFeatureListForEntry33,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -947,8 +881,6 @@
         kFeatureListForEntry34,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -975,8 +907,6 @@
         kFeatureListForEntry35,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1003,8 +933,6 @@
         kFeatureListForEntry36,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1031,8 +959,6 @@
         kFeatureListForEntry37,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1059,8 +985,6 @@
         kFeatureListForEntry38,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1087,8 +1011,6 @@
         kFeatureListForEntry39,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1115,8 +1037,6 @@
         kFeatureListForEntry40,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1143,8 +1063,6 @@
         kFeatureListForEntry41,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1171,8 +1089,6 @@
         kFeatureListForEntry42,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1199,8 +1115,6 @@
         kFeatureListForEntry43,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1227,8 +1141,6 @@
         kFeatureListForEntry44,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1255,8 +1167,6 @@
         kFeatureListForEntry45,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1283,8 +1193,6 @@
         kFeatureListForEntry46,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1312,8 +1220,6 @@
         kFeatureListForEntry47,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1341,8 +1247,6 @@
         kFeatureListForEntry48,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1369,8 +1273,6 @@
         kFeatureListForEntry49,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1397,8 +1299,6 @@
         kFeatureListForEntry50,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1425,8 +1325,6 @@
         kFeatureListForEntry51,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1453,8 +1351,6 @@
         kFeatureListForEntry52,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1481,8 +1377,6 @@
         kFeatureListForEntry53,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1509,8 +1403,6 @@
         kFeatureListForEntry54,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1537,10 +1429,8 @@
         nullptr,                                   // features
         arraysize(kDisabledExtensionsForEntry55),  // DisabledExtensions size
         kDisabledExtensionsForEntry55,             // DisabledExtensions
-        0,        // DisabledWebGLExtensions size
-        nullptr,  // DisabledWebGLExtensions
-        0,        // CrBugs size
-        nullptr,  // CrBugs
+        0,                                         // CrBugs size
+        nullptr,                                   // CrBugs
         {
             GpuControlList::kOsWin,  // os_type
             {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
@@ -1565,10 +1455,8 @@
         nullptr,                                   // features
         arraysize(kDisabledExtensionsForEntry56),  // DisabledExtensions size
         kDisabledExtensionsForEntry56,             // DisabledExtensions
-        0,        // DisabledWebGLExtensions size
-        nullptr,  // DisabledWebGLExtensions
-        0,        // CrBugs size
-        nullptr,  // CrBugs
+        0,                                         // CrBugs size
+        nullptr,                                   // CrBugs
         {
             GpuControlList::kOsWin,  // os_type
             {GpuControlList::kUnknown, GpuControlList::kVersionStyleNumerical,
@@ -1593,8 +1481,6 @@
         kFeatureListForEntry57,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1621,8 +1507,6 @@
         kFeatureListForEntry58,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1649,8 +1533,6 @@
         kFeatureListForEntry59,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
@@ -1677,8 +1559,6 @@
         kFeatureListForEntry60,             // features
         0,                                  // DisabledExtensions size
         nullptr,                            // DisabledExtensions
-        0,                                  // DisabledWebGLExtensions size
-        nullptr,                            // DisabledWebGLExtensions
         0,                                  // CrBugs size
         nullptr,                            // CrBugs
         {
diff --git a/gpu/config/gpu_driver_bug_list.json b/gpu/config/gpu_driver_bug_list.json
index ad21813..ad57eb8 100644
--- a/gpu/config/gpu_driver_bug_list.json
+++ b/gpu/config/gpu_driver_bug_list.json
@@ -2788,24 +2788,6 @@
       "features": [
         "max_msaa_sample_count_4"
       ]
-    },
-    {
-      "id": 256,
-      "description": "Don't expose disjoint_timer_query extensions to WebGL",
-      "cr_bugs": [808744],
-      "disabled_webgl_extensions": [
-        "EXT_disjoint_timer_query",
-        "EXT_disjoint_timer_query_webgl2"
-      ]
-    },
-    {
-      "id": 257,
-      "description": "Fake entry for testing disabling of WebGL extensions",
-      "cr_bugs": [808744],
-      "test_group": 2,
-      "disabled_webgl_extensions": [
-        "WEBGL_lose_context"
-      ]
     }
   ]
 }
diff --git a/gpu/config/gpu_feature_info.h b/gpu/config/gpu_feature_info.h
index 51138ae..f26572d 100644
--- a/gpu/config/gpu_feature_info.h
+++ b/gpu/config/gpu_feature_info.h
@@ -52,8 +52,6 @@
   std::vector<int32_t> enabled_gpu_driver_bug_workarounds;
   // Disabled extensions separated by whitespaces.
   std::string disabled_extensions;
-  // Disabled WebGL extensions separated by whitespaces.
-  std::string disabled_webgl_extensions;
   // Applied gpu blacklist entry indices.
   std::vector<uint32_t> applied_gpu_blacklist_entries;
   // Applied gpu driver bug list entry indices.
diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc
index d68eef6..2d039f3 100644
--- a/gpu/config/gpu_util.cc
+++ b/gpu/config/gpu_util.cc
@@ -418,16 +418,6 @@
     driver_bug_disabled_extensions = list->GetDisabledExtensions();
     all_disabled_extensions.insert(driver_bug_disabled_extensions.begin(),
                                    driver_bug_disabled_extensions.end());
-
-    // Disabling WebGL extensions only occurs via the blacklist, so
-    // the logic is simpler.
-    gl::ExtensionSet disabled_webgl_extensions;
-    std::vector<std::string> disabled_webgl_extension_list =
-        list->GetDisabledWebGLExtensions();
-    disabled_webgl_extensions.insert(disabled_webgl_extension_list.begin(),
-                                     disabled_webgl_extension_list.end());
-    gpu_feature_info.disabled_webgl_extensions =
-        gl::MakeExtensionString(disabled_webgl_extensions);
   }
   gpu::GpuDriverBugList::AppendWorkaroundsFromCommandLine(
       &enabled_driver_bug_workarounds, *command_line);
diff --git a/gpu/config/process_json.py b/gpu/config/process_json.py
index 03910fc..bc67ce3 100755
--- a/gpu/config/process_json.py
+++ b/gpu/config/process_json.py
@@ -127,10 +127,9 @@
   data_helper_file.write('};\n\n')
 
 
-def write_disabled_extension_list(entry_kind, entry_id, data, data_file,
-                                  data_helper_file):
+def write_disabled_extension_list(entry_id, data, data_file, data_helper_file):
   if data:
-    var_name = 'k%sForEntry%d' % (entry_kind, entry_id)
+    var_name = 'kDisabledExtensionsForEntry' + str(entry_id)
     # define the list
     data_helper_file.write(
         'const char* const %s[%d] = {\n' % (var_name, len(data)))
@@ -139,11 +138,11 @@
       data_helper_file.write(',\n')
     data_helper_file.write('};\n\n')
     # use the list
-    data_file.write('arraysize(%s),  // %s size\n' % (var_name, entry_kind))
-    data_file.write('%s,  // %s\n' % (var_name, entry_kind))
+    data_file.write('arraysize(%s),  // DisabledExtensions size\n' % var_name)
+    data_file.write('%s,  // DisabledExtensions\n' % var_name)
   else:
-    data_file.write('0,  // %s size\n' % entry_kind)
-    data_file.write('nullptr,  // %s\n' % entry_kind)
+    data_file.write('0,  // DisabledExtensions size\n')
+    data_file.write('nullptr,  // DisabledExtensions\n')
 
 
 def write_gl_strings(entry_id, is_exception, exception_id, data,
@@ -382,9 +381,6 @@
     elif key == 'disabled_extensions':
       assert not is_exception
       continue
-    elif key == 'disabled_webgl_extensions':
-      assert not is_exception
-      continue
     elif key == 'comment':
       continue
     elif key == 'webkit_bugs':
@@ -530,12 +526,10 @@
     data_file.write('0,  // feature size\n')
     data_file.write('nullptr,  // features\n')
   # Disabled extensions
-  write_disabled_extension_list('DisabledExtensions', entry_id,
-                                entry.get('disabled_extensions', None),
-                                data_file, data_helper_file)
-  # Disabled WebGL extensions
-  write_disabled_extension_list('DisabledWebGLExtensions', entry_id,
-                                entry.get('disabled_webgl_extensions', None),
+  disabled_extensions = None
+  if 'disabled_extensions' in entry:
+    disabled_extensions = entry['disabled_extensions']
+  write_disabled_extension_list(entry_id, disabled_extensions,
                                 data_file, data_helper_file)
   # webkit_bugs are skipped because there is only one entry that has it.
   # cr_bugs
diff --git a/gpu/ipc/common/gpu_feature_info.mojom b/gpu/ipc/common/gpu_feature_info.mojom
index 01cf4e6..72fe153 100644
--- a/gpu/ipc/common/gpu_feature_info.mojom
+++ b/gpu/ipc/common/gpu_feature_info.mojom
@@ -30,9 +30,6 @@
   // GL extensions disabled by GpuDriverBugWorkarounds, separated by ' '.
   string disabled_extensions;
 
-  // WebGL extensions disabled by GpuDriverBugWorkarounds, separated by ' '.
-  string disabled_webgl_extensions;
-
   // The array contains a list of gpu blacklist entry indices that apply in the
   // current platform. The entries are defined in
   // gpu/config/software_rendering_list.json.
diff --git a/gpu/ipc/common/gpu_feature_info_struct_traits.h b/gpu/ipc/common/gpu_feature_info_struct_traits.h
index c7b0a07..79f959c 100644
--- a/gpu/ipc/common/gpu_feature_info_struct_traits.h
+++ b/gpu/ipc/common/gpu_feature_info_struct_traits.h
@@ -71,7 +71,6 @@
     return data.ReadEnabledGpuDriverBugWorkarounds(
                &out->enabled_gpu_driver_bug_workarounds) &&
            data.ReadDisabledExtensions(&out->disabled_extensions) &&
-           data.ReadDisabledWebglExtensions(&out->disabled_webgl_extensions) &&
            data.ReadAppliedGpuBlacklistEntries(
                &out->applied_gpu_blacklist_entries) &&
            gpu::GpuBlacklist::AreEntryIndicesValid(
@@ -98,11 +97,6 @@
     return info.disabled_extensions;
   }
 
-  static const std::string& disabled_webgl_extensions(
-      const gpu::GpuFeatureInfo& info) {
-    return info.disabled_webgl_extensions;
-  }
-
   static const std::vector<uint32_t>& applied_gpu_blacklist_entries(
       const gpu::GpuFeatureInfo& info) {
     return info.applied_gpu_blacklist_entries;
diff --git a/third_party/WebKit/Source/modules/webgl/BUILD.gn b/third_party/WebKit/Source/modules/webgl/BUILD.gn
index eaeaa1fb..004b106 100644
--- a/third_party/WebKit/Source/modules/webgl/BUILD.gn
+++ b/third_party/WebKit/Source/modules/webgl/BUILD.gn
@@ -135,8 +135,4 @@
   # the implementation depends on a fair chunk of core/ --
   # include the core pch for faster Windows compilation times.
   configs += [ "//third_party/WebKit/Source/core:blink_core_pch" ]
-
-  deps = [
-    "//gpu/config",
-  ]
 }
diff --git a/third_party/WebKit/Source/modules/webgl/DEPS b/third_party/WebKit/Source/modules/webgl/DEPS
index a1d284b..3058c13 100644
--- a/third_party/WebKit/Source/modules/webgl/DEPS
+++ b/third_party/WebKit/Source/modules/webgl/DEPS
@@ -1,6 +1,5 @@
 include_rules = [
     "+gpu/GLES2/gl2extchromium.h",
     "+gpu/command_buffer/client/gles2_interface.h",
-    "+gpu/config/gpu_feature_info.h",
     "+skia/ext",
 ]
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
index 67c61dc..8879e51 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.cpp
@@ -38,6 +38,10 @@
 
 const GLuint64 kMaxClientWaitTimeout = 0u;
 
+GLsync SyncObjectOrZero(const WebGLSync* object) {
+  return object ? object->Object() : nullptr;
+}
+
 // TODO(kainino): Change outByteLength to GLuint and change the associated
 // range checking (and all uses) - overflow becomes possible in cases below
 bool ValidateSubSourceAndGetData(DOMArrayBufferView* view,
@@ -4161,25 +4165,7 @@
     return GL_WAIT_FAILED;
   }
 
-  // clientWaitSync must poll for updates no more than once per
-  // requestAnimationFrame, so all validation, and the implementation,
-  // must be done inline.
-  if (!(flags == 0 || flags == GL_SYNC_FLUSH_COMMANDS_BIT)) {
-    SynthesizeGLError(GL_INVALID_VALUE, "clientWaitSync", "invalid flags");
-    return GL_WAIT_FAILED;
-  }
-
-  if (sync->IsSignaled()) {
-    return GL_ALREADY_SIGNALED;
-  }
-
-  sync->UpdateCache(ContextGL());
-
-  if (sync->IsSignaled()) {
-    return GL_CONDITION_SATISFIED;
-  }
-
-  return GL_TIMEOUT_EXPIRED;
+  return ContextGL()->ClientWaitSync(SyncObjectOrZero(sync), flags, timeout);
 }
 
 void WebGL2RenderingContextBase::waitSync(WebGLSync* sync,
@@ -4213,8 +4199,10 @@
     case GL_SYNC_STATUS:
     case GL_SYNC_CONDITION:
     case GL_SYNC_FLAGS: {
-      sync->UpdateCache(ContextGL());
-      return WebGLAny(script_state, sync->GetCachedResult(pname));
+      GLint value = 0;
+      GLsizei length = -1;
+      ContextGL()->GetSynciv(SyncObjectOrZero(sync), pname, 1, &length, &value);
+      return WebGLAny(script_state, static_cast<unsigned>(value));
     }
     default:
       SynthesizeGLError(GL_INVALID_ENUM, "getSyncParameter",
diff --git a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
index 7257f62e..0691c23 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGL2RenderingContextBase.h
@@ -981,7 +981,6 @@
  protected:
   friend class V8WebGL2RenderingContext;
   friend class WebGLGetBufferSubDataAsync;
-  friend class WebGLSync;
 
   WebGL2RenderingContextBase(
       CanvasRenderingContextHost*,
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
index 0e138b3..53da727 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
@@ -50,7 +50,6 @@
 #include "core/typed_arrays/DOMTypedArray.h"
 #include "core/typed_arrays/FlexibleArrayBufferView.h"
 #include "gpu/command_buffer/client/gles2_interface.h"
-#include "gpu/config/gpu_feature_info.h"
 #include "modules/webgl/ANGLEInstancedArrays.h"
 #include "modules/webgl/EXTBlendMinMax.h"
 #include "modules/webgl/EXTFragDepth.h"
@@ -1029,16 +1028,6 @@
   GetDrawingBuffer()->Bind(GL_FRAMEBUFFER);
   SetupFlags();
 
-  String disabled_webgl_extensions(GetDrawingBuffer()
-                                       ->ContextProvider()
-                                       ->GetGpuFeatureInfo()
-                                       .disabled_webgl_extensions.c_str());
-  Vector<String> disabled_extension_list;
-  disabled_webgl_extensions.Split(' ', disabled_extension_list);
-  for (const auto& entry : disabled_extension_list) {
-    disabled_extensions_.insert(entry);
-  }
-
 #define ADD_VALUES_TO_SET(set, values)                    \
   for (size_t i = 0; i < WTF_ARRAY_LENGTH(values); ++i) { \
     set.insert(values[i]);                                \
@@ -2817,8 +2806,6 @@
     return false;
   if (!tracker->Supported(this))
     return false;
-  if (disabled_extensions_.Contains(String(tracker->ExtensionName())))
-    return false;
   return true;
 }
 
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
index a44eb4e..15a2ccc 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
@@ -904,7 +904,6 @@
 
   bool extension_enabled_[kWebGLExtensionNameCount];
   HeapVector<TraceWrapperMember<ExtensionTracker>> extensions_;
-  HashSet<String> disabled_extensions_;
 
   template <typename T>
   void RegisterExtension(Member<T>& extension_ptr,
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLSync.cpp b/third_party/WebKit/Source/modules/webgl/WebGLSync.cpp
index 8dd22e74..7a189e0 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLSync.cpp
+++ b/third_party/WebKit/Source/modules/webgl/WebGLSync.cpp
@@ -6,86 +6,18 @@
 
 #include "gpu/command_buffer/client/gles2_interface.h"
 #include "modules/webgl/WebGL2RenderingContextBase.h"
-#include "public/platform/Platform.h"
-#include "public/platform/TaskType.h"
 
 namespace blink {
 
 WebGLSync::WebGLSync(WebGL2RenderingContextBase* ctx,
                      GLsync object,
                      GLenum object_type)
-    : WebGLSharedObject(ctx),
-      sync_status_(GL_UNSIGNALED),
-      object_(object),
-      object_type_(object_type) {
-  if (ctx->canvas()) {
-    task_runner_ =
-        ctx->canvas()->GetDocument().GetTaskRunner(TaskType::kUnthrottled);
-  } else {
-    // Fallback for OffscreenCanvas (no frame scheduler)
-    task_runner_ = Platform::Current()->CurrentThread()->GetWebTaskRunner();
-  }
-  ScheduleAllowCacheUpdate();
-}
+    : WebGLSharedObject(ctx), object_(object), object_type_(object_type) {}
 
 WebGLSync::~WebGLSync() {
   RunDestructor();
 }
 
-void WebGLSync::UpdateCache(gpu::gles2::GLES2Interface* gl) {
-  if (sync_status_ == GL_SIGNALED) {
-    return;
-  }
-
-  if (!allow_cache_update_) {
-    return;
-  }
-
-  // We can only update the cached result when control returns to the browser.
-  allow_cache_update_ = false;
-  GLsizei length = -1;
-  GLint value = 0;
-  gl->GetSynciv(object_, GL_SYNC_STATUS, 1, &length, &value);
-  if (value) {
-    sync_status_ = value;
-  }
-  if (sync_status_ != GL_SIGNALED) {
-    ScheduleAllowCacheUpdate();
-  }
-}
-
-GLint WebGLSync::GetCachedResult(GLenum pname) {
-  switch (pname) {
-    case GL_OBJECT_TYPE:
-      return object_type_;
-    case GL_SYNC_STATUS:
-      return sync_status_;
-    case GL_SYNC_CONDITION:
-      return GL_SYNC_GPU_COMMANDS_COMPLETE;
-    case GL_SYNC_FLAGS:
-      return 0;
-  }
-
-  NOTREACHED();
-  return 0;
-}
-
-bool WebGLSync::IsSignaled() const {
-  return (sync_status_ == GL_SIGNALED);
-}
-
-void WebGLSync::ScheduleAllowCacheUpdate() {
-  if (task_handle_.IsActive())
-    return;
-  task_handle_ = PostCancellableTask(
-      *task_runner_, FROM_HERE,
-      WTF::Bind(&WebGLSync::AllowCacheUpdate, WrapWeakPersistent(this)));
-}
-
-void WebGLSync::AllowCacheUpdate() {
-  allow_cache_update_ = true;
-}
-
 void WebGLSync::DeleteObjectImpl(gpu::gles2::GLES2Interface* gl) {
   gl->DeleteSync(object_);
   object_ = nullptr;
diff --git a/third_party/WebKit/Source/modules/webgl/WebGLSync.h b/third_party/WebKit/Source/modules/webgl/WebGLSync.h
index b871790..d473093 100644
--- a/third_party/WebKit/Source/modules/webgl/WebGLSync.h
+++ b/third_party/WebKit/Source/modules/webgl/WebGLSync.h
@@ -5,15 +5,8 @@
 #ifndef WebGLSync_h
 #define WebGLSync_h
 
-#include "base/single_thread_task_runner.h"
 #include "modules/webgl/WebGLSharedObject.h"
-#include "platform/WebTaskRunner.h"
-
-namespace gpu {
-namespace gles2 {
-class GLES2Interface;
-}
-}  // namespace gpu
+#include "third_party/khronos/GLES2/gl2.h"
 
 namespace blink {
 
@@ -27,10 +20,6 @@
 
   GLsync Object() const { return object_; }
 
-  void UpdateCache(gpu::gles2::GLES2Interface*);
-  GLint GetCachedResult(GLenum pname);
-  bool IsSignaled() const;
-
  protected:
   WebGLSync(WebGL2RenderingContextBase*, GLsync, GLenum object_type);
 
@@ -42,18 +31,8 @@
  private:
   bool IsSync() const override { return true; }
 
-  void ScheduleAllowCacheUpdate();
-  void AllowCacheUpdate();
-
-  bool allow_cache_update_ = false;
-  // Initialized in cpp file to avoid including gl3.h in this header.
-  GLint sync_status_;
-
   GLsync object_;
   GLenum object_type_;
-
-  scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
-  TaskHandle task_handle_;
 };
 
 }  // namespace blink