Commit b88b7eae authored by jsbell@chromium.org's avatar jsbell@chromium.org

[IndexedDB] Use consistent enums on both sides of IPC.

Numerous IndexedDB IPC messages sent renderer->browser are defined members that are enums from Blink (public/platform), and on receipt are static_cast to types
defined in Chromium:

blink::WebIDBCursor::Direction => indexed_db::CursorDirection
blink::WebIDBDatabase::TaskType => IndexedDBDatabase::TaskType
blink::WebIDBDatabase::PutMode => IndexedDBDatabase::PutMode
blink::WebIDBDatabase::TransactionMode => uint16 => indexed_db::TransactionMode

Nothing enforces the equality of these enums at compile time.

So the approach adopted here is to move the Blink-side enums into public/platform/WebIDBTypes.h and use it everywhere.

Patch spread across chromium content side as well as on Blink side.
Chromium side: https://codereview.chromium.org/320833002
Blink side: https://codereview.chromium.org/325683002

BUG=381848
R=dglazkov@chromium.org, jsbell@chromium.org

Review URL: https://codereview.chromium.org/325683002

Patch from Pritam Nikam <pritam.nikam@samsung.com>.

git-svn-id: svn://svn.chromium.org/blink/trunk@176435 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 38544013
......@@ -48,7 +48,7 @@ using blink::WebIDBDatabase;
namespace WebCore {
IDBCursor* IDBCursor::create(PassOwnPtr<blink::WebIDBCursor> backend, WebIDBCursor::Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
IDBCursor* IDBCursor::create(PassOwnPtr<blink::WebIDBCursor> backend, blink::WebIDBCursorDirection direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
{
return new IDBCursor(backend, direction, request, source, transaction);
}
......@@ -77,7 +77,7 @@ const AtomicString& IDBCursor::directionPrevUnique()
return prevunique;
}
IDBCursor::IDBCursor(PassOwnPtr<blink::WebIDBCursor> backend, WebIDBCursor::Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
IDBCursor::IDBCursor(PassOwnPtr<blink::WebIDBCursor> backend, blink::WebIDBCursorDirection direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
: m_backend(backend)
, m_request(request)
, m_direction(direction)
......@@ -149,7 +149,7 @@ IDBRequest* IDBCursor::update(ScriptState* scriptState, ScriptValue& value, Exce
}
}
return objectStore->put(scriptState, WebIDBDatabase::CursorUpdate, IDBAny::create(this), value, m_primaryKey, exceptionState);
return objectStore->put(scriptState, blink::WebIDBPutModeCursorUpdate, IDBAny::create(this), value, m_primaryKey, exceptionState);
}
void IDBCursor::advance(unsigned long count, ExceptionState& exceptionState)
......@@ -230,7 +230,7 @@ void IDBCursor::continueFunction(IDBKey* key, IDBKey* primaryKey, ExceptionState
if (key) {
ASSERT(m_key);
if (m_direction == WebIDBCursor::Next || m_direction == WebIDBCursor::NextNoDuplicate) {
if (m_direction == blink::WebIDBCursorDirectionNext || m_direction == blink::WebIDBCursorDirectionNextNoDuplicate) {
const bool ok = m_key->isLessThan(key)
|| (primaryKey && m_key->isEqual(key) && m_primaryKey->isLessThan(primaryKey));
if (!ok) {
......@@ -390,34 +390,34 @@ void IDBCursor::handleBlobAcks()
}
}
WebIDBCursor::Direction IDBCursor::stringToDirection(const String& directionString, ExceptionState& exceptionState)
blink::WebIDBCursorDirection IDBCursor::stringToDirection(const String& directionString, ExceptionState& exceptionState)
{
if (directionString.isNull() || directionString == IDBCursor::directionNext())
return WebIDBCursor::Next;
return blink::WebIDBCursorDirectionNext;
if (directionString == IDBCursor::directionNextUnique())
return WebIDBCursor::NextNoDuplicate;
return blink::WebIDBCursorDirectionNextNoDuplicate;
if (directionString == IDBCursor::directionPrev())
return WebIDBCursor::Prev;
return blink::WebIDBCursorDirectionPrev;
if (directionString == IDBCursor::directionPrevUnique())
return WebIDBCursor::PrevNoDuplicate;
return blink::WebIDBCursorDirectionPrevNoDuplicate;
exceptionState.throwTypeError("The direction provided ('" + directionString + "') is not one of 'next', 'nextunique', 'prev', or 'prevunique'.");
return WebIDBCursor::Next;
return blink::WebIDBCursorDirectionNext;
}
const AtomicString& IDBCursor::directionToString(unsigned short direction)
{
switch (direction) {
case WebIDBCursor::Next:
case blink::WebIDBCursorDirectionNext:
return IDBCursor::directionNext();
case WebIDBCursor::NextNoDuplicate:
case blink::WebIDBCursorDirectionNextNoDuplicate:
return IDBCursor::directionNextUnique();
case WebIDBCursor::Prev:
case blink::WebIDBCursorDirectionPrev:
return IDBCursor::directionPrev();
case WebIDBCursor::PrevNoDuplicate:
case blink::WebIDBCursorDirectionPrevNoDuplicate:
return IDBCursor::directionPrevUnique();
default:
......
......@@ -32,6 +32,7 @@
#include "modules/indexeddb/IDBRequest.h"
#include "modules/indexeddb/IndexedDB.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefPtr.h"
......@@ -56,10 +57,10 @@ public:
static const AtomicString& directionPrev();
static const AtomicString& directionPrevUnique();
static blink::WebIDBCursor::Direction stringToDirection(const String& modeString, ExceptionState&);
static blink::WebIDBCursorDirection stringToDirection(const String& modeString, ExceptionState&);
static const AtomicString& directionToString(unsigned short mode);
static IDBCursor* create(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursor::Direction, IDBRequest*, IDBAny* source, IDBTransaction*);
static IDBCursor* create(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursorDirection, IDBRequest*, IDBAny* source, IDBTransaction*);
virtual ~IDBCursor();
void trace(Visitor*);
void contextWillBeDestroyed() { m_backend.clear(); }
......@@ -92,7 +93,7 @@ public:
virtual bool isCursorWithValue() const { return false; }
protected:
IDBCursor(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursor::Direction, IDBRequest*, IDBAny* source, IDBTransaction*);
IDBCursor(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursorDirection, IDBRequest*, IDBAny* source, IDBTransaction*);
private:
IDBObjectStore* effectiveObjectStore() const;
......@@ -100,7 +101,7 @@ private:
OwnPtr<blink::WebIDBCursor> m_backend;
Member<IDBRequest> m_request;
const blink::WebIDBCursor::Direction m_direction;
const blink::WebIDBCursorDirection m_direction;
Member<IDBAny> m_source;
Member<IDBTransaction> m_transaction;
bool m_gotValue;
......
......@@ -32,12 +32,12 @@ using blink::WebIDBCursor;
namespace WebCore {
IDBCursorWithValue* IDBCursorWithValue::create(PassOwnPtr<blink::WebIDBCursor> backend, WebIDBCursor::Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
IDBCursorWithValue* IDBCursorWithValue::create(PassOwnPtr<blink::WebIDBCursor> backend, blink::WebIDBCursorDirection direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
{
return new IDBCursorWithValue(backend, direction, request, source, transaction);
}
IDBCursorWithValue::IDBCursorWithValue(PassOwnPtr<blink::WebIDBCursor> backend, WebIDBCursor::Direction direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
IDBCursorWithValue::IDBCursorWithValue(PassOwnPtr<blink::WebIDBCursor> backend, blink::WebIDBCursorDirection direction, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
: IDBCursor(backend, direction, request, source, transaction)
{
ScriptWrappable::init(this);
......
......@@ -29,6 +29,7 @@
#include "modules/indexeddb/IDBCursor.h"
#include "modules/indexeddb/IndexedDB.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/PassOwnPtr.h"
namespace WebCore {
......@@ -39,7 +40,7 @@ class IDBTransaction;
class IDBCursorWithValue FINAL : public IDBCursor {
public:
static IDBCursorWithValue* create(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursor::Direction, IDBRequest*, IDBAny* source, IDBTransaction*);
static IDBCursorWithValue* create(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursorDirection, IDBRequest*, IDBAny* source, IDBTransaction*);
virtual ~IDBCursorWithValue();
// The value attribute defined in the IDL is simply implemented in IDBCursor (but not exposed via
......@@ -49,7 +50,7 @@ public:
virtual bool isCursorWithValue() const OVERRIDE { return true; }
private:
IDBCursorWithValue(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursor::Direction, IDBRequest*, IDBAny* source, IDBTransaction*);
IDBCursorWithValue(PassOwnPtr<blink::WebIDBCursor>, blink::WebIDBCursorDirection, IDBRequest*, IDBAny* source, IDBTransaction*);
};
DEFINE_TYPE_CASTS(IDBCursorWithValue, IDBCursor, cursor, cursor->isCursorWithValue(), cursor.isCursorWithValue());
......
......@@ -44,6 +44,7 @@
#include "modules/indexeddb/WebIDBDatabaseCallbacksImpl.h"
#include "public/platform/Platform.h"
#include "public/platform/WebIDBKeyPath.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/Atomics.h"
#include <limits>
......@@ -304,7 +305,7 @@ IDBTransaction* IDBDatabase::transaction(ExecutionContext* context, const Vector
return 0;
}
blink::WebIDBDatabase::TransactionMode mode = IDBTransaction::stringToMode(modeString, exceptionState);
blink::WebIDBTransactionMode mode = IDBTransaction::stringToMode(modeString, exceptionState);
if (exceptionState.hadException())
return 0;
......
......@@ -86,7 +86,7 @@ IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, const ScriptValue& ra
exceptionState.throwDOMException(TransactionInactiveError, IDBDatabase::transactionInactiveErrorMessage);
return 0;
}
WebIDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, exceptionState);
blink::WebIDBCursorDirection direction = IDBCursor::stringToDirection(directionString, exceptionState);
if (exceptionState.hadException())
return 0;
......@@ -102,11 +102,11 @@ IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, const ScriptValue& ra
return openCursor(scriptState, keyRange, direction);
}
IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, IDBKeyRange* keyRange, WebIDBCursor::Direction direction)
IDBRequest* IDBIndex::openCursor(ScriptState* scriptState, IDBKeyRange* keyRange, blink::WebIDBCursorDirection direction)
{
IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), m_transaction.get());
request->setCursorDetails(IndexedDB::CursorKeyAndValue, direction);
backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), m_metadata.id, keyRange, direction, false, WebIDBDatabase::NormalTask, WebIDBCallbacksImpl::create(request).leakPtr());
backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), m_metadata.id, keyRange, direction, false, blink::WebIDBTaskTypeNormal, WebIDBCallbacksImpl::create(request).leakPtr());
return request;
}
......@@ -155,7 +155,7 @@ IDBRequest* IDBIndex::openKeyCursor(ScriptState* scriptState, const ScriptValue&
exceptionState.throwDOMException(TransactionInactiveError, IDBDatabase::transactionInactiveErrorMessage);
return 0;
}
WebIDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, exceptionState);
blink::WebIDBCursorDirection direction = IDBCursor::stringToDirection(directionString, exceptionState);
if (exceptionState.hadException())
return 0;
......@@ -169,7 +169,7 @@ IDBRequest* IDBIndex::openKeyCursor(ScriptState* scriptState, const ScriptValue&
IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), m_transaction.get());
request->setCursorDetails(IndexedDB::CursorKeyOnly, direction);
backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), m_metadata.id, keyRange, direction, true, WebIDBDatabase::NormalTask, WebIDBCallbacksImpl::create(request).leakPtr());
backendDB()->openCursor(m_transaction->id(), m_objectStore->id(), m_metadata.id, keyRange, direction, true, blink::WebIDBTaskTypeNormal, WebIDBCallbacksImpl::create(request).leakPtr());
return request;
}
......
......@@ -34,6 +34,7 @@
#include "modules/indexeddb/IDBRequest.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBDatabase.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/Forward.h"
#include "wtf/text/WTFString.h"
......@@ -68,7 +69,7 @@ public:
bool isDeleted() const;
// Used internally and by InspectorIndexedDBAgent:
IDBRequest* openCursor(ScriptState*, IDBKeyRange*, blink::WebIDBCursor::Direction);
IDBRequest* openCursor(ScriptState*, IDBKeyRange*, blink::WebIDBCursorDirection);
blink::WebIDBDatabase* backendDB() const;
......
......@@ -143,22 +143,22 @@ static void generateIndexKeysForValue(v8::Isolate* isolate, const IDBIndexMetada
IDBRequest* IDBObjectStore::add(ScriptState* scriptState, ScriptValue& value, const ScriptValue& key, ExceptionState& exceptionState)
{
IDB_TRACE("IDBObjectStore::add");
return put(scriptState, WebIDBDatabase::AddOnly, IDBAny::create(this), value, key, exceptionState);
return put(scriptState, blink::WebIDBPutModeAddOnly, IDBAny::create(this), value, key, exceptionState);
}
IDBRequest* IDBObjectStore::put(ScriptState* scriptState, ScriptValue& value, const ScriptValue& key, ExceptionState& exceptionState)
{
IDB_TRACE("IDBObjectStore::put");
return put(scriptState, WebIDBDatabase::AddOrUpdate, IDBAny::create(this), value, key, exceptionState);
return put(scriptState, blink::WebIDBPutModeAddOrUpdate, IDBAny::create(this), value, key, exceptionState);
}
IDBRequest* IDBObjectStore::put(ScriptState* scriptState, WebIDBDatabase::PutMode putMode, IDBAny* source, ScriptValue& value, const ScriptValue& keyValue, ExceptionState& exceptionState)
IDBRequest* IDBObjectStore::put(ScriptState* scriptState, blink::WebIDBPutMode putMode, IDBAny* source, ScriptValue& value, const ScriptValue& keyValue, ExceptionState& exceptionState)
{
IDBKey* key = keyValue.isUndefined() ? nullptr : scriptValueToIDBKey(scriptState->isolate(), keyValue);
return put(scriptState, putMode, source, value, key, exceptionState);
}
IDBRequest* IDBObjectStore::put(ScriptState* scriptState, WebIDBDatabase::PutMode putMode, IDBAny* source, ScriptValue& value, IDBKey* key, ExceptionState& exceptionState)
IDBRequest* IDBObjectStore::put(ScriptState* scriptState, blink::WebIDBPutMode putMode, IDBAny* source, ScriptValue& value, IDBKey* key, ExceptionState& exceptionState)
{
if (isDeleted()) {
exceptionState.throwDOMException(InvalidStateError, IDBDatabase::objectStoreDeletedErrorMessage);
......@@ -186,7 +186,7 @@ IDBRequest* IDBObjectStore::put(ScriptState* scriptState, WebIDBDatabase::PutMod
const bool usesInLineKeys = !keyPath.isNull();
const bool hasKeyGenerator = autoIncrement();
if (putMode != WebIDBDatabase::CursorUpdate && usesInLineKeys && key) {
if (putMode != blink::WebIDBPutModeCursorUpdate && usesInLineKeys && key) {
exceptionState.throwDOMException(DataError, "The object store uses in-line keys and the key parameter was provided.");
return 0;
}
......@@ -237,7 +237,7 @@ IDBRequest* IDBObjectStore::put(ScriptState* scriptState, WebIDBDatabase::PutMod
serializedValue->toWireBytes(wireBytes);
RefPtr<SharedBuffer> valueBuffer = SharedBuffer::adoptVector(wireBytes);
backendDB()->put(m_transaction->id(), id(), blink::WebData(valueBuffer), blobInfo, key, static_cast<WebIDBDatabase::PutMode>(putMode), WebIDBCallbacksImpl::create(request).leakPtr(), indexIds, indexKeys);
backendDB()->put(m_transaction->id(), id(), blink::WebData(valueBuffer), blobInfo, key, static_cast<blink::WebIDBPutMode>(putMode), WebIDBCallbacksImpl::create(request).leakPtr(), indexIds, indexKeys);
return request;
}
......@@ -450,7 +450,7 @@ IDBIndex* IDBObjectStore::createIndex(ScriptState* scriptState, const String& na
if (exceptionState.hadException())
return 0;
IDBRequest* indexRequest = openCursor(scriptState, static_cast<IDBKeyRange*>(0), blink::WebIDBCursor::Next, WebIDBDatabase::PreemptiveTask);
IDBRequest* indexRequest = openCursor(scriptState, static_cast<IDBKeyRange*>(0), blink::WebIDBCursorDirectionNext, blink::WebIDBTaskTypePreemptive);
indexRequest->preventPropagation();
// This is kept alive by being the success handler of the request, which is in turn kept alive by the owning transaction.
......@@ -552,7 +552,7 @@ IDBRequest* IDBObjectStore::openCursor(ScriptState* scriptState, const ScriptVal
return 0;
}
WebIDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, exceptionState);
blink::WebIDBCursorDirection direction = IDBCursor::stringToDirection(directionString, exceptionState);
if (exceptionState.hadException())
return 0;
......@@ -565,10 +565,10 @@ IDBRequest* IDBObjectStore::openCursor(ScriptState* scriptState, const ScriptVal
return 0;
}
return openCursor(scriptState, keyRange, direction, WebIDBDatabase::NormalTask);
return openCursor(scriptState, keyRange, direction, blink::WebIDBTaskTypeNormal);
}
IDBRequest* IDBObjectStore::openCursor(ScriptState* scriptState, IDBKeyRange* range, WebIDBCursor::Direction direction, WebIDBDatabase::TaskType taskType)
IDBRequest* IDBObjectStore::openCursor(ScriptState* scriptState, IDBKeyRange* range, blink::WebIDBCursorDirection direction, blink::WebIDBTaskType taskType)
{
IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), m_transaction.get());
request->setCursorDetails(IndexedDB::CursorKeyAndValue, direction);
......@@ -593,7 +593,7 @@ IDBRequest* IDBObjectStore::openKeyCursor(ScriptState* scriptState, const Script
return 0;
}
WebIDBCursor::Direction direction = IDBCursor::stringToDirection(directionString, exceptionState);
blink::WebIDBCursorDirection direction = IDBCursor::stringToDirection(directionString, exceptionState);
if (exceptionState.hadException())
return 0;
......@@ -609,7 +609,7 @@ IDBRequest* IDBObjectStore::openKeyCursor(ScriptState* scriptState, const Script
IDBRequest* request = IDBRequest::create(scriptState, IDBAny::create(this), m_transaction.get());
request->setCursorDetails(IndexedDB::CursorKeyOnly, direction);
backendDB()->openCursor(m_transaction->id(), id(), IDBIndexMetadata::InvalidId, keyRange, direction, true, WebIDBDatabase::NormalTask, WebIDBCallbacksImpl::create(request).leakPtr());
backendDB()->openCursor(m_transaction->id(), id(), IDBIndexMetadata::InvalidId, keyRange, direction, true, blink::WebIDBTaskTypeNormal, WebIDBCallbacksImpl::create(request).leakPtr());
return request;
}
......
......@@ -38,6 +38,7 @@
#include "modules/indexeddb/IDBTransaction.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBDatabase.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/PassRefPtr.h"
#include "wtf/RefPtr.h"
#include "wtf/text/WTFString.h"
......@@ -87,10 +88,10 @@ public:
IDBRequest* count(ScriptState*, const ScriptValue& range, ExceptionState&);
// Used by IDBCursor::update():
IDBRequest* put(ScriptState*, blink::WebIDBDatabase::PutMode, IDBAny* source, ScriptValue&, IDBKey*, ExceptionState&);
IDBRequest* put(ScriptState*, blink::WebIDBPutMode, IDBAny* source, ScriptValue&, IDBKey*, ExceptionState&);
// Used internally and by InspectorIndexedDBAgent:
IDBRequest* openCursor(ScriptState*, IDBKeyRange*, blink::WebIDBCursor::Direction, blink::WebIDBDatabase::TaskType = blink::WebIDBDatabase::NormalTask);
IDBRequest* openCursor(ScriptState*, IDBKeyRange*, blink::WebIDBCursorDirection, blink::WebIDBTaskType = blink::WebIDBTaskTypeNormal);
void markDeleted() { m_deleted = true; }
bool isDeleted() const { return m_deleted; }
......@@ -108,7 +109,7 @@ private:
IDBIndex* createIndex(ScriptState*, const String& name, const IDBKeyPath&, const Dictionary&, ExceptionState&);
IDBIndex* createIndex(ScriptState*, const String& name, const IDBKeyPath&, bool unique, bool multiEntry, ExceptionState&);
IDBRequest* put(ScriptState*, blink::WebIDBDatabase::PutMode, IDBAny* source, ScriptValue&, const ScriptValue& key, ExceptionState&);
IDBRequest* put(ScriptState*, blink::WebIDBPutMode, IDBAny* source, ScriptValue&, const ScriptValue& key, ExceptionState&);
int64_t findIndexId(const String& name) const;
bool containsIndex(const String& name) const
......
......@@ -65,7 +65,7 @@ IDBRequest::IDBRequest(ScriptState* scriptState, IDBAny* source, IDBTransaction*
, m_source(source)
, m_hasPendingActivity(true)
, m_cursorType(IndexedDB::CursorKeyAndValue)
, m_cursorDirection(blink::WebIDBCursor::Next)
, m_cursorDirection(blink::WebIDBCursorDirectionNext)
, m_pendingCursor(nullptr)
, m_didFireUpgradeNeededEvent(false)
, m_preventPropagation(false)
......@@ -160,7 +160,7 @@ void IDBRequest::abort()
m_requestAborted = true;
}
void IDBRequest::setCursorDetails(IndexedDB::CursorType cursorType, WebIDBCursor::Direction direction)
void IDBRequest::setCursorDetails(IndexedDB::CursorType cursorType, blink::WebIDBCursorDirection direction)
{
ASSERT(m_readyState == PENDING);
ASSERT(!m_pendingCursor);
......
......@@ -44,6 +44,7 @@
#include "platform/heap/Handle.h"
#include "public/platform/WebBlobInfo.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBTypes.h"
namespace WebCore {
......@@ -88,7 +89,7 @@ public:
DEFINE_ATTRIBUTE_EVENT_LISTENER(success);
DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
void setCursorDetails(IndexedDB::CursorType, blink::WebIDBCursor::Direction);
void setCursorDetails(IndexedDB::CursorType, blink::WebIDBCursorDirection);
void setPendingCursor(IDBCursor*);
void abort();
......@@ -153,7 +154,7 @@ private:
// Only used if the result type will be a cursor.
IndexedDB::CursorType m_cursorType;
blink::WebIDBCursor::Direction m_cursorDirection;
blink::WebIDBCursorDirection m_cursorDirection;
// When a cursor is continued/advanced, m_result is cleared and m_pendingCursor holds it.
Member<IDBCursor> m_pendingCursor;
// New state is not applied to the cursor object until the event is dispatched.
......
......@@ -43,7 +43,7 @@ using blink::WebIDBDatabase;
namespace WebCore {
IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, WebIDBDatabase::TransactionMode mode, IDBDatabase* db)
IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, blink::WebIDBTransactionMode mode, IDBDatabase* db)
{
IDBOpenDBRequest* openDBRequest = 0;
IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(context, id, objectStoreNames, mode, db, openDBRequest, IDBDatabaseMetadata()));
......@@ -53,7 +53,7 @@ IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, co
IDBTransaction* IDBTransaction::create(ExecutionContext* context, int64_t id, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata)
{
IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(context, id, Vector<String>(), WebIDBDatabase::TransactionVersionChange, db, openDBRequest, previousMetadata));
IDBTransaction* transaction = adoptRefCountedGarbageCollectedWillBeNoop(new IDBTransaction(context, id, Vector<String>(), blink::WebIDBTransactionModeVersionChange, db, openDBRequest, previousMetadata));
transaction->suspendIfNeeded();
return transaction;
}
......@@ -76,7 +76,7 @@ const AtomicString& IDBTransaction::modeVersionChange()
return versionchange;
}
IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, WebIDBDatabase::TransactionMode mode, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata)
IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vector<String>& objectStoreNames, blink::WebIDBTransactionMode mode, IDBDatabase* db, IDBOpenDBRequest* openDBRequest, const IDBDatabaseMetadata& previousMetadata)
: ActiveDOMObject(context)
, m_id(id)
, m_database(db)
......@@ -89,7 +89,7 @@ IDBTransaction::IDBTransaction(ExecutionContext* context, int64_t id, const Vect
, m_previousMetadata(previousMetadata)
{
ScriptWrappable::init(this);
if (mode == WebIDBDatabase::TransactionVersionChange) {
if (mode == blink::WebIDBTransactionModeVersionChange) {
// Not active until the callback.
m_state = Inactive;
}
......@@ -299,30 +299,30 @@ bool IDBTransaction::hasPendingActivity() const
return m_hasPendingActivity && !m_contextStopped;
}
WebIDBDatabase::TransactionMode IDBTransaction::stringToMode(const String& modeString, ExceptionState& exceptionState)
blink::WebIDBTransactionMode IDBTransaction::stringToMode(const String& modeString, ExceptionState& exceptionState)
{
if (modeString.isNull()
|| modeString == IDBTransaction::modeReadOnly())
return WebIDBDatabase::TransactionReadOnly;
return blink::WebIDBTransactionModeReadOnly;
if (modeString == IDBTransaction::modeReadWrite())
return WebIDBDatabase::TransactionReadWrite;
return blink::WebIDBTransactionModeReadWrite;
exceptionState.throwTypeError("The mode provided ('" + modeString + "') is not one of 'readonly' or 'readwrite'.");
return WebIDBDatabase::TransactionReadOnly;
return blink::WebIDBTransactionModeReadOnly;
}
const AtomicString& IDBTransaction::modeToString(WebIDBDatabase::TransactionMode mode)
const AtomicString& IDBTransaction::modeToString(blink::WebIDBTransactionMode mode)
{
switch (mode) {
case WebIDBDatabase::TransactionReadOnly:
case blink::WebIDBTransactionModeReadOnly:
return IDBTransaction::modeReadOnly();
break;
case WebIDBDatabase::TransactionReadWrite:
case blink::WebIDBTransactionModeReadWrite:
return IDBTransaction::modeReadWrite();
break;
case WebIDBDatabase::TransactionVersionChange:
case blink::WebIDBTransactionModeVersionChange:
return IDBTransaction::modeVersionChange();
break;
}
......
......@@ -36,6 +36,7 @@
#include "modules/indexeddb/IndexedDB.h"
#include "platform/heap/Handle.h"
#include "public/platform/WebIDBDatabase.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/HashSet.h"
namespace WebCore {
......@@ -56,7 +57,7 @@ class IDBTransaction FINAL
DEFINE_EVENT_TARGET_REFCOUNTING_WILL_BE_REMOVED(RefCountedGarbageCollected<IDBTransaction>);
WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(IDBTransaction);
public:
static IDBTransaction* create(ExecutionContext*, int64_t, const Vector<String>& objectStoreNames, blink::WebIDBDatabase::TransactionMode, IDBDatabase*);
static IDBTransaction* create(ExecutionContext*, int64_t, const Vector<String>& objectStoreNames, blink::WebIDBTransactionMode, IDBDatabase*);
static IDBTransaction* create(ExecutionContext*, int64_t, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata& previousMetadata);
virtual ~IDBTransaction();
virtual void trace(Visitor*) OVERRIDE;
......@@ -65,8 +66,8 @@ public:
static const AtomicString& modeReadWrite();
static const AtomicString& modeVersionChange();
static blink::WebIDBDatabase::TransactionMode stringToMode(const String&, ExceptionState&);
static const AtomicString& modeToString(blink::WebIDBDatabase::TransactionMode);
static blink::WebIDBTransactionMode stringToMode(const String&, ExceptionState&);
static const AtomicString& modeToString(blink::WebIDBTransactionMode);
// When the connection is closed backend will be 0.
blink::WebIDBDatabase* backendDB() const;
......@@ -75,8 +76,8 @@ public:
bool isActive() const { return m_state == Active; }
bool isFinished() const { return m_state == Finished; }
bool isFinishing() const { return m_state == Finishing; }
bool isReadOnly() const { return m_mode == blink::WebIDBDatabase::TransactionReadOnly; }
bool isVersionChange() const { return m_mode == blink::WebIDBDatabase::TransactionVersionChange; }
bool isReadOnly() const { return m_mode == blink::WebIDBTransactionModeReadOnly; }
bool isVersionChange() const { return m_mode == blink::WebIDBTransactionModeVersionChange; }
// Implement the IDBTransaction IDL
const String& mode() const;
......@@ -111,7 +112,7 @@ public:
virtual void stop() OVERRIDE;
private:
IDBTransaction(ExecutionContext*, int64_t, const Vector<String>&, blink::WebIDBDatabase::TransactionMode, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&);
IDBTransaction(ExecutionContext*, int64_t, const Vector<String>&, blink::WebIDBTransactionMode, IDBDatabase*, IDBOpenDBRequest*, const IDBDatabaseMetadata&);
void enqueueEvent(PassRefPtrWillBeRawPtr<Event>);
......@@ -126,7 +127,7 @@ private:
Member<IDBDatabase> m_database;
const Vector<String> m_objectStoreNames;
Member<IDBOpenDBRequest> m_openDBRequest;
const blink::WebIDBDatabase::TransactionMode m_mode;
const blink::WebIDBTransactionMode m_mode;
State m_state;
bool m_hasPendingActivity;
bool m_contextStopped;
......
......@@ -100,7 +100,7 @@ TEST_F(IDBTransactionTest, EnsureLifetime)
const int64_t transactionId = 1234;
const Vector<String> transactionScope;
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, blink::WebIDBDatabase::TransactionReadOnly, db.get());
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, blink::WebIDBTransactionModeReadOnly, db.get());
PersistentHeapHashSet<WeakMember<IDBTransaction> > set;
set.add(transaction);
......@@ -130,7 +130,7 @@ TEST_F(IDBTransactionTest, TransactionFinish)
const int64_t transactionId = 1234;
const Vector<String> transactionScope;
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, blink::WebIDBDatabase::TransactionReadOnly, db.get());
Persistent<IDBTransaction> transaction = IDBTransaction::create(executionContext(), transactionId, transactionScope, blink::WebIDBTransactionModeReadOnly, db.get());
PersistentHeapHashSet<WeakMember<IDBTransaction> > set;
set.add(transaction);
......
......@@ -60,6 +60,7 @@
#include "platform/JSONValues.h"
#include "platform/weborigin/SecurityOrigin.h"
#include "public/platform/WebIDBCursor.h"
#include "public/platform/WebIDBTypes.h"
#include "wtf/Vector.h"
using WebCore::TypeBuilder::Array;
......@@ -510,9 +511,9 @@ public:
return;
}
idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get(), blink::WebIDBCursor::Next);
idbRequest = idbIndex->openCursor(scriptState(), m_idbKeyRange.get(), blink::WebIDBCursorDirectionNext);
} else {
idbRequest = idbObjectStore->openCursor(scriptState(), m_idbKeyRange.get(), blink::WebIDBCursor::Next);
idbRequest = idbObjectStore->openCursor(scriptState(), m_idbKeyRange.get(), blink::WebIDBCursorDirectionNext);
}
idbRequest->addEventListener(EventTypeNames::success, openCursorCallback, false);
}
......
......@@ -29,6 +29,7 @@
#include "WebCommon.h"
#include "WebIDBCallbacks.h"
#include "WebIDBKey.h"
#include "WebIDBTypes.h"
#include "WebString.h"
namespace blink {
......@@ -38,13 +39,13 @@ class WebIDBCursor {
public:
virtual ~WebIDBCursor() { }
enum Direction {
Next = 0,
NextNoDuplicate = 1,
Prev = 2,
PrevNoDuplicate = 3,
DirectionLast = PrevNoDuplicate
};
// FIXME: Remove once Chromium is updated to use the new enums.
typedef WebIDBCursorDirection Direction;
static const WebIDBCursorDirection Next = WebIDBCursorDirectionNext;
static const WebIDBCursorDirection NextNoDuplicate =WebIDBCursorDirectionNextNoDuplicate;
static const WebIDBCursorDirection Prev = WebIDBCursorDirectionPrev;
static const WebIDBCursorDirection PrevNoDuplicate =WebIDBCursorDirectionPrevNoDuplicate;
static const WebIDBCursorDirection DirectionLast =WebIDBCursorDirectionLast;
virtual void advance(unsigned long, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void continueFunction(const WebIDBKey&, const WebIDBKey& primaryKey, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
......
......@@ -30,6 +30,7 @@
#include "WebCommon.h"
#include "WebIDBCursor.h"
#include "WebIDBMetadata.h"
#include "public/platform/WebIDBTypes.h"
namespace blink {
......@@ -46,15 +47,15 @@ class WebIDBDatabase {
public:
virtual ~WebIDBDatabase() { }
enum TransactionMode {
TransactionReadOnly = 0,
TransactionReadWrite,
TransactionVersionChange,
};
// FIXME: Remove once Chromium is updated to use the new enums.
typedef WebIDBTransactionMode TransactionMode;
static const WebIDBTransactionMode TransactionReadOnly = WebIDBTransactionModeReadOnly;
static const WebIDBTransactionMode TransactionReadWrite = WebIDBTransactionModeReadWrite;
static const WebIDBTransactionMode TransactionVersionChange = WebIDBTransactionModeVersionChange;
virtual void createObjectStore(long long transactionId, long long objectStoreId, const WebString& name, const WebIDBKeyPath&, bool autoIncrement) { BLINK_ASSERT_NOT_REACHED(); }
virtual void deleteObjectStore(long long transactionId, long long objectStoreId) { BLINK_ASSERT_NOT_REACHED(); }
virtual void createTransaction(long long id, WebIDBDatabaseCallbacks*, const WebVector<long long>& scope, TransactionMode) { BLINK_ASSERT_NOT_REACHED(); }
virtual void createTransaction(long long id, WebIDBDatabaseCallbacks*, const WebVector<long long>& scope, blink::WebIDBTransactionMode) { BLINK_ASSERT_NOT_REACHED(); }
virtual void close() { BLINK_ASSERT_NOT_REACHED(); }
virtual void forceClose() { BLINK_ASSERT_NOT_REACHED(); }
......@@ -64,28 +65,28 @@ public:
virtual void createIndex(long long transactionId, long long objectStoreId, long long indexId, const WebString& name, const WebIDBKeyPath&, bool unique, bool multiEntry) { BLINK_ASSERT_NOT_REACHED(); }
virtual void deleteIndex(long long transactionId, long long objectStoreId, long long indexId) { BLINK_ASSERT_NOT_REACHED(); }
enum TaskType {
NormalTask = 0,
PreemptiveTask,
TaskTypeLast = PreemptiveTask
};
// FIXME: Remove once Chromium is updated to use the new enums.
typedef WebIDBTaskType TaskType;
static const WebIDBTaskType NormalTask = WebIDBTaskTypeNormal;
static const WebIDBTaskType PreemptiveTask = WebIDBTaskTypePreemptive;
static const WebIDBTaskType TaskTypeLast = WebIDBTaskTypeLast;
enum PutMode {
AddOrUpdate,
AddOnly,
CursorUpdate,
PutModeLast = CursorUpdate
};
// FIXME: Remove once Chromium is updated to use the new enums.
typedef WebIDBPutMode PutMode;
static const WebIDBPutMode AddOrUpdate = WebIDBPutModeAddOrUpdate;
static const WebIDBPutMode AddOnly = WebIDBPutModeAddOnly;
static const WebIDBPutMode CursorUpdate = WebIDBPutModeCursorUpdate;
static const WebIDBPutMode PutModeLast = WebIDBPutModeLast;
static const long long minimumIndexId = 30;
typedef WebVector<WebIDBKey> WebIndexKeys;
virtual void get(long long transactionId, long long objectStoreId, long long indexId, const WebIDBKeyRange&, bool keyOnly, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void put(long long transactionId, long long objectStoreId, const WebData& value, const WebVector<WebBlobInfo>&, const WebIDBKey&, PutMode, WebIDBCallbacks*, const WebVector<long long>& indexIds, const WebVector<WebIndexKeys>&) { BLINK_ASSERT_NOT_REACHED(); }
virtual void put(long long transactionId, long long objectStoreId, const WebData& value, const WebVector<WebBlobInfo>&, const WebIDBKey&, blink::WebIDBPutMode, WebIDBCallbacks*, const WebVector<long long>& indexIds, const WebVector<WebIndexKeys>&) { BLINK_ASSERT_NOT_REACHED(); }
virtual void setIndexKeys(long long transactionId, long long objectStoreId, const WebIDBKey&, const WebVector<long long>& indexIds, const WebVector<WebIndexKeys>&) { BLINK_ASSERT_NOT_REACHED(); }
virtual void setIndexesReady(long long transactionId, long long objectStoreId, const WebVector<long long>& indexIds) { BLINK_ASSERT_NOT_REACHED(); }
virtual void openCursor(long long transactionId, long long objectStoreId, long long indexId, const WebIDBKeyRange&, WebIDBCursor::Direction, bool keyOnly, TaskType, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void openCursor(long long transactionId, long long objectStoreId, long long indexId, const WebIDBKeyRange&, blink::WebIDBCursorDirection, bool keyOnly, blink::WebIDBTaskType, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void count(long long transactionId, long long objectStoreId, long long indexId, const WebIDBKeyRange&, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void deleteRange(long long transactionId, long long objectStoreId, const WebIDBKeyRange&, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
virtual void clear(long long transactionId, long long objectStoreId, WebIDBCallbacks*) { BLINK_ASSERT_NOT_REACHED(); }
......
......@@ -50,6 +50,34 @@ enum WebIDBDataLoss {
WebIDBDataLossTotal,
};
enum WebIDBCursorDirection {
WebIDBCursorDirectionNext = 0,
WebIDBCursorDirectionNextNoDuplicate = 1,
WebIDBCursorDirectionPrev = 2,
WebIDBCursorDirectionPrevNoDuplicate = 3,
WebIDBCursorDirectionLast = WebIDBCursorDirectionPrevNoDuplicate
};
enum WebIDBTaskType {
WebIDBTaskTypeNormal = 0,
WebIDBTaskTypePreemptive,
WebIDBTaskTypeLast = WebIDBTaskTypePreemptive
};
enum WebIDBPutMode {
WebIDBPutModeAddOrUpdate,
WebIDBPutModeAddOnly,
WebIDBPutModeCursorUpdate,
WebIDBPutModeLast = WebIDBPutModeCursorUpdate
};
enum WebIDBTransactionMode {
WebIDBTransactionModeReadOnly = 0,
WebIDBTransactionModeReadWrite,
WebIDBTransactionModeVersionChange,
WebIDBTransactionModeLast = WebIDBTransactionModeVersionChange
};
} // namespace blink
#endif // WebIDBTypes_h
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment