| Index: content/browser/notifications/notification_id_generator_unittest.cc
|
| diff --git a/content/browser/notifications/notification_id_generator_unittest.cc b/content/browser/notifications/notification_id_generator_unittest.cc
|
| index ef20b5324f3d1e3bc1baa75b2d53cf3588f44e21..3b8b9bb4bfda472e4793390b6742301166a0d5d0 100644
|
| --- a/content/browser/notifications/notification_id_generator_unittest.cc
|
| +++ b/content/browser/notifications/notification_id_generator_unittest.cc
|
| @@ -37,8 +37,7 @@ class TestBrowserContextConfigurableIncognito : public TestBrowserContext {
|
|
|
| class NotificationIdGeneratorTest : public ::testing::Test {
|
| public:
|
| - NotificationIdGeneratorTest()
|
| - : generator_(&browser_context_, kRenderProcessId) {}
|
| + NotificationIdGeneratorTest() : generator_(&browser_context_) {}
|
|
|
| void SetUp() override {}
|
|
|
| @@ -78,21 +77,24 @@ TEST_F(NotificationIdGeneratorTest, DeterministicGeneration) {
|
|
|
| // Non-persistent notifications.
|
| EXPECT_EQ(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId));
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
|
|
| EXPECT_EQ(generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId),
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId));
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
| }
|
|
|
| // Uniqueness of notification ids will be impacted by the browser context.
|
| TEST_F(NotificationIdGeneratorTest, DifferentBrowserContexts) {
|
| TestBrowserContextConfigurableIncognito second_browser_context;
|
| - NotificationIdGenerator second_generator(&second_browser_context,
|
| - kRenderProcessId);
|
| + NotificationIdGenerator second_generator(&second_browser_context);
|
|
|
| // Persistent notifications.
|
| EXPECT_NE(generator()->GenerateForPersistentNotification(
|
| @@ -107,14 +109,18 @@ TEST_F(NotificationIdGeneratorTest, DifferentBrowserContexts) {
|
|
|
| // Non-persistent notifications.
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| second_generator.GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId));
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
|
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId),
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| second_generator.GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId));
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
| }
|
|
|
| // Uniqueness of notification ids will be impacted by the fact whether the
|
| @@ -144,14 +150,16 @@ TEST_F(NotificationIdGeneratorTest, DifferentIncognitoStates) {
|
|
|
| std::string normal_non_persistent_notification_id =
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId);
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId);
|
|
|
| browser_context()->set_incognito(true);
|
| ASSERT_TRUE(browser_context()->IsOffTheRecord());
|
|
|
| std::string incognito_non_persistent_notification_id =
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId);
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId);
|
|
|
| EXPECT_NE(normal_non_persistent_notification_id,
|
| incognito_non_persistent_notification_id);
|
| @@ -169,9 +177,11 @@ TEST_F(NotificationIdGeneratorTest, DifferentOrigins) {
|
|
|
| // Non-persistent notifications.
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - different_origin, kExampleTag, kNonPersistentNotificationId));
|
| + different_origin, kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
| }
|
|
|
| // The tag, when non-empty, will impact the generated notification id.
|
| @@ -186,17 +196,16 @@ TEST_F(NotificationIdGeneratorTest, DifferentTags) {
|
|
|
| // Non-persistent notifications.
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), different_tag, kNonPersistentNotificationId));
|
| + origin(), different_tag, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
| }
|
|
|
| // The persistent or non-persistent notification id will impact the generated
|
| // notification id when the tag is empty.
|
| TEST_F(NotificationIdGeneratorTest, DifferentIds) {
|
| - NotificationIdGenerator second_generator(browser_context(),
|
| - kRenderProcessId + 1);
|
| -
|
| // Persistent notifications.
|
| EXPECT_NE(generator()->GenerateForPersistentNotification(
|
| origin(), "" /* tag */, kPersistentNotificationId),
|
| @@ -205,15 +214,19 @@ TEST_F(NotificationIdGeneratorTest, DifferentIds) {
|
|
|
| // Non-persistent notifications.
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId),
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId + 1));
|
| + origin(), "" /* tag */, kNonPersistentNotificationId + 1,
|
| + kRenderProcessId));
|
|
|
| // Non-persistent when a tag is being used.
|
| EXPECT_EQ(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| - second_generator.GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId));
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId + 1));
|
| }
|
|
|
| // Using a numeric tag that could resemble a persistent notification id should
|
| @@ -229,9 +242,10 @@ TEST_F(NotificationIdGeneratorTest, NumericTagAmbiguity) {
|
| // Non-persistent notifications.
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| origin(), base::IntToString(kNonPersistentNotificationId),
|
| - kNonPersistentNotificationId),
|
| + kNonPersistentNotificationId, kRenderProcessId),
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId));
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId));
|
| }
|
|
|
| // Using port numbers and a tag which, when concatenated, could end up being
|
| @@ -247,10 +261,11 @@ TEST_F(NotificationIdGeneratorTest, OriginPortAmbiguity) {
|
| origin_8051, "7", kPersistentNotificationId));
|
|
|
| // Non-persistent notifications.
|
| - EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin_805, "17", kNonPersistentNotificationId),
|
| - generator()->GenerateForNonPersistentNotification(
|
| - origin_8051, "7", kNonPersistentNotificationId));
|
| + EXPECT_NE(
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin_805, "17", kNonPersistentNotificationId, kRenderProcessId),
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin_8051, "7", kNonPersistentNotificationId, kRenderProcessId));
|
| }
|
|
|
| // Verifies that the static Is(Non)PersistentNotification helpers can correctly
|
| @@ -261,7 +276,8 @@ TEST_F(NotificationIdGeneratorTest, DetectIdFormat) {
|
|
|
| std::string non_persistent_id =
|
| generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId);
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId);
|
|
|
| EXPECT_TRUE(NotificationIdGenerator::IsPersistentNotification(persistent_id));
|
| EXPECT_FALSE(
|
| @@ -280,8 +296,7 @@ TEST_F(NotificationIdGeneratorTest, DetectIdFormat) {
|
| // notification does not care about the renderer process that created them.
|
|
|
| TEST_F(NotificationIdGeneratorTest, PersistentDifferentRenderProcessIds) {
|
| - NotificationIdGenerator second_generator(browser_context(),
|
| - kRenderProcessId + 1);
|
| + NotificationIdGenerator second_generator(browser_context());
|
|
|
| EXPECT_EQ(generator()->GenerateForPersistentNotification(
|
| origin(), kExampleTag, kPersistentNotificationId),
|
| @@ -303,31 +318,31 @@ TEST_F(NotificationIdGeneratorTest, PersistentDifferentRenderProcessIds) {
|
| // the count for non-persistent notification ids.
|
|
|
| TEST_F(NotificationIdGeneratorTest, NonPersistentDifferentRenderProcessIds) {
|
| - NotificationIdGenerator second_generator(browser_context(),
|
| - kRenderProcessId + 1);
|
| -
|
| EXPECT_EQ(generator()->GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId),
|
| - second_generator.GenerateForNonPersistentNotification(
|
| - origin(), kExampleTag, kNonPersistentNotificationId));
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin(), kExampleTag, kNonPersistentNotificationId,
|
| + kRenderProcessId + 1));
|
|
|
| EXPECT_NE(generator()->GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId),
|
| - second_generator.GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, kNonPersistentNotificationId));
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId),
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin(), "" /* tag */, kNonPersistentNotificationId,
|
| + kRenderProcessId + 1));
|
| }
|
|
|
| // Concatenation of the render process id and the non-persistent notification
|
| // id should not result in the generation of a duplicated notification id.
|
| TEST_F(NotificationIdGeneratorTest, NonPersistentRenderProcessIdAmbiguity) {
|
| - NotificationIdGenerator generator_rpi_5(browser_context(), 5);
|
| - NotificationIdGenerator generator_rpi_51(browser_context(), 51);
|
| -
|
| EXPECT_NE(
|
| - generator_rpi_5.GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, 1337 /* non_persistent_notification_id */),
|
| - generator_rpi_51.GenerateForNonPersistentNotification(
|
| - origin(), "" /* tag */, 337 /* non_persistent_notification_id */));
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin(), "" /* tag */, 1337 /* non_persistent_notification_id */,
|
| + 5 /* render_process_id */),
|
| + generator()->GenerateForNonPersistentNotification(
|
| + origin(), "" /* tag */, 337 /* non_persistent_notification_id */,
|
| + 51 /* render_process_id */));
|
| }
|
|
|
| } // namespace
|
|
|