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

Side by Side Diff: chrome/browser/permissions/permission_request_manager.cc

Issue 1686903002: [Abandoned] Rename PermissionBubbleManager to PermissionRequestManager. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tests compile Created 4 years, 8 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
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/ui/website_settings/permission_bubble_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/metrics/user_metrics_action.h" 10 #include "base/metrics/user_metrics_action.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "chrome/browser/permissions/permission_uma_util.h" 12 #include "chrome/browser/permissions/permission_uma_util.h"
13 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 13 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
14 #include "chrome/common/chrome_switches.h" 14 #include "chrome/common/chrome_switches.h"
15 #include "content/public/browser/browser_thread.h" 15 #include "content/public/browser/browser_thread.h"
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 return true; 59 return true;
60 if (a->GetMessageTextFragment() == b->GetMessageTextFragment() && 60 if (a->GetMessageTextFragment() == b->GetMessageTextFragment() &&
61 a->GetOrigin() == b->GetOrigin()) { 61 a->GetOrigin() == b->GetOrigin()) {
62 return true; 62 return true;
63 } 63 }
64 return false; 64 return false;
65 } 65 }
66 66
67 } // namespace 67 } // namespace
68 68
69 // PermissionBubbleManager::Observer ------------------------------------------- 69 // PermissionRequestManager::Observer ------------------------------------------
70 70
71 PermissionBubbleManager::Observer::~Observer() { 71 PermissionRequestManager::Observer::~Observer() {
72 } 72 }
73 73
74 void PermissionBubbleManager::Observer::OnBubbleAdded() { 74 void PermissionRequestManager::Observer::OnBubbleAdded() {
75 } 75 }
76 76
77 // PermissionBubbleManager ----------------------------------------------------- 77 // PermissionRequestManager ----------------------------------------------------
78 78
79 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionBubbleManager); 79 DEFINE_WEB_CONTENTS_USER_DATA_KEY(PermissionRequestManager);
80 80
81 PermissionBubbleManager::PermissionBubbleManager( 81 PermissionRequestManager::PermissionRequestManager(
82 content::WebContents* web_contents) 82 content::WebContents* web_contents)
83 : content::WebContentsObserver(web_contents), 83 : content::WebContentsObserver(web_contents),
84 #if !defined(OS_ANDROID) // No bubbles in android tests. 84 #if !defined(OS_ANDROID) // No bubbles in android tests.
85 view_factory_(base::Bind(&PermissionBubbleView::Create)), 85 view_factory_(base::Bind(&PermissionBubbleView::Create)),
86 #endif 86 #endif
87 view_(nullptr), 87 view_(nullptr),
88 main_frame_has_fully_loaded_(false), 88 main_frame_has_fully_loaded_(false),
89 auto_response_for_test_(NONE), 89 auto_response_for_test_(NONE),
90 weak_factory_(this) { 90 weak_factory_(this) {
91 } 91 }
92 92
93 PermissionBubbleManager::~PermissionBubbleManager() { 93 PermissionRequestManager::~PermissionRequestManager() {
94 if (view_ != NULL) 94 if (view_ != NULL)
95 view_->SetDelegate(NULL); 95 view_->SetDelegate(NULL);
96 96
97 for (PermissionBubbleRequest* request : requests_) 97 for (PermissionBubbleRequest* request : requests_)
98 request->RequestFinished(); 98 request->RequestFinished();
99 for (PermissionBubbleRequest* request : queued_requests_) 99 for (PermissionBubbleRequest* request : queued_requests_)
100 request->RequestFinished(); 100 request->RequestFinished();
101 for (PermissionBubbleRequest* request : queued_frame_requests_) 101 for (PermissionBubbleRequest* request : queued_frame_requests_)
102 request->RequestFinished(); 102 request->RequestFinished();
103 for (const auto& entry : duplicate_requests_) 103 for (const auto& entry : duplicate_requests_)
104 entry.second->RequestFinished(); 104 entry.second->RequestFinished();
105 } 105 }
106 106
107 void PermissionBubbleManager::AddRequest(PermissionBubbleRequest* request) { 107 void PermissionRequestManager::AddRequest(PermissionBubbleRequest* request) {
108 content::RecordAction(base::UserMetricsAction("PermissionBubbleRequest")); 108 content::RecordAction(base::UserMetricsAction("PermissionBubbleRequest"));
109 // TODO(gbillock): is there a race between an early request on a 109 // TODO(gbillock): is there a race between an early request on a
110 // newly-navigated page and the to-be-cleaned-up requests on the previous 110 // newly-navigated page and the to-be-cleaned-up requests on the previous
111 // page? We should maybe listen to DidStartNavigationToPendingEntry (and 111 // page? We should maybe listen to DidStartNavigationToPendingEntry (and
112 // any other renderer-side nav initiations?). Double-check this for 112 // any other renderer-side nav initiations?). Double-check this for
113 // correct behavior on interstitials -- we probably want to basically queue 113 // correct behavior on interstitials -- we probably want to basically queue
114 // any request for which GetVisibleURL != GetLastCommittedURL. 114 // any request for which GetVisibleURL != GetLastCommittedURL.
115 request_url_ = web_contents()->GetLastCommittedURL(); 115 request_url_ = web_contents()->GetLastCommittedURL();
116 bool is_main_frame = url::Origin(request_url_) 116 bool is_main_frame = url::Origin(request_url_)
117 .IsSameOriginWith(url::Origin(request->GetOrigin())); 117 .IsSameOriginWith(url::Origin(request->GetOrigin()));
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 accept_states_.push_back(true); 151 accept_states_.push_back(true);
152 } else { 152 } else {
153 content::RecordAction( 153 content::RecordAction(
154 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued")); 154 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued"));
155 queued_frame_requests_.push_back(request); 155 queued_frame_requests_.push_back(request);
156 } 156 }
157 157
158 ScheduleShowBubble(); 158 ScheduleShowBubble();
159 } 159 }
160 160
161 void PermissionBubbleManager::CancelRequest(PermissionBubbleRequest* request) { 161 void PermissionRequestManager::CancelRequest(PermissionBubbleRequest* request) {
162 // First look in the queued requests, where we can simply finish the request 162 // First look in the queued requests, where we can simply finish the request
163 // and go on. 163 // and go on.
164 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 164 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
165 for (requests_iter = queued_requests_.begin(); 165 for (requests_iter = queued_requests_.begin();
166 requests_iter != queued_requests_.end(); 166 requests_iter != queued_requests_.end();
167 requests_iter++) { 167 requests_iter++) {
168 if (*requests_iter == request) { 168 if (*requests_iter == request) {
169 RequestFinishedIncludingDuplicates(*requests_iter); 169 RequestFinishedIncludingDuplicates(*requests_iter);
170 queued_requests_.erase(requests_iter); 170 queued_requests_.erase(requests_iter);
171 return; 171 return;
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 if (request == it->second) { 221 if (request == it->second) {
222 it->second->RequestFinished(); 222 it->second->RequestFinished();
223 duplicate_requests_.erase(it); 223 duplicate_requests_.erase(it);
224 return; 224 return;
225 } 225 }
226 } 226 }
227 227
228 NOTREACHED(); // Callers should not cancel requests that are not pending. 228 NOTREACHED(); // Callers should not cancel requests that are not pending.
229 } 229 }
230 230
231 void PermissionBubbleManager::HideBubble() { 231 void PermissionRequestManager::HideBubble() {
232 // Disengage from the existing view if there is one. 232 // Disengage from the existing view if there is one.
233 if (!view_) 233 if (!view_)
234 return; 234 return;
235 235
236 view_->SetDelegate(nullptr); 236 view_->SetDelegate(nullptr);
237 view_->Hide(); 237 view_->Hide();
238 view_.reset(); 238 view_.reset();
239 } 239 }
240 240
241 void PermissionBubbleManager::DisplayPendingRequests() { 241 void PermissionRequestManager::DisplayPendingRequests() {
242 if (IsBubbleVisible()) 242 if (IsBubbleVisible())
243 return; 243 return;
244 244
245 #if defined(OS_ANDROID) 245 #if defined(OS_ANDROID)
246 NOTREACHED(); 246 NOTREACHED();
247 return; 247 return;
248 #else 248 #else
249 view_ = view_factory_.Run(chrome::FindBrowserWithWebContents(web_contents())); 249 view_ = view_factory_.Run(chrome::FindBrowserWithWebContents(web_contents()));
250 view_->SetDelegate(this); 250 view_->SetDelegate(this);
251 #endif 251 #endif
252 252
253 TriggerShowBubble(); 253 TriggerShowBubble();
254 } 254 }
255 255
256 void PermissionBubbleManager::UpdateAnchorPosition() { 256 void PermissionRequestManager::UpdateAnchorPosition() {
257 if (view_) 257 if (view_)
258 view_->UpdateAnchorPosition(); 258 view_->UpdateAnchorPosition();
259 } 259 }
260 260
261 bool PermissionBubbleManager::IsBubbleVisible() { 261 bool PermissionRequestManager::IsBubbleVisible() {
262 return view_ && view_->IsVisible(); 262 return view_ && view_->IsVisible();
263 } 263 }
264 264
265 gfx::NativeWindow PermissionBubbleManager::GetBubbleWindow() { 265 gfx::NativeWindow PermissionRequestManager::GetBubbleWindow() {
266 if (view_) 266 if (view_)
267 return view_->GetNativeWindow(); 267 return view_->GetNativeWindow();
268 return nullptr; 268 return nullptr;
269 } 269 }
270 270
271 void PermissionBubbleManager::DidNavigateMainFrame( 271 void PermissionRequestManager::DidNavigateMainFrame(
272 const content::LoadCommittedDetails& details, 272 const content::LoadCommittedDetails& details,
273 const content::FrameNavigateParams& params) { 273 const content::FrameNavigateParams& params) {
274 if (details.is_in_page) 274 if (details.is_in_page)
275 return; 275 return;
276 276
277 CancelPendingQueues(); 277 CancelPendingQueues();
278 FinalizeBubble(); 278 FinalizeBubble();
279 main_frame_has_fully_loaded_ = false; 279 main_frame_has_fully_loaded_ = false;
280 } 280 }
281 281
282 void PermissionBubbleManager::DocumentOnLoadCompletedInMainFrame() { 282 void PermissionRequestManager::DocumentOnLoadCompletedInMainFrame() {
283 main_frame_has_fully_loaded_ = true; 283 main_frame_has_fully_loaded_ = true;
284 // This is scheduled because while all calls to the browser have been 284 // This is scheduled because while all calls to the browser have been
285 // issued at DOMContentLoaded, they may be bouncing around in scheduled 285 // issued at DOMContentLoaded, they may be bouncing around in scheduled
286 // callbacks finding the UI thread still. This makes sure we allow those 286 // callbacks finding the UI thread still. This makes sure we allow those
287 // scheduled calls to AddRequest to complete before we show the page-load 287 // scheduled calls to AddRequest to complete before we show the page-load
288 // permissions bubble. 288 // permissions bubble.
289 ScheduleShowBubble(); 289 ScheduleShowBubble();
290 } 290 }
291 291
292 void PermissionBubbleManager::DocumentLoadedInFrame( 292 void PermissionRequestManager::DocumentLoadedInFrame(
293 content::RenderFrameHost* render_frame_host) { 293 content::RenderFrameHost* render_frame_host) {
294 ScheduleShowBubble(); 294 ScheduleShowBubble();
295 } 295 }
296 296
297 void PermissionBubbleManager::WebContentsDestroyed() { 297 void PermissionRequestManager::WebContentsDestroyed() {
298 // If the web contents has been destroyed, treat the bubble as cancelled. 298 // If the web contents has been destroyed, treat the bubble as cancelled.
299 CancelPendingQueues(); 299 CancelPendingQueues();
300 FinalizeBubble(); 300 FinalizeBubble();
301 301
302 // The WebContents is going away; be aggressively paranoid and delete 302 // The WebContents is going away; be aggressively paranoid and delete
303 // ourselves lest other parts of the system attempt to add permission bubbles 303 // ourselves lest other parts of the system attempt to add permission bubbles
304 // or use us otherwise during the destruction. 304 // or use us otherwise during the destruction.
305 web_contents()->RemoveUserData(UserDataKey()); 305 web_contents()->RemoveUserData(UserDataKey());
306 // That was the equivalent of "delete this". This object is now destroyed; 306 // That was the equivalent of "delete this". This object is now destroyed;
307 // returning from this function is the only safe thing to do. 307 // returning from this function is the only safe thing to do.
308 } 308 }
309 309
310 void PermissionBubbleManager::ToggleAccept(int request_index, bool new_value) { 310 void PermissionRequestManager::ToggleAccept(int request_index, bool new_value) {
311 DCHECK(request_index < static_cast<int>(accept_states_.size())); 311 DCHECK(request_index < static_cast<int>(accept_states_.size()));
312 accept_states_[request_index] = new_value; 312 accept_states_[request_index] = new_value;
313 } 313 }
314 314
315 void PermissionBubbleManager::Accept() { 315 void PermissionRequestManager::Accept() {
316 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 316 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
317 std::vector<bool>::iterator accepts_iter = accept_states_.begin(); 317 std::vector<bool>::iterator accepts_iter = accept_states_.begin();
318 for (requests_iter = requests_.begin(), accepts_iter = accept_states_.begin(); 318 for (requests_iter = requests_.begin(), accepts_iter = accept_states_.begin();
319 requests_iter != requests_.end(); 319 requests_iter != requests_.end();
320 requests_iter++, accepts_iter++) { 320 requests_iter++, accepts_iter++) {
321 if (*accepts_iter) { 321 if (*accepts_iter) {
322 PermissionGrantedIncludingDuplicates(*requests_iter); 322 PermissionGrantedIncludingDuplicates(*requests_iter);
323 } else { 323 } else {
324 PermissionDeniedIncludingDuplicates(*requests_iter); 324 PermissionDeniedIncludingDuplicates(*requests_iter);
325 } 325 }
326 } 326 }
327 FinalizeBubble(); 327 FinalizeBubble();
328 } 328 }
329 329
330 void PermissionBubbleManager::Deny() { 330 void PermissionRequestManager::Deny() {
331 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 331 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
332 for (requests_iter = requests_.begin(); 332 for (requests_iter = requests_.begin();
333 requests_iter != requests_.end(); 333 requests_iter != requests_.end();
334 requests_iter++) { 334 requests_iter++) {
335 PermissionDeniedIncludingDuplicates(*requests_iter); 335 PermissionDeniedIncludingDuplicates(*requests_iter);
336 } 336 }
337 FinalizeBubble(); 337 FinalizeBubble();
338 } 338 }
339 339
340 void PermissionBubbleManager::Closing() { 340 void PermissionRequestManager::Closing() {
341 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 341 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
342 for (requests_iter = requests_.begin(); 342 for (requests_iter = requests_.begin();
343 requests_iter != requests_.end(); 343 requests_iter != requests_.end();
344 requests_iter++) { 344 requests_iter++) {
345 CancelledIncludingDuplicates(*requests_iter); 345 CancelledIncludingDuplicates(*requests_iter);
346 } 346 }
347 FinalizeBubble(); 347 FinalizeBubble();
348 } 348 }
349 349
350 void PermissionBubbleManager::ScheduleShowBubble() { 350 void PermissionRequestManager::ScheduleShowBubble() {
351 // ::ScheduleShowBubble() will be called again when the main frame will be 351 // ::ScheduleShowBubble() will be called again when the main frame will be
352 // loaded. 352 // loaded.
353 if (!main_frame_has_fully_loaded_) 353 if (!main_frame_has_fully_loaded_)
354 return; 354 return;
355 355
356 content::BrowserThread::PostTask( 356 content::BrowserThread::PostTask(
357 content::BrowserThread::UI, 357 content::BrowserThread::UI,
358 FROM_HERE, 358 FROM_HERE,
359 base::Bind(&PermissionBubbleManager::TriggerShowBubble, 359 base::Bind(&PermissionRequestManager::TriggerShowBubble,
360 weak_factory_.GetWeakPtr())); 360 weak_factory_.GetWeakPtr()));
361 } 361 }
362 362
363 void PermissionBubbleManager::TriggerShowBubble() { 363 void PermissionRequestManager::TriggerShowBubble() {
364 if (!view_) 364 if (!view_)
365 return; 365 return;
366 if (IsBubbleVisible()) 366 if (IsBubbleVisible())
367 return; 367 return;
368 if (!main_frame_has_fully_loaded_) 368 if (!main_frame_has_fully_loaded_)
369 return; 369 return;
370 if (requests_.empty() && queued_requests_.empty() && 370 if (requests_.empty() && queued_requests_.empty() &&
371 queued_frame_requests_.empty()) { 371 queued_frame_requests_.empty()) {
372 return; 372 return;
373 } 373 }
(...skipping 13 matching lines...) Expand all
387 387
388 view_->Show(requests_, accept_states_); 388 view_->Show(requests_, accept_states_);
389 PermissionUmaUtil::PermissionPromptShown(requests_); 389 PermissionUmaUtil::PermissionPromptShown(requests_);
390 NotifyBubbleAdded(); 390 NotifyBubbleAdded();
391 391
392 // If in testing mode, automatically respond to the bubble that was shown. 392 // If in testing mode, automatically respond to the bubble that was shown.
393 if (auto_response_for_test_ != NONE) 393 if (auto_response_for_test_ != NONE)
394 DoAutoResponseForTesting(); 394 DoAutoResponseForTesting();
395 } 395 }
396 396
397 void PermissionBubbleManager::FinalizeBubble() { 397 void PermissionRequestManager::FinalizeBubble() {
398 if (view_) 398 if (view_)
399 view_->Hide(); 399 view_->Hide();
400 400
401 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 401 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
402 for (requests_iter = requests_.begin(); 402 for (requests_iter = requests_.begin();
403 requests_iter != requests_.end(); 403 requests_iter != requests_.end();
404 requests_iter++) { 404 requests_iter++) {
405 RequestFinishedIncludingDuplicates(*requests_iter); 405 RequestFinishedIncludingDuplicates(*requests_iter);
406 } 406 }
407 requests_.clear(); 407 requests_.clear();
408 accept_states_.clear(); 408 accept_states_.clear();
409 if (queued_requests_.size() || queued_frame_requests_.size()) 409 if (queued_requests_.size() || queued_frame_requests_.size())
410 TriggerShowBubble(); 410 TriggerShowBubble();
411 else 411 else
412 request_url_ = GURL(); 412 request_url_ = GURL();
413 } 413 }
414 414
415 void PermissionBubbleManager::CancelPendingQueues() { 415 void PermissionRequestManager::CancelPendingQueues() {
416 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 416 std::vector<PermissionBubbleRequest*>::iterator requests_iter;
417 for (requests_iter = queued_requests_.begin(); 417 for (requests_iter = queued_requests_.begin();
418 requests_iter != queued_requests_.end(); 418 requests_iter != queued_requests_.end();
419 requests_iter++) { 419 requests_iter++) {
420 RequestFinishedIncludingDuplicates(*requests_iter); 420 RequestFinishedIncludingDuplicates(*requests_iter);
421 } 421 }
422 for (requests_iter = queued_frame_requests_.begin(); 422 for (requests_iter = queued_frame_requests_.begin();
423 requests_iter != queued_frame_requests_.end(); 423 requests_iter != queued_frame_requests_.end();
424 requests_iter++) { 424 requests_iter++) {
425 RequestFinishedIncludingDuplicates(*requests_iter); 425 RequestFinishedIncludingDuplicates(*requests_iter);
426 } 426 }
427 queued_requests_.clear(); 427 queued_requests_.clear();
428 queued_frame_requests_.clear(); 428 queued_frame_requests_.clear();
429 } 429 }
430 430
431 PermissionBubbleRequest* PermissionBubbleManager::GetExistingRequest( 431 PermissionBubbleRequest* PermissionRequestManager::GetExistingRequest(
432 PermissionBubbleRequest* request) { 432 PermissionBubbleRequest* request) {
433 for (PermissionBubbleRequest* existing_request : requests_) 433 for (PermissionBubbleRequest* existing_request : requests_)
434 if (IsMessageTextEqual(existing_request, request)) 434 if (IsMessageTextEqual(existing_request, request))
435 return existing_request; 435 return existing_request;
436 for (PermissionBubbleRequest* existing_request : queued_requests_) 436 for (PermissionBubbleRequest* existing_request : queued_requests_)
437 if (IsMessageTextEqual(existing_request, request)) 437 if (IsMessageTextEqual(existing_request, request))
438 return existing_request; 438 return existing_request;
439 for (PermissionBubbleRequest* existing_request : queued_frame_requests_) 439 for (PermissionBubbleRequest* existing_request : queued_frame_requests_)
440 if (IsMessageTextEqual(existing_request, request)) 440 if (IsMessageTextEqual(existing_request, request))
441 return existing_request; 441 return existing_request;
442 return nullptr; 442 return nullptr;
443 } 443 }
444 444
445 void PermissionBubbleManager::PermissionGrantedIncludingDuplicates( 445 void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
446 PermissionBubbleRequest* request) { 446 PermissionBubbleRequest* request) {
447 DCHECK_EQ(request, GetExistingRequest(request)) 447 DCHECK_EQ(request, GetExistingRequest(request))
448 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 448 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
449 request->PermissionGranted(); 449 request->PermissionGranted();
450 auto range = duplicate_requests_.equal_range(request); 450 auto range = duplicate_requests_.equal_range(request);
451 for (auto it = range.first; it != range.second; ++it) 451 for (auto it = range.first; it != range.second; ++it)
452 it->second->PermissionGranted(); 452 it->second->PermissionGranted();
453 } 453 }
454 void PermissionBubbleManager::PermissionDeniedIncludingDuplicates( 454 void PermissionRequestManager::PermissionDeniedIncludingDuplicates(
455 PermissionBubbleRequest* request) { 455 PermissionBubbleRequest* request) {
456 DCHECK_EQ(request, GetExistingRequest(request)) 456 DCHECK_EQ(request, GetExistingRequest(request))
457 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 457 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
458 request->PermissionDenied(); 458 request->PermissionDenied();
459 auto range = duplicate_requests_.equal_range(request); 459 auto range = duplicate_requests_.equal_range(request);
460 for (auto it = range.first; it != range.second; ++it) 460 for (auto it = range.first; it != range.second; ++it)
461 it->second->PermissionDenied(); 461 it->second->PermissionDenied();
462 } 462 }
463 void PermissionBubbleManager::CancelledIncludingDuplicates( 463 void PermissionRequestManager::CancelledIncludingDuplicates(
464 PermissionBubbleRequest* request) { 464 PermissionBubbleRequest* request) {
465 DCHECK_EQ(request, GetExistingRequest(request)) 465 DCHECK_EQ(request, GetExistingRequest(request))
466 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 466 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
467 request->Cancelled(); 467 request->Cancelled();
468 auto range = duplicate_requests_.equal_range(request); 468 auto range = duplicate_requests_.equal_range(request);
469 for (auto it = range.first; it != range.second; ++it) 469 for (auto it = range.first; it != range.second; ++it)
470 it->second->Cancelled(); 470 it->second->Cancelled();
471 } 471 }
472 void PermissionBubbleManager::RequestFinishedIncludingDuplicates( 472 void PermissionRequestManager::RequestFinishedIncludingDuplicates(
473 PermissionBubbleRequest* request) { 473 PermissionBubbleRequest* request) {
474 // We can't call GetExistingRequest here, because other entries in requests_, 474 // We can't call GetExistingRequest here, because other entries in requests_,
475 // queued_requests_ or queued_frame_requests_ might already have been deleted. 475 // queued_requests_ or queued_frame_requests_ might already have been deleted.
476 DCHECK_EQ(1, std::count(requests_.begin(), requests_.end(), request) + 476 DCHECK_EQ(1, std::count(requests_.begin(), requests_.end(), request) +
477 std::count(queued_requests_.begin(), queued_requests_.end(), 477 std::count(queued_requests_.begin(), queued_requests_.end(),
478 request) + 478 request) +
479 std::count(queued_frame_requests_.begin(), 479 std::count(queued_frame_requests_.begin(),
480 queued_frame_requests_.end(), request)) 480 queued_frame_requests_.end(), request))
481 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 481 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
482 request->RequestFinished(); 482 request->RequestFinished();
483 // Beyond this point, |request| has probably been deleted. 483 // Beyond this point, |request| has probably been deleted.
484 auto range = duplicate_requests_.equal_range(request); 484 auto range = duplicate_requests_.equal_range(request);
485 for (auto it = range.first; it != range.second; ++it) 485 for (auto it = range.first; it != range.second; ++it)
486 it->second->RequestFinished(); 486 it->second->RequestFinished();
487 // Additionally, we can now remove the duplicates. 487 // Additionally, we can now remove the duplicates.
488 duplicate_requests_.erase(request); 488 duplicate_requests_.erase(request);
489 } 489 }
490 490
491 void PermissionBubbleManager::AddObserver(Observer* observer) { 491 void PermissionRequestManager::AddObserver(Observer* observer) {
492 observer_list_.AddObserver(observer); 492 observer_list_.AddObserver(observer);
493 } 493 }
494 494
495 void PermissionBubbleManager::RemoveObserver(Observer* observer) { 495 void PermissionRequestManager::RemoveObserver(Observer* observer) {
496 observer_list_.RemoveObserver(observer); 496 observer_list_.RemoveObserver(observer);
497 } 497 }
498 498
499 void PermissionBubbleManager::NotifyBubbleAdded() { 499 void PermissionRequestManager::NotifyBubbleAdded() {
500 FOR_EACH_OBSERVER(Observer, observer_list_, OnBubbleAdded()); 500 FOR_EACH_OBSERVER(Observer, observer_list_, OnBubbleAdded());
501 } 501 }
502 502
503 void PermissionBubbleManager::DoAutoResponseForTesting() { 503 void PermissionRequestManager::DoAutoResponseForTesting() {
504 switch (auto_response_for_test_) { 504 switch (auto_response_for_test_) {
505 case ACCEPT_ALL: 505 case ACCEPT_ALL:
506 Accept(); 506 Accept();
507 break; 507 break;
508 case DENY_ALL: 508 case DENY_ALL:
509 Deny(); 509 Deny();
510 break; 510 break;
511 case DISMISS: 511 case DISMISS:
512 Closing(); 512 Closing();
513 break; 513 break;
514 case NONE: 514 case NONE:
515 NOTREACHED(); 515 NOTREACHED();
516 } 516 }
517 } 517 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698