blob: d669579d87d8594a09385f4bfbe05dad0351dca9 [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:async';
import 'client.dart';
import 'core_interface.dart';
import 'handler_adapter.dart';
import 'handler_interface.dart';
import 'view_impl.dart';
import 'view_interface.dart';
/// An implementation of [XiCoreProxy] wrapping any [XiClient].
class CoreProxy implements XiCoreProxy {
XiClient _inner;
CoreProxy(this._inner);
set handler(XiHandler handler) {
_inner.handler = XiHandlerAdapter(handler);
}
@override
XiViewProxy view(String viewId) {
return ViewProxy(_inner, viewId);
}
@override
Future<Null> clientStarted() {
return _inner.init().then((Null _) {
_inner.sendNotification('client_started', <String, dynamic>{});
});
}
@override
Future<String> newView() {
return _inner.sendRpc('new_view', <String, dynamic>{}).then((data) => data);
}
@override
void closeView(String viewId) {
Map<String, dynamic> params = <String, dynamic>{
'view_id': viewId,
};
_inner.sendNotification('close_view', params);
}
@override
void save(String viewId, {String path}) {
Map<String, dynamic> params = <String, dynamic>{
'view_id': viewId,
};
if (path != null) {
params['file_path'] = path;
}
_inner.sendNotification('save', params);
}
}