Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Side by Side Diff: content/common/feature_policy/feature_policy_unittest.cc

Issue 2651883008: Make content::FeaturePolicy implement WebFeaturePolicy, and use it in blink code (Closed)
Patch Set: Duplicate FP object rather than modifying in-place Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698