| Index: apps/shell/shell_main_delegate.cc
|
| diff --git a/apps/shell/shell_main_delegate.cc b/apps/shell/shell_main_delegate.cc
|
| index 2406ca97786017b432098b2cb42f68a66e930a3f..23c91faa9a45ab1bf06552492102f64b43a7bfdf 100644
|
| --- a/apps/shell/shell_main_delegate.cc
|
| +++ b/apps/shell/shell_main_delegate.cc
|
| @@ -4,15 +4,23 @@
|
|
|
| #include "apps/shell/shell_main_delegate.h"
|
|
|
| +#include "apps/shell/renderer/shell_content_renderer_client.h"
|
| #include "apps/shell/shell_content_browser_client.h"
|
| #include "apps/shell/shell_content_client.h"
|
| #include "base/command_line.h"
|
| #include "base/files/file_path.h"
|
| #include "base/logging.h"
|
| #include "base/path_service.h"
|
| +#include "chrome/common/chrome_paths.h"
|
| #include "content/public/browser/browser_main_runner.h"
|
| +#include "content/public/common/content_switches.h"
|
| +#include "extensions/common/extension_paths.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
|
|
| +#if defined(OS_CHROMEOS)
|
| +#include "chromeos/chromeos_paths.h"
|
| +#endif
|
| +
|
| namespace {
|
|
|
| void InitLogging() {
|
| @@ -41,11 +49,21 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit_code) {
|
| InitLogging();
|
| content_client_.reset(new ShellContentClient);
|
| SetContentClient(content_client_.get());
|
| +
|
| + chrome::RegisterPathProvider();
|
| +#if defined(OS_CHROMEOS)
|
| + chromeos::RegisterPathProvider();
|
| +#endif
|
| + extensions::RegisterPathProvider();
|
| return false;
|
| }
|
|
|
| void ShellMainDelegate::PreSandboxStartup() {
|
| - InitializeResourceBundle();
|
| + std::string process_type =
|
| + CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
|
| + switches::kProcessType);
|
| + if (ProcessNeedsResourceBundle(process_type))
|
| + InitializeResourceBundle();
|
| }
|
|
|
| content::ContentBrowserClient* ShellMainDelegate::CreateContentBrowserClient() {
|
| @@ -55,13 +73,30 @@ content::ContentBrowserClient* ShellMainDelegate::CreateContentBrowserClient() {
|
|
|
| content::ContentRendererClient*
|
| ShellMainDelegate::CreateContentRendererClient() {
|
| - // TODO(jamescook): Create a ShellContentRendererClient with the extensions
|
| - // initialization pieces of ChromeContentRendererClient.
|
| - return content::ContentMainDelegate::CreateContentRendererClient();
|
| + renderer_client_.reset(new ShellContentRendererClient);
|
| + return renderer_client_.get();
|
| +}
|
| +
|
| +// static
|
| +bool ShellMainDelegate::ProcessNeedsResourceBundle(
|
| + const std::string& process_type) {
|
| + // The browser process has no process type flag, but needs resources.
|
| + // On Linux the zygote process opens the resources for the renderers.
|
| + return process_type.empty() ||
|
| + process_type == switches::kZygoteProcess ||
|
| + process_type == switches::kRendererProcess ||
|
| + process_type == switches::kUtilityProcess;
|
| }
|
|
|
| void ShellMainDelegate::InitializeResourceBundle() {
|
| ui::ResourceBundle::InitSharedInstanceWithLocale("en-US", NULL);
|
| +
|
| + // The extensions system needs manifest data from the Chrome PAK file.
|
| + // TODO(jamescook): app_shell needs its own manifest data file.
|
| + base::FilePath resources_pack_path;
|
| + PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path);
|
| + ResourceBundle::GetSharedInstance().AddDataPackFromPath(
|
| + resources_pack_path, ui::SCALE_FACTOR_NONE);
|
| }
|
|
|
| } // namespace apps
|
|
|