OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "chrome/app/chrome_command_ids.h" | 8 #include "chrome/app/chrome_command_ids.h" |
9 #include "chrome/browser/protector/mock_setting_change.h" | 9 #include "chrome/browser/protector/mock_setting_change.h" |
10 #include "chrome/browser/protector/protector_service.h" | 10 #include "chrome/browser/protector/protector_service.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 ProtectorService* protector_service_; | 66 ProtectorService* protector_service_; |
67 MockSettingChange* mock_change_; | 67 MockSettingChange* mock_change_; |
68 }; | 68 }; |
69 | 69 |
70 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ChangeInitError) { | 70 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ChangeInitError) { |
71 // Init fails and causes the change to be ignored. | 71 // Init fails and causes the change to be ignored. |
72 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 72 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
73 WillOnce(Return(false)); | 73 WillOnce(Return(false)); |
74 protector_service_->ShowChange(mock_change_); | 74 protector_service_->ShowChange(mock_change_); |
75 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 75 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
76 ui_test_utils::RunAllPendingInMessageLoop(); | 76 content::RunAllPendingInMessageLoop(); |
77 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 77 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
78 EXPECT_FALSE(protector_service_->GetLastChange()); | 78 EXPECT_FALSE(protector_service_->GetLastChange()); |
79 } | 79 } |
80 | 80 |
81 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDismiss) { | 81 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDismiss) { |
82 // Show the change and immediately dismiss it. | 82 // Show the change and immediately dismiss it. |
83 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 83 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
84 WillOnce(Return(true)); | 84 WillOnce(Return(true)); |
85 protector_service_->ShowChange(mock_change_); | 85 protector_service_->ShowChange(mock_change_); |
86 ui_test_utils::RunAllPendingInMessageLoop(); | 86 content::RunAllPendingInMessageLoop(); |
87 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 87 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
88 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 88 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
89 protector_service_->DismissChange(mock_change_); | 89 protector_service_->DismissChange(mock_change_); |
90 ui_test_utils::RunAllPendingInMessageLoop(); | 90 content::RunAllPendingInMessageLoop(); |
91 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 91 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
92 EXPECT_FALSE(protector_service_->GetLastChange()); | 92 EXPECT_FALSE(protector_service_->GetLastChange()); |
93 } | 93 } |
94 | 94 |
95 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndApply) { | 95 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndApply) { |
96 // Show the change and apply it. | 96 // Show the change and apply it. |
97 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 97 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
98 WillOnce(Return(true)); | 98 WillOnce(Return(true)); |
99 protector_service_->ShowChange(mock_change_); | 99 protector_service_->ShowChange(mock_change_); |
100 ui_test_utils::RunAllPendingInMessageLoop(); | 100 content::RunAllPendingInMessageLoop(); |
101 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 101 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
102 EXPECT_CALL(*mock_change_, Apply(browser())); | 102 EXPECT_CALL(*mock_change_, Apply(browser())); |
103 protector_service_->ApplyChange(mock_change_, browser()); | 103 protector_service_->ApplyChange(mock_change_, browser()); |
104 ui_test_utils::RunAllPendingInMessageLoop(); | 104 content::RunAllPendingInMessageLoop(); |
105 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 105 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
106 } | 106 } |
107 | 107 |
108 // ProtectorServiceTest.ShowAndApplyManually is timing out frequently on Win | 108 // ProtectorServiceTest.ShowAndApplyManually is timing out frequently on Win |
109 // bots. http://crbug.com/130590 | 109 // bots. http://crbug.com/130590 |
110 #if defined(OS_WIN) | 110 #if defined(OS_WIN) |
111 #define MAYBE_ShowAndApplyManually DISABLED_ShowAndApplyManually | 111 #define MAYBE_ShowAndApplyManually DISABLED_ShowAndApplyManually |
112 #else | 112 #else |
113 #define MAYBE_ShowAndApplyManually ShowAndApplyManually | 113 #define MAYBE_ShowAndApplyManually ShowAndApplyManually |
114 #endif | 114 #endif |
115 | 115 |
116 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, MAYBE_ShowAndApplyManually) { | 116 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, MAYBE_ShowAndApplyManually) { |
117 // Show the change and apply it, mimicking a button click. | 117 // Show the change and apply it, mimicking a button click. |
118 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 118 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
119 WillOnce(Return(true)); | 119 WillOnce(Return(true)); |
120 protector_service_->ShowChange(mock_change_); | 120 protector_service_->ShowChange(mock_change_); |
121 ui_test_utils::RunAllPendingInMessageLoop(); | 121 content::RunAllPendingInMessageLoop(); |
122 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 122 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
123 EXPECT_CALL(*mock_change_, Apply(browser())); | 123 EXPECT_CALL(*mock_change_, Apply(browser())); |
124 // Pressing Cancel applies the change. | 124 // Pressing Cancel applies the change. |
125 GlobalError* error = GetGlobalError(mock_change_); | 125 GlobalError* error = GetGlobalError(mock_change_); |
126 ASSERT_TRUE(error); | 126 ASSERT_TRUE(error); |
127 error->BubbleViewCancelButtonPressed(browser()); | 127 error->BubbleViewCancelButtonPressed(browser()); |
128 error->GetBubbleView()->CloseBubbleView(); | 128 error->GetBubbleView()->CloseBubbleView(); |
129 ui_test_utils::RunAllPendingInMessageLoop(); | 129 content::RunAllPendingInMessageLoop(); |
130 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 130 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
131 } | 131 } |
132 | 132 |
133 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDiscard) { | 133 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDiscard) { |
134 // Show the change and discard it. | 134 // Show the change and discard it. |
135 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 135 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
136 WillOnce(Return(true)); | 136 WillOnce(Return(true)); |
137 protector_service_->ShowChange(mock_change_); | 137 protector_service_->ShowChange(mock_change_); |
138 ui_test_utils::RunAllPendingInMessageLoop(); | 138 content::RunAllPendingInMessageLoop(); |
139 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 139 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
140 EXPECT_CALL(*mock_change_, Discard(browser())); | 140 EXPECT_CALL(*mock_change_, Discard(browser())); |
141 protector_service_->DiscardChange(mock_change_, browser()); | 141 protector_service_->DiscardChange(mock_change_, browser()); |
142 ui_test_utils::RunAllPendingInMessageLoop(); | 142 content::RunAllPendingInMessageLoop(); |
143 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 143 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
144 } | 144 } |
145 | 145 |
146 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDiscardManually) { | 146 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowAndDiscardManually) { |
147 // Show the change and discard it, mimicking a button click. | 147 // Show the change and discard it, mimicking a button click. |
148 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 148 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
149 WillOnce(Return(true)); | 149 WillOnce(Return(true)); |
150 protector_service_->ShowChange(mock_change_); | 150 protector_service_->ShowChange(mock_change_); |
151 ui_test_utils::RunAllPendingInMessageLoop(); | 151 content::RunAllPendingInMessageLoop(); |
152 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 152 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
153 EXPECT_CALL(*mock_change_, Discard(browser())); | 153 EXPECT_CALL(*mock_change_, Discard(browser())); |
154 // Pressing Apply discards the change. | 154 // Pressing Apply discards the change. |
155 GlobalError* error = GetGlobalError(mock_change_); | 155 GlobalError* error = GetGlobalError(mock_change_); |
156 ASSERT_TRUE(error); | 156 ASSERT_TRUE(error); |
157 error->BubbleViewAcceptButtonPressed(browser()); | 157 error->BubbleViewAcceptButtonPressed(browser()); |
158 error->GetBubbleView()->CloseBubbleView(); | 158 error->GetBubbleView()->CloseBubbleView(); |
159 ui_test_utils::RunAllPendingInMessageLoop(); | 159 content::RunAllPendingInMessageLoop(); |
160 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 160 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
161 } | 161 } |
162 | 162 |
163 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, BubbleClosedInsideApply) { | 163 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, BubbleClosedInsideApply) { |
164 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 164 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
165 WillOnce(Return(true)); | 165 WillOnce(Return(true)); |
166 protector_service_->ShowChange(mock_change_); | 166 protector_service_->ShowChange(mock_change_); |
167 ui_test_utils::RunAllPendingInMessageLoop(); | 167 content::RunAllPendingInMessageLoop(); |
168 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 168 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
169 | 169 |
170 GlobalError* error = GetGlobalError(mock_change_); | 170 GlobalError* error = GetGlobalError(mock_change_); |
171 ASSERT_TRUE(error); | 171 ASSERT_TRUE(error); |
172 GlobalErrorBubbleViewBase* bubble_view = error->GetBubbleView(); | 172 GlobalErrorBubbleViewBase* bubble_view = error->GetBubbleView(); |
173 ASSERT_TRUE(bubble_view); | 173 ASSERT_TRUE(bubble_view); |
174 EXPECT_CALL(*mock_change_, Apply(browser())).WillOnce(InvokeWithoutArgs( | 174 EXPECT_CALL(*mock_change_, Apply(browser())).WillOnce(InvokeWithoutArgs( |
175 bubble_view, &GlobalErrorBubbleViewBase::CloseBubbleView)); | 175 bubble_view, &GlobalErrorBubbleViewBase::CloseBubbleView)); |
176 // Pressing Cancel applies the change. | 176 // Pressing Cancel applies the change. |
177 error->BubbleViewCancelButtonPressed(browser()); | 177 error->BubbleViewCancelButtonPressed(browser()); |
178 ui_test_utils::RunAllPendingInMessageLoop(); | 178 content::RunAllPendingInMessageLoop(); |
179 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 179 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
180 } | 180 } |
181 | 181 |
182 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleChangesAndApply) { | 182 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleChangesAndApply) { |
183 // Show the first change. | 183 // Show the first change. |
184 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 184 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
185 WillOnce(Return(true)); | 185 WillOnce(Return(true)); |
186 protector_service_->ShowChange(mock_change_); | 186 protector_service_->ShowChange(mock_change_); |
187 ui_test_utils::RunAllPendingInMessageLoop(); | 187 content::RunAllPendingInMessageLoop(); |
188 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 188 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
189 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 189 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
190 | 190 |
191 // ProtectService will own this change instance as well. | 191 // ProtectService will own this change instance as well. |
192 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 192 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
193 // Show the second change. | 193 // Show the second change. |
194 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 194 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
195 WillOnce(Return(true)); | 195 WillOnce(Return(true)); |
196 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); | 196 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
197 protector_service_->ShowChange(mock_change2); | 197 protector_service_->ShowChange(mock_change2); |
198 ui_test_utils::RunAllPendingInMessageLoop(); | 198 content::RunAllPendingInMessageLoop(); |
199 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 199 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
200 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 200 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
201 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); | 201 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
202 | 202 |
203 // Apply the first change, the second should still be active. | 203 // Apply the first change, the second should still be active. |
204 EXPECT_CALL(*mock_change_, Apply(browser())); | 204 EXPECT_CALL(*mock_change_, Apply(browser())); |
205 protector_service_->ApplyChange(mock_change_, browser()); | 205 protector_service_->ApplyChange(mock_change_, browser()); |
206 ui_test_utils::RunAllPendingInMessageLoop(); | 206 content::RunAllPendingInMessageLoop(); |
207 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 207 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
208 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 208 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
209 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); | 209 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
210 | 210 |
211 // Finally apply the second change. | 211 // Finally apply the second change. |
212 EXPECT_CALL(*mock_change2, Apply(browser())); | 212 EXPECT_CALL(*mock_change2, Apply(browser())); |
213 protector_service_->ApplyChange(mock_change2, browser()); | 213 protector_service_->ApplyChange(mock_change2, browser()); |
214 ui_test_utils::RunAllPendingInMessageLoop(); | 214 content::RunAllPendingInMessageLoop(); |
215 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 215 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
216 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 216 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
217 EXPECT_FALSE(protector_service_->GetLastChange()); | 217 EXPECT_FALSE(protector_service_->GetLastChange()); |
218 } | 218 } |
219 | 219 |
220 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, | 220 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
221 ShowMultipleChangesDismissAndApply) { | 221 ShowMultipleChangesDismissAndApply) { |
222 // Show the first change. | 222 // Show the first change. |
223 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 223 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
224 WillOnce(Return(true)); | 224 WillOnce(Return(true)); |
225 protector_service_->ShowChange(mock_change_); | 225 protector_service_->ShowChange(mock_change_); |
226 ui_test_utils::RunAllPendingInMessageLoop(); | 226 content::RunAllPendingInMessageLoop(); |
227 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 227 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
228 | 228 |
229 // ProtectService will own this change instance as well. | 229 // ProtectService will own this change instance as well. |
230 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 230 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
231 // Show the second change. | 231 // Show the second change. |
232 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 232 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
233 WillOnce(Return(true)); | 233 WillOnce(Return(true)); |
234 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); | 234 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
235 protector_service_->ShowChange(mock_change2); | 235 protector_service_->ShowChange(mock_change2); |
236 ui_test_utils::RunAllPendingInMessageLoop(); | 236 content::RunAllPendingInMessageLoop(); |
237 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 237 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
238 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 238 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
239 | 239 |
240 // Dismiss the first change, the second should still be active. | 240 // Dismiss the first change, the second should still be active. |
241 protector_service_->DismissChange(mock_change_); | 241 protector_service_->DismissChange(mock_change_); |
242 ui_test_utils::RunAllPendingInMessageLoop(); | 242 content::RunAllPendingInMessageLoop(); |
243 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 243 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
244 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 244 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
245 | 245 |
246 // Finally apply the second change. | 246 // Finally apply the second change. |
247 EXPECT_CALL(*mock_change2, Apply(browser())); | 247 EXPECT_CALL(*mock_change2, Apply(browser())); |
248 protector_service_->ApplyChange(mock_change2, browser()); | 248 protector_service_->ApplyChange(mock_change2, browser()); |
249 ui_test_utils::RunAllPendingInMessageLoop(); | 249 content::RunAllPendingInMessageLoop(); |
250 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 250 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
251 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 251 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
252 } | 252 } |
253 | 253 |
254 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, | 254 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
255 ShowMultipleChangesAndApplyManually) { | 255 ShowMultipleChangesAndApplyManually) { |
256 // Show the first change. | 256 // Show the first change. |
257 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 257 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
258 WillOnce(Return(true)); | 258 WillOnce(Return(true)); |
259 protector_service_->ShowChange(mock_change_); | 259 protector_service_->ShowChange(mock_change_); |
260 ui_test_utils::RunAllPendingInMessageLoop(); | 260 content::RunAllPendingInMessageLoop(); |
261 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 261 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
262 | 262 |
263 // The first bubble view has been displayed. | 263 // The first bubble view has been displayed. |
264 GlobalError* error = GetGlobalError(mock_change_); | 264 GlobalError* error = GetGlobalError(mock_change_); |
265 ASSERT_TRUE(error); | 265 ASSERT_TRUE(error); |
266 ASSERT_TRUE(error->HasShownBubbleView()); | 266 ASSERT_TRUE(error->HasShownBubbleView()); |
267 | 267 |
268 // ProtectService will own this change instance as well. | 268 // ProtectService will own this change instance as well. |
269 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 269 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
270 // Show the second change. | 270 // Show the second change. |
271 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 271 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
272 WillOnce(Return(true)); | 272 WillOnce(Return(true)); |
273 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); | 273 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
274 protector_service_->ShowChange(mock_change2); | 274 protector_service_->ShowChange(mock_change2); |
275 ui_test_utils::RunAllPendingInMessageLoop(); | 275 content::RunAllPendingInMessageLoop(); |
276 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 276 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
277 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 277 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
278 | 278 |
279 // The second bubble view hasn't been displayed because the first is still | 279 // The second bubble view hasn't been displayed because the first is still |
280 // shown. | 280 // shown. |
281 GlobalError* error2 = GetGlobalError(mock_change2); | 281 GlobalError* error2 = GetGlobalError(mock_change2); |
282 ASSERT_TRUE(error2); | 282 ASSERT_TRUE(error2); |
283 EXPECT_FALSE(error2->HasShownBubbleView()); | 283 EXPECT_FALSE(error2->HasShownBubbleView()); |
284 | 284 |
285 // Apply the first change, mimicking a button click; the second should still | 285 // Apply the first change, mimicking a button click; the second should still |
286 // be active. | 286 // be active. |
287 EXPECT_CALL(*mock_change_, Apply(browser())); | 287 EXPECT_CALL(*mock_change_, Apply(browser())); |
288 error->BubbleViewCancelButtonPressed(browser()); | 288 error->BubbleViewCancelButtonPressed(browser()); |
289 error->GetBubbleView()->CloseBubbleView(); | 289 error->GetBubbleView()->CloseBubbleView(); |
290 ui_test_utils::RunAllPendingInMessageLoop(); | 290 content::RunAllPendingInMessageLoop(); |
291 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 291 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
292 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 292 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
293 | 293 |
294 // Now the second bubble view should be shown. | 294 // Now the second bubble view should be shown. |
295 ASSERT_TRUE(error2->HasShownBubbleView()); | 295 ASSERT_TRUE(error2->HasShownBubbleView()); |
296 | 296 |
297 // Finally apply the second change. | 297 // Finally apply the second change. |
298 EXPECT_CALL(*mock_change2, Apply(browser())); | 298 EXPECT_CALL(*mock_change2, Apply(browser())); |
299 error2->BubbleViewCancelButtonPressed(browser()); | 299 error2->BubbleViewCancelButtonPressed(browser()); |
300 error2->GetBubbleView()->CloseBubbleView(); | 300 error2->GetBubbleView()->CloseBubbleView(); |
301 ui_test_utils::RunAllPendingInMessageLoop(); | 301 content::RunAllPendingInMessageLoop(); |
302 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 302 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
303 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 303 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
304 } | 304 } |
305 | 305 |
306 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, | 306 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, |
307 ShowMultipleChangesAndApplyManuallyBeforeOther) { | 307 ShowMultipleChangesAndApplyManuallyBeforeOther) { |
308 // Show the first change. | 308 // Show the first change. |
309 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 309 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
310 WillOnce(Return(true)); | 310 WillOnce(Return(true)); |
311 protector_service_->ShowChange(mock_change_); | 311 protector_service_->ShowChange(mock_change_); |
312 ui_test_utils::RunAllPendingInMessageLoop(); | 312 content::RunAllPendingInMessageLoop(); |
313 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 313 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
314 | 314 |
315 // The first bubble view has been displayed. | 315 // The first bubble view has been displayed. |
316 GlobalError* error = GetGlobalError(mock_change_); | 316 GlobalError* error = GetGlobalError(mock_change_); |
317 ASSERT_TRUE(error); | 317 ASSERT_TRUE(error); |
318 ASSERT_TRUE(error->HasShownBubbleView()); | 318 ASSERT_TRUE(error->HasShownBubbleView()); |
319 | 319 |
320 // Apply the first change, mimicking a button click. | 320 // Apply the first change, mimicking a button click. |
321 EXPECT_CALL(*mock_change_, Apply(browser())); | 321 EXPECT_CALL(*mock_change_, Apply(browser())); |
322 error->BubbleViewCancelButtonPressed(browser()); | 322 error->BubbleViewCancelButtonPressed(browser()); |
323 error->GetBubbleView()->CloseBubbleView(); | 323 error->GetBubbleView()->CloseBubbleView(); |
324 ui_test_utils::RunAllPendingInMessageLoop(); | 324 content::RunAllPendingInMessageLoop(); |
325 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 325 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
326 | 326 |
327 // ProtectService will own this change instance as well. | 327 // ProtectService will own this change instance as well. |
328 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 328 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
329 // Show the second change. | 329 // Show the second change. |
330 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 330 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
331 WillOnce(Return(true)); | 331 WillOnce(Return(true)); |
332 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); | 332 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(false)); |
333 protector_service_->ShowChange(mock_change2); | 333 protector_service_->ShowChange(mock_change2); |
334 ui_test_utils::RunAllPendingInMessageLoop(); | 334 content::RunAllPendingInMessageLoop(); |
335 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 335 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
336 | 336 |
337 // The second bubble view has been displayed. | 337 // The second bubble view has been displayed. |
338 GlobalError* error2 = GetGlobalError(mock_change2); | 338 GlobalError* error2 = GetGlobalError(mock_change2); |
339 ASSERT_TRUE(error2); | 339 ASSERT_TRUE(error2); |
340 ASSERT_TRUE(error2->HasShownBubbleView()); | 340 ASSERT_TRUE(error2->HasShownBubbleView()); |
341 | 341 |
342 // Finally apply the second change. | 342 // Finally apply the second change. |
343 EXPECT_CALL(*mock_change2, Apply(browser())); | 343 EXPECT_CALL(*mock_change2, Apply(browser())); |
344 error2->BubbleViewCancelButtonPressed(browser()); | 344 error2->BubbleViewCancelButtonPressed(browser()); |
345 error2->GetBubbleView()->CloseBubbleView(); | 345 error2->GetBubbleView()->CloseBubbleView(); |
346 ui_test_utils::RunAllPendingInMessageLoop(); | 346 content::RunAllPendingInMessageLoop(); |
347 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 347 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
348 } | 348 } |
349 | 349 |
350 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleDifferentURLs) { | 350 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowMultipleDifferentURLs) { |
351 GURL url1("http://example.com/"); | 351 GURL url1("http://example.com/"); |
352 GURL url2("http://example.net/"); | 352 GURL url2("http://example.net/"); |
353 | 353 |
354 // Show the first change with some non-empty URL. | 354 // Show the first change with some non-empty URL. |
355 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 355 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
356 WillOnce(Return(true)); | 356 WillOnce(Return(true)); |
357 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 357 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
358 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 358 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
359 protector_service_->ShowChange(mock_change_); | 359 protector_service_->ShowChange(mock_change_); |
360 ui_test_utils::RunAllPendingInMessageLoop(); | 360 content::RunAllPendingInMessageLoop(); |
361 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 361 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
362 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 362 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
363 | 363 |
364 // ProtectService will own this change instance as well. | 364 // ProtectService will own this change instance as well. |
365 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 365 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
366 // Show the second change with another non-empty URL. | 366 // Show the second change with another non-empty URL. |
367 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 367 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
368 WillOnce(Return(true)); | 368 WillOnce(Return(true)); |
369 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); | 369 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
370 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 370 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
371 protector_service_->ShowChange(mock_change2); | 371 protector_service_->ShowChange(mock_change2); |
372 ui_test_utils::RunAllPendingInMessageLoop(); | 372 content::RunAllPendingInMessageLoop(); |
373 | 373 |
374 // Both changes are shown separately, not composited. | 374 // Both changes are shown separately, not composited. |
375 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 375 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
376 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); | 376 EXPECT_TRUE(IsGlobalErrorActive(mock_change2)); |
377 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); | 377 EXPECT_EQ(mock_change2, protector_service_->GetLastChange()); |
378 | 378 |
379 protector_service_->DismissChange(mock_change_); | 379 protector_service_->DismissChange(mock_change_); |
380 protector_service_->DismissChange(mock_change2); | 380 protector_service_->DismissChange(mock_change2); |
381 ui_test_utils::RunAllPendingInMessageLoop(); | 381 content::RunAllPendingInMessageLoop(); |
382 EXPECT_FALSE(protector_service_->GetLastChange()); | 382 EXPECT_FALSE(protector_service_->GetLastChange()); |
383 } | 383 } |
384 | 384 |
385 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismiss) { | 385 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismiss) { |
386 GURL url1("http://example.com/"); | 386 GURL url1("http://example.com/"); |
387 | 387 |
388 // Show the first change. | 388 // Show the first change. |
389 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 389 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
390 WillOnce(Return(true)); | 390 WillOnce(Return(true)); |
391 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 391 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
392 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 392 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
393 protector_service_->ShowChange(mock_change_); | 393 protector_service_->ShowChange(mock_change_); |
394 ui_test_utils::RunAllPendingInMessageLoop(); | 394 content::RunAllPendingInMessageLoop(); |
395 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 395 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
396 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 396 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
397 | 397 |
398 // The first bubble view has been displayed. | 398 // The first bubble view has been displayed. |
399 GlobalError* error = GetGlobalError(mock_change_); | 399 GlobalError* error = GetGlobalError(mock_change_); |
400 ASSERT_TRUE(error); | 400 ASSERT_TRUE(error); |
401 EXPECT_TRUE(error->HasShownBubbleView()); | 401 EXPECT_TRUE(error->HasShownBubbleView()); |
402 | 402 |
403 // ProtectService will own this change instance as well. | 403 // ProtectService will own this change instance as well. |
404 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 404 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
405 // Show the second change. | 405 // Show the second change. |
406 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 406 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
407 WillOnce(Return(true)); | 407 WillOnce(Return(true)); |
408 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 408 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
409 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 409 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
410 protector_service_->ShowChange(mock_change2); | 410 protector_service_->ShowChange(mock_change2); |
411 ui_test_utils::RunAllPendingInMessageLoop(); | 411 content::RunAllPendingInMessageLoop(); |
412 | 412 |
413 // Now ProtectorService should be showing a single composite change. | 413 // Now ProtectorService should be showing a single composite change. |
414 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 414 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
415 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 415 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
416 | 416 |
417 BaseSettingChange* composite_change = protector_service_->GetLastChange(); | 417 BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
418 ASSERT_TRUE(composite_change); | 418 ASSERT_TRUE(composite_change); |
419 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 419 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
420 | 420 |
421 // The second (composite) bubble view has been displayed. | 421 // The second (composite) bubble view has been displayed. |
422 GlobalError* error2 = GetGlobalError(composite_change); | 422 GlobalError* error2 = GetGlobalError(composite_change); |
423 ASSERT_TRUE(error2); | 423 ASSERT_TRUE(error2); |
424 EXPECT_TRUE(error2->HasShownBubbleView()); | 424 EXPECT_TRUE(error2->HasShownBubbleView()); |
425 | 425 |
426 protector_service_->DismissChange(composite_change); | 426 protector_service_->DismissChange(composite_change); |
427 ui_test_utils::RunAllPendingInMessageLoop(); | 427 content::RunAllPendingInMessageLoop(); |
428 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); | 428 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
429 EXPECT_FALSE(protector_service_->GetLastChange()); | 429 EXPECT_FALSE(protector_service_->GetLastChange()); |
430 | 430 |
431 // Show the third change. | 431 // Show the third change. |
432 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); | 432 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
433 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). | 433 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
434 WillOnce(Return(true)); | 434 WillOnce(Return(true)); |
435 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 435 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
436 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); | 436 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
437 protector_service_->ShowChange(mock_change3); | 437 protector_service_->ShowChange(mock_change3); |
438 ui_test_utils::RunAllPendingInMessageLoop(); | 438 content::RunAllPendingInMessageLoop(); |
439 | 439 |
440 // The third change should not be composed with the previous. | 440 // The third change should not be composed with the previous. |
441 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); | 441 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
442 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); | 442 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
443 | 443 |
444 protector_service_->DismissChange(mock_change3); | 444 protector_service_->DismissChange(mock_change3); |
445 ui_test_utils::RunAllPendingInMessageLoop(); | 445 content::RunAllPendingInMessageLoop(); |
446 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); | 446 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
447 EXPECT_FALSE(protector_service_->GetLastChange()); | 447 EXPECT_FALSE(protector_service_->GetLastChange()); |
448 } | 448 } |
449 | 449 |
450 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndOther) { | 450 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndOther) { |
451 GURL url1("http://example.com/"); | 451 GURL url1("http://example.com/"); |
452 GURL url2("http://example.net/"); | 452 GURL url2("http://example.net/"); |
453 | 453 |
454 // Show the first change. | 454 // Show the first change. |
455 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 455 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
456 WillOnce(Return(true)); | 456 WillOnce(Return(true)); |
457 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 457 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
458 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 458 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
459 protector_service_->ShowChange(mock_change_); | 459 protector_service_->ShowChange(mock_change_); |
460 ui_test_utils::RunAllPendingInMessageLoop(); | 460 content::RunAllPendingInMessageLoop(); |
461 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 461 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
462 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 462 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
463 | 463 |
464 // ProtectService will own this change instance as well. | 464 // ProtectService will own this change instance as well. |
465 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 465 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
466 // Show the second change. | 466 // Show the second change. |
467 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 467 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
468 WillOnce(Return(true)); | 468 WillOnce(Return(true)); |
469 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 469 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
470 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 470 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
471 protector_service_->ShowChange(mock_change2); | 471 protector_service_->ShowChange(mock_change2); |
472 ui_test_utils::RunAllPendingInMessageLoop(); | 472 content::RunAllPendingInMessageLoop(); |
473 | 473 |
474 // Now ProtectorService should be showing a single composite change. | 474 // Now ProtectorService should be showing a single composite change. |
475 BaseSettingChange* composite_change = protector_service_->GetLastChange(); | 475 BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
476 ASSERT_TRUE(composite_change); | 476 ASSERT_TRUE(composite_change); |
477 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 477 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
478 | 478 |
479 // Show the third change, with the same URL as 1st and 2nd. | 479 // Show the third change, with the same URL as 1st and 2nd. |
480 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); | 480 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
481 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). | 481 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
482 WillOnce(Return(true)); | 482 WillOnce(Return(true)); |
483 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 483 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
484 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); | 484 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
485 protector_service_->ShowChange(mock_change3); | 485 protector_service_->ShowChange(mock_change3); |
486 ui_test_utils::RunAllPendingInMessageLoop(); | 486 content::RunAllPendingInMessageLoop(); |
487 | 487 |
488 // The third change should be composed with the previous. | 488 // The third change should be composed with the previous. |
489 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); | 489 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
490 EXPECT_EQ(composite_change, protector_service_->GetLastChange()); | 490 EXPECT_EQ(composite_change, protector_service_->GetLastChange()); |
491 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 491 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
492 | 492 |
493 // Show the 4th change, now with a different URL. | 493 // Show the 4th change, now with a different URL. |
494 MockSettingChange* mock_change4 = new NiceMock<MockSettingChange>(); | 494 MockSettingChange* mock_change4 = new NiceMock<MockSettingChange>(); |
495 EXPECT_CALL(*mock_change4, MockInit(browser()->profile())). | 495 EXPECT_CALL(*mock_change4, MockInit(browser()->profile())). |
496 WillOnce(Return(true)); | 496 WillOnce(Return(true)); |
497 EXPECT_CALL(*mock_change4, GetNewSettingURL()).WillRepeatedly(Return(url2)); | 497 EXPECT_CALL(*mock_change4, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
498 EXPECT_CALL(*mock_change4, CanBeMerged()).WillRepeatedly(Return(true)); | 498 EXPECT_CALL(*mock_change4, CanBeMerged()).WillRepeatedly(Return(true)); |
499 protector_service_->ShowChange(mock_change4); | 499 protector_service_->ShowChange(mock_change4); |
500 ui_test_utils::RunAllPendingInMessageLoop(); | 500 content::RunAllPendingInMessageLoop(); |
501 | 501 |
502 // The 4th change is shown independently. | 502 // The 4th change is shown independently. |
503 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 503 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
504 EXPECT_TRUE(IsGlobalErrorActive(mock_change4)); | 504 EXPECT_TRUE(IsGlobalErrorActive(mock_change4)); |
505 EXPECT_EQ(mock_change4, protector_service_->GetLastChange()); | 505 EXPECT_EQ(mock_change4, protector_service_->GetLastChange()); |
506 | 506 |
507 protector_service_->DismissChange(composite_change); | 507 protector_service_->DismissChange(composite_change); |
508 protector_service_->DismissChange(mock_change4); | 508 protector_service_->DismissChange(mock_change4); |
509 ui_test_utils::RunAllPendingInMessageLoop(); | 509 content::RunAllPendingInMessageLoop(); |
510 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); | 510 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
511 EXPECT_FALSE(IsGlobalErrorActive(mock_change4)); | 511 EXPECT_FALSE(IsGlobalErrorActive(mock_change4)); |
512 EXPECT_FALSE(protector_service_->GetLastChange()); | 512 EXPECT_FALSE(protector_service_->GetLastChange()); |
513 } | 513 } |
514 | 514 |
515 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismissSingle) { | 515 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, ShowCompositeAndDismissSingle) { |
516 GURL url1("http://example.com/"); | 516 GURL url1("http://example.com/"); |
517 GURL url2("http://example.net/"); | 517 GURL url2("http://example.net/"); |
518 | 518 |
519 // Show the first change. | 519 // Show the first change. |
520 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 520 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
521 WillOnce(Return(true)); | 521 WillOnce(Return(true)); |
522 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 522 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
523 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 523 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
524 protector_service_->ShowChange(mock_change_); | 524 protector_service_->ShowChange(mock_change_); |
525 ui_test_utils::RunAllPendingInMessageLoop(); | 525 content::RunAllPendingInMessageLoop(); |
526 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 526 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
527 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 527 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
528 | 528 |
529 // ProtectService will own this change instance as well. | 529 // ProtectService will own this change instance as well. |
530 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 530 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
531 // Show the second change. | 531 // Show the second change. |
532 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 532 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
533 WillOnce(Return(true)); | 533 WillOnce(Return(true)); |
534 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 534 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
535 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 535 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
536 protector_service_->ShowChange(mock_change2); | 536 protector_service_->ShowChange(mock_change2); |
537 ui_test_utils::RunAllPendingInMessageLoop(); | 537 content::RunAllPendingInMessageLoop(); |
538 | 538 |
539 // Now ProtectorService should be showing a single composite change. | 539 // Now ProtectorService should be showing a single composite change. |
540 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 540 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
541 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 541 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
542 | 542 |
543 BaseSettingChange* composite_change = protector_service_->GetLastChange(); | 543 BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
544 ASSERT_TRUE(composite_change); | 544 ASSERT_TRUE(composite_change); |
545 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 545 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
546 | 546 |
547 // Show the third change with a different URL. | 547 // Show the third change with a different URL. |
548 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); | 548 MockSettingChange* mock_change3 = new NiceMock<MockSettingChange>(); |
549 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). | 549 EXPECT_CALL(*mock_change3, MockInit(browser()->profile())). |
550 WillOnce(Return(true)); | 550 WillOnce(Return(true)); |
551 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url2)); | 551 EXPECT_CALL(*mock_change3, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
552 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); | 552 EXPECT_CALL(*mock_change3, CanBeMerged()).WillRepeatedly(Return(true)); |
553 protector_service_->ShowChange(mock_change3); | 553 protector_service_->ShowChange(mock_change3); |
554 ui_test_utils::RunAllPendingInMessageLoop(); | 554 content::RunAllPendingInMessageLoop(); |
555 | 555 |
556 // The third change should not be composed with the previous. | 556 // The third change should not be composed with the previous. |
557 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); | 557 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
558 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 558 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
559 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); | 559 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
560 | 560 |
561 // Now dismiss the first change. | 561 // Now dismiss the first change. |
562 protector_service_->DismissChange(mock_change_); | 562 protector_service_->DismissChange(mock_change_); |
563 ui_test_utils::RunAllPendingInMessageLoop(); | 563 content::RunAllPendingInMessageLoop(); |
564 | 564 |
565 // This should effectively dismiss the whole composite change. | 565 // This should effectively dismiss the whole composite change. |
566 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); | 566 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
567 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); | 567 EXPECT_TRUE(IsGlobalErrorActive(mock_change3)); |
568 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); | 568 EXPECT_EQ(mock_change3, protector_service_->GetLastChange()); |
569 | 569 |
570 protector_service_->DismissChange(mock_change3); | 570 protector_service_->DismissChange(mock_change3); |
571 ui_test_utils::RunAllPendingInMessageLoop(); | 571 content::RunAllPendingInMessageLoop(); |
572 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); | 572 EXPECT_FALSE(IsGlobalErrorActive(mock_change3)); |
573 EXPECT_FALSE(protector_service_->GetLastChange()); | 573 EXPECT_FALSE(protector_service_->GetLastChange()); |
574 } | 574 } |
575 | 575 |
576 // Verifies that changes with different URLs but same domain are merged. | 576 // Verifies that changes with different URLs but same domain are merged. |
577 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, SameDomainDifferentURLs) { | 577 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, SameDomainDifferentURLs) { |
578 GURL url1("http://www.example.com/abc"); | 578 GURL url1("http://www.example.com/abc"); |
579 GURL url2("http://example.com/def"); | 579 GURL url2("http://example.com/def"); |
580 | 580 |
581 // Show the first change with some non-empty URL. | 581 // Show the first change with some non-empty URL. |
582 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 582 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
583 WillOnce(Return(true)); | 583 WillOnce(Return(true)); |
584 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 584 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
585 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 585 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
586 protector_service_->ShowChange(mock_change_); | 586 protector_service_->ShowChange(mock_change_); |
587 ui_test_utils::RunAllPendingInMessageLoop(); | 587 content::RunAllPendingInMessageLoop(); |
588 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 588 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
589 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 589 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
590 | 590 |
591 // ProtectService will own this change instance as well. | 591 // ProtectService will own this change instance as well. |
592 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 592 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
593 // Show the second change with another non-empty URL having same domain. | 593 // Show the second change with another non-empty URL having same domain. |
594 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 594 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
595 WillOnce(Return(true)); | 595 WillOnce(Return(true)); |
596 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); | 596 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
597 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 597 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
598 protector_service_->ShowChange(mock_change2); | 598 protector_service_->ShowChange(mock_change2); |
599 ui_test_utils::RunAllPendingInMessageLoop(); | 599 content::RunAllPendingInMessageLoop(); |
600 | 600 |
601 // Changes should be merged. | 601 // Changes should be merged. |
602 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 602 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
603 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 603 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
604 | 604 |
605 BaseSettingChange* composite_change = protector_service_->GetLastChange(); | 605 BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
606 ASSERT_TRUE(composite_change); | 606 ASSERT_TRUE(composite_change); |
607 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 607 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
608 | 608 |
609 protector_service_->DismissChange(composite_change); | 609 protector_service_->DismissChange(composite_change); |
610 ui_test_utils::RunAllPendingInMessageLoop(); | 610 content::RunAllPendingInMessageLoop(); |
611 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); | 611 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
612 EXPECT_FALSE(protector_service_->GetLastChange()); | 612 EXPECT_FALSE(protector_service_->GetLastChange()); |
613 } | 613 } |
614 | 614 |
615 // Verifies that changes with different Google URLs are merged. | 615 // Verifies that changes with different Google URLs are merged. |
616 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, DifferentGoogleDomains) { | 616 IN_PROC_BROWSER_TEST_F(ProtectorServiceTest, DifferentGoogleDomains) { |
617 GURL url1("http://www.google.com/search?q="); | 617 GURL url1("http://www.google.com/search?q="); |
618 GURL url2("http://google.ru/search?q="); | 618 GURL url2("http://google.ru/search?q="); |
619 | 619 |
620 // Show the first change with some non-empty URL. | 620 // Show the first change with some non-empty URL. |
621 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). | 621 EXPECT_CALL(*mock_change_, MockInit(browser()->profile())). |
622 WillOnce(Return(true)); | 622 WillOnce(Return(true)); |
623 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); | 623 EXPECT_CALL(*mock_change_, GetNewSettingURL()).WillRepeatedly(Return(url1)); |
624 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); | 624 EXPECT_CALL(*mock_change_, CanBeMerged()).WillRepeatedly(Return(true)); |
625 protector_service_->ShowChange(mock_change_); | 625 protector_service_->ShowChange(mock_change_); |
626 ui_test_utils::RunAllPendingInMessageLoop(); | 626 content::RunAllPendingInMessageLoop(); |
627 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); | 627 EXPECT_TRUE(IsGlobalErrorActive(mock_change_)); |
628 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); | 628 EXPECT_EQ(mock_change_, protector_service_->GetLastChange()); |
629 | 629 |
630 // ProtectService will own this change instance as well. | 630 // ProtectService will own this change instance as well. |
631 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); | 631 MockSettingChange* mock_change2 = new NiceMock<MockSettingChange>(); |
632 // Show the second change with another non-empty URL having same domain. | 632 // Show the second change with another non-empty URL having same domain. |
633 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). | 633 EXPECT_CALL(*mock_change2, MockInit(browser()->profile())). |
634 WillOnce(Return(true)); | 634 WillOnce(Return(true)); |
635 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); | 635 EXPECT_CALL(*mock_change2, GetNewSettingURL()).WillRepeatedly(Return(url2)); |
636 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); | 636 EXPECT_CALL(*mock_change2, CanBeMerged()).WillRepeatedly(Return(true)); |
637 protector_service_->ShowChange(mock_change2); | 637 protector_service_->ShowChange(mock_change2); |
638 ui_test_utils::RunAllPendingInMessageLoop(); | 638 content::RunAllPendingInMessageLoop(); |
639 | 639 |
640 // Changes should be merged. | 640 // Changes should be merged. |
641 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); | 641 EXPECT_FALSE(IsGlobalErrorActive(mock_change_)); |
642 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); | 642 EXPECT_FALSE(IsGlobalErrorActive(mock_change2)); |
643 | 643 |
644 BaseSettingChange* composite_change = protector_service_->GetLastChange(); | 644 BaseSettingChange* composite_change = protector_service_->GetLastChange(); |
645 ASSERT_TRUE(composite_change); | 645 ASSERT_TRUE(composite_change); |
646 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); | 646 EXPECT_TRUE(IsGlobalErrorActive(composite_change)); |
647 | 647 |
648 protector_service_->DismissChange(composite_change); | 648 protector_service_->DismissChange(composite_change); |
649 ui_test_utils::RunAllPendingInMessageLoop(); | 649 content::RunAllPendingInMessageLoop(); |
650 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); | 650 EXPECT_FALSE(IsGlobalErrorActive(composite_change)); |
651 EXPECT_FALSE(protector_service_->GetLastChange()); | 651 EXPECT_FALSE(protector_service_->GetLastChange()); |
652 } | 652 } |
653 | 653 |
654 // TODO(ivankr): Timeout test. | 654 // TODO(ivankr): Timeout test. |
655 | 655 |
656 } // namespace protector | 656 } // namespace protector |
OLD | NEW |