2015-01-31 05:41:36 +01:00
|
|
|
// 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 "cefclient/browser/client_app_browser.h"
|
|
|
|
|
2015-02-02 22:03:19 +01:00
|
|
|
#include "include/base/cef_logging.h"
|
2015-01-31 05:41:36 +01:00
|
|
|
#include "include/cef_cookie.h"
|
2016-05-04 20:00:03 +02:00
|
|
|
#include "cefclient/browser/main_message_loop_external_pump.h"
|
2015-08-18 00:14:59 +02:00
|
|
|
#include "cefclient/common/client_switches.h"
|
2015-01-31 05:41:36 +01:00
|
|
|
|
|
|
|
namespace client {
|
|
|
|
|
|
|
|
ClientAppBrowser::ClientAppBrowser() {
|
2015-09-09 16:05:39 +02:00
|
|
|
CreateDelegates(delegates_);
|
2015-01-31 05:41:36 +01:00
|
|
|
}
|
|
|
|
|
2015-08-18 00:14:59 +02:00
|
|
|
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");
|
|
|
|
}
|
|
|
|
|
|
|
|
// Synchronize the frame rate between all processes. This results in
|
|
|
|
// decreased CPU usage by avoiding the generation of extra frames that
|
|
|
|
// would otherwise be discarded. The frame rate can be set at browser
|
|
|
|
// creation time via CefBrowserSettings.windowless_frame_rate or changed
|
|
|
|
// dynamically using CefBrowserHost::SetWindowlessFrameRate. In cefclient
|
|
|
|
// it can be set via the command-line using `--off-screen-frame-rate=XX`.
|
|
|
|
// See https://bitbucket.org/chromiumembedded/cef/issues/1368 for details.
|
|
|
|
command_line->AppendSwitch("enable-begin-frame-scheduling");
|
|
|
|
}
|
2015-09-09 16:05:39 +02:00
|
|
|
|
|
|
|
DelegateSet::iterator it = delegates_.begin();
|
|
|
|
for (; it != delegates_.end(); ++it)
|
|
|
|
(*it)->OnBeforeCommandLineProcessing(this, command_line);
|
2015-08-18 00:14:59 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-01-31 05:41:36 +01:00
|
|
|
void ClientAppBrowser::OnContextInitialized() {
|
|
|
|
// Register cookieable schemes with the global cookie manager.
|
2015-03-02 21:25:14 +01:00
|
|
|
CefRefPtr<CefCookieManager> manager =
|
|
|
|
CefCookieManager::GetGlobalManager(NULL);
|
2015-01-31 05:41:36 +01:00
|
|
|
DCHECK(manager.get());
|
2015-03-02 21:25:14 +01:00
|
|
|
manager->SetSupportedSchemes(cookieable_schemes_, NULL);
|
2015-01-31 05:41:36 +01:00
|
|
|
|
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2016-05-04 20:00:03 +02:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
|
2015-01-31 05:41:36 +01:00
|
|
|
} // namespace client
|