[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:58 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 63e3331b987eeed585a0ae776f36abb916ef7091
Author: andreip at google.com <andreip at google.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Aug 3 19:20:09 2010 +0000

    2010-08-03  Andrei Popescu  <andreip at google.com>
    
            Reviewed by Jeremy Orlow.
    
            [IndexedDB] IDBObjectStoreRequest should be called IDBObjectStore
            https://bugs.webkit.org/show_bug.cgi?id=43420
    
            Renaming IDBObjectStoreRequest to IDBObjectStore.
    
            No new tests needed, 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.xcodeproj/project.pbxproj:
            * bindings/js/JSIDBAnyCustom.cpp:
            (WebCore::toJS):
            * bindings/v8/custom/V8IDBAnyCustom.cpp:
            (WebCore::toV8):
            * storage/IDBAny.cpp:
            (WebCore::IDBAny::idbObjectStore):
            (WebCore::IDBAny::set):
            * storage/IDBAny.h:
            (WebCore::IDBAny::):
            * storage/IDBCallbacks.h:
            * storage/IDBDatabase.cpp:
            (WebCore::IDBDatabase::objectStore):
            * storage/IDBDatabase.h:
            * storage/IDBDatabaseBackendImpl.cpp:
            (WebCore::IDBDatabaseBackendImpl::createObjectStore):
            (WebCore::IDBDatabaseBackendImpl::objectStore):
            * storage/IDBDatabaseBackendImpl.h:
            * storage/IDBDatabaseBackendInterface.h:
            * storage/IDBObjectStore.cpp: Added.
            (WebCore::IDBObjectStore::IDBObjectStore):
            (WebCore::IDBObjectStore::name):
            (WebCore::IDBObjectStore::keyPath):
            (WebCore::IDBObjectStore::indexNames):
            (WebCore::IDBObjectStore::get):
            (WebCore::IDBObjectStore::add):
            (WebCore::IDBObjectStore::put):
            (WebCore::IDBObjectStore::remove):
            (WebCore::IDBObjectStore::createIndex):
            (WebCore::IDBObjectStore::index):
            (WebCore::IDBObjectStore::removeIndex):
            * storage/IDBObjectStore.h:
            (WebCore::IDBObjectStore::create):
            (WebCore::IDBObjectStore::~IDBObjectStore):
            * storage/IDBObjectStore.idl: Added.
            * storage/IDBObjectStoreBackendImpl.cpp: Added.
            (WebCore::IDBObjectStoreBackendImpl::~IDBObjectStoreBackendImpl):
            (WebCore::IDBObjectStoreBackendImpl::IDBObjectStoreBackendImpl):
            (WebCore::IDBObjectStoreBackendImpl::indexNames):
            (WebCore::IDBObjectStoreBackendImpl::get):
            (WebCore::IDBObjectStoreBackendImpl::put):
            (WebCore::IDBObjectStoreBackendImpl::remove):
            (WebCore::IDBObjectStoreBackendImpl::createIndex):
            (WebCore::IDBObjectStoreBackendImpl::index):
            (WebCore::IDBObjectStoreBackendImpl::removeIndex):
            * storage/IDBObjectStoreBackendImpl.h: Added.
            (WebCore::IDBObjectStoreBackendImpl::create):
            (WebCore::IDBObjectStoreBackendImpl::name):
            (WebCore::IDBObjectStoreBackendImpl::keyPath):
            * storage/IDBObjectStoreBackendInterface.h: Added.
            (WebCore::IDBObjectStoreBackendInterface::~IDBObjectStoreBackendInterface):
            * storage/IDBObjectStoreImpl.cpp: Removed.
            * storage/IDBObjectStoreImpl.h: Removed.
            * storage/IDBObjectStoreRequest.cpp: Removed.
            * storage/IDBObjectStoreRequest.h: Removed.
            * storage/IDBObjectStoreRequest.idl: Removed.
            * storage/IDBRequest.cpp:
            (WebCore::IDBRequest::onSuccess):
            * storage/IDBRequest.h:
    2010-08-03  Andrei Popescu  <andreip at google.com>
    
            Reviewed by Jeremy Orlow.
    
            [IndexedDB] IDBObjectStoreRequest should be called IDBObjectStore
            https://bugs.webkit.org/show_bug.cgi?id=43420
    
            * src/IDBCallbacksProxy.cpp:
            (WebCore::IDBCallbacksProxy::onSuccess):
            * src/IDBCallbacksProxy.h:
            * src/IDBDatabaseProxy.cpp:
            (WebCore::IDBDatabaseProxy::objectStore):
            * src/IDBDatabaseProxy.h:
            * src/IDBObjectStoreProxy.cpp:
            (WebCore::IDBObjectStoreProxy::create):
            * src/IDBObjectStoreProxy.h:
            * src/WebIDBObjectStoreImpl.cpp:
            (WebKit::WebIDBObjectStoreImpl::WebIDBObjectStoreImpl):
            * src/WebIDBObjectStoreImpl.h:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@64577 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/Android.derived.jscbindings.mk b/WebCore/Android.derived.jscbindings.mk
index fc081d3..bea2e1d 100644
--- a/WebCore/Android.derived.jscbindings.mk
+++ b/WebCore/Android.derived.jscbindings.mk
@@ -370,6 +370,7 @@ GEN := \
     $(intermediates)/storage/JSIDBIndex.h \
     $(intermediates)/storage/JSIDBKey.h \
     $(intermediates)/storage/JSIDBKeyRange.h \
+    $(intermediates)/storage/JSIDBObjectStore.h \
     $(intermediates)/storage/JSIDBRequest.h \
     $(intermediates)/storage/JSIDBSuccessEvent.h
 
diff --git a/WebCore/Android.derived.v8bindings.mk b/WebCore/Android.derived.v8bindings.mk
index 7f922ed..f7fa8d6 100644
--- a/WebCore/Android.derived.v8bindings.mk
+++ b/WebCore/Android.derived.v8bindings.mk
@@ -351,6 +351,7 @@ GEN := \
     $(intermediates)/bindings/V8IDBIndex.h \
     $(intermediates)/bindings/V8IDBKey.h \
     $(intermediates)/bindings/V8IDBKeyRange.h \
+    $(intermediates)/bindings/V8IDBObjectStore.h \
     $(intermediates)/bindings/V8IDBRequest.h \
     $(intermediates)/bindings/V8IDBSuccessEvent.h
 
diff --git a/WebCore/Android.mk b/WebCore/Android.mk
index 01c83c6..c90d914 100644
--- a/WebCore/Android.mk
+++ b/WebCore/Android.mk
@@ -751,8 +751,8 @@ LOCAL_SRC_FILES := $(LOCAL_SRC_FILES) \
 	storage/IDBIndexBackendImpl.cpp \
 	storage/IDBKey.cpp \
 	storage/IDBKeyRange.cpp \
-	storage/IDBObjectStoreImpl.cpp \
-	storage/IDBObjectStoreRequest.cpp \
+	storage/IDBObjectStore.cpp \
+	storage/IDBObjectStoreBackendImpl.cpp \
 	storage/IDBRequest.cpp \
 	storage/IDBSuccessEvent.cpp \
 	storage/IDBFactory.cpp \
diff --git a/WebCore/CMakeLists.txt b/WebCore/CMakeLists.txt
index ca7749b..dc2ad17 100644
--- a/WebCore/CMakeLists.txt
+++ b/WebCore/CMakeLists.txt
@@ -343,7 +343,7 @@ SET(WebCore_IDL_FILES
     storage/IDBIndex.idl
     storage/IDBKey.idl
     storage/IDBKeyRange.idl
-    storage/IDBObjectStoreRequest.idl
+    storage/IDBObjectStore.idl
     storage/IDBRequest.idl
     storage/IDBSuccessEvent.idl
     storage/SQLError.idl
@@ -1445,8 +1445,8 @@ SET(WebCore_SOURCES
     storage/IDBKey.cpp
     storage/IDBKeyRange.cpp
     storage/IDBRequest.cpp
-    storage/IDBObjectStoreImpl.cpp
-    storage/IDBObjectStoreRequest.cpp
+    storage/IDBObjectStore.cpp
+    storage/IDBObjectStoreBackendImpl.cpp
     storage/IDBSuccessEvent.cpp
     storage/IDBFactory.cpp
     storage/IDBFactoryBackendInterface.cpp
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 30fd2b4..1a9b41a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,85 @@
+2010-08-03  Andrei Popescu  <andreip at google.com>
+
+        Reviewed by Jeremy Orlow.
+
+        [IndexedDB] IDBObjectStoreRequest should be called IDBObjectStore
+        https://bugs.webkit.org/show_bug.cgi?id=43420
+
+        Renaming IDBObjectStoreRequest to IDBObjectStore.
+
+        No new tests needed, 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.xcodeproj/project.pbxproj:
+        * bindings/js/JSIDBAnyCustom.cpp:
+        (WebCore::toJS):
+        * bindings/v8/custom/V8IDBAnyCustom.cpp:
+        (WebCore::toV8):
+        * storage/IDBAny.cpp:
+        (WebCore::IDBAny::idbObjectStore):
+        (WebCore::IDBAny::set):
+        * storage/IDBAny.h:
+        (WebCore::IDBAny::):
+        * storage/IDBCallbacks.h:
+        * storage/IDBDatabase.cpp:
+        (WebCore::IDBDatabase::objectStore):
+        * storage/IDBDatabase.h:
+        * storage/IDBDatabaseBackendImpl.cpp:
+        (WebCore::IDBDatabaseBackendImpl::createObjectStore):
+        (WebCore::IDBDatabaseBackendImpl::objectStore):
+        * storage/IDBDatabaseBackendImpl.h:
+        * storage/IDBDatabaseBackendInterface.h:
+        * storage/IDBObjectStore.cpp: Added.
+        (WebCore::IDBObjectStore::IDBObjectStore):
+        (WebCore::IDBObjectStore::name):
+        (WebCore::IDBObjectStore::keyPath):
+        (WebCore::IDBObjectStore::indexNames):
+        (WebCore::IDBObjectStore::get):
+        (WebCore::IDBObjectStore::add):
+        (WebCore::IDBObjectStore::put):
+        (WebCore::IDBObjectStore::remove):
+        (WebCore::IDBObjectStore::createIndex):
+        (WebCore::IDBObjectStore::index):
+        (WebCore::IDBObjectStore::removeIndex):
+        * storage/IDBObjectStore.h:
+        (WebCore::IDBObjectStore::create):
+        (WebCore::IDBObjectStore::~IDBObjectStore):
+        * storage/IDBObjectStore.idl: Added.
+        * storage/IDBObjectStoreBackendImpl.cpp: Added.
+        (WebCore::IDBObjectStoreBackendImpl::~IDBObjectStoreBackendImpl):
+        (WebCore::IDBObjectStoreBackendImpl::IDBObjectStoreBackendImpl):
+        (WebCore::IDBObjectStoreBackendImpl::indexNames):
+        (WebCore::IDBObjectStoreBackendImpl::get):
+        (WebCore::IDBObjectStoreBackendImpl::put):
+        (WebCore::IDBObjectStoreBackendImpl::remove):
+        (WebCore::IDBObjectStoreBackendImpl::createIndex):
+        (WebCore::IDBObjectStoreBackendImpl::index):
+        (WebCore::IDBObjectStoreBackendImpl::removeIndex):
+        * storage/IDBObjectStoreBackendImpl.h: Added.
+        (WebCore::IDBObjectStoreBackendImpl::create):
+        (WebCore::IDBObjectStoreBackendImpl::name):
+        (WebCore::IDBObjectStoreBackendImpl::keyPath):
+        * storage/IDBObjectStoreBackendInterface.h: Added.
+        (WebCore::IDBObjectStoreBackendInterface::~IDBObjectStoreBackendInterface):
+        * storage/IDBObjectStoreImpl.cpp: Removed.
+        * storage/IDBObjectStoreImpl.h: Removed.
+        * storage/IDBObjectStoreRequest.cpp: Removed.
+        * storage/IDBObjectStoreRequest.h: Removed.
+        * storage/IDBObjectStoreRequest.idl: Removed.
+        * storage/IDBRequest.cpp:
+        (WebCore::IDBRequest::onSuccess):
+        * storage/IDBRequest.h:
+
 2010-08-03  Martin Robinson  <mrobinson at igalia.com>
 
         Reviewed by Ojan Vafai.
diff --git a/WebCore/DerivedSources.cpp b/WebCore/DerivedSources.cpp
index 4b85642..4bed568 100644
--- a/WebCore/DerivedSources.cpp
+++ b/WebCore/DerivedSources.cpp
@@ -185,7 +185,7 @@
 #include "JSIDBIndex.cpp"
 #include "JSIDBKey.cpp"
 #include "JSIDBKeyRange.cpp"
-#include "JSIDBObjectStoreRequest.cpp"
+#include "JSIDBObjectStore.cpp"
 #include "JSIDBRequest.cpp"
 #include "JSIDBSuccessEvent.cpp"
 #include "JSImageData.cpp"
diff --git a/WebCore/DerivedSources.make b/WebCore/DerivedSources.make
index baecb31..e263c7e 100644
--- a/WebCore/DerivedSources.make
+++ b/WebCore/DerivedSources.make
@@ -235,7 +235,7 @@ DOM_CLASSES = \
     IDBIndex \
     IDBKey \
     IDBKeyRange \
-    IDBObjectStoreRequest \
+    IDBObjectStore \
     IDBRequest \
     IDBSuccessEvent \
     ImageData \
diff --git a/WebCore/GNUmakefile.am b/WebCore/GNUmakefile.am
index 8d1e6de..73474af 100644
--- a/WebCore/GNUmakefile.am
+++ b/WebCore/GNUmakefile.am
@@ -2849,8 +2849,8 @@ webcore_built_sources += \
 	DerivedSources/WebCore/JSIDBIndex.h \
 	DerivedSources/WebCore/JSIDBKeyRange.cpp \
 	DerivedSources/WebCore/JSIDBKeyRange.h \
-	DerivedSources/WebCore/JSIDBObjectStoreRequest.cpp \
-	DerivedSources/WebCore/JSIDBObjectStoreRequest.h \
+	DerivedSources/WebCore/JSIDBObjectStore.cpp \
+	DerivedSources/WebCore/JSIDBObjectStore.h \
 	DerivedSources/WebCore/JSIDBRequest.cpp \
 	DerivedSources/WebCore/JSIDBRequest.h \
 	DerivedSources/WebCore/JSIDBSuccessEvent.cpp \
@@ -2878,11 +2878,11 @@ webcore_sources += \
 	WebCore/storage/IDBIndexBackendImpl.h \
 	WebCore/storage/IDBKeyRange.cpp \
 	WebCore/storage/IDBKeyRange.h \
+	WebCore/storage/IDBObjectStore.cpp \
 	WebCore/storage/IDBObjectStore.h \
-	WebCore/storage/IDBObjectStoreImpl.cpp \
-	WebCore/storage/IDBObjectStoreImpl.h \
-	WebCore/storage/IDBObjectStoreRequest.cpp \
-	WebCore/storage/IDBObjectStoreRequest.h \
+	WebCore/storage/IDBObjectStoreBackendImpl.cpp \
+	WebCore/storage/IDBObjectStoreBackendImpl.h \
+	WebCore/storage/IDBObjectStoreBackendInterface.h \
 	WebCore/storage/IDBRequest.cpp \
 	WebCore/storage/IDBRequest.h \
 	WebCore/storage/IDBSuccessEvent.cpp \
diff --git a/WebCore/WebCore.gypi b/WebCore/WebCore.gypi
index 9f36c9d..52bfe1d 100644
--- a/WebCore/WebCore.gypi
+++ b/WebCore/WebCore.gypi
@@ -246,7 +246,7 @@
             'storage/IDBIndex.idl',
             'storage/IDBKey.idl',
             'storage/IDBKeyRange.idl',
-            'storage/IDBObjectStoreRequest.idl',
+            'storage/IDBObjectStore.idl',
             'storage/IDBRequest.idl',
             'storage/IDBSuccessEvent.idl',
             'storage/Metadata.idl',
@@ -3524,11 +3524,11 @@
             'storage/IDBKeyRange.cpp',
             'storage/IDBKeyRange.h',
             'storage/IDBKeyTree.h',
+            'storage/IDBObjectStore.cpp',
             'storage/IDBObjectStore.h',
-            'storage/IDBObjectStoreImpl.cpp',
-            'storage/IDBObjectStoreImpl.h',
-            'storage/IDBObjectStoreRequest.cpp',
-            'storage/IDBObjectStoreRequest.h',
+            'storage/IDBObjectStoreBackendImpl.cpp',
+            'storage/IDBObjectStoreBackendImpl.h',
+            'storage/IDBObjectStoreBackendInterface.h',
             'storage/IDBRequest.cpp',
             'storage/IDBRequest.h',
             'storage/IDBSuccessEvent.cpp',
diff --git a/WebCore/WebCore.pri b/WebCore/WebCore.pri
index 2fdfcd1..ce0f701 100644
--- a/WebCore/WebCore.pri
+++ b/WebCore/WebCore.pri
@@ -491,7 +491,7 @@ IDL_BINDINGS += \
     storage/IDBIndex.idl \
     storage/IDBKey.idl \
     storage/IDBKeyRange.idl \
-    storage/IDBObjectStoreRequest.idl \
+    storage/IDBObjectStore.idl \
     storage/IDBRequest.idl \
     storage/IDBSuccessEvent.idl \
     storage/IDBFactory.idl \
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 0beb5ff..ed5e2da 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -2441,8 +2441,8 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
         storage/IDBKey.h \
         storage/IDBKeyRange.h \
         storage/IDBObjectStore.h \
-        storage/IDBObjectStoreImpl.h \
-        storage/IDBObjectStoreRequest.h \
+        storage/IDBObjectStoreBackendImpl.h \
+        storage/IDBObjectStoreBackendInterface.h \
         storage/IDBRequest.h \
         storage/IDBSuccessEvent.h
 
@@ -2462,8 +2462,8 @@ contains(DEFINES, ENABLE_INDEXED_DATABASE=1) {
         storage/IDBIndexBackendImpl.cpp \
         storage/IDBKey.cpp \
         storage/IDBKeyRange.cpp \
-        storage/IDBObjectStoreImpl.cpp \
-        storage/IDBObjectStoreRequest.cpp \
+        storage/IDBObjectStore.cpp \
+        storage/IDBObjectStoreBackendImpl.cpp \
         storage/IDBRequest.cpp \
         storage/IDBSuccessEvent.cpp
 }
diff --git a/WebCore/WebCore.vcproj/WebCore.vcproj b/WebCore/WebCore.vcproj/WebCore.vcproj
index ba58737..e723572 100644
--- a/WebCore/WebCore.vcproj/WebCore.vcproj
+++ b/WebCore/WebCore.vcproj/WebCore.vcproj
@@ -45012,7 +45012,7 @@
 					>
 				</File>
 				<File
-					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStoreRequest.cpp"
+					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStore.cpp"
 					>
 					<FileConfiguration
 						Name="Debug|Win32"
@@ -45064,7 +45064,7 @@
 					</FileConfiguration>
 				</File>
 				<File
-					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStoreRequest.cpp"
+					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStore.cpp"
 					>
 					<FileConfiguration
 						Name="Debug|Win32"
@@ -45116,7 +45116,7 @@
 					</FileConfiguration>
 				</File>
 				<File
-					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStoreRequest.h"
+					RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBObjectStore.h"
 					>
 				</File>
 				<File
@@ -50217,23 +50217,23 @@
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBObjectStore.h"
+				RelativePath="..\storage\IDBObjectStore.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBObjectStoreImpl.cpp"
+				RelativePath="..\storage\IDBObjectStore.h"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBObjectStoreImpl.h"
+				RelativePath="..\storage\IDBObjectStoreBackendImpl.cpp"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBObjectStoreRequest.cpp"
+				RelativePath="..\storage\IDBObjectStoreBackendImpl.h"
 				>
 			</File>
 			<File
-				RelativePath="..\storage\IDBObjectStoreRequest.h"
+				RelativePath="..\storage\IDBObjectStoreBackendInterface.h"
 				>
 			</File>
 			<File
diff --git a/WebCore/WebCore.xcodeproj/project.pbxproj b/WebCore/WebCore.xcodeproj/project.pbxproj
index 900a8b4..cb74928 100644
--- a/WebCore/WebCore.xcodeproj/project.pbxproj
+++ b/WebCore/WebCore.xcodeproj/project.pbxproj
@@ -4953,8 +4953,8 @@
 		C585A68B11D4FB08004C3E4B /* JSIDBKey.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67311D4FB07004C3E4B /* JSIDBKey.h */; };
 		C585A68C11D4FB08004C3E4B /* JSIDBKeyRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */; };
 		C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */; };
-		C585A68E11D4FB08004C3E4B /* JSIDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */; };
-		C585A68F11D4FB08004C3E4B /* JSIDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */; };
+		C585A68E11D4FB08004C3E4B /* JSIDBObjectStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67611D4FB07004C3E4B /* JSIDBObjectStore.cpp */; };
+		C585A68F11D4FB08004C3E4B /* JSIDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */; };
 		C585A69011D4FB08004C3E4B /* JSIDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */; };
 		C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A67911D4FB07004C3E4B /* JSIDBRequest.h */; };
 		C585A69211D4FB08004C3E4B /* JSIDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */; };
@@ -4978,10 +4978,10 @@
 		C585A6EA11D4FB3D004C3E4B /* IDBKeyRange.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */; };
 		C585A6EC11D4FB3D004C3E4B /* IDBKeyTree.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */; };
 		C585A6ED11D4FB3D004C3E4B /* IDBObjectStore.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */; };
-		C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */; };
-		C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */; };
-		C585A6F011D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */; };
-		C585A6F111D4FB3D004C3E4B /* IDBObjectStoreRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */; };
+		C585A6F011D4FB3D004C3E4B /* IDBObjectStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BC11D4FB3D004C3E4B /* IDBObjectStore.cpp */; };
+		C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.cpp */; };
+		C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.h */; };
+		C585A6F111D4FB3D004C3E4B /* IDBObjectStoreBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreBackendInterface.h */; };
 		C585A6F311D4FB3D004C3E4B /* IDBRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */; };
 		C585A6F411D4FB3D004C3E4B /* IDBRequest.h in Headers */ = {isa = PBXBuildFile; fileRef = C585A6C011D4FB3D004C3E4B /* IDBRequest.h */; };
 		C585A6F611D4FB3D004C3E4B /* IDBSuccessEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C585A6C211D4FB3D004C3E4B /* IDBSuccessEvent.cpp */; };
@@ -10656,8 +10656,8 @@
 		C585A67311D4FB07004C3E4B /* JSIDBKey.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKey.h; sourceTree = "<group>"; };
 		C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBKeyRange.cpp; sourceTree = "<group>"; };
 		C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBKeyRange.h; sourceTree = "<group>"; };
-		C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
-		C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBObjectStoreRequest.h; sourceTree = "<group>"; };
+		C585A67611D4FB07004C3E4B /* JSIDBObjectStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBObjectStore.cpp; sourceTree = "<group>"; };
+		C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBObjectStore.h; sourceTree = "<group>"; };
 		C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBRequest.cpp; sourceTree = "<group>"; };
 		C585A67911D4FB07004C3E4B /* JSIDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBRequest.h; sourceTree = "<group>"; };
 		C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBSuccessEvent.cpp; sourceTree = "<group>"; };
@@ -10689,12 +10689,12 @@
 		C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKeyRange.h; sourceTree = "<group>"; };
 		C585A6B711D4FB3D004C3E4B /* IDBKeyRange.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBKeyRange.idl; sourceTree = "<group>"; };
 		C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBKeyTree.h; sourceTree = "<group>"; };
+		C585A6BC11D4FB3D004C3E4B /* IDBObjectStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStore.cpp; sourceTree = "<group>"; };
 		C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStore.h; sourceTree = "<group>"; };
-		C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreImpl.cpp; sourceTree = "<group>"; };
-		C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreImpl.h; sourceTree = "<group>"; };
-		C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreRequest.cpp; sourceTree = "<group>"; };
-		C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreRequest.h; sourceTree = "<group>"; };
-		C585A6BE11D4FB3D004C3E4B /* IDBObjectStoreRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBObjectStoreRequest.idl; sourceTree = "<group>"; };
+		C585A6BE11D4FB3D004C3E4B /* IDBObjectStore.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBObjectStore.idl; sourceTree = "<group>"; };
+		C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBObjectStoreBackendImpl.cpp; sourceTree = "<group>"; };
+		C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreBackendImpl.h; sourceTree = "<group>"; };
+		C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBObjectStoreBackendInterface.h; sourceTree = "<group>"; };
 		C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBRequest.cpp; sourceTree = "<group>"; };
 		C585A6C011D4FB3D004C3E4B /* IDBRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBRequest.h; sourceTree = "<group>"; };
 		C585A6C111D4FB3D004C3E4B /* IDBRequest.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBRequest.idl; sourceTree = "<group>"; };
@@ -11425,12 +11425,12 @@
 				C585A6B611D4FB3D004C3E4B /* IDBKeyRange.h */,
 				C585A6B711D4FB3D004C3E4B /* IDBKeyRange.idl */,
 				C585A6B811D4FB3D004C3E4B /* IDBKeyTree.h */,
+				C585A6BC11D4FB3D004C3E4B /* IDBObjectStore.cpp */,
 				C585A6B911D4FB3D004C3E4B /* IDBObjectStore.h */,
-				C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp */,
-				C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreImpl.h */,
-				C585A6BC11D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp */,
-				C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreRequest.h */,
-				C585A6BE11D4FB3D004C3E4B /* IDBObjectStoreRequest.idl */,
+				C585A6BE11D4FB3D004C3E4B /* IDBObjectStore.idl */,
+				C585A6BA11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.cpp */,
+				C585A6BB11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.h */,
+				C585A6BD11D4FB3D004C3E4B /* IDBObjectStoreBackendInterface.h */,
 				C585A6BF11D4FB3D004C3E4B /* IDBRequest.cpp */,
 				C585A6C011D4FB3D004C3E4B /* IDBRequest.h */,
 				C585A6C111D4FB3D004C3E4B /* IDBRequest.idl */,
@@ -14869,8 +14869,8 @@
 				C585A67311D4FB07004C3E4B /* JSIDBKey.h */,
 				C585A67411D4FB07004C3E4B /* JSIDBKeyRange.cpp */,
 				C585A67511D4FB07004C3E4B /* JSIDBKeyRange.h */,
-				C585A67611D4FB07004C3E4B /* JSIDBObjectStoreRequest.cpp */,
-				C585A67711D4FB07004C3E4B /* JSIDBObjectStoreRequest.h */,
+				C585A67611D4FB07004C3E4B /* JSIDBObjectStore.cpp */,
+				C585A67711D4FB07004C3E4B /* JSIDBObjectStore.h */,
 				C585A67811D4FB07004C3E4B /* JSIDBRequest.cpp */,
 				C585A67911D4FB07004C3E4B /* JSIDBRequest.h */,
 				C585A67A11D4FB07004C3E4B /* JSIDBSuccessEvent.cpp */,
@@ -18603,8 +18603,8 @@
 				C585A6EA11D4FB3D004C3E4B /* IDBKeyRange.h in Headers */,
 				C585A6EC11D4FB3D004C3E4B /* IDBKeyTree.h in Headers */,
 				C585A6ED11D4FB3D004C3E4B /* IDBObjectStore.h in Headers */,
-				C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreImpl.h in Headers */,
-				C585A6F111D4FB3D004C3E4B /* IDBObjectStoreRequest.h in Headers */,
+				C585A6EF11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.h in Headers */,
+				C585A6F111D4FB3D004C3E4B /* IDBObjectStoreBackendInterface.h in Headers */,
 				C585A6F411D4FB3D004C3E4B /* IDBRequest.h in Headers */,
 				C585A6F711D4FB3D004C3E4B /* IDBSuccessEvent.h in Headers */,
 				1A71D57C0F33819000F9CE4E /* IdentifierRep.h in Headers */,
@@ -18850,7 +18850,7 @@
 				C572EE1F1201C9BC007D8F82 /* JSIDBIndex.h in Headers */,
 				C585A68B11D4FB08004C3E4B /* JSIDBKey.h in Headers */,
 				C585A68D11D4FB08004C3E4B /* JSIDBKeyRange.h in Headers */,
-				C585A68F11D4FB08004C3E4B /* JSIDBObjectStoreRequest.h in Headers */,
+				C585A68F11D4FB08004C3E4B /* JSIDBObjectStore.h in Headers */,
 				C585A69111D4FB08004C3E4B /* JSIDBRequest.h in Headers */,
 				C585A69311D4FB08004C3E4B /* JSIDBSuccessEvent.h in Headers */,
 				BC6C49F40D7DBA0500FFA558 /* JSImageConstructor.h in Headers */,
@@ -21032,8 +21032,8 @@
 				C572EE0D1201C736007D8F82 /* IDBIndexBackendImpl.cpp in Sources */,
 				C585A6E611D4FB3D004C3E4B /* IDBKey.cpp in Sources */,
 				C585A6E911D4FB3D004C3E4B /* IDBKeyRange.cpp in Sources */,
-				C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreImpl.cpp in Sources */,
-				C585A6F011D4FB3D004C3E4B /* IDBObjectStoreRequest.cpp in Sources */,
+				C585A6F011D4FB3D004C3E4B /* IDBObjectStore.cpp in Sources */,
+				C585A6EE11D4FB3D004C3E4B /* IDBObjectStoreBackendImpl.cpp in Sources */,
 				C585A6F311D4FB3D004C3E4B /* IDBRequest.cpp in Sources */,
 				C585A6F611D4FB3D004C3E4B /* IDBSuccessEvent.cpp in Sources */,
 				1A71D57B0F33819000F9CE4E /* IdentifierRep.cpp in Sources */,
@@ -21323,7 +21323,7 @@
 				C585A68A11D4FB08004C3E4B /* JSIDBKey.cpp in Sources */,
 				C585A65F11D4FAB2004C3E4B /* JSIDBKeyCustom.cpp in Sources */,
 				C585A68C11D4FB08004C3E4B /* JSIDBKeyRange.cpp in Sources */,
-				C585A68E11D4FB08004C3E4B /* JSIDBObjectStoreRequest.cpp in Sources */,
+				C585A68E11D4FB08004C3E4B /* JSIDBObjectStore.cpp in Sources */,
 				C585A69011D4FB08004C3E4B /* JSIDBRequest.cpp in Sources */,
 				C585A69211D4FB08004C3E4B /* JSIDBSuccessEvent.cpp in Sources */,
 				BC6C49F30D7DBA0500FFA558 /* JSImageConstructor.cpp in Sources */,
diff --git a/WebCore/bindings/js/JSIDBAnyCustom.cpp b/WebCore/bindings/js/JSIDBAnyCustom.cpp
index e5adbe3..0808b48 100644
--- a/WebCore/bindings/js/JSIDBAnyCustom.cpp
+++ b/WebCore/bindings/js/JSIDBAnyCustom.cpp
@@ -36,12 +36,12 @@
 #include "IDBFactory.h"
 #include "IDBIndex.h"
 #include "IDBKey.h"
-#include "IDBObjectStoreRequest.h"
+#include "IDBObjectStore.h"
 #include "JSIDBDatabase.h"
 #include "JSIDBFactory.h"
 #include "JSIDBIndex.h"
 #include "JSIDBKey.h"
-#include "JSIDBObjectStoreRequest.h"
+#include "JSIDBObjectStore.h"
 #include "SerializedScriptValue.h"
 
 using namespace JSC;
@@ -64,8 +64,8 @@ JSValue toJS(ExecState* exec, JSDOMGlobalObject* globalObject, IDBAny* idbAny)
         return toJS(exec, globalObject, idbAny->idbIndex());
     case IDBAny::IDBKeyType:
         return toJS(exec, globalObject, idbAny->idbKey());
-    case IDBAny::IDBObjectStoreRequestType:
-        return toJS(exec, globalObject, idbAny->idbObjectStoreRequest());
+    case IDBAny::IDBObjectStoreType:
+        return toJS(exec, globalObject, idbAny->idbObjectStore());
     case IDBAny::IDBFactoryType:
         return toJS(exec, globalObject, idbAny->idbFactory());
     case IDBAny::SerializedScriptValueType:
diff --git a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
index 11532e1..1abe870 100644
--- a/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
+++ b/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp
@@ -36,7 +36,7 @@
 #include "V8IDBFactory.h"
 #include "V8IDBIndex.h"
 #include "V8IDBKey.h"
-#include "V8IDBObjectStoreRequest.h"
+#include "V8IDBObjectStore.h"
 
 namespace WebCore {
 
@@ -56,8 +56,8 @@ v8::Handle<v8::Value> toV8(IDBAny* impl)
         return toV8(impl->idbIndex());
     case IDBAny::IDBKeyType:
         return toV8(impl->idbKey());
-    case IDBAny::IDBObjectStoreRequestType:
-        return toV8(impl->idbObjectStoreRequest());
+    case IDBAny::IDBObjectStoreType:
+        return toV8(impl->idbObjectStore());
     case IDBAny::IDBFactoryType:
         return toV8(impl->idbFactory());
     case IDBAny::SerializedScriptValueType:
diff --git a/WebCore/storage/IDBAny.cpp b/WebCore/storage/IDBAny.cpp
index eafbf53..852e831 100644
--- a/WebCore/storage/IDBAny.cpp
+++ b/WebCore/storage/IDBAny.cpp
@@ -31,7 +31,7 @@
 #include "IDBDatabase.h"
 #include "IDBFactory.h"
 #include "IDBIndex.h"
-#include "IDBObjectStoreRequest.h"
+#include "IDBObjectStore.h"
 #include "SerializedScriptValue.h"
 
 namespace WebCore {
@@ -68,10 +68,10 @@ PassRefPtr<IDBKey> IDBAny::idbKey()
     return m_idbKey;
 }
 
-PassRefPtr<IDBObjectStoreRequest> IDBAny::idbObjectStoreRequest()
+PassRefPtr<IDBObjectStore> IDBAny::idbObjectStore()
 {
-    ASSERT(m_type == IDBObjectStoreRequestType);
-    return m_idbObjectStoreRequest;
+    ASSERT(m_type == IDBObjectStoreType);
+    return m_idbObjectStore;
 }
 
 PassRefPtr<IDBFactory> IDBAny::idbFactory()
@@ -113,11 +113,11 @@ void IDBAny::set(PassRefPtr<IDBKey> value)
     m_idbKey = value;
 }
 
-void IDBAny::set(PassRefPtr<IDBObjectStoreRequest> value)
+void IDBAny::set(PassRefPtr<IDBObjectStore> value)
 {
     ASSERT(m_type == UndefinedType);
-    m_type = IDBObjectStoreRequestType;
-    m_idbObjectStoreRequest = value;
+    m_type = IDBObjectStoreType;
+    m_idbObjectStore = value;
 }
 
 void IDBAny::set(PassRefPtr<IDBFactory> value)
diff --git a/WebCore/storage/IDBAny.h b/WebCore/storage/IDBAny.h
index d9022f1..1f96500 100644
--- a/WebCore/storage/IDBAny.h
+++ b/WebCore/storage/IDBAny.h
@@ -37,7 +37,7 @@ namespace WebCore {
 class IDBDatabase;
 class IDBIndex;
 class IDBKey;
-class IDBObjectStoreRequest;
+class IDBObjectStore;
 class IDBFactory;
 class SerializedScriptValue;
 
@@ -60,7 +60,7 @@ public:
         IDBFactoryType,
         IDBIndexType,
         IDBKeyType,
-        IDBObjectStoreRequestType,
+        IDBObjectStoreType,
         SerializedScriptValueType
     };
 
@@ -70,7 +70,7 @@ public:
     PassRefPtr<IDBFactory> idbFactory();
     PassRefPtr<IDBIndex> idbIndex();
     PassRefPtr<IDBKey> idbKey();
-    PassRefPtr<IDBObjectStoreRequest> idbObjectStoreRequest();
+    PassRefPtr<IDBObjectStore> idbObjectStore();
     PassRefPtr<SerializedScriptValue> serializedScriptValue();
 
     // Set can only be called once.
@@ -79,7 +79,7 @@ public:
     void set(PassRefPtr<IDBFactory>);
     void set(PassRefPtr<IDBIndex>);
     void set(PassRefPtr<IDBKey>);
-    void set(PassRefPtr<IDBObjectStoreRequest>);
+    void set(PassRefPtr<IDBObjectStore>);
     void set(PassRefPtr<SerializedScriptValue>);
 
 private:
@@ -92,7 +92,7 @@ private:
     RefPtr<IDBFactory> m_idbFactory;
     RefPtr<IDBIndex> m_idbIndex;
     RefPtr<IDBKey> m_idbKey;
-    RefPtr<IDBObjectStoreRequest> m_idbObjectStoreRequest;
+    RefPtr<IDBObjectStore> m_idbObjectStore;
     RefPtr<SerializedScriptValue> m_serializedScriptValue;
 };
 
diff --git a/WebCore/storage/IDBCallbacks.h b/WebCore/storage/IDBCallbacks.h
index 871dd55..47c3694 100644
--- a/WebCore/storage/IDBCallbacks.h
+++ b/WebCore/storage/IDBCallbacks.h
@@ -33,7 +33,7 @@
 #include "IDBDatabaseError.h"
 #include "IDBIndexBackendInterface.h"
 #include "IDBKey.h"
-#include "IDBObjectStore.h"
+#include "IDBObjectStoreBackendInterface.h"
 #include "SerializedScriptValue.h"
 #include <wtf/RefCounted.h>
 
@@ -50,7 +50,7 @@ public:
     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
     virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
-    virtual void onSuccess(PassRefPtr<IDBObjectStore>) = 0;
+    virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>) = 0;
     virtual void onSuccess(PassRefPtr<SerializedScriptValue>) = 0;
 };
 
diff --git a/WebCore/storage/IDBDatabase.cpp b/WebCore/storage/IDBDatabase.cpp
index 03c0972..e4d4385 100644
--- a/WebCore/storage/IDBDatabase.cpp
+++ b/WebCore/storage/IDBDatabase.cpp
@@ -28,7 +28,7 @@
 
 #include "IDBAny.h"
 #include "IDBFactoryBackendInterface.h"
-#include "IDBObjectStoreRequest.h"
+#include "IDBObjectStore.h"
 #include "IDBRequest.h"
 #include "ScriptExecutionContext.h"
 
@@ -54,11 +54,11 @@ PassRefPtr<IDBRequest> IDBDatabase::createObjectStore(ScriptExecutionContext* co
     return request;
 }
 
-PassRefPtr<IDBObjectStoreRequest> IDBDatabase::objectStore(const String& name, unsigned short mode)
+PassRefPtr<IDBObjectStore> IDBDatabase::objectStore(const String& name, unsigned short mode)
 {
-    RefPtr<IDBObjectStore> objectStore = m_backend->objectStore(name, mode);
+    RefPtr<IDBObjectStoreBackendInterface> 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());
+    return IDBObjectStore::create(objectStore.release());
 }
 
 PassRefPtr<IDBRequest> IDBDatabase::removeObjectStore(ScriptExecutionContext* context, const String& name)
diff --git a/WebCore/storage/IDBDatabase.h b/WebCore/storage/IDBDatabase.h
index 9f7b9af..cca20e3 100644
--- a/WebCore/storage/IDBDatabase.h
+++ b/WebCore/storage/IDBDatabase.h
@@ -37,7 +37,7 @@
 namespace WebCore {
 
 class IDBAny;
-class IDBObjectStoreRequest;
+class IDBObjectStore;
 class IDBRequest;
 class ScriptExecutionContext;
 
@@ -56,7 +56,7 @@ public:
     PassRefPtr<DOMStringList> objectStores() const { return m_backend->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<IDBObjectStore> objectStore(const String& name, unsigned short mode = 0); // FIXME: Use constant rather than 0.
     PassRefPtr<IDBRequest> removeObjectStore(ScriptExecutionContext*, const String& name);
 
 private:
diff --git a/WebCore/storage/IDBDatabase.idl b/WebCore/storage/IDBDatabase.idl
index 1bc121f..d75ed55 100644
--- a/WebCore/storage/IDBDatabase.idl
+++ b/WebCore/storage/IDBDatabase.idl
@@ -38,7 +38,7 @@ module storage {
 
         [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);
+        IDBObjectStore 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
index 02e784c..86228bd 100644
--- a/WebCore/storage/IDBDatabaseBackendImpl.cpp
+++ b/WebCore/storage/IDBDatabaseBackendImpl.cpp
@@ -28,7 +28,7 @@
 
 #include "DOMStringList.h"
 #include "IDBDatabaseException.h"
-#include "IDBObjectStoreImpl.h"
+#include "IDBObjectStoreBackendImpl.h"
 
 #if ENABLE(INDEXED_DATABASE)
 
@@ -60,12 +60,12 @@ void IDBDatabaseBackendImpl::createObjectStore(const String& name, const String&
         return;
     }
 
-    RefPtr<IDBObjectStore> objectStore = IDBObjectStoreImpl::create(name, keyPath, autoIncrement);
+    RefPtr<IDBObjectStoreBackendInterface> objectStore = IDBObjectStoreBackendImpl::create(name, keyPath, autoIncrement);
     m_objectStores.set(name, objectStore);
     callbacks->onSuccess(objectStore.release());
 }
 
-PassRefPtr<IDBObjectStore> IDBDatabaseBackendImpl::objectStore(const String& name, unsigned short mode)
+PassRefPtr<IDBObjectStoreBackendInterface> 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.
diff --git a/WebCore/storage/IDBDatabaseBackendImpl.h b/WebCore/storage/IDBDatabaseBackendImpl.h
index 9f5ae4e..87e070a 100644
--- a/WebCore/storage/IDBDatabaseBackendImpl.h
+++ b/WebCore/storage/IDBDatabaseBackendImpl.h
@@ -50,7 +50,7 @@ public:
     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 PassRefPtr<IDBObjectStoreBackendInterface> objectStore(const String& name, unsigned short mode);
     virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>);
 
 private:
@@ -60,7 +60,7 @@ private:
     String m_description;
     String m_version;
 
-    typedef HashMap<String, RefPtr<IDBObjectStore> > ObjectStoreMap;
+    typedef HashMap<String, RefPtr<IDBObjectStoreBackendInterface> > ObjectStoreMap;
     ObjectStoreMap m_objectStores;
 };
 
diff --git a/WebCore/storage/IDBDatabaseBackendInterface.h b/WebCore/storage/IDBDatabaseBackendInterface.h
index 0e9ca1b..c2b08f1 100644
--- a/WebCore/storage/IDBDatabaseBackendInterface.h
+++ b/WebCore/storage/IDBDatabaseBackendInterface.h
@@ -37,7 +37,7 @@ namespace WebCore {
 class DOMStringList;
 class Frame;
 class IDBCallbacks;
-class IDBObjectStore;
+class IDBObjectStoreBackendInterface;
 
 // This class is shared by IDBDatabase (async) and IDBDatabaseSync (sync).
 // This is implemented by IDBDatabaseBackendImpl and optionally others (in order to proxy
@@ -55,7 +55,7 @@ public:
     // 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 PassRefPtr<IDBObjectStoreBackendInterface> objectStore(const String& name, unsigned short mode) = 0;
     virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>) = 0;
 };
 
diff --git a/WebCore/storage/IDBObjectStore.cpp b/WebCore/storage/IDBObjectStore.cpp
new file mode 100644
index 0000000..4b1de0a
--- /dev/null
+++ b/WebCore/storage/IDBObjectStore.cpp
@@ -0,0 +1,113 @@
+/*
+ * 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 "IDBObjectStore.h"
+
+#include "DOMStringList.h"
+#include "IDBAny.h"
+#include "IDBIndex.h"
+#include "IDBKey.h"
+#include "SerializedScriptValue.h"
+#include <wtf/UnusedParam.h>
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+IDBObjectStore::IDBObjectStore(PassRefPtr<IDBObjectStoreBackendInterface> idbObjectStore)
+    : m_objectStore(idbObjectStore)
+{
+    // We pass a reference to this object before it can be adopted.
+    relaxAdoptionRequirement();
+}
+
+String IDBObjectStore::name() const
+{
+    return m_objectStore->name();
+}
+
+String IDBObjectStore::keyPath() const
+{
+    return m_objectStore->keyPath();
+}
+
+PassRefPtr<DOMStringList> IDBObjectStore::indexNames() const
+{
+    return m_objectStore->indexNames();
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::get(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->get(key, request);
+    return request;
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::add(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->put(value, key, true, request);
+    return request;
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::put(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->put(value, key, false, request);
+    return request;
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::remove(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->remove(key, request);
+    return request;
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::createIndex(ScriptExecutionContext* context, const String& name, const String& keyPath, bool unique)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->createIndex(name, keyPath, unique, request);
+    return request;
+}
+
+PassRefPtr<IDBIndex> IDBObjectStore::index(const String& name)
+{
+    RefPtr<IDBIndexBackendInterface> index = m_objectStore->index(name);
+    ASSERT(index); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
+    return IDBIndex::create(index.release());
+}
+
+PassRefPtr<IDBRequest> IDBObjectStore::removeIndex(ScriptExecutionContext* context, const String& name)
+{
+    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
+    m_objectStore->removeIndex(name, request);
+    return request;
+}
+
+} // namespace WebCore
+
+#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBObjectStore.h b/WebCore/storage/IDBObjectStore.h
index 4a53eb4..e354273 100644
--- a/WebCore/storage/IDBObjectStore.h
+++ b/WebCore/storage/IDBObjectStore.h
@@ -26,34 +26,48 @@
 #ifndef IDBObjectStore_h
 #define IDBObjectStore_h
 
+#include "IDBObjectStoreBackendInterface.h"
+#include "IDBRequest.h"
 #include "PlatformString.h"
-#include <wtf/Threading.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/RefPtr.h>
 
 #if ENABLE(INDEXED_DATABASE)
 
 namespace WebCore {
 
 class DOMStringList;
-class IDBCallbacks;
-class IDBIndexBackendInterface;
+class IDBAny;
+class IDBIndexRequest;
 class IDBKey;
 class SerializedScriptValue;
 
-class IDBObjectStore : public ThreadSafeShared<IDBObjectStore> {
+class IDBObjectStore : public RefCounted<IDBObjectStore> {
 public:
-    virtual ~IDBObjectStore() { }
+    static PassRefPtr<IDBObjectStore> create(PassRefPtr<IDBObjectStoreBackendInterface> idbObjectStore)
+    {
+        return adoptRef(new IDBObjectStore(idbObjectStore));
+    }
+    ~IDBObjectStore() { }
 
-    virtual String name() const = 0;
-    virtual String keyPath() const = 0;
-    virtual PassRefPtr<DOMStringList> indexNames() const = 0;
+    String name() const;
+    String keyPath() const;
+    PassRefPtr<DOMStringList> indexNames() const;
 
-    virtual void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
-    virtual void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>) = 0;
-    virtual void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
+    PassRefPtr<IDBRequest> get(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
+    PassRefPtr<IDBRequest> add(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
+    PassRefPtr<IDBRequest> put(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
+    PassRefPtr<IDBRequest> remove(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
 
-    virtual void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>) = 0;
-    virtual PassRefPtr<IDBIndexBackendInterface> index(const String& name) = 0;
-    virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>) = 0;
+    PassRefPtr<IDBRequest> createIndex(ScriptExecutionContext*, const String& name, const String& keyPath, bool unique = false);
+    PassRefPtr<IDBIndex> index(const String& name);
+    PassRefPtr<IDBRequest> removeIndex(ScriptExecutionContext*, const String& name);
+
+private:
+    IDBObjectStore(PassRefPtr<IDBObjectStoreBackendInterface>);
+
+    RefPtr<IDBObjectStoreBackendInterface> m_objectStore;
 };
 
 } // namespace WebCore
diff --git a/WebCore/storage/IDBObjectStore.idl b/WebCore/storage/IDBObjectStore.idl
new file mode 100644
index 0000000..0a57c7d
--- /dev/null
+++ b/WebCore/storage/IDBObjectStore.idl
@@ -0,0 +1,48 @@
+/*
+ * 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
+    ] IDBObjectStore {
+        [CallWith=ScriptExecutionContext] IDBRequest get(in IDBKey key);        
+        // FIXME: Come to concensus re getAll.
+        // FIXME: SerializedScriptValue raises an exception if you pass in something that can't be serialized.
+        //        We need to instead "raise" this error via an error callback.
+        [CallWith=ScriptExecutionContext] IDBRequest add(in SerializedScriptValue value, in [Optional] IDBKey key);
+        [CallWith=ScriptExecutionContext] IDBRequest put(in SerializedScriptValue value, in [Optional] IDBKey key);
+        [CallWith=ScriptExecutionContext] IDBRequest remove(in IDBKey key);
+        // FIXME: write openCursor
+        [CallWith=ScriptExecutionContext] IDBRequest createIndex(in DOMString name, in [ConvertNullToNullString] DOMString keyPath, in [Optional] boolean unique);
+        // FIXME: This needs to raise an IDBDatabaseException on errors.
+        IDBIndex index(in DOMString name);
+        [CallWith=ScriptExecutionContext] IDBRequest removeIndex(in DOMString name);
+
+        readonly attribute DOMString name;
+        readonly attribute [ConvertNullStringTo=Null] DOMString keyPath;
+        readonly attribute DOMStringList indexNames;
+    };
+}
diff --git a/WebCore/storage/IDBObjectStoreBackendImpl.cpp b/WebCore/storage/IDBObjectStoreBackendImpl.cpp
new file mode 100755
index 0000000..f6120ae
--- /dev/null
+++ b/WebCore/storage/IDBObjectStoreBackendImpl.cpp
@@ -0,0 +1,136 @@
+/*
+ * 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 "IDBObjectStoreBackendImpl.h"
+
+#include "DOMStringList.h"
+#include "IDBBindingUtilities.h"
+#include "IDBCallbacks.h"
+#include "IDBDatabaseException.h"
+#include "IDBIndexBackendImpl.h"
+#include "IDBKeyTree.h"
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+IDBObjectStoreBackendImpl::~IDBObjectStoreBackendImpl()
+{
+}
+
+IDBObjectStoreBackendImpl::IDBObjectStoreBackendImpl(const String& name, const String& keyPath, bool autoIncrement)
+    : m_name(name)
+    , m_keyPath(keyPath)
+    , m_autoIncrement(autoIncrement)
+    , m_tree(Tree::create())
+{
+}
+
+PassRefPtr<DOMStringList> IDBObjectStoreBackendImpl::indexNames() const
+{
+    RefPtr<DOMStringList> indexNames = DOMStringList::create();
+    for (IndexMap::const_iterator it = m_indexes.begin(); it != m_indexes.end(); ++it)
+        indexNames->append(it->first);
+    return indexNames.release();
+}
+
+void IDBObjectStoreBackendImpl::get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
+{
+    RefPtr<SerializedScriptValue> value = m_tree->get(key.get());
+    if (!value) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the object store."));
+        return;
+    }
+    callbacks->onSuccess(value.get());
+}
+
+void IDBObjectStoreBackendImpl::put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> prpKey, bool addOnly, PassRefPtr<IDBCallbacks> callbacks)
+{
+    RefPtr<IDBKey> key = prpKey;
+
+    if (!m_keyPath.isNull()) {
+        if (key) {
+            callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "A key was supplied for an objectStore that has a keyPath.")); 
+            return;
+        }
+        ASSERT_NOT_REACHED();
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "FIXME: keyPath not yet supported."));
+        return;
+    }
+
+    if (!key) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::DATA_ERR, "No key supplied."));
+        return;
+    }
+
+    if (addOnly && m_tree->get(key.get())) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "Key already exists in the object store."));
+        return;
+    }
+
+    m_tree->put(key.get(), value.get());
+    callbacks->onSuccess(key.get());
+}
+
+void IDBObjectStoreBackendImpl::remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
+{
+    m_tree->remove(key.get());
+    callbacks->onSuccess();
+}
+
+void IDBObjectStoreBackendImpl::createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks> callbacks)
+{
+    if (m_indexes.contains(name)) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "Index name already exists."));
+        return;
+    }
+
+    RefPtr<IDBIndexBackendInterface> index = IDBIndexBackendImpl::create(name, keyPath, unique);
+    ASSERT(index->name() == name);
+    m_indexes.set(name, index);
+    callbacks->onSuccess(index.release());
+}
+
+PassRefPtr<IDBIndexBackendInterface> IDBObjectStoreBackendImpl::index(const String& name)
+{
+    return m_indexes.get(name);
+}
+
+void IDBObjectStoreBackendImpl::removeIndex(const String& name, PassRefPtr<IDBCallbacks> callbacks)
+{
+    if (!m_indexes.contains(name)) {
+        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Index name does not exist."));
+        return;
+    }
+
+    m_indexes.remove(name);
+    callbacks->onSuccess();
+}
+
+
+} // namespace WebCore
+
+#endif
diff --git a/WebCore/storage/IDBObjectStoreBackendImpl.h b/WebCore/storage/IDBObjectStoreBackendImpl.h
new file mode 100644
index 0000000..b0976c2
--- /dev/null
+++ b/WebCore/storage/IDBObjectStoreBackendImpl.h
@@ -0,0 +1,77 @@
+/*
+ * 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 IDBObjectStoreBackendImpl_h
+#define IDBObjectStoreBackendImpl_h
+
+#include "IDBObjectStoreBackendInterface.h"
+#include "StringHash.h"
+#include <wtf/HashMap.h>
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+template <typename ValueType> class IDBKeyTree;
+
+class IDBObjectStoreBackendImpl : public IDBObjectStoreBackendInterface {
+public:
+    static PassRefPtr<IDBObjectStoreBackendInterface> create(const String& name, const String& keyPath, bool autoIncrement)
+    {
+        return adoptRef(new IDBObjectStoreBackendImpl(name, keyPath, autoIncrement));
+    }
+    ~IDBObjectStoreBackendImpl();
+
+    String name() const { return m_name; }
+    String keyPath() const { return m_keyPath; }
+    PassRefPtr<DOMStringList> indexNames() const;
+
+    void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
+    void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>);
+    void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
+
+    void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>);
+    PassRefPtr<IDBIndexBackendInterface> index(const String& name);
+    void removeIndex(const String& name, PassRefPtr<IDBCallbacks>);
+
+private:
+    IDBObjectStoreBackendImpl(const String& name, const String& keyPath, bool autoIncrement);
+
+    String m_name;
+    String m_keyPath;
+    bool m_autoIncrement;
+
+    typedef HashMap<String, RefPtr<IDBIndexBackendInterface> > IndexMap;
+    IndexMap m_indexes;
+
+    typedef IDBKeyTree<SerializedScriptValue> Tree;
+    RefPtr<Tree> m_tree;
+};
+
+} // namespace WebCore
+
+#endif
+
+#endif // IDBObjectStoreBackendImpl_h
diff --git a/WebCore/storage/IDBObjectStoreBackendInterface.h b/WebCore/storage/IDBObjectStoreBackendInterface.h
new file mode 100644
index 0000000..66f9a71
--- /dev/null
+++ b/WebCore/storage/IDBObjectStoreBackendInterface.h
@@ -0,0 +1,64 @@
+/*
+ * 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 IDBObjectStoreBackendInterface_h
+#define IDBObjectStoreBackendInterface_h
+
+#include "PlatformString.h"
+#include <wtf/Threading.h>
+
+#if ENABLE(INDEXED_DATABASE)
+
+namespace WebCore {
+
+class DOMStringList;
+class IDBCallbacks;
+class IDBIndexBackendInterface;
+class IDBKey;
+class SerializedScriptValue;
+
+class IDBObjectStoreBackendInterface : public ThreadSafeShared<IDBObjectStoreBackendInterface> {
+public:
+    virtual ~IDBObjectStoreBackendInterface() { }
+
+    virtual String name() const = 0;
+    virtual String keyPath() const = 0;
+    virtual PassRefPtr<DOMStringList> indexNames() const = 0;
+
+    virtual void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
+    virtual void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>) = 0;
+    virtual void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
+
+    virtual void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>) = 0;
+    virtual PassRefPtr<IDBIndexBackendInterface> index(const String& name) = 0;
+    virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>) = 0;
+};
+
+} // namespace WebCore
+
+#endif
+
+#endif // IDBObjectStoreBackendInterface_h
+
diff --git a/WebCore/storage/IDBObjectStoreImpl.cpp b/WebCore/storage/IDBObjectStoreImpl.cpp
deleted file mode 100755
index 8c6444a..0000000
--- a/WebCore/storage/IDBObjectStoreImpl.cpp
+++ /dev/null
@@ -1,136 +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 "IDBObjectStoreImpl.h"
-
-#include "DOMStringList.h"
-#include "IDBBindingUtilities.h"
-#include "IDBCallbacks.h"
-#include "IDBDatabaseException.h"
-#include "IDBIndexBackendImpl.h"
-#include "IDBKeyTree.h"
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-IDBObjectStoreImpl::~IDBObjectStoreImpl()
-{
-}
-
-IDBObjectStoreImpl::IDBObjectStoreImpl(const String& name, const String& keyPath, bool autoIncrement)
-    : m_name(name)
-    , m_keyPath(keyPath)
-    , m_autoIncrement(autoIncrement)
-    , m_tree(Tree::create())
-{
-}
-
-PassRefPtr<DOMStringList> IDBObjectStoreImpl::indexNames() const
-{
-    RefPtr<DOMStringList> indexNames = DOMStringList::create();
-    for (IndexMap::const_iterator it = m_indexes.begin(); it != m_indexes.end(); ++it)
-        indexNames->append(it->first);
-    return indexNames.release();
-}
-
-void IDBObjectStoreImpl::get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
-{
-    RefPtr<SerializedScriptValue> value = m_tree->get(key.get());
-    if (!value) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Key does not exist in the object store."));
-        return;
-    }
-    callbacks->onSuccess(value.get());
-}
-
-void IDBObjectStoreImpl::put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> prpKey, bool addOnly, PassRefPtr<IDBCallbacks> callbacks)
-{
-    RefPtr<IDBKey> key = prpKey;
-
-    if (!m_keyPath.isNull()) {
-        if (key) {
-            callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "A key was supplied for an objectStore that has a keyPath.")); 
-            return;
-        }
-        ASSERT_NOT_REACHED();
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::UNKNOWN_ERR, "FIXME: keyPath not yet supported."));
-        return;
-    }
-
-    if (!key) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::DATA_ERR, "No key supplied."));
-        return;
-    }
-
-    if (addOnly && m_tree->get(key.get())) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "Key already exists in the object store."));
-        return;
-    }
-
-    m_tree->put(key.get(), value.get());
-    callbacks->onSuccess(key.get());
-}
-
-void IDBObjectStoreImpl::remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
-{
-    m_tree->remove(key.get());
-    callbacks->onSuccess();
-}
-
-void IDBObjectStoreImpl::createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks> callbacks)
-{
-    if (m_indexes.contains(name)) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::CONSTRAINT_ERR, "Index name already exists."));
-        return;
-    }
-
-    RefPtr<IDBIndexBackendInterface> index = IDBIndexBackendImpl::create(name, keyPath, unique);
-    ASSERT(index->name() == name);
-    m_indexes.set(name, index);
-    callbacks->onSuccess(index.release());
-}
-
-PassRefPtr<IDBIndexBackendInterface> IDBObjectStoreImpl::index(const String& name)
-{
-    return m_indexes.get(name);
-}
-
-void IDBObjectStoreImpl::removeIndex(const String& name, PassRefPtr<IDBCallbacks> callbacks)
-{
-    if (!m_indexes.contains(name)) {
-        callbacks->onError(IDBDatabaseError::create(IDBDatabaseException::NOT_FOUND_ERR, "Index name does not exist."));
-        return;
-    }
-
-    m_indexes.remove(name);
-    callbacks->onSuccess();
-}
-
-
-} // namespace WebCore
-
-#endif
diff --git a/WebCore/storage/IDBObjectStoreImpl.h b/WebCore/storage/IDBObjectStoreImpl.h
deleted file mode 100644
index f2c2e03..0000000
--- a/WebCore/storage/IDBObjectStoreImpl.h
+++ /dev/null
@@ -1,77 +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 IDBObjectStoreImpl_h
-#define IDBObjectStoreImpl_h
-
-#include "IDBObjectStore.h"
-#include "StringHash.h"
-#include <wtf/HashMap.h>
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-template <typename ValueType> class IDBKeyTree;
-
-class IDBObjectStoreImpl : public IDBObjectStore {
-public:
-    static PassRefPtr<IDBObjectStore> create(const String& name, const String& keyPath, bool autoIncrement)
-    {
-        return adoptRef(new IDBObjectStoreImpl(name, keyPath, autoIncrement));
-    }
-    ~IDBObjectStoreImpl();
-
-    String name() const { return m_name; }
-    String keyPath() const { return m_keyPath; }
-    PassRefPtr<DOMStringList> indexNames() const;
-
-    void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
-    void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>);
-    void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>);
-
-    void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>);
-    PassRefPtr<IDBIndexBackendInterface> index(const String& name);
-    void removeIndex(const String& name, PassRefPtr<IDBCallbacks>);
-
-private:
-    IDBObjectStoreImpl(const String& name, const String& keyPath, bool autoIncrement);
-
-    String m_name;
-    String m_keyPath;
-    bool m_autoIncrement;
-
-    typedef HashMap<String, RefPtr<IDBIndexBackendInterface> > IndexMap;
-    IndexMap m_indexes;
-
-    typedef IDBKeyTree<SerializedScriptValue> Tree;
-    RefPtr<Tree> m_tree;
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif // IDBObjectStoreImpl_h
diff --git a/WebCore/storage/IDBObjectStoreRequest.cpp b/WebCore/storage/IDBObjectStoreRequest.cpp
deleted file mode 100644
index 0778214..0000000
--- a/WebCore/storage/IDBObjectStoreRequest.cpp
+++ /dev/null
@@ -1,113 +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 "IDBObjectStoreRequest.h"
-
-#include "DOMStringList.h"
-#include "IDBAny.h"
-#include "IDBIndex.h"
-#include "IDBKey.h"
-#include "SerializedScriptValue.h"
-#include <wtf/UnusedParam.h>
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-IDBObjectStoreRequest::IDBObjectStoreRequest(PassRefPtr<IDBObjectStore> idbObjectStore)
-    : m_objectStore(idbObjectStore)
-{
-    // We pass a reference to this object before it can be adopted.
-    relaxAdoptionRequirement();
-}
-
-String IDBObjectStoreRequest::name() const
-{
-    return m_objectStore->name();
-}
-
-String IDBObjectStoreRequest::keyPath() const
-{
-    return m_objectStore->keyPath();
-}
-
-PassRefPtr<DOMStringList> IDBObjectStoreRequest::indexNames() const
-{
-    return m_objectStore->indexNames();
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::get(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->get(key, request);
-    return request;
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::add(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->put(value, key, true, request);
-    return request;
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::put(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->put(value, key, false, request);
-    return request;
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::remove(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->remove(key, request);
-    return request;
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::createIndex(ScriptExecutionContext* context, const String& name, const String& keyPath, bool unique)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->createIndex(name, keyPath, unique, request);
-    return request;
-}
-
-PassRefPtr<IDBIndex> IDBObjectStoreRequest::index(const String& name)
-{
-    RefPtr<IDBIndexBackendInterface> index = m_objectStore->index(name);
-    ASSERT(index); // FIXME: If this is null, we should raise a NOT_FOUND_ERR.
-    return IDBIndex::create(index.release());
-}
-
-PassRefPtr<IDBRequest> IDBObjectStoreRequest::removeIndex(ScriptExecutionContext* context, const String& name)
-{
-    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
-    m_objectStore->removeIndex(name, request);
-    return request;
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(INDEXED_DATABASE)
diff --git a/WebCore/storage/IDBObjectStoreRequest.h b/WebCore/storage/IDBObjectStoreRequest.h
deleted file mode 100644
index bfd01f0..0000000
--- a/WebCore/storage/IDBObjectStoreRequest.h
+++ /dev/null
@@ -1,78 +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 IDBObjectStoreRequest_h
-#define IDBObjectStoreRequest_h
-
-#include "IDBObjectStore.h"
-#include "IDBRequest.h"
-#include "PlatformString.h"
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-#include <wtf/RefPtr.h>
-
-#if ENABLE(INDEXED_DATABASE)
-
-namespace WebCore {
-
-class DOMStringList;
-class IDBAny;
-class IDBIndexRequest;
-class IDBKey;
-class SerializedScriptValue;
-
-class IDBObjectStoreRequest : public RefCounted<IDBObjectStoreRequest> {
-public:
-    static PassRefPtr<IDBObjectStoreRequest> create(PassRefPtr<IDBObjectStore> idbObjectStore)
-    {
-        return adoptRef(new IDBObjectStoreRequest(idbObjectStore));
-    }
-    ~IDBObjectStoreRequest() { }
-
-    String name() const;
-    String keyPath() const;
-    PassRefPtr<DOMStringList> indexNames() const;
-
-    PassRefPtr<IDBRequest> get(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
-    PassRefPtr<IDBRequest> add(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
-    PassRefPtr<IDBRequest> put(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key = 0);
-    PassRefPtr<IDBRequest> remove(ScriptExecutionContext*, PassRefPtr<IDBKey> key);
-
-    PassRefPtr<IDBRequest> createIndex(ScriptExecutionContext*, const String& name, const String& keyPath, bool unique = false);
-    PassRefPtr<IDBIndex> index(const String& name);
-    PassRefPtr<IDBRequest> removeIndex(ScriptExecutionContext*, const String& name);
-
-private:
-    IDBObjectStoreRequest(PassRefPtr<IDBObjectStore>);
-
-    RefPtr<IDBObjectStore> m_objectStore;
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif // IDBObjectStoreRequest_h
-
diff --git a/WebCore/storage/IDBObjectStoreRequest.idl b/WebCore/storage/IDBObjectStoreRequest.idl
deleted file mode 100644
index 6db6ad8..0000000
--- a/WebCore/storage/IDBObjectStoreRequest.idl
+++ /dev/null
@@ -1,48 +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
-    ] IDBObjectStoreRequest {
-        [CallWith=ScriptExecutionContext] IDBRequest get(in IDBKey key);        
-        // FIXME: Come to concensus re getAll.
-        // FIXME: SerializedScriptValue raises an exception if you pass in something that can't be serialized.
-        //        We need to instead "raise" this error via an error callback.
-        [CallWith=ScriptExecutionContext] IDBRequest add(in SerializedScriptValue value, in [Optional] IDBKey key);
-        [CallWith=ScriptExecutionContext] IDBRequest put(in SerializedScriptValue value, in [Optional] IDBKey key);
-        [CallWith=ScriptExecutionContext] IDBRequest remove(in IDBKey key);
-        // FIXME: write openCursor
-        [CallWith=ScriptExecutionContext] IDBRequest createIndex(in DOMString name, in [ConvertNullToNullString] DOMString keyPath, in [Optional] boolean unique);
-        // FIXME: This needs to raise an IDBDatabaseException on errors.
-        IDBIndex index(in DOMString name);
-        [CallWith=ScriptExecutionContext] IDBRequest removeIndex(in DOMString name);
-
-        readonly attribute DOMString name;
-        readonly attribute [ConvertNullStringTo=Null] DOMString keyPath;
-        readonly attribute DOMStringList indexNames;
-    };
-}
diff --git a/WebCore/storage/IDBRequest.cpp b/WebCore/storage/IDBRequest.cpp
index b0be94b..c29fc5b 100644
--- a/WebCore/storage/IDBRequest.cpp
+++ b/WebCore/storage/IDBRequest.cpp
@@ -38,7 +38,7 @@
 #include "IDBDatabase.h"
 #include "IDBIndex.h"
 #include "IDBErrorEvent.h"
-#include "IDBObjectStoreRequest.h"
+#include "IDBObjectStore.h"
 #include "IDBSuccessEvent.h"
 #include "ScriptExecutionContext.h"
 
@@ -73,10 +73,10 @@ void IDBRequest::onSuccess()
     m_result->set();
 }
 
-void IDBRequest::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> idbDatabaseBackend)
+void IDBRequest::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend)
 {
     onEventCommon();
-    m_result->set(IDBDatabase::create(idbDatabaseBackend));
+    m_result->set(IDBDatabase::create(backend));
 }
 
 void IDBRequest::onSuccess(PassRefPtr<IDBIndexBackendInterface> backend)
@@ -91,10 +91,10 @@ void IDBRequest::onSuccess(PassRefPtr<IDBKey> idbKey)
     m_result->set(idbKey);
 }
 
-void IDBRequest::onSuccess(PassRefPtr<IDBObjectStore> idbObjectStore)
+void IDBRequest::onSuccess(PassRefPtr<IDBObjectStoreBackendInterface> backend)
 {
     onEventCommon();
-    m_result->set(IDBObjectStoreRequest::create(idbObjectStore));
+    m_result->set(IDBObjectStore::create(backend));
 }
 
 void IDBRequest::onSuccess(PassRefPtr<SerializedScriptValue> serializedScriptValue)
diff --git a/WebCore/storage/IDBRequest.h b/WebCore/storage/IDBRequest.h
index 255ae48..d38da57 100644
--- a/WebCore/storage/IDBRequest.h
+++ b/WebCore/storage/IDBRequest.h
@@ -65,7 +65,7 @@ public:
     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBKey>);
-    virtual void onSuccess(PassRefPtr<IDBObjectStore>);
+    virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>);
     virtual void onSuccess(PassRefPtr<SerializedScriptValue>);
 
     // EventTarget
diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 5003e53..df05526 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,23 @@
+2010-08-03  Andrei Popescu  <andreip at google.com>
+
+        Reviewed by Jeremy Orlow.
+
+        [IndexedDB] IDBObjectStoreRequest should be called IDBObjectStore
+        https://bugs.webkit.org/show_bug.cgi?id=43420
+
+        * src/IDBCallbacksProxy.cpp:
+        (WebCore::IDBCallbacksProxy::onSuccess):
+        * src/IDBCallbacksProxy.h:
+        * src/IDBDatabaseProxy.cpp:
+        (WebCore::IDBDatabaseProxy::objectStore):
+        * src/IDBDatabaseProxy.h:
+        * src/IDBObjectStoreProxy.cpp:
+        (WebCore::IDBObjectStoreProxy::create):
+        * src/IDBObjectStoreProxy.h:
+        * src/WebIDBObjectStoreImpl.cpp:
+        (WebKit::WebIDBObjectStoreImpl::WebIDBObjectStoreImpl):
+        * src/WebIDBObjectStoreImpl.h:
+
 2010-08-03  Yury Semikhatsky  <yurys at chromium.org>
 
         Unreviewed. Fix Chromium interactive UI tests.
diff --git a/WebKit/chromium/src/IDBCallbacksProxy.cpp b/WebKit/chromium/src/IDBCallbacksProxy.cpp
index a8d10c6..0375c6b 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<IDBDatabaseBackendInterface> idbDatabaseBackend)
+void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend)
 {
-    m_callbacks->onSuccess(new WebKit::WebIDBDatabaseImpl(idbDatabaseBackend));
+    m_callbacks->onSuccess(new WebKit::WebIDBDatabaseImpl(backend));
     m_callbacks.clear();
 }
 
@@ -87,9 +87,9 @@ void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBKey> idbKey)
     m_callbacks.clear();
 }
 
-void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBObjectStore> idbObjectStore)
+void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBObjectStoreBackendInterface> backend)
 {
-    m_callbacks->onSuccess(new WebKit::WebIDBObjectStoreImpl(idbObjectStore));
+    m_callbacks->onSuccess(new WebKit::WebIDBObjectStoreImpl(backend));
     m_callbacks.clear();
 }
 
diff --git a/WebKit/chromium/src/IDBCallbacksProxy.h b/WebKit/chromium/src/IDBCallbacksProxy.h
index a31f7af..40bb947 100644
--- a/WebKit/chromium/src/IDBCallbacksProxy.h
+++ b/WebKit/chromium/src/IDBCallbacksProxy.h
@@ -52,7 +52,7 @@ public:
     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
     virtual void onSuccess(PassRefPtr<IDBKey>);
-    virtual void onSuccess(PassRefPtr<IDBObjectStore>);
+    virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>);
     virtual void onSuccess(PassRefPtr<SerializedScriptValue>);
 
 private:
diff --git a/WebKit/chromium/src/IDBDatabaseProxy.cpp b/WebKit/chromium/src/IDBDatabaseProxy.cpp
index aa3b562..f995b3c 100644
--- a/WebKit/chromium/src/IDBDatabaseProxy.cpp
+++ b/WebKit/chromium/src/IDBDatabaseProxy.cpp
@@ -78,7 +78,7 @@ void IDBDatabaseProxy::createObjectStore(const String& name, const String& keyPa
     m_webIDBDatabase->createObjectStore(name, keyPath, autoIncrement, new WebIDBCallbacksImpl(callbacks));
 }
 
-PassRefPtr<IDBObjectStore> IDBDatabaseProxy::objectStore(const String& name, unsigned short mode)
+PassRefPtr<IDBObjectStoreBackendInterface> IDBDatabaseProxy::objectStore(const String& name, unsigned short mode)
 {
     WebKit::WebIDBObjectStore* objectStore = m_webIDBDatabase->objectStore(name, mode);
     if (!objectStore)
diff --git a/WebKit/chromium/src/IDBDatabaseProxy.h b/WebKit/chromium/src/IDBDatabaseProxy.h
index b9e4ad6..03311f2 100644
--- a/WebKit/chromium/src/IDBDatabaseProxy.h
+++ b/WebKit/chromium/src/IDBDatabaseProxy.h
@@ -50,7 +50,7 @@ public:
     // FIXME: Add transaction and setVersion.
 
     virtual void createObjectStore(const String& name, const String& keyPath, bool autoIncrement, PassRefPtr<IDBCallbacks>);
-    virtual PassRefPtr<IDBObjectStore> objectStore(const String& name, unsigned short mode);
+    virtual PassRefPtr<IDBObjectStoreBackendInterface> objectStore(const String& name, unsigned short mode);
     virtual void removeObjectStore(const String& name, PassRefPtr<IDBCallbacks>);
 
 private:
diff --git a/WebKit/chromium/src/IDBObjectStoreProxy.cpp b/WebKit/chromium/src/IDBObjectStoreProxy.cpp
index 858ed20..0e1a599 100755
--- a/WebKit/chromium/src/IDBObjectStoreProxy.cpp
+++ b/WebKit/chromium/src/IDBObjectStoreProxy.cpp
@@ -39,7 +39,7 @@
 
 namespace WebCore {
 
-PassRefPtr<IDBObjectStore> IDBObjectStoreProxy::create(PassOwnPtr<WebKit::WebIDBObjectStore> objectStore)
+PassRefPtr<IDBObjectStoreBackendInterface> IDBObjectStoreProxy::create(PassOwnPtr<WebKit::WebIDBObjectStore> objectStore)
 {
     return adoptRef(new IDBObjectStoreProxy(objectStore));
 }
diff --git a/WebKit/chromium/src/IDBObjectStoreProxy.h b/WebKit/chromium/src/IDBObjectStoreProxy.h
index b380bdc..f569166 100755
--- a/WebKit/chromium/src/IDBObjectStoreProxy.h
+++ b/WebKit/chromium/src/IDBObjectStoreProxy.h
@@ -26,7 +26,7 @@
 #ifndef IDBObjectStoreProxy_h
 #define IDBObjectStoreProxy_h
 
-#include "IDBObjectStore.h"
+#include "IDBObjectStoreBackendInterface.h"
 #include <wtf/OwnPtr.h>
 #include <wtf/PassOwnPtr.h>
 #include <wtf/PassRefPtr.h>
@@ -37,9 +37,9 @@ namespace WebKit { class WebIDBObjectStore; }
 
 namespace WebCore {
 
-class IDBObjectStoreProxy : public IDBObjectStore {
+class IDBObjectStoreProxy : public IDBObjectStoreBackendInterface {
 public:
-    static PassRefPtr<IDBObjectStore> create(PassOwnPtr<WebKit::WebIDBObjectStore>);
+    static PassRefPtr<IDBObjectStoreBackendInterface> create(PassOwnPtr<WebKit::WebIDBObjectStore>);
     ~IDBObjectStoreProxy();
 
     String name() const;
diff --git a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
index 742bfa0..8c8e30a 100644
--- a/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
+++ b/WebKit/chromium/src/WebIDBDatabaseImpl.cpp
@@ -74,7 +74,7 @@ void WebIDBDatabaseImpl::createObjectStore(const WebString& name, const WebStrin
 
 WebIDBObjectStore* WebIDBDatabaseImpl::objectStore(const WebString& name, unsigned short mode)
 {
-    RefPtr<IDBObjectStore> objectStore = m_databaseBackend->objectStore(name, mode);
+    RefPtr<IDBObjectStoreBackendInterface> objectStore = m_databaseBackend->objectStore(name, mode);
     if (!objectStore)
         return 0;
     return new WebIDBObjectStoreImpl(objectStore);
diff --git a/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp b/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp
index 7b6a32a..2c347a8 100755
--- a/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp
+++ b/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp
@@ -28,7 +28,7 @@
 
 #include "DOMStringList.h"
 #include "IDBCallbacksProxy.h"
-#include "IDBObjectStore.h"
+#include "IDBObjectStoreBackendInterface.h"
 #include "WebIDBIndexImpl.h"
 #include "WebIDBKey.h"
 #include "WebSerializedScriptValue.h"
@@ -39,7 +39,7 @@ using namespace WebCore;
 
 namespace WebKit {
 
-WebIDBObjectStoreImpl::WebIDBObjectStoreImpl(PassRefPtr<IDBObjectStore> objectStore)
+WebIDBObjectStoreImpl::WebIDBObjectStoreImpl(PassRefPtr<IDBObjectStoreBackendInterface> objectStore)
     : m_objectStore(objectStore)
 {
 }
diff --git a/WebKit/chromium/src/WebIDBObjectStoreImpl.h b/WebKit/chromium/src/WebIDBObjectStoreImpl.h
index 4064b7f..6fd345a 100755
--- a/WebKit/chromium/src/WebIDBObjectStoreImpl.h
+++ b/WebKit/chromium/src/WebIDBObjectStoreImpl.h
@@ -31,7 +31,7 @@
 #include <wtf/PassRefPtr.h>
 #include <wtf/RefPtr.h>
 
-namespace WebCore { class IDBObjectStore; }
+namespace WebCore { class IDBObjectStoreBackendInterface; }
 
 namespace WebKit {
 
@@ -40,7 +40,7 @@ class WebIDBIndex;
 // See comment in WebIndexedObjectStore for a high level overview these classes.
 class WebIDBObjectStoreImpl : public WebIDBObjectStore {
 public:
-    WebIDBObjectStoreImpl(WTF::PassRefPtr<WebCore::IDBObjectStore> objectStore);
+    WebIDBObjectStoreImpl(WTF::PassRefPtr<WebCore::IDBObjectStoreBackendInterface>);
     ~WebIDBObjectStoreImpl();
 
     WebString name() const;
@@ -56,7 +56,7 @@ public:
     void removeIndex(const WebString& name, WebIDBCallbacks* callbacks);
 
  private:
-    WTF::RefPtr<WebCore::IDBObjectStore> m_objectStore;
+    WTF::RefPtr<WebCore::IDBObjectStoreBackendInterface> m_objectStore;
 };
 
 } // namespace WebKit

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list