Home | History | Annotate | Download | only in platform
      1 /*
      2  * Copyright (C) 2013 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions
      6  * are met:
      7  * 1. Redistributions of source code must retain the above copyright
      8  *    notice, this list of conditions and the following disclaimer.
      9  * 2. Redistributions in binary form must reproduce the above copyright
     10  *    notice, this list of conditions and the following disclaimer in the
     11  *    documentation and/or other materials provided with the distribution.
     12  *
     13  * THIS SOFTWARE IS PROVIDED BY GOOGLE INC. ``AS IS'' AND ANY
     14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GOOGLE INC. OR
     17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     24  */
     25 
     26 #ifndef WebMediaStreamTrackSourcesRequest_h
     27 #define WebMediaStreamTrackSourcesRequest_h
     28 
     29 #include "WebCommon.h"
     30 #include "WebNonCopyable.h"
     31 #include "WebPrivatePtr.h"
     32 #include "WebString.h"
     33 #include "WebVector.h"
     34 
     35 namespace WebCore {
     36 class MediaStreamTrackSourcesRequest;
     37 }
     38 
     39 namespace blink {
     40 class WebSourceInfo;
     41 
     42 class WebMediaStreamTrackSourcesRequest {
     43 public:
     44     class ExtraData {
     45     public:
     46         virtual ~ExtraData() { }
     47     };
     48 
     49     WebMediaStreamTrackSourcesRequest() { }
     50     WebMediaStreamTrackSourcesRequest(const WebMediaStreamTrackSourcesRequest& other) { assign(other); }
     51     ~WebMediaStreamTrackSourcesRequest() { reset(); }
     52 
     53     WebMediaStreamTrackSourcesRequest& operator=(const WebMediaStreamTrackSourcesRequest& other)
     54     {
     55         assign(other);
     56         return *this;
     57     }
     58 
     59     BLINK_PLATFORM_EXPORT void assign(const WebMediaStreamTrackSourcesRequest&);
     60 
     61     BLINK_PLATFORM_EXPORT void reset();
     62     bool isNull() const { return m_private.isNull(); }
     63 
     64     BLINK_PLATFORM_EXPORT WebString origin() const;
     65     BLINK_PLATFORM_EXPORT void requestSucceeded(const WebVector<WebSourceInfo>&) const;
     66 
     67     // Extra data associated with this object.
     68     // If non-null, the extra data pointer will be deleted when the object is destroyed.
     69     // Setting the extra data pointer will cause any existing non-null
     70     // extra data pointer to be deleted.
     71     BLINK_PLATFORM_EXPORT ExtraData* extraData() const;
     72     BLINK_PLATFORM_EXPORT void setExtraData(ExtraData*);
     73 
     74 #if INSIDE_BLINK
     75     BLINK_PLATFORM_EXPORT WebMediaStreamTrackSourcesRequest(const PassRefPtrWillBeRawPtr<WebCore::MediaStreamTrackSourcesRequest>&);
     76 #endif
     77 
     78 private:
     79     WebPrivatePtr<WebCore::MediaStreamTrackSourcesRequest> m_private;
     80 };
     81 
     82 } // namespace blink
     83 
     84 #endif // WebMediaStreamTrackSourcesRequest_h
     85