OLD | NEW |
---|---|
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" | 5 #include "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "chrome/browser/chrome_thread.h" | 8 #include "chrome/browser/chrome_thread.h" |
9 #include "chrome/browser/in_process_webkit/indexed_db_callbacks.h" | 9 #include "chrome/browser/in_process_webkit/indexed_db_callbacks.h" |
10 #include "chrome/browser/renderer_host/browser_render_process_host.h" | 10 #include "chrome/browser/renderer_host/browser_render_process_host.h" |
11 #include "chrome/browser/renderer_host/resource_message_filter.h" | 11 #include "chrome/browser/renderer_host/resource_message_filter.h" |
12 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
13 #include "chrome/common/render_messages.h" | 13 #include "chrome/common/render_messages.h" |
14 #include "chrome/common/serialized_script_value.h" | 14 #include "chrome/common/serialized_script_value.h" |
15 #include "third_party/WebKit/WebKit/chromium/public/WebDOMStringList.h" | 15 #include "third_party/WebKit/WebKit/chromium/public/WebDOMStringList.h" |
16 #include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabase.h" | 16 #include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabase.h" |
17 #include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabaseError.h" | 17 #include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabaseError.h" |
18 #include "third_party/WebKit/WebKit/chromium/public/WebIDBIndex.h" | 18 #include "third_party/WebKit/WebKit/chromium/public/WebIDBIndex.h" |
19 #include "third_party/WebKit/WebKit/chromium/public/WebIDBFactory.h" | 19 #include "third_party/WebKit/WebKit/chromium/public/WebIDBFactory.h" |
20 #include "third_party/WebKit/WebKit/chromium/public/WebIDBObjectStore.h" | 20 #include "third_party/WebKit/WebKit/chromium/public/WebIDBObjectStore.h" |
21 #include "third_party/WebKit/WebKit/chromium/public/WebIDBTransaction.h" | |
21 #include "third_party/WebKit/WebKit/chromium/public/WebSecurityOrigin.h" | 22 #include "third_party/WebKit/WebKit/chromium/public/WebSecurityOrigin.h" |
23 #include "third_party/WebKit/WebKit/chromium/public/WebVector.h" | |
22 | 24 |
23 using WebKit::WebDOMStringList; | 25 using WebKit::WebDOMStringList; |
24 using WebKit::WebIDBDatabase; | 26 using WebKit::WebIDBDatabase; |
25 using WebKit::WebIDBDatabaseError; | 27 using WebKit::WebIDBDatabaseError; |
26 using WebKit::WebIDBIndex; | 28 using WebKit::WebIDBIndex; |
27 using WebKit::WebIDBKey; | 29 using WebKit::WebIDBKey; |
28 using WebKit::WebIDBObjectStore; | 30 using WebKit::WebIDBObjectStore; |
31 using WebKit::WebIDBTransaction; | |
29 using WebKit::WebSecurityOrigin; | 32 using WebKit::WebSecurityOrigin; |
30 using WebKit::WebSerializedScriptValue; | 33 using WebKit::WebSerializedScriptValue; |
34 using WebKit::WebVector; | |
31 | 35 |
32 IndexedDBDispatcherHost::IndexedDBDispatcherHost( | 36 IndexedDBDispatcherHost::IndexedDBDispatcherHost( |
33 IPC::Message::Sender* sender, WebKitContext* webkit_context) | 37 IPC::Message::Sender* sender, WebKitContext* webkit_context) |
34 : sender_(sender), | 38 : sender_(sender), |
35 webkit_context_(webkit_context), | 39 webkit_context_(webkit_context), |
36 ALLOW_THIS_IN_INITIALIZER_LIST(database_dispatcher_host_( | 40 ALLOW_THIS_IN_INITIALIZER_LIST(database_dispatcher_host_( |
37 new DatabaseDispatcherHost(this))), | 41 new DatabaseDispatcherHost(this))), |
38 ALLOW_THIS_IN_INITIALIZER_LIST(index_dispatcher_host_( | 42 ALLOW_THIS_IN_INITIALIZER_LIST(index_dispatcher_host_( |
39 new IndexDispatcherHost(this))), | 43 new IndexDispatcherHost(this))), |
40 ALLOW_THIS_IN_INITIALIZER_LIST(object_store_dispatcher_host_( | 44 ALLOW_THIS_IN_INITIALIZER_LIST(object_store_dispatcher_host_( |
41 new ObjectStoreDispatcherHost(this))), | 45 new ObjectStoreDispatcherHost(this))), |
46 ALLOW_THIS_IN_INITIALIZER_LIST(transaction_dispatcher_host_( | |
47 new TransactionDispatcherHost(this))), | |
42 process_handle_(0) { | 48 process_handle_(0) { |
43 DCHECK(sender_); | 49 DCHECK(sender_); |
44 DCHECK(webkit_context_.get()); | 50 DCHECK(webkit_context_.get()); |
45 } | 51 } |
46 | 52 |
47 IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { | 53 IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { |
48 } | 54 } |
49 | 55 |
50 void IndexedDBDispatcherHost::Init(int process_id, | 56 void IndexedDBDispatcherHost::Init(int process_id, |
51 base::ProcessHandle process_handle) { | 57 base::ProcessHandle process_handle) { |
(...skipping 23 matching lines...) Expand all Loading... | |
75 database_dispatcher_host_.reset(); | 81 database_dispatcher_host_.reset(); |
76 index_dispatcher_host_.reset(); | 82 index_dispatcher_host_.reset(); |
77 } | 83 } |
78 | 84 |
79 bool IndexedDBDispatcherHost::OnMessageReceived(const IPC::Message& message) { | 85 bool IndexedDBDispatcherHost::OnMessageReceived(const IPC::Message& message) { |
80 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); | 86 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::IO)); |
81 DCHECK(process_handle_); | 87 DCHECK(process_handle_); |
82 | 88 |
83 switch (message.type()) { | 89 switch (message.type()) { |
84 case ViewHostMsg_IDBFactoryOpen::ID: | 90 case ViewHostMsg_IDBFactoryOpen::ID: |
91 case ViewHostMsg_IDBFactoryAbortPendingTransactions::ID: | |
85 case ViewHostMsg_IDBDatabaseName::ID: | 92 case ViewHostMsg_IDBDatabaseName::ID: |
86 case ViewHostMsg_IDBDatabaseDescription::ID: | 93 case ViewHostMsg_IDBDatabaseDescription::ID: |
87 case ViewHostMsg_IDBDatabaseVersion::ID: | 94 case ViewHostMsg_IDBDatabaseVersion::ID: |
88 case ViewHostMsg_IDBDatabaseObjectStores::ID: | 95 case ViewHostMsg_IDBDatabaseObjectStores::ID: |
89 case ViewHostMsg_IDBDatabaseCreateObjectStore::ID: | 96 case ViewHostMsg_IDBDatabaseCreateObjectStore::ID: |
90 case ViewHostMsg_IDBDatabaseObjectStore::ID: | 97 case ViewHostMsg_IDBDatabaseObjectStore::ID: |
91 case ViewHostMsg_IDBDatabaseRemoveObjectStore::ID: | 98 case ViewHostMsg_IDBDatabaseRemoveObjectStore::ID: |
99 case ViewHostMsg_IDBDatabaseTransaction::ID: | |
92 case ViewHostMsg_IDBDatabaseDestroyed::ID: | 100 case ViewHostMsg_IDBDatabaseDestroyed::ID: |
93 case ViewHostMsg_IDBIndexName::ID: | 101 case ViewHostMsg_IDBIndexName::ID: |
94 case ViewHostMsg_IDBIndexKeyPath::ID: | 102 case ViewHostMsg_IDBIndexKeyPath::ID: |
95 case ViewHostMsg_IDBIndexUnique::ID: | 103 case ViewHostMsg_IDBIndexUnique::ID: |
96 case ViewHostMsg_IDBIndexDestroyed::ID: | 104 case ViewHostMsg_IDBIndexDestroyed::ID: |
97 case ViewHostMsg_IDBObjectStoreName::ID: | 105 case ViewHostMsg_IDBObjectStoreName::ID: |
98 case ViewHostMsg_IDBObjectStoreKeyPath::ID: | 106 case ViewHostMsg_IDBObjectStoreKeyPath::ID: |
99 case ViewHostMsg_IDBObjectStoreIndexNames::ID: | 107 case ViewHostMsg_IDBObjectStoreIndexNames::ID: |
100 case ViewHostMsg_IDBObjectStoreGet::ID: | 108 case ViewHostMsg_IDBObjectStoreGet::ID: |
101 case ViewHostMsg_IDBObjectStorePut::ID: | 109 case ViewHostMsg_IDBObjectStorePut::ID: |
102 case ViewHostMsg_IDBObjectStoreRemove::ID: | 110 case ViewHostMsg_IDBObjectStoreRemove::ID: |
103 case ViewHostMsg_IDBObjectStoreCreateIndex::ID: | 111 case ViewHostMsg_IDBObjectStoreCreateIndex::ID: |
104 case ViewHostMsg_IDBObjectStoreIndex::ID: | 112 case ViewHostMsg_IDBObjectStoreIndex::ID: |
105 case ViewHostMsg_IDBObjectStoreRemoveIndex::ID: | 113 case ViewHostMsg_IDBObjectStoreRemoveIndex::ID: |
106 case ViewHostMsg_IDBObjectStoreDestroyed::ID: | 114 case ViewHostMsg_IDBObjectStoreDestroyed::ID: |
115 case ViewHostMsg_IDBTransactionDestroyed::ID: | |
107 break; | 116 break; |
108 default: | 117 default: |
109 return false; | 118 return false; |
110 } | 119 } |
111 | 120 |
112 bool success = ChromeThread::PostTask( | 121 bool success = ChromeThread::PostTask( |
113 ChromeThread::WEBKIT, FROM_HERE, NewRunnableMethod( | 122 ChromeThread::WEBKIT, FROM_HERE, NewRunnableMethod( |
114 this, &IndexedDBDispatcherHost::OnMessageReceivedWebKit, message)); | 123 this, &IndexedDBDispatcherHost::OnMessageReceivedWebKit, message)); |
115 DCHECK(success); | 124 DCHECK(success); |
116 return true; | 125 return true; |
(...skipping 23 matching lines...) Expand all Loading... | |
140 | 149 |
141 void IndexedDBDispatcherHost::OnMessageReceivedWebKit( | 150 void IndexedDBDispatcherHost::OnMessageReceivedWebKit( |
142 const IPC::Message& message) { | 151 const IPC::Message& message) { |
143 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); | 152 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); |
144 DCHECK(process_handle_); | 153 DCHECK(process_handle_); |
145 | 154 |
146 bool msg_is_ok = true; | 155 bool msg_is_ok = true; |
147 bool handled = | 156 bool handled = |
148 database_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 157 database_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
149 index_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || | 158 index_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
150 object_store_dispatcher_host_->OnMessageReceived(message, &msg_is_ok); | 159 object_store_dispatcher_host_->OnMessageReceived(message, &msg_is_ok) || |
160 transaction_dispatcher_host_->OnMessageReceived(message, &msg_is_ok); | |
151 | 161 |
152 if (!handled) { | 162 if (!handled) { |
153 handled = true; | 163 handled = true; |
154 DCHECK(msg_is_ok); | 164 DCHECK(msg_is_ok); |
155 IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost, message, msg_is_ok) | 165 IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost, message, msg_is_ok) |
156 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBFactoryOpen, | 166 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBFactoryOpen, |
157 OnIDBFactoryOpen) | 167 OnIDBFactoryOpen) |
168 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBFactoryAbortPendingTransactions, | |
169 OnIDBFactoryAbortPendingTransactions) | |
158 IPC_MESSAGE_UNHANDLED(handled = false) | 170 IPC_MESSAGE_UNHANDLED(handled = false) |
159 IPC_END_MESSAGE_MAP() | 171 IPC_END_MESSAGE_MAP() |
160 } | 172 } |
161 | 173 |
162 DCHECK(handled); | 174 DCHECK(handled); |
163 if (!msg_is_ok) { | 175 if (!msg_is_ok) { |
164 BrowserRenderProcessHost::BadMessageTerminateProcess(message.type(), | 176 BrowserRenderProcessHost::BadMessageTerminateProcess(message.type(), |
165 process_handle_); | 177 process_handle_); |
166 } | 178 } |
167 } | 179 } |
168 | 180 |
169 int32 IndexedDBDispatcherHost::Add(WebIDBDatabase* idb_database) { | 181 int32 IndexedDBDispatcherHost::Add(WebIDBDatabase* idb_database) { |
170 return database_dispatcher_host_->map_.Add(idb_database); | 182 return database_dispatcher_host_->map_.Add(idb_database); |
171 } | 183 } |
172 | 184 |
173 int32 IndexedDBDispatcherHost::Add(WebIDBIndex* idb_index) { | 185 int32 IndexedDBDispatcherHost::Add(WebIDBIndex* idb_index) { |
174 return index_dispatcher_host_->map_.Add(idb_index); | 186 return index_dispatcher_host_->map_.Add(idb_index); |
175 } | 187 } |
176 | 188 |
177 int32 IndexedDBDispatcherHost::Add(WebIDBObjectStore* idb_object_store) { | 189 int32 IndexedDBDispatcherHost::Add(WebIDBObjectStore* idb_object_store) { |
178 return object_store_dispatcher_host_->map_.Add(idb_object_store); | 190 return object_store_dispatcher_host_->map_.Add(idb_object_store); |
179 } | 191 } |
180 | 192 |
193 void IndexedDBDispatcherHost::Add(WebIDBTransaction* idb_transaction) { | |
194 transaction_dispatcher_host_->map_.AddWithID( | |
195 idb_transaction, idb_transaction->id()); | |
196 } | |
197 | |
181 void IndexedDBDispatcherHost::OnIDBFactoryOpen( | 198 void IndexedDBDispatcherHost::OnIDBFactoryOpen( |
182 const ViewHostMsg_IDBFactoryOpen_Params& params) { | 199 const ViewHostMsg_IDBFactoryOpen_Params& params) { |
183 // TODO(jorlow): Check the content settings map and use params.routing_id_ | 200 // TODO(jorlow): Check the content settings map and use params.routing_id_ |
184 // if it's necessary to ask the user for permission. | 201 // if it's necessary to ask the user for permission. |
185 | 202 |
186 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); | 203 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); |
187 Context()->GetIDBFactory()->open( | 204 Context()->GetIDBFactory()->open( |
188 params.name_, params.description_, | 205 params.name_, params.description_, |
189 new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id_), | 206 new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id_), |
190 WebSecurityOrigin::createFromDatabaseIdentifier(params.origin_), NULL); | 207 WebSecurityOrigin::createFromDatabaseIdentifier(params.origin_), NULL); |
191 } | 208 } |
192 | 209 |
210 void IndexedDBDispatcherHost::OnIDBFactoryAbortPendingTransactions( | |
211 const std::vector<int32>& ids) { | |
212 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); | |
213 | |
214 WebVector<int32> pendingIDs = ids; | |
215 Context()->GetIDBFactory()->abortPendingTransactions(pendingIDs); | |
216 } | |
217 | |
193 ////////////////////////////////////////////////////////////////////// | 218 ////////////////////////////////////////////////////////////////////// |
194 // Helper templates. | 219 // Helper templates. |
195 // | 220 // |
196 | 221 |
197 template <typename ObjectType> | 222 template <typename ObjectType> |
198 ObjectType* IndexedDBDispatcherHost::GetOrTerminateProcess( | 223 ObjectType* IndexedDBDispatcherHost::GetOrTerminateProcess( |
199 IDMap<ObjectType, IDMapOwnPointer>* map, int32 return_object_id, | 224 IDMap<ObjectType, IDMapOwnPointer>* map, int32 return_object_id, |
200 IPC::Message* reply_msg, uint32 message_type) { | 225 IPC::Message* reply_msg, uint32 message_type) { |
201 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); | 226 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); |
202 ObjectType* return_object = map->Lookup(return_object_id); | 227 ObjectType* return_object = map->Lookup(return_object_id); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
254 OnDescription) | 279 OnDescription) |
255 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseVersion, OnVersion) | 280 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseVersion, OnVersion) |
256 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseObjectStores, | 281 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseObjectStores, |
257 OnObjectStores) | 282 OnObjectStores) |
258 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseCreateObjectStore, | 283 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseCreateObjectStore, |
259 OnCreateObjectStore) | 284 OnCreateObjectStore) |
260 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseObjectStore, | 285 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseObjectStore, |
261 OnObjectStore) | 286 OnObjectStore) |
262 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseRemoveObjectStore, | 287 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseRemoveObjectStore, |
263 OnRemoveObjectStore) | 288 OnRemoveObjectStore) |
289 IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_IDBDatabaseTransaction, | |
290 OnTransaction) | |
264 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseDestroyed, OnDestroyed) | 291 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBDatabaseDestroyed, OnDestroyed) |
265 IPC_MESSAGE_UNHANDLED(handled = false) | 292 IPC_MESSAGE_UNHANDLED(handled = false) |
266 IPC_END_MESSAGE_MAP() | 293 IPC_END_MESSAGE_MAP() |
267 return handled; | 294 return handled; |
268 } | 295 } |
269 | 296 |
270 void IndexedDBDispatcherHost::DatabaseDispatcherHost::Send( | 297 void IndexedDBDispatcherHost::DatabaseDispatcherHost::Send( |
271 IPC::Message* message) { | 298 IPC::Message* message) { |
272 // The macro magic in OnMessageReceived requires this to link, but it should | 299 // The macro magic in OnMessageReceived requires this to link, but it should |
273 // never actually be called. | 300 // never actually be called. |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
345 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); | 372 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); |
346 WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( | 373 WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( |
347 &map_, idb_database_id, NULL, | 374 &map_, idb_database_id, NULL, |
348 ViewHostMsg_IDBDatabaseRemoveObjectStore::ID); | 375 ViewHostMsg_IDBDatabaseRemoveObjectStore::ID); |
349 if (!idb_database) | 376 if (!idb_database) |
350 return; | 377 return; |
351 idb_database->removeObjectStore( | 378 idb_database->removeObjectStore( |
352 name, new IndexedDBCallbacks<WebIDBObjectStore>(parent_, response_id)); | 379 name, new IndexedDBCallbacks<WebIDBObjectStore>(parent_, response_id)); |
353 } | 380 } |
354 | 381 |
382 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnTransaction( | |
383 int32 idb_database_id, const std::vector<string16>& names, | |
384 int32 mode, int32 timeout, IPC::Message* reply_msg) { | |
385 WebIDBDatabase* database = parent_->GetOrTerminateProcess( | |
386 &map_, idb_database_id, reply_msg, | |
387 ViewHostMsg_IDBDatabaseTransaction::ID); | |
388 if (!database) | |
389 return; | |
390 | |
391 WebDOMStringList object_stores; | |
392 for (std::vector<string16>::const_iterator it = names.begin(); | |
393 it != names.end(); ++it) { | |
394 object_stores.append(*it); | |
395 } | |
396 | |
397 WebIDBTransaction* transaction = database->transaction( | |
398 object_stores, mode, timeout); | |
399 transaction->setCallbacks( | |
400 new IndexedDBTransactionCallbacks(parent_, transaction->id())); | |
401 parent_->Add(transaction); | |
402 ViewHostMsg_IDBDatabaseTransaction::WriteReplyParams( | |
403 reply_msg, transaction->id()); | |
404 parent_->Send(reply_msg); | |
405 } | |
406 | |
355 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDestroyed( | 407 void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDestroyed( |
356 int32 object_id) { | 408 int32 object_id) { |
357 parent_->DestroyObject(&map_, object_id, | 409 parent_->DestroyObject(&map_, object_id, |
358 ViewHostMsg_IDBDatabaseDestroyed::ID); | 410 ViewHostMsg_IDBDatabaseDestroyed::ID); |
359 } | 411 } |
360 | 412 |
361 | 413 |
362 ////////////////////////////////////////////////////////////////////// | 414 ////////////////////////////////////////////////////////////////////// |
363 // IndexedDBDispatcherHost::IndexDispatcherHost | 415 // IndexedDBDispatcherHost::IndexDispatcherHost |
364 // | 416 // |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
563 return; | 615 return; |
564 idb_object_store->removeIndex( | 616 idb_object_store->removeIndex( |
565 name, new IndexedDBCallbacks<void>(parent_, response_id)); | 617 name, new IndexedDBCallbacks<void>(parent_, response_id)); |
566 } | 618 } |
567 | 619 |
568 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( | 620 void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( |
569 int32 object_id) { | 621 int32 object_id) { |
570 parent_->DestroyObject( | 622 parent_->DestroyObject( |
571 &map_, object_id, ViewHostMsg_IDBObjectStoreDestroyed::ID); | 623 &map_, object_id, ViewHostMsg_IDBObjectStoreDestroyed::ID); |
572 } | 624 } |
625 | |
626 ////////////////////////////////////////////////////////////////////// | |
627 // IndexedDBDispatcherHost::TransactionDispatcherHost | |
628 // | |
629 | |
630 IndexedDBDispatcherHost::TransactionDispatcherHost::TransactionDispatcherHost( | |
631 IndexedDBDispatcherHost* parent) | |
632 : parent_(parent) { | |
633 } | |
634 | |
635 IndexedDBDispatcherHost::TransactionDispatcherHost:: | |
jorlow
2010/08/19 13:05:34
I've been told to do the following in such cases:
| |
636 ~TransactionDispatcherHost() { | |
637 } | |
638 | |
639 bool IndexedDBDispatcherHost::TransactionDispatcherHost::OnMessageReceived( | |
640 const IPC::Message& message, bool* msg_is_ok) { | |
641 bool handled = true; | |
642 IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::TransactionDispatcherHost, | |
643 message, *msg_is_ok) | |
644 IPC_MESSAGE_HANDLER(ViewHostMsg_IDBTransactionDestroyed, OnDestroyed) | |
645 IPC_MESSAGE_UNHANDLED(handled = false) | |
646 IPC_END_MESSAGE_MAP() | |
647 return handled; | |
648 } | |
649 | |
650 void IndexedDBDispatcherHost::TransactionDispatcherHost::Send( | |
651 IPC::Message* message) { | |
652 // The macro magic in OnMessageReceived requires this to link, but it should | |
653 // never actually be called. | |
654 NOTREACHED(); | |
655 parent_->Send(message); | |
656 } | |
657 | |
658 void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( | |
659 int32 object_id) { | |
660 parent_->DestroyObject( | |
661 &map_, object_id, ViewHostMsg_IDBTransactionDestroyed::ID); | |
662 } | |
OLD | NEW |