Reviewed by Pavel Feldman.
Web Inspector:Duplicated display of storage db when running Web SQL from an iframe.
https://bugs.webkit.org/show_bug.cgi?id=57830
There was created a new InspectorDatabaseResource entry for every didOpenDatabase event.
Moreover there is new WebCore::Database for each didOpenDatabase event.
I decided to change the old instance of the Database to a new one if they both use the same file.
* inspector/InspectorDatabaseAgent.cpp:
(WebCore::InspectorDatabaseAgent::didOpenDatabase):
(WebCore::InspectorDatabaseAgent::findByFileName):
* inspector/InspectorDatabaseAgent.h:
* inspector/InspectorDatabaseResource.h:
(WebCore::InspectorDatabaseResource::setDatabase):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@83841
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2011-04-14 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector:Duplicated display of storage db when running Web SQL from an iframe.
+ https://bugs.webkit.org/show_bug.cgi?id=57830
+
+ There was created a new InspectorDatabaseResource entry for every didOpenDatabase event.
+ Moreover there is new WebCore::Database for each didOpenDatabase event.
+ I decided to change the old instance of the Database to a new one if they both use the same file.
+
+ * inspector/InspectorDatabaseAgent.cpp:
+ (WebCore::InspectorDatabaseAgent::didOpenDatabase):
+ (WebCore::InspectorDatabaseAgent::findByFileName):
+ * inspector/InspectorDatabaseAgent.h:
+ * inspector/InspectorDatabaseResource.h:
+ (WebCore::InspectorDatabaseResource::setDatabase):
+
2011-04-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
Reviewed by Dirk Schulze.
void InspectorDatabaseAgent::didOpenDatabase(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
{
+ if (InspectorDatabaseResource* resource = findByFileName(database->fileName())) {
+ resource->setDatabase(database);
+ return;
+ }
+
RefPtr<InspectorDatabaseResource> resource = InspectorDatabaseResource::create(database, domain, name, version);
m_resources.set(resource->id(), resource);
// Resources are only bound while visible.
return 0;
}
+InspectorDatabaseResource* InspectorDatabaseAgent::findByFileName(const String& fileName)
+{
+ for (DatabaseResourcesMap::iterator it = m_resources.begin(); it != m_resources.end(); ++it) {
+ if (it->second->database()->fileName() == fileName)
+ return it->second.get();
+ }
+ return 0;
+}
+
Database* InspectorDatabaseAgent::databaseForId(int databaseId)
{
DatabaseResourcesMap::iterator it = m_resources.find(databaseId);
explicit InspectorDatabaseAgent(InstrumentingAgents*);
Database* databaseForId(int databaseId);
+ InspectorDatabaseResource* findByFileName(const String& fileName);
InstrumentingAgents* m_instrumentingAgents;
typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
void bind(InspectorFrontend::Database*);
Database* database() { return m_database.get(); }
+ void setDatabase(PassRefPtr<Database> database) { m_database = database; }
int id() const { return m_id; }
private: