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

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

Issue 2303173002: Converted Observatory metrics-page element (Closed)
Patch Set: Added sampling buffer size select Created 4 years, 3 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 084c78bf180bdd1411edbdbf8d58aca5e1ddf8f5..a619ed466cf014f45be2094d592dcecaaafb9f1f 100644
--- a/runtime/observatory/lib/src/app/page.dart
+++ b/runtime/observatory/lib/src/app/page.dart
@@ -20,6 +20,7 @@ final _isolateRepository = new IsolateRepository();
final _isolateSampleProfileRepository = new IsolateSampleProfileRepository();
final _libraryRepository = new LibraryRepository();
final _megamorphicCacheRepository = new MegamorphicCacheRepository();
+final _metricRepository = new MetricRepository();
final _objectRepository = new ObjectRepository();
final _objectPoolRepository = new ObjectPoolRepository();
final _objectstoreRepository = new ObjectStoreRepository();
@@ -644,7 +645,6 @@ class HeapSnapshotPage extends MatchingPage {
}
}
-
class LoggingPage extends SimplePage {
LoggingPage(app) : super('logging', 'logging-page', app);
@@ -725,63 +725,37 @@ class IsolateReconnectPage extends Page {
bool canVisit(Uri uri) => uri.path == 'isolate-reconnect';
}
-class MetricsPage extends Page {
- // Page state, retained as long as ObservatoryApplication.
- String selectedMetricId;
+class MetricsPage extends MatchingPage {
+ MetricsPage(app) : super('metrics', app);
- final Map<int, MetricPoller> pollers = new Map<int, MetricPoller>();
+ final DivElement container = new DivElement();
- // 8 seconds, 4 seconds, 2 seconds, 1 second, and one hundred milliseconds.
- static final List<int> POLL_PERIODS = [8000,
- 4000,
- 2000,
- 1000,
- 100];
+ Isolate lastIsolate;
- MetricsPage(app) : super(app) {
- for (var i = 0; i < POLL_PERIODS.length; i++) {
- pollers[POLL_PERIODS[i]] = new MetricPoller(POLL_PERIODS[i]);
- }
+ void _visit(Uri uri) {
+ super._visit(uri);
+ getIsolate(uri).then((isolate) async {
+ lastIsolate = isolate;
+ container.children = const [];
+ await _metricRepository.startSampling(isolate);
+ container.children = [
+ new MetricsPageElement(isolate.vm, isolate, app.events,
+ app.notifications, _metricRepository,
+ queue: app.queue)
+ ];
+ });
}
void onInstall() {
if (element == null) {
- element = new Element.tag('metrics-page');
- (element as MetricsPageElement).page = this;
- }
- assert(element != null);
- }
-
- void setRefreshPeriod(int refreshPeriod, ServiceMetric metric) {
- if (metric.poller != null) {
- if (metric.poller.pollPeriod.inMilliseconds == refreshPeriod) {
- return;
- }
- // Remove from current poller.
- metric.poller.metrics.remove(metric);
- metric.poller = null;
- }
- if (refreshPeriod == 0) {
- return;
- }
- var poller = pollers[refreshPeriod];
- if (poller != null) {
- poller.metrics.add(metric);
- metric.poller = poller;
- return;
+ element = container;
}
- throw new FallThroughError();
}
- void _visit(Uri uri) {
- assert(element != null);
- assert(canVisit(uri));
- app.vm.getIsolate(uri.queryParameters['isolateId']).then((i) {
- (element as MetricsPageElement).isolate = i;
- });
+ @override
+ void onUninstall() {
+ _metricRepository.stopSampling(lastIsolate);
}
-
- bool canVisit(Uri uri) => uri.path == 'metrics';
}
class TimelinePage extends Page {

Powered by Google App Engine
This is Rietveld 408576698