X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fchrome%2Fbrowser%2Fprefetch%2Fprefetch_browsertest.cc;h=a870be6ffe72a269d4fb5bddb755f2206f67826c;hb=ff3e2503a20db9193d323c1d19c38c68004dec4a;hp=658ffba1f79d466ad608ab5057dbeaa560decdc5;hpb=7338fba38ba696536d1cc9d389afd716a6ab2fe6;p=platform%2Fframework%2Fweb%2Fcrosswalk.git diff --git a/src/chrome/browser/prefetch/prefetch_browsertest.cc b/src/chrome/browser/prefetch/prefetch_browsertest.cc index 658ffba..a870be6 100644 --- a/src/chrome/browser/prefetch/prefetch_browsertest.cc +++ b/src/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,85 @@ class PrefetchBrowserTestBase : public InProcessBrowserTest { } } + virtual void SetUpOnMainThread() OVERRIDE { + browser()->profile()->GetPrefs()->SetBoolean( + prefs::kNetworkPredictionEnabled, do_predictive_networking_); + } + + bool RunPrefetchExperiment(bool expect_success, Browser* browser) { + 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 PrefetchBrowserTestPredictionOnExpOn : public PrefetchBrowserTestBase { + public: + PrefetchBrowserTestPredictionOnExpOn() + : PrefetchBrowserTestBase(true, true) {} }; -class PrefetchBrowserTest : public PrefetchBrowserTestBase { +class PrefetchBrowserTestPredictionOnExpOff : public PrefetchBrowserTestBase { public: - PrefetchBrowserTest() - : PrefetchBrowserTestBase(true) {} + PrefetchBrowserTestPredictionOnExpOff() + : PrefetchBrowserTestBase(true, false) {} }; -class PrefetchBrowserTestNoPrefetching : public PrefetchBrowserTestBase { +class PrefetchBrowserTestPredictionOffExpOn : public PrefetchBrowserTestBase { public: - PrefetchBrowserTestNoPrefetching() - : PrefetchBrowserTestBase(false) {} + PrefetchBrowserTestPredictionOffExpOn() + : PrefetchBrowserTestBase(false, true) {} }; -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTest, PrefetchOn) { - ASSERT_TRUE(test_server()->Start()); - GURL url = test_server()->GetURL(kPrefetchPage); +class PrefetchBrowserTestPredictionOffExpOff : public PrefetchBrowserTestBase { + public: + PrefetchBrowserTestPredictionOffExpOff() + : PrefetchBrowserTestBase(false, false) {} +}; + +// Privacy option is on, experiment is on. Prefetch should succeed. +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOnExpOn, PredOnExpOn) { + EXPECT_TRUE(RunPrefetchExperiment(true, browser())); +} - 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); +// Privacy option is on, experiment is off. Prefetch should be dropped. +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOnExpOff, PredOnExpOff) { + EXPECT_TRUE(RunPrefetchExperiment(false, browser())); +} + +// Privacy option is off, experiment is on. Prefetch should be dropped. +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOffExpOn, PredOffExpOn) { + EXPECT_TRUE(RunPrefetchExperiment(false, browser())); +} - 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, browser())); } -IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestNoPrefetching, PrefetchOff) { - ASSERT_TRUE(test_server()->Start()); - GURL url = test_server()->GetURL(kPrefetchPage); +// Bug 339909: When in incognito mode the browser crashed due to an +// uninitialized preference member. Verify that it no longer does. +IN_PROC_BROWSER_TEST_F(PrefetchBrowserTestPredictionOnExpOn, IncognitoTest) { + Profile* incognito_profile = browser()->profile()->GetOffTheRecordProfile(); + Browser* incognito_browser = new Browser( + Browser::CreateParams(incognito_profile, browser()->host_desktop_type())); - 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); + // Navigate just to have a tab in this window, otherwise there is no + // WebContents for the incognito browser. + ui_test_utils::OpenURLOffTheRecord(browser()->profile(), GURL("about:blank")); - EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); + EXPECT_TRUE(RunPrefetchExperiment(true, incognito_browser)); } } // namespace