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

Unified Diff: chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js

Issue 2801403002: MD Settings: Bluetooth: Fix adapter state and discovery (Closed)
Patch Set: . Created 3 years, 8 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/settings/bluetooth_page/bluetooth_page.js
diff --git a/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js b/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js
index e23ed90c9e17b244d0fc70244be821926f643269..034bfcabae0df8408486cd9b6ac692f8f7798eb5 100644
--- a/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js
+++ b/chrome/browser/resources/settings/bluetooth_page/bluetooth_page.js
@@ -32,11 +32,26 @@ Polymer({
notify: true,
},
- /** @private */
- bluetoothEnabled_: {
+ /**
+ * Reflects the current state of the toggle buttons. This will be set when
michaelpg 2017/04/07 21:47:03 "button" singular?
stevenjb 2017/04/07 23:36:05 There are two, one in this page and one in the sub
+ * the adapter state change or when the user changes the toggle.
+ * @private
+ */
+ bluetoothToggleState_: {
michaelpg 2017/04/07 21:47:03 "state" is generally an unfortunate word, but hard
stevenjb 2017/04/07 23:36:05 I agree it isn't great, but there are not a lot of
type: Boolean,
- observer: 'bluetoothEnabledChanged_',
- notify: true,
+ observer: 'bluetoothToggleStateChanged_',
+ },
+
+ /**
+ * Set to true before the adapter state is received, when the adapter is
+ * unavailable, and while an adapter state change is requested. This
+ * prevents user changes while a change is in progress or when the adapter
+ * is not available.
+ * @private
+ */
+ bluetoothToggleDisabled_: {
+ type: Boolean,
+ value: true,
},
/**
@@ -111,7 +126,7 @@ Polymer({
* @private
*/
getIcon_: function() {
- if (!this.bluetoothEnabled_)
+ if (!this.bluetoothToggleState_)
return 'settings:bluetooth-disabled';
return 'settings:bluetooth';
},
@@ -134,15 +149,16 @@ Polymer({
*/
onBluetoothAdapterStateChanged_: function(state) {
this.adapterState_ = state;
- this.bluetoothEnabled_ = state.powered;
+ this.bluetoothToggleState_ = state.powered;
+ this.bluetoothToggleDisabled_ = !state.available;
},
/** @private */
onTap_: function() {
if (this.adapterState_.available === false)
return;
- if (!this.bluetoothEnabled_)
- this.bluetoothEnabled_ = true;
+ if (!this.bluetoothToggleState_)
+ this.bluetoothToggleState_ = true;
else
this.openSubpage_();
},
@@ -165,9 +181,14 @@ Polymer({
},
/** @private */
- bluetoothEnabledChanged_: function() {
+ bluetoothToggleStateChanged_: function() {
+ if (!this.adapterState_ || this.bluetoothToggleDisabled_ ||
+ this.bluetoothToggleState_ == this.adapterState_.powered) {
+ return;
+ }
+ this.bluetoothToggleDisabled_ = true;
michaelpg 2017/04/07 21:47:03 I understand disabling at startup, but is disablin
stevenjb 2017/04/07 23:36:05 We do the disable specifically for times when it i
this.bluetoothPrivate.setAdapterState(
- {powered: this.bluetoothEnabled_}, function() {
+ {powered: this.bluetoothToggleState_}, function() {
if (chrome.runtime.lastError) {
console.error(
'Error enabling bluetooth: ' +

Powered by Google App Engine
This is Rietveld 408576698