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

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

Issue 615663002: Mac: Remove download shelf from AX hierarchy when not visible (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add unit test Created 6 years, 2 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
« no previous file with comments | « chrome/browser/ui/cocoa/download/download_shelf_controller.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <Cocoa/Cocoa.h> 5 #import <Cocoa/Cocoa.h>
6 6
7 #import "base/mac/scoped_block.h"
7 #import "base/mac/scoped_nsobject.h" 8 #import "base/mac/scoped_nsobject.h"
8 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
9 #include "chrome/browser/download/download_shelf.h" 10 #include "chrome/browser/download/download_shelf.h"
10 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h" 11 #include "chrome/browser/ui/cocoa/cocoa_profile_test.h"
11 #import "chrome/browser/ui/cocoa/download/download_item_controller.h" 12 #import "chrome/browser/ui/cocoa/download/download_item_controller.h"
12 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h" 13 #import "chrome/browser/ui/cocoa/download/download_shelf_controller.h"
13 #import "chrome/browser/ui/cocoa/view_resizer_pong.h" 14 #import "chrome/browser/ui/cocoa/view_resizer_pong.h"
14 #include "content/public/test/mock_download_item.h" 15 #include "content/public/test/mock_download_item.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 #include "testing/platform_test.h" 17 #include "testing/platform_test.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 } 54 }
54 - (WrappedMockDownloadItem*)wrappedMockDownload; 55 - (WrappedMockDownloadItem*)wrappedMockDownload;
55 @end 56 @end
56 57
57 @implementation DownloadItemController (DownloadShelfControllerTest) 58 @implementation DownloadItemController (DownloadShelfControllerTest)
58 - (WrappedMockDownloadItem*)wrappedMockDownload { 59 - (WrappedMockDownloadItem*)wrappedMockDownload {
59 return nil; 60 return nil;
60 } 61 }
61 @end 62 @end
62 63
64 @interface DownloadShelfController (Testing)
65 - (void)animationDidEnd:(NSAnimation*)animation;
66 @end
67
63 // Subclass of the DownloadShelfController to override scheduleAutoClose and 68 // Subclass of the DownloadShelfController to override scheduleAutoClose and
64 // cancelAutoClose. During regular operation, a scheduled autoClose waits for 5 69 // cancelAutoClose. During regular operation, a scheduled autoClose waits for 5
65 // seconds before closing the shelf (unless it is cancelled during this 70 // seconds before closing the shelf (unless it is cancelled during this
66 // time). For testing purposes, we count the number of invocations of 71 // time). For testing purposes, we count the number of invocations of
67 // {schedule,cancel}AutoClose instead of actually scheduling and cancelling. 72 // {schedule,cancel}AutoClose instead of actually scheduling and cancelling.
68 @interface CountingDownloadShelfController : DownloadShelfController { 73 @interface CountingDownloadShelfController : DownloadShelfController {
69 @public 74 @public
70 int scheduleAutoCloseCount_; 75 int scheduleAutoCloseCount_;
71 int cancelAutoCloseCount_; 76 int cancelAutoCloseCount_;
77 base::mac::ScopedBlock<dispatch_block_t> closeAnimationHandler_;
72 } 78 }
79
80 // Handler will be called at the end of a close animation.
81 - (void)setCloseAnimationHandler:(dispatch_block_t)handler;
73 @end 82 @end
74 83
75 @implementation CountingDownloadShelfController 84 @implementation CountingDownloadShelfController
76 85
77 -(void)scheduleAutoClose { 86 -(void)scheduleAutoClose {
78 ++scheduleAutoCloseCount_; 87 ++scheduleAutoCloseCount_;
79 } 88 }
80 89
81 -(void)cancelAutoClose { 90 -(void)cancelAutoClose {
82 ++cancelAutoCloseCount_; 91 ++cancelAutoCloseCount_;
83 } 92 }
93
94 - (void)setCloseAnimationHandler:(dispatch_block_t)handler {
95 closeAnimationHandler_.reset(handler);
96 }
97
98 - (void)animationDidEnd:(NSAnimation*)animation {
99 [super animationDidEnd:animation];
100 if (closeAnimationHandler_)
101 closeAnimationHandler_.get()();
102 }
103
84 @end 104 @end
85 105
86 namespace { 106 namespace {
87 107
88 class DownloadShelfControllerTest : public CocoaProfileTest { 108 class DownloadShelfControllerTest : public CocoaProfileTest {
89 public: 109 public:
90 virtual void SetUp() OVERRIDE { 110 virtual void SetUp() OVERRIDE {
91 CocoaProfileTest::SetUp(); 111 CocoaProfileTest::SetUp();
92 ASSERT_TRUE(browser()); 112 ASSERT_TRUE(browser());
93 113
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 [shelf_ add:item.get()]; 373 [shelf_ add:item.get()];
354 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 374 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
355 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_); 375 EXPECT_EQ(2, shelf_.get()->cancelAutoCloseCount_);
356 376
357 [shelf_ exiting]; 377 [shelf_ exiting];
358 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_); 378 EXPECT_EQ(0, shelf_.get()->scheduleAutoCloseCount_);
359 EXPECT_EQ(3, shelf_.get()->cancelAutoCloseCount_); 379 EXPECT_EQ(3, shelf_.get()->cancelAutoCloseCount_);
360 shelf_.reset(); 380 shelf_.reset();
361 } 381 }
362 382
383 // The view should not be hidden when the shelf is shown.
384 // The view should be hidden after the closing animation.
385 TEST_F(DownloadShelfControllerTest, ViewVisibility) {
386 [shelf_ showDownloadShelf:YES isUserAction:NO];
387 EXPECT_FALSE([[shelf_ view] isHidden]);
388
389 [shelf_ setCloseAnimationHandler:^{
390 base::MessageLoop::current()->QuitNow();
391 }];
392 [shelf_ showDownloadShelf:NO isUserAction:NO];
393 base::MessageLoop::current()->Run();
394 EXPECT_TRUE([[shelf_ view] isHidden]);
395
396 [shelf_ showDownloadShelf:YES isUserAction:NO];
397 EXPECT_FALSE([[shelf_ view] isHidden]);
398 }
399
363 } // namespace 400 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/cocoa/download/download_shelf_controller.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698