| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/indexed_db/indexed_db_callbacks.h" | 5 #include "content/browser/indexed_db/indexed_db_callbacks.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
| 12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
| 13 #include "base/time/time.h" | 13 #include "base/time/time.h" |
| 14 #include "content/browser/child_process_security_policy_impl.h" | 14 #include "content/browser/child_process_security_policy_impl.h" |
| 15 #include "content/browser/fileapi/fileapi_message_filter.h" | 15 #include "content/browser/fileapi/fileapi_message_filter.h" |
| 16 #include "content/browser/indexed_db/indexed_db_blob_info.h" | 16 #include "content/browser/indexed_db/indexed_db_blob_info.h" |
| 17 #include "content/browser/indexed_db/indexed_db_connection.h" | 17 #include "content/browser/indexed_db/indexed_db_connection.h" |
| 18 #include "content/browser/indexed_db/indexed_db_context_impl.h" | 18 #include "content/browser/indexed_db/indexed_db_context_impl.h" |
| 19 #include "content/browser/indexed_db/indexed_db_cursor.h" | 19 #include "content/browser/indexed_db/indexed_db_cursor.h" |
| 20 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" | 20 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" |
| 21 #include "content/browser/indexed_db/indexed_db_database_error.h" | 21 #include "content/browser/indexed_db/indexed_db_database_error.h" |
| 22 #include "content/browser/indexed_db/indexed_db_metadata.h" | 22 #include "content/browser/indexed_db/indexed_db_metadata.h" |
| 23 #include "content/browser/indexed_db/indexed_db_return_value.h" | 23 #include "content/browser/indexed_db/indexed_db_return_value.h" |
| 24 #include "content/browser/indexed_db/indexed_db_tracing.h" | 24 #include "content/browser/indexed_db/indexed_db_tracing.h" |
| 25 #include "content/browser/indexed_db/indexed_db_value.h" | 25 #include "content/browser/indexed_db/indexed_db_value.h" |
| 26 #include "content/common/indexed_db/indexed_db_constants.h" | 26 #include "content/common/indexed_db/indexed_db_constants.h" |
| 27 #include "content/common/indexed_db/indexed_db_messages.h" | |
| 28 #include "storage/browser/blob/blob_storage_context.h" | 27 #include "storage/browser/blob/blob_storage_context.h" |
| 29 #include "storage/browser/blob/shareable_file_reference.h" | 28 #include "storage/browser/blob/shareable_file_reference.h" |
| 30 #include "storage/browser/quota/quota_manager.h" | 29 #include "storage/browser/quota/quota_manager.h" |
| 31 | 30 |
| 32 using storage::ShareableFileReference; | 31 using storage::ShareableFileReference; |
| 33 | 32 |
| 34 namespace content { | 33 namespace content { |
| 35 | 34 |
| 35 #if 0 |
| 36 namespace { | 36 namespace { |
| 37 const int32_t kNoCursor = -1; | 37 const int32_t kNoCursor = -1; |
| 38 const int32_t kNoDatabaseCallbacks = -1; | 38 const int32_t kNoDatabaseCallbacks = -1; |
| 39 const int64_t kNoTransaction = -1; | 39 const int64_t kNoTransaction = -1; |
| 40 |
| 40 } | 41 } |
| 41 | 42 |
| 42 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, | 43 IndexedDBCallbacks::IndexedDBCallbacks(IndexedDBDispatcherHost* dispatcher_host, |
| 43 int32_t ipc_thread_id, | 44 int32_t ipc_thread_id, |
| 44 int32_t ipc_callbacks_id) | 45 int32_t ipc_callbacks_id) |
| 45 : dispatcher_host_(dispatcher_host), | 46 : dispatcher_host_(dispatcher_host), |
| 46 ipc_callbacks_id_(ipc_callbacks_id), | 47 ipc_callbacks_id_(ipc_callbacks_id), |
| 47 ipc_thread_id_(ipc_thread_id), | 48 ipc_thread_id_(ipc_thread_id), |
| 48 ipc_cursor_id_(kNoCursor), | 49 ipc_cursor_id_(kNoCursor), |
| 49 host_transaction_id_(kNoTransaction), | 50 host_transaction_id_(kNoTransaction), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 75 : dispatcher_host_(dispatcher_host), | 76 : dispatcher_host_(dispatcher_host), |
| 76 ipc_callbacks_id_(ipc_callbacks_id), | 77 ipc_callbacks_id_(ipc_callbacks_id), |
| 77 ipc_thread_id_(ipc_thread_id), | 78 ipc_thread_id_(ipc_thread_id), |
| 78 ipc_cursor_id_(kNoCursor), | 79 ipc_cursor_id_(kNoCursor), |
| 79 host_transaction_id_(host_transaction_id), | 80 host_transaction_id_(host_transaction_id), |
| 80 origin_(origin), | 81 origin_(origin), |
| 81 ipc_database_id_(kNoDatabase), | 82 ipc_database_id_(kNoDatabase), |
| 82 ipc_database_callbacks_id_(ipc_database_callbacks_id), | 83 ipc_database_callbacks_id_(ipc_database_callbacks_id), |
| 83 data_loss_(blink::WebIDBDataLossNone), | 84 data_loss_(blink::WebIDBDataLossNone), |
| 84 sent_blocked_(false) {} | 85 sent_blocked_(false) {} |
| 86 #endif |
| 85 | 87 |
| 86 IndexedDBCallbacks::~IndexedDBCallbacks() {} | 88 IndexedDBCallbacks::~IndexedDBCallbacks() {} |
| 87 | 89 |
| 88 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { | 90 void IndexedDBCallbacks::OnError(const IndexedDBDatabaseError& error) { |
| 91 #if 0 |
| 89 DCHECK(dispatcher_host_.get()); | 92 DCHECK(dispatcher_host_.get()); |
| 90 | 93 |
| 91 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( | 94 dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( |
| 92 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); | 95 ipc_thread_id_, ipc_callbacks_id_, error.code(), error.message())); |
| 93 dispatcher_host_ = NULL; | 96 dispatcher_host_ = NULL; |
| 94 | 97 |
| 95 if (!connection_open_start_time_.is_null()) { | 98 if (!connection_open_start_time_.is_null()) { |
| 96 UMA_HISTOGRAM_MEDIUM_TIMES( | 99 UMA_HISTOGRAM_MEDIUM_TIMES( |
| 97 "WebCore.IndexedDB.OpenTime.Error", | 100 "WebCore.IndexedDB.OpenTime.Error", |
| 98 base::TimeTicks::Now() - connection_open_start_time_); | 101 base::TimeTicks::Now() - connection_open_start_time_); |
| 99 connection_open_start_time_ = base::TimeTicks(); | 102 connection_open_start_time_ = base::TimeTicks(); |
| 100 } | 103 } |
| 104 #endif |
| 101 } | 105 } |
| 102 | 106 |
| 103 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { | 107 void IndexedDBCallbacks::OnSuccess(const std::vector<base::string16>& value) { |
| 108 #if 0 |
| 104 DCHECK(dispatcher_host_.get()); | 109 DCHECK(dispatcher_host_.get()); |
| 105 | 110 |
| 106 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 111 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 107 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 112 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 108 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 113 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 109 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 114 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 110 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 115 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 111 | 116 |
| 112 std::vector<base::string16> list; | 117 std::vector<base::string16> list; |
| 113 for (unsigned i = 0; i < value.size(); ++i) | 118 for (unsigned i = 0; i < value.size(); ++i) |
| 114 list.push_back(value[i]); | 119 list.push_back(value[i]); |
| 115 | 120 |
| 116 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( | 121 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessStringList( |
| 117 ipc_thread_id_, ipc_callbacks_id_, list)); | 122 ipc_thread_id_, ipc_callbacks_id_, list)); |
| 118 dispatcher_host_ = NULL; | 123 dispatcher_host_ = NULL; |
| 124 #endif |
| 119 } | 125 } |
| 120 | 126 |
| 121 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) { | 127 void IndexedDBCallbacks::OnBlocked(int64_t existing_version) { |
| 128 #if 0 |
| 122 DCHECK(dispatcher_host_.get()); | 129 DCHECK(dispatcher_host_.get()); |
| 123 | 130 |
| 124 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 131 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 125 // No transaction/db callbacks for DeleteDatabase. | 132 // No transaction/db callbacks for DeleteDatabase. |
| 126 DCHECK_EQ(kNoTransaction == host_transaction_id_, | 133 DCHECK_EQ(kNoTransaction == host_transaction_id_, |
| 127 kNoDatabaseCallbacks == ipc_database_callbacks_id_); | 134 kNoDatabaseCallbacks == ipc_database_callbacks_id_); |
| 128 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 135 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 129 | 136 |
| 130 if (sent_blocked_) | 137 if (sent_blocked_) |
| 131 return; | 138 return; |
| 132 | 139 |
| 133 sent_blocked_ = true; | 140 sent_blocked_ = true; |
| 134 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( | 141 dispatcher_host_->Send(new IndexedDBMsg_CallbacksIntBlocked( |
| 135 ipc_thread_id_, ipc_callbacks_id_, existing_version)); | 142 ipc_thread_id_, ipc_callbacks_id_, existing_version)); |
| 136 | 143 |
| 137 if (!connection_open_start_time_.is_null()) { | 144 if (!connection_open_start_time_.is_null()) { |
| 138 UMA_HISTOGRAM_MEDIUM_TIMES( | 145 UMA_HISTOGRAM_MEDIUM_TIMES( |
| 139 "WebCore.IndexedDB.OpenTime.Blocked", | 146 "WebCore.IndexedDB.OpenTime.Blocked", |
| 140 base::TimeTicks::Now() - connection_open_start_time_); | 147 base::TimeTicks::Now() - connection_open_start_time_); |
| 141 connection_open_start_time_ = base::TimeTicks(); | 148 connection_open_start_time_ = base::TimeTicks(); |
| 142 } | 149 } |
| 150 #endif |
| 143 } | 151 } |
| 144 | 152 |
| 145 void IndexedDBCallbacks::OnDataLoss(blink::WebIDBDataLoss data_loss, | 153 void IndexedDBCallbacks::OnDataLoss(blink::WebIDBDataLoss data_loss, |
| 146 std::string data_loss_message) { | 154 std::string data_loss_message) { |
| 155 #if 0 |
| 147 DCHECK_NE(blink::WebIDBDataLossNone, data_loss); | 156 DCHECK_NE(blink::WebIDBDataLossNone, data_loss); |
| 148 data_loss_ = data_loss; | 157 data_loss_ = data_loss; |
| 149 data_loss_message_ = data_loss_message; | 158 data_loss_message_ = data_loss_message; |
| 159 #endif |
| 150 } | 160 } |
| 151 | 161 |
| 152 void IndexedDBCallbacks::OnUpgradeNeeded( | 162 void IndexedDBCallbacks::OnUpgradeNeeded( |
| 153 int64_t old_version, | 163 int64_t old_version, |
| 154 std::unique_ptr<IndexedDBConnection> connection, | 164 std::unique_ptr<IndexedDBConnection> connection, |
| 155 const IndexedDBDatabaseMetadata& metadata) { | 165 const IndexedDBDatabaseMetadata& metadata) { |
| 166 #if 0 |
| 156 DCHECK(dispatcher_host_.get()); | 167 DCHECK(dispatcher_host_.get()); |
| 157 | 168 |
| 158 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 169 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 159 DCHECK_NE(kNoTransaction, host_transaction_id_); | 170 DCHECK_NE(kNoTransaction, host_transaction_id_); |
| 160 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 171 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 161 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 172 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 162 | 173 |
| 163 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); | 174 dispatcher_host_->RegisterTransactionId(host_transaction_id_, origin_); |
| 164 int32_t ipc_database_id = | 175 int32_t ipc_database_id = |
| 165 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); | 176 dispatcher_host_->Add(connection.release(), ipc_thread_id_, origin_); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 176 params.data_loss = data_loss_; | 187 params.data_loss = data_loss_; |
| 177 params.data_loss_message = data_loss_message_; | 188 params.data_loss_message = data_loss_message_; |
| 178 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); | 189 dispatcher_host_->Send(new IndexedDBMsg_CallbacksUpgradeNeeded(params)); |
| 179 | 190 |
| 180 if (!connection_open_start_time_.is_null()) { | 191 if (!connection_open_start_time_.is_null()) { |
| 181 UMA_HISTOGRAM_MEDIUM_TIMES( | 192 UMA_HISTOGRAM_MEDIUM_TIMES( |
| 182 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", | 193 "WebCore.IndexedDB.OpenTime.UpgradeNeeded", |
| 183 base::TimeTicks::Now() - connection_open_start_time_); | 194 base::TimeTicks::Now() - connection_open_start_time_); |
| 184 connection_open_start_time_ = base::TimeTicks(); | 195 connection_open_start_time_ = base::TimeTicks(); |
| 185 } | 196 } |
| 197 #endif |
| 186 } | 198 } |
| 187 | 199 |
| 188 void IndexedDBCallbacks::OnSuccess( | 200 void IndexedDBCallbacks::OnSuccess( |
| 189 std::unique_ptr<IndexedDBConnection> connection, | 201 std::unique_ptr<IndexedDBConnection> connection, |
| 190 const IndexedDBDatabaseMetadata& metadata) { | 202 const IndexedDBDatabaseMetadata& metadata) { |
| 203 #if 0 |
| 191 DCHECK(dispatcher_host_.get()); | 204 DCHECK(dispatcher_host_.get()); |
| 192 | 205 |
| 193 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 206 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 194 DCHECK_NE(kNoTransaction, host_transaction_id_); | 207 DCHECK_NE(kNoTransaction, host_transaction_id_); |
| 195 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); | 208 DCHECK_NE(ipc_database_id_ == kNoDatabase, !connection); |
| 196 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 209 DCHECK_NE(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 197 | 210 |
| 198 scoped_refptr<IndexedDBCallbacks> self(this); | 211 scoped_refptr<IndexedDBCallbacks> self(this); |
| 199 | 212 |
| 200 int32_t ipc_object_id = kNoDatabase; | 213 int32_t ipc_object_id = kNoDatabase; |
| (...skipping 10 matching lines...) Expand all Loading... |
| 211 ipc_object_id, | 224 ipc_object_id, |
| 212 IndexedDBDispatcherHost::ConvertMetadata(metadata))); | 225 IndexedDBDispatcherHost::ConvertMetadata(metadata))); |
| 213 dispatcher_host_ = NULL; | 226 dispatcher_host_ = NULL; |
| 214 | 227 |
| 215 if (!connection_open_start_time_.is_null()) { | 228 if (!connection_open_start_time_.is_null()) { |
| 216 UMA_HISTOGRAM_MEDIUM_TIMES( | 229 UMA_HISTOGRAM_MEDIUM_TIMES( |
| 217 "WebCore.IndexedDB.OpenTime.Success", | 230 "WebCore.IndexedDB.OpenTime.Success", |
| 218 base::TimeTicks::Now() - connection_open_start_time_); | 231 base::TimeTicks::Now() - connection_open_start_time_); |
| 219 connection_open_start_time_ = base::TimeTicks(); | 232 connection_open_start_time_ = base::TimeTicks(); |
| 220 } | 233 } |
| 234 #endif |
| 221 } | 235 } |
| 222 | 236 |
| 223 static std::string CreateBlobData( | 237 static std::string CreateBlobData( |
| 224 const IndexedDBBlobInfo& blob_info, | 238 const IndexedDBBlobInfo& blob_info, |
| 225 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host, | 239 /*scoped_refptr<IndexedDBDispatcherHost> dispatcher_host,*/ |
| 226 base::TaskRunner* task_runner) { | 240 base::TaskRunner* task_runner) { |
| 241 #if 0 |
| 227 if (!blob_info.uuid().empty()) { | 242 if (!blob_info.uuid().empty()) { |
| 228 // We're sending back a live blob, not a reference into our backing store. | 243 // We're sending back a live blob, not a reference into our backing store. |
| 229 return dispatcher_host->HoldBlobData(blob_info); | 244 return dispatcher_host->HoldBlobData(blob_info); |
| 230 } | 245 } |
| 231 scoped_refptr<ShareableFileReference> shareable_file = | 246 scoped_refptr<ShareableFileReference> shareable_file = |
| 232 ShareableFileReference::Get(blob_info.file_path()); | 247 ShareableFileReference::Get(blob_info.file_path()); |
| 233 if (!shareable_file.get()) { | 248 if (!shareable_file.get()) { |
| 234 shareable_file = ShareableFileReference::GetOrCreate( | 249 shareable_file = ShareableFileReference::GetOrCreate( |
| 235 blob_info.file_path(), | 250 blob_info.file_path(), |
| 236 ShareableFileReference::DONT_DELETE_ON_FINAL_RELEASE, | 251 ShareableFileReference::DONT_DELETE_ON_FINAL_RELEASE, |
| 237 task_runner); | 252 task_runner); |
| 238 if (!blob_info.release_callback().is_null()) | 253 if (!blob_info.release_callback().is_null()) |
| 239 shareable_file->AddFinalReleaseCallback(blob_info.release_callback()); | 254 shareable_file->AddFinalReleaseCallback(blob_info.release_callback()); |
| 240 } | 255 } |
| 241 return dispatcher_host->HoldBlobData(blob_info); | 256 return dispatcher_host->HoldBlobData(blob_info); |
| 257 #else |
| 258 return std::string(); |
| 259 #endif |
| 242 } | 260 } |
| 243 | 261 |
| 262 #if 0 |
| 244 static bool CreateAllBlobs( | 263 static bool CreateAllBlobs( |
| 245 const std::vector<IndexedDBBlobInfo>& blob_info, | 264 const std::vector<IndexedDBBlobInfo>& blob_info, |
| 246 std::vector<IndexedDBMsg_BlobOrFileInfo>* blob_or_file_info, | 265 std::vector<IndexedDBMsg_BlobOrFileInfo>* blob_or_file_info, |
| 247 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host) { | 266 scoped_refptr<IndexedDBDispatcherHost> dispatcher_host) { |
| 248 IDB_TRACE("IndexedDBCallbacks::CreateAllBlobs"); | 267 IDB_TRACE("IndexedDBCallbacks::CreateAllBlobs"); |
| 249 DCHECK_EQ(blob_info.size(), blob_or_file_info->size()); | 268 DCHECK_EQ(blob_info.size(), blob_or_file_info->size()); |
| 250 size_t i; | 269 size_t i; |
| 251 if (!dispatcher_host->blob_storage_context()) | 270 if (!dispatcher_host->blob_storage_context()) |
| 252 return false; | 271 return false; |
| 253 for (i = 0; i < blob_info.size(); ++i) { | 272 for (i = 0; i < blob_info.size(); ++i) { |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 316 info.last_modified = iter.last_modified().ToDoubleT(); | 335 info.last_modified = iter.last_modified().ToDoubleT(); |
| 317 blob_or_file_info->push_back(info); | 336 blob_or_file_info->push_back(info); |
| 318 } else { | 337 } else { |
| 319 IndexedDBMsg_BlobOrFileInfo info; | 338 IndexedDBMsg_BlobOrFileInfo info; |
| 320 info.mime_type = iter.type(); | 339 info.mime_type = iter.type(); |
| 321 info.size = iter.size(); | 340 info.size = iter.size(); |
| 322 blob_or_file_info->push_back(info); | 341 blob_or_file_info->push_back(info); |
| 323 } | 342 } |
| 324 } | 343 } |
| 325 } | 344 } |
| 345 #endif |
| 326 | 346 |
| 327 void IndexedDBCallbacks::RegisterBlobsAndSend( | 347 void IndexedDBCallbacks::RegisterBlobsAndSend( |
| 328 const std::vector<IndexedDBBlobInfo>& blob_info, | 348 const std::vector<IndexedDBBlobInfo>& blob_info, |
| 329 const base::Closure& callback) { | 349 const base::Closure& callback) { |
| 330 for (const auto& iter : blob_info) { | 350 for (const auto& iter : blob_info) { |
| 331 if (!iter.mark_used_callback().is_null()) | 351 if (!iter.mark_used_callback().is_null()) |
| 332 iter.mark_used_callback().Run(); | 352 iter.mark_used_callback().Run(); |
| 333 } | 353 } |
| 334 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO)); | 354 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| 335 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, callback); | 355 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, callback); |
| 336 } | 356 } |
| 337 | 357 |
| 338 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | 358 void IndexedDBCallbacks::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, |
| 339 const IndexedDBKey& key, | 359 const IndexedDBKey& key, |
| 340 const IndexedDBKey& primary_key, | 360 const IndexedDBKey& primary_key, |
| 341 IndexedDBValue* value) { | 361 IndexedDBValue* value) { |
| 362 #if 0 |
| 342 DCHECK(dispatcher_host_.get()); | 363 DCHECK(dispatcher_host_.get()); |
| 343 | 364 |
| 344 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 365 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 345 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 366 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 346 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 367 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 347 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 368 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 348 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 369 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 349 | 370 |
| 350 int32_t ipc_object_id = dispatcher_host_->Add(cursor.get()); | 371 int32_t ipc_object_id = dispatcher_host_->Add(cursor.get()); |
| 351 std::unique_ptr<IndexedDBMsg_CallbacksSuccessIDBCursor_Params> params( | 372 std::unique_ptr<IndexedDBMsg_CallbacksSuccessIDBCursor_Params> params( |
| (...skipping 14 matching lines...) Expand all Loading... |
| 366 FillInBlobData(value->blob_info, &p->value.blob_or_file_info); | 387 FillInBlobData(value->blob_info, &p->value.blob_or_file_info); |
| 367 RegisterBlobsAndSend( | 388 RegisterBlobsAndSend( |
| 368 value->blob_info, | 389 value->blob_info, |
| 369 base::Bind( | 390 base::Bind( |
| 370 CreateBlobsAndSend<IndexedDBMsg_CallbacksSuccessIDBCursor_Params, | 391 CreateBlobsAndSend<IndexedDBMsg_CallbacksSuccessIDBCursor_Params, |
| 371 IndexedDBMsg_CallbacksSuccessIDBCursor>, | 392 IndexedDBMsg_CallbacksSuccessIDBCursor>, |
| 372 base::Owned(params.release()), dispatcher_host_, value->blob_info, | 393 base::Owned(params.release()), dispatcher_host_, value->blob_info, |
| 373 base::Unretained(&p->value.blob_or_file_info))); | 394 base::Unretained(&p->value.blob_or_file_info))); |
| 374 } | 395 } |
| 375 dispatcher_host_ = NULL; | 396 dispatcher_host_ = NULL; |
| 397 #endif |
| 376 } | 398 } |
| 377 | 399 |
| 378 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, | 400 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& key, |
| 379 const IndexedDBKey& primary_key, | 401 const IndexedDBKey& primary_key, |
| 380 IndexedDBValue* value) { | 402 IndexedDBValue* value) { |
| 403 #if 0 |
| 381 DCHECK(dispatcher_host_.get()); | 404 DCHECK(dispatcher_host_.get()); |
| 382 | 405 |
| 383 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 406 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 384 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 407 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 385 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 408 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 386 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 409 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 387 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 410 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 388 | 411 |
| 389 IndexedDBCursor* idb_cursor = | 412 IndexedDBCursor* idb_cursor = |
| 390 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); | 413 dispatcher_host_->GetCursorFromId(ipc_cursor_id_); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 413 RegisterBlobsAndSend( | 436 RegisterBlobsAndSend( |
| 414 value->blob_info, | 437 value->blob_info, |
| 415 base::Bind(CreateBlobsAndSend< | 438 base::Bind(CreateBlobsAndSend< |
| 416 IndexedDBMsg_CallbacksSuccessCursorContinue_Params, | 439 IndexedDBMsg_CallbacksSuccessCursorContinue_Params, |
| 417 IndexedDBMsg_CallbacksSuccessCursorContinue>, | 440 IndexedDBMsg_CallbacksSuccessCursorContinue>, |
| 418 base::Owned(params.release()), dispatcher_host_, | 441 base::Owned(params.release()), dispatcher_host_, |
| 419 value->blob_info, | 442 value->blob_info, |
| 420 base::Unretained(&p->value.blob_or_file_info))); | 443 base::Unretained(&p->value.blob_or_file_info))); |
| 421 } | 444 } |
| 422 dispatcher_host_ = NULL; | 445 dispatcher_host_ = NULL; |
| 446 #endif |
| 423 } | 447 } |
| 424 | 448 |
| 425 void IndexedDBCallbacks::OnSuccessWithPrefetch( | 449 void IndexedDBCallbacks::OnSuccessWithPrefetch( |
| 426 const std::vector<IndexedDBKey>& keys, | 450 const std::vector<IndexedDBKey>& keys, |
| 427 const std::vector<IndexedDBKey>& primary_keys, | 451 const std::vector<IndexedDBKey>& primary_keys, |
| 428 std::vector<IndexedDBValue>* values) { | 452 std::vector<IndexedDBValue>* values) { |
| 453 #if 0 |
| 429 DCHECK_EQ(keys.size(), primary_keys.size()); | 454 DCHECK_EQ(keys.size(), primary_keys.size()); |
| 430 DCHECK_EQ(keys.size(), values->size()); | 455 DCHECK_EQ(keys.size(), values->size()); |
| 431 | 456 |
| 432 DCHECK(dispatcher_host_.get()); | 457 DCHECK(dispatcher_host_.get()); |
| 433 | 458 |
| 434 DCHECK_NE(kNoCursor, ipc_cursor_id_); | 459 DCHECK_NE(kNoCursor, ipc_cursor_id_); |
| 435 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 460 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 436 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 461 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 437 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 462 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 438 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 463 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 473 FROM_HERE, | 498 FROM_HERE, |
| 474 base::Bind(BlobLookupForCursorPrefetch, | 499 base::Bind(BlobLookupForCursorPrefetch, |
| 475 base::Owned(params.release()), | 500 base::Owned(params.release()), |
| 476 dispatcher_host_, | 501 dispatcher_host_, |
| 477 *values)); | 502 *values)); |
| 478 } else { | 503 } else { |
| 479 dispatcher_host_->Send( | 504 dispatcher_host_->Send( |
| 480 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(*params.get())); | 505 new IndexedDBMsg_CallbacksSuccessCursorPrefetch(*params.get())); |
| 481 } | 506 } |
| 482 dispatcher_host_ = NULL; | 507 dispatcher_host_ = NULL; |
| 508 #endif |
| 483 } | 509 } |
| 484 | 510 |
| 485 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) { | 511 void IndexedDBCallbacks::OnSuccess(IndexedDBReturnValue* value) { |
| 512 #if 0 |
| 486 DCHECK(dispatcher_host_.get()); | 513 DCHECK(dispatcher_host_.get()); |
| 487 | 514 |
| 488 if (value && value->primary_key.IsValid()) { | 515 if (value && value->primary_key.IsValid()) { |
| 489 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 516 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 490 } else { | 517 } else { |
| 491 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); | 518 DCHECK(kNoCursor == ipc_cursor_id_ || value == NULL); |
| 492 } | 519 } |
| 493 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 520 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 494 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 521 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 495 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 522 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 512 FillInBlobData(value->blob_info, &p->value.blob_or_file_info); | 539 FillInBlobData(value->blob_info, &p->value.blob_or_file_info); |
| 513 RegisterBlobsAndSend( | 540 RegisterBlobsAndSend( |
| 514 value->blob_info, | 541 value->blob_info, |
| 515 base::Bind(CreateBlobsAndSend<IndexedDBMsg_CallbacksSuccessValue_Params, | 542 base::Bind(CreateBlobsAndSend<IndexedDBMsg_CallbacksSuccessValue_Params, |
| 516 IndexedDBMsg_CallbacksSuccessValue>, | 543 IndexedDBMsg_CallbacksSuccessValue>, |
| 517 base::Owned(params.release()), dispatcher_host_, | 544 base::Owned(params.release()), dispatcher_host_, |
| 518 value->blob_info, | 545 value->blob_info, |
| 519 base::Unretained(&p->value.blob_or_file_info))); | 546 base::Unretained(&p->value.blob_or_file_info))); |
| 520 } | 547 } |
| 521 dispatcher_host_ = NULL; | 548 dispatcher_host_ = NULL; |
| 549 #endif |
| 522 } | 550 } |
| 523 | 551 |
| 524 void IndexedDBCallbacks::OnSuccessArray( | 552 void IndexedDBCallbacks::OnSuccessArray( |
| 525 std::vector<IndexedDBReturnValue>* values, | 553 std::vector<IndexedDBReturnValue>* values, |
| 526 const IndexedDBKeyPath& key_path) { | 554 const IndexedDBKeyPath& key_path) { |
| 555 #if 0 |
| 527 DCHECK(dispatcher_host_.get()); | 556 DCHECK(dispatcher_host_.get()); |
| 528 | 557 |
| 529 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 558 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 530 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 559 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 531 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 560 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 532 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 561 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 533 | 562 |
| 534 std::unique_ptr<IndexedDBMsg_CallbacksSuccessArray_Params> params( | 563 std::unique_ptr<IndexedDBMsg_CallbacksSuccessArray_Params> params( |
| 535 new IndexedDBMsg_CallbacksSuccessArray_Params()); | 564 new IndexedDBMsg_CallbacksSuccessArray_Params()); |
| 536 params->ipc_thread_id = ipc_thread_id_; | 565 params->ipc_thread_id = ipc_thread_id_; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 557 if (found_blob_info) { | 586 if (found_blob_info) { |
| 558 BrowserThread::PostTask( | 587 BrowserThread::PostTask( |
| 559 BrowserThread::IO, FROM_HERE, | 588 BrowserThread::IO, FROM_HERE, |
| 560 base::Bind(BlobLookupForGetAll, base::Owned(params.release()), | 589 base::Bind(BlobLookupForGetAll, base::Owned(params.release()), |
| 561 dispatcher_host_, *values)); | 590 dispatcher_host_, *values)); |
| 562 } else { | 591 } else { |
| 563 dispatcher_host_->Send( | 592 dispatcher_host_->Send( |
| 564 new IndexedDBMsg_CallbacksSuccessArray(*params.get())); | 593 new IndexedDBMsg_CallbacksSuccessArray(*params.get())); |
| 565 } | 594 } |
| 566 dispatcher_host_ = NULL; | 595 dispatcher_host_ = NULL; |
| 596 #endif |
| 567 } | 597 } |
| 568 | 598 |
| 569 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { | 599 void IndexedDBCallbacks::OnSuccess(const IndexedDBKey& value) { |
| 600 #if 0 |
| 570 DCHECK(dispatcher_host_.get()); | 601 DCHECK(dispatcher_host_.get()); |
| 571 | 602 |
| 572 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 603 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 573 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 604 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 574 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 605 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 575 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 606 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 576 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 607 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 577 | 608 |
| 578 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( | 609 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessIndexedDBKey( |
| 579 ipc_thread_id_, ipc_callbacks_id_, value)); | 610 ipc_thread_id_, ipc_callbacks_id_, value)); |
| 580 dispatcher_host_ = NULL; | 611 dispatcher_host_ = NULL; |
| 612 #endif |
| 581 } | 613 } |
| 582 | 614 |
| 583 void IndexedDBCallbacks::OnSuccess(int64_t value) { | 615 void IndexedDBCallbacks::OnSuccess(int64_t value) { |
| 616 #if 0 |
| 584 DCHECK(dispatcher_host_.get()); | 617 DCHECK(dispatcher_host_.get()); |
| 585 | 618 |
| 586 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 619 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 587 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 620 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 588 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 621 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 589 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 622 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 590 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 623 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 591 | 624 |
| 592 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( | 625 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessInteger( |
| 593 ipc_thread_id_, ipc_callbacks_id_, value)); | 626 ipc_thread_id_, ipc_callbacks_id_, value)); |
| 594 dispatcher_host_ = NULL; | 627 dispatcher_host_ = NULL; |
| 628 #endif |
| 595 } | 629 } |
| 596 | 630 |
| 597 void IndexedDBCallbacks::OnSuccess() { | 631 void IndexedDBCallbacks::OnSuccess() { |
| 632 #if 0 |
| 598 DCHECK(dispatcher_host_.get()); | 633 DCHECK(dispatcher_host_.get()); |
| 599 | 634 |
| 600 DCHECK_EQ(kNoCursor, ipc_cursor_id_); | 635 DCHECK_EQ(kNoCursor, ipc_cursor_id_); |
| 601 DCHECK_EQ(kNoTransaction, host_transaction_id_); | 636 DCHECK_EQ(kNoTransaction, host_transaction_id_); |
| 602 DCHECK_EQ(kNoDatabase, ipc_database_id_); | 637 DCHECK_EQ(kNoDatabase, ipc_database_id_); |
| 603 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); | 638 DCHECK_EQ(kNoDatabaseCallbacks, ipc_database_callbacks_id_); |
| 604 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); | 639 DCHECK_EQ(blink::WebIDBDataLossNone, data_loss_); |
| 605 | 640 |
| 606 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( | 641 dispatcher_host_->Send(new IndexedDBMsg_CallbacksSuccessUndefined( |
| 607 ipc_thread_id_, ipc_callbacks_id_)); | 642 ipc_thread_id_, ipc_callbacks_id_)); |
| 608 dispatcher_host_ = NULL; | 643 dispatcher_host_ = NULL; |
| 644 #endif |
| 609 } | 645 } |
| 610 | 646 |
| 611 void IndexedDBCallbacks::SetConnectionOpenStartTime( | 647 void IndexedDBCallbacks::SetConnectionOpenStartTime( |
| 612 const base::TimeTicks& start_time) { | 648 const base::TimeTicks& start_time) { |
| 613 connection_open_start_time_ = start_time; | 649 connection_open_start_time_ = start_time; |
| 614 } | 650 } |
| 615 | 651 |
| 616 } // namespace content | 652 } // namespace content |
| OLD | NEW |