gpu: Add extension check when initializing MailboxSync

And do not enable accelerated canvas in webview if extensions are
missing.

BUG=332146

Review URL: https://codereview.chromium.org/196653019

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257295 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/android_webview/browser/aw_browser_main_parts.cc b/android_webview/browser/aw_browser_main_parts.cc
index c018d1e..653f8c5f 100644
--- a/android_webview/browser/aw_browser_main_parts.cc
+++ b/android_webview/browser/aw_browser_main_parts.cc
@@ -8,12 +8,15 @@
 #include "android_webview/browser/aw_result_codes.h"
 #include "base/android/build_info.h"
 #include "base/android/memory_pressure_listener_android.h"
+#include "base/command_line.h"
 #include "base/files/file_path.h"
 #include "base/path_service.h"
 #include "content/public/browser/render_process_host.h"
 #include "content/public/common/content_client.h"
+#include "content/public/common/content_switches.h"
 #include "content/public/common/result_codes.h"
 #include "content/public/common/url_utils.h"
+#include "gpu/command_buffer/service/mailbox_synchronizer.h"
 #include "net/android/network_change_notifier_factory_android.h"
 #include "net/base/network_change_notifier.h"
 #include "ui/base/l10n/l10n_util_android.h"
@@ -59,6 +62,11 @@
 }
 
 void AwBrowserMainParts::PreMainMessageLoopRun() {
+  if (!gpu::gles2::MailboxSynchronizer::Initialize()) {
+    CommandLine::ForCurrentProcess()->AppendSwitch(
+        switches::kDisableAccelerated2dCanvas);
+  }
+
   browser_context_->PreMainMessageLoopRun();
   // This is needed for WebView Classic backwards compatibility
   // See crbug.com/298495