OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/download/notification/download_item_notification.h" | 5 #include "chrome/browser/download/notification/download_item_notification.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/run_loop.h" | 8 #include "base/run_loop.h" |
9 #include "base/test/test_simple_task_runner.h" | 9 #include "base/test/test_simple_task_runner.h" |
10 #include "base/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 | 28 |
29 namespace { | 29 namespace { |
30 | 30 |
31 const base::FilePath::CharType kDownloadItemTargetPathString[] = | 31 const base::FilePath::CharType kDownloadItemTargetPathString[] = |
32 FILE_PATH_LITERAL("/tmp/TITLE.bin"); | 32 FILE_PATH_LITERAL("/tmp/TITLE.bin"); |
33 | 33 |
34 } // anonymouse namespace | 34 } // anonymouse namespace |
35 | 35 |
36 namespace test { | 36 namespace test { |
37 | 37 |
38 class MockMessageCenter : public message_center::FakeMessageCenter { | |
39 public: | |
40 MockMessageCenter() {} | |
41 ~MockMessageCenter() override {} | |
42 | |
43 void AddVisibleNotification(message_center::Notification* notification) { | |
44 visible_notifications_.insert(notification); | |
45 } | |
46 | |
47 const message_center::NotificationList::Notifications& | |
48 GetVisibleNotifications() override { | |
49 return visible_notifications_; | |
50 } | |
51 | |
52 private: | |
53 message_center::NotificationList::Notifications visible_notifications_; | |
54 | |
55 DISALLOW_COPY_AND_ASSIGN(MockMessageCenter); | |
56 }; | |
57 | |
58 class DownloadItemNotificationTest : public testing::Test { | 38 class DownloadItemNotificationTest : public testing::Test { |
59 public: | 39 public: |
60 DownloadItemNotificationTest() | 40 DownloadItemNotificationTest() |
61 : ui_thread_(content::BrowserThread::UI, &message_loop_), | 41 : ui_thread_(content::BrowserThread::UI, &message_loop_), |
62 profile_(nullptr) {} | 42 profile_(nullptr) {} |
63 | 43 |
64 void SetUp() override { | 44 void SetUp() override { |
65 testing::Test::SetUp(); | 45 testing::Test::SetUp(); |
66 message_center::MessageCenter::Initialize(); | 46 message_center::MessageCenter::Initialize(); |
67 | 47 |
68 profile_manager_.reset( | 48 profile_manager_.reset( |
69 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); | 49 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
70 ASSERT_TRUE(profile_manager_->SetUp()); | 50 ASSERT_TRUE(profile_manager_->SetUp()); |
71 profile_ = profile_manager_->CreateTestingProfile("test-user"); | 51 profile_ = profile_manager_->CreateTestingProfile("test-user"); |
72 | 52 |
73 scoped_ptr<NotificationUIManager> ui_manager(new StubNotificationUIManager); | 53 scoped_ptr<NotificationUIManager> ui_manager(new StubNotificationUIManager); |
74 TestingBrowserProcess::GetGlobal()-> | 54 TestingBrowserProcess::GetGlobal()-> |
75 SetNotificationUIManager(ui_manager.Pass()); | 55 SetNotificationUIManager(ui_manager.Pass()); |
76 | 56 |
77 download_notification_manager_.reset( | 57 download_notification_manager_.reset( |
78 new DownloadNotificationManagerForProfile(profile_, nullptr)); | 58 new DownloadNotificationManagerForProfile(profile_, nullptr)); |
79 | 59 |
80 message_center_.reset(new MockMessageCenter()); | |
81 download_notification_manager_->OverrideMessageCenterForTest( | |
82 message_center_.get()); | |
83 | |
84 base::FilePath download_item_target_path(kDownloadItemTargetPathString); | 60 base::FilePath download_item_target_path(kDownloadItemTargetPathString); |
85 download_item_.reset(new NiceMock<content::MockDownloadItem>()); | 61 download_item_.reset(new NiceMock<content::MockDownloadItem>()); |
86 ON_CALL(*download_item_, GetId()).WillByDefault(Return(12345)); | 62 ON_CALL(*download_item_, GetId()).WillByDefault(Return(12345)); |
87 ON_CALL(*download_item_, GetState()) | 63 ON_CALL(*download_item_, GetState()) |
88 .WillByDefault(Return(content::DownloadItem::IN_PROGRESS)); | 64 .WillByDefault(Return(content::DownloadItem::IN_PROGRESS)); |
89 ON_CALL(*download_item_, IsDangerous()).WillByDefault(Return(false)); | 65 ON_CALL(*download_item_, IsDangerous()).WillByDefault(Return(false)); |
90 ON_CALL(*download_item_, GetFileNameToReportUser()) | 66 ON_CALL(*download_item_, GetFileNameToReportUser()) |
91 .WillByDefault(Return(base::FilePath("TITLE.bin"))); | 67 .WillByDefault(Return(base::FilePath("TITLE.bin"))); |
92 ON_CALL(*download_item_, GetTargetFilePath()) | 68 ON_CALL(*download_item_, GetTargetFilePath()) |
93 .WillByDefault(ReturnRefOfCopy(download_item_target_path)); | 69 .WillByDefault(ReturnRefOfCopy(download_item_target_path)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 } | 128 } |
153 | 129 |
154 bool ShownAsPopUp() { | 130 bool ShownAsPopUp() { |
155 return !notification()->shown_as_popup(); | 131 return !notification()->shown_as_popup(); |
156 } | 132 } |
157 | 133 |
158 void CreateDownloadItemNotification() { | 134 void CreateDownloadItemNotification() { |
159 download_notification_manager_->OnNewDownloadReady(download_item_.get()); | 135 download_notification_manager_->OnNewDownloadReady(download_item_.get()); |
160 download_item_notification_ = | 136 download_item_notification_ = |
161 download_notification_manager_->items_[download_item_.get()]; | 137 download_notification_manager_->items_[download_item_.get()]; |
162 message_center_->AddVisibleNotification( | |
163 download_item_notification_->notification_.get()); | |
164 } | 138 } |
165 | 139 |
166 base::MessageLoopForUI message_loop_; | 140 base::MessageLoopForUI message_loop_; |
167 content::TestBrowserThread ui_thread_; | 141 content::TestBrowserThread ui_thread_; |
168 | 142 |
169 scoped_ptr<TestingProfileManager> profile_manager_; | 143 scoped_ptr<TestingProfileManager> profile_manager_; |
170 Profile* profile_; | 144 Profile* profile_; |
171 | 145 |
172 scoped_ptr<NiceMock<content::MockDownloadItem>> download_item_; | 146 scoped_ptr<NiceMock<content::MockDownloadItem>> download_item_; |
173 scoped_ptr<DownloadNotificationManagerForProfile> | 147 scoped_ptr<DownloadNotificationManagerForProfile> |
174 download_notification_manager_; | 148 download_notification_manager_; |
175 scoped_ptr<MockMessageCenter> message_center_; | |
176 DownloadItemNotification* download_item_notification_; | 149 DownloadItemNotification* download_item_notification_; |
177 }; | 150 }; |
178 | 151 |
179 TEST_F(DownloadItemNotificationTest, ShowAndCloseNotification) { | 152 TEST_F(DownloadItemNotificationTest, ShowAndCloseNotification) { |
180 EXPECT_EQ(0u, NotificationCount()); | 153 EXPECT_EQ(0u, NotificationCount()); |
181 | 154 |
182 // Shows a notification | 155 // Shows a notification |
183 CreateDownloadItemNotification(); | 156 CreateDownloadItemNotification(); |
184 download_item_->NotifyObserversDownloadOpened(); | 157 download_item_->NotifyObserversDownloadOpened(); |
185 | 158 |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 CreateDownloadItemNotification(); | 254 CreateDownloadItemNotification(); |
282 download_item_->NotifyObserversDownloadOpened(); | 255 download_item_->NotifyObserversDownloadOpened(); |
283 | 256 |
284 EXPECT_EQ(message_center::DEFAULT_PRIORITY, notification()->priority()); | 257 EXPECT_EQ(message_center::DEFAULT_PRIORITY, notification()->priority()); |
285 | 258 |
286 download_item_notification_->DisablePopup(); | 259 download_item_notification_->DisablePopup(); |
287 EXPECT_EQ(message_center::LOW_PRIORITY, notification()->priority()); | 260 EXPECT_EQ(message_center::LOW_PRIORITY, notification()->priority()); |
288 } | 261 } |
289 | 262 |
290 } // namespace test | 263 } // namespace test |
OLD | NEW |