OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_d
elegate.h" | 5 #include "chrome/browser/guest_view/web_view/chrome_web_view_permission_helper_d
elegate.h" |
6 | 6 |
7 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 7 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
8 #include "chrome/browser/permissions/permission_manager.h" | 8 #include "chrome/browser/permissions/permission_manager.h" |
9 #include "chrome/browser/permissions/permission_request_id.h" | 9 #include "chrome/browser/permissions/permission_request_id.h" |
10 #include "chrome/browser/plugins/chrome_plugin_service_filter.h" | 10 #include "chrome/browser/plugins/chrome_plugin_service_filter.h" |
11 #include "chrome/browser/profiles/profile.h" | 11 #include "chrome/browser/profiles/profile.h" |
12 #include "chrome/common/features.h" | 12 #include "chrome/common/features.h" |
13 #include "chrome/common/render_messages.h" | 13 #include "chrome/common/render_messages.h" |
14 #include "components/content_settings/core/common/content_settings_types.h" | 14 #include "components/content_settings/core/common/content_settings_types.h" |
15 #include "content/public/browser/render_frame_host.h" | 15 #include "content/public/browser/render_frame_host.h" |
16 #include "content/public/browser/render_process_host.h" | 16 #include "content/public/browser/render_process_host.h" |
17 #include "content/public/browser/render_view_host.h" | 17 #include "content/public/browser/render_view_host.h" |
18 #include "content/public/browser/user_metrics.h" | 18 #include "content/public/browser/user_metrics.h" |
19 #include "extensions/browser/guest_view/web_view/web_view_constants.h" | 19 #include "extensions/browser/guest_view/web_view/web_view_constants.h" |
20 #include "extensions/browser/guest_view/web_view/web_view_guest.h" | 20 #include "extensions/browser/guest_view/web_view/web_view_guest.h" |
21 #include "ppapi/features/features.h" | 21 #include "ppapi/features/features.h" |
22 | 22 |
23 namespace extensions { | 23 namespace extensions { |
24 | 24 |
25 namespace { | 25 namespace { |
26 | 26 |
27 void CallbackWrapper(const base::Callback<void(bool)>& callback, | 27 void CallbackWrapper(const base::Callback<void(bool)>& callback, |
28 blink::mojom::PermissionStatus status) { | 28 ContentSetting status) { |
29 callback.Run(status == blink::mojom::PermissionStatus::GRANTED); | 29 callback.Run(status == CONTENT_SETTING_ALLOW); |
30 } | 30 } |
31 | 31 |
32 } // anonymous namespace | 32 } // anonymous namespace |
33 | 33 |
34 ChromeWebViewPermissionHelperDelegate::ChromeWebViewPermissionHelperDelegate( | 34 ChromeWebViewPermissionHelperDelegate::ChromeWebViewPermissionHelperDelegate( |
35 WebViewPermissionHelper* web_view_permission_helper) | 35 WebViewPermissionHelper* web_view_permission_helper) |
36 : WebViewPermissionHelperDelegate(web_view_permission_helper), | 36 : WebViewPermissionHelperDelegate(web_view_permission_helper), |
37 weak_factory_(this) { | 37 weak_factory_(this) { |
38 } | 38 } |
39 | 39 |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 WEB_VIEW_PERMISSION_TYPE_GEOLOCATION, | 190 WEB_VIEW_PERMISSION_TYPE_GEOLOCATION, |
191 request_info, | 191 request_info, |
192 permission_callback, | 192 permission_callback, |
193 false /* allowed_by_default */); | 193 false /* allowed_by_default */); |
194 bridge_id_to_request_id_map_[bridge_id] = request_id; | 194 bridge_id_to_request_id_map_[bridge_id] = request_id; |
195 } | 195 } |
196 | 196 |
197 void ChromeWebViewPermissionHelperDelegate::OnGeolocationPermissionResponse( | 197 void ChromeWebViewPermissionHelperDelegate::OnGeolocationPermissionResponse( |
198 int bridge_id, | 198 int bridge_id, |
199 bool user_gesture, | 199 bool user_gesture, |
200 const base::Callback<void(blink::mojom::PermissionStatus)>& callback, | 200 const base::Callback<void(ContentSetting)>& callback, |
201 bool allow, | 201 bool allow, |
202 const std::string& user_input) { | 202 const std::string& user_input) { |
203 // The <webview> embedder has allowed the permission. We now need to make sure | 203 // The <webview> embedder has allowed the permission. We now need to make sure |
204 // that the embedder has geolocation permission. | 204 // that the embedder has geolocation permission. |
205 RemoveBridgeID(bridge_id); | 205 RemoveBridgeID(bridge_id); |
206 | 206 |
207 if (!allow || !web_view_guest()->attached()) { | 207 if (!allow || !web_view_guest()->attached()) { |
208 callback.Run(blink::mojom::PermissionStatus::DENIED); | 208 callback.Run(CONTENT_SETTING_BLOCK); |
209 return; | 209 return; |
210 } | 210 } |
211 | 211 |
212 content::WebContents* web_contents = | 212 content::WebContents* web_contents = |
213 web_view_guest()->embedder_web_contents(); | 213 web_view_guest()->embedder_web_contents(); |
214 int render_process_id = web_contents->GetRenderProcessHost()->GetID(); | 214 int render_process_id = web_contents->GetRenderProcessHost()->GetID(); |
215 int render_frame_id = web_contents->GetMainFrame()->GetRoutingID(); | 215 int render_frame_id = web_contents->GetMainFrame()->GetRoutingID(); |
216 | 216 |
217 const PermissionRequestID request_id( | 217 const PermissionRequestID request_id( |
218 render_process_id, | 218 render_process_id, |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
330 IPC::Message* reply_msg, | 330 IPC::Message* reply_msg, |
331 bool allowed) { | 331 bool allowed) { |
332 TabSpecificContentSettings::FileSystemAccessed( | 332 TabSpecificContentSettings::FileSystemAccessed( |
333 render_process_id, render_frame_id, url, !allowed); | 333 render_process_id, render_frame_id, url, !allowed); |
334 ChromeViewHostMsg_RequestFileSystemAccessSync::WriteReplyParams(reply_msg, | 334 ChromeViewHostMsg_RequestFileSystemAccessSync::WriteReplyParams(reply_msg, |
335 allowed); | 335 allowed); |
336 Send(reply_msg); | 336 Send(reply_msg); |
337 } | 337 } |
338 | 338 |
339 } // namespace extensions | 339 } // namespace extensions |
OLD | NEW |