| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <stdint.h> | 6 #include <stdint.h> |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
| 13 #include "base/macros.h" | 13 #include "base/macros.h" |
| 14 #include "base/memory/ptr_util.h" | 14 #include "base/memory/ptr_util.h" |
| 15 #include "base/message_loop/message_loop.h" | 15 #include "base/message_loop/message_loop.h" |
| 16 #include "base/metrics/field_trial.h" | 16 #include "base/metrics/field_trial.h" |
| 17 #include "base/metrics/field_trial_param_associator.h" |
| 17 #include "base/strings/stringprintf.h" | 18 #include "base/strings/stringprintf.h" |
| 19 #include "base/test/scoped_feature_list.h" |
| 18 #include "base/test/simple_test_clock.h" | 20 #include "base/test/simple_test_clock.h" |
| 19 #include "base/test/simple_test_tick_clock.h" | 21 #include "base/test/simple_test_tick_clock.h" |
| 20 #include "base/time/time.h" | 22 #include "base/time/time.h" |
| 21 #include "chrome/browser/net/prediction_options.h" | 23 #include "chrome/browser/net/prediction_options.h" |
| 22 #include "chrome/browser/prerender/prerender_contents.h" | 24 #include "chrome/browser/prerender/prerender_contents.h" |
| 23 #include "chrome/browser/prerender/prerender_field_trial.h" | 25 #include "chrome/browser/prerender/prerender_field_trial.h" |
| 24 #include "chrome/browser/prerender/prerender_handle.h" | 26 #include "chrome/browser/prerender/prerender_handle.h" |
| 25 #include "chrome/browser/prerender/prerender_link_manager.h" | 27 #include "chrome/browser/prerender/prerender_link_manager.h" |
| 26 #include "chrome/browser/prerender/prerender_manager.h" | 28 #include "chrome/browser/prerender/prerender_manager.h" |
| 27 #include "chrome/browser/prerender/prerender_origin.h" | 29 #include "chrome/browser/prerender/prerender_origin.h" |
| 28 #include "chrome/common/chrome_switches.h" | 30 #include "chrome/common/chrome_switches.h" |
| 29 #include "chrome/common/pref_names.h" | 31 #include "chrome/common/pref_names.h" |
| 30 #include "chrome/common/prerender_types.h" | 32 #include "chrome/common/prerender_types.h" |
| 31 #include "chrome/test/base/testing_browser_process.h" | 33 #include "chrome/test/base/testing_browser_process.h" |
| 32 #include "chrome/test/base/testing_profile.h" | 34 #include "chrome/test/base/testing_profile.h" |
| 33 #include "components/content_settings/core/common/pref_names.h" | 35 #include "components/content_settings/core/common/pref_names.h" |
| 34 #include "components/prefs/pref_service.h" | 36 #include "components/prefs/pref_service.h" |
| 37 #include "components/variations/variations_associated_data.h" |
| 35 #include "content/public/browser/render_view_host.h" | 38 #include "content/public/browser/render_view_host.h" |
| 36 #include "content/public/test/test_browser_thread.h" | 39 #include "content/public/test/test_browser_thread.h" |
| 37 #include "net/base/network_change_notifier.h" | 40 #include "net/base/network_change_notifier.h" |
| 38 #include "testing/gtest/include/gtest/gtest.h" | 41 #include "testing/gtest/include/gtest/gtest.h" |
| 39 #include "ui/gfx/geometry/rect.h" | 42 #include "ui/gfx/geometry/rect.h" |
| 40 #include "ui/gfx/geometry/size.h" | 43 #include "ui/gfx/geometry/size.h" |
| 41 #include "url/gurl.h" | 44 #include "url/gurl.h" |
| 42 | 45 |
| 43 using base::Time; | 46 using base::Time; |
| 44 using base::TimeDelta; | 47 using base::TimeDelta; |
| (...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 TestingProfile profile_; | 407 TestingProfile profile_; |
| 405 std::unique_ptr<UnitTestPrerenderManager> prerender_manager_; | 408 std::unique_ptr<UnitTestPrerenderManager> prerender_manager_; |
| 406 std::unique_ptr<PrerenderLinkManager> prerender_link_manager_; | 409 std::unique_ptr<PrerenderLinkManager> prerender_link_manager_; |
| 407 int last_prerender_id_; | 410 int last_prerender_id_; |
| 408 base::FieldTrialList field_trial_list_; | 411 base::FieldTrialList field_trial_list_; |
| 409 }; | 412 }; |
| 410 | 413 |
| 411 TEST_F(PrerenderTest, PrerenderRespectsDisableFlag) { | 414 TEST_F(PrerenderTest, PrerenderRespectsDisableFlag) { |
| 412 RestorePrerenderMode restore_prerender_mode; | 415 RestorePrerenderMode restore_prerender_mode; |
| 413 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible()); | 416 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible()); |
| 414 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 417 ASSERT_EQ(PrerenderManager::PRERENDER_MODE_ENABLED, |
| 415 command_line->AppendSwitchASCII( | 418 PrerenderManager::GetMode()); |
| 416 switches::kPrerenderMode, | 419 |
| 417 switches::kPrerenderModeSwitchValueDisabled); | 420 { |
| 418 prerender::ConfigurePrerender(*command_line); | 421 base::test::ScopedFeatureList scoped_feature_list; |
| 419 ASSERT_FALSE(PrerenderManager::IsPrerenderingPossible()); | 422 scoped_feature_list.InitAndDisableFeature(kNoStatePrefetchFeature); |
| 423 prerender::ConfigurePrerender(); |
| 424 EXPECT_EQ(PrerenderManager::PRERENDER_MODE_DISABLED, |
| 425 PrerenderManager::GetMode()); |
| 426 EXPECT_FALSE(PrerenderManager::IsPrerenderingPossible()); |
| 427 } |
| 428 } |
| 429 |
| 430 TEST_F(PrerenderTest, PrerenderRespectsFieldTrialParameters) { |
| 431 RestorePrerenderMode restore_prerender_mode; |
| 432 |
| 433 // Set up the prerender mode through a field trial. |
| 434 std::string kTrialName = "name"; |
| 435 std::string kTrialGroup = "group"; |
| 436 base::FieldTrial* trial = |
| 437 base::FieldTrialList::CreateFieldTrial(kTrialName, kTrialGroup); |
| 438 std::map<std::string, std::string> params = { |
| 439 {kNoStatePrefetchFeatureModeParameterName, |
| 440 kNoStatePrefetchFeatureModeParameterSimpleLoad}}; |
| 441 ASSERT_TRUE( |
| 442 variations::AssociateVariationParams(kTrialName, kTrialGroup, params)); |
| 443 |
| 444 std::unique_ptr<base::FeatureList> feature_list = |
| 445 base::MakeUnique<base::FeatureList>(); |
| 446 feature_list->RegisterFieldTrialOverride( |
| 447 kNoStatePrefetchFeature.name, base::FeatureList::OVERRIDE_ENABLE_FEATURE, |
| 448 trial); |
| 449 |
| 450 base::test::ScopedFeatureList scoped_feature_list; |
| 451 scoped_feature_list.InitWithFeatureList(std::move(feature_list)); |
| 452 |
| 453 EXPECT_EQ(base::FeatureList::GetFieldTrial(kNoStatePrefetchFeature), trial); |
| 454 |
| 455 std::map<std::string, std::string> actual_params; |
| 456 EXPECT_TRUE(variations::GetVariationParamsByFeature(kNoStatePrefetchFeature, |
| 457 &actual_params)); |
| 458 EXPECT_EQ(params, actual_params); |
| 459 |
| 460 prerender::ConfigurePrerender(); |
| 461 EXPECT_TRUE(PrerenderManager::IsPrerenderingPossible()); |
| 462 EXPECT_EQ(PrerenderManager::PRERENDER_MODE_SIMPLE_LOAD_EXPERIMENT, |
| 463 PrerenderManager::GetMode()); |
| 420 } | 464 } |
| 421 | 465 |
| 422 TEST_F(PrerenderTest, PrerenderRespectsThirdPartyCookiesPref) { | 466 TEST_F(PrerenderTest, PrerenderRespectsThirdPartyCookiesPref) { |
| 423 GURL url("http://www.google.com/"); | 467 GURL url("http://www.google.com/"); |
| 424 RestorePrerenderMode restore_prerender_mode; | 468 RestorePrerenderMode restore_prerender_mode; |
| 425 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible()); | 469 ASSERT_TRUE(PrerenderManager::IsPrerenderingPossible()); |
| 426 | 470 |
| 427 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); | 471 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 428 EXPECT_FALSE(AddSimplePrerender(url)); | 472 EXPECT_FALSE(AddSimplePrerender(url)); |
| 429 } | 473 } |
| (...skipping 1334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1764 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); | 1808 prerender_contents->SetPrerenderMode(PREFETCH_ONLY); |
| 1765 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); | 1809 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("GET")); |
| 1766 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); | 1810 EXPECT_TRUE(prerender_contents->IsValidHttpMethod("HEAD")); |
| 1767 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); | 1811 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("OPTIONS")); |
| 1768 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); | 1812 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("POST")); |
| 1769 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); | 1813 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("TRACE")); |
| 1770 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); | 1814 EXPECT_FALSE(prerender_contents->IsValidHttpMethod("WHATEVER")); |
| 1771 } | 1815 } |
| 1772 | 1816 |
| 1773 } // namespace prerender | 1817 } // namespace prerender |
| OLD | NEW |