| 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 "content/renderer/renderer_webidbobjectstore_impl.h" | 5 #include "content/renderer/renderer_webidbobjectstore_impl.h" |
| 6 | 6 |
| 7 #include "content/common/indexed_db_messages.h" | 7 #include "content/common/indexed_db_messages.h" |
| 8 #include "content/public/common/serialized_script_value.h" | 8 #include "content/public/common/serialized_script_value.h" |
| 9 #include "content/renderer/indexed_db_dispatcher.h" | 9 #include "content/renderer/indexed_db_dispatcher.h" |
| 10 #include "content/renderer/render_thread_impl.h" | 10 #include "content/renderer/render_thread_impl.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 31 RendererWebIDBObjectStoreImpl::RendererWebIDBObjectStoreImpl( | 31 RendererWebIDBObjectStoreImpl::RendererWebIDBObjectStoreImpl( |
| 32 int32 idb_object_store_id) | 32 int32 idb_object_store_id) |
| 33 : idb_object_store_id_(idb_object_store_id) { | 33 : idb_object_store_id_(idb_object_store_id) { |
| 34 } | 34 } |
| 35 | 35 |
| 36 RendererWebIDBObjectStoreImpl::~RendererWebIDBObjectStoreImpl() { | 36 RendererWebIDBObjectStoreImpl::~RendererWebIDBObjectStoreImpl() { |
| 37 // It's not possible for there to be pending callbacks that address this | 37 // It's not possible for there to be pending callbacks that address this |
| 38 // object since inside WebKit, they hold a reference to the object wich owns | 38 // object since inside WebKit, they hold a reference to the object wich owns |
| 39 // this object. But, if that ever changed, then we'd need to invalidate | 39 // this object. But, if that ever changed, then we'd need to invalidate |
| 40 // any such pointers. | 40 // any such pointers. |
| 41 RenderThreadImpl::current()->Send( | 41 ChildThread::current()->Send( |
| 42 new IndexedDBHostMsg_ObjectStoreDestroyed(idb_object_store_id_)); | 42 new IndexedDBHostMsg_ObjectStoreDestroyed(idb_object_store_id_)); |
| 43 } | 43 } |
| 44 | 44 |
| 45 WebString RendererWebIDBObjectStoreImpl::name() const { | 45 WebString RendererWebIDBObjectStoreImpl::name() const { |
| 46 string16 result; | 46 string16 result; |
| 47 RenderThreadImpl::current()->Send( | 47 ChildThread::current()->Send( |
| 48 new IndexedDBHostMsg_ObjectStoreName(idb_object_store_id_, &result)); | 48 new IndexedDBHostMsg_ObjectStoreName(idb_object_store_id_, &result)); |
| 49 return result; | 49 return result; |
| 50 } | 50 } |
| 51 | 51 |
| 52 WebString RendererWebIDBObjectStoreImpl::keyPath() const { | 52 WebString RendererWebIDBObjectStoreImpl::keyPath() const { |
| 53 NullableString16 result; | 53 NullableString16 result; |
| 54 RenderThreadImpl::current()->Send( | 54 ChildThread::current()->Send( |
| 55 new IndexedDBHostMsg_ObjectStoreKeyPath(idb_object_store_id_, &result)); | 55 new IndexedDBHostMsg_ObjectStoreKeyPath(idb_object_store_id_, &result)); |
| 56 return result; | 56 return result; |
| 57 } | 57 } |
| 58 | 58 |
| 59 WebDOMStringList RendererWebIDBObjectStoreImpl::indexNames() const { | 59 WebDOMStringList RendererWebIDBObjectStoreImpl::indexNames() const { |
| 60 std::vector<string16> result; | 60 std::vector<string16> result; |
| 61 RenderThreadImpl::current()->Send( | 61 ChildThread::current()->Send( |
| 62 new IndexedDBHostMsg_ObjectStoreIndexNames( | 62 new IndexedDBHostMsg_ObjectStoreIndexNames( |
| 63 idb_object_store_id_, &result)); | 63 idb_object_store_id_, &result)); |
| 64 WebDOMStringList web_result; | 64 WebDOMStringList web_result; |
| 65 for (std::vector<string16>::const_iterator it = result.begin(); | 65 for (std::vector<string16>::const_iterator it = result.begin(); |
| 66 it != result.end(); ++it) { | 66 it != result.end(); ++it) { |
| 67 web_result.append(*it); | 67 web_result.append(*it); |
| 68 } | 68 } |
| 69 return web_result; | 69 return web_result; |
| 70 } | 70 } |
| 71 | 71 |
| 72 void RendererWebIDBObjectStoreImpl::get( | 72 void RendererWebIDBObjectStoreImpl::get( |
| 73 const WebIDBKey& key, | 73 const WebIDBKey& key, |
| 74 WebIDBCallbacks* callbacks, | 74 WebIDBCallbacks* callbacks, |
| 75 const WebIDBTransaction& transaction, | 75 const WebIDBTransaction& transaction, |
| 76 WebExceptionCode& ec) { | 76 WebExceptionCode& ec) { |
| 77 IndexedDBDispatcher* dispatcher = | 77 IndexedDBDispatcher* dispatcher = |
| 78 RenderThreadImpl::current()->indexed_db_dispatcher(); | 78 ChildThread::current()->indexed_db_dispatcher(); |
| 79 dispatcher->RequestIDBObjectStoreGet( | 79 dispatcher->RequestIDBObjectStoreGet( |
| 80 IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); | 80 IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); |
| 81 } | 81 } |
| 82 | 82 |
| 83 void RendererWebIDBObjectStoreImpl::put( | 83 void RendererWebIDBObjectStoreImpl::put( |
| 84 const WebSerializedScriptValue& value, | 84 const WebSerializedScriptValue& value, |
| 85 const WebIDBKey& key, | 85 const WebIDBKey& key, |
| 86 PutMode put_mode, | 86 PutMode put_mode, |
| 87 WebIDBCallbacks* callbacks, | 87 WebIDBCallbacks* callbacks, |
| 88 const WebIDBTransaction& transaction, | 88 const WebIDBTransaction& transaction, |
| 89 WebExceptionCode& ec) { | 89 WebExceptionCode& ec) { |
| 90 IndexedDBDispatcher* dispatcher = | 90 IndexedDBDispatcher* dispatcher = |
| 91 RenderThreadImpl::current()->indexed_db_dispatcher(); | 91 ChildThread::current()->indexed_db_dispatcher(); |
| 92 dispatcher->RequestIDBObjectStorePut( | 92 dispatcher->RequestIDBObjectStorePut( |
| 93 content::SerializedScriptValue(value), IndexedDBKey(key), put_mode, | 93 content::SerializedScriptValue(value), IndexedDBKey(key), put_mode, |
| 94 callbacks, idb_object_store_id_, transaction, &ec); | 94 callbacks, idb_object_store_id_, transaction, &ec); |
| 95 } | 95 } |
| 96 | 96 |
| 97 void RendererWebIDBObjectStoreImpl::deleteFunction( | 97 void RendererWebIDBObjectStoreImpl::deleteFunction( |
| 98 const WebIDBKey& key, | 98 const WebIDBKey& key, |
| 99 WebIDBCallbacks* callbacks, | 99 WebIDBCallbacks* callbacks, |
| 100 const WebIDBTransaction& transaction, | 100 const WebIDBTransaction& transaction, |
| 101 WebExceptionCode& ec) { | 101 WebExceptionCode& ec) { |
| 102 IndexedDBDispatcher* dispatcher = | 102 IndexedDBDispatcher* dispatcher = |
| 103 RenderThreadImpl::current()->indexed_db_dispatcher(); | 103 ChildThread::current()->indexed_db_dispatcher(); |
| 104 dispatcher->RequestIDBObjectStoreDelete( | 104 dispatcher->RequestIDBObjectStoreDelete( |
| 105 IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); | 105 IndexedDBKey(key), callbacks, idb_object_store_id_, transaction, &ec); |
| 106 } | 106 } |
| 107 | 107 |
| 108 void RendererWebIDBObjectStoreImpl::clear( | 108 void RendererWebIDBObjectStoreImpl::clear( |
| 109 WebIDBCallbacks* callbacks, | 109 WebIDBCallbacks* callbacks, |
| 110 const WebIDBTransaction& transaction, | 110 const WebIDBTransaction& transaction, |
| 111 WebExceptionCode& ec) { | 111 WebExceptionCode& ec) { |
| 112 IndexedDBDispatcher* dispatcher = | 112 IndexedDBDispatcher* dispatcher = |
| 113 RenderThreadImpl::current()->indexed_db_dispatcher(); | 113 ChildThread::current()->indexed_db_dispatcher(); |
| 114 dispatcher->RequestIDBObjectStoreClear( | 114 dispatcher->RequestIDBObjectStoreClear( |
| 115 callbacks, idb_object_store_id_, transaction, &ec); | 115 callbacks, idb_object_store_id_, transaction, &ec); |
| 116 } | 116 } |
| 117 | 117 |
| 118 WebIDBIndex* RendererWebIDBObjectStoreImpl::createIndex( | 118 WebIDBIndex* RendererWebIDBObjectStoreImpl::createIndex( |
| 119 const WebString& name, | 119 const WebString& name, |
| 120 const WebString& key_path, | 120 const WebString& key_path, |
| 121 bool unique, | 121 bool unique, |
| 122 const WebIDBTransaction& transaction, | 122 const WebIDBTransaction& transaction, |
| 123 WebExceptionCode& ec) { | 123 WebExceptionCode& ec) { |
| 124 IndexedDBHostMsg_ObjectStoreCreateIndex_Params params; | 124 IndexedDBHostMsg_ObjectStoreCreateIndex_Params params; |
| 125 params.name = name; | 125 params.name = name; |
| 126 params.key_path = key_path; | 126 params.key_path = key_path; |
| 127 params.unique = unique; | 127 params.unique = unique; |
| 128 params.transaction_id = IndexedDBDispatcher::TransactionId(transaction); | 128 params.transaction_id = IndexedDBDispatcher::TransactionId(transaction); |
| 129 params.idb_object_store_id = idb_object_store_id_; | 129 params.idb_object_store_id = idb_object_store_id_; |
| 130 | 130 |
| 131 int32 index_id; | 131 int32 index_id; |
| 132 RenderThreadImpl::current()->Send( | 132 ChildThread::current()->Send( |
| 133 new IndexedDBHostMsg_ObjectStoreCreateIndex(params, &index_id, &ec)); | 133 new IndexedDBHostMsg_ObjectStoreCreateIndex(params, &index_id, &ec)); |
| 134 if (!index_id) | 134 if (!index_id) |
| 135 return NULL; | 135 return NULL; |
| 136 return new RendererWebIDBIndexImpl(index_id); | 136 return new RendererWebIDBIndexImpl(index_id); |
| 137 } | 137 } |
| 138 | 138 |
| 139 WebIDBIndex* RendererWebIDBObjectStoreImpl::index( | 139 WebIDBIndex* RendererWebIDBObjectStoreImpl::index( |
| 140 const WebString& name, | 140 const WebString& name, |
| 141 WebExceptionCode& ec) { | 141 WebExceptionCode& ec) { |
| 142 int32 idb_index_id; | 142 int32 idb_index_id; |
| 143 RenderThreadImpl::current()->Send( | 143 ChildThread::current()->Send( |
| 144 new IndexedDBHostMsg_ObjectStoreIndex(idb_object_store_id_, name, | 144 new IndexedDBHostMsg_ObjectStoreIndex(idb_object_store_id_, name, |
| 145 &idb_index_id, &ec)); | 145 &idb_index_id, &ec)); |
| 146 if (!idb_index_id) | 146 if (!idb_index_id) |
| 147 return NULL; | 147 return NULL; |
| 148 return new RendererWebIDBIndexImpl(idb_index_id); | 148 return new RendererWebIDBIndexImpl(idb_index_id); |
| 149 } | 149 } |
| 150 | 150 |
| 151 void RendererWebIDBObjectStoreImpl::deleteIndex( | 151 void RendererWebIDBObjectStoreImpl::deleteIndex( |
| 152 const WebString& name, | 152 const WebString& name, |
| 153 const WebIDBTransaction& transaction, | 153 const WebIDBTransaction& transaction, |
| 154 WebExceptionCode& ec) { | 154 WebExceptionCode& ec) { |
| 155 RenderThreadImpl::current()->Send( | 155 ChildThread::current()->Send( |
| 156 new IndexedDBHostMsg_ObjectStoreDeleteIndex( | 156 new IndexedDBHostMsg_ObjectStoreDeleteIndex( |
| 157 idb_object_store_id_, name, | 157 idb_object_store_id_, name, |
| 158 IndexedDBDispatcher::TransactionId(transaction), &ec)); | 158 IndexedDBDispatcher::TransactionId(transaction), &ec)); |
| 159 } | 159 } |
| 160 | 160 |
| 161 void RendererWebIDBObjectStoreImpl::openCursor( | 161 void RendererWebIDBObjectStoreImpl::openCursor( |
| 162 const WebIDBKeyRange& idb_key_range, | 162 const WebIDBKeyRange& idb_key_range, |
| 163 unsigned short direction, WebIDBCallbacks* callbacks, | 163 unsigned short direction, WebIDBCallbacks* callbacks, |
| 164 const WebIDBTransaction& transaction, | 164 const WebIDBTransaction& transaction, |
| 165 WebExceptionCode& ec) { | 165 WebExceptionCode& ec) { |
| 166 IndexedDBDispatcher* dispatcher = | 166 IndexedDBDispatcher* dispatcher = |
| 167 RenderThreadImpl::current()->indexed_db_dispatcher(); | 167 ChildThread::current()->indexed_db_dispatcher(); |
| 168 dispatcher->RequestIDBObjectStoreOpenCursor( | 168 dispatcher->RequestIDBObjectStoreOpenCursor( |
| 169 idb_key_range, direction, callbacks, idb_object_store_id_, | 169 idb_key_range, direction, callbacks, idb_object_store_id_, |
| 170 transaction, &ec); | 170 transaction, &ec); |
| 171 } | 171 } |
| OLD | NEW |