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)#ifndef WebMediaDevicesRequest_h
2709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#define WebMediaDevicesRequest_h
2809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
2909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "WebSecurityOrigin.h"
3009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebCommon.h"
3109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebPrivatePtr.h"
3209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#include "public/platform/WebString.h"
3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
34c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
3509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
36e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class MediaDevicesRequest;
3709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class WebDocument;
3809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class WebMediaDeviceInfo;
3909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)template <typename T> class WebVector;
4009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
4109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)class WebMediaDevicesRequest {
4209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)public:
4309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    WebMediaDevicesRequest() { }
4409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    WebMediaDevicesRequest(const WebMediaDevicesRequest& request) { assign(request); }
4509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    ~WebMediaDevicesRequest() { reset(); }
4609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
4709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    WebMediaDevicesRequest& operator=(const WebMediaDevicesRequest& other)
4809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    {
4909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        assign(other);
5009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)        return *this;
5109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    }
5209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
5309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT void reset();
5409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    bool isNull() const { return m_private.isNull(); }
5509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT bool equals(const WebMediaDevicesRequest&) const;
5609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT void assign(const WebMediaDevicesRequest&);
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
5809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT WebSecurityOrigin securityOrigin() const;
5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT WebDocument ownerDocument() const;
6009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
6109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_EXPORT void requestSucceeded(WebVector<WebMediaDeviceInfo>);
6209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
6309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#if BLINK_IMPLEMENTATION
64e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebMediaDevicesRequest(MediaDevicesRequest*);
65e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    operator MediaDevicesRequest*() const;
6609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#endif
6709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
6809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)private:
69e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebPrivatePtr<MediaDevicesRequest> m_private;
7009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)};
7109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
7209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)inline bool operator==(const WebMediaDevicesRequest& a, const WebMediaDevicesRequest& b)
7309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles){
7409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    return a.equals(b);
7509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)}
7609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
7709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)} // namespace blink
7809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)
7909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#endif // WebMediaDevicesRequest_h
80