blob: 913b56292647633bd0623a98038d77182e0dfdb3 [file] [log] [blame]
// 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.
#ifndef CONTENT_COMMON_INDEXED_DB_INDEXED_DB_STRUCT_TRAITS_H_
#define CONTENT_COMMON_INDEXED_DB_INDEXED_DB_STRUCT_TRAITS_H_
#include "content/common/indexed_db/indexed_db.mojom.h"
namespace mojo {
template <>
struct StructTraits<indexed_db::mojom::KeyDataView, content::IndexedDBKey> {
static indexed_db::mojom::KeyDataPtr data(const content::IndexedDBKey& key);
static bool Read(indexed_db::mojom::KeyDataView data,
content::IndexedDBKey* out);
};
template <>
struct StructTraits<indexed_db::mojom::KeyPathDataView,
content::IndexedDBKeyPath> {
static indexed_db::mojom::KeyPathDataPtr data(
const content::IndexedDBKeyPath& key_path);
static bool Read(indexed_db::mojom::KeyPathDataView data,
content::IndexedDBKeyPath* out);
};
template <>
struct StructTraits<indexed_db::mojom::KeyRangeDataView,
content::IndexedDBKeyRange> {
static const content::IndexedDBKey& lower(
const content::IndexedDBKeyRange& key_range) {
return key_range.lower();
}
static const content::IndexedDBKey& upper(
const content::IndexedDBKeyRange& key_range) {
return key_range.upper();
}
static bool lower_open(const content::IndexedDBKeyRange& key_range) {
return key_range.lower_open();
}
static bool upper_open(const content::IndexedDBKeyRange& key_range) {
return key_range.upper_open();
}
static bool Read(indexed_db::mojom::KeyRangeDataView data,
content::IndexedDBKeyRange* out);
};
template <>
struct StructTraits<indexed_db::mojom::IndexKeysDataView,
content::IndexedDBIndexKeys> {
static int64_t index_id(const content::IndexedDBIndexKeys& index_keys) {
return index_keys.first;
}
static const std::vector<content::IndexedDBKey>& index_keys(
const content::IndexedDBIndexKeys& index_keys) {
return index_keys.second;
}
static bool Read(indexed_db::mojom::IndexKeysDataView data,
content::IndexedDBIndexKeys* out);
};
template <>
struct StructTraits<indexed_db::mojom::IndexMetadataDataView,
content::IndexedDBIndexMetadata> {
static int64_t id(const content::IndexedDBIndexMetadata& metadata) {
return metadata.id;
}
static base::string16 name(const content::IndexedDBIndexMetadata& metadata) {
return metadata.name;
}
static const content::IndexedDBKeyPath& key_path(
const content::IndexedDBIndexMetadata& metadata) {
return metadata.key_path;
}
static bool unique(const content::IndexedDBIndexMetadata& metadata) {
return metadata.unique;
}
static bool multi_entry(const content::IndexedDBIndexMetadata& metadata) {
return metadata.multi_entry;
}
static bool Read(indexed_db::mojom::IndexMetadataDataView data,
content::IndexedDBIndexMetadata* out);
};
template <>
struct StructTraits<indexed_db::mojom::ObjectStoreMetadataDataView,
content::IndexedDBObjectStoreMetadata> {
static int64_t id(const content::IndexedDBObjectStoreMetadata& metadata) {
return metadata.id;
}
static base::string16 name(
const content::IndexedDBObjectStoreMetadata& metadata) {
return metadata.name;
}
static const content::IndexedDBKeyPath& key_path(
const content::IndexedDBObjectStoreMetadata& metadata) {
return metadata.key_path;
}
static bool auto_increment(
const content::IndexedDBObjectStoreMetadata& metadata) {
return metadata.auto_increment;
}
static int64_t max_index_id(
const content::IndexedDBObjectStoreMetadata& metadata) {
return metadata.max_index_id;
}
static MapValuesArrayView<int64_t, content::IndexedDBIndexMetadata> indexes(
const content::IndexedDBObjectStoreMetadata& metadata) {
return MapValuesToArray(metadata.indexes);
}
static bool Read(indexed_db::mojom::ObjectStoreMetadataDataView data,
content::IndexedDBObjectStoreMetadata* out);
};
template <>
struct StructTraits<indexed_db::mojom::DatabaseMetadataDataView,
content::IndexedDBDatabaseMetadata> {
static int64_t id(const content::IndexedDBDatabaseMetadata& metadata) {
return metadata.id;
}
static base::string16 name(
const content::IndexedDBDatabaseMetadata& metadata) {
return metadata.name;
}
static int64_t version(const content::IndexedDBDatabaseMetadata& metadata) {
return metadata.version;
}
static int64_t max_object_store_id(
const content::IndexedDBDatabaseMetadata& metadata) {
return metadata.max_object_store_id;
}
static MapValuesArrayView<int64_t, content::IndexedDBObjectStoreMetadata>
object_stores(const content::IndexedDBDatabaseMetadata& metadata) {
return MapValuesToArray(metadata.object_stores);
}
static bool Read(indexed_db::mojom::DatabaseMetadataDataView data,
content::IndexedDBDatabaseMetadata* out);
};
template <>
struct EnumTraits<indexed_db::mojom::CursorDirection,
blink::WebIDBCursorDirection> {
static indexed_db::mojom::CursorDirection ToMojom(
blink::WebIDBCursorDirection input);
static bool FromMojom(indexed_db::mojom::CursorDirection input,
blink::WebIDBCursorDirection* output);
};
template <>
struct EnumTraits<indexed_db::mojom::DataLoss, blink::WebIDBDataLoss> {
static indexed_db::mojom::DataLoss ToMojom(blink::WebIDBDataLoss input);
static bool FromMojom(indexed_db::mojom::DataLoss input,
blink::WebIDBDataLoss* output);
};
template <>
struct EnumTraits<indexed_db::mojom::OperationType,
blink::WebIDBOperationType> {
static indexed_db::mojom::OperationType ToMojom(
blink::WebIDBOperationType input);
static bool FromMojom(indexed_db::mojom::OperationType input,
blink::WebIDBOperationType* output);
};
template <>
struct EnumTraits<indexed_db::mojom::PutMode, blink::WebIDBPutMode> {
static indexed_db::mojom::PutMode ToMojom(blink::WebIDBPutMode input);
static bool FromMojom(indexed_db::mojom::PutMode input,
blink::WebIDBPutMode* output);
};
template <>
struct EnumTraits<indexed_db::mojom::TaskType, blink::WebIDBTaskType> {
static indexed_db::mojom::TaskType ToMojom(blink::WebIDBTaskType input);
static bool FromMojom(indexed_db::mojom::TaskType input,
blink::WebIDBTaskType* output);
};
template <>
struct EnumTraits<indexed_db::mojom::TransactionMode,
blink::WebIDBTransactionMode> {
static indexed_db::mojom::TransactionMode ToMojom(
blink::WebIDBTransactionMode input);
static bool FromMojom(indexed_db::mojom::TransactionMode input,
blink::WebIDBTransactionMode* output);
};
} // namespace mojo
#endif // CONTENT_COMMON_INDEXED_DB_INDEXED_DB_STRUCT_TRAITS_H_