1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views_content_client/views_content_main_delegate.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/files/file_path.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/path_service.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/common/content_switches.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/ui_base_paths.h"
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/views_content_client/views_content_browser_client.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging_win.h"
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)namespace ui {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// {83FAC8EE-7A0E-4dbb-A3F6-6F500D7CAB1A}
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)const GUID kViewsContentClientProviderName =
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    { 0x83fac8ee, 0x7a0e, 0x4dbb,
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        { 0xa3, 0xf6, 0x6f, 0x50, 0xd, 0x7c, 0xab, 0x1a } };
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)ViewsContentMainDelegate::ViewsContentMainDelegate(
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ViewsContentClient* views_content_client)
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    : views_content_client_(views_content_client) {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)ViewsContentMainDelegate::~ViewsContentMainDelegate() {
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool ViewsContentMainDelegate::BasicStartupComplete(int* exit_code) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const CommandLine& command_line = *CommandLine::ForCurrentProcess();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  std::string process_type =
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      command_line.GetSwitchValueASCII(switches::kProcessType);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  content::SetContentClient(&content_client_);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  logging::LoggingSettings settings;
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  settings.logging_dest = logging::LOG_TO_SYSTEM_DEBUG_LOG;
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  bool success = logging::InitLogging(settings);
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHECK(success);
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(OS_WIN)
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  logging::LogEventProvider::Initialize(kViewsContentClientProviderName);
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return false;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)void ViewsContentMainDelegate::PreSandboxStartup() {
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  base::FilePath ui_test_pak_path;
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DCHECK(PathService::Get(ui::UI_TEST_PAK, &ui_test_pak_path));
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ui::ResourceBundle::InitSharedInstanceWithPakPath(ui_test_pak_path);
6446d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)
6546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  // Load content resources to provide, e.g., sandbox configuration data on Mac.
6646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  base::FilePath content_resources_pak_path;
6746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  PathService::Get(base::DIR_MODULE, &content_resources_pak_path);
6846d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  ui::ResourceBundle::GetSharedInstance().AddDataPackFromPath(
6946d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      content_resources_pak_path.AppendASCII("content_resources.pak"),
7046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)      ui::SCALE_FACTOR_100P);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)content::ContentBrowserClient*
74cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    ViewsContentMainDelegate::CreateContentBrowserClient() {
75cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  browser_client_.reset(new ViewsContentBrowserClient(views_content_client_));
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return browser_client_.get();
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
79cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}  // namespace ui
80