1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "base/logging.h"
#include "base/values.h"
#include "components/content_settings/core/browser/website_settings_info.h"
#include "components/content_settings/core/browser/website_settings_registry.h"
#include "components/content_settings/core/common/content_settings.h"
#include "components/content_settings/core/common/content_settings_types.h"
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_registry.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content_settings {
class WebsiteSettingsRegistryTest : public testing::Test {
protected:
WebsiteSettingsRegistry* registry() { return ®istry_; }
private:
WebsiteSettingsRegistry registry_;
};
TEST_F(WebsiteSettingsRegistryTest, Get) {
// CONTENT_SETTINGS_TYPE_APP_BANNER should be registered.
const WebsiteSettingsInfo* info =
registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER);
ASSERT_TRUE(info);
EXPECT_EQ(CONTENT_SETTINGS_TYPE_APP_BANNER, info->type());
EXPECT_EQ("app-banner", info->name());
}
TEST_F(WebsiteSettingsRegistryTest, GetByName) {
// Random string shouldn't be registered.
EXPECT_FALSE(registry()->GetByName("abc"));
// "app-banner" should be registered.
const WebsiteSettingsInfo* info = registry()->GetByName("app-banner");
ASSERT_TRUE(info);
EXPECT_EQ(CONTENT_SETTINGS_TYPE_APP_BANNER, info->type());
EXPECT_EQ("app-banner", info->name());
EXPECT_EQ(registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER), info);
// Register a new setting.
registry()->Register(static_cast<ContentSettingsType>(10), "test", nullptr,
WebsiteSettingsInfo::UNSYNCABLE,
WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
info = registry()->GetByName("test");
ASSERT_TRUE(info);
EXPECT_EQ(10, info->type());
EXPECT_EQ("test", info->name());
EXPECT_EQ(registry()->Get(static_cast<ContentSettingsType>(10)), info);
}
TEST_F(WebsiteSettingsRegistryTest, Properties) {
// "app-banner" should be registered.
const WebsiteSettingsInfo* info =
registry()->Get(CONTENT_SETTINGS_TYPE_APP_BANNER);
ASSERT_TRUE(info);
EXPECT_EQ("profile.content_settings.exceptions.app_banner",
info->pref_name());
EXPECT_EQ("profile.default_content_setting_values.app_banner",
info->default_value_pref_name());
ASSERT_FALSE(info->initial_default_value());
EXPECT_EQ(PrefRegistry::LOSSY_PREF, info->GetPrefRegistrationFlags());
// Register a new setting.
registry()->Register(static_cast<ContentSettingsType>(10), "test",
make_scoped_ptr(new base::FundamentalValue(999)),
WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
info = registry()->Get(static_cast<ContentSettingsType>(10));
ASSERT_TRUE(info);
EXPECT_EQ("profile.content_settings.exceptions.test", info->pref_name());
EXPECT_EQ("profile.default_content_setting_values.test",
info->default_value_pref_name());
int setting;
ASSERT_TRUE(info->initial_default_value()->GetAsInteger(&setting));
EXPECT_EQ(999, setting);
EXPECT_EQ(PrefRegistry::LOSSY_PREF |
user_prefs::PrefRegistrySyncable::SYNCABLE_PREF,
info->GetPrefRegistrationFlags());
EXPECT_EQ(WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE,
info->scoping_type());
}
TEST_F(WebsiteSettingsRegistryTest, Iteration) {
registry()->Register(static_cast<ContentSettingsType>(10), "test",
make_scoped_ptr(new base::FundamentalValue(999)),
WebsiteSettingsInfo::SYNCABLE,
WebsiteSettingsInfo::LOSSY,
WebsiteSettingsInfo::TOP_LEVEL_DOMAIN_ONLY_SCOPE);
bool found = false;
for (const WebsiteSettingsInfo* info : *registry()) {
EXPECT_EQ(registry()->Get(info->type()), info);
if (info->type() == 10) {
EXPECT_FALSE(found);
found = true;
}
}
EXPECT_TRUE(found);
}
} // namespace content_settings
|