Changeset 64828 in webkit


Ignore:
Timestamp:
Aug 6, 2010 3:37:41 AM (14 years ago)
Author:
bulach@chromium.org
Message:

2010-08-05 Marcus Bulach <bulach@chromium.org>

Reviewed by Jeremy Orlow.

Initial bindings and plumbing for IDBCursor.
https://bugs.webkit.org/show_bug.cgi?id=41888

Test: storage/indexeddb/idb-opencursor.html

  • storage/indexeddb/open-cursor-expected.txt: Added.
  • storage/indexeddb/open-cursor.html: Added.
  • storage/indexeddb/script-tests/open-cursor.js: Added. (cursorSuccess): (openCursor): (populateObjectStore): (createObjectStoreSuccess): (openSuccess): (test):

2010-08-05 Marcus Bulach <bulach@chromium.org>

Reviewed by Jeremy Orlow.

Initial bindings and plumbing for IDBCursor.
https://bugs.webkit.org/show_bug.cgi?id=41888

Test: storage/indexeddb/idb-opencursor.html

  • 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/v8/custom/V8IDBAnyCustom.cpp: (WebCore::toV8):
  • storage/IDBAny.cpp: (WebCore::IDBAny::idbCursor): (WebCore::IDBAny::set):
  • storage/IDBAny.h: (WebCore::IDBAny::):
  • storage/IDBCallbacks.h:
  • storage/IDBCursor.cpp: Added. (WebCore::IDBCursor::IDBCursor): (WebCore::IDBCursor::~IDBCursor): (WebCore::IDBCursor::direction): (WebCore::IDBCursor::key): (WebCore::IDBCursor::value): (WebCore::IDBCursor::update): (WebCore::IDBCursor::continueFunction): (WebCore::IDBCursor::remove):
  • storage/IDBCursor.h: Added. (WebCore::IDBCursor::): (WebCore::IDBCursor::create):
  • storage/IDBCursor.idl: Added.
  • storage/IDBCursorBackendImpl.cpp: Added. (WebCore::IDBCursorBackendImpl::IDBCursorBackendImpl): (WebCore::IDBCursorBackendImpl::~IDBCursorBackendImpl): (WebCore::IDBCursorBackendImpl::direction): (WebCore::IDBCursorBackendImpl::key): (WebCore::IDBCursorBackendImpl::value): (WebCore::IDBCursorBackendImpl::update): (WebCore::IDBCursorBackendImpl::continueFunction): (WebCore::IDBCursorBackendImpl::remove):
  • storage/IDBCursorBackendImpl.h: Added. (WebCore::IDBCursorBackendImpl::create):
  • storage/IDBCursorBackendInterface.h: Added. (WebCore::IDBCursorBackendInterface::~IDBCursorBackendInterface):
  • storage/IDBObjectStore.cpp: (WebCore::IDBObjectStore::openCursor):
  • storage/IDBObjectStore.h:
  • storage/IDBObjectStore.idl:
  • storage/IDBObjectStoreBackendImpl.cpp: (WebCore::IDBObjectStoreBackendImpl::openCursor):
  • storage/IDBObjectStoreBackendImpl.h:
  • storage/IDBObjectStoreBackendInterface.h:
  • storage/IDBRequest.cpp: (WebCore::IDBRequest::onSuccess): (WebCore::IDBRequest::timerFired):
  • storage/IDBRequest.h:

2010-08-05 Marcus Bulach <bulach@chromium.org>

Reviewed by Jeremy Orlow.

Initial bindings and plumbing for IDBCursor.
https://bugs.webkit.org/show_bug.cgi?id=41888

Test: storage/indexeddb/idb-opencursor.html

  • WebKit.gyp:
  • public/WebIDBCallbacks.h: (WebKit::WebIDBCallbacks::onSuccess):
  • public/WebIDBCursor.h: Added. (WebKit::WebIDBCursor::~WebIDBCursor): (WebKit::WebIDBCursor::direction): (WebKit::WebIDBCursor::key): (WebKit::WebIDBCursor::value): (WebKit::WebIDBCursor::update): (WebKit::WebIDBCursor::continueFunction): (WebKit::WebIDBCursor::remove):
  • public/WebIDBKeyRange.h: Added. (WebKit::WebIDBKeyRange::~WebIDBKeyRange): (WebKit::WebIDBKeyRange::WebIDBKeyRange):
  • public/WebIDBObjectStore.h: (WebKit::WebIDBObjectStore::openCursor):
  • src/IDBCallbacksProxy.cpp: (WebCore::IDBCallbacksProxy::onSuccess):
  • src/IDBCallbacksProxy.h:
  • src/IDBCursorBackendProxy.cpp: Added. (WebCore::IDBCursorBackendProxy::create): (WebCore::IDBCursorBackendProxy::IDBCursorBackendProxy): (WebCore::IDBCursorBackendProxy::~IDBCursorBackendProxy): (WebCore::IDBCursorBackendProxy::direction): (WebCore::IDBCursorBackendProxy::key): (WebCore::IDBCursorBackendProxy::value): (WebCore::IDBCursorBackendProxy::update): (WebCore::IDBCursorBackendProxy::continueFunction): (WebCore::IDBCursorBackendProxy::remove):
  • src/IDBCursorBackendProxy.h: Added.
  • src/IDBObjectStoreProxy.cpp: (WebCore::IDBObjectStoreProxy::openCursor):
  • src/IDBObjectStoreProxy.h:
  • src/WebIDBCallbacksImpl.cpp: (WebCore::WebIDBCallbacksImpl::onSuccess):
  • src/WebIDBCallbacksImpl.h:
  • src/WebIDBCursorImpl.cpp: Added. (WebKit::WebIDBCursorImpl::WebIDBCursorImpl): (WebKit::WebIDBCursorImpl::~WebIDBCursorImpl): (WebKit::WebIDBCursorImpl::direction): (WebKit::WebIDBCursorImpl::key): (WebKit::WebIDBCursorImpl::value): (WebKit::WebIDBCursorImpl::update): (WebKit::WebIDBCursorImpl::continueFunction): (WebKit::WebIDBCursorImpl::remove):
  • src/WebIDBCursorImpl.h: Added.
  • src/WebIDBKeyRange.cpp: Added. (WebKit::WebIDBKeyRange::WebIDBKeyRange): (WebKit::WebIDBKeyRange::assign): (WebKit::WebIDBKeyRange::reset): (WebKit::WebIDBKeyRange::left): (WebKit::WebIDBKeyRange::right): (WebKit::WebIDBKeyRange::flags):
  • src/WebIDBObjectStoreImpl.cpp: (WebKit::WebIDBObjectStoreImpl::openCursor):
  • src/WebIDBObjectStoreImpl.h:
Location:
trunk
Files:
3 added
38 edited
13 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r64821 r64828  
     12010-08-05  Marcus Bulach  <bulach@chromium.org>
     2
     3        Reviewed by Jeremy Orlow.
     4
     5        Initial bindings and plumbing for IDBCursor.
     6        https://bugs.webkit.org/show_bug.cgi?id=41888
     7
     8        Test: storage/indexeddb/idb-opencursor.html
     9
     10        * storage/indexeddb/open-cursor-expected.txt: Added.
     11        * storage/indexeddb/open-cursor.html: Added.
     12        * storage/indexeddb/script-tests/open-cursor.js: Added.
     13        (cursorSuccess):
     14        (openCursor):
     15        (populateObjectStore):
     16        (createObjectStoreSuccess):
     17        (openSuccess):
     18        (test):
     19
    1202010-08-06  Pavel Feldman  <pfeldman@chromium.org>
    221
  • trunk/WebCore/Android.derived.jscbindings.mk

    r64824 r64828  
     1
    12##
    23## Copyright 2009, The Android Open Source Project
     
    362363GEN := \
    363364    $(intermediates)/storage/JSIDBAny.h \
     365    $(intermediates)/storage/JSIDBCursor.h \
    364366    $(intermediates)/storage/JSIDBDatabaseError.h \
    365367    $(intermediates)/storage/JSIDBDatabaseException.h \
  • trunk/WebCore/Android.derived.v8bindings.mk

    r64824 r64828  
    343343GEN := \
    344344    $(intermediates)/bindings/V8IDBAny.h \
     345    $(intermediates)/bindings/V8IDBCursor.h \
    345346    $(intermediates)/bindings/V8IDBDatabaseError.h \
    346347    $(intermediates)/bindings/V8IDBDatabaseException.h \
  • trunk/WebCore/Android.mk

    r64824 r64828  
    744744        storage/DatabaseTracker.cpp \
    745745        storage/IDBAny.cpp \
     746        storage/IDBCursor.cpp \
     747        storage/IDBCursorBackendImpl.cpp \
    746748        storage/IDBDatabase.cpp \
    747749        storage/IDBDatabaseBackendImpl.cpp \
  • trunk/WebCore/CMakeLists.txt

    r64824 r64828  
    335335    storage/DatabaseSync.idl
    336336    storage/IDBAny.idl
     337    storage/IDBCursor.idl
    337338    storage/IDBDatabaseError.idl
    338339    storage/IDBDatabaseException.idl
     
    14401441    storage/IDBDatabase.cpp
    14411442    storage/IDBDatabaseBackendImpl.cpp
     1443    storage/IDBCursor.cpp
     1444    storage/IDBCursorBackendImpl.cpp
    14421445    storage/IDBErrorEvent.cpp
    14431446    storage/IDBEvent.cpp
  • trunk/WebCore/ChangeLog

    r64826 r64828  
     12010-08-05  Marcus Bulach  <bulach@chromium.org>
     2
     3        Reviewed by Jeremy Orlow.
     4
     5        Initial bindings and plumbing for IDBCursor.
     6        https://bugs.webkit.org/show_bug.cgi?id=41888
     7
     8        Test: storage/indexeddb/idb-opencursor.html
     9
     10        * Android.derived.jscbindings.mk:
     11        * Android.derived.v8bindings.mk:
     12        * Android.mk:
     13        * CMakeLists.txt:
     14        * DerivedSources.cpp:
     15        * DerivedSources.make:
     16        * GNUmakefile.am:
     17        * WebCore.gypi:
     18        * WebCore.pri:
     19        * WebCore.pro:
     20        * WebCore.vcproj/WebCore.vcproj:
     21        * WebCore.xcodeproj/project.pbxproj:
     22        * bindings/v8/custom/V8IDBAnyCustom.cpp:
     23        (WebCore::toV8):
     24        * storage/IDBAny.cpp:
     25        (WebCore::IDBAny::idbCursor):
     26        (WebCore::IDBAny::set):
     27        * storage/IDBAny.h:
     28        (WebCore::IDBAny::):
     29        * storage/IDBCallbacks.h:
     30        * storage/IDBCursor.cpp: Added.
     31        (WebCore::IDBCursor::IDBCursor):
     32        (WebCore::IDBCursor::~IDBCursor):
     33        (WebCore::IDBCursor::direction):
     34        (WebCore::IDBCursor::key):
     35        (WebCore::IDBCursor::value):
     36        (WebCore::IDBCursor::update):
     37        (WebCore::IDBCursor::continueFunction):
     38        (WebCore::IDBCursor::remove):
     39        * storage/IDBCursor.h: Added.
     40        (WebCore::IDBCursor::):
     41        (WebCore::IDBCursor::create):
     42        * storage/IDBCursor.idl: Added.
     43        * storage/IDBCursorBackendImpl.cpp: Added.
     44        (WebCore::IDBCursorBackendImpl::IDBCursorBackendImpl):
     45        (WebCore::IDBCursorBackendImpl::~IDBCursorBackendImpl):
     46        (WebCore::IDBCursorBackendImpl::direction):
     47        (WebCore::IDBCursorBackendImpl::key):
     48        (WebCore::IDBCursorBackendImpl::value):
     49        (WebCore::IDBCursorBackendImpl::update):
     50        (WebCore::IDBCursorBackendImpl::continueFunction):
     51        (WebCore::IDBCursorBackendImpl::remove):
     52        * storage/IDBCursorBackendImpl.h: Added.
     53        (WebCore::IDBCursorBackendImpl::create):
     54        * storage/IDBCursorBackendInterface.h: Added.
     55        (WebCore::IDBCursorBackendInterface::~IDBCursorBackendInterface):
     56        * storage/IDBObjectStore.cpp:
     57        (WebCore::IDBObjectStore::openCursor):
     58        * storage/IDBObjectStore.h:
     59        * storage/IDBObjectStore.idl:
     60        * storage/IDBObjectStoreBackendImpl.cpp:
     61        (WebCore::IDBObjectStoreBackendImpl::openCursor):
     62        * storage/IDBObjectStoreBackendImpl.h:
     63        * storage/IDBObjectStoreBackendInterface.h:
     64        * storage/IDBRequest.cpp:
     65        (WebCore::IDBRequest::onSuccess):
     66        (WebCore::IDBRequest::timerFired):
     67        * storage/IDBRequest.h:
     68
    1692010-08-06  Andrei Popescu  <andreip@google.com>
    270
  • trunk/WebCore/DerivedSources.cpp

    r64824 r64828  
    177177#include "JSHTMLVideoElement.cpp"
    178178#include "JSIDBAny.cpp"
     179#include "JSIDBCursor.cpp"
    179180#include "JSIDBDatabase.cpp"
    180181#include "JSIDBDatabaseError.cpp"
  • trunk/WebCore/DerivedSources.make

    r64824 r64828  
    227227    History \
    228228    IDBAny \
     229    IDBCursor \
    229230    IDBDatabaseError \
    230231    IDBDatabaseException \
  • trunk/WebCore/GNUmakefile.am

    r64824 r64828  
    28642864        WebCore/storage/IDBCallbacks.h \
    28652865        WebCore/storage/IDBDatabase.cpp \
     2866        WebCore/storage/IDBCursor.h \
     2867        WebCore/storage/IDBCursor.cpp \
     2868        WebCore/storage/IDBCursorBackendImpl.cpp \
     2869        WebCore/storage/IDBCursorBackendImpl.h \
     2870        WebCore/storage/IDBCursorBackendInterface.h \
    28662871        WebCore/storage/IDBDatabase.h \
    28672872        WebCore/storage/IDBDatabaseBackendImpl.cpp \
  • trunk/WebCore/WebCore.gypi

    r64824 r64828  
    238238            'storage/Flags.idl',
    239239            'storage/IDBAny.idl',
     240            'storage/IDBCursor.idl',
    240241            'storage/IDBDatabaseError.idl',
    241242            'storage/IDBDatabaseException.idl',
     
    34953496            'storage/IDBAny.h',
    34963497            'storage/IDBCallbacks.h',
     3498            'storage/IDBCursor.cpp',
     3499            'storage/IDBCursor.h',
     3500            'storage/IDBCursorBackendImpl.cpp',
     3501            'storage/IDBCursorBackendImpl.h',
     3502            'storage/IDBCursorBackendInterface.h',
    34973503            'storage/IDBDatabase.h',
    34983504            'storage/IDBDatabase.cpp',
  • trunk/WebCore/WebCore.pri

    r64824 r64828  
    484484    storage/DatabaseSync.idl \
    485485    storage/IDBAny.idl \
     486    storage/IDBCursor.idl \
    486487    storage/IDBDatabaseError.idl \
    487488    storage/IDBDatabaseException.idl \
  • trunk/WebCore/WebCore.pro

    r64824 r64828  
    24252425        storage/IDBAny.h \
    24262426        storage/IDBCallbacks.h \
     2427        storage/IDBCursor.h \
     2428        storage/IDBCursorBackendImpl.h \
     2429        storage/IDBCursorBackendInterface.h \
    24272430        storage/IDBDatabase.h \
    24282431        storage/IDBDatabaseBackendImpl.h \
     
    24532456        bindings/js/JSIDBKeyCustom.cpp \
    24542457        storage/IDBAny.cpp \
     2458        storage/IDBCursor.cpp \
     2459        storage/IDBCursorBackendImpl.cpp \
    24552460        storage/IDBDatabase.cpp \
    24562461        storage/IDBDatabaseBackendImpl.cpp \
  • trunk/WebCore/WebCore.vcproj/WebCore.vcproj

    r64824 r64828  
    4431344313                                </File>
    4431444314                                <File
     44315                                        RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBCursor.cpp"
     44316                                        >
     44317                                        <FileConfiguration
     44318                                                Name="Debug|Win32"
     44319                                                ExcludedFromBuild="true"
     44320                                                >
     44321                                                <Tool
     44322                                                        Name="VCCLCompilerTool"
     44323                                                />
     44324                                        </FileConfiguration>
     44325                                        <FileConfiguration
     44326                                                Name="Release|Win32"
     44327                                                ExcludedFromBuild="true"
     44328                                                >
     44329                                                <Tool
     44330                                                        Name="VCCLCompilerTool"
     44331                                                />
     44332                                        </FileConfiguration>
     44333                                        <FileConfiguration
     44334                                                Name="Debug_Internal|Win32"
     44335                                                ExcludedFromBuild="true"
     44336                                                >
     44337                                                <Tool
     44338                                                        Name="VCCLCompilerTool"
     44339                                                />
     44340                                        </FileConfiguration>
     44341                                        <FileConfiguration
     44342                                                Name="Debug_Cairo|Win32"
     44343                                                ExcludedFromBuild="true"
     44344                                                >
     44345                                                <Tool
     44346                                                        Name="VCCLCompilerTool"
     44347                                                />
     44348                                        </FileConfiguration>
     44349                                        <FileConfiguration
     44350                                                Name="Release_Cairo|Win32"
     44351                                                ExcludedFromBuild="true"
     44352                                                >
     44353                                                <Tool
     44354                                                        Name="VCCLCompilerTool"
     44355                                                />
     44356                                        </FileConfiguration>
     44357                                        <FileConfiguration
     44358                                                Name="Debug_All|Win32"
     44359                                                ExcludedFromBuild="true"
     44360                                                >
     44361                                                <Tool
     44362                                                        Name="VCCLCompilerTool"
     44363                                                />
     44364                                        </FileConfiguration>
     44365                                </File>
     44366                                <File
     44367                                        RelativePath="$(WebKitOutputDir)\obj\$(ProjectName)\DerivedSources\JSIDBCursor.h"
     44368                                        >
     44369                                        <FileConfiguration
     44370                                                Name="Debug|Win32"
     44371                                                ExcludedFromBuild="true"
     44372                                                >
     44373                                                <Tool
     44374                                                        Name="VCCLCompilerTool"
     44375                                                />
     44376                                        </FileConfiguration>
     44377                                        <FileConfiguration
     44378                                                Name="Release|Win32"
     44379                                                ExcludedFromBuild="true"
     44380                                                >
     44381                                                <Tool
     44382                                                        Name="VCCLCompilerTool"
     44383                                                />
     44384                                        </FileConfiguration>
     44385                                        <FileConfiguration
     44386                                                Name="Debug_Internal|Win32"
     44387                                                ExcludedFromBuild="true"
     44388                                                >
     44389                                                <Tool
     44390                                                        Name="VCCLCompilerTool"
     44391                                                />
     44392                                        </FileConfiguration>
     44393                                        <FileConfiguration
     44394                                                Name="Debug_Cairo|Win32"
     44395                                                ExcludedFromBuild="true"
     44396                                                >
     44397                                                <Tool
     44398                                                        Name="VCCLCompilerTool"
     44399                                                />
     44400                                        </FileConfiguration>
     44401                                        <FileConfiguration
     44402                                                Name="Release_Cairo|Win32"
     44403                                                ExcludedFromBuild="true"
     44404                                                >
     44405                                                <Tool
     44406                                                        Name="VCCLCompilerTool"
     44407                                                />
     44408                                        </FileConfiguration>
     44409                                        <FileConfiguration
     44410                                                Name="Debug_All|Win32"
     44411                                                ExcludedFromBuild="true"
     44412                                                >
     44413                                                <Tool
     44414                                                        Name="VCCLCompilerTool"
     44415                                                />
     44416                                        </FileConfiguration>
     44417                                </File>
     44418                                <File
    4431544419                                        RelativePath="..\bindings\js\JSHTMLOptionsCollectionCustom.cpp"
    4431644420                                        >
     
    5015950263                        <File
    5016050264                                RelativePath="..\storage\IDBCallbacks.h"
     50265                                >
     50266                        </File>
     50267                        <File
     50268                                RelativePath="..\storage\IDBCursor.cpp"
     50269                                >
     50270                        </File>
     50271                        <File
     50272                                RelativePath="..\storage\IDBCursor.h"
     50273                                >
     50274                        </File>
     50275                        <File
     50276                                RelativePath="..\storage\IDBCursorBackendImpl.cpp"
     50277                                >
     50278                        </File>
     50279                        <File
     50280                                RelativePath="..\storage\IDBCursorBackendImpl.h"
     50281                                >
     50282                        </File>
     50283                        <File
     50284                                RelativePath="..\storage\IDBCursorBackendInterface.h"
    5016150285                                >
    5016250286                        </File>
  • trunk/WebCore/WebCore.xcodeproj/project.pbxproj

    r64826 r64828  
    14141414                7AFD4A8B1131C2760035B883 /* ScriptBreakpoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */; settings = {ATTRIBUTES = (Private, ); }; };
    14151415                7AFD4FF4113277B60035B883 /* ScriptDebugListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1416                81BE209811F4AB8D00915DFA /* IDBCursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81BE209311F4AB8D00915DFA /* IDBCursor.cpp */; };
     1417                81BE209711F4AB8D00915DFA /* IDBCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BE209211F4AB8D00915DFA /* IDBCursor.h */; };
     1418                81BE209811F4AB8D00915DFA /* IDBCursorBackendImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81BE209311F4AB8D00915DFA /* IDBCursorBackendImpl.cpp */; };
     1419                81BE209911F4AB8D00915DFA /* IDBCursorBackendImpl.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BE209411F4AB8D00915DFA /* IDBCursorBackendImpl.h */; };
     1420                81BE209B11F4AB8D00915DFA /* IDBCursorBackendInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BE209611F4AB8D00915DFA /* IDBCursorBackendInterface.h */; };
     1421                81BE20D211F4BC3200915DFA /* JSIDBCursor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81BE20A711F4B66F00915DFA /* JSIDBCursor.cpp */; };
     1422                81BE20D311F4BC3200915DFA /* JSIDBCursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 81BE20A811F4B66F00915DFA /* JSIDBCursor.h */; };
    14161423                82B658981189E39200E052A1 /* InspectorCSSStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B658971189E39200E052A1 /* InspectorCSSStore.h */; settings = {ATTRIBUTES = (Private, ); }; };
    14171424                82B6589A1189E47600E052A1 /* InspectorCSSStore.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 82B658991189E47600E052A1 /* InspectorCSSStore.cpp */; };
     
    72147221                7AFD4A8A1131C2760035B883 /* ScriptBreakpoint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptBreakpoint.h; sourceTree = "<group>"; };
    72157222                7AFD4FF3113277B60035B883 /* ScriptDebugListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptDebugListener.h; sourceTree = "<group>"; };
     7223                81BE209211F4AB8D00915DFA /* IDBCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCursor.h; sourceTree = "<group>"; };
     7224                81BE209311F4AB8D00915DFA /* IDBCursorBackendImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = IDBCursorBackendImpl.cpp; sourceTree = "<group>"; };
     7225                81BE209411F4AB8D00915DFA /* IDBCursorBackendImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCursorBackendImpl.h; sourceTree = "<group>"; };
     7226                81BE209411F4AB8D00915DFA /* IDBCursorBackendInterface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IDBCursorBackendInterface.h; sourceTree = "<group>"; };
     7227                81BE209C11F4ABBD00915DFA /* IDBCursor.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = IDBCursor.idl; sourceTree = "<group>"; };
     7228                81BE20A711F4B66F00915DFA /* JSIDBCursor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSIDBCursor.cpp; sourceTree = "<group>"; };
     7229                81BE20A811F4B66F00915DFA /* JSIDBCursor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSIDBCursor.h; sourceTree = "<group>"; };
    72167230                82B658971189E39200E052A1 /* InspectorCSSStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InspectorCSSStore.h; sourceTree = "<group>"; };
    72177231                82B658991189E47600E052A1 /* InspectorCSSStore.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InspectorCSSStore.cpp; sourceTree = "<group>"; };
     
    1140211416                                C585A69A11D4FB3D004C3E4B /* IDBAny.idl */,
    1140311417                                C585A69B11D4FB3D004C3E4B /* IDBCallbacks.h */,
     11418                                81BE209211F4AB8D00915DFA /* IDBCursor.cpp */,
     11419                                81BE209211F4AB8D00915DFA /* IDBCursor.h */,
     11420                                81BE209C11F4ABBD00915DFA /* IDBCursor.idl */,
     11421                                81BE209311F4AB8D00915DFA /* IDBCursorBackendImpl.cpp */,
     11422                                81BE209411F4AB8D00915DFA /* IDBCursorBackendImpl.h */,
     11423                                81BE209511F4AB8D00915DFA /* IDBCursorBackendInterface.h */,
    1140411424                                C585A6A311D4FB3D004C3E4B /* IDBDatabase.cpp */,
    1140511425                                C585A6A411D4FB3D004C3E4B /* IDBDatabase.h */,
     
    1140811428                                B61762611203490800EF9114 /* IDBDatabaseBackendImpl.h */,
    1140911429                                B61762531203374F00EF9114 /* IDBDatabaseBackendInterface.h */,
     11430
    1141011431                                C585A69D11D4FB3D004C3E4B /* IDBDatabaseError.h */,
    1141111432                                C585A69E11D4FB3D004C3E4B /* IDBDatabaseError.idl */,
     
    1486714888                                C585A66411D4FB07004C3E4B /* JSIDBAny.cpp */,
    1486814889                                C585A66511D4FB07004C3E4B /* JSIDBAny.h */,
     14890                                81BE20A711F4B66F00915DFA /* JSIDBCursor.cpp */,
     14891                                81BE20A811F4B66F00915DFA /* JSIDBCursor.h */,
    1486914892                                C585A66A11D4FB07004C3E4B /* JSIDBDatabase.cpp */,
    1487014893                                C585A66B11D4FB07004C3E4B /* JSIDBDatabase.h */,
     
    2000520028                                B656626B120B115A006EA85C /* IDBTransaction.h in Headers */,
    2000620029                                B6566270120B1227006EA85C /* JSIDBTransaction.h in Headers */,
     20030                                81BE209711F4AB8D00915DFA /* IDBCursor.h in Headers */,
     20031                                81BE209911F4AB8D00915DFA /* IDBCursorBackendImpl.h in Headers */,
     20032                                81BE209B11F4AB8D00915DFA /* IDBCursorBackendInterface.h in Headers */,
     20033                                81BE20D311F4BC3200915DFA /* JSIDBCursor.h in Headers */,
    2000720034                        );
    2000820035                        runOnlyForDeploymentPostprocessing = 0;
     
    2241122438                                B656626A120B115A006EA85C /* IDBTransaction.cpp in Sources */,
    2241222439                                B6566271120B1227006EA85C /* JSIDBTransaction.cpp in Sources */,
     22440                                81BE209811F4AB8D00915DFA /* IDBCursor.cpp in Sources */,
     22441                                81BE209811F4AB8D00915DFA /* IDBCursorBackendImpl.cpp in Sources */,
     22442                                81BE20D211F4BC3200915DFA /* JSIDBCursor.cpp in Sources */,
    2241322443                        );
    2241422444                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/WebCore/bindings/v8/custom/V8IDBAnyCustom.cpp

    r64577 r64828  
    3333
    3434#include "SerializedScriptValue.h"
     35#include "V8IDBCursor.h"
    3536#include "V8IDBDatabase.h"
    3637#include "V8IDBFactory.h"
     
    5152    case IDBAny::NullType:
    5253        return v8::Null();
     54    case IDBAny::IDBCursorType:
     55        return toV8(impl->idbCursor());
    5356    case IDBAny::IDBDatabaseType:
    5457        return toV8(impl->idbDatabase());
  • trunk/WebCore/storage/IDBAny.cpp

    r64577 r64828  
    2929#if ENABLE(INDEXED_DATABASE)
    3030
     31#include "IDBCursor.h"
    3132#include "IDBDatabase.h"
    3233#include "IDBFactory.h"
     
    4950IDBAny::~IDBAny()
    5051{
     52}
     53
     54PassRefPtr<IDBCursor> IDBAny::idbCursor()
     55{
     56    ASSERT(m_type == IDBCursorType);
     57    return m_idbCursor;
    5158}
    5259
     
    9198    ASSERT(m_type == UndefinedType);
    9299    m_type = NullType;
     100}
     101
     102void IDBAny::set(PassRefPtr<IDBCursor> value)
     103{
     104    ASSERT(m_type == UndefinedType);
     105    m_type = IDBCursorType;
     106    m_idbCursor = value;
    93107}
    94108
  • trunk/WebCore/storage/IDBAny.h

    r64577 r64828  
    3535namespace WebCore {
    3636
     37class IDBCursor;
    3738class IDBDatabase;
    3839class IDBIndex;
     
    5758        UndefinedType = 0,
    5859        NullType,
     60        IDBCursorType,
    5961        IDBDatabaseType,
    6062        IDBFactoryType,
     
    6769    Type type() const { return m_type; }
    6870    // Use type() to figure out which one of these you're allowed to call.
     71    PassRefPtr<IDBCursor> idbCursor();
    6972    PassRefPtr<IDBDatabase> idbDatabase();
    7073    PassRefPtr<IDBFactory> idbFactory();
     
    7679    // Set can only be called once.
    7780    void set(); // For "null".
     81    void set(PassRefPtr<IDBCursor>);
    7882    void set(PassRefPtr<IDBDatabase>);
    7983    void set(PassRefPtr<IDBFactory>);
     
    8993
    9094    // Only one of the following should ever be in use at any given time.
     95    RefPtr<IDBCursor> m_idbCursor;
    9196    RefPtr<IDBDatabase> m_idbDatabase;
    9297    RefPtr<IDBFactory> m_idbFactory;
  • trunk/WebCore/storage/IDBCallbacks.h

    r64577 r64828  
    3030#define IDBCallbacks_h
    3131
     32#include "IDBCursorBackendInterface.h"
    3233#include "IDBDatabaseBackendInterface.h"
    3334#include "IDBDatabaseError.h"
     
    4849    virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
    4950    virtual void onSuccess() = 0; // For "null".
     51    virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) = 0;
    5052    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
    5153    virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
  • trunk/WebCore/storage/IDBCursor.cpp

    r64826 r64828  
    1111 *     notice, this list of conditions and the following disclaimer in the
    1212 *     documentation and/or other materials provided with the distribution.
    13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
    14  *     its contributors may be used to endorse or promote products derived
    15  *     from this software without specific prior written permission.
    1613 *
    1714 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     
    2724 */
    2825
    29 #ifndef IDBCallbacks_h
    30 #define IDBCallbacks_h
    31 
    32 #include "IDBDatabaseBackendInterface.h"
    33 #include "IDBDatabaseError.h"
    34 #include "IDBIndexBackendInterface.h"
    35 #include "IDBKey.h"
    36 #include "IDBObjectStoreBackendInterface.h"
    37 #include "SerializedScriptValue.h"
    38 #include <wtf/RefCounted.h>
     26#include "config.h"
     27#include "IDBCursor.h"
    3928
    4029#if ENABLE(INDEXED_DATABASE)
    4130
     31#include "IDBAny.h"
     32#include "IDBCallbacks.h"
     33#include "IDBCursorBackendInterface.h"
     34#include "IDBKey.h"
     35#include "IDBRequest.h"
     36#include "ScriptExecutionContext.h"
     37#include "SerializedScriptValue.h"
     38
    4239namespace WebCore {
    4340
    44 class IDBCallbacks : public RefCounted<IDBCallbacks> {
    45 public:
    46     virtual ~IDBCallbacks() { }
     41IDBCursor::IDBCursor(PassRefPtr<IDBCursorBackendInterface> backend)
     42    : m_backend(backend)
     43{
     44}
    4745
    48     virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
    49     virtual void onSuccess() = 0; // For "null".
    50     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
    51     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
    52     virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
    53     virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>) = 0;
    54     virtual void onSuccess(PassRefPtr<SerializedScriptValue>) = 0;
    55 };
     46IDBCursor::~IDBCursor()
     47{
     48}
     49
     50unsigned short IDBCursor::direction() const
     51{
     52    return m_backend->direction();
     53}
     54
     55PassRefPtr<IDBKey> IDBCursor::key() const
     56{
     57    return m_backend->key();
     58}
     59
     60PassRefPtr<IDBAny> IDBCursor::value() const
     61{
     62    return m_backend->value();
     63}
     64
     65PassRefPtr<IDBRequest> IDBCursor::update(ScriptExecutionContext* context, PassRefPtr<SerializedScriptValue> value)
     66{
     67    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
     68    m_backend->update(value, request);
     69    return request.release();
     70}
     71
     72PassRefPtr<IDBRequest> IDBCursor::continueFunction(ScriptExecutionContext* context, PassRefPtr<IDBKey> key)
     73{
     74    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
     75    m_backend->continueFunction(key, request);
     76    return request.release();
     77}
     78
     79PassRefPtr<IDBRequest> IDBCursor::remove(ScriptExecutionContext* context)
     80{
     81    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
     82    m_backend->remove(request);
     83    return request.release();
     84}
    5685
    5786} // namespace WebCore
    5887
    59 #endif
    60 
    61 #endif // IDBCallbacks_h
     88#endif // ENABLE(INDEXED_DATABASE)
  • trunk/WebCore/storage/IDBCursor.h

    r64826 r64828  
    2424 */
    2525
    26 #ifndef IDBObjectStoreBackendInterface_h
    27 #define IDBObjectStoreBackendInterface_h
    28 
    29 #include "PlatformString.h"
    30 #include <wtf/Threading.h>
     26#ifndef IDBCursor_h
     27#define IDBCursor_h
    3128
    3229#if ENABLE(INDEXED_DATABASE)
    3330
     31#include <wtf/PassRefPtr.h>
     32#include <wtf/RefCounted.h>
     33#include <wtf/RefPtr.h>
     34#include <wtf/Threading.h>
     35
    3436namespace WebCore {
    3537
    36 class DOMStringList;
     38class IDBAny;
    3739class IDBCallbacks;
    38 class IDBIndexBackendInterface;
     40class IDBCursorBackendInterface;
    3941class IDBKey;
     42class IDBRequest;
     43class ScriptExecutionContext;
    4044class SerializedScriptValue;
    4145
    42 class IDBObjectStoreBackendInterface : public ThreadSafeShared<IDBObjectStoreBackendInterface> {
     46class IDBCursor : public ThreadSafeShared<IDBCursor> {
    4347public:
    44     virtual ~IDBObjectStoreBackendInterface() { }
     48    enum Direction {
     49        NEXT = 0,
     50        NEXT_NO_DUPLICATE = 1,
     51        PREV = 2,
     52        PREV_NO_DUPLICATE = 3,
     53    };
     54    static PassRefPtr<IDBCursor> create(PassRefPtr<IDBCursorBackendInterface> backend)
     55    {
     56        return adoptRef(new IDBCursor(backend));
     57    }
     58    virtual ~IDBCursor();
    4559
    46     virtual String name() const = 0;
    47     virtual String keyPath() const = 0;
    48     virtual PassRefPtr<DOMStringList> indexNames() const = 0;
     60    // Implement the IDL
     61    virtual unsigned short direction() const;
     62    virtual PassRefPtr<IDBKey> key() const;
     63    virtual PassRefPtr<IDBAny> value() const;
     64    virtual PassRefPtr<IDBRequest> update(ScriptExecutionContext*, PassRefPtr<SerializedScriptValue>);
     65    virtual PassRefPtr<IDBRequest> continueFunction(ScriptExecutionContext*, PassRefPtr<IDBKey> = 0);
     66    virtual PassRefPtr<IDBRequest> remove(ScriptExecutionContext*);
    4967
    50     virtual void get(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
    51     virtual void put(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBKey> key, bool addOnly, PassRefPtr<IDBCallbacks>) = 0;
    52     virtual void remove(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
     68private:
     69    explicit IDBCursor(PassRefPtr<IDBCursorBackendInterface>);
    5370
    54     virtual void createIndex(const String& name, const String& keyPath, bool unique, PassRefPtr<IDBCallbacks>) = 0;
    55     virtual PassRefPtr<IDBIndexBackendInterface> index(const String& name) = 0;
    56     virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>) = 0;
     71    RefPtr<IDBCursorBackendInterface> m_backend;
    5772};
    5873
     
    6176#endif
    6277
    63 #endif // IDBObjectStoreBackendInterface_h
    64 
     78#endif // IDBCursor_h
  • trunk/WebCore/storage/IDBCursor.idl

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacksImpl_h
    27 #define WebIDBCallbacksImpl_h
     26module storage {
    2827
    29 #include "WebIDBCallbacks.h"
    30 #include <wtf/PassRefPtr.h>
    31 #include <wtf/RefPtr.h>
     28    interface [
     29        Conditional=INDEXED_DATABASE
     30    ] IDBCursor {
     31        const unsigned short NEXT = 0;
     32        const unsigned short NEXT_NO_DUPLICATE = 1;
     33        const unsigned short PREV = 2;
     34        const unsigned short PREV_NO_DUPLICATE = 3;
    3235
    33 #if ENABLE(INDEXED_DATABASE)
     36        readonly attribute unsigned short direction;
     37        readonly attribute IDBKey key;
     38        readonly attribute IDBAny value;
    3439
    35 namespace WebCore {
    36 
    37 class IDBCallbacks;
    38 
    39 class WebIDBCallbacksImpl : public WebKit::WebIDBCallbacks {
    40 public:
    41     WebIDBCallbacksImpl(PassRefPtr<IDBCallbacks>);
    42     virtual ~WebIDBCallbacksImpl();
    43 
    44     virtual void onError(const WebKit::WebIDBDatabaseError&);
    45     virtual void onSuccess(); // For "null".
    46     virtual void onSuccess(WebKit::WebIDBDatabase*);
    47     virtual void onSuccess(const WebKit::WebIDBKey&);
    48     virtual void onSuccess(WebKit::WebIDBIndex*);
    49     virtual void onSuccess(WebKit::WebIDBObjectStore*);
    50     virtual void onSuccess(const WebKit::WebSerializedScriptValue&);
    51 
    52 private:
    53     RefPtr<IDBCallbacks> m_callbacks;
    54 };
    55 
    56 } // namespace WebCore
    57 
    58 #endif
    59 
    60 #endif // WebIDBCallbacksImpl_h
     40        [CallWith=ScriptExecutionContext] IDBRequest update(in SerializedScriptValue value);
     41        [CallWith=ScriptExecutionContext, ImplementationFunction=continueFunction] IDBRequest continue(in [Optional] IDBKey key);
     42        [CallWith=ScriptExecutionContext] IDBRequest remove();
     43    };
     44}
  • trunk/WebCore/storage/IDBCursorBackendImpl.cpp

    r64826 r64828  
    1111 *     notice, this list of conditions and the following disclaimer in the
    1212 *     documentation and/or other materials provided with the distribution.
    13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
    14  *     its contributors may be used to endorse or promote products derived
    15  *     from this software without specific prior written permission.
    1613 *
    1714 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     
    2724 */
    2825
    29 #ifndef IDBCallbacks_h
    30 #define IDBCallbacks_h
    31 
    32 #include "IDBDatabaseBackendInterface.h"
    33 #include "IDBDatabaseError.h"
    34 #include "IDBIndexBackendInterface.h"
    35 #include "IDBKey.h"
    36 #include "IDBObjectStoreBackendInterface.h"
    37 #include "SerializedScriptValue.h"
    38 #include <wtf/RefCounted.h>
     26#include "config.h"
     27#include "IDBCursorBackendImpl.h"
    3928
    4029#if ENABLE(INDEXED_DATABASE)
    4130
     31#include "IDBAny.h"
     32#include "IDBCallbacks.h"
     33#include "IDBKeyRange.h"
     34#include "IDBObjectStoreBackendImpl.h"
     35#include "IDBRequest.h"
     36#include "SerializedScriptValue.h"
     37
    4238namespace WebCore {
    4339
    44 class IDBCallbacks : public RefCounted<IDBCallbacks> {
    45 public:
    46     virtual ~IDBCallbacks() { }
     40IDBCursorBackendImpl::IDBCursorBackendImpl(PassRefPtr<IDBObjectStoreBackendImpl> idbObjectStore, PassRefPtr<IDBKeyRange> keyRange, IDBCursor::Direction direction, PassRefPtr<IDBKey> key, PassRefPtr<SerializedScriptValue> value)
     41    : m_idbObjectStore(idbObjectStore)
     42    , m_keyRange(keyRange)
     43    , m_direction(direction)
     44    , m_key(key)
     45    , m_value(IDBAny::create(value.get()))
     46{
     47}
    4748
    48     virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
    49     virtual void onSuccess() = 0; // For "null".
    50     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
    51     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
    52     virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
    53     virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>) = 0;
    54     virtual void onSuccess(PassRefPtr<SerializedScriptValue>) = 0;
    55 };
     49IDBCursorBackendImpl::~IDBCursorBackendImpl()
     50{
     51}
     52
     53unsigned short IDBCursorBackendImpl::direction() const
     54{
     55    return m_direction;
     56}
     57
     58PassRefPtr<IDBKey> IDBCursorBackendImpl::key() const
     59{
     60    return m_key;
     61}
     62
     63PassRefPtr<IDBAny> IDBCursorBackendImpl::value() const
     64{
     65    return m_value;
     66}
     67
     68void IDBCursorBackendImpl::update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>)
     69{
     70    // FIXME: Implement this method.
     71    ASSERT_NOT_REACHED();
     72}
     73
     74void IDBCursorBackendImpl::continueFunction(PassRefPtr<IDBKey>, PassRefPtr<IDBCallbacks>)
     75{
     76    // FIXME: Implement this method.
     77    ASSERT_NOT_REACHED();
     78}
     79
     80void IDBCursorBackendImpl::remove(PassRefPtr<IDBCallbacks>)
     81{
     82    // FIXME: Implement this method.
     83    ASSERT_NOT_REACHED();
     84}
    5685
    5786} // namespace WebCore
    5887
    59 #endif
    60 
    61 #endif // IDBCallbacks_h
     88#endif // ENABLE(INDEXED_DATABASE)
  • trunk/WebCore/storage/IDBCursorBackendImpl.h

    r64826 r64828  
    1111 *     notice, this list of conditions and the following disclaimer in the
    1212 *     documentation and/or other materials provided with the distribution.
    13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
    14  *     its contributors may be used to endorse or promote products derived
    15  *     from this software without specific prior written permission.
    1613 *
    1714 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     
    2724 */
    2825
    29 #ifndef IDBCallbacksProxy_h
    30 #define IDBCallbacksProxy_h
    3126
    32 #include "IDBCallbacks.h"
    33 #include <wtf/PassOwnPtr.h>
    34 #include <wtf/PassRefPtr.h>
    35 #include <wtf/RefPtr.h>
     27#ifndef IDBCursorBackendImpl_h
     28#define IDBCursorBackendImpl_h
    3629
    3730#if ENABLE(INDEXED_DATABASE)
    3831
    39 namespace WebKit {
    40 class WebIDBCallbacks;
    41 }
     32#include "IDBCursor.h"
     33#include "IDBCursorBackendInterface.h"
     34#include <wtf/RefPtr.h>
    4235
    4336namespace WebCore {
    4437
    45 class IDBCallbacksProxy : public IDBCallbacks {
     38class IDBKeyRange;
     39class IDBObjectStoreBackendImpl;
     40class SerializedScriptValue;
     41
     42class IDBCursorBackendImpl : public IDBCursorBackendInterface {
    4643public:
    47     static PassRefPtr<IDBCallbacksProxy> create(PassOwnPtr<WebKit::WebIDBCallbacks>);
    48     virtual ~IDBCallbacksProxy();
     44    static PassRefPtr<IDBCursorBackendImpl> create(PassRefPtr<IDBObjectStoreBackendImpl> objectStore, PassRefPtr<IDBKeyRange> keyRange, IDBCursor::Direction direction, PassRefPtr<IDBKey> key, PassRefPtr<SerializedScriptValue> value)
     45    {
     46        return adoptRef(new IDBCursorBackendImpl(objectStore, keyRange, direction, key, value));
     47    }
     48    virtual ~IDBCursorBackendImpl();
    4949
    50     virtual void onError(PassRefPtr<IDBDatabaseError>);
    51     virtual void onSuccess(); // For "null".
    52     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
    53     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
    54     virtual void onSuccess(PassRefPtr<IDBKey>);
    55     virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>);
    56     virtual void onSuccess(PassRefPtr<SerializedScriptValue>);
     50    virtual unsigned short direction() const;
     51    virtual PassRefPtr<IDBKey> key() const;
     52    virtual PassRefPtr<IDBAny> value() const;
     53    virtual void update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>);
     54    virtual void continueFunction(PassRefPtr<IDBKey>, PassRefPtr<IDBCallbacks>);
     55    virtual void remove(PassRefPtr<IDBCallbacks>);
    5756
    5857private:
    59     IDBCallbacksProxy(PassOwnPtr<WebKit::WebIDBCallbacks>);
     58    IDBCursorBackendImpl(PassRefPtr<IDBObjectStoreBackendImpl>, PassRefPtr<IDBKeyRange>, IDBCursor::Direction, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>);
    6059
    61     OwnPtr<WebKit::WebIDBCallbacks> m_callbacks;
     60    RefPtr<IDBObjectStoreBackendImpl> m_idbObjectStore;
     61    RefPtr<IDBKeyRange> m_keyRange;
     62    IDBCursor::Direction m_direction;
     63    RefPtr<IDBKey> m_key;
     64    RefPtr<IDBAny> m_value;
    6265};
    63 
    6466
    6567} // namespace WebCore
    6668
    67 #endif
     69#endif // ENABLE(INDEXED_DATABASE)
    6870
    69 #endif // IDBCallbacksProxy_h
     71#endif // IDBCursorBackendImpl_h
  • trunk/WebCore/storage/IDBCursorBackendInterface.h

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacksImpl_h
    27 #define WebIDBCallbacksImpl_h
    28 
    29 #include "WebIDBCallbacks.h"
    30 #include <wtf/PassRefPtr.h>
    31 #include <wtf/RefPtr.h>
     26#ifndef IDBCursorBackendInterface_h
     27#define IDBCursorBackendInterface_h
    3228
    3329#if ENABLE(INDEXED_DATABASE)
    3430
     31#include <wtf/PassRefPtr.h>
     32#include <wtf/RefCounted.h>
     33#include <wtf/Threading.h>
     34
    3535namespace WebCore {
    3636
     37class IDBAny;
    3738class IDBCallbacks;
     39class IDBKey;
     40class IDBRequest;
     41class SerializedScriptValue;
    3842
    39 class WebIDBCallbacksImpl : public WebKit::WebIDBCallbacks {
     43class IDBCursorBackendInterface : public ThreadSafeShared<IDBCursorBackendInterface> {
    4044public:
    41     WebIDBCallbacksImpl(PassRefPtr<IDBCallbacks>);
    42     virtual ~WebIDBCallbacksImpl();
     45    virtual ~IDBCursorBackendInterface() {}
    4346
    44     virtual void onError(const WebKit::WebIDBDatabaseError&);
    45     virtual void onSuccess(); // For "null".
    46     virtual void onSuccess(WebKit::WebIDBDatabase*);
    47     virtual void onSuccess(const WebKit::WebIDBKey&);
    48     virtual void onSuccess(WebKit::WebIDBIndex*);
    49     virtual void onSuccess(WebKit::WebIDBObjectStore*);
    50     virtual void onSuccess(const WebKit::WebSerializedScriptValue&);
     47    virtual unsigned short direction() const = 0;
     48    virtual PassRefPtr<IDBKey> key() const = 0;
     49    virtual PassRefPtr<IDBAny> value() const = 0;
    5150
    52 private:
    53     RefPtr<IDBCallbacks> m_callbacks;
     51    virtual void update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>) = 0;
     52    virtual void continueFunction(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks>) = 0;
     53    virtual void remove(PassRefPtr<IDBCallbacks>) = 0;
    5454};
    5555
     
    5858#endif
    5959
    60 #endif // WebIDBCallbacksImpl_h
     60#endif // IDBCursorBackendInterface_h
  • trunk/WebCore/storage/IDBObjectStore.cpp

    r64577 r64828  
    3131#include "IDBIndex.h"
    3232#include "IDBKey.h"
     33#include "IDBKeyRange.h"
    3334#include "SerializedScriptValue.h"
    3435#include <wtf/UnusedParam.h>
     
    109110}
    110111
     112PassRefPtr<IDBRequest> IDBObjectStore::openCursor(ScriptExecutionContext* context, PassRefPtr<IDBKeyRange> range, unsigned short direction)
     113{
     114    RefPtr<IDBRequest> request = IDBRequest::create(context, IDBAny::create(this));
     115    m_objectStore->openCursor(range, direction, request);
     116    return request.release();
     117}
     118
    111119} // namespace WebCore
    112120
  • trunk/WebCore/storage/IDBObjectStore.h

    r64577 r64828  
    2727#define IDBObjectStore_h
    2828
     29#include "IDBCursor.h"
    2930#include "IDBObjectStoreBackendInterface.h"
    3031#include "IDBRequest.h"
     
    4142class IDBAny;
    4243class IDBIndexRequest;
     44class IDBKeyRange;
    4345class IDBKey;
    4446class SerializedScriptValue;
     
    6567    PassRefPtr<IDBRequest> removeIndex(ScriptExecutionContext*, const String& name);
    6668
     69    PassRefPtr<IDBRequest> openCursor(ScriptExecutionContext*, PassRefPtr<IDBKeyRange> = 0, unsigned short direction = IDBCursor::NEXT);
     70
    6771private:
    6872    IDBObjectStore(PassRefPtr<IDBObjectStoreBackendInterface>);
  • trunk/WebCore/storage/IDBObjectStore.idl

    r64577 r64828  
    4242        [CallWith=ScriptExecutionContext] IDBRequest removeIndex(in DOMString name);
    4343
     44        [CallWith=ScriptExecutionContext] IDBRequest openCursor(in [Optional] IDBKeyRange range, in [Optional] unsigned short direction);
     45
    4446        readonly attribute DOMString name;
    4547        readonly attribute [ConvertNullStringTo=Null] DOMString keyPath;
  • trunk/WebCore/storage/IDBObjectStoreBackendImpl.cpp

    r64577 r64828  
    3030#include "IDBBindingUtilities.h"
    3131#include "IDBCallbacks.h"
     32#include "IDBCursorBackendImpl.h"
    3233#include "IDBDatabaseException.h"
    3334#include "IDBIndexBackendImpl.h"
     35#include "IDBKeyRange.h"
    3436#include "IDBKeyTree.h"
    3537
     
    131133}
    132134
     135void IDBObjectStoreBackendImpl::openCursor(PassRefPtr<IDBKeyRange> range, unsigned short direction, PassRefPtr<IDBCallbacks> callbacks)
     136{
     137    RefPtr<IDBKey> key = range->left();
     138    RefPtr<SerializedScriptValue> value = m_tree->get(key.get());
     139    if (value) {
     140        RefPtr<IDBCursorBackendInterface> cursor = IDBCursorBackendImpl::create(this, range, static_cast<IDBCursor::Direction>(direction), key, value);
     141        callbacks->onSuccess(cursor.release());
     142    } else
     143      callbacks->onSuccess();
     144}
    133145
    134146} // namespace WebCore
  • trunk/WebCore/storage/IDBObjectStoreBackendImpl.h

    r64577 r64828  
    5757    void removeIndex(const String& name, PassRefPtr<IDBCallbacks>);
    5858
     59    void openCursor(PassRefPtr<IDBKeyRange> range, unsigned short direction, PassRefPtr<IDBCallbacks>);
     60
    5961private:
    6062    IDBObjectStoreBackendImpl(const String& name, const String& keyPath, bool autoIncrement);
  • trunk/WebCore/storage/IDBObjectStoreBackendInterface.h

    r64577 r64828  
    3838class IDBIndexBackendInterface;
    3939class IDBKey;
     40class IDBKeyRange;
    4041class SerializedScriptValue;
    4142
     
    5556    virtual PassRefPtr<IDBIndexBackendInterface> index(const String& name) = 0;
    5657    virtual void removeIndex(const String& name, PassRefPtr<IDBCallbacks>) = 0;
     58
     59    virtual void openCursor(PassRefPtr<IDBKeyRange>, unsigned short direction, PassRefPtr<IDBCallbacks>) = 0;
    5760};
    5861
  • trunk/WebCore/storage/IDBRequest.cpp

    r64824 r64828  
    3636#include "EventListener.h"
    3737#include "EventNames.h"
     38#include "IDBCursor.h"
    3839#include "IDBDatabase.h"
    3940#include "IDBIndex.h"
     
    7172    onEventCommon();
    7273    m_result->set();
     74}
     75
     76void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend)
     77{
     78    onEventCommon();
     79    m_result->set(IDBCursor::create(backend));
    7380}
    7481
     
    148155    } else {
    149156        ASSERT(m_result->type() != IDBAny::UndefinedType);
    150         dispatchEvent(IDBSuccessEvent::create(m_source, m_result));       
     157        dispatchEvent(IDBSuccessEvent::create(m_source, m_result));
    151158    }
    152159}
  • trunk/WebCore/storage/IDBRequest.h

    r64824 r64828  
    6464    virtual void onSuccess(); // For "null".
    6565    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
     66    virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>);
    6667    virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
    6768    virtual void onSuccess(PassRefPtr<IDBKey>);
  • trunk/WebKit/chromium/ChangeLog

    r64824 r64828  
     12010-08-05  Marcus Bulach  <bulach@chromium.org>
     2
     3        Reviewed by Jeremy Orlow.
     4
     5        Initial bindings and plumbing for IDBCursor.
     6        https://bugs.webkit.org/show_bug.cgi?id=41888
     7
     8        Test: storage/indexeddb/idb-opencursor.html
     9
     10        * WebKit.gyp:
     11        * public/WebIDBCallbacks.h:
     12        (WebKit::WebIDBCallbacks::onSuccess):
     13        * public/WebIDBCursor.h: Added.
     14        (WebKit::WebIDBCursor::~WebIDBCursor):
     15        (WebKit::WebIDBCursor::direction):
     16        (WebKit::WebIDBCursor::key):
     17        (WebKit::WebIDBCursor::value):
     18        (WebKit::WebIDBCursor::update):
     19        (WebKit::WebIDBCursor::continueFunction):
     20        (WebKit::WebIDBCursor::remove):
     21        * public/WebIDBKeyRange.h: Added.
     22        (WebKit::WebIDBKeyRange::~WebIDBKeyRange):
     23        (WebKit::WebIDBKeyRange::WebIDBKeyRange):
     24        * public/WebIDBObjectStore.h:
     25        (WebKit::WebIDBObjectStore::openCursor):
     26        * src/IDBCallbacksProxy.cpp:
     27        (WebCore::IDBCallbacksProxy::onSuccess):
     28        * src/IDBCallbacksProxy.h:
     29        * src/IDBCursorBackendProxy.cpp: Added.
     30        (WebCore::IDBCursorBackendProxy::create):
     31        (WebCore::IDBCursorBackendProxy::IDBCursorBackendProxy):
     32        (WebCore::IDBCursorBackendProxy::~IDBCursorBackendProxy):
     33        (WebCore::IDBCursorBackendProxy::direction):
     34        (WebCore::IDBCursorBackendProxy::key):
     35        (WebCore::IDBCursorBackendProxy::value):
     36        (WebCore::IDBCursorBackendProxy::update):
     37        (WebCore::IDBCursorBackendProxy::continueFunction):
     38        (WebCore::IDBCursorBackendProxy::remove):
     39        * src/IDBCursorBackendProxy.h: Added.
     40        * src/IDBObjectStoreProxy.cpp:
     41        (WebCore::IDBObjectStoreProxy::openCursor):
     42        * src/IDBObjectStoreProxy.h:
     43        * src/WebIDBCallbacksImpl.cpp:
     44        (WebCore::WebIDBCallbacksImpl::onSuccess):
     45        * src/WebIDBCallbacksImpl.h:
     46        * src/WebIDBCursorImpl.cpp: Added.
     47        (WebKit::WebIDBCursorImpl::WebIDBCursorImpl):
     48        (WebKit::WebIDBCursorImpl::~WebIDBCursorImpl):
     49        (WebKit::WebIDBCursorImpl::direction):
     50        (WebKit::WebIDBCursorImpl::key):
     51        (WebKit::WebIDBCursorImpl::value):
     52        (WebKit::WebIDBCursorImpl::update):
     53        (WebKit::WebIDBCursorImpl::continueFunction):
     54        (WebKit::WebIDBCursorImpl::remove):
     55        * src/WebIDBCursorImpl.h: Added.
     56        * src/WebIDBKeyRange.cpp: Added.
     57        (WebKit::WebIDBKeyRange::WebIDBKeyRange):
     58        (WebKit::WebIDBKeyRange::assign):
     59        (WebKit::WebIDBKeyRange::reset):
     60        (WebKit::WebIDBKeyRange::left):
     61        (WebKit::WebIDBKeyRange::right):
     62        (WebKit::WebIDBKeyRange::flags):
     63        * src/WebIDBObjectStoreImpl.cpp:
     64        (WebKit::WebIDBObjectStoreImpl::openCursor):
     65        * src/WebIDBObjectStoreImpl.h:
     66
    1672010-08-05  Andrei Popescu  <andreip@dhcp-172-16-14-12.lon.corp.google.com>
    268
  • trunk/WebKit/chromium/WebKit.gyp

    r64794 r64828  
    175175                'public/WebImageDecoder.h',
    176176                'public/WebIDBCallbacks.h',
     177                'public/WebIDBCursor.h',
    177178                'public/WebIDBDatabase.h',
    178179                'public/WebIDBDatabaseError.h',
    179180                'public/WebIDBFactory.h',
     181                'public/WebIDBKeyRange.h',
    180182                'public/WebIDBIndex.h',
    181183                'public/WebIDBKey.h',
     
    315317                'src/IDBCallbacksProxy.cpp',
    316318                'src/IDBCallbacksProxy.h',
     319                'src/IDBCursorBackendProxy.cpp',
     320                'src/IDBCursorBackendProxy.h',
    317321                'src/IDBDatabaseProxy.cpp',
    318322                'src/IDBDatabaseProxy.h',
     
    406410                'src/WebIDBCallbacksImpl.cpp',
    407411                'src/WebIDBCallbacksImpl.h',
     412                'src/WebIDBCursorImpl.cpp',
     413                'src/WebIDBCursorImpl.h',
    408414                'src/WebIDBDatabaseError.cpp',
    409415                'src/WebIDBDatabaseImpl.cpp',
     
    414420                'src/WebIDBIndexImpl.h',
    415421                'src/WebIDBKey.cpp',
     422                'src/WebIDBKeyRange.cpp',
    416423                'src/WebIDBObjectStoreImpl.cpp',
    417424                'src/WebIDBObjectStoreImpl.h',
  • trunk/WebKit/chromium/public/WebIDBCallbacks.h

    r63064 r64828  
    3131namespace WebKit {
    3232
     33class WebIDBCursor;
    3334class WebIDBDatabase;
    3435class WebIDBDatabaseError;
     
    4647    virtual void onError(const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); }
    4748    virtual void onSuccess() { WEBKIT_ASSERT_NOT_REACHED(); } // For "null".
     49    virtual void onSuccess(WebIDBCursor*) { WEBKIT_ASSERT_NOT_REACHED(); }
    4850    virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); }
    4951    virtual void onSuccess(const WebIDBKey&) { WEBKIT_ASSERT_NOT_REACHED(); }
  • trunk/WebKit/chromium/public/WebIDBCursor.h

    • Property svn:executable deleted
    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBObjectStore_h
    27 #define WebIDBObjectStore_h
     26#ifndef WebIDBCursor_h
     27#define WebIDBCursor_h
    2828
    2929#include "WebCommon.h"
    30 #include "WebDOMStringList.h"
    3130#include "WebIDBCallbacks.h"
     31#include "WebIDBKey.h"
     32#include "WebSerializedScriptValue.h"
    3233#include "WebString.h"
    3334
     
    3536
    3637// See comment in WebIndexedDatabase for a high level overview these classes.
    37 class WebIDBObjectStore {
     38class WebIDBCursor {
    3839public:
    39     virtual ~WebIDBObjectStore() { }
     40    virtual ~WebIDBCursor() { }
    4041
    41     virtual WebString name() const
    42     {
    43         WEBKIT_ASSERT_NOT_REACHED();
    44         return WebString();
    45     }
    46     virtual WebString keyPath() const
    47     {
    48         WEBKIT_ASSERT_NOT_REACHED();
    49         return WebString();
    50     }
    51     virtual WebDOMStringList indexNames() const
    52     {
    53         WEBKIT_ASSERT_NOT_REACHED();
    54         return WebDOMStringList();
    55     }
    56     virtual void get(const WebIDBKey& key, WebIDBCallbacks*)
    57     {
    58         WEBKIT_ASSERT_NOT_REACHED();
    59     }
    60     virtual void put(const WebSerializedScriptValue& value, const WebIDBKey& key, bool addOnly, WebIDBCallbacks*)
    61     {
    62         WEBKIT_ASSERT_NOT_REACHED();
    63     }
    64     virtual void remove(const WebIDBKey& key, WebIDBCallbacks*)
    65     {
    66         WEBKIT_ASSERT_NOT_REACHED();
    67     }
    68     virtual void createIndex(const WebString& name, const WebString& keyPath, bool unique, WebIDBCallbacks*)
    69     {
    70         WEBKIT_ASSERT_NOT_REACHED();
    71     }
    72     // Transfers ownership of the WebIDBIndex to the caller.
    73     virtual WebIDBIndex* index(const WebString& name)
     42    virtual unsigned short direction() const
    7443    {
    7544        WEBKIT_ASSERT_NOT_REACHED();
    7645        return 0;
    7746    }
    78     virtual void removeIndex(const WebString& name, WebIDBCallbacks*)
     47
     48    virtual WebIDBKey key() const
     49    {
     50        WEBKIT_ASSERT_NOT_REACHED();
     51        return WebIDBKey("");
     52    }
     53
     54    virtual WebSerializedScriptValue value() const
     55    {
     56        WEBKIT_ASSERT_NOT_REACHED();
     57        return WebSerializedScriptValue();
     58    }
     59
     60    virtual void update(const WebSerializedScriptValue&, WebIDBCallbacks*)
    7961    {
    8062        WEBKIT_ASSERT_NOT_REACHED();
    8163    }
    82     // FIXME: finish.
     64
     65    virtual void continueFunction(const WebIDBKey&, WebIDBCallbacks*)
     66    {
     67        WEBKIT_ASSERT_NOT_REACHED();
     68    }
     69
     70    virtual void remove(WebIDBCallbacks*)
     71    {
     72        WEBKIT_ASSERT_NOT_REACHED();
     73    }
    8374};
    8475
    8576} // namespace WebKit
    8677
    87 #endif // WebIDBObjectStore_h
     78#endif // WebIDBCursor_h
  • trunk/WebKit/chromium/public/WebIDBKeyRange.h

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacks_h
    27 #define WebIDBCallbacks_h
     26#ifndef WebIDBKeyRange_h
     27#define WebIDBKeyRange_h
    2828
    2929#include "WebCommon.h"
     30#include "WebPrivatePtr.h"
     31
     32namespace WebCore { class IDBKeyRange; }
    3033
    3134namespace WebKit {
    3235
    33 class WebIDBDatabase;
    34 class WebIDBDatabaseError;
    3536class WebIDBKey;
    36 class WebIDBIndex;
    37 class WebIDBObjectStore;
    38 class WebSerializedScriptValue;
     37class WebString;
    3938
    40 class WebIDBCallbacks {
     39class WebIDBKeyRange {
    4140public:
    42     virtual ~WebIDBCallbacks() { }
     41    ~WebIDBKeyRange() { reset(); }
    4342
    44     // For classes that follow the PImpl pattern, pass a const reference.
    45     // For the rest, pass ownership to the callee via a pointer.
    46     virtual void onError(const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); }
    47     virtual void onSuccess() { WEBKIT_ASSERT_NOT_REACHED(); } // For "null".
    48     virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); }
    49     virtual void onSuccess(const WebIDBKey&) { WEBKIT_ASSERT_NOT_REACHED(); }
    50     virtual void onSuccess(WebIDBIndex*) { WEBKIT_ASSERT_NOT_REACHED(); }
    51     virtual void onSuccess(WebIDBObjectStore*) { WEBKIT_ASSERT_NOT_REACHED(); }
    52     virtual void onSuccess(const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); }
     43    WebIDBKeyRange(const WebIDBKeyRange& keyRange) { assign(keyRange); }
     44    WebIDBKeyRange(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags) { assign(left, right, flags); }
     45
     46    WEBKIT_API WebIDBKey left() const;
     47    WEBKIT_API WebIDBKey right() const;
     48    WEBKIT_API unsigned short flags() const;
     49
     50    WEBKIT_API void assign(const WebIDBKeyRange&);
     51    WEBKIT_API void assign(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags);
     52    WEBKIT_API void reset();
     53
     54#if WEBKIT_IMPLEMENTATION
     55    WebIDBKeyRange(const WTF::PassRefPtr<WebCore::IDBKeyRange>&);
     56    WebIDBKeyRange& operator=(const WTF::PassRefPtr<WebCore::IDBKeyRange>&);
     57    operator WTF::PassRefPtr<WebCore::IDBKeyRange>() const;
     58#endif
     59
     60private:
     61    WebPrivatePtr<WebCore::IDBKeyRange> m_private;
    5362};
    5463
    5564} // namespace WebKit
    5665
    57 #endif // WebIDBCallbacks_h
     66#endif // WebIDBKeyRange_h
  • trunk/WebKit/chromium/public/WebIDBObjectStore.h

    r63064 r64828  
    3333
    3434namespace WebKit {
     35
     36class WebIDBKeyRange;
    3537
    3638// See comment in WebIndexedDatabase for a high level overview these classes.
     
    8082        WEBKIT_ASSERT_NOT_REACHED();
    8183    }
     84    virtual void openCursor(const WebIDBKeyRange&, unsigned short direction, WebIDBCallbacks*)
     85    {
     86        WEBKIT_ASSERT_NOT_REACHED();
     87    }
    8288    // FIXME: finish.
    8389};
  • trunk/WebKit/chromium/src/IDBCallbacksProxy.cpp

    r64577 r64828  
    3333#include "IDBDatabaseProxy.h"
    3434#include "WebIDBCallbacks.h"
     35#include "WebIDBCursorImpl.h"
    3536#include "WebIDBDatabaseImpl.h"
    3637#include "WebIDBDatabaseError.h"
     
    7071}
    7172
     73void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend)
     74{
     75    m_callbacks->onSuccess(new WebKit::WebIDBCursorImpl(idbCursorBackend));
     76    m_callbacks.clear();
     77}
     78
    7279void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend)
    7380{
  • trunk/WebKit/chromium/src/IDBCallbacksProxy.h

    r64577 r64828  
    5050    virtual void onError(PassRefPtr<IDBDatabaseError>);
    5151    virtual void onSuccess(); // For "null".
     52    virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>);
    5253    virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
    5354    virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>);
  • trunk/WebKit/chromium/src/IDBCursorBackendProxy.cpp

    r64826 r64828  
    2525
    2626#include "config.h"
    27 #include "WebIDBCallbacksImpl.h"
    28 
    29 #include "IDBCallbacks.h"
    30 #include "IDBDatabaseError.h"
    31 #include "IDBDatabaseProxy.h"
    32 #include "IDBIndexBackendProxy.h"
    33 #include "IDBKey.h"
    34 #include "IDBObjectStoreProxy.h"
    35 #include "WebIDBCallbacks.h"
    36 #include "WebIDBDatabase.h"
    37 #include "WebIDBDatabaseError.h"
    38 #include "WebIDBIndex.h"
    39 #include "WebIDBKey.h"
    40 #include "WebIDBObjectStore.h"
    41 #include "WebSerializedScriptValue.h"
     27#include "IDBCursorBackendProxy.h"
    4228
    4329#if ENABLE(INDEXED_DATABASE)
    4430
     31#include "IDBAny.h"
     32#include "IDBCallbacks.h"
     33#include "SerializedScriptValue.h"
     34#include "WebIDBCallbacksImpl.h"
     35#include "WebIDBKey.h"
     36
    4537namespace WebCore {
    4638
    47 WebIDBCallbacksImpl::WebIDBCallbacksImpl(PassRefPtr<IDBCallbacks> callbacks)
    48     : m_callbacks(callbacks)
     39PassRefPtr<IDBCursorBackendInterface> IDBCursorBackendProxy::create(PassOwnPtr<WebKit::WebIDBCursor> idbCursor)
     40{
     41    return adoptRef(new IDBCursorBackendProxy(idbCursor));
     42}
     43
     44IDBCursorBackendProxy::IDBCursorBackendProxy(PassOwnPtr<WebKit::WebIDBCursor> idbCursor)
     45    : m_idbCursor(idbCursor)
    4946{
    5047}
    5148
    52 WebIDBCallbacksImpl::~WebIDBCallbacksImpl()
     49IDBCursorBackendProxy::~IDBCursorBackendProxy()
    5350{
    5451}
    5552
    56 void WebIDBCallbacksImpl::onError(const WebKit::WebIDBDatabaseError& error)
     53unsigned short IDBCursorBackendProxy::direction() const
    5754{
    58     m_callbacks->onError(error);
    59     m_callbacks.clear();
     55    return m_idbCursor->direction();
    6056}
    6157
    62 void WebIDBCallbacksImpl::onSuccess()
     58PassRefPtr<IDBKey> IDBCursorBackendProxy::key() const
    6359{
    64     m_callbacks->onSuccess();
    65     m_callbacks.clear();
     60    return m_idbCursor->key();
    6661}
    6762
    68 void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBDatabase* webKitInstance)
     63PassRefPtr<IDBAny> IDBCursorBackendProxy::value() const
    6964{
    70     m_callbacks->onSuccess(IDBDatabaseProxy::create(webKitInstance));
    71     m_callbacks.clear();
     65    RefPtr<SerializedScriptValue> value = PassRefPtr<SerializedScriptValue>(m_idbCursor->value());
     66    return IDBAny::create(value.get());
    7267}
    7368
    74 void WebIDBCallbacksImpl::onSuccess(const WebKit::WebIDBKey& key)
     69void IDBCursorBackendProxy::update(PassRefPtr<SerializedScriptValue> value, PassRefPtr<IDBCallbacks> callbacks)
    7570{
    76     m_callbacks->onSuccess(key);
    77     m_callbacks.clear();
     71    m_idbCursor->update(value, new WebIDBCallbacksImpl(callbacks));
    7872}
    7973
    80 void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBIndex* webKitInstance)
     74void IDBCursorBackendProxy::continueFunction(PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> callbacks)
    8175{
    82     m_callbacks->onSuccess(IDBIndexBackendProxy::create(webKitInstance));
    83     m_callbacks.clear();
     76    m_idbCursor->continueFunction(key, new WebIDBCallbacksImpl(callbacks));
    8477}
    8578
    86 void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBObjectStore* webKitInstance)
     79void IDBCursorBackendProxy::remove(PassRefPtr<IDBCallbacks> callbacks)
    8780{
    88     m_callbacks->onSuccess(IDBObjectStoreProxy::create(webKitInstance));
    89     m_callbacks.clear();
    90 }
    91 
    92 void WebIDBCallbacksImpl::onSuccess(const WebKit::WebSerializedScriptValue& serializedScriptValue)
    93 {
    94     m_callbacks->onSuccess(serializedScriptValue);
    95     m_callbacks.clear();
     81    m_idbCursor->remove(new WebIDBCallbacksImpl(callbacks));
    9682}
    9783
  • trunk/WebKit/chromium/src/IDBCursorBackendProxy.h

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacksImpl_h
    27 #define WebIDBCallbacksImpl_h
     26#ifndef IDBCursorBackendProxy_h
     27#define IDBCursorBackendProxy_h
    2828
    29 #include "WebIDBCallbacks.h"
     29#if ENABLE(INDEXED_DATABASE)
     30
     31#include "IDBCursorBackendInterface.h"
     32#include "WebIDBCursor.h"
     33#include <wtf/OwnPtr.h>
     34#include <wtf/PassOwnPtr.h>
    3035#include <wtf/PassRefPtr.h>
    3136#include <wtf/RefPtr.h>
    3237
    33 #if ENABLE(INDEXED_DATABASE)
    34 
    3538namespace WebCore {
    3639
    37 class IDBCallbacks;
     40class IDBCursorBackendProxy : public IDBCursorBackendInterface {
     41public:
     42    static PassRefPtr<IDBCursorBackendInterface> create(PassOwnPtr<WebKit::WebIDBCursor>);
     43    virtual ~IDBCursorBackendProxy();
    3844
    39 class WebIDBCallbacksImpl : public WebKit::WebIDBCallbacks {
    40 public:
    41     WebIDBCallbacksImpl(PassRefPtr<IDBCallbacks>);
    42     virtual ~WebIDBCallbacksImpl();
    43 
    44     virtual void onError(const WebKit::WebIDBDatabaseError&);
    45     virtual void onSuccess(); // For "null".
    46     virtual void onSuccess(WebKit::WebIDBDatabase*);
    47     virtual void onSuccess(const WebKit::WebIDBKey&);
    48     virtual void onSuccess(WebKit::WebIDBIndex*);
    49     virtual void onSuccess(WebKit::WebIDBObjectStore*);
    50     virtual void onSuccess(const WebKit::WebSerializedScriptValue&);
     45    virtual unsigned short direction() const;
     46    virtual PassRefPtr<IDBKey> key() const;
     47    virtual PassRefPtr<IDBAny> value() const;
     48    virtual void update(PassRefPtr<SerializedScriptValue>, PassRefPtr<IDBCallbacks>);
     49    virtual void continueFunction(PassRefPtr<IDBKey>, PassRefPtr<IDBCallbacks>);
     50    virtual void remove(PassRefPtr<IDBCallbacks>);
    5151
    5252private:
    53     RefPtr<IDBCallbacks> m_callbacks;
     53    IDBCursorBackendProxy(PassOwnPtr<WebKit::WebIDBCursor>);
     54
     55    OwnPtr<WebKit::WebIDBCursor> m_idbCursor;
    5456};
    5557
     
    5860#endif
    5961
    60 #endif // WebIDBCallbacksImpl_h
     62#endif // IDBCursorBackendProxy_h
  • trunk/WebKit/chromium/src/IDBObjectStoreProxy.cpp

    r64577 r64828  
    3030#include "IDBCallbacks.h"
    3131#include "IDBIndexBackendProxy.h"
     32#include "IDBKeyRange.h"
    3233#include "WebIDBCallbacksImpl.h"
     34#include "WebIDBKeyRange.h"
    3335#include "WebIDBIndex.h"
    3436#include "WebIDBKey.h"
     
    102104}
    103105
     106void IDBObjectStoreProxy::openCursor(PassRefPtr<IDBKeyRange> range, unsigned short direction, PassRefPtr<IDBCallbacks> callbacks)
     107{
     108    m_webIDBObjectStore->openCursor(range, direction, new WebIDBCallbacksImpl(callbacks));
     109}
     110
    104111} // namespace WebCore
    105112
  • trunk/WebKit/chromium/src/IDBObjectStoreProxy.h

    r64577 r64828  
    5555    void removeIndex(const String& name, PassRefPtr<IDBCallbacks>);
    5656
     57    virtual void openCursor(PassRefPtr<IDBKeyRange> range, unsigned short direction, PassRefPtr<IDBCallbacks>);
     58
    5759private:
    5860    IDBObjectStoreProxy(PassOwnPtr<WebKit::WebIDBObjectStore>);
  • trunk/WebKit/chromium/src/WebIDBCallbacksImpl.cpp

    r64358 r64828  
    2828
    2929#include "IDBCallbacks.h"
     30#include "IDBCursorBackendProxy.h"
    3031#include "IDBDatabaseError.h"
    3132#include "IDBDatabaseProxy.h"
     
    6667}
    6768
     69void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBCursor* cursor)
     70{
     71    m_callbacks->onSuccess(IDBCursorBackendProxy::create(cursor));
     72    m_callbacks.clear();
     73}
     74
    6875void WebIDBCallbacksImpl::onSuccess(WebKit::WebIDBDatabase* webKitInstance)
    6976{
  • trunk/WebKit/chromium/src/WebIDBCallbacksImpl.h

    r63064 r64828  
    4444    virtual void onError(const WebKit::WebIDBDatabaseError&);
    4545    virtual void onSuccess(); // For "null".
     46    virtual void onSuccess(WebKit::WebIDBCursor*);
    4647    virtual void onSuccess(WebKit::WebIDBDatabase*);
    4748    virtual void onSuccess(const WebKit::WebIDBKey&);
  • trunk/WebKit/chromium/src/WebIDBCursorImpl.cpp

    r64826 r64828  
    1111 *     notice, this list of conditions and the following disclaimer in the
    1212 *     documentation and/or other materials provided with the distribution.
    13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
    14  *     its contributors may be used to endorse or promote products derived
    15  *     from this software without specific prior written permission.
    1613 *
    1714 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     
    2724 */
    2825
    29 #ifndef IDBCallbacks_h
    30 #define IDBCallbacks_h
     26#include "config.h"
     27#include "WebIDBCursorImpl.h"
    3128
    32 #include "IDBDatabaseBackendInterface.h"
    33 #include "IDBDatabaseError.h"
    34 #include "IDBIndexBackendInterface.h"
     29#include "IDBAny.h"
     30#include "IDBCallbacksProxy.h"
     31#include "IDBCursorBackendInterface.h"
    3532#include "IDBKey.h"
    36 #include "IDBObjectStoreBackendInterface.h"
    37 #include "SerializedScriptValue.h"
    38 #include <wtf/RefCounted.h>
     33#include "WebIDBKey.h"
    3934
    40 #if ENABLE(INDEXED_DATABASE)
     35using namespace WebCore;
    4136
    42 namespace WebCore {
     37namespace WebKit {
    4338
    44 class IDBCallbacks : public RefCounted<IDBCallbacks> {
    45 public:
    46     virtual ~IDBCallbacks() { }
     39WebIDBCursorImpl::WebIDBCursorImpl(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend)
     40    : m_idbCursorBackend(idbCursorBackend)
     41{
     42}
    4743
    48     virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
    49     virtual void onSuccess() = 0; // For "null".
    50     virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
    51     virtual void onSuccess(PassRefPtr<IDBIndexBackendInterface>) = 0;
    52     virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
    53     virtual void onSuccess(PassRefPtr<IDBObjectStoreBackendInterface>) = 0;
    54     virtual void onSuccess(PassRefPtr<SerializedScriptValue>) = 0;
    55 };
     44WebIDBCursorImpl::~WebIDBCursorImpl()
     45{
     46}
     47
     48unsigned short WebIDBCursorImpl::direction() const
     49{
     50    return m_idbCursorBackend->direction();
     51}
     52
     53WebIDBKey WebIDBCursorImpl::key() const
     54{
     55    return WebIDBKey(m_idbCursorBackend->key());
     56}
     57
     58WebSerializedScriptValue WebIDBCursorImpl::value() const
     59{
     60    return m_idbCursorBackend->value()->serializedScriptValue();
     61}
     62
     63void WebIDBCursorImpl::update(const WebSerializedScriptValue& value, WebIDBCallbacks* callbacks)
     64{
     65    m_idbCursorBackend->update(value, IDBCallbacksProxy::create(callbacks));
     66}
     67
     68void WebIDBCursorImpl::continueFunction(const WebIDBKey& key, WebIDBCallbacks* callbacks)
     69{
     70    m_idbCursorBackend->continueFunction(key, IDBCallbacksProxy::create(callbacks));
     71}
     72
     73void WebIDBCursorImpl::remove(WebIDBCallbacks* callbacks)
     74{
     75    m_idbCursorBackend->remove(IDBCallbacksProxy::create(callbacks));
     76}
    5677
    5778} // namespace WebCore
    58 
    59 #endif
    60 
    61 #endif // IDBCallbacks_h
  • trunk/WebKit/chromium/src/WebIDBCursorImpl.h

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacksImpl_h
    27 #define WebIDBCallbacksImpl_h
     26#ifndef WebIDBCursorImpl_h
     27#define WebIDBCursorImpl_h
    2828
    29 #include "WebIDBCallbacks.h"
     29#include "WebCommon.h"
     30#include "WebIDBCursor.h"
    3031#include <wtf/PassRefPtr.h>
    3132#include <wtf/RefPtr.h>
    3233
    33 #if ENABLE(INDEXED_DATABASE)
     34namespace WebCore { class IDBCursorBackendInterface; }
    3435
    35 namespace WebCore {
     36namespace WebKit {
    3637
    37 class IDBCallbacks;
     38// See comment in WebIndexedObjectStore for a high level overview these classes.
     39class WebIDBCursorImpl : public WebIDBCursor {
     40public:
     41    WebIDBCursorImpl(WTF::PassRefPtr<WebCore::IDBCursorBackendInterface>);
     42    virtual ~WebIDBCursorImpl();
    3843
    39 class WebIDBCallbacksImpl : public WebKit::WebIDBCallbacks {
    40 public:
    41     WebIDBCallbacksImpl(PassRefPtr<IDBCallbacks>);
    42     virtual ~WebIDBCallbacksImpl();
     44    virtual unsigned short direction() const;
     45    virtual WebIDBKey key() const;
     46    virtual WebSerializedScriptValue value() const;
     47    virtual void update(const WebSerializedScriptValue&, WebIDBCallbacks*);
     48    virtual void continueFunction(const WebIDBKey&, WebIDBCallbacks*);
     49    virtual void remove(WebIDBCallbacks*);
    4350
    44     virtual void onError(const WebKit::WebIDBDatabaseError&);
    45     virtual void onSuccess(); // For "null".
    46     virtual void onSuccess(WebKit::WebIDBDatabase*);
    47     virtual void onSuccess(const WebKit::WebIDBKey&);
    48     virtual void onSuccess(WebKit::WebIDBIndex*);
    49     virtual void onSuccess(WebKit::WebIDBObjectStore*);
    50     virtual void onSuccess(const WebKit::WebSerializedScriptValue&);
    51 
    52 private:
    53     RefPtr<IDBCallbacks> m_callbacks;
     51 private:
     52    WTF::RefPtr<WebCore::IDBCursorBackendInterface> m_idbCursorBackend;
    5453};
    5554
    56 } // namespace WebCore
     55} // namespace WebKit
    5756
    58 #endif
    59 
    60 #endif // WebIDBCallbacksImpl_h
     57#endif // WebIDBCursorImpl_h
  • trunk/WebKit/chromium/src/WebIDBKeyRange.cpp

    r64826 r64828  
    2424 */
    2525
    26 #ifndef WebIDBCallbacks_h
    27 #define WebIDBCallbacks_h
     26#include "config.h"
     27#include "WebIDBKeyRange.h"
    2828
    29 #include "WebCommon.h"
     29#include "IDBKey.h"
     30#include "IDBKeyRange.h"
     31#include "WebIDBKey.h"
     32
     33using WebCore::IDBKeyRange;
    3034
    3135namespace WebKit {
    3236
    33 class WebIDBDatabase;
    34 class WebIDBDatabaseError;
    35 class WebIDBKey;
    36 class WebIDBIndex;
    37 class WebIDBObjectStore;
    38 class WebSerializedScriptValue;
     37void WebIDBKeyRange::assign(const WebIDBKeyRange& other)
     38{
     39    m_private = other.m_private;
     40}
    3941
    40 class WebIDBCallbacks {
    41 public:
    42     virtual ~WebIDBCallbacks() { }
     42void WebIDBKeyRange::assign(const WebIDBKey& left, const WebIDBKey& right, unsigned short flags)
     43{
     44    m_private = IDBKeyRange::create(left, right, flags);
     45}
    4346
    44     // For classes that follow the PImpl pattern, pass a const reference.
    45     // For the rest, pass ownership to the callee via a pointer.
    46     virtual void onError(const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); }
    47     virtual void onSuccess() { WEBKIT_ASSERT_NOT_REACHED(); } // For "null".
    48     virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); }
    49     virtual void onSuccess(const WebIDBKey&) { WEBKIT_ASSERT_NOT_REACHED(); }
    50     virtual void onSuccess(WebIDBIndex*) { WEBKIT_ASSERT_NOT_REACHED(); }
    51     virtual void onSuccess(WebIDBObjectStore*) { WEBKIT_ASSERT_NOT_REACHED(); }
    52     virtual void onSuccess(const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); }
    53 };
     47void WebIDBKeyRange::reset()
     48{
     49    m_private.reset();
     50}
     51
     52WebIDBKey WebIDBKeyRange::left() const
     53{
     54    return m_private->left();
     55}
     56
     57WebIDBKey WebIDBKeyRange::right() const
     58{
     59    return m_private->right();
     60}
     61
     62unsigned short WebIDBKeyRange::flags() const
     63{
     64    return m_private->flags();
     65}
     66
     67WebIDBKeyRange::WebIDBKeyRange(const PassRefPtr<IDBKeyRange>& value)
     68    : m_private(value)
     69{
     70}
     71
     72WebIDBKeyRange& WebIDBKeyRange::operator=(const PassRefPtr<IDBKeyRange>& value)
     73{
     74    m_private = value;
     75    return *this;
     76}
     77
     78WebIDBKeyRange::operator PassRefPtr<IDBKeyRange>() const
     79{
     80    return m_private.get();
     81}
    5482
    5583} // namespace WebKit
    56 
    57 #endif // WebIDBCallbacks_h
  • trunk/WebKit/chromium/src/WebIDBObjectStoreImpl.cpp

    r64577 r64828  
    2929#include "DOMStringList.h"
    3030#include "IDBCallbacksProxy.h"
     31#include "IDBKeyRange.h"
    3132#include "IDBObjectStoreBackendInterface.h"
    3233#include "WebIDBIndexImpl.h"
    3334#include "WebIDBKey.h"
     35#include "WebIDBKeyRange.h"
    3436#include "WebSerializedScriptValue.h"
    3537
     
    9799}
    98100
     101void WebIDBObjectStoreImpl::openCursor(const WebIDBKeyRange& keyRange, unsigned short direction, WebIDBCallbacks* callbacks)
     102{
     103    m_objectStore->openCursor(IDBKeyRange::create(keyRange.left(), keyRange.right(), keyRange.flags()), direction, IDBCallbacksProxy::create(callbacks));
     104}
     105
    99106} // namespace WebCore
    100107
  • trunk/WebKit/chromium/src/WebIDBObjectStoreImpl.h

    r64577 r64828  
    5656    void removeIndex(const WebString& name, WebIDBCallbacks* callbacks);
    5757
     58    void openCursor(const WebIDBKeyRange&, unsigned short direction, WebIDBCallbacks*);
     59
    5860 private:
    5961    WTF::RefPtr<WebCore::IDBObjectStoreBackendInterface> m_objectStore;
Note: See TracChangeset for help on using the changeset viewer.