shell_main_delegate.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
11ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// Copyright (c) 2012 The Chromium Authors. All rights reserved. 21ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// Use of this source code is governed by a BSD-style license that can be 31ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// found in the LICENSE file. 41ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 51ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/app/shell_main_delegate.h" 61ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 71ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "base/command_line.h" 81ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "base/files/file_path.h" 91ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "base/logging.h" 101ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "base/path_service.h" 111ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "cc/base/switches.h" 121ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/public/browser/browser_main_runner.h" 131ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/public/common/content_switches.h" 141ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/public/common/url_constants.h" 151ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/public/test/layouttest_support.h" 164784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#include "content/shell/app/webkit_test_platform_support.h" 171ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/common/shell_switches.h" 181ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/renderer/shell_content_renderer_client.h" 191ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/shell_browser_main.h" 201ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/shell_content_browser_client.h" 211ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "net/cookies/cookie_monster.h" 221ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ui/base/resource/resource_bundle.h" 231ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ui/base/ui_base_paths.h" 241ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ui/base/ui_base_switches.h" 251ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ui/gl/gl_switches.h" 261ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 271ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "ipc/ipc_message.h" // For IPC_MESSAGE_LOG_ENABLED. 281ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 291ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#if defined(IPC_MESSAGE_LOG_ENABLED) 301ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#define IPC_MESSAGE_MACROS_LOG_ENABLED 311ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/public/common/content_ipc_logging.h" 324784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#define IPC_LOG_TABLE_ADD_ENTRY(msg_id, logger) \ 331ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com content::RegisterIPCLogger(msg_id, logger) 341ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/common/shell_messages.h" 351ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#endif 361ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 371ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#if defined(OS_ANDROID) 381ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "base/posix/global_descriptors.h" 391ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/android/shell_descriptors.h" 401ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#endif 411ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 421ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#if defined(OS_MACOSX) 431ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/app/paths_mac.h" 441ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#include "content/shell/app/shell_main_delegate_mac.h" 454784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif // OS_MACOSX 464784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 471ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#if defined(OS_WIN) 484784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#include <initguid.h> 494784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#include "base/logging_win.h" 504784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 514784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 524784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comnamespace { 534784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 544784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_WIN) 554784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// If "Content Shell" doesn't show up in your list of trace providers in 564784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// Sawbuck, add these registry entries to your machine (NOTE the optional 574784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// Wow6432Node key for x64 machines): 584784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// 1. Find: HKLM\SOFTWARE\[Wow6432Node\]Google\Sawbuck\Providers 594784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// 2. Add a subkey with the name "{6A3E50A4-7E15-4099-8413-EC94D8C2A4B6}" 604784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// 3. Add these values: 614784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// "default_flags"=dword:00000001 621ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// "default_level"=dword:00000004 631ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com// @="Content Shell" 644784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 654784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com// {6A3E50A4-7E15-4099-8413-EC94D8C2A4B6} 664784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comconst GUID kContentShellProviderName = { 674784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 0x6a3e50a4, 0x7e15, 0x4099, 684784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com { 0x84, 0x13, 0xec, 0x94, 0xd8, 0xc2, 0xa4, 0xb6 } }; 694784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 704784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 714784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comvoid InitLogging() { 724784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com base::FilePath log_filename; 734784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com PathService::Get(base::DIR_EXE, &log_filename); 744784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com log_filename = log_filename.AppendASCII("content_shell.log"); 754784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com logging::LoggingSettings settings; 764784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com settings.logging_dest = logging::LOG_TO_ALL; 774784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com settings.log_file = log_filename.value().c_str(); 784784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com settings.delete_old = logging::DELETE_OLD_LOG_FILE; 794784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com logging::InitLogging(settings); 804784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com logging::SetLogItems(true, true, true, true); 814784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 824784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 834784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} // namespace 844784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 854784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comnamespace content { 864784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 874784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comShellMainDelegate::ShellMainDelegate() { 884784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 894784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 904784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comShellMainDelegate::~ShellMainDelegate() { 914784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 924784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 934784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.combool ShellMainDelegate::BasicStartupComplete(int* exit_code) { 944784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_WIN) 954784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // Enable trace control and transport through event tracing for Windows. 964784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com logging::LogEventProvider::Initialize(kContentShellProviderName); 974784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 984784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_MACOSX) 994784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // Needs to happen before InitializeResourceBundle() and before 1004784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // WebKitTestPlatformInitialize() are called. 1014784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com OverrideFrameworkBundlePath(); 1024784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com OverrideChildProcessPath(); 1034784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com EnsureCorrectResolutionSettings(); 1044784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif // OS_MACOSX 1054784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1064784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com InitLogging(); 1074784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com CommandLine& command_line = *CommandLine::ForCurrentProcess(); 1084784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (command_line.HasSwitch(switches::kCheckLayoutTestSysDeps)) { 1094784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (!CheckLayoutSystemDeps()) { 1104784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (exit_code) 1114784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com *exit_code = 1; 1124784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return true; 1134784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 1144784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 1154784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (command_line.HasSwitch(switches::kDumpRenderTree)) { 1164784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com EnableBrowserLayoutTestMode(); 1174784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1184784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kProcessPerTab); 1194784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kEnableLogging); 1204784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kAllowFileAccessFromFiles); 1214784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if !defined(OS_ANDROID) 1224784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // OSMesa is not yet available for Android. http://crbug.com/248925 1234784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitchASCII( 1244784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com switches::kUseGL, gfx::kGLImplementationOSMesaName); 1254784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 1264784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kSkipGpuDataLoading); 1274784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kDisableGpuVsync); 1284784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kEnableExperimentalWebPlatformFeatures); 1294784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kEnableCssShaders); 1304784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitchASCII(switches::kTouchEvents, 1311ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com switches::kTouchEventsEnabled); 1321ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com command_line.AppendSwitch(switches::kEnableGestureTapHighlight); 1334784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitchASCII(switches::kForceDeviceScaleFactor, "1.0"); 1344784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_ANDROID) 1354784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch( 1364784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com switches::kDisableGestureRequirementForMediaPlayback); 1374784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // Capturing pixel results does not yet work when implementation-side 1384784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // painting is enabled. See http://crbug.com/250777 1394784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(cc::switches::kDisableImplSidePainting); 1404784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 1414784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1424784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (!command_line.HasSwitch(switches::kEnableThreadedCompositing)) 1434784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(cc::switches::kDisableThreadedAnimation); 1444784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (command_line.HasSwitch(switches::kEnableSoftwareCompositing)) 1454784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kEnableSoftwareCompositingGLAdapter); 1464784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1474784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com command_line.AppendSwitch(switches::kEnableInbandTextTracks); 1484784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1494784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com net::CookieMonster::EnableFileScheme(); 1504784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1514784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // Unless/until WebM files are added to the media layout tests, we need to 1524784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // avoid removing MP4/H264/AAC so that layout tests can run on Android. 1534784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if !defined(OS_ANDROID) 1544784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com net::RemoveProprietaryMediaTypesAndCodecsForTests(); 1554784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 1564784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1574784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (!WebKitTestPlatformInitialize()) { 1584784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (exit_code) 1594784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com *exit_code = 1; 1604784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return true; 1614784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 1624784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 1634784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com SetContentClient(&content_client_); 1644784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return false; 1654784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 1664784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1674784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comvoid ShellMainDelegate::PreSandboxStartup() { 1684784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com InitializeResourceBundle(); 1694784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 1704784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1714784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comint ShellMainDelegate::RunProcess( 1724784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com const std::string& process_type, 1734784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com const MainFunctionParams& main_function_params) { 1744784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (!process_type.empty()) 1751ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com return -1; 1761ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 1774784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if !defined(OS_ANDROID) 1784784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // Android stores the BrowserMainRunner instance as a scoped member pointer 1794784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // on the ShellMainDelegate class because of different object lifetime. 1804784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com scoped_ptr<BrowserMainRunner> browser_runner_; 1814784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 1824784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1834784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com browser_runner_.reset(BrowserMainRunner::Create()); 1844784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return ShellBrowserMain(main_function_params, browser_runner_); 1854784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 1864784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 1874784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comvoid ShellMainDelegate::InitializeResourceBundle() { 1884784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_ANDROID) 1894784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // In the Android case, the renderer runs with a different UID and can never 1904784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // access the file system. So we are passed a file descriptor to the 1914784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com // ResourceBundle pak at launch time. 1924784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com int pak_fd = 1934784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com base::GlobalDescriptors::GetInstance()->MaybeGet(kShellPakDescriptor); 1944784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com if (pak_fd != base::kInvalidPlatformFileValue) { 1954784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com ui::ResourceBundle::InitSharedInstanceWithPakFile(pak_fd, false); 1964784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com ResourceBundle::GetSharedInstance().AddDataPackFromFile( 1974784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pak_fd, ui::SCALE_FACTOR_100P); 1984784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return; 1994784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com } 2004784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 2014784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 2024784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com base::FilePath pak_file; 2034784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#if defined(OS_MACOSX) 2044784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pak_file = GetResourcesPakFilePath(); 2054784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#else 2061ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com base::FilePath pak_dir; 2071ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com 2081ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.com#if defined(OS_ANDROID) 2094784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com bool got_path = PathService::Get(base::DIR_ANDROID_APP_DATA, &pak_dir); 2104784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com DCHECK(got_path); 2114784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pak_dir = pak_dir.Append(FILE_PATH_LITERAL("paks")); 2124784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#else 2134784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com PathService::Get(base::DIR_MODULE, &pak_dir); 2144784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 2154784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 2164784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com pak_file = pak_dir.Append(FILE_PATH_LITERAL("content_shell.pak")); 2174784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com#endif 2184784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com ui::ResourceBundle::InitSharedInstanceWithPakPath(pak_file); 2194784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 2204784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 2214784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.comContentBrowserClient* ShellMainDelegate::CreateContentBrowserClient() { 2224784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com browser_client_.reset(new ShellContentBrowserClient); 2234784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return browser_client_.get(); 2244784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 2254784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 2261ad5e5bc944bfb46689d87ace2773109cb54f5ephilip.liard@gmail.comContentRendererClient* ShellMainDelegate::CreateContentRendererClient() { 2274784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com renderer_client_.reset(new ShellContentRendererClient); 2284784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com return renderer_client_.get(); 2294784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} 2304784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com 2314784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com} // namespace content 2324784d0d0f3a84cdac8d7a6b99b72fbb6b1a98ca5philip.liard@gmail.com