| 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 "content/browser/notifications/platform_notification_context.h" | |
| 6 | |
| 7 #include "base/bind.h" | 5 #include "base/bind.h" |
| 8 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
| 9 #include "content/browser/notifications/notification_database_data.h" | 7 #include "content/browser/notifications/platform_notification_context_impl.h" |
| 8 #include "content/public/browser/notification_database_data.h" |
| 10 #include "content/public/test/test_browser_thread_bundle.h" | 9 #include "content/public/test/test_browser_thread_bundle.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" | 10 #include "testing/gtest/include/gtest/gtest.h" |
| 12 #include "url/gurl.h" | 11 #include "url/gurl.h" |
| 13 | 12 |
| 14 namespace content { | 13 namespace content { |
| 15 | 14 |
| 16 class PlatformNotificationContextTest : public ::testing::Test { | 15 class PlatformNotificationContextTest : public ::testing::Test { |
| 17 public: | 16 public: |
| 18 PlatformNotificationContextTest() | 17 PlatformNotificationContextTest() |
| 19 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), | 18 : thread_bundle_(TestBrowserThreadBundle::IO_MAINLOOP), |
| (...skipping 11 matching lines...) Expand all Loading... |
| 31 success_ = success; | 30 success_ = success; |
| 32 notification_id_ = notification_id; | 31 notification_id_ = notification_id; |
| 33 } | 32 } |
| 34 | 33 |
| 35 // Callback to provide when deleting notification data from the database. | 34 // Callback to provide when deleting notification data from the database. |
| 36 void DidDeleteNotificationData(bool success) { | 35 void DidDeleteNotificationData(bool success) { |
| 37 success_ = success; | 36 success_ = success; |
| 38 } | 37 } |
| 39 | 38 |
| 40 protected: | 39 protected: |
| 41 // Creates a new PlatformNotificationContext instance. When using this method, | 40 // Creates a new PlatformNotificationContextImpl instance. When using this |
| 42 // the underlying database will always be created in memory. The current | 41 // method, the underlying database will always be created in memory. The |
| 43 // message loop proxy will be used as the task runner. | 42 // current message loop proxy will be used as the task runner. |
| 44 PlatformNotificationContext* CreatePlatformNotificationContext() { | 43 PlatformNotificationContextImpl* CreatePlatformNotificationContext() { |
| 45 PlatformNotificationContext* context = | 44 PlatformNotificationContextImpl* context = |
| 46 new PlatformNotificationContext(base::FilePath()); | 45 new PlatformNotificationContextImpl(base::FilePath()); |
| 47 | 46 |
| 48 context->SetTaskRunnerForTesting(base::MessageLoopProxy::current()); | 47 context->SetTaskRunnerForTesting(base::MessageLoopProxy::current()); |
| 49 return context; | 48 return context; |
| 50 } | 49 } |
| 51 | 50 |
| 52 // Returns whether the last invoked callback finished successfully. | 51 // Returns whether the last invoked callback finished successfully. |
| 53 bool success() const { return success_; } | 52 bool success() const { return success_; } |
| 54 | 53 |
| 55 // Returns the NotificationDatabaseData associated with the last invoked | 54 // Returns the NotificationDatabaseData associated with the last invoked |
| 56 // ReadNotificationData callback. | 55 // ReadNotificationData callback. |
| 57 const NotificationDatabaseData& database_data() const { | 56 const NotificationDatabaseData& database_data() const { |
| 58 return database_data_; | 57 return database_data_; |
| 59 } | 58 } |
| 60 | 59 |
| 61 // Returns the notification id of the notification last written. | 60 // Returns the notification id of the notification last written. |
| 62 int64_t notification_id() const { return notification_id_; } | 61 int64_t notification_id() const { return notification_id_; } |
| 63 | 62 |
| 64 private: | 63 private: |
| 65 TestBrowserThreadBundle thread_bundle_; | 64 TestBrowserThreadBundle thread_bundle_; |
| 66 | 65 |
| 67 bool success_; | 66 bool success_; |
| 68 NotificationDatabaseData database_data_; | 67 NotificationDatabaseData database_data_; |
| 69 int64_t notification_id_; | 68 int64_t notification_id_; |
| 70 }; | 69 }; |
| 71 | 70 |
| 72 TEST_F(PlatformNotificationContextTest, ReadNonExistentNotification) { | 71 TEST_F(PlatformNotificationContextTest, ReadNonExistentNotification) { |
| 73 scoped_refptr<PlatformNotificationContext> context = | 72 scoped_refptr<PlatformNotificationContextImpl> context = |
| 74 CreatePlatformNotificationContext(); | 73 CreatePlatformNotificationContext(); |
| 75 | 74 |
| 76 context->ReadNotificationData( | 75 context->ReadNotificationData( |
| 77 42 /* notification_id */, | 76 42 /* notification_id */, |
| 78 GURL("https://example.com"), | 77 GURL("https://example.com"), |
| 79 base::Bind(&PlatformNotificationContextTest::DidReadNotificationData, | 78 base::Bind(&PlatformNotificationContextTest::DidReadNotificationData, |
| 80 base::Unretained(this))); | 79 base::Unretained(this))); |
| 81 | 80 |
| 82 base::RunLoop().RunUntilIdle(); | 81 base::RunLoop().RunUntilIdle(); |
| 83 | 82 |
| 84 // The read operation should have failed, as it does not exist. | 83 // The read operation should have failed, as it does not exist. |
| 85 ASSERT_FALSE(success()); | 84 ASSERT_FALSE(success()); |
| 86 } | 85 } |
| 87 | 86 |
| 88 TEST_F(PlatformNotificationContextTest, WriteReadNotification) { | 87 TEST_F(PlatformNotificationContextTest, WriteReadNotification) { |
| 89 scoped_refptr<PlatformNotificationContext> context = | 88 scoped_refptr<PlatformNotificationContextImpl> context = |
| 90 CreatePlatformNotificationContext(); | 89 CreatePlatformNotificationContext(); |
| 91 | 90 |
| 92 GURL origin("https://example.com"); | 91 GURL origin("https://example.com"); |
| 93 NotificationDatabaseData notification_database_data; | 92 NotificationDatabaseData notification_database_data; |
| 94 notification_database_data.origin = origin; | 93 notification_database_data.origin = origin; |
| 95 | 94 |
| 96 context->WriteNotificationData( | 95 context->WriteNotificationData( |
| 97 origin, | 96 origin, |
| 98 notification_database_data, | 97 notification_database_data, |
| 99 base::Bind(&PlatformNotificationContextTest::DidWriteNotificationData, | 98 base::Bind(&PlatformNotificationContextTest::DidWriteNotificationData, |
| (...skipping 14 matching lines...) Expand all Loading... |
| 114 base::RunLoop().RunUntilIdle(); | 113 base::RunLoop().RunUntilIdle(); |
| 115 | 114 |
| 116 // The read operation should have succeeded, with the right notification. | 115 // The read operation should have succeeded, with the right notification. |
| 117 ASSERT_TRUE(success()); | 116 ASSERT_TRUE(success()); |
| 118 | 117 |
| 119 const NotificationDatabaseData& read_database_data = database_data(); | 118 const NotificationDatabaseData& read_database_data = database_data(); |
| 120 EXPECT_EQ(notification_database_data.origin, read_database_data.origin); | 119 EXPECT_EQ(notification_database_data.origin, read_database_data.origin); |
| 121 } | 120 } |
| 122 | 121 |
| 123 TEST_F(PlatformNotificationContextTest, DeleteInvalidNotification) { | 122 TEST_F(PlatformNotificationContextTest, DeleteInvalidNotification) { |
| 124 scoped_refptr<PlatformNotificationContext> context = | 123 scoped_refptr<PlatformNotificationContextImpl> context = |
| 125 CreatePlatformNotificationContext(); | 124 CreatePlatformNotificationContext(); |
| 126 | 125 |
| 127 context->DeleteNotificationData( | 126 context->DeleteNotificationData( |
| 128 42 /* notification_id */, | 127 42 /* notification_id */, |
| 129 GURL("https://example.com"), | 128 GURL("https://example.com"), |
| 130 base::Bind(&PlatformNotificationContextTest::DidDeleteNotificationData, | 129 base::Bind(&PlatformNotificationContextTest::DidDeleteNotificationData, |
| 131 base::Unretained(this))); | 130 base::Unretained(this))); |
| 132 | 131 |
| 133 base::RunLoop().RunUntilIdle(); | 132 base::RunLoop().RunUntilIdle(); |
| 134 | 133 |
| 135 // The notification may not have existed, but since the goal of deleting data | 134 // The notification may not have existed, but since the goal of deleting data |
| 136 // is to make sure that it's gone, the goal has been satisfied. As such, | 135 // is to make sure that it's gone, the goal has been satisfied. As such, |
| 137 // deleting a non-existent notification is considered to be a success. | 136 // deleting a non-existent notification is considered to be a success. |
| 138 EXPECT_TRUE(success()); | 137 EXPECT_TRUE(success()); |
| 139 } | 138 } |
| 140 | 139 |
| 141 TEST_F(PlatformNotificationContextTest, DeleteNotification) { | 140 TEST_F(PlatformNotificationContextTest, DeleteNotification) { |
| 142 scoped_refptr<PlatformNotificationContext> context = | 141 scoped_refptr<PlatformNotificationContextImpl> context = |
| 143 CreatePlatformNotificationContext(); | 142 CreatePlatformNotificationContext(); |
| 144 | 143 |
| 145 GURL origin("https://example.com"); | 144 GURL origin("https://example.com"); |
| 146 NotificationDatabaseData notification_database_data; | 145 NotificationDatabaseData notification_database_data; |
| 147 | 146 |
| 148 context->WriteNotificationData( | 147 context->WriteNotificationData( |
| 149 origin, | 148 origin, |
| 150 notification_database_data, | 149 notification_database_data, |
| 151 base::Bind(&PlatformNotificationContextTest::DidWriteNotificationData, | 150 base::Bind(&PlatformNotificationContextTest::DidWriteNotificationData, |
| 152 base::Unretained(this))); | 151 base::Unretained(this))); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 175 base::Unretained(this))); | 174 base::Unretained(this))); |
| 176 | 175 |
| 177 base::RunLoop().RunUntilIdle(); | 176 base::RunLoop().RunUntilIdle(); |
| 178 | 177 |
| 179 // The notification was removed, so we shouldn't be able to read it from | 178 // The notification was removed, so we shouldn't be able to read it from |
| 180 // the database anymore. | 179 // the database anymore. |
| 181 EXPECT_FALSE(success()); | 180 EXPECT_FALSE(success()); |
| 182 } | 181 } |
| 183 | 182 |
| 184 } // namespace content | 183 } // namespace content |
| OLD | NEW |