| 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 28 matching lines...) Expand all Loading... |
| 39 class FeaturePolicyTest : public ::testing::Test { | 39 class FeaturePolicyTest : public ::testing::Test { |
| 40 protected: | 40 protected: |
| 41 FeaturePolicyTest() {} | 41 FeaturePolicyTest() {} |
| 42 | 42 |
| 43 ~FeaturePolicyTest() { | 43 ~FeaturePolicyTest() { |
| 44 } | 44 } |
| 45 | 45 |
| 46 RefPtr<SecurityOrigin> origin_a_ = SecurityOrigin::CreateFromString(ORIGIN_A); | 46 RefPtr<SecurityOrigin> origin_a_ = SecurityOrigin::CreateFromString(ORIGIN_A); |
| 47 RefPtr<SecurityOrigin> origin_b_ = SecurityOrigin::CreateFromString(ORIGIN_B); | 47 RefPtr<SecurityOrigin> origin_b_ = SecurityOrigin::CreateFromString(ORIGIN_B); |
| 48 RefPtr<SecurityOrigin> origin_c_ = SecurityOrigin::CreateFromString(ORIGIN_C); | 48 RefPtr<SecurityOrigin> origin_c_ = SecurityOrigin::CreateFromString(ORIGIN_C); |
| 49 |
| 50 const FeatureNameMap test_feature_name_map = { |
| 51 {"fullscreen", blink::WebFeaturePolicyFeature::kFullscreen}, |
| 52 {"payment", blink::WebFeaturePolicyFeature::kPayment}, |
| 53 {"vibrate", blink::WebFeaturePolicyFeature::kVibrate}}; |
| 49 }; | 54 }; |
| 50 | 55 |
| 51 TEST_F(FeaturePolicyTest, ParseValidPolicy) { | 56 TEST_F(FeaturePolicyTest, ParseValidPolicy) { |
| 52 Vector<String> messages; | 57 Vector<String> messages; |
| 53 for (const char* policy_string : kValidPolicies) { | 58 for (const char* policy_string : kValidPolicies) { |
| 54 messages.clear(); | 59 messages.clear(); |
| 55 ParseFeaturePolicy(policy_string, origin_a_.Get(), &messages); | 60 ParseFeaturePolicy(policy_string, origin_a_.Get(), &messages, |
| 61 test_feature_name_map); |
| 56 EXPECT_EQ(0UL, messages.size()); | 62 EXPECT_EQ(0UL, messages.size()); |
| 57 } | 63 } |
| 58 } | 64 } |
| 59 | 65 |
| 60 TEST_F(FeaturePolicyTest, ParseInvalidPolicy) { | 66 TEST_F(FeaturePolicyTest, ParseInvalidPolicy) { |
| 61 Vector<String> messages; | 67 Vector<String> messages; |
| 62 for (const char* policy_string : kInvalidPolicies) { | 68 for (const char* policy_string : kInvalidPolicies) { |
| 63 messages.clear(); | 69 messages.clear(); |
| 64 ParseFeaturePolicy(policy_string, origin_a_.Get(), &messages); | 70 ParseFeaturePolicy(policy_string, origin_a_.Get(), &messages, |
| 71 test_feature_name_map); |
| 65 EXPECT_NE(0UL, messages.size()); | 72 EXPECT_NE(0UL, messages.size()); |
| 66 } | 73 } |
| 67 } | 74 } |
| 68 | 75 |
| 69 TEST_F(FeaturePolicyTest, PolicyParsedCorrectly) { | 76 TEST_F(FeaturePolicyTest, PolicyParsedCorrectly) { |
| 70 Vector<String> messages; | 77 Vector<String> messages; |
| 71 | 78 |
| 72 // Empty policy. | 79 // Empty policy. |
| 73 WebParsedFeaturePolicy parsed_policy = | 80 WebParsedFeaturePolicy parsed_policy = ParseFeaturePolicy( |
| 74 ParseFeaturePolicy("{}", origin_a_.Get(), &messages); | 81 "{}", origin_a_.Get(), &messages, test_feature_name_map); |
| 75 EXPECT_EQ(0UL, parsed_policy.size()); | 82 EXPECT_EQ(0UL, parsed_policy.size()); |
| 76 | 83 |
| 77 // Simple policy with "self". | 84 // Simple policy with "self". |
| 78 parsed_policy = ParseFeaturePolicy("{\"vibrate\": [\"self\"]}", | 85 parsed_policy = |
| 79 origin_a_.Get(), &messages); | 86 ParseFeaturePolicy("{\"vibrate\": [\"self\"]}", origin_a_.Get(), |
| 87 &messages, test_feature_name_map); |
| 80 EXPECT_EQ(1UL, parsed_policy.size()); | 88 EXPECT_EQ(1UL, parsed_policy.size()); |
| 89 |
| 81 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); | 90 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); |
| 82 EXPECT_FALSE(parsed_policy[0].matches_all_origins); | 91 EXPECT_FALSE(parsed_policy[0].matches_all_origins); |
| 83 EXPECT_EQ(1UL, parsed_policy[0].origins.size()); | 92 EXPECT_EQ(1UL, parsed_policy[0].origins.size()); |
| 84 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( | 93 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( |
| 85 parsed_policy[0].origins[0].Get())); | 94 parsed_policy[0].origins[0].Get())); |
| 86 | |
| 87 // Simple policy with *. | 95 // Simple policy with *. |
| 88 parsed_policy = | 96 parsed_policy = ParseFeaturePolicy("{\"vibrate\": [\"*\"]}", origin_a_.Get(), |
| 89 ParseFeaturePolicy("{\"vibrate\": [\"*\"]}", origin_a_.Get(), &messages); | 97 &messages, test_feature_name_map); |
| 90 EXPECT_EQ(1UL, parsed_policy.size()); | 98 EXPECT_EQ(1UL, parsed_policy.size()); |
| 91 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); | 99 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); |
| 92 EXPECT_TRUE(parsed_policy[0].matches_all_origins); | 100 EXPECT_TRUE(parsed_policy[0].matches_all_origins); |
| 93 EXPECT_EQ(0UL, parsed_policy[0].origins.size()); | 101 EXPECT_EQ(0UL, parsed_policy[0].origins.size()); |
| 94 | 102 |
| 95 // Complicated policy. | 103 // Complicated policy. |
| 96 parsed_policy = ParseFeaturePolicy( | 104 parsed_policy = ParseFeaturePolicy( |
| 97 "{\"vibrate\": [\"*\"], " | 105 "{\"vibrate\": [\"*\"], " |
| 98 "\"fullscreen\": [\"https://example.net\", \"https://example.org\"], " | 106 "\"fullscreen\": [\"https://example.net\", \"https://example.org\"], " |
| 99 "\"payment\": [\"self\"]}", | 107 "\"payment\": [\"self\"]}", |
| 100 origin_a_.Get(), &messages); | 108 origin_a_.Get(), &messages, test_feature_name_map); |
| 101 EXPECT_EQ(3UL, parsed_policy.size()); | 109 EXPECT_EQ(3UL, parsed_policy.size()); |
| 102 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); | 110 EXPECT_EQ(WebFeaturePolicyFeature::kVibrate, parsed_policy[0].feature); |
| 103 EXPECT_TRUE(parsed_policy[0].matches_all_origins); | 111 EXPECT_TRUE(parsed_policy[0].matches_all_origins); |
| 104 EXPECT_EQ(0UL, parsed_policy[0].origins.size()); | 112 EXPECT_EQ(0UL, parsed_policy[0].origins.size()); |
| 105 EXPECT_EQ(WebFeaturePolicyFeature::kFullscreen, parsed_policy[1].feature); | 113 EXPECT_EQ(WebFeaturePolicyFeature::kFullscreen, parsed_policy[1].feature); |
| 106 EXPECT_FALSE(parsed_policy[1].matches_all_origins); | 114 EXPECT_FALSE(parsed_policy[1].matches_all_origins); |
| 107 EXPECT_EQ(2UL, parsed_policy[1].origins.size()); | 115 EXPECT_EQ(2UL, parsed_policy[1].origins.size()); |
| 108 EXPECT_TRUE(origin_b_->IsSameSchemeHostPortAndSuborigin( | 116 EXPECT_TRUE(origin_b_->IsSameSchemeHostPortAndSuborigin( |
| 109 parsed_policy[1].origins[0].Get())); | 117 parsed_policy[1].origins[0].Get())); |
| 110 EXPECT_TRUE(origin_c_->IsSameSchemeHostPortAndSuborigin( | 118 EXPECT_TRUE(origin_c_->IsSameSchemeHostPortAndSuborigin( |
| (...skipping 26 matching lines...) Expand all Loading... |
| 137 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( | 145 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( |
| 138 container_policy[0].origins[0].Get())); | 146 container_policy[0].origins[0].Get())); |
| 139 EXPECT_EQ(WebFeaturePolicyFeature::kPayment, container_policy[1].feature); | 147 EXPECT_EQ(WebFeaturePolicyFeature::kPayment, container_policy[1].feature); |
| 140 EXPECT_FALSE(container_policy[1].matches_all_origins); | 148 EXPECT_FALSE(container_policy[1].matches_all_origins); |
| 141 EXPECT_EQ(1UL, container_policy[1].origins.size()); | 149 EXPECT_EQ(1UL, container_policy[1].origins.size()); |
| 142 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( | 150 EXPECT_TRUE(origin_a_->IsSameSchemeHostPortAndSuborigin( |
| 143 container_policy[1].origins[0].Get())); | 151 container_policy[1].origins[0].Get())); |
| 144 } | 152 } |
| 145 | 153 |
| 146 } // namespace blink | 154 } // namespace blink |
| OLD | NEW |