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

Side by Side 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/browser_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the 2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file. 3 // LICENSE file.
4 4
5 #include "chrome/browser/browser.h" 5 #include "chrome/browser/browser.h"
6 #include "chrome/common/url_constants.h" 6 #include "testing/gtest/include/gtest/gtest.h"
7 #include "chrome/test/in_process_browser_test.h"
8 #include "net/base/mock_host_resolver.h"
9 7
10 class BrowserTest : public InProcessBrowserTest { 8 namespace {
11 public:
12 BrowserTest() {
13 host_resolver_proc_ = new net::RuleBasedHostResolverProc(NULL);
14 // Avoid making external DNS lookups. In this test we don't need this
15 // to succeed.
16 host_resolver_proc_->AddSimulatedFailure("*.google.com");
17 scoped_host_resolver_proc_.Init(host_resolver_proc_.get());
18 }
19 9
20 private: 10 const struct NavigationScenario {
21 scoped_refptr<net::RuleBasedHostResolverProc> host_resolver_proc_; 11 bool pinned;
22 net::ScopedDefaultHostResolverProc scoped_host_resolver_proc_; 12 const char* url;
13 const char* referrer;
14 PageTransition::Type transition;
15 WindowOpenDisposition original_disposition;
16 WindowOpenDisposition result_disposition;
17 } kNavigationScenarios[] = {
18 // Disposition changes to new foreground.
19 { true,
20 "http://www.example.com",
21 "http://www.google.com",
22 PageTransition::LINK,
23 CURRENT_TAB,
24 NEW_FOREGROUND_TAB },
25 // Also works with AUTO_BOOKMARK.
26 { true,
27 "http://www.example.com",
28 "http://www.google.com",
29 PageTransition::AUTO_BOOKMARK,
30 CURRENT_TAB,
31 NEW_FOREGROUND_TAB },
32 // Also happens if the schemes differ.
33 { true,
34 "ftp://www.example.com",
35 "http://www.example.com",
36 PageTransition::LINK,
37 CURRENT_TAB,
38 NEW_FOREGROUND_TAB },
39 // Don't choke on an empty referrer.
40 { true,
41 "ftp://www.example.com",
42 "",
43 PageTransition::LINK,
44 CURRENT_TAB,
45 NEW_FOREGROUND_TAB },
46 // Unpinned tab - no change.
47 { false,
48 "http://www.example.com",
49 "http://www.google.com",
50 PageTransition::LINK,
51 CURRENT_TAB,
52 CURRENT_TAB },
53 // Original disposition is not CURRENT_TAB - no change.
54 { true,
55 "http://www.example.com",
56 "http://www.google.com",
57 PageTransition::LINK,
58 NEW_BACKGROUND_TAB,
59 NEW_BACKGROUND_TAB },
60 // Other PageTransition type - no change.
61 { true,
62 "http://www.example.com",
63 "http://www.google.com",
64 PageTransition::TYPED,
65 CURRENT_TAB,
66 CURRENT_TAB },
67 // Same domain and scheme - no change.
68 { true,
69 "http://www.google.com/reader",
70 "http://www.google.com",
71 PageTransition::LINK,
72 CURRENT_TAB,
73 CURRENT_TAB },
74 // Switching between http and https - no change.
75 { true,
76 "https://www.example.com",
77 "http://www.example.com",
78 PageTransition::LINK,
79 CURRENT_TAB,
80 CURRENT_TAB },
81 // Switching between https and http - no change.
82 { true,
83 "http://www.example.com",
84 "https://www.example.com",
85 PageTransition::LINK,
86 CURRENT_TAB,
87 CURRENT_TAB },
23 }; 88 };
24 89
25 /* 90 } // namespace
26 // This tests that windows without tabstrips can't have new tabs opened in
27 // them.
28 IN_PROC_BROWSER_TEST_F(BrowserTest, NoTabsInPopups) {
29 Browser::RegisterAppPrefs(L"Test");
30 91
31 // We start with a normal browser with one tab. 92 TEST(BrowserTest, PinnedTabDisposition) {
32 EXPECT_EQ(1, browser()->tab_count()); 93 for (size_t i = 0; i < arraysize(kNavigationScenarios); ++i) {
33 94 EXPECT_EQ(kNavigationScenarios[i].result_disposition,
34 // Open a popup browser with a single blank foreground tab. 95 Browser::AdjustWindowOpenDispositionForTab(
35 Browser* popup_browser = browser()->CreateForPopup(browser()->profile()); 96 kNavigationScenarios[i].pinned,
36 popup_browser->AddBlankTab(true); 97 GURL(kNavigationScenarios[i].url),
37 EXPECT_EQ(1, popup_browser->tab_count()); 98 GURL(kNavigationScenarios[i].referrer),
38 99 kNavigationScenarios[i].transition,
39 // Now try opening another tab in the popup browser. 100 kNavigationScenarios[i].original_disposition)) << i;
40 popup_browser->AddTabWithURL( 101 }
41 GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
42 Browser::ADD_SELECTED, NULL, std::string());
43
44 // The popup should still only have one tab.
45 EXPECT_EQ(1, popup_browser->tab_count());
46
47 // The normal browser should now have two.
48 EXPECT_EQ(2, browser()->tab_count());
49
50 // Open an app frame browser with a single blank foreground tab.
51 Browser* app_browser =
52 browser()->CreateForApp(L"Test", browser()->profile(), false);
53 app_browser->AddBlankTab(true);
54 EXPECT_EQ(1, app_browser->tab_count());
55
56 // Now try opening another tab in the app browser.
57 app_browser->AddTabWithURL(
58 GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
59 Browser::ADD_SELECTED, NULL, std::string());
60
61 // The popup should still only have one tab.
62 EXPECT_EQ(1, app_browser->tab_count());
63
64 // The normal browser should now have three.
65 EXPECT_EQ(3, browser()->tab_count());
66
67 // Open an app frame popup browser with a single blank foreground tab.
68 Browser* app_popup_browser =
69 browser()->CreateForApp(L"Test", browser()->profile(), false);
70 app_popup_browser->AddBlankTab(true);
71 EXPECT_EQ(1, app_popup_browser->tab_count());
72
73 // Now try opening another tab in the app popup browser.
74 app_popup_browser->AddTabWithURL(
75 GURL(chrome::kAboutBlankURL), GURL(), PageTransition::TYPED, -1,
76 Browser::ADD_SELECTED, NULL, std::string());
77
78 // The popup should still only have one tab.
79 EXPECT_EQ(1, app_popup_browser->tab_count());
80
81 // The normal browser should now have four.
82 EXPECT_EQ(4, browser()->tab_count());
83
84 // Close the additional browsers.
85 popup_browser->CloseAllTabs();
86 app_browser->CloseAllTabs();
87 app_popup_browser->CloseAllTabs();
88 } 102 }
89 */
OLDNEW
« 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