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

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

Issue 2898733003: Split up ios/web:test_support. (Closed)
Patch Set: don't break downstream clients Created 3 years, 6 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
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 #ifndef IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_ 5 #ifndef IOS_WEB_PUBLIC_TEST_HTTP_SERVER_HTTP_SERVER_H_
6 #define IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_ 6 #define IOS_WEB_PUBLIC_TEST_HTTP_SERVER_HTTP_SERVER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <vector> 9 #include <vector>
10 10
11 #import "base/mac/scoped_nsobject.h" 11 #import "base/mac/scoped_nsobject.h"
12 #include "base/macros.h" 12 #include "base/macros.h"
13 #include "base/memory/ref_counted.h" 13 #include "base/memory/ref_counted.h"
14 #include "base/synchronization/lock.h" 14 #include "base/synchronization/lock.h"
15 #import "ios/web/public/test/response_providers/response_provider.h" 15 #import "ios/web/public/test/http_server/response_provider.h"
16 16
17 @class GCDWebServer; 17 @class GCDWebServer;
18 18
19 namespace web { 19 namespace web {
20 namespace test { 20 namespace test {
21 21
22 // A convience class for wrapping a ResponseProvider so that it can be used 22 // A convience class for wrapping a ResponseProvider so that it can be used
23 // inside data structures that operate on ref counted objects. This class is a 23 // inside data structures that operate on ref counted objects. This class is a
24 // ref counted container for a ResponseProvider. 24 // ref counted container for a ResponseProvider.
25 // This object exists for legacy reasons since a large part of the code base 25 // This object exists for legacy reasons since a large part of the code base
26 // still uses ResponseProviders that are not ref counted. 26 // still uses ResponseProviders that are not ref counted.
27 class RefCountedResponseProviderWrapper : 27 class RefCountedResponseProviderWrapper
28 public base::RefCounted<RefCountedResponseProviderWrapper> { 28 : public base::RefCounted<RefCountedResponseProviderWrapper> {
29 public: 29 public:
30 // Main constructor. 30 // Main constructor.
31 explicit RefCountedResponseProviderWrapper( 31 explicit RefCountedResponseProviderWrapper(
32 std::unique_ptr<ResponseProvider> response_provider); 32 std::unique_ptr<ResponseProvider> response_provider);
33 // Returns the ResponseProvider that backs this object. 33 // Returns the ResponseProvider that backs this object.
34 ResponseProvider* GetResponseProvider() { return response_provider_.get(); } 34 ResponseProvider* GetResponseProvider() { return response_provider_.get(); }
35
35 private: 36 private:
36 friend class base::RefCounted<RefCountedResponseProviderWrapper>; 37 friend class base::RefCounted<RefCountedResponseProviderWrapper>;
37 // The ResponseProvider that backs this object. 38 // The ResponseProvider that backs this object.
38 std::unique_ptr<ResponseProvider> response_provider_; 39 std::unique_ptr<ResponseProvider> response_provider_;
39 virtual ~RefCountedResponseProviderWrapper(); 40 virtual ~RefCountedResponseProviderWrapper();
40 }; 41 };
41 42
42 // The HttpServer is an in-process web server that is used to service requests. 43 // The HttpServer is an in-process web server that is used to service requests.
43 // It is a singleton and backed by a GCDWebServer. 44 // It is a singleton and backed by a GCDWebServer.
44 // HttpServer can be configured to serve requests by registering 45 // HttpServer can be configured to serve requests by registering
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 // passed in. 105 // passed in.
105 // It does not rewrite URLs if the |url| can already be serviced by the 106 // It does not rewrite URLs if the |url| can already be serviced by the
106 // server. 107 // server.
107 // |url| must be a valid URL. Thread safe. 108 // |url| must be a valid URL. Thread safe.
108 GURL MakeUrlForHttpServer(const std::string& url) const; 109 GURL MakeUrlForHttpServer(const std::string& url) const;
109 110
110 // Returns the response provider that can handle the |request|. 111 // Returns the response provider that can handle the |request|.
111 // Note: No more than one reponse provider can handle the request. 112 // Note: No more than one reponse provider can handle the request.
112 // Thread safe. 113 // Thread safe.
113 scoped_refptr<RefCountedResponseProviderWrapper> 114 scoped_refptr<RefCountedResponseProviderWrapper>
114 GetResponseProviderForRequest( 115 GetResponseProviderForRequest(const web::ResponseProvider::Request& request);
115 const web::ResponseProvider::Request& request);
116 116
117 // Lock for serializing access to |provider_|. 117 // Lock for serializing access to |provider_|.
118 mutable base::Lock provider_list_lock_; 118 mutable base::Lock provider_list_lock_;
119 // Lock for serializing access to |port_|. 119 // Lock for serializing access to |port_|.
120 mutable base::Lock port_lock_; 120 mutable base::Lock port_lock_;
121 // The port that the server is running on. 0 if the server is not running. 121 // The port that the server is running on. 0 if the server is not running.
122 NSUInteger port_; 122 NSUInteger port_;
123 // The GCDWebServer backing the HttpServer. 123 // The GCDWebServer backing the HttpServer.
124 base::scoped_nsobject<GCDWebServer> gcd_web_server_; 124 base::scoped_nsobject<GCDWebServer> gcd_web_server_;
125 // The list of providers to service a request. 125 // The list of providers to service a request.
126 std::vector<scoped_refptr<RefCountedResponseProviderWrapper>> providers_; 126 std::vector<scoped_refptr<RefCountedResponseProviderWrapper>> providers_;
127 DISALLOW_COPY_AND_ASSIGN(HttpServer); 127 DISALLOW_COPY_AND_ASSIGN(HttpServer);
128 }; 128 };
129 129
130 } // namespace test 130 } // namespace test
131 } // namspace web 131 } // namspace web
132 132
133 #endif // IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_ 133 #endif // IOS_WEB_PUBLIC_TEST_HTTP_SERVER_HTTP_SERVER_H_
134
OLDNEW
« no previous file with comments | « ios/web/public/test/http_server/http_auth_response_provider.mm ('k') | ios/web/public/test/http_server/http_server.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698