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 <map> | 5 #include <map> |
6 #include <utility> | 6 #include <utility> |
7 | 7 |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
12 #include "base/metrics/field_trial.h" | 12 #include "base/metrics/field_trial.h" |
| 13 #include "base/prefs/pref_service.h" |
13 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
14 #include "base/time/time.h" | 15 #include "base/time/time.h" |
| 16 #include "chrome/browser/net/prediction_options.h" |
15 #include "chrome/browser/prerender/prerender_contents.h" | 17 #include "chrome/browser/prerender/prerender_contents.h" |
16 #include "chrome/browser/prerender/prerender_handle.h" | 18 #include "chrome/browser/prerender/prerender_handle.h" |
17 #include "chrome/browser/prerender/prerender_link_manager.h" | 19 #include "chrome/browser/prerender/prerender_link_manager.h" |
18 #include "chrome/browser/prerender/prerender_manager.h" | 20 #include "chrome/browser/prerender/prerender_manager.h" |
19 #include "chrome/browser/prerender/prerender_origin.h" | 21 #include "chrome/browser/prerender/prerender_origin.h" |
20 #include "chrome/common/chrome_switches.h" | 22 #include "chrome/common/chrome_switches.h" |
| 23 #include "chrome/common/pref_names.h" |
21 #include "chrome/common/prerender_types.h" | 24 #include "chrome/common/prerender_types.h" |
22 #include "chrome/test/base/testing_browser_process.h" | 25 #include "chrome/test/base/testing_browser_process.h" |
23 #include "chrome/test/base/testing_profile.h" | 26 #include "chrome/test/base/testing_profile.h" |
24 #include "content/public/browser/render_view_host.h" | 27 #include "content/public/browser/render_view_host.h" |
25 #include "content/public/test/test_browser_thread.h" | 28 #include "content/public/test/test_browser_thread.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
27 #include "ui/gfx/size.h" | 30 #include "ui/gfx/size.h" |
28 #include "url/gurl.h" | 31 #include "url/gurl.h" |
29 | 32 |
30 using base::Time; | 33 using base::Time; |
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 // Shorthand to add a simple prerender with a reasonable source. Returns | 389 // Shorthand to add a simple prerender with a reasonable source. Returns |
387 // true iff the prerender has been added to the PrerenderManager by the | 390 // true iff the prerender has been added to the PrerenderManager by the |
388 // PrerenderLinkManager and the PrerenderManager returned a handle. | 391 // PrerenderLinkManager and the PrerenderManager returned a handle. |
389 bool AddSimplePrerender(const GURL& url) { | 392 bool AddSimplePrerender(const GURL& url) { |
390 prerender_link_manager()->OnAddPrerender( | 393 prerender_link_manager()->OnAddPrerender( |
391 kDefaultChildId, GetNextPrerenderID(), url, kDefaultRelTypes, | 394 kDefaultChildId, GetNextPrerenderID(), url, kDefaultRelTypes, |
392 content::Referrer(), kSize, kDefaultRenderViewRouteId); | 395 content::Referrer(), kSize, kDefaultRenderViewRouteId); |
393 return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id()); | 396 return LauncherHasRunningPrerender(kDefaultChildId, last_prerender_id()); |
394 } | 397 } |
395 | 398 |
| 399 void DisablePrerender() { |
| 400 profile_.GetPrefs()->SetInteger( |
| 401 prefs::kNetworkPredictionOptions, |
| 402 chrome_browser_net::NETWORK_PREDICTION_NEVER); |
| 403 } |
| 404 |
396 private: | 405 private: |
397 PrerenderTracker* prerender_tracker() { | 406 PrerenderTracker* prerender_tracker() { |
398 return g_browser_process->prerender_tracker(); | 407 return g_browser_process->prerender_tracker(); |
399 } | 408 } |
400 | 409 |
401 // Needed to pass PrerenderManager's DCHECKs. | 410 // Needed to pass PrerenderManager's DCHECKs. |
402 TestingProfile profile_; | 411 TestingProfile profile_; |
403 base::MessageLoop message_loop_; | 412 base::MessageLoop message_loop_; |
404 content::TestBrowserThread ui_thread_; | 413 content::TestBrowserThread ui_thread_; |
405 scoped_ptr<UnitTestPrerenderManager> prerender_manager_; | 414 scoped_ptr<UnitTestPrerenderManager> prerender_manager_; |
(...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1023 prerender_manager()->CreateNextPrerenderContents( | 1032 prerender_manager()->CreateNextPrerenderContents( |
1024 url, FINAL_STATUS_CANCELLED); | 1033 url, FINAL_STATUS_CANCELLED); |
1025 EXPECT_TRUE(AddSimplePrerender(url)); | 1034 EXPECT_TRUE(AddSimplePrerender(url)); |
1026 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 1035 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
1027 prerender_manager()->CancelAllPrerenders(); | 1036 prerender_manager()->CancelAllPrerenders(); |
1028 const DummyPrerenderContents* null = NULL; | 1037 const DummyPrerenderContents* null = NULL; |
1029 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); | 1038 EXPECT_EQ(null, prerender_manager()->FindEntry(url)); |
1030 } | 1039 } |
1031 | 1040 |
1032 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { | 1041 TEST_F(PrerenderTest, OmniboxNotAllowedWhenDisabled) { |
1033 prerender_manager()->set_enabled(false); | 1042 DisablePrerender(); |
1034 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( | 1043 EXPECT_FALSE(prerender_manager()->AddPrerenderFromOmnibox( |
1035 GURL("http://www.example.com"), NULL, gfx::Size())); | 1044 GURL("http://www.example.com"), NULL, gfx::Size())); |
1036 } | 1045 } |
1037 | 1046 |
1038 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { | 1047 TEST_F(PrerenderTest, LinkRelNotAllowedWhenDisabled) { |
1039 prerender_manager()->set_enabled(false); | 1048 DisablePrerender(); |
1040 EXPECT_FALSE(AddSimplePrerender( | 1049 EXPECT_FALSE(AddSimplePrerender( |
1041 GURL("http://www.example.com"))); | 1050 GURL("http://www.example.com"))); |
1042 } | 1051 } |
1043 | 1052 |
1044 TEST_F(PrerenderTest, LinkManagerCancel) { | 1053 TEST_F(PrerenderTest, LinkManagerCancel) { |
1045 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 1054 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
1046 GURL url("http://www.myexample.com"); | 1055 GURL url("http://www.myexample.com"); |
1047 DummyPrerenderContents* prerender_contents = | 1056 DummyPrerenderContents* prerender_contents = |
1048 prerender_manager()->CreateNextPrerenderContents( | 1057 prerender_manager()->CreateNextPrerenderContents( |
1049 url, FINAL_STATUS_CANCELLED); | 1058 url, FINAL_STATUS_CANCELLED); |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1537 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); | 1546 prerender_manager()->AdvanceTimeTicks(wait_for_first_prerender_to_expire); |
1538 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); | 1547 EXPECT_EQ(null, prerender_manager()->FindEntry(first_url)); |
1539 EXPECT_EQ(second_prerender_contents, | 1548 EXPECT_EQ(second_prerender_contents, |
1540 prerender_manager()->FindAndUseEntry(second_url)); | 1549 prerender_manager()->FindAndUseEntry(second_url)); |
1541 } | 1550 } |
1542 | 1551 |
1543 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) { | 1552 TEST_F(PrerenderTest, InstantSearchNotAllowedWhenDisabled) { |
1544 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 1553 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
1545 "EmbeddedSearch", | 1554 "EmbeddedSearch", |
1546 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); | 1555 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); |
1547 prerender_manager()->set_enabled(false); | 1556 DisablePrerender(); |
1548 EXPECT_FALSE(prerender_manager()->AddPrerenderForInstant( | 1557 EXPECT_FALSE(prerender_manager()->AddPrerenderForInstant( |
1549 GURL("http://www.example.com/instant_search"), NULL, gfx::Size())); | 1558 GURL("http://www.example.com/instant_search"), NULL, gfx::Size())); |
1550 } | 1559 } |
1551 | 1560 |
1552 TEST_F(PrerenderTest, PrerenderContentsForInstantSearch) { | 1561 TEST_F(PrerenderTest, PrerenderContentsForInstantSearch) { |
1553 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 1562 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
1554 "EmbeddedSearch", | 1563 "EmbeddedSearch", |
1555 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); | 1564 "Group82 espv:8 use_cacheable_ntp:1 prefetch_results:1")); |
1556 GURL url("http://www.example.com/instant_search"); | 1565 GURL url("http://www.example.com/instant_search"); |
1557 DummyPrerenderContents* prerender_contents = | 1566 DummyPrerenderContents* prerender_contents = |
1558 prerender_manager()->CreateNextPrerenderContents(url, ORIGIN_INSTANT, | 1567 prerender_manager()->CreateNextPrerenderContents(url, ORIGIN_INSTANT, |
1559 FINAL_STATUS_USED); | 1568 FINAL_STATUS_USED); |
1560 scoped_ptr<PrerenderHandle> prerender_handle( | 1569 scoped_ptr<PrerenderHandle> prerender_handle( |
1561 prerender_manager()->AddPrerenderForInstant(url, NULL, kSize)); | 1570 prerender_manager()->AddPrerenderForInstant(url, NULL, kSize)); |
1562 CHECK(prerender_handle.get()); | 1571 CHECK(prerender_handle.get()); |
1563 EXPECT_TRUE(prerender_handle->IsPrerendering()); | 1572 EXPECT_TRUE(prerender_handle->IsPrerendering()); |
1564 EXPECT_TRUE(prerender_contents->prerendering_has_started()); | 1573 EXPECT_TRUE(prerender_contents->prerendering_has_started()); |
1565 EXPECT_EQ(prerender_contents, prerender_handle->contents()); | 1574 EXPECT_EQ(prerender_contents, prerender_handle->contents()); |
1566 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); | 1575 EXPECT_EQ(ORIGIN_INSTANT, prerender_handle->contents()->origin()); |
1567 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); | 1576 ASSERT_EQ(prerender_contents, prerender_manager()->FindAndUseEntry(url)); |
1568 EXPECT_FALSE(prerender_handle->IsPrerendering()); | 1577 EXPECT_FALSE(prerender_handle->IsPrerendering()); |
1569 } | 1578 } |
1570 | 1579 |
1571 } // namespace prerender | 1580 } // namespace prerender |
OLD | NEW |