2009-05-19  Pavel Feldman  <pfeldman@chromium.org>

        Reviewed by Timothy Hatcher.

        Split InspectorController into InspectorController and InspectorFrontend. Latter encapsulates all frontend interaction and is the only entity allowed to make ScriptFunctionCalls. The further plan is to serialize these script function calls.

        https://bugs.webkit.org/show_bug.cgi?id=25419

        * GNUmakefile.am:
        * WebCore.pro:
        * WebCore.vcproj/WebCore.vcproj:
        * WebCore.xcodeproj/project.pbxproj:
        * WebCoreSources.bkl:
        * inspector/ConsoleMessage.cpp:
        (WebCore::ConsoleMessage::addToConsole):
        * inspector/ConsoleMessage.h:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::~InspectorController):
        (WebCore::InspectorController::inspect):
        (WebCore::InspectorController::focusNode):
        (WebCore::InspectorController::setWindowVisible):
        (WebCore::InspectorController::addConsoleMessage):
        (WebCore::InspectorController::setAttachedWindow):
        (WebCore::InspectorController::inspectedWindowScriptObjectCleared):
        (WebCore::InspectorController::scriptObjectReady):
        (WebCore::InspectorController::showPanel):
        (WebCore::InspectorController::close):
        (WebCore::InspectorController::populateScriptObjects):
        (WebCore::InspectorController::resetScriptObjects):
        (WebCore::InspectorController::pruneResources):
        (WebCore::InspectorController::didCommitLoad):
        (WebCore::InspectorController::didLoadResourceFromMemoryCache):
        (WebCore::InspectorController::identifierForInitialRequest):
        (WebCore::InspectorController::willSendRequest):
        (WebCore::InspectorController::didReceiveResponse):
        (WebCore::InspectorController::didReceiveContentLength):
        (WebCore::InspectorController::didFinishLoading):
        (WebCore::InspectorController::didFailLoading):
        (WebCore::InspectorController::resourceRetrievedByXMLHttpRequest):
        (WebCore::InspectorController::scriptImported):
        (WebCore::InspectorController::didOpenDatabase):
        (WebCore::InspectorController::didUseDOMStorage):
        (WebCore::InspectorController::addScriptProfile):
        (WebCore::InspectorController::toggleRecordButton):
        (WebCore::InspectorController::enableProfiler):
        (WebCore::InspectorController::disableProfiler):
        (WebCore::InspectorController::enableDebugger):
        (WebCore::InspectorController::disableDebugger):
        (WebCore::InspectorController::didParseSource):
        (WebCore::InspectorController::failedToParseSource):
        (WebCore::InspectorController::didPause):
        (WebCore::InspectorController::didContinue):
        * inspector/InspectorController.h:
        * inspector/InspectorDOMStorageResource.cpp:
        (WebCore::InspectorDOMStorageResource::bind):
        * inspector/InspectorDOMStorageResource.h:
        * inspector/InspectorDatabaseResource.cpp:
        (WebCore::InspectorDatabaseResource::bind):
        * inspector/InspectorDatabaseResource.h:
        * inspector/InspectorFrontend.cpp: Added.
        (WebCore::callSimpleFunction):
        (WebCore::InspectorFrontend::InspectorFrontend):
        (WebCore::InspectorFrontend::~InspectorFrontend):
        (WebCore::InspectorFrontend::newJSONObject):
        (WebCore::InspectorFrontend::addMessageToConsole):
        (WebCore::InspectorFrontend::addResource):
        (WebCore::InspectorFrontend::updateResource):
        (WebCore::InspectorFrontend::removeResource):
        (WebCore::InspectorFrontend::updateFocusedNode):
        (WebCore::InspectorFrontend::setAttachedWindow):
        (WebCore::InspectorFrontend::inspectedWindowScriptObjectCleared):
        (WebCore::InspectorFrontend::showPanel):
        (WebCore::InspectorFrontend::populateInterface):
        (WebCore::InspectorFrontend::reset):
        (WebCore::InspectorFrontend::debuggerWasEnabled):
        (WebCore::InspectorFrontend::debuggerWasDisabled):
        (WebCore::InspectorFrontend::profilerWasEnabled):
        (WebCore::InspectorFrontend::profilerWasDisabled):
        (WebCore::InspectorFrontend::parsedScriptSource):
        (WebCore::InspectorFrontend::failedToParseScriptSource):
        (WebCore::InspectorFrontend::addProfile):
        (WebCore::InspectorFrontend::setRecordingProfile):
        (WebCore::InspectorFrontend::pausedScript):
        (WebCore::InspectorFrontend::resumedScript):
        (WebCore::InspectorFrontend::addDatabase):
        (WebCore::InspectorFrontend::addDOMStorage):
        * inspector/InspectorFrontend.h: Added.
        * inspector/InspectorResource.cpp:
        (WebCore::InspectorResource::createScriptObject):
        (WebCore::InspectorResource::updateScriptObject):
        (WebCore::InspectorResource::releaseScriptObject):
        * inspector/InspectorResource.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@43864 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/inspector/InspectorDatabaseResource.cpp b/WebCore/inspector/InspectorDatabaseResource.cpp
index 2628089..b61344c 100644
--- a/WebCore/inspector/InspectorDatabaseResource.cpp
+++ b/WebCore/inspector/InspectorDatabaseResource.cpp
@@ -35,10 +35,10 @@
 #include "Database.h"
 #include "Document.h"
 #include "Frame.h"
+#include "InspectorFrontend.h"
 #include "JSONObject.h"
-#include "ScriptFunctionCall.h"
 #include "ScriptObjectQuarantine.h"
-#include "ScriptValue.h"
+
 
 namespace WebCore {
 
@@ -51,17 +51,12 @@
 {
 }
 
-void InspectorDatabaseResource::bind(ScriptState* scriptState, const ScriptObject& webInspector)
+void InspectorDatabaseResource::bind(InspectorFrontend* frontend)
 {
     if (m_scriptObjectCreated)
         return;
 
-    ASSERT(scriptState);
-    ASSERT(!webInspector.hasNoValue());
-    if (!scriptState || webInspector.hasNoValue())
-        return;
-
-    JSONObject jsonObject = JSONObject::createNew(scriptState);
+    JSONObject jsonObject = frontend->newJSONObject();
     ScriptObject database;
     if (!getQuarantinedScriptObject(m_database.get(), database))
         return;
@@ -69,11 +64,8 @@
     jsonObject.set("domain", m_domain);
     jsonObject.set("name", m_name);
     jsonObject.set("version", m_version);
-    
-    ScriptFunctionCall addDatabase(scriptState, webInspector, "addDatabase");
-    addDatabase.appendArgument(jsonObject.scriptObject());
-    addDatabase.call();
-    m_scriptObjectCreated = true;
+    if (frontend->addDatabase(jsonObject))
+        m_scriptObjectCreated = true;
 }
 
 void InspectorDatabaseResource::unbind()