Commit 93cffe7c authored by Henrique Ferreiro's avatar Henrique Ferreiro Committed by Commit Bot

Remove redundant struct wrapper over union

Both IDBKey and PolicyValue Mojo unions where being wrapped with a
struct with the union as its only member. This CL simplifies that
representation by removing the outer struct.

Change-Id: I0fdfbdca7ae6553e48248e2a6a39a062120c6797
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2374449
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Reviewed-by: default avatarAlex Gough <ajgo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#803452}
parent e6dea966
......@@ -6,32 +6,27 @@
namespace mojo {
bool UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue>::
Read(blink::mojom::PolicyValueDataDataView in, blink::PolicyValue* out) {
bool UnionTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue>::Read(
blink::mojom::PolicyValueDataView in,
blink::PolicyValue* out) {
switch (in.tag()) {
case blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE:
case blink::mojom::PolicyValueDataView::Tag::BOOL_VALUE:
out->SetType(blink::mojom::PolicyValueType::kBool);
out->SetBoolValue(in.bool_value());
return true;
case blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE:
case blink::mojom::PolicyValueDataView::Tag::DEC_DOUBLE_VALUE:
out->SetType(blink::mojom::PolicyValueType::kDecDouble);
out->SetDoubleValue(in.dec_double_value());
return true;
case blink::mojom::PolicyValueDataDataView::Tag::ENUM_VALUE:
case blink::mojom::PolicyValueDataView::Tag::ENUM_VALUE:
out->SetType(blink::mojom::PolicyValueType::kEnum);
out->SetIntValue(in.enum_value());
return true;
case blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE:
case blink::mojom::PolicyValueDataView::Tag::NULL_VALUE:
break;
}
NOTREACHED();
return false;
}
bool StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue>::Read(
blink::mojom::PolicyValueDataView data,
blink::PolicyValue* out) {
return data.ReadData(out);
}
} // namespace mojo
......@@ -13,23 +13,23 @@ namespace mojo {
template <>
struct BLINK_COMMON_EXPORT
UnionTraits<blink::mojom::PolicyValueDataDataView, blink::PolicyValue> {
UnionTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue> {
public:
static blink::mojom::PolicyValueDataDataView::Tag GetTag(
static blink::mojom::PolicyValueDataView::Tag GetTag(
const blink::PolicyValue& value) {
switch (value.Type()) {
case blink::mojom::PolicyValueType::kNull:
return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE;
return blink::mojom::PolicyValueDataView::Tag::NULL_VALUE;
case blink::mojom::PolicyValueType::kBool:
return blink::mojom::PolicyValueDataDataView::Tag::BOOL_VALUE;
return blink::mojom::PolicyValueDataView::Tag::BOOL_VALUE;
case blink::mojom::PolicyValueType::kDecDouble:
return blink::mojom::PolicyValueDataDataView::Tag::DEC_DOUBLE_VALUE;
return blink::mojom::PolicyValueDataView::Tag::DEC_DOUBLE_VALUE;
case blink::mojom::PolicyValueType::kEnum:
return blink::mojom::PolicyValueDataDataView::Tag::ENUM_VALUE;
return blink::mojom::PolicyValueDataView::Tag::ENUM_VALUE;
}
NOTREACHED();
return blink::mojom::PolicyValueDataDataView::Tag::NULL_VALUE;
return blink::mojom::PolicyValueDataView::Tag::NULL_VALUE;
}
static bool null_value(const blink::PolicyValue& value) { return false; }
static bool bool_value(const blink::PolicyValue& value) {
......@@ -41,17 +41,7 @@ struct BLINK_COMMON_EXPORT
static int32_t enum_value(const blink::PolicyValue& value) {
return value.IntValue();
}
static bool Read(blink::mojom::PolicyValueDataDataView in,
blink::PolicyValue* out);
};
template <>
struct BLINK_COMMON_EXPORT
StructTraits<blink::mojom::PolicyValueDataView, blink::PolicyValue> {
static const blink::PolicyValue& data(const blink::PolicyValue& value) {
return value;
}
static bool Read(blink::mojom::PolicyValueDataView data,
static bool Read(blink::mojom::PolicyValueDataView in,
blink::PolicyValue* out);
};
......
......@@ -67,65 +67,65 @@ bool StructTraits<blink::mojom::IDBIndexMetadataDataView,
}
// static
blink::mojom::IDBKeyDataDataView::Tag
UnionTraits<blink::mojom::IDBKeyDataDataView, blink::IndexedDBKey>::GetTag(
blink::mojom::IDBKeyDataView::Tag
UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::GetTag(
const blink::IndexedDBKey& key) {
switch (key.type()) {
case blink::mojom::IDBKeyType::Array:
return blink::mojom::IDBKeyDataDataView::Tag::KEY_ARRAY;
return blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY;
case blink::mojom::IDBKeyType::Binary:
return blink::mojom::IDBKeyDataDataView::Tag::BINARY;
return blink::mojom::IDBKeyDataView::Tag::BINARY;
case blink::mojom::IDBKeyType::String:
return blink::mojom::IDBKeyDataDataView::Tag::STRING;
return blink::mojom::IDBKeyDataView::Tag::STRING;
case blink::mojom::IDBKeyType::Date:
return blink::mojom::IDBKeyDataDataView::Tag::DATE;
return blink::mojom::IDBKeyDataView::Tag::DATE;
case blink::mojom::IDBKeyType::Number:
return blink::mojom::IDBKeyDataDataView::Tag::NUMBER;
return blink::mojom::IDBKeyDataView::Tag::NUMBER;
case blink::mojom::IDBKeyType::None:
return blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE;
return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE;
// Not used, fall through to NOTREACHED.
case blink::mojom::IDBKeyType::Invalid: // Only used in blink.
case blink::mojom::IDBKeyType::Min:; // Only used in the browser.
}
NOTREACHED();
return blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE;
return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE;
}
// static
bool UnionTraits<blink::mojom::IDBKeyDataDataView, blink::IndexedDBKey>::Read(
blink::mojom::IDBKeyDataDataView data,
bool UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::Read(
blink::mojom::IDBKeyDataView data,
blink::IndexedDBKey* out) {
switch (data.tag()) {
case blink::mojom::IDBKeyDataDataView::Tag::KEY_ARRAY: {
case blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY: {
std::vector<blink::IndexedDBKey> array;
if (!data.ReadKeyArray(&array))
return false;
*out = blink::IndexedDBKey(std::move(array));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::BINARY: {
case blink::mojom::IDBKeyDataView::Tag::BINARY: {
ArrayDataView<uint8_t> bytes;
data.GetBinaryDataView(&bytes);
std::string binary(bytes.data(), bytes.data() + bytes.size());
*out = blink::IndexedDBKey(std::move(binary));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::STRING: {
case blink::mojom::IDBKeyDataView::Tag::STRING: {
base::string16 string;
if (!data.ReadString(&string))
return false;
*out = blink::IndexedDBKey(std::move(string));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::DATE:
case blink::mojom::IDBKeyDataView::Tag::DATE:
*out = blink::IndexedDBKey(data.date(), blink::mojom::IDBKeyType::Date);
return true;
case blink::mojom::IDBKeyDataDataView::Tag::NUMBER:
case blink::mojom::IDBKeyDataView::Tag::NUMBER:
*out =
blink::IndexedDBKey(data.number(), blink::mojom::IDBKeyType::Number);
return true;
case blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE:
case blink::mojom::IDBKeyDataView::Tag::OTHER_NONE:
*out = blink::IndexedDBKey(blink::mojom::IDBKeyType::None);
return true;
}
......@@ -133,20 +133,6 @@ bool UnionTraits<blink::mojom::IDBKeyDataDataView, blink::IndexedDBKey>::Read(
return false;
}
// static
const blink::IndexedDBKey&
StructTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::data(
const blink::IndexedDBKey& key) {
return key;
}
// static
bool StructTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey>::Read(
blink::mojom::IDBKeyDataView data,
blink::IndexedDBKey* out) {
return data.ReadData(out);
}
// static
blink::mojom::IDBKeyPathDataPtr
StructTraits<blink::mojom::IDBKeyPathDataView, blink::IndexedDBKeyPath>::data(
......
......@@ -84,11 +84,10 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::IDBIndexMetadataDataView,
template <>
struct BLINK_COMMON_EXPORT
UnionTraits<blink::mojom::IDBKeyDataDataView, blink::IndexedDBKey> {
static blink::mojom::IDBKeyDataDataView::Tag GetTag(
UnionTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey> {
static blink::mojom::IDBKeyDataView::Tag GetTag(
const blink::IndexedDBKey& key);
static bool Read(blink::mojom::IDBKeyDataDataView data,
blink::IndexedDBKey* out);
static bool Read(blink::mojom::IDBKeyDataView data, blink::IndexedDBKey* out);
static const std::vector<blink::IndexedDBKey>& key_array(
const blink::IndexedDBKey& key) {
return key.array();
......@@ -111,13 +110,6 @@ struct BLINK_COMMON_EXPORT
}
};
template <>
struct BLINK_COMMON_EXPORT
StructTraits<blink::mojom::IDBKeyDataView, blink::IndexedDBKey> {
static const blink::IndexedDBKey& data(const blink::IndexedDBKey& key);
static bool Read(blink::mojom::IDBKeyDataView data, blink::IndexedDBKey* out);
};
template <>
struct BLINK_COMMON_EXPORT
StructTraits<blink::mojom::IDBKeyPathDataView, blink::IndexedDBKeyPath> {
......
......@@ -20,15 +20,9 @@ enum PolicyValueType {
// This union includes all the types that can be used to specify a policy's
// parameter.
// TODO(crbug.com/1119481): Add the following types: inc/dec int, inc double, set.
union PolicyValueData {
union PolicyValue {
bool null_value;
bool bool_value;
double dec_double_value;
int32 enum_value;
};
// Defined as a structure so that it can be typemapped with StructTraits.
struct PolicyValue {
PolicyValueData data;
};
......@@ -85,7 +85,7 @@ enum IDBTransactionDurability {
Relaxed,
};
union IDBKeyData {
union IDBKey {
array<IDBKey> key_array;
array<uint8> binary;
mojo_base.mojom.String16 string;
......@@ -95,11 +95,6 @@ union IDBKeyData {
bool other_none;
};
// Defined as a structure so that it can by typemapped with StructTraits.
struct IDBKey {
IDBKeyData data;
};
// In order of the least to the highest precedent in terms of sort order.
// These values are written to logs. New enum values can be added, but
// existing enums must never be renumbered or deleted and reused.
......
......@@ -81,66 +81,65 @@ bool StructTraits<blink::mojom::IDBIndexMetadataDataView,
}
// static
blink::mojom::IDBKeyDataDataView::Tag
UnionTraits<blink::mojom::IDBKeyDataDataView, std::unique_ptr<blink::IDBKey>>::
blink::mojom::IDBKeyDataView::Tag
UnionTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>>::
GetTag(const std::unique_ptr<blink::IDBKey>& key) {
DCHECK(key.get());
switch (key->GetType()) {
case blink::mojom::IDBKeyType::Array:
return blink::mojom::IDBKeyDataDataView::Tag::KEY_ARRAY;
return blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY;
case blink::mojom::IDBKeyType::Binary:
return blink::mojom::IDBKeyDataDataView::Tag::BINARY;
return blink::mojom::IDBKeyDataView::Tag::BINARY;
case blink::mojom::IDBKeyType::String:
return blink::mojom::IDBKeyDataDataView::Tag::STRING;
return blink::mojom::IDBKeyDataView::Tag::STRING;
case blink::mojom::IDBKeyType::Date:
return blink::mojom::IDBKeyDataDataView::Tag::DATE;
return blink::mojom::IDBKeyDataView::Tag::DATE;
case blink::mojom::IDBKeyType::Number:
return blink::mojom::IDBKeyDataDataView::Tag::NUMBER;
return blink::mojom::IDBKeyDataView::Tag::NUMBER;
case blink::mojom::IDBKeyType::None:
return blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE;
return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE;
// Not used, fall through to NOTREACHED.
case blink::mojom::IDBKeyType::Invalid: // Only used in blink.
case blink::mojom::IDBKeyType::Min:; // Only used in the browser.
}
NOTREACHED();
return blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE;
return blink::mojom::IDBKeyDataView::Tag::OTHER_NONE;
}
// static
bool UnionTraits<
blink::mojom::IDBKeyDataDataView,
std::unique_ptr<blink::IDBKey>>::Read(blink::mojom::IDBKeyDataDataView data,
std::unique_ptr<blink::IDBKey>* out) {
bool UnionTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>>::
Read(blink::mojom::IDBKeyDataView data,
std::unique_ptr<blink::IDBKey>* out) {
switch (data.tag()) {
case blink::mojom::IDBKeyDataDataView::Tag::KEY_ARRAY: {
case blink::mojom::IDBKeyDataView::Tag::KEY_ARRAY: {
Vector<std::unique_ptr<blink::IDBKey>> array;
if (!data.ReadKeyArray(&array))
return false;
*out = blink::IDBKey::CreateArray(std::move(array));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::BINARY: {
case blink::mojom::IDBKeyDataView::Tag::BINARY: {
ArrayDataView<uint8_t> bytes;
data.GetBinaryDataView(&bytes);
*out = blink::IDBKey::CreateBinary(SharedBuffer::Create(
reinterpret_cast<const char*>(bytes.data()), bytes.size()));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::STRING: {
case blink::mojom::IDBKeyDataView::Tag::STRING: {
String string;
if (!data.ReadString(&string))
return false;
*out = blink::IDBKey::CreateString(String(string));
return true;
}
case blink::mojom::IDBKeyDataDataView::Tag::DATE:
case blink::mojom::IDBKeyDataView::Tag::DATE:
*out = blink::IDBKey::CreateDate(data.date());
return true;
case blink::mojom::IDBKeyDataDataView::Tag::NUMBER:
case blink::mojom::IDBKeyDataView::Tag::NUMBER:
*out = blink::IDBKey::CreateNumber(data.number());
return true;
case blink::mojom::IDBKeyDataDataView::Tag::OTHER_NONE:
case blink::mojom::IDBKeyDataView::Tag::OTHER_NONE:
*out = blink::IDBKey::CreateNone();
return true;
}
......@@ -150,33 +149,18 @@ bool UnionTraits<
// static
const Vector<std::unique_ptr<blink::IDBKey>>&
UnionTraits<blink::mojom::IDBKeyDataDataView, std::unique_ptr<blink::IDBKey>>::
UnionTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>>::
key_array(const std::unique_ptr<blink::IDBKey>& key) {
return key->Array();
}
// static
Vector<uint8_t>
UnionTraits<blink::mojom::IDBKeyDataDataView, std::unique_ptr<blink::IDBKey>>::
UnionTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>>::
binary(const std::unique_ptr<blink::IDBKey>& key) {
return key->Binary()->CopyAs<Vector<uint8_t>>();
}
// static
const std::unique_ptr<blink::IDBKey>&
StructTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>>::
data(const std::unique_ptr<blink::IDBKey>& key) {
return key;
}
// static
bool StructTraits<
blink::mojom::IDBKeyDataView,
std::unique_ptr<blink::IDBKey>>::Read(blink::mojom::IDBKeyDataView data,
std::unique_ptr<blink::IDBKey>* out) {
return data.ReadData(out);
}
// static
Vector<uint8_t>
StructTraits<blink::mojom::IDBValueDataView, std::unique_ptr<blink::IDBValue>>::
......
......@@ -87,11 +87,11 @@ struct MODULES_EXPORT StructTraits<blink::mojom::IDBIndexMetadataDataView,
};
template <>
struct MODULES_EXPORT UnionTraits<blink::mojom::IDBKeyDataDataView,
std::unique_ptr<blink::IDBKey>> {
static blink::mojom::IDBKeyDataDataView::Tag GetTag(
struct MODULES_EXPORT
UnionTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>> {
static blink::mojom::IDBKeyDataView::Tag GetTag(
const std::unique_ptr<blink::IDBKey>& key);
static bool Read(blink::mojom::IDBKeyDataDataView data,
static bool Read(blink::mojom::IDBKeyDataView data,
std::unique_ptr<blink::IDBKey>* out);
static const Vector<std::unique_ptr<blink::IDBKey>>& key_array(
const std::unique_ptr<blink::IDBKey>& key);
......@@ -116,15 +116,6 @@ struct MODULES_EXPORT UnionTraits<blink::mojom::IDBKeyDataDataView,
}
};
template <>
struct MODULES_EXPORT
StructTraits<blink::mojom::IDBKeyDataView, std::unique_ptr<blink::IDBKey>> {
static const std::unique_ptr<blink::IDBKey>& data(
const std::unique_ptr<blink::IDBKey>& key);
static bool Read(blink::mojom::IDBKeyDataView data,
std::unique_ptr<blink::IDBKey>* out);
};
template <>
struct MODULES_EXPORT StructTraits<blink::mojom::IDBValueDataView,
std::unique_ptr<blink::IDBValue>> {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment