Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1648)

Unified Diff: chrome/browser/notifications/notification_channels_provider_android_unittest.cc

Issue 2922473003: [Android] Implement GetRuleIterator for channels provider (Closed)
Patch Set: rebase Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/notifications/notification_channels_provider_android.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/notifications/notification_channels_provider_android_unittest.cc
diff --git a/chrome/browser/notifications/notification_channels_provider_android_unittest.cc b/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
index 2024fcabd15b4970d258cc3ee7441f881e8e4609..991f1a49a4b965e75d23337b6df69fe86e90811c 100644
--- a/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
+++ b/chrome/browser/notifications/notification_channels_provider_android_unittest.cc
@@ -7,6 +7,8 @@
#include "base/memory/ptr_util.h"
#include "base/values.h"
#include "components/content_settings/core/browser/content_settings_pref.h"
+#include "components/content_settings/core/browser/content_settings_rule.h"
+#include "components/content_settings/core/browser/content_settings_utils.h"
#include "components/content_settings/core/common/content_settings_pattern.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -26,6 +28,7 @@ class MockNotificationChannelsBridge
MOCK_METHOD2(CreateChannel, void(const std::string&, bool));
MOCK_METHOD1(GetChannelStatus, NotificationChannelStatus(const std::string&));
MOCK_METHOD1(DeleteChannel, void(const std::string&));
+ MOCK_METHOD0(GetChannels, std::vector<NotificationChannel>());
};
class NotificationChannelsProviderAndroidTest : public testing::Test {
@@ -129,3 +132,88 @@ TEST_F(NotificationChannelsProviderAndroidTest,
EXPECT_TRUE(result);
}
+
+TEST_F(NotificationChannelsProviderAndroidTest,
+ GetRuleIteratorWhenChannelsShouldNotBeUsed) {
+ InitChannelsProvider(false /* should_use_channels */);
+ EXPECT_FALSE(channels_provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
+ false /* incognito */));
+}
+
+TEST_F(NotificationChannelsProviderAndroidTest, GetRuleIteratorForIncognito) {
+ InitChannelsProvider(true /* should_use_channels */);
+ EXPECT_FALSE(
+ channels_provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+ std::string(), true /* incognito */));
+}
+
+TEST_F(NotificationChannelsProviderAndroidTest,
+ GetRuleIteratorWhenNoChannelsExist) {
+ InitChannelsProvider(true /* should_use_channels */);
+ EXPECT_CALL(*mock_bridge_, GetChannels());
+ EXPECT_FALSE(channels_provider_->GetRuleIterator(
+ CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
+ false /* incognito */));
+}
+
+TEST_F(NotificationChannelsProviderAndroidTest,
+ GetRuleIteratorWhenOneBlockedChannelExists) {
+ InitChannelsProvider(true /* should_use_channels */);
+ std::vector<NotificationChannel> channels;
+ channels.emplace_back(kTestOrigin, NotificationChannelStatus::BLOCKED);
+ EXPECT_CALL(*mock_bridge_, GetChannels()).WillOnce(Return(channels));
+ std::unique_ptr<content_settings::RuleIterator> result =
+ channels_provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+ std::string(), false /* incognito */);
+ EXPECT_TRUE(result->HasNext());
+ content_settings::Rule rule = result->Next();
+ EXPECT_EQ(ContentSettingsPattern::FromString(kTestOrigin),
+ rule.primary_pattern);
+ EXPECT_EQ(CONTENT_SETTING_BLOCK,
+ content_settings::ValueToContentSetting(rule.value.get()));
+ EXPECT_FALSE(result->HasNext());
+}
+
+TEST_F(NotificationChannelsProviderAndroidTest,
+ GetRuleIteratorWhenOneAllowedChannelExists) {
+ InitChannelsProvider(true /* should_use_channels */);
+ std::vector<NotificationChannel> channels;
+ channels.emplace_back(kTestOrigin, NotificationChannelStatus::ENABLED);
+ EXPECT_CALL(*mock_bridge_, GetChannels()).WillOnce(Return(channels));
+ std::unique_ptr<content_settings::RuleIterator> result =
+ channels_provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+ std::string(), false /* incognito */);
+ EXPECT_TRUE(result->HasNext());
+ content_settings::Rule rule = result->Next();
+ EXPECT_EQ(ContentSettingsPattern::FromString(kTestOrigin),
+ rule.primary_pattern);
+ EXPECT_EQ(CONTENT_SETTING_ALLOW,
+ content_settings::ValueToContentSetting(rule.value.get()));
+ EXPECT_FALSE(result->HasNext());
+}
+
+TEST_F(NotificationChannelsProviderAndroidTest,
+ GetRuleIteratorWhenMultipleChannelsExist) {
+ InitChannelsProvider(true /* should_use_channels */);
+ std::vector<NotificationChannel> channels;
+ channels.emplace_back("https://abc.com", NotificationChannelStatus::ENABLED);
+ channels.emplace_back("https://xyz.com", NotificationChannelStatus::BLOCKED);
+ EXPECT_CALL(*mock_bridge_, GetChannels()).WillOnce(Return(channels));
+ std::unique_ptr<content_settings::RuleIterator> result =
+ channels_provider_->GetRuleIterator(CONTENT_SETTINGS_TYPE_NOTIFICATIONS,
+ std::string(), false /* incognito */);
+ EXPECT_TRUE(result->HasNext());
+ content_settings::Rule first_rule = result->Next();
+ EXPECT_EQ(ContentSettingsPattern::FromString("https://abc.com"),
+ first_rule.primary_pattern);
+ EXPECT_EQ(CONTENT_SETTING_ALLOW,
+ content_settings::ValueToContentSetting(first_rule.value.get()));
+ EXPECT_TRUE(result->HasNext());
+ content_settings::Rule second_rule = result->Next();
+ EXPECT_EQ(ContentSettingsPattern::FromString("https://xyz.com"),
+ second_rule.primary_pattern);
+ EXPECT_EQ(CONTENT_SETTING_BLOCK,
+ content_settings::ValueToContentSetting(second_rule.value.get()));
+ EXPECT_FALSE(result->HasNext());
+}
« no previous file with comments | « chrome/browser/notifications/notification_channels_provider_android.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698