| Index: content/renderer/render_frame_impl_browsertest.cc
|
| diff --git a/content/renderer/render_frame_impl_browsertest.cc b/content/renderer/render_frame_impl_browsertest.cc
|
| index 61fd6b341e98ecebb015e99d9ea658ef2b1d19e5..f56d6ce914aaaace97cc1f9f33b1cf9d636d2a76 100644
|
| --- a/content/renderer/render_frame_impl_browsertest.cc
|
| +++ b/content/renderer/render_frame_impl_browsertest.cc
|
| @@ -235,6 +235,52 @@ TEST_F(RenderFrameImplTest, LoFiNotUpdatedOnSubframeCommits) {
|
| // frame detach.
|
| }
|
|
|
| +// Test that LoFi state updates on all frames on image load.
|
| +TEST_F(RenderFrameImplTest, LoFiStateUpdatedOnImageLoad) {
|
| + SetIsUsingLoFi(GetMainRenderFrame(), true);
|
| + SetIsUsingLoFi(frame(), true);
|
| + EXPECT_TRUE(GetMainRenderFrame()->IsUsingLoFi());
|
| + EXPECT_TRUE(frame()->IsUsingLoFi());
|
| +
|
| + blink::WebHistoryItem item;
|
| + item.initialize();
|
| +
|
| + // The main frame's and subframe's LoFi states should stay the same on
|
| + // navigations within the page.
|
| + frame()->didNavigateWithinPage(frame()->GetWebFrame(), item,
|
| + blink::WebStandardCommit, true);
|
| + EXPECT_TRUE(frame()->IsUsingLoFi());
|
| + GetMainRenderFrame()->didNavigateWithinPage(
|
| + GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit,
|
| + true);
|
| + EXPECT_TRUE(GetMainRenderFrame()->IsUsingLoFi());
|
| +
|
| + // The subframe's LoFi state should not be reset on commit.
|
| + DocumentState* document_state =
|
| + DocumentState::FromDataSource(frame()->GetWebFrame()->dataSource());
|
| + static_cast<NavigationStateImpl*>(document_state->navigation_state())
|
| + ->set_was_within_same_page(false);
|
| +
|
| + frame()->didCommitProvisionalLoad(frame()->GetWebFrame(), item,
|
| + blink::WebStandardCommit);
|
| + EXPECT_TRUE(frame()->IsUsingLoFi());
|
| +
|
| + // The main frame's LoFi state should be reset to off on commit.
|
| + document_state = DocumentState::FromDataSource(
|
| + GetMainRenderFrame()->GetWebFrame()->dataSource());
|
| + static_cast<NavigationStateImpl*>(document_state->navigation_state())
|
| + ->set_was_within_same_page(false);
|
| +
|
| + // Calling didCommitProvisionalLoad is not representative of a full navigation
|
| + // but serves the purpose of testing the LoFi state logic.
|
| + GetMainRenderFrame()->didCommitProvisionalLoad(
|
| + GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit);
|
| + EXPECT_FALSE(GetMainRenderFrame()->IsUsingLoFi());
|
| + // The subframe would be deleted here after a cross-document navigation. It
|
| + // happens to be left around in this test because this does not simulate the
|
| + // frame detach.
|
| +}
|
| +
|
| // Test that effective connection type only updates for new main frame
|
| // documents.
|
| TEST_F(RenderFrameImplTest, EffectiveConnectionType) {
|
|
|