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

Side by Side Diff: third_party/WebKit/Source/modules/indexeddb/WebIDBCallbacksImpl.cpp

Issue 2822453003: Wrap large IndexedDB values into Blobs before writing to LevelDB. (Closed)
Patch Set: WIP: Getting IDBRequestTest.EventsAfterStopping to pass. Created 3 years, 7 months 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 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 are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * 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 * 10 *
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 probe::AsyncTaskCanceled(request_->GetExecutionContext(), this); 71 probe::AsyncTaskCanceled(request_->GetExecutionContext(), this);
72 request_->WebCallbacksDestroyed(); 72 request_->WebCallbacksDestroyed();
73 } 73 }
74 } 74 }
75 75
76 void WebIDBCallbacksImpl::OnError(const WebIDBDatabaseError& error) { 76 void WebIDBCallbacksImpl::OnError(const WebIDBDatabaseError& error) {
77 if (!request_) 77 if (!request_)
78 return; 78 return;
79 79
80 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "error"); 80 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "error");
81 request_->EnqueueResponse( 81 request_->HandleResponse(DOMException::Create(error.Code(), error.Message()));
82 DOMException::Create(error.Code(), error.Message()));
83 } 82 }
84 83
85 void WebIDBCallbacksImpl::OnSuccess( 84 void WebIDBCallbacksImpl::OnSuccess(
86 const WebVector<WebString>& web_string_list) { 85 const WebVector<WebString>& web_string_list) {
87 if (!request_) 86 if (!request_)
88 return; 87 return;
89 88
90 Vector<String> string_list; 89 Vector<String> string_list;
91 for (size_t i = 0; i < web_string_list.size(); ++i) 90 for (size_t i = 0; i < web_string_list.size(); ++i)
92 string_list.push_back(web_string_list[i]); 91 string_list.push_back(web_string_list[i]);
93 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 92 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
93 #if DCHECK_IS_ON()
94 DCHECK(!request_->TransactionHasQueuedResults());
95 #endif // DCHECK_IS_ON()
94 request_->EnqueueResponse(string_list); 96 request_->EnqueueResponse(string_list);
95 } 97 }
96 98
97 void WebIDBCallbacksImpl::OnSuccess(WebIDBCursor* cursor, 99 void WebIDBCallbacksImpl::OnSuccess(WebIDBCursor* cursor,
98 const WebIDBKey& key, 100 const WebIDBKey& key,
99 const WebIDBKey& primary_key, 101 const WebIDBKey& primary_key,
100 const WebIDBValue& value) { 102 const WebIDBValue& value) {
101 if (!request_) 103 if (!request_)
102 return; 104 return;
103 105
104 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 106 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
105 request_->EnqueueResponse(WTF::WrapUnique(cursor), key, primary_key, 107 request_->HandleResponse(WTF::WrapUnique(cursor), key, primary_key,
106 IDBValue::Create(value, request_->GetIsolate())); 108 IDBValue::Create(value, request_->GetIsolate()));
107 } 109 }
108 110
109 void WebIDBCallbacksImpl::OnSuccess(WebIDBDatabase* backend, 111 void WebIDBCallbacksImpl::OnSuccess(WebIDBDatabase* backend,
110 const WebIDBMetadata& metadata) { 112 const WebIDBMetadata& metadata) {
111 std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(backend); 113 std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(backend);
112 if (request_) { 114 if (request_) {
113 probe::AsyncTask async_task(request_->GetExecutionContext(), this, 115 probe::AsyncTask async_task(request_->GetExecutionContext(), this,
114 "success"); 116 "success");
117 #if DCHECK_IS_ON()
118 DCHECK(!request_->TransactionHasQueuedResults());
119 #endif // DCHECK_IS_ON()
115 request_->EnqueueResponse(std::move(db), IDBDatabaseMetadata(metadata)); 120 request_->EnqueueResponse(std::move(db), IDBDatabaseMetadata(metadata));
116 } else if (db) { 121 } else if (db) {
117 db->Close(); 122 db->Close();
118 } 123 }
119 } 124 }
120 125
121 void WebIDBCallbacksImpl::OnSuccess(const WebIDBKey& key) { 126 void WebIDBCallbacksImpl::OnSuccess(const WebIDBKey& key) {
122 if (!request_) 127 if (!request_)
123 return; 128 return;
124 129
125 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 130 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
126 request_->EnqueueResponse(key); 131 request_->HandleResponse(key);
127 } 132 }
128 133
129 void WebIDBCallbacksImpl::OnSuccess(const WebIDBValue& value) { 134 void WebIDBCallbacksImpl::OnSuccess(const WebIDBValue& value) {
130 if (!request_) 135 if (!request_)
131 return; 136 return;
132 137
133 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 138 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
134 request_->EnqueueResponse(IDBValue::Create(value, request_->GetIsolate())); 139 request_->HandleResponse(IDBValue::Create(value, request_->GetIsolate()));
135 } 140 }
136 141
137 void WebIDBCallbacksImpl::OnSuccess(const WebVector<WebIDBValue>& values) { 142 void WebIDBCallbacksImpl::OnSuccess(const WebVector<WebIDBValue>& values) {
138 if (!request_) 143 if (!request_)
139 return; 144 return;
140 145
141 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 146 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
142 Vector<RefPtr<IDBValue>> idb_values(values.size()); 147 Vector<RefPtr<IDBValue>> idb_values(values.size());
143 for (size_t i = 0; i < values.size(); ++i) 148 for (size_t i = 0; i < values.size(); ++i)
144 idb_values[i] = IDBValue::Create(values[i], request_->GetIsolate()); 149 idb_values[i] = IDBValue::Create(values[i], request_->GetIsolate());
145 request_->EnqueueResponse(idb_values); 150 request_->HandleResponse(idb_values);
146 } 151 }
147 152
148 void WebIDBCallbacksImpl::OnSuccess(long long value) { 153 void WebIDBCallbacksImpl::OnSuccess(long long value) {
149 if (!request_) 154 if (!request_)
150 return; 155 return;
151 156
152 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 157 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
153 request_->EnqueueResponse(value); 158 request_->HandleResponse(value);
154 } 159 }
155 160
156 void WebIDBCallbacksImpl::OnSuccess() { 161 void WebIDBCallbacksImpl::OnSuccess() {
157 if (!request_) 162 if (!request_)
158 return; 163 return;
159 164
160 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 165 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
161 request_->EnqueueResponse(); 166 request_->HandleResponse();
162 } 167 }
163 168
164 void WebIDBCallbacksImpl::OnSuccess(const WebIDBKey& key, 169 void WebIDBCallbacksImpl::OnSuccess(const WebIDBKey& key,
165 const WebIDBKey& primary_key, 170 const WebIDBKey& primary_key,
166 const WebIDBValue& value) { 171 const WebIDBValue& value) {
167 if (!request_) 172 if (!request_)
168 return; 173 return;
169 174
170 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success"); 175 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "success");
171 request_->EnqueueResponse(key, primary_key, 176 request_->HandleResponse(key, primary_key,
172 IDBValue::Create(value, request_->GetIsolate())); 177 IDBValue::Create(value, request_->GetIsolate()));
173 } 178 }
174 179
175 void WebIDBCallbacksImpl::OnBlocked(long long old_version) { 180 void WebIDBCallbacksImpl::OnBlocked(long long old_version) {
176 if (!request_) 181 if (!request_)
177 return; 182 return;
178 183
179 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "blocked"); 184 probe::AsyncTask async_task(request_->GetExecutionContext(), this, "blocked");
185 #if DCHECK_IS_ON()
186 DCHECK(!request_->TransactionHasQueuedResults());
187 #endif // DCHECK_IS_ON()
180 request_->EnqueueBlocked(old_version); 188 request_->EnqueueBlocked(old_version);
181 } 189 }
182 190
183 void WebIDBCallbacksImpl::OnUpgradeNeeded(long long old_version, 191 void WebIDBCallbacksImpl::OnUpgradeNeeded(long long old_version,
184 WebIDBDatabase* database, 192 WebIDBDatabase* database,
185 const WebIDBMetadata& metadata, 193 const WebIDBMetadata& metadata,
186 unsigned short data_loss, 194 unsigned short data_loss,
187 WebString data_loss_message) { 195 WebString data_loss_message) {
188 std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(database); 196 std::unique_ptr<WebIDBDatabase> db = WTF::WrapUnique(database);
189 if (request_) { 197 if (request_) {
190 probe::AsyncTask async_task(request_->GetExecutionContext(), this, 198 probe::AsyncTask async_task(request_->GetExecutionContext(), this,
191 "upgradeNeeded"); 199 "upgradeNeeded");
200 #if DCHECK_IS_ON()
201 DCHECK(!request_->TransactionHasQueuedResults());
202 #endif // DCHECK_IS_ON()
192 request_->EnqueueUpgradeNeeded( 203 request_->EnqueueUpgradeNeeded(
193 old_version, std::move(db), IDBDatabaseMetadata(metadata), 204 old_version, std::move(db), IDBDatabaseMetadata(metadata),
194 static_cast<WebIDBDataLoss>(data_loss), data_loss_message); 205 static_cast<WebIDBDataLoss>(data_loss), data_loss_message);
195 } else { 206 } else {
196 db->Close(); 207 db->Close();
197 } 208 }
198 } 209 }
199 210
200 void WebIDBCallbacksImpl::Detach() { 211 void WebIDBCallbacksImpl::Detach() {
201 request_.Clear(); 212 request_.Clear();
202 } 213 }
203 214
204 } // namespace blink 215 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698