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

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

Issue 176053002: [WebsiteSettings] Change permission bubble API to adapt to new mocks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 | Annotate | Revision Log
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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/message_loop/message_loop.h" 6 #include "base/message_loop/message_loop.h"
7 #include "base/strings/utf_string_conversions.h" 7 #include "base/strings/utf_string_conversions.h"
8 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" 8 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
9 #include "chrome/browser/ui/website_settings/permission_bubble_request.h" 9 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
10 #include "chrome/browser/ui/website_settings/permission_bubble_view.h" 10 #include "chrome/browser/ui/website_settings/permission_bubble_view.h"
11 #include "chrome/common/chrome_switches.h" 11 #include "chrome/common/chrome_switches.h"
12 #include "content/public/test/test_browser_thread.h" 12 #include "content/public/test/test_browser_thread.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace { 15 namespace {
16 16
17 class MockRequest : public PermissionBubbleRequest { 17 class MockRequest : public PermissionBubbleRequest {
18 public: 18 public:
19 MockRequest() : granted_(false), cancelled_(false), finished_(false) {} 19 explicit MockRequest(const base::string16& message)
20 : message_(message),
21 granted_(false),
22 cancelled_(false),
23 finished_(false) {}
24
20 virtual ~MockRequest() {} 25 virtual ~MockRequest() {}
21 26
22 // PermissionBubbleRequest: 27 // PermissionBubbleRequest:
28 virtual int GetIconID() const OVERRIDE {
29 return 5;
30 }
31
23 virtual base::string16 GetMessageText() const OVERRIDE { 32 virtual base::string16 GetMessageText() const OVERRIDE {
24 return base::ASCIIToUTF16("test"); 33 return message_;
25 } 34 }
26 35
27 virtual base::string16 GetMessageTextFragment() const OVERRIDE { 36 virtual base::string16 GetMessageTextFragment() const OVERRIDE {
28 return base::ASCIIToUTF16("test"); 37 return message_;
29 } 38 }
30 39
31 virtual base::string16 GetAlternateAcceptButtonText() const OVERRIDE { 40 virtual bool HasUserGesture() const OVERRIDE {
32 return base::ASCIIToUTF16("button"); 41 return false;
33 }
34
35 virtual base::string16 GetAlternateDenyButtonText() const OVERRIDE {
36 return base::ASCIIToUTF16("button");
37 } 42 }
38 43
39 virtual void PermissionGranted() OVERRIDE { 44 virtual void PermissionGranted() OVERRIDE {
40 granted_ = true; 45 granted_ = true;
41 } 46 }
42 47
43 virtual void PermissionDenied() OVERRIDE { 48 virtual void PermissionDenied() OVERRIDE {
44 granted_ = false; 49 granted_ = false;
45 } 50 }
46 51
47 virtual void Cancelled() OVERRIDE { 52 virtual void Cancelled() OVERRIDE {
48 granted_ = false; 53 granted_ = false;
49 cancelled_ = true; 54 cancelled_ = true;
50 } 55 }
51 56
52 virtual void RequestFinished() OVERRIDE { 57 virtual void RequestFinished() OVERRIDE {
53 finished_ = true; 58 finished_ = true;
54 } 59 }
55 60
61 base::string16 message_;
56 bool granted_; 62 bool granted_;
57 bool cancelled_; 63 bool cancelled_;
58 bool finished_; 64 bool finished_;
59 }; 65 };
60 66
61 class MockView : public PermissionBubbleView { 67 class MockView : public PermissionBubbleView {
62 public: 68 public:
63 MockView() : shown_(false), delegate_(NULL) {} 69 MockView() : shown_(false), delegate_(NULL) {}
64 ~MockView() {} 70 ~MockView() {}
65 71
(...skipping 15 matching lines...) Expand all
81 bool customization_state_) OVERRIDE { 87 bool customization_state_) OVERRIDE {
82 shown_ = true; 88 shown_ = true;
83 permission_requests_ = requests; 89 permission_requests_ = requests;
84 permission_states_ = accept_state; 90 permission_states_ = accept_state;
85 } 91 }
86 92
87 virtual void Hide() OVERRIDE { 93 virtual void Hide() OVERRIDE {
88 shown_ = false; 94 shown_ = false;
89 } 95 }
90 96
97 virtual bool CanAcceptRequestUpdate() OVERRIDE {
98 return true;
99 }
100
91 bool shown_; 101 bool shown_;
92 Delegate* delegate_; 102 Delegate* delegate_;
93 std::vector<PermissionBubbleRequest*> permission_requests_; 103 std::vector<PermissionBubbleRequest*> permission_requests_;
94 std::vector<bool> permission_states_; 104 std::vector<bool> permission_states_;
95 }; 105 };
96 106
97 } // namespace 107 } // namespace
98 108
99 class PermissionBubbleManagerTest : public testing::Test { 109 class PermissionBubbleManagerTest : public testing::Test {
100 public: 110 public:
101 PermissionBubbleManagerTest(); 111 PermissionBubbleManagerTest();
112 virtual ~PermissionBubbleManagerTest() {}
113
114 void TearDown() {
115 manager_.reset();
116 }
102 117
103 void ToggleAccept(int index, bool value) { 118 void ToggleAccept(int index, bool value) {
104 manager_->ToggleAccept(index, value); 119 manager_->ToggleAccept(index, value);
105 } 120 }
106 121
107 void Accept() { 122 void Accept() {
108 manager_->Accept(); 123 manager_->Accept();
109 } 124 }
110 125
111 void WaitForCoalescing() { 126 void WaitForCoalescing() {
112 base::MessageLoop::current()->RunUntilIdle(); 127 base::MessageLoop::current()->RunUntilIdle();
113 } 128 }
114 129
115 protected: 130 protected:
116 MockRequest request1_; 131 MockRequest request1_;
117 MockRequest request2_; 132 MockRequest request2_;
118 MockView view_; 133 MockView view_;
119 scoped_ptr<PermissionBubbleManager> manager_; 134 scoped_ptr<PermissionBubbleManager> manager_;
120 135
121 base::MessageLoop message_loop_; 136 base::MessageLoop message_loop_;
122 content::TestBrowserThread ui_thread_; 137 content::TestBrowserThread ui_thread_;
123 }; 138 };
124 139
125 PermissionBubbleManagerTest::PermissionBubbleManagerTest() 140 PermissionBubbleManagerTest::PermissionBubbleManagerTest()
126 : manager_(new PermissionBubbleManager(NULL)), 141 : request1_(base::ASCIIToUTF16("test1")),
142 request2_(base::ASCIIToUTF16("test2")),
143 manager_(new PermissionBubbleManager(NULL)),
127 ui_thread_(content::BrowserThread::UI, &message_loop_) { 144 ui_thread_(content::BrowserThread::UI, &message_loop_) {
128 manager_->SetCoalesceIntervalForTesting(0); 145 manager_->SetCoalesceIntervalForTesting(0);
129 } 146 }
130 147
131 TEST_F(PermissionBubbleManagerTest, TestFlag) { 148 TEST_F(PermissionBubbleManagerTest, TestFlag) {
132 EXPECT_FALSE(PermissionBubbleManager::Enabled()); 149 EXPECT_FALSE(PermissionBubbleManager::Enabled());
133 CommandLine::ForCurrentProcess()->AppendSwitch( 150 CommandLine::ForCurrentProcess()->AppendSwitch(
134 switches::kEnablePermissionsBubbles); 151 switches::kEnablePermissionsBubbles);
135 EXPECT_TRUE(PermissionBubbleManager::Enabled()); 152 EXPECT_TRUE(PermissionBubbleManager::Enabled());
136 } 153 }
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 312
296 EXPECT_FALSE(view_.shown_); 313 EXPECT_FALSE(view_.shown_);
297 314
298 manager_->AddRequest(&request2_); 315 manager_->AddRequest(&request2_);
299 WaitForCoalescing(); 316 WaitForCoalescing();
300 EXPECT_TRUE(view_.shown_); 317 EXPECT_TRUE(view_.shown_);
301 Accept(); 318 Accept();
302 EXPECT_FALSE(view_.shown_); 319 EXPECT_FALSE(view_.shown_);
303 EXPECT_TRUE(request2_.granted_); 320 EXPECT_TRUE(request2_.granted_);
304 } 321 }
322
323 TEST_F(PermissionBubbleManagerTest, SameRequestRejected) {
324 manager_->SetView(&view_);
325 manager_->AddRequest(&request1_);
326 manager_->AddRequest(&request1_);
groby-ooo-7-16 2014/02/25 22:27:36 I get why we can't do that in the current framewor
Greg Billock 2014/02/26 00:28:44 It shouldn't call RequestFinished, since the manag
groby-ooo-7-16 2014/02/26 02:28:11 FWIW, I think each JS request should simply genera
327
328 WaitForCoalescing();
329 EXPECT_TRUE(view_.shown_);
330 ASSERT_EQ(1u, view_.permission_requests_.size());
331 EXPECT_EQ(&request1_, view_.permission_requests_[0]);
332 }
333
334 TEST_F(PermissionBubbleManagerTest, DuplicateRequestRejected) {
335 manager_->SetView(&view_);
336 manager_->AddRequest(&request1_);
337 MockRequest dupe_request(base::ASCIIToUTF16("test1"));
338 manager_->AddRequest(&dupe_request);
339 EXPECT_TRUE(dupe_request.finished_);
340 EXPECT_FALSE(request1_.finished_);
341 }
342
343 TEST_F(PermissionBubbleManagerTest, DuplicateQueuedRequest) {
344 manager_->SetView(&view_);
345 manager_->AddRequest(&request1_);
346 WaitForCoalescing();
347 manager_->AddRequest(&request2_);
348
349 MockRequest dupe_request(base::ASCIIToUTF16("test1"));
350 manager_->AddRequest(&dupe_request);
351 EXPECT_TRUE(dupe_request.finished_);
352 EXPECT_FALSE(request1_.finished_);
353
354 MockRequest dupe_request2(base::ASCIIToUTF16("test2"));
355 manager_->AddRequest(&dupe_request2);
356 EXPECT_TRUE(dupe_request2.finished_);
357 EXPECT_FALSE(request2_.finished_);
358 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698