Chromium Code Reviews| 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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 75 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager); | 75 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager); |
| 76 | 76 |
| 77 PermissionRequestManager::PermissionRequestManager( | 77 PermissionRequestManager::PermissionRequestManager( |
| 78 content::WebContents* web_contents) | 78 content::WebContents* web_contents) |
| 79 : content::WebContentsObserver(web_contents), | 79 : content::WebContentsObserver(web_contents), |
| 80 view_factory_(base::Bind(&PermissionPrompt::Create)), | 80 view_factory_(base::Bind(&PermissionPrompt::Create)), |
| 81 view_(nullptr), | 81 view_(nullptr), |
| 82 main_frame_has_fully_loaded_(false), | 82 main_frame_has_fully_loaded_(false), |
| 83 persist_(true), | 83 persist_(true), |
| 84 auto_response_for_test_(NONE), | 84 auto_response_for_test_(NONE), |
| 85 weak_factory_(this) {} | 85 weak_factory_(this) { |
| 86 #if defined(OS_ANDROID) | |
| 87 view_ = view_factory_.Run(web_contents); | |
| 88 view_->SetDelegate(this); | |
| 89 #endif | |
| 90 } | |
| 86 | 91 |
| 87 PermissionRequestManager::~PermissionRequestManager() { | 92 PermissionRequestManager::~PermissionRequestManager() { |
| 88 if (view_ != NULL) | 93 if (view_ != NULL) |
| 89 view_->SetDelegate(NULL); | 94 view_->SetDelegate(NULL); |
| 90 | 95 |
| 91 for (PermissionRequest* request : requests_) | 96 for (PermissionRequest* request : requests_) |
| 92 request->RequestFinished(); | 97 request->RequestFinished(); |
| 93 for (PermissionRequest* request : queued_requests_) | 98 for (PermissionRequest* request : queued_requests_) |
| 94 request->RequestFinished(); | 99 request->RequestFinished(); |
| 95 for (PermissionRequest* request : queued_frame_requests_) | 100 for (PermissionRequest* request : queued_frame_requests_) |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 217 it->second->RequestFinished(); | 222 it->second->RequestFinished(); |
| 218 duplicate_requests_.erase(it); | 223 duplicate_requests_.erase(it); |
| 219 return; | 224 return; |
| 220 } | 225 } |
| 221 } | 226 } |
| 222 | 227 |
| 223 NOTREACHED(); // Callers should not cancel requests that are not pending. | 228 NOTREACHED(); // Callers should not cancel requests that are not pending. |
| 224 } | 229 } |
| 225 | 230 |
| 226 void PermissionRequestManager::HideBubble() { | 231 void PermissionRequestManager::HideBubble() { |
| 232 #if defined(ANDROID) | |
| 233 // The infobar system manages infobar lifetime and visibility so don't delete | |
| 234 // the PermissionPromptAndroid. | |
| 235 NOTREACHED(); | |
| 236 #else | |
| 227 // Disengage from the existing view if there is one. | 237 // Disengage from the existing view if there is one. |
| 228 if (!view_) | 238 if (!view_) |
| 229 return; | 239 return; |
| 230 | 240 |
| 231 view_->SetDelegate(nullptr); | 241 view_->SetDelegate(nullptr); |
| 232 view_->Hide(); | 242 view_->Hide(); |
| 233 view_.reset(); | 243 view_.reset(); |
| 244 #endif | |
| 234 } | 245 } |
| 235 | 246 |
| 236 void PermissionRequestManager::DisplayPendingRequests() { | 247 void PermissionRequestManager::DisplayPendingRequests() { |
|
raymes
2017/04/03 04:28:25
I wonder if we should have NOTREACHED() here on An
raymes
2017/04/03 04:30:52
Another thought is that I wonder if in the long ru
| |
| 237 if (IsBubbleVisible()) | 248 if (IsBubbleVisible()) |
| 238 return; | 249 return; |
| 239 | 250 |
| 240 view_ = view_factory_.Run(web_contents()); | 251 view_ = view_factory_.Run(web_contents()); |
| 241 view_->SetDelegate(this); | 252 view_->SetDelegate(this); |
| 242 | 253 |
| 243 TriggerShowBubble(); | 254 TriggerShowBubble(); |
| 244 } | 255 } |
| 245 | 256 |
| 246 void PermissionRequestManager::UpdateAnchorPosition() { | 257 void PermissionRequestManager::UpdateAnchorPosition() { |
| (...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 521 case DENY_ALL: | 532 case DENY_ALL: |
| 522 Deny(); | 533 Deny(); |
| 523 break; | 534 break; |
| 524 case DISMISS: | 535 case DISMISS: |
| 525 Closing(); | 536 Closing(); |
| 526 break; | 537 break; |
| 527 case NONE: | 538 case NONE: |
| 528 NOTREACHED(); | 539 NOTREACHED(); |
| 529 } | 540 } |
| 530 } | 541 } |
| OLD | NEW |