Changeset 126238 in webkit


Ignore:
Timestamp:
Aug 21, 2012 6:05:09 PM (12 years ago)
Author:
commit-queue@webkit.org
Message:

Unreviewed, rolling out r126233.
http://trac.webkit.org/changeset/126233
https://bugs.webkit.org/show_bug.cgi?id=94656

Broke Chromium Mac build (Requested by dominicc on #webkit).

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-08-21

Source/WebCore:

  • CMakeLists.txt:
  • GNUmakefile.list.am:
  • Target.pri:
  • WebCore.gypi:
  • WebCore.vcproj/WebCore.vcproj:
  • WebCore.xcodeproj/project.pbxproj:
  • css/mediaControls.css:

(video::-webkit-media-text-track-display):

  • html/shadow/MediaControlElements.cpp:

(RenderTextTrackContainerElement):
(WebCore::MediaControlTextTrackContainerElement::updateDisplay):

  • html/track/TextTrack.cpp:
  • html/track/TextTrack.h:

(TextTrack):

  • html/track/TextTrackCue.cpp:

(WebCore::TextTrackCue::TextTrackCue):
(WebCore::TextTrackCue::calculateComputedLinePosition):
(WebCore::TextTrackCue::calculateDisplayParameters):
(WebCore::TextTrackCue::getDisplayTree):
(WebCore::TextTrackCue::getPositionCoordinates):

  • html/track/TextTrackCue.h:

(WebCore):
(TextTrackCue):

  • rendering/RenderTextTrackCue.cpp: Removed.
  • rendering/RenderTextTrackCue.h: Removed.

LayoutTests:

  • media/track/captions-webvtt/captions-snap-to-lines-set.vtt: Removed.
  • media/track/track-cue-rendering-horizontal.html: Removed.
  • media/track/track-cue-rendering-snap-to-lines-not-set-expected.txt:
  • media/track/track-cue-rendering-vertical.html: Removed.
  • media/video-test.js:
  • platform/chromium-linux/media/track/track-cue-rendering-horizontal-expected.png: Removed.
  • platform/chromium-linux/media/track/track-cue-rendering-horizontal-expected.txt: Removed.
  • platform/chromium-linux/media/track/track-cue-rendering-vertical-expected.png: Removed.
  • platform/chromium-linux/media/track/track-cue-rendering-vertical-expected.txt: Removed.
  • platform/chromium/TestExpectations:
  • platform/mac/media/track/track-cue-rendering-horizontal-expected.png: Removed.
  • platform/mac/media/track/track-cue-rendering-horizontal-expected.txt: Removed.
  • platform/mac/media/track/track-cue-rendering-vertical-expected.png: Removed.
  • platform/mac/media/track/track-cue-rendering-vertical-expected.txt: Removed.
Location:
trunk
Files:
13 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r126233 r126238  
     12012-08-21  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r126233.
     4        http://trac.webkit.org/changeset/126233
     5        https://bugs.webkit.org/show_bug.cgi?id=94656
     6
     7        Broke Chromium Mac build (Requested by dominicc on #webkit).
     8
     9        * media/track/captions-webvtt/captions-snap-to-lines-set.vtt: Removed.
     10        * media/track/track-cue-rendering-horizontal.html: Removed.
     11        * media/track/track-cue-rendering-snap-to-lines-not-set-expected.txt:
     12        * media/track/track-cue-rendering-vertical.html: Removed.
     13        * media/video-test.js:
     14        * platform/chromium-linux/media/track/track-cue-rendering-horizontal-expected.png: Removed.
     15        * platform/chromium-linux/media/track/track-cue-rendering-horizontal-expected.txt: Removed.
     16        * platform/chromium-linux/media/track/track-cue-rendering-vertical-expected.png: Removed.
     17        * platform/chromium-linux/media/track/track-cue-rendering-vertical-expected.txt: Removed.
     18        * platform/chromium/TestExpectations:
     19        * platform/mac/media/track/track-cue-rendering-horizontal-expected.png: Removed.
     20        * platform/mac/media/track/track-cue-rendering-horizontal-expected.txt: Removed.
     21        * platform/mac/media/track/track-cue-rendering-vertical-expected.png: Removed.
     22        * platform/mac/media/track/track-cue-rendering-vertical-expected.txt: Removed.
     23
    1242012-08-21  Victor Carbune  <victor@rosedu.org>
    225
  • trunk/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set-expected.txt

    r126233 r126238  
    1313EXPECTED (cueDisplayElement.innerText == 'This is a demo track to illustrate positioning features of cues.') OK
    1414Cue left position (percentage): 0
    15 Cue top position (percentage): 81
     15Cue top position (percentage): 100
    1616
    1717** Center **
  • trunk/LayoutTests/media/video-test.js

    r126233 r126238  
    1515
    1616if (window.testRunner) {
    17     // Some track element rendering tests require text pixel dump.
    18     if (typeof requirePixelDump == "undefined")
    19         testRunner.dumpAsText();
    20 
     17    testRunner.dumpAsText();
    2118    testRunner.waitUntilDone();
    2219}
  • trunk/LayoutTests/platform/chromium/TestExpectations

    r126233 r126238  
    34533453BUGWK93488 SKIP : fast/notifications/notifications-permission.html = TEXT
    34543454
    3455 BUGWK79751 : media/track/track-cue-rendering-horizontal.html = IMAGE
    3456 BUGWK79751 : media/track/track-cue-rendering-vertical.html = IMAGE
    3457 
    34583455// Flaky
    34593456BUGWK93799 MAC : fast/dom/HTMLMeterElement/meter-element-repaint-on-update-value.html = PASS IMAGE
  • trunk/Source/WebCore/CMakeLists.txt

    r126233 r126238  
    20832083    rendering/RenderTextControlSingleLine.cpp
    20842084    rendering/RenderTextFragment.cpp
    2085     rendering/RenderTextTrackCue.cpp
    20862085    rendering/RenderTheme.cpp
    20872086    rendering/RenderTreeAsText.cpp
  • trunk/Source/WebCore/ChangeLog

    r126237 r126238  
     12012-08-21  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r126233.
     4        http://trac.webkit.org/changeset/126233
     5        https://bugs.webkit.org/show_bug.cgi?id=94656
     6
     7        Broke Chromium Mac build (Requested by dominicc on #webkit).
     8
     9        * CMakeLists.txt:
     10        * GNUmakefile.list.am:
     11        * Target.pri:
     12        * WebCore.gypi:
     13        * WebCore.vcproj/WebCore.vcproj:
     14        * WebCore.xcodeproj/project.pbxproj:
     15        * css/mediaControls.css:
     16        (video::-webkit-media-text-track-display):
     17        * html/shadow/MediaControlElements.cpp:
     18        (RenderTextTrackContainerElement):
     19        (WebCore::MediaControlTextTrackContainerElement::updateDisplay):
     20        * html/track/TextTrack.cpp:
     21        * html/track/TextTrack.h:
     22        (TextTrack):
     23        * html/track/TextTrackCue.cpp:
     24        (WebCore::TextTrackCue::TextTrackCue):
     25        (WebCore::TextTrackCue::calculateComputedLinePosition):
     26        (WebCore::TextTrackCue::calculateDisplayParameters):
     27        (WebCore::TextTrackCue::getDisplayTree):
     28        (WebCore::TextTrackCue::getPositionCoordinates):
     29        * html/track/TextTrackCue.h:
     30        (WebCore):
     31        (TextTrackCue):
     32        * rendering/RenderTextTrackCue.cpp: Removed.
     33        * rendering/RenderTextTrackCue.h: Removed.
     34
    1352012-08-20  Kentaro Hara  <haraken@chromium.org>
    236
  • trunk/Source/WebCore/GNUmakefile.list.am

    r126233 r126238  
    49824982        Source/WebCore/rendering/RenderTextControlSingleLine.h \
    49834983        Source/WebCore/rendering/RenderText.cpp \
    4984         Source/WebCore/rendering/RenderTextTrackCue.cpp \
    4985         Source/WebCore/rendering/RenderTextTrackCue.h \
    49864984        Source/WebCore/rendering/RenderTextFragment.cpp \
    49874985        Source/WebCore/rendering/RenderTextFragment.h \
  • trunk/Source/WebCore/Target.pri

    r126233 r126238  
    11741174    rendering/RenderTextControlSingleLine.cpp \
    11751175    rendering/RenderTextFragment.cpp \
    1176     rendering/RenderTextTrackCue.cpp \
    11771176    rendering/RenderTheme.cpp \
    11781177    rendering/RenderTreeAsText.cpp \
  • trunk/Source/WebCore/WebCore.gypi

    r126233 r126238  
    48184818            'rendering/RenderTextFragment.cpp',
    48194819            'rendering/RenderTextFragment.h',
    4820             'rendering/RenderTextTrackCue.cpp',
    4821             'rendering/RenderTextTrackCue.h',
    48224820            'rendering/RenderTheme.cpp',
    48234821            'rendering/RenderTheme.h',
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r126233 r126238  
    4376443764                        </File>
    4376543765                        <File
    43766                                 RelativePath="..\rendering\RenderTextTrackCue.cpp"
    43767                                 >
    43768                                 <FileConfiguration
    43769                                         Name="Debug|Win32"
    43770                                         ExcludedFromBuild="true"
    43771                                         >
    43772                                         <Tool
    43773                                                 Name="VCCLCompilerTool"
    43774                                         />
    43775                                 </FileConfiguration>
    43776                                 <FileConfiguration
    43777                                         Name="Release|Win32"
    43778                                         ExcludedFromBuild="true"
    43779                                         >
    43780                                         <Tool
    43781                                                 Name="VCCLCompilerTool"
    43782                                         />
    43783                                 </FileConfiguration>
    43784                                 <FileConfiguration
    43785                                         Name="Debug_Cairo_CFLite|Win32"
    43786                                         ExcludedFromBuild="true"
    43787                                         >
    43788                                         <Tool
    43789                                                 Name="VCCLCompilerTool"
    43790                                         />
    43791                                 </FileConfiguration>
    43792                                 <FileConfiguration
    43793                                         Name="Release_Cairo_CFLite|Win32"
    43794                                         ExcludedFromBuild="true"
    43795                                         >
    43796                                         <Tool
    43797                                                 Name="VCCLCompilerTool"
    43798                                         />
    43799                                 </FileConfiguration>
    43800                                 <FileConfiguration
    43801                                         Name="Debug_All|Win32"
    43802                                         ExcludedFromBuild="true"
    43803                                         >
    43804                                         <Tool
    43805                                                 Name="VCCLCompilerTool"
    43806                                         />
    43807                                 </FileConfiguration>
    43808                                 <FileConfiguration
    43809                                         Name="Production|Win32"
    43810                                         ExcludedFromBuild="true"
    43811                                         >
    43812                                         <Tool
    43813                                                 Name="VCCLCompilerTool"
    43814                                         />
    43815                                 </FileConfiguration>
    43816                         </File>
    43817                         <File
    43818                                 RelativePath="..\rendering\RenderTextTrackCue.h"
    43819                                 >
    43820                         </File>
    43821                         <File
    4382243766                                RelativePath="..\rendering\RenderTheme.cpp"
    4382343767                                >
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r126233 r126238  
    29432943                86BE340415058CB200CE0FD8 /* PerformanceEntryList.h in Headers */ = {isa = PBXBuildFile; fileRef = 86BE33FE15058CB200CE0FD8 /* PerformanceEntryList.h */; };
    29442944                86D982F7125C154000AD9E3D /* DocumentTiming.h in Headers */ = {isa = PBXBuildFile; fileRef = 86D982F6125C154000AD9E3D /* DocumentTiming.h */; settings = {ATTRIBUTES = (Private, ); }; };
    2945                 86FF886115DE3D0700BD6B28 /* RenderTextTrackCue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */; };
    2946                 86FF886215DE3D0700BD6B28 /* RenderTextTrackCue.h in Headers */ = {isa = PBXBuildFile; fileRef = 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */; };
    29472945                890AE0E11256A07900F5968C /* DirectoryReaderBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 890AE0E01256A07900F5968C /* DirectoryReaderBase.h */; };
    29482946                8931DE5B14C44C44000DC9D2 /* JSBlobCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */; };
     
    1007910077                86BE33FF15058CB200CE0FD8 /* PerformanceEntryList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = PerformanceEntryList.idl; sourceTree = "<group>"; };
    1008010078                86D982F6125C154000AD9E3D /* DocumentTiming.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentTiming.h; sourceTree = "<group>"; };
    10081                 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RenderTextTrackCue.cpp; sourceTree = "<group>"; };
    10082                 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RenderTextTrackCue.h; sourceTree = "<group>"; };
    1008310079                890AE0E01256A07900F5968C /* DirectoryReaderBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DirectoryReaderBase.h; path = Modules/filesystem/DirectoryReaderBase.h; sourceTree = "<group>"; };
    1008410080                8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSBlobCustom.cpp; sourceTree = "<group>"; };
     
    2142121417                                BCEA484E097D93020094C9E4 /* RenderTextFragment.cpp */,
    2142221418                                BCEA484F097D93020094C9E4 /* RenderTextFragment.h */,
    21423                                 86FF885E15DE3B8200BD6B28 /* RenderTextTrackCue.cpp */,
    21424                                 86FF885F15DE3B8200BD6B28 /* RenderTextTrackCue.h */,
    2142521419                                BCEA484A097D93020094C9E4 /* RenderTheme.cpp */,
    2142621420                                BCEA484B097D93020094C9E4 /* RenderTheme.h */,
     
    2466524659                                083DAEA90F01A7FB00342754 /* RenderTextControlSingleLine.h in Headers */,
    2466624660                                BCEA488E097D93020094C9E4 /* RenderTextFragment.h in Headers */,
    24667                                 86FF886215DE3D0700BD6B28 /* RenderTextTrackCue.h in Headers */,
    2466824661                                BCEA488A097D93020094C9E4 /* RenderTheme.h in Headers */,
    2466924662                                BCEA4887097D93020094C9E4 /* RenderThemeMac.h in Headers */,
     
    2786827861                                083DAEA80F01A7FB00342754 /* RenderTextControlSingleLine.cpp in Sources */,
    2786927862                                BCEA488D097D93020094C9E4 /* RenderTextFragment.cpp in Sources */,
    27870                                 86FF886115DE3D0700BD6B28 /* RenderTextTrackCue.cpp in Sources */,
    2787127863                                BCEA4889097D93020094C9E4 /* RenderTheme.cpp in Sources */,
    2787227864                                BCEA4888097D93020094C9E4 /* RenderThemeMac.mm in Sources */,
  • trunk/Source/WebCore/css/mediaControls.css

    r126233 r126238  
    254254    position: absolute;
    255255    color: rgba(255, 255, 255, 1);
    256 }
     256
     257    top: 100%;
     258    -webkit-transform: translate(0%, -100%);
     259}
  • trunk/Source/WebCore/html/shadow/MediaControlElements.cpp

    r126233 r126238  
    3333#include "MediaControlElements.h"
    3434
    35 #include "CSSStyleDeclaration.h"
    3635#include "CSSValueKeywords.h"
    3736#include "DOMTokenList.h"
    3837#include "EventNames.h"
    3938#include "FloatConversion.h"
    40 #include "FloatPoint.h"
    4139#include "Frame.h"
    42 #include "HTMLDivElement.h"
    4340#include "HTMLMediaElement.h"
    4441#include "HTMLNames.h"
    4542#include "HTMLVideoElement.h"
    46 #include "LayoutRepainter.h"
    4743#include "LocalizedStrings.h"
    4844#include "MediaControls.h"
     
    5046#include "Page.h"
    5147#include "RenderDeprecatedFlexibleBox.h"
    52 #include "RenderInline.h"
    5348#include "RenderMedia.h"
    5449#include "RenderSlider.h"
    55 #include "RenderText.h"
    5650#include "RenderTheme.h"
    5751#include "RenderVideo.h"
     
    12651259public:
    12661260    RenderTextTrackContainerElement(Node*);
    1267 
     1261   
    12681262private:
    12691263    virtual void layout();
     
    13591353    // corresponding CSS boxes added to output, in text track cue order, run the
    13601354    // following substeps:
     1355
     1356    // Simple renderer for now.
    13611357    for (size_t i = 0; i < activeCues.size(); ++i) {
    13621358        TextTrackCue* cue = activeCues[i].data();
    13631359
    13641360        ASSERT(cue->isActive());
    1365         if (!cue->track() || !cue->track()->isRendered())
     1361        if (cue->track()->kind() != TextTrack::captionsKeyword() && cue->track()->kind() != TextTrack::subtitlesKeyword())
    13661362            continue;
    13671363
    1368         RefPtr<TextTrackCueBox> displayBox = cue->getDisplayTree();
    1369 
    1370         if (displayBox->hasChildNodes() && !contains(static_cast<Node*>(displayBox.get())))
    1371             // Note: the display tree of a cue is removed when the active flag of the cue is unset.
    1372             appendChild(displayBox, ASSERT_NO_EXCEPTION, false);
     1364        if (!cue->track() || cue->track()->mode() != TextTrack::SHOWING)
     1365            continue;
     1366
     1367        RefPtr<HTMLDivElement> displayTree = cue->getDisplayTree();
     1368
     1369        // Append only new display trees.
     1370        if (displayTree->hasChildNodes() && !contains(displayTree.get()))
     1371            appendChild(displayTree, ASSERT_NO_EXCEPTION, true);
     1372
     1373        // Note: the display tree of a cue is removed when the active flag of the cue is unset.
     1374
     1375        // FIXME(BUG 79751): Render the TextTrackCue when snap-to-lines is set.
     1376
     1377        // FIXME(BUG 84296): Implement overlapping detection for cue boxes when snap-to-lines is not set.
    13731378    }
    13741379
  • trunk/Source/WebCore/html/track/TextTrack.cpp

    r126233 r126238  
    295295}
    296296
    297 bool TextTrack::isRendered()
    298 {
    299     if (m_kind != captionsKeyword() && m_kind != subtitlesKeyword())
    300         return false;
    301 
    302     if (m_mode != SHOWING && !m_showingByDefault)
    303         return false;
    304 
    305     return true;
    306 }
    307 
    308297TextTrackCueList* TextTrack::ensureTextTrackCueList()
    309298{
  • trunk/Source/WebCore/html/track/TextTrack.h

    r126233 r126238  
    111111    void invalidateTrackIndex();
    112112
    113     bool isRendered();
    114 
    115113protected:
    116114    TextTrack(ScriptExecutionContext*, TextTrackClient*, const String& kind, const String& label, const String& language, TextTrackType);
  • trunk/Source/WebCore/html/track/TextTrackCue.cpp

    r126233 r126238  
    4242#include "HTMLDivElement.h"
    4343#include "HTMLMediaElement.h"
    44 #include "RenderTextTrackCue.h"
    4544#include "Text.h"
    4645#include "TextTrack.h"
     
    8988    return verticallr;
    9089}
    91 
    92 // ----------------------------
    93 
    94 TextTrackCueBox::TextTrackCueBox(Document* document, TextTrackCue* cue)
    95     : HTMLElement(divTag, document)
    96     , m_cue(cue)
    97 {
    98 }
    99 
    100 TextTrackCue* TextTrackCueBox::getCue() const
    101 {
    102     return m_cue;
    103 }
    104 
    105 void TextTrackCueBox::applyCSSProperties()
    106 {
    107     // FIXME: Apply all the initial CSS positioning properties. http://wkb.ug/79916
    108 
    109     // 3.5.1 On the (root) List of WebVTT Node Objects:
    110 
    111     // the 'position' property must be set to 'absolute'
    112     setInlineStyleProperty(CSSPropertyPosition, CSSValueAbsolute);
    113 
    114     //  the 'unicode-bidi' property must be set to 'plaintext'
    115     setInlineStyleProperty(CSSPropertyUnicodeBidi, CSSValueWebkitPlaintext);
    116 
    117     // FIXME: Determine the text direction using the BIDI algorithm. http://wkb.ug/79749
    118     // the 'direction' property must be set to direction
    119     setInlineStyleProperty(CSSPropertyDirection, CSSValueLtr);
    120 
    121     // the 'writing-mode' property must be set to writing-mode
    122     setInlineStyleProperty(CSSPropertyWebkitWritingMode, m_cue->getCSSWritingMode(), false);
    123 
    124     std::pair<float, float> position = m_cue->getCSSPosition();
    125 
    126     // the 'top' property must be set to top,
    127     setInlineStyleProperty(CSSPropertyTop, static_cast<double>(position.second), CSSPrimitiveValue::CSS_PERCENTAGE);
    128 
    129     // the 'left' property must be set to left
    130     setInlineStyleProperty(CSSPropertyLeft, static_cast<double>(position.first), CSSPrimitiveValue::CSS_PERCENTAGE);
    131 
    132     // the 'width' property must be set to width, and the 'height' property  must be set to height
    133     if (m_cue->vertical() == horizontalKeyword()) {
    134         setInlineStyleProperty(CSSPropertyWidth, static_cast<double>(m_cue->getCSSSize()), CSSPrimitiveValue::CSS_PERCENTAGE);
    135         setInlineStyleProperty(CSSPropertyHeight, CSSValueAuto);
    136     } else {
    137         setInlineStyleProperty(CSSPropertyWidth, CSSValueAuto);
    138         setInlineStyleProperty(CSSPropertyHeight, static_cast<double>(m_cue->getCSSSize()),  CSSPrimitiveValue::CSS_PERCENTAGE);
    139     }
    140 
    141     // The 'text-align' property on the (root) List of WebVTT Node Objects must
    142     // be set to the value in the second cell of the row of the table below
    143     // whose first cell is the value of the corresponding cue's text track cue
    144     // alignment:
    145     if (m_cue->align() == startKeyword())
    146         setInlineStyleProperty(CSSPropertyTextAlign, CSSValueStart);
    147     else if (m_cue->align() == endKeyword())
    148         setInlineStyleProperty(CSSPropertyTextAlign, CSSValueEnd);
    149     else
    150         setInlineStyleProperty(CSSPropertyTextAlign, CSSValueCenter);
    151 
    152     if (!m_cue->snapToLines()) {
    153         // 10.13.1 Set up x and y:
    154         // Note: x and y are set through the CSS left and top above.
    155 
    156         // 10.13.2 Position the boxes in boxes such that the point x% along the
    157         // width of the bounding box of the boxes in boxes is x% of the way
    158         // across the width of the video's rendering area, and the point y%
    159         // along the height of the bounding box of the boxes in boxes is y%
    160         // of the way across the height of the video's rendering area, while
    161         // maintaining the relative positions of the boxes in boxes to each
    162         // other.
    163         setInlineStyleProperty(CSSPropertyWebkitTransform,
    164                 String::format("translate(-%.2f%%, -%.2f%%)", position.first, position.second));
    165 
    166         setInlineStyleProperty(CSSPropertyWhiteSpace, CSSValuePre);
    167     }
    168 }
    169 
    170 const AtomicString& TextTrackCueBox::shadowPseudoId() const
    171 {
    172     DEFINE_STATIC_LOCAL(const AtomicString, trackDisplayBoxShadowPseudoId, ("-webkit-media-text-track-display"));
    173     return trackDisplayBoxShadowPseudoId;
    174 }
    175 
    176 RenderObject* TextTrackCueBox::createRenderer(RenderArena* arena, RenderStyle*)
    177 {
    178     return new (arena) RenderTextTrackCue(this);
    179 }
    180 
    181 // ----------------------------
    18290
    18391TextTrackCue::TextTrackCue(ScriptExecutionContext* context, const String& id, double start, double end, const String& content, const String& settings, bool pauseOnExit)
     
    202110    , m_futureDocumentNodes(HTMLDivElement::create(static_cast<Document*>(context)))
    203111    , m_displayTreeShouldChange(true)
    204     , m_displayTree(TextTrackCueBox::create(static_cast<Document*>(m_scriptExecutionContext), this))
     112    , m_displayTree(HTMLDivElement::create(static_cast<Document*>(context)))
     113    , m_displayXPosition(undefinedPosition)
     114    , m_displayYPosition(undefinedPosition)
    205115{
    206116    ASSERT(m_scriptExecutionContext->isDocument());
    207117
    208     // 4. If the text track cue writing direction is horizontal, then let
    209     // writing-mode be 'horizontal-tb'. Otherwise, if the text track cue writing
    210     // direction is vertical growing left, then let writing-mode be
    211     // 'vertical-rl'. Otherwise, the text track cue writing direction is
    212     // vertical growing right; let writing-mode be 'vertical-lr'.
     118    // The text track cue writing directions are directly relatd to the
     119    // block-flow element, which can be set through the CSS writing modes.
    213120    m_displayWritingModeMap[Horizontal] = CSSValueHorizontalTb;
    214     m_displayWritingModeMap[VerticalGrowingLeft] = CSSValueVerticalRl;
    215     m_displayWritingModeMap[VerticalGrowingRight] = CSSValueVerticalLr;
     121    m_displayWritingModeMap[VerticalGrowingLeft] = CSSValueVerticalLr;
     122    m_displayWritingModeMap[VerticalGrowingRight] = CSSValueVerticalRl;
    216123
    217124    parseSettings(settings);
     
    537444    // Otherwise, it is the value returned by the following algorithm:
    538445
    539     // If cue is not associated with a text track, return -1 and abort these
    540     // steps.
    541     if (!track())
    542         return -1;
    543 
    544     // Let n be the number of text tracks whose text track mode is showing or
    545     // showing by default and that are in the media element's list of text
    546     // tracks before track.
    547 
    548     // FIXME: Add a method to cache the track index considering only
    549     // rendered tracks (that have showing or showing by default mode set).
    550     // http://wkb.ug/93779
    551     int n = track()->trackIndex();
    552 
    553     // Increment n by one.
    554     n++;
    555 
    556     // Negate n.
    557     n = -n;
    558 
    559     return n;
     446    // FIXME(BUG 79751): Complete determination algorithm when it is actually
     447    // used - when displaying a TextTrackCue having snap-to-lines flag set.
     448
     449    return 100;
    560450}
    561451
     
    571461    // track cue writing direction is vertical growing right; let block-flow be
    572462    // 'rl'.
     463
    573464    m_displayWritingMode = m_displayWritingModeMap[m_writingDirection];
    574465
     
    579470            || (m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueRtl)
    580471            || (m_writingDirection == VerticalGrowingLeft && m_cueAlignment == Start)
    581             || (m_writingDirection == VerticalGrowingRight && m_cueAlignment == Start)) {
     472            || (m_writingDirection == VerticalGrowingRight && m_cueAlignment == End)) {
    582473        maximumSize = 100 - m_textPosition;
    583474    } else if ((m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueLtr)
     
    595486    m_displaySize = std::min(m_cueSize, maximumSize);
    596487
     488    // 10.7 If the text track cue writing direction is horizontal, then let
     489    // width be 'size vw' and height be 'auto'. Otherwise, let width be 'auto'
     490    // and height be 'size vh'. (These are CSS values used by the next section
     491    // to set CSS properties for the rendering; 'vw' and 'vh' are CSS units.)
     492    m_displayWidth = m_writingDirection == Horizontal ? m_displaySize : autoSize;
     493    m_displayHeight = m_writingDirection == Horizontal ? autoSize : m_displaySize;
     494
    597495    // 10.8 Determine the value of x-position or y-position for cue as per the
    598496    // appropriate rules from the following list:
    599     if (m_writingDirection == Horizontal) {
    600         if (m_cueAlignment == Start) {
    601             if (m_displayDirection == CSSValueLtr)
    602                 m_displayPosition.first = m_textPosition;
    603             else
    604                 m_displayPosition.first = 100 - m_textPosition - m_displaySize;
    605         } else if (m_cueAlignment == End) {
    606             if (m_displayDirection == CSSValueRtl)
    607                 m_displayPosition.first = 100 - m_textPosition;
    608             else
    609                 m_displayPosition.first = m_textPosition - m_displaySize;
    610         }
     497    if ((m_writingDirection == Horizontal && m_cueAlignment == Start && m_displayDirection == CSSValueLtr)
     498            || (m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueRtl)) {
     499        m_displayXPosition = m_textPosition;
     500    } else if ((m_writingDirection == Horizontal && m_cueAlignment == End && m_displayDirection == CSSValueLtr)
     501            || (m_writingDirection == Horizontal && m_cueAlignment == Start && m_displayDirection == CSSValueRtl)) {
     502        m_displayXPosition = 100 - m_textPosition;
    611503    }
    612504
    613505    if ((m_writingDirection == VerticalGrowingLeft && m_cueAlignment == Start)
    614506            || (m_writingDirection == VerticalGrowingRight && m_cueAlignment == Start)) {
    615         m_displayPosition.second = m_textPosition;
     507        m_displayYPosition = m_textPosition;
    616508    } else if ((m_writingDirection == VerticalGrowingLeft && m_cueAlignment == End)
    617509            || (m_writingDirection == VerticalGrowingRight && m_cueAlignment == End)) {
    618         m_displayPosition.second = 100 - m_textPosition;
     510        m_displayYPosition = 100 - m_textPosition;
    619511    }
    620512
    621513    if (m_writingDirection == Horizontal && m_cueAlignment == Middle) {
    622         if (m_displayDirection == CSSValueLtr)
    623             m_displayPosition.first = m_textPosition - m_displaySize / 2;
    624         else
    625            m_displayPosition.first = 100 - m_textPosition - m_displaySize / 2;
     514        m_displayXPosition = m_textPosition - m_displaySize / 2;
     515
     516        if (m_displayDirection == CSSValueRtl)
     517           m_displayXPosition = 100 - m_displayXPosition;
    626518    }
    627519
    628520    if ((m_writingDirection == VerticalGrowingLeft && m_cueAlignment == Middle)
    629521        || (m_writingDirection == VerticalGrowingRight && m_cueAlignment == Middle))
    630         m_displayPosition.second = m_textPosition - m_displaySize / 2;
     522        m_displayYPosition = m_textPosition - m_displaySize / 2;
    631523
    632524    // 10.9 Determine the value of whichever of x-position or y-position is not
    633525    // yet calculated for cue as per the appropriate rules from the following
    634526    // list:
    635     if (m_snapToLines && m_displayPosition.second == undefinedPosition && m_writingDirection == Horizontal)
    636         m_displayPosition.second = 0;
    637 
    638     if (!m_snapToLines && m_displayPosition.second == undefinedPosition && m_writingDirection == Horizontal)
    639         m_displayPosition.second = m_computedLinePosition;
    640 
    641     if (m_snapToLines && m_displayPosition.first == undefinedPosition
     527    if (m_snapToLines && m_displayYPosition == undefinedPosition && m_writingDirection == Horizontal)
     528        m_displayYPosition = 0;
     529
     530    if (!m_snapToLines && m_writingDirection == Horizontal)
     531        m_displayYPosition = m_computedLinePosition;
     532
     533    if (m_snapToLines && m_displayXPosition == undefinedPosition
    642534            && (m_writingDirection == VerticalGrowingLeft || m_writingDirection == VerticalGrowingRight))
    643         m_displayPosition.first = 0;
     535        m_displayXPosition = 0;
    644536
    645537    if (!m_snapToLines && (m_writingDirection == VerticalGrowingLeft || m_writingDirection == VerticalGrowingRight))
    646         m_displayPosition.first = m_computedLinePosition;
     538        m_displayXPosition = m_computedLinePosition;
     539
     540    // 10.10 Let left be 'x-position vw' and top be 'y-position vh'.
     541
     542    // FIXME(Bug 79916): CSS top and left properties need to be applied.
    647543}
    648544
     
    692588}
    693589
    694 PassRefPtr<TextTrackCueBox> TextTrackCue::getDisplayTree()
    695 {
     590PassRefPtr<HTMLDivElement> TextTrackCue::getDisplayTree()
     591{
     592    DEFINE_STATIC_LOCAL(const AtomicString, trackDisplayBoxShadowPseudoId, ("-webkit-media-text-track-display"));
     593
    696594    if (!m_displayTreeShouldChange)
    697595        return m_displayTree;
     
    703601    // following constraints, thus obtaining a set of CSS boxes positioned
    704602    // relative to an initial containing block:
     603    m_displayTree->setShadowPseudoId(trackDisplayBoxShadowPseudoId, ASSERT_NO_EXCEPTION);
    705604    m_displayTree->removeChildren();
    706605
     
    726625    // but if there is a particularly long word, it does not overflow as it
    727626    // normally would in CSS, it is instead forcibly wrapped at the box's edge.)
    728     m_displayTree->applyCSSProperties();
     627
     628    // FIXME(BUG 79916): CSS width property should be set to 'size vw', when the
     629    // maximum cue size computation is corrected in the specification.
     630    if (m_snapToLines)
     631        m_displayTree->setInlineStyleProperty(CSSPropertyWidth, (double) m_cueSize, CSSPrimitiveValue::CSS_PERCENTAGE);
     632
     633    // FIXME(BUG 79750, 79751): Steps 10.12 - 10.14
     634
     635    if (!m_snapToLines) {
     636        std::pair<double, double> position = getPositionCoordinates();
     637
     638        // 10.13.1 Set up x and y:
     639        m_displayTree->setInlineStyleProperty(CSSPropertyLeft, position.first, CSSPrimitiveValue::CSS_PERCENTAGE);
     640        m_displayTree->setInlineStyleProperty(CSSPropertyTop, position.second, CSSPrimitiveValue::CSS_PERCENTAGE);
     641
     642        // 10.13.2 Position the boxes in boxes such that the point x% along the
     643        // width of the bounding box of the boxes in boxes is x% of the way
     644        // across the width of the video's rendering area, and the point y%
     645        // along the height of the bounding box of the boxes in boxes is y%
     646        // of the way across the height of the video's rendering area, while
     647        // maintaining the relative positions of the boxes in boxes to each
     648        // other.
     649        String translateX = "-" + String::number(position.first) + "%";
     650        String translateY = "-" + String::number(position.second) + "%";
     651        String webkitTransformTranslateValue = "translate(" + translateX + "," + translateY + ")";
     652
     653        m_displayTree->setInlineStyleProperty(CSSPropertyWebkitTransform,
     654                                              webkitTransformTranslateValue);
     655
     656        m_displayTree->setInlineStyleProperty(CSSPropertyWhiteSpace,
     657                                              CSSValuePre);
     658    }
    729659
    730660    if (m_hasInnerTimestamps)
     
    744674}
    745675
    746 std::pair<double, double> TextTrackCue::getPositionCoordinates() const
    747 {
    748     // This method is used for setting x and y when snap to lines is not set.
     676std::pair<double, double> TextTrackCue::getPositionCoordinates()
     677{
    749678    std::pair<double, double> coordinates;
    750679
     
    1001930}
    1002931
    1003 int TextTrackCue::getCSSWritingMode() const
    1004 {
    1005     return m_displayWritingMode;
    1006 }
    1007 
    1008 int TextTrackCue::getCSSSize() const
    1009 {
    1010     return m_displaySize;
    1011 }
    1012 
    1013 std::pair<double, double> TextTrackCue::getCSSPosition() const
    1014 {
    1015     if (!m_snapToLines)
    1016         return getPositionCoordinates();
    1017 
    1018     return m_displayPosition;
    1019 }
    1020 
    1021932const AtomicString& TextTrackCue::interfaceName() const
    1022933{
  • trunk/Source/WebCore/html/track/TextTrackCue.h

    r126233 r126238  
    3535
    3636#include "EventTarget.h"
    37 #include "HTMLElement.h"
    3837#include "TextTrack.h"
    3938#include <wtf/PassOwnPtr.h>
     
    4342
    4443class DocumentFragment;
    45 class HTMLDivElement;
    4644class ScriptExecutionContext;
    4745class TextTrack;
    48 class TextTrackCue;
    49 
    50 // ----------------------------
    51 
    52 class TextTrackCueBox : public HTMLElement {
    53 public:
    54     static PassRefPtr<TextTrackCueBox> create(Document* document, TextTrackCue* cue)
    55     {
    56         return adoptRef(new TextTrackCueBox(document, cue));
    57     }
    58 
    59     TextTrackCue* getCue() const;
    60     void applyCSSProperties();
    61 
    62     virtual const AtomicString& shadowPseudoId() const OVERRIDE;
    63 
    64 private:
    65     TextTrackCueBox(Document*, TextTrackCue*);
    66 
    67     virtual RenderObject* createRenderer(RenderArena*, RenderStyle*) OVERRIDE;
    68 
    69     TextTrackCue* m_cue;
    70 };
    71 
    72 // ----------------------------
     46class HTMLDivElement;
    7347
    7448class TextTrackCue : public RefCounted<TextTrackCue>, public EventTarget {
     
    128102    void setIsActive(bool);
    129103
    130     PassRefPtr<TextTrackCueBox> getDisplayTree();
     104    PassRefPtr<HTMLDivElement> getDisplayTree();
    131105    void updateDisplayTree(float);
    132106    void removeDisplayTree();
    133107
    134     int calculateComputedLinePosition();
    135 
    136108    virtual const AtomicString& interfaceName() const;
    137109    virtual ScriptExecutionContext* scriptExecutionContext() const;
    138 
    139     std::pair<double, double> getCSSPosition() const;
    140     int getCSSSize() const;
    141     int getCSSWritingMode() const;
    142 
    143     enum WritingDirection {
    144         Horizontal,
    145         VerticalGrowingLeft,
    146         VerticalGrowingRight,
    147         NumberOfWritingDirections
    148     };
    149     WritingDirection getWritingDirection() const { return m_writingDirection; }
    150110
    151111    DEFINE_ATTRIBUTE_EVENT_LISTENER(enter);
     
    162122    TextTrackCue(ScriptExecutionContext*, const String& id, double start, double end, const String& content, const String& settings, bool pauseOnExit);
    163123
    164     std::pair<double, double> getPositionCoordinates() const;
    165124    void parseSettings(const String&);
    166125
     126    int calculateComputedLinePosition();
    167127    void calculateDisplayParameters();
     128
     129    std::pair<double, double> getPositionCoordinates();
    168130
    169131    void cueWillChange();
     
    186148    int m_cueIndex;
    187149
     150    enum WritingDirection {
     151        Horizontal,
     152        VerticalGrowingLeft,
     153        VerticalGrowingRight,
     154        NumberOfWritingDirections
     155    };
    188156    WritingDirection m_writingDirection;
    189157
     
    206174
    207175    bool m_displayTreeShouldChange;
    208     RefPtr<TextTrackCueBox> m_displayTree;
     176    RefPtr<HTMLDivElement> m_displayTree;
    209177
    210178    int m_displayDirection;
     
    217185    int m_displayWidth;
    218186
    219     std::pair<float, float> m_displayPosition;
     187    double m_displayXPosition;
     188    double m_displayYPosition;
    220189};
    221190
Note: See TracChangeset for help on using the changeset viewer.