summaryrefslogtreecommitdiffstats
path: root/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
new file mode 100644
index 0000000000..2c89b1bd20
--- /dev/null
+++ b/third_party/webkit/PerformanceTests/Speedometer/resources/flightjs-example-app/components/flight/lib/logger.js
@@ -0,0 +1,93 @@
+// ==========================================
+// Copyright 2013 Twitter, Inc
+// Licensed under The MIT License
+// http://opensource.org/licenses/MIT
+// ==========================================
+
+"use strict";
+
+define(
+
+ [
+ './compose',
+ './utils'
+ ],
+
+ function (compose, util) {
+
+ var actionSymbols = {
+ on:'<-',
+ trigger: '->',
+ off: 'x '
+ };
+
+ function elemToString(elem) {
+ var tagStr = elem.tagName ? elem.tagName.toLowerCase() : elem.toString();
+ var classStr = elem.className ? "." + (elem.className) : "";
+ var result = tagStr + classStr;
+ return elem.tagName ? ['\'', '\''].join(result) : result;
+ }
+
+ function log(action, component, eventArgs) {
+
+ var name, elem, fn, fnName, logFilter, toRegExp, actionLoggable, nameLoggable;
+
+ if (typeof eventArgs[eventArgs.length-1] == 'function') {
+ fn = eventArgs.pop();
+ fn = fn.unbound || fn; //use unbound version if any (better info)
+ }
+
+ if (typeof eventArgs[eventArgs.length - 1] == 'object') {
+ eventArgs.pop(); //trigger data arg - not logged right now
+ }
+
+ if (eventArgs.length == 2) {
+ elem = eventArgs[0];
+ name = eventArgs[1];
+ } else {
+ elem = component.$node[0];
+ name = eventArgs[0];
+ }
+
+ if (window.DEBUG && window.DEBUG.enabled) {
+ logFilter = DEBUG.events.logFilter;
+
+ // no regex for you, actions...
+ actionLoggable = logFilter.actions=="all" || (logFilter.actions.indexOf(action) > -1);
+ // event name filter allow wildcards or regex...
+ toRegExp = function(expr) {
+ return expr.test ? expr : new RegExp("^" + expr.replace(/\*/g, ".*") + "$");
+ };
+ nameLoggable =
+ logFilter.eventNames=="all" ||
+ logFilter.eventNames.some(function(e) {return toRegExp(e).test(name)});
+
+ if (actionLoggable && nameLoggable) {
+ console.info(
+ actionSymbols[action],
+ action,
+ '[' + name + ']',
+ elemToString(elem),
+ component.constructor.toString(),
+ fn && (fnName = fn.name || fn.displayName) && '-> ' + fnName
+ );
+ }
+ }
+ }
+
+
+ function withLogging() {
+ this.before('trigger', function() {
+ log('trigger', this, util.toArray(arguments));
+ });
+ this.before('on', function() {
+ log('on', this, util.toArray(arguments));
+ });
+ this.before('off', function(eventArgs) {
+ log('off', this, util.toArray(arguments));
+ });
+ }
+
+ return withLogging;
+ }
+);