returns_async_builder.cc 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Copyright 2021 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "extensions/renderer/bindings/returns_async_builder.h"
  5. namespace extensions {
  6. ReturnsAsyncBuilder::ReturnsAsyncBuilder() = default;
  7. ReturnsAsyncBuilder::~ReturnsAsyncBuilder() = default;
  8. ReturnsAsyncBuilder::ReturnsAsyncBuilder(
  9. std::vector<std::unique_ptr<ArgumentSpec>> signature)
  10. : signature_(std::move(signature)) {}
  11. ReturnsAsyncBuilder& ReturnsAsyncBuilder::MakeOptional() {
  12. optional_ = true;
  13. return *this;
  14. }
  15. ReturnsAsyncBuilder& ReturnsAsyncBuilder::AddPromiseSupport() {
  16. promise_support_ = binding::APIPromiseSupport::kSupported;
  17. return *this;
  18. }
  19. std::unique_ptr<APISignature::ReturnsAsync> ReturnsAsyncBuilder::Build() {
  20. std::unique_ptr<APISignature::ReturnsAsync> returns_async =
  21. std::make_unique<APISignature::ReturnsAsync>();
  22. if (signature_)
  23. returns_async->signature = std::move(signature_);
  24. returns_async->optional = optional_;
  25. returns_async->promise_support = promise_support_;
  26. return returns_async;
  27. }
  28. } // namespace extensions