forked from mirrors/gecko-dev
174 lines
5 KiB
JavaScript
174 lines
5 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
var gBrowser;
|
|
var gProgressListener;
|
|
var gDebugger;
|
|
|
|
const nsILayoutDebuggingTools = Ci.nsILayoutDebuggingTools;
|
|
const nsIDocShell = Ci.nsIDocShell;
|
|
const nsIWebProgressListener = Ci.nsIWebProgressListener;
|
|
|
|
const NS_LAYOUT_DEBUGGINGTOOLS_CONTRACTID = "@mozilla.org/layout-debug/layout-debuggingtools;1";
|
|
|
|
|
|
function nsLDBBrowserContentListener()
|
|
{
|
|
this.init();
|
|
}
|
|
|
|
nsLDBBrowserContentListener.prototype = {
|
|
|
|
init : function()
|
|
{
|
|
this.mStatusText = document.getElementById("status-text");
|
|
this.mURLBar = document.getElementById("urlbar");
|
|
this.mForwardButton = document.getElementById("forward-button");
|
|
this.mBackButton = document.getElementById("back-button");
|
|
this.mStopButton = document.getElementById("stop-button");
|
|
},
|
|
|
|
QueryInterface : function(aIID)
|
|
{
|
|
if (aIID.equals(Ci.nsIWebProgressListener) ||
|
|
aIID.equals(Ci.nsISupportsWeakReference) ||
|
|
aIID.equals(Ci.nsISupports))
|
|
return this;
|
|
throw Cr.NS_NOINTERFACE;
|
|
},
|
|
|
|
// nsIWebProgressListener implementation
|
|
onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus)
|
|
{
|
|
if (!(aStateFlags & nsIWebProgressListener.STATE_IS_NETWORK) ||
|
|
aWebProgress != gBrowser.webProgress)
|
|
return;
|
|
|
|
if (aStateFlags & nsIWebProgressListener.STATE_START) {
|
|
this.setButtonEnabled(this.mStopButton, true);
|
|
this.setButtonEnabled(this.mForwardButton, gBrowser.canGoForward);
|
|
this.setButtonEnabled(this.mBackButton, gBrowser.canGoBack);
|
|
this.mStatusText.value = "loading...";
|
|
this.mLoading = true;
|
|
|
|
} else if (aStateFlags & nsIWebProgressListener.STATE_STOP) {
|
|
this.setButtonEnabled(this.mStopButton, false);
|
|
this.mStatusText.value = this.mURLBar.value + " loaded";
|
|
this.mLoading = false;
|
|
}
|
|
},
|
|
|
|
onProgressChange : function(aWebProgress, aRequest,
|
|
aCurSelfProgress, aMaxSelfProgress,
|
|
aCurTotalProgress, aMaxTotalProgress)
|
|
{
|
|
},
|
|
|
|
onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags)
|
|
{
|
|
this.mURLBar.value = aLocation.spec;
|
|
this.setButtonEnabled(this.mForwardButton, gBrowser.canGoForward);
|
|
this.setButtonEnabled(this.mBackButton, gBrowser.canGoBack);
|
|
},
|
|
|
|
onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
|
|
{
|
|
this.mStatusText.value = aMessage;
|
|
},
|
|
|
|
onSecurityChange : function(aWebProgress, aRequest, aState)
|
|
{
|
|
},
|
|
|
|
// non-interface methods
|
|
setButtonEnabled : function(aButtonElement, aEnabled)
|
|
{
|
|
if (aEnabled)
|
|
aButtonElement.removeAttribute("disabled");
|
|
else
|
|
aButtonElement.setAttribute("disabled", "true");
|
|
},
|
|
|
|
mStatusText : null,
|
|
mURLBar : null,
|
|
mForwardButton : null,
|
|
mBackButton : null,
|
|
mStopButton : null,
|
|
|
|
mLoading : false
|
|
|
|
}
|
|
|
|
function OnLDBLoad()
|
|
{
|
|
gBrowser = document.getElementById("browser");
|
|
|
|
gProgressListener = new nsLDBBrowserContentListener();
|
|
gBrowser.addProgressListener(gProgressListener);
|
|
|
|
gDebugger = Cc[NS_LAYOUT_DEBUGGINGTOOLS_CONTRACTID].
|
|
createInstance(nsILayoutDebuggingTools);
|
|
|
|
if (window.arguments && window.arguments[0]) {
|
|
gBrowser.loadURI(window.arguments[0], {
|
|
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
|
|
});
|
|
} else {
|
|
gBrowser.loadURI("about:blank", {
|
|
triggeringPrincipal: Services.scriptSecurityManager.createNullPrincipal({}),
|
|
});
|
|
}
|
|
|
|
gDebugger.init(gBrowser.contentWindow);
|
|
|
|
checkPersistentMenus();
|
|
}
|
|
|
|
function checkPersistentMenu(item)
|
|
{
|
|
var menuitem = document.getElementById("menu_" + item);
|
|
menuitem.setAttribute("checked", gDebugger[item]);
|
|
}
|
|
|
|
function checkPersistentMenus()
|
|
{
|
|
// Restore the toggles that are stored in prefs.
|
|
checkPersistentMenu("paintFlashing");
|
|
checkPersistentMenu("paintDumping");
|
|
checkPersistentMenu("invalidateDumping");
|
|
checkPersistentMenu("eventDumping");
|
|
checkPersistentMenu("motionEventDumping");
|
|
checkPersistentMenu("crossingEventDumping");
|
|
checkPersistentMenu("reflowCounts");
|
|
}
|
|
|
|
|
|
function OnLDBUnload()
|
|
{
|
|
gBrowser.removeProgressListener(gProgressListener);
|
|
}
|
|
|
|
function toggle(menuitem)
|
|
{
|
|
// trim the initial "menu_"
|
|
var feature = menuitem.id.substring(5);
|
|
gDebugger[feature] = menuitem.getAttribute("checked") == "true";
|
|
}
|
|
|
|
function openFile()
|
|
{
|
|
var nsIFilePicker = Ci.nsIFilePicker;
|
|
var fp = Cc["@mozilla.org/filepicker;1"]
|
|
.createInstance(nsIFilePicker);
|
|
fp.init(window, "Select a File", nsIFilePicker.modeOpen);
|
|
fp.appendFilters(nsIFilePicker.filterHTML | nsIFilePicker.filterAll);
|
|
fp.open(rv => {
|
|
if (rv == nsIFilePicker.returnOK && fp.fileURL.spec &&
|
|
fp.fileURL.spec.length > 0) {
|
|
gBrowser.loadURI(fp.fileURL.spec, {
|
|
triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
|
|
});
|
|
}
|
|
});
|
|
}
|