// Copyright 2016 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_devices.h"
#include "third_party/blink/public/mojom/mediastream/media_devices.mojom-shared.h"

namespace blink {

WebMediaDeviceInfo::WebMediaDeviceInfo() = default;

WebMediaDeviceInfo::WebMediaDeviceInfo(const WebMediaDeviceInfo& other) =
    default;

WebMediaDeviceInfo::WebMediaDeviceInfo(WebMediaDeviceInfo&& other) = default;

WebMediaDeviceInfo::WebMediaDeviceInfo(
    const std::string& device_id,
    const std::string& label,
    const std::string& group_id,
    const media::VideoCaptureControlSupport& video_control_support,
    blink::mojom::FacingMode video_facing)
    : device_id(device_id),
      label(label),
      group_id(group_id),
      video_control_support(video_control_support),
      video_facing(video_facing) {}

WebMediaDeviceInfo::WebMediaDeviceInfo(
    const media::VideoCaptureDeviceDescriptor& descriptor)
    : device_id(descriptor.device_id),
      label(descriptor.GetNameAndModel()),
      video_control_support(descriptor.control_support()),
      video_facing(static_cast<blink::mojom::FacingMode>(descriptor.facing)) {}

WebMediaDeviceInfo::~WebMediaDeviceInfo() = default;

WebMediaDeviceInfo& WebMediaDeviceInfo::operator=(
    const WebMediaDeviceInfo& other) = default;

WebMediaDeviceInfo& WebMediaDeviceInfo::operator=(WebMediaDeviceInfo&& other) =
    default;

bool operator==(const WebMediaDeviceInfo& first,
                const WebMediaDeviceInfo& second) {
  // Do not use the |group_id| and |video_facing| fields for equality comparison
  // since they are currently not fully supported by the video-capture layer.
  // The modification of those fields by heuristics in upper layers does not
  // result in a different device.
  return first.device_id == second.device_id && first.label == second.label;
}

}  // namespace blink
