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

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

Issue 2622393002: bluetooth: Add characteristic list to DeviceDetailsPage in internals page. (Closed)
Patch Set: Inline setting of characteristic fieldset object 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/service_list.js
diff --git a/chrome/browser/resources/bluetooth_internals/service_list.js b/chrome/browser/resources/bluetooth_internals/service_list.js
index f189b3d067b34ff72d49a40abfd6f9600eef6c37..ee52c5885949dc187d755c1187650f5a0e95028f 100644
--- a/chrome/browser/resources/bluetooth_internals/service_list.js
+++ b/chrome/browser/resources/bluetooth_internals/service_list.js
@@ -8,6 +8,7 @@
*/
cr.define('service_list', function() {
+ /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel;
/** @const */ var ExpandableList = expandable_list.ExpandableList;
/** @const */ var ExpandableListItem = expandable_list.ExpandableListItem;
@@ -50,6 +51,9 @@ cr.define('service_list', function() {
decorate: function() {
this.classList.add('service-list-item');
+ /** @private {boolean} */
+ this.characteristicsRequested_ = false;
+
/** @private {!HTMLElement} */
this.infoDiv_ = document.createElement('div');
this.infoDiv_.classList.add('info-container');
@@ -82,11 +86,49 @@ cr.define('service_list', function() {
var serviceDiv = document.createElement('div');
serviceDiv.classList.add('flex');
serviceDiv.appendChild(this.serviceFieldSet_);
-
this.infoDiv_.appendChild(serviceInfoHeader);
this.infoDiv_.appendChild(serviceDiv);
+
+ var characteristicsListHeader = document.createElement('h4');
+ characteristicsListHeader.textContent = 'Characteristics';
+ this.infoDiv_.appendChild(characteristicsListHeader);
+
+ this.characteristicList_ = new characteristic_list.CharacteristicList();
+ this.characteristicList_.setLoading(true);
+ this.infoDiv_.appendChild(this.characteristicList_);
+
this.expandedContent_.appendChild(this.infoDiv_);
},
+
+ /** @override */
+ onExpand: function(expanded) {
+ if (!expanded || this.characteristicsRequested_ ||
+ !this.characteristicList_.isLoading())
+ return;
dpapad 2017/01/17 20:01:01 Use braces when the "if" condition spans multiple
mbrunson 2017/01/17 21:05:49 Done.
+
+ this.dispatchEvent(new CustomEvent('characteristicsrequested', {
+ bubbles: true,
+ detail: {
+ serviceId: this.info.id,
+ }
+ }));
+ this.characteristicsRequested_ = true;
+ },
+
+ /**
+ * Called when the 'characteristicsrequested' event is handled. The incoming
+ * |characteristics| are wrapped in an ArrayDataModel then set as the data
+ * model of the characteristics list and cached in the service info.
+ * @param {!Array<!interfaces.BluetoothDevice.CharacteristicInfo}>}
+ * characteristics
+ */
+ onCharacteristicsReturned: function(characteristics) {
+ this.characteristicList_.setData(new ArrayDataModel(characteristics));
+ this.characteristicList_.setLoading(false);
+
+ this.info.characteristics = this.characteristicList_.dataModel;
+ this.characteristicsRequested_ = false;
+ },
};
/**

Powered by Google App Engine
This is Rietveld 408576698