Add a CEF_ENABLE_SANDBOX define in cefclient and cefsimple to make disabling the sandbox easier for non-VS2010 builds of the binary distribution (issue #524).

git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@1546 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
Marshall Greenblatt 2013-12-09 16:39:00 +00:00
parent 68916c9571
commit b28ce63adb
3 changed files with 54 additions and 9 deletions

View File

@ -21,6 +21,17 @@
#include "cefclient/scheme_test.h" #include "cefclient/scheme_test.h"
#include "cefclient/string_util.h" #include "cefclient/string_util.h"
// Set to 0 to disable sandbox support.
#define CEF_ENABLE_SANDBOX 1
#if CEF_ENABLE_SANDBOX
// The cef_sandbox.lib static library is currently built with VS2010. It may not
// link successfully with other VS versions.
#pragma comment(lib, "cef_sandbox.lib")
#endif
#define MAX_LOADSTRING 100 #define MAX_LOADSTRING 100
#define MAX_URL_LENGTH 255 #define MAX_URL_LENGTH 255
#define BUTTON_WIDTH 72 #define BUTTON_WIDTH 72
@ -67,15 +78,20 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(lpCmdLine);
// Manages the life span of the sandbox information object. void* sandbox_info = NULL;
#if CEF_ENABLE_SANDBOX
// Manage the life span of the sandbox information object. This is necessary
// for sandbox support on Windows. See cef_sandbox_win.h for complete details.
CefScopedSandboxInfo scoped_sandbox; CefScopedSandboxInfo scoped_sandbox;
sandbox_info = scoped_sandbox.sandbox_info();
#endif
CefMainArgs main_args(hInstance); CefMainArgs main_args(hInstance);
CefRefPtr<ClientApp> app(new ClientApp); CefRefPtr<ClientApp> app(new ClientApp);
// Execute the secondary process, if any. // Execute the secondary process, if any.
int exit_code = CefExecuteProcess(main_args, app.get(), int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
scoped_sandbox.sandbox_info());
if (exit_code >= 0) if (exit_code >= 0)
return exit_code; return exit_code;
@ -88,11 +104,15 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
CefSettings settings; CefSettings settings;
#if !CEF_ENABLE_SANDBOX
settings.no_sandbox = true;
#endif
// Populate the settings based on command line arguments. // Populate the settings based on command line arguments.
AppGetSettings(settings); AppGetSettings(settings);
// Initialize CEF. // Initialize CEF.
CefInitialize(main_args, settings, app.get(), scoped_sandbox.sandbox_info()); CefInitialize(main_args, settings, app.get(), sandbox_info);
// Register the scheme handler. // Register the scheme handler.
scheme_test::InitTest(); scheme_test::InitTest();

View File

@ -7,6 +7,17 @@
#include "cefsimple/simple_app.h" #include "cefsimple/simple_app.h"
#include "include/cef_sandbox_win.h" #include "include/cef_sandbox_win.h"
// Set to 0 to disable sandbox support.
#define CEF_ENABLE_SANDBOX 1
#if CEF_ENABLE_SANDBOX
// The cef_sandbox.lib static library is currently built with VS2010. It may not
// link successfully with other VS versions.
#pragma comment(lib, "cef_sandbox.lib")
#endif
// Entry point function for all processes. // Entry point function for all processes.
int APIENTRY wWinMain(HINSTANCE hInstance, int APIENTRY wWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance, HINSTANCE hPrevInstance,
@ -15,9 +26,14 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
UNREFERENCED_PARAMETER(hPrevInstance); UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine); UNREFERENCED_PARAMETER(lpCmdLine);
void* sandbox_info = NULL;
#if CEF_ENABLE_SANDBOX
// Manage the life span of the sandbox information object. This is necessary // Manage the life span of the sandbox information object. This is necessary
// for sandbox support on Windows. See cef_sandbox_win.h for complete details. // for sandbox support on Windows. See cef_sandbox_win.h for complete details.
CefScopedSandboxInfo scoped_sandbox; CefScopedSandboxInfo scoped_sandbox;
sandbox_info = scoped_sandbox.sandbox_info();
#endif
// Provide CEF with command-line arguments. // Provide CEF with command-line arguments.
CefMainArgs main_args(hInstance); CefMainArgs main_args(hInstance);
@ -29,8 +45,7 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
// CEF applications have multiple sub-processes (render, plugin, GPU, etc) // CEF applications have multiple sub-processes (render, plugin, GPU, etc)
// that share the same executable. This function checks the command-line and, // that share the same executable. This function checks the command-line and,
// if this is a sub-process, executes the appropriate logic. // if this is a sub-process, executes the appropriate logic.
int exit_code = CefExecuteProcess(main_args, app.get(), int exit_code = CefExecuteProcess(main_args, app.get(), sandbox_info);
scoped_sandbox.sandbox_info());
if (exit_code >= 0) { if (exit_code >= 0) {
// The sub-process has completed so return here. // The sub-process has completed so return here.
return exit_code; return exit_code;
@ -39,8 +54,12 @@ int APIENTRY wWinMain(HINSTANCE hInstance,
// Specify CEF global settings here. // Specify CEF global settings here.
CefSettings settings; CefSettings settings;
#if !CEF_ENABLE_SANDBOX
settings.no_sandbox = true;
#endif
// Initialize CEF. // Initialize CEF.
CefInitialize(main_args, settings, app.get(), scoped_sandbox.sandbox_info()); CefInitialize(main_args, settings, app.get(), sandbox_info);
// Run the CEF message loop. This will block until CefQuitMessageLoop() is // Run the CEF message loop. This will block until CefQuitMessageLoop() is
// called. // called.

View File

@ -113,9 +113,12 @@
'-lopengl32.lib', '-lopengl32.lib',
'-lglu32.lib', '-lglu32.lib',
'-l$(ConfigurationName)/libcef.lib', '-l$(ConfigurationName)/libcef.lib',
'-l$(ConfigurationName)/cef_sandbox.lib',
], ],
}, },
'library_dirs': [
# Needed to find cef_sandbox.lib using #pragma comment(lib, ...).
'$(ConfigurationName)',
],
'sources': [ 'sources': [
'<@(includes_win)', '<@(includes_win)',
'<@(cefclient_sources_win)', '<@(cefclient_sources_win)',
@ -329,9 +332,12 @@
'-lshlwapi.lib', '-lshlwapi.lib',
'-lrpcrt4.lib', '-lrpcrt4.lib',
'-l$(ConfigurationName)/libcef.lib', '-l$(ConfigurationName)/libcef.lib',
'-l$(ConfigurationName)/cef_sandbox.lib',
], ],
}, },
'library_dirs': [
# Needed to find cef_sandbox.lib using #pragma comment(lib, ...).
'$(ConfigurationName)',
],
'sources': [ 'sources': [
'<@(includes_win)', '<@(includes_win)',
'<@(cefsimple_sources_win)', '<@(cefsimple_sources_win)',