cefclient: Split ClientApp into process-specific types (issue #1500).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@2015 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt
2015-01-31 04:41:36 +00:00
parent 5c28259c31
commit 1ce99c0ed4
37 changed files with 757 additions and 528 deletions

19
cef.gyp
View File

@ -396,11 +396,17 @@
'libcef_dll_wrapper', 'libcef_dll_wrapper',
], ],
'sources': [ 'sources': [
'tests/cefclient/browser/client_app_browser.cc',
'tests/cefclient/browser/client_app_browser.h',
'tests/cefclient/browser/resource_util.h', 'tests/cefclient/browser/resource_util.h',
'tests/cefclient/common/client_app.cc', 'tests/cefclient/common/client_app.cc',
'tests/cefclient/common/client_app.h', 'tests/cefclient/common/client_app.h',
'tests/cefclient/common/client_app_other.cc',
'tests/cefclient/common/client_app_other.h',
'tests/cefclient/common/client_switches.cc', 'tests/cefclient/common/client_switches.cc',
'tests/cefclient/common/client_switches.h', 'tests/cefclient/common/client_switches.h',
'tests/cefclient/renderer/client_app_renderer.cc',
'tests/cefclient/renderer/client_app_renderer.h',
'tests/cefclient/resources/osr_test.html', 'tests/cefclient/resources/osr_test.html',
'tests/unittests/browser_info_map_unittest.cc', 'tests/unittests/browser_info_map_unittest.cc',
'tests/unittests/command_line_unittest.cc', 'tests/unittests/command_line_unittest.cc',
@ -466,9 +472,8 @@
}, },
'include_dirs': [ 'include_dirs': [
'.', '.',
# Necessary to allow resouce_util_* implementation files in cefclient to # Necessary to allow unittest files to access cefclient files.
# include 'cefclient/*' files, without the tests/ fragment 'tests',
'./tests'
], ],
'conditions': [ 'conditions': [
[ 'OS=="win"', { [ 'OS=="win"', {
@ -1532,12 +1537,20 @@
], ],
'include_dirs': [ 'include_dirs': [
'.', '.',
# Necessary to allow unittest files to access cefclient files.
'tests',
], ],
'sources': [ 'sources': [
'tests/cefclient/browser/client_app_browser.cc',
'tests/cefclient/browser/client_app_browser.h',
'tests/cefclient/common/client_app.cc', 'tests/cefclient/common/client_app.cc',
'tests/cefclient/common/client_app.h', 'tests/cefclient/common/client_app.h',
'tests/cefclient/common/client_app_other.cc',
'tests/cefclient/common/client_app_other.h',
'tests/cefclient/common/client_switches.cc', 'tests/cefclient/common/client_switches.cc',
'tests/cefclient/common/client_switches.h', 'tests/cefclient/common/client_switches.h',
'tests/cefclient/renderer/client_app_renderer.cc',
'tests/cefclient/renderer/client_app_renderer.h',
'tests/cefclient/renderer/process_helper_mac.cc', 'tests/cefclient/renderer/process_helper_mac.cc',
'tests/unittests/client_app_delegates.cc', 'tests/unittests/client_app_delegates.cc',
'tests/unittests/cookie_unittest.cc', 'tests/unittests/cookie_unittest.cc',

View File

@ -140,6 +140,8 @@
'tests/cefclient/browser/browser_window.h', 'tests/cefclient/browser/browser_window.h',
'tests/cefclient/browser/bytes_write_handler.cc', 'tests/cefclient/browser/bytes_write_handler.cc',
'tests/cefclient/browser/bytes_write_handler.h', 'tests/cefclient/browser/bytes_write_handler.h',
'tests/cefclient/browser/client_app_browser.cc',
'tests/cefclient/browser/client_app_browser.h',
'tests/cefclient/browser/client_app_delegates_browser.cc', 'tests/cefclient/browser/client_app_delegates_browser.cc',
'tests/cefclient/browser/client_handler.cc', 'tests/cefclient/browser/client_handler.cc',
'tests/cefclient/browser/client_handler.h', 'tests/cefclient/browser/client_handler.h',
@ -179,6 +181,8 @@
'tests/cefclient/common/client_app.cc', 'tests/cefclient/common/client_app.cc',
'tests/cefclient/common/client_app.h', 'tests/cefclient/common/client_app.h',
'tests/cefclient/common/client_app_delegates_common.cc', 'tests/cefclient/common/client_app_delegates_common.cc',
'tests/cefclient/common/client_app_other.cc',
'tests/cefclient/common/client_app_other.h',
'tests/cefclient/common/client_switches.cc', 'tests/cefclient/common/client_switches.cc',
'tests/cefclient/common/client_switches.h', 'tests/cefclient/common/client_switches.h',
'tests/cefclient/common/scheme_test_common.cc', 'tests/cefclient/common/scheme_test_common.cc',
@ -186,6 +190,8 @@
], ],
'cefclient_sources_renderer': [ 'cefclient_sources_renderer': [
'tests/cefclient/renderer/client_app_delegates_renderer.cc', 'tests/cefclient/renderer/client_app_delegates_renderer.cc',
'tests/cefclient/renderer/client_app_renderer.cc',
'tests/cefclient/renderer/client_app_renderer.h',
'tests/cefclient/renderer/client_renderer.cc', 'tests/cefclient/renderer/client_renderer.cc',
'tests/cefclient/renderer/client_renderer.h', 'tests/cefclient/renderer/client_renderer.h',
'tests/cefclient/renderer/performance_test.cc', 'tests/cefclient/renderer/performance_test.cc',
@ -254,7 +260,6 @@
'<@(cefclient_sources_common)', '<@(cefclient_sources_common)',
], ],
'cefclient_sources_mac_helper': [ 'cefclient_sources_mac_helper': [
'tests/cefclient/renderer/client_app_delegates_stubs_mac.cc',
'tests/cefclient/renderer/process_helper_mac.cc', 'tests/cefclient/renderer/process_helper_mac.cc',
'<@(cefclient_sources_common)', '<@(cefclient_sources_common)',
'<@(cefclient_sources_renderer)', '<@(cefclient_sources_renderer)',

View File

@ -16,11 +16,14 @@
#include "include/base/cef_logging.h" #include "include/base/cef_logging.h"
#include "include/base/cef_scoped_ptr.h" #include "include/base/cef_scoped_ptr.h"
#include "include/cef_app.h" #include "include/cef_app.h"
#include "include/cef_command_line.h"
#include "include/wrapper/cef_helpers.h" #include "include/wrapper/cef_helpers.h"
#include "cefclient/browser/client_app_browser.h"
#include "cefclient/browser/main_context_impl.h" #include "cefclient/browser/main_context_impl.h"
#include "cefclient/browser/main_message_loop_std.h" #include "cefclient/browser/main_message_loop_std.h"
#include "cefclient/browser/test_runner.h" #include "cefclient/browser/test_runner.h"
#include "cefclient/common/client_app.h" #include "cefclient/common/client_app_other.h"
#include "cefclient/renderer/client_app_renderer.h"
namespace client { namespace client {
namespace { namespace {
@ -52,15 +55,33 @@ int RunMain(int argc, char* argv[]) {
char** argv_copy = scoped_arg_array.array(); char** argv_copy = scoped_arg_array.array();
CefMainArgs main_args(argc, argv); CefMainArgs main_args(argc, argv);
CefRefPtr<ClientApp> app(new ClientApp);
// Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
command_line->InitFromArgv(argc, argv);
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
ClientApp::ProcessType process_type = ClientApp::GetProcessType(command_line);
if (process_type == ClientApp::BrowserProcess) {
app = new ClientAppBrowser();
} else if (process_type == ClientApp::RendererProcess ||
process_type == ClientApp::ZygoteProcess) {
// On Linux the zygote process is used to spawn other process types. Since
// we don't know what type of process it will be give it the renderer
// client.
app = new ClientAppRenderer();
} else if (process_type == ClientApp::OtherProcess) {
app = new ClientAppOther();
}
// Execute the secondary process, if any. // Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app.get(), NULL); int exit_code = CefExecuteProcess(main_args, app, NULL);
if (exit_code >= 0) if (exit_code >= 0)
return exit_code; return exit_code;
// Create the main context object. // Create the main context object.
scoped_ptr<MainContextImpl> context(new MainContextImpl(argc, argv, true)); scoped_ptr<MainContextImpl> context(new MainContextImpl(command_line, true));
CefSettings settings; CefSettings settings;
@ -76,7 +97,7 @@ int RunMain(int argc, char* argv[]) {
scoped_ptr<MainMessageLoop> message_loop(new MainMessageLoopStd); scoped_ptr<MainMessageLoop> message_loop(new MainMessageLoopStd);
// Initialize CEF. // Initialize CEF.
context->Initialize(main_args, settings, app.get(), NULL); context->Initialize(main_args, settings, app, NULL);
// The Chromium sandbox requires that there only be a single thread during // The Chromium sandbox requires that there only be a single thread during
// initialization. Therefore initialize GTK after CEF. // initialization. Therefore initialize GTK after CEF.

View File

@ -6,12 +6,12 @@
#import <Cocoa/Cocoa.h> #import <Cocoa/Cocoa.h>
#include "include/cef_app.h" #include "include/cef_app.h"
#import "include/cef_application_mac.h" #import "include/cef_application_mac.h"
#include "cefclient/browser/client_app_browser.h"
#include "cefclient/browser/main_context_impl.h" #include "cefclient/browser/main_context_impl.h"
#include "cefclient/browser/main_message_loop_std.h" #include "cefclient/browser/main_message_loop_std.h"
#include "cefclient/browser/resource.h" #include "cefclient/browser/resource.h"
#include "cefclient/browser/root_window.h" #include "cefclient/browser/root_window.h"
#include "cefclient/browser/test_runner.h" #include "cefclient/browser/test_runner.h"
#include "cefclient/common/client_app.h"
namespace { namespace {
@ -177,20 +177,10 @@ void AddMenuItem(NSMenu *menu, NSString* label, int idval) {
@end @end
namespace client { namespace client {
// Stub implementations of ClientApp methods that are only used in the renderer
// process.
// static
void ClientApp::CreateRenderDelegates(RenderDelegateSet& delegates) {
}
namespace { namespace {
int RunMain(int argc, char* argv[]) { int RunMain(int argc, char* argv[]) {
CefMainArgs main_args(argc, argv); CefMainArgs main_args(argc, argv);
CefRefPtr<ClientApp> app(new ClientApp);
// Initialize the AutoRelease pool. // Initialize the AutoRelease pool.
NSAutoreleasePool* autopool = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool* autopool = [[NSAutoreleasePool alloc] init];
@ -198,8 +188,18 @@ int RunMain(int argc, char* argv[]) {
// Initialize the ClientApplication instance. // Initialize the ClientApplication instance.
[ClientApplication sharedApplication]; [ClientApplication sharedApplication];
// Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
command_line->InitFromArgv(argc, argv);
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
ClientApp::ProcessType process_type = ClientApp::GetProcessType(command_line);
if (process_type == ClientApp::BrowserProcess)
app = new ClientAppBrowser();
// Create the main context object. // Create the main context object.
scoped_ptr<MainContextImpl> context(new MainContextImpl(argc, argv, true)); scoped_ptr<MainContextImpl> context(new MainContextImpl(command_line, true));
CefSettings settings; CefSettings settings;
@ -210,7 +210,7 @@ int RunMain(int argc, char* argv[]) {
scoped_ptr<MainMessageLoop> message_loop(new MainMessageLoopStd); scoped_ptr<MainMessageLoop> message_loop(new MainMessageLoopStd);
// Initialize CEF. // Initialize CEF.
context->Initialize(main_args, settings, app.get(), NULL); context->Initialize(main_args, settings, app, NULL);
// Register scheme handlers. // Register scheme handlers.
test_runner::RegisterSchemeHandlers(); test_runner::RegisterSchemeHandlers();

View File

@ -5,13 +5,16 @@
#include <windows.h> #include <windows.h>
#include "include/base/cef_scoped_ptr.h" #include "include/base/cef_scoped_ptr.h"
#include "include/cef_command_line.h"
#include "include/cef_sandbox_win.h" #include "include/cef_sandbox_win.h"
#include "cefclient/browser/client_app_browser.h"
#include "cefclient/browser/main_context_impl.h" #include "cefclient/browser/main_context_impl.h"
#include "cefclient/browser/main_message_loop_multithreaded_win.h" #include "cefclient/browser/main_message_loop_multithreaded_win.h"
#include "cefclient/browser/main_message_loop_std.h" #include "cefclient/browser/main_message_loop_std.h"
#include "cefclient/browser/root_window_manager.h" #include "cefclient/browser/root_window_manager.h"
#include "cefclient/browser/test_runner.h" #include "cefclient/browser/test_runner.h"
#include "cefclient/common/client_app.h" #include "cefclient/common/client_app_other.h"
#include "cefclient/renderer/client_app_renderer.h"
// When generating projects with CMake the CEF_USE_SANDBOX value will be defined // When generating projects with CMake the CEF_USE_SANDBOX value will be defined
// automatically if using the required compiler version. Pass -DUSE_SANDBOX=OFF // automatically if using the required compiler version. Pass -DUSE_SANDBOX=OFF
@ -29,6 +32,8 @@ namespace client {
namespace { namespace {
int RunMain(HINSTANCE hInstance, int nCmdShow) { int RunMain(HINSTANCE hInstance, int nCmdShow) {
CefMainArgs main_args(hInstance);
void* sandbox_info = NULL; void* sandbox_info = NULL;
#if defined(CEF_USE_SANDBOX) #if defined(CEF_USE_SANDBOX)
@ -38,16 +43,27 @@ int RunMain(HINSTANCE hInstance, int nCmdShow) {
sandbox_info = scoped_sandbox.sandbox_info(); sandbox_info = scoped_sandbox.sandbox_info();
#endif #endif
CefMainArgs main_args(hInstance); // Parse command-line arguments.
CefRefPtr<ClientApp> app(new ClientApp); CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
command_line->InitFromString(::GetCommandLineW());
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
ClientApp::ProcessType process_type = ClientApp::GetProcessType(command_line);
if (process_type == ClientApp::BrowserProcess)
app = new ClientAppBrowser();
else if (process_type == ClientApp::RendererProcess)
app = new ClientAppRenderer();
else if (process_type == ClientApp::OtherProcess)
app = new ClientAppOther();
// Execute the secondary process, if any. // Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info); int exit_code = CefExecuteProcess(main_args, app, sandbox_info);
if (exit_code >= 0) if (exit_code >= 0)
return exit_code; return exit_code;
// Create the main context object. // Create the main context object.
scoped_ptr<MainContextImpl> context(new MainContextImpl(0, NULL, true)); scoped_ptr<MainContextImpl> context(new MainContextImpl(command_line, true));
CefSettings settings; CefSettings settings;
@ -66,7 +82,7 @@ int RunMain(HINSTANCE hInstance, int nCmdShow) {
message_loop.reset(new MainMessageLoopStd); message_loop.reset(new MainMessageLoopStd);
// Initialize CEF. // Initialize CEF.
context->Initialize(main_args, settings, app.get(), sandbox_info); context->Initialize(main_args, settings, app, sandbox_info);
// Register scheme handlers. // Register scheme handlers.
test_runner::RegisterSchemeHandlers(); test_runner::RegisterSchemeHandlers();

View File

@ -0,0 +1,43 @@
// 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"
#include "include/cef_cookie.h"
namespace client {
ClientAppBrowser::ClientAppBrowser() {
}
void ClientAppBrowser::OnContextInitialized() {
CreateDelegates(delegates_);
// Register cookieable schemes with the global cookie manager.
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager();
DCHECK(manager.get());
manager->SetSupportedSchemes(cookieable_schemes_);
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);
}
} // namespace client

View File

@ -0,0 +1,73 @@
// 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.
#ifndef CEF_TESTS_CEFCLIENT_BROWSER_CLIENT_APP_BROWSER_H_
#define CEF_TESTS_CEFCLIENT_BROWSER_CLIENT_APP_BROWSER_H_
#pragma once
#include <set>
#include "cefclient/common/client_app.h"
namespace client {
// Client app implementation for the browser process.
class ClientAppBrowser : public ClientApp,
public CefBrowserProcessHandler {
public:
// Interface for browser delegates. All Delegates must be returned via
// CreateDelegates. Do not perform work in the Delegate
// constructor. See CefBrowserProcessHandler for documentation.
class Delegate : public virtual CefBase {
public:
virtual void OnContextInitialized(CefRefPtr<ClientApp> app) {}
virtual void OnBeforeChildProcessLaunch(
CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) {}
virtual void OnRenderProcessThreadCreated(
CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefListValue> extra_info) {}
};
typedef std::set<CefRefPtr<Delegate> > DelegateSet;
ClientAppBrowser();
private:
// Creates all of the Delegate objects. Implemented in
// client_app_delegates.
static void CreateDelegates(DelegateSet& delegates);
// Create the Linux print handler. Implemented in client_app_delegates.
static CefRefPtr<CefPrintHandler> CreatePrintHandler();
// CefApp methods.
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() OVERRIDE {
return this;
}
// CefBrowserProcessHandler methods.
void OnContextInitialized() OVERRIDE;
void OnBeforeChildProcessLaunch(
CefRefPtr<CefCommandLine> command_line) OVERRIDE;
void OnRenderProcessThreadCreated(
CefRefPtr<CefListValue> extra_info) OVERRIDE;
CefRefPtr<CefPrintHandler> GetPrintHandler() OVERRIDE {
return print_handler_;
}
// Set of supported Delegates.
DelegateSet delegates_;
CefRefPtr<CefPrintHandler> print_handler_;
IMPLEMENT_REFCOUNTING(ClientAppBrowser);
DISALLOW_COPY_AND_ASSIGN(ClientAppBrowser);
};
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_BROWSER_CLIENT_APP_BROWSER_H_

View File

@ -2,7 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
#include "cefclient/common/client_app.h" #include "cefclient/browser/client_app_browser.h"
#if defined(OS_LINUX) #if defined(OS_LINUX)
#include "cefclient/browser/print_handler_gtk.h" #include "cefclient/browser/print_handler_gtk.h"
@ -11,11 +11,11 @@
namespace client { namespace client {
// static // static
void ClientApp::CreateBrowserDelegates(BrowserDelegateSet& delegates) { void ClientAppBrowser::CreateDelegates(DelegateSet& delegates) {
} }
// static // static
CefRefPtr<CefPrintHandler> ClientApp::CreatePrintHandler() { CefRefPtr<CefPrintHandler> ClientAppBrowser::CreatePrintHandler() {
#if defined(OS_LINUX) #if defined(OS_LINUX)
return new ClientPrintHandlerGtk(); return new ClientPrintHandlerGtk();
#else #else

View File

@ -15,19 +15,13 @@ const char kDefaultUrl[] = "http://www.google.com";
} // namespace } // namespace
MainContextImpl::MainContextImpl(int argc, MainContextImpl::MainContextImpl(CefRefPtr<CefCommandLine> command_line,
const char* const* argv,
bool terminate_when_all_windows_closed) bool terminate_when_all_windows_closed)
: terminate_when_all_windows_closed_(terminate_when_all_windows_closed), : command_line_(command_line),
terminate_when_all_windows_closed_(terminate_when_all_windows_closed),
initialized_(false), initialized_(false),
shutdown_(false) { shutdown_(false) {
// Parse the command line. DCHECK(command_line_.get());
command_line_ = CefCommandLine::CreateCommandLine();
#if defined(OS_WIN)
command_line_->InitFromString(::GetCommandLineW());
#else
command_line_->InitFromArgv(argc, argv);
#endif
// Set the main URL. // Set the main URL.
if (command_line_->HasSwitch(switches::kUrl)) if (command_line_->HasSwitch(switches::kUrl))

View File

@ -18,8 +18,7 @@ namespace client {
// Used to store global context in the browser process. // Used to store global context in the browser process.
class MainContextImpl : public MainContext { class MainContextImpl : public MainContext {
public: public:
MainContextImpl(int argc, MainContextImpl(CefRefPtr<CefCommandLine> command_line,
const char* const* argv,
bool terminate_when_all_windows_closed); bool terminate_when_all_windows_closed);
// MainContext members. // MainContext members.
@ -54,6 +53,7 @@ class MainContextImpl : public MainContext {
return initialized_ && !shutdown_; return initialized_ && !shutdown_;
} }
CefRefPtr<CefCommandLine> command_line_;
const bool terminate_when_all_windows_closed_; const bool terminate_when_all_windows_closed_;
// Track context state. Accessing these variables from multiple threads is // Track context state. Accessing these variables from multiple threads is
@ -62,7 +62,6 @@ class MainContextImpl : public MainContext {
bool initialized_; bool initialized_;
bool shutdown_; bool shutdown_;
CefRefPtr<CefCommandLine> command_line_;
std::string main_url_; std::string main_url_;
scoped_ptr<RootWindowManager> root_window_manager_; scoped_ptr<RootWindowManager> root_window_manager_;

View File

@ -2,23 +2,45 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
// This file is shared by cefclient and cef_unittests so don't include using #include "cefclient/common/client_app.h"
// a qualified path.
#include "client_app.h" // NOLINT(build/include)
#include <string> #include "include/cef_command_line.h"
#include "include/cef_cookie.h"
#include "include/cef_process_message.h"
#include "include/cef_task.h"
#include "include/cef_v8.h"
#include "include/wrapper/cef_helpers.h"
namespace client { namespace client {
namespace {
// These flags must match the Chromium values.
const char kProcessType[] = "type";
const char kRendererProcess[] = "renderer";
#if defined(OS_LINUX)
const char kZygoteProcess[] = "zygote";
#endif
} // namespace
ClientApp::ClientApp() { ClientApp::ClientApp() {
} }
// static
ClientApp::ProcessType ClientApp::GetProcessType(
CefRefPtr<CefCommandLine> command_line) {
// The command-line flag won't be specified for the browser process.
if (!command_line->HasSwitch(kProcessType))
return BrowserProcess;
const std::string& process_type = command_line->GetSwitchValue(kProcessType);
if (process_type == kRendererProcess)
return RendererProcess;
#if defined(OS_LINUX)
else if (process_type == kZygoteProcess)
return ZygoteProcess;
#endif
return OtherProcess;
}
void ClientApp::OnRegisterCustomSchemes( void ClientApp::OnRegisterCustomSchemes(
CefRefPtr<CefSchemeRegistrar> registrar) { CefRefPtr<CefSchemeRegistrar> registrar) {
// Default schemes that support cookies. // Default schemes that support cookies.
@ -28,137 +50,4 @@ void ClientApp::OnRegisterCustomSchemes(
RegisterCustomSchemes(registrar, cookieable_schemes_); RegisterCustomSchemes(registrar, cookieable_schemes_);
} }
void ClientApp::OnContextInitialized() {
CreateBrowserDelegates(browser_delegates_);
// Register cookieable schemes with the global cookie manager.
CefRefPtr<CefCookieManager> manager = CefCookieManager::GetGlobalManager();
DCHECK(manager.get());
manager->SetSupportedSchemes(cookieable_schemes_);
print_handler_ = CreatePrintHandler();
BrowserDelegateSet::iterator it = browser_delegates_.begin();
for (; it != browser_delegates_.end(); ++it)
(*it)->OnContextInitialized(this);
}
void ClientApp::OnBeforeChildProcessLaunch(
CefRefPtr<CefCommandLine> command_line) {
BrowserDelegateSet::iterator it = browser_delegates_.begin();
for (; it != browser_delegates_.end(); ++it)
(*it)->OnBeforeChildProcessLaunch(this, command_line);
}
void ClientApp::OnRenderProcessThreadCreated(
CefRefPtr<CefListValue> extra_info) {
BrowserDelegateSet::iterator it = browser_delegates_.begin();
for (; it != browser_delegates_.end(); ++it)
(*it)->OnRenderProcessThreadCreated(this, extra_info);
}
void ClientApp::OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info) {
CreateRenderDelegates(render_delegates_);
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnRenderThreadCreated(this, extra_info);
}
void ClientApp::OnWebKitInitialized() {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnWebKitInitialized(this);
}
void ClientApp::OnBrowserCreated(CefRefPtr<CefBrowser> browser) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnBrowserCreated(this, browser);
}
void ClientApp::OnBrowserDestroyed(CefRefPtr<CefBrowser> browser) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnBrowserDestroyed(this, browser);
}
CefRefPtr<CefLoadHandler> ClientApp::GetLoadHandler() {
CefRefPtr<CefLoadHandler> load_handler;
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end() && !load_handler.get(); ++it)
load_handler = (*it)->GetLoadHandler(this);
return load_handler;
}
bool ClientApp::OnBeforeNavigation(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
NavigationType navigation_type,
bool is_redirect) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it) {
if ((*it)->OnBeforeNavigation(this, browser, frame, request,
navigation_type, is_redirect)) {
return true;
}
}
return false;
}
void ClientApp::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnContextCreated(this, browser, frame, context);
}
void ClientApp::OnContextReleased(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnContextReleased(this, browser, frame, context);
}
void ClientApp::OnUncaughtException(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it) {
(*it)->OnUncaughtException(this, browser, frame, context, exception,
stackTrace);
}
}
void ClientApp::OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) {
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end(); ++it)
(*it)->OnFocusedNodeChanged(this, browser, frame, node);
}
bool ClientApp::OnProcessMessageReceived(
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
DCHECK_EQ(source_process, PID_BROWSER);
bool handled = false;
RenderDelegateSet::iterator it = render_delegates_.begin();
for (; it != render_delegates_.end() && !handled; ++it) {
handled = (*it)->OnProcessMessageReceived(this, browser, source_process,
message);
}
return handled;
}
} // namespace client } // namespace client

View File

@ -6,184 +6,41 @@
#define CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_H_ #define CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_H_
#pragma once #pragma once
#include <map>
#include <set>
#include <string>
#include <utility>
#include <vector> #include <vector>
#include "include/cef_app.h" #include "include/cef_app.h"
namespace client { namespace client {
class ClientApp : public CefApp, // Base class for customizing process-type-based behavior.
public CefBrowserProcessHandler, class ClientApp : public CefApp {
public CefRenderProcessHandler {
public: public:
// Interface for browser delegates. All BrowserDelegates must be returned via
// CreateBrowserDelegates. Do not perform work in the BrowserDelegate
// constructor. See CefBrowserProcessHandler for documentation.
class BrowserDelegate : public virtual CefBase {
public:
virtual void OnContextInitialized(CefRefPtr<ClientApp> app) {}
virtual void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app,
CefRefPtr<CefCommandLine> command_line) {}
virtual void OnRenderProcessThreadCreated(
CefRefPtr<ClientApp> app,
CefRefPtr<CefListValue> extra_info) {}
};
typedef std::set<CefRefPtr<BrowserDelegate> > BrowserDelegateSet;
// Interface for renderer delegates. All RenderDelegates must be returned via
// CreateRenderDelegates. Do not perform work in the RenderDelegate
// constructor. See CefRenderProcessHandler for documentation.
class RenderDelegate : public virtual CefBase {
public:
virtual void OnRenderThreadCreated(CefRefPtr<ClientApp> app,
CefRefPtr<CefListValue> extra_info) {}
virtual void OnWebKitInitialized(CefRefPtr<ClientApp> app) {}
virtual void OnBrowserCreated(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser) {}
virtual void OnBrowserDestroyed(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser) {}
virtual CefRefPtr<CefLoadHandler> GetLoadHandler(CefRefPtr<ClientApp> app) {
return NULL;
}
virtual bool OnBeforeNavigation(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
cef_navigation_type_t navigation_type,
bool is_redirect) {
return false;
}
virtual void OnContextCreated(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {}
virtual void OnContextReleased(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {}
virtual void OnUncaughtException(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) {}
virtual void OnFocusedNodeChanged(CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) {}
// Called when a process message is received. Return true if the message was
// handled and should not be passed on to other handlers. RenderDelegates
// should check for unique message names to avoid interfering with each
// other.
virtual bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app,
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
return false;
}
};
typedef std::set<CefRefPtr<RenderDelegate> > RenderDelegateSet;
ClientApp(); ClientApp();
enum ProcessType {
BrowserProcess,
RendererProcess,
ZygoteProcess,
OtherProcess,
};
// Determine the process type based on command-line arguments.
static ProcessType GetProcessType(CefRefPtr<CefCommandLine> command_line);
protected:
// Schemes that will be registered with the global cookie manager.
std::vector<CefString> cookieable_schemes_;
private: private:
// Creates all of the BrowserDelegate objects. Implemented in
// client_app_delegates.
static void CreateBrowserDelegates(BrowserDelegateSet& delegates);
// Creates all of the RenderDelegate objects. Implemented in
// client_app_delegates.
static void CreateRenderDelegates(RenderDelegateSet& delegates);
// Registers custom schemes. Implemented in client_app_delegates. // Registers custom schemes. Implemented in client_app_delegates.
static void RegisterCustomSchemes(CefRefPtr<CefSchemeRegistrar> registrar, static void RegisterCustomSchemes(CefRefPtr<CefSchemeRegistrar> registrar,
std::vector<CefString>& cookiable_schemes); std::vector<CefString>& cookiable_schemes);
// Create the Linux print handler. Implemented in client_app_delegates.
static CefRefPtr<CefPrintHandler> CreatePrintHandler();
// CefApp methods. // CefApp methods.
void OnRegisterCustomSchemes( void OnRegisterCustomSchemes(
CefRefPtr<CefSchemeRegistrar> registrar) OVERRIDE; CefRefPtr<CefSchemeRegistrar> registrar) OVERRIDE;
CefRefPtr<CefBrowserProcessHandler> GetBrowserProcessHandler() OVERRIDE {
return this;
}
CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() OVERRIDE {
return this;
}
// CefBrowserProcessHandler methods. DISALLOW_COPY_AND_ASSIGN(ClientApp);
void OnContextInitialized() OVERRIDE;
void OnBeforeChildProcessLaunch(
CefRefPtr<CefCommandLine> command_line) OVERRIDE;
void OnRenderProcessThreadCreated(
CefRefPtr<CefListValue> extra_info) OVERRIDE;
CefRefPtr<CefPrintHandler> GetPrintHandler() OVERRIDE {
return print_handler_;
}
// CefRenderProcessHandler methods.
void OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info) OVERRIDE;
void OnWebKitInitialized() OVERRIDE;
void OnBrowserCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
void OnBrowserDestroyed(CefRefPtr<CefBrowser> browser) OVERRIDE;
CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE;
bool OnBeforeNavigation(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
NavigationType navigation_type,
bool is_redirect) OVERRIDE;
void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
void OnContextReleased(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
void OnUncaughtException(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) OVERRIDE;
void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) OVERRIDE;
bool OnProcessMessageReceived(
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE;
// Set of supported BrowserDelegates. Only used in the browser process.
BrowserDelegateSet browser_delegates_;
// Set of supported RenderDelegates. Only used in the renderer process.
RenderDelegateSet render_delegates_;
// Schemes that will be registered with the global cookie manager. Used in
// both the browser and renderer process.
std::vector<CefString> cookieable_schemes_;
CefRefPtr<CefPrintHandler> print_handler_;
IMPLEMENT_REFCOUNTING(ClientApp);
}; };
} // namespace client } // namespace client

View File

@ -0,0 +1,14 @@
// Copyright (c) 2015 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/common/client_app_other.h"
#include "include/cef_command_line.h"
namespace client {
ClientAppOther::ClientAppOther() {
}
} // namespace client

View File

@ -0,0 +1,25 @@
// Copyright (c) 2015 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.
#ifndef CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_OTHER_H_
#define CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_OTHER_H_
#pragma once
#include "cefclient/common/client_app.h"
namespace client {
// Client app implementation for other process types.
class ClientAppOther : public ClientApp {
public:
ClientAppOther();
private:
IMPLEMENT_REFCOUNTING(ClientAppOther);
DISALLOW_COPY_AND_ASSIGN(ClientAppOther);
};
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_COMMON_CLIENT_APP_OTHER_H_

View File

@ -2,9 +2,7 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
// This file is shared by cefclient and cef_unittests so don't include using #include "cefclient/common/client_switches.h"
// a qualified path.
#include "client_switches.h" // NOLINT(build/include)
namespace client { namespace client {
namespace switches { namespace switches {

View File

@ -2,16 +2,16 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
#include "cefclient/common/client_app.h" #include "cefclient/renderer/client_app_renderer.h"
#include "cefclient/renderer/client_renderer.h" #include "cefclient/renderer/client_renderer.h"
#include "cefclient/renderer/performance_test.h" #include "cefclient/renderer/performance_test.h"
namespace client { namespace client {
// static // static
void ClientApp::CreateRenderDelegates(RenderDelegateSet& delegates) { void ClientAppRenderer::CreateDelegates(DelegateSet& delegates) {
renderer::CreateRenderDelegates(delegates); renderer::CreateDelegates(delegates);
performance_test::CreateRenderDelegates(delegates); performance_test::CreateDelegates(delegates);
} }
} // namespace client } // namespace client

View File

@ -1,21 +0,0 @@
// Copyright (c) 2012 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/common/client_app.h"
namespace client {
// Stub implementations of ClientApp methods that are only used in the browser
// process.
// static
void ClientApp::CreateBrowserDelegates(BrowserDelegateSet& delegates) {
}
// static
CefRefPtr<CefPrintHandler> ClientApp::CreatePrintHandler() {
return NULL;
}
} // namespace client

View File

@ -0,0 +1,118 @@
// 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/renderer/client_app_renderer.h"
namespace client {
ClientAppRenderer::ClientAppRenderer() {
}
void ClientAppRenderer::OnRenderThreadCreated(
CefRefPtr<CefListValue> extra_info) {
CreateDelegates(delegates_);
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnRenderThreadCreated(this, extra_info);
}
void ClientAppRenderer::OnWebKitInitialized() {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnWebKitInitialized(this);
}
void ClientAppRenderer::OnBrowserCreated(CefRefPtr<CefBrowser> browser) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnBrowserCreated(this, browser);
}
void ClientAppRenderer::OnBrowserDestroyed(CefRefPtr<CefBrowser> browser) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnBrowserDestroyed(this, browser);
}
CefRefPtr<CefLoadHandler> ClientAppRenderer::GetLoadHandler() {
CefRefPtr<CefLoadHandler> load_handler;
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end() && !load_handler.get(); ++it)
load_handler = (*it)->GetLoadHandler(this);
return load_handler;
}
bool ClientAppRenderer::OnBeforeNavigation(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
NavigationType navigation_type,
bool is_redirect) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it) {
if ((*it)->OnBeforeNavigation(this, browser, frame, request,
navigation_type, is_redirect)) {
return true;
}
}
return false;
}
void ClientAppRenderer::OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnContextCreated(this, browser, frame, context);
}
void ClientAppRenderer::OnContextReleased(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnContextReleased(this, browser, frame, context);
}
void ClientAppRenderer::OnUncaughtException(
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it) {
(*it)->OnUncaughtException(this, browser, frame, context, exception,
stackTrace);
}
}
void ClientAppRenderer::OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) {
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end(); ++it)
(*it)->OnFocusedNodeChanged(this, browser, frame, node);
}
bool ClientAppRenderer::OnProcessMessageReceived(
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
DCHECK_EQ(source_process, PID_BROWSER);
bool handled = false;
DelegateSet::iterator it = delegates_.begin();
for (; it != delegates_.end() && !handled; ++it) {
handled = (*it)->OnProcessMessageReceived(this, browser, source_process,
message);
}
return handled;
}
} // namespace client

View File

@ -0,0 +1,138 @@
// 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.
#ifndef CEF_TESTS_CEFCLIENT_RENDERER_CLIENT_APP_RENDERER_H_
#define CEF_TESTS_CEFCLIENT_RENDERER_CLIENT_APP_RENDERER_H_
#pragma once
#include <set>
#include "cefclient/common/client_app.h"
namespace client {
// Client app implementation for the renderer process.
class ClientAppRenderer : public ClientApp,
public CefRenderProcessHandler {
public:
// Interface for renderer delegates. All Delegates must be returned via
// CreateDelegates. Do not perform work in the Delegate
// constructor. See CefRenderProcessHandler for documentation.
class Delegate : public virtual CefBase {
public:
virtual void OnRenderThreadCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) {}
virtual void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) {}
virtual void OnBrowserCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) {}
virtual void OnBrowserDestroyed(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) {}
virtual CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientAppRenderer> app) {
return NULL;
}
virtual bool OnBeforeNavigation(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
cef_navigation_type_t navigation_type,
bool is_redirect) {
return false;
}
virtual void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {}
virtual void OnContextReleased(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) {}
virtual void OnUncaughtException(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) {}
virtual void OnFocusedNodeChanged(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) {}
// Called when a process message is received. Return true if the message was
// handled and should not be passed on to other handlers. Delegates
// should check for unique message names to avoid interfering with each
// other.
virtual bool OnProcessMessageReceived(
CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) {
return false;
}
};
typedef std::set<CefRefPtr<Delegate> > DelegateSet;
ClientAppRenderer();
private:
// Creates all of the Delegate objects. Implemented in
// client_app_delegates.
static void CreateDelegates(DelegateSet& delegates);
// CefApp methods.
CefRefPtr<CefRenderProcessHandler> GetRenderProcessHandler() OVERRIDE {
return this;
}
// CefRenderProcessHandler methods.
void OnRenderThreadCreated(CefRefPtr<CefListValue> extra_info) OVERRIDE;
void OnWebKitInitialized() OVERRIDE;
void OnBrowserCreated(CefRefPtr<CefBrowser> browser) OVERRIDE;
void OnBrowserDestroyed(CefRefPtr<CefBrowser> browser) OVERRIDE;
CefRefPtr<CefLoadHandler> GetLoadHandler() OVERRIDE;
bool OnBeforeNavigation(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request,
NavigationType navigation_type,
bool is_redirect) OVERRIDE;
void OnContextCreated(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
void OnContextReleased(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE;
void OnUncaughtException(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context,
CefRefPtr<CefV8Exception> exception,
CefRefPtr<CefV8StackTrace> stackTrace) OVERRIDE;
void OnFocusedNodeChanged(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) OVERRIDE;
bool OnProcessMessageReceived(
CefRefPtr<CefBrowser> browser,
CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE;
private:
// Set of supported Delegates.
DelegateSet delegates_;
IMPLEMENT_REFCOUNTING(ClientAppRenderer);
DISALLOW_COPY_AND_ASSIGN(ClientAppRenderer);
};
} // namespace client
#endif // CEF_TESTS_CEFCLIENT_RENDERER_CLIENT_APP_RENDERER_H_

View File

@ -19,33 +19,33 @@ namespace {
// Must match the value in client_handler.cc. // Must match the value in client_handler.cc.
const char kFocusedNodeChangedMessage[] = "ClientRenderer.FocusedNodeChanged"; const char kFocusedNodeChangedMessage[] = "ClientRenderer.FocusedNodeChanged";
class ClientRenderDelegate : public ClientApp::RenderDelegate { class ClientRenderDelegate : public ClientAppRenderer::Delegate {
public: public:
ClientRenderDelegate() ClientRenderDelegate()
: last_node_is_editable_(false) { : last_node_is_editable_(false) {
} }
virtual void OnWebKitInitialized(CefRefPtr<ClientApp> app) OVERRIDE { virtual void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) OVERRIDE {
// Create the renderer-side router for query handling. // Create the renderer-side router for query handling.
CefMessageRouterConfig config; CefMessageRouterConfig config;
message_router_ = CefMessageRouterRendererSide::Create(config); message_router_ = CefMessageRouterRendererSide::Create(config);
} }
virtual void OnContextCreated(CefRefPtr<ClientApp> app, virtual void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE { CefRefPtr<CefV8Context> context) OVERRIDE {
message_router_->OnContextCreated(browser, frame, context); message_router_->OnContextCreated(browser, frame, context);
} }
virtual void OnContextReleased(CefRefPtr<ClientApp> app, virtual void OnContextReleased(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE { CefRefPtr<CefV8Context> context) OVERRIDE {
message_router_->OnContextReleased(browser, frame, context); message_router_->OnContextReleased(browser, frame, context);
} }
virtual void OnFocusedNodeChanged(CefRefPtr<ClientApp> app, virtual void OnFocusedNodeChanged(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefDOMNode> node) OVERRIDE { CefRefPtr<CefDOMNode> node) OVERRIDE {
@ -61,7 +61,7 @@ class ClientRenderDelegate : public ClientApp::RenderDelegate {
} }
virtual bool OnProcessMessageReceived( virtual bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) OVERRIDE { CefRefPtr<CefProcessMessage> message) OVERRIDE {
@ -80,7 +80,7 @@ class ClientRenderDelegate : public ClientApp::RenderDelegate {
} // namespace } // namespace
void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates) { void CreateDelegates(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new ClientRenderDelegate); delegates.insert(new ClientRenderDelegate);
} }

View File

@ -7,13 +7,13 @@
#pragma once #pragma once
#include "include/cef_base.h" #include "include/cef_base.h"
#include "cefclient/common/client_app.h" #include "cefclient/renderer/client_app_renderer.h"
namespace client { namespace client {
namespace renderer { namespace renderer {
// Create the render delegate. // Create the render delegate.
void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates); void CreateDelegates(ClientAppRenderer::DelegateSet& delegates);
} // namespace renderer } // namespace renderer
} // namespace client } // namespace client

View File

@ -126,15 +126,15 @@ class V8Handler : public CefV8Handler {
}; };
// Handle bindings in the render process. // Handle bindings in the render process.
class RenderDelegate : public ClientApp::RenderDelegate { class RenderDelegate : public ClientAppRenderer::Delegate {
public: public:
RenderDelegate() { RenderDelegate() {
} }
virtual void OnContextCreated(CefRefPtr<ClientApp> app, virtual void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) OVERRIDE { CefRefPtr<CefV8Context> context) OVERRIDE {
CefRefPtr<CefV8Value> object = context->GetGlobal(); CefRefPtr<CefV8Value> object = context->GetGlobal();
CefRefPtr<CefV8Handler> handler = new V8Handler(); CefRefPtr<CefV8Handler> handler = new V8Handler();
@ -157,7 +157,7 @@ class RenderDelegate : public ClientApp::RenderDelegate {
} // namespace } // namespace
void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates) { void CreateDelegates(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new RenderDelegate); delegates.insert(new RenderDelegate);
} }

View File

@ -6,13 +6,13 @@
#define CEF_TESTS_CEFCLIENT_RENDERER_PERFORMANCE_TEST_H_ #define CEF_TESTS_CEFCLIENT_RENDERER_PERFORMANCE_TEST_H_
#pragma once #pragma once
#include "cefclient/common/client_app.h" #include "cefclient/renderer/client_app_renderer.h"
namespace client { namespace client {
namespace performance_test { namespace performance_test {
// Render delegate creation. Called from client_app_delegates.cc. // Render delegate creation. Called from client_app_delegates.cc.
void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates); void CreateDelegates(ClientAppRenderer::DelegateSet& delegates);
} // namespace performance_test } // namespace performance_test
} // namespace client } // namespace client

View File

@ -4,16 +4,34 @@
#include "include/cef_app.h" #include "include/cef_app.h"
// This file is shared by cefclient and cef_unittests so don't include using #include "cefclient/common/client_app_other.h"
// a qualified path. #include "cefclient/renderer/client_app_renderer.h"
#include "../common/client_app.h" // NOLINT(build/include)
// Process entry point. namespace client {
int main(int argc, char* argv[]) {
int RunMain(int argc, char* argv[]) {
CefMainArgs main_args(argc, argv); CefMainArgs main_args(argc, argv);
CefRefPtr<CefApp> app(new client::ClientApp); // Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
command_line->InitFromArgv(argc, argv);
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
ClientApp::ProcessType process_type = ClientApp::GetProcessType(command_line);
if (process_type == ClientApp::RendererProcess)
app = new ClientAppRenderer();
else if (process_type == ClientApp::OtherProcess)
app = new ClientAppOther();
// Execute the secondary process. // Execute the secondary process.
return CefExecuteProcess(main_args, app, NULL); return CefExecuteProcess(main_args, app, NULL);
} }
} // namespace client
// Process entry point.
int main(int argc, char* argv[]) {
return client::RunMain(argc, argv);
}

View File

@ -2,81 +2,83 @@
// reserved. Use of this source code is governed by a BSD-style license that // reserved. Use of this source code is governed by a BSD-style license that
// can be found in the LICENSE file. // can be found in the LICENSE file.
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
using client::ClientApp; using client::ClientAppBrowser;
using client::ClientAppRenderer;
void CreateBrowserDelegates(ClientApp::BrowserDelegateSet& delegates) { void CreateBrowserDelegates(ClientAppBrowser::DelegateSet& delegates) {
// Bring in the Frame tests. // Bring in the Frame tests.
extern void CreateFrameBrowserTests( extern void CreateFrameBrowserTests(
ClientApp::BrowserDelegateSet& delegates); ClientAppBrowser::DelegateSet& delegates);
CreateFrameBrowserTests(delegates); CreateFrameBrowserTests(delegates);
// Bring in the Navigation tests. // Bring in the Navigation tests.
extern void CreateNavigationBrowserTests( extern void CreateNavigationBrowserTests(
ClientApp::BrowserDelegateSet& delegates); ClientAppBrowser::DelegateSet& delegates);
CreateNavigationBrowserTests(delegates); CreateNavigationBrowserTests(delegates);
// Bring in the RequestHandler tests. // Bring in the RequestHandler tests.
extern void CreateRequestHandlerBrowserTests( extern void CreateRequestHandlerBrowserTests(
ClientApp::BrowserDelegateSet& delegates); ClientAppBrowser::DelegateSet& delegates);
CreateRequestHandlerBrowserTests(delegates); CreateRequestHandlerBrowserTests(delegates);
// Bring in the V8 tests. // Bring in the V8 tests.
extern void CreateV8BrowserTests( extern void CreateV8BrowserTests(
ClientApp::BrowserDelegateSet& delegates); ClientAppBrowser::DelegateSet& delegates);
CreateV8BrowserTests(delegates); CreateV8BrowserTests(delegates);
} }
void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates) { void CreateRenderDelegates(ClientAppRenderer::DelegateSet& delegates) {
// Bring in the Frame tests. // Bring in the Frame tests.
extern void CreateFrameRendererTests( extern void CreateFrameRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateFrameRendererTests(delegates); CreateFrameRendererTests(delegates);
// Bring in the DOM tests. // Bring in the DOM tests.
extern void CreateDOMRendererTests( extern void CreateDOMRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateDOMRendererTests(delegates); CreateDOMRendererTests(delegates);
// Bring in the message router tests. // Bring in the message router tests.
extern void CreateMessageRouterRendererTests( extern void CreateMessageRouterRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateMessageRouterRendererTests(delegates); CreateMessageRouterRendererTests(delegates);
// Bring in the Navigation tests. // Bring in the Navigation tests.
extern void CreateNavigationRendererTests( extern void CreateNavigationRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateNavigationRendererTests(delegates); CreateNavigationRendererTests(delegates);
// Bring in the process message tests. // Bring in the process message tests.
extern void CreateProcessMessageRendererTests( extern void CreateProcessMessageRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateProcessMessageRendererTests(delegates); CreateProcessMessageRendererTests(delegates);
// Bring in the RequestHandler tests. // Bring in the RequestHandler tests.
extern void CreateRequestHandlerRendererTests( extern void CreateRequestHandlerRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateRequestHandlerRendererTests(delegates); CreateRequestHandlerRendererTests(delegates);
// Bring in the Request tests. // Bring in the Request tests.
extern void CreateRequestRendererTests( extern void CreateRequestRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateRequestRendererTests(delegates); CreateRequestRendererTests(delegates);
// Bring in the routing test handler delegate. // Bring in the routing test handler delegate.
extern void CreateRoutingTestHandlerDelegate( extern void CreateRoutingTestHandlerDelegate(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateRoutingTestHandlerDelegate(delegates); CreateRoutingTestHandlerDelegate(delegates);
// Bring in the URLRequest tests. // Bring in the URLRequest tests.
extern void CreateURLRequestRendererTests( extern void CreateURLRequestRendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateURLRequestRendererTests(delegates); CreateURLRequestRendererTests(delegates);
// Bring in the V8 tests. // Bring in the V8 tests.
extern void CreateV8RendererTests( extern void CreateV8RendererTests(
ClientApp::RenderDelegateSet& delegates); ClientAppRenderer::DelegateSet& delegates);
CreateV8RendererTests(delegates); CreateV8RendererTests(delegates);
} }
@ -106,12 +108,17 @@ void RegisterCustomSchemes(
namespace client { namespace client {
// static // static
void ClientApp::CreateBrowserDelegates(BrowserDelegateSet& delegates) { void ClientAppBrowser::CreateDelegates(DelegateSet& delegates) {
::CreateBrowserDelegates(delegates); ::CreateBrowserDelegates(delegates);
} }
// static // static
void ClientApp::CreateRenderDelegates(RenderDelegateSet& delegates) { CefRefPtr<CefPrintHandler> ClientAppBrowser::CreatePrintHandler() {
return NULL;
}
// static
void ClientAppRenderer::CreateDelegates(DelegateSet& delegates) {
::CreateRenderDelegates(delegates); ::CreateRenderDelegates(delegates);
} }
@ -122,10 +129,5 @@ void ClientApp::RegisterCustomSchemes(
::RegisterCustomSchemes(registrar, cookiable_schemes); ::RegisterCustomSchemes(registrar, cookiable_schemes);
} }
// static
CefRefPtr<CefPrintHandler> ClientApp::CreatePrintHandler() {
return NULL;
}
} // namespace client } // namespace client

View File

@ -7,10 +7,10 @@
#include "include/cef_dom.h" #include "include/cef_dom.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
using client::ClientApp; using client::ClientAppRenderer;
namespace { namespace {
@ -227,13 +227,13 @@ class TestDOMVisitor : public CefDOMVisitor {
}; };
// Used in the render process. // Used in the render process.
class DOMRendererTest : public ClientApp::RenderDelegate { class DOMRendererTest : public ClientAppRenderer::Delegate {
public: public:
DOMRendererTest() { DOMRendererTest() {
} }
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -339,6 +339,6 @@ TEST(DOMTest, Modify) {
// Entry point for creating DOM renderer test objects. // Entry point for creating DOM renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateDOMRendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateDOMRendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new DOMRendererTest); delegates.insert(new DOMRendererTest);
} }

View File

@ -10,10 +10,12 @@
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "include/wrapper/cef_stream_resource_handler.h" #include "include/wrapper/cef_stream_resource_handler.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
using client::ClientApp; using client::ClientAppBrowser;
using client::ClientAppRenderer;
namespace { namespace {
@ -263,12 +265,12 @@ class FrameNavExpectationsFactoryRenderer : public FrameNavExpectationsFactory {
// Browser side app delegate. // Browser side app delegate.
class FrameNavBrowserTest : public ClientApp::BrowserDelegate { class FrameNavBrowserTest : public ClientAppBrowser::Delegate {
public: public:
FrameNavBrowserTest() {} FrameNavBrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
if (!g_frame_nav_test) if (!g_frame_nav_test)
return; return;
@ -286,7 +288,7 @@ class FrameNavBrowserTest : public ClientApp::BrowserDelegate {
}; };
// Renderer side handler. // Renderer side handler.
class FrameNavRendererTest : public ClientApp::RenderDelegate, class FrameNavRendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
FrameNavRendererTest() FrameNavRendererTest()
@ -294,7 +296,7 @@ class FrameNavRendererTest : public ClientApp::RenderDelegate,
nav_(0) {} nav_(0) {}
void OnRenderThreadCreated( void OnRenderThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
// The g_* values will be set when running in single-process mode. // The g_* values will be set when running in single-process mode.
if (!g_frame_nav_test) { if (!g_frame_nav_test) {
@ -325,7 +327,7 @@ class FrameNavRendererTest : public ClientApp::RenderDelegate,
} }
CefRefPtr<CefLoadHandler> GetLoadHandler( CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientApp> app) override { CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return NULL; return NULL;
@ -354,7 +356,7 @@ class FrameNavRendererTest : public ClientApp::RenderDelegate,
EXPECT_TRUE(expectations_->OnLoadEnd(browser, frame)) << "nav = " << nav_; EXPECT_TRUE(expectations_->OnLoadEnd(browser, frame)) << "nav = " << nav_;
} }
bool OnBeforeNavigation(CefRefPtr<ClientApp> app, bool OnBeforeNavigation(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request, CefRefPtr<CefRequest> request,
@ -2297,12 +2299,12 @@ scoped_ptr<FrameNavExpectationsFactoryRenderer>
// Entry point for creating frame browser test objects. // Entry point for creating frame browser test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateFrameBrowserTests(ClientApp::BrowserDelegateSet& delegates) { void CreateFrameBrowserTests(ClientAppBrowser::DelegateSet& delegates) {
delegates.insert(new FrameNavBrowserTest); delegates.insert(new FrameNavBrowserTest);
} }
// Entry point for creating frame renderer test objects. // Entry point for creating frame renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateFrameRendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateFrameRendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new FrameNavRendererTest); delegates.insert(new FrameNavRendererTest);
} }

View File

@ -17,9 +17,9 @@
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/unittests/routing_test_handler.h" #include "tests/unittests/routing_test_handler.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
using client::ClientApp; using client::ClientAppRenderer;
namespace { namespace {
@ -41,7 +41,7 @@ void SetRouterConfig(CefMessageRouterConfig& config) {
} }
// Handle the renderer side of the routing implementation. // Handle the renderer side of the routing implementation.
class MRRenderDelegate : public ClientApp::RenderDelegate { class MRRenderDelegate : public ClientAppRenderer::Delegate {
public: public:
class V8HandlerImpl : public CefV8Handler { class V8HandlerImpl : public CefV8Handler {
public: public:
@ -114,14 +114,14 @@ class MRRenderDelegate : public ClientApp::RenderDelegate {
MRRenderDelegate() {} MRRenderDelegate() {}
void OnWebKitInitialized(CefRefPtr<ClientApp> app) override { void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) override {
// Create the renderer-side router for query handling. // Create the renderer-side router for query handling.
CefMessageRouterConfig config; CefMessageRouterConfig config;
SetRouterConfig(config); SetRouterConfig(config);
message_router_ = CefMessageRouterRendererSide::Create(config); message_router_ = CefMessageRouterRendererSide::Create(config);
} }
void OnContextCreated(CefRefPtr<ClientApp> app, void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
@ -158,7 +158,7 @@ class MRRenderDelegate : public ClientApp::RenderDelegate {
window->SetValue(kJSAssertContextCountFunc, context_count_func, attributes); window->SetValue(kJSAssertContextCountFunc, context_count_func, attributes);
} }
void OnContextReleased(CefRefPtr<ClientApp> app, void OnContextReleased(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
@ -170,7 +170,7 @@ class MRRenderDelegate : public ClientApp::RenderDelegate {
} }
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -193,7 +193,7 @@ class MRRenderDelegate : public ClientApp::RenderDelegate {
// Entry point for creating the test delegate. // Entry point for creating the test delegate.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateMessageRouterRendererTests( void CreateMessageRouterRendererTests(
ClientApp::RenderDelegateSet& delegates) { ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new MRRenderDelegate); delegates.insert(new MRRenderDelegate);
} }

View File

@ -13,11 +13,13 @@
#include "include/cef_scheme.h" #include "include/cef_scheme.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
#include "tests/unittests/test_util.h" #include "tests/unittests/test_util.h"
using client::ClientApp; using client::ClientAppBrowser;
using client::ClientAppRenderer;
namespace { namespace {
@ -58,12 +60,12 @@ static NavListItem kHNavList[] = {
bool g_history_nav_test = false; bool g_history_nav_test = false;
// Browser side. // Browser side.
class HistoryNavBrowserTest : public ClientApp::BrowserDelegate { class HistoryNavBrowserTest : public ClientAppBrowser::Delegate {
public: public:
HistoryNavBrowserTest() {} HistoryNavBrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
if (!g_history_nav_test) if (!g_history_nav_test)
return; return;
@ -77,7 +79,7 @@ class HistoryNavBrowserTest : public ClientApp::BrowserDelegate {
}; };
// Renderer side. // Renderer side.
class HistoryNavRendererTest : public ClientApp::RenderDelegate, class HistoryNavRendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
HistoryNavRendererTest() HistoryNavRendererTest()
@ -85,7 +87,7 @@ class HistoryNavRendererTest : public ClientApp::RenderDelegate,
nav_(0) {} nav_(0) {}
void OnRenderThreadCreated( void OnRenderThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
if (!g_history_nav_test) { if (!g_history_nav_test) {
// Check that the test should be run. // Check that the test should be run.
@ -100,7 +102,7 @@ class HistoryNavRendererTest : public ClientApp::RenderDelegate,
} }
CefRefPtr<CefLoadHandler> GetLoadHandler( CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientApp> app) override { CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return NULL; return NULL;
@ -174,7 +176,7 @@ class HistoryNavRendererTest : public ClientApp::RenderDelegate,
SendTestResultsIfDone(browser); SendTestResultsIfDone(browser);
} }
bool OnBeforeNavigation(CefRefPtr<ClientApp> app, bool OnBeforeNavigation(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request, CefRefPtr<CefRequest> request,
@ -878,12 +880,12 @@ void SetOrderNavExtraInfo(CefRefPtr<CefListValue> extra_info) {
bool g_order_nav_test = false; bool g_order_nav_test = false;
// Browser side. // Browser side.
class OrderNavBrowserTest : public ClientApp::BrowserDelegate { class OrderNavBrowserTest : public ClientAppBrowser::Delegate {
public: public:
OrderNavBrowserTest() {} OrderNavBrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
if (!g_order_nav_test) if (!g_order_nav_test)
return; return;
@ -893,7 +895,7 @@ class OrderNavBrowserTest : public ClientApp::BrowserDelegate {
} }
void OnRenderProcessThreadCreated( void OnRenderProcessThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
if (!g_order_nav_test) if (!g_order_nav_test)
return; return;
@ -990,7 +992,7 @@ class OrderNavLoadState {
}; };
// Renderer side. // Renderer side.
class OrderNavRendererTest : public ClientApp::RenderDelegate, class OrderNavRendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
OrderNavRendererTest() OrderNavRendererTest()
@ -1001,7 +1003,7 @@ class OrderNavRendererTest : public ClientApp::RenderDelegate,
state_popup_(true, false) {} state_popup_(true, false) {}
void OnRenderThreadCreated( void OnRenderThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
if (!g_order_nav_test) { if (!g_order_nav_test) {
// Check that the test should be run. // Check that the test should be run.
@ -1024,7 +1026,7 @@ class OrderNavRendererTest : public ClientApp::RenderDelegate,
TestListEqual(expected, extra_info); TestListEqual(expected, extra_info);
} }
void OnWebKitInitialized(CefRefPtr<ClientApp> app) override { void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1033,7 +1035,7 @@ class OrderNavRendererTest : public ClientApp::RenderDelegate,
got_webkit_initialized_.yes(); got_webkit_initialized_.yes();
} }
void OnBrowserCreated(CefRefPtr<ClientApp> app, void OnBrowserCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) override { CefRefPtr<CefBrowser> browser) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1062,7 +1064,7 @@ class OrderNavRendererTest : public ClientApp::RenderDelegate,
} }
} }
void OnBrowserDestroyed(CefRefPtr<ClientApp> app, void OnBrowserDestroyed(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) override { CefRefPtr<CefBrowser> browser) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1095,7 +1097,7 @@ class OrderNavRendererTest : public ClientApp::RenderDelegate,
} }
CefRefPtr<CefLoadHandler> GetLoadHandler( CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientApp> app) override { CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return NULL; return NULL;
@ -1443,12 +1445,12 @@ const char kCrossOriginNavMsg[] = "NavigationTest.CrossOriginNav";
bool g_cross_origin_nav_test = false; bool g_cross_origin_nav_test = false;
// Browser side. // Browser side.
class CrossOriginNavBrowserTest : public ClientApp::BrowserDelegate { class CrossOriginNavBrowserTest : public ClientAppBrowser::Delegate {
public: public:
CrossOriginNavBrowserTest() {} CrossOriginNavBrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
if (!g_cross_origin_nav_test) if (!g_cross_origin_nav_test)
return; return;
@ -1462,7 +1464,7 @@ class CrossOriginNavBrowserTest : public ClientApp::BrowserDelegate {
}; };
// Renderer side. // Renderer side.
class CrossOriginNavRendererTest : public ClientApp::RenderDelegate, class CrossOriginNavRendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
CrossOriginNavRendererTest() CrossOriginNavRendererTest()
@ -1472,7 +1474,7 @@ class CrossOriginNavRendererTest : public ClientApp::RenderDelegate,
} }
void OnRenderThreadCreated( void OnRenderThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
if (!g_cross_origin_nav_test) { if (!g_cross_origin_nav_test) {
// Check that the test should be run. // Check that the test should be run.
@ -1490,7 +1492,7 @@ class CrossOriginNavRendererTest : public ClientApp::RenderDelegate,
got_render_thread_created_.yes(); got_render_thread_created_.yes();
} }
void OnWebKitInitialized(CefRefPtr<ClientApp> app) override { void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1499,7 +1501,7 @@ class CrossOriginNavRendererTest : public ClientApp::RenderDelegate,
got_webkit_initialized_.yes(); got_webkit_initialized_.yes();
} }
void OnBrowserCreated(CefRefPtr<ClientApp> app, void OnBrowserCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) override { CefRefPtr<CefBrowser> browser) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1512,7 +1514,7 @@ class CrossOriginNavRendererTest : public ClientApp::RenderDelegate,
status->got_browser_created.yes(); status->got_browser_created.yes();
} }
void OnBrowserDestroyed(CefRefPtr<ClientApp> app, void OnBrowserDestroyed(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) override { CefRefPtr<CefBrowser> browser) override {
if (!run_test_) if (!run_test_)
return; return;
@ -1532,7 +1534,7 @@ class CrossOriginNavRendererTest : public ClientApp::RenderDelegate,
} }
CefRefPtr<CefLoadHandler> GetLoadHandler( CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientApp> app) override { CefRefPtr<ClientAppRenderer> app) override {
if (!run_test_) if (!run_test_)
return NULL; return NULL;
@ -2070,7 +2072,7 @@ TEST(NavigationTest, BrowseDeny) {
// Entry point for creating navigation browser test objects. // Entry point for creating navigation browser test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateNavigationBrowserTests(ClientApp::BrowserDelegateSet& delegates) { void CreateNavigationBrowserTests(ClientAppBrowser::DelegateSet& delegates) {
delegates.insert(new HistoryNavBrowserTest); delegates.insert(new HistoryNavBrowserTest);
delegates.insert(new OrderNavBrowserTest); delegates.insert(new OrderNavBrowserTest);
delegates.insert(new CrossOriginNavBrowserTest); delegates.insert(new CrossOriginNavBrowserTest);
@ -2078,7 +2080,7 @@ void CreateNavigationBrowserTests(ClientApp::BrowserDelegateSet& delegates) {
// Entry point for creating navigation renderer test objects. // Entry point for creating navigation renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateNavigationRendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateNavigationRendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new HistoryNavRendererTest); delegates.insert(new HistoryNavRendererTest);
delegates.insert(new OrderNavRendererTest); delegates.insert(new OrderNavRendererTest);
delegates.insert(new CrossOriginNavRendererTest); delegates.insert(new CrossOriginNavRendererTest);

View File

@ -16,7 +16,6 @@
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "include/wrapper/cef_stream_resource_handler.h" #include "include/wrapper/cef_stream_resource_handler.h"
#include "tests/cefclient/browser/resource_util.h" #include "tests/cefclient/browser/resource_util.h"
#include "tests/cefclient/common/client_app.h"
#include "tests/unittests/routing_test_handler.h" #include "tests/unittests/routing_test_handler.h"
#if defined(OS_MACOSX) #if defined(OS_MACOSX)

View File

@ -8,11 +8,11 @@
#include "include/cef_process_message.h" #include "include/cef_process_message.h"
#include "include/cef_task.h" #include "include/cef_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
#include "tests/unittests/test_util.h" #include "tests/unittests/test_util.h"
using client::ClientApp; using client::ClientAppRenderer;
namespace { namespace {
@ -42,12 +42,12 @@ CefRefPtr<CefProcessMessage> CreateTestMessage() {
} }
// Renderer side. // Renderer side.
class SendRecvRendererTest : public ClientApp::RenderDelegate { class SendRecvRendererTest : public ClientAppRenderer::Delegate {
public: public:
SendRecvRendererTest() {} SendRecvRendererTest() {}
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -157,7 +157,7 @@ TEST(ProcessMessageTest, Copy) {
// Entry point for creating process message renderer test objects. // Entry point for creating process message renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateProcessMessageRendererTests( void CreateProcessMessageRendererTests(
ClientApp::RenderDelegateSet& delegates) { ClientAppRenderer::DelegateSet& delegates) {
// For ProcessMessageTest.SendRecv // For ProcessMessageTest.SendRecv
delegates.insert(new SendRecvRendererTest); delegates.insert(new SendRecvRendererTest);
} }

View File

@ -11,10 +11,12 @@
#include "include/cef_cookie.h" #include "include/cef_cookie.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
using client::ClientApp; using client::ClientAppBrowser;
using client::ClientAppRenderer;
namespace { namespace {
@ -32,12 +34,12 @@ const char kNetNotifyMsg[] = "RequestHandlerTest.NetNotify";
bool g_net_notify_test = false; bool g_net_notify_test = false;
// Browser side. // Browser side.
class NetNotifyBrowserTest : public ClientApp::BrowserDelegate { class NetNotifyBrowserTest : public ClientAppBrowser::Delegate {
public: public:
NetNotifyBrowserTest() {} NetNotifyBrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
if (!g_net_notify_test) if (!g_net_notify_test)
return; return;
@ -360,14 +362,14 @@ class NetNotifyTestHandler : public TestHandler {
}; };
// Renderer side. // Renderer side.
class NetNotifyRendererTest : public ClientApp::RenderDelegate, class NetNotifyRendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
NetNotifyRendererTest() NetNotifyRendererTest()
: run_test_(false) {} : run_test_(false) {}
void OnRenderThreadCreated( void OnRenderThreadCreated(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefListValue> extra_info) override { CefRefPtr<CefListValue> extra_info) override {
if (!g_net_notify_test) { if (!g_net_notify_test) {
// Check that the test should be run. // Check that the test should be run.
@ -382,7 +384,7 @@ class NetNotifyRendererTest : public ClientApp::RenderDelegate,
} }
CefRefPtr<CefLoadHandler> GetLoadHandler( CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientApp> app) override { CefRefPtr<ClientAppRenderer> app) override {
if (run_test_) if (run_test_)
return this; return this;
return NULL; return NULL;
@ -405,7 +407,7 @@ class NetNotifyRendererTest : public ClientApp::RenderDelegate,
} }
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -506,13 +508,13 @@ TEST(RequestHandlerTest, NotificationsCrossOriginDelayedBrowser) {
// Entry point for creating request handler browser test objects. // Entry point for creating request handler browser test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateRequestHandlerBrowserTests( void CreateRequestHandlerBrowserTests(
ClientApp::BrowserDelegateSet& delegates) { ClientAppBrowser::DelegateSet& delegates) {
delegates.insert(new NetNotifyBrowserTest); delegates.insert(new NetNotifyBrowserTest);
} }
// Entry point for creating request handler renderer test objects. // Entry point for creating request handler renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateRequestHandlerRendererTests( void CreateRequestHandlerRendererTests(
ClientApp::RenderDelegateSet& delegates) { ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new NetNotifyRendererTest); delegates.insert(new NetNotifyRendererTest);
} }

View File

@ -11,11 +11,11 @@
#include "include/cef_request.h" #include "include/cef_request.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
#include "tests/unittests/test_util.h" #include "tests/unittests/test_util.h"
using client::ClientApp; using client::ClientAppRenderer;
// Verify Set/Get methods for CefRequest, CefPostData and CefPostDataElement. // Verify Set/Get methods for CefRequest, CefPostData and CefPostDataElement.
TEST(RequestTest, SetGet) { TEST(RequestTest, SetGet) {
@ -352,12 +352,12 @@ class TypeExpectations {
}; };
// Renderer side. // Renderer side.
class TypeRendererTest : public ClientApp::RenderDelegate { class TypeRendererTest : public ClientAppRenderer::Delegate {
public: public:
TypeRendererTest() : TypeRendererTest() :
expectations_(false, true) {} expectations_(false, true) {}
bool OnBeforeNavigation(CefRefPtr<ClientApp> app, bool OnBeforeNavigation(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefRequest> request, CefRefPtr<CefRequest> request,
@ -543,6 +543,6 @@ TEST(RequestTest, ResourceAndTransitionType) {
// Entry point for creating request renderer test objects. // Entry point for creating request renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateRequestRendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateRequestRendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new TypeRendererTest); delegates.insert(new TypeRendererTest);
} }

View File

@ -6,9 +6,9 @@
#include "tests/unittests/chromium_includes.h" #include "tests/unittests/chromium_includes.h"
#include "tests/unittests/routing_test_handler.h" #include "tests/unittests/routing_test_handler.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
using client::ClientApp; using client::ClientAppRenderer;
namespace { namespace {
@ -18,25 +18,25 @@ void SetRouterConfig(CefMessageRouterConfig& config) {
} }
// Handle the renderer side of the routing implementation. // Handle the renderer side of the routing implementation.
class RoutingRenderDelegate : public ClientApp::RenderDelegate { class RoutingRenderDelegate : public ClientAppRenderer::Delegate {
public: public:
RoutingRenderDelegate() {} RoutingRenderDelegate() {}
void OnWebKitInitialized(CefRefPtr<ClientApp> app) override { void OnWebKitInitialized(CefRefPtr<ClientAppRenderer> app) override {
// Create the renderer-side router for query handling. // Create the renderer-side router for query handling.
CefMessageRouterConfig config; CefMessageRouterConfig config;
SetRouterConfig(config); SetRouterConfig(config);
message_router_ = CefMessageRouterRendererSide::Create(config); message_router_ = CefMessageRouterRendererSide::Create(config);
} }
void OnContextCreated(CefRefPtr<ClientApp> app, void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
message_router_->OnContextCreated(browser, frame, context); message_router_->OnContextCreated(browser, frame, context);
} }
void OnContextReleased(CefRefPtr<ClientApp> app, void OnContextReleased(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
@ -44,7 +44,7 @@ class RoutingRenderDelegate : public ClientApp::RenderDelegate {
} }
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -104,6 +104,6 @@ bool RoutingTestHandler::OnProcessMessageReceived(
// Entry point for creating the test delegate. // Entry point for creating the test delegate.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateRoutingTestHandlerDelegate( void CreateRoutingTestHandlerDelegate(
ClientApp::RenderDelegateSet& delegates) { ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new RoutingRenderDelegate); delegates.insert(new RoutingRenderDelegate);
} }

View File

@ -19,7 +19,9 @@
#include "include/cef_task.h" #include "include/cef_task.h"
#include "include/wrapper/cef_helpers.h" #include "include/wrapper/cef_helpers.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/common/client_app_other.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
#include "tests/unittests/test_suite.h" #include "tests/unittests/test_suite.h"
@ -27,8 +29,6 @@
#include "include/cef_sandbox_win.h" #include "include/cef_sandbox_win.h"
#endif #endif
using client::ClientApp;
namespace { namespace {
// Thread used to run the test suite. // Thread used to run the test suite.
@ -109,7 +109,26 @@ int main(int argc, char* argv[]) {
windows_sandbox_info = scoped_sandbox.sandbox_info(); windows_sandbox_info = scoped_sandbox.sandbox_info();
#endif #endif
CefRefPtr<CefApp> app(new client::ClientApp); // Parse command-line arguments.
CefRefPtr<CefCommandLine> command_line = CefCommandLine::CreateCommandLine();
#if defined(OS_WIN)
command_line->InitFromString(::GetCommandLineW());
#else
command_line->InitFromArgv(argc, argv);
#endif
// Create a ClientApp of the correct type.
CefRefPtr<CefApp> app;
client::ClientApp::ProcessType process_type =
client::ClientApp::GetProcessType(command_line);
if (process_type == client::ClientApp::BrowserProcess) {
app = new client::ClientAppBrowser();
} else if (process_type == client::ClientApp::RendererProcess ||
process_type == client::ClientApp::ZygoteProcess) {
app = new client::ClientAppRenderer();
} else if (process_type == client::ClientApp::OtherProcess) {
app = new client::ClientAppOther();
}
// Execute the secondary process, if any. // Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app, windows_sandbox_info); int exit_code = CefExecuteProcess(main_args, app, windows_sandbox_info);

View File

@ -19,11 +19,11 @@
#include "include/cef_urlrequest.h" #include "include/cef_urlrequest.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/renderer/client_app_renderer.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
#include "tests/unittests/test_util.h" #include "tests/unittests/test_util.h"
using client::ClientApp; using client::ClientAppRenderer;
// How to add a new test: // How to add a new test:
// 1. Add a new value to the RequestTestMode enumeration. // 1. Add a new value to the RequestTestMode enumeration.
@ -844,7 +844,7 @@ class RequestTestRunner {
}; };
// Renderer side. // Renderer side.
class RequestRendererTest : public ClientApp::RenderDelegate, class RequestRendererTest : public ClientAppRenderer::Delegate,
public RequestTestRunner::Delegate { public RequestTestRunner::Delegate {
public: public:
RequestRendererTest() RequestRendererTest()
@ -852,7 +852,7 @@ class RequestRendererTest : public ClientApp::RenderDelegate,
} }
bool OnProcessMessageReceived( bool OnProcessMessageReceived(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -892,7 +892,7 @@ class RequestRendererTest : public ClientApp::RenderDelegate,
browser_ = NULL; browser_ = NULL;
} }
CefRefPtr<ClientApp> app_; CefRefPtr<ClientAppRenderer> app_;
CefRefPtr<CefBrowser> browser_; CefRefPtr<CefBrowser> browser_;
RequestTestRunner test_runner_; RequestTestRunner test_runner_;
@ -1048,7 +1048,7 @@ class RequestTestHandler : public TestHandler,
// Entry point for creating URLRequest renderer test objects. // Entry point for creating URLRequest renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateURLRequestRendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateURLRequestRendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new RequestRendererTest); delegates.insert(new RequestRendererTest);
} }

View File

@ -11,11 +11,13 @@
#include "include/cef_task.h" #include "include/cef_task.h"
#include "include/cef_v8.h" #include "include/cef_v8.h"
#include "include/wrapper/cef_closure_task.h" #include "include/wrapper/cef_closure_task.h"
#include "tests/cefclient/common/client_app.h" #include "tests/cefclient/browser/client_app_browser.h"
#include "tests/cefclient/renderer/client_app_renderer.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
#include "tests/unittests/test_handler.h" #include "tests/unittests/test_handler.h"
using client::ClientApp; using client::ClientAppBrowser;
using client::ClientAppRenderer;
// How to add a new test: // How to add a new test:
// 1. Add a new value to the V8TestMode enumeration. // 1. Add a new value to the V8TestMode enumeration.
@ -86,12 +88,12 @@ enum V8TestMode {
V8TestMode g_current_test_mode = V8TEST_NONE; V8TestMode g_current_test_mode = V8TEST_NONE;
// Browser side. // Browser side.
class V8BrowserTest : public ClientApp::BrowserDelegate { class V8BrowserTest : public ClientAppBrowser::Delegate {
public: public:
V8BrowserTest() {} V8BrowserTest() {}
void OnBeforeChildProcessLaunch( void OnBeforeChildProcessLaunch(
CefRefPtr<ClientApp> app, CefRefPtr<ClientAppBrowser> app,
CefRefPtr<CefCommandLine> command_line) override { CefRefPtr<CefCommandLine> command_line) override {
CefString process_type = command_line->GetSwitchValue("type"); CefString process_type = command_line->GetSwitchValue("type");
if (process_type == "renderer") { if (process_type == "renderer") {
@ -108,7 +110,7 @@ class V8BrowserTest : public ClientApp::BrowserDelegate {
// Renderer side. // Renderer side.
class V8RendererTest : public ClientApp::RenderDelegate, class V8RendererTest : public ClientAppRenderer::Delegate,
public CefLoadHandler { public CefLoadHandler {
public: public:
V8RendererTest() V8RendererTest()
@ -1699,7 +1701,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
new Handler(&startup_test_success_)); new Handler(&startup_test_success_));
} }
void OnBrowserCreated(CefRefPtr<ClientApp> app, void OnBrowserCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser) override { CefRefPtr<CefBrowser> browser) override {
test_mode_ = g_current_test_mode; test_mode_ = g_current_test_mode;
if (test_mode_ == V8TEST_NONE) { if (test_mode_ == V8TEST_NONE) {
@ -1714,7 +1716,8 @@ class V8RendererTest : public ClientApp::RenderDelegate,
RunStartupTest(); RunStartupTest();
} }
CefRefPtr<CefLoadHandler> GetLoadHandler(CefRefPtr<ClientApp> app) override { CefRefPtr<CefLoadHandler> GetLoadHandler(
CefRefPtr<ClientAppRenderer> app) override {
if (test_mode_ == V8TEST_NONE) if (test_mode_ == V8TEST_NONE)
return NULL; return NULL;
@ -1730,7 +1733,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
} }
} }
void OnContextCreated(CefRefPtr<ClientApp> app, void OnContextCreated(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
@ -1806,7 +1809,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
} }
} }
void OnContextReleased(CefRefPtr<ClientApp> app, void OnContextReleased(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context) override { CefRefPtr<CefV8Context> context) override {
@ -1822,7 +1825,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
} }
} }
void OnUncaughtException(CefRefPtr<ClientApp> app, void OnUncaughtException(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame, CefRefPtr<CefFrame> frame,
CefRefPtr<CefV8Context> context, CefRefPtr<CefV8Context> context,
@ -1851,7 +1854,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
} }
} }
bool OnProcessMessageReceived(CefRefPtr<ClientApp> app, bool OnProcessMessageReceived(CefRefPtr<ClientAppRenderer> app,
CefRefPtr<CefBrowser> browser, CefRefPtr<CefBrowser> browser,
CefProcessId source_process, CefProcessId source_process,
CefRefPtr<CefProcessMessage> message) override { CefRefPtr<CefProcessMessage> message) override {
@ -1967,7 +1970,7 @@ class V8RendererTest : public ClientApp::RenderDelegate,
return context; return context;
} }
CefRefPtr<ClientApp> app_; CefRefPtr<ClientAppRenderer> app_;
CefRefPtr<CefBrowser> browser_; CefRefPtr<CefBrowser> browser_;
V8TestMode test_mode_; V8TestMode test_mode_;
@ -2096,13 +2099,13 @@ class V8TestHandler : public TestHandler {
// Entry point for creating V8 browser test objects. // Entry point for creating V8 browser test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateV8BrowserTests(ClientApp::BrowserDelegateSet& delegates) { void CreateV8BrowserTests(ClientAppBrowser::DelegateSet& delegates) {
delegates.insert(new V8BrowserTest); delegates.insert(new V8BrowserTest);
} }
// Entry point for creating V8 renderer test objects. // Entry point for creating V8 renderer test objects.
// Called from client_app_delegates.cc. // Called from client_app_delegates.cc.
void CreateV8RendererTests(ClientApp::RenderDelegateSet& delegates) { void CreateV8RendererTests(ClientAppRenderer::DelegateSet& delegates) {
delegates.insert(new V8RendererTest); delegates.insert(new V8RendererTest);
} }