2010-08-04 Yury Semikhatsky <yurys@chromium.org>
Reviewed by Pavel Feldman.
Web Inspector: serialize database resources to InspectorValues
https://bugs.webkit.org/show_bug.cgi?id=43482
* inspector/Inspector.idl:
* inspector/InspectorBackend.cpp:
(WebCore::InspectorBackend::getDatabaseTableNames):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::populateScriptObjects):
(WebCore::InspectorController::selectDatabase):
(WebCore::InspectorController::didOpenDatabase):
* inspector/InspectorController.h:
* inspector/InspectorDatabaseResource.cpp:
(WebCore::InspectorDatabaseResource::create):
(WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
(WebCore::InspectorDatabaseResource::bind):
* inspector/InspectorDatabaseResource.h:
* inspector/InspectorFrontend.cpp:
* inspector/InspectorFrontend.h:
* storage/Database.cpp:
(WebCore::Database::openDatabase):
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64650 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 0ebed492..161f3de 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,28 @@
+2010-08-04 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: serialize database resources to InspectorValues
+ https://bugs.webkit.org/show_bug.cgi?id=43482
+
+ * inspector/Inspector.idl:
+ * inspector/InspectorBackend.cpp:
+ (WebCore::InspectorBackend::getDatabaseTableNames):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::populateScriptObjects):
+ (WebCore::InspectorController::selectDatabase):
+ (WebCore::InspectorController::didOpenDatabase):
+ * inspector/InspectorController.h:
+ * inspector/InspectorDatabaseResource.cpp:
+ (WebCore::InspectorDatabaseResource::create):
+ (WebCore::InspectorDatabaseResource::InspectorDatabaseResource):
+ (WebCore::InspectorDatabaseResource::bind):
+ * inspector/InspectorDatabaseResource.h:
+ * inspector/InspectorFrontend.cpp:
+ * inspector/InspectorFrontend.h:
+ * storage/Database.cpp:
+ (WebCore::Database::openDatabase):
+
2010-08-03 Abhishek Arya <inferno@chromium.org>
Reviewed by Alexey Proskuryakov.
diff --git a/WebCore/inspector/Inspector.idl b/WebCore/inspector/Inspector.idl
index dea1cd0..70286f0 100644
--- a/WebCore/inspector/Inspector.idl
+++ b/WebCore/inspector/Inspector.idl
@@ -51,6 +51,10 @@
[notify] void resumedScript();
[notify] void addProfileHeader(out Object header);
#endif
+#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
+ [notify] void addDatabase(out Object database);
+ [notify] void selectDatabase(out int databaseId);
+#endif
[handler=Controller] void storeLastActivePanel(in String panelName);
@@ -157,7 +161,7 @@
[handler=Controller] void didEvaluateForTestInFrontend(in long callId, in String jsonResult);
#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
- [handler=Backend] void getDatabaseTableNames(in long callId, in long databaseId);
+ [handler=Backend] void getDatabaseTableNames(in long callId, in long databaseId, out Array tableNames);
#endif
#if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
diff --git a/WebCore/inspector/InspectorBackend.cpp b/WebCore/inspector/InspectorBackend.cpp
index a451329..9a7f43b 100644
--- a/WebCore/inspector/InspectorBackend.cpp
+++ b/WebCore/inspector/InspectorBackend.cpp
@@ -134,14 +134,14 @@
#if ENABLE(DATABASE)
void InspectorBackend::getDatabaseTableNames(long callId, long databaseId)
{
- if (InspectorFrontend* frontend = inspectorFrontend()) {
- ScriptArray result = frontend->newScriptArray();
+ if (RemoteInspectorFrontend* frontend = remoteFrontend()) {
+ RefPtr<InspectorArray> result = InspectorArray::create();
Database* database = m_inspectorController->databaseForId(databaseId);
if (database) {
Vector<String> tableNames = database->tableNames();
unsigned length = tableNames.size();
for (unsigned i = 0; i < length; ++i)
- result.set(i, tableNames[i]);
+ result->pushString(tableNames[i]);
}
frontend->didGetDatabaseTableNames(callId, result);
}
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 0eacf28..da89000 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -671,7 +671,7 @@
#if ENABLE(DATABASE)
DatabaseResourcesMap::iterator databasesEnd = m_databaseResources.end();
for (DatabaseResourcesMap::iterator it = m_databaseResources.begin(); it != databasesEnd; ++it)
- it->second->bind(m_frontend.get());
+ it->second->bind(m_remoteFrontend.get());
#endif
#if ENABLE(DOM_STORAGE)
DOMStorageResourcesMap::iterator domStorageEnd = m_domStorageResources.end();
@@ -1264,12 +1264,12 @@
#if ENABLE(DATABASE)
void InspectorController::selectDatabase(Database* database)
{
- if (!m_frontend)
+ if (!m_remoteFrontend)
return;
for (DatabaseResourcesMap::iterator it = m_databaseResources.begin(); it != m_databaseResources.end(); ++it) {
if (it->second->database() == database) {
- m_frontend->selectDatabase(it->first);
+ m_remoteFrontend->selectDatabase(it->first);
break;
}
}
@@ -1283,7 +1283,7 @@
return it->second->database();
}
-void InspectorController::didOpenDatabase(Database* database, const String& domain, const String& name, const String& version)
+void InspectorController::didOpenDatabase(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
{
if (!enabled())
return;
@@ -1293,8 +1293,8 @@
m_databaseResources.set(resource->id(), resource);
// Resources are only bound while visible.
- if (m_frontend)
- resource->bind(m_frontend.get());
+ if (m_remoteFrontend)
+ resource->bind(m_remoteFrontend.get());
}
#endif
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index eae5d16c..6265ad2 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -213,7 +213,7 @@
#endif
#if ENABLE(DATABASE)
- void didOpenDatabase(Database*, const String& domain, const String& name, const String& version);
+ void didOpenDatabase(PassRefPtr<Database>, const String& domain, const String& name, const String& version);
#endif
#if ENABLE(DOM_STORAGE)
void didUseDOMStorage(StorageArea* storageArea, bool isLocalStorage, Frame* frame);
diff --git a/WebCore/inspector/InspectorDatabaseResource.cpp b/WebCore/inspector/InspectorDatabaseResource.cpp
index cec0e28..036148f 100644
--- a/WebCore/inspector/InspectorDatabaseResource.cpp
+++ b/WebCore/inspector/InspectorDatabaseResource.cpp
@@ -33,18 +33,21 @@
#if ENABLE(DATABASE) && ENABLE(INSPECTOR)
#include "Database.h"
-#include "Document.h"
-#include "Frame.h"
-#include "InspectorFrontend.h"
-#include "ScriptObject.h"
+#include "InspectorValues.h"
+#include "RemoteInspectorFrontend.h"
namespace WebCore {
-int InspectorDatabaseResource::s_nextUnusedId = 1;
+static int nextUnusedId = 1;
-InspectorDatabaseResource::InspectorDatabaseResource(Database* database, const String& domain, const String& name, const String& version)
+PassRefPtr<InspectorDatabaseResource> InspectorDatabaseResource::create(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
+{
+ return adoptRef(new InspectorDatabaseResource(database, domain, name, version));
+}
+
+InspectorDatabaseResource::InspectorDatabaseResource(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
: m_database(database)
- , m_id(s_nextUnusedId++)
+ , m_id(nextUnusedId++)
, m_domain(domain)
, m_name(name)
, m_version(version)
@@ -52,18 +55,19 @@
{
}
-void InspectorDatabaseResource::bind(InspectorFrontend* frontend)
+void InspectorDatabaseResource::bind(RemoteInspectorFrontend* frontend)
{
if (m_scriptObjectCreated)
return;
- ScriptObject jsonObject = frontend->newScriptObject();
- jsonObject.set("id", m_id);
- jsonObject.set("domain", m_domain);
- jsonObject.set("name", m_name);
- jsonObject.set("version", m_version);
- if (frontend->addDatabase(jsonObject))
- m_scriptObjectCreated = true;
+ RefPtr<InspectorObject> jsonObject = InspectorObject::create();
+ jsonObject->setNumber("id", m_id);
+ jsonObject->setString("domain", m_domain);
+ jsonObject->setString("name", m_name);
+ jsonObject->setString("version", m_version);
+
+ frontend->addDatabase(jsonObject);
+ m_scriptObjectCreated = true;
}
void InspectorDatabaseResource::unbind()
diff --git a/WebCore/inspector/InspectorDatabaseResource.h b/WebCore/inspector/InspectorDatabaseResource.h
index f82d898..8e0e1b3 100644
--- a/WebCore/inspector/InspectorDatabaseResource.h
+++ b/WebCore/inspector/InspectorDatabaseResource.h
@@ -32,41 +32,33 @@
#define InspectorDatabaseResource_h
#if ENABLE(DATABASE)
-
-#include "Database.h"
-#include "ScriptObject.h"
-#include "ScriptState.h"
-
+#include "PlatformString.h"
#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
namespace WebCore {
- class InspectorFrontend;
-
- class InspectorDatabaseResource : public RefCounted<InspectorDatabaseResource> {
- public:
- static PassRefPtr<InspectorDatabaseResource> create(Database* database, const String& domain, const String& name, const String& version)
- {
- return adoptRef(new InspectorDatabaseResource(database, domain, name, version));
- }
+class Database;
+class RemoteInspectorFrontend;
- void bind(InspectorFrontend* frontend);
- void unbind();
- Database* database() { return m_database.get(); }
- long id() const { return m_id; }
- private:
- InspectorDatabaseResource(Database*, const String& domain, const String& name, const String& version);
-
- RefPtr<Database> m_database;
- int m_id;
- String m_domain;
- String m_name;
- String m_version;
- bool m_scriptObjectCreated;
+class InspectorDatabaseResource : public RefCounted<InspectorDatabaseResource> {
+public:
+ static PassRefPtr<InspectorDatabaseResource> create(PassRefPtr<Database> database, const String& domain, const String& name, const String& version);
- static int s_nextUnusedId;
- };
+ void bind(RemoteInspectorFrontend* frontend);
+ void unbind();
+ Database* database() { return m_database.get(); }
+ long id() const { return m_id; }
+private:
+ InspectorDatabaseResource(PassRefPtr<Database>, const String& domain, const String& name, const String& version);
+
+ RefPtr<Database> m_database;
+ int m_id;
+ String m_domain;
+ String m_name;
+ String m_version;
+ bool m_scriptObjectCreated;
+};
} // namespace WebCore
diff --git a/WebCore/inspector/InspectorFrontend.cpp b/WebCore/inspector/InspectorFrontend.cpp
index 68ebe7d..ccc26c3 100644
--- a/WebCore/inspector/InspectorFrontend.cpp
+++ b/WebCore/inspector/InspectorFrontend.cpp
@@ -382,35 +382,6 @@
function.call();
}
-#if ENABLE(DATABASE)
-bool InspectorFrontend::addDatabase(const ScriptObject& dbObject)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("addDatabase");
- function.appendArgument(dbObject);
- bool hadException = false;
- function.call(hadException);
- return !hadException;
-}
-
-void InspectorFrontend::selectDatabase(int databaseId)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("selectDatabase");
- function.appendArgument(databaseId);
- function.call();
-}
-
-void InspectorFrontend::didGetDatabaseTableNames(long callId, const ScriptArray& tableNames)
-{
- ScriptFunctionCall function(m_webInspector, "dispatch");
- function.appendArgument("didGetDatabaseTableNames");
- function.appendArgument(callId);
- function.appendArgument(tableNames);
- function.call();
-}
-#endif
-
#if ENABLE(DOM_STORAGE)
bool InspectorFrontend::addDOMStorage(const ScriptObject& domStorageObj)
{
diff --git a/WebCore/inspector/InspectorFrontend.h b/WebCore/inspector/InspectorFrontend.h
index 2ab5a1e..8d984a3 100644
--- a/WebCore/inspector/InspectorFrontend.h
+++ b/WebCore/inspector/InspectorFrontend.h
@@ -106,12 +106,6 @@
void didGetProfile(long callId, const ScriptValue& profile);
#endif
-#if ENABLE(DATABASE)
- bool addDatabase(const ScriptObject& dbObj);
- void selectDatabase(int databaseId);
- void didGetDatabaseTableNames(long callId, const ScriptArray& tableNames);
-#endif
-
#if ENABLE(DOM_STORAGE)
bool addDOMStorage(const ScriptObject& domStorageObj);
void selectDOMStorage(long storageId);
diff --git a/WebCore/storage/Database.cpp b/WebCore/storage/Database.cpp
index ff59dee..2d60acb 100644
--- a/WebCore/storage/Database.cpp
+++ b/WebCore/storage/Database.cpp
@@ -109,7 +109,7 @@
if (context->isDocument()) {
Document* document = static_cast<Document*>(context);
if (Page* page = document->page())
- page->inspectorController()->didOpenDatabase(database.get(), context->securityOrigin()->host(), name, expectedVersion);
+ page->inspectorController()->didOpenDatabase(database, context->securityOrigin()->host(), name, expectedVersion);
}
#endif