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#ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CLIENT_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CLIENT_H_ 71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/callback_forward.h" 91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "extensions/browser/app_window/app_window.h" 101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace content { 121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass BrowserContext; 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass WebContents; 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} 151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace extensions { 171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass Extension; 191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass NativeAppWindow; 201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Sets up global state for the app window system. Should be Set() once in each 221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// process. This should be implemented by the client of the app window system. 231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// TODO(hashimoto): Move some functions to ExtensionsClient. 241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass AppWindowClient { 251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci public: 261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual ~AppWindowClient() {} 271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates a new AppWindow for the app in |extension| for |context|. 291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Caller takes ownership. 301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual AppWindow* CreateAppWindow(content::BrowserContext* context, 311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const Extension* extension) = 0; 321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Creates a new extensions::NativeAppWindow for |window|. 341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual NativeAppWindow* CreateNativeAppWindow( 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci AppWindow* window, 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const AppWindow::CreateParams& params) = 0; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Opens DevTools window and runs the callback. 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual void OpenDevToolsWindow(content::WebContents* web_contents, 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci const base::Closure& callback) = 0; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Returns true if the current channel is older than dev. 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci virtual bool IsCurrentChannelOlderThanDev() = 0; 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Return the app window client. 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static AppWindowClient* Get(); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci // Initialize the app window system with this app window client. 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci static void Set(AppWindowClient* client); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}; 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci} // namespace extensions 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_WINDOW_CLIENT_H_ 55