38
38
#include " components/policy/policy_constants.h"
39
39
#include " components/prefs/pref_service.h"
40
40
#include " content/public/browser/browser_context.h"
41
+ #include " content/public/browser/navigation_handle.h"
41
42
#include " content/public/browser/storage_partition.h"
42
43
#include " content/public/common/content_paths.h"
43
44
#include " content/public/test/browser_task_environment.h"
@@ -622,13 +623,12 @@ IN_PROC_BROWSER_TEST_F(
622
623
EXPECT_EQ (ReadCookiesAndContent (GetFrame (), kHostB ),
623
624
CookieBundleWithContent (" cross-site=b.test" ));
624
625
625
- // TODO(https://crbug.com/1441133): We should either make sure there is way to
626
- // let developer check whether they need to call rSA(), or no prompt is shown
627
- // when 3p cookie is allowed.
628
- EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
626
+ EXPECT_TRUE (storage::test::HasStorageAccessForFrame (GetFrame ()));
629
627
prompt_factory ()->set_response_type (
630
628
permissions::PermissionRequestManager::ACCEPT_ALL);
631
629
EXPECT_TRUE (storage::test::RequestAndCheckStorageAccessForFrame (GetFrame ()));
630
+ // TODO(https://crbug.com/1441133): No prompt should be shown when 3p cookie
631
+ // is allowed.
632
632
EXPECT_EQ (1 , prompt_factory ()->TotalRequestCount ());
633
633
}
634
634
@@ -835,7 +835,10 @@ IN_PROC_BROWSER_TEST_F(StorageAccessAPIBrowserTest,
835
835
EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
836
836
prompt_factory ()->set_response_type (
837
837
permissions::PermissionRequestManager::ACCEPT_ALL);
838
- EXPECT_TRUE (storage::test::RequestAndCheckStorageAccessForFrame (GetFrame ()));
838
+ // TODO(https://crbug.com/1441133): requestStorageAccess() should be rejected
839
+ // when 3p cookie is blocked by user explicitly.
840
+ EXPECT_TRUE (content::ExecJs (GetFrame (), " document.requestStorageAccess()" ));
841
+ EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
839
842
840
843
EXPECT_EQ (ReadCookies (GetFrame (), kHostB ), NoCookies ());
841
844
}
@@ -857,9 +860,11 @@ IN_PROC_BROWSER_TEST_F(
857
860
858
861
prompt_factory ()->set_response_type (
859
862
permissions::PermissionRequestManager::ACCEPT_ALL);
860
-
863
+ // TODO(https://crbug.com/1441133): requestStorageAccess() should be rejected
864
+ // when 3p cookie is blocked by user explicitly.
861
865
EXPECT_TRUE (
862
- storage::test::RequestAndCheckStorageAccessForFrame (GetNestedFrame ()));
866
+ content::ExecJs (GetNestedFrame (), " document.requestStorageAccess()" ));
867
+ EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetNestedFrame ()));
863
868
864
869
EXPECT_EQ (ReadCookies (GetNestedFrame (), kHostB ), NoCookies ());
865
870
}
@@ -883,9 +888,11 @@ IN_PROC_BROWSER_TEST_F(
883
888
884
889
prompt_factory ()->set_response_type (
885
890
permissions::PermissionRequestManager::ACCEPT_ALL);
886
-
891
+ // TODO(https://crbug.com/1441133): requestStorageAccess() should be rejected
892
+ // when 3p cookie is blocked by user explicitly.
887
893
EXPECT_TRUE (
888
- storage::test::RequestAndCheckStorageAccessForFrame (GetNestedFrame ()));
894
+ content::ExecJs (GetNestedFrame (), " document.requestStorageAccess()" ));
895
+ EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetNestedFrame ()));
889
896
890
897
EXPECT_EQ (ReadCookies (GetNestedFrame (), kHostC ), NoCookies ());
891
898
}
@@ -1533,7 +1540,7 @@ IN_PROC_BROWSER_TEST_P(StorageAccessAPIStorageBrowserTest, MultiTabTest) {
1533
1540
storage::test::ExpectCrossTabInfoForFrame (GetFrame (), false );
1534
1541
storage::test::SetCrossTabInfoForFrame (GetFrame ());
1535
1542
storage::test::ExpectCrossTabInfoForFrame (GetFrame (), true );
1536
- EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
1543
+ EXPECT_TRUE (storage::test::HasStorageAccessForFrame (GetFrame ()));
1537
1544
1538
1545
// Create a second tab to test communication between tabs.
1539
1546
NavigateToNewTabWithFrame (kHostA );
@@ -1545,7 +1552,7 @@ IN_PROC_BROWSER_TEST_P(StorageAccessAPIStorageBrowserTest, MultiTabTest) {
1545
1552
permissions::PermissionRequestManager::ACCEPT_ALL);
1546
1553
1547
1554
storage::test::ExpectCrossTabInfoForFrame (GetFrame (), true );
1548
- EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
1555
+ EXPECT_TRUE (storage::test::HasStorageAccessForFrame (GetFrame ()));
1549
1556
1550
1557
SetBlockThirdPartyCookies (true );
1551
1558
@@ -1879,6 +1886,7 @@ IN_PROC_BROWSER_TEST_P(StorageAccessAPIEnterprisePolicyBrowserTest,
1879
1886
1880
1887
IN_PROC_BROWSER_TEST_F (StorageAccessAPIBrowserTest,
1881
1888
EnsureOnePromptDenialSuffices) {
1889
+ SetBlockThirdPartyCookies (true );
1882
1890
NavigateToPageWithFrame (kHostA );
1883
1891
NavigateFrameTo (EchoCookiesURL (kHostB ));
1884
1892
@@ -1912,6 +1920,7 @@ IN_PROC_BROWSER_TEST_F(StorageAccessAPIBrowserTest,
1912
1920
1913
1921
IN_PROC_BROWSER_TEST_F (StorageAccessAPIBrowserTest,
1914
1922
DismissalAllowsFuturePrompts) {
1923
+ SetBlockThirdPartyCookies (true );
1915
1924
NavigateToPageWithFrame (kHostA );
1916
1925
NavigateFrameTo (EchoCookiesURL (kHostB ));
1917
1926
@@ -2096,4 +2105,50 @@ IN_PROC_BROWSER_TEST_F(
2096
2105
EXPECT_EQ (ReadCookies (GetFrame (), kHostA ), CookieBundle (" cross-site=a.test" ));
2097
2106
}
2098
2107
2108
+ // Tests to verify that whether 3p cookie is already accessible is checked in
2109
+ // hasStorageAccess.
2110
+ class StorageAccessAPIWith3PCEnabledBrowserTest
2111
+ : public StorageAccessAPIBaseBrowserTest {
2112
+ public:
2113
+ StorageAccessAPIWith3PCEnabledBrowserTest ()
2114
+ : StorageAccessAPIBaseBrowserTest(/* is_storage_partitioned=*/ false ) {}
2115
+ };
2116
+
2117
+ IN_PROC_BROWSER_TEST_F (StorageAccessAPIWith3PCEnabledBrowserTest,
2118
+ AllowedWhenUnblocked) {
2119
+ SetBlockThirdPartyCookies (false );
2120
+
2121
+ NavigateToPageWithFrame (kHostA );
2122
+ NavigateFrameTo (EchoCookiesURL (kHostB ));
2123
+
2124
+ EXPECT_TRUE (storage::test::HasStorageAccessForFrame (GetFrame ()));
2125
+
2126
+ EXPECT_EQ (ReadCookiesAndContent (GetFrame (), kHostB ),
2127
+ CookieBundleWithContent (" cross-site=b.test" ));
2128
+ }
2129
+
2130
+ IN_PROC_BROWSER_TEST_F (StorageAccessAPIWith3PCEnabledBrowserTest,
2131
+ AllowedByUserBypass) {
2132
+ SetBlockThirdPartyCookies (true );
2133
+
2134
+ NavigateToPageWithFrame (kHostA );
2135
+ NavigateFrameTo (EchoCookiesURL (kHostB ));
2136
+ EXPECT_EQ (ReadCookiesAndContent (GetFrame (), kHostB ), NoCookiesWithContent ());
2137
+
2138
+ EXPECT_FALSE (storage::test::HasStorageAccessForFrame (GetFrame ()));
2139
+
2140
+ // Enable UserBypass on hostA as top-level.
2141
+ CookieSettingsFactory::GetForProfile (browser ()->profile ())
2142
+ ->SetCookieSettingForUserBypass (GetURL (kHostA ));
2143
+
2144
+ EXPECT_TRUE (storage::test::HasStorageAccessForFrame (GetFrame ()));
2145
+
2146
+ NavigateToPageWithFrame (kHostA );
2147
+ NavigateFrameTo (EchoCookiesURL (kHostB ));
2148
+ EXPECT_EQ (ReadCookiesAndContent (GetFrame (), kHostB ),
2149
+ CookieBundleWithContent (" cross-site=b.test" ));
2150
+ }
2151
+
2152
+ // TODO(crbug.com/1448957): Add test cases of 3PC enabled by other mechanisms.
2153
+
2099
2154
} // namespace
0 commit comments