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#ifndef EXTENSIONS_BROWSER_APP_WINDOW_APP_DELEGATE_H_ 6#define EXTENSIONS_BROWSER_APP_WINDOW_APP_DELEGATE_H_ 7 8#include "base/callback_forward.h" 9#include "content/public/common/media_stream_request.h" 10#include "third_party/skia/include/core/SkColor.h" 11#include "ui/base/window_open_disposition.h" 12 13namespace content { 14class BrowserContext; 15class ColorChooser; 16struct FileChooserParams; 17struct OpenURLParams; 18class WebContents; 19} 20 21namespace gfx { 22class Rect; 23class Size; 24} 25 26namespace extensions { 27 28class Extension; 29 30// Interface to give packaged apps access to services in the browser, for things 31// like handling links and showing UI prompts to the user. 32class AppDelegate { 33 public: 34 virtual ~AppDelegate() {} 35 36 // General initialization. 37 virtual void InitWebContents(content::WebContents* web_contents) = 0; 38 39 // Resizes WebContents. 40 virtual void ResizeWebContents(content::WebContents* web_contents, 41 const gfx::Size& size) = 0; 42 43 // Link handling. 44 virtual content::WebContents* OpenURLFromTab( 45 content::BrowserContext* context, 46 content::WebContents* source, 47 const content::OpenURLParams& params) = 0; 48 virtual void AddNewContents(content::BrowserContext* context, 49 content::WebContents* new_contents, 50 WindowOpenDisposition disposition, 51 const gfx::Rect& initial_pos, 52 bool user_gesture, 53 bool* was_blocked) = 0; 54 55 // Feature support. 56 virtual content::ColorChooser* ShowColorChooser( 57 content::WebContents* web_contents, 58 SkColor initial_color) = 0; 59 virtual void RunFileChooser(content::WebContents* tab, 60 const content::FileChooserParams& params) = 0; 61 virtual void RequestMediaAccessPermission( 62 content::WebContents* web_contents, 63 const content::MediaStreamRequest& request, 64 const content::MediaResponseCallback& callback, 65 const Extension* extension) = 0; 66 virtual bool CheckMediaAccessPermission(content::WebContents* web_contents, 67 const GURL& security_origin, 68 content::MediaStreamType type, 69 const Extension* extension) = 0; 70 virtual int PreferredIconSize() = 0; 71 72 // Web contents modal dialog support. 73 virtual void SetWebContentsBlocked(content::WebContents* web_contents, 74 bool blocked) = 0; 75 virtual bool IsWebContentsVisible(content::WebContents* web_contents) = 0; 76 77 // |callback| will be called when the process is about to terminate. 78 virtual void SetTerminatingCallback(const base::Closure& callback) = 0; 79}; 80 81} // namespace extensions 82 83#endif // EXTENSIONS_BROWSER_APP_WINDOW_APP_DELEGATE_H_ 84