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 "components/web_modal/web_contents_modal_dialog_manager.h" | 5 #include "components/web_modal/web_contents_modal_dialog_manager.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 | 135 |
136 // Test that the dialog is shown immediately when the delegate indicates the web | 136 // Test that the dialog is shown immediately when the delegate indicates the web |
137 // contents is visible. | 137 // contents is visible. |
138 TEST_F(WebContentsModalDialogManagerTest, WebContentsVisible) { | 138 TEST_F(WebContentsModalDialogManagerTest, WebContentsVisible) { |
139 // Dialog should be shown while WebContents is visible. | 139 // Dialog should be shown while WebContents is visible. |
140 const gfx::NativeWindow dialog = MakeFakeDialog(); | 140 const gfx::NativeWindow dialog = MakeFakeDialog(); |
141 | 141 |
142 NativeManagerTracker tracker; | 142 NativeManagerTracker tracker; |
143 TestNativeWebContentsModalDialogManager* native_manager = | 143 TestNativeWebContentsModalDialogManager* native_manager = |
144 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); | 144 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); |
145 manager->ShowDialogWithManager(dialog, | 145 manager->ShowDialogWithManager( |
146 scoped_ptr<SingleWebContentsDialogManager>(native_manager).Pass()); | 146 dialog, scoped_ptr<SingleWebContentsDialogManager>(native_manager)); |
147 | 147 |
148 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker.state_); | 148 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker.state_); |
149 EXPECT_TRUE(manager->IsDialogActive()); | 149 EXPECT_TRUE(manager->IsDialogActive()); |
150 EXPECT_TRUE(delegate->web_contents_blocked()); | 150 EXPECT_TRUE(delegate->web_contents_blocked()); |
151 EXPECT_TRUE(tracker.was_shown_); | 151 EXPECT_TRUE(tracker.was_shown_); |
152 | 152 |
153 native_manager->StopTracking(); | 153 native_manager->StopTracking(); |
154 } | 154 } |
155 | 155 |
156 // Test that the dialog is not shown immediately when the delegate indicates the | 156 // Test that the dialog is not shown immediately when the delegate indicates the |
157 // web contents is not visible. | 157 // web contents is not visible. |
158 TEST_F(WebContentsModalDialogManagerTest, WebContentsNotVisible) { | 158 TEST_F(WebContentsModalDialogManagerTest, WebContentsNotVisible) { |
159 // Dialog should not be shown while WebContents is not visible. | 159 // Dialog should not be shown while WebContents is not visible. |
160 delegate->set_web_contents_visible(false); | 160 delegate->set_web_contents_visible(false); |
161 | 161 |
162 const gfx::NativeWindow dialog = MakeFakeDialog(); | 162 const gfx::NativeWindow dialog = MakeFakeDialog(); |
163 | 163 |
164 NativeManagerTracker tracker; | 164 NativeManagerTracker tracker; |
165 TestNativeWebContentsModalDialogManager* native_manager = | 165 TestNativeWebContentsModalDialogManager* native_manager = |
166 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); | 166 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); |
167 manager->ShowDialogWithManager(dialog, | 167 manager->ShowDialogWithManager( |
168 scoped_ptr<SingleWebContentsDialogManager>(native_manager).Pass()); | 168 dialog, scoped_ptr<SingleWebContentsDialogManager>(native_manager)); |
169 | 169 |
170 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker.state_); | 170 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker.state_); |
171 EXPECT_TRUE(manager->IsDialogActive()); | 171 EXPECT_TRUE(manager->IsDialogActive()); |
172 EXPECT_TRUE(delegate->web_contents_blocked()); | 172 EXPECT_TRUE(delegate->web_contents_blocked()); |
173 EXPECT_FALSE(tracker.was_shown_); | 173 EXPECT_FALSE(tracker.was_shown_); |
174 | 174 |
175 native_manager->StopTracking(); | 175 native_manager->StopTracking(); |
176 } | 176 } |
177 | 177 |
178 // Test that only the first of multiple dialogs is shown. | 178 // Test that only the first of multiple dialogs is shown. |
179 TEST_F(WebContentsModalDialogManagerTest, ShowDialogs) { | 179 TEST_F(WebContentsModalDialogManagerTest, ShowDialogs) { |
180 const gfx::NativeWindow dialog1 = MakeFakeDialog(); | 180 const gfx::NativeWindow dialog1 = MakeFakeDialog(); |
181 const gfx::NativeWindow dialog2 = MakeFakeDialog(); | 181 const gfx::NativeWindow dialog2 = MakeFakeDialog(); |
182 const gfx::NativeWindow dialog3 = MakeFakeDialog(); | 182 const gfx::NativeWindow dialog3 = MakeFakeDialog(); |
183 | 183 |
184 NativeManagerTracker tracker1; | 184 NativeManagerTracker tracker1; |
185 NativeManagerTracker tracker2; | 185 NativeManagerTracker tracker2; |
186 NativeManagerTracker tracker3; | 186 NativeManagerTracker tracker3; |
187 TestNativeWebContentsModalDialogManager* native_manager1 = | 187 TestNativeWebContentsModalDialogManager* native_manager1 = |
188 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); | 188 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); |
189 TestNativeWebContentsModalDialogManager* native_manager2 = | 189 TestNativeWebContentsModalDialogManager* native_manager2 = |
190 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); | 190 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); |
191 TestNativeWebContentsModalDialogManager* native_manager3 = | 191 TestNativeWebContentsModalDialogManager* native_manager3 = |
192 new TestNativeWebContentsModalDialogManager(dialog3, manager, &tracker3); | 192 new TestNativeWebContentsModalDialogManager(dialog3, manager, &tracker3); |
193 manager->ShowDialogWithManager(dialog1, | 193 manager->ShowDialogWithManager( |
194 scoped_ptr<SingleWebContentsDialogManager>(native_manager1).Pass()); | 194 dialog1, scoped_ptr<SingleWebContentsDialogManager>(native_manager1)); |
195 manager->ShowDialogWithManager(dialog2, | 195 manager->ShowDialogWithManager( |
196 scoped_ptr<SingleWebContentsDialogManager>(native_manager2).Pass()); | 196 dialog2, scoped_ptr<SingleWebContentsDialogManager>(native_manager2)); |
197 manager->ShowDialogWithManager(dialog3, | 197 manager->ShowDialogWithManager( |
198 scoped_ptr<SingleWebContentsDialogManager>(native_manager3).Pass()); | 198 dialog3, scoped_ptr<SingleWebContentsDialogManager>(native_manager3)); |
199 | 199 |
200 EXPECT_TRUE(delegate->web_contents_blocked()); | 200 EXPECT_TRUE(delegate->web_contents_blocked()); |
201 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker1.state_); | 201 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker1.state_); |
202 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker2.state_); | 202 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker2.state_); |
203 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker3.state_); | 203 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker3.state_); |
204 | 204 |
205 native_manager1->StopTracking(); | 205 native_manager1->StopTracking(); |
206 native_manager2->StopTracking(); | 206 native_manager2->StopTracking(); |
207 native_manager3->StopTracking(); | 207 native_manager3->StopTracking(); |
208 } | 208 } |
209 | 209 |
210 // Test that the dialog is shown/hidden when the WebContents is shown/hidden. | 210 // Test that the dialog is shown/hidden when the WebContents is shown/hidden. |
211 TEST_F(WebContentsModalDialogManagerTest, VisibilityObservation) { | 211 TEST_F(WebContentsModalDialogManagerTest, VisibilityObservation) { |
212 const gfx::NativeWindow dialog = MakeFakeDialog(); | 212 const gfx::NativeWindow dialog = MakeFakeDialog(); |
213 | 213 |
214 NativeManagerTracker tracker; | 214 NativeManagerTracker tracker; |
215 TestNativeWebContentsModalDialogManager* native_manager = | 215 TestNativeWebContentsModalDialogManager* native_manager = |
216 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); | 216 new TestNativeWebContentsModalDialogManager(dialog, manager, &tracker); |
217 manager->ShowDialogWithManager(dialog, | 217 manager->ShowDialogWithManager( |
218 scoped_ptr<SingleWebContentsDialogManager>(native_manager).Pass()); | 218 dialog, scoped_ptr<SingleWebContentsDialogManager>(native_manager)); |
219 | 219 |
220 EXPECT_TRUE(manager->IsDialogActive()); | 220 EXPECT_TRUE(manager->IsDialogActive()); |
221 EXPECT_TRUE(delegate->web_contents_blocked()); | 221 EXPECT_TRUE(delegate->web_contents_blocked()); |
222 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker.state_); | 222 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker.state_); |
223 | 223 |
224 test_api->WebContentsWasHidden(); | 224 test_api->WebContentsWasHidden(); |
225 | 225 |
226 EXPECT_TRUE(manager->IsDialogActive()); | 226 EXPECT_TRUE(manager->IsDialogActive()); |
227 EXPECT_TRUE(delegate->web_contents_blocked()); | 227 EXPECT_TRUE(delegate->web_contents_blocked()); |
228 EXPECT_EQ(NativeManagerTracker::HIDDEN, tracker.state_); | 228 EXPECT_EQ(NativeManagerTracker::HIDDEN, tracker.state_); |
(...skipping 11 matching lines...) Expand all Loading... |
240 TEST_F(WebContentsModalDialogManagerTest, InterstitialPage) { | 240 TEST_F(WebContentsModalDialogManagerTest, InterstitialPage) { |
241 const gfx::NativeWindow dialog1 = MakeFakeDialog(); | 241 const gfx::NativeWindow dialog1 = MakeFakeDialog(); |
242 const gfx::NativeWindow dialog2 = MakeFakeDialog(); | 242 const gfx::NativeWindow dialog2 = MakeFakeDialog(); |
243 | 243 |
244 NativeManagerTracker tracker1; | 244 NativeManagerTracker tracker1; |
245 NativeManagerTracker tracker2; | 245 NativeManagerTracker tracker2; |
246 TestNativeWebContentsModalDialogManager* native_manager1 = | 246 TestNativeWebContentsModalDialogManager* native_manager1 = |
247 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); | 247 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); |
248 TestNativeWebContentsModalDialogManager* native_manager2 = | 248 TestNativeWebContentsModalDialogManager* native_manager2 = |
249 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); | 249 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); |
250 manager->ShowDialogWithManager(dialog1, | 250 manager->ShowDialogWithManager( |
251 scoped_ptr<SingleWebContentsDialogManager>(native_manager1).Pass()); | 251 dialog1, scoped_ptr<SingleWebContentsDialogManager>(native_manager1)); |
252 manager->ShowDialogWithManager(dialog2, | 252 manager->ShowDialogWithManager( |
253 scoped_ptr<SingleWebContentsDialogManager>(native_manager2).Pass()); | 253 dialog2, scoped_ptr<SingleWebContentsDialogManager>(native_manager2)); |
254 | 254 |
255 test_api->DidAttachInterstitialPage(); | 255 test_api->DidAttachInterstitialPage(); |
256 | 256 |
257 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker1.state_); | 257 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker1.state_); |
258 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker2.state_); | 258 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker2.state_); |
259 | 259 |
260 EXPECT_TRUE(tracker1.was_shown_); | 260 EXPECT_TRUE(tracker1.was_shown_); |
261 EXPECT_FALSE(tracker2.was_shown_); | 261 EXPECT_FALSE(tracker2.was_shown_); |
262 } | 262 } |
263 | 263 |
(...skipping 12 matching lines...) Expand all Loading... |
276 NativeManagerTracker tracker3; | 276 NativeManagerTracker tracker3; |
277 NativeManagerTracker tracker4; | 277 NativeManagerTracker tracker4; |
278 TestNativeWebContentsModalDialogManager* native_manager1 = | 278 TestNativeWebContentsModalDialogManager* native_manager1 = |
279 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); | 279 new TestNativeWebContentsModalDialogManager(dialog1, manager, &tracker1); |
280 TestNativeWebContentsModalDialogManager* native_manager2 = | 280 TestNativeWebContentsModalDialogManager* native_manager2 = |
281 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); | 281 new TestNativeWebContentsModalDialogManager(dialog2, manager, &tracker2); |
282 TestNativeWebContentsModalDialogManager* native_manager3 = | 282 TestNativeWebContentsModalDialogManager* native_manager3 = |
283 new TestNativeWebContentsModalDialogManager(dialog3, manager, &tracker3); | 283 new TestNativeWebContentsModalDialogManager(dialog3, manager, &tracker3); |
284 TestNativeWebContentsModalDialogManager* native_manager4 = | 284 TestNativeWebContentsModalDialogManager* native_manager4 = |
285 new TestNativeWebContentsModalDialogManager(dialog4, manager, &tracker4); | 285 new TestNativeWebContentsModalDialogManager(dialog4, manager, &tracker4); |
286 manager->ShowDialogWithManager(dialog1, | 286 manager->ShowDialogWithManager( |
287 scoped_ptr<SingleWebContentsDialogManager>(native_manager1).Pass()); | 287 dialog1, scoped_ptr<SingleWebContentsDialogManager>(native_manager1)); |
288 manager->ShowDialogWithManager(dialog2, | 288 manager->ShowDialogWithManager( |
289 scoped_ptr<SingleWebContentsDialogManager>(native_manager2).Pass()); | 289 dialog2, scoped_ptr<SingleWebContentsDialogManager>(native_manager2)); |
290 manager->ShowDialogWithManager(dialog3, | 290 manager->ShowDialogWithManager( |
291 scoped_ptr<SingleWebContentsDialogManager>(native_manager3).Pass()); | 291 dialog3, scoped_ptr<SingleWebContentsDialogManager>(native_manager3)); |
292 manager->ShowDialogWithManager(dialog4, | 292 manager->ShowDialogWithManager( |
293 scoped_ptr<SingleWebContentsDialogManager>(native_manager4).Pass()); | 293 dialog4, scoped_ptr<SingleWebContentsDialogManager>(native_manager4)); |
294 | 294 |
295 native_manager1->Close(); | 295 native_manager1->Close(); |
296 | 296 |
297 EXPECT_TRUE(manager->IsDialogActive()); | 297 EXPECT_TRUE(manager->IsDialogActive()); |
298 EXPECT_TRUE(delegate->web_contents_blocked()); | 298 EXPECT_TRUE(delegate->web_contents_blocked()); |
299 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker1.state_); | 299 EXPECT_EQ(NativeManagerTracker::CLOSED, tracker1.state_); |
300 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker2.state_); | 300 EXPECT_EQ(NativeManagerTracker::SHOWN, tracker2.state_); |
301 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker3.state_); | 301 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker3.state_); |
302 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker4.state_); | 302 EXPECT_EQ(NativeManagerTracker::NOT_SHOWN, tracker4.state_); |
303 | 303 |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
338 // Test that CloseAllDialogs does what it says. | 338 // Test that CloseAllDialogs does what it says. |
339 TEST_F(WebContentsModalDialogManagerTest, CloseAllDialogs) { | 339 TEST_F(WebContentsModalDialogManagerTest, CloseAllDialogs) { |
340 const int kWindowCount = 4; | 340 const int kWindowCount = 4; |
341 NativeManagerTracker trackers[kWindowCount]; | 341 NativeManagerTracker trackers[kWindowCount]; |
342 TestNativeWebContentsModalDialogManager* native_managers[kWindowCount]; | 342 TestNativeWebContentsModalDialogManager* native_managers[kWindowCount]; |
343 for (int i = 0; i < kWindowCount; i++) { | 343 for (int i = 0; i < kWindowCount; i++) { |
344 const gfx::NativeWindow dialog = MakeFakeDialog(); | 344 const gfx::NativeWindow dialog = MakeFakeDialog(); |
345 native_managers[i] = | 345 native_managers[i] = |
346 new TestNativeWebContentsModalDialogManager( | 346 new TestNativeWebContentsModalDialogManager( |
347 dialog, manager, &(trackers[i])); | 347 dialog, manager, &(trackers[i])); |
348 manager->ShowDialogWithManager(dialog, | 348 manager->ShowDialogWithManager( |
349 scoped_ptr<SingleWebContentsDialogManager>( | 349 dialog, scoped_ptr<SingleWebContentsDialogManager>(native_managers[i])); |
350 native_managers[i]).Pass()); | |
351 } | 350 } |
352 | 351 |
353 for (int i = 0; i < kWindowCount; i++) | 352 for (int i = 0; i < kWindowCount; i++) |
354 EXPECT_NE(NativeManagerTracker::CLOSED, trackers[i].state_); | 353 EXPECT_NE(NativeManagerTracker::CLOSED, trackers[i].state_); |
355 | 354 |
356 test_api->CloseAllDialogs(); | 355 test_api->CloseAllDialogs(); |
357 | 356 |
358 EXPECT_FALSE(delegate->web_contents_blocked()); | 357 EXPECT_FALSE(delegate->web_contents_blocked()); |
359 EXPECT_FALSE(manager->IsDialogActive()); | 358 EXPECT_FALSE(manager->IsDialogActive()); |
360 for (int i = 0; i < kWindowCount; i++) | 359 for (int i = 0; i < kWindowCount; i++) |
361 EXPECT_EQ(NativeManagerTracker::CLOSED, trackers[i].state_); | 360 EXPECT_EQ(NativeManagerTracker::CLOSED, trackers[i].state_); |
362 } | 361 } |
363 | 362 |
364 } // namespace web_modal | 363 } // namespace web_modal |
OLD | NEW |