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

Unified Diff: third_party/WebKit/Source/modules/indexeddb/IDBMojoUtil.cpp

Issue 1963293002: Replacing Indexed DB Chromium IPC with Mojo Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Refactoring after Passing URLRequestContextGetter. Created 4 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/indexeddb/IDBMojoUtil.cpp
diff --git a/third_party/WebKit/Source/modules/indexeddb/IDBMojoUtil.cpp b/third_party/WebKit/Source/modules/indexeddb/IDBMojoUtil.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..3ab678ff47b300938444c69c5f5472cdcc77d231
--- /dev/null
+++ b/third_party/WebKit/Source/modules/indexeddb/IDBMojoUtil.cpp
@@ -0,0 +1,198 @@
+// Copyright 2016 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "modules/indexeddb/IDBMojoUtil.h"
+
+#include "modules/indexeddb/IDBKey.h"
+#include "modules/indexeddb/IDBKeyPath.h"
+#include "modules/indexeddb/IDBKeyRange.h"
+#include "public/platform/WebBlobInfo.h"
+
+namespace blink {
+
+using indexed_db::mojom::blink::BlobInfoPtr;
+using indexed_db::mojom::blink::KeyPathPtr;
+using indexed_db::mojom::blink::KeyPathType;
+using indexed_db::mojom::blink::KeyPtr;
+using indexed_db::mojom::blink::KeyRangePtr;
+
+WebIDBValue createValue(const indexed_db::mojom::blink::ValuePtr&)
+{
+ return WebIDBValue();
+}
+
+KeyPtr createKey(const IDBKey* idbKey)
+{
+ if (idbKey->getType() == IDBKey::InvalidType || idbKey->getType() == IDBKey::MinType)
+ return nullptr;
+
+ KeyPtr mojoKey = indexed_db::mojom::blink::Key::New();
+
+ switch (idbKey->getType()) {
+ case IDBKey::InvalidType:
+ case IDBKey::MinType:
+ NOTREACHED();
+ break;
+ case IDBKey::ArrayType: {
+ mojoKey->data = indexed_db::mojom::blink::KeyData::New();
+ Vector<KeyPtr> data(idbKey->array().size());
+ for (size_t i = 0; i < idbKey->array().size(); i++)
+ data[i] = createKey(idbKey->array()[i]);
+ mojoKey->data->set_array_data(std::move(data));
+ mojoKey->type = indexed_db::mojom::blink::KeyType::Array;
+ } break;
+ case IDBKey::BinaryType:
+ mojoKey->data = indexed_db::mojom::blink::KeyData::New();
+ mojoKey->type = indexed_db::mojom::blink::KeyType::Binary;
+ break;
+ case IDBKey::StringType:
+ mojoKey->type = indexed_db::mojom::blink::KeyType::String;
+ mojoKey->data->set_string_data(idbKey->string());
+ break;
+ case IDBKey::DateType:
+ mojoKey->type = indexed_db::mojom::blink::KeyType::Date;
+ mojoKey->data->set_date(idbKey->date());
+ break;
+ case IDBKey::NumberType:
+ mojoKey->type = indexed_db::mojom::blink::KeyType::Number;
+ mojoKey->data->set_number(idbKey->number());
+ break;
+ }
+
+ return mojoKey;
+}
+
+static IDBKey::KeyArray createKeyArray(const WTF::Vector<KeyPtr>& array)
+{
+ IDBKey::KeyArray keyArray;
+
+ for (size_t i = 0; i < array.size(); i++) {
+ keyArray.append(createKey(array[i]));
+ }
+
+ return keyArray;
+}
+
+PassRefPtr<SharedBuffer> createData(const WTF::Vector<uint8_t>& data)
+{
+ RefPtr<SharedBuffer> webData;
+ return webData.release();
+}
+
+PassRefPtr<SharedBuffer> createData(const WTF::Vector<int8_t>& data)
+{
+ RefPtr<SharedBuffer> webData;
+ return webData.release();
+}
+
+IDBKey* createKey(const KeyPtr& mojoKey)
+{
+ if (!mojoKey)
+ return nullptr;
+
+ switch (mojoKey->type) {
+ case indexed_db::mojom::blink::KeyType::Invalid:
+ return IDBKey::createInvalid();
+ case indexed_db::mojom::blink::KeyType::Array:
+ return IDBKey::createArray(createKeyArray(mojoKey->data->get_array_data()));
+ case indexed_db::mojom::blink::KeyType::Binary:
+ return IDBKey::createBinary(createData(mojoKey->data->get_binary_data()));
+ case indexed_db::mojom::blink::KeyType::String:
+ return IDBKey::createString(mojoKey->data->get_string_data());
+ case indexed_db::mojom::blink::KeyType::Date:
+ return IDBKey::createDate(mojoKey->data->get_date());
+ case indexed_db::mojom::blink::KeyType::Number:
+ return IDBKey::createNumber(mojoKey->data->get_number());
+ }
+}
+
+// TODO(cmumford): Can we use Mojo type-mapping? If not should it be moved to a utility file?
+KeyRangePtr createKeyRange(const IDBKeyRange* keyRange)
+{
+ if (!keyRange)
+ return nullptr;
+
+ KeyRangePtr range = indexed_db::mojom::blink::KeyRange::New();
+ range->lower_open = keyRange->lowerOpen();
+ range->lower = createKey(keyRange->lower());
+ range->upper_open = keyRange->upperOpen();
+ range->upper = createKey(keyRange->upper());
+
+ return range;
+}
+
+KeyRangePtr createKeyRange(ExecutionContext* context, const ScriptValue& value, ExceptionState& exceptionState)
+{
+ return createKeyRange(IDBKeyRange::fromScriptValue(context, value, exceptionState));
+}
+
+IDBKeyPath createKeyPath(const indexed_db::mojom::blink::KeyPathPtr&)
+{
+ IDBKeyPath keyPath;
+
+ return keyPath;
+}
+
+KeyPathPtr createKeyPath(const IDBKeyPath& value)
+{
+ if (!value.isValid())
+ return nullptr;
+
+ KeyPathPtr keyPath = indexed_db::mojom::blink::KeyPath::New();
+
+ switch (value.getType()) {
+ case IDBKeyPath::NullType:
+ keyPath->type = KeyPathType::NONE;
+ break;
+ case IDBKeyPath::StringType:
+ keyPath->type = KeyPathType::STRING;
+ keyPath->data->set_str(value.string());
+ break;
+ case IDBKeyPath::ArrayType: {
+ keyPath->type = KeyPathType::ARRAY;
+ Vector<String> strings;
+ for (const auto& str : value.array())
+ strings.append(str);
+ keyPath->data->set_arr(std::move(strings));
+ } break;
+ }
+
+ return keyPath;
+}
+
+BlobInfoPtr createBlobInfo(const WebBlobInfo& info)
+{
+ BlobInfoPtr blobInfo = indexed_db::mojom::blink::BlobInfo::New();
+
+ blobInfo->is_file = info.isFile();
+ blobInfo->uuid = info.uuid();
+ blobInfo->type = info.type();
+ blobInfo->size = info.size();
+
+ if (info.isFile()) {
+ blobInfo->file_path = info.filePath();
+ blobInfo->file_name = info.fileName();
+ blobInfo->last_modified = info.lastModified();
+ }
+
+ return blobInfo;
+}
+
+Vector<BlobInfoPtr> createBlobInfo(const Vector<WebBlobInfo>& blobInfo)
+{
+ Vector<BlobInfoPtr> ret(blobInfo.size());
+
+ for (size_t i = 0; i < blobInfo.size(); i++)
+ ret[i] = createBlobInfo(blobInfo[i]);
+
+ return ret;
+}
+
+void convertMetadata(IDBDatabaseMetadata* out, const indexed_db::mojom::blink::DatabaseMetadataPtr& in)
+{
+ // TODO(cmumford): Implement me.
+ // NOTREACHED();
+}
+
+} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698