blob: 50ed5f2ae9cf25a59411a57e3d90eba0f6526e49 [file] [log] [blame]
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef SERVICES_ACCESSIBILITY_FEATURES_V8_UTILS_H_
#define SERVICES_ACCESSIBILITY_FEATURES_V8_UTILS_H_
#include "base/values.h"
#include "v8-context.h"
#include "v8-local-handle.h"
#include "v8-object.h"
#include "v8-value.h"
namespace ax {
// This class converts from base::Value types to v8::Values so they can be
// dispatched to JS. Usage: V8ValueConverter::GetInstance()->ConvertToV8Value().
class V8ValueConverter {
public:
~V8ValueConverter() = default;
// Returns the singleton converter.
static V8ValueConverter* GetInstance();
v8::Local<v8::Value> ConvertToV8Value(base::ValueView value,
v8::Local<v8::Context> context) const;
protected:
// Singleton, constructor protected.
V8ValueConverter() = default;
private:
v8::Local<v8::Value> ToV8Value(v8::Isolate* isolate,
v8::Local<v8::Object> creation_context,
base::ValueView value) const;
v8::Local<v8::Value> ToArrayBuffer(
v8::Isolate* isolate,
v8::Local<v8::Object> creation_context,
const base::Value::BlobStorage& value) const;
v8::Local<v8::Value> ToV8Object(v8::Isolate* isolate,
v8::Local<v8::Object> creation_context,
const base::Value::Dict& val) const;
v8::Local<v8::Value> ToV8Array(v8::Isolate* isolate,
v8::Local<v8::Object> creation_context,
const base::Value::List& val) const;
};
} // namespace ax
#endif // SERVICES_ACCESSIBILITY_FEATURES_V8_UTILS_H_