1591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch/*
2591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * Copyright (C) 2013 Google Inc. All rights reserved.
3591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch *
4591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * Redistribution and use in source and binary forms, with or without
5591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * modification, are permitted provided that the following conditions
6591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * are met:
7591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * 1. Redistributions of source code must retain the above copyright
8591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch *    notice, this list of conditions and the following disclaimer.
9591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * 2. Redistributions in binary form must reproduce the above copyright
10591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch *    notice, this list of conditions and the following disclaimer in the
11591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch *    documentation and/or other materials provided with the distribution.
12591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch *
13591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY
14591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GOOGLE INC. OR
17591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch */
25591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
26591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#ifndef WebMediaStreamTrackSourcesRequest_h
27591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#define WebMediaStreamTrackSourcesRequest_h
28591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
29591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "WebCommon.h"
30591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "WebNonCopyable.h"
31591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "WebPrivatePtr.h"
32591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "WebString.h"
33591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#include "WebVector.h"
34591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
35c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
36591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
37e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)class MediaStreamTrackSourcesRequest;
38591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochclass WebSourceInfo;
39591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
40591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochclass WebMediaStreamTrackSourcesRequest {
41591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochpublic:
42591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    class ExtraData {
43591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    public:
44591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        virtual ~ExtraData() { }
45591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    };
46591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
47591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    WebMediaStreamTrackSourcesRequest() { }
48591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    WebMediaStreamTrackSourcesRequest(const WebMediaStreamTrackSourcesRequest& other) { assign(other); }
49591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    ~WebMediaStreamTrackSourcesRequest() { reset(); }
50591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
51591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    WebMediaStreamTrackSourcesRequest& operator=(const WebMediaStreamTrackSourcesRequest& other)
52591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    {
53591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        assign(other);
54591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch        return *this;
55591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    }
56591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
5709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void assign(const WebMediaStreamTrackSourcesRequest&);
58591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
5909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void reset();
60591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    bool isNull() const { return m_private.isNull(); }
61591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
6209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT WebString origin() const;
6309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void requestSucceeded(const WebVector<WebSourceInfo>&) const;
64591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
65591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    // Extra data associated with this object.
66591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    // If non-null, the extra data pointer will be deleted when the object is destroyed.
67591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    // Setting the extra data pointer will cause any existing non-null
68591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch    // extra data pointer to be deleted.
6909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT ExtraData* extraData() const;
7009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    BLINK_PLATFORM_EXPORT void setExtraData(ExtraData*);
71591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
7209380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)#if INSIDE_BLINK
73e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    BLINK_PLATFORM_EXPORT WebMediaStreamTrackSourcesRequest(MediaStreamTrackSourcesRequest*);
74591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#endif
75591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
76591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdochprivate:
77e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)    WebPrivatePtr<MediaStreamTrackSourcesRequest> m_private;
78591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch};
79591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
8051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink
81591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch
82591b958dee2cf159d33a0b931e6231072eaf38d5Ben Murdoch#endif // WebMediaStreamTrackSourcesRequest_h
83