[SCM] WebKit Debian packaging branch, debian/experimental, updated. debian/1.3.8-1-1049-g2e11a8e

pfeldman at chromium.org pfeldman at chromium.org
Fri Jan 21 14:46:17 UTC 2011


The following commit has been merged in the debian/experimental branch:
commit 1c50cf22b1bb8590eda17248390f0028c48435c6
Author: pfeldman at chromium.org <pfeldman at chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Dec 29 21:30:47 2010 +0000

    2010-12-29  Pavel Feldman  <pfeldman at chromium.org>
    
            Reviewed by Yury Semikhatsky.
    
            Web Inspector: extract Database & DOM Storage
            agents; remove InspectorBackend.
            https://bugs.webkit.org/show_bug.cgi?id=51707
    
            This change brushes up storage agents + removes redundant
            InspectorBackend class.
    
            * CMakeLists.txt:
            * GNUmakefile.am:
            * WebCore.gypi:
            * WebCore.pro:
            * WebCore.vcproj/WebCore.vcproj:
            * WebCore.xcodeproj/project.pbxproj:
            * inspector/CodeGeneratorInspector.pm:
            * inspector/InjectedScriptHost.cpp:
            (WebCore::InjectedScriptHost::databaseForId):
            (WebCore::InjectedScriptHost::selectDatabase):
            (WebCore::InjectedScriptHost::selectDOMStorage):
            (WebCore::InjectedScriptHost::inspectorDOMAgent):
            * inspector/Inspector.idl:
            * inspector/InspectorBackend.cpp: Removed.
            * inspector/InspectorBackend.h: Removed.
            * inspector/InspectorController.cpp:
            (WebCore::InspectorController::InspectorController):
            (WebCore::InspectorController::~InspectorController):
            (WebCore::InspectorController::connectFrontend):
            (WebCore::InspectorController::releaseFrontendLifetimeAgents):
            (WebCore::InspectorController::didUseDOMStorage):
            (WebCore::InspectorController::setInjectedScriptSource):
            (WebCore::InspectorController::dispatchOnInjectedScript):
            (WebCore::InspectorController::releaseWrapperObjectGroup):
            * inspector/InspectorController.h:
            * inspector/InspectorDOMStorageAgent.cpp: Added.
            (WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent):
            (WebCore::InspectorDOMStorageAgent::getDOMStorageEntries):
            (WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
            (WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
            (WebCore::InspectorDOMStorageAgent::selectDOMStorage):
            (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
            (WebCore::InspectorDOMStorageAgent::getDOMStorageResourceForId):
            * inspector/InspectorDOMStorageAgent.h: Copied from WebCore/inspector/InspectorStorageAgent.h.
            (WebCore::InspectorDOMStorageAgent::create):
            (WebCore::InspectorDOMStorageAgent::frontend):
            * inspector/InspectorDatabaseAgent.cpp: Renamed from WebCore/inspector/InspectorStorageAgent.cpp.
            (WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent):
            (WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
            (WebCore::InspectorDatabaseAgent::executeSQL):
            (WebCore::InspectorDatabaseAgent::databaseForId):
            (WebCore::InspectorDatabaseAgent::selectDatabase):
            (WebCore::InspectorDatabaseAgent::clearFrontend):
            (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
            * inspector/InspectorDatabaseAgent.h: Renamed from WebCore/inspector/InspectorStorageAgent.h.
            (WebCore::InspectorDatabaseAgent::create):
            (WebCore::InspectorDatabaseAgent::frontend):
            * inspector/InspectorFrontendClientLocal.cpp:
            * inspector/InspectorFrontendClientLocal.h:
            * inspector/front-end/ScriptsPanel.js:
            (WebInspector.ScriptsPanel.prototype.show):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@74755 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/inspector/report-protocol-errors-expected.txt b/LayoutTests/inspector/report-protocol-errors-expected.txt
index a5d8dfc..8856ae7 100644
--- a/LayoutTests/inspector/report-protocol-errors-expected.txt
+++ b/LayoutTests/inspector/report-protocol-errors-expected.txt
@@ -44,7 +44,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 2
-    domain : "Resources"
+    domain : "Network"
     success : false
     errors : {
         0 : "Protocol Error: 'arguments' property with type 'object' was not found."
@@ -52,7 +52,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 3
-    domain : "Resources"
+    domain : "Network"
     success : false
     errors : {
         0 : "Protocol Error: 'arguments' property with type 'object' was not found."
@@ -60,7 +60,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 4
-    domain : "Resources"
+    domain : "Network"
     success : false
     errors : {
         0 : "Protocol Error: Argument 'frameId' with type 'Number' was not found."
@@ -70,7 +70,7 @@ Tests that InspectorBackendDispatcher is catching incorrect messages.
 }
 {
     seq : 5
-    domain : "Resources"
+    domain : "Network"
     success : false
     errors : {
         0 : "Protocol Error: Argument 'frameId' with type 'Number' was not found."
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index 02d87b7..1876b36 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -1153,12 +1153,13 @@ SET(WebCore_SOURCES
     inspector/InjectedScript.cpp
     inspector/InjectedScriptHost.cpp
     inspector/InspectorApplicationCacheAgent.cpp
-    inspector/InspectorBackend.cpp
     inspector/InspectorCSSAgent.cpp
     inspector/InspectorClient.cpp
     inspector/InspectorController.cpp
     inspector/InspectorDOMAgent.cpp
+    inspector/InspectorDOMStorageAgent.cpp
     inspector/InspectorDOMStorageResource.cpp
+    inspector/InspectorDatabaseAgent.cpp
     inspector/InspectorDatabaseResource.cpp
     inspector/InspectorDebuggerAgent.cpp
     inspector/InspectorFileSystemAgent.cpp
@@ -1170,7 +1171,6 @@ SET(WebCore_SOURCES
     inspector/InspectorStyleSheet.cpp
     inspector/InspectorValues.cpp
     inspector/InspectorState.cpp
-    inspector/InspectorStorageAgent.cpp
     inspector/InspectorTimelineAgent.cpp
     inspector/ScriptArguments.cpp
     inspector/ScriptBreakpoint.cpp
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 61a7927..86f9c0c 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,66 @@
+2010-12-29  Pavel Feldman  <pfeldman at chromium.org>
+
+        Reviewed by Yury Semikhatsky.
+
+        Web Inspector: extract Database & DOM Storage
+        agents; remove InspectorBackend.
+        https://bugs.webkit.org/show_bug.cgi?id=51707
+
+        This change brushes up storage agents + removes redundant
+        InspectorBackend class.
+
+        * CMakeLists.txt:
+        * GNUmakefile.am:
+        * WebCore.gypi:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.xcodeproj/project.pbxproj:
+        * inspector/CodeGeneratorInspector.pm:
+        * inspector/InjectedScriptHost.cpp:
+        (WebCore::InjectedScriptHost::databaseForId):
+        (WebCore::InjectedScriptHost::selectDatabase):
+        (WebCore::InjectedScriptHost::selectDOMStorage):
+        (WebCore::InjectedScriptHost::inspectorDOMAgent):
+        * inspector/Inspector.idl:
+        * inspector/InspectorBackend.cpp: Removed.
+        * inspector/InspectorBackend.h: Removed.
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::InspectorController):
+        (WebCore::InspectorController::~InspectorController):
+        (WebCore::InspectorController::connectFrontend):
+        (WebCore::InspectorController::releaseFrontendLifetimeAgents):
+        (WebCore::InspectorController::didUseDOMStorage):
+        (WebCore::InspectorController::setInjectedScriptSource):
+        (WebCore::InspectorController::dispatchOnInjectedScript):
+        (WebCore::InspectorController::releaseWrapperObjectGroup):
+        * inspector/InspectorController.h:
+        * inspector/InspectorDOMStorageAgent.cpp: Added.
+        (WebCore::InspectorDOMStorageAgent::~InspectorDOMStorageAgent):
+        (WebCore::InspectorDOMStorageAgent::getDOMStorageEntries):
+        (WebCore::InspectorDOMStorageAgent::setDOMStorageItem):
+        (WebCore::InspectorDOMStorageAgent::removeDOMStorageItem):
+        (WebCore::InspectorDOMStorageAgent::selectDOMStorage):
+        (WebCore::InspectorDOMStorageAgent::InspectorDOMStorageAgent):
+        (WebCore::InspectorDOMStorageAgent::getDOMStorageResourceForId):
+        * inspector/InspectorDOMStorageAgent.h: Copied from WebCore/inspector/InspectorStorageAgent.h.
+        (WebCore::InspectorDOMStorageAgent::create):
+        (WebCore::InspectorDOMStorageAgent::frontend):
+        * inspector/InspectorDatabaseAgent.cpp: Renamed from WebCore/inspector/InspectorStorageAgent.cpp.
+        (WebCore::InspectorDatabaseAgent::~InspectorDatabaseAgent):
+        (WebCore::InspectorDatabaseAgent::getDatabaseTableNames):
+        (WebCore::InspectorDatabaseAgent::executeSQL):
+        (WebCore::InspectorDatabaseAgent::databaseForId):
+        (WebCore::InspectorDatabaseAgent::selectDatabase):
+        (WebCore::InspectorDatabaseAgent::clearFrontend):
+        (WebCore::InspectorDatabaseAgent::InspectorDatabaseAgent):
+        * inspector/InspectorDatabaseAgent.h: Renamed from WebCore/inspector/InspectorStorageAgent.h.
+        (WebCore::InspectorDatabaseAgent::create):
+        (WebCore::InspectorDatabaseAgent::frontend):
+        * inspector/InspectorFrontendClientLocal.cpp:
+        * inspector/InspectorFrontendClientLocal.h:
+        * inspector/front-end/ScriptsPanel.js:
+        (WebInspector.ScriptsPanel.prototype.show):
+
 2010-12-29  Tony Gentilcore  <tonyg at chromium.org>
 
         Reviewed by Eric Seidel.
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index f108f86..b0dbe65 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -1945,20 +1945,22 @@ webcore_sources += \
 	WebCore/inspector/InjectedScriptHost.h \
 	WebCore/inspector/InspectorApplicationCacheAgent.cpp \
 	WebCore/inspector/InspectorApplicationCacheAgent.h \
-	WebCore/inspector/InspectorBackend.cpp \
-	WebCore/inspector/InspectorBackend.h \
 	WebCore/inspector/InspectorClient.cpp \
 	WebCore/inspector/InspectorClient.h \
 	WebCore/inspector/InspectorController.cpp \
 	WebCore/inspector/InspectorController.h \
 	WebCore/inspector/InspectorCSSAgent.cpp \
 	WebCore/inspector/InspectorCSSAgent.h \
+	WebCore/inspector/InspectorDatabaseAgent.cpp \
+	WebCore/inspector/InspectorDatabaseAgent.h \
 	WebCore/inspector/InspectorDatabaseResource.cpp \
 	WebCore/inspector/InspectorDatabaseResource.h \
 	WebCore/inspector/InspectorDebuggerAgent.cpp \
 	WebCore/inspector/InspectorDebuggerAgent.h \
 	WebCore/inspector/InspectorDOMAgent.cpp \
 	WebCore/inspector/InspectorDOMAgent.h \
+	WebCore/inspector/InspectorDOMStorageAgent.cpp \
+	WebCore/inspector/InspectorDOMStorageAgent.h \
 	WebCore/inspector/InspectorDOMStorageResource.cpp \
 	WebCore/inspector/InspectorDOMStorageResource.h \
 	WebCore/inspector/InspectorFileSystemAgent.cpp \
@@ -1976,8 +1978,6 @@ webcore_sources += \
 	WebCore/inspector/InspectorResourceAgent.h \
 	WebCore/inspector/InspectorState.cpp \
 	WebCore/inspector/InspectorState.h \
-	WebCore/inspector/InspectorStorageAgent.cpp \
-	WebCore/inspector/InspectorStorageAgent.h \
 	WebCore/inspector/InspectorStyleSheet.cpp \
 	WebCore/inspector/InspectorStyleSheet.h \
 	WebCore/inspector/InspectorTimelineAgent.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index f62d883..ca94101 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -1999,20 +1999,22 @@
             'inspector/InjectedScriptHost.h',
             'inspector/InspectorApplicationCacheAgent.cpp',
             'inspector/InspectorApplicationCacheAgent.h',
-            'inspector/InspectorBackend.cpp',
-            'inspector/InspectorBackend.h',
             'inspector/InspectorClient.cpp',
             'inspector/InspectorClient.h',
             'inspector/InspectorController.cpp',
             'inspector/InspectorController.h',
             'inspector/InspectorCSSAgent.cpp',
             'inspector/InspectorCSSAgent.h',
+            'inspector/InspectorDatabaseAgent.cpp',
+            'inspector/InspectorDatabaseAgent.h',
             'inspector/InspectorDatabaseResource.cpp',
             'inspector/InspectorDatabaseResource.h',
             'inspector/InspectorDebuggerAgent.cpp',
             'inspector/InspectorDebuggerAgent.h',
             'inspector/InspectorDOMAgent.cpp',
             'inspector/InspectorDOMAgent.h',
+            'inspector/InspectorDOMStorageAgent.cpp',
+            'inspector/InspectorDOMStorageAgent.h',
             'inspector/InspectorDOMStorageResource.cpp',
             'inspector/InspectorDOMStorageResource.h',
             'inspector/InspectorFileSystemAgent.cpp',
@@ -2028,8 +2030,6 @@
             'inspector/InspectorResourceAgent.h',
             'inspector/InspectorState.cpp',
             'inspector/InspectorState.h',
-            'inspector/InspectorStorageAgent.cpp',
-            'inspector/InspectorStorageAgent.h',
             'inspector/InspectorStyleSheet.cpp',
             'inspector/InspectorStyleSheet.h',
             'inspector/InspectorTimelineAgent.cpp',
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index aac760a..0c5c01c 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -1039,13 +1039,14 @@ SOURCES += \
     inspector/InjectedScript.cpp \
     inspector/InjectedScriptHost.cpp \
     inspector/InspectorApplicationCacheAgent.cpp \
-    inspector/InspectorBackend.cpp \
     inspector/InspectorCSSAgent.cpp \
     inspector/InspectorClient.cpp \
     inspector/InspectorController.cpp \
+    inspector/InspectorDatabaseAgent.cpp \
     inspector/InspectorDatabaseResource.cpp \
     inspector/InspectorDebuggerAgent.cpp \
     inspector/InspectorDOMAgent.cpp \
+    inspector/InspectorDOMStorageAgent.cpp \
     inspector/InspectorDOMStorageResource.cpp \
     inspector/InspectorFileSystemAgent.cpp \
     inspector/InspectorFrontendClientLocal.cpp \
@@ -1054,7 +1055,6 @@ SOURCES += \
     inspector/InspectorProfilerAgent.cpp \
     inspector/InspectorResourceAgent.cpp \
     inspector/InspectorState.cpp \
-    inspector/InspectorStorageAgent.cpp \
     inspector/InspectorStyleSheet.cpp \
     inspector/InspectorTimelineAgent.cpp \
     inspector/InspectorValues.cpp \
@@ -1930,11 +1930,12 @@ HEADERS += \
     inspector/InjectedScript.h \
     inspector/InjectedScriptHost.h \
     inspector/InspectorApplicationCacheAgent.h \
-    inspector/InspectorBackend.h \
     inspector/InspectorController.h \
     inspector/InspectorCSSAgent.h \
+    inspector/InspectorDatabaseAgent.h \
     inspector/InspectorDatabaseResource.h \
     inspector/InspectorDebuggerAgent.h \
+    inspector/InspectorDOMStorageAgent.h \
     inspector/InspectorDOMStorageResource.h \
     inspector/InspectorFileSystemAgent.h \
     inspector/InspectorFrontendClient.h \
@@ -1944,7 +1945,6 @@ HEADERS += \
     inspector/InspectorProfilerAgent.h \
     inspector/InspectorResourceAgent.h \
     inspector/InspectorState.h \
-    inspector/InspectorStorageAgent.h \
     inspector/InspectorStyleSheet.h \
     inspector/InspectorTimelineAgent.h \
     inspector/ScriptGCEventListener.h \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index ede14b2..c5d26db 100755
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -65094,14 +65094,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\inspector\InspectorBackend.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\inspector\InspectorBackend.h"
-				>
-			</File>
-			<File
 				RelativePath="..\inspector\InspectorClient.cpp"
 				>
 			</File>
@@ -65126,6 +65118,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\inspector\InspectorDatabaseAgent.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\inspector\InspectorDatabaseAgent.h"
+				>
+			</File>
+			<File
 				RelativePath="..\inspector\InspectorDatabaseResource.cpp"
 				>
 			</File>
@@ -65150,6 +65150,14 @@
 				>
 			</File>
 			<File
+				RelativePath="..\inspector\InspectorDOMStorageAgent.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\inspector\InspectorDOMStorageAgent.h"
+				>
+			</File>
+			<File
 				RelativePath="..\inspector\InspectorDOMStorageResource.cpp"
 				>
 			</File>
@@ -65218,14 +65226,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\inspector\InspectorStorageAgent.cpp"
-				>
-			</File>
-			<File
-				RelativePath="..\inspector\InspectorStorageAgent.h"
-				>
-			</File>
-			<File
 				RelativePath="..\inspector\InspectorStyleSheet.cpp"
 				>
 			</File>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 11d6f67..82415f7 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -1604,11 +1604,11 @@
 		7A24587C1021EAF4000A00AA /* InspectorDOMAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7A674BDB0F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A674BD90F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp */; };
 		7A674BDC0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A674BDA0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h */; };
-		7A74ECBA101839A600BF939E /* InspectorBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECB8101839A500BF939E /* InspectorBackend.cpp */; };
-		7A74ECBB101839A600BF939E /* InspectorBackend.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A74ECB9101839A600BF939E /* InspectorBackend.h */; };
+		7A74ECBA101839A600BF939E /* InspectorDOMStorageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */; };
+		7A74ECBB101839A600BF939E /* InspectorDOMStorageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */; };
 		7A74ECBD101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */; };
-		7AB0B1C01211A62200A76940 /* InspectorStorageAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AB0B1BE1211A62200A76940 /* InspectorStorageAgent.cpp */; };
-		7AB0B1C11211A62200A76940 /* InspectorStorageAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB0B1BF1211A62200A76940 /* InspectorStorageAgent.h */; };
+		7AB0B1C01211A62200A76940 /* InspectorDatabaseAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */; };
+		7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */; };
 		7ADE722610CBBB9B006B3B3A /* ContextMenuProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */; };
 		7AFD4A8B1131C2760035B883 /* ScriptBreakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		7AFD4FF4113277B60035B883 /* ScriptDebugListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -7989,11 +7989,11 @@
 		7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMAgent.h; sourceTree = "<group>"; };
 		7A674BD90F9EBF4E006CF099 /* PageGroupLoadDeferrer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageGroupLoadDeferrer.cpp; sourceTree = "<group>"; };
 		7A674BDA0F9EBF4E006CF099 /* PageGroupLoadDeferrer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PageGroupLoadDeferrer.h; sourceTree = "<group>"; };
-		7A74ECB8101839A500BF939E /* InspectorBackend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorBackend.cpp; sourceTree = "<group>"; };
-		7A74ECB9101839A600BF939E /* InspectorBackend.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorBackend.h; sourceTree = "<group>"; };
+		7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDOMStorageAgent.cpp; sourceTree = "<group>"; };
+		7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDOMStorageAgent.h; sourceTree = "<group>"; };
 		7A74ECBC101839DA00BF939E /* JSInspectorFrontendHostCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInspectorFrontendHostCustom.cpp; sourceTree = "<group>"; };
-		7AB0B1BE1211A62200A76940 /* InspectorStorageAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorStorageAgent.cpp; sourceTree = "<group>"; };
-		7AB0B1BF1211A62200A76940 /* InspectorStorageAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorStorageAgent.h; sourceTree = "<group>"; };
+		7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorDatabaseAgent.cpp; sourceTree = "<group>"; };
+		7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorDatabaseAgent.h; sourceTree = "<group>"; };
 		7ADE722510CBBB9B006B3B3A /* ContextMenuProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContextMenuProvider.h; sourceTree = "<group>"; };
 		7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptBreakpoint.h; sourceTree = "<group>"; };
 		7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugListener.h; sourceTree = "<group>"; };
@@ -12800,20 +12800,22 @@
 				7A0E76F810BF08ED00A0276E /* InjectedScriptHost.idl */,
 				B885E8D211E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp */,
 				B885E8D311E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h */,
-				7A74ECB8101839A500BF939E /* InspectorBackend.cpp */,
-				7A74ECB9101839A600BF939E /* InspectorBackend.h */,
 				7A1F2B51126C61B20006A7E6 /* InspectorClient.cpp */,
 				1C81B9580E97330800266E07 /* InspectorClient.h */,
 				1C81B9570E97330800266E07 /* InspectorController.cpp */,
 				1C81B9560E97330800266E07 /* InspectorController.h */,
 				82AB1741124B99EC00C5069D /* InspectorCSSAgent.cpp */,
 				82AB1742124B99EC00C5069D /* InspectorCSSAgent.h */,
+				7AB0B1BE1211A62200A76940 /* InspectorDatabaseAgent.cpp */,
+				7AB0B1BF1211A62200A76940 /* InspectorDatabaseAgent.h */,
 				41F062130F5F192600A07EAC /* InspectorDatabaseResource.cpp */,
 				41F062120F5F192600A07EAC /* InspectorDatabaseResource.h */,
 				F33F053B120B0DA500E5743A /* InspectorDebuggerAgent.cpp */,
 				F33F053C120B0DA500E5743A /* InspectorDebuggerAgent.h */,
 				7A2458791021EAF4000A00AA /* InspectorDOMAgent.cpp */,
 				7A24587A1021EAF4000A00AA /* InspectorDOMAgent.h */,
+				7A74ECB8101839A500BF939E /* InspectorDOMStorageAgent.cpp */,
+				7A74ECB9101839A600BF939E /* InspectorDOMStorageAgent.h */,
 				41F061730F5F00AC00A07EAC /* InspectorDOMStorageResource.cpp */,
 				41F061720F5F00AC00A07EAC /* InspectorDOMStorageResource.h */,
 				3888F6EC128C9889000CA8E0 /* InspectorFileSystemAgent.cpp */,
@@ -12832,8 +12834,6 @@
 				82AB1772125C826700C5069D /* InspectorResourceAgent.h */,
 				4FA3B908125CD12100300BAD /* InspectorState.cpp */,
 				4FA3B909125CD12200300BAD /* InspectorState.h */,
-				7AB0B1BE1211A62200A76940 /* InspectorStorageAgent.cpp */,
-				7AB0B1BF1211A62200A76940 /* InspectorStorageAgent.h */,
 				82AB176F125C826700C5069D /* InspectorStyleSheet.cpp */,
 				82AB1770125C826700C5069D /* InspectorStyleSheet.h */,
 				754133A9102E00F400075D00 /* InspectorTimelineAgent.cpp */,
@@ -20657,14 +20657,15 @@
 				93309DF0099E64920056E581 /* InsertParagraphSeparatorCommand.h in Headers */,
 				93309DF2099E64920056E581 /* InsertTextCommand.h in Headers */,
 				B885E8D511E06DD2009FFBF4 /* InspectorApplicationCacheAgent.h in Headers */,
-				7A74ECBB101839A600BF939E /* InspectorBackend.h in Headers */,
 				4F707A9A11EF679400ACDA69 /* InspectorBackendDispatcher.h in Headers */,
 				1C81B95C0E97330800266E07 /* InspectorClient.h in Headers */,
 				1C81B95A0E97330800266E07 /* InspectorController.h in Headers */,
 				82AB1744124B99EC00C5069D /* InspectorCSSAgent.h in Headers */,
+				7AB0B1C11211A62200A76940 /* InspectorDatabaseAgent.h in Headers */,
 				41F062140F5F192600A07EAC /* InspectorDatabaseResource.h in Headers */,
 				F33F053E120B0DA500E5743A /* InspectorDebuggerAgent.h in Headers */,
 				7A24587C1021EAF4000A00AA /* InspectorDOMAgent.h in Headers */,
+				7A74ECBB101839A600BF939E /* InspectorDOMStorageAgent.h in Headers */,
 				41F061740F5F00AC00A07EAC /* InspectorDOMStorageResource.h in Headers */,
 				3888F6EF128C9889000CA8E0 /* InspectorFileSystemAgent.h in Headers */,
 				F344C7141125B82C00F26EEE /* InspectorFrontendClient.h in Headers */,
@@ -20674,7 +20675,6 @@
 				9F0D6B2F121BFEBA006C0288 /* InspectorProfilerAgent.h in Headers */,
 				82AB1776125C826700C5069D /* InspectorResourceAgent.h in Headers */,
 				4FA3B90B125CD12200300BAD /* InspectorState.h in Headers */,
-				7AB0B1C11211A62200A76940 /* InspectorStorageAgent.h in Headers */,
 				82AB1774125C826700C5069D /* InspectorStyleSheet.h in Headers */,
 				754133A8102E00E800075D00 /* InspectorTimelineAgent.h in Headers */,
 				4F3289B611A42AAB005ABE7E /* InspectorValues.h in Headers */,
@@ -23381,14 +23381,15 @@
 				93309DEF099E64920056E581 /* InsertParagraphSeparatorCommand.cpp in Sources */,
 				93309DF1099E64920056E581 /* InsertTextCommand.cpp in Sources */,
 				B885E8D411E06DD2009FFBF4 /* InspectorApplicationCacheAgent.cpp in Sources */,
-				7A74ECBA101839A600BF939E /* InspectorBackend.cpp in Sources */,
 				4F707A9911EF679400ACDA69 /* InspectorBackendDispatcher.cpp in Sources */,
 				7A1F2B52126C61B20006A7E6 /* InspectorClient.cpp in Sources */,
 				1C81B95B0E97330800266E07 /* InspectorController.cpp in Sources */,
 				82AB1743124B99EC00C5069D /* InspectorCSSAgent.cpp in Sources */,
+				7AB0B1C01211A62200A76940 /* InspectorDatabaseAgent.cpp in Sources */,
 				41F062150F5F192600A07EAC /* InspectorDatabaseResource.cpp in Sources */,
 				F33F053D120B0DA500E5743A /* InspectorDebuggerAgent.cpp in Sources */,
 				7A24587B1021EAF4000A00AA /* InspectorDOMAgent.cpp in Sources */,
+				7A74ECBA101839A600BF939E /* InspectorDOMStorageAgent.cpp in Sources */,
 				41F061750F5F00AC00A07EAC /* InspectorDOMStorageResource.cpp in Sources */,
 				3888F6EE128C9889000CA8E0 /* InspectorFileSystemAgent.cpp in Sources */,
 				4F4F5FFB11CBD2E100A186BF /* InspectorFrontend.cpp in Sources */,
@@ -23398,7 +23399,6 @@
 				9F0D6B2E121BFEBA006C0288 /* InspectorProfilerAgent.cpp in Sources */,
 				82AB1775125C826700C5069D /* InspectorResourceAgent.cpp in Sources */,
 				4FA3B90A125CD12200300BAD /* InspectorState.cpp in Sources */,
-				7AB0B1C01211A62200A76940 /* InspectorStorageAgent.cpp in Sources */,
 				82AB1773125C826700C5069D /* InspectorStyleSheet.cpp in Sources */,
 				754133AA102E00F400075D00 /* InspectorTimelineAgent.cpp in Sources */,
 				4F3289B511A42AAB005ABE7E /* InspectorValues.cpp in Sources */,
diff --git a/WebCore/inspector/CodeGeneratorInspector.pm b/WebCore/inspector/CodeGeneratorInspector.pm
index 95f7e8f..b8aea0e 100644
--- a/WebCore/inspector/CodeGeneratorInspector.pm
+++ b/WebCore/inspector/CodeGeneratorInspector.pm
@@ -10,72 +10,64 @@ use Class::Struct;
 use File::stat;
 
 my %typeTransform;
-$typeTransform{"InspectorClient"} = {
-    "forward" => "InspectorClient",
-    "header" => "InspectorClient.h",
-};
-$typeTransform{"Backend"} = {
-    "forward" => "InspectorBackend",
-    "header" => "InspectorBackend.h",
-    "domainAccessor" => "m_inspectorController->inspectorBackend()",
+$typeTransform{"ApplicationCache"} = {
+    "forward" => "InspectorApplicationCacheAgent",
+    "header" => "InspectorApplicationCacheAgent.h",
+    "domainAccessor" => "m_inspectorController->m_applicationCacheAgent",
 };
-$typeTransform{"Inspector"} = {
-    "forwardHeader" => "InspectorController.h",
-    "domainAccessor" => "m_inspectorController",
+$typeTransform{"CSS"} = {
+    "forward" => "InspectorCSSAgent",
+    "header" => "InspectorCSSAgent.h",
+    "domainAccessor" => "m_inspectorController->m_cssAgent",
 };
 $typeTransform{"Debugger"} = {
     "forward" => "InspectorDebuggerAgent",
     "header" => "InspectorDebuggerAgent.h",
-    "domainAccessor" => "m_inspectorController->debuggerAgent()",
-};
-$typeTransform{"Resources"} = {
-    "forward" => "InspectorResourceAgent",
-    "header" => "InspectorResourceAgent.h",
-    "domainAccessor" => "m_inspectorController->m_resourceAgent",
-};
-$typeTransform{"Network"} = {
-    "forward" => "InspectorResourceAgent",
-    "header" => "InspectorResourceAgent.h",
-    "domainAccessor" => "m_inspectorController->m_resourceAgent",
-};
-$typeTransform{"DOMStorage"} = {
-    "forwardHeader" => "InspectorController.h",
-    "domainAccessor" => "m_inspectorController",
+    "domainAccessor" => "m_inspectorController->m_debuggerAgent",
 };
 $typeTransform{"Database"} = {
-    "forward" => "InspectorBackend",
-    "header" => "InspectorBackend.h",
-    "domainAccessor" => "m_inspectorController->inspectorBackend()",
+    "forward" => "InspectorDatabaseAgent",
+    "header" => "InspectorDatabaseAgent.h",
+    "domainAccessor" => "m_inspectorController->m_databaseAgent",
 };
 $typeTransform{"DOM"} = {
     "forward" => "InspectorDOMAgent",
     "header" => "InspectorDOMAgent.h",
-    "domainAccessor" => "m_inspectorController->domAgent()",
-};
-$typeTransform{"CSS"} = {
-    "forward" => "InspectorCSSAgent",
-    "header" => "InspectorCSSAgent.h",
-    "domainAccessor" => "m_inspectorController->cssAgent()",
+    "domainAccessor" => "m_inspectorController->m_domAgent",
 };
-$typeTransform{"ApplicationCache"} = {
-    "forward" => "InspectorApplicationCacheAgent",
-    "header" => "InspectorApplicationCacheAgent.h",
-    "domainAccessor" => "m_inspectorController->applicationCacheAgent()",
+$typeTransform{"DOMStorage"} = {
+    "forward" => "InspectorDOMStorageAgent",
+    "header" => "InspectorDOMStorageAgent.h",
+    "domainAccessor" => "m_inspectorController->m_domStorageAgent",
 };
 $typeTransform{"FileSystem"} = {
     "forward" => "InspectorFileSystemAgent",
     "header" => "InspectorFileSystemAgent.h",
-    "domainAccessor" => "m_inspectorController->fileSystemAgent()",
+    "domainAccessor" => "m_inspectorController->m_fileSystemAgent",
+};
+$typeTransform{"Inspector"} = {
+    "forwardHeader" => "InspectorController.h",
+    "domainAccessor" => "m_inspectorController",
+};
+$typeTransform{"Network"} = {
+    "forward" => "InspectorResourceAgent",
+    "header" => "InspectorResourceAgent.h",
+    "domainAccessor" => "m_inspectorController->m_resourceAgent",
 };
 $typeTransform{"Profiler"} = {
     "forward" => "InspectorProfilerAgent",
     "header" => "InspectorProfilerAgent.h",
-    "domainAccessor" => "m_inspectorController->profilerAgent()",
+    "domainAccessor" => "m_inspectorController->m_profilerAgent",
 };
+
 $typeTransform{"Frontend"} = {
     "forward" => "InspectorFrontend",
     "header" => "InspectorFrontend.h",
 };
+$typeTransform{"InspectorClient"} = {
+    "forward" => "InspectorClient",
+    "header" => "InspectorClient.h",
+};
 $typeTransform{"PassRefPtr"} = {
     "forwardHeader" => "wtf/PassRefPtr.h",
 };
diff --git a/WebCore/inspector/InjectedScriptHost.cpp b/WebCore/inspector/InjectedScriptHost.cpp
index 415a2e5..a4a0c6f 100644
--- a/WebCore/inspector/InjectedScriptHost.cpp
+++ b/WebCore/inspector/InjectedScriptHost.cpp
@@ -30,6 +30,8 @@
 
 #include "config.h"
 #include "InjectedScriptHost.h"
+#include "InspectorDatabaseAgent.h"
+#include "InspectorDOMStorageAgent.h"
 
 #if ENABLE(INSPECTOR)
 
@@ -120,23 +122,23 @@ long InjectedScriptHost::inspectedNode(unsigned long num)
 #if ENABLE(DATABASE)
 Database* InjectedScriptHost::databaseForId(long databaseId)
 {
-    if (m_inspectorController)
-        return m_inspectorController->databaseForId(databaseId);
+    if (m_inspectorController && m_inspectorController->m_databaseAgent)
+        return m_inspectorController->m_databaseAgent->databaseForId(databaseId);
     return 0;
 }
 
 void InjectedScriptHost::selectDatabase(Database* database)
 {
-    if (m_inspectorController)
-        m_inspectorController->selectDatabase(database);
+    if (m_inspectorController && m_inspectorController->m_databaseAgent)
+        m_inspectorController->m_databaseAgent->selectDatabase(database);
 }
 #endif
 
 #if ENABLE(DOM_STORAGE)
 void InjectedScriptHost::selectDOMStorage(Storage* storage)
 {
-    if (m_inspectorController)
-        m_inspectorController->selectDOMStorage(storage);
+    if (m_inspectorController && m_inspectorController->m_domStorageAgent)
+        m_inspectorController->m_domStorageAgent->selectDOMStorage(storage);
 }
 #endif
 
@@ -170,7 +172,7 @@ InspectorDOMAgent* InjectedScriptHost::inspectorDOMAgent()
 {
     if (!m_inspectorController)
         return 0;
-    return m_inspectorController->domAgent();
+    return m_inspectorController->m_domAgent.get();
 }
 
 InspectorFrontend* InjectedScriptHost::frontend()
diff --git a/WebCore/inspector/Inspector.idl b/WebCore/inspector/Inspector.idl
index 56feb01..7b2d7e2 100644
--- a/WebCore/inspector/Inspector.idl
+++ b/WebCore/inspector/Inspector.idl
@@ -36,12 +36,12 @@ module core {
         // generic Inspector's methods
         ///////////////////////////////////////////////////////////////////////
 
-        [domain=Backend] void setInjectedScriptSource(in String scriptSource);
         // HUGE FIXME: we need to expose InjectedScript methods here. Or document InjectedScript capabilities.
-        [domain=Backend] void dispatchOnInjectedScript(in long injectedScriptId, in String methodName, in String arguments, out Value result, out boolean isException);
+        [domain=Inspector] void setInjectedScriptSource(in String scriptSource);
+        [domain=Inspector] void dispatchOnInjectedScript(in long injectedScriptId, in String methodName, in String arguments, out Value result, out boolean isException);
         [domain=Inspector] void addScriptToEvaluateOnLoad(in String scriptSource);
         [domain=Inspector] void removeAllScriptsToEvaluateOnLoad();
-        [domain=Backend] void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
+        [domain=Inspector] void releaseWrapperObjectGroup(in long injectedScriptId, in String objectGroup);
         [domain=Inspector] void getInspectorState(out Object state);
         [domain=Inspector] void setMonitoringXHREnabled(in boolean enable, out boolean newState);
         [domain=Inspector] void reloadPage();
@@ -69,6 +69,9 @@ module core {
 
         [domain=Inspector] void setExtraHeaders(in Object headers);
 
+        [domain=Inspector] void getCookies(out Array cookies, out String cookiesString);
+        [domain=Inspector] void deleteCookie(in String cookieName, in String domain);
+
         ///////////////////////////////////////////////////////////////////////
         // Console API
         ///////////////////////////////////////////////////////////////////////
@@ -84,6 +87,10 @@ module core {
         // Network API
         ///////////////////////////////////////////////////////////////////////
 
+        [domain=Network] void cachedResources(out Object resources);
+        [domain=Network] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
+        [notify, domain=Network] void frameDetachedFromParent(out unsigned long frameId);
+
         [notify, domain=Network] void identifierForInitialRequest(out long identifier, out String url, out Object loader, out Value callStack);
         [notify, domain=Network] void willSendRequest(out long identifier, out double time, out Object request, out Object redirectResponse);
         [notify, domain=Network] void markResourceAsCached(out long identifier);
@@ -99,18 +106,12 @@ module core {
         [notify, domain=Network] void didReceiveWebSocketHandshakeResponse(out unsigned long identifier, out double time, out Object response);
         [notify, domain=Network] void didCloseWebSocket(out unsigned long identifier, out double time);
 
+#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
+
         ///////////////////////////////////////////////////////////////////////
-        // Resources API
+        // Database API
         ///////////////////////////////////////////////////////////////////////
 
-        [domain=Resources] void cachedResources(out Object resources);
-        [domain=Resources] void resourceContent(in unsigned long frameId, in String url, in boolean base64Encode, out String content);
-        [notify, domain=Resources] void frameDetachedFromParent(out unsigned long frameId);
-
-        // FIXME: Introduce new StorageDomain.
-        [domain=Inspector] void getCookies(out Array cookies, out String cookiesString);
-        [domain=Inspector] void deleteCookie(in String cookieName, in String domain);
-#if defined(ENABLE_DATABASE) && ENABLE_DATABASE
         [notify, domain=Database] void addDatabase(out Object database);
         [notify, domain=Database] void selectDatabase(out int databaseId);
         [domain=Database] void getDatabaseTableNames(in long databaseId, out Array tableNames);
@@ -118,7 +119,13 @@ module core {
         [notify, domain=Database] void sqlTransactionSucceeded(out long transactionId, out Value columnNames, out Value values);
         [notify, domain=Database] void sqlTransactionFailed(out long transactionId, out Value sqlError);
 #endif
+
 #if defined(ENABLE_DOM_STORAGE) && ENABLE_DOM_STORAGE
+
+        ///////////////////////////////////////////////////////////////////////
+        // DOM Storage API
+        ///////////////////////////////////////////////////////////////////////
+
         [domain=DOMStorage] void getDOMStorageEntries(in long storageId, out Array entries);
         [domain=DOMStorage] void setDOMStorageItem(in long storageId, in String key, in String value, out boolean success);
         [domain=DOMStorage] void removeDOMStorageItem(in long storageId, in String key, out boolean success);
@@ -126,12 +133,24 @@ module core {
         [notify, domain=DOMStorage] void updateDOMStorage(out int storageId);
         [notify, domain=DOMStorage] void selectDOMStorage(out int storageId);
 #endif
+
 #if defined(ENABLE_OFFLINE_WEB_APPLICATIONS) && ENABLE_OFFLINE_WEB_APPLICATIONS
+
+        ///////////////////////////////////////////////////////////////////////
+        // AppCache API
+        ///////////////////////////////////////////////////////////////////////
+
         [domain=ApplicationCache] void getApplicationCaches(out Value applicationCaches);
         [notify, domain=ApplicationCache] void updateApplicationCacheStatus(out int status);
         [notify, domain=ApplicationCache] void updateNetworkState(out boolean isNowOnline);
 #endif
+
 #if defined(ENABLE_FILE_SYSTEM) && ENABLE_FILE_SYSTEM
+
+        ///////////////////////////////////////////////////////////////////////
+        // Filesystem API
+        ///////////////////////////////////////////////////////////////////////
+
         [domain=FileSystem] void getFileSystemPathAsync(in unsigned int type, in String origin);
         [domain=FileSystem] void revealFolderInOS(in String path);
 
@@ -203,8 +222,8 @@ module core {
         // Debugger API
         ///////////////////////////////////////////////////////////////////////
 
-        [domain=Backend] void enableDebugger(in boolean always);
-        [domain=Inspector] void disableDebugger(in boolean always); // FIXME: should be on the same domain as enableDebugger.
+        [domain=Inspector] void enableDebuggerFromFrontend(in boolean always);
+        [domain=Inspector] void disableDebugger(in boolean always);
         [notify, domain=Debugger] void debuggerWasEnabled();
         [notify, domain=Debugger] void debuggerWasDisabled();
 
diff --git a/WebCore/inspector/InspectorBackend.cpp b/WebCore/inspector/InspectorBackend.cpp
deleted file mode 100644
index eb4c0e7..0000000
--- a/WebCore/inspector/InspectorBackend.cpp
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Matt Lilek <webkit at mattlilek.com>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "InspectorBackend.h"
-
-#if ENABLE(INSPECTOR)
-
-#if ENABLE(DATABASE)
-#include "Database.h"
-#endif
-
-#include "InjectedScript.h"
-#include "InjectedScriptHost.h"
-#include "InspectorController.h"
-#include "InspectorDOMAgent.h"
-#include "InspectorFrontend.h"
-#include "InspectorStorageAgent.h"
-#include "ScriptProfiler.h"
-#include "SerializedScriptValue.h"
-
-using namespace std;
-
-namespace WebCore {
-
-InspectorBackend::InspectorBackend(InspectorController* inspectorController)
-    : m_inspectorController(inspectorController)
-{
-}
-
-InspectorBackend::~InspectorBackend()
-{
-}
-
-
-#if ENABLE(JAVASCRIPT_DEBUGGER)
-
-void InspectorBackend::enableDebugger(bool always)
-{
-    if (m_inspectorController)
-        m_inspectorController->enableDebuggerFromFrontend(always);
-}
-
-#endif
-
-void InspectorBackend::setInjectedScriptSource(const String& source)
-{
-     m_inspectorController->injectedScriptHost()->setInjectedScriptSource(source);
-}
-
-void InspectorBackend::dispatchOnInjectedScript(long injectedScriptId, const String& methodName, const String& arguments, RefPtr<InspectorValue>* result, bool* hadException)
-{
-    if (!frontend())
-        return;
-
-    // FIXME: explicitly pass injectedScriptId along with node id to the frontend.
-    bool injectedScriptIdIsNodeId = injectedScriptId <= 0;
-
-    InjectedScript injectedScript;
-    if (injectedScriptIdIsNodeId)
-        injectedScript = m_inspectorController->injectedScriptForNodeId(-injectedScriptId);
-    else
-        injectedScript = m_inspectorController->injectedScriptHost()->injectedScriptForId(injectedScriptId);
-
-    if (injectedScript.hasNoValue())
-        return;
-
-    injectedScript.dispatch(methodName, arguments, result, hadException);
-}
-
-void InspectorBackend::releaseWrapperObjectGroup(long injectedScriptId, const String& objectGroup)
-{
-    m_inspectorController->injectedScriptHost()->releaseWrapperObjectGroup(injectedScriptId, objectGroup);
-}
-
-#if ENABLE(DATABASE)
-void InspectorBackend::getDatabaseTableNames(long databaseId, RefPtr<InspectorArray>* names)
-{
-    Database* database = m_inspectorController->databaseForId(databaseId);
-    if (database) {
-        Vector<String> tableNames = database->tableNames();
-        unsigned length = tableNames.size();
-        for (unsigned i = 0; i < length; ++i)
-            (*names)->pushString(tableNames[i]);
-    }
-}
-
-void InspectorBackend::executeSQL(long databaseId, const String& query, bool* success, long* transactionId)
-{
-    Database* database = m_inspectorController->databaseForId(databaseId);
-    if (!m_inspectorController->m_storageAgent || !database) {
-        *success = false;
-        return;
-    }
-
-    *transactionId = m_inspectorController->m_storageAgent->executeSQL(database, query);
-    *success = true;
-}
-
-#endif
-
-InspectorFrontend* InspectorBackend::frontend()
-{
-    return m_inspectorController->m_frontend.get();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INSPECTOR)
diff --git a/WebCore/inspector/InspectorBackend.h b/WebCore/inspector/InspectorBackend.h
deleted file mode 100644
index 1fcec96..0000000
--- a/WebCore/inspector/InspectorBackend.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorBackend_h
-#define InspectorBackend_h
-
-#include "Console.h"
-#include "InspectorController.h"
-#include "PlatformString.h"
-
-#include <wtf/RefCounted.h>
-
-namespace WebCore {
-
-class InspectorApplicationCacheAgent;
-class InspectorDOMAgent;
-class InspectorFrontend;
-
-class InspectorBackend : public RefCounted<InspectorBackend>
-{
-public:
-    static PassRefPtr<InspectorBackend> create(InspectorController* inspectorController)
-    {
-        return adoptRef(new InspectorBackend(inspectorController));
-    }
-
-    ~InspectorBackend();
-
-    InspectorController* inspectorController() { return m_inspectorController; }
-    InspectorDOMAgent* inspectorDOMAgent() { return m_inspectorController->domAgent(); }
-#if ENABLE(OFFLINE_WEB_APPLICATIONS)
-    InspectorApplicationCacheAgent* inspectorApplicationCacheAgent() { return m_inspectorController->applicationCacheAgent(); }
-#endif
-    void disconnectController() { m_inspectorController = 0; }
-
-#if ENABLE(JAVASCRIPT_DEBUGGER)
-    void enableDebugger(bool always);
-#endif
-
-    void setInjectedScriptSource(const String& source);
-    void dispatchOnInjectedScript(long injectedScriptId, const String& methodName, const String& arguments, RefPtr<InspectorValue>* result, bool* hadException);
-
-    // Generic code called from custom implementations.
-    void releaseWrapperObjectGroup(long injectedScriptId, const String& objectGroup);
-
-#if ENABLE(DATABASE)
-    void getDatabaseTableNames(long databaseId, RefPtr<InspectorArray>* names);
-    void executeSQL(long databaseId, const String& query, bool* success, long* transactionId);
-#endif
-
-private:
-    InspectorBackend(InspectorController* inspectorController);
-    InspectorFrontend* frontend();
-
-    InspectorController* m_inspectorController;
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorBackend_h)
diff --git a/WebCore/inspector/InspectorController.cpp b/WebCore/inspector/InspectorController.cpp
index 8b08598..6c09507 100644
--- a/WebCore/inspector/InspectorController.cpp
+++ b/WebCore/inspector/InspectorController.cpp
@@ -57,21 +57,19 @@
 #include "HitTestResult.h"
 #include "InjectedScript.h"
 #include "InjectedScriptHost.h"
-#include "InspectorBackend.h"
 #include "InspectorBackendDispatcher.h"
 #include "InspectorCSSAgent.h"
 #include "InspectorClient.h"
 #include "InspectorDOMAgent.h"
 #include "InspectorDOMStorageResource.h"
+#include "InspectorDatabaseAgent.h"
 #include "InspectorDatabaseResource.h"
-#include "InspectorDebuggerAgent.h"
 #include "InspectorFrontend.h"
 #include "InspectorFrontendClient.h"
 #include "InspectorInstrumentation.h"
 #include "InspectorProfilerAgent.h"
 #include "InspectorResourceAgent.h"
 #include "InspectorState.h"
-#include "InspectorStorageAgent.h"
 #include "InspectorTimelineAgent.h"
 #include "InspectorValues.h"
 #include "InspectorWorkerResource.h"
@@ -106,6 +104,13 @@
 
 #if ENABLE(DATABASE)
 #include "Database.h"
+#include "InspectorDebuggerAgent.h"
+#endif
+
+#if ENABLE(DOM_STORAGE)
+#include "InspectorDOMStorageAgent.h"
+#include "Storage.h"
+#include "StorageArea.h"
 #endif
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
@@ -116,11 +121,6 @@
 #include "InspectorFileSystemAgent.h"
 #endif
 
-#if ENABLE(DOM_STORAGE)
-#include "Storage.h"
-#include "StorageArea.h"
-#endif
-
 using namespace std;
 
 namespace WebCore {
@@ -144,7 +144,6 @@ InspectorController::InspectorController(Page* page, InspectorClient* client)
     , m_expiredConsoleMessageCount(0)
     , m_previousMessage(0)
     , m_settingsLoaded(false)
-    , m_inspectorBackend(InspectorBackend::create(this))
     , m_inspectorBackendDispatcher(new InspectorBackendDispatcher(this))
     , m_injectedScriptHost(InjectedScriptHost::create(this))
 #if ENABLE(JAVASCRIPT_DEBUGGER)
@@ -167,7 +166,6 @@ InspectorController::~InspectorController()
 
     releaseFrontendLifetimeAgents();
 
-    m_inspectorBackend->disconnectController();
     m_injectedScriptHost->disconnectController();
 }
 
@@ -476,7 +474,11 @@ void InspectorController::connectFrontend()
     m_cssAgent->setDOMAgent(m_domAgent.get());
 
 #if ENABLE(DATABASE)
-    m_storageAgent = InspectorStorageAgent::create(m_frontend.get());
+    m_databaseAgent = InspectorDatabaseAgent::create(&m_databaseResources, m_frontend.get());
+#endif
+
+#if ENABLE(DOM_STORAGE)
+    m_domStorageAgent = InspectorDOMStorageAgent::create(&m_domStorageResources, m_frontend.get());
 #endif
 
     if (m_timelineAgent)
@@ -592,9 +594,13 @@ void InspectorController::releaseFrontendLifetimeAgents()
     m_domAgent.clear();
 
 #if ENABLE(DATABASE)
-    if (m_storageAgent)
-        m_storageAgent->clearFrontend();
-    m_storageAgent.clear();
+    if (m_databaseAgent)
+        m_databaseAgent->clearFrontend();
+    m_databaseAgent.clear();
+#endif
+
+#if ENABLE(DOM_STORAGE)
+    m_domStorageAgent.clear();
 #endif
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
@@ -1035,27 +1041,6 @@ void InspectorController::didDestroyWorker(intptr_t id)
 #endif // ENABLE(WORKERS)
 
 #if ENABLE(DATABASE)
-void InspectorController::selectDatabase(Database* database)
-{
-    if (!m_frontend)
-        return;
-
-    for (DatabaseResourcesMap::iterator it = m_databaseResources.begin(); it != m_databaseResources.end(); ++it) {
-        if (it->second->database() == database) {
-            m_frontend->selectDatabase(it->first);
-            break;
-        }
-    }
-}
-
-Database* InspectorController::databaseForId(long databaseId)
-{
-    DatabaseResourcesMap::iterator it = m_databaseResources.find(databaseId);
-    if (it == m_databaseResources.end())
-        return 0;
-    return it->second->database();
-}
-
 void InspectorController::didOpenDatabase(PassRefPtr<Database> database, const String& domain, const String& name, const String& version)
 {
     if (!enabled())
@@ -1175,71 +1160,6 @@ void InspectorController::didUseDOMStorage(StorageArea* storageArea, bool isLoca
     if (m_frontend)
         resource->bind(m_frontend.get());
 }
-
-void InspectorController::selectDOMStorage(Storage* storage)
-{
-    ASSERT(storage);
-    if (!m_frontend)
-        return;
-
-    Frame* frame = storage->frame();
-    ExceptionCode ec = 0;
-    bool isLocalStorage = (frame->domWindow()->localStorage(ec) == storage && !ec);
-    long storageResourceId = 0;
-    DOMStorageResourcesMap::iterator domStorageEnd = m_domStorageResources.end();
-    for (DOMStorageResourcesMap::iterator it = m_domStorageResources.begin(); it != domStorageEnd; ++it) {
-        if (it->second->isSameHostAndType(frame, isLocalStorage)) {
-            storageResourceId = it->first;
-            break;
-        }
-    }
-    if (storageResourceId)
-        m_frontend->selectDOMStorage(storageResourceId);
-}
-
-void InspectorController::getDOMStorageEntries(long storageId, RefPtr<InspectorArray>* entries)
-{
-    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
-    if (storageResource) {
-        storageResource->startReportingChangesToFrontend();
-        Storage* domStorage = storageResource->domStorage();
-        for (unsigned i = 0; i < domStorage->length(); ++i) {
-            String name(domStorage->key(i));
-            String value(domStorage->getItem(name));
-            RefPtr<InspectorArray> entry = InspectorArray::create();
-            entry->pushString(name);
-            entry->pushString(value);
-            (*entries)->pushArray(entry);
-        }
-    }
-}
-
-void InspectorController::setDOMStorageItem(long storageId, const String& key, const String& value, bool* success)
-{
-    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
-    if (storageResource) {
-        ExceptionCode exception = 0;
-        storageResource->domStorage()->setItem(key, value, exception);
-        *success = !exception;
-    }
-}
-
-void InspectorController::removeDOMStorageItem(long storageId, const String& key, bool* success)
-{
-    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
-    if (storageResource) {
-        storageResource->domStorage()->removeItem(key);
-        *success = true;
-    }
-}
-
-InspectorDOMStorageResource* InspectorController::getDOMStorageResourceForId(long storageId)
-{
-    DOMStorageResourcesMap::iterator it = m_domStorageResources.find(storageId);
-    if (it == m_domStorageResources.end())
-        return 0;
-    return it->second.get();
-}
 #endif
 
 #if ENABLE(WEB_SOCKETS)
@@ -1507,6 +1427,36 @@ bool InspectorController::hasXHRBreakpoint(const String& url, String* breakpoint
 
 #endif
 
+void InspectorController::setInjectedScriptSource(const String& source)
+{
+     injectedScriptHost()->setInjectedScriptSource(source);
+}
+
+void InspectorController::dispatchOnInjectedScript(long injectedScriptId, const String& methodName, const String& arguments, RefPtr<InspectorValue>* result, bool* hadException)
+{
+    if (!m_frontend)
+        return;
+
+    // FIXME: explicitly pass injectedScriptId along with node id to the frontend.
+    bool injectedScriptIdIsNodeId = injectedScriptId <= 0;
+
+    InjectedScript injectedScript;
+    if (injectedScriptIdIsNodeId)
+        injectedScript = injectedScriptForNodeId(-injectedScriptId);
+    else
+        injectedScript = injectedScriptHost()->injectedScriptForId(injectedScriptId);
+
+    if (injectedScript.hasNoValue())
+        return;
+
+    injectedScript.dispatch(methodName, arguments, result, hadException);
+}
+
+void InspectorController::releaseWrapperObjectGroup(long injectedScriptId, const String& objectGroup)
+{
+    injectedScriptHost()->releaseWrapperObjectGroup(injectedScriptId, objectGroup);
+}
+
 void InspectorController::evaluateForTestInFrontend(long callId, const String& script)
 {
     if (m_frontend)
diff --git a/WebCore/inspector/InspectorController.h b/WebCore/inspector/InspectorController.h
index e570c98..481344d 100644
--- a/WebCore/inspector/InspectorController.h
+++ b/WebCore/inspector/InspectorController.h
@@ -56,12 +56,13 @@ class HitTestResult;
 class InjectedScript;
 class InjectedScriptHost;
 class InspectorArray;
-class InspectorBackend;
 class InspectorBackendDispatcher;
 class InspectorClient;
 class InspectorCSSAgent;
 class InspectorDOMAgent;
+class InspectorDOMStorageAgent;
 class InspectorDOMStorageResource;
+class InspectorDatabaseAgent;
 class InspectorDatabaseResource;
 class InspectorDebuggerAgent;
 class InspectorFrontend;
@@ -85,7 +86,6 @@ class ScriptArguments;
 class ScriptCallStack;
 class ScriptProfile;
 class SharedBuffer;
-class Storage;
 class StorageArea;
 
 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
@@ -103,9 +103,6 @@ class WebSocketHandshakeResponse;
 
 class InspectorController : public Noncopyable {
 public:
-    typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
-    typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap;
-
     static const char* const ConsolePanel;
     static const char* const ElementsPanel;
     static const char* const ProfilesPanel;
@@ -114,7 +111,6 @@ public:
     InspectorController(Page*, InspectorClient*);
     ~InspectorController();
 
-    InspectorBackend* inspectorBackend() { return m_inspectorBackend.get(); }
     InspectorBackendDispatcher* inspectorBackendDispatcher() { return m_inspectorBackendDispatcher.get(); }
     InspectorClient* inspectorClient() { return m_client; }
     InjectedScriptHost* injectedScriptHost() { return m_injectedScriptHost.get(); }
@@ -189,10 +185,6 @@ public:
     InspectorApplicationCacheAgent* applicationCacheAgent() { return m_applicationCacheAgent.get(); }
 #endif
 
-#if ENABLE(FILE_SYSTEM)
-    InspectorFileSystemAgent* fileSystemAgent() { return m_fileSystemAgent.get(); }
-#endif 
-
     void mainResourceFiredLoadEvent(DocumentLoader*, const KURL&);
     void mainResourceFiredDOMContentEvent(DocumentLoader*, const KURL&);
 
@@ -207,13 +199,11 @@ public:
 #if ENABLE(DATABASE)
     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);
-    void selectDOMStorage(Storage* storage);
-    void getDOMStorageEntries(long storageId, RefPtr<InspectorArray>* entries);
-    void setDOMStorageItem(long storageId, const String& key, const String& value, bool* success);
-    void removeDOMStorageItem(long storageId, const String& key, bool* success);
 #endif
+
 #if ENABLE(WEB_SOCKETS)
     void didCreateWebSocket(unsigned long identifier, const KURL& requestURL, const KURL& documentURL);
     void willSendWebSocketHandshakeRequest(unsigned long identifier, const WebSocketHandshakeRequest&);
@@ -250,12 +240,10 @@ public:
     void enableProfiler(bool always = false, bool skipRecompile = false);
     void disableProfiler(bool always = false);
     bool profilerEnabled() const;
-    InspectorProfilerAgent* profilerAgent() const { return m_profilerAgent.get(); }
 
     void enableDebugger();
     void disableDebugger(bool always = false);
     bool debuggerEnabled() const { return m_debuggerAgent; }
-    InspectorDebuggerAgent* debuggerAgent() const { return m_debuggerAgent.get(); }
     void resume();
 
     void setStickyBreakpoints(PassRefPtr<InspectorObject> breakpoints);
@@ -267,6 +255,12 @@ public:
     bool hasXHRBreakpoint(const String& url, String* breakpointURL);
 #endif
 
+    void setInjectedScriptSource(const String& source);
+    void dispatchOnInjectedScript(long injectedScriptId, const String& methodName, const String& arguments, RefPtr<InspectorValue>* result, bool* hadException);
+
+    // Generic code called from custom implementations.
+    void releaseWrapperObjectGroup(long injectedScriptId, const String& objectGroup);
+
     void evaluateForTestInFrontend(long testCallId, const String& script);
 
     InjectedScript injectedScriptForNodeId(long id);
@@ -306,8 +300,6 @@ private:
     void setSearchingForNode(bool enabled, bool* newState);
 
     void setMonitoringXHREnabled(bool enabled, bool* newState);
-    InspectorCSSAgent* cssAgent() { return m_cssAgent.get(); }
-    InspectorDOMAgent* domAgent() { return m_domAgent.get(); }
     void releaseFrontendLifetimeAgents();
 
 #if ENABLE(JAVASCRIPT_DEBUGGER)
@@ -316,13 +308,6 @@ private:
     void restoreStickyBreakpoints();
     void restoreStickyBreakpoint(PassRefPtr<InspectorObject> breakpoint);
 #endif
-#if ENABLE(DATABASE)
-    void selectDatabase(Database* database);
-    Database* databaseForId(long databaseId);
-#endif
-#if ENABLE(DOM_STORAGE)
-    InspectorDOMStorageResource* getDOMStorageResourceForId(long storageId);
-#endif
 
     PassRefPtr<InspectorObject> buildObjectForCookie(const Cookie&);
     PassRefPtr<InspectorArray> buildArrayForCookies(ListHashSet<Cookie>&);
@@ -342,7 +327,15 @@ private:
     OwnPtr<InspectorFrontend> m_frontend;
     OwnPtr<InspectorCSSAgent> m_cssAgent;
     RefPtr<InspectorDOMAgent> m_domAgent;
-    RefPtr<InspectorStorageAgent> m_storageAgent;
+
+#if ENABLE(DATABASE)
+    RefPtr<InspectorDatabaseAgent> m_databaseAgent;
+#endif
+
+#if ENABLE(DOM_STORAGE)
+    RefPtr<InspectorDOMStorageAgent> m_domStorageAgent;
+#endif
+
     OwnPtr<InspectorTimelineAgent> m_timelineAgent;
     OwnPtr<InspectorState> m_state;
 
@@ -361,17 +354,20 @@ private:
     unsigned m_expiredConsoleMessageCount;
     HashMap<String, double> m_times;
     HashMap<String, unsigned> m_counts;
+
 #if ENABLE(DATABASE)
+    typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
     DatabaseResourcesMap m_databaseResources;
 #endif
 #if ENABLE(DOM_STORAGE)
+    typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap;
     DOMStorageResourcesMap m_domStorageResources;
 #endif
+
     String m_showAfterVisible;
     RefPtr<Node> m_highlightedNode;
     ConsoleMessage* m_previousMessage;
     bool m_settingsLoaded;
-    RefPtr<InspectorBackend> m_inspectorBackend;
     OwnPtr<InspectorBackendDispatcher> m_inspectorBackendDispatcher;
     RefPtr<InjectedScriptHost> m_injectedScriptHost;
 
diff --git a/WebCore/inspector/InspectorDOMStorageAgent.cpp b/WebCore/inspector/InspectorDOMStorageAgent.cpp
new file mode 100644
index 0000000..2241a16
--- /dev/null
+++ b/WebCore/inspector/InspectorDOMStorageAgent.cpp
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "InspectorDOMStorageAgent.h"
+
+#if ENABLE(INSPECTOR) && ENABLE(DOM_STORAGE)
+
+#include "Database.h"
+#include "DOMWindow.h"
+#include "ExceptionCode.h"
+#include "Frame.h"
+#include "InspectorDOMStorageResource.h"
+#include "InspectorFrontend.h"
+#include "InspectorValues.h"
+#include "Storage.h"
+#include "VoidCallback.h"
+
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+InspectorDOMStorageAgent::~InspectorDOMStorageAgent()
+{
+}
+
+void InspectorDOMStorageAgent::getDOMStorageEntries(long storageId, RefPtr<InspectorArray>* entries)
+{
+    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+    if (storageResource) {
+        storageResource->startReportingChangesToFrontend();
+        Storage* domStorage = storageResource->domStorage();
+        for (unsigned i = 0; i < domStorage->length(); ++i) {
+            String name(domStorage->key(i));
+            String value(domStorage->getItem(name));
+            RefPtr<InspectorArray> entry = InspectorArray::create();
+            entry->pushString(name);
+            entry->pushString(value);
+            (*entries)->pushArray(entry);
+        }
+    }
+}
+
+void InspectorDOMStorageAgent::setDOMStorageItem(long storageId, const String& key, const String& value, bool* success)
+{
+    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+    if (storageResource) {
+        ExceptionCode exception = 0;
+        storageResource->domStorage()->setItem(key, value, exception);
+        *success = !exception;
+    }
+}
+
+void InspectorDOMStorageAgent::removeDOMStorageItem(long storageId, const String& key, bool* success)
+{
+    InspectorDOMStorageResource* storageResource = getDOMStorageResourceForId(storageId);
+    if (storageResource) {
+        storageResource->domStorage()->removeItem(key);
+        *success = true;
+    }
+}
+
+void InspectorDOMStorageAgent::selectDOMStorage(Storage* storage)
+{
+    ASSERT(storage);
+    if (!m_frontend)
+        return;
+
+    Frame* frame = storage->frame();
+    ExceptionCode ec = 0;
+    bool isLocalStorage = (frame->domWindow()->localStorage(ec) == storage && !ec);
+    long storageResourceId = 0;
+    DOMStorageResourcesMap::iterator domStorageEnd = m_domStorageResources->end();
+    for (DOMStorageResourcesMap::iterator it = m_domStorageResources->begin(); it != domStorageEnd; ++it) {
+        if (it->second->isSameHostAndType(frame, isLocalStorage)) {
+            storageResourceId = it->first;
+            break;
+        }
+    }
+    if (storageResourceId)
+        m_frontend->selectDOMStorage(storageResourceId);
+}
+
+InspectorDOMStorageAgent::InspectorDOMStorageAgent(DOMStorageResourcesMap* domStorageResources, InspectorFrontend* frontend)
+    : m_domStorageResources(domStorageResources)
+    , m_frontend(frontend)
+{
+}
+
+InspectorDOMStorageResource* InspectorDOMStorageAgent::getDOMStorageResourceForId(long storageId)
+{
+    DOMStorageResourcesMap::iterator it = m_domStorageResources->find(storageId);
+    if (it == m_domStorageResources->end())
+        return 0;
+    return it->second.get();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INSPECTOR) && ENABLE(DOM_STORE)
diff --git a/WebCore/inspector/InspectorDOMStorageAgent.h b/WebCore/inspector/InspectorDOMStorageAgent.h
new file mode 100644
index 0000000..bdfd7cb
--- /dev/null
+++ b/WebCore/inspector/InspectorDOMStorageAgent.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorDOMStorageAgent_h
+#define InspectorDOMStorageAgent_h
+
+#include "PlatformString.h"
+#include "wtf/HashMap.h"
+#include "wtf/PassRefPtr.h"
+
+namespace WebCore {
+
+class InspectorArray;
+class InspectorController;
+class InspectorDOMStorageResource;
+class InspectorFrontend;
+class Storage;
+
+class InspectorDOMStorageAgent : public RefCounted<InspectorDOMStorageAgent> {
+public:
+    typedef HashMap<int, RefPtr<InspectorDOMStorageResource> > DOMStorageResourcesMap;
+
+    static PassRefPtr<InspectorDOMStorageAgent> create(DOMStorageResourcesMap* domStorageResources, InspectorFrontend* frontend)
+    {
+        return adoptRef(new InspectorDOMStorageAgent(domStorageResources, frontend));
+    }
+
+    virtual ~InspectorDOMStorageAgent();
+
+    // Called from the front-end.
+    void getDOMStorageEntries(long storageId, RefPtr<InspectorArray>* entries);
+    void setDOMStorageItem(long storageId, const String& key, const String& value, bool* success);
+    void removeDOMStorageItem(long storageId, const String& key, bool* success);
+
+    // Called from the injected script.
+    void selectDOMStorage(Storage* storage);
+
+    InspectorFrontend* frontend() { return m_frontend; }
+
+private:
+    InspectorDOMStorageAgent(DOMStorageResourcesMap*, InspectorFrontend*);
+
+    InspectorDOMStorageResource* getDOMStorageResourceForId(long storageId);
+
+    DOMStorageResourcesMap* m_domStorageResources;
+    InspectorFrontend* m_frontend;
+};
+
+} // namespace WebCore
+
+#endif // !defined(InspectorDOMStorageAgent_h)
diff --git a/WebCore/inspector/InspectorDatabaseAgent.cpp b/WebCore/inspector/InspectorDatabaseAgent.cpp
new file mode 100644
index 0000000..88db3ae
--- /dev/null
+++ b/WebCore/inspector/InspectorDatabaseAgent.cpp
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+
+#include "InspectorDatabaseAgent.h"
+
+#if ENABLE(INSPECTOR) && ENABLE(DATABASE)
+
+#include "Database.h"
+#include "ExceptionCode.h"
+#include "InspectorFrontend.h"
+#include "InspectorController.h"
+#include "InspectorDatabaseResource.h"
+#include "InspectorValues.h"
+#include "SQLError.h"
+#include "SQLStatementCallback.h"
+#include "SQLStatementErrorCallback.h"
+#include "SQLResultSetRowList.h"
+#include "SQLTransaction.h"
+#include "SQLTransactionCallback.h"
+#include "SQLTransactionErrorCallback.h"
+#include "SQLValue.h"
+#include "VoidCallback.h"
+
+#include <wtf/Vector.h>
+
+namespace WebCore {
+
+namespace {
+
+long lastTransactionId = 0;
+
+void reportTransactionFailed(InspectorDatabaseAgent* agent, long transactionId, SQLError* error)
+{
+    if (!agent->frontend())
+        return;
+    RefPtr<InspectorObject> errorObject = InspectorObject::create();
+    errorObject->setString("message", error->message());
+    errorObject->setNumber("code", error->code());
+    agent->frontend()->sqlTransactionFailed(transactionId, errorObject);
+}
+
+class StatementCallback : public SQLStatementCallback {
+public:
+    static PassRefPtr<StatementCallback> create(long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+    {
+        return adoptRef(new StatementCallback(transactionId, agent));
+    }
+
+    virtual ~StatementCallback() { }
+
+    virtual bool handleEvent(SQLTransaction*, SQLResultSet* resultSet)
+    {
+        if (!m_agent->frontend())
+            return true;
+
+        SQLResultSetRowList* rowList = resultSet->rows();
+
+        RefPtr<InspectorArray> columnNames = InspectorArray::create();
+        const Vector<String>& columns = rowList->columnNames();
+        for (size_t i = 0; i < columns.size(); ++i)
+            columnNames->pushString(columns[i]);
+
+        RefPtr<InspectorArray> values = InspectorArray::create();
+        const Vector<SQLValue>& data = rowList->values();
+        for (size_t i = 0; i < data.size(); ++i) {
+            const SQLValue& value = rowList->values()[i];
+            switch (value.type()) {
+                case SQLValue::StringValue: values->pushString(value.string()); break;
+                case SQLValue::NumberValue: values->pushNumber(value.number()); break;
+                case SQLValue::NullValue: values->pushValue(InspectorValue::null()); break;
+            }
+        }
+        m_agent->frontend()->sqlTransactionSucceeded(m_transactionId, columnNames, values);
+        return true;
+    }
+
+private:
+    StatementCallback(long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+        : m_transactionId(transactionId)
+        , m_agent(agent) { }
+    long m_transactionId;
+    RefPtr<InspectorDatabaseAgent> m_agent;
+};
+
+class StatementErrorCallback : public SQLStatementErrorCallback {
+public:
+    static PassRefPtr<StatementErrorCallback> create(long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+    {
+        return adoptRef(new StatementErrorCallback(transactionId, agent));
+    }
+
+    virtual ~StatementErrorCallback() { }
+
+    virtual bool handleEvent(SQLTransaction*, SQLError* error)
+    {
+        reportTransactionFailed(m_agent.get(), m_transactionId, error);
+        return true;  
+    }
+
+private:
+    StatementErrorCallback(long transactionId, RefPtr<InspectorDatabaseAgent> agent)
+        : m_transactionId(transactionId)
+        , m_agent(agent) { }
+    long m_transactionId;
+    RefPtr<InspectorDatabaseAgent> m_agent;
+};
+
+class TransactionCallback : public SQLTransactionCallback {
+public:
+    static PassRefPtr<TransactionCallback> create(const String& sqlStatement, long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+    {
+        return adoptRef(new TransactionCallback(sqlStatement, transactionId, agent));
+    }
+
+    virtual ~TransactionCallback() { }
+
+    virtual bool handleEvent(SQLTransaction* transaction)
+    {
+        if (!m_agent->frontend())
+            return true;
+
+        Vector<SQLValue> sqlValues;
+        RefPtr<SQLStatementCallback> callback(StatementCallback::create(m_transactionId, m_agent));
+        RefPtr<SQLStatementErrorCallback> errorCallback(StatementErrorCallback::create(m_transactionId, m_agent));
+        ExceptionCode ec = 0;
+        transaction->executeSQL(m_sqlStatement, sqlValues, callback.release(), errorCallback.release(), ec);
+        return true;
+    }
+private:
+    TransactionCallback(const String& sqlStatement, long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+        : m_sqlStatement(sqlStatement)
+        , m_transactionId(transactionId)
+        , m_agent(agent) { }
+    String m_sqlStatement;
+    long m_transactionId;
+    RefPtr<InspectorDatabaseAgent> m_agent;
+};
+
+class TransactionErrorCallback : public SQLTransactionErrorCallback {
+public:
+    static PassRefPtr<TransactionErrorCallback> create(long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+    {
+        return adoptRef(new TransactionErrorCallback(transactionId, agent));
+    }
+
+    virtual ~TransactionErrorCallback() { }
+
+    virtual bool handleEvent(SQLError* error)
+    {
+        reportTransactionFailed(m_agent.get(), m_transactionId, error);
+        return true;
+    }
+private:
+    TransactionErrorCallback(long transactionId, PassRefPtr<InspectorDatabaseAgent> agent)
+        : m_transactionId(transactionId)
+        , m_agent(agent) { }
+    long m_transactionId;
+    RefPtr<InspectorDatabaseAgent> m_agent;
+};
+
+class TransactionSuccessCallback : public VoidCallback {
+public:
+    static PassRefPtr<TransactionSuccessCallback> create()
+    {
+        return adoptRef(new TransactionSuccessCallback());
+    }
+
+    virtual ~TransactionSuccessCallback() { }
+
+    virtual void handleEvent() { }
+
+private:
+    TransactionSuccessCallback() { }
+};
+
+} // namespace
+
+InspectorDatabaseAgent::~InspectorDatabaseAgent()
+{
+}
+
+void InspectorDatabaseAgent::getDatabaseTableNames(long databaseId, RefPtr<InspectorArray>* names)
+{
+    Database* database = databaseForId(databaseId);
+    if (database) {
+        Vector<String> tableNames = database->tableNames();
+        unsigned length = tableNames.size();
+        for (unsigned i = 0; i < length; ++i)
+            (*names)->pushString(tableNames[i]);
+    }
+}
+
+void InspectorDatabaseAgent::executeSQL(long databaseId, const String& query, bool* success, long* transactionId)
+{
+    Database* database = databaseForId(databaseId);
+    if (!database) {
+        *success = false;
+        return;
+    }
+
+    *transactionId = ++lastTransactionId;
+    RefPtr<SQLTransactionCallback> callback(TransactionCallback::create(query, *transactionId, this));
+    RefPtr<SQLTransactionErrorCallback> errorCallback(TransactionErrorCallback::create(*transactionId, this));
+    RefPtr<VoidCallback> successCallback(TransactionSuccessCallback::create());
+    database->transaction(callback.release(), errorCallback.release(), successCallback.release());
+    *success = true;
+}
+
+Database* InspectorDatabaseAgent::databaseForId(long databaseId)
+{
+    DatabaseResourcesMap::iterator it = m_databaseResources->find(databaseId);
+    if (it == m_databaseResources->end())
+        return 0;
+    return it->second->database();
+}
+
+void InspectorDatabaseAgent::selectDatabase(Database* database)
+{
+    if (!m_frontend)
+        return;
+
+    for (DatabaseResourcesMap::iterator it = m_databaseResources->begin(); it != m_databaseResources->end(); ++it) {
+        if (it->second->database() == database) {
+            m_frontend->selectDatabase(it->first);
+            break;
+        }
+    }
+}
+
+void InspectorDatabaseAgent::clearFrontend()
+{
+    m_frontend = 0;
+}
+
+InspectorDatabaseAgent::InspectorDatabaseAgent(DatabaseResourcesMap* databaseResources, InspectorFrontend* frontend)
+    : m_databaseResources(databaseResources)
+    , m_frontend(frontend)
+{
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INSPECTOR) && ENABLE(DATABASE)
diff --git a/WebCore/inspector/InspectorDatabaseAgent.h b/WebCore/inspector/InspectorDatabaseAgent.h
new file mode 100644
index 0000000..c73d3c8
--- /dev/null
+++ b/WebCore/inspector/InspectorDatabaseAgent.h
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2010 Google Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1.  Redistributions of source code must retain the above copyright
+ *     notice, this list of conditions and the following disclaimer.
+ * 2.  Redistributions in binary form must reproduce the above copyright
+ *     notice, this list of conditions and the following disclaimer in the
+ *     documentation and/or other materials provided with the distribution.
+ * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ *     its contributors may be used to endorse or promote products derived
+ *     from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorDatabaseAgent_h
+#define InspectorDatabaseAgent_h
+
+#include "PlatformString.h"
+#include "wtf/HashMap.h"
+#include "wtf/PassRefPtr.h"
+
+namespace WebCore {
+
+class Database;
+class InspectorArray;
+class InspectorController;
+class InspectorDatabaseResource;
+class InspectorFrontend;
+
+class InspectorDatabaseAgent : public RefCounted<InspectorDatabaseAgent> {
+public:
+    typedef HashMap<int, RefPtr<InspectorDatabaseResource> > DatabaseResourcesMap;
+
+    static PassRefPtr<InspectorDatabaseAgent> create(DatabaseResourcesMap* databaseResources, InspectorFrontend* frontend)
+    {
+        return adoptRef(new InspectorDatabaseAgent(databaseResources, frontend));
+    }
+
+    virtual ~InspectorDatabaseAgent();
+
+    // Called from the front-end.
+    void getDatabaseTableNames(long databaseId, RefPtr<InspectorArray>* names);
+    void executeSQL(long databaseId, const String& query, bool* success, long* transactionId);
+
+    // Called from the injected script.
+    Database* databaseForId(long databaseId);
+    void selectDatabase(Database* database);
+
+    InspectorFrontend* frontend() { return m_frontend; }
+    void clearFrontend();
+
+private:
+    InspectorDatabaseAgent(DatabaseResourcesMap*, InspectorFrontend*);
+
+    DatabaseResourcesMap* m_databaseResources;
+    InspectorFrontend* m_frontend;
+};
+
+} // namespace WebCore
+
+#endif // !defined(InspectorDatabaseAgent_h)
diff --git a/WebCore/inspector/InspectorStorageAgent.cpp b/WebCore/inspector/InspectorStorageAgent.cpp
deleted file mode 100644
index 1f565fa..0000000
--- a/WebCore/inspector/InspectorStorageAgent.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#include "InspectorStorageAgent.h"
-
-#if ENABLE(INSPECTOR) && ENABLE(DATABASE)
-
-#include "Database.h"
-#include "ExceptionCode.h"
-#include "InspectorFrontend.h"
-#include "InspectorValues.h"
-#include "SQLError.h"
-#include "SQLStatementCallback.h"
-#include "SQLStatementErrorCallback.h"
-#include "SQLResultSetRowList.h"
-#include "SQLTransaction.h"
-#include "SQLTransactionCallback.h"
-#include "SQLTransactionErrorCallback.h"
-#include "SQLValue.h"
-#include "VoidCallback.h"
-
-#include <wtf/Vector.h>
-
-namespace WebCore {
-
-namespace {
-
-long lastTransactionId = 0;
-
-void reportTransactionFailed(InspectorStorageAgent* agent, long transactionId, SQLError* error)
-{
-    if (!agent->frontend())
-        return;
-    RefPtr<InspectorObject> errorObject = InspectorObject::create();
-    errorObject->setString("message", error->message());
-    errorObject->setNumber("code", error->code());
-    agent->frontend()->sqlTransactionFailed(transactionId, errorObject);
-}
-
-class StatementCallback : public SQLStatementCallback {
-public:
-    static PassRefPtr<StatementCallback> create(long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-    {
-        return adoptRef(new StatementCallback(transactionId, agent));
-    }
-
-    virtual ~StatementCallback() { }
-
-    virtual bool handleEvent(SQLTransaction*, SQLResultSet* resultSet)
-    {
-        if (!m_agent->frontend())
-            return true;
-
-        SQLResultSetRowList* rowList = resultSet->rows();
-
-        RefPtr<InspectorArray> columnNames = InspectorArray::create();
-        const Vector<String>& columns = rowList->columnNames();
-        for (size_t i = 0; i < columns.size(); ++i)
-            columnNames->pushString(columns[i]);
-
-        RefPtr<InspectorArray> values = InspectorArray::create();
-        const Vector<SQLValue>& data = rowList->values();
-        for (size_t i = 0; i < data.size(); ++i) {
-            const SQLValue& value = rowList->values()[i];
-            switch (value.type()) {
-                case SQLValue::StringValue: values->pushString(value.string()); break;
-                case SQLValue::NumberValue: values->pushNumber(value.number()); break;
-                case SQLValue::NullValue: values->pushValue(InspectorValue::null()); break;
-            }
-        }
-        m_agent->frontend()->sqlTransactionSucceeded(m_transactionId, columnNames, values);
-        return true;
-    }
-
-private:
-    StatementCallback(long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-        : m_transactionId(transactionId)
-        , m_agent(agent) { }
-    long m_transactionId;
-    RefPtr<InspectorStorageAgent> m_agent;
-};
-
-class StatementErrorCallback : public SQLStatementErrorCallback {
-public:
-    static PassRefPtr<StatementErrorCallback> create(long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-    {
-        return adoptRef(new StatementErrorCallback(transactionId, agent));
-    }
-
-    virtual ~StatementErrorCallback() { }
-
-    virtual bool handleEvent(SQLTransaction*, SQLError* error)
-    {
-        reportTransactionFailed(m_agent.get(), m_transactionId, error);
-        return true;  
-    }
-
-private:
-    StatementErrorCallback(long transactionId, RefPtr<InspectorStorageAgent> agent)
-        : m_transactionId(transactionId)
-        , m_agent(agent) { }
-    long m_transactionId;
-    RefPtr<InspectorStorageAgent> m_agent;
-};
-
-class TransactionCallback : public SQLTransactionCallback {
-public:
-    static PassRefPtr<TransactionCallback> create(const String& sqlStatement, long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-    {
-        return adoptRef(new TransactionCallback(sqlStatement, transactionId, agent));
-    }
-
-    virtual ~TransactionCallback() { }
-
-    virtual bool handleEvent(SQLTransaction* transaction)
-    {
-        if (!m_agent->frontend())
-            return true;
-
-        Vector<SQLValue> sqlValues;
-        RefPtr<SQLStatementCallback> callback(StatementCallback::create(m_transactionId, m_agent));
-        RefPtr<SQLStatementErrorCallback> errorCallback(StatementErrorCallback::create(m_transactionId, m_agent));
-        ExceptionCode ec = 0;
-        transaction->executeSQL(m_sqlStatement, sqlValues, callback.release(), errorCallback.release(), ec);
-        return true;
-    }
-private:
-    TransactionCallback(const String& sqlStatement, long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-        : m_sqlStatement(sqlStatement)
-        , m_transactionId(transactionId)
-        , m_agent(agent) { }
-    String m_sqlStatement;
-    long m_transactionId;
-    RefPtr<InspectorStorageAgent> m_agent;
-};
-
-class TransactionErrorCallback : public SQLTransactionErrorCallback {
-public:
-    static PassRefPtr<TransactionErrorCallback> create(long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-    {
-        return adoptRef(new TransactionErrorCallback(transactionId, agent));
-    }
-
-    virtual ~TransactionErrorCallback() { }
-
-    virtual bool handleEvent(SQLError* error)
-    {
-        reportTransactionFailed(m_agent.get(), m_transactionId, error);
-        return true;
-    }
-private:
-    TransactionErrorCallback(long transactionId, PassRefPtr<InspectorStorageAgent> agent)
-        : m_transactionId(transactionId)
-        , m_agent(agent) { }
-    long m_transactionId;
-    RefPtr<InspectorStorageAgent> m_agent;
-};
-
-class TransactionSuccessCallback : public VoidCallback {
-public:
-    static PassRefPtr<TransactionSuccessCallback> create()
-    {
-        return adoptRef(new TransactionSuccessCallback());
-    }
-
-    virtual ~TransactionSuccessCallback() { }
-
-    virtual void handleEvent() { }
-
-private:
-    TransactionSuccessCallback() { }
-};
-
-} // namespace
-
-InspectorStorageAgent::InspectorStorageAgent(InspectorFrontend* frontend)
-    : m_frontend(frontend)
-{
-}
-
-InspectorStorageAgent::~InspectorStorageAgent()
-{
-}
-
-long InspectorStorageAgent::executeSQL(Database* database, const String& query)
-{
-    long transactionId = ++lastTransactionId;
-    RefPtr<SQLTransactionCallback> callback(TransactionCallback::create(query, transactionId, this));
-    RefPtr<SQLTransactionErrorCallback> errorCallback(TransactionErrorCallback::create(transactionId, this));
-    RefPtr<VoidCallback> successCallback(TransactionSuccessCallback::create());
-    database->transaction(callback.release(), errorCallback.release(), successCallback.release());
-    return transactionId;
-}
-
-void InspectorStorageAgent::clearFrontend()
-{
-    m_frontend = 0;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INSPECTOR) && ENABLE(DATABASE)
diff --git a/WebCore/inspector/InspectorStorageAgent.h b/WebCore/inspector/InspectorStorageAgent.h
deleted file mode 100644
index b1ceee4..0000000
--- a/WebCore/inspector/InspectorStorageAgent.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef InspectorStorageAgent_h
-#define InspectorStorageAgent_h
-
-#include "PlatformString.h"
-#include "wtf/PassRefPtr.h"
-
-namespace WebCore {
-
-class Database;
-class InspectorFrontend;
-
-class InspectorStorageAgent : public RefCounted<InspectorStorageAgent> {
-public:
-    static PassRefPtr<InspectorStorageAgent> create(InspectorFrontend* frontend)
-    {
-        return adoptRef(new InspectorStorageAgent(frontend));
-    }
-
-    virtual ~InspectorStorageAgent();
-
-    long executeSQL(Database*, const String& query);
-
-    InspectorFrontend* frontend() { return m_frontend; }
-    void clearFrontend();
-
-private:
-    InspectorStorageAgent(InspectorFrontend*);
-
-    InspectorFrontend* m_frontend;
-};
-
-} // namespace WebCore
-
-#endif // !defined(InspectorStorageAgent_h)
diff --git a/WebCore/inspector/front-end/ScriptsPanel.js b/WebCore/inspector/front-end/ScriptsPanel.js
index fd44404..7d7e129 100644
--- a/WebCore/inspector/front-end/ScriptsPanel.js
+++ b/WebCore/inspector/front-end/ScriptsPanel.js
@@ -220,7 +220,7 @@ WebInspector.ScriptsPanel.prototype = {
             this.visibleView.show(this.viewsContainerElement);
 
         if (this._attachDebuggerWhenShown) {
-            InspectorBackend.enableDebugger(false);
+            InspectorBackend.enableDebuggerFromFrontend(false);
             delete this._attachDebuggerWhenShown;
         }
     },
diff --git a/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp b/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp
index 345e43e..caeffb6 100644
--- a/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp
+++ b/WebKit/chromium/src/WebDevToolsFrontendImpl.cpp
@@ -38,7 +38,6 @@
 #include "Document.h"
 #include "Event.h"
 #include "Frame.h"
-#include "InspectorBackend.h"
 #include "InspectorController.h"
 #include "InspectorFrontendClientImpl.h"
 #include "InspectorFrontendHost.h"

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list