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