| 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 |