
This change updates the js-lite binding to support arrays of nullables. The change checks a bitfield in the serialized format when decoding and encodes the same bitfield when serializing. This is only used for arrays of nullable primitives. The wire format is as follows: | header | | bitfield | | padding | | values | The bitfield dictates whether or not a value in the array is null or not. Note that null values are still serialized (the value that is used is up to the implementation). Working: C++ Js Not working: Java Ts Change-Id: I657e8ab381181dcce1829ed7c7f7e3420d84935f Bug: 657632 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5280977 Reviewed-by: Rebekah Potter <rbpotter@chromium.org> Reviewed-by: Yuzhu Shen <yzshen@chromium.org> Commit-Queue: Fred Shih <ffred@chromium.org> Reviewed-by: Daniel Cheng <dcheng@chromium.org> Reviewed-by: Peter Beverloo <peter@chromium.org> Cr-Commit-Position: refs/heads/main@{#1288235}
221 lines
11 KiB
C++
221 lines
11 KiB
C++
// Copyright 2023 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#ifndef CONTENT_WEB_TEST_BROWSER_MOJO_OPTIONAL_NUMERICS_UNITTEST_H_
|
|
#define CONTENT_WEB_TEST_BROWSER_MOJO_OPTIONAL_NUMERICS_UNITTEST_H_
|
|
|
|
#include "content/web_test/common/mojo_optional_numerics_unittest.mojom.h"
|
|
|
|
namespace content::optional_numerics_unittest {
|
|
|
|
class Params : public mojom::Params {
|
|
public:
|
|
static void Bind(mojo::PendingReceiver<mojom::Params> receiver);
|
|
|
|
void SendNullBool(std::optional<bool> optional_bool,
|
|
SendNullBoolCallback callback) override;
|
|
void SendNullUint8(std::optional<uint8_t> optional_uint8,
|
|
SendNullUint8Callback callback) override;
|
|
void SendNullInt8(std::optional<int8_t> optional_int8,
|
|
SendNullInt8Callback callback) override;
|
|
void SendNullUint16(std::optional<uint16_t> optional_uint16,
|
|
SendNullUint16Callback callback) override;
|
|
void SendNullInt16(std::optional<int16_t> optional_int16,
|
|
SendNullInt16Callback callback) override;
|
|
void SendNullUint32(std::optional<uint32_t> optional_uint32,
|
|
SendNullUint32Callback callback) override;
|
|
void SendNullInt32(std::optional<int32_t> optional_int32,
|
|
SendNullInt32Callback callback) override;
|
|
void SendNullUint64(std::optional<uint64_t> optional_uint64,
|
|
SendNullUint64Callback callback) override;
|
|
void SendNullInt64(std::optional<int64_t> optional_int64,
|
|
SendNullInt64Callback callback) override;
|
|
void SendNullFloat(std::optional<float> optional_float,
|
|
SendNullFloatCallback callback) override;
|
|
void SendNullDouble(std::optional<double> optional_double,
|
|
SendNullDoubleCallback callback) override;
|
|
void SendNullEnum(std::optional<mojom::RegularEnum> optional_enum,
|
|
SendNullEnumCallback callback) override;
|
|
|
|
void SendNullBools(const std::vector<std::optional<bool>>& optional_bools,
|
|
SendNullBoolsCallback callback) override;
|
|
void SendNullInt16s(
|
|
const std::vector<std::optional<int16_t>>& optional_int16s,
|
|
SendNullInt16sCallback callback) override;
|
|
void SendNullUint32s(
|
|
const std::vector<std::optional<uint32_t>>& optional_uint32s,
|
|
SendNullUint32sCallback callback) override;
|
|
void SendNullDoubles(
|
|
const std::vector<std::optional<double>>& optional_doubles,
|
|
SendNullDoublesCallback callback) override;
|
|
void SendNullEnums(
|
|
const std::vector<std::optional<mojom::RegularEnum>>& optional_enums,
|
|
SendNullEnumsCallback callback) override;
|
|
|
|
void SendNullBoolMap(
|
|
const base::flat_map<int32_t, std::optional<bool>>& values,
|
|
SendNullBoolMapCallback callback) override;
|
|
void SendNullDoubleMap(
|
|
const base::flat_map<int32_t, std::optional<double>>& values,
|
|
SendNullDoubleMapCallback callback) override;
|
|
void SendNullEnumMap(
|
|
const base::flat_map<int32_t, std::optional<mojom::RegularEnum>>& values,
|
|
SendNullEnumMapCallback callback) override;
|
|
|
|
void SendOptionalBool(std::optional<bool> optional_bool,
|
|
SendOptionalBoolCallback callback) override;
|
|
void SendOptionalUint8(std::optional<uint8_t> optional_uint8,
|
|
SendOptionalUint8Callback callback) override;
|
|
void SendOptionalInt8(std::optional<int8_t> optional_int8,
|
|
SendOptionalInt8Callback callback) override;
|
|
void SendOptionalUint16(std::optional<uint16_t> optional_uint16,
|
|
SendOptionalUint16Callback callback) override;
|
|
void SendOptionalInt16(std::optional<int16_t> optional_int16,
|
|
SendOptionalInt16Callback callback) override;
|
|
void SendOptionalUint32(std::optional<uint32_t> optional_uint32,
|
|
SendOptionalUint32Callback callback) override;
|
|
void SendOptionalInt32(std::optional<int32_t> optional_int32,
|
|
SendOptionalInt32Callback callback) override;
|
|
void SendOptionalUint64(std::optional<uint64_t> optional_uint64,
|
|
SendOptionalUint64Callback callback) override;
|
|
void SendOptionalInt64(std::optional<int64_t> optional_int64,
|
|
SendOptionalInt64Callback callback) override;
|
|
void SendOptionalFloat(std::optional<float> optional_float,
|
|
SendOptionalFloatCallback callback) override;
|
|
void SendOptionalDouble(std::optional<double> optional_double,
|
|
SendOptionalDoubleCallback callback) override;
|
|
void SendOptionalEnum(std::optional<mojom::RegularEnum> optional_enum,
|
|
SendOptionalEnumCallback callback) override;
|
|
|
|
void SendOptionalBools(const std::vector<std::optional<bool>>& optional_bools,
|
|
SendOptionalBoolsCallback callback) override;
|
|
void SendOptionalInt16s(
|
|
const std::vector<std::optional<int16_t>>& optional_int16s,
|
|
SendOptionalInt16sCallback callback) override;
|
|
void SendOptionalUint32s(
|
|
const std::vector<std::optional<uint32_t>>& optional_uint32s,
|
|
SendOptionalUint32sCallback callback) override;
|
|
void SendOptionalDoubles(
|
|
const std::vector<std::optional<double>>& optional_doubles,
|
|
SendOptionalDoublesCallback callback) override;
|
|
void SendOptionalEnums(
|
|
const std::vector<std::optional<mojom::RegularEnum>>& optional_enums,
|
|
SendOptionalEnumsCallback callback) override;
|
|
|
|
void SendOptionalBoolMap(
|
|
const base::flat_map<int32_t, std::optional<bool>>& values,
|
|
SendOptionalBoolMapCallback callback) override;
|
|
void SendOptionalDoubleMap(
|
|
const base::flat_map<int32_t, std::optional<double>>& values,
|
|
SendOptionalDoubleMapCallback callback) override;
|
|
void SendOptionalEnumMap(
|
|
const base::flat_map<int32_t, std::optional<mojom::RegularEnum>>& values,
|
|
SendOptionalEnumMapCallback callback) override;
|
|
|
|
void SendNullStructWithOptionalNumerics(
|
|
mojom::OptionalNumericsStructPtr s,
|
|
SendNullStructWithOptionalNumericsCallback callback) override;
|
|
void SendStructWithNullOptionalNumerics(
|
|
mojom::OptionalNumericsStructPtr s,
|
|
SendStructWithNullOptionalNumericsCallback callback) override;
|
|
void SendStructWithOptionalNumerics(
|
|
mojom::OptionalNumericsStructPtr s,
|
|
SendStructWithOptionalNumericsCallback callback) override;
|
|
};
|
|
|
|
class ResponseParams : public mojom::ResponseParams {
|
|
public:
|
|
static void Bind(mojo::PendingReceiver<mojom::ResponseParams> receiver);
|
|
|
|
void GetNullBool(GetNullBoolCallback callback) override;
|
|
|
|
void GetNullUint8(GetNullUint8Callback callback) override;
|
|
void GetNullInt8(GetNullInt8Callback callback) override;
|
|
void GetNullUint16(GetNullUint16Callback callback) override;
|
|
void GetNullInt16(GetNullInt16Callback callback) override;
|
|
void GetNullUint32(GetNullUint32Callback callback) override;
|
|
void GetNullInt32(GetNullInt32Callback callback) override;
|
|
void GetNullUint64(GetNullUint64Callback callback) override;
|
|
void GetNullInt64(GetNullInt64Callback callback) override;
|
|
void GetNullFloat(GetNullFloatCallback callback) override;
|
|
void GetNullDouble(GetNullDoubleCallback callback) override;
|
|
void GetNullEnum(GetNullEnumCallback callback) override;
|
|
|
|
void GetNullBools(GetNullBoolsCallback callback) override;
|
|
void GetNullInt16s(GetNullInt16sCallback callback) override;
|
|
void GetNullUint32s(GetNullUint32sCallback callback) override;
|
|
void GetNullDoubles(GetNullDoublesCallback callback) override;
|
|
void GetNullEnums(GetNullEnumsCallback callback) override;
|
|
|
|
void GetNullBoolMap(GetNullBoolMapCallback callback) override;
|
|
void GetNullInt32Map(GetNullInt32MapCallback callback) override;
|
|
void GetNullEnumMap(GetNullEnumMapCallback callback) override;
|
|
|
|
void GetOptionalBool(bool value, GetOptionalBoolCallback callback) override;
|
|
void GetOptionalUint8(uint8_t value,
|
|
GetOptionalUint8Callback callback) override;
|
|
void GetOptionalInt8(int8_t value, GetOptionalInt8Callback callback) override;
|
|
void GetOptionalUint16(uint16_t value,
|
|
GetOptionalUint16Callback callback) override;
|
|
void GetOptionalInt16(int16_t value,
|
|
GetOptionalInt16Callback callback) override;
|
|
void GetOptionalUint32(uint32_t value,
|
|
GetOptionalUint32Callback callback) override;
|
|
void GetOptionalInt32(int32_t value,
|
|
GetOptionalInt32Callback callback) override;
|
|
void GetOptionalUint64(uint64_t value,
|
|
GetOptionalUint64Callback callback) override;
|
|
void GetOptionalInt64(int64_t value,
|
|
GetOptionalInt64Callback callback) override;
|
|
void GetOptionalFloat(float value,
|
|
GetOptionalFloatCallback callback) override;
|
|
void GetOptionalDouble(double value,
|
|
GetOptionalDoubleCallback callback) override;
|
|
void GetOptionalEnum(mojom::RegularEnum value,
|
|
GetOptionalEnumCallback callback) override;
|
|
|
|
void GetOptionalBools(bool value, GetOptionalBoolsCallback callback) override;
|
|
void GetOptionalInt16s(int16_t value,
|
|
GetOptionalInt16sCallback callback) override;
|
|
void GetOptionalUint32s(uint32_t value,
|
|
GetOptionalUint32sCallback callback) override;
|
|
void GetOptionalDoubles(double value,
|
|
GetOptionalDoublesCallback callback) override;
|
|
void GetOptionalEnums(mojom::RegularEnum value,
|
|
GetOptionalEnumsCallback callback) override;
|
|
|
|
void GetOptionalBoolMap(int16_t key,
|
|
bool value,
|
|
GetOptionalBoolMapCallback callback) override;
|
|
void GetOptionalFloatMap(int16_t key,
|
|
float value,
|
|
GetOptionalFloatMapCallback callback) override;
|
|
void GetOptionalEnumMap(int16_t key,
|
|
mojom::RegularEnum value,
|
|
GetOptionalEnumMapCallback callback) override;
|
|
|
|
void GetNullStructWithOptionalNumerics(
|
|
GetNullStructWithOptionalNumericsCallback callback) override;
|
|
void GetStructWithNullOptionalNumerics(
|
|
GetStructWithNullOptionalNumericsCallback callback) override;
|
|
void GetStructWithOptionalNumerics(
|
|
bool bool_value,
|
|
uint8_t uint8_value,
|
|
int8_t int8_value,
|
|
uint16_t uint16_value,
|
|
int16_t int16_value,
|
|
uint32_t uint32_value,
|
|
int32_t int32_value,
|
|
uint64_t uint64_value,
|
|
int64_t int64_value,
|
|
float float_value,
|
|
double double_value,
|
|
mojom::RegularEnum enum_value,
|
|
GetStructWithOptionalNumericsCallback callback) override;
|
|
};
|
|
|
|
} // namespace content::optional_numerics_unittest
|
|
|
|
#endif // CONTENT_WEB_TEST_BROWSER_MOJO_OPTIONAL_NUMERICS_UNITTEST_H_
|