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

Side by Side Diff: chrome/browser/extensions/api/socket/socket_apitest.cc

Issue 10537017: Allow hostnames in socket.connect(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch Set 1 Created 8 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 | 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 "base/memory/ref_counted.h" 5 #include "base/memory/ref_counted.h"
6 #include "base/stringprintf.h" 6 #include "base/stringprintf.h"
7 #include "chrome/browser/extensions/api/dns/host_resolver_wrapper.h"
8 #include "chrome/browser/extensions/api/dns/mock_host_resolver_creator.h"
7 #include "chrome/browser/extensions/api/socket/socket_api.h" 9 #include "chrome/browser/extensions/api/socket/socket_api.h"
8 #include "chrome/browser/extensions/extension_apitest.h" 10 #include "chrome/browser/extensions/extension_apitest.h"
9 #include "chrome/browser/extensions/extension_function_test_utils.h" 11 #include "chrome/browser/extensions/extension_function_test_utils.h"
10 #include "chrome/browser/extensions/extension_service.h" 12 #include "chrome/browser/extensions/extension_service.h"
11 #include "chrome/browser/extensions/extension_test_message_listener.h" 13 #include "chrome/browser/extensions/extension_test_message_listener.h"
12 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
13 #include "chrome/test/base/in_process_browser_test.h" 15 #include "chrome/test/base/in_process_browser_test.h"
14 #include "chrome/test/base/ui_test_utils.h" 16 #include "chrome/test/base/ui_test_utils.h"
17 #include "net/base/mock_host_resolver.h"
15 #include "net/test/test_server.h" 18 #include "net/test/test_server.h"
16 19
17 using extensions::Extension; 20 using extensions::Extension;
18 21
19 namespace utils = extension_function_test_utils; 22 namespace utils = extension_function_test_utils;
20 23
21 namespace { 24 namespace {
22 25
23 const std::string kHostname = "127.0.0.1"; 26 const std::string kHostname = "127.0.0.1";
24 const int kPort = 8888; 27 const int kPort = 8888;
25 28
26 class SocketApiTest : public PlatformAppApiTest { 29 class SocketApiTest : public PlatformAppApiTest {
27 public: 30 public:
31 SocketApiTest() : resolver_event_(true, false),
32 resolver_creator_(
33 new extensions::MockHostResolverCreator()) {
34 }
35
36 void SetUpOnMainThread() OVERRIDE {
37 extensions::HostResolverWrapper::GetInstance()->SetHostResolverForTesting(
38 resolver_creator_->CreateMockHostResolver());
39 }
40
41 void CleanUpOnMainThread() OVERRIDE {
42 extensions::HostResolverWrapper::GetInstance()->
43 SetHostResolverForTesting(NULL);
44 resolver_creator_->DeleteMockHostResolver();
45 }
46
28 static std::string GenerateCreateFunctionArgs(const std::string& protocol, 47 static std::string GenerateCreateFunctionArgs(const std::string& protocol,
29 const std::string& address, 48 const std::string& address,
30 int port) { 49 int port) {
31 return base::StringPrintf("[\"%s\", \"%s\", %d]", protocol.c_str(), 50 return base::StringPrintf("[\"%s\", \"%s\", %d]", protocol.c_str(),
32 address.c_str(), port); 51 address.c_str(), port);
33 } 52 }
53
54 private:
55 base::WaitableEvent resolver_event_;
56
57 // The MockHostResolver asserts that it's used on the same thread on which
58 // it's created, which is actually a stronger rule than its real counterpart.
59 // But that's fine; it's good practice.
60 scoped_refptr<extensions::MockHostResolverCreator> resolver_creator_;
34 }; 61 };
35 62
36 } // namespace 63 } // namespace
37 64
38 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketUDPCreateGood) { 65 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketUDPCreateGood) {
39 scoped_refptr<extensions::SocketCreateFunction> socket_create_function( 66 scoped_refptr<extensions::SocketCreateFunction> socket_create_function(
40 new extensions::SocketCreateFunction()); 67 new extensions::SocketCreateFunction());
41 scoped_refptr<Extension> empty_extension(utils::CreateEmptyExtension()); 68 scoped_refptr<Extension> empty_extension(utils::CreateEmptyExtension());
42 69
43 socket_create_function->set_extension(empty_extension.get()); 70 socket_create_function->set_extension(empty_extension.get());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 scoped_ptr<net::TestServer> test_server( 144 scoped_ptr<net::TestServer> test_server(
118 new net::TestServer(net::TestServer::TYPE_TCP_ECHO, 145 new net::TestServer(net::TestServer::TYPE_TCP_ECHO,
119 net::TestServer::kLocalhost, 146 net::TestServer::kLocalhost,
120 FilePath(FILE_PATH_LITERAL("net/data")))); 147 FilePath(FILE_PATH_LITERAL("net/data"))));
121 EXPECT_TRUE(test_server->Start()); 148 EXPECT_TRUE(test_server->Start());
122 149
123 net::HostPortPair host_port_pair = test_server->host_port_pair(); 150 net::HostPortPair host_port_pair = test_server->host_port_pair();
124 int port = host_port_pair.port(); 151 int port = host_port_pair.port();
125 ASSERT_TRUE(port > 0); 152 ASSERT_TRUE(port > 0);
126 153
154 // Test that connect() is properly resolving hostnames.
155 host_port_pair.set_host("lOcAlHoSt");
156
127 ResultCatcher catcher; 157 ResultCatcher catcher;
128 catcher.RestrictToProfile(browser()->profile()); 158 catcher.RestrictToProfile(browser()->profile());
129 159
130 ExtensionTestMessageListener listener("info_please", true); 160 ExtensionTestMessageListener listener("info_please", true);
131 161
132 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api"))); 162 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api")));
133 EXPECT_TRUE(listener.WaitUntilSatisfied()); 163 EXPECT_TRUE(listener.WaitUntilSatisfied());
134 listener.Reply( 164 listener.Reply(
135 base::StringPrintf("tcp:%s:%d", host_port_pair.host().c_str(), port)); 165 base::StringPrintf("tcp:%s:%d", host_port_pair.host().c_str(), port));
136 166
137 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); 167 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message();
138 } 168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698