зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1544924 - Support filtering individual classes with MOZ_INSTRUMENT_CUSTOM_ELEMENTS;r=aswan
For example, you can do MOZ_INSTRUMENT_CUSTOM_ELEMENTS=MozXULElement,Button to limit output to classes containing those strings in their name Differential Revision: https://phabricator.services.mozilla.com/D27800 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
d6bd83e7ed
Коммит
6d157529af
|
@ -24,7 +24,7 @@ window.MozElements = MozElements;
|
||||||
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm");
|
||||||
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
|
const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
|
||||||
const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
|
const env = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
|
||||||
const instrumentClasses = !!env.get("MOZ_INSTRUMENT_CUSTOM_ELEMENTS");
|
const instrumentClasses = env.get("MOZ_INSTRUMENT_CUSTOM_ELEMENTS");
|
||||||
const instrumentedClasses = instrumentClasses ? new Set() : null;
|
const instrumentedClasses = instrumentClasses ? new Set() : null;
|
||||||
const instrumentedBaseClasses = instrumentClasses ? new WeakSet() : null;
|
const instrumentedBaseClasses = instrumentClasses ? new WeakSet() : null;
|
||||||
|
|
||||||
|
@ -46,8 +46,11 @@ MozElements.printInstrumentation = function(collapsed) {
|
||||||
let totalCalls = 0;
|
let totalCalls = 0;
|
||||||
let totalTime = 0;
|
let totalTime = 0;
|
||||||
for (let c of instrumentedClasses) {
|
for (let c of instrumentedClasses) {
|
||||||
|
// Allow passing in something like MOZ_INSTRUMENT_CUSTOM_ELEMENTS=MozXULElement,Button to filter
|
||||||
|
let includeClass = instrumentClasses == 1 ||
|
||||||
|
instrumentClasses.split(",").some(n => c.name.toLowerCase().includes(n.toLowerCase()));
|
||||||
let summary = c.__instrumentation_summary;
|
let summary = c.__instrumentation_summary;
|
||||||
if (summary) {
|
if (includeClass && summary) {
|
||||||
summaries.push(summary);
|
summaries.push(summary);
|
||||||
totalCalls += summary.totalCalls;
|
totalCalls += summary.totalCalls;
|
||||||
totalTime += summary.totalTime;
|
totalTime += summary.totalTime;
|
||||||
|
@ -94,6 +97,7 @@ function instrumentIndividualClass(c) {
|
||||||
if (instrumentedClasses.has((c))) {
|
if (instrumentedClasses.has((c))) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
instrumentedClasses.add((c));
|
instrumentedClasses.add((c));
|
||||||
let data = { instances: 0 };
|
let data = { instances: 0 };
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче