11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/apps/chrome_app_window_client.h"
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/singleton.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/apps/scoped_keep_alive.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/devtools/devtools_window.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/common/extensions/features/feature_channel.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/common/extension.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(jamescook): We probably shouldn't compile this class at all on Android.
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// See http://crbug.com/343612
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if !defined(OS_ANDROID)
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/apps/chrome_app_delegate.h"
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAppWindowClient::ChromeAppWindowClient() {
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAppWindowClient::~ChromeAppWindowClient() {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// static
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciChromeAppWindowClient* ChromeAppWindowClient::GetInstance() {
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return Singleton<ChromeAppWindowClient,
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci                   LeakySingletonTraits<ChromeAppWindowClient> >::get();
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextensions::AppWindow* ChromeAppWindowClient::CreateAppWindow(
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::BrowserContext* context,
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const extensions::Extension* extension) {
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID)
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return NULL;
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return new extensions::AppWindow(
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      context,
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new ChromeAppDelegate(make_scoped_ptr(new ScopedKeepAlive)),
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      extension);
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextensions::NativeAppWindow* ChromeAppWindowClient::CreateNativeAppWindow(
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    extensions::AppWindow* window,
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const extensions::AppWindow::CreateParams& params) {
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#if defined(OS_ANDROID)
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return NULL;
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#else
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return CreateNativeAppWindowImpl(window, params);
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid ChromeAppWindowClient::OpenDevToolsWindow(
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    content::WebContents* web_contents,
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    const base::Closure& callback) {
581320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  DevToolsWindow* devtools_window = DevToolsWindow::OpenDevToolsWindow(
591320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      web_contents, DevToolsToggleAction::ShowConsole());
601320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  devtools_window->SetLoadCompletedCallback(callback);
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool ChromeAppWindowClient::IsCurrentChannelOlderThanDev() {
641320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return extensions::GetCurrentChannel() > chrome::VersionInfo::CHANNEL_DEV;
651320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
66