Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / extensions / browser / app_window / app_delegate.h
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_