Source/WebCore/ChangeLog

 12011-09-06 David Grogan <dgrogan@chromium.org>
 2
 3 Consolidate key, primary key, value cursor messages.
 4 https://bugs.webkit.org/show_bug.cgi?id=67663
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 No new tests. (OOPS!)
 9
 10 * storage/IDBCallbacks.h:
 11 * storage/IDBCursor.cpp:
 12 (WebCore::IDBCursor::create):
 13 (WebCore::IDBCursor::IDBCursor):
 14 (WebCore::IDBCursor::key):
 15 (WebCore::IDBCursor::primaryKey):
 16 (WebCore::IDBCursor::value):
 17 * storage/IDBCursor.h:
 18 * storage/IDBCursorBackendImpl.cpp:
 19 (WebCore::IDBCursorBackendImpl::continueFunctionInternal):
 20 * storage/IDBCursorWithValue.cpp:
 21 (WebCore::IDBCursorWithValue::create):
 22 (WebCore::IDBCursorWithValue::IDBCursorWithValue):
 23 * storage/IDBCursorWithValue.h:
 24 * storage/IDBIndexBackendImpl.cpp:
 25 (WebCore::IDBIndexBackendImpl::openCursorInternal):
 26 * storage/IDBObjectStoreBackendImpl.cpp:
 27 (WebCore::IDBObjectStoreBackendImpl::openCursorInternal):
 28 * storage/IDBRequest.cpp:
 29 (WebCore::IDBRequest::onSuccess):
 30 * storage/IDBRequest.h:
 31
1322011-09-06 Raphael Kubo da Costa <kubo@profusion.mobi>
233
334 [EFL] Do not allocate memory for extremely large surfaces.

Source/WebCore/storage/IDBCallbacks.h

@@public:
4848 virtual ~IDBCallbacks() { }
4949
5050 virtual void onError(PassRefPtr<IDBDatabaseError>) = 0;
51  virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>) = 0;
 51 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>) = 0;
5252 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>) = 0;
5353 virtual void onSuccess(PassRefPtr<IDBKey>) = 0;
5454 virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>) = 0;

Source/WebCore/storage/IDBCursor.cpp

3939
4040namespace WebCore {
4141
42 PassRefPtr<IDBCursor> IDBCursor::create(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
 42PassRefPtr<IDBCursor> IDBCursor::create(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
4343{
44  return adoptRef(new IDBCursor(backend, request, source, transaction));
 44 return adoptRef(new IDBCursor(backend, request, source, transaction, key, primaryKey, value));
4545}
4646
47 IDBCursor::IDBCursor(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
 47IDBCursor::IDBCursor(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
4848 : m_backend(backend)
4949 , m_request(request)
5050 , m_source(source)
5151 , m_transaction(transaction)
 52 , m_key(key)
 53 , m_primaryKey(primaryKey)
 54 , m_value(value)
5255{
5356 ASSERT(m_backend);
5457 ASSERT(m_request);

@@unsigned short IDBCursor::direction() const
6770
6871PassRefPtr<IDBKey> IDBCursor::key() const
6972{
70  return m_backend->key();
 73 return m_key;
7174}
7275
7376PassRefPtr<IDBKey> IDBCursor::primaryKey() const
7477{
75  return m_backend->primaryKey();
 78 return m_primaryKey;
7679}
7780
7881PassRefPtr<SerializedScriptValue> IDBCursor::value() const
7982{
80  return m_backend->value();
 83 return m_value;
8184}
8285
8386IDBAny* IDBCursor::source() const

Source/WebCore/storage/IDBCursor.h

3030
3131#include "ExceptionCode.h"
3232#include "IDBKey.h"
 33#include "SerializedScriptValue.h"
3334#include <wtf/PassRefPtr.h>
3435#include <wtf/RefCounted.h>
3536#include <wtf/RefPtr.h>

@@public:
5253 PREV = 2,
5354 PREV_NO_DUPLICATE = 3,
5455 };
55  static PassRefPtr<IDBCursor> create(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*);
 56 static PassRefPtr<IDBCursor> create(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*, PassRefPtr<IDBKey>, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue>);
5657 virtual ~IDBCursor();
5758
5859 // FIXME: Try to modify the code generator so this is unneeded.

@@public:
7071 PassRefPtr<IDBRequest> deleteFunction(ScriptExecutionContext*, ExceptionCode&);
7172
7273protected:
73  IDBCursor(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*);
 74 IDBCursor(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*, PassRefPtr<IDBKey>, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue>);
7475
7576private:
7677 RefPtr<IDBCursorBackendInterface> m_backend;
7778 RefPtr<IDBRequest> m_request;
7879 RefPtr<IDBAny> m_source;
7980 RefPtr<IDBTransaction> m_transaction;
 81
 82 RefPtr<IDBKey> m_key;
 83 RefPtr<IDBKey> m_primaryKey;
 84 RefPtr<SerializedScriptValue> m_value;
8085};
8186
8287} // namespace WebCore

Source/WebCore/storage/IDBCursorBackendImpl.cpp

@@void IDBCursorBackendImpl::continueFunctionInternal(ScriptExecutionContext*, Pas
109109 return;
110110 }
111111
112  callbacks->onSuccess(cursor.get());
 112 if (cursor->m_cursorType == IndexKeyCursor)
 113 callbacks->onSuccess(cursor.get(), cursor->key(), cursor->primaryKey(), SerializedScriptValue::nullValue());
 114 else
 115 callbacks->onSuccess(cursor.get(), cursor->key(), cursor->primaryKey(), cursor->value());
 116
113117}
114118
115119void IDBCursorBackendImpl::deleteFunction(PassRefPtr<IDBCallbacks> prpCallbacks, ExceptionCode& ec)

Source/WebCore/storage/IDBCursorWithValue.cpp

3333
3434namespace WebCore {
3535
36 PassRefPtr<IDBCursorWithValue> IDBCursorWithValue::create(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
 36PassRefPtr<IDBCursorWithValue> IDBCursorWithValue::create(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
3737{
38  return adoptRef(new IDBCursorWithValue(backend, request, source, transaction));
 38 return adoptRef(new IDBCursorWithValue(backend, request, source, transaction, key, primaryKey, value));
3939}
4040
41 IDBCursorWithValue::IDBCursorWithValue(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction)
42  : IDBCursor(backend, request, source, transaction)
 41IDBCursorWithValue::IDBCursorWithValue(PassRefPtr<IDBCursorBackendInterface> backend, IDBRequest* request, IDBAny* source, IDBTransaction* transaction, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
 42 : IDBCursor(backend, request, source, transaction, key, primaryKey, value)
4343{
4444}
4545

Source/WebCore/storage/IDBCursorWithValue.h

@@namespace WebCore {
3434
3535class IDBCursorWithValue : public IDBCursor {
3636public:
37  static PassRefPtr<IDBCursorWithValue> create(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*);
 37 static PassRefPtr<IDBCursorWithValue> create(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*, PassRefPtr<IDBKey>, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue>);
3838 virtual ~IDBCursorWithValue();
3939
4040 // The value attribute defined in the IDL is simply implemented in IDBCursor (but not exposed via
4141 // its IDL). This is to make the implementation more simple while matching what the spec says.
4242
4343private:
44  IDBCursorWithValue(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*);
 44 IDBCursorWithValue(PassRefPtr<IDBCursorBackendInterface>, IDBRequest*, IDBAny* source, IDBTransaction*, PassRefPtr<IDBKey>, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue>);
4545};
4646
4747} // namespace WebCore

Source/WebCore/storage/IDBIndexBackendImpl.cpp

@@void IDBIndexBackendImpl::openCursorInternal(ScriptExecutionContext*, PassRefPtr
9797 ASSERT(objectStore && !ec);
9898
9999 RefPtr<IDBCursorBackendInterface> cursor = IDBCursorBackendImpl::create(backingStoreCursor.get(), direction, cursorType, transaction.get(), objectStore.get());
100  callbacks->onSuccess(cursor.release());
 100 if (cursorType == IDBCursorBackendInterface::IndexKeyCursor)
 101 callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), 0);
 102 else
 103 callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor->value());
101104}
102105
103106void IDBIndexBackendImpl::openCursor(PassRefPtr<IDBKeyRange> prpKeyRange, unsigned short direction, PassRefPtr<IDBCallbacks> prpCallbacks, IDBTransactionBackendInterface* transactionPtr, ExceptionCode& ec)

Source/WebCore/storage/IDBObjectStoreBackendImpl.cpp

@@void IDBObjectStoreBackendImpl::openCursorInternal(ScriptExecutionContext*, Pass
504504 }
505505
506506 RefPtr<IDBCursorBackendInterface> cursor = IDBCursorBackendImpl::create(backingStoreCursor.release(), direction, IDBCursorBackendInterface::ObjectStoreCursor, transaction.get(), objectStore.get());
507  callbacks->onSuccess(cursor.release());
 507 callbacks->onSuccess(cursor, cursor->key(), cursor->primaryKey(), cursor->value());
508508}
509509
510510void IDBObjectStoreBackendImpl::loadIndexes()

Source/WebCore/storage/IDBRequest.cpp

@@static PassRefPtr<Event> createSuccessEvent()
186186 return Event::create(eventNames().successEvent, false, false);
187187}
188188
189 void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend)
 189void IDBRequest::onSuccess(PassRefPtr<IDBCursorBackendInterface> backend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
190190{
191191 ASSERT(!m_errorCode && m_errorMessage.isNull() && !m_result);
192192 ASSERT(m_cursorType != IDBCursorBackendInterface::InvalidCursorType);
193193 if (m_cursorType == IDBCursorBackendInterface::IndexKeyCursor)
194  m_result = IDBAny::create(IDBCursor::create(backend, this, m_source.get(), m_transaction.get()));
 194 m_result = IDBAny::create(IDBCursor::create(backend, this, m_source.get(), m_transaction.get(), key, primaryKey, 0));
195195 else
196  m_result = IDBAny::create(IDBCursorWithValue::create(backend, this, m_source.get(), m_transaction.get()));
 196 m_result = IDBAny::create(IDBCursorWithValue::create(backend, this, m_source.get(), m_transaction.get(), key, primaryKey, value));
197197 enqueueEvent(createSuccessEvent());
198198}
199199

Source/WebCore/storage/IDBRequest.h

@@public:
7575 // IDBCallbacks
7676 virtual void onError(PassRefPtr<IDBDatabaseError>);
7777 virtual void onSuccess(PassRefPtr<IDBDatabaseBackendInterface>);
78  virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>);
 78 virtual void onSuccess(PassRefPtr<IDBCursorBackendInterface>, PassRefPtr<IDBKey>, PassRefPtr<IDBKey>, PassRefPtr<SerializedScriptValue>);
7979 virtual void onSuccess(PassRefPtr<IDBKey>);
8080 virtual void onSuccess(PassRefPtr<IDBTransactionBackendInterface>);
8181 virtual void onSuccess(PassRefPtr<SerializedScriptValue>);

Source/WebKit/chromium/ChangeLog

 12011-09-06 David Grogan <dgrogan@chromium.org>
 2
 3 Consolidate key, primary key, value cursor messages.
 4 https://bugs.webkit.org/show_bug.cgi?id=67663
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * public/WebIDBCallbacks.h:
 9 (WebKit::WebIDBCallbacks::onSuccess):
 10 * src/IDBCallbacksProxy.cpp:
 11 (WebKit::IDBCallbacksProxy::onSuccess):
 12 * src/IDBCallbacksProxy.h:
 13 * src/WebIDBCallbacksImpl.cpp:
 14 (WebKit::WebIDBCallbacksImpl::onSuccess):
 15 * src/WebIDBCallbacksImpl.h:
 16
1172011-09-04 Adam Barth <abarth@webkit.org>
218
319 [Chromium] Add mutliple to WebPopupMenuInfo for Android

Source/WebKit/chromium/public/WebIDBCallbacks.h

@@public:
4646 // For classes that follow the PImpl pattern, pass a const reference.
4747 // For the rest, pass ownership to the callee via a pointer.
4848 virtual void onError(const WebIDBDatabaseError&) { WEBKIT_ASSERT_NOT_REACHED(); }
49  virtual void onSuccess(WebIDBCursor*) { WEBKIT_ASSERT_NOT_REACHED(); }
 49 virtual void onSuccess(WebIDBCursor*, const WebIDBKey&, const WebIDBKey&, const WebSerializedScriptValue&) { WEBKIT_ASSERT_NOT_REACHED(); }
5050 virtual void onSuccess(WebIDBDatabase*) { WEBKIT_ASSERT_NOT_REACHED(); }
5151 virtual void onSuccess(const WebIDBKey&) { WEBKIT_ASSERT_NOT_REACHED(); }
5252 virtual void onSuccess(WebIDBTransaction*) { WEBKIT_ASSERT_NOT_REACHED(); }

Source/WebKit/chromium/src/IDBCallbacksProxy.cpp

@@void IDBCallbacksProxy::onError(PassRefPtr<IDBDatabaseError> idbDatabaseError)
6464 m_callbacks->onError(WebIDBDatabaseError(idbDatabaseError));
6565}
6666
 67void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend, PassRefPtr<IDBKey> key, PassRefPtr<IDBKey> primaryKey, PassRefPtr<SerializedScriptValue> value)
 68{
 69 m_callbacks->onSuccess(new WebIDBCursorImpl(idbCursorBackend), key, primaryKey, value);
 70}
 71
6772void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBCursorBackendInterface> idbCursorBackend)
6873{
69  m_callbacks->onSuccess(new WebIDBCursorImpl(idbCursorBackend));
7074}
7175
7276void IDBCallbacksProxy::onSuccess(PassRefPtr<IDBDatabaseBackendInterface> backend)

Source/WebKit/chromium/src/IDBCallbacksProxy.h

@@public:
4747
4848 virtual void onError(PassRefPtr<WebCore::IDBDatabaseError>);
4949 virtual void onSuccess(PassRefPtr<WebCore::IDBCursorBackendInterface>);
 50 virtual void onSuccess(PassRefPtr<WebCore::IDBCursorBackendInterface>, PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::IDBKey>, PassRefPtr<WebCore::SerializedScriptValue>);
5051 virtual void onSuccess(PassRefPtr<WebCore::IDBDatabaseBackendInterface>);
5152 virtual void onSuccess(PassRefPtr<WebCore::IDBKey>);
5253 virtual void onSuccess(PassRefPtr<WebCore::IDBTransactionBackendInterface>);

Source/WebKit/chromium/src/WebIDBCallbacksImpl.cpp

@@void WebIDBCallbacksImpl::onError(const WebIDBDatabaseError& error)
5959 m_callbacks->onError(error);
6060}
6161
62 void WebIDBCallbacksImpl::onSuccess(WebIDBCursor* cursor)
 62void WebIDBCallbacksImpl::onSuccess(WebIDBCursor* cursor, const WebIDBKey& key, const WebIDBKey& primaryKey, const WebSerializedScriptValue& serializedScriptValue)
6363{
64  m_callbacks->onSuccess(IDBCursorBackendProxy::create(adoptPtr(cursor)));
 64 m_callbacks->onSuccess(IDBCursorBackendProxy::create(adoptPtr(cursor)), key, primaryKey, serializedScriptValue);
6565}
6666
6767void WebIDBCallbacksImpl::onSuccess(WebIDBDatabase* webKitInstance)

Source/WebKit/chromium/src/WebIDBCallbacksImpl.h

@@public:
4242 virtual ~WebIDBCallbacksImpl();
4343
4444 virtual void onError(const WebIDBDatabaseError&);
45  virtual void onSuccess(WebIDBCursor*);
 45 virtual void onSuccess(WebIDBCursor*, const WebIDBKey&, const WebIDBKey& primaryKey, const WebSerializedScriptValue&);
4646 virtual void onSuccess(WebIDBDatabase*);
4747 virtual void onSuccess(const WebIDBKey&);
4848 virtual void onSuccess(WebIDBTransaction*);