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 |