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

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

Issue 1304063016: Refactor the API for setting dynamic resource load priorities (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 | Annotate | Revision Log
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 415 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW
« no previous file with comments | « Source/core/loader/FrameFetchContext.cpp ('k') | Source/platform/network/ResourceLoadPriority.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698