// Copyright (c) 2012 The Chromium Embedded Framework 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 "libcef/common/process_message_impl.h" #include #include "libcef/common/values_impl.h" #include "base/logging.h" #include "base/memory/ptr_util.h" // static CefRefPtr CefProcessMessage::Create(const CefString& name) { return new CefProcessMessageImpl(name, CefListValue::Create()); } CefProcessMessageImpl::CefProcessMessageImpl(const CefString& name, CefRefPtr arguments) : name_(name), arguments_(arguments) { DCHECK(!name_.empty()); DCHECK(arguments_ && arguments_->IsValid()); } CefProcessMessageImpl::CefProcessMessageImpl(const CefString& name, base::ListValue arguments, bool read_only) : name_(name) { DCHECK(!name_.empty()); auto new_obj = std::make_unique(); *new_obj = std::move(arguments); arguments_ = new CefListValueImpl(new_obj.release(), /*will_delete=*/true, read_only); } CefProcessMessageImpl::~CefProcessMessageImpl() = default; base::ListValue CefProcessMessageImpl::TakeArgumentList() { DCHECK(IsValid()); CefListValueImpl* value_impl = static_cast(arguments_.get()); auto value = base::WrapUnique(value_impl->CopyOrDetachValue(nullptr)); return std::move(*value); } bool CefProcessMessageImpl::IsValid() { return arguments_->IsValid(); } bool CefProcessMessageImpl::IsReadOnly() { return arguments_->IsReadOnly(); } CefRefPtr CefProcessMessageImpl::Copy() { if (!IsValid()) return nullptr; return new CefProcessMessageImpl(name_, arguments_->Copy()); } CefString CefProcessMessageImpl::GetName() { return name_; } CefRefPtr CefProcessMessageImpl::GetArgumentList() { return arguments_; }