[3PCD] Fix ThirdPartyMetricsObserverBrowserTest in 3PCD

We need to add exceptions for specific sites since 3PC will be blocked
by default

Bug: b:306414714
Change-Id: I481b57367b5396727fe00995f706e324ba3bc3ec
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5017099
Auto-Submit: Fiona Macintosh <fmacintosh@google.com>
Reviewed-by: Josh Karlin <jkarlin@chromium.org>
Commit-Queue: Josh Karlin <jkarlin@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1224436}
diff --git a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
index c0f208c..bb87d4d 100644
--- a/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
+++ b/chrome/browser/page_load_metrics/observers/third_party_metrics_observer_browsertest.cc
@@ -3,9 +3,11 @@
 // found in the LICENSE file.
 
 #include "base/test/metrics/histogram_tester.h"
+#include "chrome/browser/content_settings/cookie_settings_factory.h"
 #include "chrome/browser/ui/browser.h"
 #include "chrome/test/base/in_process_browser_test.h"
 #include "chrome/test/base/ui_test_utils.h"
+#include "components/content_settings/core/browser/cookie_settings.h"
 #include "components/network_session_configurator/common/network_switches.h"
 #include "components/page_load_metrics/browser/observers/third_party_metrics_observer.h"
 #include "components/page_load_metrics/browser/page_load_metrics_test_waiter.h"
@@ -174,6 +176,11 @@
     EXPECT_TRUE(ExecJs(ad_frame, no_op_script));
   }
 
+  void Enable3pcForUrl(GURL url) {
+    CookieSettingsFactory::GetForProfile(browser()->profile())
+        ->SetCookieSetting(url, CONTENT_SETTING_ALLOW);
+  }
+
   content::WebContents* web_contents() {
     return browser()->tab_strip_model()->GetActiveWebContents();
   }
@@ -308,6 +315,7 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        ThirdPartyCookiesReadAndWrite) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
   content::CookieChangeObserver observer(web_contents(), 2);
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
@@ -332,11 +340,12 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        ThirdPartyCookiesIPAddress) {
+  GURL url =
+      https_server()->GetURL("/set-cookie?thirdparty=1;SameSite=None;Secure");
+  Enable3pcForUrl(url);
   content::CookieChangeObserver observer(web_contents(), 2);
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
-  GURL url =
-      https_server()->GetURL("/set-cookie?thirdparty=1;SameSite=None;Secure");
   // Hostname is an IP address.
   ASSERT_EQ(
       "",
@@ -361,6 +370,8 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        MultipleThirdPartyCookiesReadAndWrite) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
+  Enable3pcForUrl(https_server()->GetURL("c.com", "/"));
   content::CookieChangeObserver observer(web_contents(), 4);
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
@@ -416,6 +427,7 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        ThirdPartyDocCookieReadAndWrite) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
   content::CookieChangeObserver observer(web_contents(), 2);
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
@@ -446,6 +458,7 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        ThirdPartyDocCookieReadNoWrite) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
   NavigateFrameTo("b.com", "/empty.html");
@@ -471,6 +484,7 @@
 
 IN_PROC_BROWSER_TEST_F(ThirdPartyMetricsObserverBrowserTest,
                        ThirdPartyDocCookieWriteNoRead) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
   content::CookieChangeObserver observer(web_contents());
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");  // Same origin cookie read.
@@ -587,6 +601,8 @@
 IN_PROC_BROWSER_TEST_F(
     ThirdPartyMetricsObserverBrowserTest,
     ThirdPartyFrameWithAccessAndActivationOnDifferentThirdParties) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
+  Enable3pcForUrl(https_server()->GetURL("c.com", "/"));
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");
   NavigateFrameTo("b.com", "/");
@@ -607,6 +623,7 @@
 IN_PROC_BROWSER_TEST_F(
     ThirdPartyMetricsObserverBrowserTest,
     ThirdPartyFrameWithAccessAndActivationOnSameThirdParties) {
+  Enable3pcForUrl(https_server()->GetURL("b.com", "/"));
   base::HistogramTester histogram_tester;
   NavigateToPageWithFrame("a.com");
   NavigateFrameTo("b.com", "/set-cookie?thirdparty=1;SameSite=None;Secure");