default_shell_browser_main_delegate.cc revision 5f1c94371a64b3196d4be9466099bb892df9b88e
15821806d5e7f356e8fa4b058a389a808ea183019Torne (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)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "extensions/shell/browser/default_shell_browser_main_delegate.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/command_line.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/file_util.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/files/file_path.h"
10ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "extensions/shell/browser/default_shell_app_window_controller.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "extensions/shell/browser/shell_desktop_controller.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "extensions/shell/browser/shell_extension_system.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "extensions/shell/common/switches.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace extensions {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DefaultShellBrowserMainDelegate::DefaultShellBrowserMainDelegate() {
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)}
19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DefaultShellBrowserMainDelegate::~DefaultShellBrowserMainDelegate() {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DefaultShellBrowserMainDelegate::Start(
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    content::BrowserContext* browser_context) {
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (command_line->HasSwitch(switches::kAppShellAppPath)) {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base::FilePath app_dir(
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        command_line->GetSwitchValueNative(switches::kAppShellAppPath));
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    base::FilePath app_absolute_dir = base::MakeAbsoluteFilePath(app_dir);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ShellExtensionSystem* extension_system = static_cast<ShellExtensionSystem*>(
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        ExtensionSystem::Get(browser_context));
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (!extension_system->LoadApp(app_absolute_dir))
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      return;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    extension_system->LaunchApp();
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  } else {
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    LOG(ERROR) << "--" << switches::kAppShellAppPath
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               << " unset; boredom is in your future";
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void DefaultShellBrowserMainDelegate::Shutdown() {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ShellDesktopController*
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DefaultShellBrowserMainDelegate::CreateDesktopController() {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ShellDesktopController* desktop = new ShellDesktopController();
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  desktop->SetAppWindowController(new DefaultShellAppWindowController(desktop));
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return desktop;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace extensions
53