| 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 |