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

Unified Diff: third_party/WebKit/Source/devtools/front_end/resources/DOMStorageItemsView.js

Issue 2649923006: [DevTools] Add filtering to DOM storages (Closed)
Patch Set: [DevTools] Add filtering to DOM storages 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: 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);
}
};

Powered by Google App Engine
This is Rietveld 408576698