Home | History | Annotate | Download | only in platform
      1 /*
      2  * Copyright (C) 2009 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 are
      6  * met:
      7  *
      8  *     * Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *     * Redistributions in binary form must reproduce the above
     11  * copyright notice, this list of conditions and the following disclaimer
     12  * in the documentation and/or other materials provided with the
     13  * distribution.
     14  *     * Neither the name of Google Inc. nor the names of its
     15  * contributors may be used to endorse or promote products derived from
     16  * this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 #ifndef WebMediaPlayerClient_h
     32 #define WebMediaPlayerClient_h
     33 
     34 #include "WebMediaPlayer.h"
     35 
     36 namespace blink {
     37 
     38 class WebInbandTextTrack;
     39 class WebLayer;
     40 class WebMediaSource;
     41 class WebPlugin;
     42 class WebRequest;
     43 class WebURL;
     44 
     45 class WebMediaPlayerClient {
     46 public:
     47     enum MediaKeyErrorCode {
     48         MediaKeyErrorCodeUnknown = 1,
     49         MediaKeyErrorCodeClient,
     50         MediaKeyErrorCodeService,
     51         MediaKeyErrorCodeOutput,
     52         MediaKeyErrorCodeHardwareChange,
     53         MediaKeyErrorCodeDomain,
     54     };
     55 
     56     enum VideoTrackKind {
     57         VideoTrackKindNone,
     58         VideoTrackKindAlternative,
     59         VideoTrackKindCaptions,
     60         VideoTrackKindMain,
     61         VideoTrackKindSign,
     62         VideoTrackKindSubtitles,
     63         VideoTrackKindCommentary
     64     };
     65 
     66     enum AudioTrackKind {
     67         AudioTrackKindNone,
     68         AudioTrackKindAlternative,
     69         AudioTrackKindDescriptions,
     70         AudioTrackKindMain,
     71         AudioTrackKindMainDescriptions,
     72         AudioTrackKindTranslation,
     73         AudioTrackKindCommentary
     74     };
     75 
     76     virtual void networkStateChanged() = 0;
     77     virtual void readyStateChanged() = 0;
     78     virtual void timeChanged() = 0;
     79     virtual void repaint() = 0;
     80     virtual void durationChanged() = 0;
     81     virtual void sizeChanged() = 0;
     82     // FIXME: Remove once calls on the Chromium-side have been removed.
     83     virtual double volume() const = 0;
     84     virtual void playbackStateChanged() = 0;
     85     virtual WebMediaPlayer::Preload preload() const = 0;
     86     virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) = 0;
     87     virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) = 0;
     88     virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) = 0;
     89     virtual void keyNeeded(const WebString& contentType, const unsigned char* initData, unsigned initDataLength) = 0;
     90     virtual void setWebLayer(WebLayer*) = 0;
     91     virtual WebMediaPlayer::TrackId addAudioTrack(const WebString& id, AudioTrackKind, const WebString& label, const WebString& language, bool enabled) = 0;
     92     virtual void removeAudioTrack(WebMediaPlayer::TrackId) = 0;
     93     virtual WebMediaPlayer::TrackId addVideoTrack(const WebString& id, VideoTrackKind, const WebString& label, const WebString& language, bool selected) = 0;
     94     virtual void removeVideoTrack(WebMediaPlayer::TrackId) = 0;
     95     virtual void addTextTrack(WebInbandTextTrack*) = 0;
     96     virtual void removeTextTrack(WebInbandTextTrack*) = 0;
     97     virtual void mediaSourceOpened(WebMediaSource*) = 0;
     98     virtual void requestFullscreen() = 0;
     99     virtual void requestSeek(double) = 0;
    100 
    101 protected:
    102     ~WebMediaPlayerClient() { }
    103 };
    104 
    105 } // namespace blink
    106 
    107 #endif
    108