Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / xwalk / runtime / browser / xwalk_content_browser_client.h
1 // Copyright (c) 2013 Intel Corporation. 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 XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_
6 #define XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/compiler_specific.h"
12 #include "content/public/browser/content_browser_client.h"
13 #include "content/public/common/main_function_params.h"
14 #include "xwalk/runtime/browser/runtime_geolocation_permission_context.h"
15 #include "xwalk/runtime/browser/runtime_resource_dispatcher_host_delegate.h"
16
17 namespace content {
18 class BrowserContext;
19 class ResourceContext;
20 class QuotaPermissionContext;
21 class SpeechRecognitionManagerDelegate;
22 class WebContents;
23 class WebContentsViewDelegate;
24 }
25
26 namespace net {
27 class URLRequestContextGetter;
28 }
29
30 namespace xwalk {
31
32 class XWalkBrowserContext;
33 class XWalkBrowserMainParts;
34 class XWalkRunner;
35
36 class XWalkContentBrowserClient : public content::ContentBrowserClient {
37  public:
38   static XWalkContentBrowserClient* Get();
39
40   explicit XWalkContentBrowserClient(XWalkRunner* xwalk_runner);
41   virtual ~XWalkContentBrowserClient();
42
43   // ContentBrowserClient overrides.
44   content::BrowserMainParts* CreateBrowserMainParts(
45       const content::MainFunctionParams& parameters) override;
46   net::URLRequestContextGetter* CreateRequestContext(
47       content::BrowserContext* browser_context,
48       content::ProtocolHandlerMap* protocol_handlers,
49       content::URLRequestInterceptorScopedVector request_interceptors) override;
50   net::URLRequestContextGetter* CreateRequestContextForStoragePartition(
51       content::BrowserContext* browser_context,
52       const base::FilePath& partition_path,
53       bool in_memory,
54       content::ProtocolHandlerMap* protocol_handlers,
55       content::URLRequestInterceptorScopedVector request_interceptors) override;
56   void AppendExtraCommandLineSwitches(CommandLine* command_line,
57                                       int child_process_id) override;
58   content::QuotaPermissionContext*
59       CreateQuotaPermissionContext() override;
60   content::AccessTokenStore* CreateAccessTokenStore() override;
61   content::WebContentsViewDelegate* GetWebContentsViewDelegate(
62       content::WebContents* web_contents) override;
63   void RenderProcessWillLaunch(
64       content::RenderProcessHost* host) override;
65   content::MediaObserver* GetMediaObserver() override;
66
67   bool AllowGetCookie(const GURL& url,
68                       const GURL& first_party,
69                       const net::CookieList& cookie_list,
70                       content::ResourceContext* context,
71                       int render_process_id,
72                       int render_frame_id) override;
73   bool AllowSetCookie(const GURL& url,
74                       const GURL& first_party,
75                       const std::string& cookie_line,
76                       content::ResourceContext* context,
77                       int render_process_id,
78                       int render_frame_id,
79                       net::CookieOptions* options) override;
80
81   void AllowCertificateError(
82       int render_process_id,
83       int render_frame_id,
84       int cert_error,
85       const net::SSLInfo& ssl_info,
86       const GURL& request_url,
87       content::ResourceType resource_type,
88       bool overridable,
89       bool strict_enforcement,
90       bool expired_previous_decision,
91       const base::Callback<void(bool)>& callback, // NOLINT
92       content::CertificateRequestResultType* result) override;
93
94   content::SpeechRecognitionManagerDelegate*
95       GetSpeechRecognitionManagerDelegate() override;
96
97   blink::WebNotificationPermission
98   CheckDesktopNotificationPermission(
99       const GURL& source_url,
100       content::ResourceContext* context,
101       int render_process_id) override;
102   void ShowDesktopNotification(
103       const content::ShowDesktopNotificationHostMsgParams& params,
104       content::BrowserContext* browser_context,
105       int render_process_id,
106       scoped_ptr<content::DesktopNotificationDelegate> delegate,
107       base::Closure* cancel_callback) override;
108   void RequestPermission(
109       content::PermissionType permission,
110       content::WebContents* web_contents,
111       int bridge_id,
112       const GURL& requesting_frame,
113       bool user_gesture,
114       const base::Callback<void(bool)>& result_callback) override;
115   void CancelPermissionRequest(
116       content::PermissionType permission,
117       content::WebContents* web_contents,
118       int bridge_id,
119       const GURL& requesting_frame) override;
120 #if !defined(OS_ANDROID)
121   bool CanCreateWindow(const GURL& opener_url,
122                        const GURL& opener_top_level_frame_url,
123                        const GURL& source_origin,
124                        WindowContainerType container_type,
125                        const GURL& target_url,
126                        const content::Referrer& referrer,
127                        WindowOpenDisposition disposition,
128                        const blink::WebWindowFeatures& features,
129                        bool user_gesture,
130                        bool opener_suppressed,
131                        content::ResourceContext* context,
132                        int render_process_id,
133                        int opener_id,
134                        bool* no_javascript_access) override;
135 #endif
136
137   void DidCreatePpapiPlugin(
138       content::BrowserPpapiHost* browser_host) override;
139   content::BrowserPpapiHost* GetExternalBrowserPpapiHost(
140       int plugin_process_id) override;
141
142 #if defined(OS_ANDROID) || defined(OS_TIZEN)  || defined(OS_LINUX)
143   void ResourceDispatcherHostCreated() override;
144 #endif
145
146   content::LocationProvider* OverrideSystemLocationProvider() override;
147
148   void GetStoragePartitionConfigForSite(
149       content::BrowserContext* browser_context,
150       const GURL& site,
151       bool can_be_default,
152       std::string* partition_domain,
153       std::string* partition_name,
154       bool* in_memory) override;
155
156   content::DevToolsManagerDelegate*
157       GetDevToolsManagerDelegate() override;
158
159   XWalkBrowserMainParts* main_parts() { return main_parts_; }
160
161 #if defined(OS_ANDROID)
162   RuntimeResourceDispatcherHostDelegate* resource_dispatcher_host_delegate() {
163     return resource_dispatcher_host_delegate_.get();
164   }
165 #endif
166
167  private:
168   XWalkRunner* xwalk_runner_;
169   net::URLRequestContextGetter* url_request_context_getter_;
170   scoped_refptr<RuntimeGeolocationPermissionContext>
171     geolocation_permission_context_;
172   XWalkBrowserMainParts* main_parts_;
173   XWalkBrowserContext* browser_context_;
174
175   scoped_ptr<RuntimeResourceDispatcherHostDelegate>
176       resource_dispatcher_host_delegate_;
177
178   DISALLOW_COPY_AND_ASSIGN(XWalkContentBrowserClient);
179 };
180
181 }  // namespace xwalk
182
183 #endif  // XWALK_RUNTIME_BROWSER_XWALK_CONTENT_BROWSER_CLIENT_H_