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

Side by Side Diff: ios/web/public/test/http_server.mm

Issue 2128533002: Convert ScopedVector<T> to std::vector<std::unique_ptr<T>>. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 5 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
« no previous file with comments | « ios/web/public/test/http_server.h ('k') | ios/web/public/test/http_server_inttest.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #import "ios/web/public/test/http_server.h" 5 #import "ios/web/public/test/http_server.h"
6 6
7 #import <Foundation/Foundation.h> 7 #import <Foundation/Foundation.h>
8 8
9 #include <string> 9 #include <string>
10 10
(...skipping 30 matching lines...) Expand all
41 }]; 41 }];
42 return web::ResponseProvider::Request(url, method, 42 return web::ResponseProvider::Request(url, method,
43 base::SysNSStringToUTF8(body), headers); 43 base::SysNSStringToUTF8(body), headers);
44 } 44 }
45 45
46 } // namespace 46 } // namespace
47 47
48 namespace web { 48 namespace web {
49 namespace test { 49 namespace test {
50 50
51
52 RefCountedResponseProviderWrapper::RefCountedResponseProviderWrapper( 51 RefCountedResponseProviderWrapper::RefCountedResponseProviderWrapper(
53 ResponseProvider* response_provider) { 52 std::unique_ptr<ResponseProvider> response_provider)
54 response_provider_.reset(response_provider); 53 : response_provider_(std::move(response_provider)) {}
55 }
56 54
57 RefCountedResponseProviderWrapper::~RefCountedResponseProviderWrapper() {} 55 RefCountedResponseProviderWrapper::~RefCountedResponseProviderWrapper() {}
58 56
59 // static 57 // static
60 HttpServer& HttpServer::GetSharedInstance() { 58 HttpServer& HttpServer::GetSharedInstance() {
61 static web::test::HttpServer* shared_instance = nullptr; 59 static web::test::HttpServer* shared_instance = nullptr;
62 static dispatch_once_t once; 60 static dispatch_once_t once;
63 dispatch_once(&once, ^{ 61 dispatch_once(&once, ^{
64 shared_instance = new HttpServer(); 62 shared_instance = new HttpServer();
65 }); 63 });
66 return *shared_instance; 64 return *shared_instance;
67 } 65 }
68 66
69 // static 67 // static
70 HttpServer& HttpServer::GetSharedInstanceWithResponseProviders( 68 HttpServer& HttpServer::GetSharedInstanceWithResponseProviders(
71 const ProviderList& response_providers) { 69 ProviderList response_providers) {
72 DCHECK([NSThread isMainThread]); 70 DCHECK([NSThread isMainThread]);
73 HttpServer& server = HttpServer::GetSharedInstance(); 71 HttpServer& server = HttpServer::GetSharedInstance();
74 for (const auto& response_provider : response_providers) { 72 // Use non-const reference as the response_provider ownership is transfered.
75 server.AddResponseProvider(response_provider); 73 for (std::unique_ptr<ResponseProvider>& provider : response_providers)
76 } 74 server.AddResponseProvider(std::move(provider));
77 return server; 75 return server;
78 } 76 }
79 77
80 void HttpServer::InitHttpServer() { 78 void HttpServer::InitHttpServer() {
81 DCHECK(gcd_web_server_); 79 DCHECK(gcd_web_server_);
82 // Note: This block is called from an arbitrary GCD thread. 80 // Note: This block is called from an arbitrary GCD thread.
83 id process_request = 81 id process_request =
84 ^GCDWebServerResponse*(GCDWebServerDataRequest* request) { 82 ^GCDWebServerResponse*(GCDWebServerDataRequest* request) {
85 ResponseProvider::Request provider_request = 83 ResponseProvider::Request provider_request =
86 ResponseProviderRequestFromGCDWebServerRequest(request); 84 ResponseProviderRequestFromGCDWebServerRequest(request);
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
186 ref_counted_response_provider.get()->GetResponseProvider(); 184 ref_counted_response_provider.get()->GetResponseProvider();
187 if (response_provider->CanHandleRequest(request)) { 185 if (response_provider->CanHandleRequest(request)) {
188 DCHECK(!result) << 186 DCHECK(!result) <<
189 "No more than one response provider can handle the same request."; 187 "No more than one response provider can handle the same request.";
190 result = ref_counted_response_provider; 188 result = ref_counted_response_provider;
191 } 189 }
192 } 190 }
193 return result; 191 return result;
194 } 192 }
195 193
196 void HttpServer::AddResponseProvider(ResponseProvider* response_provider) { 194 void HttpServer::AddResponseProvider(
195 std::unique_ptr<ResponseProvider> response_provider) {
197 DCHECK([NSThread isMainThread]); 196 DCHECK([NSThread isMainThread]);
198 DCHECK(IsRunning()) << "Can add a response provider only when the server is " 197 DCHECK(IsRunning()) << "Can add a response provider only when the server is "
199 << "running."; 198 << "running.";
200 base::AutoLock autolock(provider_list_lock_); 199 base::AutoLock autolock(provider_list_lock_);
201 scoped_refptr<RefCountedResponseProviderWrapper> 200 scoped_refptr<RefCountedResponseProviderWrapper>
202 ref_counted_response_provider( 201 ref_counted_response_provider(
203 new RefCountedResponseProviderWrapper(response_provider)); 202 new RefCountedResponseProviderWrapper(std::move(response_provider)));
204 providers_.push_back(ref_counted_response_provider); 203 providers_.push_back(ref_counted_response_provider);
205 } 204 }
206 205
207 void HttpServer::RemoveResponseProvider(ResponseProvider* response_provider) { 206 void HttpServer::RemoveResponseProvider(ResponseProvider* response_provider) {
208 DCHECK([NSThread isMainThread]); 207 DCHECK([NSThread isMainThread]);
209 base::AutoLock autolock(provider_list_lock_); 208 base::AutoLock autolock(provider_list_lock_);
210 auto found_iter = providers_.end(); 209 auto found_iter = providers_.end();
211 for (auto it = providers_.begin(); it != providers_.end(); ++it) { 210 for (auto it = providers_.begin(); it != providers_.end(); ++it) {
212 if ((*it)->GetResponseProvider() == response_provider) { 211 if ((*it)->GetResponseProvider() == response_provider) {
213 found_iter = it; 212 found_iter = it;
(...skipping 16 matching lines...) Expand all
230 port_ = port; 229 port_ = port;
231 } 230 }
232 231
233 NSUInteger HttpServer::GetPort() const { 232 NSUInteger HttpServer::GetPort() const {
234 base::AutoLock autolock(port_lock_); 233 base::AutoLock autolock(port_lock_);
235 return port_; 234 return port_;
236 } 235 }
237 236
238 } // namespace test 237 } // namespace test
239 } // namespace web 238 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/public/test/http_server.h ('k') | ios/web/public/test/http_server_inttest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698