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

Side by Side Diff: chrome/browser/ui/cocoa/download/download_shelf_controller_unittest.mm

Issue 209613002: Download shelf autohides on showing in shell, just same as regular open Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added browser and unit tests. Renamed 'UserActed' to 'OpenedOrShown'. Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h" 5 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h"
6 6
7 #import <Cocoa/Cocoa.h> 7 #import <Cocoa/Cocoa.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
11 11
12 #import "base/mac/scoped_block.h" 12 #import "base/mac/scoped_block.h"
13 #import "base/mac/scoped_nsobject.h" 13 #import "base/mac/scoped_nsobject.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "chrome/browser/download/download_item_model.h"
15 #include "chrome/browser/download/download_shelf.h" 16 #include "chrome/browser/download/download_shelf.h"
16 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 17 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
17 #import "chrome/browser/ui/cocoa/download/download_item_controller.h" 18 #import "chrome/browser/ui/cocoa/download/download_item_controller.h"
18 #import "chrome/browser/ui/cocoa/view_resizer_pong.h" 19 #import "chrome/browser/ui/cocoa/view_resizer_pong.h"
19 #include "content/public/test/mock_download_item.h" 20 #include "content/public/test/mock_download_item.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "testing/platform_test.h" 22 #include "testing/platform_test.h"
22 #import "third_party/ocmock/OCMock/OCMock.h" 23 #import "third_party/ocmock/OCMock/OCMock.h"
23 #import "third_party/ocmock/gtest_support.h" 24 #import "third_party/ocmock/gtest_support.h"
24 #import "ui/events/test/cocoa_test_event_utils.h" 25 #import "ui/events/test/cocoa_test_event_utils.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_); 246 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_);
246 shelf_.get()->cancelAutoCloseCount_ = 0; 247 shelf_.get()->cancelAutoCloseCount_ = 0;
247 248
248 // The mouse enters the shelf. 249 // The mouse enters the shelf.
249 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()]; 250 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()];
250 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 251 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
251 252
252 // The download opens. 253 // The download opens.
253 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened()) 254 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened())
254 .WillRepeatedly(Return(true)); 255 .WillRepeatedly(Return(true));
255 [shelf_ downloadWasOpened:item.get()]; 256 [shelf_ downloadWasOpenedOrShown:item.get()];
256 257
257 // The shelf should now be waiting for the mouse to exit. 258 // The shelf should now be waiting for the mouse to exit.
258 EXPECT_TRUE([shelf_ isVisible]); 259 EXPECT_TRUE([shelf_ isVisible]);
259 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 260 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
260 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_); 261 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_);
261 262
262 // The mouse exits the shelf. autoClose should be scheduled now. 263 // The mouse exits the shelf. autoClose should be scheduled now.
263 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()]; 264 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()];
264 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_); 265 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_);
265 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_); 266 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_);
266 267
267 // The mouse enters the shelf again. The autoClose should be cancelled. 268 // The mouse enters the shelf again. The autoClose should be cancelled.
268 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()]; 269 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()];
269 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_); 270 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_);
270 EXPECT_EQ(1, shelf_.get()->cancelAutoCloseCount_); 271 EXPECT_EQ(1, shelf_.get()->cancelAutoCloseCount_);
271 } 272 }
272 273
273 // Test of autoclosing behavior after opening a download item. 274 // Test of autoclosing behavior after opening a download item.
274 TEST_F(DownloadShelfControllerTest, AutoCloseAfterOpenWithMouseOffShelf) { 275 TEST_F(DownloadShelfControllerTest, AutoCloseAfterOpenWithMouseOffShelf) {
275 base::scoped_nsobject<DownloadItemController> item(CreateItemController()); 276 base::scoped_nsobject<DownloadItemController> item(CreateItemController());
276 [shelf_ showDownloadShelf:YES 277 [shelf_ showDownloadShelf:YES
277 isUserAction:NO]; 278 isUserAction:NO];
278 EXPECT_TRUE([shelf_ isVisible]); 279 EXPECT_TRUE([shelf_ isVisible]);
279 [shelf_ add:item.get()]; 280 [shelf_ add:item.get()];
280 281
281 // The download is opened. 282 // The download is opened.
282 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened()) 283 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened())
283 .WillRepeatedly(Return(true)); 284 .WillRepeatedly(Return(true));
284 [shelf_ downloadWasOpened:item.get()]; 285 [shelf_ downloadWasOpenedOrShown:item.get()];
285 286
286 // The shelf should be closed immediately since the mouse is not over the 287 // The shelf should be closed immediately since the mouse is not over the
287 // shelf. 288 // shelf.
288 EXPECT_FALSE([shelf_ isVisible]); 289 EXPECT_FALSE([shelf_ isVisible]);
289 } 290 }
290 291
291 // Test that if the shelf is closed while an autoClose is pending, the pending 292 // Test that if the shelf is closed while an autoClose is pending, the pending
292 // autoClose is cancelled. 293 // autoClose is cancelled.
293 TEST_F(DownloadShelfControllerTest, CloseWithPendingAutoClose) { 294 TEST_F(DownloadShelfControllerTest, CloseWithPendingAutoClose) {
294 base::scoped_nsobject<DownloadItemController> item(CreateItemController()); 295 base::scoped_nsobject<DownloadItemController> item(CreateItemController());
295 [shelf_ showDownloadShelf:YES 296 [shelf_ showDownloadShelf:YES
296 isUserAction:NO]; 297 isUserAction:NO];
297 EXPECT_TRUE([shelf_ isVisible]); 298 EXPECT_TRUE([shelf_ isVisible]);
298 [shelf_ add:item.get()]; 299 [shelf_ add:item.get()];
299 // Expect 2 cancelAutoClose calls: From the showDownloadShelf: call and the 300 // Expect 2 cancelAutoClose calls: From the showDownloadShelf: call and the
300 // add: call. 301 // add: call.
301 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_); 302 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_);
302 shelf_.get()->cancelAutoCloseCount_ = 0; 303 shelf_.get()->cancelAutoCloseCount_ = 0;
303 304
304 // The mouse enters the shelf. 305 // The mouse enters the shelf.
305 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()]; 306 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()];
306 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 307 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
307 308
308 // The download opens. 309 // The download opens.
309 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened()) 310 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened())
310 .WillRepeatedly(Return(true)); 311 .WillRepeatedly(Return(true));
311 [shelf_ downloadWasOpened:item.get()]; 312 [shelf_ downloadWasOpenedOrShown:item.get()];
312 313
313 // The shelf should now be waiting for the mouse to exit. autoClose should not 314 // The shelf should now be waiting for the mouse to exit. autoClose should not
314 // be scheduled yet. 315 // be scheduled yet.
315 EXPECT_TRUE([shelf_ isVisible]); 316 EXPECT_TRUE([shelf_ isVisible]);
316 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 317 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
317 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_); 318 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_);
318 319
319 // The mouse exits the shelf. autoClose should be scheduled now. 320 // The mouse exits the shelf. autoClose should be scheduled now.
320 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()]; 321 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()];
321 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_); 322 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_);
(...skipping 20 matching lines...) Expand all
342 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_); 343 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_);
343 shelf_.get()->cancelAutoCloseCount_ = 0; 344 shelf_.get()->cancelAutoCloseCount_ = 0;
344 345
345 // The mouse enters the shelf. 346 // The mouse enters the shelf.
346 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()]; 347 [shelf_ mouseEntered:cocoa_test_event_utils::EnterEvent()];
347 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 348 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
348 349
349 // The download opens. 350 // The download opens.
350 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened()) 351 EXPECT_CALL(*[[item wrappedMockDownload] mockDownload], GetOpened())
351 .WillRepeatedly(Return(true)); 352 .WillRepeatedly(Return(true));
352 [shelf_ downloadWasOpened:item.get()]; 353 [shelf_ downloadWasOpenedOrShown:item.get()];
353 354
354 // The shelf should now be waiting for the mouse to exit. autoClose should not 355 // The shelf should now be waiting for the mouse to exit. autoClose should not
355 // be scheduled yet. 356 // be scheduled yet.
356 EXPECT_TRUE([shelf_ isVisible]); 357 EXPECT_TRUE([shelf_ isVisible]);
357 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 358 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
358 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_); 359 EXPECT_EQ(0, shelf_.get()->cancelAutoCloseCount_);
359 360
360 // The mouse exits the shelf. autoClose should be scheduled now. 361 // The mouse exits the shelf. autoClose should be scheduled now.
361 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()]; 362 [shelf_ mouseExited:cocoa_test_event_utils::ExitEvent()];
362 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_); 363 EXPECT_EQ(1, shelf_.get()->scheduleAutoCloseCount_);
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
400 }]; 401 }];
401 [shelf_ showDownloadShelf:NO isUserAction:NO]; 402 [shelf_ showDownloadShelf:NO isUserAction:NO];
402 run_loop.Run(); 403 run_loop.Run();
403 EXPECT_TRUE([[shelf_ view] isHidden]); 404 EXPECT_TRUE([[shelf_ view] isHidden]);
404 405
405 [shelf_ showDownloadShelf:YES isUserAction:NO]; 406 [shelf_ showDownloadShelf:YES isUserAction:NO];
406 EXPECT_FALSE([[shelf_ view] isHidden]); 407 EXPECT_FALSE([[shelf_ view] isHidden]);
407 } 408 }
408 409
409 } // namespace 410 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/download/download_shelf_controller.mm ('k') | chrome/browser/ui/views/download/download_item_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698