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

Side by Side Diff: chrome/browser/guest_view/web_view/web_view_permission_helper.cc

Issue 459953002: Migrate geolocation permissions to the new common permission class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 | Annotate | Revision Log
OLDNEW
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/web_view_permission_helper.h" 5 #include "chrome/browser/guest_view/web_view/web_view_permission_helper.h"
6 6
7 #include "chrome/browser/content_settings/permission_request_id.h"
7 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 8 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
8 #include "chrome/browser/geolocation/geolocation_permission_context.h" 9 #include "chrome/browser/geolocation/geolocation_permission_context.h"
9 #include "chrome/browser/geolocation/geolocation_permission_context_factory.h" 10 #include "chrome/browser/geolocation/geolocation_permission_context_factory.h"
10 #include "chrome/browser/guest_view/web_view/web_view_constants.h" 11 #include "chrome/browser/guest_view/web_view/web_view_constants.h"
11 #include "chrome/browser/guest_view/web_view/web_view_guest.h" 12 #include "chrome/browser/guest_view/web_view/web_view_guest.h"
12 #include "chrome/browser/guest_view/web_view/web_view_permission_types.h" 13 #include "chrome/browser/guest_view/web_view/web_view_permission_types.h"
13 #include "chrome/browser/plugins/chrome_plugin_service_filter.h" 14 #include "chrome/browser/plugins/chrome_plugin_service_filter.h"
14 #include "chrome/browser/profiles/profile.h" 15 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/common/render_messages.h" 16 #include "chrome/common/render_messages.h"
16 #include "content/public/browser/render_process_host.h" 17 #include "content/public/browser/render_process_host.h"
17 #include "content/public/browser/render_view_host.h" 18 #include "content/public/browser/render_view_host.h"
18 #include "content/public/browser/user_metrics.h" 19 #include "content/public/browser/user_metrics.h"
20 #include "content/public/browser/web_contents.h"
19 21
20 using content::BrowserPluginGuestDelegate; 22 using content::BrowserPluginGuestDelegate;
21 using content::RenderViewHost; 23 using content::RenderViewHost;
22 24
23 namespace { 25 namespace {
24 static std::string PermissionTypeToString(WebViewPermissionType type) { 26 static std::string PermissionTypeToString(WebViewPermissionType type) {
25 switch (type) { 27 switch (type) {
26 case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD: 28 case WEB_VIEW_PERMISSION_TYPE_DOWNLOAD:
27 return webview::kPermissionTypeDownload; 29 return webview::kPermissionTypeDownload;
28 case WEB_VIEW_PERMISSION_TYPE_FILESYSTEM: 30 case WEB_VIEW_PERMISSION_TYPE_FILESYSTEM:
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 const std::string& user_input) { 382 const std::string& user_input) {
381 // The <webview> embedder has allowed the permission. We now need to make sure 383 // The <webview> embedder has allowed the permission. We now need to make sure
382 // that the embedder has geolocation permission. 384 // that the embedder has geolocation permission.
383 RemoveBridgeID(bridge_id); 385 RemoveBridgeID(bridge_id);
384 386
385 if (!allow || !web_view_guest_->attached()) { 387 if (!allow || !web_view_guest_->attached()) {
386 callback.Run(false); 388 callback.Run(false);
387 return; 389 return;
388 } 390 }
389 391
392 content::WebContents* web_contents = web_view_guest_->embedder_web_contents();
393 int render_process_id = web_contents->GetRenderProcessHost()->GetID();
394 int render_view_id = web_contents->GetRenderViewHost()->GetRoutingID();
395
396 const PermissionRequestID request_id(
397 render_process_id,
398 render_view_id,
399 // The geolocation permission request here is not initiated
400 // through WebGeolocationPermissionRequest. We are only interested
401 // in the fact whether the embedder/app has geolocation
402 // permission. Therefore we use an invalid |bridge_id|.
403 -1,
404 GURL());
390 Profile* profile = Profile::FromBrowserContext( 405 Profile* profile = Profile::FromBrowserContext(
391 web_view_guest_->browser_context()); 406 web_view_guest_->browser_context());
392 GeolocationPermissionContextFactory::GetForProfile(profile)-> 407 GeolocationPermissionContextFactory::GetForProfile(profile)->
393 RequestGeolocationPermission( 408 RequestPermission(
394 web_view_guest_->embedder_web_contents(), 409 web_contents,
395 // The geolocation permission request here is not initiated 410 request_id,
396 // through WebGeolocationPermissionRequest. We are only interested 411 web_view_guest_->embedder_web_contents()
397 // in the fact whether the embedder/app has geolocation 412 ->GetLastCommittedURL().GetOrigin(),
398 // permission. Therefore we use an invalid |bridge_id|.
399 -1,
400 web_view_guest_->embedder_web_contents()->GetLastCommittedURL(),
401 user_gesture, 413 user_gesture,
402 callback, 414 callback);
403 NULL);
404 } 415 }
405 416
406 void WebViewPermissionHelper::CancelGeolocationPermissionRequest( 417 void WebViewPermissionHelper::CancelGeolocationPermissionRequest(
407 int bridge_id) { 418 int bridge_id) {
408 int request_id = RemoveBridgeID(bridge_id); 419 int request_id = RemoveBridgeID(bridge_id);
409 RequestMap::iterator request_itr = 420 RequestMap::iterator request_itr =
410 pending_permission_requests_.find(request_id); 421 pending_permission_requests_.find(request_id);
411 422
412 if (request_itr == pending_permission_requests_.end()) 423 if (request_itr == pending_permission_requests_.end())
413 return; 424 return;
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
590 const PermissionResponseCallback& callback, 601 const PermissionResponseCallback& callback,
591 WebViewPermissionType permission_type, 602 WebViewPermissionType permission_type,
592 bool allowed_by_default) 603 bool allowed_by_default)
593 : callback(callback), 604 : callback(callback),
594 permission_type(permission_type), 605 permission_type(permission_type),
595 allowed_by_default(allowed_by_default) { 606 allowed_by_default(allowed_by_default) {
596 } 607 }
597 608
598 WebViewPermissionHelper::PermissionResponseInfo::~PermissionResponseInfo() { 609 WebViewPermissionHelper::PermissionResponseInfo::~PermissionResponseInfo() {
599 } 610 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698