| OLD | NEW |
| 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 Loading... |
| 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 } |
| OLD | NEW |