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