| Index: runtime/observatory/lib/src/elements/observatory_element.dart
 | 
| diff --git a/runtime/observatory/lib/src/elements/observatory_element.dart b/runtime/observatory/lib/src/elements/observatory_element.dart
 | 
| deleted file mode 100644
 | 
| index ed52cf0ca3b81d4f4d002676bb5f636a85f25381..0000000000000000000000000000000000000000
 | 
| --- a/runtime/observatory/lib/src/elements/observatory_element.dart
 | 
| +++ /dev/null
 | 
| @@ -1,192 +0,0 @@
 | 
| -// Copyright (c) 2013, the Dart project authors.  Please see the AUTHORS file
 | 
| -// for details. All rights reserved. Use of this source code is governed by a
 | 
| -// BSD-style license that can be found in the LICENSE file.
 | 
| -
 | 
| -library observatory_element;
 | 
| -
 | 
| -import 'dart:async';
 | 
| -import 'dart:html';
 | 
| -import 'package:observatory/app.dart';
 | 
| -import 'package:observatory/service.dart';
 | 
| -import 'package:polymer/polymer.dart';
 | 
| -
 | 
| -/// Base class for all Observatory custom elements.
 | 
| -class ObservatoryElement extends PolymerElement {
 | 
| -  ObservatoryElement.created() : super.created();
 | 
| -
 | 
| -  ObservatoryApplication get app => ObservatoryApplication.app;
 | 
| -  Page get page => app.currentPage;
 | 
| -
 | 
| -  @override
 | 
| -  void attached() {
 | 
| -    super.attached();
 | 
| -    _startPoll();
 | 
| -  }
 | 
| -
 | 
| -  @override
 | 
| -  void attributeChanged(String name, var oldValue, var newValue) {
 | 
| -    super.attributeChanged(name, oldValue, newValue);
 | 
| -  }
 | 
| -
 | 
| -  @override
 | 
| -  void detached() {
 | 
| -    super.detached();
 | 
| -    _stopPoll();
 | 
| -  }
 | 
| -
 | 
| -  @override
 | 
| -  void ready() {
 | 
| -    super.ready();
 | 
| -  }
 | 
| -
 | 
| -  /// Set to a non-null value to enable polling on this element. When the poll
 | 
| -  /// timer fires, onPoll will be called.
 | 
| -  @observable Duration pollPeriod;
 | 
| -  Timer _pollTimer;
 | 
| -
 | 
| -  /// Called every [pollPeriod] while the element is attached to the DOM.
 | 
| -  void onPoll() { }
 | 
| -
 | 
| -  void pollPeriodChanged(oldValue) {
 | 
| -    if (pollPeriod != null) {
 | 
| -      _startPoll();
 | 
| -    } else {
 | 
| -      _stopPoll();
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  void _startPoll() {
 | 
| -    if (pollPeriod == null) {
 | 
| -      return;
 | 
| -    }
 | 
| -    if (_pollTimer != null) {
 | 
| -      _pollTimer.cancel();
 | 
| -    }
 | 
| -    _pollTimer = new Timer(pollPeriod, _onPoll);
 | 
| -  }
 | 
| -
 | 
| -  void _stopPoll() {
 | 
| -    if (_pollTimer != null) {
 | 
| -      _pollTimer.cancel();
 | 
| -    }
 | 
| -    _pollTimer = null;
 | 
| -  }
 | 
| -
 | 
| -  void _onPoll() {
 | 
| -    onPoll();
 | 
| -    if (pollPeriod == null) {
 | 
| -      // Stop polling.
 | 
| -      _stopPoll();
 | 
| -      return;
 | 
| -    }
 | 
| -    // Restart timer.
 | 
| -    _pollTimer = new Timer(pollPeriod, _onPoll);
 | 
| -  }
 | 
| -
 | 
| -  /// Utility method for handling on-click of <a> tags. Navigates
 | 
| -  /// within the application using the [LocationManager].
 | 
| -  void goto(MouseEvent event, var detail, Element target) {
 | 
| -    app.locationManager.onGoto(event);
 | 
| -    event.stopPropagation();
 | 
| -  }
 | 
| -
 | 
| -  void onClickGoto(MouseEvent event) {
 | 
| -    app.locationManager.onGoto(event);
 | 
| -    event.stopPropagation();
 | 
| -  }
 | 
| -
 | 
| -  String makeLink(String url, [ServiceObject obj]) {
 | 
| -    if (obj != null) {
 | 
| -      if (obj is Isolate) {
 | 
| -        url = '${url}?isolateId=${Uri.encodeComponent(obj.id)}';
 | 
| -      } else {
 | 
| -        if (obj.id == null) {
 | 
| -          // No id
 | 
| -          return url;
 | 
| -        }
 | 
| -        url = ('${url}?isolateId=${Uri.encodeComponent(obj.isolate.id)}'
 | 
| -                       '&objectId=${Uri.encodeComponent(obj.id)}');
 | 
| -      }
 | 
| -    }
 | 
| -    return url;
 | 
| -  }
 | 
| -
 | 
| -  /// Create a link that can be consumed by [goto].
 | 
| -  String gotoLink(String url, [ServiceObject obj]) {
 | 
| -    return app.locationManager.makeLink(makeLink(url, obj));
 | 
| -  }
 | 
| -  String gotoLinkForwardingParameters(String url, [ServiceObject obj]) {
 | 
| -    return app.locationManager.makeLinkForwardingParameters(makeLink(url, obj));
 | 
| -  }
 | 
| -
 | 
| -  String formatTimePrecise(double time) => Utils.formatTimePrecise(time);
 | 
| -  String formatTimeMilliseconds(int millis) =>
 | 
| -      Utils.formatTimeMilliseconds(millis);
 | 
| -  String formatTime(double time) => Utils.formatTime(time);
 | 
| -
 | 
| -  String formatSeconds(double x) => Utils.formatSeconds(x);
 | 
| -
 | 
| -
 | 
| -  String formatSize(int bytes) => Utils.formatSize(bytes);
 | 
| -
 | 
| -  int parseInt(String value) => int.parse(value);
 | 
| -
 | 
| -  String asStringLiteral(String value, [bool wasTruncated=false]) {
 | 
| -    var result = new List();
 | 
| -    result.add("'".codeUnitAt(0));
 | 
| -    for (int codeUnit in value.codeUnits) {
 | 
| -      if (codeUnit == '\n'.codeUnitAt(0)) result.addAll('\\n'.codeUnits);
 | 
| -      else if (codeUnit == '\r'.codeUnitAt(0)) result.addAll('\\r'.codeUnits);
 | 
| -      else if (codeUnit == '\f'.codeUnitAt(0)) result.addAll('\\f'.codeUnits);
 | 
| -      else if (codeUnit == '\b'.codeUnitAt(0)) result.addAll('\\b'.codeUnits);
 | 
| -      else if (codeUnit == '\t'.codeUnitAt(0)) result.addAll('\\t'.codeUnits);
 | 
| -      else if (codeUnit == '\v'.codeUnitAt(0)) result.addAll('\\v'.codeUnits);
 | 
| -      else if (codeUnit == '\$'.codeUnitAt(0)) result.addAll('\\\$'.codeUnits);
 | 
| -      else if (codeUnit == '\\'.codeUnitAt(0)) result.addAll('\\\\'.codeUnits);
 | 
| -      else if (codeUnit == "'".codeUnitAt(0)) result.addAll("'".codeUnits);
 | 
| -      else if (codeUnit < 32) {
 | 
| -         var escapeSequence = "\\u" + codeUnit.toRadixString(16).padLeft(4, "0");
 | 
| -         result.addAll(escapeSequence.codeUnits);
 | 
| -      } else result.add(codeUnit);
 | 
| -    }
 | 
| -    if (wasTruncated) {
 | 
| -      result.addAll("...".codeUnits);
 | 
| -    } else {
 | 
| -      result.add("'".codeUnitAt(0));
 | 
| -    }
 | 
| -    return new String.fromCharCodes(result);
 | 
| -  }
 | 
| -
 | 
| -  void clearShadowRoot() {
 | 
| -    // Remove all non-style elements.
 | 
| -    // Have to do the following because removeWhere doesn't work on DOM child
 | 
| -    // node lists. i.e. removeWhere((e) => e is! StyleElement);
 | 
| -    var styleElements = [];
 | 
| -    for (var child in shadowRoot.children) {
 | 
| -      if (child is StyleElement) {
 | 
| -        styleElements.add(child);
 | 
| -      }
 | 
| -    }
 | 
| -    shadowRoot.children.clear();
 | 
| -    for (var style in styleElements) {
 | 
| -      shadowRoot.children.add(style);
 | 
| -    }
 | 
| -  }
 | 
| -
 | 
| -  void insertTextSpanIntoShadowRoot(String text) {
 | 
| -    var spanElement = new SpanElement();
 | 
| -    spanElement.text = text;
 | 
| -    shadowRoot.children.add(spanElement);
 | 
| -  }
 | 
| -
 | 
| -  void insertLinkIntoShadowRoot(String label, String href, [String title]) {
 | 
| -    var anchorElement = new AnchorElement();
 | 
| -    anchorElement.href = href;
 | 
| -    anchorElement.text = label;
 | 
| -    if (title != null) {
 | 
| -      anchorElement.title = title;
 | 
| -    }
 | 
| -    anchorElement.onClick.listen(onClickGoto);
 | 
| -    shadowRoot.children.add(anchorElement);
 | 
| -  }
 | 
| -}
 | 
| 
 |