Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2588)

Unified Diff: chrome/browser/resources/bluetooth_internals/bluetooth_internals.js

Issue 2564113003: bluetooth: Add basic scanning to chrome://bluetooth-internals. (Closed)
Patch Set: Update comments Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
diff --git a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
index fe2167d80141459dfd65a757856a545aed7d1530..0dd5390fd3e028a0c0a98907a8027ab05642445b 100644
--- a/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
+++ b/chrome/browser/resources/bluetooth_internals/bluetooth_internals.js
@@ -50,6 +50,12 @@ cr.define('bluetooth_internals', function() {
/** @type {devices_page.DevicesPage} */
var devicesPage = null;
+ /** @type {interfaces.BluetoothAdapter.DiscoverySession.ptrClass} */
+ var discoverySession = null;
+
+ /** @type {boolean} */
+ var userRequestedScanStop = false;
+
function handleInspect(event) {
// TODO(crbug.com/663470): Move connection logic to DeviceDetailsView
// when it's added in chrome://bluetooth-internals.
@@ -108,6 +114,26 @@ cr.define('bluetooth_internals', function() {
});
}
+ function updateStoppedDiscoverySession() {
+ devicesPage.setScanStatus(devices_page.ScanStatus.OFF);
+ discoverySession.ptr.reset();
+ discoverySession = null;
+ }
+
+ function setupAdapterSystem(response) {
+ console.log('adapter', response.info);
+
+ adapterBroker.addEventListener('adapterchanged', function(event) {
+ if (event.detail.property === 'discovering') {
dpapad 2017/01/05 23:30:33 Is there a need for two separate if conditions? Ho
mbrunson 2017/01/06 01:18:56 Done.
+ if (!event.detail.value && !userRequestedScanStop && discoverySession) {
+ updateStoppedDiscoverySession();
+ Snackbar.show(
+ 'Discovery session ended unexpectedly', SnackbarType.WARNING);
+ }
+ }
+ });
+ }
+
function setupDeviceSystem(response) {
// Hook up device collection events.
adapterBroker.addEventListener('deviceadded', function(event) {
@@ -124,6 +150,44 @@ cr.define('bluetooth_internals', function() {
devicesPage.setDevices(devices);
devicesPage.pageDiv.addEventListener('inspectpressed', handleInspect);
+
+ devicesPage.pageDiv.addEventListener('scanpressed', function(event) {
+ if (discoverySession && discoverySession.ptr.isBound()) {
+ userRequestedScanStop = true;
+ devicesPage.setScanStatus(devices_page.ScanStatus.STOPPING);
+
+ discoverySession.stop().then(function(response) {
+ if (response.success) {
+ updateStoppedDiscoverySession();
dpapad 2017/01/05 23:30:33 Is the |userRequestedScanStop| really necessary? M
mbrunson 2017/01/06 01:18:56 It's because of the 'adapterchanged' event that I
+ userRequestedScanStop = false;
+ return;
+ }
+
+ devicesPage.setScanStatus(devices_page.ScanStatus.ON);
+ Snackbar.show(
+ 'Failed to stop discovery session', SnackbarType.ERROR);
+ userRequestedScanStop = false;
+ });
+
+ return;
+ }
+
+ devicesPage.setScanStatus(devices_page.ScanStatus.STARTING);
+ adapterBroker.startDiscoverySession().then(function(session) {
+ discoverySession = session;
+
+ discoverySession.ptr.setConnectionErrorHandler(function() {
+ updateStoppedDiscoverySession();
+ Snackbar.show('Discovery session ended', SnackbarType.WARNING);
+ });
+
+ devicesPage.setScanStatus(devices_page.ScanStatus.ON);
+ }).catch(function(error) {
+ devicesPage.setScanStatus(devices_page.ScanStatus.OFF);
+ Snackbar.show('Failed to start discovery session', SnackbarType.ERROR);
+ console.error(error);
+ });
+ });
}
function setupPages() {
@@ -154,7 +218,7 @@ cr.define('bluetooth_internals', function() {
adapter_broker.getAdapterBroker()
.then(function(broker) { adapterBroker = broker; })
.then(function() { return adapterBroker.getInfo(); })
dpapad 2017/01/05 23:30:33 The info returned by this call is never used by se
mbrunson 2017/01/06 01:18:56 The info returned is currently logged to console b
- .then(function(response) { console.log('adapter', response.info); })
+ .then(setupAdapterSystem)
.then(function() { return adapterBroker.getDevices(); })
.then(setupDeviceSystem)
.catch(function(error) {

Powered by Google App Engine
This is Rietveld 408576698