Title: [144052] trunk
Revision
144052
Author
vse...@chromium.org
Date
2013-02-26 06:20:26 -0800 (Tue, 26 Feb 2013)

Log Message

Web Inspector: Migrate IndexedDB support to ResourceTreeModel's SecurityOriginAdded/Removed events.
https://bugs.webkit.org/show_bug.cgi?id=110863

Reviewed by Alexander Pavlov.

Source/WebCore:

Recently added SecurityOriginAdded/Removed events support was essentially duplicated in
IndexedDBModel. This patch migrates IndexedDB support to new events.

* inspector/Inspector.json:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
* inspector/InspectorIndexedDBAgent.h:
(InspectorIndexedDBAgent):
* inspector/front-end/IndexedDBModel.js:
(WebInspector.IndexedDBModel):
(WebInspector.IndexedDBModel.prototype._reset):
(WebInspector.IndexedDBModel.prototype.refreshDatabaseNames):
(WebInspector.IndexedDBModel.prototype._securityOriginAdded):
(WebInspector.IndexedDBModel.prototype._securityOriginRemoved):
(WebInspector.IndexedDBModel.prototype._addOrigin):
(WebInspector.IndexedDBModel.prototype._removeOrigin):
(WebInspector.IndexedDBModel.prototype._updateOriginDatabaseNames):
(WebInspector.IndexedDBModel.prototype._loadDatabaseNames):
(WebInspector.IndexedDBModel.prototype._loadDatabase):
(WebInspector.IndexedDBModel.prototype.):
(WebInspector.IndexedDBModel.prototype._requestData):
* inspector/front-end/ResourceTreeModel.js:
(WebInspector.ResourceTreeModel.prototype.securityOrigins):

LayoutTests:

* http/tests/inspector/indexeddb/database-names-expected.txt:
* http/tests/inspector/indexeddb/database-names.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (144051 => 144052)


--- trunk/LayoutTests/ChangeLog	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/LayoutTests/ChangeLog	2013-02-26 14:20:26 UTC (rev 144052)
@@ -1,3 +1,13 @@
+2013-02-26  Vsevolod Vlasov  <vse...@chromium.org>
+
+        Web Inspector: Migrate IndexedDB support to ResourceTreeModel's SecurityOriginAdded/Removed events.
+        https://bugs.webkit.org/show_bug.cgi?id=110863
+
+        Reviewed by Alexander Pavlov.
+
+        * http/tests/inspector/indexeddb/database-names-expected.txt:
+        * http/tests/inspector/indexeddb/database-names.html:
+
 2013-02-26  Csaba Osztrogonác  <o...@webkit.org>
 
         Unreviewed fix after r144032.

Modified: trunk/LayoutTests/http/tests/inspector/indexeddb/database-names-expected.txt (144051 => 144052)


--- trunk/LayoutTests/http/tests/inspector/indexeddb/database-names-expected.txt	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/LayoutTests/http/tests/inspector/indexeddb/database-names-expected.txt	2013-02-26 14:20:26 UTC (rev 144052)
@@ -5,6 +5,7 @@
 Tests that database names are correctly loaded and saved in IndexedDBModel.
 
 Dumping database names:
+
 Dumping database names:
     testDatabase1
 
@@ -17,3 +18,4 @@
 
 Dumping database names:
 
+

Modified: trunk/LayoutTests/http/tests/inspector/indexeddb/database-names.html (144051 => 144052)


--- trunk/LayoutTests/http/tests/inspector/indexeddb/database-names.html	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/LayoutTests/http/tests/inspector/indexeddb/database-names.html	2013-02-26 14:20:26 UTC (rev 144052)
@@ -11,11 +11,8 @@
     function dumpDatabaseNames()
     {
         InspectorTest.addResult("Dumping database names:");
-        var frame = indexedDBModel._frames[mainFrameId];
-        if (!frame)
-            return;
-
-        var securityOrigin = frame.securityOrigin;
+        var securityOrigins = WebInspector.resourceTreeModel.securityOrigins();
+        var securityOrigin = securityOrigins[0];
         var names = indexedDBModel._databaseNamesBySecurityOrigin[securityOrigin];
         for (var i = 0; i < names.length; ++i)
             InspectorTest.addResult("    " + names[i]);

Modified: trunk/Source/WebCore/ChangeLog (144051 => 144052)


--- trunk/Source/WebCore/ChangeLog	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/ChangeLog	2013-02-26 14:20:26 UTC (rev 144052)
@@ -1,3 +1,37 @@
+2013-02-26  Vsevolod Vlasov  <vse...@chromium.org>
+
+        Web Inspector: Migrate IndexedDB support to ResourceTreeModel's SecurityOriginAdded/Removed events.
+        https://bugs.webkit.org/show_bug.cgi?id=110863
+
+        Reviewed by Alexander Pavlov.
+
+        Recently added SecurityOriginAdded/Removed events support was essentially duplicated in
+        IndexedDBModel. This patch migrates IndexedDB support to new events.
+
+        * inspector/Inspector.json:
+        * inspector/InspectorIndexedDBAgent.cpp:
+        (WebCore):
+        (WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
+        (WebCore::InspectorIndexedDBAgent::requestDatabase):
+        (WebCore::InspectorIndexedDBAgent::requestData):
+        * inspector/InspectorIndexedDBAgent.h:
+        (InspectorIndexedDBAgent):
+        * inspector/front-end/IndexedDBModel.js:
+        (WebInspector.IndexedDBModel):
+        (WebInspector.IndexedDBModel.prototype._reset):
+        (WebInspector.IndexedDBModel.prototype.refreshDatabaseNames):
+        (WebInspector.IndexedDBModel.prototype._securityOriginAdded):
+        (WebInspector.IndexedDBModel.prototype._securityOriginRemoved):
+        (WebInspector.IndexedDBModel.prototype._addOrigin):
+        (WebInspector.IndexedDBModel.prototype._removeOrigin):
+        (WebInspector.IndexedDBModel.prototype._updateOriginDatabaseNames):
+        (WebInspector.IndexedDBModel.prototype._loadDatabaseNames):
+        (WebInspector.IndexedDBModel.prototype._loadDatabase):
+        (WebInspector.IndexedDBModel.prototype.):
+        (WebInspector.IndexedDBModel.prototype._requestData):
+        * inspector/front-end/ResourceTreeModel.js:
+        (WebInspector.ResourceTreeModel.prototype.securityOrigins):
+
 2013-02-26  Alexander Pavlov  <apav...@chromium.org>
 
         Web Inspector: in protocol make field "securityOrigin" in type Page.Frame mandatory

Modified: trunk/Source/WebCore/inspector/Inspector.json (144051 => 144052)


--- trunk/Source/WebCore/inspector/Inspector.json	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/inspector/Inspector.json	2013-02-26 14:20:26 UTC (rev 144052)
@@ -1283,15 +1283,6 @@
         "hidden": true,
         "types": [
             {
-                "id": "SecurityOriginWithDatabaseNames",
-                "type": "object",
-                "description": "Security origin with database names.",
-                "properties": [
-                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
-                    { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for this origin." }
-                ]
-            },
-            {
                 "id": "DatabaseWithObjectStores",
                 "type": "object",
                 "description": "Database with an array of object stores.",
@@ -1378,21 +1369,21 @@
                 "description": "Disables events from backend."
             },
             {
-                "name": "requestDatabaseNamesForFrame",
+                "name": "requestDatabaseNames",
                 "async": true,
                 "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id." }
+                    { "name": "securityOrigin", "type": "string", "description": "Security origin." }
                 ],
                 "returns": [
-                    { "name": "securityOriginWithDatabaseNames", "$ref": "SecurityOriginWithDatabaseNames", "description": "Frame with database names." }
+                    { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for origin." }
                 ],
-                "description": "Requests database names for given frame's security origin."
+                "description": "Requests database names for given security origin."
             },
             {
                 "name": "requestDatabase",
                 "async": true,
                 "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id." },
+                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
                     { "name": "databaseName", "type": "string", "description": "Database name." }
                 ],
                 "returns": [
@@ -1404,7 +1395,7 @@
                 "name": "requestData",
                 "async": true,
                 "parameters": [
-                    { "name": "frameId", "$ref": "Network.FrameId", "description": "Frame id." },
+                    { "name": "securityOrigin", "type": "string", "description": "Security origin." },
                     { "name": "databaseName", "type": "string", "description": "Database name." },
                     { "name": "objectStoreName", "type": "string", "description": "Object store name." },
                     { "name": "indexName", "type": "string", "description": "Index name, empty string for object store data requests." },

Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp (144051 => 144052)


--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.cpp	2013-02-26 14:20:26 UTC (rev 144052)
@@ -68,7 +68,6 @@
 #include <wtf/Vector.h>
 
 using WebCore::TypeBuilder::Array;
-using WebCore::TypeBuilder::IndexedDB::SecurityOriginWithDatabaseNames;
 using WebCore::TypeBuilder::IndexedDB::DatabaseWithObjectStores;
 using WebCore::TypeBuilder::IndexedDB::DataEntry;
 using WebCore::TypeBuilder::IndexedDB::Key;
@@ -77,7 +76,7 @@
 using WebCore::TypeBuilder::IndexedDB::ObjectStore;
 using WebCore::TypeBuilder::IndexedDB::ObjectStoreIndex;
 
-typedef WebCore::InspectorBackendDispatcher::IndexedDBCommandHandler::RequestDatabaseNamesForFrameCallback RequestDatabaseNamesForFrameCallback;
+typedef WebCore::InspectorBackendDispatcher::IndexedDBCommandHandler::RequestDatabaseNamesCallback RequestDatabaseNamesCallback;
 typedef WebCore::InspectorBackendDispatcher::IndexedDBCommandHandler::RequestDatabaseCallback RequestDatabaseCallback;
 typedef WebCore::InspectorBackendDispatcher::IndexedDBCommandHandler::RequestDataCallback RequestDataCallback;
 typedef WebCore::InspectorBackendDispatcher::CallbackBase RequestCallback;
@@ -93,7 +92,7 @@
 class GetDatabaseNamesCallback : public EventListener {
     WTF_MAKE_NONCOPYABLE(GetDatabaseNamesCallback);
 public:
-    static PassRefPtr<GetDatabaseNamesCallback> create(PassRefPtr<RequestDatabaseNamesForFrameCallback> requestCallback, const String& securityOrigin)
+    static PassRefPtr<GetDatabaseNamesCallback> create(PassRefPtr<RequestDatabaseNamesCallback> requestCallback, const String& securityOrigin)
     {
         return adoptRef(new GetDatabaseNamesCallback(requestCallback, securityOrigin));
     }
@@ -125,23 +124,20 @@
             m_requestCallback->sendFailure("Unexpected result type.");
             return;
         }
+
         RefPtr<DOMStringList> databaseNamesList = requestResult->domStringList();
         RefPtr<TypeBuilder::Array<String> > databaseNames = TypeBuilder::Array<String>::create();
         for (size_t i = 0; i < databaseNamesList->length(); ++i)
             databaseNames->addItem(databaseNamesList->item(i));
-
-        RefPtr<SecurityOriginWithDatabaseNames> result = SecurityOriginWithDatabaseNames::create()
-            .setSecurityOrigin(m_securityOrigin)
-            .setDatabaseNames(databaseNames);
-        m_requestCallback->sendSuccess(result);
+        m_requestCallback->sendSuccess(databaseNames.release());
     }
 
 private:
-    GetDatabaseNamesCallback(PassRefPtr<RequestDatabaseNamesForFrameCallback> requestCallback, const String& securityOrigin)
+    GetDatabaseNamesCallback(PassRefPtr<RequestDatabaseNamesCallback> requestCallback, const String& securityOrigin)
         : EventListener(EventListener::CPPEventListenerType)
         , m_requestCallback(requestCallback)
         , m_securityOrigin(securityOrigin) { }
-    RefPtr<RequestDatabaseNamesForFrameCallback> m_requestCallback;
+    RefPtr<RequestDatabaseNamesCallback> m_requestCallback;
     String m_securityOrigin;
 };
 
@@ -590,16 +586,6 @@
     m_state->setBoolean(IndexedDBAgentState::indexedDBAgentEnabled, false);
 }
 
-static Frame* assertFrame(ErrorString* errorString, const String& frameId, InspectorPageAgent* pageAgent)
-{
-    Frame* frame = pageAgent->frameForId(frameId);
-
-    if (!frame)
-        *errorString = "Frame not found";
-
-    return frame;
-}
-
 static Document* assertDocument(ErrorString* errorString, Frame* frame)
 {
     Document* document = frame ? frame->document() : 0;
@@ -610,17 +596,6 @@
     return document;
 }
 
-static Document* assertDocument(ErrorString* errorString, const String& frameId, InspectorPageAgent* pageAgent)
-{
-    Frame* frame = pageAgent->frameForId(frameId);
-    Document* document = frame ? frame->document() : 0;
-
-    if (!document)
-        *errorString = "No document for given frame found";
-
-    return document;
-}
-
 static IDBFactory* assertIDBFactory(ErrorString* errorString, Document* document)
 {
     DOMWindow* domWindow = document->domWindow();
@@ -636,9 +611,10 @@
     return idbFactory;
 }
 
-void InspectorIndexedDBAgent::requestDatabaseNamesForFrame(ErrorString* errorString, const String& frameId, PassRefPtr<RequestDatabaseNamesForFrameCallback> requestCallback)
+void InspectorIndexedDBAgent::requestDatabaseNames(ErrorString* errorString, const String& securityOrigin, PassRefPtr<RequestDatabaseNamesCallback> requestCallback)
 {
-    Document* document = assertDocument(errorString, frameId, m_pageAgent);
+    Frame* frame = m_pageAgent->findFrameWithSecurityOrigin(securityOrigin);
+    Document* document = assertDocument(errorString, frame);
     if (!document)
         return;
     IDBFactory* idbFactory = assertIDBFactory(errorString, document);
@@ -661,9 +637,10 @@
     idbRequest->addEventListener(eventNames().successEvent, GetDatabaseNamesCallback::create(requestCallback, document->securityOrigin()->toRawString()), false);
 }
 
-void InspectorIndexedDBAgent::requestDatabase(ErrorString* errorString, const String& frameId, const String& databaseName, PassRefPtr<RequestDatabaseCallback> requestCallback)
+void InspectorIndexedDBAgent::requestDatabase(ErrorString* errorString, const String& securityOrigin, const String& databaseName, PassRefPtr<RequestDatabaseCallback> requestCallback)
 {
-    Document* document = assertDocument(errorString, frameId, m_pageAgent);
+    Frame* frame = m_pageAgent->findFrameWithSecurityOrigin(securityOrigin);
+    Document* document = assertDocument(errorString, frame);
     if (!document)
         return;
     IDBFactory* idbFactory = assertIDBFactory(errorString, document);
@@ -681,11 +658,9 @@
     databaseLoader->start(idbFactory, document->securityOrigin(), databaseName);
 }
 
-void InspectorIndexedDBAgent::requestData(ErrorString* errorString, const String& frameId, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<InspectorObject>* keyRange, PassRefPtr<RequestDataCallback> requestCallback)
+void InspectorIndexedDBAgent::requestData(ErrorString* errorString, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<InspectorObject>* keyRange, PassRefPtr<RequestDataCallback> requestCallback)
 {
-    Frame* frame = assertFrame(errorString, frameId, m_pageAgent);
-    if (!frame)
-        return;
+    Frame* frame = m_pageAgent->findFrameWithSecurityOrigin(securityOrigin);
     Document* document = assertDocument(errorString, frame);
     if (!document)
         return;

Modified: trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h (144051 => 144052)


--- trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/inspector/InspectorIndexedDBAgent.h	2013-02-26 14:20:26 UTC (rev 144052)
@@ -58,9 +58,9 @@
     // Called from the front-end.
     virtual void enable(ErrorString*);
     virtual void disable(ErrorString*);
-    virtual void requestDatabaseNamesForFrame(ErrorString*, const String& frameId, PassRefPtr<RequestDatabaseNamesForFrameCallback>);
-    virtual void requestDatabase(ErrorString*, const String& frameId, const String& databaseName, PassRefPtr<RequestDatabaseCallback>);
-    virtual void requestData(ErrorString*, const String& frameId, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<InspectorObject>* keyRange, PassRefPtr<RequestDataCallback>);
+    virtual void requestDatabaseNames(ErrorString*, const String& securityOrigin, PassRefPtr<RequestDatabaseNamesCallback>);
+    virtual void requestDatabase(ErrorString*, const String& securityOrigin, const String& databaseName, PassRefPtr<RequestDatabaseCallback>);
+    virtual void requestData(ErrorString*, const String& securityOrigin, const String& databaseName, const String& objectStoreName, const String& indexName, int skipCount, int pageSize, const RefPtr<InspectorObject>* keyRange, PassRefPtr<RequestDataCallback>);
 
 private:
     InspectorIndexedDBAgent(InstrumentingAgents*, InspectorCompositeState*, InjectedScriptManager*, InspectorPageAgent*);

Modified: trunk/Source/WebCore/inspector/front-end/IndexedDBModel.js (144051 => 144052)


--- trunk/Source/WebCore/inspector/front-end/IndexedDBModel.js	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/inspector/front-end/IndexedDBModel.js	2013-02-26 14:20:26 UTC (rev 144052)
@@ -36,16 +36,12 @@
 {
     IndexedDBAgent.enable();
 
-    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, this._frameNavigated, this);
-    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);
-    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, this._frameDetached, this);
+    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginAdded, this._securityOriginAdded, this);
+    WebInspector.resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.SecurityOriginRemoved, this._securityOriginRemoved, this);
 
-    this._frames = {};
     this._databases = new Map();
-    this._frameIdsBySecurityOrigin = {};
     this._databaseNamesBySecurityOrigin = {};
-
-    this.refreshDatabaseNames();
+    this._reset();
 }
 
 WebInspector.IndexedDBModel.KeyTypes = {
@@ -143,11 +139,19 @@
 }
 
 WebInspector.IndexedDBModel.prototype = {
+    _reset: function()
+    {
+        for (var securityOrigin in this._databaseNamesBySecurityOrigin)
+            this._removeOrigin(securityOrigin);
+        var securityOrigins = WebInspector.resourceTreeModel.securityOrigins();
+        for (var i = 0; i < securityOrigins.length; ++i)
+            this._addOrigin(securityOrigins[i]);
+    },
+
     refreshDatabaseNames: function()
     {
-        this._reset();
-        if (WebInspector.resourceTreeModel.mainFrame)
-            this._framesNavigatedRecursively(WebInspector.resourceTreeModel.mainFrame);
+        for (var securityOrigin in this._databaseNamesBySecurityOrigin)
+            this._loadDatabaseNames(securityOrigin);
     },
 
     /**
@@ -159,97 +163,39 @@
     },
 
     /**
-     * @param {WebInspector.ResourceTreeFrame} resourceTreeFrame
-     */
-    _framesNavigatedRecursively: function(resourceTreeFrame)
-    {
-        this._processFrameNavigated(resourceTreeFrame);
-        for (var i = 0; i < resourceTreeFrame.childFrames.length; ++i)
-            this._framesNavigatedRecursively(resourceTreeFrame.childFrames[i]);
-    },
-
-    /**
      * @param {WebInspector.Event} event
      */
-    _frameNavigated: function(event)
+    _securityOriginAdded: function(event)
     {
-        var resourceTreeFrame = /** @type {WebInspector.ResourceTreeFrame} */ (event.data);
-        this._processFrameNavigated(resourceTreeFrame);
+        var securityOrigin = /** @type {string} */ (event.data);
+        this._addOrigin(securityOrigin);
     },
 
     /**
      * @param {WebInspector.Event} event
      */
-    _frameDetached: function(event)
+    _securityOriginRemoved: function(event)
     {
-        var resourceTreeFrame = /** @type {WebInspector.ResourceTreeFrame} */ (event.data);
-        this._originRemovedFromFrame(resourceTreeFrame.id);
+        var securityOrigin = /** @type {string} */ (event.data);
+        this._removeOrigin(securityOrigin);
     },
 
-    _reset: function()
-    {
-        for (var frameId in this._frames)
-            this._originRemovedFromFrame(frameId);
-    },
-
     /**
-     * @param {WebInspector.ResourceTreeFrame} resourceTreeFrame
-     */
-    _processFrameNavigated: function(resourceTreeFrame)
-    {
-        if (resourceTreeFrame.securityOrigin === "null")
-            return;
-        if (this._frameIdsBySecurityOrigin[resourceTreeFrame.securityOrigin])
-            this._originAddedToFrame(resourceTreeFrame.id, resourceTreeFrame.securityOrigin);
-        else
-            this._loadDatabaseNamesForFrame(resourceTreeFrame.id);
-    },
-
-    /**
-     * @param {string} frameId
      * @param {string} securityOrigin
      */
-    _originAddedToFrame: function(frameId, securityOrigin)
+    _addOrigin: function(securityOrigin)
     {
-        if (!this._frameIdsBySecurityOrigin[securityOrigin]) {
-            this._frameIdsBySecurityOrigin[securityOrigin] = [];
-            this._frameIdsBySecurityOrigin[securityOrigin].push(frameId);
-            this._databaseNamesBySecurityOrigin[securityOrigin] = [];
-        }
-        this._frames[frameId] = new WebInspector.IndexedDBModel.Frame(frameId, securityOrigin);
+        console.assert(!this._databaseNamesBySecurityOrigin[securityOrigin]);
+        this._databaseNamesBySecurityOrigin[securityOrigin] = [];
+        this._loadDatabaseNames(securityOrigin);
     },
 
     /**
-     * @param {string} frameId
-     */
-    _originRemovedFromFrame: function(frameId)
-    {
-        var currentSecurityOrigin = this._frames[frameId] ? this._frames[frameId].securityOrigin : null;
-        if (!currentSecurityOrigin)
-            return;
-
-        delete this._frames[frameId];
-
-        var frameIdsForOrigin = this._frameIdsBySecurityOrigin[currentSecurityOrigin];
-        for (var i = 0; i < frameIdsForOrigin; ++i) {
-            if (frameIdsForOrigin[i] === frameId) {
-                frameIdsForOrigin.splice(i, 1);
-                break;
-            }
-        }
-        if (!frameIdsForOrigin.length)
-            this._originRemoved(currentSecurityOrigin);
-    },
-
-    /**
      * @param {string} securityOrigin
      */
-    _originRemoved: function(securityOrigin)
+    _removeOrigin: function(securityOrigin)
     {
-        var frameIdsForOrigin = this._frameIdsBySecurityOrigin[securityOrigin];
-        for (var i = 0; i < frameIdsForOrigin; ++i)
-            delete this._frames[frameIdsForOrigin[i]];
-        delete this._frameIdsBySecurityOrigin[securityOrigin];
+        console.assert(this._databaseNamesBySecurityOrigin[securityOrigin]);
         for (var i = 0; i < this._databaseNamesBySecurityOrigin[securityOrigin].length; ++i)
             this._databaseRemoved(securityOrigin, this._databaseNamesBySecurityOrigin[securityOrigin][i]);
         delete this._databaseNamesBySecurityOrigin[securityOrigin];
@@ -266,7 +212,7 @@
             newDatabaseNames[databaseNames[i]] = true;
         var oldDatabaseNames = {};
         for (var i = 0; i < this._databaseNamesBySecurityOrigin[securityOrigin].length; ++i)
-            oldDatabaseNames[databaseNames[i]] = true;
+            oldDatabaseNames[this._databaseNamesBySecurityOrigin[securityOrigin][i]] = true;
 
         this._databaseNamesBySecurityOrigin[securityOrigin] = databaseNames;
 
@@ -278,9 +224,6 @@
             if (!oldDatabaseNames[databaseName])
                 this._databaseAdded(securityOrigin, databaseName);
         }
-
-        if (!this._databaseNamesBySecurityOrigin[securityOrigin].length)
-            this._originRemoved(securityOrigin);
     },
 
     /**
@@ -304,55 +247,34 @@
     },
 
     /**
-     * @param {string} frameId
+     * @param {string} securityOrigin
      */
-    _loadDatabaseNamesForFrame: function(frameId)
+    _loadDatabaseNames: function(securityOrigin)
     {
         /**
          * @param {?Protocol.Error} error
-         * @param {IndexedDBAgent.SecurityOriginWithDatabaseNames} securityOriginWithDatabaseNames
+         * @param {Array.<string>} databaseNames
          */
-        function callback(error, securityOriginWithDatabaseNames)
+        function callback(error, databaseNames)
         {
             if (error) {
                 console.error("IndexedDBAgent error: " + error);
                 return;
             }
 
-            var databaseNames = securityOriginWithDatabaseNames.databaseNames;
-            var oldSecurityOrigin = this._frames[frameId] ? this._frames[frameId].securityOrigin : null;
-            if (!oldSecurityOrigin || oldSecurityOrigin !== securityOriginWithDatabaseNames.securityOrigin) {
-                this._originRemovedFromFrame(frameId);
-                this._originAddedToFrame(frameId, securityOriginWithDatabaseNames.securityOrigin);
-            }
-            this._updateOriginDatabaseNames(securityOriginWithDatabaseNames.securityOrigin, securityOriginWithDatabaseNames.databaseNames);
+            if (!this._databaseNamesBySecurityOrigin[securityOrigin])
+                return;
+            this._updateOriginDatabaseNames(securityOrigin, databaseNames);
         }
 
-        IndexedDBAgent.requestDatabaseNamesForFrame(frameId, callback.bind(this));
+        IndexedDBAgent.requestDatabaseNames(securityOrigin, callback.bind(this));
     },
 
     /**
      * @param {WebInspector.IndexedDBModel.DatabaseId} databaseId
-     * @return {string|null}
      */
-    _assertFrameId: function(databaseId)
-    {
-        var frameIds = this._frameIdsBySecurityOrigin[databaseId.securityOrigin];
-        if (!frameIds || !frameIds.length)
-            return null;
-
-        return frameIds[0];
-    },
-
-    /**
-     * @param {WebInspector.IndexedDBModel.DatabaseId} databaseId
-     */
     _loadDatabase: function(databaseId)
     {
-        var frameId = this._assertFrameId(databaseId);
-        if (!frameId)
-            return;
-
         /**
          * @param {?Protocol.Error} error
          * @param {IndexedDBAgent.DatabaseWithObjectStores} databaseWithObjectStores
@@ -364,9 +286,8 @@
                 return;
             }
 
-            if (!this._frames[frameId])
+            if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin])
                 return;
-
             var databaseModel = new WebInspector.IndexedDBModel.Database(databaseId, databaseWithObjectStores.version, databaseWithObjectStores.intVersion);
             this._databases.put(databaseId, databaseModel); 
             for (var i = 0; i < databaseWithObjectStores.objectStores.length; ++i) {
@@ -385,7 +306,7 @@
             this.dispatchEventToListeners(WebInspector.IndexedDBModel.EventTypes.DatabaseLoaded, databaseModel);
         }
 
-        IndexedDBAgent.requestDatabase(frameId, databaseId.name, callback.bind(this));
+        IndexedDBAgent.requestDatabase(databaseId.securityOrigin, databaseId.name, callback.bind(this));
     },
 
     /**
@@ -427,10 +348,6 @@
      */
     _requestData: function(databaseId, databaseName, objectStoreName, indexName, idbKeyRange, skipCount, pageSize, callback)
     {
-        var frameId = this._assertFrameId(databaseId);
-        if (!frameId)
-            return;
-
         /**
          * @param {?Protocol.Error} error
          * @param {Array.<IndexedDBAgent.DataEntry>} dataEntries
@@ -443,9 +360,8 @@
                 return;
             }
             
-            if (!this._frames[frameId])
+            if (!this._databaseNamesBySecurityOrigin[databaseId.securityOrigin])
                 return;
-
             var entries = [];
             for (var i = 0; i < dataEntries.length; ++i) {
                 var key = WebInspector.RemoteObject.fromPayload(dataEntries[i].key);
@@ -457,7 +373,7 @@
         }
 
         var keyRange = WebInspector.IndexedDBModel.keyRangeFromIDBKeyRange(idbKeyRange);
-        IndexedDBAgent.requestData(frameId, databaseName, objectStoreName, indexName, skipCount, pageSize, keyRange ? keyRange : undefined, innerCallback.bind(this));
+        IndexedDBAgent.requestData(databaseId.securityOrigin, databaseName, objectStoreName, indexName, skipCount, pageSize, keyRange ? keyRange : undefined, innerCallback.bind(this));
     },
 
     __proto__: WebInspector.Object.prototype
@@ -478,19 +394,7 @@
 
 /**
  * @constructor
- * @param {string} frameId
  * @param {string} securityOrigin
- */
-WebInspector.IndexedDBModel.Frame = function(frameId, securityOrigin)
-{
-    this.frameId = frameId;
-    this.securityOrigin = securityOrigin;
-    this.databaseNames = {};
-}
-
-/**
- * @constructor
- * @param {string} securityOrigin
  * @param {string} name
  */
 WebInspector.IndexedDBModel.DatabaseId = function(securityOrigin, name)

Modified: trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js (144051 => 144052)


--- trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js	2013-02-26 13:57:36 UTC (rev 144051)
+++ trunk/Source/WebCore/inspector/front-end/ResourceTreeModel.js	2013-02-26 14:20:26 UTC (rev 144052)
@@ -147,6 +147,14 @@
     },
 
     /**
+     * @return {Array.<string>}
+     */
+    securityOrigins: function()
+    {
+        return Object.keys(this._securityOriginFrameCount);
+    },
+
+    /**
      * @param {WebInspector.ResourceTreeFrame} mainFrame
      */
     _handleMainFrameDetached: function(mainFrame)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to