Chromium Code Reviews| Index: chrome/browser/net/websocket_browsertest.cc |
| diff --git a/chrome/browser/net/websocket_browsertest.cc b/chrome/browser/net/websocket_browsertest.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..0d54cf5400420a62681a7dcdd37025d016db6d73 |
| --- /dev/null |
| +++ b/chrome/browser/net/websocket_browsertest.cc |
| @@ -0,0 +1,97 @@ |
| +// Copyright (c) 2012 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 "base/string_util.h" |
| +#include "base/utf_string_conversions.h" |
| +#include "chrome/browser/ui/browser.h" |
| +#include "chrome/browser/ui/browser_tabstrip.h" |
| +#include "chrome/test/base/in_process_browser_test.h" |
| +#include "chrome/test/base/ui_test_utils.h" |
| +#include "content/public/test/browser_test_utils.h" |
| +#include "net/base/test_data_directory.h" |
| +#include "net/test/test_server.h" |
| + |
| +namespace { |
| + |
| +class WebSocketBrowserTest : public InProcessBrowserTest { |
| + public: |
| + WebSocketBrowserTest() |
| + : ws_server_(net::TestServer::TYPE_WS, |
| + net::TestServer::kLocalhost, |
| + net::GetWebSocketTestDataDirectory()), |
| + wss_server_(net::TestServer::TYPE_WSS, |
| + SSLOptions(SSLOptions::CERT_OK), |
| + net::GetWebSocketTestDataDirectory()) { |
| + } |
| + |
| + protected: |
| + net::TestServer ws_server_; |
| + net::TestServer wss_server_; |
| + |
| + private: |
| + typedef net::TestServer::SSLOptions SSLOptions; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(WebSocketBrowserTest); |
| +}; |
| + |
| +// Test that the browser can handle a WebSocket frame split into multiple TCP |
| +// segments. |
| +IN_PROC_BROWSER_TEST_F(WebSocketBrowserTest, WebSocketSplitSegments) { |
| + // Launch a WebSocket server. |
| + ASSERT_TRUE(ws_server_.Start()); |
| + |
| + // Setup page title observer. |
| + content::WebContents* tab = chrome::GetActiveWebContents(browser()); |
| + content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); |
| + watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); |
| + |
| + // Visit a HTTP page for testing. |
| + std::string scheme("http"); |
| + GURL::Replacements replacements; |
| + replacements.SetSchemeStr(scheme); |
| + ui_test_utils::NavigateToURL( |
| + browser(), |
| + ws_server_.GetURL( |
| + "split_packet_check.html").ReplaceComponents(replacements)); |
| + |
| + const string16 result = watcher.WaitAndGetTitle(); |
| + EXPECT_TRUE(EqualsASCII(result, "PASS")); |
| +} |
| + |
| +#if defined(USE_OPENSSL) |
| +// TODO(toyoshim): Enable this test for OpenSSL once http://crbug.com/160033 |
| +// is fixed against OpenSSL. |
| +#define MAYBE_SecureWebSocketSplitRecords DISABLED_SecureWebSocketSplitRecords |
| +#else |
| +#define MAYBE_SecureWebSocketSplitRecords SecureWebSocketSplitRecords |
| +#endif |
| +// Test that the browser can handle a WebSocket frame split into multiple SSL |
| +// records. |
| +IN_PROC_BROWSER_TEST_F(WebSocketBrowserTest, |
| + MAYBE_SecureWebSocketSplitRecords) { |
| + // Launch a secure WebSocket server. |
| + ASSERT_TRUE(wss_server_.Start()); |
| + |
| + // Setup page title observer. |
| + content::WebContents* tab = chrome::GetActiveWebContents(browser()); |
| + content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); |
| + watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); |
| + |
| + // Visit a HTTPS page for testing. |
| + std::string scheme("https"); |
| + GURL::Replacements replacements; |
| + replacements.SetSchemeStr(scheme); |
| + ui_test_utils::NavigateToURL( |
| + browser(), |
| + wss_server_.GetURL( |
| + "split_packet_check.html").ReplaceComponents(replacements)); |
| + |
| + const string16 result = watcher.WaitAndGetTitle(); |
| + EXPECT_TRUE(EqualsASCII(result, "PASS")); |
| +} |
| + |
| +// TODO(toyoshim): Add the same test by using --use-system-ssl for system |
| +// libraries on Win and Mac once http://crbug.com/160033 is fixed against them. |
|
wtc
2013/01/16 00:34:16
Delete this comment. We are going to remove the --
Takashi Toyoshima
2013/01/16 07:16:03
Oh, I see.
Done!
|
| + |
| +} // namespace |