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

Side by Side Diff: content/browser/web_contents/web_contents_impl_unittest.cc

Issue 16162003: Introduce content::PageState (again). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 6 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/logging.h" 5 #include "base/logging.h"
6 #include "base/utf_string_conversions.h" 6 #include "base/utf_string_conversions.h"
7 #include "content/browser/renderer_host/frame_tree_node.h" 7 #include "content/browser/renderer_host/frame_tree_node.h"
8 #include "content/browser/renderer_host/render_view_host_impl.h" 8 #include "content/browser/renderer_host/render_view_host_impl.h"
9 #include "content/browser/renderer_host/test_render_view_host.h" 9 #include "content/browser/renderer_host/test_render_view_host.h"
10 #include "content/browser/site_instance_impl.h" 10 #include "content/browser/site_instance_impl.h"
(...skipping 12 matching lines...) Expand all
23 #include "content/public/common/bindings_policy.h" 23 #include "content/public/common/bindings_policy.h"
24 #include "content/public/common/content_constants.h" 24 #include "content/public/common/content_constants.h"
25 #include "content/public/common/url_constants.h" 25 #include "content/public/common/url_constants.h"
26 #include "content/public/test/mock_render_process_host.h" 26 #include "content/public/test/mock_render_process_host.h"
27 #include "content/public/test/test_browser_thread.h" 27 #include "content/public/test/test_browser_thread.h"
28 #include "content/public/test/test_utils.h" 28 #include "content/public/test/test_utils.h"
29 #include "content/test/test_content_browser_client.h" 29 #include "content/test/test_content_browser_client.h"
30 #include "content/test/test_content_client.h" 30 #include "content/test/test_content_client.h"
31 #include "content/test/test_web_contents.h" 31 #include "content/test/test_web_contents.h"
32 #include "testing/gtest/include/gtest/gtest.h" 32 #include "testing/gtest/include/gtest/gtest.h"
33 #include "webkit/glue/webkit_glue.h"
34 33
35 namespace content { 34 namespace content {
36 namespace { 35 namespace {
37 36
38 const char kTestWebUIUrl[] = "chrome://blah"; 37 const char kTestWebUIUrl[] = "chrome://blah";
39 38
40 class WebContentsImplTestWebUIControllerFactory 39 class WebContentsImplTestWebUIControllerFactory
41 : public WebUIControllerFactory { 40 : public WebUIControllerFactory {
42 public: 41 public:
43 virtual WebUIController* CreateWebUIControllerForURL( 42 virtual WebUIController* CreateWebUIControllerForURL(
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 // longer swapped out. 1015 // longer swapped out.
1017 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack()); 1016 EXPECT_FALSE(orig_rvh->is_waiting_for_beforeunload_ack());
1018 SiteInstance* instance2 = contents()->GetSiteInstance(); 1017 SiteInstance* instance2 = contents()->GetSiteInstance();
1019 EXPECT_FALSE(contents()->cross_navigation_pending()); 1018 EXPECT_FALSE(contents()->cross_navigation_pending());
1020 EXPECT_EQ(orig_rvh, rvh()); 1019 EXPECT_EQ(orig_rvh, rvh());
1021 EXPECT_FALSE(orig_rvh->is_swapped_out()); 1020 EXPECT_FALSE(orig_rvh->is_swapped_out());
1022 EXPECT_EQ(instance1, instance2); 1021 EXPECT_EQ(instance1, instance2);
1023 EXPECT_TRUE(contents()->GetPendingRenderViewHost() == NULL); 1022 EXPECT_TRUE(contents()->GetPendingRenderViewHost() == NULL);
1024 } 1023 }
1025 1024
1026 // Test that NavigationEntries have the correct content state after going 1025 // Test that NavigationEntries have the correct page state after going
1027 // forward and back. Prevents regression for bug 1116137. 1026 // forward and back. Prevents regression for bug 1116137.
1028 TEST_F(WebContentsImplTest, NavigationEntryContentState) { 1027 TEST_F(WebContentsImplTest, NavigationEntryContentState) {
1029 TestRenderViewHost* orig_rvh = test_rvh(); 1028 TestRenderViewHost* orig_rvh = test_rvh();
1030 1029
1031 // Navigate to URL. There should be no committed entry yet. 1030 // Navigate to URL. There should be no committed entry yet.
1032 const GURL url("http://www.google.com"); 1031 const GURL url("http://www.google.com");
1033 controller().LoadURL(url, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1032 controller().LoadURL(url, Referrer(), PAGE_TRANSITION_TYPED, std::string());
1034 NavigationEntry* entry = controller().GetLastCommittedEntry(); 1033 NavigationEntry* entry = controller().GetLastCommittedEntry();
1035 EXPECT_TRUE(entry == NULL); 1034 EXPECT_TRUE(entry == NULL);
1036 1035
1037 // Committed entry should have content state after DidNavigate. 1036 // Committed entry should have page state after DidNavigate.
1038 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED); 1037 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED);
1039 entry = controller().GetLastCommittedEntry(); 1038 entry = controller().GetLastCommittedEntry();
1040 EXPECT_FALSE(entry->GetContentState().empty()); 1039 EXPECT_TRUE(entry->GetPageState().IsValid());
1041 1040
1042 // Navigate to same site. 1041 // Navigate to same site.
1043 const GURL url2("http://images.google.com"); 1042 const GURL url2("http://images.google.com");
1044 controller().LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string()); 1043 controller().LoadURL(url2, Referrer(), PAGE_TRANSITION_TYPED, std::string());
1045 entry = controller().GetLastCommittedEntry(); 1044 entry = controller().GetLastCommittedEntry();
1046 EXPECT_FALSE(entry->GetContentState().empty()); 1045 EXPECT_TRUE(entry->GetPageState().IsValid());
1047 1046
1048 // Committed entry should have content state after DidNavigate. 1047 // Committed entry should have page state after DidNavigate.
1049 contents()->TestDidNavigate(orig_rvh, 2, url2, PAGE_TRANSITION_TYPED); 1048 contents()->TestDidNavigate(orig_rvh, 2, url2, PAGE_TRANSITION_TYPED);
1050 entry = controller().GetLastCommittedEntry(); 1049 entry = controller().GetLastCommittedEntry();
1051 EXPECT_FALSE(entry->GetContentState().empty()); 1050 EXPECT_TRUE(entry->GetPageState().IsValid());
1052 1051
1053 // Now go back. Committed entry should still have content state. 1052 // Now go back. Committed entry should still have page state.
1054 controller().GoBack(); 1053 controller().GoBack();
1055 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED); 1054 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED);
1056 entry = controller().GetLastCommittedEntry(); 1055 entry = controller().GetLastCommittedEntry();
1057 EXPECT_FALSE(entry->GetContentState().empty()); 1056 EXPECT_TRUE(entry->GetPageState().IsValid());
1058 } 1057 }
1059 1058
1060 // Test that NavigationEntries have the correct content state and SiteInstance 1059 // Test that NavigationEntries have the correct page state and SiteInstance
1061 // state after opening a new window to about:blank. Prevents regression for 1060 // state after opening a new window to about:blank. Prevents regression for
1062 // bugs b/1116137 and http://crbug.com/111975. 1061 // bugs b/1116137 and http://crbug.com/111975.
1063 TEST_F(WebContentsImplTest, NavigationEntryContentStateNewWindow) { 1062 TEST_F(WebContentsImplTest, NavigationEntryContentStateNewWindow) {
1064 TestRenderViewHost* orig_rvh = test_rvh(); 1063 TestRenderViewHost* orig_rvh = test_rvh();
1065 1064
1066 // When opening a new window, it is navigated to about:blank internally. 1065 // When opening a new window, it is navigated to about:blank internally.
1067 // Currently, this results in two DidNavigate events. 1066 // Currently, this results in two DidNavigate events.
1068 const GURL url(kAboutBlankURL); 1067 const GURL url(kAboutBlankURL);
1069 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED); 1068 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED);
1070 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED); 1069 contents()->TestDidNavigate(orig_rvh, 1, url, PAGE_TRANSITION_TYPED);
1071 1070
1072 // Should have a content state here. 1071 // Should have a page state here.
1073 NavigationEntry* entry = controller().GetLastCommittedEntry(); 1072 NavigationEntry* entry = controller().GetLastCommittedEntry();
1074 EXPECT_FALSE(entry->GetContentState().empty()); 1073 EXPECT_TRUE(entry->GetPageState().IsValid());
1075 1074
1076 // The SiteInstance should be available for other navigations to use. 1075 // The SiteInstance should be available for other navigations to use.
1077 NavigationEntryImpl* entry_impl = 1076 NavigationEntryImpl* entry_impl =
1078 NavigationEntryImpl::FromNavigationEntry(entry); 1077 NavigationEntryImpl::FromNavigationEntry(entry);
1079 EXPECT_FALSE(entry_impl->site_instance()->HasSite()); 1078 EXPECT_FALSE(entry_impl->site_instance()->HasSite());
1080 int32 site_instance_id = entry_impl->site_instance()->GetId(); 1079 int32 site_instance_id = entry_impl->site_instance()->GetId();
1081 1080
1082 // Navigating to a normal page should not cause a process swap. 1081 // Navigating to a normal page should not cause a process swap.
1083 const GURL new_url("http://www.google.com"); 1082 const GURL new_url("http://www.google.com");
1084 controller().LoadURL(new_url, Referrer(), 1083 controller().LoadURL(new_url, Referrer(),
(...skipping 1043 matching lines...) Expand 10 before | Expand all | Expand 10 after
2128 EXPECT_EQ(0UL, deep_tree->child_at(0)->child_at(0)->child_count()); 2127 EXPECT_EQ(0UL, deep_tree->child_at(0)->child_at(0)->child_count());
2129 2128
2130 contents()->OnFrameDetached(16, 265); 2129 contents()->OnFrameDetached(16, 265);
2131 EXPECT_EQ(4UL, root->child_at(2)->child_count()); 2130 EXPECT_EQ(4UL, root->child_at(2)->child_count());
2132 2131
2133 contents()->OnFrameDetached(5, 15); 2132 contents()->OnFrameDetached(5, 15);
2134 EXPECT_EQ(2UL, root->child_count()); 2133 EXPECT_EQ(2UL, root->child_count());
2135 } 2134 }
2136 2135
2137 } // namespace content 2136 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698