Changeset 135856 in webkit


Ignore:
Timestamp:
Nov 27, 2012 6:10:27 AM (11 years ago)
Author:
alecflett@chromium.org
Message:

IndexedDB: stub out IDBDatabaseBackendInterface::createTransaction
https://bugs.webkit.org/show_bug.cgi?id=102730

Reviewed by Darin Fisher.

Source/WebCore:

Stub out and support passing a 64-bit transaction id
so the frontend can refer to transactions by id rather than
a proxy object or a direct pointer reference. This will ultimately
loosen ownership and lifetime of transactions from the frontend
and backend.

No new tests, this is just part of a refactor.

  • Modules/indexeddb/IDBDatabase.cpp:
  • Modules/indexeddb/IDBDatabaseBackendImpl.cpp:

(WebCore):
(WebCore::IDBDatabaseBackendImpl::transaction):
(WebCore::IDBDatabaseBackendImpl::createTransaction):

  • Modules/indexeddb/IDBDatabaseBackendImpl.h:

(IDBDatabaseBackendImpl):

  • Modules/indexeddb/IDBDatabaseBackendInterface.h:

(IDBDatabaseBackendInterface):

  • Modules/indexeddb/IDBTransactionBackendImpl.cpp:

(WebCore::IDBTransactionBackendImpl::create):
(WebCore::IDBTransactionBackendImpl::IDBTransactionBackendImpl):

  • Modules/indexeddb/IDBTransactionBackendImpl.h:

(IDBTransactionBackendImpl):
(WebCore::IDBTransactionBackendImpl::id):

Source/WebKit/chromium:

Add support for new createTransaction() method in both sides
of the WebKit API.

  • public/WebIDBDatabase.h:

(WebIDBDatabase):
(WebKit::WebIDBDatabase::createTransaction):

  • src/IDBDatabaseBackendProxy.cpp:

(WebKit):
(WebKit::IDBDatabaseBackendProxy::createTransaction):

  • src/IDBDatabaseBackendProxy.h:

(IDBDatabaseBackendProxy):

  • src/WebIDBDatabaseImpl.cpp:

(WebKit::WebIDBDatabaseImpl::createTransaction):
(WebKit):

  • src/WebIDBDatabaseImpl.h:

(WebIDBDatabaseImpl):

Location:
trunk/Source
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r135853 r135856  
     12012-11-27  Alec Flett  <alecflett@chromium.org>
     2
     3        IndexedDB: stub out IDBDatabaseBackendInterface::createTransaction
     4        https://bugs.webkit.org/show_bug.cgi?id=102730
     5
     6        Reviewed by Darin Fisher.
     7
     8        Stub out and support passing a 64-bit transaction id
     9        so the frontend can refer to transactions by id rather than
     10        a proxy object or a direct pointer reference. This will ultimately
     11        loosen ownership and lifetime of transactions from the frontend
     12        and backend.
     13
     14        No new tests, this is just part of a refactor.
     15
     16        * Modules/indexeddb/IDBDatabase.cpp:
     17        * Modules/indexeddb/IDBDatabaseBackendImpl.cpp:
     18        (WebCore):
     19        (WebCore::IDBDatabaseBackendImpl::transaction):
     20        (WebCore::IDBDatabaseBackendImpl::createTransaction):
     21        * Modules/indexeddb/IDBDatabaseBackendImpl.h:
     22        (IDBDatabaseBackendImpl):
     23        * Modules/indexeddb/IDBDatabaseBackendInterface.h:
     24        (IDBDatabaseBackendInterface):
     25        * Modules/indexeddb/IDBTransactionBackendImpl.cpp:
     26        (WebCore::IDBTransactionBackendImpl::create):
     27        (WebCore::IDBTransactionBackendImpl::IDBTransactionBackendImpl):
     28        * Modules/indexeddb/IDBTransactionBackendImpl.h:
     29        (IDBTransactionBackendImpl):
     30        (WebCore::IDBTransactionBackendImpl::id):
     31
    1322012-11-27  Andrei Bucur  <abucur@adobe.com>
    233
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp

    r134673 r135856  
    3737#include "IDBDatabaseException.h"
    3838#include "IDBEventDispatcher.h"
    39 #include "IDBFactoryBackendInterface.h"
    4039#include "IDBIndex.h"
    4140#include "IDBKeyPath.h"
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.cpp

    r135226 r135856  
    423423}
    424424
     425// FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    425426PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendImpl::transaction(const Vector<int64_t>& objectStoreIds, unsigned short mode)
    426427{
    427     RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::create(objectStoreIds, mode, this);
     428    return createTransaction(0, objectStoreIds, mode);
     429}
     430
     431PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode)
     432{
     433    RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::create(transactionId, objectStoreIds, mode, this);
    428434    m_transactions.add(transaction.get());
    429435    return transaction.release();
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackendImpl.h

    r134095 r135856  
    6565    virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&);
    6666    virtual void setVersion(const String& version, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, ExceptionCode&);
     67    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    6768    virtual PassRefPtr<IDBTransactionBackendInterface> transaction(const Vector<int64_t>&, unsigned short);
     69    virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode);
    6870    virtual void close(PassRefPtr<IDBDatabaseCallbacks>);
    6971
  • trunk/Source/WebCore/Modules/indexeddb/IDBDatabaseBackendInterface.h

    r134095 r135856  
    5757    virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&) = 0;
    5858    virtual void setVersion(const String& version, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, ExceptionCode&) = 0;
     59    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    5960    virtual PassRefPtr<IDBTransactionBackendInterface> transaction(const Vector<int64_t>& objectStoreIds, unsigned short mode) = 0;
     61    virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode) = 0;
    6062    virtual void close(PassRefPtr<IDBDatabaseCallbacks>) = 0;
    6163};
  • trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.cpp

    r135332 r135856  
    4040namespace WebCore {
    4141
    42 PassRefPtr<IDBTransactionBackendImpl> IDBTransactionBackendImpl::create(const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl* database)
    43 {
    44     return adoptRef(new IDBTransactionBackendImpl(objectStoreIds, mode, database));
    45 }
    46 
    47 IDBTransactionBackendImpl::IDBTransactionBackendImpl(const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl* database)
    48     : m_objectStoreIds(objectStoreIds)
     42PassRefPtr<IDBTransactionBackendImpl> IDBTransactionBackendImpl::create(int64_t id, const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl* database)
     43{
     44    return adoptRef(new IDBTransactionBackendImpl(id, objectStoreIds, mode, database));
     45}
     46
     47IDBTransactionBackendImpl::IDBTransactionBackendImpl(int64_t id, const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl* database)
     48    : m_id(id)
     49    , m_objectStoreIds(objectStoreIds)
    4950    , m_mode(mode)
    5051    , m_state(Unused)
  • trunk/Source/WebCore/Modules/indexeddb/IDBTransactionBackendImpl.h

    r135332 r135856  
    4545class IDBTransactionBackendImpl : public IDBTransactionBackendInterface {
    4646public:
    47     static PassRefPtr<IDBTransactionBackendImpl> create(const Vector<int64_t>&, unsigned short mode, IDBDatabaseBackendImpl*);
     47    static PassRefPtr<IDBTransactionBackendImpl> create(int64_t transactionId, const Vector<int64_t>&, unsigned short mode, IDBDatabaseBackendImpl*);
    4848    static IDBTransactionBackendImpl* from(IDBTransactionBackendInterface* interface)
    4949    {
     
    6969    void didCompletePreemptiveEvent() { m_pendingPreemptiveEvents--; ASSERT(m_pendingPreemptiveEvents >= 0); }
    7070    IDBBackingStore::Transaction* backingStoreTransaction() { return &m_transaction; }
     71    int64_t id() const { return m_id; }
    7172
    7273private:
    73     IDBTransactionBackendImpl(const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl*);
     74    IDBTransactionBackendImpl(int64_t id, const Vector<int64_t>& objectStoreIds, unsigned short mode, IDBDatabaseBackendImpl*);
    7475
    7576    enum State {
     
    9091    void closeOpenCursors();
    9192
     93    const int64_t m_id;
    9294    const Vector<int64_t> m_objectStoreIds;
    9395    const unsigned short m_mode;
  • trunk/Source/WebKit/chromium/ChangeLog

    r135837 r135856  
     12012-11-27  Alec Flett  <alecflett@chromium.org>
     2
     3        IndexedDB: stub out IDBDatabaseBackendInterface::createTransaction
     4        https://bugs.webkit.org/show_bug.cgi?id=102730
     5
     6        Reviewed by Darin Fisher.
     7
     8        Add support for new createTransaction() method in both sides
     9        of the WebKit API.
     10
     11        * public/WebIDBDatabase.h:
     12        (WebIDBDatabase):
     13        (WebKit::WebIDBDatabase::createTransaction):
     14        * src/IDBDatabaseBackendProxy.cpp:
     15        (WebKit):
     16        (WebKit::IDBDatabaseBackendProxy::createTransaction):
     17        * src/IDBDatabaseBackendProxy.h:
     18        (IDBDatabaseBackendProxy):
     19        * src/WebIDBDatabaseImpl.cpp:
     20        (WebKit::WebIDBDatabaseImpl::createTransaction):
     21        (WebKit):
     22        * src/WebIDBDatabaseImpl.h:
     23        (WebIDBDatabaseImpl):
     24
    1252012-11-27  Sheriff Bot  <webkit.review.bot@gmail.com>
    226
  • trunk/Source/WebKit/chromium/public/WebIDBDatabase.h

    r134436 r135856  
    5858    virtual void deleteObjectStore(long long objectStoreId, const WebIDBTransaction& transaction, WebExceptionCode& ec) { WEBKIT_ASSERT_NOT_REACHED(); }
    5959    virtual void setVersion(const WebString& version, WebIDBCallbacks* callbacks, WebExceptionCode&) { WEBKIT_ASSERT_NOT_REACHED(); }
     60    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    6061    // Transfers ownership of the WebIDBTransaction to the caller.
    6162    virtual WebIDBTransaction* transaction(const WebVector<long long>&, unsigned short mode)
     
    6465        return 0;
    6566    }
     67    // Transfers ownership of the WebIDBTransaction to the caller.
     68    virtual WebIDBTransaction* createTransaction(long long id, const WebVector<long long>&, unsigned short mode) { WEBKIT_ASSERT_NOT_REACHED(); return 0; }
    6669    virtual void close() { WEBKIT_ASSERT_NOT_REACHED(); }
    6770    virtual void forceClose() { WEBKIT_ASSERT_NOT_REACHED(); }
  • trunk/Source/WebKit/chromium/src/IDBDatabaseBackendProxy.cpp

    r134436 r135856  
    9292}
    9393
     94// FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    9495PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendProxy::transaction(const Vector<int64_t>& objectStoreIds, unsigned short mode)
    9596{
    9697    OwnPtr<WebIDBTransaction> transaction = adoptPtr(m_webIDBDatabase->transaction(objectStoreIds, mode));
     98    if (!transaction)
     99        return 0;
     100
     101    return IDBTransactionBackendProxy::create(transaction.release());
     102}
     103
     104PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendProxy::createTransaction(int64_t id, const Vector<int64_t>& objectStoreIds, unsigned short mode)
     105{
     106    OwnPtr<WebIDBTransaction> transaction = adoptPtr(m_webIDBDatabase->createTransaction(id, objectStoreIds, mode));
    97107    if (!transaction)
    98108        return 0;
  • trunk/Source/WebKit/chromium/src/IDBDatabaseBackendProxy.h

    r134436 r135856  
    4848    virtual void deleteObjectStore(int64_t, WebCore::IDBTransactionBackendInterface*, WebCore::ExceptionCode&);
    4949    virtual void setVersion(const String& version, PassRefPtr<WebCore::IDBCallbacks>, PassRefPtr<WebCore::IDBDatabaseCallbacks>, WebCore::ExceptionCode&);
     50    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    5051    virtual PassRefPtr<WebCore::IDBTransactionBackendInterface> transaction(const Vector<int64_t>&, unsigned short mode);
     52    virtual PassRefPtr<WebCore::IDBTransactionBackendInterface> createTransaction(int64_t, const Vector<int64_t>&, unsigned short mode);
    5153    virtual void close(PassRefPtr<WebCore::IDBDatabaseCallbacks>);
    5254
  • trunk/Source/WebKit/chromium/src/WebIDBDatabaseImpl.cpp

    r134095 r135856  
    8181}
    8282
     83WebIDBTransaction* WebIDBDatabaseImpl::createTransaction(long long id, const WebVector<long long>& objectStoreIds, unsigned short mode)
     84{
     85    Vector<int64_t> objectStoreIdList(objectStoreIds.size());
     86    for (size_t i = 0; i < objectStoreIds.size(); ++i)
     87        objectStoreIdList[i] = objectStoreIds[i];
     88    RefPtr<IDBTransactionBackendInterface> transaction = m_databaseBackend->createTransaction(id, objectStoreIdList, mode);
     89    if (!transaction)
     90        return 0;
     91    return new WebIDBTransactionImpl(transaction);
     92}
     93
     94// FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    8395WebIDBTransaction* WebIDBDatabaseImpl::transaction(const WebVector<long long>& objectStoreIds, unsigned short mode)
    8496{
  • trunk/Source/WebKit/chromium/src/WebIDBDatabaseImpl.h

    r134095 r135856  
    5656    virtual void deleteObjectStore(long long objectStoreId, const WebIDBTransaction&, WebExceptionCode&);
    5757    virtual void setVersion(const WebString& version, WebIDBCallbacks*, WebExceptionCode&);
     58    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    5859    virtual WebIDBTransaction* transaction(const WebVector<long long>& names, unsigned short mode);
     60    virtual WebIDBTransaction* createTransaction(long long id, const WebVector<long long>&, unsigned short mode);
    5961    virtual void forceClose();
    6062    virtual void close();
  • trunk/Source/WebKit/chromium/tests/IDBDatabaseBackendTest.cpp

    r133195 r135856  
    155155    virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&) { }
    156156    virtual void setVersion(const String& version, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, ExceptionCode&) { }
    157     virtual PassRefPtr<IDBTransactionBackendInterface> transaction(DOMStringList* storeNames, unsigned short mode, ExceptionCode&) { return 0; }
     157    // FIXME: Remove this as part of https://bugs.webkit.org/show_bug.cgi?id=102733.
    158158    virtual PassRefPtr<IDBTransactionBackendInterface> transaction(const Vector<int64_t>&, unsigned short mode) { return 0; }
     159    virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t, const Vector<int64_t>&, unsigned short mode) { return 0; }
    159160
    160161    virtual void close(PassRefPtr<IDBDatabaseCallbacks>)
Note: See TracChangeset for help on using the changeset viewer.