- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / content_settings / content_settings_origin_identifier_value_map_unittest.cc
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/content_settings/content_settings_origin_identifier_value_map.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "base/values.h"
9 #include "chrome/browser/content_settings/content_settings_rule.h"
10 #include "chrome/browser/content_settings/content_settings_utils.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12 #include "url/gurl.h"
13
14 TEST(OriginIdentifierValueMapTest, SetGetValue) {
15   content_settings::OriginIdentifierValueMap map;
16
17   EXPECT_EQ(NULL,
18             map.GetValue(GURL("http://www.google.com"),
19                          GURL("http://www.google.com"),
20                          CONTENT_SETTINGS_TYPE_COOKIES,
21                          std::string()));
22   map.SetValue(ContentSettingsPattern::FromString("[*.]google.com"),
23                ContentSettingsPattern::FromString("[*.]google.com"),
24                CONTENT_SETTINGS_TYPE_COOKIES,
25                std::string(),
26                Value::CreateIntegerValue(1));
27
28   scoped_ptr<Value> expected_value(Value::CreateIntegerValue(1));
29   EXPECT_TRUE(expected_value->Equals(map.GetValue(GURL("http://www.google.com"),
30                                                   GURL("http://www.google.com"),
31                                                   CONTENT_SETTINGS_TYPE_COOKIES,
32                                                   std::string())));
33
34   EXPECT_EQ(NULL,
35             map.GetValue(GURL("http://www.google.com"),
36                          GURL("http://www.youtube.com"),
37                          CONTENT_SETTINGS_TYPE_COOKIES,
38                          std::string()));
39
40   EXPECT_EQ(NULL,
41             map.GetValue(GURL("http://www.youtube.com"),
42                          GURL("http://www.google.com"),
43                          CONTENT_SETTINGS_TYPE_COOKIES,
44                          std::string()));
45
46   EXPECT_EQ(NULL,
47             map.GetValue(GURL("http://www.google.com"),
48                          GURL("http://www.google.com"),
49                          CONTENT_SETTINGS_TYPE_POPUPS,
50                          std::string()));
51
52   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
53                                GURL("http://www.google.com"),
54                                CONTENT_SETTINGS_TYPE_COOKIES,
55                                "resource_id"));
56 }
57
58 TEST(OriginIdentifierValueMapTest, SetDeleteValue) {
59   content_settings::OriginIdentifierValueMap map;
60
61   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
62                                GURL("http://www.google.com"),
63                                CONTENT_SETTINGS_TYPE_PLUGINS,
64                                "java-plugin"));
65
66   // Set sample values.
67   map.SetValue(
68       ContentSettingsPattern::FromString("[*.]google.com"),
69       ContentSettingsPattern::FromString("[*.]google.com"),
70       CONTENT_SETTINGS_TYPE_PLUGINS,
71       "java-plugin",
72       Value::CreateIntegerValue(1));
73
74   int actual_value;
75   EXPECT_TRUE(map.GetValue(GURL("http://www.google.com"),
76                            GURL("http://www.google.com"),
77                            CONTENT_SETTINGS_TYPE_PLUGINS,
78                            "java-plugin")->GetAsInteger(&actual_value));
79   EXPECT_EQ(1, actual_value);
80   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
81                                GURL("http://www.google.com"),
82                                CONTENT_SETTINGS_TYPE_PLUGINS,
83                                "flash-plugin"));
84   // Delete non-existing value.
85   map.DeleteValue(
86       ContentSettingsPattern::FromString("[*.]google.com"),
87       ContentSettingsPattern::FromString("[*.]google.com"),
88       CONTENT_SETTINGS_TYPE_PLUGINS,
89       "flash-plugin");
90   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
91                                GURL("http://www.google.com"),
92                                CONTENT_SETTINGS_TYPE_PLUGINS,
93                                "flash-plugin"));
94   EXPECT_TRUE(map.GetValue(GURL("http://www.google.com"),
95                            GURL("http://www.google.com"),
96                            CONTENT_SETTINGS_TYPE_PLUGINS,
97                            "java-plugin")->GetAsInteger(&actual_value));
98   EXPECT_EQ(1, actual_value);
99
100   // Delete existing value.
101   map.DeleteValue(
102       ContentSettingsPattern::FromString("[*.]google.com"),
103       ContentSettingsPattern::FromString("[*.]google.com"),
104       CONTENT_SETTINGS_TYPE_PLUGINS,
105       "java-plugin");
106
107   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
108                                GURL("http://www.google.com"),
109                                CONTENT_SETTINGS_TYPE_PLUGINS,
110                                "java-plugin"));
111 }
112
113 TEST(OriginIdentifierValueMapTest, Clear) {
114   content_settings::OriginIdentifierValueMap map;
115   EXPECT_TRUE(map.empty());
116
117   // Set two values.
118   map.SetValue(
119       ContentSettingsPattern::FromString("[*.]google.com"),
120       ContentSettingsPattern::FromString("[*.]google.com"),
121       CONTENT_SETTINGS_TYPE_PLUGINS,
122       "java-plugin",
123       Value::CreateIntegerValue(1));
124   map.SetValue(ContentSettingsPattern::FromString("[*.]google.com"),
125                ContentSettingsPattern::FromString("[*.]google.com"),
126                CONTENT_SETTINGS_TYPE_COOKIES,
127                std::string(),
128                Value::CreateIntegerValue(1));
129   EXPECT_FALSE(map.empty());
130   int actual_value;
131   EXPECT_TRUE(map.GetValue(GURL("http://www.google.com"),
132                            GURL("http://www.google.com"),
133                            CONTENT_SETTINGS_TYPE_PLUGINS,
134                            "java-plugin")->GetAsInteger(&actual_value));
135   EXPECT_EQ(1, actual_value);
136
137   // Clear the map.
138   map.clear();
139   EXPECT_TRUE(map.empty());
140   EXPECT_EQ(NULL, map.GetValue(GURL("http://www.google.com"),
141                                GURL("http://www.google.com"),
142                                CONTENT_SETTINGS_TYPE_PLUGINS,
143                                "java-plugin"));
144 }
145
146 TEST(OriginIdentifierValueMapTest, ListEntryPrecedences) {
147   content_settings::OriginIdentifierValueMap map;
148
149   map.SetValue(ContentSettingsPattern::FromString("[*.]google.com"),
150                ContentSettingsPattern::FromString("[*.]google.com"),
151                CONTENT_SETTINGS_TYPE_COOKIES,
152                std::string(),
153                Value::CreateIntegerValue(1));
154
155   map.SetValue(ContentSettingsPattern::FromString("www.google.com"),
156                ContentSettingsPattern::FromString("[*.]google.com"),
157                CONTENT_SETTINGS_TYPE_COOKIES,
158                std::string(),
159                Value::CreateIntegerValue(2));
160
161   int actual_value;
162   EXPECT_TRUE(map.GetValue(GURL("http://mail.google.com"),
163                            GURL("http://www.google.com"),
164                            CONTENT_SETTINGS_TYPE_COOKIES,
165                            std::string())->GetAsInteger(&actual_value));
166   EXPECT_EQ(1, actual_value);
167
168   EXPECT_TRUE(map.GetValue(GURL("http://www.google.com"),
169                            GURL("http://www.google.com"),
170                            CONTENT_SETTINGS_TYPE_COOKIES,
171                            std::string())->GetAsInteger(&actual_value));
172   EXPECT_EQ(2, actual_value);
173 }
174
175 TEST(OriginIdentifierValueMapTest, IterateEmpty) {
176   content_settings::OriginIdentifierValueMap map;
177   scoped_ptr<content_settings::RuleIterator> rule_iterator(
178       map.GetRuleIterator(CONTENT_SETTINGS_TYPE_COOKIES, std::string(), NULL));
179   EXPECT_FALSE(rule_iterator->HasNext());
180 }
181
182 TEST(OriginIdentifierValueMapTest, IterateNonempty) {
183   // Verify the precedence order.
184   content_settings::OriginIdentifierValueMap map;
185   ContentSettingsPattern pattern =
186       ContentSettingsPattern::FromString("[*.]google.com");
187   ContentSettingsPattern sub_pattern =
188       ContentSettingsPattern::FromString("sub.google.com");
189   map.SetValue(pattern,
190                ContentSettingsPattern::Wildcard(),
191                CONTENT_SETTINGS_TYPE_COOKIES,
192                std::string(),
193                Value::CreateIntegerValue(1));
194   map.SetValue(sub_pattern,
195                ContentSettingsPattern::Wildcard(),
196                CONTENT_SETTINGS_TYPE_COOKIES,
197                std::string(),
198                Value::CreateIntegerValue(2));
199
200   scoped_ptr<content_settings::RuleIterator> rule_iterator(
201       map.GetRuleIterator(CONTENT_SETTINGS_TYPE_COOKIES, std::string(), NULL));
202   ASSERT_TRUE(rule_iterator->HasNext());
203   content_settings::Rule rule = rule_iterator->Next();
204   EXPECT_EQ(sub_pattern, rule.primary_pattern);
205   EXPECT_EQ(2, content_settings::ValueToContentSetting(rule.value.get()));
206
207   ASSERT_TRUE(rule_iterator->HasNext());
208   rule = rule_iterator->Next();
209   EXPECT_EQ(pattern, rule.primary_pattern);
210   EXPECT_EQ(1, content_settings::ValueToContentSetting(rule.value.get()));
211 }