mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 771655 - Debugger does not show up if any progress listener (e.g. NoScript) reads the WebProgress argument's DOMWindow property in onStateChange(); r=vporof
This commit is contained in:
parent
9bc475fdc6
commit
fbc64fb6e0
@ -51,6 +51,7 @@ let DebuggerController = {
|
||||
window.removeEventListener("load", this._startupDebugger, true);
|
||||
|
||||
DebuggerView.initialize(function() {
|
||||
DebuggerView._isInitialized = true;
|
||||
window.dispatchEvent("Debugger:Loaded");
|
||||
this._connect();
|
||||
}.bind(this));
|
||||
@ -67,6 +68,7 @@ let DebuggerController = {
|
||||
window.removeEventListener("unload", this._shutdownDebugger, true);
|
||||
|
||||
DebuggerView.destroy(function() {
|
||||
DebuggerView._isDestroyed = true;
|
||||
this.SourceScripts.disconnect();
|
||||
this.StackFrames.disconnect();
|
||||
this.ThreadState.disconnect();
|
||||
|
@ -45,7 +45,6 @@ let DebuggerView = {
|
||||
|
||||
this._initializePanes();
|
||||
this._initializeEditor(aCallback)
|
||||
this._isInitialized = true;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -419,6 +418,7 @@ let DebuggerView = {
|
||||
_stackframesAndBreakpoints: null,
|
||||
_variables: null,
|
||||
_isInitialized: false,
|
||||
_isDestroyed: false
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -73,6 +73,7 @@ MOCHITEST_BROWSER_TESTS = \
|
||||
browser_dbg_bfcache.js \
|
||||
browser_dbg_breakpoint-new-script.js \
|
||||
browser_dbg_bug737803_editor_actual_location.js \
|
||||
browser_dbg_progress-listener-bug.js \
|
||||
head.js \
|
||||
$(NULL)
|
||||
|
||||
|
@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
// Tests that the debugger does show up even if a progress listener reads the
|
||||
// WebProgress argument's DOMWindow property in onStateChange() (bug 771655).
|
||||
|
||||
var gPane = null;
|
||||
var gTab = null;
|
||||
var gOldListener = null;
|
||||
|
||||
const TEST_URL = EXAMPLE_URL + "browser_dbg_script-switching.html";
|
||||
|
||||
function test() {
|
||||
installListener();
|
||||
|
||||
debug_tab_pane(TEST_URL, function(aTab, aDebuggee, aPane) {
|
||||
gTab = aTab;
|
||||
gPane = aPane;
|
||||
let gDebugger = gPane.contentWindow;
|
||||
|
||||
is(gDebugger.DebuggerController._isInitialized, true,
|
||||
"Controller should be initialized after debug_tab_pane.");
|
||||
is(gDebugger.DebuggerView._isInitialized, true,
|
||||
"View should be initialized after debug_tab_pane.");
|
||||
|
||||
closeDebuggerAndFinish();
|
||||
});
|
||||
}
|
||||
|
||||
// This is taken almost verbatim from bug 771655.
|
||||
function installListener() {
|
||||
if ("_testPL" in window) {
|
||||
gOldListener = _testPL;
|
||||
Cc['@mozilla.org/docloaderservice;1'].getService(Ci.nsIWebProgress)
|
||||
.removeProgressListener(_testPL);
|
||||
}
|
||||
|
||||
window._testPL = {
|
||||
START_DOC: Ci.nsIWebProgressListener.STATE_START |
|
||||
Ci.nsIWebProgressListener.STATE_IS_DOCUMENT,
|
||||
onStateChange: function(wp, req, stateFlags, status) {
|
||||
if ((stateFlags & this.START_DOC) === this.START_DOC) {
|
||||
// This DOMWindow access triggers the unload event.
|
||||
wp.DOMWindow;
|
||||
}
|
||||
},
|
||||
QueryInterface: function(iid) {
|
||||
if (iid.equals(Ci.nsISupportsWeakReference) ||
|
||||
iid.equals(Ci.nsIWebProgressListener))
|
||||
return this;
|
||||
throw Cr.NS_ERROR_NO_INTERFACE;
|
||||
}
|
||||
}
|
||||
|
||||
Cc['@mozilla.org/docloaderservice;1'].getService(Ci.nsIWebProgress)
|
||||
.addProgressListener(_testPL, Ci.nsIWebProgress.NOTIFY_STATE_REQUEST);
|
||||
}
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
if (gOldListener) {
|
||||
window._testPL = gOldListener;
|
||||
} else {
|
||||
delete window._testPL;
|
||||
}
|
||||
removeTab(gTab);
|
||||
gPane = null;
|
||||
gTab = null;
|
||||
});
|
Loading…
Reference in New Issue
Block a user