summaryrefslogtreecommitdiff
path: root/Source/WebCore/html/TextTrack.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
committerSimon Hausmann <simon.hausmann@nokia.com>2012-02-24 16:36:50 +0100
commitad0d549d4cc13433f77c1ac8f0ab379c83d93f28 (patch)
treeb34b0daceb7c8e7fdde4b4ec43650ab7caadb0a9 /Source/WebCore/html/TextTrack.cpp
parent03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (diff)
downloadqtwebkit-ad0d549d4cc13433f77c1ac8f0ab379c83d93f28.tar.gz
Imported WebKit commit bb52bf3c0119e8a128cd93afe5572413a8617de9 (http://svn.webkit.org/repository/webkit/trunk@108790)
Diffstat (limited to 'Source/WebCore/html/TextTrack.cpp')
-rw-r--r--Source/WebCore/html/TextTrack.cpp276
1 files changed, 0 insertions, 276 deletions
diff --git a/Source/WebCore/html/TextTrack.cpp b/Source/WebCore/html/TextTrack.cpp
deleted file mode 100644
index bdfbaa205..000000000
--- a/Source/WebCore/html/TextTrack.cpp
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * * Redistributions in binary form must reproduce the above
- * copyright notice, this list of conditions and the following disclaimer
- * in the documentation and/or other materials provided with the
- * distribution.
- * * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-
-#if ENABLE(VIDEO_TRACK)
-
-#include "TextTrack.h"
-
-#include "Event.h"
-#include "ExceptionCode.h"
-#include "TextTrackCueList.h"
-#include "TrackBase.h"
-
-namespace WebCore {
-
-const AtomicString& TextTrack::subtitlesKeyword()
-{
- DEFINE_STATIC_LOCAL(const AtomicString, subtitles, ("subtitles"));
- return subtitles;
-}
-
-const AtomicString& TextTrack::captionsKeyword()
-{
- DEFINE_STATIC_LOCAL(const AtomicString, captions, ("captions"));
- return captions;
-}
-
-const AtomicString& TextTrack::descriptionsKeyword()
-{
- DEFINE_STATIC_LOCAL(const AtomicString, descriptions, ("descriptions"));
- return descriptions;
-}
-
-const AtomicString& TextTrack::chaptersKeyword()
-{
- DEFINE_STATIC_LOCAL(const AtomicString, chapters, ("chapters"));
- return chapters;
-}
-
-const AtomicString& TextTrack::metadataKeyword()
-{
- DEFINE_STATIC_LOCAL(const AtomicString, metadata, ("metadata"));
- return metadata;
-}
-
-TextTrack::TextTrack(ScriptExecutionContext* context, TextTrackClient* client, const String& kind, const String& label, const String& language, TextTrackType type)
- : TrackBase(context, TrackBase::TextTrack)
- , m_mediaElement(0)
- , m_label(label)
- , m_language(language)
- , m_mode(TextTrack::DISABLED)
- , m_client(client)
- , m_trackType(type)
- , m_readinessState(NotLoaded)
- , m_showingByDefault(false)
-{
- setKind(kind);
-}
-
-TextTrack::~TextTrack()
-{
- if (m_client && m_cues)
- m_client->textTrackRemoveCues(this, m_cues.get());
- clearClient();
-}
-
-bool TextTrack::isValidKindKeyword(const String& value)
-{
- if (equalIgnoringCase(value, subtitlesKeyword()))
- return true;
- if (equalIgnoringCase(value, captionsKeyword()))
- return true;
- if (equalIgnoringCase(value, descriptionsKeyword()))
- return true;
- if (equalIgnoringCase(value, chaptersKeyword()))
- return true;
- if (equalIgnoringCase(value, metadataKeyword()))
- return true;
-
- return false;
-}
-
-void TextTrack::setKind(const String& kind)
-{
- String oldKind = m_kind;
-
- if (isValidKindKeyword(kind))
- m_kind = kind;
- else
- m_kind = subtitlesKeyword();
-
- if (m_client && oldKind != m_kind)
- m_client->textTrackKindChanged(this);
-}
-
-void TextTrack::setMode(unsigned short mode, ExceptionCode& ec)
-{
- // 4.8.10.12.5 On setting the mode, if the new value is not either 0, 1, or 2,
- // the user agent must throw an INVALID_ACCESS_ERR exception.
- if (mode > TextTrack::SHOWING) {
- ec = INVALID_ACCESS_ERR;
- return;
- }
-
- if (m_mode == static_cast<Mode>(mode))
- return;
-
- // If the new value is 2
- // ... Note: If the mode had been showing by default, this will change it to showing,
- // even though the value of mode would appear not to change.
- m_mode = static_cast<Mode>(mode);
- if (m_mode == TextTrack::SHOWING)
- setShowingByDefault(false);
-
- if (m_client)
- m_client->textTrackModeChanged(this);
-}
-
-TextTrack::Mode TextTrack::mode() const
-{
- // The text track "showing" and "showing by default" modes return SHOWING (numeric value 2)
- if (m_showingByDefault)
- return SHOWING;
- return m_mode;
-}
-
-TextTrackCueList* TextTrack::cues()
-{
- if (!m_cues)
- m_cues = TextTrackCueList::create();
-
- // 4.8.10.12.5 If the text track mode ... is not the text track disabled mode,
- // then the cues attribute must return a live TextTrackCueList object ...
- // Otherwise, it must return null. When an object is returned, the
- // same object must be returned each time.
- // http://www.whatwg.org/specs/web-apps/current-work/#dom-texttrack-cues
- if (m_cues && m_mode != TextTrack::DISABLED)
- return m_cues.get();
- return 0;
-}
-
-TextTrackCueList* TextTrack::activeCues() const
-{
- // 4.8.10.12.5 If the text track mode ... is not the text track disabled mode,
- // then the activeCues attribute must return a live TextTrackCueList object ...
- // ... whose active flag was set when the script started, in text track cue
- // order. Otherwise, it must return null. When an object is returned, the
- // same object must be returned each time.
- // http://www.whatwg.org/specs/web-apps/current-work/#dom-texttrack-activecues
- if (m_cues && m_mode != TextTrack::DISABLED)
- return m_cues->activeCues();
- return 0;
-}
-
-void TextTrack::addCue(PassRefPtr<TextTrackCue> prpCue, ExceptionCode& ec)
-{
- if (!prpCue)
- return;
-
- RefPtr<TextTrackCue> cue = prpCue;
-
- // 4.8.10.12.4 Text track API
-
- // The addCue(cue) method of TextTrack objects, when invoked, must run the following steps:
-
- // 1. If the given cue is already associated with a text track other than
- // the method's TextTrack object's text track, then throw an InvalidStateError
- // exception and abort these steps.
- TextTrack* cueTrack = cue->track();
- if (cueTrack && cueTrack != this) {
- ec = INVALID_STATE_ERR;
- return;
- }
-
- // 2. Associate cue with the method's TextTrack object's text track, if it is
- // not currently associated with a text track.
- cue->setTrack(this);
-
- // 3. If the given cue is already listed in the method's TextTrack object's text
- // track's text track list of cues, then throw an InvalidStateError exception.
- // 4. Add cue to the method's TextTrack object's text track's text track list of cues.
- if (!m_cues->add(cue)) {
- ec = INVALID_STATE_ERR;
- return;
- }
-
- if (m_client)
- m_client->textTrackAddCue(this, cue.get());
-}
-
-void TextTrack::removeCue(TextTrackCue* cue, ExceptionCode& ec)
-{
- if (!cue)
- return;
-
- // 4.8.10.12.4 Text track API
-
- // The removeCue(cue) method of TextTrack objects, when invoked, must run the following steps:
-
- // 1. If the given cue is not associated with the method's TextTrack
- // object's text track, then throw an InvalidStateError exception.
- if (cue->track() != this) {
- ec = INVALID_STATE_ERR;
- return;
- }
-
- // 2. If the given cue is not currently listed in the method's TextTrack
- // object's text track's text track list of cues, then throw a NotFoundError exception.
- // 3. Remove cue from the method's TextTrack object's text track's text track list of cues.
- if (!m_cues->remove(cue)) {
- ec = INVALID_STATE_ERR;
- return;
- }
-
- cue->setTrack(0);
- if (m_client)
- m_client->textTrackRemoveCue(this, cue);
-}
-
-void TextTrack::fireCueChangeEvent()
-{
- ExceptionCode ec = 0;
- dispatchEvent(Event::create(eventNames().cuechangeEvent, false, false), ec);
-}
-
-void TextTrack::cueWillChange(TextTrackCue* cue)
-{
- if (!m_client)
- return;
-
- // The cue may need to be repositioned in the media element's interval tree, may need to
- // be re-rendered, etc, so remove it before the modification...
- m_client->textTrackRemoveCue(this, cue);
-}
-
-void TextTrack::cueDidChange(TextTrackCue* cue)
-{
- if (!m_client)
- return;
-
- // ... and add it back again.
- m_client->textTrackAddCue(this, cue);
-}
-
-} // namespace WebCore
-
-#endif