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 "content/common/feature_policy/feature_policy.h" | 5 #include "content/common/feature_policy/feature_policy.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "url/gurl.h" | 8 #include "url/gurl.h" |
9 | 9 |
10 namespace content { | 10 namespace content { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 FeaturePolicyTest() | 47 FeaturePolicyTest() |
48 : feature_list_({{kDefaultOnFeature, &kDefaultOnFeatureDfn}, | 48 : feature_list_({{kDefaultOnFeature, &kDefaultOnFeatureDfn}, |
49 {kDefaultSelfFeature, &kDefaultSelfFeatureDfn}, | 49 {kDefaultSelfFeature, &kDefaultSelfFeatureDfn}, |
50 {kDefaultOffFeature, &kDefaultOffFeatureDfn}}) {} | 50 {kDefaultOffFeature, &kDefaultOffFeatureDfn}}) {} |
51 | 51 |
52 ~FeaturePolicyTest() override {} | 52 ~FeaturePolicyTest() override {} |
53 | 53 |
54 std::unique_ptr<FeaturePolicy> CreateFromParentPolicy( | 54 std::unique_ptr<FeaturePolicy> CreateFromParentPolicy( |
55 const FeaturePolicy* parent, | 55 const FeaturePolicy* parent, |
56 const url::Origin& origin) { | 56 const url::Origin& origin) { |
57 return FeaturePolicy::CreateFromParentPolicy(parent, nullptr, origin, | 57 ParsedFeaturePolicyHeader empty_container_policy; |
58 feature_list_); | 58 return FeaturePolicy::CreateFromParentPolicy(parent, empty_container_policy, |
| 59 origin, feature_list_); |
59 } | 60 } |
60 | 61 |
61 std::unique_ptr<FeaturePolicy> CreateFromParentWithFramePolicy( | 62 std::unique_ptr<FeaturePolicy> CreateFromParentWithFramePolicy( |
62 const FeaturePolicy* parent, | 63 const FeaturePolicy* parent, |
63 const ParsedFeaturePolicyHeader* frame_policy, | 64 const ParsedFeaturePolicyHeader& frame_policy, |
64 const url::Origin& origin) { | 65 const url::Origin& origin) { |
65 return FeaturePolicy::CreateFromParentPolicy(parent, frame_policy, origin, | 66 return FeaturePolicy::CreateFromParentPolicy(parent, frame_policy, origin, |
66 feature_list_); | 67 feature_list_); |
67 } | 68 } |
68 url::Origin origin_a_ = url::Origin(GURL("https://example.com/")); | 69 url::Origin origin_a_ = url::Origin(GURL("https://example.com/")); |
69 url::Origin origin_b_ = url::Origin(GURL("https://example.net/")); | 70 url::Origin origin_b_ = url::Origin(GURL("https://example.net/")); |
70 url::Origin origin_c_ = url::Origin(GURL("https://example.org/")); | 71 url::Origin origin_c_ = url::Origin(GURL("https://example.org/")); |
71 | 72 |
72 private: | 73 private: |
73 // Contains the list of controlled features, so that we are guaranteed to | 74 // Contains the list of controlled features, so that we are guaranteed to |
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 // +-------------------------------------------------+ | 665 // +-------------------------------------------------+ |
665 // Default-self feature should be enabled in cross-origin child frame because | 666 // Default-self feature should be enabled in cross-origin child frame because |
666 // permission was delegated through frame policy. | 667 // permission was delegated through frame policy. |
667 // This is the same scenario as when the iframe is declared as | 668 // This is the same scenario as when the iframe is declared as |
668 // <iframe allow="default-self"> | 669 // <iframe allow="default-self"> |
669 std::unique_ptr<FeaturePolicy> policy1 = | 670 std::unique_ptr<FeaturePolicy> policy1 = |
670 CreateFromParentPolicy(nullptr, origin_a_); | 671 CreateFromParentPolicy(nullptr, origin_a_); |
671 ParsedFeaturePolicyHeader frame_policy = { | 672 ParsedFeaturePolicyHeader frame_policy = { |
672 {{"default-self", false, {origin_b_}}}}; | 673 {{"default-self", false, {origin_b_}}}}; |
673 std::unique_ptr<FeaturePolicy> policy2 = | 674 std::unique_ptr<FeaturePolicy> policy2 = |
674 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy, origin_b_); | 675 CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); |
675 EXPECT_TRUE( | 676 EXPECT_TRUE( |
676 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 677 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
677 EXPECT_FALSE( | 678 EXPECT_FALSE( |
678 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 679 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
679 EXPECT_FALSE( | 680 EXPECT_FALSE( |
680 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 681 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
681 EXPECT_FALSE( | 682 EXPECT_FALSE( |
682 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 683 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
683 EXPECT_TRUE( | 684 EXPECT_TRUE( |
684 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 685 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
(...skipping 14 matching lines...) Expand all Loading... |
699 // +------------------------------------------+ | 700 // +------------------------------------------+ |
700 // Default-self feature should be enabled in cross-origin child frame because | 701 // Default-self feature should be enabled in cross-origin child frame because |
701 // permission was delegated through frame policy. | 702 // permission was delegated through frame policy. |
702 // This is the same scenario that arises when the iframe is declared as | 703 // This is the same scenario that arises when the iframe is declared as |
703 // <iframe allowfullscreen> | 704 // <iframe allowfullscreen> |
704 std::unique_ptr<FeaturePolicy> policy1 = | 705 std::unique_ptr<FeaturePolicy> policy1 = |
705 CreateFromParentPolicy(nullptr, origin_a_); | 706 CreateFromParentPolicy(nullptr, origin_a_); |
706 ParsedFeaturePolicyHeader frame_policy = { | 707 ParsedFeaturePolicyHeader frame_policy = { |
707 {{"default-self", true, std::vector<url::Origin>()}}}; | 708 {{"default-self", true, std::vector<url::Origin>()}}}; |
708 std::unique_ptr<FeaturePolicy> policy2 = | 709 std::unique_ptr<FeaturePolicy> policy2 = |
709 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy, origin_b_); | 710 CreateFromParentWithFramePolicy(policy1.get(), frame_policy, origin_b_); |
710 EXPECT_TRUE( | 711 EXPECT_TRUE( |
711 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 712 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
712 EXPECT_FALSE( | 713 EXPECT_FALSE( |
713 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 714 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
714 EXPECT_FALSE( | 715 EXPECT_FALSE( |
715 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 716 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
716 EXPECT_FALSE( | 717 EXPECT_FALSE( |
717 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 718 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
718 EXPECT_TRUE( | 719 EXPECT_TRUE( |
719 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 720 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
(...skipping 25 matching lines...) Expand all Loading... |
745 // | +-------------------------------------------------+ | | 746 // | +-------------------------------------------------+ | |
746 // +-----------------------------------------------------+ | 747 // +-----------------------------------------------------+ |
747 // Default-self feature should be enabled in cross-origin child frames 2 and | 748 // Default-self feature should be enabled in cross-origin child frames 2 and |
748 // 3. Feature should be disabled in frame 4 because it was not further | 749 // 3. Feature should be disabled in frame 4 because it was not further |
749 // delegated through frame policy. | 750 // delegated through frame policy. |
750 std::unique_ptr<FeaturePolicy> policy1 = | 751 std::unique_ptr<FeaturePolicy> policy1 = |
751 CreateFromParentPolicy(nullptr, origin_a_); | 752 CreateFromParentPolicy(nullptr, origin_a_); |
752 ParsedFeaturePolicyHeader frame_policy1 = { | 753 ParsedFeaturePolicyHeader frame_policy1 = { |
753 {{"default-self", false, {origin_b_}}}}; | 754 {{"default-self", false, {origin_b_}}}}; |
754 std::unique_ptr<FeaturePolicy> policy2 = | 755 std::unique_ptr<FeaturePolicy> policy2 = |
755 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_b_); | 756 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); |
756 ParsedFeaturePolicyHeader frame_policy2 = { | 757 ParsedFeaturePolicyHeader frame_policy2 = { |
757 {{"default-self", false, {origin_c_}}}}; | 758 {{"default-self", false, {origin_c_}}}}; |
758 std::unique_ptr<FeaturePolicy> policy3 = | 759 std::unique_ptr<FeaturePolicy> policy3 = |
759 CreateFromParentWithFramePolicy(policy2.get(), &frame_policy2, origin_c_); | 760 CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); |
760 std::unique_ptr<FeaturePolicy> policy4 = | 761 std::unique_ptr<FeaturePolicy> policy4 = |
761 CreateFromParentWithFramePolicy(policy2.get(), nullptr, origin_c_); | 762 CreateFromParentPolicy(policy2.get(), origin_c_); |
762 EXPECT_FALSE( | 763 EXPECT_FALSE( |
763 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 764 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
764 EXPECT_FALSE( | 765 EXPECT_FALSE( |
765 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 766 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
766 EXPECT_TRUE( | 767 EXPECT_TRUE( |
767 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 768 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
768 EXPECT_FALSE( | 769 EXPECT_FALSE( |
769 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 770 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
770 EXPECT_FALSE( | 771 EXPECT_FALSE( |
771 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 772 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
(...skipping 18 matching lines...) Expand all Loading... |
790 // | |No Policy | | | 791 // | |No Policy | | |
791 // | +-------------+ | | 792 // | +-------------+ | |
792 // +-------------------------------------+ | 793 // +-------------------------------------+ |
793 // Default-on feature should be disabled in both same-origin and cross-origin | 794 // Default-on feature should be disabled in both same-origin and cross-origin |
794 // child frames because permission was removed through frame policy. | 795 // child frames because permission was removed through frame policy. |
795 std::unique_ptr<FeaturePolicy> policy1 = | 796 std::unique_ptr<FeaturePolicy> policy1 = |
796 CreateFromParentPolicy(nullptr, origin_a_); | 797 CreateFromParentPolicy(nullptr, origin_a_); |
797 ParsedFeaturePolicyHeader frame_policy1 = { | 798 ParsedFeaturePolicyHeader frame_policy1 = { |
798 {{"default-on", false, std::vector<url::Origin>()}}}; | 799 {{"default-on", false, std::vector<url::Origin>()}}}; |
799 std::unique_ptr<FeaturePolicy> policy2 = | 800 std::unique_ptr<FeaturePolicy> policy2 = |
800 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_a_); | 801 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_); |
801 ParsedFeaturePolicyHeader frame_policy2 = { | 802 ParsedFeaturePolicyHeader frame_policy2 = { |
802 {{"default-on", false, std::vector<url::Origin>()}}}; | 803 {{"default-on", false, std::vector<url::Origin>()}}}; |
803 std::unique_ptr<FeaturePolicy> policy3 = | 804 std::unique_ptr<FeaturePolicy> policy3 = |
804 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy2, origin_b_); | 805 CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); |
805 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); | 806 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); |
806 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); | 807 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); |
807 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); | 808 EXPECT_TRUE(policy1->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); |
808 EXPECT_FALSE( | 809 EXPECT_FALSE( |
809 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); | 810 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_a_)); |
810 EXPECT_FALSE( | 811 EXPECT_FALSE( |
811 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); | 812 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_b_)); |
812 EXPECT_FALSE( | 813 EXPECT_FALSE( |
813 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); | 814 policy2->IsFeatureEnabledForOrigin(kDefaultOnFeature, origin_c_)); |
814 EXPECT_FALSE( | 815 EXPECT_FALSE( |
(...skipping 22 matching lines...) Expand all Loading... |
837 // | +-------------+ | | 838 // | +-------------+ | |
838 // +------------------------------------------------+ | 839 // +------------------------------------------------+ |
839 // Default-off feature should be disabled in both same-origin and cross-origin | 840 // Default-off feature should be disabled in both same-origin and cross-origin |
840 // child frames because they did not declare their own policy to enable it. | 841 // child frames because they did not declare their own policy to enable it. |
841 std::unique_ptr<FeaturePolicy> policy1 = | 842 std::unique_ptr<FeaturePolicy> policy1 = |
842 CreateFromParentPolicy(nullptr, origin_a_); | 843 CreateFromParentPolicy(nullptr, origin_a_); |
843 policy1->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); | 844 policy1->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); |
844 ParsedFeaturePolicyHeader frame_policy1 = { | 845 ParsedFeaturePolicyHeader frame_policy1 = { |
845 {{"default-off", false, {origin_a_}}}}; | 846 {{"default-off", false, {origin_a_}}}}; |
846 std::unique_ptr<FeaturePolicy> policy2 = | 847 std::unique_ptr<FeaturePolicy> policy2 = |
847 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_a_); | 848 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_); |
848 ParsedFeaturePolicyHeader frame_policy2 = { | 849 ParsedFeaturePolicyHeader frame_policy2 = { |
849 {{"default-off", false, {origin_b_}}}}; | 850 {{"default-off", false, {origin_b_}}}}; |
850 std::unique_ptr<FeaturePolicy> policy3 = | 851 std::unique_ptr<FeaturePolicy> policy3 = |
851 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy2, origin_b_); | 852 CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); |
852 EXPECT_TRUE( | 853 EXPECT_TRUE( |
853 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); | 854 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); |
854 EXPECT_FALSE( | 855 EXPECT_FALSE( |
855 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); | 856 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); |
856 EXPECT_FALSE( | 857 EXPECT_FALSE( |
857 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_c_)); | 858 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_c_)); |
858 EXPECT_FALSE( | 859 EXPECT_FALSE( |
859 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); | 860 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); |
860 EXPECT_FALSE( | 861 EXPECT_FALSE( |
861 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); | 862 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); |
(...skipping 26 matching lines...) Expand all Loading... |
888 // +------------------------------------------------+ | 889 // +------------------------------------------------+ |
889 // Default-off feature should be enabled in both same-origin and cross-origin | 890 // Default-off feature should be enabled in both same-origin and cross-origin |
890 // child frames because it is delegated through the parent's frame policy, and | 891 // child frames because it is delegated through the parent's frame policy, and |
891 // they declare their own policy to enable it. | 892 // they declare their own policy to enable it. |
892 std::unique_ptr<FeaturePolicy> policy1 = | 893 std::unique_ptr<FeaturePolicy> policy1 = |
893 CreateFromParentPolicy(nullptr, origin_a_); | 894 CreateFromParentPolicy(nullptr, origin_a_); |
894 policy1->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); | 895 policy1->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); |
895 ParsedFeaturePolicyHeader frame_policy1 = { | 896 ParsedFeaturePolicyHeader frame_policy1 = { |
896 {{"default-off", false, {origin_a_}}}}; | 897 {{"default-off", false, {origin_a_}}}}; |
897 std::unique_ptr<FeaturePolicy> policy2 = | 898 std::unique_ptr<FeaturePolicy> policy2 = |
898 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_a_); | 899 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_a_); |
899 policy2->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); | 900 policy2->SetHeaderPolicy({{{"default-off", false, {origin_a_}}}}); |
900 ParsedFeaturePolicyHeader frame_policy2 = { | 901 ParsedFeaturePolicyHeader frame_policy2 = { |
901 {{"default-off", false, {origin_b_}}}}; | 902 {{"default-off", false, {origin_b_}}}}; |
902 std::unique_ptr<FeaturePolicy> policy3 = | 903 std::unique_ptr<FeaturePolicy> policy3 = |
903 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy2, origin_b_); | 904 CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); |
904 policy3->SetHeaderPolicy({{{"default-off", false, {origin_b_}}}}); | 905 policy3->SetHeaderPolicy({{{"default-off", false, {origin_b_}}}}); |
905 EXPECT_TRUE( | 906 EXPECT_TRUE( |
906 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); | 907 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); |
907 EXPECT_FALSE( | 908 EXPECT_FALSE( |
908 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); | 909 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_b_)); |
909 EXPECT_FALSE( | 910 EXPECT_FALSE( |
910 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_c_)); | 911 policy1->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_c_)); |
911 EXPECT_TRUE( | 912 EXPECT_TRUE( |
912 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); | 913 policy2->IsFeatureEnabledForOrigin(kDefaultOffFeature, origin_a_)); |
913 EXPECT_FALSE( | 914 EXPECT_FALSE( |
(...skipping 28 matching lines...) Expand all Loading... |
942 // Default-self feature should be disabled in both cross-origin child frames | 943 // Default-self feature should be disabled in both cross-origin child frames |
943 // by frame policy, even though the parent frame's header policy would | 944 // by frame policy, even though the parent frame's header policy would |
944 // otherwise enable it. This is true regardless of the child frame's header | 945 // otherwise enable it. This is true regardless of the child frame's header |
945 // policy. | 946 // policy. |
946 std::unique_ptr<FeaturePolicy> policy1 = | 947 std::unique_ptr<FeaturePolicy> policy1 = |
947 CreateFromParentPolicy(nullptr, origin_a_); | 948 CreateFromParentPolicy(nullptr, origin_a_); |
948 policy1->SetHeaderPolicy({{{"default-self", false, {origin_a_, origin_b_}}}}); | 949 policy1->SetHeaderPolicy({{{"default-self", false, {origin_a_, origin_b_}}}}); |
949 ParsedFeaturePolicyHeader frame_policy1 = { | 950 ParsedFeaturePolicyHeader frame_policy1 = { |
950 {{"default-self", false, std::vector<url::Origin>()}}}; | 951 {{"default-self", false, std::vector<url::Origin>()}}}; |
951 std::unique_ptr<FeaturePolicy> policy2 = | 952 std::unique_ptr<FeaturePolicy> policy2 = |
952 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_b_); | 953 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); |
953 ParsedFeaturePolicyHeader frame_policy2 = { | 954 ParsedFeaturePolicyHeader frame_policy2 = { |
954 {{"default-self", false, std::vector<url::Origin>()}}}; | 955 {{"default-self", false, std::vector<url::Origin>()}}}; |
955 std::unique_ptr<FeaturePolicy> policy3 = | 956 std::unique_ptr<FeaturePolicy> policy3 = |
956 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy2, origin_b_); | 957 CreateFromParentWithFramePolicy(policy1.get(), frame_policy2, origin_b_); |
957 policy3->SetHeaderPolicy({{{"default-self", false, {origin_b_}}}}); | 958 policy3->SetHeaderPolicy({{{"default-self", false, {origin_b_}}}}); |
958 EXPECT_FALSE( | 959 EXPECT_FALSE( |
959 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 960 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
960 EXPECT_FALSE( | 961 EXPECT_FALSE( |
961 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 962 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
962 } | 963 } |
963 | 964 |
964 TEST_F(FeaturePolicyTest, TestCombineFrameAndHeaderPolicies) { | 965 TEST_F(FeaturePolicyTest, TestCombineFrameAndHeaderPolicies) { |
965 // +-------------------------------------------------+ | 966 // +-------------------------------------------------+ |
966 // |(1)Origin A | | 967 // |(1)Origin A | |
(...skipping 17 matching lines...) Expand all Loading... |
984 // | | +-------------+ | | | 985 // | | +-------------+ | | |
985 // | +---------------------------------------------+ | | 986 // | +---------------------------------------------+ | |
986 // +-------------------------------------------------+ | 987 // +-------------------------------------------------+ |
987 // Default-self feature should be enabled in cross-origin child frames 2 and | 988 // Default-self feature should be enabled in cross-origin child frames 2 and |
988 // 4. Feature should be disabled in frame 3 by frame policy. | 989 // 4. Feature should be disabled in frame 3 by frame policy. |
989 std::unique_ptr<FeaturePolicy> policy1 = | 990 std::unique_ptr<FeaturePolicy> policy1 = |
990 CreateFromParentPolicy(nullptr, origin_a_); | 991 CreateFromParentPolicy(nullptr, origin_a_); |
991 ParsedFeaturePolicyHeader frame_policy1 = { | 992 ParsedFeaturePolicyHeader frame_policy1 = { |
992 {{"default-self", false, {origin_b_}}}}; | 993 {{"default-self", false, {origin_b_}}}}; |
993 std::unique_ptr<FeaturePolicy> policy2 = | 994 std::unique_ptr<FeaturePolicy> policy2 = |
994 CreateFromParentWithFramePolicy(policy1.get(), &frame_policy1, origin_b_); | 995 CreateFromParentWithFramePolicy(policy1.get(), frame_policy1, origin_b_); |
995 policy2->SetHeaderPolicy( | 996 policy2->SetHeaderPolicy( |
996 {{{"default-self", true, std::vector<url::Origin>()}}}); | 997 {{{"default-self", true, std::vector<url::Origin>()}}}); |
997 ParsedFeaturePolicyHeader frame_policy2 = { | 998 ParsedFeaturePolicyHeader frame_policy2 = { |
998 {{"default-self", false, std::vector<url::Origin>()}}}; | 999 {{"default-self", false, std::vector<url::Origin>()}}}; |
999 std::unique_ptr<FeaturePolicy> policy3 = | 1000 std::unique_ptr<FeaturePolicy> policy3 = |
1000 CreateFromParentWithFramePolicy(policy2.get(), &frame_policy2, origin_c_); | 1001 CreateFromParentWithFramePolicy(policy2.get(), frame_policy2, origin_c_); |
1001 std::unique_ptr<FeaturePolicy> policy4 = | 1002 std::unique_ptr<FeaturePolicy> policy4 = |
1002 CreateFromParentWithFramePolicy(policy2.get(), nullptr, origin_c_); | 1003 CreateFromParentPolicy(policy2.get(), origin_c_); |
1003 EXPECT_TRUE( | 1004 EXPECT_TRUE( |
1004 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); | 1005 policy1->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_a_)); |
1005 EXPECT_TRUE( | 1006 EXPECT_TRUE( |
1006 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); | 1007 policy2->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_b_)); |
1007 EXPECT_FALSE( | 1008 EXPECT_FALSE( |
1008 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 1009 policy3->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
1009 EXPECT_TRUE( | 1010 EXPECT_TRUE( |
1010 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); | 1011 policy4->IsFeatureEnabledForOrigin(kDefaultSelfFeature, origin_c_)); |
1011 } | 1012 } |
1012 } // namespace content | 1013 } // namespace content |
OLD | NEW |