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

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

Issue 1689513002: [Abandoned] rename PermissionBubbleRequest to PermissionRequest. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission-request-manager-rename
Patch Set: browser_tests compiles Created 4 years, 7 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/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/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_request.h"
12 #include "chrome/browser/permissions/permission_uma_util.h" 13 #include "chrome/browser/permissions/permission_uma_util.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"
16 #include "content/public/browser/navigation_details.h" 16 #include "content/public/browser/navigation_details.h"
17 #include "content/public/browser/user_metrics.h" 17 #include "content/public/browser/user_metrics.h"
18 #include "url/origin.h" 18 #include "url/origin.h"
19 19
20 #if !defined(OS_ANDROID) 20 #if !defined(OS_ANDROID)
21 #include "chrome/browser/ui/browser_finder.h" 21 #include "chrome/browser/ui/browser_finder.h"
22 #endif 22 #endif
23 23
24 namespace { 24 namespace {
25 25
26 class CancelledRequest : public PermissionBubbleRequest { 26 class CancelledRequest : public PermissionRequest {
27 public: 27 public:
28 explicit CancelledRequest(PermissionBubbleRequest* cancelled) 28 explicit CancelledRequest(PermissionRequest* cancelled)
29 : icon_(cancelled->GetIconId()), 29 : icon_(cancelled->GetIconId()),
30 message_text_(cancelled->GetMessageText()), 30 message_text_(cancelled->GetMessageText()),
31 message_fragment_(cancelled->GetMessageTextFragment()), 31 message_fragment_(cancelled->GetMessageTextFragment()),
32 origin_(cancelled->GetOrigin()) {} 32 origin_(cancelled->GetOrigin()) {}
33 ~CancelledRequest() override {} 33 ~CancelledRequest() override {}
34 34
35 int GetIconId() const override { return icon_; } 35 int GetIconId() const override { return icon_; }
36 base::string16 GetMessageText() const override { return message_text_; } 36 base::string16 GetMessageText() const override { return message_text_; }
37 base::string16 GetMessageTextFragment() const override { 37 base::string16 GetMessageTextFragment() const override {
38 return message_fragment_; 38 return message_fragment_;
39 } 39 }
40 GURL GetOrigin() const override { return origin_; } 40 GURL GetOrigin() const override { return origin_; }
41 41
42 // These are all no-ops since the placeholder is non-forwarding. 42 // These are all no-ops since the placeholder is non-forwarding.
43 void PermissionGranted() override {} 43 void PermissionGranted() override {}
44 void PermissionDenied() override {} 44 void PermissionDenied() override {}
45 void Cancelled() override {} 45 void Cancelled() override {}
46 46
47 void RequestFinished() override { delete this; } 47 void RequestFinished() override { delete this; }
48 48
49 private: 49 private:
50 int icon_; 50 int icon_;
51 base::string16 message_text_; 51 base::string16 message_text_;
52 base::string16 message_fragment_; 52 base::string16 message_fragment_;
53 GURL origin_; 53 GURL origin_;
54 }; 54 };
55 55
56 bool IsMessageTextEqual(PermissionBubbleRequest* a, 56 bool IsMessageTextEqual(PermissionRequest* a,
57 PermissionBubbleRequest* b) { 57 PermissionRequest* b) {
58 if (a == b) 58 if (a == b)
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
(...skipping 19 matching lines...) Expand all
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 PermissionRequestManager::~PermissionRequestManager() { 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 (PermissionRequest* request : requests_)
98 request->RequestFinished(); 98 request->RequestFinished();
99 for (PermissionBubbleRequest* request : queued_requests_) 99 for (PermissionRequest* request : queued_requests_)
100 request->RequestFinished(); 100 request->RequestFinished();
101 for (PermissionBubbleRequest* request : queued_frame_requests_) 101 for (PermissionRequest* 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 PermissionRequestManager::AddRequest(PermissionBubbleRequest* request) { 107 void PermissionRequestManager::AddRequest(PermissionRequest* request) {
108 // TODO(mlamouri): change the UMA to no longer mention bubbles.
108 content::RecordAction(base::UserMetricsAction("PermissionBubbleRequest")); 109 content::RecordAction(base::UserMetricsAction("PermissionBubbleRequest"));
110
109 // TODO(gbillock): is there a race between an early request on a 111 // 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 112 // newly-navigated page and the to-be-cleaned-up requests on the previous
111 // page? We should maybe listen to DidStartNavigationToPendingEntry (and 113 // page? We should maybe listen to DidStartNavigationToPendingEntry (and
112 // any other renderer-side nav initiations?). Double-check this for 114 // any other renderer-side nav initiations?). Double-check this for
113 // correct behavior on interstitials -- we probably want to basically queue 115 // correct behavior on interstitials -- we probably want to basically queue
114 // any request for which GetVisibleURL != GetLastCommittedURL. 116 // any request for which GetVisibleURL != GetLastCommittedURL.
115 request_url_ = web_contents()->GetLastCommittedURL(); 117 request_url_ = web_contents()->GetLastCommittedURL();
116 bool is_main_frame = url::Origin(request_url_) 118 bool is_main_frame = url::Origin(request_url_)
117 .IsSameOriginWith(url::Origin(request->GetOrigin())); 119 .IsSameOriginWith(url::Origin(request->GetOrigin()));
118 120
119 // Don't re-add an existing request or one with a duplicate text request. 121 // Don't re-add an existing request or one with a duplicate text request.
120 PermissionBubbleRequest* existing_request = GetExistingRequest(request); 122 PermissionRequest* existing_request = GetExistingRequest(request);
121 if (existing_request) { 123 if (existing_request) {
122 // |request| is a duplicate. Add it to |duplicate_requests_| unless it's the 124 // |request| is a duplicate. Add it to |duplicate_requests_| unless it's the
123 // same object as |existing_request| or an existing duplicate. 125 // same object as |existing_request| or an existing duplicate.
124 if (request == existing_request) 126 if (request == existing_request)
125 return; 127 return;
126 auto range = duplicate_requests_.equal_range(existing_request); 128 auto range = duplicate_requests_.equal_range(existing_request);
127 for (auto it = range.first; it != range.second; ++it) { 129 for (auto it = range.first; it != range.second; ++it) {
128 if (request == it->second) 130 if (request == it->second)
129 return; 131 return;
130 } 132 }
(...skipping 20 matching lines...) Expand all
151 accept_states_.push_back(true); 153 accept_states_.push_back(true);
152 } else { 154 } else {
153 content::RecordAction( 155 content::RecordAction(
154 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued")); 156 base::UserMetricsAction("PermissionBubbleIFrameRequestQueued"));
155 queued_frame_requests_.push_back(request); 157 queued_frame_requests_.push_back(request);
156 } 158 }
157 159
158 ScheduleShowBubble(); 160 ScheduleShowBubble();
159 } 161 }
160 162
161 void PermissionRequestManager::CancelRequest(PermissionBubbleRequest* request) { 163 void PermissionRequestManager::CancelRequest(PermissionRequest* request) {
162 // First look in the queued requests, where we can simply finish the request 164 // First look in the queued requests, where we can simply finish the request
163 // and go on. 165 // and go on.
164 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 166 std::vector<PermissionRequest*>::iterator requests_iter;
165 for (requests_iter = queued_requests_.begin(); 167 for (requests_iter = queued_requests_.begin();
166 requests_iter != queued_requests_.end(); 168 requests_iter != queued_requests_.end();
167 requests_iter++) { 169 requests_iter++) {
168 if (*requests_iter == request) { 170 if (*requests_iter == request) {
169 RequestFinishedIncludingDuplicates(*requests_iter); 171 RequestFinishedIncludingDuplicates(*requests_iter);
170 queued_requests_.erase(requests_iter); 172 queued_requests_.erase(requests_iter);
171 return; 173 return;
172 } 174 }
173 } 175 }
174 for (requests_iter = queued_frame_requests_.begin(); 176 for (requests_iter = queued_frame_requests_.begin();
(...skipping 22 matching lines...) Expand all
197 199
198 if (IsBubbleVisible()) { 200 if (IsBubbleVisible()) {
199 view_->Hide(); 201 view_->Hide();
200 // Will redraw the bubble if it is being shown. 202 // Will redraw the bubble if it is being shown.
201 TriggerShowBubble(); 203 TriggerShowBubble();
202 } 204 }
203 return; 205 return;
204 } 206 }
205 207
206 // Cancel the existing request and replace it with a dummy. 208 // Cancel the existing request and replace it with a dummy.
207 PermissionBubbleRequest* cancelled_request = 209 PermissionRequest* cancelled_request =
208 new CancelledRequest(*requests_iter); 210 new CancelledRequest(*requests_iter);
209 RequestFinishedIncludingDuplicates(*requests_iter); 211 RequestFinishedIncludingDuplicates(*requests_iter);
210 *requests_iter = cancelled_request; 212 *requests_iter = cancelled_request;
211 return; 213 return;
212 } 214 }
213 215
214 // Since |request| wasn't found in queued_requests_, queued_frame_requests_ or 216 // Since |request| wasn't found in queued_requests_, queued_frame_requests_ or
215 // requests_ it must have been marked as a duplicate. We can't search 217 // requests_ it must have been marked as a duplicate. We can't search
216 // duplicate_requests_ by value, so instead use GetExistingRequest to find the 218 // duplicate_requests_ by value, so instead use GetExistingRequest to find the
217 // key (request it was duped against), and iterate through duplicates of that. 219 // key (request it was duped against), and iterate through duplicates of that.
218 PermissionBubbleRequest* existing_request = GetExistingRequest(request); 220 PermissionRequest* existing_request = GetExistingRequest(request);
219 auto range = duplicate_requests_.equal_range(existing_request); 221 auto range = duplicate_requests_.equal_range(existing_request);
220 for (auto it = range.first; it != range.second; ++it) { 222 for (auto it = range.first; it != range.second; ++it) {
221 if (request == it->second) { 223 if (request == it->second) {
222 it->second->RequestFinished(); 224 it->second->RequestFinished();
223 duplicate_requests_.erase(it); 225 duplicate_requests_.erase(it);
224 return; 226 return;
225 } 227 }
226 } 228 }
227 229
228 NOTREACHED(); // Callers should not cancel requests that are not pending. 230 NOTREACHED(); // Callers should not cancel requests that are not pending.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 // That was the equivalent of "delete this". This object is now destroyed; 308 // That was the equivalent of "delete this". This object is now destroyed;
307 // returning from this function is the only safe thing to do. 309 // returning from this function is the only safe thing to do.
308 } 310 }
309 311
310 void PermissionRequestManager::ToggleAccept(int request_index, bool new_value) { 312 void PermissionRequestManager::ToggleAccept(int request_index, bool new_value) {
311 DCHECK(request_index < static_cast<int>(accept_states_.size())); 313 DCHECK(request_index < static_cast<int>(accept_states_.size()));
312 accept_states_[request_index] = new_value; 314 accept_states_[request_index] = new_value;
313 } 315 }
314 316
315 void PermissionRequestManager::Accept() { 317 void PermissionRequestManager::Accept() {
316 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 318 std::vector<PermissionRequest*>::iterator requests_iter;
317 std::vector<bool>::iterator accepts_iter = accept_states_.begin(); 319 std::vector<bool>::iterator accepts_iter = accept_states_.begin();
318 for (requests_iter = requests_.begin(), accepts_iter = accept_states_.begin(); 320 for (requests_iter = requests_.begin(), accepts_iter = accept_states_.begin();
319 requests_iter != requests_.end(); 321 requests_iter != requests_.end();
320 requests_iter++, accepts_iter++) { 322 requests_iter++, accepts_iter++) {
321 if (*accepts_iter) { 323 if (*accepts_iter) {
322 PermissionGrantedIncludingDuplicates(*requests_iter); 324 PermissionGrantedIncludingDuplicates(*requests_iter);
323 } else { 325 } else {
324 PermissionDeniedIncludingDuplicates(*requests_iter); 326 PermissionDeniedIncludingDuplicates(*requests_iter);
325 } 327 }
326 } 328 }
327 FinalizeBubble(); 329 FinalizeBubble();
328 } 330 }
329 331
330 void PermissionRequestManager::Deny() { 332 void PermissionRequestManager::Deny() {
331 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 333 std::vector<PermissionRequest*>::iterator requests_iter;
332 for (requests_iter = requests_.begin(); 334 for (requests_iter = requests_.begin();
333 requests_iter != requests_.end(); 335 requests_iter != requests_.end();
334 requests_iter++) { 336 requests_iter++) {
335 PermissionDeniedIncludingDuplicates(*requests_iter); 337 PermissionDeniedIncludingDuplicates(*requests_iter);
336 } 338 }
337 FinalizeBubble(); 339 FinalizeBubble();
338 } 340 }
339 341
340 void PermissionRequestManager::Closing() { 342 void PermissionRequestManager::Closing() {
341 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 343 std::vector<PermissionRequest*>::iterator requests_iter;
342 for (requests_iter = requests_.begin(); 344 for (requests_iter = requests_.begin();
343 requests_iter != requests_.end(); 345 requests_iter != requests_.end();
344 requests_iter++) { 346 requests_iter++) {
345 CancelledIncludingDuplicates(*requests_iter); 347 CancelledIncludingDuplicates(*requests_iter);
346 } 348 }
347 FinalizeBubble(); 349 FinalizeBubble();
348 } 350 }
349 351
350 void PermissionRequestManager::ScheduleShowBubble() { 352 void PermissionRequestManager::ScheduleShowBubble() {
351 // ::ScheduleShowBubble() will be called again when the main frame will be 353 // ::ScheduleShowBubble() will be called again when the main frame will be
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
391 393
392 // If in testing mode, automatically respond to the bubble that was shown. 394 // If in testing mode, automatically respond to the bubble that was shown.
393 if (auto_response_for_test_ != NONE) 395 if (auto_response_for_test_ != NONE)
394 DoAutoResponseForTesting(); 396 DoAutoResponseForTesting();
395 } 397 }
396 398
397 void PermissionRequestManager::FinalizeBubble() { 399 void PermissionRequestManager::FinalizeBubble() {
398 if (view_) 400 if (view_)
399 view_->Hide(); 401 view_->Hide();
400 402
401 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 403 std::vector<PermissionRequest*>::iterator requests_iter;
402 for (requests_iter = requests_.begin(); 404 for (requests_iter = requests_.begin();
403 requests_iter != requests_.end(); 405 requests_iter != requests_.end();
404 requests_iter++) { 406 requests_iter++) {
405 RequestFinishedIncludingDuplicates(*requests_iter); 407 RequestFinishedIncludingDuplicates(*requests_iter);
406 } 408 }
407 requests_.clear(); 409 requests_.clear();
408 accept_states_.clear(); 410 accept_states_.clear();
409 if (queued_requests_.size() || queued_frame_requests_.size()) 411 if (queued_requests_.size() || queued_frame_requests_.size())
410 TriggerShowBubble(); 412 TriggerShowBubble();
411 else 413 else
412 request_url_ = GURL(); 414 request_url_ = GURL();
413 } 415 }
414 416
415 void PermissionRequestManager::CancelPendingQueues() { 417 void PermissionRequestManager::CancelPendingQueues() {
416 std::vector<PermissionBubbleRequest*>::iterator requests_iter; 418 std::vector<PermissionRequest*>::iterator requests_iter;
417 for (requests_iter = queued_requests_.begin(); 419 for (requests_iter = queued_requests_.begin();
418 requests_iter != queued_requests_.end(); 420 requests_iter != queued_requests_.end();
419 requests_iter++) { 421 requests_iter++) {
420 RequestFinishedIncludingDuplicates(*requests_iter); 422 RequestFinishedIncludingDuplicates(*requests_iter);
421 } 423 }
422 for (requests_iter = queued_frame_requests_.begin(); 424 for (requests_iter = queued_frame_requests_.begin();
423 requests_iter != queued_frame_requests_.end(); 425 requests_iter != queued_frame_requests_.end();
424 requests_iter++) { 426 requests_iter++) {
425 RequestFinishedIncludingDuplicates(*requests_iter); 427 RequestFinishedIncludingDuplicates(*requests_iter);
426 } 428 }
427 queued_requests_.clear(); 429 queued_requests_.clear();
428 queued_frame_requests_.clear(); 430 queued_frame_requests_.clear();
429 } 431 }
430 432
431 PermissionBubbleRequest* PermissionRequestManager::GetExistingRequest( 433 PermissionRequest* PermissionRequestManager::GetExistingRequest(
432 PermissionBubbleRequest* request) { 434 PermissionRequest* request) {
433 for (PermissionBubbleRequest* existing_request : requests_) 435 for (PermissionRequest* existing_request : requests_)
434 if (IsMessageTextEqual(existing_request, request)) 436 if (IsMessageTextEqual(existing_request, request))
435 return existing_request; 437 return existing_request;
436 for (PermissionBubbleRequest* existing_request : queued_requests_) 438 for (PermissionRequest* existing_request : queued_requests_)
437 if (IsMessageTextEqual(existing_request, request)) 439 if (IsMessageTextEqual(existing_request, request))
438 return existing_request; 440 return existing_request;
439 for (PermissionBubbleRequest* existing_request : queued_frame_requests_) 441 for (PermissionRequest* existing_request : queued_frame_requests_)
440 if (IsMessageTextEqual(existing_request, request)) 442 if (IsMessageTextEqual(existing_request, request))
441 return existing_request; 443 return existing_request;
442 return nullptr; 444 return nullptr;
443 } 445 }
444 446
445 void PermissionRequestManager::PermissionGrantedIncludingDuplicates( 447 void PermissionRequestManager::PermissionGrantedIncludingDuplicates(
446 PermissionBubbleRequest* request) { 448 PermissionRequest* request) {
447 DCHECK_EQ(request, GetExistingRequest(request)) 449 DCHECK_EQ(request, GetExistingRequest(request))
448 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 450 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
449 request->PermissionGranted(); 451 request->PermissionGranted();
450 auto range = duplicate_requests_.equal_range(request); 452 auto range = duplicate_requests_.equal_range(request);
451 for (auto it = range.first; it != range.second; ++it) 453 for (auto it = range.first; it != range.second; ++it)
452 it->second->PermissionGranted(); 454 it->second->PermissionGranted();
453 } 455 }
454 void PermissionRequestManager::PermissionDeniedIncludingDuplicates( 456 void PermissionRequestManager::PermissionDeniedIncludingDuplicates(
455 PermissionBubbleRequest* request) { 457 PermissionRequest* request) {
456 DCHECK_EQ(request, GetExistingRequest(request)) 458 DCHECK_EQ(request, GetExistingRequest(request))
457 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 459 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
458 request->PermissionDenied(); 460 request->PermissionDenied();
459 auto range = duplicate_requests_.equal_range(request); 461 auto range = duplicate_requests_.equal_range(request);
460 for (auto it = range.first; it != range.second; ++it) 462 for (auto it = range.first; it != range.second; ++it)
461 it->second->PermissionDenied(); 463 it->second->PermissionDenied();
462 } 464 }
463 void PermissionRequestManager::CancelledIncludingDuplicates( 465 void PermissionRequestManager::CancelledIncludingDuplicates(
464 PermissionBubbleRequest* request) { 466 PermissionRequest* request) {
465 DCHECK_EQ(request, GetExistingRequest(request)) 467 DCHECK_EQ(request, GetExistingRequest(request))
466 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 468 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
467 request->Cancelled(); 469 request->Cancelled();
468 auto range = duplicate_requests_.equal_range(request); 470 auto range = duplicate_requests_.equal_range(request);
469 for (auto it = range.first; it != range.second; ++it) 471 for (auto it = range.first; it != range.second; ++it)
470 it->second->Cancelled(); 472 it->second->Cancelled();
471 } 473 }
472 void PermissionRequestManager::RequestFinishedIncludingDuplicates( 474 void PermissionRequestManager::RequestFinishedIncludingDuplicates(
473 PermissionBubbleRequest* request) { 475 PermissionRequest* request) {
474 // We can't call GetExistingRequest here, because other entries in requests_, 476 // We can't call GetExistingRequest here, because other entries in requests_,
475 // queued_requests_ or queued_frame_requests_ might already have been deleted. 477 // queued_requests_ or queued_frame_requests_ might already have been deleted.
476 DCHECK_EQ(1, std::count(requests_.begin(), requests_.end(), request) + 478 DCHECK_EQ(1, std::count(requests_.begin(), requests_.end(), request) +
477 std::count(queued_requests_.begin(), queued_requests_.end(), 479 std::count(queued_requests_.begin(), queued_requests_.end(),
478 request) + 480 request) +
479 std::count(queued_frame_requests_.begin(), 481 std::count(queued_frame_requests_.begin(),
480 queued_frame_requests_.end(), request)) 482 queued_frame_requests_.end(), request))
481 << "Only requests in [queued_[frame_]]requests_ can have duplicates"; 483 << "Only requests in [queued_[frame_]]requests_ can have duplicates";
482 request->RequestFinished(); 484 request->RequestFinished();
483 // Beyond this point, |request| has probably been deleted. 485 // Beyond this point, |request| has probably been deleted.
(...skipping 24 matching lines...) Expand all
508 case DENY_ALL: 510 case DENY_ALL:
509 Deny(); 511 Deny();
510 break; 512 break;
511 case DISMISS: 513 case DISMISS:
512 Closing(); 514 Closing();
513 break; 515 break;
514 case NONE: 516 case NONE:
515 NOTREACHED(); 517 NOTREACHED();
516 } 518 }
517 } 519 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698