- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / webui / options / pepper_flash_content_settings_utils_unittest.cc
1 // Copyright (c) 2012 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/ui/webui/options/pepper_flash_content_settings_utils.h"
6
7 #include "base/basictypes.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 using options::MediaException;
11 using options::MediaExceptions;
12 using options::PepperFlashContentSettingsUtils;
13
14 namespace {
15
16 MediaExceptions ConvertAndSort(const MediaException* items, size_t count) {
17   MediaExceptions result(items, items + count);
18   PepperFlashContentSettingsUtils::SortMediaExceptions(&result);
19   return result;
20 }
21
22 }  // namespace
23
24 TEST(PepperFlashContentSettingsUtilsTest, SortMediaExceptions) {
25   MediaException entry_1(ContentSettingsPattern::FromString("www.google.com"),
26                          CONTENT_SETTING_ALLOW, CONTENT_SETTING_ASK);
27   MediaException entry_2(ContentSettingsPattern::FromString("www.youtube.com"),
28                          CONTENT_SETTING_BLOCK, CONTENT_SETTING_DEFAULT);
29   MediaException entry_3(ContentSettingsPattern::Wildcard(),
30                          CONTENT_SETTING_ASK, CONTENT_SETTING_BLOCK);
31   MediaException entry_4(ContentSettingsPattern(),
32                          CONTENT_SETTING_SESSION_ONLY, CONTENT_SETTING_ALLOW);
33
34   MediaExceptions list_1;
35   list_1.push_back(entry_1);
36   list_1.push_back(entry_2);
37   list_1.push_back(entry_3);
38   list_1.push_back(entry_4);
39
40   MediaExceptions list_2;
41   list_2.push_back(entry_1);
42   list_2.push_back(entry_3);
43   list_2.push_back(entry_2);
44   list_2.push_back(entry_4);
45
46   MediaExceptions list_3;
47   list_3.push_back(entry_4);
48   list_3.push_back(entry_1);
49   list_3.push_back(entry_2);
50   list_3.push_back(entry_3);
51
52   EXPECT_NE(list_1, list_2);
53   EXPECT_NE(list_2, list_3);
54   EXPECT_NE(list_3, list_1);
55
56   PepperFlashContentSettingsUtils::SortMediaExceptions(&list_1);
57   PepperFlashContentSettingsUtils::SortMediaExceptions(&list_2);
58   PepperFlashContentSettingsUtils::SortMediaExceptions(&list_3);
59
60   EXPECT_EQ(list_1, list_2);
61   EXPECT_EQ(list_2, list_3);
62 }
63
64 TEST(PepperFlashContentSettingsUtilsTest, AreMediaExceptionsEqual) {
65   {
66     // Empty lists are equal.
67     // Default settings are not compared directly, so it is possible to return
68     // true when they are different.
69     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
70         CONTENT_SETTING_BLOCK,
71         MediaExceptions(),
72         CONTENT_SETTING_ASK,
73         MediaExceptions(),
74         false,
75         false));
76   }
77
78   {
79     MediaException exceptions_1[] = {
80       MediaException(ContentSettingsPattern::FromString("www.google.com"),
81                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW),
82       MediaException(ContentSettingsPattern::FromString("www.youtube.com"),
83                      CONTENT_SETTING_ASK, CONTENT_SETTING_ASK)
84     };
85
86     MediaException exceptions_2[] = {
87       MediaException(ContentSettingsPattern::FromString("www.google.com"),
88                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW)
89     };
90
91     // The exception of "www.youtube.com" in |exceptions_1| should not affect
92     // the result, because it has the same settings as |default_setting_2|.
93     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
94         CONTENT_SETTING_ALLOW,
95         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
96         CONTENT_SETTING_ASK,
97         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
98         false,
99         false));
100     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
101         CONTENT_SETTING_ASK,
102         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
103         CONTENT_SETTING_ALLOW,
104         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
105         false,
106         false));
107     // Changing |default_setting_2| should change the result.
108     EXPECT_FALSE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
109         CONTENT_SETTING_ALLOW,
110         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
111         CONTENT_SETTING_ALLOW,
112         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
113         false,
114         false));
115   }
116
117   {
118     // Similar to the previous block, but reoder the exceptions. The outcome
119     // should be the same.
120     MediaException exceptions_1[] = {
121       MediaException(ContentSettingsPattern::FromString("www.youtube.com"),
122                      CONTENT_SETTING_ASK, CONTENT_SETTING_ASK),
123       MediaException(ContentSettingsPattern::FromString("www.google.com"),
124                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW)
125     };
126
127     MediaException exceptions_2[] = {
128       MediaException(ContentSettingsPattern::FromString("www.google.com"),
129                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW)
130     };
131
132     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
133         CONTENT_SETTING_ALLOW,
134         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
135         CONTENT_SETTING_ASK,
136         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
137         false,
138         false));
139     EXPECT_FALSE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
140         CONTENT_SETTING_ALLOW,
141         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
142         CONTENT_SETTING_ALLOW,
143         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
144         false,
145         false));
146   }
147
148   {
149     MediaException exceptions_1[] = {
150       MediaException(ContentSettingsPattern::FromString("www.google.com"),
151                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK)
152     };
153
154     MediaException exceptions_2[] = {
155       MediaException(ContentSettingsPattern::FromString("www.google.com"),
156                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW)
157     };
158
159     // Test that |ignore_video_setting| works.
160     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
161         CONTENT_SETTING_ASK,
162         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
163         CONTENT_SETTING_ASK,
164         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
165         false,
166         true));
167     EXPECT_FALSE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
168         CONTENT_SETTING_ASK,
169         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
170         CONTENT_SETTING_ASK,
171         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
172         false,
173         false));
174   }
175
176   {
177     MediaException exceptions_1[] = {
178       MediaException(ContentSettingsPattern::FromString("www.google.com"),
179                      CONTENT_SETTING_BLOCK, CONTENT_SETTING_ALLOW)
180     };
181
182     MediaException exceptions_2[] = {
183       MediaException(ContentSettingsPattern::FromString("www.google.com"),
184                      CONTENT_SETTING_ALLOW, CONTENT_SETTING_ALLOW)
185     };
186
187     // Test that |ignore_audio_setting| works.
188     EXPECT_TRUE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
189         CONTENT_SETTING_ASK,
190         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
191         CONTENT_SETTING_ASK,
192         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
193         true,
194         false));
195     EXPECT_FALSE(PepperFlashContentSettingsUtils::AreMediaExceptionsEqual(
196         CONTENT_SETTING_ASK,
197         ConvertAndSort(exceptions_1, arraysize(exceptions_1)),
198         CONTENT_SETTING_ASK,
199         ConvertAndSort(exceptions_2, arraysize(exceptions_2)),
200         false,
201         false));
202   }
203 }