[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

andreip at google.com andreip at google.com
Wed Dec 22 11:40:11 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 45f9a7bee4050d7bd8932f70b27d608752ef0c85
Author: andreip at google.com <andreip at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 3 10:43:59 2010 +0000

    2010-07-30  Andrei Popescu  <andreip at dhcp-172-16-14-12.lon.corp.google.com>
    
            Reviewed by Jeremy Orlow.
    
            Rename IDBDatabaseRequest to IDBDatabase
            https://bugs.webkit.org/show_bug.cgi?id=43250
    
            No new tests, just refactoring.
    
            * Android.derived.jscbindings.mk:
            * Android.derived.v8bindings.mk:
            * Android.mk:
            * CMakeLists.txt:
            * DerivedSources.cpp:
            * DerivedSources.make:
            * GNUmakefile.am:
            * WebCore.gypi:
            * WebCore.pri:
            * WebCore.pro:
            * WebCore.vcproj/WebCore.vcproj:
            * WebCore.vcproj/WebCore.vcproj~: Added.
            * WebCore.xcodeproj/project.pbxproj:
            * WebCore.xcodeproj/project.pbxproj~: Added.
            * bindings/js/JSIDBAnyCustom.cpp:
            (WebCore::toJS):
            * bindings/v8/custom/V8IDBAnyCustom.cpp:
            (WebCore::toV8):
            * storage/IDBAny.cpp:
            (WebCore::IDBAny::idbDatabase):
            (WebCore::IDBAny::set):
            * storage/IDBAny.h:
            (WebCore::IDBAny::):
            * storage/IDBCallbacks.h:
            * storage/IDBDatabase.cpp: Added.
            (WebCore::IDBDatabase::IDBDatabase):
            (WebCore::IDBDatabase::~IDBDatabase):
            (WebCore::IDBDatabase::createObjectStore):
            (WebCore::IDBDatabase::objectStore):
            (WebCore::IDBDatabase::removeObjectStore):
            * storage/IDBDatabase.h:
            (WebCore::IDBDatabase::create):
            (WebCore::IDBDatabase::name):
            (WebCore::IDBDatabase::description):
            (WebCore::IDBDatabase::version):
            (WebCore::IDBDatabase::objectStores):
            * storage/IDBDatabase.idl: Added.
            * storage/IDBDatabaseBackendImpl.cpp: Added.
            (WebCore::IDBDatabaseBackendImpl::IDBDatabaseBackendImpl):
            (WebCore::IDBDatabaseBackendImpl::~IDBDatabaseBackendImpl):
            (WebCore::IDBDatabaseBackendImpl::objectStores):
            (WebCore::IDBDatabaseBackendImpl::createObjectStore):
            (WebCore::IDBDatabaseBackendImpl::objectStore):
            (WebCore::IDBDatabaseBackendImpl::removeObjectStore):
            * storage/IDBDatabaseBackendImpl.h: Added.
            (WebCore::IDBDatabaseBackendImpl::create):
            (WebCore::IDBDatabaseBackendImpl::name):
            (WebCore::IDBDatabaseBackendImpl::description):
            (WebCore::IDBDatabaseBackendImpl::version):
            * storage/IDBDatabaseBackendInterface.h: Added.
            (WebCore::IDBDatabaseBackendInterface::~IDBDatabaseBackendInterface):
            * storage/IDBDatabaseImpl.cpp: Removed.
            * storage/IDBDatabaseImpl.h: Removed.
            * storage/IDBDatabaseRequest.cpp: Removed.
            * storage/IDBDatabaseRequest.h: Removed.
            * storage/IDBDatabaseRequest.idl: Removed.
            * storage/IDBFactoryBackendImpl.cpp:
            (WebCore::IDBFactoryBackendImpl::open):
            * storage/IDBFactoryBackendImpl.h:
            * storage/IDBRequest.cpp:
            (WebCore::IDBRequest::onSuccess):
            * storage/IDBRequest.h:
    2010-07-30  Andrei Popescu  <andreip at dhcp-172-16-14-12.lon.corp.google.com>
    
            Reviewed by Jeremy Orlow.
    
            Rename IDBDatabaseRequest to IDBDatabase
            https://bugs.webkit.org/show_bug.cgi?id=43250
    
            * src/IDBCallbacksProxy.cpp:
            (WebCore::IDBCallbacksProxy::onSuccess):
            * src/IDBCallbacksProxy.h:
            * src/IDBDatabaseProxy.cpp:
            (WebCore::IDBDatabaseProxy::create):
            * src/IDBDatabaseProxy.h:
            * src/WebIDBDatabaseImpl.cpp:
            (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
            (WebKit::WebIDBDatabaseImpl::name):
            (WebKit::WebIDBDatabaseImpl::description):
            (WebKit::WebIDBDatabaseImpl::version):
            (WebKit::WebIDBDatabaseImpl::objectStores):
            (WebKit::WebIDBDatabaseImpl::createObjectStore):
            (WebKit::WebIDBDatabaseImpl::objectStore):
            (WebKit::WebIDBDatabaseImpl::removeObjectStore):
            * src/WebIDBDatabaseImpl.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64543 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/Android.derived.jscbindings.mk b/WebCore/Android.derived.jscbindings.mk
index 0da33d0..fc081d3 100644
--- a/WebCore/Android.derived.jscbindings.mk
+++ b/WebCore/Android.derived.jscbindings.mk
@@ -363,7 +363,7 @@ GEN := \
     $(intermediates)/storage/JSIDBAny.h \
     $(intermediates)/storage/JSIDBDatabaseError.h \
     $(intermediates)/storage/JSIDBDatabaseException.h \
-    $(intermediates)/storage/JSIDBDatabaseRequest.h \
+    $(intermediates)/storage/JSIDBDatabase.h \
     $(intermediates)/storage/JSIDBErrorEvent.h \
     $(intermediates)/storage/JSIDBEvent.h \
     $(intermediates)/storage/JSIDBFactory.h \
diff --git a/WebCore/Android.derived.v8bindings.mk b/WebCore/Android.derived.v8bindings.mk
index 216cde9..7f922ed 100644
--- a/WebCore/Android.derived.v8bindings.mk
+++ b/WebCore/Android.derived.v8bindings.mk
@@ -344,7 +344,7 @@ GEN := \
     $(intermediates)/bindings/V8IDBAny.h \
     $(intermediates)/bindings/V8IDBDatabaseError.h \
     $(intermediates)/bindings/V8IDBDatabaseException.h \
-    $(intermediates)/bindings/V8IDBDatabaseRequest.h \
+    $(intermediates)/bindings/V8IDBDatabase.h \
     $(intermediates)/bindings/V8IDBErrorEvent.h \
     $(intermediates)/bindings/V8IDBEvent.h \
     $(intermediates)/bindings/V8IDBFactory.h \
diff --git a/WebCore/Android.mk b/WebCore/Android.mk
index d75fd59..01c83c6 100644
--- a/WebCore/Android.mk
+++ b/WebCore/Android.mk
@@ -743,8 +743,8 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
 	storage/DatabaseThread.cpp \
 	storage/DatabaseTracker.cpp \
 	storage/IDBAny.cpp \
-	storage/IDBDatabaseImpl.cpp \
-	storage/IDBDatabaseRequest.cpp \
+	storage/IDBDatabase.cpp \
+	storage/IDBDatabaseBackendImpl.cpp \
 	storage/IDBErrorEvent.cpp \
 	storage/IDBEvent.cpp \
 	storage/IDBIndex.cpp \
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index 3010346..ca7749b 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -336,7 +336,7 @@ SET(WebCore_IDL_FILES
     storage/IDBAny.idl
     storage/IDBDatabaseError.idl
     storage/IDBDatabaseException.idl
-    storage/IDBDatabaseRequest.idl
+    storage/IDBDatabase.idl
     storage/IDBErrorEvent.idl
     storage/IDBEvent.idl
     storage/IDBFactory.idl
@@ -1436,8 +1436,8 @@ SET(WebCore_SOURCES
     storage/DatabaseThread.cpp
     storage/DatabaseTracker.cpp
     storage/IDBAny.cpp
-    storage/IDBDatabaseImpl.cpp
-    storage/IDBDatabaseRequest.cpp
+    storage/IDBDatabase.cpp
+    storage/IDBDatabaseBackendImpl.cpp
     storage/IDBErrorEvent.cpp
     storage/IDBEvent.cpp
     storage/IDBIndex.cpp
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index a4538b1..d5e22ea 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,75 @@
+2010-07-30  Andrei Popescu  <andreip at dhcp-172-16-14-12.lon.corp.google.com>
+
+        Reviewed by Jeremy Orlow.
+
+        Rename IDBDatabaseRequest to IDBDatabase
+        https://bugs.webkit.org/show_bug.cgi?id=43250
+
+        No new tests, just refactoring.
+
+        * Android.derived.jscbindings.mk:
+        * Android.derived.v8bindings.mk:
+        * Android.mk:
+        * CMakeLists.txt:
+        * DerivedSources.cpp:
+        * DerivedSources.make:
+        * GNUmakefile.am:
+        * WebCore.gypi:
+        * WebCore.pri:
+        * WebCore.pro:
+        * WebCore.vcproj/WebCore.vcproj:
+        * WebCore.vcproj/WebCore.vcproj~: Added.
+        * WebCore.xcodeproj/project.pbxproj:
+        * WebCore.xcodeproj/project.pbxproj~: Added.
+        * bindings/js/JSIDBAnyCustom.cpp:
+        (WebCore::toJS):
+        * bindings/v8/custom/V8IDBAnyCustom.cpp:
+        (WebCore::toV8):
+        * storage/IDBAny.cpp:
+        (WebCore::IDBAny::idbDatabase):
+        (WebCore::IDBAny::set):
+        * storage/IDBAny.h:
+        (WebCore::IDBAny::):
+        * storage/IDBCallbacks.h:
+        * storage/IDBDatabase.cpp: Added.
+        (WebCore::IDBDatabase::IDBDatabase):
+        (WebCore::IDBDatabase::~IDBDatabase):
+        (WebCore::IDBDatabase::createObjectStore):
+        (WebCore::IDBDatabase::objectStore):
+        (WebCore::IDBDatabase::removeObjectStore):
+        * storage/IDBDatabase.h:
+        (WebCore::IDBDatabase::create):
+        (WebCore::IDBDatabase::name):
+        (WebCore::IDBDatabase::description):
+        (WebCore::IDBDatabase::version):
+        (WebCore::IDBDatabase::objectStores):
+        * storage/IDBDatabase.idl: Added.
+        * storage/IDBDatabaseBackendImpl.cpp: Added.
+        (WebCore::IDBDatabaseBackendImpl::IDBDatabaseBackendImpl):
+        (WebCore::IDBDatabaseBackendImpl::~IDBDatabaseBackendImpl):
+        (WebCore::IDBDatabaseBackendImpl::objectStores):
+        (WebCore::IDBDatabaseBackendImpl::createObjectStore):
+        (WebCore::IDBDatabaseBackendImpl::objectStore):
+        (WebCore::IDBDatabaseBackendImpl::removeObjectStore):
+        * storage/IDBDatabaseBackendImpl.h: Added.
+        (WebCore::IDBDatabaseBackendImpl::create):
+        (WebCore::IDBDatabaseBackendImpl::name):
+        (WebCore::IDBDatabaseBackendImpl::description):
+        (WebCore::IDBDatabaseBackendImpl::version):
+        * storage/IDBDatabaseBackendInterface.h: Added.
+        (WebCore::IDBDatabaseBackendInterface::~IDBDatabaseBackendInterface):
+        * storage/IDBDatabaseImpl.cpp: Removed.
+        * storage/IDBDatabaseImpl.h: Removed.
+        * storage/IDBDatabaseRequest.cpp: Removed.
+        * storage/IDBDatabaseRequest.h: Removed.
+        * storage/IDBDatabaseRequest.idl: Removed.
+        * storage/IDBFactoryBackendImpl.cpp:
+        (WebCore::IDBFactoryBackendImpl::open):
+        * storage/IDBFactoryBackendImpl.h:
+        * storage/IDBRequest.cpp:
+        (WebCore::IDBRequest::onSuccess):
+        * storage/IDBRequest.h:
+
 2010-08-03  Satish Sampath  <satish at chromium.org>
 
         Reviewed by Kent Tamura.
diff --git a/WebCore/DerivedSources.cpp b/WebCore/DerivedSources.cpp
index 3e5fb60..4b85642 100644
--- a/WebCore/DerivedSources.cpp
+++ b/WebCore/DerivedSources.cpp
@@ -176,9 +176,9 @@
 #include "JSHTMLUListElement.cpp"
 #include "JSHTMLVideoElement.cpp"
 #include "JSIDBAny.cpp"
+#include "JSIDBDatabase.cpp"
 #include "JSIDBDatabaseError.cpp"
 #include "JSIDBDatabaseException.cpp"
-#include "JSIDBDatabaseRequest.cpp"
 #include "JSIDBErrorEvent.cpp"
 #include "JSIDBEvent.cpp"
 #include "JSIDBFactory.cpp"
diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
index d8a2269..baecb31 100644
--- a/WebCore/DerivedSources.make
+++ b/WebCore/DerivedSources.make
@@ -228,7 +228,7 @@ DOM_CLASSES = \
     IDBAny \
     IDBDatabaseError \
     IDBDatabaseException \
-    IDBDatabaseRequest \
+    IDBDatabase \
     IDBErrorEvent \
     IDBEvent \
     IDBFactory \
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 71b4cc8..8d1e6de 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -2837,8 +2837,8 @@ webcore_built_sources += \
 	DerivedSources/WebCore/JSIDBDatabaseError.h \
 	DerivedSources/WebCore/JSIDBDatabaseException.cpp \
 	DerivedSources/WebCore/JSIDBDatabaseException.h \
-	DerivedSources/WebCore/JSIDBDatabaseRequest.cpp \
-	DerivedSources/WebCore/JSIDBDatabaseRequest.h \
+	DerivedSources/WebCore/JSIDBDatabase.cpp \
+	DerivedSources/WebCore/JSIDBDatabase.h \
 	DerivedSources/WebCore/JSIDBErrorEvent.cpp \
 	DerivedSources/WebCore/JSIDBErrorEvent.h \
 	DerivedSources/WebCore/JSIDBEvent.cpp \
@@ -2860,13 +2860,13 @@ webcore_sources += \
 	WebCore/storage/IDBAny.cpp \
 	WebCore/storage/IDBAny.h \
 	WebCore/storage/IDBCallbacks.h \
+	WebCore/storage/IDBDatabase.cpp \
 	WebCore/storage/IDBDatabase.h \
-	WebCore/storage/IDBDatabaseImpl.cpp \
-	WebCore/storage/IDBDatabaseImpl.h \
+	WebCore/storage/IDBDatabaseBackendImpl.cpp \
+	WebCore/storage/IDBDatabaseBackendImpl.h \
+	WebCore/storage/IDBDatabaseBackendInterface.h \
 	WebCore/storage/IDBDatabaseError.h \
 	WebCore/storage/IDBDatabaseException.h \
-	WebCore/storage/IDBDatabaseRequest.cpp \
-	WebCore/storage/IDBDatabaseRequest.h \
 	WebCore/storage/IDBErrorEvent.cpp \
 	WebCore/storage/IDBErrorEvent.h \
 	WebCore/storage/IDBEvent.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 92c3c4e..1637157 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -239,7 +239,7 @@
             'storage/IDBAny.idl',
             'storage/IDBDatabaseError.idl',
             'storage/IDBDatabaseException.idl',
-            'storage/IDBDatabaseRequest.idl',
+            'storage/IDBDatabase.idl',
             'storage/IDBErrorEvent.idl',
             'storage/IDBEvent.idl',
             'storage/IDBFactory.idl',
@@ -3498,12 +3498,12 @@
             'storage/IDBAny.h',
             'storage/IDBCallbacks.h',
             'storage/IDBDatabase.h',
+            'storage/IDBDatabase.cpp,
             'storage/IDBDatabaseError.h',
             'storage/IDBDatabaseException.h',
-            'storage/IDBDatabaseImpl.cpp',
-            'storage/IDBDatabaseImpl.h',
-            'storage/IDBDatabaseRequest.cpp',
-            'storage/IDBDatabaseRequest.h',
+            'storage/IDBDatabaseBackendImpl.cpp',
+            'storage/IDBDatabaseBackendImpl.h',
+            'storage/IDBDatabaseBackendInterface.h',
             'storage/IDBEvent.cpp',
             'storage/IDBEvent.h',
             'storage/IDBErrorEvent.cpp',
diff --git a/WebCore/WebCore.pri b/WebCore/WebCore.pri
index ff65cae..2fdfcd1 100644
--- a/WebCore/WebCore.pri
+++ b/WebCore/WebCore.pri
@@ -485,7 +485,7 @@ IDL_BINDINGS += \
     storage/IDBAny.idl \
     storage/IDBDatabaseError.idl \
     storage/IDBDatabaseException.idl \
-    storage/IDBDatabaseRequest.idl \
+    storage/IDBDatabase.idl \
     storage/IDBErrorEvent.idl \
     storage/IDBEvent.idl \
     storage/IDBIndex.idl \
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 54bd3a3..0beb5ff 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2426,10 +2426,10 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
         storage/IDBAny.h \
         storage/IDBCallbacks.h \
         storage/IDBDatabase.h \
-        storage/IDBDatabaseImpl.h \
+        storage/IDBDatabaseBackendImpl.h \
+        storage/IDBDatabaseBackendInterface.h \
         storage/IDBDatabaseError.h \
         storage/IDBDatabaseException.h \
-        storage/IDBDatabaseRequest.h \
         storage/IDBErrorEvent.h \
         storage/IDBEvent.h \
         storage/IDBFactory.h \
@@ -2451,8 +2451,8 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
         bindings/js/JSIDBAnyCustom.cpp \
         bindings/js/JSIDBKeyCustom.cpp \
         storage/IDBAny.cpp \
-        storage/IDBDatabaseImpl.cpp \
-        storage/IDBDatabaseRequest.cpp \
+        storage/IDBDatabase.cpp \
+        storage/IDBDatabaseBackendImpl.cpp \
         storage/IDBErrorEvent.cpp \
         storage/IDBEvent.cpp \
         storage/IDBFactory.cpp \
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index 7b3b499..ba58737 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -44676,7 +44676,7 @@
 					>
 				</File>
 				<File
-					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBDatabaseRequest.cpp"
+					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBDatabase.cpp"
 					>
 					<FileConfiguration
 						Name="Debug|Win32"
@@ -44728,7 +44728,7 @@
 					</FileConfiguration>
 				</File>
 				<File
-					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBDatabaseRequest.h"
+					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBDatabase.h"
 					>
 				</File>
 				<File
@@ -50141,27 +50141,27 @@
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseError.h"
+				RelativePath="..\storage\IDBDatabase.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseException.h"
+				RelativePath="..\storage\IDBDatabaseBackendImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseImpl.cpp"
+				RelativePath="..\storage\IDBDatabaseBackendImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseImpl.h"
+				RelativePath="..\storage\IDBDatabaseBackendInterface.h"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseRequest.cpp"
+				RelativePath="..\storage\IDBDatabaseError.h"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBDatabaseRequest.h"
+				RelativePath="..\storage\IDBDatabaseException.h"
 				>
 			</File>
 			<File
@@ -50252,14 +50252,14 @@
 				RelativePath="..\storage\IDBSuccessEvent.h"
 				>
 			</File>
-            <File
-                RelativePath="..\storage\IDBFactory.cpp"
-                >
-            </File>
-            <File
-                RelativePath="..\storage\IDBFactory.h"
-                >
-            </File>
+			<File
+				RelativePath="..\storage\IDBFactory.cpp"
+				>
+			</File>
+			<File
+				RelativePath="..\storage\IDBFactory.h"
+				>
+			</File>
 			<File
 				RelativePath="..\storage\IDBFactoryBackendInterface.cpp"
 				>
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 68ccca7..900a8b4 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -4356,6 +4356,9 @@
 		B5D31DFA11CF610B009F22B4 /* ActiveDOMCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B5D31DF811CF610B009F22B4 /* ActiveDOMCallback.cpp */; };
 		B5D31DFB11CF610B009F22B4 /* ActiveDOMCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D31DF911CF610B009F22B4 /* ActiveDOMCallback.h */; };
 		B5D3601A112F8B560048DEA8 /* DatabaseCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = B5D36019112F8B560048DEA8 /* DatabaseCallback.h */; };
+		B61762541203374F00EF9114 /* IDBDatabaseBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = B61762531203374F00EF9114 /* IDBDatabaseBackendInterface.h */; };
+		B61762621203490800EF9114 /* IDBDatabaseBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = B61762611203490800EF9114 /* IDBDatabaseBackendImpl.h */; };
+		B691C1F91206D4A00025D980 /* IDBDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A311D4FB3D004C3E4B /* IDBDatabase.cpp */; };
 		B71FE6DF11091CB300DAEF77 /* PrintContext.h in Headers */ = {isa = PBXBuildFile; fileRef = B776D43A1104525D00BEB0EC /* PrintContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		B734B181119B9911006587BD /* FontTranscoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B734B180119B9911006587BD /* FontTranscoder.cpp */; };
 		B734B183119B991D006587BD /* FontTranscoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B734B182119B991D006587BD /* FontTranscoder.h */; };
@@ -4940,8 +4943,8 @@
 		C585A67F11D4FB08004C3E4B /* JSIDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */; };
 		C585A68011D4FB08004C3E4B /* JSIDBDatabaseException.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */; };
 		C585A68111D4FB08004C3E4B /* JSIDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */; };
-		C585A68211D4FB08004C3E4B /* JSIDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */; };
-		C585A68311D4FB08004C3E4B /* JSIDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */; };
+		C585A68211D4FB08004C3E4B /* JSIDBDatabase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66A11D4FB07004C3E4B /* JSIDBDatabase.cpp */; };
+		C585A68311D4FB08004C3E4B /* JSIDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */; };
 		C585A68411D4FB08004C3E4B /* JSIDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */; };
 		C585A68511D4FB08004C3E4B /* JSIDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */; };
 		C585A68611D4FB08004C3E4B /* JSIDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */; };
@@ -4961,13 +4964,10 @@
 		C585A6CC11D4FB3D004C3E4B /* IDBAny.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A69811D4FB3D004C3E4B /* IDBAny.cpp */; };
 		C585A6CD11D4FB3D004C3E4B /* IDBAny.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69911D4FB3D004C3E4B /* IDBAny.h */; };
 		C585A6CF11D4FB3D004C3E4B /* IDBCallbacks.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */; };
-		C585A6D011D4FB3D004C3E4B /* IDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */; };
 		C585A6D111D4FB3D004C3E4B /* IDBDatabaseError.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */; };
 		C585A6D311D4FB3D004C3E4B /* IDBDatabaseException.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */; };
-		C585A6D511D4FB3D004C3E4B /* IDBDatabaseImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */; };
-		C585A6D611D4FB3D004C3E4B /* IDBDatabaseImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */; };
-		C585A6D711D4FB3D004C3E4B /* IDBDatabaseRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */; };
-		C585A6D811D4FB3D004C3E4B /* IDBDatabaseRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */; };
+		C585A6D511D4FB3D004C3E4B /* IDBDatabaseBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A111D4FB3D004C3E4B /* IDBDatabaseBackendImpl.cpp */; };
+		C585A6D811D4FB3D004C3E4B /* IDBDatabase.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A411D4FB3D004C3E4B /* IDBDatabase.h */; };
 		C585A6DA11D4FB3D004C3E4B /* IDBErrorEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */; };
 		C585A6DB11D4FB3D004C3E4B /* IDBErrorEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */; };
 		C585A6DD11D4FB3D004C3E4B /* IDBEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6A911D4FB3D004C3E4B /* IDBEvent.cpp */; };
@@ -10022,6 +10022,8 @@
 		B5D31DF811CF610B009F22B4 /* ActiveDOMCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ActiveDOMCallback.cpp; path = generic/ActiveDOMCallback.cpp; sourceTree = "<group>"; };
 		B5D31DF911CF610B009F22B4 /* ActiveDOMCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ActiveDOMCallback.h; path = generic/ActiveDOMCallback.h; sourceTree = "<group>"; };
 		B5D36019112F8B560048DEA8 /* DatabaseCallback.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DatabaseCallback.h; sourceTree = "<group>"; };
+		B61762531203374F00EF9114 /* IDBDatabaseBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseBackendInterface.h; sourceTree = "<group>"; };
+		B61762611203490800EF9114 /* IDBDatabaseBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseBackendImpl.h; sourceTree = "<group>"; };
 		B734B180119B9911006587BD /* FontTranscoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FontTranscoder.cpp; path = transcoder/FontTranscoder.cpp; sourceTree = "<group>"; };
 		B734B182119B991D006587BD /* FontTranscoder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FontTranscoder.h; path = transcoder/FontTranscoder.h; sourceTree = "<group>"; };
 		B776D43A1104525D00BEB0EC /* PrintContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrintContext.h; sourceTree = "<group>"; };
@@ -10644,8 +10646,8 @@
 		C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseError.h; sourceTree = "<group>"; };
 		C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseException.cpp; sourceTree = "<group>"; };
 		C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseException.h; sourceTree = "<group>"; };
-		C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabaseRequest.cpp; sourceTree = "<group>"; };
-		C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabaseRequest.h; sourceTree = "<group>"; };
+		C585A66A11D4FB07004C3E4B /* JSIDBDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBDatabase.cpp; sourceTree = "<group>"; };
+		C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBDatabase.h; sourceTree = "<group>"; };
 		C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBErrorEvent.cpp; sourceTree = "<group>"; };
 		C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBErrorEvent.h; sourceTree = "<group>"; };
 		C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBEvent.cpp; sourceTree = "<group>"; };
@@ -10666,16 +10668,14 @@
 		C585A69911D4FB3D004C3E4B /* IDBAny.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBAny.h; sourceTree = "<group>"; };
 		C585A69A11D4FB3D004C3E4B /* IDBAny.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBAny.idl; sourceTree = "<group>"; };
 		C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCallbacks.h; sourceTree = "<group>"; };
-		C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabase.h; sourceTree = "<group>"; };
 		C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseError.h; sourceTree = "<group>"; };
 		C585A69E11D4FB3D004C3E4B /* IDBDatabaseError.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseError.idl; sourceTree = "<group>"; };
 		C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseException.h; sourceTree = "<group>"; };
 		C585A6A011D4FB3D004C3E4B /* IDBDatabaseException.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseException.idl; sourceTree = "<group>"; };
-		C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseImpl.cpp; sourceTree = "<group>"; };
-		C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseImpl.h; sourceTree = "<group>"; };
-		C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseRequest.cpp; sourceTree = "<group>"; };
-		C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabaseRequest.h; sourceTree = "<group>"; };
-		C585A6A511D4FB3D004C3E4B /* IDBDatabaseRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabaseRequest.idl; sourceTree = "<group>"; };
+		C585A6A111D4FB3D004C3E4B /* IDBDatabaseBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabaseBackendImpl.cpp; sourceTree = "<group>"; };
+		C585A6A311D4FB3D004C3E4B /* IDBDatabase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBDatabase.cpp; sourceTree = "<group>"; };
+		C585A6A411D4FB3D004C3E4B /* IDBDatabase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBDatabase.h; sourceTree = "<group>"; };
+		C585A6A511D4FB3D004C3E4B /* IDBDatabase.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBDatabase.idl; sourceTree = "<group>"; };
 		C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBErrorEvent.cpp; sourceTree = "<group>"; };
 		C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBErrorEvent.h; sourceTree = "<group>"; };
 		C585A6A811D4FB3D004C3E4B /* IDBErrorEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBErrorEvent.idl; sourceTree = "<group>"; };
@@ -11389,16 +11389,16 @@
 				C585A69911D4FB3D004C3E4B /* IDBAny.h */,
 				C585A69A11D4FB3D004C3E4B /* IDBAny.idl */,
 				C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */,
-				C585A69C11D4FB3D004C3E4B /* IDBDatabase.h */,
+				C585A6A311D4FB3D004C3E4B /* IDBDatabase.cpp */,
+				C585A6A411D4FB3D004C3E4B /* IDBDatabase.h */,
+				C585A6A511D4FB3D004C3E4B /* IDBDatabase.idl */,
+				C585A6A111D4FB3D004C3E4B /* IDBDatabaseBackendImpl.cpp */,
+				B61762611203490800EF9114 /* IDBDatabaseBackendImpl.h */,
+				B61762531203374F00EF9114 /* IDBDatabaseBackendInterface.h */,
 				C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */,
 				C585A69E11D4FB3D004C3E4B /* IDBDatabaseError.idl */,
 				C585A69F11D4FB3D004C3E4B /* IDBDatabaseException.h */,
 				C585A6A011D4FB3D004C3E4B /* IDBDatabaseException.idl */,
-				C585A6A111D4FB3D004C3E4B /* IDBDatabaseImpl.cpp */,
-				C585A6A211D4FB3D004C3E4B /* IDBDatabaseImpl.h */,
-				C585A6A311D4FB3D004C3E4B /* IDBDatabaseRequest.cpp */,
-				C585A6A411D4FB3D004C3E4B /* IDBDatabaseRequest.h */,
-				C585A6A511D4FB3D004C3E4B /* IDBDatabaseRequest.idl */,
 				C585A6A611D4FB3D004C3E4B /* IDBErrorEvent.cpp */,
 				C585A6A711D4FB3D004C3E4B /* IDBErrorEvent.h */,
 				C585A6A811D4FB3D004C3E4B /* IDBErrorEvent.idl */,
@@ -14855,8 +14855,8 @@
 				C585A66711D4FB07004C3E4B /* JSIDBDatabaseError.h */,
 				C585A66811D4FB07004C3E4B /* JSIDBDatabaseException.cpp */,
 				C585A66911D4FB07004C3E4B /* JSIDBDatabaseException.h */,
-				C585A66A11D4FB07004C3E4B /* JSIDBDatabaseRequest.cpp */,
-				C585A66B11D4FB07004C3E4B /* JSIDBDatabaseRequest.h */,
+				C585A66A11D4FB07004C3E4B /* JSIDBDatabase.cpp */,
+				C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */,
 				C585A66C11D4FB07004C3E4B /* JSIDBErrorEvent.cpp */,
 				C585A66D11D4FB07004C3E4B /* JSIDBErrorEvent.h */,
 				C585A66E11D4FB07004C3E4B /* JSIDBEvent.cpp */,
@@ -18588,11 +18588,9 @@
 				C585A6CD11D4FB3D004C3E4B /* IDBAny.h in Headers */,
 				C585A66311D4FAC5004C3E4B /* IDBBindingUtilities.h in Headers */,
 				C585A6CF11D4FB3D004C3E4B /* IDBCallbacks.h in Headers */,
-				C585A6D011D4FB3D004C3E4B /* IDBDatabase.h in Headers */,
+				C585A6D811D4FB3D004C3E4B /* IDBDatabase.h in Headers */,
 				C585A6D111D4FB3D004C3E4B /* IDBDatabaseError.h in Headers */,
 				C585A6D311D4FB3D004C3E4B /* IDBDatabaseException.h in Headers */,
-				C585A6D611D4FB3D004C3E4B /* IDBDatabaseImpl.h in Headers */,
-				C585A6D811D4FB3D004C3E4B /* IDBDatabaseRequest.h in Headers */,
 				C585A6DB11D4FB3D004C3E4B /* IDBErrorEvent.h in Headers */,
 				C585A6DE11D4FB3D004C3E4B /* IDBEvent.h in Headers */,
 				C585A6FE11D4FB3D004C3E4B /* IDBFactory.h in Headers */,
@@ -18845,7 +18843,7 @@
 				C585A67D11D4FB08004C3E4B /* JSIDBAny.h in Headers */,
 				C585A67F11D4FB08004C3E4B /* JSIDBDatabaseError.h in Headers */,
 				C585A68111D4FB08004C3E4B /* JSIDBDatabaseException.h in Headers */,
-				C585A68311D4FB08004C3E4B /* JSIDBDatabaseRequest.h in Headers */,
+				C585A68311D4FB08004C3E4B /* JSIDBDatabase.h in Headers */,
 				C585A68511D4FB08004C3E4B /* JSIDBErrorEvent.h in Headers */,
 				C585A68711D4FB08004C3E4B /* JSIDBEvent.h in Headers */,
 				C585A69711D4FB13004C3E4B /* JSIDBFactory.h in Headers */,
@@ -19983,6 +19981,8 @@
 				515788C11207852C00A37C4A /* VisitedLinkStrategy.h in Headers */,
 				D39D006D11F8E308006041F2 /* PopupMenuMac.h in Headers */,
 				D39D009D11F907E6006041F2 /* SearchPopupMenuMac.h in Headers */,
+				B61762541203374F00EF9114 /* IDBDatabaseBackendInterface.h in Headers */,
+				B61762621203490800EF9114 /* IDBDatabaseBackendImpl.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -21021,8 +21021,8 @@
 				51E1ECC00C91C90400DC255B /* IconRecord.cpp in Sources */,
 				C585A6CC11D4FB3D004C3E4B /* IDBAny.cpp in Sources */,
 				C585A66211D4FAC5004C3E4B /* IDBBindingUtilities.cpp in Sources */,
-				C585A6D511D4FB3D004C3E4B /* IDBDatabaseImpl.cpp in Sources */,
-				C585A6D711D4FB3D004C3E4B /* IDBDatabaseRequest.cpp in Sources */,
+				B691C1F91206D4A00025D980 /* IDBDatabase.cpp in Sources */,
+				C585A6D511D4FB3D004C3E4B /* IDBDatabaseBackendImpl.cpp in Sources */,
 				C585A6DA11D4FB3D004C3E4B /* IDBErrorEvent.cpp in Sources */,
 				C585A6DD11D4FB3D004C3E4B /* IDBEvent.cpp in Sources */,
 				C585A6FD11D4FB3D004C3E4B /* IDBFactory.cpp in Sources */,
@@ -21315,7 +21315,7 @@
 				C585A65E11D4FAB2004C3E4B /* JSIDBAnyCustom.cpp in Sources */,
 				C585A67E11D4FB08004C3E4B /* JSIDBDatabaseError.cpp in Sources */,
 				C585A68011D4FB08004C3E4B /* JSIDBDatabaseException.cpp in Sources */,
-				C585A68211D4FB08004C3E4B /* JSIDBDatabaseRequest.cpp in Sources */,
+				C585A68211D4FB08004C3E4B /* JSIDBDatabase.cpp in Sources */,
 				C585A68411D4FB08004C3E4B /* JSIDBErrorEvent.cpp in Sources */,
 				C585A68611D4FB08004C3E4B /* JSIDBEvent.cpp in Sources */,
 				C585A69611D4FB13004C3E4B /* JSIDBFactory.cpp in Sources */,
diff --git a/WebCore/bindings/js/JSIDBAnyCustom.cpp b/WebCore/bindings/js/JSIDBAnyCustom.cpp
index 92f725a..e5adbe3 100644
--- a/WebCore/bindings/js/JSIDBAnyCustom.cpp
+++ b/WebCore/bindings/js/JSIDBAnyCustom.cpp
@@ -32,12 +32,12 @@
 #include "JSIDBAny.h"
 
 #include "IDBAny.h"
-#include "IDBDatabaseRequest.h"
+#include "IDBDatabase.h"
 #include "IDBFactory.h"
 #include "IDBIndex.h"
 #include "IDBKey.h"
 #include "IDBObjectStoreRequest.h"
-#include "JSIDBDatabaseRequest.h"
+#include "JSIDBDatabase.h"
 #include "JSIDBFactory.h"
 #include "JSIDBIndex.h"
 #include "JSIDBKey.h"
@@ -58,8 +58,8 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, IDBAny* idbAny)
         return jsUndefined();
     case IDBAny::NullType:
         return jsNull();
-    case IDBAny::IDBDatabaseRequestType:
-        return toJS(exec, globalObject, idbAny->idbDatabaseRequest());
+    case IDBAny::IDBDatabaseType:
+        return toJS(exec, globalObject, idbAny->idbDatabase());
     case IDBAny::IDBIndexType:
         return toJS(exec, globalObject, idbAny->idbIndex());
     case IDBAny::IDBKeyType:
diff --git a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
index 2ec3dcd..11532e1 100644
--- a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
@@ -32,7 +32,7 @@
 #include "V8IDBAny.h"
 
 #include "SerializedScriptValue.h"
-#include "V8IDBDatabaseRequest.h"
+#include "V8IDBDatabase.h"
 #include "V8IDBFactory.h"
 #include "V8IDBIndex.h"
 #include "V8IDBKey.h"
@@ -50,8 +50,8 @@ v8::Handle<v8::Value> toV8(IDBAny* impl)
         return v8::Undefined();
     case IDBAny::NullType:
         return v8::Null();
-    case IDBAny::IDBDatabaseRequestType:
-        return toV8(impl->idbDatabaseRequest());
+    case IDBAny::IDBDatabaseType:
+        return toV8(impl->idbDatabase());
     case IDBAny::IDBIndexType:
         return toV8(impl->idbIndex());
     case IDBAny::IDBKeyType:
diff --git a/WebCore/storage/IDBAny.cpp b/WebCore/storage/IDBAny.cpp
index da0cb22..eafbf53 100644
--- a/WebCore/storage/IDBAny.cpp
+++ b/WebCore/storage/IDBAny.cpp
@@ -28,7 +28,7 @@
 
 #if ENABLE(INDEXED_DATABASE)
 
-#include "IDBDatabaseRequest.h"
+#include "IDBDatabase.h"
 #include "IDBFactory.h"
 #include "IDBIndex.h"
 #include "IDBObjectStoreRequest.h"
@@ -50,10 +50,10 @@ IDBAny::~IDBAny()
 {
 }
 
-PassRefPtr<IDBDatabaseRequest> IDBAny::idbDatabaseRequest()
+PassRefPtr<IDBDatabase> IDBAny::idbDatabase()
 {
-    ASSERT(m_type == IDBDatabaseRequestType);
-    return m_idbDatabaseRequest;
+    ASSERT(m_type == IDBDatabaseType);
+    return m_idbDatabase;
 }
 
 PassRefPtr<IDBIndex> IDBAny::idbIndex()
@@ -92,17 +92,17 @@ void IDBAny::set()
     m_type = NullType;
 }
 
-void IDBAny::set(PassRefPtr<IDBDatabaseRequest> value)
+void IDBAny::set(PassRefPtr<IDBDatabase> value)
 {
     ASSERT(m_type == UndefinedType);
-    m_type = IDBDatabaseRequestType;
-    m_idbDatabaseRequest = value;
+    m_type = IDBDatabaseType;
+    m_idbDatabase = value;
 }
 
 void IDBAny::set(PassRefPtr<IDBIndex> value)
 {
     ASSERT(m_type == UndefinedType);
-    m_type = IDBDatabaseRequestType;
+    m_type = IDBDatabaseType;
     m_idbIndex = value;
 }
 
diff --git a/WebCore/storage/IDBAny.h b/WebCore/storage/IDBAny.h
index a7859a1..d9022f1 100644
--- a/WebCore/storage/IDBAny.h
+++ b/WebCore/storage/IDBAny.h
@@ -34,7 +34,7 @@
 
 namespace WebCore {
 
-class IDBDatabaseRequest;
+class IDBDatabase;
 class IDBIndex;
 class IDBKey;
 class IDBObjectStoreRequest;
@@ -56,7 +56,7 @@ public:
     enum Type {
         UndefinedType = 0,
         NullType,
-        IDBDatabaseRequestType,
+        IDBDatabaseType,
         IDBFactoryType,
         IDBIndexType,
         IDBKeyType,
@@ -66,7 +66,7 @@ public:
 
     Type type() const { return m_type; }
     // Use type() to figure out which one of these you're allowed to call.
-    PassRefPtr<IDBDatabaseRequest> idbDatabaseRequest();
+    PassRefPtr<IDBDatabase> idbDatabase();
     PassRefPtr<IDBFactory> idbFactory();
     PassRefPtr<IDBIndex> idbIndex();
     PassRefPtr<IDBKey> idbKey();
@@ -75,7 +75,7 @@ public:
 
     // Set can only be called once.
     void set(); // For "null".
-    void set(PassRefPtr<IDBDatabaseRequest>);
+    void set(PassRefPtr<IDBDatabase>);
     void set(PassRefPtr<IDBFactory>);
     void set(PassRefPtr<IDBIndex>);
     void set(PassRefPtr<IDBKey>);
@@ -88,7 +88,7 @@ private:
     Type m_type;
 
     // Only one of the following should ever be in use at any given time.
-    RefPtr<IDBDatabaseRequest> m_idbDatabaseRequest;
+    RefPtr<IDBDatabase> m_idbDatabase;
     RefPtr<IDBFactory> m_idbFactory;
     RefPtr<IDBIndex> m_idbIndex;
     RefPtr<IDBKey> m_idbKey;
diff --git a/WebCore/storage/IDBCallbacks.h b/WebCore/storage/IDBCallbacks.h
index d79cdec..871dd55 100644
--- a/WebCore/storage/IDBCallbacks.h
+++ b/WebCore/storage/IDBCallbacks.h
@@ -29,7 +29,7 @@
 #ifndef IDBCallbacks_h
 #define IDBCallbacks_h
 
-#include "IDBDatabase.h"
+#include "IDBDatabaseBackendInterface.h"
 #include "IDBDatabaseError.h"
 #include "IDBIndexBackendInterface.h"
 #include "IDBKey.h"
@@ -47,7 +47,7 @@ public:
 
     virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
     virtual void onSuccess() = 0; // For "null".
-    virtual void onSuccess(PassRefPtr<IDBDatabase>) = 0;
+    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
     virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
     virtual void onSuccess(PassRefPtr<IDBObjectStore>) = 0;
diff --git a/WebCore/storage/IDBDatabase.cpp b/WebCore/storage/IDBDatabase.cpp
new file mode 100644
index 0000000..03c0972
--- /dev/null
+++ b/WebCore/storage/IDBDatabase.cpp
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ *
+ * 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 "IDBDatabase.h"
+
+#include "IDBAny.h"
+#include "IDBFactoryBackendInterface.h"
+#include "IDBObjectStoreRequest.h"
+#include "IDBRequest.h"
+#include "ScriptExecutionContext.h"
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+IDBDatabase::IDBDatabase(PassRefPtr<IDBDatabaseBackendInterface> backend)
+    : m_backend(backend)
+{
+    // We pass a reference to this object before it can be adopted.
+    relaxAdoptionRequirement();
+}
+
+IDBDatabase::~IDBDatabase()
+{
+}
+
+PassRefPtr<IDBRequest> IDBDatabase::createObjectStore(ScriptExecutionContext* context, const String& name, const String& keyPath, bool autoIncrement)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_backend->createObjectStore(name, keyPath, autoIncrement, request);
+    return request;
+}
+
+PassRefPtr<IDBObjectStoreRequest> IDBDatabase::objectStore(const String& name, unsigned short mode)
+{
+    RefPtr<IDBObjectStore> objectStore = m_backend->objectStore(name, mode);
+    ASSERT(objectStore); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
+    return IDBObjectStoreRequest::create(objectStore.release());
+}
+
+PassRefPtr<IDBRequest> IDBDatabase::removeObjectStore(ScriptExecutionContext* context, const String& name)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_backend->removeObjectStore(name, request);
+    return request;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBDatabase.h b/WebCore/storage/IDBDatabase.h
index 0055ad1..9f7b9af 100644
--- a/WebCore/storage/IDBDatabase.h
+++ b/WebCore/storage/IDBDatabase.h
@@ -26,37 +26,43 @@
 #ifndef IDBDatabase_h
 #define IDBDatabase_h
 
-#include "PlatformString.h"
+#include "DOMStringList.h"
+#include "IDBDatabaseBackendInterface.h"
 #include <wtf/PassRefPtr.h>
-#include <wtf/Threading.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
 
 #if ENABLE(INDEXED_DATABASE)
 
 namespace WebCore {
 
-class DOMStringList;
-class Frame;
-class IDBCallbacks;
-class IDBObjectStore;
+class IDBAny;
+class IDBObjectStoreRequest;
+class IDBRequest;
+class ScriptExecutionContext;
 
-// This class is shared by IDBDatabaseRequest (async) and IDBDatabaseSync (sync).
-// This is implemented by IDBDatabaseImpl and optionally others (in order to proxy
-// calls across process barriers). All calls to these classes should be non-blocking and
-// trigger work on a background thread if necessary.
-class IDBDatabase : public ThreadSafeShared<IDBDatabase> {
+class IDBDatabase : public RefCounted<IDBDatabase> {
 public:
-    virtual ~IDBDatabase() { }
+    static PassRefPtr<IDBDatabase> create(PassRefPtr<IDBDatabaseBackendInterface> database)
+    {
+        return adoptRef(new IDBDatabase(database));
+    }
+    ~IDBDatabase();
 
-    virtual String name() const = 0;
-    virtual String description() const = 0;
-    virtual String version() const = 0;
-    virtual PassRefPtr<DOMStringList> objectStores() const = 0;
+    // Implement the IDL
+    String name() const { return m_backend->name(); }
+    String description() const { return m_backend->description(); }
+    String version() const { return m_backend->version(); }
+    PassRefPtr<DOMStringList> objectStores() const { return m_backend->objectStores(); }
 
-    // FIXME: Add transaction and setVersion.
+    PassRefPtr<IDBRequest> createObjectStore(ScriptExecutionContext*, const String& name, const String& keyPath = String(), bool autoIncrement = false);
+    PassRefPtr<IDBObjectStoreRequest> objectStore(const String& name, unsigned short mode = 0); // FIXME: Use constant rather than 0.
+    PassRefPtr<IDBRequest> removeObjectStore(ScriptExecutionContext*, const String& name);
 
-    virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>) = 0;
-    virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode) = 0;
-    virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>) = 0;
+private:
+    IDBDatabase(PassRefPtr<IDBDatabaseBackendInterface>);
+
+    RefPtr<IDBDatabaseBackendInterface> m_backend;
 };
 
 } // namespace WebCore
diff --git a/WebCore/storage/IDBDatabase.idl b/WebCore/storage/IDBDatabase.idl
new file mode 100644
index 0000000..1bc121f
--- /dev/null
+++ b/WebCore/storage/IDBDatabase.idl
@@ -0,0 +1,45 @@
+/*
+ * 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.
+ *
+ * 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.
+ */
+
+module storage {
+
+    interface [
+        Conditional=INDEXED_DATABASE
+    ] IDBDatabase {
+        readonly attribute DOMString name;
+        readonly attribute DOMString description;
+        readonly attribute DOMString version;
+        readonly attribute DOMStringList objectStores;
+
+        // FIXME: Add transaction.
+        // FIXME: Add setVersion.
+
+        [CallWith=ScriptExecutionContext] IDBRequest createObjectStore(in DOMString name, in [Optional, ConvertNullToNullString] DOMString keyPath, in [Optional] boolean autoIncrement);
+        // FIXME: objectStore needs to be able to raise an IDBDatabaseException.
+        IDBObjectStoreRequest objectStore(in DOMString name, in [Optional] unsigned short mode);
+        [CallWith=ScriptExecutionContext] IDBRequest removeObjectStore(in DOMString name);
+    };
+
+}
diff --git a/WebCore/storage/IDBDatabaseBackendImpl.cpp b/WebCore/storage/IDBDatabaseBackendImpl.cpp
new file mode 100644
index 0000000..02e784c
--- /dev/null
+++ b/WebCore/storage/IDBDatabaseBackendImpl.cpp
@@ -0,0 +1,88 @@
+/*
+ * 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.
+ *
+ * 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 "IDBDatabaseBackendImpl.h"
+
+#include "DOMStringList.h"
+#include "IDBDatabaseException.h"
+#include "IDBObjectStoreImpl.h"
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+IDBDatabaseBackendImpl::IDBDatabaseBackendImpl(const String& name, const String& description, const String& version)
+    : m_name(name)
+    , m_description(description)
+    , m_version(version)
+{
+}
+
+IDBDatabaseBackendImpl::~IDBDatabaseBackendImpl()
+{
+}
+
+PassRefPtr<DOMStringList> IDBDatabaseBackendImpl::objectStores() const
+{
+    RefPtr<DOMStringList> objectStoreNames = DOMStringList::create();
+    for (ObjectStoreMap::const_iterator it = m_objectStores.begin(); it != m_objectStores.end(); ++it)
+        objectStoreNames->append(it->first);
+    return objectStoreNames.release();
+}
+
+void IDBDatabaseBackendImpl::createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks> callbacks)
+{
+    if (m_objectStores.contains(name)) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "An objectStore with that name already exists."));
+        return;
+    }
+
+    RefPtr<IDBObjectStore> objectStore = IDBObjectStoreImpl::create(name, keyPath, autoIncrement);
+    m_objectStores.set(name, objectStore);
+    callbacks->onSuccess(objectStore.release());
+}
+
+PassRefPtr<IDBObjectStore> IDBDatabaseBackendImpl::objectStore(const String& name, unsigned short mode)
+{
+    // FIXME: If no transaction is running, this should implicitly start one.
+    ASSERT_UNUSED(mode, !mode); // FIXME: Handle non-standard modes.
+    return m_objectStores.get(name);
+}
+
+void IDBDatabaseBackendImpl::removeObjectStore(const String& name, PassRefPtr<IDBCallbacks> callbacks)
+{
+    if (!m_objectStores.contains(name)) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "No objectStore with that name exists."));
+        return;
+    }
+
+    m_objectStores.remove(name);
+    callbacks->onSuccess();
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBDatabaseBackendImpl.h b/WebCore/storage/IDBDatabaseBackendImpl.h
new file mode 100644
index 0000000..9f5ae4e
--- /dev/null
+++ b/WebCore/storage/IDBDatabaseBackendImpl.h
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ *
+ * 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 IDBDatabaseBackendImpl_h
+#define IDBDatabaseBackendImpl_h
+
+#include "IDBCallbacks.h"
+#include "IDBDatabase.h"
+#include "StringHash.h"
+#include <wtf/HashMap.h>
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+class IDBDatabaseBackendImpl : public IDBDatabaseBackendInterface {
+public:
+    static PassRefPtr<IDBDatabaseBackendInterface> create(const String& name, const String& description, const String& version)
+    {
+        return adoptRef(new IDBDatabaseBackendImpl(name, description, version));
+    }
+    virtual ~IDBDatabaseBackendImpl();
+
+    // Implements IDBDatabase
+    virtual String name() const { return m_name; }
+    virtual String description() const { return m_description; }
+    virtual String version() const { return m_version; }
+    virtual PassRefPtr<DOMStringList> objectStores() const;
+
+    virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>);
+    virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode);
+    virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>);
+
+private:
+    IDBDatabaseBackendImpl(const String& name, const String& description, const String& version);
+
+    String m_name;
+    String m_description;
+    String m_version;
+
+    typedef HashMap<String, RefPtr<IDBObjectStore> > ObjectStoreMap;
+    ObjectStoreMap m_objectStores;
+};
+
+} // namespace WebCore
+
+#endif
+
+#endif // IDBDatabaseBackendImpl_h
diff --git a/WebCore/storage/IDBDatabaseBackendInterface.h b/WebCore/storage/IDBDatabaseBackendInterface.h
new file mode 100644
index 0000000..0e9ca1b
--- /dev/null
+++ b/WebCore/storage/IDBDatabaseBackendInterface.h
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ *
+ * 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 IDBDatabaseBackendInterface_h
+#define IDBDatabaseBackendInterface_h
+
+#include "PlatformString.h"
+#include <wtf/PassRefPtr.h>
+#include <wtf/Threading.h>
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+class DOMStringList;
+class Frame;
+class IDBCallbacks;
+class IDBObjectStore;
+
+// This class is shared by IDBDatabase (async) and IDBDatabaseSync (sync).
+// This is implemented by IDBDatabaseBackendImpl and optionally others (in order to proxy
+// calls across process barriers). All calls to these classes should be non-blocking and
+// trigger work on a background thread if necessary.
+class IDBDatabaseBackendInterface : public ThreadSafeShared<IDBDatabaseBackendInterface> {
+public:
+    virtual ~IDBDatabaseBackendInterface() { }
+
+    virtual String name() const = 0;
+    virtual String description() const = 0;
+    virtual String version() const = 0;
+    virtual PassRefPtr<DOMStringList> objectStores() const = 0;
+
+    // FIXME: Add transaction and setVersion.
+
+    virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>) = 0;
+    virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode) = 0;
+    virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>) = 0;
+};
+
+} // namespace WebCore
+
+#endif
+
+#endif // IDBDatabaseBackendInterface_h
diff --git a/WebCore/storage/IDBDatabaseImpl.cpp b/WebCore/storage/IDBDatabaseImpl.cpp
deleted file mode 100644
index 162efab..0000000
--- a/WebCore/storage/IDBDatabaseImpl.cpp
+++ /dev/null
@@ -1,88 +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.
- *
- * 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 "IDBDatabaseImpl.h"
-
-#include "DOMStringList.h"
-#include "IDBDatabaseException.h"
-#include "IDBObjectStoreImpl.h"
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-IDBDatabaseImpl::IDBDatabaseImpl(const String& name, const String& description, const String& version)
-    : m_name(name)
-    , m_description(description)
-    , m_version(version)
-{
-}
-
-IDBDatabaseImpl::~IDBDatabaseImpl()
-{
-}
-
-PassRefPtr<DOMStringList> IDBDatabaseImpl::objectStores() const
-{
-    RefPtr<DOMStringList> objectStoreNames = DOMStringList::create();
-    for (ObjectStoreMap::const_iterator it = m_objectStores.begin(); it != m_objectStores.end(); ++it)
-        objectStoreNames->append(it->first);
-    return objectStoreNames.release();
-}
-
-void IDBDatabaseImpl::createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks> callbacks)
-{
-    if (m_objectStores.contains(name)) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "An objectStore with that name already exists."));
-        return;
-    }
-
-    RefPtr<IDBObjectStore> objectStore = IDBObjectStoreImpl::create(name, keyPath, autoIncrement);
-    m_objectStores.set(name, objectStore);
-    callbacks->onSuccess(objectStore.release());
-}
-
-PassRefPtr<IDBObjectStore> IDBDatabaseImpl::objectStore(const String& name, unsigned short mode)
-{
-    // FIXME: If no transaction is running, this should implicitly start one.
-    ASSERT_UNUSED(mode, !mode); // FIXME: Handle non-standard modes.
-    return m_objectStores.get(name);
-}
-
-void IDBDatabaseImpl::removeObjectStore(const String& name, PassRefPtr<IDBCallbacks> callbacks)
-{
-    if (!m_objectStores.contains(name)) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "No objectStore with that name exists."));
-        return;
-    }
-
-    m_objectStores.remove(name);
-    callbacks->onSuccess();
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBDatabaseImpl.h b/WebCore/storage/IDBDatabaseImpl.h
deleted file mode 100644
index 7203c5a..0000000
--- a/WebCore/storage/IDBDatabaseImpl.h
+++ /dev/null
@@ -1,71 +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.
- *
- * 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 IDBDatabaseImpl_h
-#define IDBDatabaseImpl_h
-
-#include "IDBCallbacks.h"
-#include "IDBDatabase.h"
-#include "StringHash.h"
-#include <wtf/HashMap.h>
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-class IDBDatabaseImpl : public IDBDatabase {
-public:
-    static PassRefPtr<IDBDatabase> create(const String& name, const String& description, const String& version)
-    {
-        return adoptRef(new IDBDatabaseImpl(name, description, version));
-    }
-    virtual ~IDBDatabaseImpl();
-
-    // Implements IDBDatabase
-    virtual String name() const { return m_name; }
-    virtual String description() const { return m_description; }
-    virtual String version() const { return m_version; }
-    virtual PassRefPtr<DOMStringList> objectStores() const;
-
-    virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>);
-    virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode);
-    virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>);
-
-private:
-    IDBDatabaseImpl(const String& name, const String& description, const String& version);
-
-    String m_name;
-    String m_description;
-    String m_version;
-
-    typedef HashMap<String, RefPtr<IDBObjectStore> > ObjectStoreMap;
-    ObjectStoreMap m_objectStores;
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif // IDBDatabaseImpl_h
diff --git a/WebCore/storage/IDBDatabaseRequest.cpp b/WebCore/storage/IDBDatabaseRequest.cpp
deleted file mode 100644
index 8a40e9e..0000000
--- a/WebCore/storage/IDBDatabaseRequest.cpp
+++ /dev/null
@@ -1,73 +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.
- *
- * 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 "IDBDatabaseRequest.h"
-
-#include "IDBAny.h"
-#include "IDBFactoryBackendInterface.h"
-#include "IDBObjectStoreRequest.h"
-#include "IDBRequest.h"
-#include "ScriptExecutionContext.h"
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-IDBDatabaseRequest::IDBDatabaseRequest(PassRefPtr<IDBDatabase> database)
-    : m_database(database)
-{
-    // We pass a reference to this object before it can be adopted.
-    relaxAdoptionRequirement();
-}
-
-IDBDatabaseRequest::~IDBDatabaseRequest()
-{
-}
-
-PassRefPtr<IDBRequest> IDBDatabaseRequest::createObjectStore(ScriptExecutionContext* context, const String& name, const String& keyPath, bool autoIncrement)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_database->createObjectStore(name, keyPath, autoIncrement, request);
-    return request;
-}
-
-PassRefPtr<IDBObjectStoreRequest> IDBDatabaseRequest::objectStore(const String& name, unsigned short mode)
-{
-    RefPtr<IDBObjectStore> objectStore = m_database->objectStore(name, mode);
-    ASSERT(objectStore); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
-    return IDBObjectStoreRequest::create(objectStore.release());
-}
-
-PassRefPtr<IDBRequest> IDBDatabaseRequest::removeObjectStore(ScriptExecutionContext* context, const String& name)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_database->removeObjectStore(name, request);
-    return request;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBDatabaseRequest.h b/WebCore/storage/IDBDatabaseRequest.h
deleted file mode 100644
index fd19882..0000000
--- a/WebCore/storage/IDBDatabaseRequest.h
+++ /dev/null
@@ -1,72 +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.
- *
- * 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 IDBDatabaseRequest_h
-#define IDBDatabaseRequest_h
-
-#include "DOMStringList.h"
-#include "IDBDatabase.h"
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-class IDBAny;
-class IDBObjectStoreRequest;
-class IDBRequest;
-class ScriptExecutionContext;
-
-class IDBDatabaseRequest : public RefCounted<IDBDatabaseRequest> {
-public:
-    static PassRefPtr<IDBDatabaseRequest> create(PassRefPtr<IDBDatabase> database)
-    {
-        return adoptRef(new IDBDatabaseRequest(database));
-    }
-    ~IDBDatabaseRequest();
-
-    // Implement the IDL
-    String name() const { return m_database->name(); }
-    String description() const { return m_database->description(); }
-    String version() const { return m_database->version(); }
-    PassRefPtr<DOMStringList> objectStores() const { return m_database->objectStores(); }
-
-    PassRefPtr<IDBRequest> createObjectStore(ScriptExecutionContext*, const String& name, const String& keyPath = String(), bool autoIncrement = false);
-    PassRefPtr<IDBObjectStoreRequest> objectStore(const String& name, unsigned short mode = 0); // FIXME: Use constant rather than 0.
-    PassRefPtr<IDBRequest> removeObjectStore(ScriptExecutionContext*, const String& name);
-
-private:
-    IDBDatabaseRequest(PassRefPtr<IDBDatabase>);
-
-    RefPtr<IDBDatabase> m_database;
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif // IDBDatabaseRequest_h
diff --git a/WebCore/storage/IDBDatabaseRequest.idl b/WebCore/storage/IDBDatabaseRequest.idl
deleted file mode 100644
index 548b221..0000000
--- a/WebCore/storage/IDBDatabaseRequest.idl
+++ /dev/null
@@ -1,45 +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.
- *
- * 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.
- */
-
-module storage {
-
-    interface [
-        Conditional=INDEXED_DATABASE
-    ] IDBDatabaseRequest {
-        readonly attribute DOMString name;
-        readonly attribute DOMString description;
-        readonly attribute DOMString version;
-        readonly attribute DOMStringList objectStores;
-
-        // FIXME: Add transaction.
-        // FIXME: Add setVersion.
-
-        [CallWith=ScriptExecutionContext] IDBRequest createObjectStore(in DOMString name, in [Optional, ConvertNullToNullString] DOMString keyPath, in [Optional] boolean autoIncrement);
-        // FIXME: objectStore needs to be able to raise an IDBDatabaseException.
-        IDBObjectStoreRequest objectStore(in DOMString name, in [Optional] unsigned short mode);
-        [CallWith=ScriptExecutionContext] IDBRequest removeObjectStore(in DOMString name);
-    };
-
-}
diff --git a/WebCore/storage/IDBFactoryBackendImpl.cpp b/WebCore/storage/IDBFactoryBackendImpl.cpp
index e965c3f..7bdd70d 100644
--- a/WebCore/storage/IDBFactoryBackendImpl.cpp
+++ b/WebCore/storage/IDBFactoryBackendImpl.cpp
@@ -30,7 +30,7 @@
 #include "IDBFactoryBackendImpl.h"
 
 #include "DOMStringList.h"
-#include "IDBDatabaseImpl.h"
+#include "IDBDatabaseBackendImpl.h"
 #include "SecurityOrigin.h"
 #include <wtf/Threading.h>
 #include <wtf/UnusedParam.h>
@@ -54,16 +54,16 @@ IDBFactoryBackendImpl::~IDBFactoryBackendImpl()
 
 void IDBFactoryBackendImpl::open(const String& name, const String& description, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<SecurityOrigin>, Frame*)
 {
-    RefPtr<IDBDatabase> database;
-    IDBDatabaseMap::iterator it = m_databaseMap.find(name);
-    if (it == m_databaseMap.end()) {
+    RefPtr<IDBDatabaseBackendInterface> databaseBackend;
+    IDBDatabaseBackendMap::iterator it = m_databaseBackendMap.find(name);
+    if (it == m_databaseBackendMap.end()) {
         // FIXME: What should the version be?  The spec doesn't define it yet.
-        database = IDBDatabaseImpl::create(name, description, "");
-        m_databaseMap.set(name, database);
+        databaseBackend = IDBDatabaseBackendImpl::create(name, description, "");
+        m_databaseBackendMap.set(name, databaseBackend);
     } else
-        database = it->second;
+        databaseBackend = it->second;
 
-    callbacks->onSuccess(database.release());
+    callbacks->onSuccess(databaseBackend.release());
 }
 
 } // namespace WebCore
diff --git a/WebCore/storage/IDBFactoryBackendImpl.h b/WebCore/storage/IDBFactoryBackendImpl.h
index bb28b6d..bbcc537 100644
--- a/WebCore/storage/IDBFactoryBackendImpl.h
+++ b/WebCore/storage/IDBFactoryBackendImpl.h
@@ -48,8 +48,8 @@ public:
 private:
     IDBFactoryBackendImpl();
 
-    typedef HashMap<String, RefPtr<IDBDatabase> > IDBDatabaseMap;
-    IDBDatabaseMap m_databaseMap;
+    typedef HashMap<String, RefPtr<IDBDatabaseBackendInterface> > IDBDatabaseBackendMap;
+    IDBDatabaseBackendMap m_databaseBackendMap;
 
     // We only create one instance of this class at a time.
     static IDBFactoryBackendImpl* idbFactoryBackendImpl;
diff --git a/WebCore/storage/IDBRequest.cpp b/WebCore/storage/IDBRequest.cpp
index b836cc3..b0be94b 100644
--- a/WebCore/storage/IDBRequest.cpp
+++ b/WebCore/storage/IDBRequest.cpp
@@ -35,7 +35,7 @@
 #include "EventException.h"
 #include "EventListener.h"
 #include "EventNames.h"
-#include "IDBDatabaseRequest.h"
+#include "IDBDatabase.h"
 #include "IDBIndex.h"
 #include "IDBErrorEvent.h"
 #include "IDBObjectStoreRequest.h"
@@ -73,10 +73,10 @@ void IDBRequest::onSuccess()
     m_result->set();
 }
 
-void IDBRequest::onSuccess(PassRefPtr<IDBDatabase> idbDatabase)
+void IDBRequest::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> idbDatabaseBackend)
 {
     onEventCommon();
-    m_result->set(IDBDatabaseRequest::create(idbDatabase));
+    m_result->set(IDBDatabase::create(idbDatabaseBackend));
 }
 
 void IDBRequest::onSuccess(PassRefPtr<IDBIndexBackendInterface> backend)
diff --git a/WebCore/storage/IDBRequest.h b/WebCore/storage/IDBRequest.h
index 39f6a51..255ae48 100644
--- a/WebCore/storage/IDBRequest.h
+++ b/WebCore/storage/IDBRequest.h
@@ -41,8 +41,6 @@
 
 namespace WebCore {
 
-class IDBDatabaseRequest;
-
 class IDBRequest : public IDBCallbacks, public EventTarget, public ActiveDOMObject {
 public:
     static PassRefPtr<IDBRequest> create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source) { return adoptRef(new IDBRequest(context, source)); }
@@ -64,7 +62,7 @@ public:
     // IDBCallbacks
     virtual void onError(PassRefPtr<IDBDatabaseError>);
     virtual void onSuccess(); // For "null".
-    virtual void onSuccess(PassRefPtr<IDBDatabase>);
+    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBKey>);
     virtual void onSuccess(PassRefPtr<IDBObjectStore>);
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index db76b8e..58ba27d 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,27 @@
+2010-07-30  Andrei Popescu  <andreip at dhcp-172-16-14-12.lon.corp.google.com>
+
+        Reviewed by Jeremy Orlow.
+
+        Rename IDBDatabaseRequest to IDBDatabase
+        https://bugs.webkit.org/show_bug.cgi?id=43250
+
+        * src/IDBCallbacksProxy.cpp:
+        (WebCore::IDBCallbacksProxy::onSuccess):
+        * src/IDBCallbacksProxy.h:
+        * src/IDBDatabaseProxy.cpp:
+        (WebCore::IDBDatabaseProxy::create):
+        * src/IDBDatabaseProxy.h:
+        * src/WebIDBDatabaseImpl.cpp:
+        (WebKit::WebIDBDatabaseImpl::WebIDBDatabaseImpl):
+        (WebKit::WebIDBDatabaseImpl::name):
+        (WebKit::WebIDBDatabaseImpl::description):
+        (WebKit::WebIDBDatabaseImpl::version):
+        (WebKit::WebIDBDatabaseImpl::objectStores):
+        (WebKit::WebIDBDatabaseImpl::createObjectStore):
+        (WebKit::WebIDBDatabaseImpl::objectStore):
+        (WebKit::WebIDBDatabaseImpl::removeObjectStore):
+        * src/WebIDBDatabaseImpl.h:
+
 2010-08-02  Pavel Feldman  <pfeldman at chromium.org>
 
         Reviewed by Yury Semikhatsky.
diff --git a/WebKit/chromium/src/IDBCallbacksProxy.cpp b/WebKit/chromium/src/IDBCallbacksProxy.cpp
index 4489e9b..a8d10c6 100644
--- a/WebKit/chromium/src/IDBCallbacksProxy.cpp
+++ b/WebKit/chromium/src/IDBCallbacksProxy.cpp
@@ -69,9 +69,9 @@ void IDBCallbacksProxy::onSuccess()
     m_callbacks.clear();
 }
 
-void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabase> idbDatabase)
+void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> idbDatabaseBackend)
 {
-    m_callbacks->onSuccess(new WebKit::WebIDBDatabaseImpl(idbDatabase));
+    m_callbacks->onSuccess(new WebKit::WebIDBDatabaseImpl(idbDatabaseBackend));
     m_callbacks.clear();
 }
 
diff --git a/WebKit/chromium/src/IDBCallbacksProxy.h b/WebKit/chromium/src/IDBCallbacksProxy.h
index 10fc31a..a31f7af 100644
--- a/WebKit/chromium/src/IDBCallbacksProxy.h
+++ b/WebKit/chromium/src/IDBCallbacksProxy.h
@@ -49,7 +49,7 @@ public:
 
     virtual void onError(PassRefPtr<IDBDatabaseError>);
     virtual void onSuccess(); // For "null".
-    virtual void onSuccess(PassRefPtr<IDBDatabase>);
+    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBKey>);
     virtual void onSuccess(PassRefPtr<IDBObjectStore>);
diff --git a/WebKit/chromium/src/IDBDatabaseProxy.cpp b/WebKit/chromium/src/IDBDatabaseProxy.cpp
index 9d009c0..aa3b562 100644
--- a/WebKit/chromium/src/IDBDatabaseProxy.cpp
+++ b/WebKit/chromium/src/IDBDatabaseProxy.cpp
@@ -39,7 +39,7 @@
 
 namespace WebCore {
 
-PassRefPtr<IDBDatabase> IDBDatabaseProxy::create(PassOwnPtr<WebKit::WebIDBDatabase> database)
+PassRefPtr<IDBDatabaseBackendInterface> IDBDatabaseProxy::create(PassOwnPtr<WebKit::WebIDBDatabase> database)
 {
     return adoptRef(new IDBDatabaseProxy(database));
 }
diff --git a/WebKit/chromium/src/IDBDatabaseProxy.h b/WebKit/chromium/src/IDBDatabaseProxy.h
index 36588f0..b9e4ad6 100644
--- a/WebKit/chromium/src/IDBDatabaseProxy.h
+++ b/WebKit/chromium/src/IDBDatabaseProxy.h
@@ -26,7 +26,7 @@
 #ifndef IDBDatabaseProxy_h
 #define IDBDatabaseProxy_h
 
-#include "IDBDatabase.h"
+#include "IDBDatabaseBackendInterface.h"
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -37,9 +37,9 @@ namespace WebKit { class WebIDBDatabase; }
 
 namespace WebCore {
 
-class IDBDatabaseProxy : public IDBDatabase {
+class IDBDatabaseProxy : public IDBDatabaseBackendInterface {
 public:
-    static PassRefPtr<IDBDatabase> create(PassOwnPtr<WebKit::WebIDBDatabase>);
+    static PassRefPtr<IDBDatabaseBackendInterface> create(PassOwnPtr<WebKit::WebIDBDatabase>);
     virtual ~IDBDatabaseProxy();
 
     virtual String name() const;
diff --git a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
index e2f771a..742bfa0 100644
--- a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
+++ b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
@@ -28,7 +28,7 @@
 
 #include "DOMStringList.h"
 #include "IDBCallbacksProxy.h"
-#include "IDBDatabase.h"
+#include "IDBDatabaseBackendInterface.h"
 #include "WebIDBCallbacks.h"
 #include "WebIDBObjectStoreImpl.h"
 
@@ -38,8 +38,8 @@ using namespace WebCore;
 
 namespace WebKit {
 
-WebIDBDatabaseImpl::WebIDBDatabaseImpl(PassRefPtr<IDBDatabase> database)
-    : m_database(database)
+WebIDBDatabaseImpl::WebIDBDatabaseImpl(PassRefPtr<IDBDatabaseBackendInterface> databaseBackend)
+    : m_databaseBackend(databaseBackend)
 {
 }
 
@@ -49,32 +49,32 @@ WebIDBDatabaseImpl::~WebIDBDatabaseImpl()
 
 WebString WebIDBDatabaseImpl::name() const
 {
-    return m_database->name();
+    return m_databaseBackend->name();
 }
 
 WebString WebIDBDatabaseImpl::description() const
 {
-    return m_database->description();
+    return m_databaseBackend->description();
 }
 
 WebString WebIDBDatabaseImpl::version() const
 {
-    return m_database->version();
+    return m_databaseBackend->version();
 }
 
 WebDOMStringList WebIDBDatabaseImpl::objectStores() const
 {
-    return m_database->objectStores();
+    return m_databaseBackend->objectStores();
 }
 
 void WebIDBDatabaseImpl::createObjectStore(const WebString& name, const WebString& keyPath, bool autoIncrement, WebIDBCallbacks* callbacks)
 {
-    m_database->createObjectStore(name, keyPath, autoIncrement, IDBCallbacksProxy::create(callbacks));
+    m_databaseBackend->createObjectStore(name, keyPath, autoIncrement, IDBCallbacksProxy::create(callbacks));
 }
 
 WebIDBObjectStore* WebIDBDatabaseImpl::objectStore(const WebString& name, unsigned short mode)
 {
-    RefPtr<IDBObjectStore> objectStore = m_database->objectStore(name, mode);
+    RefPtr<IDBObjectStore> objectStore = m_databaseBackend->objectStore(name, mode);
     if (!objectStore)
         return 0;
     return new WebIDBObjectStoreImpl(objectStore);
@@ -82,7 +82,7 @@ WebIDBObjectStore* WebIDBDatabaseImpl::objectStore(const WebString& name, unsign
 
 void WebIDBDatabaseImpl::removeObjectStore(const WebString& name, WebIDBCallbacks* callbacks)
 {
-    m_database->removeObjectStore(name, IDBCallbacksProxy::create(callbacks));
+    m_databaseBackend->removeObjectStore(name, IDBCallbacksProxy::create(callbacks));
 }
 
 } // namespace WebCore
diff --git a/WebKit/chromium/src/WebIDBDatabaseImpl.h b/WebKit/chromium/src/WebIDBDatabaseImpl.h
index c83d8d7..46a6609 100644
--- a/WebKit/chromium/src/WebIDBDatabaseImpl.h
+++ b/WebKit/chromium/src/WebIDBDatabaseImpl.h
@@ -31,7 +31,7 @@
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 
-namespace WebCore { class IDBDatabase; }
+namespace WebCore { class IDBDatabaseBackendInterface; }
 
 namespace WebKit {
 
@@ -40,7 +40,7 @@ class WebIDBObjectStore;
 // See comment in WebIndexedDatabase for a high level overview these classes.
 class WebIDBDatabaseImpl : public WebIDBDatabase {
 public:
-    WebIDBDatabaseImpl(WTF::PassRefPtr<WebCore::IDBDatabase> database);
+    WebIDBDatabaseImpl(WTF::PassRefPtr<WebCore::IDBDatabaseBackendInterface>);
     virtual ~WebIDBDatabaseImpl();
 
     virtual WebString name() const;
@@ -53,7 +53,7 @@ public:
     virtual void removeObjectStore(const WebString& name, WebIDBCallbacks* callbacks);
 
 private:
-    WTF::RefPtr<WebCore::IDBDatabase> m_database;
+    WTF::RefPtr<WebCore::IDBDatabaseBackendInterface> m_databaseBackend;
 };
 
 } // namespace WebKit

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list