mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 861338 - [browserconsole] Cache Console.jsm API calls with ConsoleAPIStorage.jsm; r=jwalker
This commit is contained in:
parent
0d38b4e3d9
commit
f8f7fa75e5
@ -7,15 +7,32 @@
|
||||
|
||||
function test()
|
||||
{
|
||||
let storage = Cu.import("resource://gre/modules/ConsoleAPIStorage.jsm", {}).ConsoleAPIStorage;
|
||||
storage.clearEvents();
|
||||
|
||||
let console = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).console;
|
||||
console.log("bug861338-log-cached");
|
||||
|
||||
HUDConsoleUI.toggleBrowserConsole().then(consoleOpened);
|
||||
let hud = null;
|
||||
|
||||
function consoleOpened(aHud)
|
||||
{
|
||||
hud = aHud;
|
||||
hud.jsterm.clearOutput(true);
|
||||
waitForMessages({
|
||||
webconsole: hud,
|
||||
messages: [{
|
||||
name: "cached console.log message",
|
||||
text: "bug861338-log-cached",
|
||||
category: CATEGORY_WEBDEV,
|
||||
severity: SEVERITY_LOG,
|
||||
}],
|
||||
}).then(onCachedMessage);
|
||||
}
|
||||
|
||||
let console = Cu.import("resource://gre/modules/devtools/Console.jsm", {}).console;
|
||||
function onCachedMessage()
|
||||
{
|
||||
hud.jsterm.clearOutput(true);
|
||||
|
||||
console.time("foobarTimer");
|
||||
let foobar = { bug851231prop: "bug851231value" };
|
||||
@ -69,7 +86,7 @@ function test()
|
||||
name: "console.trace output",
|
||||
consoleTrace: {
|
||||
file: "browser_console_consolejsm_output.js",
|
||||
fn: "consoleOpened",
|
||||
fn: "onCachedMessage",
|
||||
},
|
||||
},
|
||||
{
|
||||
|
@ -72,9 +72,6 @@ function testCSSPruning(hudRef) {
|
||||
{
|
||||
let msg = hudRef.outputNode.querySelector(".webconsole-msg-cssparser " +
|
||||
".webconsole-msg-repeat");
|
||||
if (msg) {
|
||||
console.debug(msg, msg.getAttribute("value"));
|
||||
}
|
||||
return msg && msg.getAttribute("value") == 5;
|
||||
},
|
||||
successFn: function()
|
||||
|
@ -2,6 +2,8 @@
|
||||
* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
let Cu = Components.utils;
|
||||
let Ci = Components.interfaces;
|
||||
let Cc = Components.classes;
|
||||
@ -13,7 +15,7 @@ const STORAGE_MAX_EVENTS = 200;
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["ConsoleAPIStorage"];
|
||||
|
||||
var _consoleStorage = {};
|
||||
var _consoleStorage = new Map();
|
||||
|
||||
/**
|
||||
* The ConsoleAPIStorage is meant to cache window.console API calls for later
|
||||
@ -78,17 +80,15 @@ this.ConsoleAPIStorage = {
|
||||
getEvents: function CS_getEvents(aId)
|
||||
{
|
||||
if (aId != null) {
|
||||
return (_consoleStorage[aId] || []).slice(0);
|
||||
return (_consoleStorage.get(aId) || []).slice(0);
|
||||
}
|
||||
|
||||
let ids = [];
|
||||
let result = [];
|
||||
|
||||
for each (let events in _consoleStorage) {
|
||||
ids.push(events);
|
||||
for (let [id, events] of _consoleStorage) {
|
||||
result.push.apply(result, events);
|
||||
}
|
||||
|
||||
let result = [].concat.apply([], ids);
|
||||
|
||||
return result.sort(function(a, b) {
|
||||
return a.timeStamp - b.timeStamp;
|
||||
});
|
||||
@ -97,22 +97,19 @@ this.ConsoleAPIStorage = {
|
||||
/**
|
||||
* Record an event associated with the given window ID.
|
||||
*
|
||||
* @param string aWindowID
|
||||
* The ID of the inner window for which the event occurred.
|
||||
* @param string aId
|
||||
* The ID of the inner window for which the event occurred or "jsm" for
|
||||
* messages logged from JavaScript modules..
|
||||
* @param object aEvent
|
||||
* A JavaScript object you want to store.
|
||||
*/
|
||||
recordEvent: function CS_recordEvent(aWindowID, aEvent)
|
||||
recordEvent: function CS_recordEvent(aId, aEvent)
|
||||
{
|
||||
let ID = parseInt(aWindowID);
|
||||
if (isNaN(ID)) {
|
||||
throw new Error("Invalid window ID argument");
|
||||
if (!_consoleStorage.has(aId)) {
|
||||
_consoleStorage.set(aId, []);
|
||||
}
|
||||
|
||||
if (!_consoleStorage[ID]) {
|
||||
_consoleStorage[ID] = [];
|
||||
}
|
||||
let storage = _consoleStorage[ID];
|
||||
let storage = _consoleStorage.get(aId);
|
||||
storage.push(aEvent);
|
||||
|
||||
// truncate
|
||||
@ -120,7 +117,7 @@ this.ConsoleAPIStorage = {
|
||||
storage.shift();
|
||||
}
|
||||
|
||||
Services.obs.notifyObservers(aEvent, "console-storage-cache-event", ID);
|
||||
Services.obs.notifyObservers(aEvent, "console-storage-cache-event", aId);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -134,10 +131,10 @@ this.ConsoleAPIStorage = {
|
||||
clearEvents: function CS_clearEvents(aId)
|
||||
{
|
||||
if (aId != null) {
|
||||
delete _consoleStorage[aId];
|
||||
_consoleStorage.delete(aId);
|
||||
}
|
||||
else {
|
||||
_consoleStorage = {};
|
||||
_consoleStorage.clear();
|
||||
Services.obs.notifyObservers(null, "console-storage-reset", null);
|
||||
}
|
||||
},
|
||||
|
@ -22,7 +22,10 @@
|
||||
|
||||
this.EXPORTED_SYMBOLS = [ "console" ];
|
||||
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/ConsoleAPIStorage.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Services",
|
||||
"resource://gre/modules/Services.jsm");
|
||||
@ -453,7 +456,8 @@ function createMultiLineDumper(aLevel) {
|
||||
function sendConsoleAPIMessage(aLevel, aFrame, aArgs, aOptions = {})
|
||||
{
|
||||
let consoleEvent = {
|
||||
ID: aFrame.filename,
|
||||
ID: "jsm",
|
||||
innerID: aFrame.filename,
|
||||
level: aLevel,
|
||||
filename: aFrame.filename,
|
||||
lineNumber: aFrame.lineNumber,
|
||||
@ -487,6 +491,7 @@ function sendConsoleAPIMessage(aLevel, aFrame, aArgs, aOptions = {})
|
||||
}
|
||||
|
||||
Services.obs.notifyObservers(consoleEvent, "console-api-log-event", null);
|
||||
ConsoleAPIStorage.recordEvent("jsm", consoleEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user