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