109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)/* 209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * Copyright (C) 2014 Google Inc. All rights reserved. 309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * 409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * modification, are permitted provided that the following conditions 609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * are met: 709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 1009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 1109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 1209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * 1309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY 1409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 1609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GOOGLE INC. OR 1709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 1809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 1909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 2009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 2109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 2509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "config.h" 2709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 2809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebMediaDeviceInfo.h" 2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebString.h" 3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "wtf/PassRefPtr.h" 3209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "wtf/RefCounted.h" 3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 3409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)namespace blink { 3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 3609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class WebMediaDeviceInfoPrivate FINAL : public RefCounted<WebMediaDeviceInfoPrivate> { 3709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)public: 3809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) static PassRefPtr<WebMediaDeviceInfoPrivate> create(const WebString& deviceId, WebMediaDeviceInfo::MediaDeviceKind, const WebString& label, const WebString& groupId); 3909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const WebString& deviceId() const { return m_deviceId; } 4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebMediaDeviceInfo::MediaDeviceKind kind() const { return m_kind; } 4209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const WebString& label() const { return m_label; } 4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) const WebString& groupId() const { return m_groupId; } 4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)private: 4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebMediaDeviceInfoPrivate(const WebString& deviceId, WebMediaDeviceInfo::MediaDeviceKind, const WebString& label, const WebString& groupId); 4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebString m_deviceId; 4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebMediaDeviceInfo::MediaDeviceKind m_kind; 5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebString m_label; 5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebString m_groupId; 5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}; 5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)PassRefPtr<WebMediaDeviceInfoPrivate> WebMediaDeviceInfoPrivate::create(const WebString& deviceId, WebMediaDeviceInfo::MediaDeviceKind kind, const WebString& label, const WebString& groupId) 5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return adoptRef(new WebMediaDeviceInfoPrivate(deviceId, kind, label, groupId)); 5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 5809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebMediaDeviceInfoPrivate::WebMediaDeviceInfoPrivate(const WebString& deviceId, WebMediaDeviceInfo::MediaDeviceKind kind, const WebString& label, const WebString& groupId) 6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) : m_deviceId(deviceId) 6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_kind(kind) 6209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_label(label) 6309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) , m_groupId(groupId) 6409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 6509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void WebMediaDeviceInfo::assign(const WebMediaDeviceInfo& other) 6809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_private = other.m_private; 7009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 7109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 7209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void WebMediaDeviceInfo::reset() 7309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 7409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_private.reset(); 7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 7709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)void WebMediaDeviceInfo::initialize(const WebString& deviceId, WebMediaDeviceInfo::MediaDeviceKind kind, const WebString& label, const WebString& groupId) 7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 7909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) m_private = WebMediaDeviceInfoPrivate::create(deviceId, kind, label, groupId); 8009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebString WebMediaDeviceInfo::deviceId() const 8309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 8409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT(!m_private.isNull()); 8509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_private->deviceId(); 8609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 8709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 8809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebMediaDeviceInfo::MediaDeviceKind WebMediaDeviceInfo::kind() const 8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT(!m_private.isNull()); 9109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_private->kind(); 9209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 9309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 9409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebString WebMediaDeviceInfo::label() const 9509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 9609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT(!m_private.isNull()); 9709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_private->label(); 9809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 9909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 10009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebString WebMediaDeviceInfo::groupId() const 10109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){ 10209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) ASSERT(!m_private.isNull()); 10309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return m_private->groupId(); 10409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} 10509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 10609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} // namespace blink 10709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) 108