OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "chrome/browser/android/offline_pages/prerender_adapter.h" | 5 #include "chrome/browser/android/offline_pages/prerender_adapter.h" |
6 | 6 |
7 #include "base/sys_info.h" | 7 #include "base/sys_info.h" |
8 #include "chrome/browser/prerender/prerender_manager_factory.h" | 8 #include "chrome/browser/prerender/prerender_manager_factory.h" |
9 #include "chrome/test/base/testing_profile.h" | 9 #include "chrome/test/base/testing_profile.h" |
10 #include "content/public/browser/browser_thread.h" | 10 #include "content/public/browser/browser_thread.h" |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 class PrerenderAdapterTest : public testing::Test, | 106 class PrerenderAdapterTest : public testing::Test, |
107 public PrerenderAdapter::Observer { | 107 public PrerenderAdapter::Observer { |
108 public: | 108 public: |
109 PrerenderAdapterTest(); | 109 PrerenderAdapterTest(); |
110 ~PrerenderAdapterTest() override; | 110 ~PrerenderAdapterTest() override; |
111 | 111 |
112 // PrerenderAdapter::Observer implementation: | 112 // PrerenderAdapter::Observer implementation: |
113 void OnPrerenderStopLoading() override; | 113 void OnPrerenderStopLoading() override; |
114 void OnPrerenderDomContentLoaded() override; | 114 void OnPrerenderDomContentLoaded() override; |
115 void OnPrerenderStop() override; | 115 void OnPrerenderStop() override; |
| 116 void OnPrerenderNetworkBytesChanged(int64_t bytes) override; |
116 | 117 |
117 void SetUp() override; | 118 void SetUp() override; |
118 | 119 |
119 // Returns the PrerenderLoader to test. | 120 // Returns the PrerenderLoader to test. |
120 PrerenderAdapter* adapter() const { return adapter_.get(); } | 121 PrerenderAdapter* adapter() const { return adapter_.get(); } |
121 StubPrerenderContentsFactory* prerender_contents_factory() { | 122 StubPrerenderContentsFactory* prerender_contents_factory() { |
122 return prerender_contents_factory_; | 123 return prerender_contents_factory_; |
123 } | 124 } |
124 Profile* profile() { return &profile_; } | 125 Profile* profile() { return &profile_; } |
125 PrerenderManager* prerender_manager() { return prerender_manager_; } | 126 PrerenderManager* prerender_manager() { return prerender_manager_; } |
126 bool observer_stop_loading_called() const { | 127 bool observer_stop_loading_called() const { |
127 return observer_stop_loading_called_; | 128 return observer_stop_loading_called_; |
128 } | 129 } |
129 bool observer_dom_content_loaded_called() const { | 130 bool observer_dom_content_loaded_called() const { |
130 return observer_dom_content_loaded_called_; | 131 return observer_dom_content_loaded_called_; |
131 } | 132 } |
132 bool observer_stop_called() const { return observer_stop_called_; } | 133 bool observer_stop_called() const { return observer_stop_called_; } |
| 134 int64_t observer_network_bytes_changed() const { |
| 135 return observer_network_bytes_changed_; |
| 136 } |
133 | 137 |
134 private: | 138 private: |
135 content::TestBrowserThreadBundle thread_bundle_; | 139 content::TestBrowserThreadBundle thread_bundle_; |
136 TestingProfile profile_; | 140 TestingProfile profile_; |
137 std::unique_ptr<PrerenderAdapter> adapter_; | 141 std::unique_ptr<PrerenderAdapter> adapter_; |
138 StubPrerenderContentsFactory* prerender_contents_factory_; | 142 StubPrerenderContentsFactory* prerender_contents_factory_; |
139 PrerenderManager* prerender_manager_; | 143 PrerenderManager* prerender_manager_; |
140 bool observer_stop_loading_called_; | 144 bool observer_stop_loading_called_; |
141 bool observer_dom_content_loaded_called_; | 145 bool observer_dom_content_loaded_called_; |
142 bool observer_stop_called_; | 146 bool observer_stop_called_; |
| 147 int64_t observer_network_bytes_changed_; |
143 | 148 |
144 DISALLOW_COPY_AND_ASSIGN(PrerenderAdapterTest); | 149 DISALLOW_COPY_AND_ASSIGN(PrerenderAdapterTest); |
145 }; | 150 }; |
146 | 151 |
147 PrerenderAdapterTest::PrerenderAdapterTest() | 152 PrerenderAdapterTest::PrerenderAdapterTest() |
148 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), | 153 : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), |
149 prerender_manager_(nullptr), | 154 prerender_manager_(nullptr), |
150 observer_stop_loading_called_(false), | 155 observer_stop_loading_called_(false), |
151 observer_dom_content_loaded_called_(false), | 156 observer_dom_content_loaded_called_(false), |
152 observer_stop_called_(false) {} | 157 observer_stop_called_(false), |
| 158 observer_network_bytes_changed_(0) {} |
153 | 159 |
154 PrerenderAdapterTest::~PrerenderAdapterTest() { | 160 PrerenderAdapterTest::~PrerenderAdapterTest() { |
155 if (prerender_manager_) | 161 if (prerender_manager_) |
156 prerender_manager_->Shutdown(); | 162 prerender_manager_->Shutdown(); |
157 } | 163 } |
158 | 164 |
159 void PrerenderAdapterTest::OnPrerenderStopLoading() { | 165 void PrerenderAdapterTest::OnPrerenderStopLoading() { |
160 observer_stop_loading_called_ = true; | 166 observer_stop_loading_called_ = true; |
161 } | 167 } |
162 | 168 |
163 void PrerenderAdapterTest::OnPrerenderDomContentLoaded() { | 169 void PrerenderAdapterTest::OnPrerenderDomContentLoaded() { |
164 observer_dom_content_loaded_called_ = true; | 170 observer_dom_content_loaded_called_ = true; |
165 } | 171 } |
166 | 172 |
167 void PrerenderAdapterTest::OnPrerenderStop() { | 173 void PrerenderAdapterTest::OnPrerenderStop() { |
168 observer_stop_called_ = true; | 174 observer_stop_called_ = true; |
169 } | 175 } |
170 | 176 |
| 177 void PrerenderAdapterTest::OnPrerenderNetworkBytesChanged(int64_t bytes) { |
| 178 observer_network_bytes_changed_ = bytes; |
| 179 } |
| 180 |
171 void PrerenderAdapterTest::SetUp() { | 181 void PrerenderAdapterTest::SetUp() { |
172 if (base::SysInfo::IsLowEndDevice()) | 182 if (base::SysInfo::IsLowEndDevice()) |
173 return; | 183 return; |
174 adapter_.reset(new PrerenderAdapter(this)); | 184 adapter_.reset(new PrerenderAdapter(this)); |
175 prerender_contents_factory_ = new StubPrerenderContentsFactory(); | 185 prerender_contents_factory_ = new StubPrerenderContentsFactory(); |
176 prerender_manager_ = PrerenderManagerFactory::GetForBrowserContext(profile()); | 186 prerender_manager_ = PrerenderManagerFactory::GetForBrowserContext(profile()); |
177 if (prerender_manager_) { | 187 if (prerender_manager_) { |
178 prerender_manager_->SetPrerenderContentsFactoryForTest( | 188 prerender_manager_->SetPrerenderContentsFactoryForTest( |
179 prerender_contents_factory_); | 189 prerender_contents_factory_); |
180 prerender_manager_->SetMode(PrerenderManager::PRERENDER_MODE_ENABLED); | 190 prerender_manager_->SetMode(PrerenderManager::PRERENDER_MODE_ENABLED); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 EXPECT_TRUE(adapter()->IsActive()); | 232 EXPECT_TRUE(adapter()->IsActive()); |
223 EXPECT_FALSE(observer_stop_loading_called()); | 233 EXPECT_FALSE(observer_stop_loading_called()); |
224 EXPECT_FALSE(observer_dom_content_loaded_called()); | 234 EXPECT_FALSE(observer_dom_content_loaded_called()); |
225 EXPECT_FALSE(observer_stop_called()); | 235 EXPECT_FALSE(observer_stop_called()); |
226 | 236 |
227 // Exercise observer event call paths. | 237 // Exercise observer event call paths. |
228 prerender_contents_factory() | 238 prerender_contents_factory() |
229 ->last_prerender_contents() | 239 ->last_prerender_contents() |
230 ->ReportDomContentEvent(); | 240 ->ReportDomContentEvent(); |
231 EXPECT_TRUE(observer_dom_content_loaded_called()); | 241 EXPECT_TRUE(observer_dom_content_loaded_called()); |
| 242 |
| 243 // Expect byte count reported to Observer. |
| 244 prerender_contents_factory()->last_prerender_contents()->AddNetworkBytes(153); |
| 245 EXPECT_EQ(153LL, observer_network_bytes_changed()); |
| 246 |
232 prerender_contents_factory()->last_prerender_contents()->ReportOnLoadEvent(); | 247 prerender_contents_factory()->last_prerender_contents()->ReportOnLoadEvent(); |
233 EXPECT_TRUE(observer_stop_loading_called()); | 248 EXPECT_TRUE(observer_stop_loading_called()); |
234 prerender_contents_factory()->last_prerender_contents()->StopWithStatus( | 249 prerender_contents_factory()->last_prerender_contents()->StopWithStatus( |
235 FinalStatus::FINAL_STATUS_CANCELLED); | 250 FinalStatus::FINAL_STATUS_CANCELLED); |
236 EXPECT_TRUE(observer_stop_called()); | 251 EXPECT_TRUE(observer_stop_called()); |
237 EXPECT_EQ(FinalStatus::FINAL_STATUS_CANCELLED, adapter()->GetFinalStatus()); | 252 EXPECT_EQ(FinalStatus::FINAL_STATUS_CANCELLED, adapter()->GetFinalStatus()); |
238 | 253 |
239 // Exercise access methods even though no interesting values set beneath. | 254 // Exercise access methods even though no interesting values set beneath. |
240 EXPECT_EQ(nullptr, adapter()->GetWebContents()); | 255 EXPECT_EQ(nullptr, adapter()->GetWebContents()); |
241 | 256 |
242 adapter()->DestroyActive(); | 257 adapter()->DestroyActive(); |
243 EXPECT_FALSE(adapter()->IsActive()); | 258 EXPECT_FALSE(adapter()->IsActive()); |
244 } | 259 } |
245 | 260 |
246 } // namespace offline_pages | 261 } // namespace offline_pages |
OLD | NEW |