| Index: content/renderer/render_view_browsertest.cc
|
| diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc
|
| index e778fdc90c54a18f51a6a9a982936c9227193680..164feeccf11557bac65a2de22caff9459b0e1362 100644
|
| --- a/content/renderer/render_view_browsertest.cc
|
| +++ b/content/renderer/render_view_browsertest.cc
|
| @@ -31,6 +31,7 @@
|
| #include "content/public/test/render_view_test.h"
|
| #include "content/public/test/test_utils.h"
|
| #include "content/renderer/accessibility/renderer_accessibility.h"
|
| +#include "content/renderer/devtools/devtools_agent.h"
|
| #include "content/renderer/history_controller.h"
|
| #include "content/renderer/history_serialization.h"
|
| #include "content/renderer/navigation_state_impl.h"
|
| @@ -288,6 +289,36 @@ class RenderViewImplTest : public RenderViewTest {
|
| scoped_ptr<MockKeyboard> mock_keyboard_;
|
| };
|
|
|
| +class DevToolsAgentTest : public RenderViewImplTest {
|
| + public:
|
| + void Attach() {
|
| + std::string host_id = "host_id";
|
| + agent()->OnAttach(host_id);
|
| + }
|
| +
|
| + void Detach() {
|
| + agent()->OnDetach();
|
| + }
|
| +
|
| + bool IsPaused() {
|
| + return agent()->paused_;
|
| + }
|
| +
|
| + void DispatchDevToolsMessage(const std::string& message) {
|
| + agent()->OnDispatchOnInspectorBackend(message);
|
| + }
|
| +
|
| + void CloseWhilePaused() {
|
| + EXPECT_TRUE(IsPaused());
|
| + view()->NotifyOnClose();
|
| + }
|
| +
|
| + private:
|
| + DevToolsAgent* agent() {
|
| + return frame()->devtools_agent();
|
| + }
|
| +};
|
| +
|
| // Test for https://crbug.com/461191.
|
| TEST_F(RenderViewImplTest, RenderFrameMessageAfterDetach) {
|
| // Create a new main frame RenderFrame so that we don't interfere with the
|
| @@ -2340,4 +2371,20 @@ TEST_F(RenderViewImplTest, HistoryIsProperlyUpdatedOnNavigation) {
|
| view()->historyForwardListCount() + 1);
|
| }
|
|
|
| +TEST_F(DevToolsAgentTest, DevToolsResumeOnClose) {
|
| + Attach();
|
| + EXPECT_FALSE(IsPaused());
|
| + DispatchDevToolsMessage("{\"id\":1,\"method\":\"Debugger.enable\"}");
|
| +
|
| + // Executing javascript will pause the thread and create nested message loop.
|
| + // Posting task simulates message coming from browser.
|
| + base::MessageLoop::current()->PostTask(FROM_HERE, base::Bind(
|
| + &DevToolsAgentTest::CloseWhilePaused, base::Unretained(this)));
|
| + ExecuteJavaScript("debugger;");
|
| +
|
| + // CloseWhilePaused should resume execution and continue here.
|
| + EXPECT_FALSE(IsPaused());
|
| + Detach();
|
| +}
|
| +
|
| } // namespace content
|
|
|