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

Unified Diff: chrome/browser/browser_unittest.cc

Issue 2747011: Further refine the pinned tab navigation algorithm. (Closed) Base URL: http://src.chromium.org/git/chromium.git
Patch Set: comments Created 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/browser_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/browser_unittest.cc
diff --git a/chrome/browser/browser_unittest.cc b/chrome/browser/browser_unittest.cc
index d388eb0fb2078a28d10d1d508be3f7b2a362a57e..eeb019f23c26531aa787732ab149b4aa85e5e35d 100644
--- a/chrome/browser/browser_unittest.cc
+++ b/chrome/browser/browser_unittest.cc
@@ -1,89 +1,102 @@
-// Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
+// Copyright (c) 2010 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/browser.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/in_process_browser_test.h"
-#include "net/base/mock_host_resolver.h"
-
-class BrowserTest : public InProcessBrowserTest {
- public:
- BrowserTest() {
- host_resolver_proc_ = new net::RuleBasedHostResolverProc(NULL);
- // Avoid making external DNS lookups. In this test we don't need this
- // to succeed.
- host_resolver_proc_->AddSimulatedFailure("*.google.com");
- scoped_host_resolver_proc_.Init(host_resolver_proc_.get());
- }
-
- private:
- scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_proc_;
- net::ScopedDefaultHostResolverProc scoped_host_resolver_proc_;
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace {
+
+const struct NavigationScenario {
+ bool pinned;
+ const char* url;
+ const char* referrer;
+ PageTransition::Type transition;
+ WindowOpenDisposition original_disposition;
+ WindowOpenDisposition result_disposition;
+} kNavigationScenarios[] = {
+ // Disposition changes to new foreground.
+ { true,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ NEW_FOREGROUND_TAB },
+ // Also works with AUTO_BOOKMARK.
+ { true,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::AUTO_BOOKMARK,
+ CURRENT_TAB,
+ NEW_FOREGROUND_TAB },
+ // Also happens if the schemes differ.
+ { true,
+ "ftp://www.example.com",
+ "http://www.example.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ NEW_FOREGROUND_TAB },
+ // Don't choke on an empty referrer.
+ { true,
+ "ftp://www.example.com",
+ "",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ NEW_FOREGROUND_TAB },
+ // Unpinned tab - no change.
+ { false,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ CURRENT_TAB },
+ // Original disposition is not CURRENT_TAB - no change.
+ { true,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::LINK,
+ NEW_BACKGROUND_TAB,
+ NEW_BACKGROUND_TAB },
+ // Other PageTransition type - no change.
+ { true,
+ "http://www.example.com",
+ "http://www.google.com",
+ PageTransition::TYPED,
+ CURRENT_TAB,
+ CURRENT_TAB },
+ // Same domain and scheme - no change.
+ { true,
+ "http://www.google.com/reader",
+ "http://www.google.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ CURRENT_TAB },
+ // Switching between http and https - no change.
+ { true,
+ "https://www.example.com",
+ "http://www.example.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ CURRENT_TAB },
+ // Switching between https and http - no change.
+ { true,
+ "http://www.example.com",
+ "https://www.example.com",
+ PageTransition::LINK,
+ CURRENT_TAB,
+ CURRENT_TAB },
};
-/*
-// This tests that windows without tabstrips can't have new tabs opened in
-// them.
-IN_PROC_BROWSER_TEST_F(BrowserTest, NoTabsInPopups) {
- Browser::RegisterAppPrefs(L"Test");
-
- // We start with a normal browser with one tab.
- EXPECT_EQ(1, browser()->tab_count());
-
- // Open a popup browser with a single blank foreground tab.
- Browser* popup_browser = browser()->CreateForPopup(browser()->profile());
- popup_browser->AddBlankTab(true);
- EXPECT_EQ(1, popup_browser->tab_count());
-
- // Now try opening another tab in the popup browser.
- popup_browser->AddTabWithURL(
- GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
- Browser::ADD_SELECTED, NULL, std::string());
-
- // The popup should still only have one tab.
- EXPECT_EQ(1, popup_browser->tab_count());
-
- // The normal browser should now have two.
- EXPECT_EQ(2, browser()->tab_count());
-
- // Open an app frame browser with a single blank foreground tab.
- Browser* app_browser =
- browser()->CreateForApp(L"Test", browser()->profile(), false);
- app_browser->AddBlankTab(true);
- EXPECT_EQ(1, app_browser->tab_count());
-
- // Now try opening another tab in the app browser.
- app_browser->AddTabWithURL(
- GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
- Browser::ADD_SELECTED, NULL, std::string());
-
- // The popup should still only have one tab.
- EXPECT_EQ(1, app_browser->tab_count());
-
- // The normal browser should now have three.
- EXPECT_EQ(3, browser()->tab_count());
-
- // Open an app frame popup browser with a single blank foreground tab.
- Browser* app_popup_browser =
- browser()->CreateForApp(L"Test", browser()->profile(), false);
- app_popup_browser->AddBlankTab(true);
- EXPECT_EQ(1, app_popup_browser->tab_count());
-
- // Now try opening another tab in the app popup browser.
- app_popup_browser->AddTabWithURL(
- GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
- Browser::ADD_SELECTED, NULL, std::string());
-
- // The popup should still only have one tab.
- EXPECT_EQ(1, app_popup_browser->tab_count());
-
- // The normal browser should now have four.
- EXPECT_EQ(4, browser()->tab_count());
-
- // Close the additional browsers.
- popup_browser->CloseAllTabs();
- app_browser->CloseAllTabs();
- app_popup_browser->CloseAllTabs();
+} // namespace
+
+TEST(BrowserTest, PinnedTabDisposition) {
+ for (size_t i = 0; i < arraysize(kNavigationScenarios); ++i) {
+ EXPECT_EQ(kNavigationScenarios[i].result_disposition,
+ Browser::AdjustWindowOpenDispositionForTab(
+ kNavigationScenarios[i].pinned,
+ GURL(kNavigationScenarios[i].url),
+ GURL(kNavigationScenarios[i].referrer),
+ kNavigationScenarios[i].transition,
+ kNavigationScenarios[i].original_disposition)) << i;
+ }
}
-*/
« no previous file with comments | « chrome/browser/browser_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698