]> git.sesse.net Git - casparcg/blobdiff - dependencies64/cef/windows/tests/shared/browser/client_app_browser.cc
Upgrade CEF to 3.3029.1611.g44e39a8 / Chromium 58.0.3029.81.
[casparcg] / dependencies64 / cef / windows / tests / shared / browser / client_app_browser.cc
diff --git a/dependencies64/cef/windows/tests/shared/browser/client_app_browser.cc b/dependencies64/cef/windows/tests/shared/browser/client_app_browser.cc
new file mode 100644 (file)
index 0000000..ae0abb8
--- /dev/null
@@ -0,0 +1,93 @@
+// Copyright (c) 2013 The Chromium Embedded Framework Authors. All rights
+// reserved. Use of this source code is governed by a BSD-style license that
+// can be found in the LICENSE file.
+
+#include "tests/shared/browser/client_app_browser.h"
+
+#include "include/base/cef_logging.h"
+#include "include/cef_cookie.h"
+#include "tests/shared/browser/main_message_loop_external_pump.h"
+#include "tests/shared/common/client_switches.h"
+
+namespace client {
+
+ClientAppBrowser::ClientAppBrowser() {
+  CreateDelegates(delegates_);
+}
+
+void ClientAppBrowser::OnBeforeCommandLineProcessing(
+    const CefString& process_type,
+    CefRefPtr<CefCommandLine> command_line) {
+  // Pass additional command-line flags to the browser process.
+  if (process_type.empty()) {
+    // Pass additional command-line flags when off-screen rendering is enabled.
+    if (command_line->HasSwitch(switches::kOffScreenRenderingEnabled)) {
+      // If the PDF extension is enabled then cc Surfaces must be disabled for
+      // PDFs to render correctly.
+      // See https://bitbucket.org/chromiumembedded/cef/issues/1689 for details.
+      if (!command_line->HasSwitch("disable-extensions") &&
+          !command_line->HasSwitch("disable-pdf-extension")) {
+        command_line->AppendSwitch("disable-surfaces");
+      }
+
+      // Use software rendering and compositing (disable GPU) for increased FPS
+      // and decreased CPU usage. This will also disable WebGL so remove these
+      // switches if you need that capability.
+      // See https://bitbucket.org/chromiumembedded/cef/issues/1257 for details.
+      if (!command_line->HasSwitch(switches::kEnableGPU)) {
+        command_line->AppendSwitch("disable-gpu");
+        command_line->AppendSwitch("disable-gpu-compositing");
+      }
+    }
+
+    if (command_line->HasSwitch(switches::kUseViews) &&
+        !command_line->HasSwitch("top-chrome-md")) {
+      // Use non-material mode on all platforms by default. Among other things
+      // this causes menu buttons to show hover state. See usage of
+      // MaterialDesignController::IsModeMaterial() in Chromium code.
+      command_line->AppendSwitchWithValue("top-chrome-md", "non-material");
+    }
+
+    DelegateSet::iterator it = delegates_.begin();
+    for (; it != delegates_.end(); ++it)
+      (*it)->OnBeforeCommandLineProcessing(this, command_line);
+  }
+}
+
+void ClientAppBrowser::OnContextInitialized() {
+  // Register cookieable schemes with the global cookie manager.
+  CefRefPtr<CefCookieManager> manager =
+      CefCookieManager::GetGlobalManager(NULL);
+  DCHECK(manager.get());
+  manager->SetSupportedSchemes(cookieable_schemes_, NULL);
+
+  print_handler_ = CreatePrintHandler();
+
+  DelegateSet::iterator it = delegates_.begin();
+  for (; it != delegates_.end(); ++it)
+    (*it)->OnContextInitialized(this);
+}
+
+void ClientAppBrowser::OnBeforeChildProcessLaunch(
+      CefRefPtr<CefCommandLine> command_line) {
+  DelegateSet::iterator it = delegates_.begin();
+  for (; it != delegates_.end(); ++it)
+    (*it)->OnBeforeChildProcessLaunch(this, command_line);
+}
+
+void ClientAppBrowser::OnRenderProcessThreadCreated(
+    CefRefPtr<CefListValue> extra_info) {
+  DelegateSet::iterator it = delegates_.begin();
+  for (; it != delegates_.end(); ++it)
+    (*it)->OnRenderProcessThreadCreated(this, extra_info);
+}
+
+void ClientAppBrowser::OnScheduleMessagePumpWork(int64 delay) {
+  // Only used when `--external-message-pump` is passed via the command-line.
+  MainMessageLoopExternalPump* message_pump =
+      MainMessageLoopExternalPump::Get();
+  if (message_pump)
+    message_pump->OnScheduleMessagePumpWork(delay);
+}
+
+}  // namespace client