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

Side by Side Diff: chrome/browser/data_saver/data_saver_browsertest.cc

Issue 1783653002: save-data header value gets appended on page refreshes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 4 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
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/loader/FrameFetchContext.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <string> 5 #include <string>
6 6
7 #include "chrome/browser/profiles/profile.h" 7 #include "chrome/browser/profiles/profile.h"
8 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_commands.h"
9 #include "chrome/browser/ui/tabs/tab_strip_model.h" 10 #include "chrome/browser/ui/tabs/tab_strip_model.h"
10 #include "chrome/common/pref_names.h" 11 #include "chrome/common/pref_names.h"
11 #include "chrome/test/base/in_process_browser_test.h" 12 #include "chrome/test/base/in_process_browser_test.h"
12 #include "chrome/test/base/ui_test_utils.h" 13 #include "chrome/test/base/ui_test_utils.h"
13 #include "components/prefs/pref_service.h" 14 #include "components/prefs/pref_service.h"
14 #include "content/public/test/browser_test_base.h" 15 #include "content/public/test/browser_test_base.h"
15 #include "content/public/test/browser_test_utils.h" 16 #include "content/public/test/browser_test_utils.h"
16 #include "net/test/embedded_test_server/embedded_test_server.h" 17 #include "net/test/embedded_test_server/embedded_test_server.h"
18 #include "net/test/embedded_test_server/http_request.h"
19 #include "net/test/embedded_test_server/http_response.h"
17 20
18 class DataSaverBrowserTest : public InProcessBrowserTest { 21 class DataSaverBrowserTest : public InProcessBrowserTest {
19 protected: 22 protected:
20 void EnableDataSaver(bool enabled) { 23 void EnableDataSaver(bool enabled) {
21 PrefService* prefs = browser()->profile()->GetPrefs(); 24 PrefService* prefs = browser()->profile()->GetPrefs();
22 prefs->SetBoolean(prefs::kDataSaverEnabled, enabled); 25 prefs->SetBoolean(prefs::kDataSaverEnabled, enabled);
23 } 26 }
24 27
25 void VerifySaveDataHeader(const std::string& expected_header_value) { 28 void VerifySaveDataHeader(const std::string& expected_header_value) {
26 ui_test_utils::NavigateToURL( 29 ui_test_utils::NavigateToURL(
(...skipping 11 matching lines...) Expand all
38 ASSERT_TRUE(embedded_test_server()->Start()); 41 ASSERT_TRUE(embedded_test_server()->Start());
39 EnableDataSaver(true); 42 EnableDataSaver(true);
40 VerifySaveDataHeader("on"); 43 VerifySaveDataHeader("on");
41 } 44 }
42 45
43 IN_PROC_BROWSER_TEST_F(DataSaverBrowserTest, DataSaverDisabled) { 46 IN_PROC_BROWSER_TEST_F(DataSaverBrowserTest, DataSaverDisabled) {
44 ASSERT_TRUE(embedded_test_server()->Start()); 47 ASSERT_TRUE(embedded_test_server()->Start());
45 EnableDataSaver(false); 48 EnableDataSaver(false);
46 VerifySaveDataHeader("None"); 49 VerifySaveDataHeader("None");
47 } 50 }
51
52 class DataSaverWithServerBrowserTest : public InProcessBrowserTest {
53 protected:
54 void Init() {
55 test_server_.reset(new net::EmbeddedTestServer());
56 test_server_->RegisterRequestHandler(
57 base::Bind(&DataSaverWithServerBrowserTest::VerifySaveDataHeader,
58 base::Unretained(this)));
59 test_server_->ServeFilesFromSourceDirectory("chrome/test/data");
60 }
61 void EnableDataSaver(bool enabled) {
62 PrefService* prefs = browser()->profile()->GetPrefs();
63 prefs->SetBoolean(prefs::kDataSaverEnabled, enabled);
64 }
65
66 scoped_ptr<net::test_server::HttpResponse> VerifySaveDataHeader(
67 const net::test_server::HttpRequest& request) {
68 auto save_data_header_it = request.headers.find("save-data");
69
70 if (!expected_save_data_header_.empty()) {
71 EXPECT_TRUE(save_data_header_it != request.headers.end());
72 EXPECT_EQ(expected_save_data_header_, save_data_header_it->second);
73 } else {
74 EXPECT_TRUE(save_data_header_it == request.headers.end());
75 }
76 return scoped_ptr<net::test_server::HttpResponse>();
77 }
78
79 scoped_ptr<net::EmbeddedTestServer> test_server_;
80 std::string expected_save_data_header_;
81 };
82
83 IN_PROC_BROWSER_TEST_F(DataSaverWithServerBrowserTest, ReloadPage) {
84 Init();
85 ASSERT_TRUE(test_server_->Start());
86 EnableDataSaver(true);
87
88 expected_save_data_header_ = "on";
89 ui_test_utils::NavigateToURL(browser(),
90 test_server_->GetURL("/google/google.html"));
91
92 // Reload the webpage and expect the main and the subresources will get the
93 // correct save-data header.
94 expected_save_data_header_ = "on";
95 chrome::Reload(browser(), CURRENT_TAB);
96 content::WaitForLoadStop(
97 browser()->tab_strip_model()->GetActiveWebContents());
98
99 // Reload the webpage with data saver disabled, and expect all the resources
100 // will get no save-data header.
101 EnableDataSaver(false);
102 expected_save_data_header_ = "";
103 chrome::Reload(browser(), CURRENT_TAB);
104 content::WaitForLoadStop(
105 browser()->tab_strip_model()->GetActiveWebContents());
106 }
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/core/loader/FrameFetchContext.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698