| 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" |
| (...skipping 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 791 ASSERT_TRUE(msg); | 791 ASSERT_TRUE(msg); |
| 792 ViewHostMsg_UpdateState::Read(msg, ¶m); | 792 ViewHostMsg_UpdateState::Read(msg, ¶m); |
| 793 int page_id = param.a; | 793 int page_id = param.a; |
| 794 PageState state = param.b; | 794 PageState state = param.b; |
| 795 EXPECT_EQ(page_id_C, page_id); | 795 EXPECT_EQ(page_id_C, page_id); |
| 796 EXPECT_NE(state_A, state); | 796 EXPECT_NE(state_A, state); |
| 797 EXPECT_NE(state_B, state); | 797 EXPECT_NE(state_B, state); |
| 798 EXPECT_EQ(state_C, state); | 798 EXPECT_EQ(state_C, state); |
| 799 } | 799 } |
| 800 | 800 |
| 801 // Test that the history_page_ids_ list can reveal when a stale back/forward | 801 // Test that stale back/forward navigations arriving from the browser are |
| 802 // navigation arrives from the browser and can be ignored. See | 802 // ignored. See http://crbug.com/86758. |
| 803 // http://crbug.com/86758. | |
| 804 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { | 803 TEST_F(RenderViewImplTest, StaleNavigationsIgnored) { |
| 805 // Load page A. | 804 // Load page A. |
| 806 LoadHTML("<div>Page A</div>"); | 805 LoadHTML("<div>Page A</div>"); |
| 807 EXPECT_EQ(1, view()->history_list_length_); | 806 EXPECT_EQ(1, view()->history_list_length_); |
| 808 EXPECT_EQ(0, view()->history_list_offset_); | 807 EXPECT_EQ(0, view()->history_list_offset_); |
| 809 EXPECT_EQ(1, view()->history_page_ids_[0]); | |
| 810 | 808 |
| 811 // Load page B, which will trigger an UpdateState message for page A. | 809 // Load page B, which will trigger an UpdateState message for page A. |
| 812 LoadHTML("<div>Page B</div>"); | 810 LoadHTML("<div>Page B</div>"); |
| 813 EXPECT_EQ(2, view()->history_list_length_); | 811 EXPECT_EQ(2, view()->history_list_length_); |
| 814 EXPECT_EQ(1, view()->history_list_offset_); | 812 EXPECT_EQ(1, view()->history_list_offset_); |
| 815 EXPECT_EQ(2, view()->history_page_ids_[1]); | |
| 816 | 813 |
| 817 // Check for a valid UpdateState message for page A. | 814 // Check for a valid UpdateState message for page A. |
| 818 ProcessPendingMessages(); | 815 ProcessPendingMessages(); |
| 819 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | 816 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( |
| 820 ViewHostMsg_UpdateState::ID); | 817 ViewHostMsg_UpdateState::ID); |
| 821 ASSERT_TRUE(msg_A); | 818 ASSERT_TRUE(msg_A); |
| 822 ViewHostMsg_UpdateState::Param param; | 819 ViewHostMsg_UpdateState::Param param; |
| 823 ViewHostMsg_UpdateState::Read(msg_A, ¶m); | 820 ViewHostMsg_UpdateState::Read(msg_A, ¶m); |
| 824 int page_id_A = param.a; | 821 int page_id_A = param.a; |
| 825 PageState state_A = param.b; | 822 PageState state_A = param.b; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 837 params_A.commit_params.page_state = state_A; | 834 params_A.commit_params.page_state = state_A; |
| 838 params_A.commit_params.browser_navigation_start = | 835 params_A.commit_params.browser_navigation_start = |
| 839 base::TimeTicks::FromInternalValue(1); | 836 base::TimeTicks::FromInternalValue(1); |
| 840 frame()->OnNavigate(params_A); | 837 frame()->OnNavigate(params_A); |
| 841 ProcessPendingMessages(); | 838 ProcessPendingMessages(); |
| 842 | 839 |
| 843 // A new navigation commits, clearing the forward history. | 840 // A new navigation commits, clearing the forward history. |
| 844 LoadHTML("<div>Page C</div>"); | 841 LoadHTML("<div>Page C</div>"); |
| 845 EXPECT_EQ(2, view()->history_list_length_); | 842 EXPECT_EQ(2, view()->history_list_length_); |
| 846 EXPECT_EQ(1, view()->history_list_offset_); | 843 EXPECT_EQ(1, view()->history_list_offset_); |
| 847 EXPECT_EQ(3, view()->history_page_ids_[1]); | 844 EXPECT_EQ(3, view()->page_id_); // page C is now page id 3 |
| 848 | 845 |
| 849 // The browser then sends a stale navigation to B, which should be ignored. | 846 // The browser then sends a stale navigation to B, which should be ignored. |
| 850 FrameMsg_Navigate_Params params_B; | 847 FrameMsg_Navigate_Params params_B; |
| 851 params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | 848 params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; |
| 852 params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | 849 params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; |
| 853 params_B.current_history_list_length = 2; | 850 params_B.current_history_list_length = 2; |
| 854 params_B.current_history_list_offset = 0; | 851 params_B.current_history_list_offset = 0; |
| 855 params_B.pending_history_list_offset = 1; | 852 params_B.pending_history_list_offset = 1; |
| 856 params_B.page_id = 2; | 853 params_B.page_id = 2; |
| 857 params_B.commit_params.page_state = | 854 params_B.commit_params.page_state = |
| 858 state_A; // Doesn't matter, just has to be present. | 855 state_A; // Doesn't matter, just has to be present. |
| 859 params_B.commit_params.browser_navigation_start = | 856 params_B.commit_params.browser_navigation_start = |
| 860 base::TimeTicks::FromInternalValue(1); | 857 base::TimeTicks::FromInternalValue(1); |
| 861 frame()->OnNavigate(params_B); | 858 frame()->OnNavigate(params_B); |
| 862 | 859 |
| 863 // State should be unchanged. | 860 // State should be unchanged. |
| 864 EXPECT_EQ(2, view()->history_list_length_); | 861 EXPECT_EQ(2, view()->history_list_length_); |
| 865 EXPECT_EQ(1, view()->history_list_offset_); | 862 EXPECT_EQ(1, view()->history_list_offset_); |
| 866 EXPECT_EQ(3, view()->history_page_ids_[1]); | 863 EXPECT_EQ(3, view()->page_id_); // page C, not page B |
| 867 | 864 |
| 868 // Check for a valid DidDropNavigation message. | 865 // Check for a valid DidDropNavigation message. |
| 869 ProcessPendingMessages(); | 866 ProcessPendingMessages(); |
| 870 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( | 867 const IPC::Message* msg = render_thread_->sink().GetUniqueMessageMatching( |
| 871 FrameHostMsg_DidDropNavigation::ID); | 868 FrameHostMsg_DidDropNavigation::ID); |
| 872 ASSERT_TRUE(msg); | 869 ASSERT_TRUE(msg); |
| 873 render_thread_->sink().ClearMessages(); | 870 render_thread_->sink().ClearMessages(); |
| 874 } | 871 } |
| 875 | 872 |
| 876 // Test that we do not ignore navigations after the entry limit is reached, | |
| 877 // in which case the browser starts dropping entries from the front. In this | |
| 878 // case, we'll see a page_id mismatch but the RenderView's id will be older, | |
| 879 // not newer, than params.page_id. Use this as a cue that we should update the | |
| 880 // state and not treat it like a navigation to a cropped forward history item. | |
| 881 // See http://crbug.com/89798. | |
| 882 TEST_F(RenderViewImplTest, DontIgnoreBackAfterNavEntryLimit) { | |
| 883 // Load page A. | |
| 884 LoadHTML("<div>Page A</div>"); | |
| 885 EXPECT_EQ(1, view()->history_list_length_); | |
| 886 EXPECT_EQ(0, view()->history_list_offset_); | |
| 887 EXPECT_EQ(1, view()->history_page_ids_[0]); | |
| 888 | |
| 889 // Load page B, which will trigger an UpdateState message for page A. | |
| 890 LoadHTML("<div>Page B</div>"); | |
| 891 EXPECT_EQ(2, view()->history_list_length_); | |
| 892 EXPECT_EQ(1, view()->history_list_offset_); | |
| 893 EXPECT_EQ(2, view()->history_page_ids_[1]); | |
| 894 | |
| 895 // Check for a valid UpdateState message for page A. | |
| 896 ProcessPendingMessages(); | |
| 897 const IPC::Message* msg_A = render_thread_->sink().GetUniqueMessageMatching( | |
| 898 ViewHostMsg_UpdateState::ID); | |
| 899 ASSERT_TRUE(msg_A); | |
| 900 ViewHostMsg_UpdateState::Param param; | |
| 901 ViewHostMsg_UpdateState::Read(msg_A, ¶m); | |
| 902 int page_id_A = param.a; | |
| 903 PageState state_A = param.b; | |
| 904 EXPECT_EQ(1, page_id_A); | |
| 905 render_thread_->sink().ClearMessages(); | |
| 906 | |
| 907 // Load page C, which will trigger an UpdateState message for page B. | |
| 908 LoadHTML("<div>Page C</div>"); | |
| 909 EXPECT_EQ(3, view()->history_list_length_); | |
| 910 EXPECT_EQ(2, view()->history_list_offset_); | |
| 911 EXPECT_EQ(3, view()->history_page_ids_[2]); | |
| 912 | |
| 913 // Check for a valid UpdateState message for page B. | |
| 914 ProcessPendingMessages(); | |
| 915 const IPC::Message* msg_B = render_thread_->sink().GetUniqueMessageMatching( | |
| 916 ViewHostMsg_UpdateState::ID); | |
| 917 ASSERT_TRUE(msg_B); | |
| 918 ViewHostMsg_UpdateState::Read(msg_B, ¶m); | |
| 919 int page_id_B = param.a; | |
| 920 PageState state_B = param.b; | |
| 921 EXPECT_EQ(2, page_id_B); | |
| 922 render_thread_->sink().ClearMessages(); | |
| 923 | |
| 924 // Suppose the browser has limited the number of NavigationEntries to 2. | |
| 925 // It has now dropped the first entry, but the renderer isn't notified. | |
| 926 // Ensure that going back to page B (page_id 2) at offset 0 is successful. | |
| 927 FrameMsg_Navigate_Params params_B; | |
| 928 params_B.common_params.navigation_type = FrameMsg_Navigate_Type::NORMAL; | |
| 929 params_B.common_params.transition = ui::PAGE_TRANSITION_FORWARD_BACK; | |
| 930 params_B.current_history_list_length = 2; | |
| 931 params_B.current_history_list_offset = 1; | |
| 932 params_B.pending_history_list_offset = 0; | |
| 933 params_B.page_id = 2; | |
| 934 params_B.commit_params.page_state = state_B; | |
| 935 params_B.commit_params.browser_navigation_start = | |
| 936 base::TimeTicks::FromInternalValue(1); | |
| 937 frame()->OnNavigate(params_B); | |
| 938 ProcessPendingMessages(); | |
| 939 | |
| 940 EXPECT_EQ(2, view()->history_list_length_); | |
| 941 EXPECT_EQ(0, view()->history_list_offset_); | |
| 942 EXPECT_EQ(2, view()->history_page_ids_[0]); | |
| 943 } | |
| 944 | |
| 945 // Test that our IME backend sends a notification message when the input focus | 873 // Test that our IME backend sends a notification message when the input focus |
| 946 // changes. | 874 // changes. |
| 947 TEST_F(RenderViewImplTest, OnImeTypeChanged) { | 875 TEST_F(RenderViewImplTest, OnImeTypeChanged) { |
| 948 // Enable our IME backend code. | 876 // Enable our IME backend code. |
| 949 view()->OnSetInputMethodActive(true); | 877 view()->OnSetInputMethodActive(true); |
| 950 | 878 |
| 951 // Load an HTML page consisting of two input fields. | 879 // Load an HTML page consisting of two input fields. |
| 952 view()->set_send_content_state_immediately(true); | 880 view()->set_send_content_state_immediately(true); |
| 953 LoadHTML("<html>" | 881 LoadHTML("<html>" |
| 954 "<head>" | 882 "<head>" |
| (...skipping 722 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1677 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); | 1605 EXPECT_TRUE(web_frame->isViewSourceModeEnabled()); |
| 1678 } | 1606 } |
| 1679 | 1607 |
| 1680 // Regression test for http://crbug.com/41562 | 1608 // Regression test for http://crbug.com/41562 |
| 1681 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { | 1609 TEST_F(RenderViewImplTest, UpdateTargetURLWithInvalidURL) { |
| 1682 const GURL invalid_gurl("http://"); | 1610 const GURL invalid_gurl("http://"); |
| 1683 view()->setMouseOverURL(blink::WebURL(invalid_gurl)); | 1611 view()->setMouseOverURL(blink::WebURL(invalid_gurl)); |
| 1684 EXPECT_EQ(invalid_gurl, view()->target_url_); | 1612 EXPECT_EQ(invalid_gurl, view()->target_url_); |
| 1685 } | 1613 } |
| 1686 | 1614 |
| 1687 TEST_F(RenderViewImplTest, SetHistoryLengthAndPrune) { | 1615 TEST_F(RenderViewImplTest, SetHistoryLengthAndOffset) { |
| 1688 int expected_page_id = -1; | 1616 // No history to merge; one committed page. |
| 1617 view()->OnSetHistoryOffsetAndLength(0, 1); |
| 1618 EXPECT_EQ(1, view()->history_list_length_); |
| 1619 EXPECT_EQ(0, view()->history_list_offset_); |
| 1689 | 1620 |
| 1690 // No history to merge and no committed pages. | 1621 // History of length 1 to merge; one committed page. |
| 1691 view()->OnSetHistoryLengthAndPrune(0, -1); | 1622 view()->OnSetHistoryOffsetAndLength(1, 2); |
| 1692 EXPECT_EQ(0, view()->history_list_length_); | |
| 1693 EXPECT_EQ(-1, view()->history_list_offset_); | |
| 1694 | |
| 1695 // History to merge and no committed pages. | |
| 1696 view()->OnSetHistoryLengthAndPrune(2, -1); | |
| 1697 EXPECT_EQ(2, view()->history_list_length_); | 1623 EXPECT_EQ(2, view()->history_list_length_); |
| 1698 EXPECT_EQ(1, view()->history_list_offset_); | 1624 EXPECT_EQ(1, view()->history_list_offset_); |
| 1699 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1700 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1701 ClearHistory(); | |
| 1702 | |
| 1703 blink::WebHistoryItem item; | |
| 1704 item.initialize(); | |
| 1705 | |
| 1706 // No history to merge and a committed page to be kept. | |
| 1707 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1708 item, | |
| 1709 blink::WebStandardCommit); | |
| 1710 expected_page_id = view()->page_id_; | |
| 1711 view()->OnSetHistoryLengthAndPrune(0, expected_page_id); | |
| 1712 EXPECT_EQ(1, view()->history_list_length_); | |
| 1713 EXPECT_EQ(0, view()->history_list_offset_); | |
| 1714 EXPECT_EQ(expected_page_id, view()->history_page_ids_[0]); | |
| 1715 ClearHistory(); | |
| 1716 | |
| 1717 // No history to merge and a committed page to be pruned. | |
| 1718 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1719 item, | |
| 1720 blink::WebStandardCommit); | |
| 1721 expected_page_id = view()->page_id_; | |
| 1722 view()->OnSetHistoryLengthAndPrune(0, expected_page_id + 1); | |
| 1723 EXPECT_EQ(0, view()->history_list_length_); | |
| 1724 EXPECT_EQ(-1, view()->history_list_offset_); | |
| 1725 ClearHistory(); | |
| 1726 | |
| 1727 // No history to merge and a committed page that the browser was unaware of. | |
| 1728 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1729 item, | |
| 1730 blink::WebStandardCommit); | |
| 1731 expected_page_id = view()->page_id_; | |
| 1732 view()->OnSetHistoryLengthAndPrune(0, -1); | |
| 1733 EXPECT_EQ(1, view()->history_list_length_); | |
| 1734 EXPECT_EQ(0, view()->history_list_offset_); | |
| 1735 EXPECT_EQ(expected_page_id, view()->history_page_ids_[0]); | |
| 1736 ClearHistory(); | |
| 1737 | |
| 1738 // History to merge and a committed page to be kept. | |
| 1739 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1740 item, | |
| 1741 blink::WebStandardCommit); | |
| 1742 expected_page_id = view()->page_id_; | |
| 1743 view()->OnSetHistoryLengthAndPrune(2, expected_page_id); | |
| 1744 EXPECT_EQ(3, view()->history_list_length_); | |
| 1745 EXPECT_EQ(2, view()->history_list_offset_); | |
| 1746 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1747 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1748 EXPECT_EQ(expected_page_id, view()->history_page_ids_[2]); | |
| 1749 ClearHistory(); | |
| 1750 | |
| 1751 // History to merge and a committed page to be pruned. | |
| 1752 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1753 item, | |
| 1754 blink::WebStandardCommit); | |
| 1755 expected_page_id = view()->page_id_; | |
| 1756 view()->OnSetHistoryLengthAndPrune(2, expected_page_id + 1); | |
| 1757 EXPECT_EQ(2, view()->history_list_length_); | |
| 1758 EXPECT_EQ(1, view()->history_list_offset_); | |
| 1759 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1760 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1761 ClearHistory(); | |
| 1762 | |
| 1763 // History to merge and a committed page that the browser was unaware of. | |
| 1764 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1765 item, | |
| 1766 blink::WebStandardCommit); | |
| 1767 expected_page_id = view()->page_id_; | |
| 1768 view()->OnSetHistoryLengthAndPrune(2, -1); | |
| 1769 EXPECT_EQ(3, view()->history_list_length_); | |
| 1770 EXPECT_EQ(2, view()->history_list_offset_); | |
| 1771 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1772 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1773 EXPECT_EQ(expected_page_id, view()->history_page_ids_[2]); | |
| 1774 ClearHistory(); | |
| 1775 | |
| 1776 int expected_page_id_2 = -1; | |
| 1777 | |
| 1778 // No history to merge and two committed pages, both to be kept. | |
| 1779 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1780 item, | |
| 1781 blink::WebStandardCommit); | |
| 1782 expected_page_id = view()->page_id_; | |
| 1783 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1784 item, | |
| 1785 blink::WebStandardCommit); | |
| 1786 expected_page_id_2 = view()->page_id_; | |
| 1787 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1788 view()->OnSetHistoryLengthAndPrune(0, expected_page_id); | |
| 1789 EXPECT_EQ(2, view()->history_list_length_); | |
| 1790 EXPECT_EQ(1, view()->history_list_offset_); | |
| 1791 EXPECT_EQ(expected_page_id, view()->history_page_ids_[0]); | |
| 1792 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[1]); | |
| 1793 ClearHistory(); | |
| 1794 | |
| 1795 // No history to merge and two committed pages, and only the second is kept. | |
| 1796 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1797 item, | |
| 1798 blink::WebStandardCommit); | |
| 1799 expected_page_id = view()->page_id_; | |
| 1800 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1801 item, | |
| 1802 blink::WebStandardCommit); | |
| 1803 expected_page_id_2 = view()->page_id_; | |
| 1804 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1805 view()->OnSetHistoryLengthAndPrune(0, expected_page_id_2); | |
| 1806 EXPECT_EQ(1, view()->history_list_length_); | |
| 1807 EXPECT_EQ(0, view()->history_list_offset_); | |
| 1808 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[0]); | |
| 1809 ClearHistory(); | |
| 1810 | |
| 1811 // No history to merge and two committed pages, both of which the browser was | |
| 1812 // unaware of. | |
| 1813 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1814 item, | |
| 1815 blink::WebStandardCommit); | |
| 1816 expected_page_id = view()->page_id_; | |
| 1817 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1818 item, | |
| 1819 blink::WebStandardCommit); | |
| 1820 expected_page_id_2 = view()->page_id_; | |
| 1821 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1822 view()->OnSetHistoryLengthAndPrune(0, -1); | |
| 1823 EXPECT_EQ(2, view()->history_list_length_); | |
| 1824 EXPECT_EQ(1, view()->history_list_offset_); | |
| 1825 EXPECT_EQ(expected_page_id, view()->history_page_ids_[0]); | |
| 1826 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[1]); | |
| 1827 ClearHistory(); | |
| 1828 | |
| 1829 // History to merge and two committed pages, both to be kept. | |
| 1830 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1831 item, | |
| 1832 blink::WebStandardCommit); | |
| 1833 expected_page_id = view()->page_id_; | |
| 1834 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1835 item, | |
| 1836 blink::WebStandardCommit); | |
| 1837 expected_page_id_2 = view()->page_id_; | |
| 1838 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1839 view()->OnSetHistoryLengthAndPrune(2, expected_page_id); | |
| 1840 EXPECT_EQ(4, view()->history_list_length_); | |
| 1841 EXPECT_EQ(3, view()->history_list_offset_); | |
| 1842 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1843 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1844 EXPECT_EQ(expected_page_id, view()->history_page_ids_[2]); | |
| 1845 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[3]); | |
| 1846 ClearHistory(); | |
| 1847 | |
| 1848 // History to merge and two committed pages, and only the second is kept. | |
| 1849 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1850 item, | |
| 1851 blink::WebStandardCommit); | |
| 1852 expected_page_id = view()->page_id_; | |
| 1853 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1854 item, | |
| 1855 blink::WebStandardCommit); | |
| 1856 expected_page_id_2 = view()->page_id_; | |
| 1857 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1858 view()->OnSetHistoryLengthAndPrune(2, expected_page_id_2); | |
| 1859 EXPECT_EQ(3, view()->history_list_length_); | |
| 1860 EXPECT_EQ(2, view()->history_list_offset_); | |
| 1861 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1862 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1863 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[2]); | |
| 1864 ClearHistory(); | |
| 1865 | |
| 1866 // History to merge and two committed pages, both of which the browser was | |
| 1867 // unaware of. | |
| 1868 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1869 item, | |
| 1870 blink::WebStandardCommit); | |
| 1871 expected_page_id = view()->page_id_; | |
| 1872 frame()->didCommitProvisionalLoad(GetMainFrame(), | |
| 1873 item, | |
| 1874 blink::WebStandardCommit); | |
| 1875 expected_page_id_2 = view()->page_id_; | |
| 1876 EXPECT_GT(expected_page_id_2, expected_page_id); | |
| 1877 view()->OnSetHistoryLengthAndPrune(2, -1); | |
| 1878 EXPECT_EQ(4, view()->history_list_length_); | |
| 1879 EXPECT_EQ(3, view()->history_list_offset_); | |
| 1880 EXPECT_EQ(-1, view()->history_page_ids_[0]); | |
| 1881 EXPECT_EQ(-1, view()->history_page_ids_[1]); | |
| 1882 EXPECT_EQ(expected_page_id, view()->history_page_ids_[2]); | |
| 1883 EXPECT_EQ(expected_page_id_2, view()->history_page_ids_[3]); | |
| 1884 } | 1625 } |
| 1885 | 1626 |
| 1886 TEST_F(RenderViewImplTest, ContextMenu) { | 1627 TEST_F(RenderViewImplTest, ContextMenu) { |
| 1887 LoadHTML("<div>Page A</div>"); | 1628 LoadHTML("<div>Page A</div>"); |
| 1888 | 1629 |
| 1889 // Create a right click in the center of the iframe. (I'm hoping this will | 1630 // Create a right click in the center of the iframe. (I'm hoping this will |
| 1890 // make this a bit more robust in case of some other formatting or other bug.) | 1631 // make this a bit more robust in case of some other formatting or other bug.) |
| 1891 WebMouseEvent mouse_event; | 1632 WebMouseEvent mouse_event; |
| 1892 mouse_event.type = WebInputEvent::MouseDown; | 1633 mouse_event.type = WebInputEvent::MouseDown; |
| 1893 mouse_event.button = WebMouseEvent::ButtonRight; | 1634 mouse_event.button = WebMouseEvent::ButtonRight; |
| (...skipping 649 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2543 | 2284 |
| 2544 gfx::Size initial_size_; | 2285 gfx::Size initial_size_; |
| 2545 }; | 2286 }; |
| 2546 | 2287 |
| 2547 TEST_F(RenderViewImplInitialSizeTest, InitialSize) { | 2288 TEST_F(RenderViewImplInitialSizeTest, InitialSize) { |
| 2548 ASSERT_EQ(initial_size_, view_->GetSize()); | 2289 ASSERT_EQ(initial_size_, view_->GetSize()); |
| 2549 ASSERT_EQ(initial_size_, gfx::Size(view_->GetWebView()->size())); | 2290 ASSERT_EQ(initial_size_, gfx::Size(view_->GetWebView()->size())); |
| 2550 } | 2291 } |
| 2551 | 2292 |
| 2552 } // namespace content | 2293 } // namespace content |
| OLD | NEW |