Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(189)

Side by Side Diff: third_party/WebKit/Source/core/loader/FrameFetchContextTest.cpp

Issue 1378743002: Refactor the API for setting dynamic resource load priorities (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Better names / cleanup Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698