// 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. #ifndef GIN_DATA_OBJECT_BUILDER_H_ #define GIN_DATA_OBJECT_BUILDER_H_ #include <string_view> #include <utility> #include "base/check.h" #include "base/memory/raw_ptr.h" #include "gin/converter.h" #include "gin/gin_export.h" #include "v8/include/v8-forward.h" #include "v8/include/v8-object.h" namespace gin { // Constructs a JavaScript object with a series of data properties. // (As with default data properties in JavaScript, these properties are // configurable, writable and enumerable.) // // Values are automatically converted using gin::Converter, though if // using a type where the conversion may fail, callers must convert ahead of // time. // // This class avoids the pitfall of using v8::Object::Set, which may invoke // setters on the object prototype. // // Expected usage: // v8::Local<v8::Object> object = gin::DataObjectBuilder(isolate) // .Set("boolean", true) // .Set("integer", 42) // .Build(); // // Because this builder class contains local handles, callers must ensure it // does not outlive the scope in which it is created. class GIN_EXPORT DataObjectBuilder { … }; } // namespace gin #endif // GIN_DATA_OBJECT_BUILDER_H_