| 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 "chrome/browser/push_messaging/push_messaging_app_identifier.h" | 5 #include "chrome/browser/push_messaging/push_messaging_app_identifier.h" |
| 6 | 6 |
| 7 #include "chrome/test/base/testing_profile.h" | 7 #include "chrome/test/base/testing_profile.h" |
| 8 #include "content/public/test/test_browser_thread_bundle.h" | 8 #include "content/public/test/test_browser_thread_bundle.h" |
| 9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
| 10 | 10 |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 EXPECT_TRUE(GenerateId(GURL("https://www.example.com/"), -1).is_null()); | 69 EXPECT_TRUE(GenerateId(GURL("https://www.example.com/"), -1).is_null()); |
| 70 } | 70 } |
| 71 | 71 |
| 72 TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { | 72 TEST_F(PushMessagingAppIdentifierTest, UniqueGuids) { |
| 73 EXPECT_NE(PushMessagingAppIdentifier::Generate( | 73 EXPECT_NE(PushMessagingAppIdentifier::Generate( |
| 74 GURL("https://www.example.com/"), 1).app_id(), | 74 GURL("https://www.example.com/"), 1).app_id(), |
| 75 PushMessagingAppIdentifier::Generate( | 75 PushMessagingAppIdentifier::Generate( |
| 76 GURL("https://www.example.com/"), 1).app_id()); | 76 GURL("https://www.example.com/"), 1).app_id()); |
| 77 } | 77 } |
| 78 | 78 |
| 79 TEST_F(PushMessagingAppIdentifierTest, PersistAndGet) { | 79 TEST_F(PushMessagingAppIdentifierTest, PersistAndFind) { |
| 80 ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(), | 80 ASSERT_TRUE(PushMessagingAppIdentifier::FindByAppId( |
| 81 original_.app_id()).is_null()); | 81 profile(), original_.app_id()).is_null()); |
| 82 ASSERT_TRUE(PushMessagingAppIdentifier::Get(profile(), original_.origin(), | 82 ASSERT_TRUE(PushMessagingAppIdentifier::FindByServiceWorker( |
| 83 original_.service_worker_registration_id()).is_null()); | 83 profile(), original_.origin(), original_.service_worker_registration_id()) |
| 84 .is_null()); |
| 84 | 85 |
| 85 // Test basic PersistToPrefs round trips. | 86 // Test basic PersistToPrefs round trips. |
| 86 original_.PersistToPrefs(profile()); | 87 original_.PersistToPrefs(profile()); |
| 87 { | 88 { |
| 88 PushMessagingAppIdentifier get_by_app_id = | 89 PushMessagingAppIdentifier found_by_app_id = |
| 89 PushMessagingAppIdentifier::Get(profile(), original_.app_id()); | 90 PushMessagingAppIdentifier::FindByAppId(profile(), original_.app_id()); |
| 90 EXPECT_FALSE(get_by_app_id.is_null()); | 91 EXPECT_FALSE(found_by_app_id.is_null()); |
| 91 ExpectAppIdentifiersEqual(original_, get_by_app_id); | 92 ExpectAppIdentifiersEqual(original_, found_by_app_id); |
| 92 } | 93 } |
| 93 { | 94 { |
| 94 PushMessagingAppIdentifier get_by_origin_and_swr_id = | 95 PushMessagingAppIdentifier found_by_origin_and_swr_id = |
| 95 PushMessagingAppIdentifier::Get(profile(), | 96 PushMessagingAppIdentifier::FindByServiceWorker(profile(), |
| 96 original_.origin(), original_.service_worker_registration_id()); | 97 original_.origin(), original_.service_worker_registration_id()); |
| 97 EXPECT_FALSE(get_by_origin_and_swr_id.is_null()); | 98 EXPECT_FALSE(found_by_origin_and_swr_id.is_null()); |
| 98 ExpectAppIdentifiersEqual(original_, get_by_origin_and_swr_id); | 99 ExpectAppIdentifiersEqual(original_, found_by_origin_and_swr_id); |
| 99 } | 100 } |
| 100 } | 101 } |
| 101 | 102 |
| 103 TEST_F(PushMessagingAppIdentifierTest, FindLegacy) { |
| 104 const std::string legacy_app_id("wp:9CC55CCE-B8F9-4092-A364-3B0F73A3AB5F"); |
| 105 ASSERT_TRUE(PushMessagingAppIdentifier::FindByAppId(profile(), |
| 106 legacy_app_id).is_null()); |
| 107 ASSERT_TRUE(PushMessagingAppIdentifier::FindByServiceWorker( |
| 108 profile(), original_.origin(), original_.service_worker_registration_id()) |
| 109 .is_null()); |
| 110 |
| 111 // Create a legacy preferences entry (the test happens to use PersistToPrefs |
| 112 // since that currently works, but it's ok to change the behavior of |
| 113 // PersistToPrefs; if so, this test can just do a raw DictionaryPrefUpdate). |
| 114 original_.app_id_ = legacy_app_id; |
| 115 original_.PersistToPrefs(profile()); |
| 116 |
| 117 // Test that legacy entries can be read back from prefs. |
| 118 { |
| 119 PushMessagingAppIdentifier found_by_app_id = |
| 120 PushMessagingAppIdentifier::FindByAppId(profile(), original_.app_id()); |
| 121 EXPECT_FALSE(found_by_app_id.is_null()); |
| 122 ExpectAppIdentifiersEqual(original_, found_by_app_id); |
| 123 } |
| 124 { |
| 125 PushMessagingAppIdentifier found_by_origin_and_swr_id = |
| 126 PushMessagingAppIdentifier::FindByServiceWorker(profile(), |
| 127 original_.origin(), original_.service_worker_registration_id()); |
| 128 EXPECT_FALSE(found_by_origin_and_swr_id.is_null()); |
| 129 ExpectAppIdentifiersEqual(original_, found_by_origin_and_swr_id); |
| 130 } |
| 131 } |
| 132 |
| 102 TEST_F(PushMessagingAppIdentifierTest, PersistOverwritesSameOriginAndSW) { | 133 TEST_F(PushMessagingAppIdentifierTest, PersistOverwritesSameOriginAndSW) { |
| 103 original_.PersistToPrefs(profile()); | 134 original_.PersistToPrefs(profile()); |
| 104 | 135 |
| 105 // Test that PersistToPrefs overwrites when same origin and Service Worker. | 136 // Test that PersistToPrefs overwrites when same origin and Service Worker. |
| 106 ASSERT_NE(original_.app_id(), same_origin_and_sw_.app_id()); | 137 ASSERT_NE(original_.app_id(), same_origin_and_sw_.app_id()); |
| 107 ASSERT_EQ(original_.origin(), same_origin_and_sw_.origin()); | 138 ASSERT_EQ(original_.origin(), same_origin_and_sw_.origin()); |
| 108 ASSERT_EQ(original_.service_worker_registration_id(), | 139 ASSERT_EQ(original_.service_worker_registration_id(), |
| 109 same_origin_and_sw_.service_worker_registration_id()); | 140 same_origin_and_sw_.service_worker_registration_id()); |
| 110 same_origin_and_sw_.PersistToPrefs(profile()); | 141 same_origin_and_sw_.PersistToPrefs(profile()); |
| 111 { | 142 { |
| 112 PushMessagingAppIdentifier get_by_original_app_id = | 143 PushMessagingAppIdentifier found_by_original_app_id = |
| 113 PushMessagingAppIdentifier::Get(profile(), original_.app_id()); | 144 PushMessagingAppIdentifier::FindByAppId(profile(), original_.app_id()); |
| 114 EXPECT_TRUE(get_by_original_app_id.is_null()); | 145 EXPECT_TRUE(found_by_original_app_id.is_null()); |
| 115 } | 146 } |
| 116 { | 147 { |
| 117 PushMessagingAppIdentifier get_by_soas_app_id = | 148 PushMessagingAppIdentifier found_by_soas_app_id = |
| 118 PushMessagingAppIdentifier::Get(profile(), | 149 PushMessagingAppIdentifier::FindByAppId(profile(), |
| 119 same_origin_and_sw_.app_id()); | 150 same_origin_and_sw_.app_id()); |
| 120 EXPECT_FALSE(get_by_soas_app_id.is_null()); | 151 EXPECT_FALSE(found_by_soas_app_id.is_null()); |
| 121 ExpectAppIdentifiersEqual(same_origin_and_sw_, get_by_soas_app_id); | 152 ExpectAppIdentifiersEqual(same_origin_and_sw_, found_by_soas_app_id); |
| 122 } | 153 } |
| 123 { | 154 { |
| 124 PushMessagingAppIdentifier get_by_original_origin_and_swr_id = | 155 PushMessagingAppIdentifier found_by_original_origin_and_swr_id = |
| 125 PushMessagingAppIdentifier::Get(profile(), | 156 PushMessagingAppIdentifier::FindByServiceWorker(profile(), |
| 126 original_.origin(), original_.service_worker_registration_id()); | 157 original_.origin(), original_.service_worker_registration_id()); |
| 127 EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null()); | 158 EXPECT_FALSE(found_by_original_origin_and_swr_id.is_null()); |
| 128 ExpectAppIdentifiersEqual(same_origin_and_sw_, | 159 ExpectAppIdentifiersEqual(same_origin_and_sw_, |
| 129 get_by_original_origin_and_swr_id); | 160 found_by_original_origin_and_swr_id); |
| 130 } | 161 } |
| 131 } | 162 } |
| 132 | 163 |
| 133 TEST_F(PushMessagingAppIdentifierTest, PersistDoesNotOverwriteDifferent) { | 164 TEST_F(PushMessagingAppIdentifierTest, PersistDoesNotOverwriteDifferent) { |
| 134 original_.PersistToPrefs(profile()); | 165 original_.PersistToPrefs(profile()); |
| 135 | 166 |
| 136 // Test that PersistToPrefs doesn't overwrite when different origin or SW. | 167 // Test that PersistToPrefs doesn't overwrite when different origin or SW. |
| 137 ASSERT_NE(original_.app_id(), different_origin_.app_id()); | 168 ASSERT_NE(original_.app_id(), different_origin_.app_id()); |
| 138 ASSERT_NE(original_.app_id(), different_sw_.app_id()); | 169 ASSERT_NE(original_.app_id(), different_sw_.app_id()); |
| 139 different_origin_.PersistToPrefs(profile()); | 170 different_origin_.PersistToPrefs(profile()); |
| 140 different_sw_.PersistToPrefs(profile()); | 171 different_sw_.PersistToPrefs(profile()); |
| 141 { | 172 { |
| 142 PushMessagingAppIdentifier get_by_original_app_id = | 173 PushMessagingAppIdentifier found_by_original_app_id = |
| 143 PushMessagingAppIdentifier::Get(profile(), original_.app_id()); | 174 PushMessagingAppIdentifier::FindByAppId(profile(), original_.app_id()); |
| 144 EXPECT_FALSE(get_by_original_app_id.is_null()); | 175 EXPECT_FALSE(found_by_original_app_id.is_null()); |
| 145 ExpectAppIdentifiersEqual(original_, get_by_original_app_id); | 176 ExpectAppIdentifiersEqual(original_, found_by_original_app_id); |
| 146 } | 177 } |
| 147 { | 178 { |
| 148 PushMessagingAppIdentifier get_by_original_origin_and_swr_id = | 179 PushMessagingAppIdentifier found_by_original_origin_and_swr_id = |
| 149 PushMessagingAppIdentifier::Get(profile(), | 180 PushMessagingAppIdentifier::FindByServiceWorker(profile(), |
| 150 original_.origin(), original_.service_worker_registration_id()); | 181 original_.origin(), original_.service_worker_registration_id()); |
| 151 EXPECT_FALSE(get_by_original_origin_and_swr_id.is_null()); | 182 EXPECT_FALSE(found_by_original_origin_and_swr_id.is_null()); |
| 152 ExpectAppIdentifiersEqual(original_, get_by_original_origin_and_swr_id); | 183 ExpectAppIdentifiersEqual(original_, found_by_original_origin_and_swr_id); |
| 153 } | 184 } |
| 154 } | 185 } |
| 155 | 186 |
| 156 TEST_F(PushMessagingAppIdentifierTest, DeleteFromPrefs) { | 187 TEST_F(PushMessagingAppIdentifierTest, DeleteFromPrefs) { |
| 157 original_.PersistToPrefs(profile()); | 188 original_.PersistToPrefs(profile()); |
| 158 different_origin_.PersistToPrefs(profile()); | 189 different_origin_.PersistToPrefs(profile()); |
| 159 different_sw_.PersistToPrefs(profile()); | 190 different_sw_.PersistToPrefs(profile()); |
| 160 | 191 |
| 161 // Test DeleteFromPrefs. Deleted app identifier should be deleted. | 192 // Test DeleteFromPrefs. Deleted app identifier should be deleted. |
| 162 original_.DeleteFromPrefs(profile()); | 193 original_.DeleteFromPrefs(profile()); |
| 163 { | 194 { |
| 164 PushMessagingAppIdentifier get_by_original_app_id = | 195 PushMessagingAppIdentifier found_by_original_app_id = |
| 165 PushMessagingAppIdentifier::Get(profile(), original_.app_id()); | 196 PushMessagingAppIdentifier::FindByAppId(profile(), original_.app_id()); |
| 166 EXPECT_TRUE(get_by_original_app_id.is_null()); | 197 EXPECT_TRUE(found_by_original_app_id.is_null()); |
| 167 } | 198 } |
| 168 { | 199 { |
| 169 PushMessagingAppIdentifier get_by_original_origin_and_swr_id = | 200 PushMessagingAppIdentifier found_by_original_origin_and_swr_id = |
| 170 PushMessagingAppIdentifier::Get(profile(), | 201 PushMessagingAppIdentifier::FindByServiceWorker(profile(), |
| 171 original_.origin(), original_.service_worker_registration_id()); | 202 original_.origin(), original_.service_worker_registration_id()); |
| 172 EXPECT_TRUE(get_by_original_origin_and_swr_id.is_null()); | 203 EXPECT_TRUE(found_by_original_origin_and_swr_id.is_null()); |
| 173 } | 204 } |
| 174 } | 205 } |
| 175 | 206 |
| 176 TEST_F(PushMessagingAppIdentifierTest, GetAll) { | 207 TEST_F(PushMessagingAppIdentifierTest, GetAll) { |
| 177 original_.PersistToPrefs(profile()); | 208 original_.PersistToPrefs(profile()); |
| 178 different_origin_.PersistToPrefs(profile()); | 209 different_origin_.PersistToPrefs(profile()); |
| 179 different_sw_.PersistToPrefs(profile()); | 210 different_sw_.PersistToPrefs(profile()); |
| 180 | 211 |
| 181 original_.DeleteFromPrefs(profile()); | 212 original_.DeleteFromPrefs(profile()); |
| 182 | 213 |
| 183 // Test GetAll. Non-deleted app identifiers should all be listed. | 214 // Test GetAll. Non-deleted app identifiers should all be listed. |
| 184 std::vector<PushMessagingAppIdentifier> all_app_identifiers = | 215 std::vector<PushMessagingAppIdentifier> all_app_identifiers = |
| 185 PushMessagingAppIdentifier::GetAll(profile()); | 216 PushMessagingAppIdentifier::GetAll(profile()); |
| 186 EXPECT_EQ(2u, all_app_identifiers.size()); | 217 EXPECT_EQ(2u, all_app_identifiers.size()); |
| 187 // Order is unspecified. | 218 // Order is unspecified. |
| 188 bool contained_different_origin = false; | 219 bool contained_different_origin = false; |
| 189 bool contained_different_sw = false; | 220 bool contained_different_sw = false; |
| 190 for (const PushMessagingAppIdentifier& app_identifier : all_app_identifiers) { | 221 for (const PushMessagingAppIdentifier& app_identifier : all_app_identifiers) { |
| 191 if (app_identifier.app_id() == different_origin_.app_id()) { | 222 if (app_identifier.app_id() == different_origin_.app_id()) { |
| 192 ExpectAppIdentifiersEqual(different_origin_, app_identifier); | 223 ExpectAppIdentifiersEqual(different_origin_, app_identifier); |
| 193 contained_different_origin = true; | 224 contained_different_origin = true; |
| 194 } else { | 225 } else { |
| 195 ExpectAppIdentifiersEqual(different_sw_, app_identifier); | 226 ExpectAppIdentifiersEqual(different_sw_, app_identifier); |
| 196 contained_different_sw = true; | 227 contained_different_sw = true; |
| 197 } | 228 } |
| 198 } | 229 } |
| 199 EXPECT_TRUE(contained_different_origin); | 230 EXPECT_TRUE(contained_different_origin); |
| 200 EXPECT_TRUE(contained_different_sw); | 231 EXPECT_TRUE(contained_different_sw); |
| 201 } | 232 } |
| OLD | NEW |