| Index: net/test/embedded_test_server/embedded_test_server.h
 | 
| diff --git a/net/test/embedded_test_server/embedded_test_server.h b/net/test/embedded_test_server/embedded_test_server.h
 | 
| index 031ceaf4b75d6de6744437e930f56a548b8f347d..b72147f547a5c3645b066e7351224de69fe16c05 100644
 | 
| --- a/net/test/embedded_test_server/embedded_test_server.h
 | 
| +++ b/net/test/embedded_test_server/embedded_test_server.h
 | 
| @@ -12,18 +12,21 @@
 | 
|  #include "base/basictypes.h"
 | 
|  #include "base/callback.h"
 | 
|  #include "base/compiler_specific.h"
 | 
| +#include "base/files/file_path.h"
 | 
|  #include "base/memory/ref_counted.h"
 | 
|  #include "base/memory/scoped_ptr.h"
 | 
|  #include "base/threading/thread.h"
 | 
|  #include "base/threading/thread_checker.h"
 | 
| +#include "crypto/rsa_private_key.h"
 | 
|  #include "net/base/address_list.h"
 | 
| +#include "net/base/host_port_pair.h"
 | 
|  #include "net/base/ip_endpoint.h"
 | 
| +#include "net/cert/x509_certificate.h"
 | 
| +#include "net/socket/stream_socket.h"
 | 
| +#include "net/socket/tcp_server_socket.h"
 | 
| +#include "net/ssl/ssl_server_config.h"
 | 
|  #include "url/gurl.h"
 | 
|  
 | 
| -namespace base {
 | 
| -class FilePath;
 | 
| -}
 | 
| -
 | 
|  namespace net {
 | 
|  
 | 
|  class StreamSocket;
 | 
| @@ -45,7 +48,7 @@ struct HttpRequest;
 | 
|  //
 | 
|  // void SetUp() {
 | 
|  //   test_server_.reset(new EmbeddedTestServer());
 | 
| -//   ASSERT_TRUE(test_server_.InitializeAndWaitUntilReady());
 | 
| +//   ASSERT_TRUE(test_server_.Start());
 | 
|  //   test_server_->RegisterRequestHandler(
 | 
|  //       base::Bind(&FooTest::HandleRequest, base::Unretained(this)));
 | 
|  // }
 | 
| @@ -63,11 +66,10 @@ struct HttpRequest;
 | 
|  // }
 | 
|  //
 | 
|  // For a test that spawns another process such as browser_tests, it is
 | 
| -// suggested to call InitializeAndWaitUntilReady in SetUpOnMainThread after
 | 
| -// the process is spawned. If you have to do it before the process spawns,
 | 
| -// you need to first setup the listen socket so that there is no no other
 | 
| -// threads running while spawning the process. To do so, please follow
 | 
| -// the following example:
 | 
| +// suggested to call Start in SetUpOnMainThread after the process is spawned.
 | 
| +//  If you have to do it before the process spawns, you need to first setup the
 | 
| +// listen socket so that there is no no other threads running while spawning
 | 
| +// the process. To do so, please follow the following example:
 | 
|  //
 | 
|  // void SetUp() {
 | 
|  //   ASSERT_TRUE(embedded_test_server()->InitializeAndListen());
 | 
| @@ -85,9 +87,9 @@ class EmbeddedTestServer {
 | 
|    typedef base::Callback<scoped_ptr<HttpResponse>(
 | 
|        const HttpRequest& request)> HandleRequestCallback;
 | 
|  
 | 
| -  // Creates a http test server. InitializeAndWaitUntilReady() must be called
 | 
| -  // to start the server.
 | 
| -  EmbeddedTestServer();
 | 
| +  // Creates a http test server. Start() must be called to start the server.
 | 
| +  // |use_ssl| indicates whether the server should use SSL for all connections.
 | 
| +  explicit EmbeddedTestServer(bool use_ssl = false);
 | 
|    ~EmbeddedTestServer();
 | 
|  
 | 
|    // Sets a connection listener, that would be notified when various connection
 | 
| @@ -98,7 +100,11 @@ class EmbeddedTestServer {
 | 
|    // Initializes and waits until the server is ready to accept requests.
 | 
|    // This is the equivalent of calling InitializeAndListen() followed by
 | 
|    // StartAcceptingConnections().
 | 
| -  // Returns whether a listening socket has been succesfully created.
 | 
| +  // Returns whether a listening socket has been successfully created.
 | 
| +  bool Start();
 | 
| +
 | 
| +  // Deprecated method that calls Start().
 | 
| +  // TODO(svaldez): Remove and replace with Start().
 | 
|    bool InitializeAndWaitUntilReady() WARN_UNUSED_RESULT;
 | 
|  
 | 
|    // Starts listening for incoming connections but will not yet accept them.
 | 
| @@ -116,6 +122,10 @@ class EmbeddedTestServer {
 | 
|      return listen_socket_.get() != NULL;
 | 
|    }
 | 
|  
 | 
| +  const net::HostPortPair host_port_pair() const {
 | 
| +    return net::HostPortPair::FromURL(base_url_);
 | 
| +  }
 | 
| +
 | 
|    // Returns the base URL to the server, which looks like
 | 
|    // http://127.0.0.1:<port>/, where <port> is the actual port number used by
 | 
|    // the server.
 | 
| @@ -138,21 +148,49 @@ class EmbeddedTestServer {
 | 
|    // Returns the port number used by the server.
 | 
|    uint16 port() const { return port_; }
 | 
|  
 | 
| +  // Returns whether we are using SSL.
 | 
| +  bool UsesSSL() const { return use_ssl_; }
 | 
| +
 | 
| +  void SetSSLConfig(net::SSLServerConfig ssl_config) {
 | 
| +    ssl_config_ = ssl_config;
 | 
| +  }
 | 
| +
 | 
| +  // Returns the file name of the certificate the server is using.
 | 
| +  std::string GetCertificateName() const;
 | 
| +
 | 
| +  // Returns the certificate that the server is using.
 | 
| +  scoped_refptr<X509Certificate> GetCertificate() const;
 | 
| +
 | 
|    // Registers request handler which serves files from |directory|.
 | 
|    // For instance, a request to "/foo.html" is served by "foo.html" under
 | 
|    // |directory|. Files under sub directories are also handled in the same way
 | 
|    // (i.e. "/foo/bar.html" is served by "foo/bar.html" under |directory|).
 | 
|    void ServeFilesFromDirectory(const base::FilePath& directory);
 | 
|  
 | 
| +  // Serves files relative to DIR_SOURCE_ROOT.
 | 
| +  void ServeFilesFromSourceDirectory(const std::string relative);
 | 
| +  void ServeFilesFromSourceDirectory(const base::FilePath& relative);
 | 
| +
 | 
| +  // Registers the default handlers from request_helpers.h.
 | 
| +  void AddDefaultHandlers(const base::FilePath& directory);
 | 
| +
 | 
|    // The most general purpose method. Any request processing can be added using
 | 
|    // this method. Takes ownership of the object. The |callback| is called
 | 
|    // on UI thread.
 | 
|    void RegisterRequestHandler(const HandleRequestCallback& callback);
 | 
| +  void RegisterDefaultHandler(const HandleRequestCallback& callback);
 | 
|  
 | 
|   private:
 | 
|    // Shuts down the server.
 | 
|    void ShutdownOnIOThread();
 | 
|  
 | 
| +  // Load the root for the certs being used in testing.
 | 
| +  void LoadTestSSLRoot();
 | 
| +  // Upgrade the TCP connection to one over SSL.
 | 
| +  scoped_ptr<StreamSocket> DoSSLUpgrade(scoped_ptr<StreamSocket> connection);
 | 
| +  // Handles async callback when we've finished performing the SSL handshake.
 | 
| +  void OnHandshakeDone(HttpConnection* connection, int rv);
 | 
| +
 | 
|    // Begins accepting new client connections.
 | 
|    void DoAcceptLoop();
 | 
|    // Handles async callback when there is a new client socket. |rv| is the
 | 
| @@ -184,6 +222,8 @@ class EmbeddedTestServer {
 | 
|    bool PostTaskToIOThreadAndWait(
 | 
|        const base::Closure& closure) WARN_UNUSED_RESULT;
 | 
|  
 | 
| +  bool use_ssl_;
 | 
| +
 | 
|    scoped_ptr<base::Thread> io_thread_;
 | 
|  
 | 
|    scoped_ptr<TCPServerSocket> listen_socket_;
 | 
| @@ -197,15 +237,22 @@ class EmbeddedTestServer {
 | 
|    // Owns the HttpConnection objects.
 | 
|    std::map<StreamSocket*, HttpConnection*> connections_;
 | 
|  
 | 
| -  // Vector of registered request handlers.
 | 
| +  // List of registered and default request handlers.
 | 
|    std::vector<HandleRequestCallback> request_handlers_;
 | 
| +  std::vector<HandleRequestCallback> default_request_handlers_;
 | 
|  
 | 
|    base::ThreadChecker thread_checker_;
 | 
|  
 | 
| +  net::SSLServerConfig ssl_config_;
 | 
| +
 | 
|    DISALLOW_COPY_AND_ASSIGN(EmbeddedTestServer);
 | 
|  };
 | 
|  
 | 
|  }  // namespace test_server
 | 
| +
 | 
| +// TODO(svaldez): Refactor EmbeddedTestServer to be in the net namespace.
 | 
| +using test_server::EmbeddedTestServer;
 | 
| +
 | 
|  }  // namespace net
 | 
|  
 | 
|  #endif  // NET_TEST_EMBEDDED_TEST_SERVER_EMBEDDED_TEST_SERVER_H_
 | 
| 
 |