Chromium Code Reviews| 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..05e78f4fdd692920adb4b192154a1e757605ef60 100644 |
| --- a/content/browser/devtools/devtools_http_handler_unittest.cc |
| +++ b/content/browser/devtools/devtools_http_handler_unittest.cc |
| @@ -51,6 +51,20 @@ class DummyServerSocket : public net::ServerSocket { |
| } |
| }; |
| +void NoOp() { |
| +} |
| + |
| +void QuitFromUI(const base::Closure& quit_closure) { |
| + BrowserThread::PostTaskAndReply(BrowserThread::FILE, FROM_HERE, |
| + base::Bind(&NoOp), |
| + quit_closure); |
| +} |
| + |
| +void QuitFromHandlerThread(const base::Closure& quit_closure) { |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| + base::Bind(&QuitFromUI, quit_closure)); |
| +} |
| + |
| class DummyServerSocketFactory |
| : public DevToolsHttpHandler::ServerSocketFactory { |
| public: |
| @@ -65,10 +79,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 +90,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, |
|
dgozman
2014/11/06 14:46:22
Can we use RunAllPendingInMessageLoop for all the
vkuzkokov
2014/11/06 15:46:06
Done.
|
| + base::Bind(&QuitFromHandlerThread, quit_closure_1_)); |
| + return nullptr; |
| + } |
| +}; |
| + |
| class DummyDelegate : public DevToolsHttpHandlerDelegate { |
| public: |
| std::string GetDiscoveryPageHTML() override { return std::string(); } |
| @@ -118,7 +147,7 @@ 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(), |
| @@ -126,11 +155,30 @@ 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(); |
| + 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(), |
| + 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, TestDevToolsActivePort) { |
| base::RunLoop run_loop, run_loop_2; |
| base::ScopedTempDir temp_dir; |
| @@ -138,7 +186,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 +194,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(); |