Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: android_webview/browser/aw_permission_manager.cc

Issue 1158813002: Use RenderFrameHost for ::RequestPermission() and ::CancelPermission(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: build fixes Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « android_webview/browser/aw_permission_manager.h ('k') | android_webview/native/aw_contents.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "android_webview/browser/aw_permission_manager.h" 5 #include "android_webview/browser/aw_permission_manager.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "android_webview/browser/aw_browser_permission_request_delegate.h" 9 #include "android_webview/browser/aw_browser_permission_request_delegate.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "base/containers/hash_tables.h" 11 #include "base/containers/hash_tables.h"
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/memory/weak_ptr.h" 13 #include "base/memory/weak_ptr.h"
14 #include "content/public/browser/permission_type.h" 14 #include "content/public/browser/permission_type.h"
15 #include "content/public/browser/render_frame_host.h"
15 #include "content/public/browser/render_process_host.h" 16 #include "content/public/browser/render_process_host.h"
16 #include "content/public/browser/render_view_host.h"
17 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
18 18
19 using content::PermissionStatus; 19 using content::PermissionStatus;
20 using content::PermissionType; 20 using content::PermissionType;
21 21
22 namespace android_webview { 22 namespace android_webview {
23 23
24 class LastRequestResultCache { 24 class LastRequestResultCache {
25 public: 25 public:
26 LastRequestResultCache() : weak_factory_(this) {} 26 LastRequestResultCache() : weak_factory_(this) {}
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 161
162 AwPermissionManager::AwPermissionManager() 162 AwPermissionManager::AwPermissionManager()
163 : content::PermissionManager(), result_cache_(new LastRequestResultCache) { 163 : content::PermissionManager(), result_cache_(new LastRequestResultCache) {
164 } 164 }
165 165
166 AwPermissionManager::~AwPermissionManager() { 166 AwPermissionManager::~AwPermissionManager() {
167 } 167 }
168 168
169 void AwPermissionManager::RequestPermission( 169 void AwPermissionManager::RequestPermission(
170 PermissionType permission, 170 PermissionType permission,
171 content::WebContents* web_contents, 171 content::RenderFrameHost* render_frame_host,
172 int request_id, 172 int request_id,
173 const GURL& origin, 173 const GURL& origin,
174 bool user_gesture, 174 bool user_gesture,
175 const base::Callback<void(PermissionStatus)>& callback) { 175 const base::Callback<void(PermissionStatus)>& callback) {
176 int render_process_id = web_contents->GetRenderProcessHost()->GetID(); 176 int render_process_id = render_frame_host->GetProcess()->GetID();
177 int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); 177 int render_frame_id = render_frame_host->GetRoutingID();
178 AwBrowserPermissionRequestDelegate* delegate = 178 AwBrowserPermissionRequestDelegate* delegate =
179 AwBrowserPermissionRequestDelegate::FromID(render_process_id, 179 AwBrowserPermissionRequestDelegate::FromID(render_process_id,
180 render_view_id); 180 render_frame_id);
181 if (!delegate) { 181 if (!delegate) {
182 DVLOG(0) << "Dropping permission request for " 182 DVLOG(0) << "Dropping permission request for "
183 << static_cast<int>(permission); 183 << static_cast<int>(permission);
184 callback.Run(content::PERMISSION_STATUS_DENIED); 184 callback.Run(content::PERMISSION_STATUS_DENIED);
185 return; 185 return;
186 } 186 }
187 187
188 const GURL& embedding_origin = 188 const GURL& embedding_origin =
189 web_contents->GetLastCommittedURL().GetOrigin(); 189 content::WebContents::FromRenderFrameHost(render_frame_host)
190 ->GetLastCommittedURL().GetOrigin();
190 191
191 switch (permission) { 192 switch (permission) {
192 case PermissionType::GEOLOCATION: 193 case PermissionType::GEOLOCATION:
193 delegate->RequestGeolocationPermission( 194 delegate->RequestGeolocationPermission(
194 origin, base::Bind(&CallbackPermisisonStatusWrapper, 195 origin, base::Bind(&CallbackPermisisonStatusWrapper,
195 result_cache_->GetWeakPtr(), callback, permission, 196 result_cache_->GetWeakPtr(), callback, permission,
196 origin, embedding_origin)); 197 origin, embedding_origin));
197 break; 198 break;
198 case PermissionType::PROTECTED_MEDIA_IDENTIFIER: 199 case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
199 delegate->RequestProtectedMediaIdentifierPermission( 200 delegate->RequestProtectedMediaIdentifierPermission(
(...skipping 10 matching lines...) Expand all
210 break; 211 break;
211 case PermissionType::NUM: 212 case PermissionType::NUM:
212 NOTREACHED() << "PermissionType::NUM was not expected here."; 213 NOTREACHED() << "PermissionType::NUM was not expected here.";
213 callback.Run(content::PERMISSION_STATUS_DENIED); 214 callback.Run(content::PERMISSION_STATUS_DENIED);
214 break; 215 break;
215 } 216 }
216 } 217 }
217 218
218 void AwPermissionManager::CancelPermissionRequest( 219 void AwPermissionManager::CancelPermissionRequest(
219 PermissionType permission, 220 PermissionType permission,
220 content::WebContents* web_contents, 221 content::RenderFrameHost* render_frame_host,
221 int request_id, 222 int request_id,
222 const GURL& origin) { 223 const GURL& origin) {
223 // The caller is canceling (presumably) the most recent request. Assuming the 224 // The caller is canceling (presumably) the most recent request. Assuming the
224 // request did not complete, the user did not respond to the requset. 225 // request did not complete, the user did not respond to the requset.
225 // Thus, assume we do not know the result. 226 // Thus, assume we do not know the result.
226 const GURL& embedding_origin = 227 const GURL& embedding_origin =
227 web_contents->GetLastCommittedURL().GetOrigin(); 228 content::WebContents::FromRenderFrameHost(render_frame_host)
229 ->GetLastCommittedURL().GetOrigin();
228 result_cache_->ClearResult(permission, origin, embedding_origin); 230 result_cache_->ClearResult(permission, origin, embedding_origin);
229 231
230 int render_process_id = web_contents->GetRenderProcessHost()->GetID(); 232 int render_process_id = render_frame_host->GetProcess()->GetID();
231 int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID(); 233 int render_frame_id = render_frame_host->GetRoutingID();
232 AwBrowserPermissionRequestDelegate* delegate = 234 AwBrowserPermissionRequestDelegate* delegate =
233 AwBrowserPermissionRequestDelegate::FromID(render_process_id, 235 AwBrowserPermissionRequestDelegate::FromID(render_process_id,
234 render_view_id); 236 render_frame_id);
235 if (!delegate) 237 if (!delegate)
236 return; 238 return;
237 239
238 switch (permission) { 240 switch (permission) {
239 case PermissionType::GEOLOCATION: 241 case PermissionType::GEOLOCATION:
240 delegate->CancelGeolocationPermissionRequests(origin); 242 delegate->CancelGeolocationPermissionRequests(origin);
241 break; 243 break;
242 case PermissionType::PROTECTED_MEDIA_IDENTIFIER: 244 case PermissionType::PROTECTED_MEDIA_IDENTIFIER:
243 delegate->CancelProtectedMediaIdentifierPermissionRequests(origin); 245 delegate->CancelProtectedMediaIdentifierPermissionRequests(origin);
244 break; 246 break;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 const GURL& embedding_origin, 287 const GURL& embedding_origin,
286 const base::Callback<void(PermissionStatus)>& callback) { 288 const base::Callback<void(PermissionStatus)>& callback) {
287 return -1; 289 return -1;
288 } 290 }
289 291
290 void AwPermissionManager::UnsubscribePermissionStatusChange( 292 void AwPermissionManager::UnsubscribePermissionStatusChange(
291 int subscription_id) { 293 int subscription_id) {
292 } 294 }
293 295
294 } // namespace android_webview 296 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/browser/aw_permission_manager.h ('k') | android_webview/native/aw_contents.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698