blob: bcbf9658cfb318d1dbea3ea8b1971ba65cd07df3 [file] [log] [blame]
// Copyright 2020 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 'package:logging/logging.dart';
import 'sl4f_client.dart';
class TilesListResponse {
final String url;
final int key;
final bool focusable;
TilesListResponse(this.url, this.key, {this.focusable});
}
final _log = Logger('tiles_sl4f');
class Tiles {
final Sl4f _sl4f;
Tiles(this._sl4f);
Future<void> start() => _sl4f.request('tiles_facade.Start', null);
Future<void> stop() => _sl4f.request('tiles_facade.Stop', null);
Future<List<TilesListResponse>> list() async {
final result = await _sl4f.request('tiles_facade.List', null);
_log.info('Found tiles list: ${result.toString()}');
final List<TilesListResponse> resp = <TilesListResponse>[];
if (result != null) {
final List<dynamic> keys = result['keys'];
final List<dynamic> urls = result['urls'];
final List<dynamic> focuses = result['focus'];
for (var i = 0; i < keys.length; i++) {
resp.add(TilesListResponse(urls[i], keys[i], focusable: focuses[i]));
}
}
return resp;
}
Future<void> remove(int key) async {
await _sl4f.request('tiles_facade.Remove', {'key': key.toString()});
}
Future<int> addFromUrl(String url,
{bool allowFocus, List<String> args}) async {
final Map<String, dynamic> request = {'url': url};
if (allowFocus != null) {
request['allowed_focus'] = allowFocus;
}
if (args != null) {
request['args'] = args;
}
final result = await _sl4f.request('tiles_facade.AddFromUrl', request);
if (result != null) {
return result['key'];
}
return null;
}
}