Index: chrome/browser/dom_ui/dom_ui_unittest.cc |
=================================================================== |
--- chrome/browser/dom_ui/dom_ui_unittest.cc (revision 12684) |
+++ chrome/browser/dom_ui/dom_ui_unittest.cc (working copy) |
@@ -1,116 +1,131 @@ |
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/dom_ui/new_tab_ui.h" |
-#include "chrome/browser/renderer_host/test_render_view_host.h" |
-#include "chrome/common/url_constants.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-class DOMUITest : public RenderViewHostTestHarness { |
- public: |
- DOMUITest() {} |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DOMUITest); |
-}; |
- |
-// Tests that the New Tab Page flags are correctly set and propogated by |
-// WebContents when we first navigate to a DOM UI page, then to a standard |
-// non-DOM-UI page. |
-TEST_F(DOMUITest, DOMUIToStandard) { |
- // Start a pending load. |
- GURL new_tab_url(chrome::kChromeUINewTabURL); |
- controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
- |
- // The navigation entry should be pending with no committed entry. |
- ASSERT_TRUE(controller()->GetPendingEntry()); |
- ASSERT_FALSE(controller()->GetLastCommittedEntry()); |
- |
- // Check the things the pending DOM UI should have set. |
- EXPECT_FALSE(contents()->ShouldDisplayURL()); |
- EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_TRUE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_TRUE(contents()->FocusLocationBarByDefault()); |
- |
- // Now commit the load. |
- rvh()->SendNavigate(1, new_tab_url); |
- |
- // The same flags should be set as before now that the load has committed. |
- // Note that the location bar isn't focused now. Once the load commits, we |
- // don't care about this flag, so this value is OK. |
- EXPECT_FALSE(contents()->ShouldDisplayURL()); |
- EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_TRUE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
- |
- // Start a pending navigation to a regular page. |
- GURL next_url("http://google.com/"); |
- controller()->LoadURL(next_url, GURL(), PageTransition::LINK); |
- |
- // Check the flags. Some should reflect the new page (URL, title), some should |
- // reflect the old one (bookmark bar) until it has committed. |
- EXPECT_TRUE(contents()->ShouldDisplayURL()); |
- EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_TRUE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
- |
- // Commit the regular page load. Note that we must send it to the "pending" |
- // RenderViewHost, since this transition will also cause a process transition, |
- // and our RVH pointer will be the "committed" one. |
- static_cast<TestRenderViewHost*>( |
- contents()->render_manager()->pending_render_view_host())->SendNavigate( |
- 2, next_url); |
- |
- // The state should now reflect a regular page. |
- EXPECT_TRUE(contents()->ShouldDisplayURL()); |
- EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
-} |
- |
-TEST_F(DOMUITest, DOMUIToDOMUI) { |
- // Do a load (this state is tested above). |
- GURL new_tab_url(chrome::kChromeUINewTabURL); |
- controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
- rvh()->SendNavigate(1, new_tab_url); |
- |
- // Start another pending load of the new tab page. |
- controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
- rvh()->SendNavigate(2, new_tab_url); |
- |
- // The flags should be the same as the non-pending state. |
- EXPECT_FALSE(contents()->ShouldDisplayURL()); |
- EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_TRUE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
-} |
- |
-TEST_F(DOMUITest, StandardToDOMUI) { |
- // Start a pending navigation to a regular page. |
- GURL std_url("http://google.com/"); |
- controller()->LoadURL(std_url, GURL(), PageTransition::LINK); |
- |
- // The state should now reflect the default. |
- EXPECT_TRUE(contents()->ShouldDisplayURL()); |
- EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
- |
- // Commit the load, the state should be the same. |
- rvh()->SendNavigate(1, std_url); |
- EXPECT_TRUE(contents()->ShouldDisplayURL()); |
- EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
- |
- // Start a pending load for a DOMUI. |
- GURL new_tab_url(chrome::kChromeUINewTabURL); |
- controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
- EXPECT_FALSE(contents()->ShouldDisplayURL()); |
- EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
- EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
- EXPECT_TRUE(contents()->FocusLocationBarByDefault()); |
- |
- // Committing DOM UI is tested above. |
-} |
+// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/browser/dom_ui/new_tab_ui.h" |
+#include "chrome/browser/renderer_host/test_render_view_host.h" |
+#include "chrome/common/url_constants.h" |
+#include "testing/gtest/include/gtest/gtest.h" |
+ |
+class DOMUITest : public RenderViewHostTestHarness { |
+ public: |
+ DOMUITest() {} |
+ |
+ // Tests navigating with a DOM UI from a fresh (nothing pending or committed) |
+ // state, through pending, committed, then another navigation. The first page |
+ // ID that we should use is passed as a parameter. We'll use the next two |
+ // values. This must be increasing for the life of the tests. |
+ static void DoNavigationTest(WebContents* contents, int page_id) { |
+ NavigationController* controller = contents->controller(); |
+ |
+ // Start a pending load. |
+ GURL new_tab_url(chrome::kChromeUINewTabURL); |
+ controller->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
+ |
+ // The navigation entry should be pending with no committed entry. |
+ ASSERT_TRUE(controller->GetPendingEntry()); |
+ ASSERT_FALSE(controller->GetLastCommittedEntry()); |
+ |
+ // Check the things the pending DOM UI should have set. |
+ EXPECT_FALSE(contents->ShouldDisplayURL()); |
+ EXPECT_FALSE(contents->ShouldDisplayFavIcon()); |
+ EXPECT_TRUE(contents->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_TRUE(contents->FocusLocationBarByDefault()); |
+ |
+ // Now commit the load. |
+ static_cast<TestRenderViewHost*>( |
+ contents->render_view_host())->SendNavigate(page_id, new_tab_url); |
+ |
+ // The same flags should be set as before now that the load has committed. |
+ EXPECT_FALSE(contents->ShouldDisplayURL()); |
+ EXPECT_FALSE(contents->ShouldDisplayFavIcon()); |
+ EXPECT_TRUE(contents->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_TRUE(contents->FocusLocationBarByDefault()); |
+ |
+ // Start a pending navigation to a regular page. |
+ GURL next_url("http://google.com/"); |
+ controller->LoadURL(next_url, GURL(), PageTransition::LINK); |
+ |
+ // Check the flags. Some should reflect the new page (URL, title), some |
+ // should reflect the old one (bookmark bar) until it has committed. |
+ EXPECT_TRUE(contents->ShouldDisplayURL()); |
+ EXPECT_TRUE(contents->ShouldDisplayFavIcon()); |
+ EXPECT_TRUE(contents->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_FALSE(contents->FocusLocationBarByDefault()); |
+ |
+ // Commit the regular page load. Note that we must send it to the "pending" |
+ // RenderViewHost, since this transition will also cause a process |
+ // transition, and our RVH pointer will be the "committed" one. |
+ static_cast<TestRenderViewHost*>( |
+ contents->render_manager()->pending_render_view_host())->SendNavigate( |
+ page_id + 1, next_url); |
+ |
+ // The state should now reflect a regular page. |
+ EXPECT_TRUE(contents->ShouldDisplayURL()); |
+ EXPECT_TRUE(contents->ShouldDisplayFavIcon()); |
+ EXPECT_FALSE(contents->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_FALSE(contents->FocusLocationBarByDefault()); |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(DOMUITest); |
+}; |
+ |
+// Tests that the New Tab Page flags are correctly set and propogated by |
+// WebContents when we first navigate to a DOM UI page, then to a standard |
+// non-DOM-UI page. |
+TEST_F(DOMUITest, DOMUIToStandard) { |
+ DoNavigationTest(contents(), 1); |
+ |
+ // Make |
+ WebContents* contents2 = new TestWebContents(profile_.get(), NULL, |
+ &rvh_factory_); |
+ DoNavigationTest(contents2, 101); |
+ contents2->CloseContents(); |
+} |
+ |
+TEST_F(DOMUITest, DOMUIToDOMUI) { |
+ // Do a load (this state is tested above). |
+ GURL new_tab_url(chrome::kChromeUINewTabURL); |
+ controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
+ rvh()->SendNavigate(1, new_tab_url); |
+ |
+ // Start another pending load of the new tab page. |
+ controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
+ rvh()->SendNavigate(2, new_tab_url); |
+ |
+ // The flags should be the same as the non-pending state. |
+ EXPECT_FALSE(contents()->ShouldDisplayURL()); |
+ EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
+ EXPECT_TRUE(contents()->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_TRUE(contents()->FocusLocationBarByDefault()); |
+} |
+ |
+TEST_F(DOMUITest, StandardToDOMUI) { |
+ // Start a pending navigation to a regular page. |
+ GURL std_url("http://google.com/"); |
+ controller()->LoadURL(std_url, GURL(), PageTransition::LINK); |
+ |
+ // The state should now reflect the default. |
+ EXPECT_TRUE(contents()->ShouldDisplayURL()); |
+ EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
+ EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
+ |
+ // Commit the load, the state should be the same. |
+ rvh()->SendNavigate(1, std_url); |
+ EXPECT_TRUE(contents()->ShouldDisplayURL()); |
+ EXPECT_TRUE(contents()->ShouldDisplayFavIcon()); |
+ EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_FALSE(contents()->FocusLocationBarByDefault()); |
+ |
+ // Start a pending load for a DOMUI. |
+ GURL new_tab_url(chrome::kChromeUINewTabURL); |
+ controller()->LoadURL(new_tab_url, GURL(), PageTransition::LINK); |
+ EXPECT_FALSE(contents()->ShouldDisplayURL()); |
+ EXPECT_FALSE(contents()->ShouldDisplayFavIcon()); |
+ EXPECT_FALSE(contents()->IsBookmarkBarAlwaysVisible()); |
+ EXPECT_TRUE(contents()->FocusLocationBarByDefault()); |
+ |
+ // Committing DOM UI is tested above. |
+} |