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

Unified Diff: chrome/browser/resources/options2/chromeos/bluetooth_device_list.js

Issue 9570018: Fix Bluetooth list redraw issues. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove all use of the 'icon' property. Created 8 years, 10 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/options2/chromeos/bluetooth_device_list.js
diff --git a/chrome/browser/resources/options2/chromeos/bluetooth_device_list.js b/chrome/browser/resources/options2/chromeos/bluetooth_device_list.js
index b8990c564f035597c04800b7697f7ace5bd459d1..6086e37c1f05ad2b556e9086c59836ee58a05c6a 100644
--- a/chrome/browser/resources/options2/chromeos/bluetooth_device_list.js
+++ b/chrome/browser/resources/options2/chromeos/bluetooth_device_list.js
@@ -13,26 +13,9 @@ cr.define('options.system.bluetooth', function() {
function Constants() {}
/**
- * Enumeration of supported device types.
- * @enum {string}
- */
- // TODO(kevers): Prune list based on the set of devices that will be
- // supported for V1 of the feature. The set will likely be restricted to
- // mouse and keyboard. Others are temporarily included for testing device
- // discovery.
- Constants.DEVICE_TYPE = {
- COMPUTER: 'computer',
- HEADSET: 'headset',
- KEYBOARD: 'input-keyboard',
- MOUSE: 'input-mouse',
- PHONE: 'phone',
- };
-
- /**
* Creates a new bluetooth list item.
* @param {{name: string,
* address: string,
- * icon: Constants.DEVICE_TYPE,
* paired: boolean,
* connected: boolean,
* pairing: string|undefined,
@@ -61,7 +44,6 @@ cr.define('options.system.bluetooth', function() {
* Description of the Bluetooth device.
* @type {{name: string,
* address: string,
- * icon: Constants.DEVICE_TYPE,
* paired: boolean,
* connected: boolean,
* pairing: string|undefined,
@@ -124,7 +106,6 @@ cr.define('options.system.bluetooth', function() {
* existing device is updated.
* @param {{name: string,
* address: string,
- * icon: Constants.DEVICE_TYPE,
* paired: boolean,
* connected: boolean,
* pairing: string|undefined,
@@ -134,8 +115,6 @@ cr.define('options.system.bluetooth', function() {
* @return {boolean} True if the devies was successfully added or updated.
*/
appendDevice: function(device) {
- if (!this.isSupported_(device))
- return false;
var index = this.find(device.address);
if (index == undefined) {
this.dataModel.push(device);
@@ -149,6 +128,19 @@ cr.define('options.system.bluetooth', function() {
},
/**
+ * Forces a revailidation of the list content. Content added while the list
+ * is hidden is not properly rendered when the list becomes visible. In
+ * addition, deleting a single item from the list results in a stale cache
+ * requiring an invalidation.
+ */
+ refresh: function() {
+ // TODO(kevers): Investigate if the root source of the problems can be
+ // fixed in cr.ui.list.
+ this.invalidate();
+ this.redraw();
+ },
+
+ /**
* Perges all devices from the list.
*/
clear: function() {
@@ -186,29 +178,11 @@ cr.define('options.system.bluetooth', function() {
[item.address, item.connected ? 'disconnect' : 'forget']);
}
this.dataModel.splice(index, 1);
- // Invalidate the list since it has a stale cache after a splice
- // involving a deletion.
- this.invalidate();
- this.redraw();
+ this.refresh();
this.updateListVisibility_();
},
/**
- * Tests if the bluetooth device is supported based on the type of device.
- * @param {Object.<string,string>} device Desription of the device.
- * @return {boolean} true if the device is supported.
- * @private
- */
- isSupported_: function(device) {
- var target = device.icon;
- for (var key in Constants.DEVICE_TYPE) {
- if (Constants.DEVICE_TYPE[key] == target)
- return true;
- }
- return false;
- },
-
- /**
* If the list has an associated empty list placholder then update the
* visibility of the list and placeholder.
* @private
@@ -217,8 +191,11 @@ cr.define('options.system.bluetooth', function() {
var empty = this.dataModel.length == 0;
var listPlaceHolderID = this.id + '-empty-placeholder';
if ($(listPlaceHolderID)) {
- this.hidden = empty;
- $(listPlaceHolderID).hidden = !empty;
+ if (this.hidden != empty) {
+ this.hidden = empty;
+ $(listPlaceHolderID).hidden = !empty;
+ this.refresh();
+ }
}
},
};
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698