15267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)/*
25267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Copyright (C) 2009 Google Inc. All rights reserved.
35267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
45267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * Redistribution and use in source and binary forms, with or without
55267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * modification, are permitted provided that the following conditions are
65267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * met:
75267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
85267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *     * Redistributions of source code must retain the above copyright
95267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * notice, this list of conditions and the following disclaimer.
105267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *     * Redistributions in binary form must reproduce the above
115267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer
125267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * in the documentation and/or other materials provided with the
135267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * distribution.
145267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *     * Neither the name of Google Inc. nor the names of its
155267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * contributors may be used to endorse or promote products derived from
165267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * this software without specific prior written permission.
175267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) *
185267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
195267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
205267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
215267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
225267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
235267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
245267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
255267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
265267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
275267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
285267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
295267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles) */
305267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
315267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#ifndef WebMediaPlayerClient_h
325267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#define WebMediaPlayerClient_h
335267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
345267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#include "WebMediaPlayer.h"
355267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
3651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)namespace blink {
375267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
385267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebInbandTextTrack;
395267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebLayer;
405267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebMediaSource;
415267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebPlugin;
425267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebRequest;
435267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebURL;
445267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
455267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)class WebMediaPlayerClient {
465267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)public:
475267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    enum MediaKeyErrorCode {
485267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeUnknown = 1,
495267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeClient,
505267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeService,
515267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeOutput,
525267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeHardwareChange,
535267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)        MediaKeyErrorCodeDomain,
545267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    };
555267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
565d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    enum VideoTrackKind {
575d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindNone,
585d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindAlternative,
595d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindCaptions,
605d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindMain,
615d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindSign,
625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindSubtitles,
635d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        VideoTrackKindCommentary
645d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    };
655d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)
665d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    enum AudioTrackKind {
675d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindNone,
685d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindAlternative,
695d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindDescriptions,
705d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindMain,
715d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindMainDescriptions,
725d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindTranslation,
735d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)        AudioTrackKindCommentary
745d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    };
755d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)
765267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void networkStateChanged() = 0;
775267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void readyStateChanged() = 0;
785267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void timeChanged() = 0;
795267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void repaint() = 0;
805267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void durationChanged() = 0;
815267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void sizeChanged() = 0;
82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    // FIXME: Remove once calls on the Chromium-side have been removed.
835267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual double volume() const = 0;
845267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void playbackStateChanged() = 0;
855267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual WebMediaPlayer::Preload preload() const = 0;
865267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void keyAdded(const WebString& keySystem, const WebString& sessionId) = 0;
875267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void keyError(const WebString& keySystem, const WebString& sessionId, MediaKeyErrorCode, unsigned short systemCode) = 0;
885267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void keyMessage(const WebString& keySystem, const WebString& sessionId, const unsigned char* message, unsigned messageLength, const WebURL& defaultURL) = 0;
8909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)    virtual void keyNeeded(const WebString& contentType, const unsigned char* initData, unsigned initDataLength) = 0;
905267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void setWebLayer(WebLayer*) = 0;
915d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    virtual WebMediaPlayer::TrackId addAudioTrack(const WebString& id, AudioTrackKind, const WebString& label, const WebString& language, bool enabled) = 0;
925d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    virtual void removeAudioTrack(WebMediaPlayer::TrackId) = 0;
935d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    virtual WebMediaPlayer::TrackId addVideoTrack(const WebString& id, VideoTrackKind, const WebString& label, const WebString& language, bool selected) = 0;
945d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)    virtual void removeVideoTrack(WebMediaPlayer::TrackId) = 0;
955267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void addTextTrack(WebInbandTextTrack*) = 0;
965267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    virtual void removeTextTrack(WebInbandTextTrack*) = 0;
97c0e19a689c8ac22cdc96b291a8d33a5d3b0b34a4Torne (Richard Coles)    virtual void mediaSourceOpened(WebMediaSource*) = 0;
981e202183a5dc46166763171984b285173f8585e5Torne (Richard Coles)    virtual void requestFullscreen() = 0;
99e1f1df5f01594c0e62e751e4b46e779b85c2faa5Torne (Richard Coles)    virtual void requestSeek(double) = 0;
1005267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
1015267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)protected:
1025267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)    ~WebMediaPlayerClient() { }
1035267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)};
1045267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
10551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} // namespace blink
1065267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)
1075267f701546148b83dfbe1d151cb184385bb5c22Torne (Richard Coles)#endif
108