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/strings/stringprintf.h" | 6 #include "base/strings/stringprintf.h" |
7 #include "chrome/browser/extensions/extension_apitest.h" | 7 #include "chrome/browser/extensions/extension_apitest.h" |
8 #include "chrome/browser/extensions/extension_service.h" | 8 #include "chrome/browser/extensions/extension_service.h" |
9 #include "chrome/browser/ui/browser.h" | 9 #include "chrome/browser/ui/browser.h" |
10 #include "chrome/common/chrome_paths.h" | 10 #include "chrome/common/chrome_paths.h" |
11 #include "chrome/test/base/in_process_browser_test.h" | 11 #include "chrome/test/base/in_process_browser_test.h" |
12 #include "extensions/browser/api/dns/host_resolver_wrapper.h" | 12 #include "extensions/browser/api/dns/host_resolver_wrapper.h" |
13 #include "extensions/browser/api/dns/mock_host_resolver_creator.h" | 13 #include "extensions/browser/api/dns/mock_host_resolver_creator.h" |
14 #include "extensions/browser/api/socket/socket_api.h" | 14 #include "extensions/browser/api/socket/socket_api.h" |
15 #include "extensions/test/extension_test_message_listener.h" | 15 #include "extensions/test/extension_test_message_listener.h" |
16 #include "extensions/test/result_catcher.h" | 16 #include "extensions/test/result_catcher.h" |
17 #include "net/dns/mock_host_resolver.h" | 17 #include "net/dns/mock_host_resolver.h" |
18 #include "net/test/spawned_test_server/spawned_test_server.h" | 18 #include "net/test/spawned_test_server/spawned_test_server.h" |
19 | 19 |
20 using extensions::Extension; | 20 using extensions::Extension; |
21 using extensions::ResultCatcher; | 21 using extensions::ResultCatcher; |
22 | 22 |
23 namespace { | 23 namespace { |
24 | 24 |
25 const std::string kHostname = "127.0.0.1"; | 25 const char kHostname[] = "127.0.0.1"; |
26 const int kPort = 8888; | 26 const int kPort = 8888; |
27 | 27 |
28 class SocketApiTest : public ExtensionApiTest { | 28 class SocketApiTest : public ExtensionApiTest { |
29 public: | 29 public: |
30 SocketApiTest() : resolver_event_(true, false), | 30 SocketApiTest() |
31 resolver_creator_( | 31 : resolver_event_(base::WaitableEvent::ResetPolicy::MANUAL, |
32 new extensions::MockHostResolverCreator()) { | 32 base::WaitableEvent::InitialState::NOT_SIGNALED), |
33 } | 33 resolver_creator_(new extensions::MockHostResolverCreator()) {} |
34 | 34 |
35 void SetUpOnMainThread() override { | 35 void SetUpOnMainThread() override { |
36 extensions::HostResolverWrapper::GetInstance()->SetHostResolverForTesting( | 36 extensions::HostResolverWrapper::GetInstance()->SetHostResolverForTesting( |
37 resolver_creator_->CreateMockHostResolver()); | 37 resolver_creator_->CreateMockHostResolver()); |
38 } | 38 } |
39 | 39 |
40 void TearDownOnMainThread() override { | 40 void TearDownOnMainThread() override { |
41 extensions::HostResolverWrapper::GetInstance()-> | 41 extensions::HostResolverWrapper::GetInstance()-> |
42 SetHostResolverForTesting(NULL); | 42 SetHostResolverForTesting(NULL); |
43 resolver_creator_->DeleteMockHostResolver(); | 43 resolver_creator_->DeleteMockHostResolver(); |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 | 109 |
110 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 110 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
111 } | 111 } |
112 | 112 |
113 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketTCPServerExtension) { | 113 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketTCPServerExtension) { |
114 ResultCatcher catcher; | 114 ResultCatcher catcher; |
115 catcher.RestrictToBrowserContext(browser()->profile()); | 115 catcher.RestrictToBrowserContext(browser()->profile()); |
116 ExtensionTestMessageListener listener("info_please", true); | 116 ExtensionTestMessageListener listener("info_please", true); |
117 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api"))); | 117 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api"))); |
118 EXPECT_TRUE(listener.WaitUntilSatisfied()); | 118 EXPECT_TRUE(listener.WaitUntilSatisfied()); |
119 listener.Reply( | 119 listener.Reply(base::StringPrintf("tcp_server:%s:%d", kHostname, kPort)); |
120 base::StringPrintf("tcp_server:%s:%d", kHostname.c_str(), kPort)); | |
121 | 120 |
122 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 121 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
123 } | 122 } |
124 | 123 |
125 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketTCPServerUnbindOnUnload) { | 124 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketTCPServerUnbindOnUnload) { |
126 ResultCatcher catcher; | 125 ResultCatcher catcher; |
127 const Extension* extension = | 126 const Extension* extension = |
128 LoadExtension(test_data_dir_.AppendASCII("socket/unload")); | 127 LoadExtension(test_data_dir_.AppendASCII("socket/unload")); |
129 ASSERT_TRUE(extension); | 128 ASSERT_TRUE(extension); |
130 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 129 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
131 | 130 |
132 UnloadExtension(extension->id()); | 131 UnloadExtension(extension->id()); |
133 | 132 |
134 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/unload"))) | 133 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/unload"))) |
135 << message_; | 134 << message_; |
136 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 135 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
137 } | 136 } |
138 | 137 |
139 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketMulticast) { | 138 IN_PROC_BROWSER_TEST_F(SocketApiTest, SocketMulticast) { |
140 ResultCatcher catcher; | 139 ResultCatcher catcher; |
141 catcher.RestrictToBrowserContext(browser()->profile()); | 140 catcher.RestrictToBrowserContext(browser()->profile()); |
142 ExtensionTestMessageListener listener("info_please", true); | 141 ExtensionTestMessageListener listener("info_please", true); |
143 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api"))); | 142 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII("socket/api"))); |
144 EXPECT_TRUE(listener.WaitUntilSatisfied()); | 143 EXPECT_TRUE(listener.WaitUntilSatisfied()); |
145 listener.Reply( | 144 listener.Reply(base::StringPrintf("multicast:%s:%d", kHostname, kPort)); |
146 base::StringPrintf("multicast:%s:%d", kHostname.c_str(), kPort)); | |
147 | 145 |
148 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); | 146 EXPECT_TRUE(catcher.GetNextResult()) << catcher.message(); |
149 } | 147 } |
OLD | NEW |