diff options
Diffstat (limited to 'chromium/media/mojo/mojom/status_mojom_traits.cc')
-rw-r--r-- | chromium/media/mojo/mojom/status_mojom_traits.cc | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/chromium/media/mojo/mojom/status_mojom_traits.cc b/chromium/media/mojo/mojom/status_mojom_traits.cc index 639e8462643..7ac13fbceaa 100644 --- a/chromium/media/mojo/mojom/status_mojom_traits.cc +++ b/chromium/media/mojo/mojom/status_mojom_traits.cc @@ -11,37 +11,30 @@ namespace mojo { // static -bool StructTraits<media::mojom::StatusDataView, media::Status>::Read( - media::mojom::StatusDataView data, - media::Status* output) { - DCHECK(!output->data_); - - media::StatusCode code; - std::string message; - if (!data.ReadCode(&code)) - return false; - - if (media::StatusCode::kOk == code) - return true; +bool StructTraits< + media::mojom::StatusDataDataView, + media::internal::StatusData>::Read(media::mojom::StatusDataDataView data, + media::internal::StatusData* output) { + output->code = data.code(); - absl::optional<std::string> optional_message; - if (!data.ReadMessage(&optional_message)) + if (!data.ReadGroup(&output->group)) return false; - message = std::move(optional_message).value_or(std::string()); - output->data_ = - std::make_unique<media::Status::StatusInternal>(code, std::move(message)); + if (!data.ReadMessage(&output->message)) + return false; - if (!data.ReadFrames(&output->data_->frames)) + if (!data.ReadFrames(&output->frames)) return false; - if (!data.ReadCauses(&output->data_->causes)) + if (!data.ReadData(&output->data)) return false; - absl::optional<base::Value> optional_data; - if (!data.ReadData(&optional_data)) + std::vector<media::internal::StatusData> causes; + if (!data.ReadCauses(&causes)) return false; - output->data_->data = std::move(optional_data).value_or(base::Value()); + + for (const auto& cause : causes) + output->causes.push_back(cause); return true; } |