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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/string_number_conversions.h" | 8 #include "base/strings/string_number_conversions.h" |
9 #include "content/browser/notifications/notification_id_generator.h" | 9 #include "content/browser/notifications/notification_id_generator.h" |
10 #include "content/public/test/test_browser_context.h" | 10 #include "content/public/test/test_browser_context.h" |
(...skipping 19 matching lines...) Expand all Loading... |
30 bool IsOffTheRecord() const override { return incognito_; } | 30 bool IsOffTheRecord() const override { return incognito_; } |
31 | 31 |
32 private: | 32 private: |
33 bool incognito_ = false; | 33 bool incognito_ = false; |
34 | 34 |
35 DISALLOW_COPY_AND_ASSIGN(TestBrowserContextConfigurableIncognito); | 35 DISALLOW_COPY_AND_ASSIGN(TestBrowserContextConfigurableIncognito); |
36 }; | 36 }; |
37 | 37 |
38 class NotificationIdGeneratorTest : public ::testing::Test { | 38 class NotificationIdGeneratorTest : public ::testing::Test { |
39 public: | 39 public: |
40 NotificationIdGeneratorTest() | 40 NotificationIdGeneratorTest() : generator_(&browser_context_) {} |
41 : generator_(&browser_context_, kRenderProcessId) {} | |
42 | 41 |
43 void SetUp() override {} | 42 void SetUp() override {} |
44 | 43 |
45 protected: | 44 protected: |
46 GURL origin() const { return GURL("https://example.com"); } | 45 GURL origin() const { return GURL("https://example.com"); } |
47 | 46 |
48 TestBrowserContextConfigurableIncognito* browser_context() { | 47 TestBrowserContextConfigurableIncognito* browser_context() { |
49 return &browser_context_; | 48 return &browser_context_; |
50 } | 49 } |
51 | 50 |
(...skipping 19 matching lines...) Expand all Loading... |
71 generator()->GenerateForPersistentNotification( | 70 generator()->GenerateForPersistentNotification( |
72 origin(), kExampleTag, kPersistentNotificationId)); | 71 origin(), kExampleTag, kPersistentNotificationId)); |
73 | 72 |
74 EXPECT_EQ(generator()->GenerateForPersistentNotification( | 73 EXPECT_EQ(generator()->GenerateForPersistentNotification( |
75 origin(), "" /* tag */, kPersistentNotificationId), | 74 origin(), "" /* tag */, kPersistentNotificationId), |
76 generator()->GenerateForPersistentNotification( | 75 generator()->GenerateForPersistentNotification( |
77 origin(), "" /* tag */, kPersistentNotificationId)); | 76 origin(), "" /* tag */, kPersistentNotificationId)); |
78 | 77 |
79 // Non-persistent notifications. | 78 // Non-persistent notifications. |
80 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( | 79 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( |
81 origin(), kExampleTag, kNonPersistentNotificationId), | 80 origin(), kExampleTag, kNonPersistentNotificationId, |
| 81 kRenderProcessId), |
82 generator()->GenerateForNonPersistentNotification( | 82 generator()->GenerateForNonPersistentNotification( |
83 origin(), kExampleTag, kNonPersistentNotificationId)); | 83 origin(), kExampleTag, kNonPersistentNotificationId, |
| 84 kRenderProcessId)); |
84 | 85 |
85 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( | 86 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( |
86 origin(), "" /* tag */, kNonPersistentNotificationId), | 87 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 88 kRenderProcessId), |
87 generator()->GenerateForNonPersistentNotification( | 89 generator()->GenerateForNonPersistentNotification( |
88 origin(), "" /* tag */, kNonPersistentNotificationId)); | 90 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 91 kRenderProcessId)); |
89 } | 92 } |
90 | 93 |
91 // Uniqueness of notification ids will be impacted by the browser context. | 94 // Uniqueness of notification ids will be impacted by the browser context. |
92 TEST_F(NotificationIdGeneratorTest, DifferentBrowserContexts) { | 95 TEST_F(NotificationIdGeneratorTest, DifferentBrowserContexts) { |
93 TestBrowserContextConfigurableIncognito second_browser_context; | 96 TestBrowserContextConfigurableIncognito second_browser_context; |
94 NotificationIdGenerator second_generator(&second_browser_context, | 97 NotificationIdGenerator second_generator(&second_browser_context); |
95 kRenderProcessId); | |
96 | 98 |
97 // Persistent notifications. | 99 // Persistent notifications. |
98 EXPECT_NE(generator()->GenerateForPersistentNotification( | 100 EXPECT_NE(generator()->GenerateForPersistentNotification( |
99 origin(), kExampleTag, kPersistentNotificationId), | 101 origin(), kExampleTag, kPersistentNotificationId), |
100 second_generator.GenerateForPersistentNotification( | 102 second_generator.GenerateForPersistentNotification( |
101 origin(), kExampleTag, kPersistentNotificationId)); | 103 origin(), kExampleTag, kPersistentNotificationId)); |
102 | 104 |
103 EXPECT_NE(generator()->GenerateForPersistentNotification( | 105 EXPECT_NE(generator()->GenerateForPersistentNotification( |
104 origin(), "" /* tag */, kPersistentNotificationId), | 106 origin(), "" /* tag */, kPersistentNotificationId), |
105 second_generator.GenerateForPersistentNotification( | 107 second_generator.GenerateForPersistentNotification( |
106 origin(), "" /* tag */, kPersistentNotificationId)); | 108 origin(), "" /* tag */, kPersistentNotificationId)); |
107 | 109 |
108 // Non-persistent notifications. | 110 // Non-persistent notifications. |
109 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 111 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
110 origin(), kExampleTag, kNonPersistentNotificationId), | 112 origin(), kExampleTag, kNonPersistentNotificationId, |
| 113 kRenderProcessId), |
111 second_generator.GenerateForNonPersistentNotification( | 114 second_generator.GenerateForNonPersistentNotification( |
112 origin(), kExampleTag, kNonPersistentNotificationId)); | 115 origin(), kExampleTag, kNonPersistentNotificationId, |
| 116 kRenderProcessId)); |
113 | 117 |
114 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 118 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
115 origin(), "" /* tag */, kNonPersistentNotificationId), | 119 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 120 kRenderProcessId), |
116 second_generator.GenerateForNonPersistentNotification( | 121 second_generator.GenerateForNonPersistentNotification( |
117 origin(), "" /* tag */, kNonPersistentNotificationId)); | 122 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 123 kRenderProcessId)); |
118 } | 124 } |
119 | 125 |
120 // Uniqueness of notification ids will be impacted by the fact whether the | 126 // Uniqueness of notification ids will be impacted by the fact whether the |
121 // browser context is in Incognito mode. | 127 // browser context is in Incognito mode. |
122 TEST_F(NotificationIdGeneratorTest, DifferentIncognitoStates) { | 128 TEST_F(NotificationIdGeneratorTest, DifferentIncognitoStates) { |
123 ASSERT_FALSE(browser_context()->IsOffTheRecord()); | 129 ASSERT_FALSE(browser_context()->IsOffTheRecord()); |
124 | 130 |
125 // Persistent notifications. | 131 // Persistent notifications. |
126 std::string normal_persistent_notification_id = | 132 std::string normal_persistent_notification_id = |
127 generator()->GenerateForPersistentNotification(origin(), kExampleTag, | 133 generator()->GenerateForPersistentNotification(origin(), kExampleTag, |
128 kPersistentNotificationId); | 134 kPersistentNotificationId); |
129 | 135 |
130 browser_context()->set_incognito(true); | 136 browser_context()->set_incognito(true); |
131 ASSERT_TRUE(browser_context()->IsOffTheRecord()); | 137 ASSERT_TRUE(browser_context()->IsOffTheRecord()); |
132 | 138 |
133 std::string incognito_persistent_notification_id = | 139 std::string incognito_persistent_notification_id = |
134 generator()->GenerateForPersistentNotification(origin(), kExampleTag, | 140 generator()->GenerateForPersistentNotification(origin(), kExampleTag, |
135 kPersistentNotificationId); | 141 kPersistentNotificationId); |
136 | 142 |
137 EXPECT_NE(normal_persistent_notification_id, | 143 EXPECT_NE(normal_persistent_notification_id, |
138 incognito_persistent_notification_id); | 144 incognito_persistent_notification_id); |
139 | 145 |
140 browser_context()->set_incognito(false); | 146 browser_context()->set_incognito(false); |
141 | 147 |
142 // Non-persistent notifications. | 148 // Non-persistent notifications. |
143 ASSERT_FALSE(browser_context()->IsOffTheRecord()); | 149 ASSERT_FALSE(browser_context()->IsOffTheRecord()); |
144 | 150 |
145 std::string normal_non_persistent_notification_id = | 151 std::string normal_non_persistent_notification_id = |
146 generator()->GenerateForNonPersistentNotification( | 152 generator()->GenerateForNonPersistentNotification( |
147 origin(), kExampleTag, kNonPersistentNotificationId); | 153 origin(), kExampleTag, kNonPersistentNotificationId, |
| 154 kRenderProcessId); |
148 | 155 |
149 browser_context()->set_incognito(true); | 156 browser_context()->set_incognito(true); |
150 ASSERT_TRUE(browser_context()->IsOffTheRecord()); | 157 ASSERT_TRUE(browser_context()->IsOffTheRecord()); |
151 | 158 |
152 std::string incognito_non_persistent_notification_id = | 159 std::string incognito_non_persistent_notification_id = |
153 generator()->GenerateForNonPersistentNotification( | 160 generator()->GenerateForNonPersistentNotification( |
154 origin(), kExampleTag, kNonPersistentNotificationId); | 161 origin(), kExampleTag, kNonPersistentNotificationId, |
| 162 kRenderProcessId); |
155 | 163 |
156 EXPECT_NE(normal_non_persistent_notification_id, | 164 EXPECT_NE(normal_non_persistent_notification_id, |
157 incognito_non_persistent_notification_id); | 165 incognito_non_persistent_notification_id); |
158 } | 166 } |
159 | 167 |
160 // The origin of the notification will impact the generated notification id. | 168 // The origin of the notification will impact the generated notification id. |
161 TEST_F(NotificationIdGeneratorTest, DifferentOrigins) { | 169 TEST_F(NotificationIdGeneratorTest, DifferentOrigins) { |
162 GURL different_origin("https://example2.com"); | 170 GURL different_origin("https://example2.com"); |
163 | 171 |
164 // Persistent notifications. | 172 // Persistent notifications. |
165 EXPECT_NE(generator()->GenerateForPersistentNotification( | 173 EXPECT_NE(generator()->GenerateForPersistentNotification( |
166 origin(), kExampleTag, kPersistentNotificationId), | 174 origin(), kExampleTag, kPersistentNotificationId), |
167 generator()->GenerateForPersistentNotification( | 175 generator()->GenerateForPersistentNotification( |
168 different_origin, kExampleTag, kPersistentNotificationId)); | 176 different_origin, kExampleTag, kPersistentNotificationId)); |
169 | 177 |
170 // Non-persistent notifications. | 178 // Non-persistent notifications. |
171 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 179 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
172 origin(), kExampleTag, kNonPersistentNotificationId), | 180 origin(), kExampleTag, kNonPersistentNotificationId, |
| 181 kRenderProcessId), |
173 generator()->GenerateForNonPersistentNotification( | 182 generator()->GenerateForNonPersistentNotification( |
174 different_origin, kExampleTag, kNonPersistentNotificationId)); | 183 different_origin, kExampleTag, kNonPersistentNotificationId, |
| 184 kRenderProcessId)); |
175 } | 185 } |
176 | 186 |
177 // The tag, when non-empty, will impact the generated notification id. | 187 // The tag, when non-empty, will impact the generated notification id. |
178 TEST_F(NotificationIdGeneratorTest, DifferentTags) { | 188 TEST_F(NotificationIdGeneratorTest, DifferentTags) { |
179 const std::string& different_tag = std::string(kExampleTag) + "2"; | 189 const std::string& different_tag = std::string(kExampleTag) + "2"; |
180 | 190 |
181 // Persistent notifications. | 191 // Persistent notifications. |
182 EXPECT_NE(generator()->GenerateForPersistentNotification( | 192 EXPECT_NE(generator()->GenerateForPersistentNotification( |
183 origin(), kExampleTag, kPersistentNotificationId), | 193 origin(), kExampleTag, kPersistentNotificationId), |
184 generator()->GenerateForPersistentNotification( | 194 generator()->GenerateForPersistentNotification( |
185 origin(), different_tag, kPersistentNotificationId)); | 195 origin(), different_tag, kPersistentNotificationId)); |
186 | 196 |
187 // Non-persistent notifications. | 197 // Non-persistent notifications. |
188 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 198 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
189 origin(), kExampleTag, kNonPersistentNotificationId), | 199 origin(), kExampleTag, kNonPersistentNotificationId, |
| 200 kRenderProcessId), |
190 generator()->GenerateForNonPersistentNotification( | 201 generator()->GenerateForNonPersistentNotification( |
191 origin(), different_tag, kNonPersistentNotificationId)); | 202 origin(), different_tag, kNonPersistentNotificationId, |
| 203 kRenderProcessId)); |
192 } | 204 } |
193 | 205 |
194 // The persistent or non-persistent notification id will impact the generated | 206 // The persistent or non-persistent notification id will impact the generated |
195 // notification id when the tag is empty. | 207 // notification id when the tag is empty. |
196 TEST_F(NotificationIdGeneratorTest, DifferentIds) { | 208 TEST_F(NotificationIdGeneratorTest, DifferentIds) { |
197 NotificationIdGenerator second_generator(browser_context(), | |
198 kRenderProcessId + 1); | |
199 | |
200 // Persistent notifications. | 209 // Persistent notifications. |
201 EXPECT_NE(generator()->GenerateForPersistentNotification( | 210 EXPECT_NE(generator()->GenerateForPersistentNotification( |
202 origin(), "" /* tag */, kPersistentNotificationId), | 211 origin(), "" /* tag */, kPersistentNotificationId), |
203 generator()->GenerateForPersistentNotification( | 212 generator()->GenerateForPersistentNotification( |
204 origin(), "" /* tag */, kPersistentNotificationId + 1)); | 213 origin(), "" /* tag */, kPersistentNotificationId + 1)); |
205 | 214 |
206 // Non-persistent notifications. | 215 // Non-persistent notifications. |
207 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 216 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
208 origin(), "" /* tag */, kNonPersistentNotificationId), | 217 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 218 kRenderProcessId), |
209 generator()->GenerateForNonPersistentNotification( | 219 generator()->GenerateForNonPersistentNotification( |
210 origin(), "" /* tag */, kNonPersistentNotificationId + 1)); | 220 origin(), "" /* tag */, kNonPersistentNotificationId + 1, |
| 221 kRenderProcessId)); |
211 | 222 |
212 // Non-persistent when a tag is being used. | 223 // Non-persistent when a tag is being used. |
213 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( | 224 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( |
214 origin(), kExampleTag, kNonPersistentNotificationId), | 225 origin(), kExampleTag, kNonPersistentNotificationId, |
215 second_generator.GenerateForNonPersistentNotification( | 226 kRenderProcessId), |
216 origin(), kExampleTag, kNonPersistentNotificationId)); | 227 generator()->GenerateForNonPersistentNotification( |
| 228 origin(), kExampleTag, kNonPersistentNotificationId, |
| 229 kRenderProcessId + 1)); |
217 } | 230 } |
218 | 231 |
219 // Using a numeric tag that could resemble a persistent notification id should | 232 // Using a numeric tag that could resemble a persistent notification id should |
220 // not be equal to a notification without a tag, but with that id. | 233 // not be equal to a notification without a tag, but with that id. |
221 TEST_F(NotificationIdGeneratorTest, NumericTagAmbiguity) { | 234 TEST_F(NotificationIdGeneratorTest, NumericTagAmbiguity) { |
222 // Persistent notifications. | 235 // Persistent notifications. |
223 EXPECT_NE(generator()->GenerateForPersistentNotification( | 236 EXPECT_NE(generator()->GenerateForPersistentNotification( |
224 origin(), base::Int64ToString(kPersistentNotificationId), | 237 origin(), base::Int64ToString(kPersistentNotificationId), |
225 kPersistentNotificationId), | 238 kPersistentNotificationId), |
226 generator()->GenerateForPersistentNotification( | 239 generator()->GenerateForPersistentNotification( |
227 origin(), "" /* tag */, kPersistentNotificationId)); | 240 origin(), "" /* tag */, kPersistentNotificationId)); |
228 | 241 |
229 // Non-persistent notifications. | 242 // Non-persistent notifications. |
230 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 243 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
231 origin(), base::IntToString(kNonPersistentNotificationId), | 244 origin(), base::IntToString(kNonPersistentNotificationId), |
232 kNonPersistentNotificationId), | 245 kNonPersistentNotificationId, kRenderProcessId), |
233 generator()->GenerateForNonPersistentNotification( | 246 generator()->GenerateForNonPersistentNotification( |
234 origin(), "" /* tag */, kNonPersistentNotificationId)); | 247 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 248 kRenderProcessId)); |
235 } | 249 } |
236 | 250 |
237 // Using port numbers and a tag which, when concatenated, could end up being | 251 // Using port numbers and a tag which, when concatenated, could end up being |
238 // equal to each other if origins stop ending with slashes. | 252 // equal to each other if origins stop ending with slashes. |
239 TEST_F(NotificationIdGeneratorTest, OriginPortAmbiguity) { | 253 TEST_F(NotificationIdGeneratorTest, OriginPortAmbiguity) { |
240 GURL origin_805("https://example.com:805"); | 254 GURL origin_805("https://example.com:805"); |
241 GURL origin_8051("https://example.com:8051"); | 255 GURL origin_8051("https://example.com:8051"); |
242 | 256 |
243 // Persistent notifications. | 257 // Persistent notifications. |
244 EXPECT_NE(generator()->GenerateForPersistentNotification( | 258 EXPECT_NE(generator()->GenerateForPersistentNotification( |
245 origin_805, "17", kPersistentNotificationId), | 259 origin_805, "17", kPersistentNotificationId), |
246 generator()->GenerateForPersistentNotification( | 260 generator()->GenerateForPersistentNotification( |
247 origin_8051, "7", kPersistentNotificationId)); | 261 origin_8051, "7", kPersistentNotificationId)); |
248 | 262 |
249 // Non-persistent notifications. | 263 // Non-persistent notifications. |
250 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 264 EXPECT_NE( |
251 origin_805, "17", kNonPersistentNotificationId), | 265 generator()->GenerateForNonPersistentNotification( |
252 generator()->GenerateForNonPersistentNotification( | 266 origin_805, "17", kNonPersistentNotificationId, kRenderProcessId), |
253 origin_8051, "7", kNonPersistentNotificationId)); | 267 generator()->GenerateForNonPersistentNotification( |
| 268 origin_8051, "7", kNonPersistentNotificationId, kRenderProcessId)); |
254 } | 269 } |
255 | 270 |
256 // Verifies that the static Is(Non)PersistentNotification helpers can correctly | 271 // Verifies that the static Is(Non)PersistentNotification helpers can correctly |
257 // identify persistent and non-persistent notification IDs. | 272 // identify persistent and non-persistent notification IDs. |
258 TEST_F(NotificationIdGeneratorTest, DetectIdFormat) { | 273 TEST_F(NotificationIdGeneratorTest, DetectIdFormat) { |
259 std::string persistent_id = generator()->GenerateForPersistentNotification( | 274 std::string persistent_id = generator()->GenerateForPersistentNotification( |
260 origin(), "" /* tag */, kPersistentNotificationId); | 275 origin(), "" /* tag */, kPersistentNotificationId); |
261 | 276 |
262 std::string non_persistent_id = | 277 std::string non_persistent_id = |
263 generator()->GenerateForNonPersistentNotification( | 278 generator()->GenerateForNonPersistentNotification( |
264 origin(), "" /* tag */, kNonPersistentNotificationId); | 279 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 280 kRenderProcessId); |
265 | 281 |
266 EXPECT_TRUE(NotificationIdGenerator::IsPersistentNotification(persistent_id)); | 282 EXPECT_TRUE(NotificationIdGenerator::IsPersistentNotification(persistent_id)); |
267 EXPECT_FALSE( | 283 EXPECT_FALSE( |
268 NotificationIdGenerator::IsNonPersistentNotification(persistent_id)); | 284 NotificationIdGenerator::IsNonPersistentNotification(persistent_id)); |
269 | 285 |
270 EXPECT_TRUE( | 286 EXPECT_TRUE( |
271 NotificationIdGenerator::IsNonPersistentNotification(non_persistent_id)); | 287 NotificationIdGenerator::IsNonPersistentNotification(non_persistent_id)); |
272 EXPECT_FALSE( | 288 EXPECT_FALSE( |
273 NotificationIdGenerator::IsPersistentNotification(non_persistent_id)); | 289 NotificationIdGenerator::IsPersistentNotification(non_persistent_id)); |
274 } | 290 } |
275 | 291 |
276 // ----------------------------------------------------------------------------- | 292 // ----------------------------------------------------------------------------- |
277 // Persistent notifications | 293 // Persistent notifications |
278 // | 294 // |
279 // Tests covering the logic specific to persistent notifications. This kind of | 295 // Tests covering the logic specific to persistent notifications. This kind of |
280 // notification does not care about the renderer process that created them. | 296 // notification does not care about the renderer process that created them. |
281 | 297 |
282 TEST_F(NotificationIdGeneratorTest, PersistentDifferentRenderProcessIds) { | 298 TEST_F(NotificationIdGeneratorTest, PersistentDifferentRenderProcessIds) { |
283 NotificationIdGenerator second_generator(browser_context(), | 299 NotificationIdGenerator second_generator(browser_context()); |
284 kRenderProcessId + 1); | |
285 | 300 |
286 EXPECT_EQ(generator()->GenerateForPersistentNotification( | 301 EXPECT_EQ(generator()->GenerateForPersistentNotification( |
287 origin(), kExampleTag, kPersistentNotificationId), | 302 origin(), kExampleTag, kPersistentNotificationId), |
288 second_generator.GenerateForPersistentNotification( | 303 second_generator.GenerateForPersistentNotification( |
289 origin(), kExampleTag, kPersistentNotificationId)); | 304 origin(), kExampleTag, kPersistentNotificationId)); |
290 | 305 |
291 EXPECT_EQ(generator()->GenerateForPersistentNotification( | 306 EXPECT_EQ(generator()->GenerateForPersistentNotification( |
292 origin(), "" /* tag */, kPersistentNotificationId), | 307 origin(), "" /* tag */, kPersistentNotificationId), |
293 second_generator.GenerateForPersistentNotification( | 308 second_generator.GenerateForPersistentNotification( |
294 origin(), "" /* tag */, kPersistentNotificationId)); | 309 origin(), "" /* tag */, kPersistentNotificationId)); |
295 } | 310 } |
296 | 311 |
297 // ----------------------------------------------------------------------------- | 312 // ----------------------------------------------------------------------------- |
298 // Non-persistent notifications | 313 // Non-persistent notifications |
299 // | 314 // |
300 // Tests covering the logic specific to non-persistent notifications. This kind | 315 // Tests covering the logic specific to non-persistent notifications. This kind |
301 // of notification cares about the renderer process they were created by when | 316 // of notification cares about the renderer process they were created by when |
302 // the notification does not have a tag, since multiple renderers would restart | 317 // the notification does not have a tag, since multiple renderers would restart |
303 // the count for non-persistent notification ids. | 318 // the count for non-persistent notification ids. |
304 | 319 |
305 TEST_F(NotificationIdGeneratorTest, NonPersistentDifferentRenderProcessIds) { | 320 TEST_F(NotificationIdGeneratorTest, NonPersistentDifferentRenderProcessIds) { |
306 NotificationIdGenerator second_generator(browser_context(), | |
307 kRenderProcessId + 1); | |
308 | |
309 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( | 321 EXPECT_EQ(generator()->GenerateForNonPersistentNotification( |
310 origin(), kExampleTag, kNonPersistentNotificationId), | 322 origin(), kExampleTag, kNonPersistentNotificationId, |
311 second_generator.GenerateForNonPersistentNotification( | 323 kRenderProcessId), |
312 origin(), kExampleTag, kNonPersistentNotificationId)); | 324 generator()->GenerateForNonPersistentNotification( |
| 325 origin(), kExampleTag, kNonPersistentNotificationId, |
| 326 kRenderProcessId + 1)); |
313 | 327 |
314 EXPECT_NE(generator()->GenerateForNonPersistentNotification( | 328 EXPECT_NE(generator()->GenerateForNonPersistentNotification( |
315 origin(), "" /* tag */, kNonPersistentNotificationId), | 329 origin(), "" /* tag */, kNonPersistentNotificationId, |
316 second_generator.GenerateForNonPersistentNotification( | 330 kRenderProcessId), |
317 origin(), "" /* tag */, kNonPersistentNotificationId)); | 331 generator()->GenerateForNonPersistentNotification( |
| 332 origin(), "" /* tag */, kNonPersistentNotificationId, |
| 333 kRenderProcessId + 1)); |
318 } | 334 } |
319 | 335 |
320 // Concatenation of the render process id and the non-persistent notification | 336 // Concatenation of the render process id and the non-persistent notification |
321 // id should not result in the generation of a duplicated notification id. | 337 // id should not result in the generation of a duplicated notification id. |
322 TEST_F(NotificationIdGeneratorTest, NonPersistentRenderProcessIdAmbiguity) { | 338 TEST_F(NotificationIdGeneratorTest, NonPersistentRenderProcessIdAmbiguity) { |
323 NotificationIdGenerator generator_rpi_5(browser_context(), 5); | |
324 NotificationIdGenerator generator_rpi_51(browser_context(), 51); | |
325 | |
326 EXPECT_NE( | 339 EXPECT_NE( |
327 generator_rpi_5.GenerateForNonPersistentNotification( | 340 generator()->GenerateForNonPersistentNotification( |
328 origin(), "" /* tag */, 1337 /* non_persistent_notification_id */), | 341 origin(), "" /* tag */, 1337 /* non_persistent_notification_id */, |
329 generator_rpi_51.GenerateForNonPersistentNotification( | 342 5 /* render_process_id */), |
330 origin(), "" /* tag */, 337 /* non_persistent_notification_id */)); | 343 generator()->GenerateForNonPersistentNotification( |
| 344 origin(), "" /* tag */, 337 /* non_persistent_notification_id */, |
| 345 51 /* render_process_id */)); |
331 } | 346 } |
332 | 347 |
333 } // namespace | 348 } // namespace |
334 } // namespace content | 349 } // namespace content |
OLD | NEW |