blob: 52abb639d7ce65c9c8e403e42005a31ccb8095ea [file] [log] [blame]
// Copyright 2014 The Chromium 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 "ui/views_content_client/views_content_main_delegate.h"
#include <string>
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/path_service.h"
#include "build/build_config.h"
#include "content/public/common/content_switches.h"
#include "ui/base/resource/resource_bundle.h"
#include "ui/base/ui_base_paths.h"
#include "ui/views_content_client/views_content_browser_client.h"
#if defined(OS_WIN)
#include "base/logging_win.h"
#endif
namespace ui {
namespace {
#if defined(OS_WIN)
// {83FAC8EE-7A0E-4dbb-A3F6-6F500D7CAB1A}
const GUID kViewsContentClientProviderName =
{ 0x83fac8ee, 0x7a0e, 0x4dbb,
{ 0xa3, 0xf6, 0x6f, 0x50, 0xd, 0x7c, 0xab, 0x1a } };
#endif
} // namespace
ViewsContentMainDelegate::ViewsContentMainDelegate(
ViewsContentClient* views_content_client)
: views_content_client_(views_content_client) {
}
ViewsContentMainDelegate::~ViewsContentMainDelegate() {
}
bool ViewsContentMainDelegate::BasicStartupComplete(int* exit_code) {
const base::CommandLine& command_line =
*base::CommandLine::ForCurrentProcess();
std::string process_type =
command_line.GetSwitchValueASCII(switches::kProcessType);
content::SetContentClient(&content_client_);
logging::LoggingSettings settings;
settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
bool success = logging::InitLogging(settings);
CHECK(success);
#if defined(OS_WIN)
logging::LogEventProvider::Initialize(kViewsContentClientProviderName);
#endif
return false;
}
void ViewsContentMainDelegate::PreSandboxStartup() {
base::FilePath ui_test_pak_path;
CHECK(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
// Load content resources to provide, e.g., sandbox configuration data on Mac.
base::FilePath content_resources_pak_path;
PathService::Get(base::DIR_MODULE, &content_resources_pak_path);
ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
content_resources_pak_path.AppendASCII("content_resources.pak"),
ui::SCALE_FACTOR_100P);
if (ui::ResourceBundle::IsScaleFactorSupported(ui::SCALE_FACTOR_200P)) {
base::FilePath ui_test_resources_200 = ui_test_pak_path.DirName().Append(
FILE_PATH_LITERAL("ui_test_200_percent.pak"));
ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
ui_test_resources_200, ui::SCALE_FACTOR_200P);
}
}
content::ContentBrowserClient*
ViewsContentMainDelegate::CreateContentBrowserClient() {
browser_client_.reset(new ViewsContentBrowserClient(views_content_client_));
return browser_client_.get();
}
} // namespace ui