Index: chrome/browser/data_saver/data_saver_browsertest.cc |
diff --git a/chrome/browser/data_saver/data_saver_browsertest.cc b/chrome/browser/data_saver/data_saver_browsertest.cc |
index 3c8e38264cd64ee6f8349ca392fbdceb1cb52d4f..f816ed236f48e279dc71824edd69e47f47b02318 100644 |
--- a/chrome/browser/data_saver/data_saver_browsertest.cc |
+++ b/chrome/browser/data_saver/data_saver_browsertest.cc |
@@ -6,6 +6,7 @@ |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/ui/browser.h" |
+#include "chrome/browser/ui/browser_commands.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
#include "chrome/common/pref_names.h" |
#include "chrome/test/base/in_process_browser_test.h" |
@@ -14,6 +15,8 @@ |
#include "content/public/test/browser_test_base.h" |
#include "content/public/test/browser_test_utils.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
+#include "net/test/embedded_test_server/http_request.h" |
+#include "net/test/embedded_test_server/http_response.h" |
class DataSaverBrowserTest : public InProcessBrowserTest { |
protected: |
@@ -45,3 +48,50 @@ IN_PROC_BROWSER_TEST_F(DataSaverBrowserTest, DataSaverDisabled) { |
EnableDataSaver(false); |
VerifySaveDataHeader("None"); |
} |
+ |
+class DataSaverWithServerBrowserTest : public InProcessBrowserTest { |
+ protected: |
+ void Init() { |
+ test_server_.reset(new net::EmbeddedTestServer()); |
+ test_server_->RegisterRequestHandler( |
+ base::Bind(&DataSaverWithServerBrowserTest::VerifySaveDataHeader, |
+ base::Unretained(this))); |
+ test_server_->ServeFilesFromSourceDirectory("chrome/test/data"); |
+ } |
+ void EnableDataSaver(bool enabled) { |
+ PrefService* prefs = browser()->profile()->GetPrefs(); |
+ prefs->SetBoolean(prefs::kDataSaverEnabled, enabled); |
+ } |
+ |
+ scoped_ptr<net::test_server::HttpResponse> VerifySaveDataHeader( |
+ const net::test_server::HttpRequest& request) { |
+ auto save_data_header = request.headers.find("save-data"); |
sclittle
2016/03/10 21:57:27
nit: For clarity, could you rename |save_data_head
Raj
2016/03/10 23:30:39
Done.
|
+ |
+ if (!expected_save_data_header_.empty()) { |
+ EXPECT_TRUE(save_data_header != request.headers.end()); |
+ EXPECT_EQ(expected_save_data_header_, save_data_header->second); |
+ } |
sclittle
2016/03/10 21:57:27
Should you also check that if |expected_save_data_
Raj
2016/03/10 23:30:39
Done.
|
+ return scoped_ptr<net::test_server::HttpResponse>(); |
+ } |
+ |
+ scoped_ptr<net::EmbeddedTestServer> test_server_; |
+ std::string expected_save_data_header_; |
+}; |
+ |
+IN_PROC_BROWSER_TEST_F(DataSaverWithServerBrowserTest, |
sclittle
2016/03/10 21:57:27
Should there also be a test that the save-data hea
Raj
2016/03/10 23:30:39
Done.
|
+ DataSaverEnabledReloadPage) { |
+ Init(); |
+ ASSERT_TRUE(test_server_->Start()); |
+ EnableDataSaver(true); |
+ |
+ ui_test_utils::NavigateToURL(browser(), |
+ test_server_->GetURL("/google/google.html")); |
+ |
+ // Reload the webpage and expect all the subresources will get the corect |
sclittle
2016/03/10 21:57:27
nit: spelling of "correct"
Raj
2016/03/10 23:30:39
Done.
|
+ // save-data header. |
+ expected_save_data_header_ = "on"; |
+ chrome::Reload(browser(), CURRENT_TAB); |
+ content::WebContents* tab = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ content::WaitForLoadStop(tab); |
+} |