| Index: content/browser/devtools/devtools_http_handler_unittest.cc
|
| diff --git a/content/browser/devtools/devtools_http_handler_unittest.cc b/content/browser/devtools/devtools_http_handler_unittest.cc
|
| index 28630ead75a01f241747114e12c84babfc5c9da9..a9bc79a8ac6f28b2a8b844f2a828a4dd0f0b8929 100644
|
| --- a/content/browser/devtools/devtools_http_handler_unittest.cc
|
| +++ b/content/browser/devtools/devtools_http_handler_unittest.cc
|
| @@ -11,6 +11,7 @@
|
| #include "content/public/browser/devtools_http_handler.h"
|
| #include "content/public/browser/devtools_http_handler_delegate.h"
|
| #include "content/public/browser/devtools_target.h"
|
| +#include "content/public/test/test_utils.h"
|
| #include "net/base/ip_endpoint.h"
|
| #include "net/base/net_errors.h"
|
| #include "net/socket/server_socket.h"
|
| @@ -51,6 +52,10 @@ class DummyServerSocket : public net::ServerSocket {
|
| }
|
| };
|
|
|
| +void QuitFromHandlerThread(const base::Closure& quit_closure) {
|
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, quit_closure);
|
| +}
|
| +
|
| class DummyServerSocketFactory
|
| : public DevToolsHttpHandler::ServerSocketFactory {
|
| public:
|
| @@ -65,10 +70,10 @@ class DummyServerSocketFactory
|
| BrowserThread::UI, FROM_HERE, quit_closure_2_);
|
| }
|
|
|
| - private:
|
| + protected:
|
| scoped_ptr<net::ServerSocket> Create() const override {
|
| - BrowserThread::PostTask(
|
| - BrowserThread::UI, FROM_HERE, quit_closure_1_);
|
| + base::MessageLoopProxy::current()->PostTask(FROM_HERE,
|
| + base::Bind(&QuitFromHandlerThread, quit_closure_1_));
|
| return scoped_ptr<net::ServerSocket>(new DummyServerSocket());
|
| }
|
|
|
| @@ -76,6 +81,21 @@ class DummyServerSocketFactory
|
| base::Closure quit_closure_2_;
|
| };
|
|
|
| +class FailingServerSocketFactory : public DummyServerSocketFactory {
|
| + public:
|
| + FailingServerSocketFactory(const base::Closure& quit_closure_1,
|
| + const base::Closure& quit_closure_2)
|
| + : DummyServerSocketFactory(quit_closure_1, quit_closure_2) {
|
| + }
|
| +
|
| + private:
|
| + scoped_ptr<net::ServerSocket> Create() const override {
|
| + base::MessageLoopProxy::current()->PostTask(FROM_HERE,
|
| + base::Bind(&QuitFromHandlerThread, quit_closure_1_));
|
| + return nullptr;
|
| + }
|
| +};
|
| +
|
| class DummyDelegate : public DevToolsHttpHandlerDelegate {
|
| public:
|
| std::string GetDiscoveryPageHTML() override { return std::string(); }
|
| @@ -118,7 +138,25 @@ TEST_F(DevToolsHttpHandlerTest, TestStartStop) {
|
| scoped_ptr<DevToolsHttpHandler::ServerSocketFactory> factory(
|
| new DummyServerSocketFactory(run_loop.QuitClosure(),
|
| run_loop_2.QuitClosure()));
|
| - content::DevToolsHttpHandler* devtools_http_handler_ =
|
| + content::DevToolsHttpHandler* devtools_http_handler =
|
| + content::DevToolsHttpHandler::Start(factory.Pass(),
|
| + std::string(),
|
| + new DummyDelegate(),
|
| + base::FilePath());
|
| + // Our dummy socket factory will post a quit message once the server will
|
| + // become ready.
|
| + run_loop.Run();
|
| + devtools_http_handler->Stop();
|
| + // Make sure the handler actually stops.
|
| + run_loop_2.Run();
|
| +}
|
| +
|
| +TEST_F(DevToolsHttpHandlerTest, TestServerSocketFailed) {
|
| + base::RunLoop run_loop, run_loop_2;
|
| + scoped_ptr<DevToolsHttpHandler::ServerSocketFactory> factory(
|
| + new FailingServerSocketFactory(run_loop.QuitClosure(),
|
| + run_loop_2.QuitClosure()));
|
| + content::DevToolsHttpHandler* devtools_http_handler =
|
| content::DevToolsHttpHandler::Start(factory.Pass(),
|
| std::string(),
|
| new DummyDelegate(),
|
| @@ -126,11 +164,16 @@ TEST_F(DevToolsHttpHandlerTest, TestStartStop) {
|
| // Our dummy socket factory will post a quit message once the server will
|
| // become ready.
|
| run_loop.Run();
|
| - devtools_http_handler_->Stop();
|
| + for (int i = 0; i < 5; i++) {
|
| + RunAllPendingInMessageLoop(BrowserThread::UI);
|
| + RunAllPendingInMessageLoop(BrowserThread::FILE);
|
| + }
|
| + devtools_http_handler->Stop();
|
| // Make sure the handler actually stops.
|
| run_loop_2.Run();
|
| }
|
|
|
| +
|
| TEST_F(DevToolsHttpHandlerTest, TestDevToolsActivePort) {
|
| base::RunLoop run_loop, run_loop_2;
|
| base::ScopedTempDir temp_dir;
|
| @@ -138,7 +181,7 @@ TEST_F(DevToolsHttpHandlerTest, TestDevToolsActivePort) {
|
| scoped_ptr<DevToolsHttpHandler::ServerSocketFactory> factory(
|
| new DummyServerSocketFactory(run_loop.QuitClosure(),
|
| run_loop_2.QuitClosure()));
|
| - content::DevToolsHttpHandler* devtools_http_handler_ =
|
| + content::DevToolsHttpHandler* devtools_http_handler =
|
| content::DevToolsHttpHandler::Start(factory.Pass(),
|
| std::string(),
|
| new DummyDelegate(),
|
| @@ -146,7 +189,7 @@ TEST_F(DevToolsHttpHandlerTest, TestDevToolsActivePort) {
|
| // Our dummy socket factory will post a quit message once the server will
|
| // become ready.
|
| run_loop.Run();
|
| - devtools_http_handler_->Stop();
|
| + devtools_http_handler->Stop();
|
| // Make sure the handler actually stops.
|
| run_loop_2.Run();
|
|
|
|
|