| 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/prerendering_offliner.h" | 5 #include "chrome/browser/android/offline_pages/prerendering_offliner.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 | 161 |
| 162 class PrerenderingOfflinerTest : public testing::Test { | 162 class PrerenderingOfflinerTest : public testing::Test { |
| 163 public: | 163 public: |
| 164 PrerenderingOfflinerTest(); | 164 PrerenderingOfflinerTest(); |
| 165 ~PrerenderingOfflinerTest() override; | 165 ~PrerenderingOfflinerTest() override; |
| 166 | 166 |
| 167 void SetUp() override; | 167 void SetUp() override; |
| 168 | 168 |
| 169 Profile* profile() { return &profile_; } | 169 Profile* profile() { return &profile_; } |
| 170 PrerenderingOffliner* offliner() const { return offliner_.get(); } | 170 PrerenderingOffliner* offliner() const { return offliner_.get(); } |
| 171 Offliner::CompletionCallback const callback() { | 171 Offliner::CompletionCallback const completion_callback() { |
| 172 return base::Bind(&PrerenderingOfflinerTest::OnCompletion, | 172 return base::Bind(&PrerenderingOfflinerTest::OnCompletion, |
| 173 base::Unretained(this)); | 173 base::Unretained(this)); |
| 174 } | 174 } |
| 175 Offliner::ProgressCallback const progress_callback() { |
| 176 return base::Bind(&PrerenderingOfflinerTest::OnProgress, |
| 177 base::Unretained(this)); |
| 178 } |
| 175 Offliner::CancelCallback const cancel_callback() { | 179 Offliner::CancelCallback const cancel_callback() { |
| 176 return base::Bind(&PrerenderingOfflinerTest::OnCancel, | 180 return base::Bind(&PrerenderingOfflinerTest::OnCancel, |
| 177 base::Unretained(this)); | 181 base::Unretained(this)); |
| 178 } | 182 } |
| 179 | 183 |
| 180 bool SaveInProgress() const { return model_->mock_saving(); } | 184 bool SaveInProgress() const { return model_->mock_saving(); } |
| 181 MockPrerenderingLoader* loader() { return loader_; } | 185 MockPrerenderingLoader* loader() { return loader_; } |
| 182 MockOfflinePageModel* model() { return model_; } | 186 MockOfflinePageModel* model() { return model_; } |
| 183 bool completion_callback_called() { return completion_callback_called_; } | 187 bool completion_callback_called() { return completion_callback_called_; } |
| 184 Offliner::RequestStatus request_status() { return request_status_; } | 188 Offliner::RequestStatus request_status() { return request_status_; } |
| 185 OfflinerPolicy* policy() { return policy_; } | 189 OfflinerPolicy* policy() { return policy_; } |
| 186 bool cancel_callback_called() { return cancel_callback_called_; } | 190 bool cancel_callback_called() { return cancel_callback_called_; } |
| 187 | 191 |
| 188 private: | 192 private: |
| 189 void OnCompletion(const SavePageRequest& request, | 193 void OnCompletion(const SavePageRequest& request, |
| 190 Offliner::RequestStatus status); | 194 Offliner::RequestStatus status); |
| 195 void OnProgress(const SavePageRequest& request, int64_t bytes); |
| 191 void OnCancel(int64_t offline_id); | 196 void OnCancel(int64_t offline_id); |
| 192 | 197 |
| 193 content::TestBrowserThreadBundle thread_bundle_; | 198 content::TestBrowserThreadBundle thread_bundle_; |
| 194 TestingProfile profile_; | 199 TestingProfile profile_; |
| 195 std::unique_ptr<PrerenderingOffliner> offliner_; | 200 std::unique_ptr<PrerenderingOffliner> offliner_; |
| 196 // Not owned. | 201 // Not owned. |
| 197 MockPrerenderingLoader* loader_; | 202 MockPrerenderingLoader* loader_; |
| 198 MockOfflinePageModel* model_; | 203 MockOfflinePageModel* model_; |
| 199 bool completion_callback_called_; | 204 bool completion_callback_called_; |
| 200 bool cancel_callback_called_; | 205 bool cancel_callback_called_; |
| (...skipping 21 matching lines...) Expand all Loading... |
| 222 offliner_->SetLoaderForTesting(std::move(mock_loader)); | 227 offliner_->SetLoaderForTesting(std::move(mock_loader)); |
| 223 } | 228 } |
| 224 | 229 |
| 225 void PrerenderingOfflinerTest::OnCompletion(const SavePageRequest& request, | 230 void PrerenderingOfflinerTest::OnCompletion(const SavePageRequest& request, |
| 226 Offliner::RequestStatus status) { | 231 Offliner::RequestStatus status) { |
| 227 DCHECK(!completion_callback_called_); // Expect single callback per request. | 232 DCHECK(!completion_callback_called_); // Expect single callback per request. |
| 228 completion_callback_called_ = true; | 233 completion_callback_called_ = true; |
| 229 request_status_ = status; | 234 request_status_ = status; |
| 230 } | 235 } |
| 231 | 236 |
| 237 void PrerenderingOfflinerTest::OnProgress(const SavePageRequest& request, |
| 238 int64_t bytes) {} |
| 239 |
| 232 void PrerenderingOfflinerTest::OnCancel(int64_t offline_id) { | 240 void PrerenderingOfflinerTest::OnCancel(int64_t offline_id) { |
| 233 DCHECK(!cancel_callback_called_); | 241 DCHECK(!cancel_callback_called_); |
| 234 cancel_callback_called_ = true; | 242 cancel_callback_called_ = true; |
| 235 } | 243 } |
| 236 | 244 |
| 237 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) { | 245 TEST_F(PrerenderingOfflinerTest, LoadAndSaveBadUrl) { |
| 238 base::Time creation_time = base::Time::Now(); | 246 base::Time creation_time = base::Time::Now(); |
| 239 SavePageRequest request( | 247 SavePageRequest request( |
| 240 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); | 248 kRequestId, kFileUrl, kClientId, creation_time, kUserRequested); |
| 241 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 249 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 250 progress_callback())); |
| 242 EXPECT_TRUE(loader()->IsIdle()); | 251 EXPECT_TRUE(loader()->IsIdle()); |
| 243 } | 252 } |
| 244 | 253 |
| 245 TEST_F(PrerenderingOfflinerTest, LoadAndSavePrerenderingDisabled) { | 254 TEST_F(PrerenderingOfflinerTest, LoadAndSavePrerenderingDisabled) { |
| 246 base::Time creation_time = base::Time::Now(); | 255 base::Time creation_time = base::Time::Now(); |
| 247 SavePageRequest request( | 256 SavePageRequest request( |
| 248 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 257 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 249 loader()->DisablePrerendering(); | 258 loader()->DisablePrerendering(); |
| 250 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 259 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 260 progress_callback())); |
| 251 EXPECT_TRUE(loader()->IsIdle()); | 261 EXPECT_TRUE(loader()->IsIdle()); |
| 252 } | 262 } |
| 253 | 263 |
| 254 TEST_F(PrerenderingOfflinerTest, | 264 TEST_F(PrerenderingOfflinerTest, |
| 255 LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { | 265 LoadAndSaveBlockThirdPartyCookiesForCustomTabs) { |
| 256 base::Time creation_time = base::Time::Now(); | 266 base::Time creation_time = base::Time::Now(); |
| 257 ClientId custom_tabs_client_id("custom_tabs", "88"); | 267 ClientId custom_tabs_client_id("custom_tabs", "88"); |
| 258 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 268 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
| 259 creation_time, kUserRequested); | 269 creation_time, kUserRequested); |
| 260 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); | 270 profile()->GetPrefs()->SetBoolean(prefs::kBlockThirdPartyCookies, true); |
| 261 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 271 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 272 progress_callback())); |
| 262 EXPECT_TRUE(loader()->IsIdle()); | 273 EXPECT_TRUE(loader()->IsIdle()); |
| 263 } | 274 } |
| 264 | 275 |
| 265 TEST_F(PrerenderingOfflinerTest, | 276 TEST_F(PrerenderingOfflinerTest, |
| 266 LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { | 277 LoadAndSaveBlockOnDisabledPrerendererForCustomTabs) { |
| 267 base::Time creation_time = base::Time::Now(); | 278 base::Time creation_time = base::Time::Now(); |
| 268 ClientId custom_tabs_client_id("custom_tabs", "88"); | 279 ClientId custom_tabs_client_id("custom_tabs", "88"); |
| 269 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, | 280 SavePageRequest request(kRequestId, kHttpUrl, custom_tabs_client_id, |
| 270 creation_time, kUserRequested); | 281 creation_time, kUserRequested); |
| 271 profile()->GetPrefs()->SetInteger( | 282 profile()->GetPrefs()->SetInteger( |
| 272 prefs::kNetworkPredictionOptions, | 283 prefs::kNetworkPredictionOptions, |
| 273 chrome_browser_net::NETWORK_PREDICTION_NEVER); | 284 chrome_browser_net::NETWORK_PREDICTION_NEVER); |
| 274 EXPECT_FALSE(offliner()->LoadAndSave(request, callback())); | 285 EXPECT_FALSE(offliner()->LoadAndSave(request, completion_callback(), |
| 286 progress_callback())); |
| 275 EXPECT_TRUE(loader()->IsIdle()); | 287 EXPECT_TRUE(loader()->IsIdle()); |
| 276 } | 288 } |
| 277 | 289 |
| 278 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { | 290 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadStartedButFails) { |
| 279 base::Time creation_time = base::Time::Now(); | 291 base::Time creation_time = base::Time::Now(); |
| 280 SavePageRequest request( | 292 SavePageRequest request( |
| 281 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 293 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 282 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 294 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 295 progress_callback())); |
| 283 EXPECT_FALSE(loader()->IsIdle()); | 296 EXPECT_FALSE(loader()->IsIdle()); |
| 284 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 297 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 285 | 298 |
| 286 loader()->CompleteLoadingAsFailed(); | 299 loader()->CompleteLoadingAsFailed(); |
| 287 PumpLoop(); | 300 PumpLoop(); |
| 288 EXPECT_TRUE(completion_callback_called()); | 301 EXPECT_TRUE(completion_callback_called()); |
| 289 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); | 302 EXPECT_EQ(Offliner::RequestStatus::LOADING_FAILED, request_status()); |
| 290 EXPECT_TRUE(loader()->IsIdle()); | 303 EXPECT_TRUE(loader()->IsIdle()); |
| 291 EXPECT_FALSE(SaveInProgress()); | 304 EXPECT_FALSE(SaveInProgress()); |
| 292 } | 305 } |
| 293 | 306 |
| 294 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { | 307 TEST_F(PrerenderingOfflinerTest, CancelWhenLoading) { |
| 295 base::Time creation_time = base::Time::Now(); | 308 base::Time creation_time = base::Time::Now(); |
| 296 SavePageRequest request( | 309 SavePageRequest request( |
| 297 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 310 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 298 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 311 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 312 progress_callback())); |
| 299 EXPECT_FALSE(loader()->IsIdle()); | 313 EXPECT_FALSE(loader()->IsIdle()); |
| 300 | 314 |
| 301 offliner()->Cancel(cancel_callback()); | 315 offliner()->Cancel(cancel_callback()); |
| 302 PumpLoop(); | 316 PumpLoop(); |
| 303 EXPECT_TRUE(cancel_callback_called()); | 317 EXPECT_TRUE(cancel_callback_called()); |
| 304 EXPECT_TRUE(loader()->IsIdle()); | 318 EXPECT_TRUE(loader()->IsIdle()); |
| 305 } | 319 } |
| 306 | 320 |
| 307 TEST_F(PrerenderingOfflinerTest, CancelWhenLoaded) { | 321 TEST_F(PrerenderingOfflinerTest, CancelWhenLoaded) { |
| 308 base::Time creation_time = base::Time::Now(); | 322 base::Time creation_time = base::Time::Now(); |
| 309 SavePageRequest request( | 323 SavePageRequest request( |
| 310 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 324 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 311 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 325 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 326 progress_callback())); |
| 312 EXPECT_FALSE(loader()->IsIdle()); | 327 EXPECT_FALSE(loader()->IsIdle()); |
| 313 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 328 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 314 | 329 |
| 315 loader()->CompleteLoadingAsLoaded(); | 330 loader()->CompleteLoadingAsLoaded(); |
| 316 PumpLoop(); | 331 PumpLoop(); |
| 317 EXPECT_FALSE(completion_callback_called()); | 332 EXPECT_FALSE(completion_callback_called()); |
| 318 EXPECT_TRUE(loader()->IsLoaded()); | 333 EXPECT_TRUE(loader()->IsLoaded()); |
| 319 EXPECT_TRUE(SaveInProgress()); | 334 EXPECT_TRUE(SaveInProgress()); |
| 320 | 335 |
| 321 offliner()->Cancel(cancel_callback()); | 336 offliner()->Cancel(cancel_callback()); |
| 322 PumpLoop(); | 337 PumpLoop(); |
| 323 EXPECT_FALSE(completion_callback_called()); | 338 EXPECT_FALSE(completion_callback_called()); |
| 324 EXPECT_TRUE(cancel_callback_called()); | 339 EXPECT_TRUE(cancel_callback_called()); |
| 325 EXPECT_FALSE(loader()->IsLoaded()); | 340 EXPECT_FALSE(loader()->IsLoaded()); |
| 326 // Note: save still in progress since it does not support canceling. | 341 // Note: save still in progress since it does not support canceling. |
| 327 EXPECT_TRUE(SaveInProgress()); | 342 EXPECT_TRUE(SaveInProgress()); |
| 328 | 343 |
| 329 // Subsequent save callback causes no harm (no crash and no callback). | 344 // Subsequent save callback causes no harm (no crash and no callback). |
| 330 model()->CompleteSavingAsArchiveCreationFailed(); | 345 model()->CompleteSavingAsArchiveCreationFailed(); |
| 331 PumpLoop(); | 346 PumpLoop(); |
| 332 EXPECT_FALSE(completion_callback_called()); | 347 EXPECT_FALSE(completion_callback_called()); |
| 333 EXPECT_TRUE(loader()->IsIdle()); | 348 EXPECT_TRUE(loader()->IsIdle()); |
| 334 EXPECT_FALSE(SaveInProgress()); | 349 EXPECT_FALSE(SaveInProgress()); |
| 335 } | 350 } |
| 336 | 351 |
| 337 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButSaveFails) { | 352 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButSaveFails) { |
| 338 base::Time creation_time = base::Time::Now(); | 353 base::Time creation_time = base::Time::Now(); |
| 339 SavePageRequest request( | 354 SavePageRequest request( |
| 340 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 355 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 341 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 356 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 357 progress_callback())); |
| 342 EXPECT_FALSE(loader()->IsIdle()); | 358 EXPECT_FALSE(loader()->IsIdle()); |
| 343 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 359 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 344 | 360 |
| 345 loader()->CompleteLoadingAsLoaded(); | 361 loader()->CompleteLoadingAsLoaded(); |
| 346 PumpLoop(); | 362 PumpLoop(); |
| 347 EXPECT_FALSE(completion_callback_called()); | 363 EXPECT_FALSE(completion_callback_called()); |
| 348 EXPECT_TRUE(loader()->IsLoaded()); | 364 EXPECT_TRUE(loader()->IsLoaded()); |
| 349 EXPECT_TRUE(SaveInProgress()); | 365 EXPECT_TRUE(SaveInProgress()); |
| 350 | 366 |
| 351 model()->CompleteSavingAsArchiveCreationFailed(); | 367 model()->CompleteSavingAsArchiveCreationFailed(); |
| 352 PumpLoop(); | 368 PumpLoop(); |
| 353 EXPECT_TRUE(completion_callback_called()); | 369 EXPECT_TRUE(completion_callback_called()); |
| 354 EXPECT_EQ(Offliner::RequestStatus::SAVE_FAILED, request_status()); | 370 EXPECT_EQ(Offliner::RequestStatus::SAVE_FAILED, request_status()); |
| 355 EXPECT_FALSE(loader()->IsLoaded()); | 371 EXPECT_FALSE(loader()->IsLoaded()); |
| 356 EXPECT_FALSE(SaveInProgress()); | 372 EXPECT_FALSE(SaveInProgress()); |
| 357 } | 373 } |
| 358 | 374 |
| 359 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { | 375 TEST_F(PrerenderingOfflinerTest, LoadAndSaveSuccessful) { |
| 360 base::Time creation_time = base::Time::Now(); | 376 base::Time creation_time = base::Time::Now(); |
| 361 SavePageRequest request( | 377 SavePageRequest request( |
| 362 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 378 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 363 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 379 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 380 progress_callback())); |
| 364 EXPECT_FALSE(loader()->IsIdle()); | 381 EXPECT_FALSE(loader()->IsIdle()); |
| 365 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 382 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 366 | 383 |
| 367 loader()->CompleteLoadingAsLoaded(); | 384 loader()->CompleteLoadingAsLoaded(); |
| 368 PumpLoop(); | 385 PumpLoop(); |
| 369 EXPECT_FALSE(completion_callback_called()); | 386 EXPECT_FALSE(completion_callback_called()); |
| 370 EXPECT_TRUE(loader()->IsLoaded()); | 387 EXPECT_TRUE(loader()->IsLoaded()); |
| 371 EXPECT_TRUE(SaveInProgress()); | 388 EXPECT_TRUE(SaveInProgress()); |
| 372 | 389 |
| 373 model()->CompleteSavingAsSuccess(); | 390 model()->CompleteSavingAsSuccess(); |
| 374 PumpLoop(); | 391 PumpLoop(); |
| 375 EXPECT_TRUE(completion_callback_called()); | 392 EXPECT_TRUE(completion_callback_called()); |
| 376 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); | 393 EXPECT_EQ(Offliner::RequestStatus::SAVED, request_status()); |
| 377 EXPECT_FALSE(loader()->IsLoaded()); | 394 EXPECT_FALSE(loader()->IsLoaded()); |
| 378 EXPECT_FALSE(SaveInProgress()); | 395 EXPECT_FALSE(SaveInProgress()); |
| 379 } | 396 } |
| 380 | 397 |
| 381 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { | 398 TEST_F(PrerenderingOfflinerTest, LoadAndSaveLoadedButThenCanceledFromLoader) { |
| 382 base::Time creation_time = base::Time::Now(); | 399 base::Time creation_time = base::Time::Now(); |
| 383 SavePageRequest request( | 400 SavePageRequest request( |
| 384 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 401 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 385 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 402 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 403 progress_callback())); |
| 386 EXPECT_FALSE(loader()->IsIdle()); | 404 EXPECT_FALSE(loader()->IsIdle()); |
| 387 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); | 405 EXPECT_EQ(Offliner::RequestStatus::UNKNOWN, request_status()); |
| 388 | 406 |
| 389 loader()->CompleteLoadingAsLoaded(); | 407 loader()->CompleteLoadingAsLoaded(); |
| 390 PumpLoop(); | 408 PumpLoop(); |
| 391 EXPECT_FALSE(completion_callback_called()); | 409 EXPECT_FALSE(completion_callback_called()); |
| 392 EXPECT_TRUE(loader()->IsLoaded()); | 410 EXPECT_TRUE(loader()->IsLoaded()); |
| 393 EXPECT_TRUE(SaveInProgress()); | 411 EXPECT_TRUE(SaveInProgress()); |
| 394 | 412 |
| 395 loader()->CompleteLoadingAsCanceled(); | 413 loader()->CompleteLoadingAsCanceled(); |
| 396 PumpLoop(); | 414 PumpLoop(); |
| 397 EXPECT_TRUE(completion_callback_called()); | 415 EXPECT_TRUE(completion_callback_called()); |
| 398 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); | 416 EXPECT_EQ(Offliner::RequestStatus::LOADING_CANCELED, request_status()); |
| 399 EXPECT_FALSE(loader()->IsLoaded()); | 417 EXPECT_FALSE(loader()->IsLoaded()); |
| 400 // Note: save still in progress since it does not support canceling. | 418 // Note: save still in progress since it does not support canceling. |
| 401 EXPECT_TRUE(SaveInProgress()); | 419 EXPECT_TRUE(SaveInProgress()); |
| 402 } | 420 } |
| 403 | 421 |
| 404 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionCancelsOnLowEndDevice) { | 422 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionCancelsOnLowEndDevice) { |
| 405 offliner()->SetLowEndDeviceForTesting(true); | 423 offliner()->SetLowEndDeviceForTesting(true); |
| 406 | 424 |
| 407 base::Time creation_time = base::Time::Now(); | 425 base::Time creation_time = base::Time::Now(); |
| 408 SavePageRequest request( | 426 SavePageRequest request( |
| 409 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 427 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 410 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 428 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 429 progress_callback())); |
| 411 EXPECT_FALSE(loader()->IsIdle()); | 430 EXPECT_FALSE(loader()->IsIdle()); |
| 412 | 431 |
| 413 offliner()->SetApplicationStateForTesting( | 432 offliner()->SetApplicationStateForTesting( |
| 414 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 433 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
| 415 | 434 |
| 416 // Loading canceled on low-end device. | 435 // Loading canceled on low-end device. |
| 417 EXPECT_TRUE(loader()->IsIdle()); | 436 EXPECT_TRUE(loader()->IsIdle()); |
| 418 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); | 437 EXPECT_EQ(Offliner::RequestStatus::FOREGROUND_CANCELED, request_status()); |
| 419 } | 438 } |
| 420 | 439 |
| 421 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) { | 440 TEST_F(PrerenderingOfflinerTest, ForegroundTransitionIgnoredOnHighEndDevice) { |
| 422 offliner()->SetLowEndDeviceForTesting(false); | 441 offliner()->SetLowEndDeviceForTesting(false); |
| 423 | 442 |
| 424 base::Time creation_time = base::Time::Now(); | 443 base::Time creation_time = base::Time::Now(); |
| 425 SavePageRequest request( | 444 SavePageRequest request( |
| 426 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); | 445 kRequestId, kHttpUrl, kClientId, creation_time, kUserRequested); |
| 427 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 446 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 447 progress_callback())); |
| 428 EXPECT_FALSE(loader()->IsIdle()); | 448 EXPECT_FALSE(loader()->IsIdle()); |
| 429 | 449 |
| 430 offliner()->SetApplicationStateForTesting( | 450 offliner()->SetApplicationStateForTesting( |
| 431 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); | 451 base::android::APPLICATION_STATE_HAS_RUNNING_ACTIVITIES); |
| 432 | 452 |
| 433 // Loader still loading since not low-end device. | 453 // Loader still loading since not low-end device. |
| 434 EXPECT_FALSE(loader()->IsIdle()); | 454 EXPECT_FALSE(loader()->IsIdle()); |
| 435 } | 455 } |
| 436 | 456 |
| 437 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { | 457 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndCompletedTriesMet) { |
| 438 offliner()->SetLowEndDeviceForTesting(false); | 458 offliner()->SetLowEndDeviceForTesting(false); |
| 439 | 459 |
| 440 base::Time creation_time = base::Time::Now(); | 460 base::Time creation_time = base::Time::Now(); |
| 441 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 461 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 442 kUserRequested); | 462 kUserRequested); |
| 443 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 463 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
| 444 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 464 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 465 progress_callback())); |
| 445 loader()->set_is_lowbar_met(true); | 466 loader()->set_is_lowbar_met(true); |
| 446 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 467 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
| 447 EXPECT_TRUE(loader()->start_snapshot_called()); | 468 EXPECT_TRUE(loader()->start_snapshot_called()); |
| 448 } | 469 } |
| 449 | 470 |
| 450 TEST_F(PrerenderingOfflinerTest, | 471 TEST_F(PrerenderingOfflinerTest, |
| 451 HandleTimeoutWithLowbarAndCompletedTriesMetLowEndDevice) { | 472 HandleTimeoutWithLowbarAndCompletedTriesMetLowEndDevice) { |
| 452 offliner()->SetLowEndDeviceForTesting(true); | 473 offliner()->SetLowEndDeviceForTesting(true); |
| 453 | 474 |
| 454 base::Time creation_time = base::Time::Now(); | 475 base::Time creation_time = base::Time::Now(); |
| 455 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 476 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 456 kUserRequested); | 477 kUserRequested); |
| 457 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 478 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
| 458 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 479 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 480 progress_callback())); |
| 459 loader()->set_is_lowbar_met(true); | 481 loader()->set_is_lowbar_met(true); |
| 460 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 482 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
| 461 EXPECT_TRUE(loader()->start_snapshot_called()); | 483 EXPECT_TRUE(loader()->start_snapshot_called()); |
| 462 } | 484 } |
| 463 | 485 |
| 464 TEST_F(PrerenderingOfflinerTest, | 486 TEST_F(PrerenderingOfflinerTest, |
| 465 HandleTimeoutCompletedTriesMetWithoutLowbarMet) { | 487 HandleTimeoutCompletedTriesMetWithoutLowbarMet) { |
| 466 offliner()->SetLowEndDeviceForTesting(false); | 488 offliner()->SetLowEndDeviceForTesting(false); |
| 467 | 489 |
| 468 base::Time creation_time = base::Time::Now(); | 490 base::Time creation_time = base::Time::Now(); |
| 469 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 491 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 470 kUserRequested); | 492 kUserRequested); |
| 471 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); | 493 request.set_completed_attempt_count(policy()->GetMaxCompletedTries() - 1); |
| 472 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 494 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 495 progress_callback())); |
| 473 loader()->set_is_lowbar_met(false); | 496 loader()->set_is_lowbar_met(false); |
| 474 EXPECT_FALSE(offliner()->HandleTimeout(request)); | 497 EXPECT_FALSE(offliner()->HandleTimeout(request)); |
| 475 EXPECT_FALSE(loader()->start_snapshot_called()); | 498 EXPECT_FALSE(loader()->start_snapshot_called()); |
| 476 } | 499 } |
| 477 | 500 |
| 478 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { | 501 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithLowbarAndStartedTriesMet) { |
| 479 offliner()->SetLowEndDeviceForTesting(false); | 502 offliner()->SetLowEndDeviceForTesting(false); |
| 480 | 503 |
| 481 base::Time creation_time = base::Time::Now(); | 504 base::Time creation_time = base::Time::Now(); |
| 482 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 505 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 483 kUserRequested); | 506 kUserRequested); |
| 484 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); | 507 request.set_started_attempt_count(policy()->GetMaxStartedTries() - 1); |
| 485 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 508 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 509 progress_callback())); |
| 486 loader()->set_is_lowbar_met(true); | 510 loader()->set_is_lowbar_met(true); |
| 487 EXPECT_TRUE(offliner()->HandleTimeout(request)); | 511 EXPECT_TRUE(offliner()->HandleTimeout(request)); |
| 488 EXPECT_TRUE(loader()->start_snapshot_called()); | 512 EXPECT_TRUE(loader()->start_snapshot_called()); |
| 489 } | 513 } |
| 490 | 514 |
| 491 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) { | 515 TEST_F(PrerenderingOfflinerTest, HandleTimeoutWithOnlyLowbarMet) { |
| 492 offliner()->SetLowEndDeviceForTesting(false); | 516 offliner()->SetLowEndDeviceForTesting(false); |
| 493 | 517 |
| 494 base::Time creation_time = base::Time::Now(); | 518 base::Time creation_time = base::Time::Now(); |
| 495 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, | 519 SavePageRequest request(kRequestId, kHttpUrl, kClientId, creation_time, |
| 496 kUserRequested); | 520 kUserRequested); |
| 497 EXPECT_TRUE(offliner()->LoadAndSave(request, callback())); | 521 EXPECT_TRUE(offliner()->LoadAndSave(request, completion_callback(), |
| 522 progress_callback())); |
| 498 loader()->set_is_lowbar_met(true); | 523 loader()->set_is_lowbar_met(true); |
| 499 EXPECT_FALSE(offliner()->HandleTimeout(request)); | 524 EXPECT_FALSE(offliner()->HandleTimeout(request)); |
| 500 EXPECT_FALSE(loader()->start_snapshot_called()); | 525 EXPECT_FALSE(loader()->start_snapshot_called()); |
| 501 } | 526 } |
| 502 | 527 |
| 503 } // namespace offline_pages | 528 } // namespace offline_pages |
| OLD | NEW |