| 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 |