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/path_service.h" | |
6 #include "base/stringprintf.h" | 7 #include "base/stringprintf.h" |
7 #include "chrome/browser/extensions/api/dns/host_resolver_wrapper.h" | 8 #include "chrome/browser/extensions/api/dns/host_resolver_wrapper.h" |
8 #include "chrome/browser/extensions/api/dns/mock_host_resolver_creator.h" | 9 #include "chrome/browser/extensions/api/dns/mock_host_resolver_creator.h" |
9 #include "chrome/browser/extensions/api/socket/socket_api.h" | 10 #include "chrome/browser/extensions/api/socket/socket_api.h" |
10 #include "chrome/browser/extensions/extension_apitest.h" | 11 #include "chrome/browser/extensions/extension_apitest.h" |
11 #include "chrome/browser/extensions/extension_function_test_utils.h" | 12 #include "chrome/browser/extensions/extension_function_test_utils.h" |
12 #include "chrome/browser/extensions/extension_service.h" | 13 #include "chrome/browser/extensions/extension_service.h" |
13 #include "chrome/browser/extensions/extension_test_message_listener.h" | 14 #include "chrome/browser/extensions/extension_test_message_listener.h" |
14 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
16 #include "chrome/browser/ui/extensions/application_launch.h" | |
17 #include "chrome/common/chrome_paths.h" | |
15 #include "chrome/common/chrome_switches.h" | 18 #include "chrome/common/chrome_switches.h" |
16 #include "chrome/test/base/in_process_browser_test.h" | 19 #include "chrome/test/base/in_process_browser_test.h" |
17 #include "chrome/test/base/ui_test_utils.h" | 20 #include "chrome/test/base/ui_test_utils.h" |
18 #include "net/dns/mock_host_resolver.h" | 21 #include "net/dns/mock_host_resolver.h" |
19 #include "net/test/test_server.h" | 22 #include "net/test/test_server.h" |
20 | 23 |
21 using extensions::Extension; | 24 using extensions::Extension; |
22 | 25 |
23 namespace utils = extension_function_test_utils; | 26 namespace utils = extension_function_test_utils; |
24 | 27 |
(...skipping 30 matching lines...) Expand all Loading... | |
55 | 58 |
56 private: | 59 private: |
57 base::WaitableEvent resolver_event_; | 60 base::WaitableEvent resolver_event_; |
58 | 61 |
59 // The MockHostResolver asserts that it's used on the same thread on which | 62 // The MockHostResolver asserts that it's used on the same thread on which |
60 // it's created, which is actually a stronger rule than its real counterpart. | 63 // it's created, which is actually a stronger rule than its real counterpart. |
61 // But that's fine; it's good practice. | 64 // But that's fine; it's good practice. |
62 scoped_refptr<extensions::MockHostResolverCreator> resolver_creator_; | 65 scoped_refptr<extensions::MockHostResolverCreator> resolver_creator_; |
63 }; | 66 }; |
64 | 67 |
68 #if !defined(DISABLE_NACL) | |
69 // TODO(yzshen): Build testing framework for all extensions APIs in Pepper. And | |
70 // move these Pepper API tests there. | |
71 class SocketPpapiTest : public SocketApiTest { | |
72 public: | |
73 SocketPpapiTest() { | |
74 } | |
75 virtual ~SocketPpapiTest() { | |
76 } | |
77 | |
78 virtual void SetUpCommandLine(CommandLine* command_line) OVERRIDE { | |
79 SocketApiTest::SetUpCommandLine(command_line); | |
80 // TODO(yzshen): It is better to use switches::kEnablePepperTesting. | |
81 // However, that requires adding a new DEPS entry. Considering that we are | |
82 // going to move the Pepper API tests to a new place, use a string literal | |
83 // for now. | |
84 command_line->AppendSwitch("enable-pepper-testing"); | |
85 | |
86 PathService::Get(chrome::DIR_GEN_TEST_DATA, &app_dir_); | |
87 app_dir_ = app_dir_.AppendASCII( | |
88 "chrome/test/data/extensions/socket/ppapi/newlib"); | |
asargent_no_longer_on_chrome
2013/04/12 21:37:52
I think you're missing 'api_test' in the path here
yzshen1
2013/04/12 22:16:55
Thanks! I updated the output path that the test da
asargent_no_longer_on_chrome
2013/04/15 17:54:05
Oops, sorry, I missed that.
| |
89 } | |
90 | |
91 protected: | |
92 void LaunchTestingApp() { | |
93 const Extension* extension = LoadExtension(app_dir_); | |
94 ASSERT_TRUE(extension); | |
95 | |
96 chrome::AppLaunchParams params(browser()->profile(), extension, | |
97 extension_misc::LAUNCH_NONE, | |
98 NEW_WINDOW); | |
99 params.command_line = CommandLine::ForCurrentProcess(); | |
100 chrome::OpenApplication(params); | |
101 } | |
102 | |
103 private: | |
104 base::FilePath app_dir_; | |
105 }; | |
106 #endif | |
107 | |
65 } // namespace | 108 } // namespace |
66 | 109 |
67 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketUDPCreateGood) { | 110 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketUDPCreateGood) { |
68 scoped_refptr<extensions::SocketCreateFunction> socket_create_function( | 111 scoped_refptr<extensions::SocketCreateFunction> socket_create_function( |
69 new extensions::SocketCreateFunction()); | 112 new extensions::SocketCreateFunction()); |
70 scoped_refptr<Extension> empty_extension(utils::CreateEmptyExtension()); | 113 scoped_refptr<Extension> empty_extension(utils::CreateEmptyExtension()); |
71 | 114 |
72 socket_create_function->set_extension(empty_extension.get()); | 115 socket_create_function->set_extension(empty_extension.get()); |
73 socket_create_function->set_has_callback(true); | 116 socket_create_function->set_has_callback(true); |
74 | 117 |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
192 LoadExtension(test_data_dir_.AppendASCII("socket/unload")); | 235 LoadExtension(test_data_dir_.AppendASCII("socket/unload")); |
193 ASSERT_TRUE(extension); | 236 ASSERT_TRUE(extension); |
194 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 237 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
195 | 238 |
196 UnloadExtension(extension->id()); | 239 UnloadExtension(extension->id()); |
197 | 240 |
198 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/unload"))) | 241 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/unload"))) |
199 << message_; | 242 << message_; |
200 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 243 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
201 } | 244 } |
245 | |
246 #if !defined(DISABLE_NACL) | |
247 IN_PROC_BROWSER_TEST_F(SocketPpapiTest, UDP) { | |
248 scoped_ptr<net::TestServer> test_server( | |
249 new net::TestServer(net::TestServer::TYPE_UDP_ECHO, | |
250 net::TestServer::kLocalhost, | |
251 base::FilePath(FILE_PATH_LITERAL("net/data")))); | |
252 EXPECT_TRUE(test_server->Start()); | |
253 | |
254 net::HostPortPair host_port_pair = test_server->host_port_pair(); | |
255 int port = host_port_pair.port(); | |
256 ASSERT_TRUE(port > 0); | |
257 | |
258 // Test that sendTo() is properly resolving hostnames. | |
259 host_port_pair.set_host("LOCALhost"); | |
260 | |
261 ResultCatcher catcher; | |
262 catcher.RestrictToProfile(browser()->profile()); | |
263 | |
264 ExtensionTestMessageListener listener("info_please", true); | |
265 | |
266 LaunchTestingApp(); | |
267 | |
268 EXPECT_TRUE(listener.WaitUntilSatisfied()); | |
269 listener.Reply( | |
270 base::StringPrintf("udp:%s:%d", host_port_pair.host().c_str(), port)); | |
271 | |
272 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | |
273 } | |
274 | |
275 IN_PROC_BROWSER_TEST_F(SocketPpapiTest, TCP) { | |
276 scoped_ptr<net::TestServer> test_server( | |
277 new net::TestServer(net::TestServer::TYPE_TCP_ECHO, | |
278 net::TestServer::kLocalhost, | |
279 base::FilePath(FILE_PATH_LITERAL("net/data")))); | |
280 EXPECT_TRUE(test_server->Start()); | |
281 | |
282 net::HostPortPair host_port_pair = test_server->host_port_pair(); | |
283 int port = host_port_pair.port(); | |
284 ASSERT_TRUE(port > 0); | |
285 | |
286 // Test that connect() is properly resolving hostnames. | |
287 host_port_pair.set_host("lOcAlHoSt"); | |
288 | |
289 ResultCatcher catcher; | |
290 catcher.RestrictToProfile(browser()->profile()); | |
291 | |
292 ExtensionTestMessageListener listener("info_please", true); | |
293 | |
294 LaunchTestingApp(); | |
295 | |
296 EXPECT_TRUE(listener.WaitUntilSatisfied()); | |
297 listener.Reply( | |
298 base::StringPrintf("tcp:%s:%d", host_port_pair.host().c_str(), port)); | |
299 | |
300 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | |
301 } | |
302 | |
303 IN_PROC_BROWSER_TEST_F(SocketPpapiTest, TCPServer) { | |
304 ResultCatcher catcher; | |
305 catcher.RestrictToProfile(browser()->profile()); | |
306 ExtensionTestMessageListener listener("info_please", true); | |
307 | |
308 LaunchTestingApp(); | |
309 | |
310 EXPECT_TRUE(listener.WaitUntilSatisfied()); | |
311 listener.Reply( | |
312 base::StringPrintf("tcp_server:%s:%d", kHostname.c_str(), kPort)); | |
313 | |
314 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | |
315 } | |
316 #endif | |
OLD | NEW |