Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: Source/core/html/track/vtt/VTTCue.cpp

Issue 102073002: Remove TextTrackCueBox (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/html/track/vtt/VTTCue.h ('k') | Source/core/html/track/vtt/VTTRegion.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Opera Software ASA. All rights reserved. 2 * Copyright (c) 2013, Opera Software ASA. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 { 117 {
118 if (TextTrackCue::isInfiniteOrNonNumber(value, method, exceptionState)) 118 if (TextTrackCue::isInfiniteOrNonNumber(value, method, exceptionState))
119 return true; 119 return true;
120 if (value < 0 || value > 100) { 120 if (value < 0 || value > 100) {
121 exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::fail edToSet(method, "TextTrackCue", "The value provided (" + String::number(value) + ") is not between 0 and 100.")); 121 exceptionState.throwDOMException(IndexSizeError, ExceptionMessages::fail edToSet(method, "TextTrackCue", "The value provided (" + String::number(value) + ") is not between 0 and 100."));
122 return true; 122 return true;
123 } 123 }
124 return false; 124 return false;
125 } 125 }
126 126
127 // ---------------------------- 127 static const AtomicString& textTrackCueBoxShadowPseudoId()
128 {
129 DEFINE_STATIC_LOCAL(const AtomicString, trackDisplayBoxShadowPseudoId, ("-we bkit-media-text-track-display", AtomicString::ConstructFromLiteral));
acolwell GONE FROM CHROMIUM 2013/12/03 20:51:31 nit: Any reason not to just move this into the con
philipj_slow 2013/12/03 21:16:23 I imagined it might be some deliberate style. I've
130 return trackDisplayBoxShadowPseudoId;
131 }
128 132
129 VTTCueBox::VTTCueBox(Document& document, VTTCue* cue) 133 VTTCueBox::VTTCueBox(Document& document, VTTCue* cue)
130 : TextTrackCueBox(document) 134 : HTMLDivElement(document)
131 , m_cue(cue) 135 , m_cue(cue)
132 { 136 {
133 setPseudo(textTrackCueBoxShadowPseudoId()); 137 setPseudo(textTrackCueBoxShadowPseudoId());
134 } 138 }
135 139
136 void VTTCueBox::applyCSSProperties(const IntSize&) 140 void VTTCueBox::applyCSSProperties(const IntSize&)
137 { 141 {
138 // FIXME: Apply all the initial CSS positioning properties. http://wkb.ug/79 916 142 // FIXME: Apply all the initial CSS positioning properties. http://wkb.ug/79 916
139 if (!m_cue->regionId().isEmpty()) { 143 if (!m_cue->regionId().isEmpty()) {
140 setInlineStyleProperty(CSSPropertyPosition, CSSValueRelative); 144 setInlineStyleProperty(CSSPropertyPosition, CSSValueRelative);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 198
195 setInlineStyleProperty(CSSPropertyWhiteSpace, CSSValuePre); 199 setInlineStyleProperty(CSSPropertyWhiteSpace, CSSValuePre);
196 } 200 }
197 } 201 }
198 202
199 RenderObject* VTTCueBox::createRenderer(RenderStyle*) 203 RenderObject* VTTCueBox::createRenderer(RenderStyle*)
200 { 204 {
201 return new RenderVTTCue(this); 205 return new RenderVTTCue(this);
202 } 206 }
203 207
204 // ----------------------------
205
206 VTTCue::VTTCue(Document& document, double startTime, double endTime, const Strin g& text) 208 VTTCue::VTTCue(Document& document, double startTime, double endTime, const Strin g& text)
207 : TextTrackCue(startTime, endTime) 209 : TextTrackCue(startTime, endTime)
208 , m_text(text) 210 , m_text(text)
209 , m_linePosition(undefinedPosition) 211 , m_linePosition(undefinedPosition)
210 , m_computedLinePosition(undefinedPosition) 212 , m_computedLinePosition(undefinedPosition)
211 , m_textPosition(50) 213 , m_textPosition(50)
212 , m_cueSize(100) 214 , m_cueSize(100)
213 , m_writingDirection(Horizontal) 215 , m_writingDirection(Horizontal)
214 , m_cueAlignment(Middle) 216 , m_cueAlignment(Middle)
215 , m_vttNodeTree(0) 217 , m_vttNodeTree(0)
(...skipping 489 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 707
706 // Clear the contents of the set. 708 // Clear the contents of the set.
707 m_cueBackgroundBox->removeChildren(); 709 m_cueBackgroundBox->removeChildren();
708 710
709 // Update the two sets containing past and future WebVTT objects. 711 // Update the two sets containing past and future WebVTT objects.
710 RefPtr<DocumentFragment> referenceTree = createCueRenderingTree(); 712 RefPtr<DocumentFragment> referenceTree = createCueRenderingTree();
711 markFutureAndPastNodes(referenceTree.get(), startTime(), movieTime); 713 markFutureAndPastNodes(referenceTree.get(), startTime(), movieTime);
712 m_cueBackgroundBox->appendChild(referenceTree, ASSERT_NO_EXCEPTION); 714 m_cueBackgroundBox->appendChild(referenceTree, ASSERT_NO_EXCEPTION);
713 } 715 }
714 716
715 PassRefPtr<TextTrackCueBox> VTTCue::getDisplayTree(const IntSize& videoSize) 717 PassRefPtr<VTTCueBox> VTTCue::getDisplayTree(const IntSize& videoSize)
716 { 718 {
717 RefPtr<VTTCueBox> displayTree = displayTreeInternal(); 719 RefPtr<VTTCueBox> displayTree = displayTreeInternal();
718 if (!m_displayTreeShouldChange || !track()->isRendered()) 720 if (!m_displayTreeShouldChange || !track()->isRendered())
719 return displayTree; 721 return displayTree;
720 722
721 // 10.1 - 10.10 723 // 10.1 - 10.10
722 calculateDisplayParameters(); 724 calculateDisplayParameters();
723 725
724 // 10.11. Apply the terms of the CSS specifications to nodes within the 726 // 10.11. Apply the terms of the CSS specifications to nodes within the
725 // following constraints, thus obtaining a set of CSS boxes positioned 727 // following constraints, thus obtaining a set of CSS boxes positioned
(...skipping 29 matching lines...) Expand all
755 // boxes. 757 // boxes.
756 return displayTree; 758 return displayTree;
757 } 759 }
758 760
759 void VTTCue::removeDisplayTree() 761 void VTTCue::removeDisplayTree()
760 { 762 {
761 if (m_notifyRegion && track()->regions()) { 763 if (m_notifyRegion && track()->regions()) {
762 // The region needs to be informed about the cue removal. 764 // The region needs to be informed about the cue removal.
763 VTTRegion* region = track()->regions()->getRegionById(m_regionId); 765 VTTRegion* region = track()->regions()->getRegionById(m_regionId);
764 if (region) 766 if (region)
765 region->willRemoveTextTrackCueBox(m_displayTree.get()); 767 region->willRemoveVTTCueBox(m_displayTree.get());
766 } 768 }
767 769
768 displayTreeInternal()->remove(ASSERT_NO_EXCEPTION); 770 displayTreeInternal()->remove(ASSERT_NO_EXCEPTION);
769 } 771 }
770 772
771 void VTTCue::updateDisplay(const IntSize& videoSize, HTMLDivElement& container) 773 void VTTCue::updateDisplay(const IntSize& videoSize, HTMLDivElement& container)
772 { 774 {
773 RefPtr<TextTrackCueBox> displayBox = getDisplayTree(videoSize); 775 RefPtr<VTTCueBox> displayBox = getDisplayTree(videoSize);
774 VTTRegion* region = 0; 776 VTTRegion* region = 0;
775 if (track()->regions()) 777 if (track()->regions())
776 region = track()->regions()->getRegionById(regionId()); 778 region = track()->regions()->getRegionById(regionId());
777 779
778 if (!region) { 780 if (!region) {
779 // If cue has an empty text track cue region identifier or there is no 781 // If cue has an empty text track cue region identifier or there is no
780 // WebVTT region whose region identifier is identical to cue's text 782 // WebVTT region whose region identifier is identical to cue's text
781 // track cue region identifier, run the following substeps: 783 // track cue region identifier, run the following substeps:
782 if (displayBox->hasChildNodes() && !container.contains(displayBox.get()) ) { 784 if (displayBox->hasChildNodes() && !container.contains(displayBox.get()) ) {
783 // Note: the display tree of a cue is removed when the active flag o f the cue is unset. 785 // Note: the display tree of a cue is removed when the active flag o f the cue is unset.
784 container.appendChild(displayBox); 786 container.appendChild(displayBox);
785 } 787 }
786 } else { 788 } else {
787 // Let region be the WebVTT region whose region identifier 789 // Let region be the WebVTT region whose region identifier
788 // matches the text track cue region identifier of cue. 790 // matches the text track cue region identifier of cue.
789 RefPtr<HTMLDivElement> regionNode = region->getDisplayTree(document()); 791 RefPtr<HTMLDivElement> regionNode = region->getDisplayTree(document());
790 792
791 // Append the region to the viewport, if it was not already. 793 // Append the region to the viewport, if it was not already.
792 if (!container.contains(regionNode.get())) 794 if (!container.contains(regionNode.get()))
793 container.appendChild(regionNode); 795 container.appendChild(regionNode);
794 796
795 region->appendTextTrackCueBox(displayBox); 797 region->appendVTTCueBox(displayBox);
796 } 798 }
797 } 799 }
798 800
799 std::pair<double, double> VTTCue::getPositionCoordinates() const 801 std::pair<double, double> VTTCue::getPositionCoordinates() const
800 { 802 {
801 // This method is used for setting x and y when snap to lines is not set. 803 // This method is used for setting x and y when snap to lines is not set.
802 std::pair<double, double> coordinates; 804 std::pair<double, double> coordinates;
803 805
804 if (m_writingDirection == Horizontal && m_displayDirection == CSSValueLtr) { 806 if (m_writingDirection == Horizontal && m_displayDirection == CSSValueLtr) {
805 coordinates.first = m_textPosition; 807 coordinates.first = m_textPosition;
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
1110 return m_cueBackgroundBox->executionContext(); 1112 return m_cueBackgroundBox->executionContext();
1111 } 1113 }
1112 1114
1113 Document& VTTCue::document() const 1115 Document& VTTCue::document() const
1114 { 1116 {
1115 ASSERT(m_cueBackgroundBox); 1117 ASSERT(m_cueBackgroundBox);
1116 return m_cueBackgroundBox->document(); 1118 return m_cueBackgroundBox->document();
1117 } 1119 }
1118 1120
1119 } // namespace WebCore 1121 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/html/track/vtt/VTTCue.h ('k') | Source/core/html/track/vtt/VTTRegion.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698