summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/mojom/status_mojom_traits.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/mojom/status_mojom_traits.cc')
-rw-r--r--chromium/media/mojo/mojom/status_mojom_traits.cc37
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;
}