OLD | NEW |
1 /* | 1 /* |
2 * Copyright (c) 2015, Google Inc. All rights reserved. | 2 * Copyright (c) 2015, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 FetchRequest deferredRequest(ResourceRequest("http://www.example.com"), Fetc
hInitiatorInfo()); | 426 FetchRequest deferredRequest(ResourceRequest("http://www.example.com"), Fetc
hInitiatorInfo()); |
427 deferredRequest.setDefer(FetchRequest::LazyLoad); | 427 deferredRequest.setDefer(FetchRequest::LazyLoad); |
428 | 428 |
429 // Start with all experiments disabled. | 429 // Start with all experiments disabled. |
430 settings->setFEtchIncreaseAsyncScriptPriority(false); | 430 settings->setFEtchIncreaseAsyncScriptPriority(false); |
431 settings->setFEtchIncreaseFontPriority(false); | 431 settings->setFEtchIncreaseFontPriority(false); |
432 settings->setFEtchDeferLateScripts(false); | 432 settings->setFEtchDeferLateScripts(false); |
433 settings->setFEtchIncreasePriorities(false); | 433 settings->setFEtchIncreasePriorities(false); |
434 | 434 |
435 // Base case, no priority change. Note that this triggers m_imageFetched, wh
ich will matter for setFetchDeferLateScripts() case below. | 435 // Base case, no priority change. Note that this triggers m_imageFetched, wh
ich will matter for setFetchDeferLateScripts() case below. |
436 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityLow, Resource::Image, request)); | 436 EXPECT_EQ(ResourceLoadPriorityVeryLow, fetchContext->modifyPriorityForExperi
ments(ResourceLoadPriorityVeryLow, Resource::Image, request, ResourcePriority::N
otVisible)); |
| 437 |
| 438 // Image visibility should increase priority |
| 439 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityVeryLow, Resource::Image, request, ResourcePriority::Visib
le)); |
437 | 440 |
438 // Font priority with and without fetchIncreaseFontPriority() | 441 // Font priority with and without fetchIncreaseFontPriority() |
439 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Font, request)); | 442 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Font, request, ResourcePriority::NotV
isible)); |
440 settings->setFEtchIncreaseFontPriority(true); | 443 settings->setFEtchIncreaseFontPriority(true); |
441 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Font, request)); | 444 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Font, request, ResourcePriority::NotVis
ible)); |
442 | 445 |
443 // Basic script cases | 446 // Basic script cases |
444 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, request)); | 447 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, request, ResourcePriority::No
tVisible)); |
445 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, preloadRequest)); | 448 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, preloadRequest, ResourcePrior
ity::NotVisible)); |
446 | 449 |
447 // Enable deferring late scripts. Preload priority should drop. | 450 // Enable deferring late scripts. Preload priority should drop. |
448 settings->setFEtchDeferLateScripts(true); | 451 settings->setFEtchDeferLateScripts(true); |
449 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, preloadRequest)); | 452 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, preloadRequest, ResourcePriority
::NotVisible)); |
450 | 453 |
451 // Enable increasing priority of async scripts. | 454 // Enable increasing priority of async scripts. |
452 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, deferredRequest)); | 455 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, deferredRequest, ResourcePriorit
y::NotVisible)); |
453 settings->setFEtchIncreaseAsyncScriptPriority(true); | 456 settings->setFEtchIncreaseAsyncScriptPriority(true); |
454 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, deferredRequest)); | 457 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, deferredRequest, ResourcePrio
rity::NotVisible)); |
455 | 458 |
456 // Enable increased priorities for the remainder. | 459 // Enable increased priorities for the remainder. |
457 settings->setFEtchIncreasePriorities(true); | 460 settings->setFEtchIncreasePriorities(true); |
458 | 461 |
| 462 // Re-test image priority based on visibility with increased priorities |
| 463 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityVeryLow, Resource::Image, request, ResourcePriority::NotVi
sible)); |
| 464 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityVeryLow, Resource::Image, request, ResourcePriority::Visi
ble)); |
| 465 |
459 // Re-test font priority with increased prioriries | 466 // Re-test font priority with increased prioriries |
460 settings->setFEtchIncreaseFontPriority(false); | 467 settings->setFEtchIncreaseFontPriority(false); |
461 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Font, request)); | 468 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Font, request, ResourcePriority::NotVis
ible)); |
462 settings->setFEtchIncreaseFontPriority(true); | 469 settings->setFEtchIncreaseFontPriority(true); |
463 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityMedium, Resource::Font, request)); | 470 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityMedium, Resource::Font, request, ResourcePriority::No
tVisible)); |
464 | 471 |
465 // Re-test basic script cases and deferring late script case with increased
prioriries | 472 // Re-test basic script cases and deferring late script case with increased
prioriries |
466 settings->setFEtchIncreasePriorities(true); | |
467 settings->setFEtchDeferLateScripts(false); | 473 settings->setFEtchDeferLateScripts(false); |
468 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityMedium, Resource::Script, request)); | 474 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityMedium, Resource::Script, request, ResourcePriority::
NotVisible)); |
469 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Script, preloadRequest)); | 475 EXPECT_EQ(ResourceLoadPriorityHigh, fetchContext->modifyPriorityForExperimen
ts(ResourceLoadPriorityMedium, Resource::Script, preloadRequest, ResourcePriorit
y::NotVisible)); |
470 | 476 |
471 // Re-test deferring late scripts. | 477 // Re-test deferring late scripts. |
472 settings->setFEtchDeferLateScripts(true); | 478 settings->setFEtchDeferLateScripts(true); |
473 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, preloadRequest)); | 479 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, preloadRequest, ResourcePrior
ity::NotVisible)); |
474 | 480 |
475 // Re-test increasing priority of async scripts. Should ignore general incra
esed priorities. | 481 // Re-test increasing priority of async scripts. Should ignore general incra
esed priorities. |
476 settings->setFEtchIncreaseAsyncScriptPriority(false); | 482 settings->setFEtchIncreaseAsyncScriptPriority(false); |
477 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, deferredRequest)); | 483 EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiment
s(ResourceLoadPriorityMedium, Resource::Script, deferredRequest, ResourcePriorit
y::NotVisible)); |
478 settings->setFEtchIncreaseAsyncScriptPriority(true); | 484 settings->setFEtchIncreaseAsyncScriptPriority(true); |
479 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, deferredRequest)); | 485 EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperim
ents(ResourceLoadPriorityMedium, Resource::Script, deferredRequest, ResourcePrio
rity::NotVisible)); |
480 | 486 |
481 // Ensure we don't go out of bounds | 487 // Ensure we don't go out of bounds |
482 settings->setFEtchIncreasePriorities(true); | 488 settings->setFEtchIncreasePriorities(true); |
483 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityVeryHigh, Resource::Script, request)); | 489 EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExper
iments(ResourceLoadPriorityVeryHigh, Resource::Script, request, ResourcePriority
::NotVisible)); |
484 settings->setFEtchIncreasePriorities(false); | 490 settings->setFEtchIncreasePriorities(false); |
485 settings->setFEtchDeferLateScripts(true); | 491 settings->setFEtchDeferLateScripts(true); |
486 EXPECT_EQ(ResourceLoadPriorityVeryLow, fetchContext->modifyPriorityForExperi
ments(ResourceLoadPriorityVeryLow, Resource::Script, preloadRequest)); | 492 EXPECT_EQ(ResourceLoadPriorityVeryLow, fetchContext->modifyPriorityForExperi
ments(ResourceLoadPriorityVeryLow, Resource::Script, preloadRequest, ResourcePri
ority::NotVisible)); |
487 } | 493 } |
488 | 494 |
489 TEST_F(FrameFetchContextTest, ModifyPriorityForLowPriorityIframes) | 495 TEST_F(FrameFetchContextTest, ModifyPriorityForLowPriorityIframes) |
490 { | 496 { |
491 Settings* settings = document->frame()->settings(); | 497 Settings* settings = document->frame()->settings(); |
492 settings->setLowPriorityIframes(false); | 498 settings->setLowPriorityIframes(false); |
493 FetchRequest request(ResourceRequest("http://www.example.com"), FetchInitiat
orInfo()); | 499 FetchRequest request(ResourceRequest("http://www.example.com"), FetchInitiat
orInfo()); |
494 FrameFetchContext* childFetchContext = createChildFrame(); | 500 FrameFetchContext* childFetchContext = createChildFrame(); |
495 | 501 |
496 // No low priority iframes, expect default values. | 502 // No low priority iframes, expect default values. |
497 EXPECT_EQ(ResourceLoadPriorityVeryHigh, childFetchContext->modifyPriorityFor
Experiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request)); | 503 EXPECT_EQ(ResourceLoadPriorityVeryHigh, childFetchContext->modifyPriorityFor
Experiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request, Resou
rcePriority::NotVisible)); |
498 EXPECT_EQ(ResourceLoadPriorityMedium, childFetchContext->modifyPriorityForEx
periments(ResourceLoadPriorityMedium, Resource::Script, request)); | 504 EXPECT_EQ(ResourceLoadPriorityMedium, childFetchContext->modifyPriorityForEx
periments(ResourceLoadPriorityMedium, Resource::Script, request, ResourcePriorit
y::NotVisible)); |
499 | 505 |
500 // Low priority iframes enabled, everything should be low priority | 506 // Low priority iframes enabled, everything should be low priority |
501 settings->setLowPriorityIframes(true); | 507 settings->setLowPriorityIframes(true); |
502 EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForE
xperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request)); | 508 EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForE
xperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request, Resour
cePriority::NotVisible)); |
503 EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForE
xperiments(ResourceLoadPriorityMedium, Resource::Script, request)); | 509 EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForE
xperiments(ResourceLoadPriorityMedium, Resource::Script, request, ResourcePriori
ty::NotVisible)); |
504 } | 510 } |
505 | 511 |
506 } // namespace | 512 } // namespace |
OLD | NEW |