blob: e10fa76a564788926c4c6fd08497cb99d148f140 [file] [log] [blame]
// 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.
part of app;
/// A request response interceptor is called for each response.
typedef void RequestResponseInterceptor();
/// The observatory application. Instances of this are created and owned
/// by the observatory_application custom element.
class ObservatoryApplication extends Observable {
@observable final LocationManager locationManager;
@observable final VM vm;
@observable Isolate isolate;
/// The current [ServiceObject] being viewed by the application.
@observable ServiceObject response;
/// Any client-level arguments for viewing the current response.
@observable String args;
// TODO(turnidge): Make args a Map.
void _initOnce() {
// Only called once.
assert(locationManager._app == null);
locationManager._app = this;
locationManager.init();
vm.errors.stream.listen(_onError);
vm.exceptions.stream.listen(_onException);
}
void _onError(ServiceError error) {
response = error;
// No id, clear the hash.
locationManager.clearCurrentHash();
}
void _onException(ServiceException exception) {
response = exception;
// No id, clear the hash.
locationManager.clearCurrentHash();
}
ObservatoryApplication.devtools() :
locationManager = new LocationManager(),
vm = new DartiumVM() {
_initOnce();
}
ObservatoryApplication() :
locationManager = new LocationManager(),
vm = new WebSocketVM() {
_initOnce();
}
}