| Index: third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js b/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js
|
| index 6e367413f2f10360c0bf58264fec750e0a453962..22e6266ea02d08693985038283a69de89d00cabe 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js
|
| @@ -24,59 +24,34 @@
|
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| */
|
|
|
| -/**
|
| - * @unrestricted
|
| - */
|
| -Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| +Resources.DOMStorageItemsView = class extends Resources.StorageItemsView {
|
| + /**
|
| + * @param {!Resources.DOMStorage} domStorage
|
| + */
|
| constructor(domStorage) {
|
| - super(Common.UIString('DOM Storage'));
|
| + super(Common.UIString('DOM Storage'), 'domStoragePanel');
|
|
|
| - this.domStorage = domStorage;
|
| + this._domStorage = domStorage;
|
|
|
| this.element.classList.add('storage-view', 'table');
|
|
|
| - this._deleteButton = new UI.ToolbarButton(Common.UIString('Delete'), 'largeicon-delete');
|
| - this._deleteButton.setEnabled(false);
|
| - this._deleteButton.addEventListener(UI.ToolbarButton.Events.Click, this._deleteButtonClicked, this);
|
| -
|
| - this._clearButton = new UI.ToolbarButton(Common.UIString('Clear All'), 'largeicon-clear');
|
| - this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, () => this.domStorage.clear(), this);
|
| -
|
| - this._refreshButton = new UI.ToolbarButton(Common.UIString('Refresh'), 'largeicon-refresh');
|
| - this._refreshButton.addEventListener(UI.ToolbarButton.Events.Click, this._refreshButtonClicked, this);
|
| -
|
| - this.domStorage.addEventListener(
|
| + var columns = /** @type {!Array<!DataGrid.DataGrid.ColumnDescriptor>} */ ([
|
| + {id: 'key', title: Common.UIString('Key'), sortable: false, editable: true, weight: 50},
|
| + {id: 'value', title: Common.UIString('Value'), sortable: false, editable: true, weight: 50}
|
| + ]);
|
| + this._dataGrid = new DataGrid.DataGrid(columns, this._editingCallback.bind(this), this._deleteCallback.bind(this));
|
| + this._dataGrid.setName('DOMStorageItemsView');
|
| + this._dataGrid.asWidget().show(this.element);
|
| + this._domStorage.addEventListener(
|
| Resources.DOMStorage.Events.DOMStorageItemsCleared, this._domStorageItemsCleared, this);
|
| - this.domStorage.addEventListener(
|
| + this._domStorage.addEventListener(
|
| Resources.DOMStorage.Events.DOMStorageItemRemoved, this._domStorageItemRemoved, this);
|
| - this.domStorage.addEventListener(Resources.DOMStorage.Events.DOMStorageItemAdded, this._domStorageItemAdded, this);
|
| - this.domStorage.addEventListener(
|
| + this._domStorage.addEventListener(Resources.DOMStorage.Events.DOMStorageItemAdded, this._domStorageItemAdded, this);
|
| + this._domStorage.addEventListener(
|
| Resources.DOMStorage.Events.DOMStorageItemUpdated, this._domStorageItemUpdated, this);
|
| }
|
|
|
| /**
|
| - * @override
|
| - * @return {!Array.<!UI.ToolbarItem>}
|
| - */
|
| - syncToolbarItems() {
|
| - return [this._refreshButton, this._clearButton, this._deleteButton];
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - wasShown() {
|
| - this._update();
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - */
|
| - willHide() {
|
| - this._deleteButton.setEnabled(false);
|
| - }
|
| -
|
| - /**
|
| * @param {!Common.Event} event
|
| */
|
| _domStorageItemsCleared(event) {
|
| @@ -85,7 +60,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
|
|
| this._dataGrid.rootNode().removeChildren();
|
| this._dataGrid.addCreationNode(false);
|
| - this._deleteButton.setEnabled(false);
|
| + this.setCanDeleteSelected(false);
|
| }
|
|
|
| /**
|
| @@ -103,7 +78,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| var childNode = children[i];
|
| if (childNode.data.key === storageData.key) {
|
| rootNode.removeChild(childNode);
|
| - this._deleteButton.setEnabled(children.length > 1);
|
| + this.setCanDeleteSelected(children.length > 1);
|
| return;
|
| }
|
| }
|
| @@ -120,7 +95,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| var rootNode = this._dataGrid.rootNode();
|
| var children = rootNode.children;
|
|
|
| - this._deleteButton.setEnabled(true);
|
| + this.setCanDeleteSelected(true);
|
|
|
| for (var i = 0; i < children.length; ++i) {
|
| if (children[i].data.key === storageData.key)
|
| @@ -157,59 +132,48 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| childNode.select();
|
| childNode.reveal();
|
| }
|
| - this._deleteButton.setEnabled(true);
|
| + this.setCanDeleteSelected(true);
|
| }
|
| }
|
| }
|
|
|
| - _update() {
|
| - this.detachChildWidgets();
|
| - this.domStorage.getItems(this._showDOMStorageItems.bind(this));
|
| - }
|
| -
|
| + /**
|
| + * @param {?string} error
|
| + * @param {!Array<!Array<string>>} items
|
| + */
|
| _showDOMStorageItems(error, items) {
|
| if (error)
|
| return;
|
| -
|
| - this._dataGrid = this._dataGridForDOMStorageItems(items);
|
| - this._dataGrid.asWidget().show(this.element);
|
| - this._deleteButton.setEnabled(this._dataGrid.rootNode().children.length > 1);
|
| - }
|
| -
|
| - _dataGridForDOMStorageItems(items) {
|
| - var columns = /** @type {!Array<!DataGrid.DataGrid.ColumnDescriptor>} */ ([
|
| - {id: 'key', title: Common.UIString('Key'), sortable: false, editable: true, weight: 50},
|
| - {id: 'value', title: Common.UIString('Value'), sortable: false, editable: true, weight: 50}
|
| - ]);
|
| -
|
| - var nodes = [];
|
| -
|
| - var keys = [];
|
| - var length = items.length;
|
| - for (var i = 0; i < items.length; i++) {
|
| - var key = items[i][0];
|
| - var value = items[i][1];
|
| + var rootNode = this._dataGrid.rootNode();
|
| + var selectedKey = null;
|
| + for (var node of rootNode.children) {
|
| + if (!node.selected)
|
| + continue;
|
| + selectedKey = node.data.key;
|
| + break;
|
| + }
|
| + rootNode.removeChildren();
|
| + var selectedNode = null;
|
| + var filteredItems = item => `${item[0]} ${item[1]}`;
|
| + for (var item of this.filter(items, filteredItems)) {
|
| + var key = item[0];
|
| + var value = item[1];
|
| var node = new DataGrid.DataGridNode({key: key, value: value}, false);
|
| node.selectable = true;
|
| - nodes.push(node);
|
| - keys.push(key);
|
| + rootNode.appendChild(node);
|
| + if (!selectedNode || key === selectedKey)
|
| + selectedNode = node;
|
| }
|
| -
|
| - var dataGrid = new DataGrid.DataGrid(columns, this._editingCallback.bind(this), this._deleteCallback.bind(this));
|
| - dataGrid.setName('DOMStorageItemsView');
|
| - length = nodes.length;
|
| - for (var i = 0; i < length; ++i)
|
| - dataGrid.rootNode().appendChild(nodes[i]);
|
| - dataGrid.addCreationNode(false);
|
| - if (length > 0)
|
| - nodes[0].selected = true;
|
| - return dataGrid;
|
| + if (selectedNode)
|
| + selectedNode.selected = true;
|
| + this._dataGrid.addCreationNode(false);
|
| + this.setCanDeleteSelected(!!selectedNode);
|
| }
|
|
|
| /**
|
| - * @param {!Common.Event} event
|
| + * @override
|
| */
|
| - _deleteButtonClicked(event) {
|
| + deleteSelectedItem() {
|
| if (!this._dataGrid || !this._dataGrid.selectedNode)
|
| return;
|
|
|
| @@ -217,14 +181,21 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| }
|
|
|
| /**
|
| - * @param {!Common.Event} event
|
| + * @override
|
| + */
|
| + refreshItems() {
|
| + this._domStorage.getItems((error, items) => this._showDOMStorageItems(error, items));
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| */
|
| - _refreshButtonClicked(event) {
|
| - this._update();
|
| + deleteAllItems() {
|
| + this._domStorage.clear();
|
| }
|
|
|
| _editingCallback(editingNode, columnIdentifier, oldText, newText) {
|
| - var domStorage = this.domStorage;
|
| + var domStorage = this._domStorage;
|
| if (columnIdentifier === 'key') {
|
| if (typeof oldText === 'string')
|
| domStorage.removeItem(oldText);
|
| @@ -252,7 +223,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView {
|
| if (!node || node.isCreationNode)
|
| return;
|
|
|
| - if (this.domStorage)
|
| - this.domStorage.removeItem(node.data.key);
|
| + if (this._domStorage)
|
| + this._domStorage.removeItem(node.data.key);
|
| }
|
| };
|
|
|