Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: trunk/src/content/renderer/render_view_browsertest.cc

Issue 181113009: Revert 253010 "Revert 251563 "Move browser initiated navigation ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
324 324
325 // Change the value of the input. We should have gotten an update state 325 // Change the value of the input. We should have gotten an update state
326 // notification. We need to spin the message loop to catch this update. 326 // notification. We need to spin the message loop to catch this update.
327 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';"); 327 ExecuteJavaScript("document.getElementById('elt_text').value = 'foo';");
328 ProcessPendingMessages(); 328 ProcessPendingMessages();
329 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching( 329 EXPECT_TRUE(render_thread_->sink().GetUniqueMessageMatching(
330 ViewHostMsg_UpdateState::ID)); 330 ViewHostMsg_UpdateState::ID));
331 } 331 }
332 332
333 TEST_F(RenderViewImplTest, OnNavigationHttpPost) { 333 TEST_F(RenderViewImplTest, OnNavigationHttpPost) {
334 ViewMsg_Navigate_Params nav_params; 334 FrameMsg_Navigate_Params nav_params;
335 335
336 // An http url will trigger a resource load so cannot be used here. 336 // An http url will trigger a resource load so cannot be used here.
337 nav_params.url = GURL("data:text/html,<div>Page</div>"); 337 nav_params.url = GURL("data:text/html,<div>Page</div>");
338 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 338 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
339 nav_params.transition = PAGE_TRANSITION_TYPED; 339 nav_params.transition = PAGE_TRANSITION_TYPED;
340 nav_params.page_id = -1; 340 nav_params.page_id = -1;
341 nav_params.is_post = true; 341 nav_params.is_post = true;
342 342
343 // Set up post data. 343 // Set up post data.
344 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>( 344 const unsigned char* raw_data = reinterpret_cast<const unsigned char*>(
345 "post \0\ndata"); 345 "post \0\ndata");
346 const unsigned int length = 11; 346 const unsigned int length = 11;
347 const std::vector<unsigned char> post_data(raw_data, raw_data + length); 347 const std::vector<unsigned char> post_data(raw_data, raw_data + length);
348 nav_params.browser_initiated_post_data = post_data; 348 nav_params.browser_initiated_post_data = post_data;
349 349
350 view()->OnNavigate(nav_params); 350 frame()->OnNavigate(nav_params);
351 ProcessPendingMessages(); 351 ProcessPendingMessages();
352 352
353 const IPC::Message* frame_navigate_msg = 353 const IPC::Message* frame_navigate_msg =
354 render_thread_->sink().GetUniqueMessageMatching( 354 render_thread_->sink().GetUniqueMessageMatching(
355 FrameHostMsg_DidCommitProvisionalLoad::ID); 355 FrameHostMsg_DidCommitProvisionalLoad::ID);
356 EXPECT_TRUE(frame_navigate_msg); 356 EXPECT_TRUE(frame_navigate_msg);
357 357
358 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params; 358 FrameHostMsg_DidCommitProvisionalLoad::Param host_nav_params;
359 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg, 359 FrameHostMsg_DidCommitProvisionalLoad::Read(frame_navigate_msg,
360 &host_nav_params); 360 &host_nav_params);
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
529 // It is possible to get another swap out request. Ensure that we send 529 // It is possible to get another swap out request. Ensure that we send
530 // an ACK, even if we don't have to do anything else. 530 // an ACK, even if we don't have to do anything else.
531 render_thread_->sink().ClearMessages(); 531 render_thread_->sink().ClearMessages();
532 view()->OnSwapOut(); 532 view()->OnSwapOut();
533 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching( 533 const IPC::Message* msg2 = render_thread_->sink().GetUniqueMessageMatching(
534 ViewHostMsg_SwapOut_ACK::ID); 534 ViewHostMsg_SwapOut_ACK::ID);
535 ASSERT_TRUE(msg2); 535 ASSERT_TRUE(msg2);
536 536
537 // If we navigate back to this RenderView, ensure we don't send a state 537 // If we navigate back to this RenderView, ensure we don't send a state
538 // update for the swapped out URL. (http://crbug.com/72235) 538 // update for the swapped out URL. (http://crbug.com/72235)
539 ViewMsg_Navigate_Params nav_params; 539 FrameMsg_Navigate_Params nav_params;
540 nav_params.url = GURL("data:text/html,<div>Page B</div>"); 540 nav_params.url = GURL("data:text/html,<div>Page B</div>");
541 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 541 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
542 nav_params.transition = PAGE_TRANSITION_TYPED; 542 nav_params.transition = PAGE_TRANSITION_TYPED;
543 nav_params.current_history_list_length = 1; 543 nav_params.current_history_list_length = 1;
544 nav_params.current_history_list_offset = 0; 544 nav_params.current_history_list_offset = 0;
545 nav_params.pending_history_list_offset = 1; 545 nav_params.pending_history_list_offset = 1;
546 nav_params.page_id = -1; 546 nav_params.page_id = -1;
547 view()->OnNavigate(nav_params); 547 frame()->OnNavigate(nav_params);
548 ProcessPendingMessages(); 548 ProcessPendingMessages();
549 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching( 549 const IPC::Message* msg3 = render_thread_->sink().GetUniqueMessageMatching(
550 ViewHostMsg_UpdateState::ID); 550 ViewHostMsg_UpdateState::ID);
551 EXPECT_FALSE(msg3); 551 EXPECT_FALSE(msg3);
552 } 552 }
553 553
554 // Ensure the RenderViewImpl reloads the previous page if a reload request 554 // Ensure the RenderViewImpl reloads the previous page if a reload request
555 // arrives while it is showing swappedout://. http://crbug.com/143155. 555 // arrives while it is showing swappedout://. http://crbug.com/143155.
556 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) { 556 TEST_F(RenderViewImplTest, ReloadWhileSwappedOut) {
557 // Load page A. 557 // Load page A.
558 LoadHTML("<div>Page A</div>"); 558 LoadHTML("<div>Page A</div>");
559 559
560 // Load page B, which will trigger an UpdateState message for page A. 560 // Load page B, which will trigger an UpdateState message for page A.
561 LoadHTML("<div>Page B</div>"); 561 LoadHTML("<div>Page B</div>");
562 562
563 // Check for a valid UpdateState message for page A. 563 // Check for a valid UpdateState message for page A.
564 ProcessPendingMessages(); 564 ProcessPendingMessages();
565 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( 565 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
566 ViewHostMsg_UpdateState::ID); 566 ViewHostMsg_UpdateState::ID);
567 ASSERT_TRUE(msg_A); 567 ASSERT_TRUE(msg_A);
568 int page_id_A; 568 int page_id_A;
569 PageState state_A; 569 PageState state_A;
570 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); 570 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A);
571 EXPECT_EQ(1, page_id_A); 571 EXPECT_EQ(1, page_id_A);
572 render_thread_->sink().ClearMessages(); 572 render_thread_->sink().ClearMessages();
573 573
574 // Back to page A (page_id 1) and commit. 574 // Back to page A (page_id 1) and commit.
575 ViewMsg_Navigate_Params params_A; 575 FrameMsg_Navigate_Params params_A;
576 params_A.navigation_type = ViewMsg_Navigate_Type::NORMAL; 576 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
577 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; 577 params_A.transition = PAGE_TRANSITION_FORWARD_BACK;
578 params_A.current_history_list_length = 2; 578 params_A.current_history_list_length = 2;
579 params_A.current_history_list_offset = 1; 579 params_A.current_history_list_offset = 1;
580 params_A.pending_history_list_offset = 0; 580 params_A.pending_history_list_offset = 0;
581 params_A.page_id = 1; 581 params_A.page_id = 1;
582 params_A.page_state = state_A; 582 params_A.page_state = state_A;
583 view()->OnNavigate(params_A); 583 frame()->OnNavigate(params_A);
584 ProcessPendingMessages(); 584 ProcessPendingMessages();
585 585
586 // Respond to a swap out request. 586 // Respond to a swap out request.
587 view()->OnSwapOut(); 587 view()->OnSwapOut();
588 588
589 // Check for a OnSwapOutACK. 589 // Check for a OnSwapOutACK.
590 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 590 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
591 ViewHostMsg_SwapOut_ACK::ID); 591 ViewHostMsg_SwapOut_ACK::ID);
592 ASSERT_TRUE(msg); 592 ASSERT_TRUE(msg);
593 render_thread_->sink().ClearMessages(); 593 render_thread_->sink().ClearMessages();
594 594
595 // It is possible to get a reload request at this point, containing the 595 // It is possible to get a reload request at this point, containing the
596 // params.page_state of the initial page (e.g., if the new page fails the 596 // params.page_state of the initial page (e.g., if the new page fails the
597 // provisional load in the renderer process, after we unload the old page). 597 // provisional load in the renderer process, after we unload the old page).
598 // Ensure the old page gets reloaded, not swappedout://. 598 // Ensure the old page gets reloaded, not swappedout://.
599 ViewMsg_Navigate_Params nav_params; 599 FrameMsg_Navigate_Params nav_params;
600 nav_params.url = GURL("data:text/html,<div>Page A</div>"); 600 nav_params.url = GURL("data:text/html,<div>Page A</div>");
601 nav_params.navigation_type = ViewMsg_Navigate_Type::RELOAD; 601 nav_params.navigation_type = FrameMsg_Navigate_Type::RELOAD;
602 nav_params.transition = PAGE_TRANSITION_RELOAD; 602 nav_params.transition = PAGE_TRANSITION_RELOAD;
603 nav_params.current_history_list_length = 2; 603 nav_params.current_history_list_length = 2;
604 nav_params.current_history_list_offset = 0; 604 nav_params.current_history_list_offset = 0;
605 nav_params.pending_history_list_offset = 0; 605 nav_params.pending_history_list_offset = 0;
606 nav_params.page_id = 1; 606 nav_params.page_id = 1;
607 nav_params.page_state = state_A; 607 nav_params.page_state = state_A;
608 view()->OnNavigate(nav_params); 608 frame()->OnNavigate(nav_params);
609 ProcessPendingMessages(); 609 ProcessPendingMessages();
610 610
611 // Verify page A committed, not swappedout://. 611 // Verify page A committed, not swappedout://.
612 const IPC::Message* frame_navigate_msg = 612 const IPC::Message* frame_navigate_msg =
613 render_thread_->sink().GetUniqueMessageMatching( 613 render_thread_->sink().GetUniqueMessageMatching(
614 FrameHostMsg_DidCommitProvisionalLoad::ID); 614 FrameHostMsg_DidCommitProvisionalLoad::ID);
615 EXPECT_TRUE(frame_navigate_msg); 615 EXPECT_TRUE(frame_navigate_msg);
616 616
617 // Read URL out of the parent trait of the params object. 617 // Read URL out of the parent trait of the params object.
618 FrameHostMsg_DidCommitProvisionalLoad::Param commit_params; 618 FrameHostMsg_DidCommitProvisionalLoad::Param commit_params;
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
667 ViewHostMsg_UpdateState::ID); 667 ViewHostMsg_UpdateState::ID);
668 ASSERT_TRUE(msg_C); 668 ASSERT_TRUE(msg_C);
669 int page_id_C; 669 int page_id_C;
670 PageState state_C; 670 PageState state_C;
671 ViewHostMsg_UpdateState::Read(msg_C, &page_id_C, &state_C); 671 ViewHostMsg_UpdateState::Read(msg_C, &page_id_C, &state_C);
672 EXPECT_EQ(3, page_id_C); 672 EXPECT_EQ(3, page_id_C);
673 EXPECT_NE(state_B, state_C); 673 EXPECT_NE(state_B, state_C);
674 render_thread_->sink().ClearMessages(); 674 render_thread_->sink().ClearMessages();
675 675
676 // Go back to C and commit, preparing for our real test. 676 // Go back to C and commit, preparing for our real test.
677 ViewMsg_Navigate_Params params_C; 677 FrameMsg_Navigate_Params params_C;
678 params_C.navigation_type = ViewMsg_Navigate_Type::NORMAL; 678 params_C.navigation_type = FrameMsg_Navigate_Type::NORMAL;
679 params_C.transition = PAGE_TRANSITION_FORWARD_BACK; 679 params_C.transition = PAGE_TRANSITION_FORWARD_BACK;
680 params_C.current_history_list_length = 4; 680 params_C.current_history_list_length = 4;
681 params_C.current_history_list_offset = 3; 681 params_C.current_history_list_offset = 3;
682 params_C.pending_history_list_offset = 2; 682 params_C.pending_history_list_offset = 2;
683 params_C.page_id = 3; 683 params_C.page_id = 3;
684 params_C.page_state = state_C; 684 params_C.page_state = state_C;
685 view()->OnNavigate(params_C); 685 frame()->OnNavigate(params_C);
686 ProcessPendingMessages(); 686 ProcessPendingMessages();
687 render_thread_->sink().ClearMessages(); 687 render_thread_->sink().ClearMessages();
688 688
689 // Go back twice quickly, such that page B does not have a chance to commit. 689 // Go back twice quickly, such that page B does not have a chance to commit.
690 // This leads to two changes to the back/forward list but only one change to 690 // This leads to two changes to the back/forward list but only one change to
691 // the RenderView's page ID. 691 // the RenderView's page ID.
692 692
693 // Back to page B (page_id 2), without committing. 693 // Back to page B (page_id 2), without committing.
694 ViewMsg_Navigate_Params params_B; 694 FrameMsg_Navigate_Params params_B;
695 params_B.navigation_type = ViewMsg_Navigate_Type::NORMAL; 695 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
696 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 696 params_B.transition = PAGE_TRANSITION_FORWARD_BACK;
697 params_B.current_history_list_length = 4; 697 params_B.current_history_list_length = 4;
698 params_B.current_history_list_offset = 2; 698 params_B.current_history_list_offset = 2;
699 params_B.pending_history_list_offset = 1; 699 params_B.pending_history_list_offset = 1;
700 params_B.page_id = 2; 700 params_B.page_id = 2;
701 params_B.page_state = state_B; 701 params_B.page_state = state_B;
702 view()->OnNavigate(params_B); 702 frame()->OnNavigate(params_B);
703 703
704 // Back to page A (page_id 1) and commit. 704 // Back to page A (page_id 1) and commit.
705 ViewMsg_Navigate_Params params; 705 FrameMsg_Navigate_Params params;
706 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 706 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
707 params.transition = PAGE_TRANSITION_FORWARD_BACK; 707 params.transition = PAGE_TRANSITION_FORWARD_BACK;
708 params_B.current_history_list_length = 4; 708 params_B.current_history_list_length = 4;
709 params_B.current_history_list_offset = 2; 709 params_B.current_history_list_offset = 2;
710 params_B.pending_history_list_offset = 0; 710 params_B.pending_history_list_offset = 0;
711 params.page_id = 1; 711 params.page_id = 1;
712 params.page_state = state_A; 712 params.page_state = state_A;
713 view()->OnNavigate(params); 713 frame()->OnNavigate(params);
714 ProcessPendingMessages(); 714 ProcessPendingMessages();
715 715
716 // Now ensure that the UpdateState message we receive is consistent 716 // Now ensure that the UpdateState message we receive is consistent
717 // and represents page C in both page_id and state. 717 // and represents page C in both page_id and state.
718 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( 718 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching(
719 ViewHostMsg_UpdateState::ID); 719 ViewHostMsg_UpdateState::ID);
720 ASSERT_TRUE(msg); 720 ASSERT_TRUE(msg);
721 int page_id; 721 int page_id;
722 PageState state; 722 PageState state;
723 ViewHostMsg_UpdateState::Read(msg, &page_id, &state); 723 ViewHostMsg_UpdateState::Read(msg, &page_id, &state);
(...skipping 24 matching lines...) Expand all
748 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( 748 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching(
749 ViewHostMsg_UpdateState::ID); 749 ViewHostMsg_UpdateState::ID);
750 ASSERT_TRUE(msg_A); 750 ASSERT_TRUE(msg_A);
751 int page_id_A; 751 int page_id_A;
752 PageState state_A; 752 PageState state_A;
753 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A); 753 ViewHostMsg_UpdateState::Read(msg_A, &page_id_A, &state_A);
754 EXPECT_EQ(1, page_id_A); 754 EXPECT_EQ(1, page_id_A);
755 render_thread_->sink().ClearMessages(); 755 render_thread_->sink().ClearMessages();
756 756
757 // Back to page A (page_id 1) and commit. 757 // Back to page A (page_id 1) and commit.
758 ViewMsg_Navigate_Params params_A; 758 FrameMsg_Navigate_Params params_A;
759 params_A.navigation_type = ViewMsg_Navigate_Type::NORMAL; 759 params_A.navigation_type = FrameMsg_Navigate_Type::NORMAL;
760 params_A.transition = PAGE_TRANSITION_FORWARD_BACK; 760 params_A.transition = PAGE_TRANSITION_FORWARD_BACK;
761 params_A.current_history_list_length = 2; 761 params_A.current_history_list_length = 2;
762 params_A.current_history_list_offset = 1; 762 params_A.current_history_list_offset = 1;
763 params_A.pending_history_list_offset = 0; 763 params_A.pending_history_list_offset = 0;
764 params_A.page_id = 1; 764 params_A.page_id = 1;
765 params_A.page_state = state_A; 765 params_A.page_state = state_A;
766 view()->OnNavigate(params_A); 766 frame()->OnNavigate(params_A);
767 ProcessPendingMessages(); 767 ProcessPendingMessages();
768 768
769 // A new navigation commits, clearing the forward history. 769 // A new navigation commits, clearing the forward history.
770 LoadHTML("<div>Page C</div>"); 770 LoadHTML("<div>Page C</div>");
771 EXPECT_EQ(2, view()->history_list_length_); 771 EXPECT_EQ(2, view()->history_list_length_);
772 EXPECT_EQ(1, view()->history_list_offset_); 772 EXPECT_EQ(1, view()->history_list_offset_);
773 EXPECT_EQ(3, view()->history_page_ids_[1]); 773 EXPECT_EQ(3, view()->history_page_ids_[1]);
774 774
775 // The browser then sends a stale navigation to B, which should be ignored. 775 // The browser then sends a stale navigation to B, which should be ignored.
776 ViewMsg_Navigate_Params params_B; 776 FrameMsg_Navigate_Params params_B;
777 params_B.navigation_type = ViewMsg_Navigate_Type::NORMAL; 777 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
778 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 778 params_B.transition = PAGE_TRANSITION_FORWARD_BACK;
779 params_B.current_history_list_length = 2; 779 params_B.current_history_list_length = 2;
780 params_B.current_history_list_offset = 0; 780 params_B.current_history_list_offset = 0;
781 params_B.pending_history_list_offset = 1; 781 params_B.pending_history_list_offset = 1;
782 params_B.page_id = 2; 782 params_B.page_id = 2;
783 params_B.page_state = state_A; // Doesn't matter, just has to be present. 783 params_B.page_state = state_A; // Doesn't matter, just has to be present.
784 view()->OnNavigate(params_B); 784 frame()->OnNavigate(params_B);
785 785
786 // State should be unchanged. 786 // State should be unchanged.
787 EXPECT_EQ(2, view()->history_list_length_); 787 EXPECT_EQ(2, view()->history_list_length_);
788 EXPECT_EQ(1, view()->history_list_offset_); 788 EXPECT_EQ(1, view()->history_list_offset_);
789 EXPECT_EQ(3, view()->history_page_ids_[1]); 789 EXPECT_EQ(3, view()->history_page_ids_[1]);
790 } 790 }
791 791
792 // Test that we do not ignore navigations after the entry limit is reached, 792 // Test that we do not ignore navigations after the entry limit is reached,
793 // in which case the browser starts dropping entries from the front. In this 793 // in which case the browser starts dropping entries from the front. In this
794 // case, we'll see a page_id mismatch but the RenderView's id will be older, 794 // case, we'll see a page_id mismatch but the RenderView's id will be older,
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
832 ASSERT_TRUE(msg_B); 832 ASSERT_TRUE(msg_B);
833 int page_id_B; 833 int page_id_B;
834 PageState state_B; 834 PageState state_B;
835 ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B); 835 ViewHostMsg_UpdateState::Read(msg_B, &page_id_B, &state_B);
836 EXPECT_EQ(2, page_id_B); 836 EXPECT_EQ(2, page_id_B);
837 render_thread_->sink().ClearMessages(); 837 render_thread_->sink().ClearMessages();
838 838
839 // Suppose the browser has limited the number of NavigationEntries to 2. 839 // Suppose the browser has limited the number of NavigationEntries to 2.
840 // It has now dropped the first entry, but the renderer isn't notified. 840 // It has now dropped the first entry, but the renderer isn't notified.
841 // Ensure that going back to page B (page_id 2) at offset 0 is successful. 841 // Ensure that going back to page B (page_id 2) at offset 0 is successful.
842 ViewMsg_Navigate_Params params_B; 842 FrameMsg_Navigate_Params params_B;
843 params_B.navigation_type = ViewMsg_Navigate_Type::NORMAL; 843 params_B.navigation_type = FrameMsg_Navigate_Type::NORMAL;
844 params_B.transition = PAGE_TRANSITION_FORWARD_BACK; 844 params_B.transition = PAGE_TRANSITION_FORWARD_BACK;
845 params_B.current_history_list_length = 2; 845 params_B.current_history_list_length = 2;
846 params_B.current_history_list_offset = 1; 846 params_B.current_history_list_offset = 1;
847 params_B.pending_history_list_offset = 0; 847 params_B.pending_history_list_offset = 0;
848 params_B.page_id = 2; 848 params_B.page_id = 2;
849 params_B.page_state = state_B; 849 params_B.page_state = state_B;
850 view()->OnNavigate(params_B); 850 frame()->OnNavigate(params_B);
851 ProcessPendingMessages(); 851 ProcessPendingMessages();
852 852
853 EXPECT_EQ(2, view()->history_list_length_); 853 EXPECT_EQ(2, view()->history_list_length_);
854 EXPECT_EQ(0, view()->history_list_offset_); 854 EXPECT_EQ(0, view()->history_list_offset_);
855 EXPECT_EQ(2, view()->history_page_ids_[0]); 855 EXPECT_EQ(2, view()->history_page_ids_[0]);
856 } 856 }
857 857
858 // Test that our IME backend sends a notification message when the input focus 858 // Test that our IME backend sends a notification message when the input focus
859 // changes. 859 // changes.
860 TEST_F(RenderViewImplTest, OnImeTypeChanged) { 860 TEST_F(RenderViewImplTest, OnImeTypeChanged) {
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after
1551 TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) { 1551 TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) {
1552 GetMainFrame()->enableViewSourceMode(true); 1552 GetMainFrame()->enableViewSourceMode(true);
1553 WebURLError error; 1553 WebURLError error;
1554 error.domain = WebString::fromUTF8(net::kErrorDomain); 1554 error.domain = WebString::fromUTF8(net::kErrorDomain);
1555 error.reason = net::ERR_FILE_NOT_FOUND; 1555 error.reason = net::ERR_FILE_NOT_FOUND;
1556 error.unreachableURL = GURL("http://foo"); 1556 error.unreachableURL = GURL("http://foo");
1557 WebFrame* web_frame = GetMainFrame(); 1557 WebFrame* web_frame = GetMainFrame();
1558 1558
1559 // Start a load that will reach provisional state synchronously, 1559 // Start a load that will reach provisional state synchronously,
1560 // but won't complete synchronously. 1560 // but won't complete synchronously.
1561 ViewMsg_Navigate_Params params; 1561 FrameMsg_Navigate_Params params;
1562 params.page_id = -1; 1562 params.page_id = -1;
1563 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 1563 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1564 params.url = GURL("data:text/html,test data"); 1564 params.url = GURL("data:text/html,test data");
1565 view()->OnNavigate(params); 1565 frame()->OnNavigate(params);
1566 1566
1567 // An error occurred. 1567 // An error occurred.
1568 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); 1568 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error);
1569 // Frame should exit view-source mode. 1569 // Frame should exit view-source mode.
1570 EXPECT_FALSE(web_frame->isViewSourceModeEnabled()); 1570 EXPECT_FALSE(web_frame->isViewSourceModeEnabled());
1571 } 1571 }
1572 1572
1573 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { 1573 TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) {
1574 GetMainFrame()->enableViewSourceMode(true); 1574 GetMainFrame()->enableViewSourceMode(true);
1575 WebURLError error; 1575 WebURLError error;
1576 error.domain = WebString::fromUTF8(net::kErrorDomain); 1576 error.domain = WebString::fromUTF8(net::kErrorDomain);
1577 error.reason = net::ERR_ABORTED; 1577 error.reason = net::ERR_ABORTED;
1578 error.unreachableURL = GURL("http://foo"); 1578 error.unreachableURL = GURL("http://foo");
1579 WebFrame* web_frame = GetMainFrame(); 1579 WebFrame* web_frame = GetMainFrame();
1580 1580
1581 // Start a load that will reach provisional state synchronously, 1581 // Start a load that will reach provisional state synchronously,
1582 // but won't complete synchronously. 1582 // but won't complete synchronously.
1583 ViewMsg_Navigate_Params params; 1583 FrameMsg_Navigate_Params params;
1584 params.page_id = -1; 1584 params.page_id = -1;
1585 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 1585 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1586 params.url = GURL("data:text/html,test data"); 1586 params.url = GURL("data:text/html,test data");
1587 view()->OnNavigate(params); 1587 frame()->OnNavigate(params);
1588 1588
1589 // A cancellation occurred. 1589 // A cancellation occurred.
1590 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); 1590 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error);
1591 // Frame should stay in view-source mode. 1591 // Frame should stay in view-source mode.
1592 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); 1592 EXPECT_TRUE(web_frame->isViewSourceModeEnabled());
1593 } 1593 }
1594 1594
1595 // Regression test for http://crbug.com/41562 1595 // Regression test for http://crbug.com/41562
1596 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { 1596 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) {
1597 const GURL invalid_gurl("http://"); 1597 const GURL invalid_gurl("http://");
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
1906 } 1906 }
1907 view()->OnImeConfirmComposition( 1907 view()->OnImeConfirmComposition(
1908 empty_string, gfx::Range::InvalidRange(), false); 1908 empty_string, gfx::Range::InvalidRange(), false);
1909 } 1909 }
1910 #endif 1910 #endif
1911 1911
1912 TEST_F(RenderViewImplTest, ZoomLimit) { 1912 TEST_F(RenderViewImplTest, ZoomLimit) {
1913 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor); 1913 const double kMinZoomLevel = ZoomFactorToZoomLevel(kMinimumZoomFactor);
1914 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor); 1914 const double kMaxZoomLevel = ZoomFactorToZoomLevel(kMaximumZoomFactor);
1915 1915
1916 ViewMsg_Navigate_Params params; 1916 FrameMsg_Navigate_Params params;
1917 params.page_id = -1; 1917 params.page_id = -1;
1918 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 1918 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1919 1919
1920 // Verifies navigation to a URL with preset zoom level indeed sets the level. 1920 // Verifies navigation to a URL with preset zoom level indeed sets the level.
1921 // Regression test for http://crbug.com/139559, where the level was not 1921 // Regression test for http://crbug.com/139559, where the level was not
1922 // properly set when it is out of the default zoom limits of WebView. 1922 // properly set when it is out of the default zoom limits of WebView.
1923 params.url = GURL("data:text/html,min_zoomlimit_test"); 1923 params.url = GURL("data:text/html,min_zoomlimit_test");
1924 view()->OnSetZoomLevelForLoadingURL(params.url, kMinZoomLevel); 1924 view()->OnSetZoomLevelForLoadingURL(params.url, kMinZoomLevel);
1925 view()->OnNavigate(params); 1925 frame()->OnNavigate(params);
1926 ProcessPendingMessages(); 1926 ProcessPendingMessages();
1927 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel()); 1927 EXPECT_DOUBLE_EQ(kMinZoomLevel, view()->GetWebView()->zoomLevel());
1928 1928
1929 // It should work even when the zoom limit is temporarily changed in the page. 1929 // It should work even when the zoom limit is temporarily changed in the page.
1930 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0), 1930 view()->GetWebView()->zoomLimitsChanged(ZoomFactorToZoomLevel(1.0),
1931 ZoomFactorToZoomLevel(1.0)); 1931 ZoomFactorToZoomLevel(1.0));
1932 params.url = GURL("data:text/html,max_zoomlimit_test"); 1932 params.url = GURL("data:text/html,max_zoomlimit_test");
1933 view()->OnSetZoomLevelForLoadingURL(params.url, kMaxZoomLevel); 1933 view()->OnSetZoomLevelForLoadingURL(params.url, kMaxZoomLevel);
1934 view()->OnNavigate(params); 1934 frame()->OnNavigate(params);
1935 ProcessPendingMessages(); 1935 ProcessPendingMessages();
1936 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel()); 1936 EXPECT_DOUBLE_EQ(kMaxZoomLevel, view()->GetWebView()->zoomLevel());
1937 } 1937 }
1938 1938
1939 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) { 1939 TEST_F(RenderViewImplTest, SetEditableSelectionAndComposition) {
1940 // Load an HTML page consisting of an input field. 1940 // Load an HTML page consisting of an input field.
1941 LoadHTML("<html>" 1941 LoadHTML("<html>"
1942 "<head>" 1942 "<head>"
1943 "</head>" 1943 "</head>"
1944 "<body>" 1944 "<body>"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1984 EXPECT_EQ(2, info.selectionStart); 1984 EXPECT_EQ(2, info.selectionStart);
1985 EXPECT_EQ(2, info.selectionEnd); 1985 EXPECT_EQ(2, info.selectionEnd);
1986 } 1986 }
1987 1987
1988 // Test that the navigating specific frames works correctly. 1988 // Test that the navigating specific frames works correctly.
1989 TEST_F(RenderViewImplTest, NavigateFrame) { 1989 TEST_F(RenderViewImplTest, NavigateFrame) {
1990 // Load page A. 1990 // Load page A.
1991 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>"); 1991 LoadHTML("hello <iframe srcdoc='fail' name='frame'></iframe>");
1992 1992
1993 // Navigate the frame only. 1993 // Navigate the frame only.
1994 ViewMsg_Navigate_Params nav_params; 1994 FrameMsg_Navigate_Params nav_params;
1995 nav_params.url = GURL("data:text/html,world"); 1995 nav_params.url = GURL("data:text/html,world");
1996 nav_params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 1996 nav_params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
1997 nav_params.transition = PAGE_TRANSITION_TYPED; 1997 nav_params.transition = PAGE_TRANSITION_TYPED;
1998 nav_params.current_history_list_length = 1; 1998 nav_params.current_history_list_length = 1;
1999 nav_params.current_history_list_offset = 0; 1999 nav_params.current_history_list_offset = 0;
2000 nav_params.pending_history_list_offset = 1; 2000 nav_params.pending_history_list_offset = 1;
2001 nav_params.page_id = -1; 2001 nav_params.page_id = -1;
2002 nav_params.frame_to_navigate = "frame"; 2002 nav_params.frame_to_navigate = "frame";
2003 view()->OnNavigate(nav_params); 2003 frame()->OnNavigate(nav_params);
2004 ProcessPendingMessages(); 2004 ProcessPendingMessages();
2005 2005
2006 // Copy the document content to std::wstring and compare with the 2006 // Copy the document content to std::wstring and compare with the
2007 // expected result. 2007 // expected result.
2008 const int kMaxOutputCharacters = 256; 2008 const int kMaxOutputCharacters = 256;
2009 std::wstring output = base::UTF16ToWideHack( 2009 std::wstring output = base::UTF16ToWideHack(
2010 GetMainFrame()->contentAsText(kMaxOutputCharacters)); 2010 GetMainFrame()->contentAsText(kMaxOutputCharacters));
2011 EXPECT_EQ(output, L"hello \n\nworld"); 2011 EXPECT_EQ(output, L"hello \n\nworld");
2012 } 2012 }
2013 2013
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
2067 public: 2067 public:
2068 virtual void SetUp() OVERRIDE { 2068 virtual void SetUp() OVERRIDE {
2069 SetRendererClientForTesting(&client_); 2069 SetRendererClientForTesting(&client_);
2070 RenderViewTest::SetUp(); 2070 RenderViewTest::SetUp();
2071 } 2071 }
2072 2072
2073 RenderViewImpl* view() { 2073 RenderViewImpl* view() {
2074 return static_cast<RenderViewImpl*>(view_); 2074 return static_cast<RenderViewImpl*>(view_);
2075 } 2075 }
2076 2076
2077 RenderFrameImpl* frame() {
2078 return static_cast<RenderFrameImpl*>(view()->GetMainRenderFrame());
2079 }
2080
2077 private: 2081 private:
2078 class TestContentRendererClient : public ContentRendererClient { 2082 class TestContentRendererClient : public ContentRendererClient {
2079 public: 2083 public:
2080 virtual bool ShouldSuppressErrorPage(RenderFrame* render_frame, 2084 virtual bool ShouldSuppressErrorPage(RenderFrame* render_frame,
2081 const GURL& url) OVERRIDE { 2085 const GURL& url) OVERRIDE {
2082 return url == GURL("http://example.com/suppress"); 2086 return url == GURL("http://example.com/suppress");
2083 } 2087 }
2084 2088
2085 virtual void GetNavigationErrorStrings( 2089 virtual void GetNavigationErrorStrings(
2086 content::RenderView* render_view, 2090 content::RenderView* render_view,
(...skipping 19 matching lines...) Expand all
2106 2110
2107 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) { 2111 TEST_F(SuppressErrorPageTest, MAYBE_Suppresses) {
2108 WebURLError error; 2112 WebURLError error;
2109 error.domain = WebString::fromUTF8(net::kErrorDomain); 2113 error.domain = WebString::fromUTF8(net::kErrorDomain);
2110 error.reason = net::ERR_FILE_NOT_FOUND; 2114 error.reason = net::ERR_FILE_NOT_FOUND;
2111 error.unreachableURL = GURL("http://example.com/suppress"); 2115 error.unreachableURL = GURL("http://example.com/suppress");
2112 WebFrame* web_frame = GetMainFrame(); 2116 WebFrame* web_frame = GetMainFrame();
2113 2117
2114 // Start a load that will reach provisional state synchronously, 2118 // Start a load that will reach provisional state synchronously,
2115 // but won't complete synchronously. 2119 // but won't complete synchronously.
2116 ViewMsg_Navigate_Params params; 2120 FrameMsg_Navigate_Params params;
2117 params.page_id = -1; 2121 params.page_id = -1;
2118 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 2122 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2119 params.url = GURL("data:text/html,test data"); 2123 params.url = GURL("data:text/html,test data");
2120 view()->OnNavigate(params); 2124 frame()->OnNavigate(params);
2121 2125
2122 // An error occurred. 2126 // An error occurred.
2123 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); 2127 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error);
2124 const int kMaxOutputCharacters = 22; 2128 const int kMaxOutputCharacters = 22;
2125 EXPECT_EQ("", UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2129 EXPECT_EQ("", UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2126 } 2130 }
2127 2131
2128 #if defined(OS_ANDROID) 2132 #if defined(OS_ANDROID)
2129 // Crashing on Android: http://crbug.com/311341 2133 // Crashing on Android: http://crbug.com/311341
2130 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress 2134 #define MAYBE_DoesNotSuppress DISABLED_DoesNotSuppress
2131 #else 2135 #else
2132 #define MAYBE_DoesNotSuppress DoesNotSuppress 2136 #define MAYBE_DoesNotSuppress DoesNotSuppress
2133 #endif 2137 #endif
2134 2138
2135 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) { 2139 TEST_F(SuppressErrorPageTest, MAYBE_DoesNotSuppress) {
2136 WebURLError error; 2140 WebURLError error;
2137 error.domain = WebString::fromUTF8(net::kErrorDomain); 2141 error.domain = WebString::fromUTF8(net::kErrorDomain);
2138 error.reason = net::ERR_FILE_NOT_FOUND; 2142 error.reason = net::ERR_FILE_NOT_FOUND;
2139 error.unreachableURL = GURL("http://example.com/dont-suppress"); 2143 error.unreachableURL = GURL("http://example.com/dont-suppress");
2140 WebFrame* web_frame = GetMainFrame(); 2144 WebFrame* web_frame = GetMainFrame();
2141 2145
2142 // Start a load that will reach provisional state synchronously, 2146 // Start a load that will reach provisional state synchronously,
2143 // but won't complete synchronously. 2147 // but won't complete synchronously.
2144 ViewMsg_Navigate_Params params; 2148 FrameMsg_Navigate_Params params;
2145 params.page_id = -1; 2149 params.page_id = -1;
2146 params.navigation_type = ViewMsg_Navigate_Type::NORMAL; 2150 params.navigation_type = FrameMsg_Navigate_Type::NORMAL;
2147 params.url = GURL("data:text/html,test data"); 2151 params.url = GURL("data:text/html,test data");
2148 view()->OnNavigate(params); 2152 frame()->OnNavigate(params);
2149 2153
2150 // An error occurred. 2154 // An error occurred.
2151 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error); 2155 view()->main_render_frame()->didFailProvisionalLoad(web_frame, error);
2152 ProcessPendingMessages(); 2156 ProcessPendingMessages();
2153 const int kMaxOutputCharacters = 22; 2157 const int kMaxOutputCharacters = 22;
2154 EXPECT_EQ("A suffusion of yellow.", 2158 EXPECT_EQ("A suffusion of yellow.",
2155 UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters))); 2159 UTF16ToASCII(web_frame->contentAsText(kMaxOutputCharacters)));
2156 } 2160 }
2157 2161
2158 // Tests if IME API's candidatewindow* events sent from browser are handled 2162 // Tests if IME API's candidatewindow* events sent from browser are handled
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
2240 view()->webview()->clearFocusedElement(); 2244 view()->webview()->clearFocusedElement();
2241 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching( 2245 const IPC::Message* msg3 = render_thread_->sink().GetFirstMessageMatching(
2242 ViewHostMsg_FocusedNodeChanged::ID); 2246 ViewHostMsg_FocusedNodeChanged::ID);
2243 EXPECT_TRUE(msg3); 2247 EXPECT_TRUE(msg3);
2244 ViewHostMsg_FocusedNodeChanged::Read(msg3, &params); 2248 ViewHostMsg_FocusedNodeChanged::Read(msg3, &params);
2245 EXPECT_FALSE(params.a); 2249 EXPECT_FALSE(params.a);
2246 render_thread_->sink().ClearMessages(); 2250 render_thread_->sink().ClearMessages();
2247 } 2251 }
2248 2252
2249 } // namespace content 2253 } // namespace content
OLDNEW
« no previous file with comments | « trunk/src/content/renderer/render_frame_impl.cc ('k') | trunk/src/content/renderer/render_view_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698