| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
| 6 | 6 |
| 7 #include "base/shared_memory.h" | 7 #include "base/shared_memory.h" |
| 8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
| 9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
| 10 #include "content/common/view_messages.h" | 10 #include "content/common/view_messages.h" |
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 new_view->Release(); | 418 new_view->Release(); |
| 419 } | 419 } |
| 420 | 420 |
| 421 // Ensure the RenderViewImpl sends an ACK to a SwapOut request, even if it is | 421 // Ensure the RenderViewImpl sends an ACK to a SwapOut request, even if it is |
| 422 // already swapped out. http://crbug.com/93427. | 422 // already swapped out. http://crbug.com/93427. |
| 423 TEST_F(RenderViewImplTest, SendSwapOutACK) { | 423 TEST_F(RenderViewImplTest, SendSwapOutACK) { |
| 424 LoadHTML("<div>Page A</div>"); | 424 LoadHTML("<div>Page A</div>"); |
| 425 int initial_page_id = view()->GetPageId(); | 425 int initial_page_id = view()->GetPageId(); |
| 426 | 426 |
| 427 // Respond to a swap out request. | 427 // Respond to a swap out request. |
| 428 ViewMsg_SwapOut_Params params; | 428 view()->OnSwapOut(); |
| 429 params.closing_process_id = 10; | |
| 430 params.closing_route_id = 11; | |
| 431 params.new_render_process_host_id = 12; | |
| 432 params.new_request_id = 13; | |
| 433 view()->OnSwapOut(params); | |
| 434 | 429 |
| 435 // Ensure the swap out commits synchronously. | 430 // Ensure the swap out commits synchronously. |
| 436 EXPECT_NE(initial_page_id, view()->GetPageId()); | 431 EXPECT_NE(initial_page_id, view()->GetPageId()); |
| 437 | 432 |
| 438 // Check for a valid OnSwapOutACK with echoed params. | 433 // Check for a valid OnSwapOutACK. |
| 439 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 434 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
| 440 ViewHostMsg_SwapOut_ACK::ID); | 435 ViewHostMsg_SwapOut_ACK::ID); |
| 441 ASSERT_TRUE(msg); | 436 ASSERT_TRUE(msg); |
| 442 ViewHostMsg_SwapOut_ACK::Param reply_params; | |
| 443 ViewHostMsg_SwapOut_ACK::Read(msg, &reply_params); | |
| 444 EXPECT_EQ(params.closing_process_id, reply_params.a.closing_process_id); | |
| 445 EXPECT_EQ(params.closing_route_id, reply_params.a.closing_route_id); | |
| 446 EXPECT_EQ(params.new_render_process_host_id, | |
| 447 reply_params.a.new_render_process_host_id); | |
| 448 EXPECT_EQ(params.new_request_id, reply_params.a.new_request_id); | |
| 449 | 437 |
| 450 // It is possible to get another swap out request. Ensure that we send | 438 // It is possible to get another swap out request. Ensure that we send |
| 451 // an ACK, even if we don't have to do anything else. | 439 // an ACK, even if we don't have to do anything else. |
| 452 render_thread_->sink().ClearMessages(); | 440 render_thread_->sink().ClearMessages(); |
| 453 view()->OnSwapOut(params); | 441 view()->OnSwapOut(); |
| 454 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( | 442 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( |
| 455 ViewHostMsg_SwapOut_ACK::ID); | 443 ViewHostMsg_SwapOut_ACK::ID); |
| 456 ASSERT_TRUE(msg2); | 444 ASSERT_TRUE(msg2); |
| 457 | 445 |
| 458 // If we navigate back to this RenderView, ensure we don't send a state | 446 // If we navigate back to this RenderView, ensure we don't send a state |
| 459 // update for the swapped out URL. (http://crbug.com/72235) | 447 // update for the swapped out URL. (http://crbug.com/72235) |
| 460 ViewMsg_Navigate_Params nav_params; | 448 ViewMsg_Navigate_Params nav_params; |
| 461 nav_params.url = GURL("data:text/html,<div>Page B</div>"); | 449 nav_params.url = GURL("data:text/html,<div>Page B</div>"); |
| 462 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; | 450 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; |
| 463 nav_params.transition = PAGE_TRANSITION_TYPED; | 451 nav_params.transition = PAGE_TRANSITION_TYPED; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 498 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; | 486 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 499 params_A.current_history_list_length = 2; | 487 params_A.current_history_list_length = 2; |
| 500 params_A.current_history_list_offset = 1; | 488 params_A.current_history_list_offset = 1; |
| 501 params_A.pending_history_list_offset = 0; | 489 params_A.pending_history_list_offset = 0; |
| 502 params_A.page_id = 1; | 490 params_A.page_id = 1; |
| 503 params_A.page_state = state_A; | 491 params_A.page_state = state_A; |
| 504 view()->OnNavigate(params_A); | 492 view()->OnNavigate(params_A); |
| 505 ProcessPendingMessages(); | 493 ProcessPendingMessages(); |
| 506 | 494 |
| 507 // Respond to a swap out request. | 495 // Respond to a swap out request. |
| 508 ViewMsg_SwapOut_Params params; | 496 view()->OnSwapOut(); |
| 509 params.closing_process_id = 10; | |
| 510 params.closing_route_id = 11; | |
| 511 params.new_render_process_host_id = 12; | |
| 512 params.new_request_id = 13; | |
| 513 view()->OnSwapOut(params); | |
| 514 | 497 |
| 515 // Check for a OnSwapOutACK. | 498 // Check for a OnSwapOutACK. |
| 516 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 499 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
| 517 ViewHostMsg_SwapOut_ACK::ID); | 500 ViewHostMsg_SwapOut_ACK::ID); |
| 518 ASSERT_TRUE(msg); | 501 ASSERT_TRUE(msg); |
| 519 render_thread_->sink().ClearMessages(); | 502 render_thread_->sink().ClearMessages(); |
| 520 | 503 |
| 521 // It is possible to get a reload request at this point, containing the | 504 // It is possible to get a reload request at this point, containing the |
| 522 // params.page_state of the initial page (e.g., if the new page fails the | 505 // params.page_state of the initial page (e.g., if the new page fails the |
| 523 // provisional load in the renderer process, after we unload the old page). | 506 // provisional load in the renderer process, after we unload the old page). |
| (...skipping 1337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1861 EXPECT_EQ(output, L"hello \n\nworld"); | 1844 EXPECT_EQ(output, L"hello \n\nworld"); |
| 1862 } | 1845 } |
| 1863 | 1846 |
| 1864 // This test ensures that a RenderFrame object is created for the top level | 1847 // This test ensures that a RenderFrame object is created for the top level |
| 1865 // frame in the RenderView. | 1848 // frame in the RenderView. |
| 1866 TEST_F(RenderViewImplTest, BasicRenderFrame) { | 1849 TEST_F(RenderViewImplTest, BasicRenderFrame) { |
| 1867 EXPECT_TRUE(view()->main_render_frame_.get()); | 1850 EXPECT_TRUE(view()->main_render_frame_.get()); |
| 1868 } | 1851 } |
| 1869 | 1852 |
| 1870 } // namespace content | 1853 } // namespace content |
| OLD | NEW |