Home | History | Annotate | Download | only in apps
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/ui/apps/chrome_app_window_client.h"
      6 
      7 #include "base/memory/singleton.h"
      8 #include "chrome/browser/apps/scoped_keep_alive.h"
      9 #include "chrome/browser/devtools/devtools_window.h"
     10 #include "chrome/common/extensions/features/feature_channel.h"
     11 #include "extensions/browser/app_window/app_window.h"
     12 #include "extensions/common/extension.h"
     13 
     14 // TODO(jamescook): We probably shouldn't compile this class at all on Android.
     15 // See http://crbug.com/343612
     16 #if !defined(OS_ANDROID)
     17 #include "chrome/browser/ui/apps/chrome_app_delegate.h"
     18 #endif
     19 
     20 ChromeAppWindowClient::ChromeAppWindowClient() {
     21 }
     22 
     23 ChromeAppWindowClient::~ChromeAppWindowClient() {
     24 }
     25 
     26 // static
     27 ChromeAppWindowClient* ChromeAppWindowClient::GetInstance() {
     28   return Singleton<ChromeAppWindowClient,
     29                    LeakySingletonTraits<ChromeAppWindowClient> >::get();
     30 }
     31 
     32 extensions::AppWindow* ChromeAppWindowClient::CreateAppWindow(
     33     content::BrowserContext* context,
     34     const extensions::Extension* extension) {
     35 #if defined(OS_ANDROID)
     36   return NULL;
     37 #else
     38   return new extensions::AppWindow(
     39       context,
     40       new ChromeAppDelegate(make_scoped_ptr(new ScopedKeepAlive)),
     41       extension);
     42 #endif
     43 }
     44 
     45 extensions::NativeAppWindow* ChromeAppWindowClient::CreateNativeAppWindow(
     46     extensions::AppWindow* window,
     47     const extensions::AppWindow::CreateParams& params) {
     48 #if defined(OS_ANDROID)
     49   return NULL;
     50 #else
     51   return CreateNativeAppWindowImpl(window, params);
     52 #endif
     53 }
     54 
     55 void ChromeAppWindowClient::OpenDevToolsWindow(
     56     content::WebContents* web_contents,
     57     const base::Closure& callback) {
     58   DevToolsWindow* devtools_window = DevToolsWindow::OpenDevToolsWindow(
     59       web_contents, DevToolsToggleAction::ShowConsole());
     60   devtools_window->SetLoadCompletedCallback(callback);
     61 }
     62 
     63 bool ChromeAppWindowClient::IsCurrentChannelOlderThanDev() {
     64   return extensions::GetCurrentChannel() > chrome::VersionInfo::CHANNEL_DEV;
     65 }
     66