| Index: ios/web/public/test/http_server.h
|
| diff --git a/ios/web/public/test/http_server.h b/ios/web/public/test/http_server.h
|
| index af51875f5a3aa60b11ce5532e0cf66d138c70347..a31f2dd29973abd41b950074bc42348bafe59ec4 100644
|
| --- a/ios/web/public/test/http_server.h
|
| +++ b/ios/web/public/test/http_server.h
|
| @@ -1,134 +1,10 @@
|
| -// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| #ifndef IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_
|
| #define IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_
|
|
|
| -#include <memory>
|
| -#include <vector>
|
| -
|
| -#import "base/mac/scoped_nsobject.h"
|
| -#include "base/macros.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "base/synchronization/lock.h"
|
| -#import "ios/web/public/test/response_providers/response_provider.h"
|
| -
|
| -@class GCDWebServer;
|
| -
|
| -namespace web {
|
| -namespace test {
|
| -
|
| -// A convience class for wrapping a ResponseProvider so that it can be used
|
| -// inside data structures that operate on ref counted objects. This class is a
|
| -// ref counted container for a ResponseProvider.
|
| -// This object exists for legacy reasons since a large part of the code base
|
| -// still uses ResponseProviders that are not ref counted.
|
| -class RefCountedResponseProviderWrapper :
|
| - public base::RefCounted<RefCountedResponseProviderWrapper> {
|
| - public:
|
| - // Main constructor.
|
| - explicit RefCountedResponseProviderWrapper(
|
| - std::unique_ptr<ResponseProvider> response_provider);
|
| - // Returns the ResponseProvider that backs this object.
|
| - ResponseProvider* GetResponseProvider() { return response_provider_.get(); }
|
| - private:
|
| - friend class base::RefCounted<RefCountedResponseProviderWrapper>;
|
| - // The ResponseProvider that backs this object.
|
| - std::unique_ptr<ResponseProvider> response_provider_;
|
| - virtual ~RefCountedResponseProviderWrapper();
|
| -};
|
| -
|
| -// The HttpServer is an in-process web server that is used to service requests.
|
| -// It is a singleton and backed by a GCDWebServer.
|
| -// HttpServer can be configured to serve requests by registering
|
| -// web::ResponseProviders.
|
| -// This class is not thread safe on the whole and only certain methods are
|
| -// thread safe.
|
| -class HttpServer {
|
| - public:
|
| - typedef std::vector<std::unique_ptr<ResponseProvider>> ProviderList;
|
| -
|
| - // Returns the shared HttpServer instance. Thread safe.
|
| - static HttpServer& GetSharedInstance();
|
| - // Returns the shared HttpServer instance and registers the response providers
|
| - // as well. Takes ownership of the response providers. Must be called from the
|
| - // main thread.
|
| - static HttpServer& GetSharedInstanceWithResponseProviders(
|
| - ProviderList response_providers);
|
| -
|
| - // A convenience method for the longer form of
|
| - // |web::test::HttpServer::GetSharedInstance().MakeUrlForHttpServer|
|
| - static GURL MakeUrl(const std::string& url);
|
| -
|
| - // Starts the server on the default port 8080. CHECKs if the server can not be
|
| - // started.
|
| - // Must be called from the main thread.
|
| - void StartOrDie();
|
| - // Starts the server on |port|. Returns true on success, false otherwise.
|
| - // Must be called from the main thread.
|
| - bool StartOnPort(NSUInteger port);
|
| - // Stops the server and prevents it from accepting new requests.
|
| - // Must be called from the main thread.
|
| - void Stop();
|
| - // Returns true if the server is running.
|
| - // Must be called from the main thread.
|
| - bool IsRunning() const;
|
| -
|
| - // Returns the port that the server is running on. Thread Safe
|
| - NSUInteger GetPort() const;
|
| -
|
| - // Adds a ResponseProvider. Takes ownership of the ResponseProvider.
|
| - // Note for using URLs inside of the |response_provider|:
|
| - // The HttpServer cannot run on default HTTP port 80, so URLs used in
|
| - // ResponseProviders must be converted at runtime after the HttpServer's port
|
| - // is determined. Please use |MakeUrl| to handle converting URLs.
|
| - // Must be called from the main thread.
|
| - void AddResponseProvider(std::unique_ptr<ResponseProvider> response_provider);
|
| - // Removes the |response_provider|. Must be called from the main thread.
|
| - void RemoveResponseProvider(ResponseProvider* response_provider);
|
| - // Removes all the response providers. Must be called from the main thread.
|
| - void RemoveAllResponseProviders();
|
| -
|
| - private:
|
| - // Initializes the server by registering for a GCDWebServer servlet. Must be
|
| - // called from the main thread.
|
| - void InitHttpServer();
|
| - HttpServer();
|
| - ~HttpServer();
|
| -
|
| - // Sets the port that the server is running on. Thread Safe
|
| - void SetPort(NSUInteger port);
|
| -
|
| - // Creates a GURL that the server can service based on the |url|
|
| - // passed in.
|
| - // It does not rewrite URLs if the |url| can already be serviced by the
|
| - // server.
|
| - // |url| must be a valid URL. Thread safe.
|
| - GURL MakeUrlForHttpServer(const std::string& url) const;
|
| -
|
| - // Returns the response provider that can handle the |request|.
|
| - // Note: No more than one reponse provider can handle the request.
|
| - // Thread safe.
|
| - scoped_refptr<RefCountedResponseProviderWrapper>
|
| - GetResponseProviderForRequest(
|
| - const web::ResponseProvider::Request& request);
|
| -
|
| - // Lock for serializing access to |provider_|.
|
| - mutable base::Lock provider_list_lock_;
|
| - // Lock for serializing access to |port_|.
|
| - mutable base::Lock port_lock_;
|
| - // The port that the server is running on. 0 if the server is not running.
|
| - NSUInteger port_;
|
| - // The GCDWebServer backing the HttpServer.
|
| - base::scoped_nsobject<GCDWebServer> gcd_web_server_;
|
| - // The list of providers to service a request.
|
| - std::vector<scoped_refptr<RefCountedResponseProviderWrapper>> providers_;
|
| - DISALLOW_COPY_AND_ASSIGN(HttpServer);
|
| -};
|
| -
|
| -} // namespace test
|
| -} // namspace web
|
| +#import "ios/web/public/test/http_server.h"
|
|
|
| #endif // IOS_WEB_PUBLIC_TEST_HTTP_SERVER_H_
|
| -
|
|
|