blob: e102b775923b922b54da4c9085d6bf07bc5f2866 [file] [log] [blame]
// 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 "content/common/media/media_stream_typemap_traits.h"
#include "base/logging.h"
namespace mojo {
// static
content::mojom::MediaStreamType
EnumTraits<content::mojom::MediaStreamType, content::MediaStreamType>::ToMojom(
content::MediaStreamType type) {
switch (type) {
case content::MediaStreamType::MEDIA_NO_SERVICE:
return content::mojom::MediaStreamType::MEDIA_NO_SERVICE;
case content::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE;
case content::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE;
case content::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE;
case content::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE;
case content::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE;
case content::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE;
case content::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE:
return content::mojom::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE;
case content::MediaStreamType::NUM_MEDIA_TYPES:
return content::mojom::MediaStreamType::NUM_MEDIA_TYPES;
}
NOTREACHED();
return content::mojom::MediaStreamType::MEDIA_NO_SERVICE;
}
// static
bool EnumTraits<content::mojom::MediaStreamType, content::MediaStreamType>::
FromMojom(content::mojom::MediaStreamType input,
content::MediaStreamType* out) {
switch (input) {
case content::mojom::MediaStreamType::MEDIA_NO_SERVICE:
*out = content::MediaStreamType::MEDIA_NO_SERVICE;
return true;
case content::mojom::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE:
*out = content::MediaStreamType::MEDIA_DEVICE_AUDIO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE:
*out = content::MediaStreamType::MEDIA_DEVICE_VIDEO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE:
*out = content::MediaStreamType::MEDIA_GUM_TAB_AUDIO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE:
*out = content::MediaStreamType::MEDIA_GUM_TAB_VIDEO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE:
*out = content::MediaStreamType::MEDIA_GUM_DESKTOP_VIDEO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE:
*out = content::MediaStreamType::MEDIA_GUM_DESKTOP_AUDIO_CAPTURE;
return true;
case content::mojom::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE:
*out = content::MediaStreamType::MEDIA_DISPLAY_VIDEO_CAPTURE;
return true;
case content::mojom::MediaStreamType::NUM_MEDIA_TYPES:
*out = content::MediaStreamType::NUM_MEDIA_TYPES;
return true;
}
NOTREACHED();
return false;
}
// static
content::mojom::MediaStreamRequestResult
EnumTraits<content::mojom::MediaStreamRequestResult,
content::MediaStreamRequestResult>::
ToMojom(content::MediaStreamRequestResult result) {
switch (result) {
case content::MediaStreamRequestResult::MEDIA_DEVICE_OK:
return content::mojom::MediaStreamRequestResult::OK;
case content::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DENIED:
return content::mojom::MediaStreamRequestResult::PERMISSION_DENIED;
case content::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DISMISSED:
return content::mojom::MediaStreamRequestResult::PERMISSION_DISMISSED;
case content::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_STATE:
return content::mojom::MediaStreamRequestResult::INVALID_STATE;
case content::MediaStreamRequestResult::MEDIA_DEVICE_NO_HARDWARE:
return content::mojom::MediaStreamRequestResult::NO_HARDWARE;
case content::MediaStreamRequestResult::
MEDIA_DEVICE_INVALID_SECURITY_ORIGIN:
return content::mojom::MediaStreamRequestResult::INVALID_SECURITY_ORIGIN;
case content::MediaStreamRequestResult::MEDIA_DEVICE_TAB_CAPTURE_FAILURE:
return content::mojom::MediaStreamRequestResult::TAB_CAPTURE_FAILURE;
case content::MediaStreamRequestResult::MEDIA_DEVICE_SCREEN_CAPTURE_FAILURE:
return content::mojom::MediaStreamRequestResult::SCREEN_CAPTURE_FAILURE;
case content::MediaStreamRequestResult::MEDIA_DEVICE_CAPTURE_FAILURE:
return content::mojom::MediaStreamRequestResult::CAPTURE_FAILURE;
case content::MediaStreamRequestResult::
MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED:
return content::mojom::MediaStreamRequestResult::CONSTRAINT_NOT_SATISFIED;
case content::MediaStreamRequestResult::
MEDIA_DEVICE_TRACK_START_FAILURE_AUDIO:
return content::mojom::MediaStreamRequestResult::
TRACK_START_FAILURE_AUDIO;
case content::MediaStreamRequestResult::
MEDIA_DEVICE_TRACK_START_FAILURE_VIDEO:
return content::mojom::MediaStreamRequestResult::
TRACK_START_FAILURE_VIDEO;
case content::MediaStreamRequestResult::MEDIA_DEVICE_NOT_SUPPORTED:
return content::mojom::MediaStreamRequestResult::NOT_SUPPORTED;
case content::MediaStreamRequestResult::MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN:
return content::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN;
case content::MediaStreamRequestResult::MEDIA_DEVICE_KILL_SWITCH_ON:
return content::mojom::MediaStreamRequestResult::KILL_SWITCH_ON;
default:
break;
}
NOTREACHED();
return content::mojom::MediaStreamRequestResult::OK;
}
// static
bool EnumTraits<content::mojom::MediaStreamRequestResult,
content::MediaStreamRequestResult>::
FromMojom(content::mojom::MediaStreamRequestResult input,
content::MediaStreamRequestResult* out) {
switch (input) {
case content::mojom::MediaStreamRequestResult::OK:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_OK;
return true;
case content::mojom::MediaStreamRequestResult::PERMISSION_DENIED:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DENIED;
return true;
case content::mojom::MediaStreamRequestResult::PERMISSION_DISMISSED:
*out =
content::MediaStreamRequestResult::MEDIA_DEVICE_PERMISSION_DISMISSED;
return true;
case content::mojom::MediaStreamRequestResult::INVALID_STATE:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_INVALID_STATE;
return true;
case content::mojom::MediaStreamRequestResult::NO_HARDWARE:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_NO_HARDWARE;
return true;
case content::mojom::MediaStreamRequestResult::INVALID_SECURITY_ORIGIN:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_INVALID_SECURITY_ORIGIN;
return true;
case content::mojom::MediaStreamRequestResult::TAB_CAPTURE_FAILURE:
*out =
content::MediaStreamRequestResult::MEDIA_DEVICE_TAB_CAPTURE_FAILURE;
return true;
case content::mojom::MediaStreamRequestResult::SCREEN_CAPTURE_FAILURE:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_SCREEN_CAPTURE_FAILURE;
return true;
case content::mojom::MediaStreamRequestResult::CAPTURE_FAILURE:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_CAPTURE_FAILURE;
return true;
case content::mojom::MediaStreamRequestResult::CONSTRAINT_NOT_SATISFIED:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED;
return true;
case content::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_AUDIO:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_TRACK_START_FAILURE_AUDIO;
return true;
case content::mojom::MediaStreamRequestResult::TRACK_START_FAILURE_VIDEO:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_TRACK_START_FAILURE_VIDEO;
return true;
case content::mojom::MediaStreamRequestResult::NOT_SUPPORTED:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_NOT_SUPPORTED;
return true;
case content::mojom::MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN:
*out = content::MediaStreamRequestResult::
MEDIA_DEVICE_FAILED_DUE_TO_SHUTDOWN;
return true;
case content::mojom::MediaStreamRequestResult::KILL_SWITCH_ON:
*out = content::MediaStreamRequestResult::MEDIA_DEVICE_KILL_SWITCH_ON;
return true;
}
NOTREACHED();
return false;
}
// static
bool StructTraits<
content::mojom::TrackControlsDataView,
content::TrackControls>::Read(content::mojom::TrackControlsDataView input,
content::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<
content::mojom::StreamControlsDataView,
content::StreamControls>::Read(content::mojom::StreamControlsDataView input,
content::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