| // 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 "third_party/blink/public/common/mediastream/media_stream_mojom_traits.h" |
| |
| #include "base/logging.h" |
| #include "media/base/ipc/media_param_traits.h" |
| #include "media/capture/mojom/video_capture_types_mojom_traits.h" |
| #include "media/mojo/interfaces/display_media_information.mojom.h" |
| |
| namespace mojo { |
| |
| // static |
| blink::mojom::MediaStreamType |
| EnumTraits<blink::mojom::MediaStreamType, blink::MediaStreamType>::ToMojom( |
| blink::MediaStreamType type) { |
| switch (type) { |
| case blink::MediaStreamType::MEDIA_NO_SERVICE: |
| return blink::mojom::MediaStreamType::MEDIA_NO_SERVICE; |
| case blink::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE; |
| case blink::MediaStreamType::MEDIA_DISPLAY_AUDIO_CAPTURE: |
| return blink::mojom::MediaStreamType::MEDIA_DISPLAY_AUDIO_CAPTURE; |
| case blink::MediaStreamType::NUM_MEDIA_TYPES: |
| return blink::mojom::MediaStreamType::NUM_MEDIA_TYPES; |
| } |
| NOTREACHED(); |
| return blink::mojom::MediaStreamType::MEDIA_NO_SERVICE; |
| } |
| |
| // static |
| bool EnumTraits<blink::mojom::MediaStreamType, blink::MediaStreamType>:: |
| FromMojom(blink::mojom::MediaStreamType input, |
| blink::MediaStreamType* out) { |
| switch (input) { |
| case blink::mojom::MediaStreamType::MEDIA_NO_SERVICE: |
| *out = blink::MediaStreamType::MEDIA_NO_SERVICE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::MEDIA_DISPLAY_AUDIO_CAPTURE: |
| *out = blink::MediaStreamType::MEDIA_DISPLAY_AUDIO_CAPTURE; |
| return true; |
| case blink::mojom::MediaStreamType::NUM_MEDIA_TYPES: |
| *out = blink::MediaStreamType::NUM_MEDIA_TYPES; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| |
| // static |
| blink::mojom::MediaStreamRequestResult EnumTraits< |
| blink::mojom::MediaStreamRequestResult, |
| blink::MediaStreamRequestResult>::ToMojom(blink::MediaStreamRequestResult |
| result) { |
| switch (result) { |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_OK: |
| return blink::mojom::MediaStreamRequestResult::OK; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DENIED: |
| return blink::mojom::MediaStreamRequestResult::PERMISSION_DENIED; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DISMISSED: |
| return blink::mojom::MediaStreamRequestResult::PERMISSION_DISMISSED; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_STATE: |
| return blink::mojom::MediaStreamRequestResult::INVALID_STATE; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_NO_HARDWARE: |
| return blink::mojom::MediaStreamRequestResult::NO_HARDWARE; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_SECURITY_ORIGIN: |
| return blink::mojom::MediaStreamRequestResult::INVALID_SECURITY_ORIGIN; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_TAB_CAPTURE_FAILURE: |
| return blink::mojom::MediaStreamRequestResult::TAB_CAPTURE_FAILURE; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_SCREEN_CAPTURE_FAILURE: |
| return blink::mojom::MediaStreamRequestResult::SCREEN_CAPTURE_FAILURE; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_CAPTURE_FAILURE: |
| return blink::mojom::MediaStreamRequestResult::CAPTURE_FAILURE; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED: |
| return blink::mojom::MediaStreamRequestResult::CONSTRAINT_NOT_SATISFIED; |
| case blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_TRACK_START_FAILURE_AUDIO: |
| return blink::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_AUDIO; |
| case blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_TRACK_START_FAILURE_VIDEO: |
| return blink::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_VIDEO; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_NOT_SUPPORTED: |
| return blink::mojom::MediaStreamRequestResult::NOT_SUPPORTED; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN: |
| return blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_KILL_SWITCH_ON: |
| return blink::mojom::MediaStreamRequestResult::KILL_SWITCH_ON; |
| case blink::MediaStreamRequestResult::MEDIA_DEVICE_SYSTEM_PERMISSION_DENIED: |
| return blink::mojom::MediaStreamRequestResult::SYSTEM_PERMISSION_DENIED; |
| default: |
| break; |
| } |
| NOTREACHED(); |
| return blink::mojom::MediaStreamRequestResult::OK; |
| } |
| |
| // static |
| bool EnumTraits<blink::mojom::MediaStreamRequestResult, |
| blink::MediaStreamRequestResult>:: |
| FromMojom(blink::mojom::MediaStreamRequestResult input, |
| blink::MediaStreamRequestResult* out) { |
| switch (input) { |
| case blink::mojom::MediaStreamRequestResult::OK: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_OK; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::PERMISSION_DENIED: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DENIED; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::PERMISSION_DISMISSED: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DISMISSED; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::INVALID_STATE: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_STATE; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::NO_HARDWARE: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_NO_HARDWARE; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::INVALID_SECURITY_ORIGIN: |
| *out = |
| blink::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_SECURITY_ORIGIN; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::TAB_CAPTURE_FAILURE: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_TAB_CAPTURE_FAILURE; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::SCREEN_CAPTURE_FAILURE: |
| *out = |
| blink::MediaStreamRequestResult::MEDIA_DEVICE_SCREEN_CAPTURE_FAILURE; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::CAPTURE_FAILURE: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_CAPTURE_FAILURE; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::CONSTRAINT_NOT_SATISFIED: |
| *out = blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_AUDIO: |
| *out = blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_TRACK_START_FAILURE_AUDIO; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_VIDEO: |
| *out = blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_TRACK_START_FAILURE_VIDEO; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::NOT_SUPPORTED: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_NOT_SUPPORTED; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN: |
| *out = |
| blink::MediaStreamRequestResult::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::KILL_SWITCH_ON: |
| *out = blink::MediaStreamRequestResult::MEDIA_DEVICE_KILL_SWITCH_ON; |
| return true; |
| case blink::mojom::MediaStreamRequestResult::SYSTEM_PERMISSION_DENIED: |
| *out = blink::MediaStreamRequestResult:: |
| MEDIA_DEVICE_SYSTEM_PERMISSION_DENIED; |
| return true; |
| } |
| NOTREACHED(); |
| return false; |
| } |
| |
| // static |
| bool StructTraits<blink::mojom::MediaStreamDeviceDataView, |
| blink::MediaStreamDevice>:: |
| Read(blink::mojom::MediaStreamDeviceDataView input, |
| blink::MediaStreamDevice* out) { |
| if (!input.ReadType(&out->type)) |
| return false; |
| if (!input.ReadId(&out->id)) |
| return false; |
| if (!input.ReadVideoFacing(&out->video_facing)) |
| return false; |
| if (!input.ReadGroupId(&out->group_id)) |
| return false; |
| if (!input.ReadMatchedOutputDeviceId(&out->matched_output_device_id)) |
| return false; |
| if (!input.ReadName(&out->name)) |
| return false; |
| if (!input.ReadInput(&out->input)) |
| return false; |
| out->session_id = input.session_id(); |
| if (!input.ReadCameraCalibration(&out->camera_calibration)) |
| return false; |
| if (!input.ReadDisplayMediaInfo(&out->display_media_info)) |
| return false; |
| return true; |
| } |
| |
| // static |
| bool StructTraits<blink::mojom::TrackControlsDataView, blink::TrackControls>:: |
| Read(blink::mojom::TrackControlsDataView input, blink::TrackControls* out) { |
| out->requested = input.requested(); |
| if (!input.ReadStreamType(&out->stream_type)) |
| return false; |
| if (!input.ReadDeviceId(&out->device_id)) |
| return false; |
| return true; |
| } |
| |
| // static |
| bool StructTraits<blink::mojom::StreamControlsDataView, blink::StreamControls>:: |
| Read(blink::mojom::StreamControlsDataView input, |
| blink::StreamControls* out) { |
| if (!input.ReadAudio(&out->audio)) |
| return false; |
| if (!input.ReadVideo(&out->video)) |
| return false; |
| #if DCHECK_IS_ON() |
| if (input.hotword_enabled() || input.disable_local_echo()) |
| DCHECK(out->audio.requested); |
| #endif |
| out->hotword_enabled = input.hotword_enabled(); |
| out->disable_local_echo = input.disable_local_echo(); |
| return true; |
| } |
| |
| } // namespace mojo |