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

Unified Diff: chrome/browser/dom_ui/html_dialog_tab_contents_delegate_unittest.cc

Issue 441011: Created HtmlDialogTabContentsDelegate, which encapsulates the (Closed)
Patch Set: Synced to head. Created 11 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/dom_ui/html_dialog_tab_contents_delegate_unittest.cc
diff --git a/chrome/browser/dom_ui/html_dialog_tab_contents_delegate_unittest.cc b/chrome/browser/dom_ui/html_dialog_tab_contents_delegate_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5dfe24a06090e8903a8ec8a270f2a6c2cbfd31a7
--- /dev/null
+++ b/chrome/browser/dom_ui/html_dialog_tab_contents_delegate_unittest.cc
@@ -0,0 +1,158 @@
+// 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/html_dialog_tab_contents_delegate.h"
+
+#include <vector>
+
+#include "base/gfx/rect.h"
+#include "base/logging.h"
+#include "base/scoped_ptr.h"
+#include "chrome/browser/browser.h"
+#include "chrome/browser/browser_list.h"
+#include "chrome/common/url_constants.h"
+#include "chrome/test/browser_with_test_window_test.h"
+#include "chrome/test/test_browser_window.h"
+#include "googleurl/src/gurl.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+class MockTestBrowserWindow : public TestBrowserWindow {
+ public:
+ // TestBrowserWindow() doesn't actually use its browser argument so we just
+ // pass NULL.
+ MockTestBrowserWindow() : TestBrowserWindow(NULL) {}
+
+ virtual ~MockTestBrowserWindow() {}
+
+ MOCK_METHOD0(Show, void());
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(MockTestBrowserWindow);
+};
+
+class TestTabContentsDelegate : public HtmlDialogTabContentsDelegate {
+ public:
+ explicit TestTabContentsDelegate(Profile* profile)
+ : HtmlDialogTabContentsDelegate(profile),
+ window_for_next_created_browser_(NULL) {}
+
+ virtual ~TestTabContentsDelegate() {
+ CHECK(!window_for_next_created_browser_);
+ for (std::vector<Browser*>::iterator i = created_browsers_.begin();
+ i != created_browsers_.end(); ++i) {
+ (*i)->CloseAllTabs();
+ // We need to explicitly cast this since BrowserWindow does *not*
+ // have a virtual destructor.
+ delete static_cast<MockTestBrowserWindow*>((*i)->window());
+ delete *i;
+ }
+ }
+
+ virtual void MoveContents(TabContents* source, const gfx::Rect& pos) {}
+ virtual void ToolbarSizeChanged(TabContents* source, bool is_animating) {}
+
+ // Takes ownership of window.
+ void SetWindowForNextCreatedBrowser(BrowserWindow* window) {
+ CHECK(window);
+ window_for_next_created_browser_ = window;
+ }
+
+ protected:
+ // CreateBrowser() is called by OpenURLFromTab() and AddNewContents().
+ virtual Browser* CreateBrowser() {
+ DCHECK(profile());
+ DCHECK(window_for_next_created_browser_);
+ Browser* browser = new Browser(Browser::TYPE_NORMAL, profile());
+ browser->set_window(window_for_next_created_browser_);
+ window_for_next_created_browser_ = NULL;
+ created_browsers_.push_back(browser);
+ return browser;
+ }
+
+ private:
+ BrowserWindow* window_for_next_created_browser_;
+ std::vector<Browser*> created_browsers_;
+
+ DISALLOW_COPY_AND_ASSIGN(TestTabContentsDelegate);
+};
+
+class HtmlDialogTabContentsDelegateTest : public BrowserWithTestWindowTest {
+ public:
+ virtual void SetUp() {
+ BrowserWithTestWindowTest::SetUp();
+ test_tab_contents_delegate_.reset(new TestTabContentsDelegate(profile()));
+ }
+
+ virtual void TearDown() {
+ test_tab_contents_delegate_.reset(NULL);
+ BrowserWithTestWindowTest::TearDown();
+ }
+
+ protected:
+ scoped_ptr<TestTabContentsDelegate> test_tab_contents_delegate_;
+};
+
+TEST_F(HtmlDialogTabContentsDelegateTest, DoNothingMethodsTest) {
+ // None of the following calls should do anything.
+ EXPECT_TRUE(test_tab_contents_delegate_->IsPopup(NULL));
+ EXPECT_FALSE(test_tab_contents_delegate_->ShouldAddNavigationToHistory());
+ test_tab_contents_delegate_->NavigationStateChanged(NULL, 0);
+ test_tab_contents_delegate_->ActivateContents(NULL);
+ test_tab_contents_delegate_->LoadingStateChanged(NULL);
+ test_tab_contents_delegate_->CloseContents(NULL);
+ // URLStarredChanged() calls NOTREACHED() which immediately crashes.
+ // Death tests take too long for unit_test tests on OS X and
+ // there's http://code.google.com/p/chromium/issues/detail?id=24885 on
+ // death tests on Windows so we simply don't call it.
+ test_tab_contents_delegate_->UpdateTargetURL(NULL, GURL());
+ test_tab_contents_delegate_->MoveContents(NULL, gfx::Rect());
+ test_tab_contents_delegate_->ToolbarSizeChanged(NULL, false);
+ EXPECT_EQ(0, browser()->tab_count());
+ EXPECT_EQ(1U, BrowserList::size());
+}
+
+TEST_F(HtmlDialogTabContentsDelegateTest, OpenURLFromTabTest) {
+ MockTestBrowserWindow* window = new MockTestBrowserWindow();
+ EXPECT_CALL(*window, Show()).Times(1);
+ test_tab_contents_delegate_->SetWindowForNextCreatedBrowser(window);
+
+ test_tab_contents_delegate_->OpenURLFromTab(
+ NULL, GURL(chrome::kAboutBlankURL), GURL(),
+ NEW_FOREGROUND_TAB, PageTransition::LINK);
+ EXPECT_EQ(0, browser()->tab_count());
+ EXPECT_EQ(2U, BrowserList::size());
+}
+
+TEST_F(HtmlDialogTabContentsDelegateTest, AddNewContentsTest) {
+ MockTestBrowserWindow* window = new MockTestBrowserWindow();
+ EXPECT_CALL(*window, Show()).Times(1);
+ test_tab_contents_delegate_->SetWindowForNextCreatedBrowser(window);
+
+ TabContents* contents =
+ new TabContents(profile(), NULL, MSG_ROUTING_NONE, NULL);
+ test_tab_contents_delegate_->AddNewContents(
+ NULL, contents, NEW_FOREGROUND_TAB, gfx::Rect(), false);
+ EXPECT_EQ(0, browser()->tab_count());
+ EXPECT_EQ(2U, BrowserList::size());
+}
+
+TEST_F(HtmlDialogTabContentsDelegateTest, DetachTest) {
+ EXPECT_EQ(profile(), test_tab_contents_delegate_->profile());
+ test_tab_contents_delegate_->Detach();
+ EXPECT_EQ(NULL, test_tab_contents_delegate_->profile());
+ // Now, none of the following calls should do anything.
+ test_tab_contents_delegate_->OpenURLFromTab(
+ NULL, GURL(chrome::kAboutBlankURL), GURL(),
+ NEW_FOREGROUND_TAB, PageTransition::LINK);
+ test_tab_contents_delegate_->AddNewContents(NULL, NULL, NEW_FOREGROUND_TAB,
+ gfx::Rect(), false);
+ EXPECT_EQ(0, browser()->tab_count());
+ EXPECT_EQ(1U, BrowserList::size());
+}
+
+} // namespace
+
« no previous file with comments | « chrome/browser/dom_ui/html_dialog_tab_contents_delegate.cc ('k') | chrome/browser/gtk/browser_window_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698