| 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
|
| deleted file mode 100644
|
| index eb715d742a1f1e14a3c3e87a4b5c6fbc5ce4e62c..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/options2/chromeos/bluetooth_device_list.js
|
| +++ /dev/null
|
| @@ -1,338 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -cr.define('options.system.bluetooth', function() {
|
| - /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel;
|
| - /** @const */ var DeletableItem = options.DeletableItem;
|
| - /** @const */ var DeletableItemList = options.DeletableItemList;
|
| -
|
| - /**
|
| - * Bluetooth settings constants.
|
| - */
|
| - function Constants() {}
|
| -
|
| - /**
|
| - * Creates a new bluetooth list item.
|
| - * @param {{name: string,
|
| - * address: string,
|
| - * paired: boolean,
|
| - * bonded: boolean,
|
| - * connected: boolean,
|
| - * pairing: string|undefined,
|
| - * passkey: number|undefined,
|
| - * entered: number|undefined}} device
|
| - * Description of the Bluetooth device.
|
| - * @constructor
|
| - * @extends {options.DeletableItem}
|
| - */
|
| - function BluetoothListItem(device) {
|
| - var el = cr.doc.createElement('div');
|
| - el.__proto__ = BluetoothListItem.prototype;
|
| - el.data = {};
|
| - for (var key in device)
|
| - el.data[key] = device[key];
|
| - el.decorate();
|
| - // Only show the close button for paired devices.
|
| - el.deletable = device.paired;
|
| - return el;
|
| - }
|
| -
|
| - BluetoothListItem.prototype = {
|
| - __proto__: DeletableItem.prototype,
|
| -
|
| - /**
|
| - * Description of the Bluetooth device.
|
| - * @type {{name: string,
|
| - * address: string,
|
| - * paired: boolean,
|
| - * bonded: boolean,
|
| - * connected: boolean,
|
| - * pairing: string|undefined,
|
| - * passkey: number|undefined,
|
| - * entered: number|undefined}}
|
| - */
|
| - data: null,
|
| -
|
| - /** @inheritDoc */
|
| - decorate: function() {
|
| - DeletableItem.prototype.decorate.call(this);
|
| - var label = this.ownerDocument.createElement('div');
|
| - label.className = 'bluetooth-device-label';
|
| - this.classList.add('bluetooth-device');
|
| - this.connected = this.data.connected;
|
| - // Though strictly speaking, a connected device will also be paired, we
|
| - // are interested in tracking paired devices that are not connected.
|
| - this.paired = this.data.paired && !this.data.connected;
|
| - this.connecting = !!this.data.pairing;
|
| - var content = this.data.name;
|
| - // Update label for devices that are paired but not connected.
|
| - if (this.paired) {
|
| - content = content + ' (' +
|
| - loadTimeData.getString('bluetoothDeviceNotConnected') + ')';
|
| - }
|
| - label.textContent = content;
|
| - this.contentElement.appendChild(label);
|
| - },
|
| - };
|
| -
|
| - /**
|
| - * Class for displaying a list of Bluetooth devices.
|
| - * @constructor
|
| - * @extends {options.DeletableItemList}
|
| - */
|
| - var BluetoothDeviceList = cr.ui.define('list');
|
| -
|
| - BluetoothDeviceList.prototype = {
|
| - __proto__: DeletableItemList.prototype,
|
| -
|
| - /**
|
| - * Height of a list entry in px.
|
| - * @type {number}
|
| - * @private
|
| - */
|
| - itemHeight_: 32,
|
| -
|
| - /**
|
| - * Width of a list entry in px.
|
| - * @type {number}
|
| - * @private.
|
| - */
|
| - itemWidth_: 400,
|
| -
|
| - /** @inheritDoc */
|
| - decorate: function() {
|
| - DeletableItemList.prototype.decorate.call(this);
|
| - // Force layout of all items even if not in the viewport to address
|
| - // calculation errors when the list is hidden. The impact on performance
|
| - // should be minimal given that the list is not expected to grow very
|
| - // large.
|
| - this.autoExpand = true;
|
| - this.addEventListener('blur', this.onBlur_);
|
| - this.clear();
|
| - },
|
| -
|
| - /**
|
| - * When the list loses focus, unselect all items in the list.
|
| - * @private
|
| - */
|
| - onBlur_: function() {
|
| - // TODO(kevers): Should this be pushed up to the list class?
|
| - this.selectionModel.unselectAll();
|
| - },
|
| -
|
| - /**
|
| - * Adds a bluetooth device to the list of available devices. A check is
|
| - * made to see if the device is already in the list, in which case the
|
| - * existing device is updated.
|
| - * @param {{name: string,
|
| - * address: string,
|
| - * paired: boolean,
|
| - * bonded: boolean,
|
| - * connected: boolean,
|
| - * pairing: string|undefined,
|
| - * passkey: number|undefined,
|
| - * entered: number|undefined}} device
|
| - * Description of the bluetooth device.
|
| - * @return {boolean} True if the devies was successfully added or updated.
|
| - */
|
| - appendDevice: function(device) {
|
| - var selectedDevice = this.getSelectedDevice_();
|
| - var index = this.find(device.address);
|
| - if (index == undefined) {
|
| - this.dataModel.push(device);
|
| - this.redraw();
|
| - } else {
|
| - this.dataModel.splice(index, 1, device);
|
| - this.redrawItem(index);
|
| - }
|
| - this.updateListVisibility_();
|
| - if (selectedDevice)
|
| - this.setSelectedDevice_(selectedDevice);
|
| - return true;
|
| - },
|
| -
|
| - /**
|
| - * 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.
|
| - * @param {String=} opt_selection Optional address of device to select
|
| - * after refreshing the list.
|
| - */
|
| - refresh: function(opt_selection) {
|
| - // TODO(kevers): Investigate if the root source of the problems can be
|
| - // fixed in cr.ui.list.
|
| - var selectedDevice = opt_selection ? opt_selection :
|
| - this.getSelectedDevice_();
|
| - this.invalidate();
|
| - this.redraw();
|
| - if (selectedDevice)
|
| - this.setSelectedDevice_(selectedDevice);
|
| - },
|
| -
|
| - /**
|
| - * Retrieves the address of the selected device, or null if no device is
|
| - * selected.
|
| - * @return {?String} Address of selected device or null.
|
| - * @private
|
| - */
|
| - getSelectedDevice_: function() {
|
| - var selection = this.selectedItem;
|
| - if (selection)
|
| - return selection.address;
|
| - return null;
|
| - },
|
| -
|
| - /**
|
| - * Selects the device with the matching address.
|
| - * @param {String} address The unique address of the device.
|
| - * @private
|
| - */
|
| - setSelectedDevice_: function(address) {
|
| - var index = this.find(address);
|
| - if (index != undefined)
|
| - this.selectionModel.selectRange(index, index);
|
| - },
|
| -
|
| - /**
|
| - * Perges all devices from the list.
|
| - */
|
| - clear: function() {
|
| - this.dataModel = new ArrayDataModel([]);
|
| - this.redraw();
|
| - this.updateListVisibility_();
|
| - },
|
| -
|
| - /**
|
| - * Returns the index of the list entry with the matching address.
|
| - * @param {string} address Unique address of the Bluetooth device.
|
| - * @return {number|undefined} Index of the matching entry or
|
| - * undefined if no match found.
|
| - */
|
| - find: function(address) {
|
| - var size = this.dataModel.length;
|
| - for (var i = 0; i < size; i++) {
|
| - var entry = this.dataModel.item(i);
|
| - if (entry.address == address)
|
| - return i;
|
| - }
|
| - },
|
| -
|
| - /** @inheritDoc */
|
| - createItem: function(entry) {
|
| - return new BluetoothListItem(entry);
|
| - },
|
| -
|
| - /**
|
| - * Overrides the default implementation, which is used to compute the
|
| - * size of an element in the list. The default implementation relies
|
| - * on adding a placeholder item to the list and fetching its size and
|
| - * position. This strategy does not work if an item is added to the list
|
| - * while it is hidden, as the computed metrics will all be zero in that
|
| - * case.
|
| - * @return {{height: number, marginTop: number, marginBottom: number,
|
| - * width: number, marginLeft: number, marginRight: number}}
|
| - * The height and width of the item, taking margins into account,
|
| - * and the margins themselves.
|
| - */
|
| - measureItem: function() {
|
| - return {
|
| - height: this.itemHeight_,
|
| - marginTop: 0,
|
| - marginBotton: 0,
|
| - width: this.itemWidth_,
|
| - marginLeft: 0,
|
| - marginRight: 0
|
| - };
|
| - },
|
| -
|
| - /**
|
| - * Override the default implementation to return a predetermined size,
|
| - * which in turns allows proper layout of items even if the list is hidden.
|
| - * @return {height: number, width: number} Dimensions of a single item in
|
| - * the list of bluetooth device.
|
| - * @private.
|
| - */
|
| - getDefaultItemSize_: function() {
|
| - return {
|
| - height: this.itemHeight_,
|
| - width: this.itemWidth_
|
| - };
|
| - },
|
| -
|
| - /**
|
| - * Override base implementation of handleClick_, which unconditionally
|
| - * removes the item. In this case, removal of the element is deferred
|
| - * pending confirmation from the Bluetooth adapter.
|
| - * @param {Event} e The click event object.
|
| - * @private
|
| - */
|
| - handleClick_: function(e) {
|
| - if (this.disabled)
|
| - return;
|
| -
|
| - var target = e.target;
|
| - if (!target.classList.contains('row-delete-button'))
|
| - return;
|
| -
|
| - var listItem = this.getListItemAncestor(target);
|
| - var selected = this.selectionModel.selectedIndexes;
|
| - var index = this.getIndexOfListItem(listItem);
|
| - if (selected.indexOf(index) == -1)
|
| - selected = [index];
|
| - for (var j = selected.length - 1; j >= 0; j--) {
|
| - var index = selected[j];
|
| - var item = this.getListItemByIndex(index);
|
| - if (item && item.deletable) {
|
| - // Device is busy until we hear back from the Bluetooth adapter.
|
| - // Prevent double removal request.
|
| - item.deletable = false;
|
| - // TODO(kevers): Provide visual feedback that the device is busy.
|
| -
|
| - // Inform the bluetooth adapter that we are disconnecting or
|
| - // forgetting the device.
|
| - chrome.send('updateBluetoothDevice',
|
| - [item.data.address, item.connected ? 'disconnect' : 'forget']);
|
| - }
|
| - }
|
| - },
|
| -
|
| - /** @inheritDoc */
|
| - deleteItemAtIndex: function(index) {
|
| - var selectedDevice = this.getSelectedDevice_();
|
| - this.dataModel.splice(index, 1);
|
| - this.refresh(selectedDevice);
|
| - this.updateListVisibility_();
|
| - },
|
| -
|
| - /**
|
| - * If the list has an associated empty list placholder then update the
|
| - * visibility of the list and placeholder.
|
| - * @private
|
| - */
|
| - updateListVisibility_: function() {
|
| - var empty = this.dataModel.length == 0;
|
| - var listPlaceHolderID = this.id + '-empty-placeholder';
|
| - if ($(listPlaceHolderID)) {
|
| - if (this.hidden != empty) {
|
| - this.hidden = empty;
|
| - $(listPlaceHolderID).hidden = !empty;
|
| - this.refresh();
|
| - }
|
| - }
|
| - },
|
| - };
|
| -
|
| - cr.defineProperty(BluetoothListItem, 'connected', cr.PropertyKind.BOOL_ATTR);
|
| -
|
| - cr.defineProperty(BluetoothListItem, 'paired', cr.PropertyKind.BOOL_ATTR);
|
| -
|
| - cr.defineProperty(BluetoothListItem, 'connecting', cr.PropertyKind.BOOL_ATTR);
|
| -
|
| - return {
|
| - BluetoothListItem: BluetoothListItem,
|
| - BluetoothDeviceList: BluetoothDeviceList,
|
| - Constants: Constants
|
| - };
|
| -});
|
|
|