Format all pure Dart code with package:dart_style v0.2.0 Command: ``` find -type f -name "*.dart" | xargs dartformat -w ```
97 lines
2.2 KiB
Dart
97 lines
2.2 KiB
Dart
/**
|
|
* Tracing for Dart applications.
|
|
*
|
|
* The tracing API hooks up to either [WTF](http://google.github.io/tracing-framework/) or
|
|
* [Dart Observatory](https://www.dartlang.org/tools/observatory/).
|
|
*/
|
|
library angular2.src.core.wtf_impl;
|
|
|
|
typedef dynamic WtfScopeFn([arg0, arg1]);
|
|
|
|
var context = null;
|
|
var _trace;
|
|
var _events;
|
|
var _createScope;
|
|
var _leaveScope;
|
|
var _beginTimeRange;
|
|
var _endTimeRange;
|
|
final List _arg1 = [null];
|
|
final List _arg2 = [null, null];
|
|
|
|
bool detectWTF() {
|
|
if (context != null && context.hasProperty('wtf')) {
|
|
var wtf = context['wtf'];
|
|
if (wtf.hasProperty('trace')) {
|
|
_trace = wtf['trace'];
|
|
_events = _trace['events'];
|
|
_createScope = _events['createScope'];
|
|
_leaveScope = _trace['leaveScope'];
|
|
_beginTimeRange = _trace['beginTimeRange'];
|
|
_endTimeRange = _trace['endTimeRange'];
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
int getArgSize(String signature) {
|
|
int start = signature.indexOf('(') + 1;
|
|
int end = signature.indexOf(')', start);
|
|
bool found = false;
|
|
int count = 0;
|
|
for (var i = start; i < end; i++) {
|
|
var ch = signature[i];
|
|
if (identical(ch, ',')) {
|
|
found = false;
|
|
}
|
|
if (!found) {
|
|
found = true;
|
|
count++;
|
|
}
|
|
}
|
|
return count;
|
|
}
|
|
|
|
dynamic createScope(String signature, [flags]) {
|
|
_arg2[0] = signature;
|
|
_arg2[1] = flags;
|
|
var jsScope = _createScope.apply(_arg2, thisArg: _events);
|
|
switch (getArgSize(signature)) {
|
|
case 0:
|
|
return ([arg0, arg1]) {
|
|
return jsScope.apply(const []);
|
|
};
|
|
case 1:
|
|
return ([arg0, arg1]) {
|
|
_arg1[0] = arg0;
|
|
return jsScope.apply(_arg1);
|
|
};
|
|
case 2:
|
|
return ([arg0, arg1]) {
|
|
_arg2[0] = arg0;
|
|
_arg2[1] = arg1;
|
|
return jsScope.apply(_arg1);
|
|
};
|
|
default:
|
|
throw "Max 2 arguments are supported.";
|
|
}
|
|
}
|
|
|
|
void leave(scope, [returnValue]) {
|
|
_arg2[0] = scope;
|
|
_arg2[1] = returnValue;
|
|
_leaveScope.apply(_arg2, thisArg: _trace);
|
|
return returnValue;
|
|
}
|
|
|
|
dynamic startTimeRange(String rangeType, String action) {
|
|
_arg2[0] = rangeType;
|
|
_arg2[1] = action;
|
|
return _beginTimeRange.apply(_arg2, thisArg: _trace);
|
|
}
|
|
|
|
void endTimeRange(dynamic range) {
|
|
_arg1[0] = range;
|
|
_endTimeRange.apply(_arg1, thisArg: _trace);
|
|
}
|