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

Side by Side Diff: chrome/browser/ui/browser_navigator_browsertest.cc

Issue 21378002: Support POST in browser navaigation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: move PageNavigator Destructor body back Created 7 years, 4 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 "chrome/browser/ui/browser_navigator_browsertest.h" 5 #include "chrome/browser/ui/browser_navigator_browsertest.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/prefs/pref_service.h" 8 #include "base/prefs/pref_service.h"
9 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/app/chrome_command_ids.h" 10 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/prefs/incognito_mode_prefs.h" 11 #include "chrome/browser/prefs/incognito_mode_prefs.h"
11 #include "chrome/browser/profiles/profile.h" 12 #include "chrome/browser/profiles/profile.h"
12 #include "chrome/browser/ui/browser.h" 13 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_commands.h" 14 #include "chrome/browser/ui/browser_commands.h"
14 #include "chrome/browser/ui/browser_finder.h" 15 #include "chrome/browser/ui/browser_finder.h"
15 #include "chrome/browser/ui/browser_navigator.h" 16 #include "chrome/browser/ui/browser_navigator.h"
16 #include "chrome/browser/ui/browser_tabstrip.h" 17 #include "chrome/browser/ui/browser_tabstrip.h"
17 #include "chrome/browser/ui/browser_window.h" 18 #include "chrome/browser/ui/browser_window.h"
18 #include "chrome/browser/ui/chrome_pages.h" 19 #include "chrome/browser/ui/chrome_pages.h"
19 #include "chrome/browser/ui/singleton_tabs.h" 20 #include "chrome/browser/ui/singleton_tabs.h"
20 #include "chrome/browser/ui/tabs/tab_strip_model.h" 21 #include "chrome/browser/ui/tabs/tab_strip_model.h"
21 #include "chrome/common/chrome_switches.h" 22 #include "chrome/common/chrome_switches.h"
22 #include "chrome/common/pref_names.h" 23 #include "chrome/common/pref_names.h"
23 #include "chrome/common/url_constants.h" 24 #include "chrome/common/url_constants.h"
24 #include "chrome/test/base/ui_test_utils.h" 25 #include "chrome/test/base/ui_test_utils.h"
25 #include "content/public/browser/notification_service.h" 26 #include "content/public/browser/notification_service.h"
26 #include "content/public/browser/notification_types.h" 27 #include "content/public/browser/notification_types.h"
27 #include "content/public/browser/web_contents.h" 28 #include "content/public/browser/web_contents.h"
28 #include "content/public/browser/web_contents_view.h" 29 #include "content/public/browser/web_contents_view.h"
29 #include "ipc/ipc_message.h" 30 #include "ipc/ipc_message.h"
30 31
31 using content::WebContents; 32 using content::WebContents;
32 33
33 namespace { 34 namespace {
34 35
36 const char kExpectedTitle[] = "PASSED!";
37 const char kEchoTitleCommand[] = "echotitle";
38
35 GURL GetGoogleURL() { 39 GURL GetGoogleURL() {
36 return GURL("http://www.google.com/"); 40 return GURL("http://www.google.com/");
37 } 41 }
38 42
39 GURL GetSettingsURL() { 43 GURL GetSettingsURL() {
40 return GURL(chrome::kChromeUISettingsURL); 44 return GURL(chrome::kChromeUISettingsURL);
41 } 45 }
42 46
43 GURL GetContentSettingsURL() { 47 GURL GetContentSettingsURL() {
44 return GetSettingsURL().Resolve(chrome::kContentSettingsExceptionsSubPage); 48 return GetSettingsURL().Resolve(chrome::kContentSettingsExceptionsSubPage);
(...skipping 10 matching lines...) Expand all
55 GURL ShortenUberURL(const GURL& url) { 59 GURL ShortenUberURL(const GURL& url) {
56 std::string url_string = url.spec(); 60 std::string url_string = url.spec();
57 const std::string long_prefix = "chrome://chrome/"; 61 const std::string long_prefix = "chrome://chrome/";
58 const std::string short_prefix = "chrome://"; 62 const std::string short_prefix = "chrome://";
59 if (url_string.find(long_prefix) != 0) 63 if (url_string.find(long_prefix) != 0)
60 return url; 64 return url;
61 url_string.replace(0, long_prefix.length(), short_prefix); 65 url_string.replace(0, long_prefix.length(), short_prefix);
62 return GURL(url_string); 66 return GURL(url_string);
63 } 67 }
64 68
65 } // namespace 69 } // namespace
66 70
67 chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams() const { 71 chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams() const {
68 return MakeNavigateParams(browser()); 72 return MakeNavigateParams(browser());
69 } 73 }
70 74
71 chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams( 75 chrome::NavigateParams BrowserNavigatorTest::MakeNavigateParams(
72 Browser* browser) const { 76 Browser* browser) const {
73 chrome::NavigateParams params(browser, GetGoogleURL(), 77 chrome::NavigateParams params(browser, GetGoogleURL(),
74 content::PAGE_TRANSITION_LINK); 78 content::PAGE_TRANSITION_LINK);
75 params.window_action = chrome::NavigateParams::SHOW_WINDOW; 79 params.window_action = chrome::NavigateParams::SHOW_WINDOW;
76 return params; 80 return params;
77 } 81 }
78 82
83 bool BrowserNavigatorTest::OpenPOSTURLInNewForegroundTabAndGetTitle(
84 const GURL& url, const std::string& post_data, bool is_browser_initiated,
85 base::string16* title) {
86 chrome::NavigateParams param(MakeNavigateParams());
87 param.disposition = NEW_FOREGROUND_TAB;
88 param.url = url;
89 param.is_renderer_initiated = !is_browser_initiated;
90 param.uses_post = true;
91 param.browser_initiated_post_data = new base::RefCountedStaticMemory(
92 reinterpret_cast<const uint8*>(post_data.data()), post_data.size());
93
94 ui_test_utils::NavigateToURL(&param);
95 if (!param.target_contents)
96 return false;
97
98 // Navigate() should have opened the contents in new foreground tab in the
99 // current Browser.
100 EXPECT_EQ(browser(), param.browser);
101 EXPECT_EQ(browser()->tab_strip_model()->GetActiveWebContents(),
102 param.target_contents);
103 // We should have one window, with one tab.
104 EXPECT_EQ(1u, chrome::GetTotalBrowserCount());
105 EXPECT_EQ(2, browser()->tab_strip_model()->count());
106
107 *title = param.target_contents->GetTitle();
108 return true;
109 }
110
79 Browser* BrowserNavigatorTest::CreateEmptyBrowserForType(Browser::Type type, 111 Browser* BrowserNavigatorTest::CreateEmptyBrowserForType(Browser::Type type,
80 Profile* profile) { 112 Profile* profile) {
81 Browser* browser = new Browser( 113 Browser* browser = new Browser(
82 Browser::CreateParams(type, profile, chrome::GetActiveDesktop())); 114 Browser::CreateParams(type, profile, chrome::GetActiveDesktop()));
83 chrome::AddBlankTabAt(browser, -1, true); 115 chrome::AddBlankTabAt(browser, -1, true);
84 return browser; 116 return browser;
85 } 117 }
86 118
87 Browser* BrowserNavigatorTest::CreateEmptyBrowserForApp(Browser::Type type, 119 Browser* BrowserNavigatorTest::CreateEmptyBrowserForApp(Browser::Type type,
88 Profile* profile) { 120 Profile* profile) {
(...skipping 1195 matching lines...) Expand 10 before | Expand all | Expand 10 after
1284 content::PAGE_TRANSITION_LINK); 1316 content::PAGE_TRANSITION_LINK);
1285 ui_test_utils::NavigateToURL(&viewsource_params); 1317 ui_test_utils::NavigateToURL(&viewsource_params);
1286 1318
1287 chrome::NavigateParams singleton_params(browser(), 1319 chrome::NavigateParams singleton_params(browser(),
1288 GURL(chrome::kChromeUIVersionURL), 1320 GURL(chrome::kChromeUIVersionURL),
1289 content::PAGE_TRANSITION_LINK); 1321 content::PAGE_TRANSITION_LINK);
1290 singleton_params.disposition = SINGLETON_TAB; 1322 singleton_params.disposition = SINGLETON_TAB;
1291 EXPECT_EQ(-1, chrome::GetIndexOfSingletonTab(&singleton_params)); 1323 EXPECT_EQ(-1, chrome::GetIndexOfSingletonTab(&singleton_params));
1292 } 1324 }
1293 1325
1294 } // namespace 1326 // This test verifies that browser initiated navigations can send requests
1327 // using POST.
1328 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
1329 SendBrowserInitiatedRequestUsingPOST) {
1330 // Uses a test sever to verify POST request.
1331 ASSERT_TRUE(test_server()->Start());
1332
1333 // Open a browser initiated POST request in new foreground tab.
1334 string16 expected_title(base::ASCIIToUTF16(kExpectedTitle));
1335 std::string post_data = kExpectedTitle;
1336 string16 title;
1337 ASSERT_TRUE(OpenPOSTURLInNewForegroundTabAndGetTitle(
1338 test_server()->GetURL(kEchoTitleCommand), post_data, true, &title));
1339 EXPECT_EQ(expected_title, title);
1340 }
1341
1342 // This test verifies that renderer initiated navigations can NOT send requests
1343 // using POST.
1344 IN_PROC_BROWSER_TEST_F(BrowserNavigatorTest,
1345 SendRendererInitiatedRequestUsingPOST) {
1346 // Uses a test sever to verify POST request.
1347 ASSERT_TRUE(test_server()->Start());
1348
1349 // Open a renderer initiated POST request in new foreground tab.
1350 string16 expected_title(base::ASCIIToUTF16(kExpectedTitle));
1351 std::string post_data = kExpectedTitle;
1352 string16 title;
1353 ASSERT_TRUE(OpenPOSTURLInNewForegroundTabAndGetTitle(
1354 test_server()->GetURL(kEchoTitleCommand), post_data, false, &title));
1355 EXPECT_NE(expected_title, title);
1356 }
1357
1358 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ui/browser_navigator_browsertest.h ('k') | content/public/browser/page_navigator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698