Web Inspector: Storage: don't request the list of IndexedDB database names multiple...
authordrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 21:54:32 +0000 (21:54 +0000)
committerdrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 22 May 2020 21:54:32 +0000 (21:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=212253
<rdar://problem/62945903>

Reviewed by Joseph Pecoraro.

This can happen if additional frames are added that share the same security origin as the
main frame. Simply maintain a `Set` of security origins that've already been requested for
and ignore any repeat requests.

* UserInterface/Controllers/IndexedDBManager.js:
(WI.IndexedDBManager):
(WI.IndexedDBManager.prototype._reset):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@262077 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebInspectorUI/ChangeLog
Source/WebInspectorUI/UserInterface/Controllers/IndexedDBManager.js

index 7ec3799..fe60cf3 100644 (file)
@@ -1,3 +1,19 @@
+2020-05-22  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Storage: don't request the list of IndexedDB database names multiple times for the same security origin
+        https://bugs.webkit.org/show_bug.cgi?id=212253
+        <rdar://problem/62945903>
+
+        Reviewed by Joseph Pecoraro.
+
+        This can happen if additional frames are added that share the same security origin as the
+        main frame. Simply maintain a `Set` of security origins that've already been requested for
+        and ignore any repeat requests.
+
+        * UserInterface/Controllers/IndexedDBManager.js:
+        (WI.IndexedDBManager):
+        (WI.IndexedDBManager.prototype._reset):
+
 2020-05-20  Nikita Vasilyev  <nvasilyev@apple.com>
 
         Web Inspector: Left/Right arrow keys should collapse/expand details sections
index 4355841..52187a6 100644 (file)
@@ -33,6 +33,8 @@ WI.IndexedDBManager = class IndexedDBManager extends WI.Object
         super();
 
         this._enabled = false;
+        this._requestedSecurityOrigins = new Set;
+
         this._reset();
     }
 
@@ -151,6 +153,7 @@ WI.IndexedDBManager = class IndexedDBManager extends WI.Object
     _reset()
     {
         this._indexedDatabases = [];
+        this._requestedSecurityOrigins.clear();
         this.dispatchEventToListeners(WI.IndexedDBManager.Event.Cleared);
 
         let mainFrame = WI.networkManager.mainFrame;
@@ -173,6 +176,11 @@ WI.IndexedDBManager = class IndexedDBManager extends WI.Object
         if (!securityOrigin || securityOrigin === "://")
             return;
 
+        if (this._requestedSecurityOrigins.has(securityOrigin))
+            return;
+
+        this._requestedSecurityOrigins.add(securityOrigin);
+
         function processDatabaseNames(error, names)
         {
             if (error || !names)