Commit 16e201cb authored by japhet@chromium.org's avatar japhet@chromium.org

Make the low priority iframe flag affect all resources in cross origin iframes

Currently it affects all iframes, but only the main resource.

BUG=

Review URL: https://codereview.chromium.org/1328763002

git-svn-id: svn://svn.chromium.org/blink/trunk@201843 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 11ad0175
...@@ -689,7 +689,8 @@ ResourceLoadPriority FrameFetchContext::modifyPriorityForExperiments(ResourceLoa ...@@ -689,7 +689,8 @@ ResourceLoadPriority FrameFetchContext::modifyPriorityForExperiments(ResourceLoa
if (!frame()->settings()) if (!frame()->settings())
return priority; return priority;
if (!frame()->isMainFrame() && frame()->settings()->lowPriorityIframes() && type == Resource::MainResource) // If enabled, drop the priority of all resources in a subframe.
if (frame()->settings()->lowPriorityIframes() && !frame()->isMainFrame())
return ResourceLoadPriorityVeryLow; return ResourceLoadPriorityVeryLow;
// Async/Defer scripts. // Async/Defer scripts.
......
...@@ -431,7 +431,6 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments) ...@@ -431,7 +431,6 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments)
settings->setFEtchIncreaseFontPriority(false); settings->setFEtchIncreaseFontPriority(false);
settings->setFEtchDeferLateScripts(false); settings->setFEtchDeferLateScripts(false);
settings->setFEtchIncreasePriorities(false); settings->setFEtchIncreasePriorities(false);
settings->setLowPriorityIframes(false);
// Base case, no priority change. Note that this triggers m_imageFetched, which will matter for setFetchDeferLateScripts() case below. // Base case, no priority change. Note that this triggers m_imageFetched, which will matter for setFetchDeferLateScripts() case below.
EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityLow, Resource::Image, request)); EXPECT_EQ(ResourceLoadPriorityLow, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityLow, Resource::Image, request));
...@@ -479,12 +478,6 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments) ...@@ -479,12 +478,6 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments)
settings->setFEtchIncreaseAsyncScriptPriority(true); settings->setFEtchIncreaseAsyncScriptPriority(true);
EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityMedium, Resource::Script, deferredRequest)); EXPECT_EQ(ResourceLoadPriorityMedium, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityMedium, Resource::Script, deferredRequest));
// Set up a child frame, test main resource load with and without setLowPriorityIframes()
FrameFetchContext* childFetchContext = createChildFrame();
EXPECT_EQ(ResourceLoadPriorityVeryHigh, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request));
settings->setLowPriorityIframes(true);
EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request));
// Ensure we don't go out of bounds // Ensure we don't go out of bounds
settings->setFEtchIncreasePriorities(true); settings->setFEtchIncreasePriorities(true);
EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::Script, request)); EXPECT_EQ(ResourceLoadPriorityVeryHigh, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::Script, request));
...@@ -493,4 +486,21 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments) ...@@ -493,4 +486,21 @@ TEST_F(FrameFetchContextTest, ModifyPriorityForExperiments)
EXPECT_EQ(ResourceLoadPriorityVeryLow, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryLow, Resource::Script, preloadRequest)); EXPECT_EQ(ResourceLoadPriorityVeryLow, fetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryLow, Resource::Script, preloadRequest));
} }
TEST_F(FrameFetchContextTest, ModifyPriorityForLowPriorityIframes)
{
Settings* settings = document->frame()->settings();
settings->setLowPriorityIframes(false);
FetchRequest request(ResourceRequest("http://www.example.com"), FetchInitiatorInfo());
FrameFetchContext* childFetchContext = createChildFrame();
// No low priority iframes, expect default values.
EXPECT_EQ(ResourceLoadPriorityVeryHigh, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request));
EXPECT_EQ(ResourceLoadPriorityMedium, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityMedium, Resource::Script, request));
// Low priority iframes enabled, everything should be low priority
settings->setLowPriorityIframes(true);
EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityVeryHigh, Resource::MainResource, request));
EXPECT_EQ(ResourceLoadPriorityVeryLow, childFetchContext->modifyPriorityForExperiments(ResourceLoadPriorityMedium, Resource::Script, request));
}
} // namespace } // namespace
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment