Chromium Code Reviews| 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..c8d46f5f474e7b64c390899e176211a01afbc461 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js |
| @@ -23,60 +23,31 @@ |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| - |
| -/** |
| - * @unrestricted |
| - */ |
| -Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| +Resources.DOMStorageItemsView = class extends Resources.ItemsView { |
| constructor(domStorage) { |
|
dgozman
2017/01/27 22:48:45
JSDoc please.
eostroukhov
2017/01/28 00:03:29
Done.
|
| - 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 +56,7 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| this._dataGrid.rootNode().removeChildren(); |
| this._dataGrid.addCreationNode(false); |
| - this._deleteButton.setEnabled(false); |
| + this.setCanDeleteSelected(false); |
| } |
| /** |
| @@ -103,7 +74,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 +91,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 +128,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 {?Object} 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) { |
| + deleteSelected() { |
| if (!this._dataGrid || !this._dataGrid.selectedNode) |
| return; |
| @@ -217,14 +177,21 @@ Resources.DOMStorageItemsView = class extends UI.SimpleView { |
| } |
| /** |
| - * @param {!Common.Event} event |
| + * @override |
| + */ |
| + refresh() { |
| + this._domStorage.getItems((error, items) => this._showDOMStorageItems(error, items)); |
| + } |
| + |
| + /** |
| + * @override |
| */ |
| - _refreshButtonClicked(event) { |
| - this._update(); |
| + deleteAll() { |
| + 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 +219,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); |
| } |
| }; |