| 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 #include "base/bind.h" | 6 #include "base/bind.h" |
| 7 #include "base/callback.h" | 7 #include "base/callback.h" |
| 8 #include "base/memory/shared_memory.h" | 8 #include "base/memory/shared_memory.h" |
| 9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
| 10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
| 11 #include "base/time/time.h" |
| 11 #include "base/win/windows_version.h" | 12 #include "base/win/windows_version.h" |
| 12 #include "content/child/request_extra_data.h" | 13 #include "content/child/request_extra_data.h" |
| 13 #include "content/child/service_worker/service_worker_network_provider.h" | 14 #include "content/child/service_worker/service_worker_network_provider.h" |
| 14 #include "content/common/frame_messages.h" | 15 #include "content/common/frame_messages.h" |
| 15 #include "content/common/ssl_status_serialization.h" | 16 #include "content/common/ssl_status_serialization.h" |
| 16 #include "content/common/view_messages.h" | 17 #include "content/common/view_messages.h" |
| 17 #include "content/public/browser/browser_context.h" | 18 #include "content/public/browser/browser_context.h" |
| 18 #include "content/public/browser/native_web_keyboard_event.h" | 19 #include "content/public/browser/native_web_keyboard_event.h" |
| 19 #include "content/public/browser/web_ui_controller_factory.h" | 20 #include "content/public/browser/web_ui_controller_factory.h" |
| 20 #include "content/public/common/bindings_policy.h" | 21 #include "content/public/common/bindings_policy.h" |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 311 | 312 |
| 312 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { | 313 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { |
| 313 FrameMsg_Navigate_Params nav_params; | 314 FrameMsg_Navigate_Params nav_params; |
| 314 | 315 |
| 315 // An http url will trigger a resource load so cannot be used here. | 316 // An http url will trigger a resource load so cannot be used here. |
| 316 nav_params.url = GURL("data:text/html,<div>Page</div>"); | 317 nav_params.url = GURL("data:text/html,<div>Page</div>"); |
| 317 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 318 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 318 nav_params.transition = PAGE_TRANSITION_TYPED; | 319 nav_params.transition = PAGE_TRANSITION_TYPED; |
| 319 nav_params.page_id = -1; | 320 nav_params.page_id = -1; |
| 320 nav_params.is_post = true; | 321 nav_params.is_post = true; |
| 322 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 321 | 323 |
| 322 // Set up post data. | 324 // Set up post data. |
| 323 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( | 325 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( |
| 324 "post \0\ndata"); | 326 "post \0\ndata"); |
| 325 const unsigned int length = 11; | 327 const unsigned int length = 11; |
| 326 const std::vector<unsigned char> post_data(raw_data, raw_data + length); | 328 const std::vector<unsigned char> post_data(raw_data, raw_data + length); |
| 327 nav_params.browser_initiated_post_data = post_data; | 329 nav_params.browser_initiated_post_data = post_data; |
| 328 | 330 |
| 329 frame()->OnNavigate(nav_params); | 331 frame()->OnNavigate(nav_params); |
| 330 ProcessPendingMessages(); | 332 ProcessPendingMessages(); |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 516 // If we navigate back to this RenderView, ensure we don't send a state | 518 // If we navigate back to this RenderView, ensure we don't send a state |
| 517 // update for the swapped out URL. (http://crbug.com/72235) | 519 // update for the swapped out URL. (http://crbug.com/72235) |
| 518 FrameMsg_Navigate_Params nav_params; | 520 FrameMsg_Navigate_Params nav_params; |
| 519 nav_params.url = GURL("data:text/html,<div>Page B</div>"); | 521 nav_params.url = GURL("data:text/html,<div>Page B</div>"); |
| 520 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 522 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 521 nav_params.transition = PAGE_TRANSITION_TYPED; | 523 nav_params.transition = PAGE_TRANSITION_TYPED; |
| 522 nav_params.current_history_list_length = 1; | 524 nav_params.current_history_list_length = 1; |
| 523 nav_params.current_history_list_offset = 0; | 525 nav_params.current_history_list_offset = 0; |
| 524 nav_params.pending_history_list_offset = 1; | 526 nav_params.pending_history_list_offset = 1; |
| 525 nav_params.page_id = -1; | 527 nav_params.page_id = -1; |
| 528 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 526 frame()->OnNavigate(nav_params); | 529 frame()->OnNavigate(nav_params); |
| 527 ProcessPendingMessages(); | 530 ProcessPendingMessages(); |
| 528 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( | 531 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( |
| 529 ViewHostMsg_UpdateState::ID); | 532 ViewHostMsg_UpdateState::ID); |
| 530 EXPECT_FALSE(msg3); | 533 EXPECT_FALSE(msg3); |
| 531 } | 534 } |
| 532 | 535 |
| 533 // Ensure the RenderViewImpl reloads the previous page if a reload request | 536 // Ensure the RenderViewImpl reloads the previous page if a reload request |
| 534 // arrives while it is showing swappedout://. http://crbug.com/143155. | 537 // arrives while it is showing swappedout://. http://crbug.com/143155. |
| 535 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { | 538 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { |
| (...skipping 17 matching lines...) Expand all Loading... |
| 553 | 556 |
| 554 // Back to page A (page_id 1) and commit. | 557 // Back to page A (page_id 1) and commit. |
| 555 FrameMsg_Navigate_Params params_A; | 558 FrameMsg_Navigate_Params params_A; |
| 556 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 559 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 557 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; | 560 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 558 params_A.current_history_list_length = 2; | 561 params_A.current_history_list_length = 2; |
| 559 params_A.current_history_list_offset = 1; | 562 params_A.current_history_list_offset = 1; |
| 560 params_A.pending_history_list_offset = 0; | 563 params_A.pending_history_list_offset = 0; |
| 561 params_A.page_id = 1; | 564 params_A.page_id = 1; |
| 562 params_A.page_state = state_A; | 565 params_A.page_state = state_A; |
| 566 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 563 frame()->OnNavigate(params_A); | 567 frame()->OnNavigate(params_A); |
| 564 ProcessPendingMessages(); | 568 ProcessPendingMessages(); |
| 565 | 569 |
| 566 // Respond to a swap out request. | 570 // Respond to a swap out request. |
| 567 view()->main_render_frame()->OnSwapOut(kProxyRoutingId); | 571 view()->main_render_frame()->OnSwapOut(kProxyRoutingId); |
| 568 | 572 |
| 569 // Check for a OnSwapOutACK. | 573 // Check for a OnSwapOutACK. |
| 570 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 574 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
| 571 FrameHostMsg_SwapOut_ACK::ID); | 575 FrameHostMsg_SwapOut_ACK::ID); |
| 572 ASSERT_TRUE(msg); | 576 ASSERT_TRUE(msg); |
| 573 render_thread_->sink().ClearMessages(); | 577 render_thread_->sink().ClearMessages(); |
| 574 | 578 |
| 575 // It is possible to get a reload request at this point, containing the | 579 // It is possible to get a reload request at this point, containing the |
| 576 // params.page_state of the initial page (e.g., if the new page fails the | 580 // params.page_state of the initial page (e.g., if the new page fails the |
| 577 // provisional load in the renderer process, after we unload the old page). | 581 // provisional load in the renderer process, after we unload the old page). |
| 578 // Ensure the old page gets reloaded, not swappedout://. | 582 // Ensure the old page gets reloaded, not swappedout://. |
| 579 FrameMsg_Navigate_Params nav_params; | 583 FrameMsg_Navigate_Params nav_params; |
| 580 nav_params.url = GURL("data:text/html,<div>Page A</div>"); | 584 nav_params.url = GURL("data:text/html,<div>Page A</div>"); |
| 581 nav_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; | 585 nav_params.navigation_type = FrameMsg_Navigate_Type::RELOAD; |
| 582 nav_params.transition = PAGE_TRANSITION_RELOAD; | 586 nav_params.transition = PAGE_TRANSITION_RELOAD; |
| 583 nav_params.current_history_list_length = 2; | 587 nav_params.current_history_list_length = 2; |
| 584 nav_params.current_history_list_offset = 0; | 588 nav_params.current_history_list_offset = 0; |
| 585 nav_params.pending_history_list_offset = 0; | 589 nav_params.pending_history_list_offset = 0; |
| 586 nav_params.page_id = 1; | 590 nav_params.page_id = 1; |
| 587 nav_params.page_state = state_A; | 591 nav_params.page_state = state_A; |
| 592 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 588 frame()->OnNavigate(nav_params); | 593 frame()->OnNavigate(nav_params); |
| 589 ProcessPendingMessages(); | 594 ProcessPendingMessages(); |
| 590 | 595 |
| 591 // Verify page A committed, not swappedout://. | 596 // Verify page A committed, not swappedout://. |
| 592 const IPC::Message* frame_navigate_msg = | 597 const IPC::Message* frame_navigate_msg = |
| 593 render_thread_->sink().GetUniqueMessageMatching( | 598 render_thread_->sink().GetUniqueMessageMatching( |
| 594 FrameHostMsg_DidCommitProvisionalLoad::ID); | 599 FrameHostMsg_DidCommitProvisionalLoad::ID); |
| 595 EXPECT_TRUE(frame_navigate_msg); | 600 EXPECT_TRUE(frame_navigate_msg); |
| 596 | 601 |
| 597 // Read URL out of the parent trait of the params object. | 602 // Read URL out of the parent trait of the params object. |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 656 | 661 |
| 657 // Go back to C and commit, preparing for our real test. | 662 // Go back to C and commit, preparing for our real test. |
| 658 FrameMsg_Navigate_Params params_C; | 663 FrameMsg_Navigate_Params params_C; |
| 659 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 664 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 660 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; | 665 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 661 params_C.current_history_list_length = 4; | 666 params_C.current_history_list_length = 4; |
| 662 params_C.current_history_list_offset = 3; | 667 params_C.current_history_list_offset = 3; |
| 663 params_C.pending_history_list_offset = 2; | 668 params_C.pending_history_list_offset = 2; |
| 664 params_C.page_id = 3; | 669 params_C.page_id = 3; |
| 665 params_C.page_state = state_C; | 670 params_C.page_state = state_C; |
| 671 params_C.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 666 frame()->OnNavigate(params_C); | 672 frame()->OnNavigate(params_C); |
| 667 ProcessPendingMessages(); | 673 ProcessPendingMessages(); |
| 668 render_thread_->sink().ClearMessages(); | 674 render_thread_->sink().ClearMessages(); |
| 669 | 675 |
| 670 // Go back twice quickly, such that page B does not have a chance to commit. | 676 // Go back twice quickly, such that page B does not have a chance to commit. |
| 671 // This leads to two changes to the back/forward list but only one change to | 677 // This leads to two changes to the back/forward list but only one change to |
| 672 // the RenderView's page ID. | 678 // the RenderView's page ID. |
| 673 | 679 |
| 674 // Back to page B (page_id 2), without committing. | 680 // Back to page B (page_id 2), without committing. |
| 675 FrameMsg_Navigate_Params params_B; | 681 FrameMsg_Navigate_Params params_B; |
| 676 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 682 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 677 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; | 683 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 678 params_B.current_history_list_length = 4; | 684 params_B.current_history_list_length = 4; |
| 679 params_B.current_history_list_offset = 2; | 685 params_B.current_history_list_offset = 2; |
| 680 params_B.pending_history_list_offset = 1; | 686 params_B.pending_history_list_offset = 1; |
| 681 params_B.page_id = 2; | 687 params_B.page_id = 2; |
| 682 params_B.page_state = state_B; | 688 params_B.page_state = state_B; |
| 689 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 683 frame()->OnNavigate(params_B); | 690 frame()->OnNavigate(params_B); |
| 684 | 691 |
| 685 // Back to page A (page_id 1) and commit. | 692 // Back to page A (page_id 1) and commit. |
| 686 FrameMsg_Navigate_Params params; | 693 FrameMsg_Navigate_Params params; |
| 687 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 694 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 688 params.transition = PAGE_TRANSITION_FORWARD_BACK; | 695 params.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 689 params_B.current_history_list_length = 4; | 696 params_B.current_history_list_length = 4; |
| 690 params_B.current_history_list_offset = 2; | 697 params_B.current_history_list_offset = 2; |
| 691 params_B.pending_history_list_offset = 0; | 698 params_B.pending_history_list_offset = 0; |
| 692 params.page_id = 1; | 699 params.page_id = 1; |
| 693 params.page_state = state_A; | 700 params.page_state = state_A; |
| 701 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 694 frame()->OnNavigate(params); | 702 frame()->OnNavigate(params); |
| 695 ProcessPendingMessages(); | 703 ProcessPendingMessages(); |
| 696 | 704 |
| 697 // Now ensure that the UpdateState message we receive is consistent | 705 // Now ensure that the UpdateState message we receive is consistent |
| 698 // and represents page C in both page_id and state. | 706 // and represents page C in both page_id and state. |
| 699 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 707 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
| 700 ViewHostMsg_UpdateState::ID); | 708 ViewHostMsg_UpdateState::ID); |
| 701 ASSERT_TRUE(msg); | 709 ASSERT_TRUE(msg); |
| 702 ViewHostMsg_UpdateState::Read(msg, ¶m); | 710 ViewHostMsg_UpdateState::Read(msg, ¶m); |
| 703 int page_id = param.a; | 711 int page_id = param.a; |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 738 | 746 |
| 739 // Back to page A (page_id 1) and commit. | 747 // Back to page A (page_id 1) and commit. |
| 740 FrameMsg_Navigate_Params params_A; | 748 FrameMsg_Navigate_Params params_A; |
| 741 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 749 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 742 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; | 750 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 743 params_A.current_history_list_length = 2; | 751 params_A.current_history_list_length = 2; |
| 744 params_A.current_history_list_offset = 1; | 752 params_A.current_history_list_offset = 1; |
| 745 params_A.pending_history_list_offset = 0; | 753 params_A.pending_history_list_offset = 0; |
| 746 params_A.page_id = 1; | 754 params_A.page_id = 1; |
| 747 params_A.page_state = state_A; | 755 params_A.page_state = state_A; |
| 756 params_A.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 748 frame()->OnNavigate(params_A); | 757 frame()->OnNavigate(params_A); |
| 749 ProcessPendingMessages(); | 758 ProcessPendingMessages(); |
| 750 | 759 |
| 751 // A new navigation commits, clearing the forward history. | 760 // A new navigation commits, clearing the forward history. |
| 752 LoadHTML("<div>Page C</div>"); | 761 LoadHTML("<div>Page C</div>"); |
| 753 EXPECT_EQ(2, view()->history_list_length_); | 762 EXPECT_EQ(2, view()->history_list_length_); |
| 754 EXPECT_EQ(1, view()->history_list_offset_); | 763 EXPECT_EQ(1, view()->history_list_offset_); |
| 755 EXPECT_EQ(3, view()->history_page_ids_[1]); | 764 EXPECT_EQ(3, view()->history_page_ids_[1]); |
| 756 | 765 |
| 757 // The browser then sends a stale navigation to B, which should be ignored. | 766 // The browser then sends a stale navigation to B, which should be ignored. |
| 758 FrameMsg_Navigate_Params params_B; | 767 FrameMsg_Navigate_Params params_B; |
| 759 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 768 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 760 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; | 769 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 761 params_B.current_history_list_length = 2; | 770 params_B.current_history_list_length = 2; |
| 762 params_B.current_history_list_offset = 0; | 771 params_B.current_history_list_offset = 0; |
| 763 params_B.pending_history_list_offset = 1; | 772 params_B.pending_history_list_offset = 1; |
| 764 params_B.page_id = 2; | 773 params_B.page_id = 2; |
| 765 params_B.page_state = state_A; // Doesn't matter, just has to be present. | 774 params_B.page_state = state_A; // Doesn't matter, just has to be present. |
| 775 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 766 frame()->OnNavigate(params_B); | 776 frame()->OnNavigate(params_B); |
| 767 | 777 |
| 768 // State should be unchanged. | 778 // State should be unchanged. |
| 769 EXPECT_EQ(2, view()->history_list_length_); | 779 EXPECT_EQ(2, view()->history_list_length_); |
| 770 EXPECT_EQ(1, view()->history_list_offset_); | 780 EXPECT_EQ(1, view()->history_list_offset_); |
| 771 EXPECT_EQ(3, view()->history_page_ids_[1]); | 781 EXPECT_EQ(3, view()->history_page_ids_[1]); |
| 772 } | 782 } |
| 773 | 783 |
| 774 // Test that we do not ignore navigations after the entry limit is reached, | 784 // Test that we do not ignore navigations after the entry limit is reached, |
| 775 // in which case the browser starts dropping entries from the front. In this | 785 // in which case the browser starts dropping entries from the front. In this |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 823 // It has now dropped the first entry, but the renderer isn't notified. | 833 // It has now dropped the first entry, but the renderer isn't notified. |
| 824 // Ensure that going back to page B (page_id 2) at offset 0 is successful. | 834 // Ensure that going back to page B (page_id 2) at offset 0 is successful. |
| 825 FrameMsg_Navigate_Params params_B; | 835 FrameMsg_Navigate_Params params_B; |
| 826 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 836 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 827 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; | 837 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; |
| 828 params_B.current_history_list_length = 2; | 838 params_B.current_history_list_length = 2; |
| 829 params_B.current_history_list_offset = 1; | 839 params_B.current_history_list_offset = 1; |
| 830 params_B.pending_history_list_offset = 0; | 840 params_B.pending_history_list_offset = 0; |
| 831 params_B.page_id = 2; | 841 params_B.page_id = 2; |
| 832 params_B.page_state = state_B; | 842 params_B.page_state = state_B; |
| 843 params_B.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 833 frame()->OnNavigate(params_B); | 844 frame()->OnNavigate(params_B); |
| 834 ProcessPendingMessages(); | 845 ProcessPendingMessages(); |
| 835 | 846 |
| 836 EXPECT_EQ(2, view()->history_list_length_); | 847 EXPECT_EQ(2, view()->history_list_length_); |
| 837 EXPECT_EQ(0, view()->history_list_offset_); | 848 EXPECT_EQ(0, view()->history_list_offset_); |
| 838 EXPECT_EQ(2, view()->history_page_ids_[0]); | 849 EXPECT_EQ(2, view()->history_page_ids_[0]); |
| 839 } | 850 } |
| 840 | 851 |
| 841 // Test that our IME backend sends a notification message when the input focus | 852 // Test that our IME backend sends a notification message when the input focus |
| 842 // changes. | 853 // changes. |
| (...skipping 687 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1530 error.reason = net::ERR_FILE_NOT_FOUND; | 1541 error.reason = net::ERR_FILE_NOT_FOUND; |
| 1531 error.unreachableURL = GURL("http://foo"); | 1542 error.unreachableURL = GURL("http://foo"); |
| 1532 WebLocalFrame* web_frame = GetMainFrame(); | 1543 WebLocalFrame* web_frame = GetMainFrame(); |
| 1533 | 1544 |
| 1534 // Start a load that will reach provisional state synchronously, | 1545 // Start a load that will reach provisional state synchronously, |
| 1535 // but won't complete synchronously. | 1546 // but won't complete synchronously. |
| 1536 FrameMsg_Navigate_Params params; | 1547 FrameMsg_Navigate_Params params; |
| 1537 params.page_id = -1; | 1548 params.page_id = -1; |
| 1538 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1549 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 1539 params.url = GURL("data:text/html,test data"); | 1550 params.url = GURL("data:text/html,test data"); |
| 1551 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 1540 frame()->OnNavigate(params); | 1552 frame()->OnNavigate(params); |
| 1541 | 1553 |
| 1542 // An error occurred. | 1554 // An error occurred. |
| 1543 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 1555 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); |
| 1544 // Frame should exit view-source mode. | 1556 // Frame should exit view-source mode. |
| 1545 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); | 1557 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); |
| 1546 } | 1558 } |
| 1547 | 1559 |
| 1548 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { | 1560 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { |
| 1549 GetMainFrame()->enableViewSourceMode(true); | 1561 GetMainFrame()->enableViewSourceMode(true); |
| 1550 WebURLError error; | 1562 WebURLError error; |
| 1551 error.domain = WebString::fromUTF8(net::kErrorDomain); | 1563 error.domain = WebString::fromUTF8(net::kErrorDomain); |
| 1552 error.reason = net::ERR_ABORTED; | 1564 error.reason = net::ERR_ABORTED; |
| 1553 error.unreachableURL = GURL("http://foo"); | 1565 error.unreachableURL = GURL("http://foo"); |
| 1554 WebLocalFrame* web_frame = GetMainFrame(); | 1566 WebLocalFrame* web_frame = GetMainFrame(); |
| 1555 | 1567 |
| 1556 // Start a load that will reach provisional state synchronously, | 1568 // Start a load that will reach provisional state synchronously, |
| 1557 // but won't complete synchronously. | 1569 // but won't complete synchronously. |
| 1558 FrameMsg_Navigate_Params params; | 1570 FrameMsg_Navigate_Params params; |
| 1559 params.page_id = -1; | 1571 params.page_id = -1; |
| 1560 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1572 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 1561 params.url = GURL("data:text/html,test data"); | 1573 params.url = GURL("data:text/html,test data"); |
| 1574 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 1562 frame()->OnNavigate(params); | 1575 frame()->OnNavigate(params); |
| 1563 | 1576 |
| 1564 // A cancellation occurred. | 1577 // A cancellation occurred. |
| 1565 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 1578 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); |
| 1566 // Frame should stay in view-source mode. | 1579 // Frame should stay in view-source mode. |
| 1567 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); | 1580 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); |
| 1568 } | 1581 } |
| 1569 | 1582 |
| 1570 // Regression test for http://crbug.com/41562 | 1583 // Regression test for http://crbug.com/41562 |
| 1571 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { | 1584 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { |
| (...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1932 } | 1945 } |
| 1933 #endif | 1946 #endif |
| 1934 | 1947 |
| 1935 TEST_F(RenderViewImplTest, ZoomLimit) { | 1948 TEST_F(RenderViewImplTest, ZoomLimit) { |
| 1936 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); | 1949 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); |
| 1937 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); | 1950 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); |
| 1938 | 1951 |
| 1939 FrameMsg_Navigate_Params params; | 1952 FrameMsg_Navigate_Params params; |
| 1940 params.page_id = -1; | 1953 params.page_id = -1; |
| 1941 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 1954 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 1955 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 1942 | 1956 |
| 1943 // Verifies navigation to a URL with preset zoom level indeed sets the level. | 1957 // Verifies navigation to a URL with preset zoom level indeed sets the level. |
| 1944 // Regression test for http://crbug.com/139559, where the level was not | 1958 // Regression test for http://crbug.com/139559, where the level was not |
| 1945 // properly set when it is out of the default zoom limits of WebView. | 1959 // properly set when it is out of the default zoom limits of WebView. |
| 1946 params.url = GURL("data:text/html,min_zoomlimit_test"); | 1960 params.url = GURL("data:text/html,min_zoomlimit_test"); |
| 1947 view()->OnSetZoomLevelForLoadingURL(params.url, kMinZoomLevel); | 1961 view()->OnSetZoomLevelForLoadingURL(params.url, kMinZoomLevel); |
| 1948 frame()->OnNavigate(params); | 1962 frame()->OnNavigate(params); |
| 1949 ProcessPendingMessages(); | 1963 ProcessPendingMessages(); |
| 1950 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); | 1964 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); |
| 1951 | 1965 |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2016 // Navigate the frame only. | 2030 // Navigate the frame only. |
| 2017 FrameMsg_Navigate_Params nav_params; | 2031 FrameMsg_Navigate_Params nav_params; |
| 2018 nav_params.url = GURL("data:text/html,world"); | 2032 nav_params.url = GURL("data:text/html,world"); |
| 2019 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 2033 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 2020 nav_params.transition = PAGE_TRANSITION_TYPED; | 2034 nav_params.transition = PAGE_TRANSITION_TYPED; |
| 2021 nav_params.current_history_list_length = 1; | 2035 nav_params.current_history_list_length = 1; |
| 2022 nav_params.current_history_list_offset = 0; | 2036 nav_params.current_history_list_offset = 0; |
| 2023 nav_params.pending_history_list_offset = 1; | 2037 nav_params.pending_history_list_offset = 1; |
| 2024 nav_params.page_id = -1; | 2038 nav_params.page_id = -1; |
| 2025 nav_params.frame_to_navigate = "frame"; | 2039 nav_params.frame_to_navigate = "frame"; |
| 2040 nav_params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 2026 frame()->OnNavigate(nav_params); | 2041 frame()->OnNavigate(nav_params); |
| 2027 FrameLoadWaiter( | 2042 FrameLoadWaiter( |
| 2028 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait(); | 2043 RenderFrame::FromWebFrame(frame()->GetWebFrame()->firstChild())).Wait(); |
| 2029 | 2044 |
| 2030 // Copy the document content to std::wstring and compare with the | 2045 // Copy the document content to std::wstring and compare with the |
| 2031 // expected result. | 2046 // expected result. |
| 2032 const int kMaxOutputCharacters = 256; | 2047 const int kMaxOutputCharacters = 256; |
| 2033 std::string output = base::UTF16ToUTF8( | 2048 std::string output = base::UTF16ToUTF8( |
| 2034 GetMainFrame()->contentAsText(kMaxOutputCharacters)); | 2049 GetMainFrame()->contentAsText(kMaxOutputCharacters)); |
| 2035 EXPECT_EQ(output, "hello \n\nworld"); | 2050 EXPECT_EQ(output, "hello \n\nworld"); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2135 error.reason = net::ERR_FILE_NOT_FOUND; | 2150 error.reason = net::ERR_FILE_NOT_FOUND; |
| 2136 error.unreachableURL = GURL("http://example.com/suppress"); | 2151 error.unreachableURL = GURL("http://example.com/suppress"); |
| 2137 WebLocalFrame* web_frame = GetMainFrame(); | 2152 WebLocalFrame* web_frame = GetMainFrame(); |
| 2138 | 2153 |
| 2139 // Start a load that will reach provisional state synchronously, | 2154 // Start a load that will reach provisional state synchronously, |
| 2140 // but won't complete synchronously. | 2155 // but won't complete synchronously. |
| 2141 FrameMsg_Navigate_Params params; | 2156 FrameMsg_Navigate_Params params; |
| 2142 params.page_id = -1; | 2157 params.page_id = -1; |
| 2143 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 2158 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 2144 params.url = GURL("data:text/html,test data"); | 2159 params.url = GURL("data:text/html,test data"); |
| 2160 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 2145 frame()->OnNavigate(params); | 2161 frame()->OnNavigate(params); |
| 2146 | 2162 |
| 2147 // An error occurred. | 2163 // An error occurred. |
| 2148 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 2164 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); |
| 2149 const int kMaxOutputCharacters = 22; | 2165 const int kMaxOutputCharacters = 22; |
| 2150 EXPECT_EQ("", | 2166 EXPECT_EQ("", |
| 2151 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); | 2167 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); |
| 2152 } | 2168 } |
| 2153 | 2169 |
| 2154 #if defined(OS_ANDROID) | 2170 #if defined(OS_ANDROID) |
| 2155 // Crashing on Android: http://crbug.com/311341 | 2171 // Crashing on Android: http://crbug.com/311341 |
| 2156 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress | 2172 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress |
| 2157 #else | 2173 #else |
| 2158 #define MAYBE_DoesNotSuppress DoesNotSuppress | 2174 #define MAYBE_DoesNotSuppress DoesNotSuppress |
| 2159 #endif | 2175 #endif |
| 2160 | 2176 |
| 2161 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { | 2177 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { |
| 2162 WebURLError error; | 2178 WebURLError error; |
| 2163 error.domain = WebString::fromUTF8(net::kErrorDomain); | 2179 error.domain = WebString::fromUTF8(net::kErrorDomain); |
| 2164 error.reason = net::ERR_FILE_NOT_FOUND; | 2180 error.reason = net::ERR_FILE_NOT_FOUND; |
| 2165 error.unreachableURL = GURL("http://example.com/dont-suppress"); | 2181 error.unreachableURL = GURL("http://example.com/dont-suppress"); |
| 2166 WebLocalFrame* web_frame = GetMainFrame(); | 2182 WebLocalFrame* web_frame = GetMainFrame(); |
| 2167 | 2183 |
| 2168 // Start a load that will reach provisional state synchronously, | 2184 // Start a load that will reach provisional state synchronously, |
| 2169 // but won't complete synchronously. | 2185 // but won't complete synchronously. |
| 2170 FrameMsg_Navigate_Params params; | 2186 FrameMsg_Navigate_Params params; |
| 2171 params.page_id = -1; | 2187 params.page_id = -1; |
| 2172 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 2188 params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 2173 params.url = GURL("data:text/html,test data"); | 2189 params.url = GURL("data:text/html,test data"); |
| 2190 params.browser_navigation_start = base::TimeTicks::FromInternalValue(1); |
| 2174 frame()->OnNavigate(params); | 2191 frame()->OnNavigate(params); |
| 2175 | 2192 |
| 2176 // An error occurred. | 2193 // An error occurred. |
| 2177 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); | 2194 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); |
| 2178 // The error page itself is loaded asynchronously. | 2195 // The error page itself is loaded asynchronously. |
| 2179 FrameLoadWaiter(frame()).Wait(); | 2196 FrameLoadWaiter(frame()).Wait(); |
| 2180 const int kMaxOutputCharacters = 22; | 2197 const int kMaxOutputCharacters = 22; |
| 2181 EXPECT_EQ("A suffusion of yellow.", | 2198 EXPECT_EQ("A suffusion of yellow.", |
| 2182 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); | 2199 base::UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); |
| 2183 } | 2200 } |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2366 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height, &height)); | 2383 EXPECT_TRUE(ExecuteJavaScriptAndReturnIntValue(get_height, &height)); |
| 2367 EXPECT_EQ(params.viewSize.height, height); | 2384 EXPECT_EQ(params.viewSize.height, height); |
| 2368 | 2385 |
| 2369 view()->DisableScreenMetricsEmulation(); | 2386 view()->DisableScreenMetricsEmulation(); |
| 2370 | 2387 |
| 2371 view()->EnableScreenMetricsEmulation(params); | 2388 view()->EnableScreenMetricsEmulation(params); |
| 2372 // Don't disable here to test that emulation is being shutdown properly. | 2389 // Don't disable here to test that emulation is being shutdown properly. |
| 2373 } | 2390 } |
| 2374 | 2391 |
| 2375 } // namespace content | 2392 } // namespace content |
| OLD | NEW |