[settings] refactor most settings off deprecated APIs, and make async SY-988
Change-Id: I466fa0769aae6d279c69930f5bedd2218b9aa314
diff --git a/bin/accessibility_settings/BUILD.gn b/bin/accessibility_settings/BUILD.gn
index e526334..f0fe1eb 100644
--- a/bin/accessibility_settings/BUILD.gn
+++ b/bin/accessibility_settings/BUILD.gn
@@ -24,7 +24,8 @@
deps = [
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//topaz/lib/settings:lib.settings",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
"//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
]
}
diff --git a/bin/accessibility_settings/OWNERS b/bin/accessibility_settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/bin/accessibility_settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/bin/bluetooth_settings/BUILD.gn b/bin/bluetooth_settings/BUILD.gn
index e0aad2c..4568278 100644
--- a/bin/bluetooth_settings/BUILD.gn
+++ b/bin/bluetooth_settings/BUILD.gn
@@ -29,9 +29,8 @@
"//sdk/fidl/fuchsia.bluetooth.le",
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//topaz/lib/settings:lib.settings",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
"//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
- "//topaz/public/lib/app_driver/dart",
- "//topaz/public/lib/schemas/dart",
]
}
diff --git a/bin/bluetooth_settings/OWNERS b/bin/bluetooth_settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/bin/bluetooth_settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/bin/bluetooth_settings/lib/main.dart b/bin/bluetooth_settings/lib/main.dart
index da339e8..6d6c8d4 100644
--- a/bin/bluetooth_settings/lib/main.dart
+++ b/bin/bluetooth_settings/lib/main.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import 'package:flutter/material.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib.widgets/model.dart';
import 'src/bluetooth_model.dart';
diff --git a/bin/bluetooth_settings/lib/src/bluetooth_model.dart b/bin/bluetooth_settings/lib/src/bluetooth_model.dart
index 25b1ab3..74db363 100644
--- a/bin/bluetooth_settings/lib/src/bluetooth_model.dart
+++ b/bin/bluetooth_settings/lib/src/bluetooth_model.dart
@@ -3,46 +3,47 @@
// found in the LICENSE file.
import 'dart:async';
-import 'package:fidl_fuchsia_bluetooth/fidl.dart';
-import 'package:fidl_fuchsia_bluetooth_control/fidl.dart';
-import 'package:lib.app.dart/app.dart';
+import 'package:fidl_fuchsia_bluetooth/fidl_async.dart';
+import 'package:fidl_fuchsia_bluetooth_control/fidl_async.dart';
+import 'package:flutter/foundation.dart';
+import 'package:fuchsia_services/services.dart';
import 'package:lib.widgets/model.dart';
const Duration _deviceListRefreshInterval = Duration(seconds: 5);
/// Model containing state needed for the bluetooth settings app.
-class BluetoothSettingsModel extends Model implements PairingDelegate {
+class BluetoothSettingsModel extends Model {
/// Bluetooth controller proxy.
final ControlProxy _control = new ControlProxy();
+ final BluetoothSettingsPairingDelegate _pairingDelegate =
+ BluetoothSettingsPairingDelegate();
List<AdapterInfo> _adapters;
AdapterInfo _activeAdapter;
final List<RemoteDevice> _remoteDevices = [];
Timer _sortListTimer;
bool _discoverable = true;
-
- PairingStatus pairingStatus;
+ final List<StreamSubscription> _listeners = [];
BluetoothSettingsModel() {
_onStart();
}
- void setDiscoverable({bool discoverable}) {
- _control.setDiscoverable(discoverable, (status) {
- _discoverable = discoverable;
- notifyListeners();
- });
+ Future<void> setDiscoverable({bool discoverable}) async {
+ await _control.setDiscoverable(discoverable);
+ _discoverable = discoverable;
+ notifyListeners();
}
bool get discoverable => _discoverable;
/// TODO(ejia): handle failures and error messages
- void connect(RemoteDevice device) {
- _control.connect(device.identifier, (Status status) {});
+ Future<void> connect(RemoteDevice device) async {
+ await _control.connect(device.identifier);
}
- void disconnect(RemoteDevice device) {
- _control.disconnect(device.identifier, (Status status) {});
+ Future<void> disconnect(RemoteDevice device) async {
+ await _control.disconnect(device.identifier);
}
/// Bluetooth devices that are seen, but are not connected.
@@ -61,10 +62,11 @@
_adapters?.where((adapter) => activeAdapter.address != adapter.address) ??
[];
- void _onStart() {
- final startupContext = StartupContext.fromStartupInfo();
- connectToService(startupContext.environmentServices, _control.ctrl);
- _refresh();
+ PairingStatus get pairingStatus => _pairingDelegate.pairingStatus;
+
+ Future<void> _onStart() async {
+ StartupContext.fromStartupInfo().incoming.connectToService(_control);
+ await _refresh();
// Sort the list by signal strength every few seconds.
_sortListTimer = Timer.periodic(_deviceListRefreshInterval, (_) {
@@ -75,17 +77,11 @@
// Just for first draft purposes, refresh whenever there are any changes.
// TODO: handle errors, refresh more gracefully
- _control
- ..onActiveAdapterChanged = (_) {
- _refresh();
- }
- ..onAdapterRemoved = (_) {
- _refresh();
- }
- ..onAdapterUpdated = (_) {
- _refresh();
- }
- ..onDeviceUpdated = (device) {
+ _listeners
+ ..add(_control.onActiveAdapterChanged.listen((_) => _refresh()))
+ ..add(_control.onAdapterRemoved.listen((_) => _refresh()))
+ ..add(_control.onAdapterUpdated.listen((_) => _refresh()))
+ ..add(_control.onDeviceUpdated.listen((device) {
int index =
_remoteDevices.indexWhere((d) => d.identifier == device.identifier);
if (index != -1) {
@@ -96,16 +92,16 @@
_remoteDevices.add(device);
}
notifyListeners();
- }
- ..onDeviceRemoved = (deviceId) {
+ }))
+ ..add(_control.onDeviceRemoved.listen((deviceId) {
_removeDeviceFromList(deviceId);
notifyListeners();
- }
- ..requestDiscovery(true, (status) {})
- ..setDiscoverable(true, (status) {})
- ..setPairingDelegate(PairingDelegateBinding().wrap(this), (success) {
- assert(success);
- });
+ }));
+
+ await _control.requestDiscovery(true);
+ await _control.setDiscoverable(true);
+ await _control
+ .setPairingDelegate(PairingDelegateBinding().wrap(_pairingDelegate));
}
void _removeDeviceFromList(String deviceId) {
@@ -113,16 +109,10 @@
}
/// Updates all the state that the model gets from bluetooth.
- void _refresh() {
- _control
- ..getAdapters((adapters) {
- _adapters = adapters;
- notifyListeners();
- })
- ..getActiveAdapterInfo((adapter) {
- _activeAdapter = adapter;
- notifyListeners();
- });
+ Future<void> _refresh() async {
+ _adapters = await _control.getAdapters();
+ _activeAdapter = await _control.getActiveAdapterInfo();
+ notifyListeners();
}
/// Closes the connection to the bluetooth control, thus ending active
@@ -130,29 +120,58 @@
void dispose() {
_control.ctrl.close();
_sortListTimer.cancel();
+ _pairingDelegate.dispose();
+ for (StreamSubscription subscription in _listeners) {
+ subscription.cancel();
+ }
+ }
+}
+
+class PairingStatus {
+ final String displayedPassKey;
+ final PairingMethod pairingMethod;
+ final RemoteDevice device;
+ int digitsEntered = 0;
+ bool completing = false;
+
+ PairingStatus(this.displayedPassKey, this.pairingMethod, this.device);
+}
+
+/// Used to capture events from bluetooth pairing.
+class BluetoothSettingsPairingDelegate extends PairingDelegate
+ with ChangeNotifier {
+ PairingStatus pairingStatus;
+
+ final StreamController<PairingDelegate$OnLocalKeypress$Response>
+ _localKeypressController = StreamController.broadcast();
+
+ void localKeypress(PairingKeypressType pressType) {
+ _localKeypressController.add(PairingDelegate$OnLocalKeypress$Response(
+ pairingStatus.device.identifier, pressType));
}
@override
- void onPairingComplete(String deviceId, Status status) {
+ Stream<PairingDelegate$OnLocalKeypress$Response> get onLocalKeypress =>
+ _localKeypressController.stream;
+
+ @override
+ Future<void> onPairingComplete(String deviceId, Status status) async {
pairingStatus = null;
notifyListeners();
}
@override
- void onPairingRequest(
+ Future<PairingDelegate$OnPairingRequest$Response> onPairingRequest(
RemoteDevice device,
PairingMethod method,
- String displayedPasskey,
- void Function(bool accept, String enteredPasskey) callback) {
- pairingStatus = PairingStatus(displayedPasskey, method, device);
-
- // accept the pairing request and show passkey
- callback(true, displayedPasskey);
- notifyListeners();
+ String displayedPasskey) async {
+ // TODO: properly display passkey before accepting request
+ return PairingDelegate$OnPairingRequest$Response(true, displayedPasskey);
}
@override
- void onRemoteKeypress(String deviceId, PairingKeypressType keypress) {
+ Future<void> onRemoteKeypress(
+ String deviceId, PairingKeypressType keypress) async {
assert(pairingStatus.device.identifier == deviceId);
switch (keypress) {
case PairingKeypressType.digitEntered:
@@ -169,14 +188,10 @@
}
notifyListeners();
}
-}
-class PairingStatus {
- final String displayedPassKey;
- final PairingMethod pairingMethod;
- final RemoteDevice device;
- int digitsEntered = 0;
- bool completing = false;
-
- PairingStatus(this.displayedPassKey, this.pairingMethod, this.device);
+ @override
+ void dispose() {
+ super.dispose();
+ _localKeypressController.close();
+ }
}
diff --git a/bin/bluetooth_settings/lib/src/bluetooth_settings.dart b/bin/bluetooth_settings/lib/src/bluetooth_settings.dart
index 59aacc7..0440c20 100644
--- a/bin/bluetooth_settings/lib/src/bluetooth_settings.dart
+++ b/bin/bluetooth_settings/lib/src/bluetooth_settings.dart
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:fidl_fuchsia_bluetooth_control/fidl.dart';
+import 'package:fidl_fuchsia_bluetooth_control/fidl_async.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:lib.settings/widgets.dart';
diff --git a/bin/device_settings/BUILD.gn b/bin/device_settings/BUILD.gn
index d8fb59f..00b6d93 100644
--- a/bin/device_settings/BUILD.gn
+++ b/bin/device_settings/BUILD.gn
@@ -26,9 +26,8 @@
"//sdk/fidl/fuchsia.amber",
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//topaz/lib/settings:lib.settings",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
"//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
- "//topaz/public/lib/app_driver/dart",
- "//topaz/public/lib/schemas/dart",
]
}
diff --git a/bin/device_settings/OWNERS b/bin/device_settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/bin/device_settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/bin/device_settings/lib/main.dart b/bin/device_settings/lib/main.dart
index a80f4e3..f579b16 100644
--- a/bin/device_settings/lib/main.dart
+++ b/bin/device_settings/lib/main.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import 'package:flutter/material.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib.widgets/model.dart';
import 'src/model.dart';
diff --git a/bin/device_settings/lib/src/model.dart b/bin/device_settings/lib/src/model.dart
index b0cdbc8..d18a41d 100644
--- a/bin/device_settings/lib/src/model.dart
+++ b/bin/device_settings/lib/src/model.dart
@@ -4,10 +4,10 @@
import 'dart:async';
-import 'package:fidl_fuchsia_amber/fidl.dart' as amber;
+import 'package:fidl_fuchsia_amber/fidl_async.dart' as amber;
import 'package:flutter/foundation.dart';
-import 'package:lib.app.dart/app.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
+import 'package:fuchsia_services/services.dart';
import 'package:lib.settings/device_info.dart';
import 'package:lib.widgets/model.dart';
import 'package:zircon/zircon.dart';
@@ -67,8 +67,9 @@
DateTime.now().isAfter(_lastUpdate.add(Duration(seconds: 60)));
/// Checks for update from the update service
- void checkForUpdates() {
- _amberControl.checkForSystemUpdate((_) => _lastUpdate = DateTime.now());
+ Future<void> checkForUpdates() async {
+ await _amberControl.checkForSystemUpdate();
+ _lastUpdate = DateTime.now();
}
Future<void> selectChannel(amber.SourceConfig selectedConfig) async {
@@ -78,28 +79,19 @@
// more than one source well.
for (amber.SourceConfig config in channels) {
if (config.statusConfig.enabled) {
- await setSrcEnabled(config.id, enabled: false);
+ await _amberControl.setSrcEnabled(config.id, false);
}
}
if (selectedConfig != null) {
- await setSrcEnabled(selectedConfig.id, enabled: true);
+ await _amberControl.setSrcEnabled(selectedConfig.id, true);
}
- _updateSources();
+ await _updateSources();
}
- /// Wraps amber.setSrcEnabled to be asynchronous.
- Future<void> setSrcEnabled(String id, {@required bool enabled}) {
- final completer = Completer();
- _amberControl.setSrcEnabled(id, enabled, (_) => completer.complete());
- return completer.future;
- }
-
- void _updateSources() {
- _amberControl.listSrcs((srcs) {
- _channels = srcs;
- notifyListeners();
- });
+ Future<void> _updateSources() async {
+ _channels = await _amberControl.listSrcs();
+ notifyListeners();
}
void dispose() {
@@ -114,10 +106,9 @@
_uptimeRefreshTimer =
Timer.periodic(_uptimeRefreshInterval, (_) => updateUptime());
- final startupContext = StartupContext.fromStartupInfo();
- connectToService(startupContext.environmentServices, _amberControl.ctrl);
+ StartupContext.fromStartupInfo().incoming.connectToService(_amberControl);
- _updateSources();
+ await _updateSources();
}
void updateUptime() {
diff --git a/bin/display_settings/BUILD.gn b/bin/display_settings/BUILD.gn
index 8c43870..8518176 100644
--- a/bin/display_settings/BUILD.gn
+++ b/bin/display_settings/BUILD.gn
@@ -25,10 +25,9 @@
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//topaz/lib/settings:lib.settings",
"//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
- "//topaz/public/lib/app_driver/dart",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
"//topaz/public/lib/display/dart",
"//topaz/public/lib/display/flutter",
- "//topaz/public/lib/schemas/dart",
]
}
diff --git a/bin/display_settings/OWNERS b/bin/display_settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/bin/display_settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/bin/display_settings/lib/main.dart b/bin/display_settings/lib/main.dart
index d6fbf94..95759b2 100644
--- a/bin/display_settings/lib/main.dart
+++ b/bin/display_settings/lib/main.dart
@@ -3,16 +3,14 @@
// found in the LICENSE file.
import 'package:flutter/material.dart';
-import 'package:lib.app.dart/app.dart' show StartupContext;
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib.display.flutter/display_policy_brightness_model.dart';
import 'package:lib.widgets/model.dart';
import 'src/widget.dart';
/// Main entry point to the display settings module.
void main() {
- final Display display =
- Display(StartupContext.fromStartupInfo().environmentServices);
+ final Display display = Display();
setupLogger();
Widget app = new MaterialApp(
diff --git a/bin/wifi_settings/BUILD.gn b/bin/wifi_settings/BUILD.gn
index 445737f..583fc17 100644
--- a/bin/wifi_settings/BUILD.gn
+++ b/bin/wifi_settings/BUILD.gn
@@ -28,9 +28,8 @@
"//sdk/fidl/fuchsia.wlan.service",
"//third_party/dart-pkg/git/flutter/packages/flutter",
"//topaz/lib/settings:lib.settings",
- "//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
- "//topaz/public/lib/app_driver/dart",
- "//topaz/public/lib/schemas/dart",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
+ "//topaz/public/dart/widgets:lib.widgets"
]
}
diff --git a/bin/wifi_settings/OWNERS b/bin/wifi_settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/bin/wifi_settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/bin/wifi_settings/lib/main.dart b/bin/wifi_settings/lib/main.dart
index 61fb059..471f048 100644
--- a/bin/wifi_settings/lib/main.dart
+++ b/bin/wifi_settings/lib/main.dart
@@ -3,7 +3,7 @@
// found in the LICENSE file.
import 'package:flutter/material.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib.widgets/model.dart';
import 'src/fuchsia/wifi_settings_model.dart';
diff --git a/bin/wifi_settings/lib/src/fuchsia/wifi_settings_model.dart b/bin/wifi_settings/lib/src/fuchsia/wifi_settings_model.dart
index 1d895ee..15a2c59 100644
--- a/bin/wifi_settings/lib/src/fuchsia/wifi_settings_model.dart
+++ b/bin/wifi_settings/lib/src/fuchsia/wifi_settings_model.dart
@@ -4,11 +4,11 @@
import 'dart:async';
-import 'package:fidl_fuchsia_netstack/fidl.dart' as net;
-import 'package:fidl_fuchsia_wlan_service/fidl.dart' as wlan;
+import 'package:fidl_fuchsia_netstack/fidl_async.dart' as net;
+import 'package:fidl_fuchsia_wlan_service/fidl_async.dart' as wlan;
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
-import 'package:lib.app.dart/app.dart';
+import 'package:fuchsia_services/services.dart';
import 'package:lib.settings/debug.dart';
import 'package:lib.widgets/model.dart';
@@ -55,16 +55,17 @@
Timer _updateTimer;
Timer _scanTimer;
+ StreamSubscription _interfacesChangedSubscription;
+
/// Constructor.
WifiSettingsModel()
: _loading = true,
_connecting = false {
- StartupContext startupContext = StartupContext.fromStartupInfo();
+ StartupContext.fromStartupInfo().incoming.connectToService(_wlanProxy);
+ StartupContext.fromStartupInfo().incoming.connectToService(_netstackProxy);
- connectToService(startupContext.environmentServices, _wlanProxy.ctrl);
- connectToService(startupContext.environmentServices, _netstackProxy.ctrl);
-
- _netstackProxy.onInterfacesChanged = interfacesChanged;
+ _interfacesChangedSubscription =
+ _netstackProxy.onInterfacesChanged.listen(interfacesChanged);
_scan();
_updateTimer = Timer.periodic(_updatePeriod, (_) => _update());
@@ -155,18 +156,19 @@
DebugStatus get debugStatus => _debugInfo;
/// Disconnects from the current network.
- void disconnect() {
- _wlanProxy.disconnect((wlan.Error error) {
- _selectedAccessPoint = null;
- _loading = true;
- _update();
- });
+ Future<void> disconnect() async {
+ await _wlanProxy.disconnect();
+
+ _selectedAccessPoint = null;
+ _loading = true;
+ await _update();
}
/// Cleans up the model state.
void dispose() {
_updateTimer.cancel();
_scanTimer.cancel();
+ _interfacesChangedSubscription.cancel();
}
/// Listens for any changes to network interfaces.
@@ -191,7 +193,7 @@
_connect(_selectedAccessPoint, password);
}
- void _connect(AccessPoint accessPoint, [String password]) {
+ Future<void> _connect(AccessPoint accessPoint, [String password]) async {
_connecting = true;
_scannedAps = null;
@@ -201,24 +203,22 @@
scanInterval: _kConnectionScanInterval,
bssid: '');
- _wlanProxy.connect(
- config,
- (wlan.Error error) {
- if (error.code == wlan.ErrCode.ok) {
- _connectionResultMessage = null;
- _failedAccessPoint = null;
- } else {
- _connectionResultMessage = error.description;
- _failedAccessPoint = selectedAccessPoint;
- _selectedAccessPoint = null;
- _connecting = false;
- }
- _debugInfo.connectComplete(error);
- _update();
- },
- );
notifyListeners();
_debugInfo.connectStart(config);
+
+ final error = await _wlanProxy.connect(config);
+
+ if (error.code == wlan.ErrCode.ok) {
+ _connectionResultMessage = null;
+ _failedAccessPoint = null;
+ } else {
+ _connectionResultMessage = error.description;
+ _failedAccessPoint = selectedAccessPoint;
+ _selectedAccessPoint = null;
+ _connecting = false;
+ }
+ _debugInfo.connectComplete(error);
+ await _update();
}
/// Remove duplicate and incompatible networks
@@ -242,33 +242,34 @@
return aps;
}
- void _scan() {
+ Future<void> _scan() async {
if (!_connecting) {
- _wlanProxy.scan(const wlan.ScanRequest(timeout: 25),
- (wlan.ScanResult scanResult) {
- _scannedAps = _dedupeAndRemoveIncompatible(scanResult);
- notifyListeners();
- _debugInfo.scanComplete(scanResult);
- });
_debugInfo.scanStart();
+
+ final scanResult =
+ await _wlanProxy.scan(const wlan.ScanRequest(timeout: 25));
+ _scannedAps = _dedupeAndRemoveIncompatible(scanResult);
+ notifyListeners();
+ _debugInfo.scanComplete(scanResult);
}
}
- void _update() {
- _wlanProxy.status((wlan.WlanStatus status) {
- _status = status;
- _loading = false;
-
- if (status.state == wlan.State.associated ||
- status.error.code != wlan.ErrCode.ok) {
- _selectedAccessPoint = null;
- _connecting = false;
- }
-
- notifyListeners();
- _debugInfo.updateComplete(status);
- });
+ Future<void> _update() async {
_debugInfo.updateStart();
+
+ final status = await _wlanProxy.status();
+
+ _status = status;
+ _loading = false;
+
+ if (status.state == wlan.State.associated ||
+ status.error.code != wlan.ErrCode.ok) {
+ _selectedAccessPoint = null;
+ _connecting = false;
+ }
+
+ notifyListeners();
+ _debugInfo.updateComplete(status);
}
}
diff --git a/lib/settings/BUILD.gn b/lib/settings/BUILD.gn
index 05429ec..2ab97e9 100644
--- a/lib/settings/BUILD.gn
+++ b/lib/settings/BUILD.gn
@@ -17,6 +17,8 @@
deps = [
"//sdk/fidl/fuchsia.devicesettings",
"//third_party/dart-pkg/git/flutter/packages/flutter",
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services",
"//topaz/public/dart/widgets:lib.widgets",
]
}
diff --git a/lib/settings/OWNERS b/lib/settings/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/lib/settings/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/lib/settings/lib/debug.dart b/lib/settings/lib/debug.dart
index d633ed7..8c958bc 100644
--- a/lib/settings/lib/debug.dart
+++ b/lib/settings/lib/debug.dart
@@ -3,7 +3,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib.widgets/utils.dart';
/// Key/value store used to display debug state using a [DebugStatusWidget].
diff --git a/lib/settings/lib/device_info.dart b/lib/settings/lib/device_info.dart
index c8cca9c..8d6dbdc 100644
--- a/lib/settings/lib/device_info.dart
+++ b/lib/settings/lib/device_info.dart
@@ -1,8 +1,8 @@
import 'dart:async';
import 'dart:io';
-import 'package:fidl_fuchsia_devicesettings/fidl.dart';
-import 'package:lib.app.dart/app.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fidl_fuchsia_devicesettings/fidl_async.dart';
+import 'package:fuchsia_logger/logger.dart';
+import 'package:fuchsia_services/services.dart';
import 'package:meta/meta.dart';
const String _lastUpdateFilePath = '/config/build-info/last-update';
@@ -39,16 +39,14 @@
/// complete with true if the flag was set successfully and false otherwise.
static Future<bool> setFactoryResetFlag({@required bool shouldReset}) async {
final resetFlagValue = shouldReset ? 1 : 0;
- final completer = Completer<bool>();
final deviceSettingsManagerProxy = DeviceSettingsManagerProxy();
- connectToService(StartupContext.fromStartupInfo().environmentServices,
- deviceSettingsManagerProxy.ctrl);
- deviceSettingsManagerProxy.setInteger(_factoryResetKey, resetFlagValue,
- (bool result) {
- deviceSettingsManagerProxy.ctrl.close();
- completer.complete(result);
- });
- return completer.future;
+ StartupContext.fromStartupInfo()
+ .incoming
+ .connectToService(deviceSettingsManagerProxy);
+ final success = await deviceSettingsManagerProxy.setInteger(
+ _factoryResetKey, resetFlagValue);
+ deviceSettingsManagerProxy.ctrl.close();
+ return success;
}
}
diff --git a/lib/setui/OWNERS b/lib/setui/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/lib/setui/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/lib/setui/common/BUILD.gn b/lib/setui/common/BUILD.gn
index 553b9f7..7b0da6a 100644
--- a/lib/setui/common/BUILD.gn
+++ b/lib/setui/common/BUILD.gn
@@ -21,8 +21,8 @@
deps = [
"//third_party/dart-pkg/pub/quiver",
"//third_party/dart-pkg/pub/yaml",
- "//topaz/public/lib/app/dart",
- ]
+ "//topaz/public/dart/fuchsia_logger",
+ ]
}
flutter_test("lib_setui_common_test") {
diff --git a/lib/setui/common/lib/syllabus_parser.dart b/lib/setui/common/lib/syllabus_parser.dart
index e01de6a..8fcde62 100644
--- a/lib/setui/common/lib/syllabus_parser.dart
+++ b/lib/setui/common/lib/syllabus_parser.dart
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-import 'package:lib.app.dart/logging.dart';
+import 'package:fuchsia_logger/logger.dart';
import 'package:lib_setui_common/step.dart';
import 'package:lib_setui_common/syllabus.dart';
import 'package:meta/meta.dart';
diff --git a/lib/setui/flutter/BUILD.gn b/lib/setui/flutter/BUILD.gn
index ef807d6..3fa2c85 100644
--- a/lib/setui/flutter/BUILD.gn
+++ b/lib/setui/flutter/BUILD.gn
@@ -19,7 +19,6 @@
"//third_party/dart-pkg/pub/yaml",
"//topaz/lib/setui/common:common",
"//topaz/public/dart/widgets:lib.widgets",
- "//topaz/public/lib/app/dart",
]
}
diff --git a/public/lib/display/OWNERS b/public/lib/display/OWNERS
new file mode 100644
index 0000000..f4ebede
--- /dev/null
+++ b/public/lib/display/OWNERS
@@ -0,0 +1,5 @@
+ejia@google.com
+brycelee@google.com
+spqchan@google.com
+wxyz@google.com
+cfukuhara@google.com
\ No newline at end of file
diff --git a/public/lib/display/dart/BUILD.gn b/public/lib/display/dart/BUILD.gn
index 7416ec1..1db958f 100644
--- a/public/lib/display/dart/BUILD.gn
+++ b/public/lib/display/dart/BUILD.gn
@@ -15,6 +15,6 @@
"//sdk/fidl/fuchsia.device.display",
"//sdk/fidl/fuchsia.devicesettings",
"//topaz/public/dart/fidl",
- "//topaz/public/lib/app/dart",
- ]
+ "//topaz/public/dart/fuchsia_logger",
+ "//topaz/public/dart/fuchsia_services", ]
}
diff --git a/public/lib/display/dart/lib/display.dart b/public/lib/display/dart/lib/display.dart
index 9acebbc..cd2e5e4 100644
--- a/public/lib/display/dart/lib/display.dart
+++ b/public/lib/display/dart/lib/display.dart
@@ -4,12 +4,10 @@
import 'dart:async';
-import 'package:fidl/fidl.dart';
-import 'package:fidl_fuchsia_device_display/fidl.dart';
-import 'package:fidl_fuchsia_devicesettings/fidl.dart';
-import 'package:fidl_fuchsia_sys/fidl.dart';
-import 'package:lib.app.dart/app.dart';
-import 'package:lib.app.dart/logging.dart';
+import 'package:fidl_fuchsia_device_display/fidl_async.dart';
+import 'package:fidl_fuchsia_devicesettings/fidl_async.dart';
+import 'package:fuchsia_logger/logger.dart';
+import 'package:fuchsia_services/services.dart';
/// This class abstracts away the fuchsia.device.display.Manager fidl interface,
class Display extends DeviceSettingsWatcher {
@@ -30,51 +28,46 @@
double _brightness;
// ignore: public_member_api_docs
- Display(ServiceProvider services) {
- connectToService(services, _displayManagerService.ctrl);
- _displayManagerService.ctrl.onConnectionError =
- _handleDisplayConnectionError;
- _displayManagerService.ctrl.error.then(
- (ProxyError error) => _handleDisplayConnectionError(error: error));
+ Display() {
+ StartupContext.fromStartupInfo()
+ .incoming
+ .connectToService(_displayManagerService);
- connectToService(services, _deviceSettingsManagerService.ctrl);
- _deviceSettingsManagerService.ctrl.onConnectionError =
- _handleSettingsConnectionError;
- _deviceSettingsManagerService.ctrl.error.then(
- (ProxyError error) => _handleSettingsConnectionError(error: error));
+ StartupContext.fromStartupInfo()
+ .incoming
+ .connectToService(_deviceSettingsManagerService);
_deviceSettingsManagerService.watch(
- _brightnessSettingsKey, _deviceSettingsWatcherBinding.wrap(this), null);
+ _brightnessSettingsKey, _deviceSettingsWatcherBinding.wrap(this));
// Immediately get brightness on construction.
_refreshBrightness();
}
/// Invoked during creation to refresh the internal cached brightness.
- void _refreshBrightness([bool force = false]) {
+ Future<void> _refreshBrightness([bool force = false]) async {
if (brightness != null && !force) {
return;
}
- _deviceSettingsManagerService.getString(_brightnessSettingsKey,
- (String val, Status status) {
- if (status == Status.ok) {
- if (val == null || val.isEmpty) {
- return;
- }
+ final result =
+ await _deviceSettingsManagerService.getString(_brightnessSettingsKey);
- // If previous value exists, restore brightness.
- setBrightness(double.parse(val));
- } else {
- // If no previous value is found, fetch display brightness and set.
- // Setting is a noop from the device side, but makes sure our locale
- // cache is updated.
- _displayManagerService.getBrightness((bool success, double brightness) {
- if (success) {
- setBrightness(brightness);
- }
- });
+ if (result.s == Status.ok) {
+ if (result.val == null || result.val.isEmpty) {
+ return;
}
- });
+
+ // If previous value exists, restore brightness.
+ await setBrightness(double.parse(result.val));
+ } else {
+ // If no previous value is found, fetch display brightness and set.
+ // Setting is a noop from the device side, but makes sure our locale
+ // cache is updated.
+ final brightnessResult = await _displayManagerService.getBrightness();
+ if (brightnessResult.success) {
+ await setBrightness(brightnessResult.brightness);
+ }
+ }
}
// ignore: public_member_api_docs
@@ -89,7 +82,7 @@
/// Sets the brightness to the specified percentage. If specified, the
/// callback will be invoked with the updated backlight brightness value.
- Future<bool> setBrightness(double brightness) {
+ Future<bool> setBrightness(double brightness) async {
var completer = Completer<bool>();
if (_brightness == brightness || brightness < 0 || brightness > 1) {
@@ -97,33 +90,29 @@
return completer.future;
}
- _displayManagerService.setBrightness(brightness, (bool success) {
- if (success) {
- _brightness = brightness;
- _deviceSettingsManagerService.setString(
- _brightnessSettingsKey, brightness.toString(), (bool result) {
- // This is a silent failure. While we couldn't store the brightness,
- // it still took effect on the physical display.
- if (!result) {
- log.warning('Could not persist display brightness');
- }
- });
+ final wasSuccessful =
+ await _displayManagerService.setBrightness(brightness);
- _notifyBrightnessChange();
- completer.complete(true);
- } else {
- _displayManagerService
- .getBrightness((bool success, double brightnessVal) {
- if (success) {
- _brightness = brightnessVal;
- _notifyBrightnessChange();
- }
- completer.complete(false);
- });
+ if (wasSuccessful) {
+ _brightness = brightness;
+ final deviceSettingWasSuccessful = await _deviceSettingsManagerService
+ .setString(_brightnessSettingsKey, brightness.toString());
+ if (!deviceSettingWasSuccessful) {
+ // This is a silent failure. While we couldn't store the brightness,
+ // it still took effect on the physical display.
+ log.warning('Could not persist display brightness');
}
- });
+ _notifyBrightnessChange();
+ return true;
+ } else {
+ final brightness = await _displayManagerService.getBrightness();
- return completer.future;
+ if (brightness.success) {
+ _brightness = brightness.brightness;
+ _notifyBrightnessChange();
+ }
+ return false;
+ }
}
/// Invoked internally to signal to a registered listener (if set) of a
@@ -132,18 +121,8 @@
_brightnessStreamController.add(brightness);
}
- /// Handles connection error to the display service.
- void _handleDisplayConnectionError({ProxyError error}) {
- log.severe('Unable to connect to display service', error);
- }
-
- /// Handles connection error to the settings service.
- void _handleSettingsConnectionError({ProxyError error}) {
- log.severe('Unable to connect to settings service', error);
- }
-
@override
- void onChangeSettings(ValueType type) {
- _refreshBrightness(true);
+ Future<void> onChangeSettings(ValueType type) async {
+ await _refreshBrightness(true);
}
}