OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "platform/feature_policy/FeaturePolicy.h" | 5 #include "platform/feature_policy/FeaturePolicy.h" |
6 | 6 |
7 #include "platform/RuntimeEnabledFeatures.h" | 7 #include "platform/RuntimeEnabledFeatures.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 // Origin strings used for tests | 10 // Origin strings used for tests |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 messages.clear(); | 98 messages.clear(); |
99 FeaturePolicy::parseFeaturePolicy(policyString, m_originA.get(), &messages); | 99 FeaturePolicy::parseFeaturePolicy(policyString, m_originA.get(), &messages); |
100 EXPECT_NE(0UL, messages.size()); | 100 EXPECT_NE(0UL, messages.size()); |
101 } | 101 } |
102 } | 102 } |
103 | 103 |
104 TEST_F(FeaturePolicyTest, PolicyParsedCorrectly) { | 104 TEST_F(FeaturePolicyTest, PolicyParsedCorrectly) { |
105 Vector<String> messages; | 105 Vector<String> messages; |
106 | 106 |
107 // Empty policy. | 107 // Empty policy. |
108 WebParsedFeaturePolicy parsedPolicy = | 108 WebParsedFeaturePolicyHeader parsedHeader = |
109 FeaturePolicy::parseFeaturePolicy("{}", m_originA.get(), &messages); | 109 FeaturePolicy::parseFeaturePolicy("{}", m_originA.get(), &messages); |
110 EXPECT_EQ(0UL, parsedPolicy.size()); | 110 EXPECT_EQ(0UL, parsedHeader.size()); |
111 | 111 |
112 // Simple policy with "self". | 112 // Simple policy with "self". |
113 parsedPolicy = FeaturePolicy::parseFeaturePolicy( | 113 parsedHeader = FeaturePolicy::parseFeaturePolicy( |
114 "{\"default-self\": [\"self\"]}", m_originA.get(), &messages); | 114 "{\"default-self\": [\"self\"]}", m_originA.get(), &messages); |
115 EXPECT_EQ(1UL, parsedPolicy.size()); | 115 EXPECT_EQ(1UL, parsedHeader.size()); |
116 EXPECT_EQ("default-self", parsedPolicy[0].featureName); | 116 EXPECT_EQ("default-self", parsedHeader[0].featureName); |
117 EXPECT_FALSE(parsedPolicy[0].matchesAllOrigins); | 117 EXPECT_FALSE(parsedHeader[0].matchesAllOrigins); |
118 EXPECT_EQ(1UL, parsedPolicy[0].origins.size()); | 118 EXPECT_EQ(1UL, parsedHeader[0].origins.size()); |
119 EXPECT_TRUE(m_originA->isSameSchemeHostPortAndSuborigin( | 119 EXPECT_TRUE(m_originA->isSameSchemeHostPortAndSuborigin( |
120 parsedPolicy[0].origins[0].get())); | 120 parsedHeader[0].origins[0].get())); |
121 | 121 |
122 // Simple policy with *. | 122 // Simple policy with *. |
123 parsedPolicy = FeaturePolicy::parseFeaturePolicy( | 123 parsedHeader = FeaturePolicy::parseFeaturePolicy( |
124 "{\"default-self\": [\"*\"]}", m_originA.get(), &messages); | 124 "{\"default-self\": [\"*\"]}", m_originA.get(), &messages); |
125 EXPECT_EQ(1UL, parsedPolicy.size()); | 125 EXPECT_EQ(1UL, parsedHeader.size()); |
126 EXPECT_EQ("default-self", parsedPolicy[0].featureName); | 126 EXPECT_EQ("default-self", parsedHeader[0].featureName); |
127 EXPECT_TRUE(parsedPolicy[0].matchesAllOrigins); | 127 EXPECT_TRUE(parsedHeader[0].matchesAllOrigins); |
128 EXPECT_EQ(0UL, parsedPolicy[0].origins.size()); | 128 EXPECT_EQ(0UL, parsedHeader[0].origins.size()); |
129 | 129 |
130 // Complicated policy. | 130 // Complicated policy. |
131 parsedPolicy = FeaturePolicy::parseFeaturePolicy( | 131 parsedHeader = FeaturePolicy::parseFeaturePolicy( |
132 "{\"default-self\": [\"*\"], " | 132 "{\"default-self\": [\"*\"], " |
133 "\"default-on\": [\"https://example.net\", \"https://example.org\"], " | 133 "\"default-on\": [\"https://example.net\", \"https://example.org\"], " |
134 "\"default-off\": [\"self\"]}", | 134 "\"default-off\": [\"self\"]}", |
135 m_originA.get(), &messages); | 135 m_originA.get(), &messages); |
136 EXPECT_EQ(3UL, parsedPolicy.size()); | 136 EXPECT_EQ(3UL, parsedHeader.size()); |
137 EXPECT_EQ("default-self", parsedPolicy[0].featureName); | 137 EXPECT_EQ("default-self", parsedHeader[0].featureName); |
138 EXPECT_TRUE(parsedPolicy[0].matchesAllOrigins); | 138 EXPECT_TRUE(parsedHeader[0].matchesAllOrigins); |
139 EXPECT_EQ(0UL, parsedPolicy[0].origins.size()); | 139 EXPECT_EQ(0UL, parsedHeader[0].origins.size()); |
140 EXPECT_EQ("default-on", parsedPolicy[1].featureName); | 140 EXPECT_EQ("default-on", parsedHeader[1].featureName); |
141 EXPECT_FALSE(parsedPolicy[1].matchesAllOrigins); | 141 EXPECT_FALSE(parsedHeader[1].matchesAllOrigins); |
142 EXPECT_EQ(2UL, parsedPolicy[1].origins.size()); | 142 EXPECT_EQ(2UL, parsedHeader[1].origins.size()); |
143 EXPECT_TRUE(m_originB->isSameSchemeHostPortAndSuborigin( | 143 EXPECT_TRUE(m_originB->isSameSchemeHostPortAndSuborigin( |
144 parsedPolicy[1].origins[0].get())); | 144 parsedHeader[1].origins[0].get())); |
145 EXPECT_TRUE(m_originC->isSameSchemeHostPortAndSuborigin( | 145 EXPECT_TRUE(m_originC->isSameSchemeHostPortAndSuborigin( |
146 parsedPolicy[1].origins[1].get())); | 146 parsedHeader[1].origins[1].get())); |
147 EXPECT_EQ("default-off", parsedPolicy[2].featureName); | 147 EXPECT_EQ("default-off", parsedHeader[2].featureName); |
148 EXPECT_FALSE(parsedPolicy[2].matchesAllOrigins); | 148 EXPECT_FALSE(parsedHeader[2].matchesAllOrigins); |
149 EXPECT_EQ(1UL, parsedPolicy[2].origins.size()); | 149 EXPECT_EQ(1UL, parsedHeader[2].origins.size()); |
150 EXPECT_TRUE(m_originA->isSameSchemeHostPortAndSuborigin( | 150 EXPECT_TRUE(m_originA->isSameSchemeHostPortAndSuborigin( |
151 parsedPolicy[2].origins[0].get())); | 151 parsedHeader[2].origins[0].get())); |
152 } | 152 } |
153 | 153 |
154 TEST_F(FeaturePolicyTest, TestInitialPolicy) { | 154 TEST_F(FeaturePolicyTest, TestInitialPolicy) { |
155 // +-------------+ | 155 // +-------------+ |
156 // |(1)Origin A | | 156 // |(1)Origin A | |
157 // |No Policy | | 157 // |No Policy | |
158 // +-------------+ | 158 // +-------------+ |
159 // Default-on and top-level-only features should be enabled in top-level | 159 // Default-on and top-level-only features should be enabled in top-level |
160 // frame. Default-off features should be disabled. | 160 // frame. Default-off features should be disabled. |
161 std::unique_ptr<FeaturePolicy> policy1 = | 161 std::unique_ptr<FeaturePolicy> policy1 = |
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
786 EXPECT_EQ(0UL, messages.size()); | 786 EXPECT_EQ(0UL, messages.size()); |
787 EXPECT_TRUE( | 787 EXPECT_TRUE( |
788 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originA)); | 788 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originA)); |
789 EXPECT_TRUE( | 789 EXPECT_TRUE( |
790 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originB)); | 790 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originB)); |
791 EXPECT_FALSE( | 791 EXPECT_FALSE( |
792 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originC)); | 792 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originC)); |
793 } | 793 } |
794 | 794 |
795 } // namespace blink | 795 } // namespace blink |
OLD | NEW |