Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/strings/utf_string_conversions.h" | 5 #include "base/strings/utf_string_conversions.h" |
| 6 #include "base/threading/platform_thread.h" | 6 #include "base/threading/platform_thread.h" |
| 7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
| 8 #include "chrome/browser/notifications/notification_test_util.h" | 8 #include "chrome/browser/notifications/notification_test_util.h" |
| 9 #include "chrome/browser/notifications/platform_notification_service_impl.h" | 9 #include "chrome/browser/notifications/platform_notification_service_impl.h" |
| 10 #include "chrome/test/base/testing_profile.h" | 10 #include "chrome/test/base/testing_profile.h" |
| 11 #include "components/content_settings/core/browser/host_content_settings_map.h" | 11 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 12 #include "content/public/browser/desktop_notification_delegate.h" | 12 #include "content/public/browser/desktop_notification_delegate.h" |
| 13 #include "content/public/common/platform_notification_data.h" | 13 #include "content/public/common/platform_notification_data.h" |
| 14 #include "content/public/test/test_browser_thread_bundle.h" | 14 #include "content/public/test/test_browser_thread_bundle.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "third_party/skia/include/core/SkBitmap.h" | 16 #include "third_party/skia/include/core/SkBitmap.h" |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 const unsigned kNotificationVibrate[] = { 100, 200, 300 }; | |
|
Peter Beverloo
2015/04/21 17:58:23
nit: blank line
Peter Beverloo
2015/04/21 17:58:23
Please use either int or int64_t here.
Sanghyun Park
2015/04/23 11:08:26
Done.
| |
| 20 #if !defined(OS_ANDROID) | 21 #if !defined(OS_ANDROID) |
| 21 const int64_t kPersistentNotificationId = 42; | 22 const int64_t kPersistentNotificationId = 42; |
| 22 #endif | 23 #endif |
| 23 | 24 |
| 24 class MockDesktopNotificationDelegate | 25 class MockDesktopNotificationDelegate |
| 25 : public content::DesktopNotificationDelegate { | 26 : public content::DesktopNotificationDelegate { |
| 26 public: | 27 public: |
| 27 MockDesktopNotificationDelegate() | 28 MockDesktopNotificationDelegate() |
| 28 : displayed_(false), | 29 : displayed_(false), |
| 29 clicked_(false) {} | 30 clicked_(false) {} |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 150 base::UTF16ToUTF8(notification.title())); | 151 base::UTF16ToUTF8(notification.title())); |
| 151 EXPECT_EQ("Hello, world!", | 152 EXPECT_EQ("Hello, world!", |
| 152 base::UTF16ToUTF8(notification.message())); | 153 base::UTF16ToUTF8(notification.message())); |
| 153 | 154 |
| 154 service()->ClosePersistentNotification(profile(), kPersistentNotificationId); | 155 service()->ClosePersistentNotification(profile(), kPersistentNotificationId); |
| 155 EXPECT_EQ(0u, ui_manager()->GetNotificationCount()); | 156 EXPECT_EQ(0u, ui_manager()->GetNotificationCount()); |
| 156 } | 157 } |
| 157 #endif // !defined(OS_ANDROID) | 158 #endif // !defined(OS_ANDROID) |
| 158 | 159 |
| 159 TEST_F(PlatformNotificationServiceTest, DisplayPageNotificationMatches) { | 160 TEST_F(PlatformNotificationServiceTest, DisplayPageNotificationMatches) { |
| 161 std::vector<unsigned> vibrate_pattern( | |
|
Peter Beverloo
2015/04/21 17:58:23
int/int64_t (whatever you choose to use in the //c
Sanghyun Park
2015/04/23 11:08:26
Done.
| |
| 162 kNotificationVibrate, | |
| 163 kNotificationVibrate + arraysize(kNotificationVibrate)); | |
| 164 | |
| 160 content::PlatformNotificationData notification_data; | 165 content::PlatformNotificationData notification_data; |
| 161 notification_data.title = base::ASCIIToUTF16("My notification's title"); | 166 notification_data.title = base::ASCIIToUTF16("My notification's title"); |
| 162 notification_data.body = base::ASCIIToUTF16("Hello, world!"); | 167 notification_data.body = base::ASCIIToUTF16("Hello, world!"); |
| 168 notification_data.vibrate = vibrate_pattern; | |
| 163 notification_data.silent = true; | 169 notification_data.silent = true; |
| 164 | 170 |
| 165 MockDesktopNotificationDelegate* delegate | 171 MockDesktopNotificationDelegate* delegate |
| 166 = new MockDesktopNotificationDelegate(); | 172 = new MockDesktopNotificationDelegate(); |
| 167 service()->DisplayNotification(profile(), | 173 service()->DisplayNotification(profile(), |
| 168 GURL("https://chrome.com/"), | 174 GURL("https://chrome.com/"), |
| 169 SkBitmap(), | 175 SkBitmap(), |
| 170 notification_data, | 176 notification_data, |
| 171 make_scoped_ptr(delegate), | 177 make_scoped_ptr(delegate), |
| 172 nullptr); | 178 nullptr); |
| 173 | 179 |
| 174 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); | 180 ASSERT_EQ(1u, ui_manager()->GetNotificationCount()); |
| 175 | 181 |
| 176 const Notification& notification = ui_manager()->GetNotificationAt(0); | 182 const Notification& notification = ui_manager()->GetNotificationAt(0); |
| 177 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); | 183 EXPECT_EQ("https://chrome.com/", notification.origin_url().spec()); |
| 178 EXPECT_EQ("My notification's title", | 184 EXPECT_EQ("My notification's title", |
| 179 base::UTF16ToUTF8(notification.title())); | 185 base::UTF16ToUTF8(notification.title())); |
| 180 EXPECT_EQ("Hello, world!", | 186 EXPECT_EQ("Hello, world!", |
| 181 base::UTF16ToUTF8(notification.message())); | 187 base::UTF16ToUTF8(notification.message())); |
| 188 | |
| 189 ASSERT_EQ(vibrate_pattern.size(), notification.vibrate().size()); | |
| 190 for (size_t i = 0; i < vibrate_pattern.size(); ++i) | |
| 191 EXPECT_EQ(vibrate_pattern[i], notification.vibrate()[i]); | |
| 192 | |
| 182 EXPECT_TRUE(notification.silent()); | 193 EXPECT_TRUE(notification.silent()); |
| 183 } | 194 } |
| 184 | 195 |
| 185 TEST_F(PlatformNotificationServiceTest, DisplayNameForOrigin) { | 196 TEST_F(PlatformNotificationServiceTest, DisplayNameForOrigin) { |
| 186 base::string16 display_name = | 197 base::string16 display_name = |
| 187 service()->DisplayNameForOrigin(profile(), GURL("https://chrome.com/")); | 198 service()->DisplayNameForOrigin(profile(), GURL("https://chrome.com/")); |
| 188 | 199 |
| 189 EXPECT_EQ(base::ASCIIToUTF16("chrome.com"), display_name); | 200 EXPECT_EQ(base::ASCIIToUTF16("chrome.com"), display_name); |
| 190 | 201 |
| 191 // TODO(peter): Include unit tests for the extension-name translation | 202 // TODO(peter): Include unit tests for the extension-name translation |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 251 | 262 |
| 252 service()->DisplayPersistentNotification( | 263 service()->DisplayPersistentNotification( |
| 253 profile(), 42 /* sw_registration_id */, origin, SkBitmap(), | 264 profile(), 42 /* sw_registration_id */, origin, SkBitmap(), |
| 254 content::PlatformNotificationData()); | 265 content::PlatformNotificationData()); |
| 255 | 266 |
| 256 base::Time after_persistent_notification = | 267 base::Time after_persistent_notification = |
| 257 profile()->GetHostContentSettingsMap()->GetLastUsage( | 268 profile()->GetHostContentSettingsMap()->GetLastUsage( |
| 258 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); | 269 origin, origin, CONTENT_SETTINGS_TYPE_NOTIFICATIONS); |
| 259 EXPECT_GT(after_persistent_notification, after_page_notification); | 270 EXPECT_GT(after_persistent_notification, after_page_notification); |
| 260 } | 271 } |
| OLD | NEW |