Commit c1910739 authored by Dmitry Gozman's avatar Dmitry Gozman Committed by Commit Bot

[DevTools] Stop listening to WidgetWillClose

It was introduced to resume other pages in the same render process
when the page paused on breakpoint is closed.

This now works due to Mojo connection error handler triggering
detach automatically and unpausing as a result.

Removing content-specific code from DevToolsAgent unblocks
migrating it to blink.

Bug: 776009
Change-Id: I20113df99a947eeaeabfb59886a07fc3f866ea27
Reviewed-on: https://chromium-review.googlesource.com/830977Reviewed-by: default avatarPavel Feldman <pfeldman@chromium.org>
Commit-Queue: Dmitry Gozman <dgozman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#524541}
parent cecbff79
......@@ -161,10 +161,6 @@ DevToolsAgent::DevToolsAgent(RenderFrameImpl* frame)
DevToolsAgent::~DevToolsAgent() {
}
void DevToolsAgent::WidgetWillClose() {
ContinueProgram();
}
void DevToolsAgent::OnDestruct() {
delete this;
}
......
......@@ -48,7 +48,6 @@ class CONTENT_EXPORT DevToolsAgent : public RenderFrameObserver,
class MessageImpl;
// RenderFrameObserver implementation.
void WidgetWillClose() override;
void OnDestruct() override;
// mojom::DevToolsAgent implementation.
......
......@@ -2609,24 +2609,6 @@ TEST_F(RenderViewImplScaleFactorTest, AutoResizeWithoutZoomForDSF) {
#endif
TEST_F(DevToolsAgentTest, DevToolsResumeOnClose) {
Attach();
EXPECT_FALSE(IsPaused());
DispatchDevToolsMessage("Debugger.enable",
"{\"id\":1,\"method\":\"Debugger.enable\"}");
// Executing javascript will pause the thread and create nested run loop.
// Posting task simulates message coming from browser.
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::BindOnce(&DevToolsAgentTest::CloseWhilePaused,
base::Unretained(this)));
ExecuteJavaScriptForTests("debugger;");
// CloseWhilePaused should resume execution and continue here.
EXPECT_FALSE(IsPaused());
Detach();
}
TEST_F(DevToolsAgentTest, RuntimeEnableForcesContexts) {
LoadHTML("<body>page<iframe></iframe></body>");
Attach();
......
Tests that closing the page will resume the render process.
Opened a second window
Attached to a second window
Paused in a second window
Closed a second window
Received window destroyed notification
setTimeout worked in first window
(async function(testRunner) {
var {page, session, dp} = await testRunner.startBlank(
`Tests that closing the page will resume the render process.`);
await dp.Target.setDiscoverTargets({discover: true});
session.evaluate(`
window.myWindow = window.open('../resources/inspector-protocol-page.html'); undefined;
`);
testRunner.log('Opened a second window');
var event = await dp.Target.onceTargetInfoChanged(event => event.params.targetInfo.url.endsWith('inspector-protocol-page.html'));
var targetId = event.params.targetInfo.targetId;
var sessionId = (await dp.Target.attachToTarget({targetId: targetId})).result.sessionId;
testRunner.log('Attached to a second window');
await dp.Target.sendMessageToTarget({
sessionId: sessionId,
message: JSON.stringify({id: 1, method: 'Debugger.enable'})
});
dp.Target.sendMessageToTarget({
sessionId: sessionId,
message: JSON.stringify({id: 2, method: 'Runtime.evaluate', params: {expression: 'debugger;'}})
});
await dp.Target.onceReceivedMessageFromTarget(event => {
var message = JSON.parse(event.params.message);
return message.method === 'Debugger.paused';
});
testRunner.log('Paused in a second window');
session.evaluate(`
window.myWindow.close(); undefined;
`);
testRunner.log('Closed a second window');
await dp.Target.onceTargetDestroyed(event => event.params.targetId === targetId);
testRunner.log('Received window destroyed notification');
await session.evaluateAsync(`
new Promise(f => setTimeout(f, 0))
`);
testRunner.log('setTimeout worked in first window');
testRunner.completeTest();
})
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment