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

Unified Diff: runtime/observatory/lib/src/app/page.dart

Issue 897593003: Small refactor of pages (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 11 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
Index: runtime/observatory/lib/src/app/page.dart
diff --git a/runtime/observatory/lib/src/app/page.dart b/runtime/observatory/lib/src/app/page.dart
index 02f4b2f7099f870ddc781871bbdee48112554bbb..27b032559279bf719b8bd6bcd5ad992399858306 100644
--- a/runtime/observatory/lib/src/app/page.dart
+++ b/runtime/observatory/lib/src/app/page.dart
@@ -71,173 +71,111 @@ class ServiceObjectPage extends Page {
bool canVisit(String url) => true;
}
-/// Class tree page.
-class ClassTreePage extends Page {
- static const _urlPrefix = 'class-tree/';
-
- ClassTreePage(app) : super(app);
+class IsolateSuffixPage extends Page {
+ final String pagePrefix;
+ final String elementTagName;
+ String _isolateId;
+ String get isolateId => _isolateId;
+ IsolateSuffixPage(this.pagePrefix, this.elementTagName, app) : super(app);
void onInstall() {
if (element == null) {
- element = new Element.tag('class-tree');
+ element = new Element.tag(elementTagName);
}
}
void _visit(String url) {
- assert(element != null);
+ assert(url != null);
assert(canVisit(url));
- // ClassTree urls are 'class-tree/isolate-id', chop off prefix, leaving
- // isolate url.
- //
- // TODO(turnidge): Many pages share the isolate parsing/fetching
- // code. Consider refactoring.
- url = url.substring(_urlPrefix.length);
- /// Request the isolate url.
- app.vm.get(url).then((isolate) {
+ _isolateId = url.substring(pagePrefix.length);
+ }
+
+ Future<Isolate> getIsolate() {
+ return app.vm.get(isolateId).catchError((e) {
+ Logger.root.severe('$pagePrefix visit error: $e');
+ return e;
+ });
+ }
+
+ bool canVisit(String url) => url.startsWith(pagePrefix);
+}
+
+
+/// Class tree page.
+class ClassTreePage extends IsolateSuffixPage {
+ ClassTreePage(app) : super('class-tree/', 'class-tree', app);
+
+ void _visit(String url) {
+ super._visit(url);
+ getIsolate().then((isolate) {
if (element != null) {
/// Update the page.
ClassTreeElement page = element;
page.isolate = isolate;
}
- }).catchError((e) {
- Logger.root.severe('ClassTreePage visit error: $e');
});
}
-
- /// Catch all.
- bool canVisit(String url) => url.startsWith(_urlPrefix);
}
-class DebuggerPage extends Page {
- static const _urlPrefix = 'debugger/';
-
- DebuggerPage(app) : super(app);
-
- void onInstall() {
- if (element == null) {
- element = new Element.tag('debugger-page');
- }
- }
+class DebuggerPage extends IsolateSuffixPage {
+ DebuggerPage(app) : super('debugger/', 'debugger-page', app);
void _visit(String url) {
- assert(element != null);
- assert(canVisit(url));
- // Debugger urls are 'debugger/isolate-id', chop off prefix, leaving
- // isolate url.
- url = url.substring(_urlPrefix.length);
- /// Request the isolate url.
- app.vm.get(url).then((isolate) {
+ super._visit(url);
+ getIsolate().then((isolate) {
if (element != null) {
/// Update the page.
DebuggerPageElement page = element;
page.isolate = isolate;
}
- }).catchError((e) {
- Logger.root.severe('Unexpected debugger error: $e');
});
}
-
- /// Catch all.
- bool canVisit(String url) => url.startsWith(_urlPrefix);
}
-class CpuProfilerPage extends Page {
- static const _urlPrefix = 'profiler/';
-
- CpuProfilerPage(app) : super(app);
-
- void onInstall() {
- if (element == null) {
- element = new Element.tag('cpu-profile');
- }
- }
+class CpuProfilerPage extends IsolateSuffixPage {
+ CpuProfilerPage(app) : super('profiler/', 'cpu-profile', app);
void _visit(String url) {
- assert(element != null);
- assert(canVisit(url));
- // CpuProfiler urls are 'profiler/isolate-id', chop off prefix, leaving
- // isolate url.
- url = url.substring(_urlPrefix.length);
- /// Request the isolate url.
- app.vm.get(url).then((isolate) {
+ super._visit(url);
+ getIsolate().then((isolate) {
if (element != null) {
/// Update the page.
CpuProfileElement page = element;
page.isolate = isolate;
}
- }).catchError((e) {
- Logger.root.severe('Unexpected profiler error: $e');
});
}
-
- /// Catch all.
- bool canVisit(String url) => url.startsWith(_urlPrefix);
}
-class AllocationProfilerPage extends Page {
- static const _urlPrefix = 'allocation-profiler/';
-
- AllocationProfilerPage(app) : super(app);
-
- void onInstall() {
- if (element == null) {
- element = new Element.tag('heap-profile');
- }
- }
+class AllocationProfilerPage extends IsolateSuffixPage {
+ AllocationProfilerPage(app)
+ : super('allocation-profiler/', 'heap-profile', app);
void _visit(String url) {
- assert(element != null);
- assert(canVisit(url));
- // Allocation profiler urls are 'allocation-profiler/isolate-id',
- // chop off prefix, leaving isolate url.
- url = url.substring(_urlPrefix.length);
- /// Request the isolate url.
- app.vm.get(url).then((isolate) {
+ super._visit(url);
+ getIsolate().then((isolate) {
if (element != null) {
/// Update the page.
HeapProfileElement page = element;
page.isolate = isolate;
}
- }).catchError((e) {
- Logger.root.severe('Unexpected allocation profiler error: $e');
});
}
-
- /// Catch all.
- bool canVisit(String url) => url.startsWith(_urlPrefix);
}
-class HeapMapPage extends Page {
- static const _urlPrefix = 'heap-map/';
-
- HeapMapPage(app) : super(app);
-
- void onInstall() {
- if (element == null) {
- element = new Element.tag('heap-map');
- }
- }
+class HeapMapPage extends IsolateSuffixPage {
+ HeapMapPage(app) : super('heap-map/', 'heap-map', app);
void _visit(String url) {
- assert(element != null);
- assert(canVisit(url));
- // Allocation profiler urls are 'heap-map/isolate-id',
- // chop off prefix, leaving isolate url.
- url = url.substring(_urlPrefix.length);
- /// Request the isolate url.
- app.vm.get(url).then((isolate) {
+ super._visit(url);
+ getIsolate().then((isolate) {
if (element != null) {
/// Update the page.
HeapMapElement page = element;
page.isolate = isolate;
}
- }).catchError((e) {
- Logger.root.severe('Unexpected heap map error: $e');
});
}
-
- /// Catch all.
- bool canVisit(String url) => url.startsWith(_urlPrefix);
}
class ErrorViewPage extends Page {
« no previous file with comments | « runtime/observatory/lib/src/app/application.dart ('k') | runtime/observatory/lib/src/elements/observatory_application.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698