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

Side by Side Diff: chrome/browser/ui/website_settings/permission_bubble_manager_unittest.cc

Issue 2081103002: Rename PermissionBubbleManager to PermissionRequestManager (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review comments Created 4 years, 5 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include <stddef.h>
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/run_loop.h"
10 #include "base/strings/utf_string_conversions.h"
11 #include "base/test/histogram_tester.h"
12 #include "chrome/browser/permissions/permission_uma_util.h"
13 #include "chrome/browser/ui/website_settings/mock_permission_bubble_factory.h"
14 #include "chrome/browser/ui/website_settings/mock_permission_bubble_request.h"
15 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
16 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
17 #include "chrome/common/chrome_switches.h"
18 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
19 #include "testing/gtest/include/gtest/gtest.h"
20
21 class PermissionBubbleManagerTest : public ChromeRenderViewHostTestHarness {
22 public:
23 PermissionBubbleManagerTest()
24 : ChromeRenderViewHostTestHarness(),
25 request1_("test1", PermissionBubbleType::QUOTA),
26 request2_("test2", PermissionBubbleType::DOWNLOAD),
27 iframe_request_same_domain_("iframe",
28 GURL("http://www.google.com/some/url")),
29 iframe_request_other_domain_("iframe",
30 GURL("http://www.youtube.com")) {}
31 ~PermissionBubbleManagerTest() override {}
32
33 void SetUp() override {
34 ChromeRenderViewHostTestHarness::SetUp();
35 SetContents(CreateTestWebContents());
36 NavigateAndCommit(GURL("http://www.google.com"));
37
38 manager_.reset(new PermissionBubbleManager(web_contents()));
39 view_factory_.reset(new MockPermissionBubbleFactory(manager_.get()));
40 }
41
42 void TearDown() override {
43 view_factory_.reset();
44 manager_.reset();
45 ChromeRenderViewHostTestHarness::TearDown();
46 }
47
48 void ToggleAccept(int index, bool value) {
49 manager_->ToggleAccept(index, value);
50 }
51
52 void Accept() {
53 manager_->Accept();
54 }
55
56 void Deny() {
57 manager_->Deny();
58 }
59
60 void Closing() {
61 manager_->Closing();
62 }
63
64 void WaitForFrameLoad() {
65 // PermissionBubbleManager ignores all parameters. Yay?
66 manager_->DocumentLoadedInFrame(NULL);
67 base::RunLoop().RunUntilIdle();
68 }
69
70 void WaitForCoalescing() {
71 manager_->DocumentOnLoadCompletedInMainFrame();
72 base::RunLoop().RunUntilIdle();
73 }
74
75 void MockTabSwitchAway() { manager_->HideBubble(); }
76
77 void MockTabSwitchBack() { manager_->DisplayPendingRequests(); }
78
79 virtual void NavigationEntryCommitted(
80 const content::LoadCommittedDetails& details) {
81 manager_->NavigationEntryCommitted(details);
82 }
83
84 protected:
85 MockPermissionBubbleRequest request1_;
86 MockPermissionBubbleRequest request2_;
87 MockPermissionBubbleRequest iframe_request_same_domain_;
88 MockPermissionBubbleRequest iframe_request_other_domain_;
89 std::unique_ptr<PermissionBubbleManager> manager_;
90 std::unique_ptr<MockPermissionBubbleFactory> view_factory_;
91 };
92
93 TEST_F(PermissionBubbleManagerTest, SingleRequest) {
94 manager_->AddRequest(&request1_);
95 manager_->DisplayPendingRequests();
96 WaitForCoalescing();
97
98 EXPECT_TRUE(view_factory_->is_visible());
99 ASSERT_EQ(view_factory_->request_count(), 1);
100
101 ToggleAccept(0, true);
102 Accept();
103 EXPECT_TRUE(request1_.granted());
104 }
105
106 TEST_F(PermissionBubbleManagerTest, SingleRequestViewFirst) {
107 manager_->DisplayPendingRequests();
108 manager_->AddRequest(&request1_);
109 WaitForCoalescing();
110
111 EXPECT_TRUE(view_factory_->is_visible());
112 ASSERT_EQ(view_factory_->request_count(), 1);
113
114 ToggleAccept(0, true);
115 Accept();
116 EXPECT_TRUE(request1_.granted());
117 }
118
119 TEST_F(PermissionBubbleManagerTest, TwoRequests) {
120 manager_->AddRequest(&request1_);
121 manager_->AddRequest(&request2_);
122 manager_->DisplayPendingRequests();
123 WaitForCoalescing();
124
125 EXPECT_TRUE(view_factory_->is_visible());
126 ASSERT_EQ(view_factory_->request_count(), 2);
127
128 ToggleAccept(0, true);
129 ToggleAccept(1, false);
130 Accept();
131 EXPECT_TRUE(request1_.granted());
132 EXPECT_FALSE(request2_.granted());
133 }
134
135 TEST_F(PermissionBubbleManagerTest, TwoRequestsTabSwitch) {
136 manager_->AddRequest(&request1_);
137 manager_->AddRequest(&request2_);
138 manager_->DisplayPendingRequests();
139 WaitForCoalescing();
140
141 EXPECT_TRUE(view_factory_->is_visible());
142 ASSERT_EQ(view_factory_->request_count(), 2);
143
144 ToggleAccept(0, true);
145 ToggleAccept(1, false);
146
147 MockTabSwitchAway();
148 EXPECT_FALSE(view_factory_->is_visible());
149
150 MockTabSwitchBack();
151 WaitForCoalescing();
152 EXPECT_TRUE(view_factory_->is_visible());
153 ASSERT_EQ(view_factory_->request_count(), 2);
154
155 Accept();
156 EXPECT_TRUE(request1_.granted());
157 EXPECT_FALSE(request2_.granted());
158 }
159
160 TEST_F(PermissionBubbleManagerTest, NoRequests) {
161 manager_->DisplayPendingRequests();
162 WaitForCoalescing();
163 EXPECT_FALSE(view_factory_->is_visible());
164 }
165
166 TEST_F(PermissionBubbleManagerTest, NoView) {
167 manager_->AddRequest(&request1_);
168 // Don't display the pending requests.
169 WaitForCoalescing();
170 EXPECT_FALSE(view_factory_->is_visible());
171 }
172
173 TEST_F(PermissionBubbleManagerTest, TwoRequestsCoalesce) {
174 manager_->DisplayPendingRequests();
175 manager_->AddRequest(&request1_);
176 manager_->AddRequest(&request2_);
177 EXPECT_FALSE(view_factory_->is_visible());
178 WaitForCoalescing();
179
180 EXPECT_TRUE(view_factory_->is_visible());
181 ASSERT_EQ(view_factory_->request_count(), 2);
182 }
183
184 TEST_F(PermissionBubbleManagerTest, TwoRequestsDoNotCoalesce) {
185 manager_->DisplayPendingRequests();
186 manager_->AddRequest(&request1_);
187 WaitForCoalescing();
188 manager_->AddRequest(&request2_);
189
190 EXPECT_TRUE(view_factory_->is_visible());
191 ASSERT_EQ(view_factory_->request_count(), 1);
192 }
193
194 TEST_F(PermissionBubbleManagerTest, TwoRequestsShownInTwoBubbles) {
195 manager_->DisplayPendingRequests();
196 manager_->AddRequest(&request1_);
197 WaitForCoalescing();
198 manager_->AddRequest(&request2_);
199
200 EXPECT_TRUE(view_factory_->is_visible());
201 ASSERT_EQ(view_factory_->request_count(), 1);
202
203 Accept();
204 WaitForCoalescing();
205
206 EXPECT_TRUE(view_factory_->is_visible());
207 ASSERT_EQ(view_factory_->request_count(), 1);
208 ASSERT_EQ(view_factory_->show_count(), 2);
209 }
210
211 TEST_F(PermissionBubbleManagerTest, TestAddDuplicateRequest) {
212 manager_->DisplayPendingRequests();
213 manager_->AddRequest(&request1_);
214 manager_->AddRequest(&request2_);
215 manager_->AddRequest(&request1_);
216
217 WaitForCoalescing();
218 EXPECT_TRUE(view_factory_->is_visible());
219 ASSERT_EQ(view_factory_->request_count(), 2);
220 }
221
222 TEST_F(PermissionBubbleManagerTest, SequentialRequests) {
223 manager_->DisplayPendingRequests();
224 manager_->AddRequest(&request1_);
225 WaitForCoalescing();
226 EXPECT_TRUE(view_factory_->is_visible());
227
228 Accept();
229 EXPECT_TRUE(request1_.granted());
230
231 EXPECT_FALSE(view_factory_->is_visible());
232
233 manager_->AddRequest(&request2_);
234 WaitForCoalescing();
235 EXPECT_TRUE(view_factory_->is_visible());
236 Accept();
237 EXPECT_FALSE(view_factory_->is_visible());
238 EXPECT_TRUE(request2_.granted());
239 }
240
241 TEST_F(PermissionBubbleManagerTest, SameRequestRejected) {
242 manager_->DisplayPendingRequests();
243 manager_->AddRequest(&request1_);
244 manager_->AddRequest(&request1_);
245 EXPECT_FALSE(request1_.finished());
246
247 WaitForCoalescing();
248 EXPECT_TRUE(view_factory_->is_visible());
249 ASSERT_EQ(view_factory_->request_count(), 1);
250 }
251
252 TEST_F(PermissionBubbleManagerTest, DuplicateRequestCancelled) {
253 manager_->DisplayPendingRequests();
254 manager_->AddRequest(&request1_);
255 MockPermissionBubbleRequest dupe_request("test1");
256 manager_->AddRequest(&dupe_request);
257 EXPECT_FALSE(dupe_request.finished());
258 EXPECT_FALSE(request1_.finished());
259 manager_->CancelRequest(&request1_);
260 EXPECT_TRUE(dupe_request.finished());
261 EXPECT_TRUE(request1_.finished());
262 }
263
264 TEST_F(PermissionBubbleManagerTest, DuplicateQueuedRequest) {
265 manager_->DisplayPendingRequests();
266 manager_->AddRequest(&request1_);
267 WaitForCoalescing();
268 manager_->AddRequest(&request2_);
269
270 MockPermissionBubbleRequest dupe_request("test1");
271 manager_->AddRequest(&dupe_request);
272 EXPECT_FALSE(dupe_request.finished());
273 EXPECT_FALSE(request1_.finished());
274
275 MockPermissionBubbleRequest dupe_request2("test2");
276 manager_->AddRequest(&dupe_request2);
277 EXPECT_FALSE(dupe_request2.finished());
278 EXPECT_FALSE(request2_.finished());
279
280 manager_->CancelRequest(&request1_);
281 EXPECT_TRUE(dupe_request.finished());
282 EXPECT_TRUE(request1_.finished());
283
284 manager_->CancelRequest(&request2_);
285 EXPECT_TRUE(dupe_request2.finished());
286 EXPECT_TRUE(request2_.finished());
287 }
288
289 TEST_F(PermissionBubbleManagerTest, ForgetRequestsOnPageNavigation) {
290 manager_->DisplayPendingRequests();
291 manager_->AddRequest(&request1_);
292 WaitForCoalescing();
293 manager_->AddRequest(&request2_);
294 manager_->AddRequest(&iframe_request_other_domain_);
295
296 EXPECT_TRUE(view_factory_->is_visible());
297 ASSERT_EQ(view_factory_->request_count(), 1);
298
299 NavigateAndCommit(GURL("http://www2.google.com/"));
300 WaitForCoalescing();
301
302 EXPECT_FALSE(view_factory_->is_visible());
303 EXPECT_TRUE(request1_.finished());
304 EXPECT_TRUE(request2_.finished());
305 EXPECT_TRUE(iframe_request_other_domain_.finished());
306 }
307
308 TEST_F(PermissionBubbleManagerTest, TestCancelQueued) {
309 manager_->AddRequest(&request1_);
310 EXPECT_FALSE(view_factory_->is_visible());
311
312 manager_->CancelRequest(&request1_);
313 EXPECT_TRUE(request1_.finished());
314 EXPECT_FALSE(view_factory_->is_visible());
315 manager_->DisplayPendingRequests();
316 EXPECT_FALSE(view_factory_->is_visible());
317
318 manager_->AddRequest(&request2_);
319 WaitForCoalescing();
320 EXPECT_TRUE(view_factory_->is_visible());
321 ASSERT_EQ(view_factory_->request_count(), 1);
322 }
323
324 TEST_F(PermissionBubbleManagerTest, TestCancelWhileDialogShown) {
325 manager_->DisplayPendingRequests();
326 manager_->AddRequest(&request1_);
327 WaitForCoalescing();
328
329 view_factory_->SetCanUpdateUi(true);
330 EXPECT_TRUE(view_factory_->is_visible());
331 EXPECT_FALSE(request1_.finished());
332 manager_->CancelRequest(&request1_);
333 WaitForCoalescing();
334 EXPECT_TRUE(request1_.finished());
335 EXPECT_FALSE(view_factory_->is_visible());
336 }
337
338 TEST_F(PermissionBubbleManagerTest, TestCancelWhileDialogShownNoUpdate) {
339 manager_->DisplayPendingRequests();
340 view_factory_->SetCanUpdateUi(false);
341 manager_->AddRequest(&request1_);
342 WaitForCoalescing();
343 view_factory_->SetCanUpdateUi(false);
344
345 EXPECT_TRUE(view_factory_->is_visible());
346 EXPECT_FALSE(request1_.finished());
347 manager_->CancelRequest(&request1_);
348 EXPECT_TRUE(request1_.finished());
349 EXPECT_TRUE(view_factory_->is_visible());
350 Closing();
351 }
352
353 TEST_F(PermissionBubbleManagerTest, TestCancelPendingRequest) {
354 manager_->DisplayPendingRequests();
355 manager_->AddRequest(&request1_);
356 WaitForCoalescing();
357 manager_->AddRequest(&request2_);
358
359 EXPECT_TRUE(view_factory_->is_visible());
360 ASSERT_EQ(view_factory_->request_count(), 1);
361 manager_->CancelRequest(&request2_);
362
363 EXPECT_TRUE(view_factory_->is_visible());
364 EXPECT_FALSE(request1_.finished());
365 EXPECT_TRUE(request2_.finished());
366 }
367
368 TEST_F(PermissionBubbleManagerTest, MainFrameNoRequestIFrameRequest) {
369 manager_->DisplayPendingRequests();
370 manager_->AddRequest(&iframe_request_same_domain_);
371 WaitForCoalescing();
372 WaitForFrameLoad();
373
374 EXPECT_TRUE(view_factory_->is_visible());
375 Closing();
376 EXPECT_TRUE(iframe_request_same_domain_.finished());
377 }
378
379 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestSameDomain) {
380 manager_->DisplayPendingRequests();
381 manager_->AddRequest(&request1_);
382 manager_->AddRequest(&iframe_request_same_domain_);
383 WaitForFrameLoad();
384 WaitForCoalescing();
385
386 EXPECT_TRUE(view_factory_->is_visible());
387 ASSERT_EQ(view_factory_->request_count(), 2);
388 Closing();
389 EXPECT_TRUE(request1_.finished());
390 EXPECT_TRUE(iframe_request_same_domain_.finished());
391 EXPECT_FALSE(view_factory_->is_visible());
392 }
393
394 TEST_F(PermissionBubbleManagerTest, MainFrameAndIFrameRequestOtherDomain) {
395 manager_->DisplayPendingRequests();
396 manager_->AddRequest(&request1_);
397 manager_->AddRequest(&iframe_request_other_domain_);
398 WaitForFrameLoad();
399 WaitForCoalescing();
400
401 EXPECT_TRUE(view_factory_->is_visible());
402 Closing();
403 EXPECT_TRUE(request1_.finished());
404 EXPECT_FALSE(iframe_request_other_domain_.finished());
405 EXPECT_TRUE(view_factory_->is_visible());
406 Closing();
407 EXPECT_TRUE(iframe_request_other_domain_.finished());
408 }
409
410 TEST_F(PermissionBubbleManagerTest, IFrameRequestWhenMainRequestVisible) {
411 manager_->DisplayPendingRequests();
412 manager_->AddRequest(&request1_);
413 WaitForCoalescing();
414 EXPECT_TRUE(view_factory_->is_visible());
415
416 manager_->AddRequest(&iframe_request_same_domain_);
417 WaitForFrameLoad();
418 ASSERT_EQ(view_factory_->request_count(), 1);
419 Closing();
420 EXPECT_TRUE(request1_.finished());
421 EXPECT_FALSE(iframe_request_same_domain_.finished());
422 EXPECT_TRUE(view_factory_->is_visible());
423 ASSERT_EQ(view_factory_->request_count(), 1);
424 Closing();
425 EXPECT_TRUE(iframe_request_same_domain_.finished());
426 }
427
428 TEST_F(PermissionBubbleManagerTest,
429 IFrameRequestOtherDomainWhenMainRequestVisible) {
430 manager_->DisplayPendingRequests();
431 manager_->AddRequest(&request1_);
432 WaitForCoalescing();
433 EXPECT_TRUE(view_factory_->is_visible());
434
435 manager_->AddRequest(&iframe_request_other_domain_);
436 WaitForFrameLoad();
437 Closing();
438 EXPECT_TRUE(request1_.finished());
439 EXPECT_FALSE(iframe_request_other_domain_.finished());
440 EXPECT_TRUE(view_factory_->is_visible());
441 Closing();
442 EXPECT_TRUE(iframe_request_other_domain_.finished());
443 }
444
445 TEST_F(PermissionBubbleManagerTest, RequestsDontNeedUserGesture) {
446 manager_->DisplayPendingRequests();
447 WaitForFrameLoad();
448 WaitForCoalescing();
449 manager_->AddRequest(&request1_);
450 manager_->AddRequest(&iframe_request_other_domain_);
451 manager_->AddRequest(&request2_);
452 base::RunLoop().RunUntilIdle();
453
454 EXPECT_TRUE(view_factory_->is_visible());
455 }
456
457 TEST_F(PermissionBubbleManagerTest, UMAForSimpleAcceptedBubble) {
458 base::HistogramTester histograms;
459
460 manager_->AddRequest(&request1_);
461 manager_->DisplayPendingRequests();
462 WaitForCoalescing();
463 histograms.ExpectUniqueSample(
464 PermissionUmaUtil::kPermissionsPromptShown,
465 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
466 1);
467 histograms.ExpectUniqueSample(
468 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 1, 1);
469
470 ToggleAccept(0, true);
471 Accept();
472 histograms.ExpectUniqueSample(
473 PermissionUmaUtil::kPermissionsPromptAccepted,
474 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
475 }
476
477 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubble) {
478 base::HistogramTester histograms;
479
480 manager_->AddRequest(&request1_);
481 manager_->DisplayPendingRequests();
482 WaitForCoalescing();
483 // No need to test UMA for showing prompts again, they were tested in
484 // UMAForSimpleAcceptedBubble.
485
486 Deny();
487 histograms.ExpectUniqueSample(
488 PermissionUmaUtil::kPermissionsPromptDenied,
489 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
490 }
491
492 // This code path (calling Accept on a non-merged bubble, with no accepted
493 // permission) would never be used in actual Chrome, but its still tested for
494 // completeness.
495 TEST_F(PermissionBubbleManagerTest, UMAForSimpleDeniedBubbleAlternatePath) {
496 base::HistogramTester histograms;
497
498 manager_->AddRequest(&request1_);
499 manager_->DisplayPendingRequests();
500 WaitForCoalescing();
501 // No need to test UMA for showing prompts again, they were tested in
502 // UMAForSimpleAcceptedBubble.
503
504 ToggleAccept(0, false);
505 Accept();
506 histograms.ExpectUniqueSample(
507 PermissionUmaUtil::kPermissionsPromptDenied,
508 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA), 1);
509 }
510
511 TEST_F(PermissionBubbleManagerTest, UMAForMergedAcceptedBubble) {
512 base::HistogramTester histograms;
513
514 manager_->AddRequest(&request1_);
515 manager_->AddRequest(&request2_);
516 manager_->DisplayPendingRequests();
517 WaitForCoalescing();
518
519 histograms.ExpectUniqueSample(
520 PermissionUmaUtil::kPermissionsPromptShown,
521 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
522 1);
523 histograms.ExpectBucketCount(
524 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
525 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
526 1);
527 histograms.ExpectBucketCount(
528 PermissionUmaUtil::kPermissionsPromptMergedBubbleTypes,
529 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
530 1);
531 histograms.ExpectUniqueSample(
532 PermissionUmaUtil::kPermissionsPromptRequestsPerPrompt, 2, 1);
533
534 ToggleAccept(0, true);
535 ToggleAccept(1, true);
536 Accept();
537
538 histograms.ExpectUniqueSample(
539 PermissionUmaUtil::kPermissionsPromptAccepted,
540 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
541 1);
542 histograms.ExpectBucketCount(
543 PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
544 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
545 1);
546 histograms.ExpectBucketCount(
547 PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
548 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
549 1);
550 }
551
552 TEST_F(PermissionBubbleManagerTest, UMAForMergedMixedBubble) {
553 base::HistogramTester histograms;
554
555 manager_->AddRequest(&request1_);
556 manager_->AddRequest(&request2_);
557 manager_->DisplayPendingRequests();
558 WaitForCoalescing();
559 // No need to test UMA for showing prompts again, they were tested in
560 // UMAForMergedAcceptedBubble.
561
562 ToggleAccept(0, true);
563 ToggleAccept(1, false);
564 Accept();
565
566 histograms.ExpectUniqueSample(
567 PermissionUmaUtil::kPermissionsPromptDenied,
568 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
569 1);
570 histograms.ExpectBucketCount(
571 PermissionUmaUtil::kPermissionsPromptMergedBubbleAccepted,
572 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
573 1);
574 histograms.ExpectBucketCount(
575 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
576 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
577 1);
578 }
579
580 TEST_F(PermissionBubbleManagerTest, UMAForMergedDeniedBubble) {
581 base::HistogramTester histograms;
582
583 manager_->AddRequest(&request1_);
584 manager_->AddRequest(&request2_);
585 manager_->DisplayPendingRequests();
586 WaitForCoalescing();
587 // No need to test UMA for showing prompts again, they were tested in
588 // UMAForMergedAcceptedBubble.
589
590 ToggleAccept(0, false);
591 ToggleAccept(1, false);
592 Accept();
593
594 histograms.ExpectUniqueSample(
595 PermissionUmaUtil::kPermissionsPromptDenied,
596 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::MULTIPLE),
597 1);
598 histograms.ExpectBucketCount(
599 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
600 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::QUOTA),
601 1);
602 histograms.ExpectBucketCount(
603 PermissionUmaUtil::kPermissionsPromptMergedBubbleDenied,
604 static_cast<base::HistogramBase::Sample>(PermissionBubbleType::DOWNLOAD),
605 1);
606 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698