[M120][Tizen][Onscreen] Fix build errors for TV profile
[platform/framework/web/chromium-efl.git] / chrome / browser / chrome_do_not_track_browsertest.cc
1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/strings/utf_string_conversions.h"
6 #include "build/build_config.h"
7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model.h"
10 #include "chrome/common/pref_names.h"
11 #include "chrome/test/base/in_process_browser_test.h"
12 #include "chrome/test/base/ui_test_utils.h"
13 #include "components/prefs/pref_service.h"
14 #include "components/privacy_sandbox/tracking_protection_prefs.h"
15 #include "content/public/browser/web_contents.h"
16 #include "content/public/test/browser_test.h"
17 #include "content/public/test/browser_test_utils.h"
18 #include "net/test/embedded_test_server/embedded_test_server.h"
19 #include "third_party/blink/public/common/renderer_preferences/renderer_preferences.h"
20
21 namespace {
22
23 class ChromeDoNotTrackTest : public InProcessBrowserTest {
24  protected:
25   void SetEnableDoNotTrack(bool enabled) {
26     PrefService* prefs = browser()->profile()->GetPrefs();
27     prefs->SetBoolean(prefs::kEnableDoNotTrack, enabled);
28   }
29
30   void ExpectPageTextEq(const std::string& expected_content) {
31     EXPECT_EQ(expected_content,
32               EvalJs(browser()->tab_strip_model()->GetActiveWebContents(),
33                      "document.body.innerText;"));
34   }
35
36   content::WebContents* GetWebContents() {
37     return browser()->tab_strip_model()->GetActiveWebContents();
38   }
39 };
40
41 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, NotEnabled) {
42   ASSERT_TRUE(embedded_test_server()->Start());
43   SetEnableDoNotTrack(false /* enabled */);
44
45   GURL url = embedded_test_server()->GetURL("/echoheader?DNT");
46   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
47   EXPECT_EQ(false,
48             GetWebContents()->GetMutableRendererPrefs()->enable_do_not_track);
49   ExpectPageTextEq("None");
50 }
51
52 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, Enabled) {
53   ASSERT_TRUE(embedded_test_server()->Start());
54   SetEnableDoNotTrack(true /* enabled */);
55
56   GURL url = embedded_test_server()->GetURL("/echoheader?DNT");
57   ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url));
58   EXPECT_EQ(true,
59             GetWebContents()->GetMutableRendererPrefs()->enable_do_not_track);
60   ExpectPageTextEq("1");
61 }
62
63 // Checks that the DNT header is preserved when fetching from a dedicated
64 // worker.
65 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, FetchFromWorker) {
66   ASSERT_TRUE(embedded_test_server()->Start());
67   SetEnableDoNotTrack(true /* enabled */);
68
69   ASSERT_TRUE(ui_test_utils::NavigateToURL(
70       browser(),
71       embedded_test_server()->GetURL(
72           "/workers/fetch_from_worker.html?script=fetch_from_worker.js")));
73   EXPECT_EQ("1",
74             EvalJs(GetWebContents(), "fetch_from_worker('/echoheader?DNT');"));
75
76   // Updating settings should be reflected immediately.
77   SetEnableDoNotTrack(false /* enabled */);
78   EXPECT_EQ("None",
79             EvalJs(GetWebContents(), "fetch_from_worker('/echoheader?DNT');"));
80 }
81
82 // Checks that the DNT header is preserved when fetching from a dedicated
83 // worker created from a dedicated worker.
84 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, FetchFromNestedWorker) {
85   ASSERT_TRUE(embedded_test_server()->Start());
86   SetEnableDoNotTrack(true /* enabled */);
87
88   ASSERT_TRUE(ui_test_utils::NavigateToURL(
89       browser(),
90       embedded_test_server()->GetURL("/workers/fetch_from_worker.html?"
91                                      "script=fetch_from_nested_worker.js")));
92   EXPECT_EQ("1",
93             EvalJs(GetWebContents(), "fetch_from_worker('/echoheader?DNT');"));
94
95   // Updating settings should be reflected immediately.
96   SetEnableDoNotTrack(false /* enabled */);
97   EXPECT_EQ("None",
98             EvalJs(GetWebContents(), "fetch_from_worker('/echoheader?DNT');"));
99 }
100
101 // Checks that the DNT header is preserved when fetching from a shared worker.
102 //
103 // Disabled on Android since a shared worker is not available on Android:
104 // crbug.com/869745.
105 #if BUILDFLAG(IS_ANDROID)
106 #define MAYBE_FetchFromSharedWorker DISABLED_FetchFromSharedWorker
107 #else
108 #define MAYBE_FetchFromSharedWorker FetchFromSharedWorker
109 #endif
110 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, MAYBE_FetchFromSharedWorker) {
111   ASSERT_TRUE(embedded_test_server()->Start());
112   SetEnableDoNotTrack(true /* enabled */);
113
114   ASSERT_TRUE(ui_test_utils::NavigateToURL(
115       browser(), embedded_test_server()->GetURL(
116                      "/workers/fetch_from_shared_worker.html")));
117   EXPECT_EQ("1", EvalJs(GetWebContents(),
118                         "fetch_from_shared_worker('/echoheader?DNT');"));
119
120   // Updating settings should be reflected immediately.
121   SetEnableDoNotTrack(false /* enabled */);
122   EXPECT_EQ("None", EvalJs(GetWebContents(),
123                            "fetch_from_shared_worker('/echoheader?DNT');"));
124 }
125
126 // Checks that the DNT header is preserved when fetching from a service worker.
127 IN_PROC_BROWSER_TEST_F(ChromeDoNotTrackTest, FetchFromServiceWorker) {
128   ASSERT_TRUE(embedded_test_server()->Start());
129   SetEnableDoNotTrack(true /* enabled */);
130
131   ASSERT_TRUE(ui_test_utils::NavigateToURL(
132       browser(), embedded_test_server()->GetURL(
133                      "/workers/fetch_from_service_worker.html")));
134   EXPECT_EQ("ready", EvalJs(GetWebContents(), "setup();"));
135   EXPECT_EQ("1", EvalJs(GetWebContents(),
136                         "fetch_from_service_worker('/echoheader?DNT');"));
137
138   // Updating settings should be reflected immediately.
139   SetEnableDoNotTrack(false /* enabled */);
140   EXPECT_EQ("None", EvalJs(GetWebContents(),
141                            "fetch_from_service_worker('/echoheader?DNT');"));
142 }
143
144 }  // namespace