| 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/permissions/permission_request_manager.h" | 5 #include "chrome/browser/permissions/permission_request_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/feature_list.h" | 10 #include "base/feature_list.h" |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 void PermissionRequestManager::AddRequest(PermissionRequest* request) { | 106 void PermissionRequestManager::AddRequest(PermissionRequest* request) { |
| 107 // TODO(tsergeant): change the UMA to no longer mention bubbles. | 107 // TODO(tsergeant): change the UMA to no longer mention bubbles. |
| 108 base::RecordAction(base::UserMetricsAction("PermissionBubbleRequest")); | 108 base::RecordAction(base::UserMetricsAction("PermissionBubbleRequest")); |
| 109 | 109 |
| 110 // TODO(gbillock): is there a race between an early request on a | 110 // TODO(gbillock): is there a race between an early request on a |
| 111 // newly-navigated page and the to-be-cleaned-up requests on the previous | 111 // newly-navigated page and the to-be-cleaned-up requests on the previous |
| 112 // page? We should maybe listen to DidStartNavigationToPendingEntry (and | 112 // page? We should maybe listen to DidStartNavigationToPendingEntry (and |
| 113 // any other renderer-side nav initiations?). Double-check this for | 113 // any other renderer-side nav initiations?). Double-check this for |
| 114 // correct behavior on interstitials -- we probably want to basically queue | 114 // correct behavior on interstitials -- we probably want to basically queue |
| 115 // any request for which GetVisibleURL != GetLastCommittedURL. | 115 // any request for which GetVisibleURL != GetLastCommittedURL. |
| 116 request_url_ = web_contents()->GetLastCommittedURL(); | 116 const GURL& request_url_ = web_contents()->GetLastCommittedURL(); |
| 117 bool is_main_frame = url::Origin(request_url_) | 117 bool is_main_frame = url::Origin(request_url_) |
| 118 .IsSameOriginWith(url::Origin(request->GetOrigin())); | 118 .IsSameOriginWith(url::Origin(request->GetOrigin())); |
| 119 | 119 |
| 120 // Don't re-add an existing request or one with a duplicate text request. | 120 // Don't re-add an existing request or one with a duplicate text request. |
| 121 PermissionRequest* existing_request = GetExistingRequest(request); | 121 PermissionRequest* existing_request = GetExistingRequest(request); |
| 122 if (existing_request) { | 122 if (existing_request) { |
| 123 // |request| is a duplicate. Add it to |duplicate_requests_| unless it's the | 123 // |request| is a duplicate. Add it to |duplicate_requests_| unless it's the |
| 124 // same object as |existing_request| or an existing duplicate. | 124 // same object as |existing_request| or an existing duplicate. |
| 125 if (request == existing_request) | 125 if (request == existing_request) |
| 126 return; | 126 return; |
| (...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 412 std::vector<PermissionRequest*>::iterator requests_iter; | 412 std::vector<PermissionRequest*>::iterator requests_iter; |
| 413 for (requests_iter = requests_.begin(); | 413 for (requests_iter = requests_.begin(); |
| 414 requests_iter != requests_.end(); | 414 requests_iter != requests_.end(); |
| 415 requests_iter++) { | 415 requests_iter++) { |
| 416 RequestFinishedIncludingDuplicates(*requests_iter); | 416 RequestFinishedIncludingDuplicates(*requests_iter); |
| 417 } | 417 } |
| 418 requests_.clear(); | 418 requests_.clear(); |
| 419 accept_states_.clear(); | 419 accept_states_.clear(); |
| 420 if (queued_requests_.size() || queued_frame_requests_.size()) | 420 if (queued_requests_.size() || queued_frame_requests_.size()) |
| 421 TriggerShowBubble(); | 421 TriggerShowBubble(); |
| 422 else | |
| 423 request_url_ = GURL(); | |
| 424 } | 422 } |
| 425 | 423 |
| 426 void PermissionRequestManager::CancelPendingQueues() { | 424 void PermissionRequestManager::CancelPendingQueues() { |
| 427 std::vector<PermissionRequest*>::iterator requests_iter; | 425 std::vector<PermissionRequest*>::iterator requests_iter; |
| 428 for (requests_iter = queued_requests_.begin(); | 426 for (requests_iter = queued_requests_.begin(); |
| 429 requests_iter != queued_requests_.end(); | 427 requests_iter != queued_requests_.end(); |
| 430 requests_iter++) { | 428 requests_iter++) { |
| 431 RequestFinishedIncludingDuplicates(*requests_iter); | 429 RequestFinishedIncludingDuplicates(*requests_iter); |
| 432 } | 430 } |
| 433 for (requests_iter = queued_frame_requests_.begin(); | 431 for (requests_iter = queued_frame_requests_.begin(); |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 case DENY_ALL: | 524 case DENY_ALL: |
| 527 Deny(); | 525 Deny(); |
| 528 break; | 526 break; |
| 529 case DISMISS: | 527 case DISMISS: |
| 530 Closing(); | 528 Closing(); |
| 531 break; | 529 break; |
| 532 case NONE: | 530 case NONE: |
| 533 NOTREACHED(); | 531 NOTREACHED(); |
| 534 } | 532 } |
| 535 } | 533 } |
| OLD | NEW |