Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(105)

Side by Side Diff: Source/modules/indexeddb/IDBCursorBackendImpl.cpp

Issue 78053006: [oilpan] Move IDBDatabase, IDBDatabaseCallbacks, IDBDatabaseBackendInterface and other related clas… (Closed) Base URL: svn://svn.chromium.org/blink/branches/oilpan
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 22 matching lines...) Expand all
33 #include "modules/indexeddb/IDBDatabaseError.h" 33 #include "modules/indexeddb/IDBDatabaseError.h"
34 #include "modules/indexeddb/IDBDatabaseException.h" 34 #include "modules/indexeddb/IDBDatabaseException.h"
35 #include "modules/indexeddb/IDBKeyRange.h" 35 #include "modules/indexeddb/IDBKeyRange.h"
36 #include "modules/indexeddb/IDBTracing.h" 36 #include "modules/indexeddb/IDBTracing.h"
37 #include "modules/indexeddb/IDBTransactionBackendImpl.h" 37 #include "modules/indexeddb/IDBTransactionBackendImpl.h"
38 38
39 namespace WebCore { 39 namespace WebCore {
40 40
41 class IDBCursorBackendImpl::CursorIterationOperation : public IDBTransactionBack endImpl::Operation { 41 class IDBCursorBackendImpl::CursorIterationOperation : public IDBTransactionBack endImpl::Operation {
42 public: 42 public:
43 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, PassRefPtr<IDBKey> key, PassRefPtr<IDBCallbacks> cal lbacks) 43 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, PassRefPtr<IDBKey> key, IDBCallbacks* callbacks)
44 { 44 {
45 return adoptPtr(new CursorIterationOperation(cursor, key, callbacks)); 45 return adoptPtr(new CursorIterationOperation(cursor, key, callbacks));
46 } 46 }
47 virtual void perform(IDBTransactionBackendImpl*); 47 virtual void perform(IDBTransactionBackendImpl*);
48 private: 48 private:
49 CursorIterationOperation(PassRefPtr<IDBCursorBackendImpl> cursor, PassRefPtr <IDBKey> key, PassRefPtr<IDBCallbacks> callbacks) 49 CursorIterationOperation(PassRefPtr<IDBCursorBackendImpl> cursor, PassRefPtr <IDBKey> key, IDBCallbacks* callbacks)
50 : m_cursor(cursor) 50 : m_cursor(cursor)
51 , m_key(key) 51 , m_key(key)
52 , m_callbacks(callbacks) 52 , m_callbacks(callbacks)
53 { 53 {
54 } 54 }
55 55
56 RefPtr<IDBCursorBackendImpl> m_cursor; 56 RefPtr<IDBCursorBackendImpl> m_cursor;
57 RefPtr<IDBKey> m_key; 57 RefPtr<IDBKey> m_key;
58 RefPtr<IDBCallbacks> m_callbacks; 58 Persistent<IDBCallbacks> m_callbacks;
59 }; 59 };
60 60
61 class IDBCursorBackendImpl::CursorAdvanceOperation : public IDBTransactionBacken dImpl::Operation { 61 class IDBCursorBackendImpl::CursorAdvanceOperation : public IDBTransactionBacken dImpl::Operation {
62 public: 62 public:
63 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, unsigned long count, PassRefPtr<IDBCallbacks> callba cks) 63 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, unsigned long count, IDBCallbacks* callbacks)
64 { 64 {
65 return adoptPtr(new CursorAdvanceOperation(cursor, count, callbacks)); 65 return adoptPtr(new CursorAdvanceOperation(cursor, count, callbacks));
66 } 66 }
67 virtual void perform(IDBTransactionBackendImpl*); 67 virtual void perform(IDBTransactionBackendImpl*);
68 private: 68 private:
69 CursorAdvanceOperation(PassRefPtr<IDBCursorBackendImpl> cursor, unsigned lon g count, PassRefPtr<IDBCallbacks> callbacks) 69 CursorAdvanceOperation(PassRefPtr<IDBCursorBackendImpl> cursor, unsigned lon g count, IDBCallbacks* callbacks)
70 : m_cursor(cursor) 70 : m_cursor(cursor)
71 , m_count(count) 71 , m_count(count)
72 , m_callbacks(callbacks) 72 , m_callbacks(callbacks)
73 { 73 {
74 } 74 }
75 75
76 RefPtr<IDBCursorBackendImpl> m_cursor; 76 RefPtr<IDBCursorBackendImpl> m_cursor;
77 unsigned long m_count; 77 unsigned long m_count;
78 RefPtr<IDBCallbacks> m_callbacks; 78 Persistent<IDBCallbacks> m_callbacks;
79 }; 79 };
80 80
81 class IDBCursorBackendImpl::CursorPrefetchIterationOperation : public IDBTransac tionBackendImpl::Operation { 81 class IDBCursorBackendImpl::CursorPrefetchIterationOperation : public IDBTransac tionBackendImpl::Operation {
82 public: 82 public:
83 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, int numberToFetch, PassRefPtr<IDBCallbacks> callback s) 83 static PassOwnPtr<IDBTransactionBackendImpl::Operation> create(PassRefPtr<ID BCursorBackendImpl> cursor, int numberToFetch, IDBCallbacks* callbacks)
84 { 84 {
85 return adoptPtr(new CursorPrefetchIterationOperation(cursor, numberToFet ch, callbacks)); 85 return adoptPtr(new CursorPrefetchIterationOperation(cursor, numberToFet ch, callbacks));
86 } 86 }
87 virtual void perform(IDBTransactionBackendImpl*); 87 virtual void perform(IDBTransactionBackendImpl*);
88 private: 88 private:
89 CursorPrefetchIterationOperation(PassRefPtr<IDBCursorBackendImpl> cursor, in t numberToFetch, PassRefPtr<IDBCallbacks> callbacks) 89 CursorPrefetchIterationOperation(PassRefPtr<IDBCursorBackendImpl> cursor, in t numberToFetch, IDBCallbacks* callbacks)
90 : m_cursor(cursor) 90 : m_cursor(cursor)
91 , m_numberToFetch(numberToFetch) 91 , m_numberToFetch(numberToFetch)
92 , m_callbacks(callbacks) 92 , m_callbacks(callbacks)
93 { 93 {
94 } 94 }
95 95
96 RefPtr<IDBCursorBackendImpl> m_cursor; 96 RefPtr<IDBCursorBackendImpl> m_cursor;
97 int m_numberToFetch; 97 int m_numberToFetch;
98 RefPtr<IDBCallbacks> m_callbacks; 98 Persistent<IDBCallbacks> m_callbacks;
99 }; 99 };
100 100
101 IDBCursorBackendImpl::IDBCursorBackendImpl(PassRefPtr<IDBBackingStore::Cursor> c ursor, IndexedDB::CursorType cursorType, IDBDatabaseBackendInterface::TaskType t askType, IDBTransactionBackendImpl* transaction, int64_t objectStoreId) 101 IDBCursorBackendImpl::IDBCursorBackendImpl(PassRefPtr<IDBBackingStore::Cursor> c ursor, IndexedDB::CursorType cursorType, IDBDatabaseBackendInterface::TaskType t askType, IDBTransactionBackendImpl* transaction, int64_t objectStoreId)
102 : m_taskType(taskType) 102 : m_taskType(taskType)
103 , m_cursorType(cursorType) 103 , m_cursorType(cursorType)
104 , m_database(transaction->database()) 104 , m_database(transaction->database())
105 , m_transaction(transaction) 105 , m_transaction(transaction)
106 , m_objectStoreId(objectStoreId) 106 , m_objectStoreId(objectStoreId)
107 , m_cursor(cursor) 107 , m_cursor(cursor)
108 , m_closed(false) 108 , m_closed(false)
109 { 109 {
110 m_transaction->registerOpenCursor(this); 110 m_transaction->registerOpenCursor(this);
111 } 111 }
112 112
113 IDBCursorBackendImpl::~IDBCursorBackendImpl() 113 IDBCursorBackendImpl::~IDBCursorBackendImpl()
114 { 114 {
115 m_transaction->unregisterOpenCursor(this); 115 m_transaction->unregisterOpenCursor(this);
116 } 116 }
117 117
118 118
119 void IDBCursorBackendImpl::continueFunction(PassRefPtr<IDBKey> key, PassRefPtr<I DBCallbacks> prpCallbacks) 119 void IDBCursorBackendImpl::continueFunction(PassRefPtr<IDBKey> key, IDBCallbacks * callbacks)
120 { 120 {
121 IDB_TRACE("IDBCursorBackendImpl::continue"); 121 IDB_TRACE("IDBCursorBackendImpl::continue");
122 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
123 m_transaction->scheduleTask(m_taskType, CursorIterationOperation::create(thi s, key, callbacks)); 122 m_transaction->scheduleTask(m_taskType, CursorIterationOperation::create(thi s, key, callbacks));
124 } 123 }
125 124
126 void IDBCursorBackendImpl::advance(unsigned long count, PassRefPtr<IDBCallbacks> prpCallbacks) 125 void IDBCursorBackendImpl::advance(unsigned long count, IDBCallbacks* callbacks)
127 { 126 {
128 IDB_TRACE("IDBCursorBackendImpl::advance"); 127 IDB_TRACE("IDBCursorBackendImpl::advance");
129 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
130 m_transaction->scheduleTask(CursorAdvanceOperation::create(this, count, call backs)); 128 m_transaction->scheduleTask(CursorAdvanceOperation::create(this, count, call backs));
131 } 129 }
132 130
133 void IDBCursorBackendImpl::CursorAdvanceOperation::perform(IDBTransactionBackend Impl*) 131 void IDBCursorBackendImpl::CursorAdvanceOperation::perform(IDBTransactionBackend Impl*)
134 { 132 {
135 IDB_TRACE("CursorAdvanceOperation"); 133 IDB_TRACE("CursorAdvanceOperation");
136 if (!m_cursor->m_cursor || !m_cursor->m_cursor->advance(m_count)) { 134 if (!m_cursor->m_cursor || !m_cursor->m_cursor->advance(m_count)) {
137 m_cursor->m_cursor = 0; 135 m_cursor->m_cursor = 0;
138 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0)); 136 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0));
139 return; 137 return;
140 } 138 }
141 139
142 m_callbacks->onSuccess(m_cursor->key(), m_cursor->primaryKey(), m_cursor->va lue()); 140 m_callbacks->onSuccess(m_cursor->key(), m_cursor->primaryKey(), m_cursor->va lue());
143 } 141 }
144 142
145 void IDBCursorBackendImpl::CursorIterationOperation::perform(IDBTransactionBacke ndImpl*) 143 void IDBCursorBackendImpl::CursorIterationOperation::perform(IDBTransactionBacke ndImpl*)
146 { 144 {
147 IDB_TRACE("CursorIterationOperation"); 145 IDB_TRACE("CursorIterationOperation");
148 if (!m_cursor->m_cursor || !m_cursor->m_cursor->continueFunction(m_key.get() )) { 146 if (!m_cursor->m_cursor || !m_cursor->m_cursor->continueFunction(m_key.get() )) {
149 m_cursor->m_cursor = 0; 147 m_cursor->m_cursor = 0;
150 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0)); 148 m_callbacks->onSuccess(static_cast<SharedBuffer*>(0));
151 return; 149 return;
152 } 150 }
153 151
154 m_callbacks->onSuccess(m_cursor->key(), m_cursor->primaryKey(), m_cursor->va lue()); 152 m_callbacks->onSuccess(m_cursor->key(), m_cursor->primaryKey(), m_cursor->va lue());
155 } 153 }
156 154
157 void IDBCursorBackendImpl::deleteFunction(PassRefPtr<IDBCallbacks> prpCallbacks) 155 void IDBCursorBackendImpl::deleteFunction(IDBCallbacks* callbacks)
158 { 156 {
159 IDB_TRACE("IDBCursorBackendImpl::delete"); 157 IDB_TRACE("IDBCursorBackendImpl::delete");
160 ASSERT(m_transaction->mode() != IndexedDB::TransactionReadOnly); 158 ASSERT(m_transaction->mode() != IndexedDB::TransactionReadOnly);
161 RefPtr<IDBKeyRange> keyRange = IDBKeyRange::create(m_cursor->primaryKey()); 159 RefPtr<IDBKeyRange> keyRange = IDBKeyRange::create(m_cursor->primaryKey());
162 m_database->deleteRange(m_transaction->id(), m_objectStoreId, keyRange.relea se(), prpCallbacks); 160 m_database->deleteRange(m_transaction->id(), m_objectStoreId, keyRange.relea se(), callbacks);
163 } 161 }
164 162
165 void IDBCursorBackendImpl::prefetchContinue(int numberToFetch, PassRefPtr<IDBCal lbacks> prpCallbacks) 163 void IDBCursorBackendImpl::prefetchContinue(int numberToFetch, IDBCallbacks* cal lbacks)
166 { 164 {
167 IDB_TRACE("IDBCursorBackendImpl::prefetchContinue"); 165 IDB_TRACE("IDBCursorBackendImpl::prefetchContinue");
168 RefPtr<IDBCallbacks> callbacks = prpCallbacks;
169 m_transaction->scheduleTask(m_taskType, CursorPrefetchIterationOperation::cr eate(this, numberToFetch, callbacks)); 166 m_transaction->scheduleTask(m_taskType, CursorPrefetchIterationOperation::cr eate(this, numberToFetch, callbacks));
170 } 167 }
171 168
172 void IDBCursorBackendImpl::CursorPrefetchIterationOperation::perform(IDBTransact ionBackendImpl*) 169 void IDBCursorBackendImpl::CursorPrefetchIterationOperation::perform(IDBTransact ionBackendImpl*)
173 { 170 {
174 IDB_TRACE("CursorPrefetchIterationOperation"); 171 IDB_TRACE("CursorPrefetchIterationOperation");
175 172
176 Vector<RefPtr<IDBKey> > foundKeys; 173 Vector<RefPtr<IDBKey> > foundKeys;
177 Vector<RefPtr<IDBKey> > foundPrimaryKeys; 174 Vector<RefPtr<IDBKey> > foundPrimaryKeys;
178 Vector<RefPtr<SharedBuffer> > foundValues; 175 Vector<RefPtr<SharedBuffer> > foundValues;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 233
237 void IDBCursorBackendImpl::close() 234 void IDBCursorBackendImpl::close()
238 { 235 {
239 IDB_TRACE("IDBCursorBackendImpl::close"); 236 IDB_TRACE("IDBCursorBackendImpl::close");
240 m_closed = true; 237 m_closed = true;
241 m_cursor.clear(); 238 m_cursor.clear();
242 m_savedCursor.clear(); 239 m_savedCursor.clear();
243 } 240 }
244 241
245 } // namespace WebCore 242 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/modules/indexeddb/IDBCursorBackendImpl.h ('k') | Source/modules/indexeddb/IDBCursorBackendInterface.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698