Home | History | Annotate | Download | only in app_window
      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