| Index: extensions/renderer/argument_spec_builder.cc
|
| diff --git a/extensions/renderer/argument_spec_builder.cc b/extensions/renderer/argument_spec_builder.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..142c77588f71c5d57ef13d7ad72132d92c1369f8
|
| --- /dev/null
|
| +++ b/extensions/renderer/argument_spec_builder.cc
|
| @@ -0,0 +1,78 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "extensions/renderer/argument_spec_builder.h"
|
| +
|
| +#include "base/memory/ptr_util.h"
|
| +
|
| +namespace extensions {
|
| +
|
| +ArgumentSpecBuilder::ArgumentSpecBuilder(ArgumentType type)
|
| + : ArgumentSpecBuilder(type, base::StringPiece()) {}
|
| +
|
| +ArgumentSpecBuilder::ArgumentSpecBuilder(ArgumentType type,
|
| + base::StringPiece name)
|
| + : spec_(base::MakeUnique<ArgumentSpec>(type)) {
|
| + if (!name.empty())
|
| + spec_->set_name(name);
|
| +}
|
| +
|
| +ArgumentSpecBuilder::~ArgumentSpecBuilder() {}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::MakeOptional() {
|
| + spec_->set_optional(true);
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::AddProperty(
|
| + base::StringPiece property_name,
|
| + std::unique_ptr<ArgumentSpec> property_spec) {
|
| + properties_[property_name.as_string()] = std::move(property_spec);
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetMinimum(int minimum) {
|
| + spec_->set_minimum(minimum);
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetListType(
|
| + std::unique_ptr<ArgumentSpec> list_type) {
|
| + spec_->set_list_element_type(std::move(list_type));
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetRef(base::StringPiece ref) {
|
| + spec_->set_ref(ref);
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetChoices(
|
| + std::vector<std::unique_ptr<ArgumentSpec>> choices) {
|
| + spec_->set_choices(std::move(choices));
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetEnums(
|
| + std::set<std::string> enum_values) {
|
| + spec_->set_enum_values(std::move(enum_values));
|
| + return *this;
|
| +}
|
| +
|
| +ArgumentSpecBuilder& ArgumentSpecBuilder::SetAdditionalProperties(
|
| + std::unique_ptr<ArgumentSpec> additional_properties) {
|
| + spec_->set_additional_properties(std::move(additional_properties));
|
| + return *this;
|
| +}
|
| +
|
| +std::unique_ptr<ArgumentSpec> ArgumentSpecBuilder::Build() {
|
| + spec_->set_properties(std::move(properties_));
|
| + return std::move(spec_);
|
| +}
|
| +
|
| +ArgumentSpecBuilder::operator std::unique_ptr<ArgumentSpec>() {
|
| + return Build();
|
| +}
|
| +
|
| +} // namespace extensions
|
|
|