Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(692)

Side by Side Diff: chrome/browser/android/offline_pages/recent_tab_helper_unittest.cc

Issue 2278773002: Modify RecentTabHelper to be always-on and observe the loading of the pages. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/recent_tab_helper.h" 5 #include "chrome/browser/android/offline_pages/recent_tab_helper.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "base/strings/string16.h" 9 #include "base/strings/string16.h"
10 #include "base/test/scoped_feature_list.h"
10 #include "base/test/test_mock_time_task_runner.h" 11 #include "base/test/test_mock_time_task_runner.h"
11 #include "base/threading/thread_task_runner_handle.h" 12 #include "base/threading/thread_task_runner_handle.h"
12 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h" 13 #include "chrome/browser/android/offline_pages/offline_page_model_factory.h"
13 #include "chrome/browser/android/offline_pages/test_offline_page_model_builder.h " 14 #include "chrome/browser/android/offline_pages/test_offline_page_model_builder.h "
14 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 15 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
16 #include "components/offline_pages/offline_page_feature.h"
15 #include "components/offline_pages/offline_page_item.h" 17 #include "components/offline_pages/offline_page_item.h"
16 #include "components/offline_pages/offline_page_model.h" 18 #include "components/offline_pages/offline_page_model.h"
17 #include "components/offline_pages/offline_page_test_archiver.h" 19 #include "components/offline_pages/offline_page_test_archiver.h"
18 #include "content/public/browser/navigation_entry.h" 20 #include "content/public/browser/navigation_entry.h"
19 #include "content/public/browser/navigation_handle.h" 21 #include "content/public/browser/navigation_handle.h"
20 #include "content/public/browser/web_contents.h" 22 #include "content/public/browser/web_contents.h"
21 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
22 24
23 namespace offline_pages { 25 namespace offline_pages {
24 26
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 : recent_tab_helper_(nullptr), 145 : recent_tab_helper_(nullptr),
144 model_(nullptr), 146 model_(nullptr),
145 model_changed_count_(0), 147 model_changed_count_(0),
146 model_removed_count_(0), 148 model_removed_count_(0),
147 task_runner_(new base::TestMockTimeTaskRunner), 149 task_runner_(new base::TestMockTimeTaskRunner),
148 weak_ptr_factory_(this) { 150 weak_ptr_factory_(this) {
149 } 151 }
150 152
151 void RecentTabHelperTest::SetUp() { 153 void RecentTabHelperTest::SetUp() {
152 content::RenderViewHostTestHarness::SetUp(); 154 content::RenderViewHostTestHarness::SetUp();
155
153 // Sets up the factory for testing. 156 // Sets up the factory for testing.
154 OfflinePageModelFactory::GetInstance()->SetTestingFactoryAndUse( 157 OfflinePageModelFactory::GetInstance()->SetTestingFactoryAndUse(
155 browser_context(), BuildTestOfflinePageModel); 158 browser_context(), BuildTestOfflinePageModel);
156 RunUntilIdle(); 159 RunUntilIdle();
157 160
158 RecentTabHelper::CreateForWebContents(web_contents()); 161 RecentTabHelper::CreateForWebContents(web_contents());
159 recent_tab_helper_ = 162 recent_tab_helper_ =
160 RecentTabHelper::FromWebContents(web_contents()); 163 RecentTabHelper::FromWebContents(web_contents());
161 164
162 recent_tab_helper_->SetDelegate(base::MakeUnique<TestDelegate>( 165 recent_tab_helper_->SetDelegate(base::MakeUnique<TestDelegate>(
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 void RecentTabHelperTest::FastForwardSnapshotController() { 199 void RecentTabHelperTest::FastForwardSnapshotController() {
197 const size_t kLongDelayMs = 100*1000; 200 const size_t kLongDelayMs = 100*1000;
198 task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(kLongDelayMs)); 201 task_runner_->FastForwardBy(base::TimeDelta::FromMilliseconds(kLongDelayMs));
199 } 202 }
200 203
201 TEST_F(RecentTabHelperTest, Basic) { 204 TEST_F(RecentTabHelperTest, Basic) {
202 EXPECT_NE(nullptr, recent_tab_helper()); 205 EXPECT_NE(nullptr, recent_tab_helper());
203 } 206 }
204 207
205 TEST_F(RecentTabHelperTest, SimpleCapture) { 208 TEST_F(RecentTabHelperTest, SimpleCapture) {
209 base::test::ScopedFeatureList scoped_feature_list;
dewittj 2016/08/24 23:01:40 Can I suggest putting this as a member of RecentTa
Dmitry Titov 2016/08/25 00:36:09 Done.
210 scoped_feature_list.InitAndEnableFeature(kOffliningRecentPagesFeature);
211
206 NavigateAndCommit(kTestPageUrl); 212 NavigateAndCommit(kTestPageUrl);
dewittj 2016/08/24 23:01:39 may want to separate navigate / commit phases to b
Dmitry Titov 2016/08/25 00:36:09 Not sure I have a good idea what exact navigate/co
213 EXPECT_FALSE(recent_tab_helper()->is_page_ready_for_snapshot());
207 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); 214 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
208 RunUntilIdle(); 215 RunUntilIdle();
216 EXPECT_TRUE(recent_tab_helper()->is_page_ready_for_snapshot());
209 EXPECT_TRUE(model()->is_loaded()); 217 EXPECT_TRUE(model()->is_loaded());
210 GetAllPages(); 218 GetAllPages();
211 EXPECT_EQ(1U, all_pages().size()); 219 EXPECT_EQ(1U, all_pages().size());
212 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); 220 EXPECT_EQ(kTestPageUrl, all_pages()[0].url);
213 } 221 }
214 222
215 TEST_F(RecentTabHelperTest, NoTabIdNoCapture) { 223 TEST_F(RecentTabHelperTest, NoTabIdNoCapture) {
224 base::test::ScopedFeatureList scoped_feature_list;
225 scoped_feature_list.InitAndEnableFeature(kOffliningRecentPagesFeature);
226
216 // Create delegate that returns 'false' as TabId retrieval result. 227 // Create delegate that returns 'false' as TabId retrieval result.
217 recent_tab_helper()->SetDelegate(base::MakeUnique<TestDelegate>( 228 recent_tab_helper()->SetDelegate(base::MakeUnique<TestDelegate>(
218 this, task_runner(), kTabId, false)); 229 this, task_runner(), kTabId, false));
219 230
220 NavigateAndCommit(kTestPageUrl); 231 NavigateAndCommit(kTestPageUrl);
221 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); 232 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
222 RunUntilIdle(); 233 RunUntilIdle();
223 EXPECT_TRUE(model()->is_loaded()); 234 EXPECT_TRUE(model()->is_loaded());
224 GetAllPages(); 235 GetAllPages();
225 // No page shodul be captured. 236 // No page should be captured.
226 EXPECT_EQ(0U, all_pages().size()); 237 EXPECT_EQ(0U, all_pages().size());
227 } 238 }
228 239
229 // Should end up with 1 page. 240 // Should end up with 1 page.
230 TEST_F(RecentTabHelperTest, TwoCapturesSameUrl) { 241 TEST_F(RecentTabHelperTest, TwoCapturesSameUrl) {
242 base::test::ScopedFeatureList scoped_feature_list;
243 scoped_feature_list.InitAndEnableFeature(kOffliningRecentPagesFeature);
244
231 NavigateAndCommit(kTestPageUrl); 245 NavigateAndCommit(kTestPageUrl);
232 // Triggers snapshot after a time delay. 246 // Triggers snapshot after a time delay.
233 recent_tab_helper()->DocumentAvailableInMainFrame(); 247 recent_tab_helper()->DocumentAvailableInMainFrame();
234 RunUntilIdle(); 248 RunUntilIdle();
235 EXPECT_TRUE(model()->is_loaded()); 249 EXPECT_TRUE(model()->is_loaded());
236 EXPECT_EQ(0U, model_changed_count()); 250 EXPECT_EQ(0U, model_changed_count());
237 // Move the snapshot controller's time forward so it gets past timeouts. 251 // Move the snapshot controller's time forward so it gets past timeouts.
238 FastForwardSnapshotController(); 252 FastForwardSnapshotController();
239 RunUntilIdle(); 253 RunUntilIdle();
240 EXPECT_EQ(1U, model_changed_count()); 254 EXPECT_EQ(1U, model_changed_count());
241 EXPECT_EQ(0U, model_removed_count()); 255 EXPECT_EQ(0U, model_removed_count());
242 GetAllPages(); 256 GetAllPages();
243 EXPECT_EQ(1U, all_pages().size()); 257 EXPECT_EQ(1U, all_pages().size());
244 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); 258 EXPECT_EQ(kTestPageUrl, all_pages()[0].url);
245 259
246 // Triggers snapshot immediately; 260 // Triggers snapshot immediately;
247 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); 261 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
248 RunUntilIdle(); 262 RunUntilIdle();
249 EXPECT_EQ(2U, model_changed_count()); 263 EXPECT_EQ(2U, model_changed_count());
250 EXPECT_EQ(1U, model_removed_count()); 264 EXPECT_EQ(1U, model_removed_count());
251 // the same page should be simply overridden. 265 // the same page should be simply overridden.
252 GetAllPages(); 266 GetAllPages();
253 EXPECT_EQ(1U, all_pages().size()); 267 EXPECT_EQ(1U, all_pages().size());
254 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); 268 EXPECT_EQ(kTestPageUrl, all_pages()[0].url);
255 } 269 }
256 270
257 // Should end up with 1 page. 271 // Should end up with 1 page.
258 TEST_F(RecentTabHelperTest, TwoCapturesDifferentUrls) { 272 TEST_F(RecentTabHelperTest, TwoCapturesDifferentUrls) {
273 base::test::ScopedFeatureList scoped_feature_list;
274 scoped_feature_list.InitAndEnableFeature(kOffliningRecentPagesFeature);
275
259 NavigateAndCommit(kTestPageUrl); 276 NavigateAndCommit(kTestPageUrl);
260 // Triggers snapshot after a time delay. 277 // Triggers snapshot after a time delay.
261 recent_tab_helper()->DocumentAvailableInMainFrame(); 278 recent_tab_helper()->DocumentAvailableInMainFrame();
262 RunUntilIdle(); 279 RunUntilIdle();
263 EXPECT_TRUE(model()->is_loaded()); 280 EXPECT_TRUE(model()->is_loaded());
264 EXPECT_EQ(0U, model_changed_count()); 281 EXPECT_EQ(0U, model_changed_count());
265 // Move the snapshot controller's time forward so it gets past timeouts. 282 // Move the snapshot controller's time forward so it gets past timeouts.
266 FastForwardSnapshotController(); 283 FastForwardSnapshotController();
267 RunUntilIdle(); 284 RunUntilIdle();
268 EXPECT_EQ(1U, model_changed_count()); 285 EXPECT_EQ(1U, model_changed_count());
269 EXPECT_EQ(0U, model_removed_count()); 286 EXPECT_EQ(0U, model_removed_count());
270 GetAllPages(); 287 GetAllPages();
271 EXPECT_EQ(1U, all_pages().size()); 288 EXPECT_EQ(1U, all_pages().size());
272 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); 289 EXPECT_EQ(kTestPageUrl, all_pages()[0].url);
273 290
274 NavigateAndCommit(kTestPageUrlOther); 291 NavigateAndCommit(kTestPageUrlOther);
275 // Triggers snapshot immediately; 292 // Triggers snapshot immediately;
276 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); 293 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
277 RunUntilIdle(); 294 RunUntilIdle();
278 EXPECT_EQ(2U, model_changed_count()); 295 EXPECT_EQ(2U, model_changed_count());
279 EXPECT_EQ(1U, model_removed_count()); 296 EXPECT_EQ(1U, model_removed_count());
280 // the same page should be simply overridden. 297 // the same page should be simply overridden.
281 GetAllPages(); 298 GetAllPages();
282 EXPECT_EQ(1U, all_pages().size()); 299 EXPECT_EQ(1U, all_pages().size());
283 EXPECT_EQ(kTestPageUrlOther, all_pages()[0].url); 300 EXPECT_EQ(kTestPageUrlOther, all_pages()[0].url);
284 } 301 }
285 302
286 TEST_F(RecentTabHelperTest, NoCaptureOnErrorPage) { 303 TEST_F(RecentTabHelperTest, NoCaptureOnErrorPage) {
304 base::test::ScopedFeatureList scoped_feature_list;
305 scoped_feature_list.InitAndEnableFeature(kOffliningRecentPagesFeature);
306
287 FailLoad(kTestPageUrl); 307 FailLoad(kTestPageUrl);
288 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); 308 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
289 RunUntilIdle(); 309 RunUntilIdle();
290 EXPECT_TRUE(model()->is_loaded()); 310 EXPECT_TRUE(model()->is_loaded());
291 GetAllPages(); 311 GetAllPages();
292 EXPECT_EQ(0U, all_pages().size()); 312 EXPECT_EQ(0U, all_pages().size());
293 } 313 }
294 314
315 TEST_F(RecentTabHelperTest, FeatureNotEnabled) {
316 NavigateAndCommit(kTestPageUrl);
317 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame();
318 RunUntilIdle();
319 EXPECT_TRUE(model()->is_loaded());
320 GetAllPages();
321 // No page should be captured.
322 EXPECT_EQ(0U, all_pages().size());
323 }
324
295 } // namespace offline_pages 325 } // namespace offline_pages
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698