| Index: third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js b/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
|
| index 0bea9c03cd4d5abb80fb3af9e8a784e5e2812424..5076c466d9a33def4af8e24e4d10536769232541 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/cookie_table/CookiesTable.js
|
| @@ -36,13 +36,15 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| * @param {function(!SDK.Cookie, ?SDK.Cookie, function(?string))=} saveCallback
|
| * @param {function()=} refreshCallback
|
| * @param {function()=} selectedCallback
|
| + * @param {function(!SDK.Cookie, function())=} deleteCallback
|
| * @param {string=} cookieDomain
|
| */
|
| - constructor(saveCallback, refreshCallback, selectedCallback, cookieDomain) {
|
| + constructor(saveCallback, refreshCallback, selectedCallback, deleteCallback, cookieDomain) {
|
| super();
|
|
|
| this._saveCallback = saveCallback;
|
| this._refreshCallback = refreshCallback;
|
| + this._deleteCallback = deleteCallback;
|
| this._cookieDomain = cookieDomain;
|
|
|
| var editable = !!saveCallback;
|
| @@ -98,7 +100,6 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| if (selectedCallback)
|
| this._dataGrid.addEventListener(DataGrid.DataGrid.Events.SelectedNode, selectedCallback, this);
|
|
|
| - this._nextSelectedCookie = /** @type {?SDK.Cookie} */ (null);
|
| /** @type {?string} */
|
| this._lastEditedColumnId = null;
|
|
|
| @@ -130,20 +131,59 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| + * @return {{current: ?SDK.Cookie, neighbor: ?SDK.Cookie}}
|
| + */
|
| + _getSelectionCookies() {
|
| + var node = this._dataGrid.selectedNode;
|
| + var neighbor = node && (node.traverseNextNode(true) || node.traversePreviousNode(true));
|
| +
|
| + return {current: node && node.cookie, neighbor: neighbor && neighbor.cookie};
|
| + }
|
| +
|
| + /**
|
| * @override
|
| */
|
| willHide() {
|
| this._lastEditedColumnId = null;
|
| }
|
|
|
| + /**
|
| + * @param {{current: ?SDK.Cookie, neighbor: ?SDK.Cookie}} selectionCookies
|
| + * @param {!Array<!SDK.Cookie>} cookies
|
| + * @return {?SDK.Cookie}
|
| + */
|
| + _findSelectedCookie(selectionCookies, cookies) {
|
| + var current = selectionCookies.current;
|
| + var foundCurrent = cookies.find(cookie => this._isSameCookie(cookie, current));
|
| + if (foundCurrent)
|
| + return foundCurrent;
|
| +
|
| + var neighbor = selectionCookies.neighbor;
|
| + var foundNeighbor = cookies.find(cookie => this._isSameCookie(cookie, neighbor));
|
| + if (foundNeighbor)
|
| + return foundNeighbor;
|
| +
|
| + return null;
|
| + }
|
| +
|
| + /**
|
| + * @param {!SDK.Cookie} cookieA
|
| + * @param {?SDK.Cookie} cookieB
|
| + * @return {boolean}
|
| + */
|
| + _isSameCookie(cookieA, cookieB) {
|
| + return !!cookieB && cookieB.name() === cookieA.name() && cookieB.domain() === cookieA.domain() &&
|
| + cookieB.path() === cookieA.path();
|
| + }
|
| +
|
| _rebuildTable() {
|
| - var selectedCookie = this._nextSelectedCookie || this.selectedCookie();
|
| + var selectionCookies = this._getSelectionCookies();
|
| var lastEditedColumnId = this._lastEditedColumnId;
|
| - this._nextSelectedCookie = null;
|
| this._lastEditedColumnId = null;
|
| this._dataGrid.rootNode().removeChildren();
|
| for (var i = 0; i < this._data.length; ++i) {
|
| var item = this._data[i];
|
| + var selectedCookie = this._findSelectedCookie(selectionCookies, item.cookies);
|
| if (item.folderName) {
|
| var groupData = {
|
| name: item.folderName,
|
| @@ -188,8 +228,7 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| var cookie = cookies[i];
|
| var cookieNode = this._createGridNode(cookie);
|
| parentNode.appendChild(cookieNode);
|
| - if (selectedCookie && selectedCookie.name() === cookie.name() && selectedCookie.domain() === cookie.domain() &&
|
| - selectedCookie.path() === cookie.path()) {
|
| + if (this._isSameCookie(cookie, selectedCookie)) {
|
| cookieNode.select();
|
| if (lastEditedColumnId !== null)
|
| this._dataGrid.startEditingNextEditableColumnOfDataGridNode(cookieNode, lastEditedColumnId);
|
| @@ -313,13 +352,12 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| return node;
|
| }
|
|
|
| + /**
|
| + * @param {!DataGrid.DataGridNode} node
|
| + */
|
| _onDeleteCookie(node) {
|
| - var cookie = node.cookie;
|
| - var neighbour = node.traverseNextNode() || node.traversePreviousNode();
|
| - if (neighbour)
|
| - this._nextSelectedCookie = neighbour.cookie;
|
| - cookie.remove();
|
| - this._refresh();
|
| + if (node.cookie && this._deleteCallback)
|
| + this._deleteCallback(node.cookie, () => this._refresh());
|
| }
|
|
|
| /**
|
| @@ -366,7 +404,6 @@ CookieTable.CookiesTable = class extends UI.VBox {
|
| else
|
| node.setDirty(true);
|
| });
|
| - this._nextSelectedCookie = newCookie;
|
| }
|
|
|
| /**
|
|
|