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 13 namespace content { 14 class BrowserContext; 15 class ColorChooser; 16 struct FileChooserParams; 17 struct OpenURLParams; 18 class WebContents; 19 } 20 21 namespace gfx { 22 class Rect; 23 class Size; 24 } 25 26 namespace extensions { 27 28 class 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. 32 class 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