| 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/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/scoped_feature_list.h" |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 206 TEST_F(RecentTabHelperTest, Basic) { | 206 TEST_F(RecentTabHelperTest, Basic) { |
| 207 base::test::ScopedFeatureList scoped_feature_list; | 207 base::test::ScopedFeatureList scoped_feature_list; |
| 208 scoped_feature_list.Init(); | 208 scoped_feature_list.Init(); |
| 209 EXPECT_NE(nullptr, recent_tab_helper()); | 209 EXPECT_NE(nullptr, recent_tab_helper()); |
| 210 } | 210 } |
| 211 | 211 |
| 212 TEST_F(RecentTabHelperTest, SimpleCapture) { | 212 TEST_F(RecentTabHelperTest, SimpleCapture) { |
| 213 NavigateAndCommit(kTestPageUrl); | 213 NavigateAndCommit(kTestPageUrl); |
| 214 EXPECT_FALSE(recent_tab_helper()->is_page_ready_for_snapshot()); | 214 EXPECT_FALSE(recent_tab_helper()->is_page_ready_for_snapshot()); |
| 215 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 215 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 216 FastForwardSnapshotController(); |
| 216 RunUntilIdle(); | 217 RunUntilIdle(); |
| 217 EXPECT_TRUE(recent_tab_helper()->is_page_ready_for_snapshot()); | 218 EXPECT_TRUE(recent_tab_helper()->is_page_ready_for_snapshot()); |
| 218 EXPECT_TRUE(model()->is_loaded()); | 219 EXPECT_TRUE(model()->is_loaded()); |
| 219 GetAllPages(); | 220 GetAllPages(); |
| 220 EXPECT_EQ(1U, all_pages().size()); | 221 EXPECT_EQ(1U, all_pages().size()); |
| 221 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); | 222 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); |
| 222 } | 223 } |
| 223 | 224 |
| 224 TEST_F(RecentTabHelperTest, NoTabIdNoCapture) { | 225 TEST_F(RecentTabHelperTest, NoTabIdNoCapture) { |
| 225 // Create delegate that returns 'false' as TabId retrieval result. | 226 // Create delegate that returns 'false' as TabId retrieval result. |
| 226 recent_tab_helper()->SetDelegate(base::MakeUnique<TestDelegate>( | 227 recent_tab_helper()->SetDelegate(base::MakeUnique<TestDelegate>( |
| 227 this, task_runner(), kTabId, false)); | 228 this, task_runner(), kTabId, false)); |
| 228 | 229 |
| 229 NavigateAndCommit(kTestPageUrl); | 230 NavigateAndCommit(kTestPageUrl); |
| 230 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 231 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 232 FastForwardSnapshotController(); |
| 231 RunUntilIdle(); | 233 RunUntilIdle(); |
| 232 EXPECT_TRUE(model()->is_loaded()); | 234 EXPECT_TRUE(model()->is_loaded()); |
| 233 GetAllPages(); | 235 GetAllPages(); |
| 234 // No page should be captured. | 236 // No page should be captured. |
| 235 EXPECT_EQ(0U, all_pages().size()); | 237 EXPECT_EQ(0U, all_pages().size()); |
| 236 } | 238 } |
| 237 | 239 |
| 238 // Should end up with 1 page. | 240 // Should end up with 1 page. |
| 239 TEST_F(RecentTabHelperTest, TwoCapturesSameUrl) { | 241 TEST_F(RecentTabHelperTest, TwoCapturesSameUrl) { |
| 240 NavigateAndCommit(kTestPageUrl); | 242 NavigateAndCommit(kTestPageUrl); |
| 241 // Triggers snapshot after a time delay. | 243 // Triggers snapshot after a time delay. |
| 242 recent_tab_helper()->DocumentAvailableInMainFrame(); | 244 recent_tab_helper()->DocumentAvailableInMainFrame(); |
| 243 RunUntilIdle(); | 245 RunUntilIdle(); |
| 244 EXPECT_TRUE(model()->is_loaded()); | 246 EXPECT_TRUE(model()->is_loaded()); |
| 245 EXPECT_EQ(0U, model_changed_count()); | 247 EXPECT_EQ(0U, model_changed_count()); |
| 246 // Move the snapshot controller's time forward so it gets past timeouts. | 248 // Move the snapshot controller's time forward so it gets past timeouts. |
| 247 FastForwardSnapshotController(); | 249 FastForwardSnapshotController(); |
| 248 RunUntilIdle(); | 250 RunUntilIdle(); |
| 249 EXPECT_EQ(1U, model_changed_count()); | 251 EXPECT_EQ(1U, model_changed_count()); |
| 250 EXPECT_EQ(0U, model_removed_count()); | 252 EXPECT_EQ(0U, model_removed_count()); |
| 251 GetAllPages(); | 253 GetAllPages(); |
| 252 EXPECT_EQ(1U, all_pages().size()); | 254 EXPECT_EQ(1U, all_pages().size()); |
| 253 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); | 255 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); |
| 254 | 256 |
| 255 // Triggers snapshot immediately; | 257 // Triggers snapshot after a time delay. |
| 256 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 258 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 259 // Move the snapshot controller's time forward so it gets past timeouts. |
| 260 FastForwardSnapshotController(); |
| 257 RunUntilIdle(); | 261 RunUntilIdle(); |
| 258 EXPECT_EQ(2U, model_changed_count()); | 262 EXPECT_EQ(2U, model_changed_count()); |
| 259 EXPECT_EQ(1U, model_removed_count()); | 263 EXPECT_EQ(1U, model_removed_count()); |
| 260 // the same page should be simply overridden. | 264 // the same page should be simply overridden. |
| 261 GetAllPages(); | 265 GetAllPages(); |
| 262 EXPECT_EQ(1U, all_pages().size()); | 266 EXPECT_EQ(1U, all_pages().size()); |
| 263 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); | 267 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); |
| 264 } | 268 } |
| 265 | 269 |
| 266 // Should end up with 1 page. | 270 // Should end up with 1 page. |
| 267 TEST_F(RecentTabHelperTest, TwoCapturesDifferentUrls) { | 271 TEST_F(RecentTabHelperTest, TwoCapturesDifferentUrls) { |
| 268 NavigateAndCommit(kTestPageUrl); | 272 NavigateAndCommit(kTestPageUrl); |
| 269 // Triggers snapshot after a time delay. | 273 // Triggers snapshot after a time delay. |
| 270 recent_tab_helper()->DocumentAvailableInMainFrame(); | 274 recent_tab_helper()->DocumentAvailableInMainFrame(); |
| 271 RunUntilIdle(); | 275 RunUntilIdle(); |
| 272 EXPECT_TRUE(model()->is_loaded()); | 276 EXPECT_TRUE(model()->is_loaded()); |
| 273 EXPECT_EQ(0U, model_changed_count()); | 277 EXPECT_EQ(0U, model_changed_count()); |
| 274 // Move the snapshot controller's time forward so it gets past timeouts. | 278 // Move the snapshot controller's time forward so it gets past timeouts. |
| 275 FastForwardSnapshotController(); | 279 FastForwardSnapshotController(); |
| 276 RunUntilIdle(); | 280 RunUntilIdle(); |
| 277 EXPECT_EQ(1U, model_changed_count()); | 281 EXPECT_EQ(1U, model_changed_count()); |
| 278 EXPECT_EQ(0U, model_removed_count()); | 282 EXPECT_EQ(0U, model_removed_count()); |
| 279 GetAllPages(); | 283 GetAllPages(); |
| 280 EXPECT_EQ(1U, all_pages().size()); | 284 EXPECT_EQ(1U, all_pages().size()); |
| 281 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); | 285 EXPECT_EQ(kTestPageUrl, all_pages()[0].url); |
| 282 | 286 |
| 283 NavigateAndCommit(kTestPageUrlOther); | 287 NavigateAndCommit(kTestPageUrlOther); |
| 284 // Triggers snapshot immediately; | 288 // Triggers snapshot after a time delay. |
| 285 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 289 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 290 // Move the snapshot controller's time forward so it gets past timeouts. |
| 291 FastForwardSnapshotController(); |
| 286 RunUntilIdle(); | 292 RunUntilIdle(); |
| 287 EXPECT_EQ(2U, model_changed_count()); | 293 EXPECT_EQ(2U, model_changed_count()); |
| 288 EXPECT_EQ(1U, model_removed_count()); | 294 EXPECT_EQ(1U, model_removed_count()); |
| 289 // the same page should be simply overridden. | 295 // the same page should be simply overridden. |
| 290 GetAllPages(); | 296 GetAllPages(); |
| 291 EXPECT_EQ(1U, all_pages().size()); | 297 EXPECT_EQ(1U, all_pages().size()); |
| 292 EXPECT_EQ(kTestPageUrlOther, all_pages()[0].url); | 298 EXPECT_EQ(kTestPageUrlOther, all_pages()[0].url); |
| 293 } | 299 } |
| 294 | 300 |
| 295 TEST_F(RecentTabHelperTest, NoCaptureOnErrorPage) { | 301 TEST_F(RecentTabHelperTest, NoCaptureOnErrorPage) { |
| 296 FailLoad(kTestPageUrl); | 302 FailLoad(kTestPageUrl); |
| 297 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 303 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 304 FastForwardSnapshotController(); |
| 298 RunUntilIdle(); | 305 RunUntilIdle(); |
| 299 EXPECT_TRUE(model()->is_loaded()); | 306 EXPECT_TRUE(model()->is_loaded()); |
| 300 GetAllPages(); | 307 GetAllPages(); |
| 301 EXPECT_EQ(0U, all_pages().size()); | 308 EXPECT_EQ(0U, all_pages().size()); |
| 302 } | 309 } |
| 303 | 310 |
| 304 TEST_F(RecentTabHelperTest, FeatureNotEnabled) { | 311 TEST_F(RecentTabHelperTest, FeatureNotEnabled) { |
| 305 base::test::ScopedFeatureList scoped_feature_list; | 312 base::test::ScopedFeatureList scoped_feature_list; |
| 306 scoped_feature_list.Init(); | 313 scoped_feature_list.Init(); |
| 307 NavigateAndCommit(kTestPageUrl); | 314 NavigateAndCommit(kTestPageUrl); |
| 308 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); | 315 recent_tab_helper()->DocumentOnLoadCompletedInMainFrame(); |
| 316 FastForwardSnapshotController(); |
| 309 RunUntilIdle(); | 317 RunUntilIdle(); |
| 310 EXPECT_TRUE(model()->is_loaded()); | 318 EXPECT_TRUE(model()->is_loaded()); |
| 311 GetAllPages(); | 319 GetAllPages(); |
| 312 // No page should be captured. | 320 // No page should be captured. |
| 313 EXPECT_EQ(0U, all_pages().size()); | 321 EXPECT_EQ(0U, all_pages().size()); |
| 314 } | 322 } |
| 315 | 323 |
| 316 } // namespace offline_pages | 324 } // namespace offline_pages |
| OLD | NEW |