chromium/third_party/blink/common/messaging/string_message_codec.cc

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifdef UNSAFE_BUFFERS_BUILD
// TODO(crbug.com/351564777): Remove this and convert code to safer constructs.
#pragma allow_unsafe_buffers
#endif

#include "third_party/blink/public/common/messaging/string_message_codec.h"

#include <memory>
#include <string>
#include <vector>

#include "base/check_op.h"
#include "base/containers/buffer_iterator.h"
#include "base/containers/span.h"
#include "base/functional/overloaded.h"
#include "base/logging.h"
#include "base/notreached.h"
#include "base/numerics/checked_math.h"
#include "mojo/public/cpp/base/big_buffer.h"
#include "third_party/blink/public/mojom/array_buffer/array_buffer_contents.mojom.h"

namespace blink {
namespace {

// An ArrayBufferPayload impl based on std::vector.
class VectorArrayBuffer : public WebMessageArrayBufferPayload {};

// An ArrayBufferPayload impl based on mojo::BigBuffer.
class BigBufferArrayBuffer : public WebMessageArrayBufferPayload {};

const uint32_t kVarIntShift =;
const uint32_t kVarIntMask =;

const uint8_t kVersionTag =;
const uint8_t kPaddingTag =;
// serialization_tag, see v8/src/objects/value-serializer.cc
const uint8_t kOneByteStringTag =;
const uint8_t kTwoByteStringTag =;
const uint8_t kArrayBuffer =;
const uint8_t kArrayBufferTransferTag =;

const uint32_t kVersion =;

static size_t BytesNeededForUint32(uint32_t value) {}

void WriteUint8(uint8_t value, std::vector<uint8_t>* buffer) {}

void WriteUint32(uint32_t value, std::vector<uint8_t>* buffer) {}

void WriteBytes(const char* bytes,
                size_t num_bytes,
                std::vector<uint8_t>* buffer) {}

bool ReadUint8(base::BufferIterator<const uint8_t>& iter, uint8_t* value) {}

bool ReadUint32(base::BufferIterator<const uint8_t>& iter, uint32_t* value) {}

bool ContainsOnlyLatin1(const std::u16string& data) {}

}  // namespace

// static
std::unique_ptr<WebMessageArrayBufferPayload>
WebMessageArrayBufferPayload::CreateFromBigBuffer(
    mojo_base::BigBuffer buffer,
    std::optional<size_t> max_byte_length) {}

// static
std::unique_ptr<WebMessageArrayBufferPayload>
WebMessageArrayBufferPayload::CreateForTesting(std::vector<uint8_t> data) {}

TransferableMessage EncodeWebMessagePayload(const WebMessagePayload& payload) {}

std::optional<WebMessagePayload> DecodeToWebMessagePayload(
    TransferableMessage message) {}

}  // namespace blink