Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1304)

Unified Diff: runtime/observatory/lib/src/elements/timeline_page.dart

Issue 1975953002: Add Timeline Developer Profiles for faster category switching (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | runtime/observatory/lib/src/elements/timeline_page.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/observatory/lib/src/elements/timeline_page.dart
diff --git a/runtime/observatory/lib/src/elements/timeline_page.dart b/runtime/observatory/lib/src/elements/timeline_page.dart
index 099d81c9e46be2eb9fb6b1b78442d7c5d27414b4..28f3046e7cc77f0dd24ac1bec0fbaab52d533bbf 100644
--- a/runtime/observatory/lib/src/elements/timeline_page.dart
+++ b/runtime/observatory/lib/src/elements/timeline_page.dart
@@ -97,6 +97,61 @@ class TimelinePageElement extends ObservatoryElement {
for (String streamName in _availableStreams) {
e.children.add(_makeStreamToggle(streamName));
}
+
+ streamPresetSelector = streamPresetFromRecordedStreams();
+ }
+
+ // Dart developers care about the following streams:
+ List<String> _dartPreset =
+ ['GC', 'Compiler', 'Dart'];
+
+ // VM developers care about the following streams:
+ List<String> _vmPreset =
+ ['GC', 'Compiler', 'Dart', 'Debugger', 'Embedder', 'Isolate', 'VM'];
+
+ String streamPresetFromRecordedStreams() {
+ if (_availableStreams.length == 0) {
+ return 'None';
+ }
+ if (_recordedStreams.length == 0) {
+ return 'None';
+ }
+ if (_recordedStreams.length == _availableStreams.length) {
+ return 'All';
+ }
+ if ((_vmPreset.length == _recordedStreams.length) &&
+ _recordedStreams.containsAll(_vmPreset)) {
+ return 'VM';
+ }
+ if ((_dartPreset.length == _recordedStreams.length) &&
+ _recordedStreams.containsAll(_dartPreset)) {
+ return 'Dart';
+ }
+ return 'Custom';
+ }
+
+ void _applyPreset() {
+ switch (streamPresetSelector) {
+ case 'None':
+ _recordedStreams.clear();
+ break;
+ case 'All':
+ _recordedStreams.clear();
+ _recordedStreams.addAll(_availableStreams);
+ break;
+ case 'VM':
+ _recordedStreams.clear();
+ _recordedStreams.addAll(_vmPreset);
+ break;
+ case 'Dart':
+ _recordedStreams.clear();
+ _recordedStreams.addAll(_dartPreset);
+ break;
+ case 'Custom':
+ return;
+ }
+ _applyStreamChanges();
+ _updateRecorderUI();
}
Future _updateRecorderUI() async {
@@ -111,6 +166,10 @@ class TimelinePageElement extends ObservatoryElement {
Future _setupInitialState() async {
await _updateRecorderUI();
+ SelectElement e = $['selectPreset'];
+ e.onChange.listen((_) {
+ _applyPreset();
+ });
// Finally, trigger a reload so we start with the latest timeline.
await refresh();
}
@@ -147,6 +206,7 @@ class TimelinePageElement extends ObservatoryElement {
StreamSubscription _resizeSubscription;
@observable String recorderName;
+ @observable String streamPresetSelector = 'None';
final Set<String> _availableStreams = new Set<String>();
final Set<String> _recordedStreams = new Set<String>();
}
« no previous file with comments | « no previous file | runtime/observatory/lib/src/elements/timeline_page.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698