diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools')
-rw-r--r-- | third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js new file mode 100644 index 0000000000..b2e4fdfeff --- /dev/null +++ b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/tools/debug/debug.js @@ -0,0 +1,157 @@ +"use strict"; + +define( + + [ + '../../lib/registry', + '../../lib/utils' + ], + + function(registry, utils) { + + var logFilter; + + //****************************************************************************************** + // Search object model + //****************************************************************************************** + + function traverse(util, searchTerm, options) { + var options = options || {}; + var obj = options.obj || window; + var path = options.path || ((obj==window) ? "window" : ""); + var props = Object.keys(obj); + props.forEach(function(prop) { + if ((tests[util] || util)(searchTerm, obj, prop)){ + console.log([path, ".", prop].join(""), "->",["(", typeof obj[prop], ")"].join(""), obj[prop]); + } + if(Object.prototype.toString.call(obj[prop])=="[object Object]" && (obj[prop] != obj) && path.split(".").indexOf(prop) == -1) { + traverse(util, searchTerm, {obj: obj[prop], path: [path,prop].join(".")}); + } + }); + } + + function search(util, expected, searchTerm, options) { + if (!expected || typeof searchTerm == expected) { + traverse(util, searchTerm, options); + } else { + console.error([searchTerm, 'must be', expected].join(' ')) + } + } + + var tests = { + 'name': function(searchTerm, obj, prop) {return searchTerm == prop}, + 'nameContains': function(searchTerm, obj, prop) {return prop.indexOf(searchTerm)>-1}, + 'type': function(searchTerm, obj, prop) {return obj[prop] instanceof searchTerm}, + 'value': function(searchTerm, obj, prop) {return obj[prop] === searchTerm}, + 'valueCoerced': function(searchTerm, obj, prop) {return obj[prop] == searchTerm} + } + + function byName(searchTerm, options) {search('name', 'string', searchTerm, options);}; + function byNameContains(searchTerm, options) {search('nameContains', 'string', searchTerm, options);}; + function byType(searchTerm, options) {search('type', 'function', searchTerm, options);}; + function byValue(searchTerm, options) {search('value', null, searchTerm, options);}; + function byValueCoerced(searchTerm, options) {search('valueCoerced', null, searchTerm, options);}; + function custom(fn, options) {traverse(fn, null, options);}; + + //****************************************************************************************** + // Event logging + //****************************************************************************************** + + var ALL = 'all'; //no filter + + //no logging by default + var defaultEventNamesFilter = []; + var defaultActionsFilter = []; + + var logFilter = retrieveLogFilter(); + + function filterEventLogsByAction(/*actions*/) { + var actions = [].slice.call(arguments); + + logFilter.eventNames.length || (logFilter.eventNames = ALL); + logFilter.actions = actions.length ? actions : ALL; + saveLogFilter(); + } + + function filterEventLogsByName(/*eventNames*/) { + var eventNames = [].slice.call(arguments); + + logFilter.actions.length || (logFilter.actions = ALL); + logFilter.eventNames = eventNames.length ? eventNames : ALL; + saveLogFilter(); + } + + function hideAllEventLogs() { + logFilter.actions = []; + logFilter.eventNames = []; + saveLogFilter(); + } + + function showAllEventLogs() { + logFilter.actions = ALL; + logFilter.eventNames = ALL; + saveLogFilter(); + } + + function saveLogFilter() { + if (window.localStorage) { + localStorage.setItem('logFilter_eventNames', logFilter.eventNames); + localStorage.setItem('logFilter_actions', logFilter.actions); + } + } + + function retrieveLogFilter() { + var result = { + eventNames: (window.localStorage && localStorage.getItem('logFilter_eventNames')) || defaultEventNamesFilter, + actions: (window.localStorage && localStorage.getItem('logFilter_actions')) || defaultActionsFilter + }; + //reconstitute arrays + Object.keys(result).forEach(function(k) { + var thisProp = result[k]; + if (typeof thisProp == 'string' && thisProp !== ALL) { + result[k] = thisProp.split(','); + } + }); + return result; + } + + return { + + enable: function(enable) { + this.enabled = !!enable; + + if (enable && window.console) { + console.info('Booting in DEBUG mode'); + console.info('You can configure event logging with DEBUG.events.logAll()/logNone()/logByName()/logByAction()'); + } + + window.DEBUG = this; + }, + + find: { + byName: byName, + byNameContains: byNameContains, + byType: byType, + byValue: byValue, + byValueCoerced: byValueCoerced, + custom: custom + }, + + events: { + logFilter: logFilter, + + // Accepts any number of action args + // e.g. DEBUG.events.logByAction("on", "off") + logByAction: filterEventLogsByAction, + + // Accepts any number of event name args (inc. regex or wildcards) + // e.g. DEBUG.events.logByName(/ui.*/, "*Thread*"); + logByName: filterEventLogsByName, + + logAll: showAllEventLogs, + logNone: hideAllEventLogs + } + }; + } +); + |