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" | |
16 #include "base/metrics/field_trial.h" | 15 #include "base/metrics/field_trial.h" |
17 #include "base/metrics/field_trial_param_associator.h" | 16 #include "base/metrics/field_trial_param_associator.h" |
18 #include "base/metrics/field_trial_params.h" | 17 #include "base/metrics/field_trial_params.h" |
19 #include "base/strings/stringprintf.h" | 18 #include "base/strings/stringprintf.h" |
20 #include "base/test/histogram_tester.h" | 19 #include "base/test/histogram_tester.h" |
21 #include "base/test/scoped_feature_list.h" | 20 #include "base/test/scoped_feature_list.h" |
22 #include "base/test/simple_test_clock.h" | 21 #include "base/test/simple_test_clock.h" |
23 #include "base/test/simple_test_tick_clock.h" | 22 #include "base/test/simple_test_tick_clock.h" |
24 #include "base/time/time.h" | 23 #include "base/time/time.h" |
25 #include "chrome/browser/net/prediction_options.h" | 24 #include "chrome/browser/net/prediction_options.h" |
26 #include "chrome/browser/prerender/prerender_contents.h" | 25 #include "chrome/browser/prerender/prerender_contents.h" |
27 #include "chrome/browser/prerender/prerender_field_trial.h" | 26 #include "chrome/browser/prerender/prerender_field_trial.h" |
28 #include "chrome/browser/prerender/prerender_handle.h" | 27 #include "chrome/browser/prerender/prerender_handle.h" |
29 #include "chrome/browser/prerender/prerender_link_manager.h" | 28 #include "chrome/browser/prerender/prerender_link_manager.h" |
30 #include "chrome/browser/prerender/prerender_manager.h" | 29 #include "chrome/browser/prerender/prerender_manager.h" |
31 #include "chrome/browser/prerender/prerender_origin.h" | 30 #include "chrome/browser/prerender/prerender_origin.h" |
32 #include "chrome/browser/prerender/prerender_test_utils.h" | 31 #include "chrome/browser/prerender/prerender_test_utils.h" |
33 #include "chrome/common/chrome_switches.h" | 32 #include "chrome/common/chrome_switches.h" |
34 #include "chrome/common/pref_names.h" | 33 #include "chrome/common/pref_names.h" |
35 #include "chrome/common/prerender_types.h" | 34 #include "chrome/common/prerender_types.h" |
36 #include "chrome/test/base/testing_browser_process.h" | 35 #include "chrome/test/base/testing_browser_process.h" |
37 #include "chrome/test/base/testing_profile.h" | 36 #include "chrome/test/base/testing_profile.h" |
38 #include "components/content_settings/core/common/pref_names.h" | 37 #include "components/content_settings/core/common/pref_names.h" |
39 #include "components/prefs/pref_service.h" | 38 #include "components/prefs/pref_service.h" |
40 #include "content/public/browser/render_view_host.h" | 39 #include "content/public/browser/render_view_host.h" |
41 #include "content/public/test/test_browser_thread.h" | 40 #include "content/public/test/test_browser_thread_bundle.h" |
42 #include "net/base/network_change_notifier.h" | 41 #include "net/base/network_change_notifier.h" |
43 #include "net/http/http_cache.h" | 42 #include "net/http/http_cache.h" |
44 #include "testing/gtest/include/gtest/gtest.h" | 43 #include "testing/gtest/include/gtest/gtest.h" |
45 #include "ui/gfx/geometry/rect.h" | 44 #include "ui/gfx/geometry/rect.h" |
46 #include "ui/gfx/geometry/size.h" | 45 #include "ui/gfx/geometry/size.h" |
47 #include "url/gurl.h" | 46 #include "url/gurl.h" |
48 | 47 |
49 using base::Time; | 48 using base::Time; |
50 using base::TimeDelta; | 49 using base::TimeDelta; |
51 using base::TimeTicks; | 50 using base::TimeTicks; |
52 using content::BrowserThread; | |
53 using content::Referrer; | 51 using content::Referrer; |
54 | 52 |
55 namespace prerender { | 53 namespace prerender { |
56 | 54 |
57 class UnitTestPrerenderManager; | 55 class UnitTestPrerenderManager; |
58 | 56 |
59 namespace { | 57 namespace { |
60 | 58 |
61 class DummyPrerenderContents : public PrerenderContents { | 59 class DummyPrerenderContents : public PrerenderContents { |
62 public: | 60 public: |
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this); | 320 test_prerender_manager_->DummyPrerenderContentsStarted(-1, route_id_, this); |
323 NotifyPrerenderStart(); | 321 NotifyPrerenderStart(); |
324 } | 322 } |
325 | 323 |
326 class PrerenderTest : public testing::Test { | 324 class PrerenderTest : public testing::Test { |
327 public: | 325 public: |
328 static const int kDefaultChildId = -1; | 326 static const int kDefaultChildId = -1; |
329 static const int kDefaultRenderViewRouteId = -1; | 327 static const int kDefaultRenderViewRouteId = -1; |
330 | 328 |
331 PrerenderTest() | 329 PrerenderTest() |
332 : ui_thread_(BrowserThread::UI, &message_loop_), | 330 : prerender_manager_(new UnitTestPrerenderManager(&profile_)), |
333 prerender_manager_(new UnitTestPrerenderManager(&profile_)), | |
334 prerender_link_manager_( | 331 prerender_link_manager_( |
335 new PrerenderLinkManager(prerender_manager_.get())), | 332 new PrerenderLinkManager(prerender_manager_.get())), |
336 last_prerender_id_(0), | 333 last_prerender_id_(0), |
337 field_trial_list_(nullptr) { | 334 field_trial_list_(nullptr) { |
338 prerender_manager()->SetIsLowEndDevice(false); | 335 prerender_manager()->SetIsLowEndDevice(false); |
339 | 336 |
340 // Enable omnibox prerendering. | 337 // Enable omnibox prerendering. |
341 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( | 338 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
342 switches::kPrerenderFromOmnibox, | 339 switches::kPrerenderFromOmnibox, |
343 switches::kPrerenderFromOmniboxSwitchValueEnabled); | 340 switches::kPrerenderFromOmniboxSwitchValueEnabled); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 std::map<std::string, std::string> actual_params; | 440 std::map<std::string, std::string> actual_params; |
444 ASSERT_TRUE(base::GetFieldTrialParamsByFeature(kNoStatePrefetchFeature, | 441 ASSERT_TRUE(base::GetFieldTrialParamsByFeature(kNoStatePrefetchFeature, |
445 &actual_params)); | 442 &actual_params)); |
446 ASSERT_EQ(params, actual_params); | 443 ASSERT_EQ(params, actual_params); |
447 } | 444 } |
448 | 445 |
449 const base::HistogramTester& histogram_tester() { return histogram_tester_; } | 446 const base::HistogramTester& histogram_tester() { return histogram_tester_; } |
450 | 447 |
451 private: | 448 private: |
452 // Needed to pass PrerenderManager's DCHECKs. | 449 // Needed to pass PrerenderManager's DCHECKs. |
453 base::MessageLoop message_loop_; | 450 content::TestBrowserThreadBundle test_browser_thread_bundle_; |
454 content::TestBrowserThread ui_thread_; | |
455 | 451 |
456 TestingProfile profile_; | 452 TestingProfile profile_; |
457 std::unique_ptr<UnitTestPrerenderManager> prerender_manager_; | 453 std::unique_ptr<UnitTestPrerenderManager> prerender_manager_; |
458 std::unique_ptr<PrerenderLinkManager> prerender_link_manager_; | 454 std::unique_ptr<PrerenderLinkManager> prerender_link_manager_; |
459 int last_prerender_id_; | 455 int last_prerender_id_; |
460 base::HistogramTester histogram_tester_; | 456 base::HistogramTester histogram_tester_; |
461 | 457 |
462 // An instance of base::FieldTrialList is necessary in order to initialize | 458 // An instance of base::FieldTrialList is necessary in order to initialize |
463 // global state. | 459 // global state. |
464 base::FieldTrialList field_trial_list_; | 460 base::FieldTrialList field_trial_list_; |
(...skipping 1689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2154 | 2150 |
2155 TestNetworkBytesChangedObserver observer; | 2151 TestNetworkBytesChangedObserver observer; |
2156 prerender_handle->SetObserver(&observer); | 2152 prerender_handle->SetObserver(&observer); |
2157 | 2153 |
2158 prerender_contents->AddNetworkBytes(12); | 2154 prerender_contents->AddNetworkBytes(12); |
2159 EXPECT_TRUE(observer.network_bytes_changed()); | 2155 EXPECT_TRUE(observer.network_bytes_changed()); |
2160 EXPECT_EQ(12, prerender_contents->network_bytes()); | 2156 EXPECT_EQ(12, prerender_contents->network_bytes()); |
2161 } | 2157 } |
2162 | 2158 |
2163 } // namespace prerender | 2159 } // namespace prerender |
OLD | NEW |