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 657 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
668 // | +-------------------------------------------+ | | 668 // | +-------------------------------------------+ | |
669 // | |(2) Origin B | | | 669 // | |(2) Origin B | | |
670 // | |Policy: {"default-self": ["*"], | | | 670 // | |Policy: {"default-self": ["*"], | | |
671 // | | "default-on": ["*"]} | | | 671 // | | "default-on": ["*"]} | | |
672 // | | +-------------+ | | | 672 // | | +-------------+ | | |
673 // | | |(3)Origin C | | | | 673 // | | |(3)Origin C | | | |
674 // | | |No Policy | | | | 674 // | | |No Policy | | | |
675 // | | +-------------+ | | | 675 // | | +-------------+ | | |
676 // | +-------------------------------------------+ | | 676 // | +-------------------------------------------+ | |
677 // +-----------------------------------------------+ | 677 // +-----------------------------------------------+ |
678 // Vibrate feature should be enabled in all frames; Docwrite feature | 678 // Default-self feature should be enabled in all frames; Default-on feature |
679 // should be enabled in frame 1, and disabled in frames 2 and 3. | 679 // should be enabled in frame 1, and disabled in frames 2 and 3. |
680 Vector<String> messages; | 680 Vector<String> messages; |
681 std::unique_ptr<FeaturePolicy> policy1 = | 681 std::unique_ptr<FeaturePolicy> policy1 = |
682 createFromParentPolicy(nullptr, m_originA); | 682 createFromParentPolicy(nullptr, m_originA); |
683 policy1->setHeaderPolicy("{\"default-self\": [\"self\", \"" ORIGIN_B | 683 policy1->setHeaderPolicy("{\"default-self\": [\"self\", \"" ORIGIN_B |
684 "\"], \"default-on\": [\"self\"]}", | 684 "\"], \"default-on\": [\"self\"]}", |
685 messages); | 685 messages); |
686 EXPECT_EQ(0UL, messages.size()); | 686 EXPECT_EQ(0UL, messages.size()); |
687 std::unique_ptr<FeaturePolicy> policy2 = | 687 std::unique_ptr<FeaturePolicy> policy2 = |
688 createFromParentPolicy(policy1.get(), m_originB); | 688 createFromParentPolicy(policy1.get(), m_originB); |
689 policy2->setHeaderPolicy( | 689 policy2->setHeaderPolicy( |
690 "{\"default-self\": [\"*\"], \"default-on\": [\"*\"]}", messages); | 690 "{\"default-self\": [\"*\"], \"default-on\": [\"*\"]}", messages); |
691 EXPECT_EQ(0UL, messages.size()); | 691 EXPECT_EQ(0UL, messages.size()); |
692 std::unique_ptr<FeaturePolicy> policy3 = | 692 std::unique_ptr<FeaturePolicy> policy3 = |
693 createFromParentPolicy(policy2.get(), m_originC); | 693 createFromParentPolicy(policy2.get(), m_originC); |
694 EXPECT_TRUE(policy1->isFeatureEnabled(kDefaultSelfFeature)); | 694 EXPECT_TRUE(policy1->isFeatureEnabled(kDefaultSelfFeature)); |
695 EXPECT_TRUE(policy1->isFeatureEnabled(kDefaultOnFeature)); | 695 EXPECT_TRUE(policy1->isFeatureEnabled(kDefaultOnFeature)); |
696 EXPECT_TRUE(policy2->isFeatureEnabled(kDefaultSelfFeature)); | 696 EXPECT_TRUE(policy2->isFeatureEnabled(kDefaultSelfFeature)); |
697 EXPECT_FALSE(policy2->isFeatureEnabled(kDefaultOnFeature)); | 697 EXPECT_FALSE(policy2->isFeatureEnabled(kDefaultOnFeature)); |
698 EXPECT_TRUE(policy3->isFeatureEnabled(kDefaultSelfFeature)); | 698 EXPECT_TRUE(policy3->isFeatureEnabled(kDefaultSelfFeature)); |
699 EXPECT_FALSE(policy3->isFeatureEnabled(kDefaultOnFeature)); | 699 EXPECT_FALSE(policy3->isFeatureEnabled(kDefaultOnFeature)); |
700 } | 700 } |
701 | 701 |
| 702 TEST_F(FeaturePolicyTest, TestFeatureEnabledForOrigin) { |
| 703 // +-----------------------------------------------+ |
| 704 // |(1) Origin A | |
| 705 // |Policy: {"default-off": ["self", "Origin B"]} | |
| 706 // +-----------------------------------------------+ |
| 707 // Features should be enabled by the policy in frame 1 for origins A and B, |
| 708 // and disabled for origin C. |
| 709 Vector<String> messages; |
| 710 std::unique_ptr<FeaturePolicy> policy1 = |
| 711 createFromParentPolicy(nullptr, m_originA); |
| 712 policy1->setHeaderPolicy("{\"default-off\": [\"self\", \"" ORIGIN_B "\"]}", |
| 713 messages); |
| 714 EXPECT_EQ(0UL, messages.size()); |
| 715 EXPECT_TRUE( |
| 716 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originA)); |
| 717 EXPECT_TRUE( |
| 718 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originB)); |
| 719 EXPECT_FALSE( |
| 720 policy1->isFeatureEnabledForOrigin(kDefaultOffFeature, *m_originC)); |
| 721 } |
| 722 |
702 } // namespace blink | 723 } // namespace blink |
OLD | NEW |