Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.css (260522 => 260523)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.css 2020-04-22 18:12:34 UTC (rev 260522)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.css 2020-04-22 18:33:32 UTC (rev 260523)
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2013 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2020 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -23,10 +23,11 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-.content-view.cookie-storage > .data-grid {
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
+.content-view.cookie-storage > .message-text-view {
+ top: var(--navigation-bar-height);
}
+
+.content-view.cookie-storage > .message-text-view > .message {
+ font-size: var(--message-text-view-font-size);
+ font-weight: normal;
+}
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js (260522 => 260523)
--- trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js 2020-04-22 18:12:34 UTC (rev 260522)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js 2020-04-22 18:33:32 UTC (rev 260523)
@@ -32,9 +32,15 @@
this.element.classList.add("cookie-storage");
this._cookies = [];
+ this._filteredCookies = [];
this._sortComparator = null;
this._table = null;
+ this._emptyFilterResultsMessageElement = null;
+
+ this._filterBarNavigationItem = new WI.FilterBarNavigationItem;
+ this._filterBarNavigationItem.filterBar.addEventListener(WI.FilterBar.Event.FilterDidChange, this._handleFilterBarFilterDidChange, this);
+
if (InspectorBackend.hasCommand("Page.setCookie")) {
this._setCookieButtonNavigationItem = new WI.ButtonNavigationItem("cookie-storage-set-cookie", WI.UIString("Add Cookie"), "Images/Plus15.svg", 15, 15);
this._setCookieButtonNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, this._handleSetCookieButtonClick, this);
@@ -53,6 +59,8 @@
get navigationItems()
{
let navigationItems = [];
+ navigationItems.push(this._filterBarNavigationItem);
+ navigationItems.push(new WI.DividerNavigationItem);
if (this._setCookieButtonNavigationItem)
navigationItems.push(this._setCookieButtonNavigationItem);
navigationItems.push(this._refreshButtonNavigationItem);
@@ -73,6 +81,16 @@
return [this._table.scrollContainer];
}
+ get canFocusFilterBar()
+ {
+ return true;
+ }
+
+ focusFilterBar()
+ {
+ this._filterBarNavigationItem.filterBar.focus();
+ }
+
handleCopyEvent(event)
{
if (!this._table || !this._table.selectedRows.length)
@@ -91,7 +109,7 @@
tableIndexForRepresentedObject(table, object)
{
- let index = this._cookies.indexOf(object);
+ let index = this._filteredCookies.indexOf(object);
console.assert(index >= 0);
return index;
}
@@ -98,13 +116,13 @@
tableRepresentedObjectForIndex(table, index)
{
- console.assert(index >= 0 && index < this._cookies.length);
- return this._cookies[index];
+ console.assert(index >= 0 && index < this._filteredCookies.length);
+ return this._filteredCookies[index];
}
tableNumberOfRows(table)
{
- return this._cookies.length;
+ return this._filteredCookies.length;
}
tableSortChanged(table)
@@ -115,6 +133,8 @@
return;
this._updateSort();
+ this._updateFilteredCookies();
+ this._updateEmptyFilterResultsMessage();
this._table.reloadData();
}
@@ -129,7 +149,7 @@
if (InspectorBackend.hasCommand("Page.setCookie")) {
contextMenu.appendItem(WI.UIString("Edit"), () => {
console.assert(!this._editingCookie);
- this._editingCookie = this._cookies[rowIndex];
+ this._editingCookie = this._filteredCookies[rowIndex];
let popover = new WI.CookiePopover(this);
popover.show(this._editingCookie, this._table.cellForRowAndColumn(rowIndex, this._table.columns[0]), [WI.RectEdge.MAX_Y, WI.RectEdge.MIN_X]);
@@ -164,12 +184,13 @@
for (let i = rowIndexes.length - 1; i >= 0; --i) {
let rowIndex = rowIndexes[i];
- let cookie = this._cookies[rowIndex];
+ let cookie = this._filteredCookies[rowIndex];
console.assert(cookie, "Missing cookie for row " + rowIndex);
if (!cookie)
continue;
- this._cookies.splice(rowIndex, 1);
+ this._filteredCookies.splice(rowIndex, 1);
+ this._cookies.remove(cookie);
let target = WI.assumingMainTarget();
target.PageAgent.deleteCookie(cookie.name, cookie.url);
@@ -178,7 +199,7 @@
tablePopulateCell(table, cell, column, rowIndex)
{
- let cookie = this._cookies[rowIndex];
+ let cookie = this._filteredCookies[rowIndex];
cell.textContent = this._formatCookiePropertyForColumn(cookie, column);
return cell;
}
@@ -286,11 +307,11 @@
// Private
- _filterCookies(cookies)
+ _getCookiesForHost(cookies, host)
{
let resourceMatchesStorageDomain = (resource) => {
let urlComponents = resource.urlComponents;
- return urlComponents && urlComponents.host && urlComponents.host === this.representedObject.host;
+ return urlComponents && urlComponents.host && urlComponents.host === host;
};
let allResources = [];
@@ -381,11 +402,18 @@
promises.push(this._reloadCookies());
await Promise.all(promises);
- let index = this._cookies.findIndex((existingCookie) => cookieToSet.equals(existingCookie));
+ let index = this._filteredCookies.findIndex((existingCookie) => cookieToSet.equals(existingCookie));
if (index >= 0)
this._table.selectRow(index);
}
+ _handleFilterBarFilterDidChange(event)
+ {
+ this._updateFilteredCookies();
+ this._updateEmptyFilterResultsMessage();
+ this._table.reloadData();
+ }
+
_handleSetCookieButtonClick(event)
{
let popover = new WI.CookiePopover(this);
@@ -400,10 +428,10 @@
_handleClearNavigationItemClicked(event)
{
let target = WI.assumingMainTarget();
- for (let cookie of this._cookies.splice(0))
+ for (let cookie of this._cookies)
target.PageAgent.deleteCookie(cookie.name, cookie.url);
- this._table.reloadData();
+ this._reloadCookies();
}
_reloadCookies()
@@ -410,8 +438,10 @@
{
let target = WI.assumingMainTarget();
return target.PageAgent.getCookies().then((payload) => {
- this._cookies = this._filterCookies(payload.cookies.map(WI.Cookie.fromPayload));
+ this._cookies = this._getCookiesForHost(payload.cookies.map(WI.Cookie.fromPayload), this.representedObject.host);
this._updateSort();
+ this._updateFilteredCookies();
+ this._updateEmptyFilterResultsMessage();
this._table.reloadData();
}).catch((error) => {
console.error("Could not fetch cookies: ", error);
@@ -426,6 +456,45 @@
this._cookies.sort(this._sortComparator);
}
+ _updateFilteredCookies()
+ {
+ let filterText = this._filterBarNavigationItem.filterBar.filters.text;
+ if (filterText) {
+ let regex = WI.SearchUtilities.filterRegExpForString(filterText, WI.SearchUtilities.defaultSettings);
+ this._filteredCookies = this._cookies.filter((cookie) => {
+ for (let column of this._table.columns) {
+ let text = this._formatCookiePropertyForColumn(cookie, column);
+ if (text && regex.test(text))
+ return true;
+ }
+ return false;
+ });
+ } else
+ this._filteredCookies = this._cookies;
+ }
+
+ _updateEmptyFilterResultsMessage()
+ {
+ if (this._filteredCookies.length || !this._filterBarNavigationItem.filterBar.filters.text) {
+ if (this._emptyFilterResultsMessageElement)
+ this._emptyFilterResultsMessageElement.remove();
+ this._emptyFilterResultsMessageElement = null;
+ } else {
+ if (!this._emptyFilterResultsMessageElement) {
+ let buttonElement = document.createElement("button");
+ buttonElement.textContent = WI.UIString("Clear Filters");
+ buttonElement.addEventListener("click", (event) => {
+ this._filterBarNavigationItem.filterBar.clear();
+ });
+
+ this._emptyFilterResultsMessageElement = WI.createMessageTextView(WI.UIString("No Filter Results"));
+ this._emptyFilterResultsMessageElement.appendChild(buttonElement);
+ }
+
+ this.element.appendChild(this._emptyFilterResultsMessageElement);
+ }
+ }
+
_handleTableKeyDown(event)
{
if (event.keyCode === WI.KeyboardShortcut.Key.Backspace.keyCode || event.keyCode === WI.KeyboardShortcut.Key.Delete.keyCode)
@@ -434,9 +503,9 @@
_cookiesAtIndexes(indexes)
{
- if (!this._cookies.length)
+ if (!this._filteredCookies.length)
return [];
- return indexes.map((index) => this._cookies[index]);
+ return indexes.map((index) => this._filteredCookies[index]);
}
_formatCookiesAsText(cookies)
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js (260522 => 260523)
--- trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js 2020-04-22 18:12:34 UTC (rev 260522)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/NetworkTableContentView.js 2020-04-22 18:33:32 UTC (rev 260523)
@@ -1284,7 +1284,6 @@
this._updateWaterfallTimelineRuler();
this._processPendingEntries();
this._positionDetailView();
- this._positionEmptyFilterMessage();
this._updateExportButton();
}
@@ -1603,7 +1602,6 @@
}
this.element.appendChild(this._emptyFilterResultsMessageElement);
- this._positionEmptyFilterMessage();
}
_hideEmptyFilterResultsMessage()
@@ -1614,15 +1612,6 @@
this._emptyFilterResultsMessageElement.remove();
}
- _positionEmptyFilterMessage()
- {
- if (!this._emptyFilterResultsMessageElement)
- return;
-
- let width = this._nameColumn.width - 1; // For the 1px border.
- this._emptyFilterResultsMessageElement.style.width = width + "px";
- }
-
_clearNetworkOnNavigateSettingChanged()
{
this._clearOnLoadNavigationItem.checked = !WI.settings.clearNetworkOnNavigate.value;
@@ -2494,7 +2483,6 @@
this._nameColumnWidthSetting.value = event.target.width;
this._positionDetailView();
- this._positionEmptyFilterMessage();
}
_tableWaterfallColumnDidChangeWidth(event)