| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include <stdint.h> | 5 #include <stdint.h> |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/debug/leak_annotations.h" | 8 #include "base/debug/leak_annotations.h" |
| 9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
| 10 #include "content/child/web_url_loader_impl.h" | 10 #include "content/child/web_url_loader_impl.h" |
| 11 #include "content/common/frame_messages.h" | 11 #include "content/common/frame_messages.h" |
| 12 #include "content/common/frame_owner_properties.h" | 12 #include "content/common/frame_owner_properties.h" |
| 13 #include "content/common/renderer.mojom.h" | 13 #include "content/common/renderer.mojom.h" |
| 14 #include "content/common/view_messages.h" | 14 #include "content/common/view_messages.h" |
| 15 #include "content/public/common/previews_state.h" |
| 15 #include "content/public/renderer/document_state.h" | 16 #include "content/public/renderer/document_state.h" |
| 16 #include "content/public/test/frame_load_waiter.h" | 17 #include "content/public/test/frame_load_waiter.h" |
| 17 #include "content/public/test/render_view_test.h" | 18 #include "content/public/test/render_view_test.h" |
| 18 #include "content/public/test/test_utils.h" | 19 #include "content/public/test/test_utils.h" |
| 19 #include "content/renderer/navigation_state_impl.h" | 20 #include "content/renderer/navigation_state_impl.h" |
| 20 #include "content/renderer/render_frame_impl.h" | 21 #include "content/renderer/render_frame_impl.h" |
| 21 #include "content/renderer/render_view_impl.h" | 22 #include "content/renderer/render_view_impl.h" |
| 22 #include "content/test/fake_compositor_dependencies.h" | 23 #include "content/test/fake_compositor_dependencies.h" |
| 23 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| 24 #include "third_party/WebKit/public/platform/WebEffectiveConnectionType.h" | 25 #include "third_party/WebKit/public/platform/WebEffectiveConnectionType.h" |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 76 | 77 |
| 77 void TearDown() override { | 78 void TearDown() override { |
| 78 #if defined(LEAK_SANITIZER) | 79 #if defined(LEAK_SANITIZER) |
| 79 // Do this before shutting down V8 in RenderViewTest::TearDown(). | 80 // Do this before shutting down V8 in RenderViewTest::TearDown(). |
| 80 // http://crbug.com/328552 | 81 // http://crbug.com/328552 |
| 81 __lsan_do_leak_check(); | 82 __lsan_do_leak_check(); |
| 82 #endif | 83 #endif |
| 83 RenderViewTest::TearDown(); | 84 RenderViewTest::TearDown(); |
| 84 } | 85 } |
| 85 | 86 |
| 86 void SetIsUsingLoFi(RenderFrameImpl* frame, bool is_using_lofi) { | 87 void SetPreviewsState(RenderFrameImpl* frame, int previews_state) { |
| 87 frame->is_using_lofi_ = is_using_lofi; | 88 frame->previews_state_ = previews_state; |
| 88 } | 89 } |
| 89 | 90 |
| 90 void SetEffectionConnectionType(RenderFrameImpl* frame, | 91 void SetEffectionConnectionType(RenderFrameImpl* frame, |
| 91 blink::WebEffectiveConnectionType type) { | 92 blink::WebEffectiveConnectionType type) { |
| 92 frame->effective_connection_type_ = type; | 93 frame->effective_connection_type_ = type; |
| 93 } | 94 } |
| 94 | 95 |
| 95 RenderFrameImpl* GetMainRenderFrame() { | 96 RenderFrameImpl* GetMainRenderFrame() { |
| 96 return static_cast<RenderFrameImpl*>(view_->GetMainRenderFrame()); | 97 return static_cast<RenderFrameImpl*>(view_->GetMainRenderFrame()); |
| 97 } | 98 } |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 static_cast<RenderViewImpl*>(view_)->OnMessageReceived(was_shown_message); | 187 static_cast<RenderViewImpl*>(view_)->OnMessageReceived(was_shown_message); |
| 187 | 188 |
| 188 // This test is primarily checking that this case does not crash, but | 189 // This test is primarily checking that this case does not crash, but |
| 189 // observers should still be notified. | 190 // observers should still be notified. |
| 190 EXPECT_TRUE(observer.visible()); | 191 EXPECT_TRUE(observer.visible()); |
| 191 } | 192 } |
| 192 | 193 |
| 193 // Test that LoFi state only updates for new main frame documents. Subframes | 194 // Test that LoFi state only updates for new main frame documents. Subframes |
| 194 // inherit from the main frame and should not change at commit time. | 195 // inherit from the main frame and should not change at commit time. |
| 195 TEST_F(RenderFrameImplTest, LoFiNotUpdatedOnSubframeCommits) { | 196 TEST_F(RenderFrameImplTest, LoFiNotUpdatedOnSubframeCommits) { |
| 196 SetIsUsingLoFi(GetMainRenderFrame(), true); | 197 SetPreviewsState(GetMainRenderFrame(), SERVER_LOFI_ON); |
| 197 SetIsUsingLoFi(frame(), true); | 198 SetPreviewsState(frame(), SERVER_LOFI_ON); |
| 198 EXPECT_TRUE(GetMainRenderFrame()->IsUsingLoFi()); | 199 EXPECT_EQ(SERVER_LOFI_ON, GetMainRenderFrame()->GetPreviewsState()); |
| 199 EXPECT_TRUE(frame()->IsUsingLoFi()); | 200 EXPECT_EQ(SERVER_LOFI_ON, frame()->GetPreviewsState()); |
| 200 | 201 |
| 201 blink::WebHistoryItem item; | 202 blink::WebHistoryItem item; |
| 202 item.initialize(); | 203 item.initialize(); |
| 203 | 204 |
| 204 // The main frame's and subframe's LoFi states should stay the same on | 205 // The main frame's and subframe's LoFi states should stay the same on |
| 205 // navigations within the page. | 206 // navigations within the page. |
| 206 frame()->didNavigateWithinPage(frame()->GetWebFrame(), item, | 207 frame()->didNavigateWithinPage(frame()->GetWebFrame(), item, |
| 207 blink::WebStandardCommit, true); | 208 blink::WebStandardCommit, true); |
| 208 EXPECT_TRUE(frame()->IsUsingLoFi()); | 209 EXPECT_EQ(SERVER_LOFI_ON, frame()->GetPreviewsState()); |
| 209 GetMainRenderFrame()->didNavigateWithinPage( | 210 GetMainRenderFrame()->didNavigateWithinPage( |
| 210 GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit, | 211 GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit, |
| 211 true); | 212 true); |
| 212 EXPECT_TRUE(GetMainRenderFrame()->IsUsingLoFi()); | 213 EXPECT_EQ(SERVER_LOFI_ON, GetMainRenderFrame()->GetPreviewsState()); |
| 213 | 214 |
| 214 // The subframe's LoFi state should not be reset on commit. | 215 // The subframe's LoFi state should not be reset on commit. |
| 215 DocumentState* document_state = | 216 DocumentState* document_state = |
| 216 DocumentState::FromDataSource(frame()->GetWebFrame()->dataSource()); | 217 DocumentState::FromDataSource(frame()->GetWebFrame()->dataSource()); |
| 217 static_cast<NavigationStateImpl*>(document_state->navigation_state()) | 218 static_cast<NavigationStateImpl*>(document_state->navigation_state()) |
| 218 ->set_was_within_same_page(false); | 219 ->set_was_within_same_page(false); |
| 219 | 220 |
| 220 frame()->didCommitProvisionalLoad(frame()->GetWebFrame(), item, | 221 frame()->didCommitProvisionalLoad(frame()->GetWebFrame(), item, |
| 221 blink::WebStandardCommit); | 222 blink::WebStandardCommit); |
| 222 EXPECT_TRUE(frame()->IsUsingLoFi()); | 223 EXPECT_EQ(SERVER_LOFI_ON, frame()->GetPreviewsState()); |
| 223 | 224 |
| 224 // The main frame's LoFi state should be reset to off on commit. | 225 // The main frame's LoFi state should be reset to off on commit. |
| 225 document_state = DocumentState::FromDataSource( | 226 document_state = DocumentState::FromDataSource( |
| 226 GetMainRenderFrame()->GetWebFrame()->dataSource()); | 227 GetMainRenderFrame()->GetWebFrame()->dataSource()); |
| 227 static_cast<NavigationStateImpl*>(document_state->navigation_state()) | 228 static_cast<NavigationStateImpl*>(document_state->navigation_state()) |
| 228 ->set_was_within_same_page(false); | 229 ->set_was_within_same_page(false); |
| 229 | 230 |
| 230 // Calling didCommitProvisionalLoad is not representative of a full navigation | 231 // Calling didCommitProvisionalLoad is not representative of a full navigation |
| 231 // but serves the purpose of testing the LoFi state logic. | 232 // but serves the purpose of testing the LoFi state logic. |
| 232 GetMainRenderFrame()->didCommitProvisionalLoad( | 233 GetMainRenderFrame()->didCommitProvisionalLoad( |
| 233 GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit); | 234 GetMainRenderFrame()->GetWebFrame(), item, blink::WebStandardCommit); |
| 234 EXPECT_FALSE(GetMainRenderFrame()->IsUsingLoFi()); | 235 EXPECT_EQ(PREVIEWS_OFF, GetMainRenderFrame()->GetPreviewsState()); |
| 235 // The subframe would be deleted here after a cross-document navigation. It | 236 // The subframe would be deleted here after a cross-document navigation. It |
| 236 // happens to be left around in this test because this does not simulate the | 237 // happens to be left around in this test because this does not simulate the |
| 237 // frame detach. | 238 // frame detach. |
| 238 } | 239 } |
| 239 | 240 |
| 240 // Test that effective connection type only updates for new main frame | 241 // Test that effective connection type only updates for new main frame |
| 241 // documents. | 242 // documents. |
| 242 TEST_F(RenderFrameImplTest, EffectiveConnectionType) { | 243 TEST_F(RenderFrameImplTest, EffectiveConnectionType) { |
| 243 EXPECT_EQ(blink::WebEffectiveConnectionType::TypeUnknown, | 244 EXPECT_EQ(blink::WebEffectiveConnectionType::TypeUnknown, |
| 244 frame()->getEffectiveConnectionType()); | 245 frame()->getEffectiveConnectionType()); |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 367 common_params.url = GURL("data:text/html,max_zoomlimit_test"); | 368 common_params.url = GURL("data:text/html,max_zoomlimit_test"); |
| 368 GetMainRenderFrame()->SetHostZoomLevel(common_params.url, kMaxZoomLevel); | 369 GetMainRenderFrame()->SetHostZoomLevel(common_params.url, kMaxZoomLevel); |
| 369 GetMainRenderFrame()->NavigateInternal( | 370 GetMainRenderFrame()->NavigateInternal( |
| 370 common_params, StartNavigationParams(), RequestNavigationParams(), | 371 common_params, StartNavigationParams(), RequestNavigationParams(), |
| 371 std::unique_ptr<StreamOverrideParameters>()); | 372 std::unique_ptr<StreamOverrideParameters>()); |
| 372 ProcessPendingMessages(); | 373 ProcessPendingMessages(); |
| 373 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view_->GetWebView()->zoomLevel()); | 374 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view_->GetWebView()->zoomLevel()); |
| 374 } | 375 } |
| 375 | 376 |
| 376 } // namespace | 377 } // namespace |
| OLD | NEW |