| Index: chrome/browser/prefetch/prefetch_browsertest.cc
|
| diff --git a/chrome/browser/prefetch/prefetch_browsertest.cc b/chrome/browser/prefetch/prefetch_browsertest.cc
|
| index 658ffba1f79d466ad608ab5057dbeaa560decdc5..1fe4f3b9331dbff6bb6b519780b747da7a9539e6 100644
|
| --- a/chrome/browser/prefetch/prefetch_browsertest.cc
|
| +++ b/chrome/browser/prefetch/prefetch_browsertest.cc
|
| @@ -3,10 +3,13 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/command_line.h"
|
| +#include "base/prefs/pref_service.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| +#include "chrome/browser/profiles/profile.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| #include "chrome/common/chrome_switches.h"
|
| +#include "chrome/common/pref_names.h"
|
| #include "chrome/test/base/in_process_browser_test.h"
|
| #include "chrome/test/base/ui_test_utils.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| @@ -17,11 +20,13 @@ const char kPrefetchPage[] = "files/prerender/simple_prefetch.html";
|
|
|
| class PrefetchBrowserTestBase : public InProcessBrowserTest {
|
| public:
|
| - explicit PrefetchBrowserTestBase(bool do_prefetching)
|
| - : do_prefetching_(do_prefetching) {}
|
| + explicit PrefetchBrowserTestBase(bool do_predictive_networking,
|
| + bool do_prefetch_field_trial)
|
| + : do_predictive_networking_(do_predictive_networking),
|
| + do_prefetch_field_trial_(do_prefetch_field_trial) {}
|
|
|
| virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE {
|
| - if (do_prefetching_) {
|
| + if (do_prefetch_field_trial_) {
|
| command_line->AppendSwitchASCII(
|
| switches::kForceFieldTrials,
|
| "Prefetch/ExperimentYes/");
|
| @@ -32,46 +37,72 @@ class PrefetchBrowserTestBase : public InProcessBrowserTest {
|
| }
|
| }
|
|
|
| + virtual void SetUpOnMainThread() OVERRIDE {
|
| + browser()->profile()->GetPrefs()->SetBoolean(
|
| + prefs::kNetworkPredictionEnabled, do_predictive_networking_);
|
| + }
|
| +
|
| + bool RunPrefetchExperiment(bool expect_success) {
|
| + CHECK(test_server()->Start());
|
| + GURL url = test_server()->GetURL(kPrefetchPage);
|
| +
|
| + const base::string16 expected_title =
|
| + expect_success ? base::ASCIIToUTF16("link onload")
|
| + : base::ASCIIToUTF16("link onerror");
|
| + content::TitleWatcher title_watcher(
|
| + browser()->tab_strip_model()->GetActiveWebContents(), expected_title);
|
| + ui_test_utils::NavigateToURL(browser(), url);
|
| +
|
| + return expected_title == title_watcher.WaitAndGetTitle();
|
| + }
|
| +
|
| private:
|
| - bool do_prefetching_;
|
| + bool do_predictive_networking_;
|
| + bool do_prefetch_field_trial_;
|
| };
|
|
|
| -class PrefetchBrowserTest : public PrefetchBrowserTestBase {
|
| +class PrefetchBrowserTestPredictionOnExpOn : public PrefetchBrowserTestBase {
|
| public:
|
| - PrefetchBrowserTest()
|
| - : PrefetchBrowserTestBase(true) {}
|
| + PrefetchBrowserTestPredictionOnExpOn()
|
| + : PrefetchBrowserTestBase(true, true) {}
|
| };
|
|
|
| -class PrefetchBrowserTestNoPrefetching : public PrefetchBrowserTestBase {
|
| +class PrefetchBrowserTestPredictionOnExpOff : public PrefetchBrowserTestBase {
|
| public:
|
| - PrefetchBrowserTestNoPrefetching()
|
| - : PrefetchBrowserTestBase(false) {}
|
| + PrefetchBrowserTestPredictionOnExpOff()
|
| + : PrefetchBrowserTestBase(true, false) {}
|
| };
|
|
|
| -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTest, PrefetchOn) {
|
| - ASSERT_TRUE(test_server()->Start());
|
| - GURL url = test_server()->GetURL(kPrefetchPage);
|
| +class PrefetchBrowserTestPredictionOffExpOn : public PrefetchBrowserTestBase {
|
| + public:
|
| + PrefetchBrowserTestPredictionOffExpOn()
|
| + : PrefetchBrowserTestBase(false, true) {}
|
| +};
|
|
|
| - const base::string16 expected_title = base::ASCIIToUTF16("link onload");
|
| - content::TitleWatcher title_watcher(
|
| - browser()->tab_strip_model()->GetActiveWebContents(),
|
| - expected_title);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| +class PrefetchBrowserTestPredictionOffExpOff : public PrefetchBrowserTestBase {
|
| + public:
|
| + PrefetchBrowserTestPredictionOffExpOff()
|
| + : PrefetchBrowserTestBase(false, false) {}
|
| +};
|
|
|
| - EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
|
| +// Privacy option is on, experiment is on. Prefetch should succeed.
|
| +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOnExpOn, PredOnExpOn) {
|
| + EXPECT_TRUE(RunPrefetchExperiment(true));
|
| }
|
|
|
| -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestNoPrefetching, PrefetchOff) {
|
| - ASSERT_TRUE(test_server()->Start());
|
| - GURL url = test_server()->GetURL(kPrefetchPage);
|
| +// Privacy option is on, experiment is off. Prefetch should be dropped.
|
| +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOnExpOff, PredOnExpOff) {
|
| + EXPECT_TRUE(RunPrefetchExperiment(false));
|
| +}
|
|
|
| - const base::string16 expected_title = base::ASCIIToUTF16("link onerror");
|
| - content::TitleWatcher title_watcher(
|
| - browser()->tab_strip_model()->GetActiveWebContents(),
|
| - expected_title);
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| +// Privacy option is off, experiment is on. Prefetch should be dropped.
|
| +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOffExpOn, PredOffExpOn) {
|
| + EXPECT_TRUE(RunPrefetchExperiment(false));
|
| +}
|
|
|
| - EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
|
| +// Privacy option is off, experiment is off. Prefetch should be dropped.
|
| +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOffExpOff, PredOffExpOff) {
|
| + EXPECT_TRUE(RunPrefetchExperiment(false));
|
| }
|
|
|
| } // namespace
|
|
|