1926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)/*
209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * Copyright (C) 2014 Google Inc. All rights reserved.
3926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *
4926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without
5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * modification, are permitted provided that the following conditions
6926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * are met:
7926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 1. Redistributions of source code must retain the above copyright
8926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *    notice, this list of conditions and the following disclaimer.
9926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright
10926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *    notice, this list of conditions and the following disclaimer in the
11926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *    documentation and/or other materials provided with the distribution.
12926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) *
13926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY
14926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GOOGLE INC. OR
17926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */
25926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
26926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)#include "config.h"
2709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "modules/mediastream/MediaDeviceInfo.h"
28926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "wtf/text/WTFString.h"
30926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
31c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
32926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
33e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)MediaDeviceInfo* MediaDeviceInfo::create(const WebMediaDeviceInfo& webMediaDeviceInfo)
34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    ASSERT(!webMediaDeviceInfo.isNull());
36197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    return new MediaDeviceInfo(webMediaDeviceInfo);
37926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
38926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
39e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)MediaDeviceInfo::MediaDeviceInfo(const WebMediaDeviceInfo& webMediaDeviceInfo)
4009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    : m_webMediaDeviceInfo(webMediaDeviceInfo)
41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)String MediaDeviceInfo::deviceId() const
45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    return m_webMediaDeviceInfo.deviceId();
47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)String MediaDeviceInfo::kind() const
50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    switch (m_webMediaDeviceInfo.kind()) {
52e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    case WebMediaDeviceInfo::MediaDeviceKindAudioInput:
5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return "audioinput";
54e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    case WebMediaDeviceInfo::MediaDeviceKindAudioOutput:
5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return "audiooutput";
56e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    case WebMediaDeviceInfo::MediaDeviceKindVideoInput:
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return "videoinput";
5809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    }
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    ASSERT_NOT_REACHED();
6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    return String();
62926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
63926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)String MediaDeviceInfo::label() const
65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    return m_webMediaDeviceInfo.label();
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)String MediaDeviceInfo::groupId() const
70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
7109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    return m_webMediaDeviceInfo.groupId();
72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
74c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
75