https://bugs.webkit.org/show_bug.cgi?id=103921
Reviewed by Dimitri Glazkov.
Source/WebCore:
In preparation for a refactoring. Legacy methods
will be removed in https://bugs.webkit.org/show_bug.cgi?id=103923.
No new tests, just adding unused methods for refactoring.
* Modules/indexeddb/IDBCallbacks.h:
(WebCore::IDBCallbacks::onUpgradeNeeded):
* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::onAbort):
(WebCore):
(WebCore::IDBDatabase::onComplete):
* Modules/indexeddb/IDBDatabase.h:
(IDBDatabase):
* Modules/indexeddb/IDBDatabaseBackendImpl.cpp:
(WebCore::IDBDatabaseBackendImpl::createTransaction):
(WebCore):
* Modules/indexeddb/IDBDatabaseBackendImpl.h:
(IDBDatabaseBackendImpl):
(WebCore::IDBDatabaseBackendImpl::commit):
(WebCore::IDBDatabaseBackendImpl::abort):
* Modules/indexeddb/IDBDatabaseBackendInterface.h:
(IDBDatabaseBackendInterface):
* Modules/indexeddb/IDBDatabaseCallbacks.h:
(IDBDatabaseCallbacks):
* Modules/indexeddb/IDBDatabaseCallbacksImpl.cpp:
(WebCore::IDBDatabaseCallbacksImpl::onAbort):
(WebCore):
(WebCore::IDBDatabaseCallbacksImpl::onComplete):
* Modules/indexeddb/IDBDatabaseCallbacksImpl.h:
(IDBDatabaseCallbacksImpl):
* Modules/indexeddb/IDBFactoryBackendImpl.cpp:
(WebCore::IDBFactoryBackendImpl::open):
* Modules/indexeddb/IDBFactoryBackendImpl.h:
(WebCore::IDBFactoryBackendImpl::open):
(IDBFactoryBackendImpl):
* Modules/indexeddb/IDBFactoryBackendInterface.h:
(IDBFactoryBackendInterface):
* Modules/indexeddb/IDBOpenDBRequest.cpp:
(WebCore::IDBOpenDBRequest::onUpgradeNeeded):
(WebCore):
* Modules/indexeddb/IDBOpenDBRequest.h:
(IDBOpenDBRequest):
* Modules/indexeddb/IDBTransactionBackendInterface.h:
(WebCore):
* Modules/indexeddb/IDBTransactionCoordinator.h:
Source/WebKit/chromium:
Add new signatures for refactoring, to allow
transaction_ids to make is through the open/onUpgradeNeeded
loop.
* public/WebIDBCallbacks.h:
(WebKit::WebIDBCallbacks::onUpgradeNeeded):
* public/WebIDBDatabase.h:
(WebKit::WebIDBDatabase::createTransaction):
(WebKit::WebIDBDatabase::abort):
(WebKit::WebIDBDatabase::commit):
(WebIDBDatabase):
* public/WebIDBDatabaseCallbacks.h:
(WebIDBDatabaseCallbacks):
(WebKit::WebIDBDatabaseCallbacks::onAbort):
(WebKit::WebIDBDatabaseCallbacks::onComplete):
* public/WebIDBFactory.h:
(WebKit::WebIDBFactory::open):
* src/IDBCallbacksProxy.cpp:
(WebKit::IDBCallbacksProxy::onUpgradeNeeded):
(WebKit):
* src/IDBCallbacksProxy.h:
(IDBCallbacksProxy):
* src/IDBDatabaseBackendProxy.cpp:
(WebKit::IDBDatabaseBackendProxy::createTransaction):
(WebKit):
(WebKit::IDBDatabaseBackendProxy::commit):
(WebKit::IDBDatabaseBackendProxy::abort):
* src/IDBDatabaseBackendProxy.h:
(IDBDatabaseBackendProxy):
* src/IDBDatabaseCallbacksProxy.cpp:
(WebKit::IDBDatabaseCallbacksProxy::onAbort):
(WebKit):
(WebKit::IDBDatabaseCallbacksProxy::onComplete):
* src/IDBDatabaseCallbacksProxy.h:
(IDBDatabaseCallbacksProxy):
* src/IDBFactoryBackendProxy.cpp:
(WebKit::IDBFactoryBackendProxy::open):
(WebKit):
* src/IDBFactoryBackendProxy.h:
(IDBFactoryBackendProxy):
* src/WebIDBCallbacksImpl.cpp:
(WebKit::WebIDBCallbacksImpl::onUpgradeNeeded):
(WebKit):
* src/WebIDBCallbacksImpl.h:
(WebIDBCallbacksImpl):
* src/WebIDBDatabaseCallbacksImpl.cpp:
(WebKit::WebIDBDatabaseCallbacksImpl::onAbort):
(WebKit):
(WebKit::WebIDBDatabaseCallbacksImpl::onComplete):
* src/WebIDBDatabaseCallbacksImpl.h:
(WebIDBDatabaseCallbacksImpl):
* src/WebIDBDatabaseImpl.cpp:
(WebKit::WebIDBDatabaseImpl::createTransaction):
(WebKit):
(WebKit::WebIDBDatabaseImpl::abort):
(WebKit::WebIDBDatabaseImpl::commit):
* src/WebIDBDatabaseImpl.h:
(WebIDBDatabaseImpl):
* src/WebIDBFactoryImpl.cpp:
(WebKit::WebIDBFactoryImpl::open):
(WebKit):
* src/WebIDBFactoryImpl.h:
(WebIDBFactoryImpl):
* tests/IDBAbortOnCorruptTest.cpp:
* tests/IDBDatabaseBackendTest.cpp:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@136714
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2012-12-05 Alec Flett <alecflett@chromium.org>
+
+ IndexedDB: Stub out transaction-backend methods
+ https://bugs.webkit.org/show_bug.cgi?id=103921
+
+ Reviewed by Dimitri Glazkov.
+
+ In preparation for a refactoring. Legacy methods
+ will be removed in https://bugs.webkit.org/show_bug.cgi?id=103923.
+
+ No new tests, just adding unused methods for refactoring.
+
+ * Modules/indexeddb/IDBCallbacks.h:
+ (WebCore::IDBCallbacks::onUpgradeNeeded):
+ * Modules/indexeddb/IDBDatabase.cpp:
+ (WebCore::IDBDatabase::onAbort):
+ (WebCore):
+ (WebCore::IDBDatabase::onComplete):
+ * Modules/indexeddb/IDBDatabase.h:
+ (IDBDatabase):
+ * Modules/indexeddb/IDBDatabaseBackendImpl.cpp:
+ (WebCore::IDBDatabaseBackendImpl::createTransaction):
+ (WebCore):
+ * Modules/indexeddb/IDBDatabaseBackendImpl.h:
+ (IDBDatabaseBackendImpl):
+ (WebCore::IDBDatabaseBackendImpl::commit):
+ (WebCore::IDBDatabaseBackendImpl::abort):
+ * Modules/indexeddb/IDBDatabaseBackendInterface.h:
+ (IDBDatabaseBackendInterface):
+ * Modules/indexeddb/IDBDatabaseCallbacks.h:
+ (IDBDatabaseCallbacks):
+ * Modules/indexeddb/IDBDatabaseCallbacksImpl.cpp:
+ (WebCore::IDBDatabaseCallbacksImpl::onAbort):
+ (WebCore):
+ (WebCore::IDBDatabaseCallbacksImpl::onComplete):
+ * Modules/indexeddb/IDBDatabaseCallbacksImpl.h:
+ (IDBDatabaseCallbacksImpl):
+ * Modules/indexeddb/IDBFactoryBackendImpl.cpp:
+ (WebCore::IDBFactoryBackendImpl::open):
+ * Modules/indexeddb/IDBFactoryBackendImpl.h:
+ (WebCore::IDBFactoryBackendImpl::open):
+ (IDBFactoryBackendImpl):
+ * Modules/indexeddb/IDBFactoryBackendInterface.h:
+ (IDBFactoryBackendInterface):
+ * Modules/indexeddb/IDBOpenDBRequest.cpp:
+ (WebCore::IDBOpenDBRequest::onUpgradeNeeded):
+ (WebCore):
+ * Modules/indexeddb/IDBOpenDBRequest.h:
+ (IDBOpenDBRequest):
+ * Modules/indexeddb/IDBTransactionBackendInterface.h:
+ (WebCore):
+ * Modules/indexeddb/IDBTransactionCoordinator.h:
+
+2012-11-27 Alec Flett <alecflett@chromium.org>
+
+ IndexedDB: remove IDBDatabaseBackendInterface::transaction()
+ https://bugs.webkit.org/show_bug.cgi?id=102733
+
+ Reviewed by Darin Fisher.
+
+ Part 3 of a refactor, remove the old transaction() method.
+
+ No new tests as this is just post-refactor cleanup.
+
+ * Modules/indexeddb/IDBDatabaseBackendInterface.h:
+ (IDBDatabaseBackendInterface):
+
2012-12-05 Robert Hogan <robert@webkit.org>
REGRESSION(r126683): Table cell are getting borders when the style doesn't mention any
closeConnection();
}
+void IDBDatabase::onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> error)
+{
+ ASSERT_NOT_REACHED();
+}
+
+void IDBDatabase::onComplete(int64_t transactionId)
+{
+ ASSERT_NOT_REACHED();
+}
+
PassRefPtr<DOMStringList> IDBDatabase::objectStoreNames() const
{
RefPtr<DOMStringList> objectStoreNames = DOMStringList::create();
// IDBDatabaseCallbacks
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion);
virtual void onVersionChange(const String& requestedVersion);
+ virtual void onAbort(int64_t, PassRefPtr<IDBDatabaseError>);
+ virtual void onComplete(int64_t);
// ActiveDOMObject
virtual void stop() OVERRIDE;
}
}
+// FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
PassRefPtr<IDBTransactionBackendInterface> IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode)
{
RefPtr<IDBTransactionBackendImpl> transaction = IDBTransactionBackendImpl::create(transactionId, objectStoreIds, mode, this);
return transaction.release();
}
+void IDBDatabaseBackendImpl::createTransaction(int64_t transactionId, PassRefPtr<IDBDatabaseCallbacks> callbacks, const Vector<int64_t>& objectStoreIds, unsigned short mode)
+{
+ ASSERT_NOT_REACHED();
+}
+
void IDBDatabaseBackendImpl::openConnection(PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks)
{
ASSERT(m_backingStore.get());
virtual IDBDatabaseMetadata metadata() const;
virtual PassRefPtr<IDBObjectStoreBackendInterface> createObjectStore(int64_t id, const String& name, const IDBKeyPath&, bool autoIncrement, IDBTransactionBackendInterface*, ExceptionCode&);
virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode);
+ virtual void createTransaction(int64_t transactionId, PassRefPtr<IDBDatabaseCallbacks>, const Vector<int64_t>& objectStoreIds, unsigned short mode);
virtual void close(PassRefPtr<IDBDatabaseCallbacks>);
+ virtual void commit(int64_t transactionId) { ASSERT_NOT_REACHED(); }
+ virtual void abort(int64_t transactionId) { ASSERT_NOT_REACHED(); }
+
PassRefPtr<IDBObjectStoreBackendImpl> objectStore(int64_t id);
IDBTransactionCoordinator* transactionCoordinator() const { return m_transactionCoordinator.get(); }
void transactionStarted(PassRefPtr<IDBTransactionBackendImpl>);
virtual PassRefPtr<IDBObjectStoreBackendInterface> createObjectStore(int64_t, const String& name, const IDBKeyPath&, bool autoIncrement, IDBTransactionBackendInterface*, ExceptionCode&) = 0;
virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&) = 0;
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t transactionId, const Vector<int64_t>& objectStoreIds, unsigned short mode) = 0;
+ virtual void createTransaction(int64_t transactionId, PassRefPtr<IDBDatabaseCallbacks>, const Vector<int64_t>& objectStoreIds, unsigned short mode) = 0;
virtual void close(PassRefPtr<IDBDatabaseCallbacks>) = 0;
+
+ // Transaction-specific operations.
+ virtual void commit(int64_t transactionId) = 0;
+ virtual void abort(int64_t transactionId) = 0;
};
} // namespace WebCore
virtual void onForcedClose() = 0;
virtual void onVersionChange(const String& version) = 0;
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) = 0;
+
+ virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError>) = 0;
+ virtual void onComplete(int64_t transactionId) = 0;
};
} // namespace WebCore
m_database = database;
}
+void IDBDatabaseCallbacksImpl::onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> error)
+{
+ if (m_database)
+ m_database->onAbort(transactionId, error);
+}
+
+void IDBDatabaseCallbacksImpl::onComplete(int64_t transactionId)
+{
+ if (m_database)
+ m_database->onComplete(transactionId);
+}
+
} // namespace WebCore
#endif
virtual void onVersionChange(const String& version);
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion);
+ virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError>);
+ virtual void onComplete(int64_t transactionId);
+
void connect(IDBDatabase*);
private:
return 0;
RefPtr<IDBDatabaseCallbacksImpl> databaseCallbacks = IDBDatabaseCallbacksImpl::create();
- RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, IDBAny::createNull(), databaseCallbacks, version);
+ int64 transactionId = IDBDatabase::nextTransactionId();
+ RefPtr<IDBOpenDBRequest> request = IDBOpenDBRequest::create(context, IDBAny::createNull(), databaseCallbacks, transactionId, version);
+ // FIXME: pass the transactionId in here in https://bugs.webkit.org/show_bug.cgi?id=103922
m_backend->open(name, version, request, databaseCallbacks, context->securityOrigin(), context, getIndexedDBDatabasePath(context));
return request;
}
return 0;
}
-void IDBFactoryBackendImpl::open(const String& name, int64_t version, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, PassRefPtr<SecurityOrigin> prpSecurityOrigin, ScriptExecutionContext*, const String& dataDirectory)
+void IDBFactoryBackendImpl::open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, PassRefPtr<SecurityOrigin> prpSecurityOrigin, ScriptExecutionContext*, const String& dataDirectory)
{
RefPtr<SecurityOrigin> securityOrigin = prpSecurityOrigin;
const String uniqueIdentifier = computeUniqueIdentifier(name, securityOrigin.get());
#ifndef IDBFactoryBackendImpl_h
#define IDBFactoryBackendImpl_h
+#include "IDBCallbacks.h"
+#include "IDBDatabaseCallbacks.h"
#include "IDBFactoryBackendInterface.h"
#include "SecurityOrigin.h"
#include <wtf/HashMap.h>
virtual void removeIDBBackingStore(const String& fileIdentifier);
virtual void getDatabaseNames(PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
- virtual void open(const String& name, int64_t version, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
+ virtual void open(const String& name, int64_t version, PassRefPtr<IDBCallbacks> callbacks, PassRefPtr<IDBDatabaseCallbacks> databaseCallbacks, PassRefPtr<SecurityOrigin> securityOrigin, ScriptExecutionContext* context, const String& dataDir)
+ {
+ return open(name, version, 0, callbacks, databaseCallbacks, securityOrigin, context, dataDir);
+ }
+ virtual void open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
+
virtual void deleteDatabase(const String& name, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir);
protected:
virtual ~IDBFactoryBackendInterface() { }
virtual void getDatabaseNames(PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir) = 0;
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual void open(const String& name, int64_t version, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir) = 0;
+ virtual void open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks>, PassRefPtr<IDBDatabaseCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir) = 0;
virtual void deleteDatabase(const String& name, PassRefPtr<IDBCallbacks>, PassRefPtr<SecurityOrigin>, ScriptExecutionContext*, const String& dataDir) = 0;
};
namespace WebCore {
-PassRefPtr<IDBOpenDBRequest> IDBOpenDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl> callbacks, int64_t version)
+PassRefPtr<IDBOpenDBRequest> IDBOpenDBRequest::create(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl> callbacks, int64_t transactionId, int64_t version)
{
- RefPtr<IDBOpenDBRequest> request(adoptRef(new IDBOpenDBRequest(context, source, callbacks, version)));
+ RefPtr<IDBOpenDBRequest> request(adoptRef(new IDBOpenDBRequest(context, source, callbacks, transactionId, version)));
request->suspendIfNeeded();
return request.release();
}
-IDBOpenDBRequest::IDBOpenDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl> callbacks, int64_t version)
+IDBOpenDBRequest::IDBOpenDBRequest(ScriptExecutionContext* context, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl> callbacks, int64_t transactionId, int64_t version)
: IDBRequest(context, source, IDBTransactionBackendInterface::NormalTask, 0)
, m_databaseCallbacks(callbacks)
+ , m_transactionId(transactionId)
, m_version(version)
{
ASSERT(!m_result);
}
metadata.intVersion = oldVersion;
- int64_t transactionId = IDBDatabase::nextTransactionId();
- RefPtr<IDBTransaction> frontend = IDBTransaction::create(scriptExecutionContext(), transactionId, transactionBackend, idbDatabase.get(), this, metadata);
+ RefPtr<IDBTransaction> frontend = IDBTransaction::create(scriptExecutionContext(), m_transactionId, transactionBackend, idbDatabase.get(), this, metadata);
transactionBackend->setCallbacks(frontend.get());
m_transaction = frontend;
m_result = IDBAny::create(idbDatabase.release());
class IDBOpenDBRequest : public IDBRequest {
public:
- static PassRefPtr<IDBOpenDBRequest> create(ScriptExecutionContext*, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl>, int64_t version);
+ static PassRefPtr<IDBOpenDBRequest> create(ScriptExecutionContext*, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl>, int64_t transactionId, int64_t version);
virtual ~IDBOpenDBRequest();
using IDBRequest::onSuccess;
virtual bool shouldEnqueueEvent() const OVERRIDE;
private:
- IDBOpenDBRequest(ScriptExecutionContext*, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl>, int64_t version);
+ IDBOpenDBRequest(ScriptExecutionContext*, PassRefPtr<IDBAny> source, PassRefPtr<IDBDatabaseCallbacksImpl>, int64_t transactionId, int64_t version);
RefPtr<IDBDatabaseCallbacksImpl> m_databaseCallbacks;
+ const int64_t m_transactionId;
int64_t m_version;
};
typedef int ExceptionCode;
-// This class is shared by IDBTransaction (async) and IDBTransactionSync (sync).
// This is implemented by IDBTransactionBackendImpl and optionally others (in order to proxy
// calls across process barriers). All calls to these classes should be non-blocking and
// trigger work on a background thread if necessary.
#if ENABLE(INDEXED_DATABASE)
-#include "IDBTransactionBackendInterface.h"
#include <wtf/HashMap.h>
#include <wtf/ListHashSet.h>
#include <wtf/RefPtr.h>
+2012-12-05 Alec Flett <alecflett@chromium.org>
+
+ IndexedDB: Stub out transaction-backend methods
+ https://bugs.webkit.org/show_bug.cgi?id=103921
+
+ Reviewed by Dimitri Glazkov.
+
+ Add new signatures for refactoring, to allow
+ transaction_ids to make is through the open/onUpgradeNeeded
+ loop.
+
+ * public/WebIDBCallbacks.h:
+ (WebKit::WebIDBCallbacks::onUpgradeNeeded):
+ * public/WebIDBDatabase.h:
+ (WebKit::WebIDBDatabase::createTransaction):
+ (WebKit::WebIDBDatabase::abort):
+ (WebKit::WebIDBDatabase::commit):
+ (WebIDBDatabase):
+ * public/WebIDBDatabaseCallbacks.h:
+ (WebIDBDatabaseCallbacks):
+ (WebKit::WebIDBDatabaseCallbacks::onAbort):
+ (WebKit::WebIDBDatabaseCallbacks::onComplete):
+ * public/WebIDBFactory.h:
+ (WebKit::WebIDBFactory::open):
+ * src/IDBCallbacksProxy.cpp:
+ (WebKit::IDBCallbacksProxy::onUpgradeNeeded):
+ (WebKit):
+ * src/IDBCallbacksProxy.h:
+ (IDBCallbacksProxy):
+ * src/IDBDatabaseBackendProxy.cpp:
+ (WebKit::IDBDatabaseBackendProxy::createTransaction):
+ (WebKit):
+ (WebKit::IDBDatabaseBackendProxy::commit):
+ (WebKit::IDBDatabaseBackendProxy::abort):
+ * src/IDBDatabaseBackendProxy.h:
+ (IDBDatabaseBackendProxy):
+ * src/IDBDatabaseCallbacksProxy.cpp:
+ (WebKit::IDBDatabaseCallbacksProxy::onAbort):
+ (WebKit):
+ (WebKit::IDBDatabaseCallbacksProxy::onComplete):
+ * src/IDBDatabaseCallbacksProxy.h:
+ (IDBDatabaseCallbacksProxy):
+ * src/IDBFactoryBackendProxy.cpp:
+ (WebKit::IDBFactoryBackendProxy::open):
+ (WebKit):
+ * src/IDBFactoryBackendProxy.h:
+ (IDBFactoryBackendProxy):
+ * src/WebIDBCallbacksImpl.cpp:
+ (WebKit::WebIDBCallbacksImpl::onUpgradeNeeded):
+ (WebKit):
+ * src/WebIDBCallbacksImpl.h:
+ (WebIDBCallbacksImpl):
+ * src/WebIDBDatabaseCallbacksImpl.cpp:
+ (WebKit::WebIDBDatabaseCallbacksImpl::onAbort):
+ (WebKit):
+ (WebKit::WebIDBDatabaseCallbacksImpl::onComplete):
+ * src/WebIDBDatabaseCallbacksImpl.h:
+ (WebIDBDatabaseCallbacksImpl):
+ * src/WebIDBDatabaseImpl.cpp:
+ (WebKit::WebIDBDatabaseImpl::createTransaction):
+ (WebKit):
+ (WebKit::WebIDBDatabaseImpl::abort):
+ (WebKit::WebIDBDatabaseImpl::commit):
+ * src/WebIDBDatabaseImpl.h:
+ (WebIDBDatabaseImpl):
+ * src/WebIDBFactoryImpl.cpp:
+ (WebKit::WebIDBFactoryImpl::open):
+ (WebKit):
+ * src/WebIDBFactoryImpl.h:
+ (WebIDBFactoryImpl):
+ * tests/IDBAbortOnCorruptTest.cpp:
+ * tests/IDBDatabaseBackendTest.cpp:
+
+2012-11-27 Alec Flett <alecflett@chromium.org>
+
+ IndexedDB: remove IDBDatabaseBackendInterface::transaction()
+ https://bugs.webkit.org/show_bug.cgi?id=102733
+
+ Reviewed by Darin Fisher.
+
+ Part 3 of a refactor - just remove the proxy code for the now
+ defunct transaction method.
+
+ * public/WebIDBDatabase.h:
+ * src/IDBDatabaseBackendProxy.cpp:
+ * src/IDBDatabaseBackendProxy.h:
+ (IDBDatabaseBackendProxy):
+ * src/WebIDBDatabaseImpl.cpp:
+ * src/WebIDBDatabaseImpl.h:
+ (WebIDBDatabaseImpl):
+ * tests/IDBDatabaseBackendTest.cpp:
+
2012-12-05 Joshua Bell <jsbell@chromium.org>
IndexedDB: Replace use of ScriptExecutionContext::Task (Part 2)
return 0;
}
virtual void deleteObjectStore(long long objectStoreId, const WebIDBTransaction& transaction, WebExceptionCode& ec) { WEBKIT_ASSERT_NOT_REACHED(); }
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual WebIDBTransaction* createTransaction(long long id, const WebVector<long long>&, unsigned short mode) { WEBKIT_ASSERT_NOT_REACHED(); return 0; }
+ virtual void createTransaction(long long id, WebIDBDatabaseCallbacks* callbacks, const WebVector<long long>&, unsigned short mode) { WEBKIT_ASSERT_NOT_REACHED(); }
virtual void close() { WEBKIT_ASSERT_NOT_REACHED(); }
virtual void forceClose() { WEBKIT_ASSERT_NOT_REACHED(); }
+ virtual void abort(long long transactionId) { WEBKIT_ASSERT_NOT_REACHED(); }
+ virtual void commit(long long transactionId) { WEBKIT_ASSERT_NOT_REACHED(); }
+
protected:
WebIDBDatabase() { }
};
#ifndef WebIDBDatabaseCallbacks_h
#define WebIDBDatabaseCallbacks_h
+#include "WebIDBDatabaseError.h"
#include "platform/WebCommon.h"
#include "platform/WebString.h"
virtual void onForcedClose() { WEBKIT_ASSERT_NOT_REACHED(); }
virtual void onVersionChange(long long oldVersion, long long newVersion) { WEBKIT_ASSERT_NOT_REACHED(); }
virtual void onVersionChange(const WebString& requestedVersion) { WEBKIT_ASSERT_NOT_REACHED(); }
+
+ virtual void onAbort(long long transactionId, const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); }
+ virtual void onComplete(long long transactionId) { WEBKIT_ASSERT_NOT_REACHED(); }
};
} // namespace WebKit
virtual void getDatabaseNames(WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame* frame, const WebString& dataDir) { WEBKIT_ASSERT_NOT_REACHED(); }
// The WebKit implementation of open ignores the WebFrame* parameter.
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual void open(const WebString& name, long long version, WebIDBCallbacks* callbacks, WebIDBDatabaseCallbacks* databaseCallbacks, const WebSecurityOrigin& origin, WebFrame* frame, const WebString& dataDir) { WEBKIT_ASSERT_NOT_REACHED(); }
+ virtual void open(const WebString& name, long long version, long long transactionId, WebIDBCallbacks* callbacks, WebIDBDatabaseCallbacks* databaseCallbacks, const WebSecurityOrigin& origin, WebFrame* frame, const WebString& dataDir) { WEBKIT_ASSERT_NOT_REACHED(); }
virtual void deleteDatabase(const WebString& name, WebIDBCallbacks*, const WebSecurityOrigin&, WebFrame*, const WebString& dataDir) { WEBKIT_ASSERT_NOT_REACHED(); }
};
return IDBTransactionBackendProxy::create(transaction.release());
}
+void IDBDatabaseBackendProxy::createTransaction(int64_t id, PassRefPtr<IDBDatabaseCallbacks> callbacks, const Vector<int64_t>& objectStoreIds, unsigned short mode)
+{
+ m_webIDBDatabase->createTransaction(id, new WebIDBDatabaseCallbacksImpl(callbacks), objectStoreIds, mode);
+}
+
+void IDBDatabaseBackendProxy::commit(int64_t transactionId)
+{
+ m_webIDBDatabase->commit(transactionId);
+}
+
+void IDBDatabaseBackendProxy::abort(int64_t transactionId)
+{
+ m_webIDBDatabase->abort(transactionId);
+}
+
+
void IDBDatabaseBackendProxy::close(PassRefPtr<IDBDatabaseCallbacks>)
{
m_webIDBDatabase->close();
virtual PassRefPtr<WebCore::IDBObjectStoreBackendInterface> createObjectStore(int64_t, const String& name, const WebCore::IDBKeyPath&, bool autoIncrement, WebCore::IDBTransactionBackendInterface*, WebCore::ExceptionCode&);
virtual void deleteObjectStore(int64_t, WebCore::IDBTransactionBackendInterface*, WebCore::ExceptionCode&);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual PassRefPtr<WebCore::IDBTransactionBackendInterface> createTransaction(int64_t, const Vector<int64_t>&, unsigned short mode);
+ virtual void createTransaction(int64_t, PassRefPtr<WebCore::IDBDatabaseCallbacks>, const Vector<int64_t>&, unsigned short mode);
virtual void close(PassRefPtr<WebCore::IDBDatabaseCallbacks>);
+ virtual void commit(int64_t);
+ virtual void abort(int64_t);
+
private:
IDBDatabaseBackendProxy(PassOwnPtr<WebIDBDatabase>);
m_callbacks->onVersionChange(requestedVersion);
}
+void IDBDatabaseCallbacksProxy::onAbort(int64_t transactionId, PassRefPtr<WebCore::IDBDatabaseError> error)
+{
+ m_callbacks->onAbort(transactionId, error);
+}
+
+void IDBDatabaseCallbacksProxy::onComplete(int64_t transactionId)
+{
+ m_callbacks->onComplete(transactionId);
+}
+
} // namespace WebKit
#endif // ENABLE(INDEXED_DATABASE)
virtual void onVersionChange(const String& requestedVersion);
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion);
+ virtual void onAbort(int64_t transactionId, PassRefPtr<WebCore::IDBDatabaseError>);
+ virtual void onComplete(int64_t transactionId);
+
private:
IDBDatabaseCallbacksProxy(PassOwnPtr<WebIDBDatabaseCallbacks>);
}
+// FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
void IDBFactoryBackendProxy::open(const String& name, int64_t version, PassRefPtr<IDBCallbacks> prpCallbacks, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, PassRefPtr<SecurityOrigin> securityOrigin, ScriptExecutionContext* context, const String& dataDir)
{
RefPtr<IDBCallbacks> callbacks(prpCallbacks);
m_webIDBFactory->open(name, version, new WebIDBCallbacksImpl(callbacks), new WebIDBDatabaseCallbacksImpl(databaseCallbacks), origin, webFrame, dataDir);
}
+void IDBFactoryBackendProxy::open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<IDBCallbacks> prpCallbacks, PassRefPtr<IDBDatabaseCallbacks> prpDatabaseCallbacks, PassRefPtr<SecurityOrigin> securityOrigin, ScriptExecutionContext* context, const String& dataDir)
+{
+ RefPtr<IDBCallbacks> callbacks(prpCallbacks);
+ RefPtr<IDBDatabaseCallbacks> databaseCallbacks(prpDatabaseCallbacks);
+ WebSecurityOrigin origin(securityOrigin);
+ if (!allowIndexedDB(context, name, origin, callbacks))
+ return;
+
+ WebFrameImpl* webFrame = getWebFrame(context);
+ m_webIDBFactory->open(name, version, transactionId, new WebIDBCallbacksImpl(callbacks), new WebIDBDatabaseCallbacksImpl(databaseCallbacks), origin, webFrame, dataDir);
+}
+
void IDBFactoryBackendProxy::deleteDatabase(const String& name, PassRefPtr<IDBCallbacks> prpCallbacks, PassRefPtr<SecurityOrigin> securityOrigin, ScriptExecutionContext* context, const String& dataDir)
{
RefPtr<IDBCallbacks> callbacks(prpCallbacks);
virtual ~IDBFactoryBackendProxy();
virtual void getDatabaseNames(PassRefPtr<WebCore::IDBCallbacks>, PassRefPtr<WebCore::SecurityOrigin>, WebCore::ScriptExecutionContext*, const String& dataDir);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual void open(const String& name, int64_t version, PassRefPtr<WebCore::IDBCallbacks>, PassRefPtr<WebCore::IDBDatabaseCallbacks>, PassRefPtr<WebCore::SecurityOrigin>, WebCore::ScriptExecutionContext*, const String& dataDir);
+ virtual void open(const String& name, int64_t version, int64_t transactionId, PassRefPtr<WebCore::IDBCallbacks>, PassRefPtr<WebCore::IDBDatabaseCallbacks>, PassRefPtr<WebCore::SecurityOrigin>, WebCore::ScriptExecutionContext*, const String& dataDir);
virtual void deleteDatabase(const String& name, PassRefPtr<WebCore::IDBCallbacks>, PassRefPtr<WebCore::SecurityOrigin>, WebCore::ScriptExecutionContext*, const String& dataDir);
private:
m_callbacks->onVersionChange(version);
}
+void WebIDBDatabaseCallbacksImpl::onAbort(long long transactionId, const WebIDBDatabaseError& error)
+{
+ m_callbacks->onAbort(transactionId, error);
+}
+
+void WebIDBDatabaseCallbacksImpl::onComplete(long long transactionId)
+{
+ m_callbacks->onComplete(transactionId);
+}
+
+
} // namespace WebKit
#endif // ENABLE(INDEXED_DATABASE)
virtual void onForcedClose();
virtual void onVersionChange(long long oldVersion, long long newVersion);
virtual void onVersionChange(const WebString& version);
+ virtual void onAbort(long long transactionId, const WebIDBDatabaseError&);
+ virtual void onComplete(long long transactionId);
private:
RefPtr<WebCore::IDBDatabaseCallbacks> m_callbacks;
m_databaseBackend->deleteObjectStore(objectStoreId, transaction.getIDBTransactionBackendInterface(), ec);
}
+// FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
WebIDBTransaction* WebIDBDatabaseImpl::createTransaction(long long id, const WebVector<long long>& objectStoreIds, unsigned short mode)
{
Vector<int64_t> objectStoreIdList(objectStoreIds.size());
return new WebIDBTransactionImpl(transaction);
}
+void WebIDBDatabaseImpl::createTransaction(long long id, WebIDBDatabaseCallbacks* callbacks, const WebVector<long long>& objectStoreIds, unsigned short mode)
+{
+ Vector<int64_t> objectStoreIdList(objectStoreIds.size());
+ for (size_t i = 0; i < objectStoreIds.size(); ++i)
+ objectStoreIdList[i] = objectStoreIds[i];
+ RefPtr<IDBDatabaseCallbacksProxy> databaseCallbacksProxy = IDBDatabaseCallbacksProxy::create(adoptPtr(callbacks));
+ m_databaseBackend->createTransaction(id, databaseCallbacksProxy.get(), objectStoreIdList, mode);
+}
+
void WebIDBDatabaseImpl::close()
{
// Use the callbacks passed in to the constructor so that the backend in
callbacks->onForcedClose();
}
+void WebIDBDatabaseImpl::abort(long long transactionId)
+{
+ if (m_databaseBackend)
+ m_databaseBackend->abort(transactionId);
+}
+
+void WebIDBDatabaseImpl::commit(long long transactionId)
+{
+ if (m_databaseBackend)
+ m_databaseBackend->commit(transactionId);
+}
+
} // namespace WebKit
#endif // ENABLE(INDEXED_DATABASE)
virtual WebIDBObjectStore* createObjectStore(long long, const WebString& name, const WebIDBKeyPath&, bool autoIncrement, const WebIDBTransaction&, WebExceptionCode&);
virtual void deleteObjectStore(long long objectStoreId, const WebIDBTransaction&, WebExceptionCode&);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual WebIDBTransaction* createTransaction(long long id, const WebVector<long long>&, unsigned short mode);
+ virtual void createTransaction(long long id, WebIDBDatabaseCallbacks*, const WebVector<long long>&, unsigned short mode);
virtual void forceClose();
virtual void close();
+ virtual void abort(long long transactionId);
+ virtual void commit(long long transactionId);
private:
WTF::RefPtr<WebCore::IDBDatabaseBackendInterface> m_databaseBackend;
m_idbFactoryBackend->getDatabaseNames(IDBCallbacksProxy::create(adoptPtr(callbacks)), origin, 0, dataDir);
}
+// FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
void WebIDBFactoryImpl::open(const WebString& name, long long version, WebIDBCallbacks* callbacks, WebIDBDatabaseCallbacks* databaseCallbacks, const WebSecurityOrigin& origin, WebFrame*, const WebString& dataDir)
{
RefPtr<IDBCallbacksProxy> callbacksProxy = IDBCallbacksProxy::create(adoptPtr(callbacks));
m_idbFactoryBackend->open(name, version, callbacksProxy.get(), databaseCallbacksProxy.get(), origin, 0, dataDir);
}
+void WebIDBFactoryImpl::open(const WebString& name, long long version, long long transactionId, WebIDBCallbacks* callbacks, WebIDBDatabaseCallbacks* databaseCallbacks, const WebSecurityOrigin& origin, WebFrame*, const WebString& dataDir)
+{
+ RefPtr<IDBCallbacksProxy> callbacksProxy = IDBCallbacksProxy::create(adoptPtr(callbacks));
+ RefPtr<IDBDatabaseCallbacksProxy> databaseCallbacksProxy = IDBDatabaseCallbacksProxy::create(adoptPtr(databaseCallbacks));
+ callbacksProxy->setDatabaseCallbacks(databaseCallbacksProxy);
+ m_idbFactoryBackend->open(name, version, transactionId, callbacksProxy.get(), databaseCallbacksProxy.get(), origin, 0, dataDir);
+}
+
void WebIDBFactoryImpl::deleteDatabase(const WebString& name, WebIDBCallbacks* callbacks, const WebSecurityOrigin& origin, WebFrame*, const WebString& dataDir)
{
m_idbFactoryBackend->deleteDatabase(name, IDBCallbacksProxy::create(adoptPtr(callbacks)), origin, 0, dataDir);
virtual ~WebIDBFactoryImpl();
virtual void getDatabaseNames(WebIDBCallbacks*, const WebSecurityOrigin&, WebFrame*, const WebString& dataDir);
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual void open(const WebString& name, long long version, WebIDBCallbacks*, WebIDBDatabaseCallbacks*, const WebSecurityOrigin&, WebFrame*, const WebString& dataDir);
+ virtual void open(const WebString& name, long long version, long long transactionId, WebIDBCallbacks*, WebIDBDatabaseCallbacks*, const WebSecurityOrigin&, WebFrame*, const WebString& dataDir);
virtual void deleteDatabase(const WebString& name, WebIDBCallbacks*, const WebSecurityOrigin&, WebFrame*, const WebString& dataDir);
private:
virtual void onVersionChange(const String& version) OVERRIDE { }
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRIDE { }
virtual void onForcedClose() OVERRIDE { }
+ virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> error) OVERRIDE { }
+ virtual void onComplete(int64_t transactionId) OVERRIDE { }
private:
FakeIDBDatabaseCallbacks() { }
};
virtual void onVersionChange(const String& version) OVERRIDE { }
virtual void onVersionChange(int64_t oldVersion, int64_t newVersion) OVERRIDE { }
virtual void onForcedClose() OVERRIDE { }
+ virtual void onAbort(int64_t transactionId, PassRefPtr<IDBDatabaseError> error) OVERRIDE { }
+ virtual void onComplete(int64_t transactionId) OVERRIDE { }
private:
FakeIDBDatabaseCallbacks() { }
};
virtual PassRefPtr<IDBObjectStoreBackendInterface> createObjectStore(int64_t, const String& name, const IDBKeyPath&, bool autoIncrement, IDBTransactionBackendInterface*, ExceptionCode&) { return 0; }
virtual void deleteObjectStore(const String& name, IDBTransactionBackendInterface*, ExceptionCode&) { }
virtual void deleteObjectStore(int64_t, IDBTransactionBackendInterface*, ExceptionCode&) { }
+ // FIXME: Remove this method in https://bugs.webkit.org/show_bug.cgi?id=103923.
virtual PassRefPtr<IDBTransactionBackendInterface> createTransaction(int64_t, const Vector<int64_t>&, unsigned short mode) { return 0; }
+ void createTransaction(int64_t, PassRefPtr<IDBDatabaseCallbacks>, const Vector<int64_t>&, unsigned short mode) { }
virtual void close(PassRefPtr<IDBDatabaseCallbacks>)
{
m_webDatabase.close();
}
+ virtual void abort(int64_t transactionId) { }
+ virtual void commit(int64_t transactionId) { }
+
private:
MockIDBDatabaseBackendProxy(WebIDBDatabaseImpl& webDatabase)
: m_wasCloseCalled(false)