OLD | NEW |
| (Empty) |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/browser/indexed_db/indexed_db_callbacks_wrapper.h" | |
6 | |
7 #include "content/browser/indexed_db/indexed_db_callbacks.h" | |
8 #include "content/browser/indexed_db/indexed_db_cursor.h" | |
9 #include "content/browser/indexed_db/indexed_db_database_callbacks.h" | |
10 #include "content/browser/indexed_db/indexed_db_metadata.h" | |
11 #include "content/browser/indexed_db/webidbdatabase_impl.h" | |
12 | |
13 namespace content { | |
14 | |
15 using WebKit::WebIDBCallbacks; | |
16 | |
17 IndexedDBCallbacksWrapper::IndexedDBCallbacksWrapper( | |
18 IndexedDBCallbacksBase* callbacks) | |
19 : callbacks_(callbacks), did_complete_(false), did_create_proxy_(false) {} | |
20 | |
21 IndexedDBCallbacksWrapper::~IndexedDBCallbacksWrapper() {} | |
22 | |
23 void IndexedDBCallbacksWrapper::OnError(const IndexedDBDatabaseError& error) { | |
24 DCHECK(callbacks_); | |
25 callbacks_->onError(error); | |
26 callbacks_.reset(); | |
27 } | |
28 | |
29 void IndexedDBCallbacksWrapper::OnSuccess(const std::vector<string16>& value) { | |
30 DCHECK(callbacks_); | |
31 callbacks_->onSuccess(value); | |
32 callbacks_.reset(); | |
33 } | |
34 | |
35 void IndexedDBCallbacksWrapper::OnSuccess(scoped_refptr<IndexedDBCursor> cursor, | |
36 const IndexedDBKey& key, | |
37 const IndexedDBKey& primary_key, | |
38 std::vector<char>* value) { | |
39 DCHECK(callbacks_); | |
40 callbacks_->onSuccess(cursor, key, primary_key, value); | |
41 callbacks_.reset(); | |
42 } | |
43 | |
44 void IndexedDBCallbacksWrapper::OnSuccess(const IndexedDBKey& key) { | |
45 DCHECK(callbacks_); | |
46 callbacks_->onSuccess(key); | |
47 callbacks_.reset(); | |
48 } | |
49 | |
50 void IndexedDBCallbacksWrapper::OnSuccess(std::vector<char>* value) { | |
51 DCHECK(callbacks_); | |
52 callbacks_->onSuccess(value); | |
53 callbacks_.reset(); | |
54 } | |
55 | |
56 void IndexedDBCallbacksWrapper::OnSuccess(std::vector<char>* value, | |
57 const IndexedDBKey& key, | |
58 const IndexedDBKeyPath& key_path) { | |
59 DCHECK(callbacks_); | |
60 callbacks_->onSuccess(value, key, key_path); | |
61 callbacks_.reset(); | |
62 } | |
63 | |
64 void IndexedDBCallbacksWrapper::OnSuccess(int64 value) { | |
65 DCHECK(callbacks_); | |
66 callbacks_->onSuccess(value); | |
67 callbacks_.reset(); | |
68 } | |
69 | |
70 void IndexedDBCallbacksWrapper::OnSuccess() { | |
71 DCHECK(callbacks_); | |
72 callbacks_->onSuccess(); | |
73 callbacks_.reset(); | |
74 } | |
75 | |
76 void IndexedDBCallbacksWrapper::OnSuccess(const IndexedDBKey& key, | |
77 const IndexedDBKey& primary_key, | |
78 std::vector<char>* value) { | |
79 DCHECK(callbacks_); | |
80 callbacks_->onSuccess(key, primary_key, value); | |
81 callbacks_.reset(); | |
82 } | |
83 | |
84 void IndexedDBCallbacksWrapper::OnSuccessWithPrefetch( | |
85 const std::vector<IndexedDBKey>& keys, | |
86 const std::vector<IndexedDBKey>& primary_keys, | |
87 const std::vector<std::vector<char> >& values) { | |
88 DCHECK_EQ(keys.size(), primary_keys.size()); | |
89 DCHECK_EQ(keys.size(), values.size()); | |
90 | |
91 DCHECK(callbacks_); | |
92 callbacks_->onSuccessWithPrefetch(keys, primary_keys, values); | |
93 callbacks_.reset(); | |
94 } | |
95 | |
96 void IndexedDBCallbacksWrapper::OnBlocked(int64 existing_version) { | |
97 DCHECK(callbacks_); | |
98 callbacks_->onBlocked(existing_version); | |
99 } | |
100 | |
101 void IndexedDBCallbacksWrapper::OnUpgradeNeeded( | |
102 int64 old_version, | |
103 scoped_refptr<IndexedDBDatabase> database, | |
104 const IndexedDBDatabaseMetadata& metadata, | |
105 WebIDBCallbacks::DataLoss data_loss) { | |
106 DCHECK(callbacks_); | |
107 did_create_proxy_ = true; | |
108 callbacks_->onUpgradeNeeded( | |
109 old_version, | |
110 new WebIDBDatabaseImpl(database, database_callbacks_), | |
111 metadata, | |
112 data_loss); | |
113 database_callbacks_ = NULL; | |
114 } | |
115 | |
116 void IndexedDBCallbacksWrapper::OnSuccess( | |
117 scoped_refptr<IndexedDBDatabase> database, | |
118 const IndexedDBDatabaseMetadata& metadata) { | |
119 DCHECK(callbacks_); | |
120 scoped_refptr<IndexedDBCallbacksWrapper> self(this); | |
121 | |
122 WebIDBDatabaseImpl* impl = | |
123 did_create_proxy_ ? 0 | |
124 : new WebIDBDatabaseImpl(database, database_callbacks_); | |
125 database_callbacks_ = NULL; | |
126 | |
127 callbacks_->onSuccess(impl, metadata); | |
128 callbacks_.reset(); | |
129 } | |
130 | |
131 void IndexedDBCallbacksWrapper::SetDatabaseCallbacks( | |
132 scoped_refptr<IndexedDBDatabaseCallbacks> database_callbacks) { | |
133 database_callbacks_ = database_callbacks; | |
134 } | |
135 } // namespace content | |
OLD | NEW |