Upstream version 8.37.180.0
[platform/framework/web/crosswalk.git] / src / android_webview / browser / aw_content_browser_client.h
1 // Copyright (c) 2012 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 ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
6 #define ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_
7
8 #include "android_webview/browser/aw_web_preferences_populater.h"
9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "content/public/browser/content_browser_client.h"
13
14 struct WebPreferences;
15
16 namespace android_webview {
17
18 class AwBrowserContext;
19 class JniDependencyFactory;
20
21 class AwContentBrowserClient : public content::ContentBrowserClient {
22  public:
23   // This is what AwContentBrowserClient::GetAcceptLangs uses.
24   static std::string GetAcceptLangsImpl();
25
26   // Deprecated: use AwBrowserContext::GetDefault() instead.
27   static AwBrowserContext* GetAwBrowserContext();
28
29   AwContentBrowserClient(JniDependencyFactory* native_factory);
30   virtual ~AwContentBrowserClient();
31
32   // Overriden methods from ContentBrowserClient.
33   virtual void AddCertificate(net::CertificateMimeType cert_type,
34                               const void* cert_data,
35                               size_t cert_size,
36                               int render_process_id,
37                               int render_frame_id) OVERRIDE;
38   virtual content::BrowserMainParts* CreateBrowserMainParts(
39       const content::MainFunctionParams& parameters) OVERRIDE;
40   virtual content::WebContentsViewDelegate* GetWebContentsViewDelegate(
41       content::WebContents* web_contents) OVERRIDE;
42   virtual void RenderProcessWillLaunch(
43       content::RenderProcessHost* host) OVERRIDE;
44   virtual net::URLRequestContextGetter* CreateRequestContext(
45       content::BrowserContext* browser_context,
46       content::ProtocolHandlerMap* protocol_handlers,
47       content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
48   virtual net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
49       content::BrowserContext* browser_context,
50       const base::FilePath& partition_path,
51       bool in_memory,
52       content::ProtocolHandlerMap* protocol_handlers,
53       content::URLRequestInterceptorScopedVector request_interceptors) OVERRIDE;
54   virtual std::string GetCanonicalEncodingNameByAliasName(
55       const std::string& alias_name) OVERRIDE;
56   virtual void AppendExtraCommandLineSwitches(base::CommandLine* command_line,
57                                               int child_process_id) OVERRIDE;
58   virtual std::string GetApplicationLocale() OVERRIDE;
59   virtual std::string GetAcceptLangs(content::BrowserContext* context) OVERRIDE;
60   virtual const gfx::ImageSkia* GetDefaultFavicon() OVERRIDE;
61   virtual bool AllowAppCache(const GURL& manifest_url,
62                              const GURL& first_party,
63                              content::ResourceContext* context) OVERRIDE;
64   virtual bool AllowGetCookie(const GURL& url,
65                               const GURL& first_party,
66                               const net::CookieList& cookie_list,
67                               content::ResourceContext* context,
68                               int render_process_id,
69                               int render_frame_id) OVERRIDE;
70   virtual bool AllowSetCookie(const GURL& url,
71                               const GURL& first_party,
72                               const std::string& cookie_line,
73                               content::ResourceContext* context,
74                               int render_process_id,
75                               int render_frame_id,
76                               net::CookieOptions* options) OVERRIDE;
77   virtual bool AllowWorkerDatabase(
78       const GURL& url,
79       const base::string16& name,
80       const base::string16& display_name,
81       unsigned long estimated_size,
82       content::ResourceContext* context,
83       const std::vector<std::pair<int, int> >& render_frames) OVERRIDE;
84   virtual bool AllowWorkerFileSystem(
85       const GURL& url,
86       content::ResourceContext* context,
87       const std::vector<std::pair<int, int> >& render_frames) OVERRIDE;
88   virtual bool AllowWorkerIndexedDB(
89       const GURL& url,
90       const base::string16& name,
91       content::ResourceContext* context,
92       const std::vector<std::pair<int, int> >& render_frames) OVERRIDE;
93   virtual content::QuotaPermissionContext*
94       CreateQuotaPermissionContext() OVERRIDE;
95   virtual void AllowCertificateError(
96       int render_process_id,
97       int render_frame_id,
98       int cert_error,
99       const net::SSLInfo& ssl_info,
100       const GURL& request_url,
101       ResourceType::Type resource_type,
102       bool overridable,
103       bool strict_enforcement,
104       const base::Callback<void(bool)>& callback,
105       content::CertificateRequestResultType* result) OVERRIDE;
106   virtual void SelectClientCertificate(
107       int render_process_id,
108       int render_frame_id,
109       const net::HttpNetworkSession* network_session,
110       net::SSLCertRequestInfo* cert_request_info,
111       const base::Callback<void(net::X509Certificate*)>& callback) OVERRIDE;
112   virtual blink::WebNotificationPresenter::Permission
113       CheckDesktopNotificationPermission(
114           const GURL& source_url,
115           content::ResourceContext* context,
116           int render_process_id) OVERRIDE;
117   virtual void ShowDesktopNotification(
118       const content::ShowDesktopNotificationHostMsgParams& params,
119       content::RenderFrameHost* render_frame_host,
120       content::DesktopNotificationDelegate* delegate,
121       base::Closure* cancel_callback) OVERRIDE;
122   virtual void RequestGeolocationPermission(
123       content::WebContents* web_contents,
124       int bridge_id,
125       const GURL& requesting_frame,
126       bool user_gesture,
127       base::Callback<void(bool)> result_callback,
128       base::Closure* cancel_callback) OVERRIDE;
129   virtual void RequestMidiSysExPermission(
130       content::WebContents* web_contents,
131       int bridge_id,
132       const GURL& requesting_frame,
133       bool user_gesture,
134       base::Callback<void(bool)> result_callback,
135       base::Closure* cancel_callback) OVERRIDE;
136   virtual void RequestProtectedMediaIdentifierPermission(
137     content::WebContents* web_contents,
138     const GURL& origin,
139     base::Callback<void(bool)> result_callback,
140     base::Closure* cancel_callback) OVERRIDE;
141   virtual bool CanCreateWindow(const GURL& opener_url,
142                                const GURL& opener_top_level_frame_url,
143                                const GURL& source_origin,
144                                WindowContainerType container_type,
145                                const GURL& target_url,
146                                const content::Referrer& referrer,
147                                WindowOpenDisposition disposition,
148                                const blink::WebWindowFeatures& features,
149                                bool user_gesture,
150                                bool opener_suppressed,
151                                content::ResourceContext* context,
152                                int render_process_id,
153                                int opener_id,
154                                bool* no_javascript_access) OVERRIDE;
155   virtual std::string GetWorkerProcessTitle(
156       const GURL& url,
157       content::ResourceContext* context) OVERRIDE;
158   virtual void ResourceDispatcherHostCreated() OVERRIDE;
159   virtual net::NetLog* GetNetLog() OVERRIDE;
160   virtual content::AccessTokenStore* CreateAccessTokenStore() OVERRIDE;
161   virtual bool IsFastShutdownPossible() OVERRIDE;
162   virtual void UpdateInspectorSetting(content::RenderViewHost* rvh,
163                                       const std::string& key,
164                                       const std::string& value) OVERRIDE;
165   virtual void ClearCache(content::RenderViewHost* rvh) OVERRIDE;
166   virtual void ClearCookies(content::RenderViewHost* rvh) OVERRIDE;
167   virtual base::FilePath GetDefaultDownloadDirectory() OVERRIDE;
168   virtual std::string GetDefaultDownloadName() OVERRIDE;
169   virtual void DidCreatePpapiPlugin(
170       content::BrowserPpapiHost* browser_host) OVERRIDE;
171   virtual bool AllowPepperSocketAPI(
172       content::BrowserContext* browser_context,
173       const GURL& url,
174       bool private_api,
175       const content::SocketPermissionRequest* params) OVERRIDE;
176   virtual void OverrideWebkitPrefs(content::RenderViewHost* rvh,
177                                    const GURL& url,
178                                    WebPreferences* web_prefs) OVERRIDE;
179 #if defined(VIDEO_HOLE)
180   virtual content::ExternalVideoSurfaceContainer*
181       OverrideCreateExternalVideoSurfaceContainer(
182           content::WebContents* web_contents) OVERRIDE;
183 #endif
184
185  private:
186   // Android WebView currently has a single global (non-off-the-record) browser
187   // context.
188   scoped_ptr<AwBrowserContext> browser_context_;
189   scoped_ptr<AwWebPreferencesPopulater> preferences_populater_;
190
191   JniDependencyFactory* native_factory_;
192
193   DISALLOW_COPY_AND_ASSIGN(AwContentBrowserClient);
194 };
195
196 }  // namespace android_webview
197
198 #endif  // ANDROID_WEBVIEW_LIB_AW_CONTENT_BROWSER_CLIENT_H_