Diff
Modified: trunk/LayoutTests/ChangeLog (120039 => 120040)
--- trunk/LayoutTests/ChangeLog 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/ChangeLog 2012-06-12 05:40:04 UTC (rev 120040)
@@ -1,3 +1,22 @@
+2012-06-11 Silvia Pfeiffer <silvi...@chromium.org>
+
+ Introduce an Enclosure Element for Chromium video controls.
+ https://bugs.webkit.org/show_bug.cgi?id=87683
+
+ Reviewed by Eric Carlson.
+
+ Change fullscreen/video-controls-override.html, media/media-controls-invalid-url.html and
+ media/track/track-cue-rendering-snap-to-lines-not-set.html to deal with the new enclosure
+ div in Chromium controls and use the mediaControlsElement() helper function to find elements
+ inside the controls.
+ Fail video controls tests in test expectations.
+
+ * fullscreen/video-controls-override-expected.txt: Updated.
+ * fullscreen/video-controls-override.html: Use mediaControlsElement helper function.
+ * media/media-controls-invalid-url.html: Use mediaControlsElement helper function.
+ * media/track/track-cue-rendering-snap-to-lines-not-set.html: Height is provided by enclosure element.
+ * platform/chromium/TestExpectations: Fail video controls tests.
+
2012-06-11 Dominic Cooney <domin...@chromium.org>
[Chromium] Unreviewed: Expectations for track-cues-cuechange.html
Modified: trunk/LayoutTests/fullscreen/video-controls-override-expected.txt (120039 => 120040)
--- trunk/LayoutTests/fullscreen/video-controls-override-expected.txt 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/fullscreen/video-controls-override-expected.txt 2012-06-12 05:40:04 UTC (rev 120040)
@@ -2,7 +2,7 @@
EVENT(webkitfullscreenchange)
EXPECTED (shadowRoot = internals.shadowRoot(video) != 'null') OK
-EXPECTED (panel = shadowRoot.firstChild.firstChild != 'null') OK
+EXPECTED (panel = mediaControlsElement(shadowRoot.firstChild, '-webkit-media-controls-panel') != 'null') OK
EXPECTED (internals.shadowPseudoId(panel) == '-webkit-media-controls-panel') OK
EXPECTED (document.defaultView.getComputedStyle(panel)['display'] != 'none') OK
EXPECTED (document.defaultView.getComputedStyle(panel)['height'] >= '20px') OK
Modified: trunk/LayoutTests/fullscreen/video-controls-override.html (120039 => 120040)
--- trunk/LayoutTests/fullscreen/video-controls-override.html 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/fullscreen/video-controls-override.html 2012-06-12 05:40:04 UTC (rev 120040)
@@ -2,6 +2,7 @@
<p>This tests that the video element's "controls" attribute is overridden in full screen mode, and that the controls are correctly hidden upon exiting full screen. Press any key to continue.</p>
<video id="video" width="300"></video>
<script src=""
+ <script src=""
<script>
var callback;
var shadowRoot;
@@ -19,7 +20,7 @@
var videoEnteredFullScreen = function() {
if (window.internals) {
testExpected("shadowRoot = internals.shadowRoot(video)", null, "!=");
- testExpected("panel = shadowRoot.firstChild.firstChild", null, "!=");
+ testExpected("panel = mediaControlsElement(shadowRoot.firstChild, '-webkit-media-controls-panel')", null, "!=");
testExpected("internals.shadowPseudoId(panel)", "-webkit-media-controls-panel");
testExpected("document.defaultView.getComputedStyle(panel)['display']", 'none', "!=");
testExpected("document.defaultView.getComputedStyle(panel)['height']", '20px', ">=");
Modified: trunk/LayoutTests/media/media-controls-invalid-url.html (120039 => 120040)
--- trunk/LayoutTests/media/media-controls-invalid-url.html 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/media/media-controls-invalid-url.html 2012-06-12 05:40:04 UTC (rev 120040)
@@ -3,6 +3,7 @@
<head>
<script src=""
<script src=""
+ <script src=""
<script>
var video;
@@ -18,29 +19,15 @@
function getTimeLineValue()
{
- var timelineContainer;
- var timelineValue;
+ var timeline;
+ var shadowRoot = internals.shadowRoot(video);
- var controlsShadow = internals.shadowRoot(video).firstChild.firstChild;
- for (child = controlsShadow.firstChild; child; child = child.nextSibling)
- if (internals.shadowPseudoId(child) == "-webkit-media-controls-timeline-container") {
- timelineContainer = child;
- break;
- }
+ timeline = mediaControlsElement(shadowRoot.firstChild.firstChild, '-webkit-media-controls-timeline');
- if(!timelineContainer)
- throw "Faild to find -webkit-media-controls-timeline-container";
-
- for (child = timelineContainer.firstChild; child; child = child.nextSibling)
- if (internals.shadowPseudoId(child) == "-webkit-media-controls-timeline") {
- timelineValue = child.value;
- break;
- }
-
- if(!timelineContainer)
+ if(!timeline)
throw "Faild to find -webkit-media-controls-timeline";
- return timelineValue;
+ return timeline.value;
}
function error()
Modified: trunk/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html (120039 => 120040)
--- trunk/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/media/track/track-cue-rendering-snap-to-lines-not-set.html 2012-06-12 05:40:04 UTC (rev 120040)
@@ -89,8 +89,11 @@
findMediaElement();
testTrack = document.querySelector('track');
video.src = "" '../content/test');
- controlsPanelElement = mediaControlsElement(internals.shadowRoot(video).firstChild, '-webkit-media-controls-panel');
+ // In Chromium it is the enclosure element, which provides the controls height, otherwise the panel;
+ // both are the second child in the shadow DOM.
+ controlsPanelElement = internals.shadowRoot(video).firstChild.firstChild;
+
waitForEvent('canplaythrough', function() {
cueDisplayContainer = textTrackDisplayElement(video);
testInitialContainer();
Modified: trunk/LayoutTests/platform/chromium/TestExpectations (120039 => 120040)
--- trunk/LayoutTests/platform/chromium/TestExpectations 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/LayoutTests/platform/chromium/TestExpectations 2012-06-12 05:40:04 UTC (rev 120040)
@@ -2970,6 +2970,26 @@
BUGWK81402 WIN : media/track/track-active-cues.html = PASS TIMEOUT
BUGWK83882 : media/track/track-mode.html = PASS TEXT TIMEOUT
+// Need rebaseline.
+BUGWK87683 : fast/layers/video-layer.html = FAIL
+BUGWK87683 : media/audio-controls-rendering.html = FAIL
+BUGWK87683 : media/audio-repaint.html = FAIL
+BUGWK87683 : media/controls-after-reload.html = FAIL
+BUGWK87683 : media/controls-strict.html = FAIL
+BUGWK87683 : media/controls-styling.html = FAIL
+BUGWK87683 : media/controls-without-preload.html = FAIL
+BUGWK87683 : media/media-controls-clone.html = FAIL
+BUGWK87683 : media/media-document-audio-repaint.html = FAIL
+BUGWK87683 : media/video-controls-rendering.html = FAIL
+BUGWK87683 : media/video-display-toggle.html = FAIL
+BUGWK87683 : media/video-empty-source.html = FAIL
+BUGWK87683 : media/video-no-audio.html = FAIL
+BUGWK87683 : media/video-playing-and-pause.html = FAIL
+BUGWK87683 : media/video-zoom-controls.html = FAIL
+BUGWK87683 : media/video-volume-slider.html = FAIL
+
+BUGWK72271 SNOWLEOPARD DEBUG : fast/dom/node-iterator-reference-node-moved-crash.html = PASS CRASH
+
BUGWK72376 WIN : fast/forms/file/input-file-label.html = TEXT PASS
// Animations tests use an inherently-flaky timer-based design.
Modified: trunk/Source/WebCore/ChangeLog (120039 => 120040)
--- trunk/Source/WebCore/ChangeLog 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/Source/WebCore/ChangeLog 2012-06-12 05:40:04 UTC (rev 120040)
@@ -1,3 +1,44 @@
+2012-06-11 Silvia Pfeiffer <silvi...@chromium.org>
+
+ Introduce an Enclosure Element for Chromium video controls.
+ https://bugs.webkit.org/show_bug.cgi?id=87683
+
+ Reviewed by Eric Carlson.
+
+ Updated tests.
+
+ The Chrome video controls are receiving a visual update. A new enclosure div is required
+ to provide for a offset space from the video's boundaries. The visual update itself is in
+ a separate patch.
+
+ * css/mediaControlsChromium.css:
+ (video::-webkit-media-controls-enclosure):
+ Introduce CSS for enclosure div so it doesn't show yet.
+ * html/shadow/MediaControlRootElementChromium.cpp:
+ (WebCore::MediaControlChromiumEnclosureElement::MediaControlChromiumEnclosureElement):
+ Definition of the new enclosure element.
+ (WebCore::MediaControlChromiumEnclosureElement::create):
+ Definition of a create operator for the new enclosure element.
+ (WebCore::MediaControlChromiumEnclosureElement::shadowPseudoId):
+ Definition of the shadowPseudoId of -webkit-media-controls-enclosure for the enclosure div.
+ (WebCore::MediaControlRootElementChromium::MediaControlRootElementChromium):
+ Initialize member element for enclosure div.
+ (WebCore::MediaControlRootElementChromium::create):
+ Instantiate enclosure div and add into DOM between controls and panel elements.
+ (WebCore::MediaControlRootElementChromium::setMediaController):
+ Set media controller for enclosure div.
+ (WebCore::MediaControlRootElementChromium::createTextTrackDisplay):
+ Insert text track display container to enclosure rather than panel.
+ * html/shadow/MediaControlRootElementChromium.h:
+ (WebCore):
+ (MediaControlChromiumEnclosureElement):
+ (WebCore::MediaControlChromiumEnclosureElement::setMediaController):
+ (WebCore::MediaControlChromiumEnclosureElement::mediaController):
+ (WebCore::MediaControlChromiumEnclosureElement::isMediaControlElement):
+ Add declaration of the new enclosure element and its member functions.
+ (MediaControlRootElementChromium):
+ Add member variable to controls root element to hold the enclosure element.
+
2012-06-11 Elliott Sprehn <espr...@gmail.com>
WebKit doesn't allow replacing the document element with a DocumentFragment containing one element
Modified: trunk/Source/WebCore/css/mediaControlsChromium.css (120039 => 120040)
--- trunk/Source/WebCore/css/mediaControlsChromium.css 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/Source/WebCore/css/mediaControlsChromium.css 2012-06-12 05:40:04 UTC (rev 120040)
@@ -39,6 +39,12 @@
max-width: 100%;
}
+audio::-webkit-media-controls-enclosure, video::-webkit-media-controls-enclosure {
+ width: 100%;
+ height: 32px;
+ bottom: 0;
+}
+
audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
-webkit-user-select: none;
-webkit-box-pack: end;
Modified: trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp (120039 => 120040)
--- trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.cpp 2012-06-12 05:40:04 UTC (rev 120040)
@@ -29,6 +29,7 @@
#if ENABLE(VIDEO)
#include "MediaControlRootElementChromium.h"
+#include "HTMLDivElement.h"
#include "HTMLMediaElement.h"
#include "HTMLNames.h"
#include "MediaControlElements.h"
@@ -45,6 +46,23 @@
namespace WebCore {
+MediaControlChromiumEnclosureElement::MediaControlChromiumEnclosureElement(Document* document)
+ : HTMLDivElement(HTMLNames::divTag, document->document())
+ , m_mediaController(0)
+{
+}
+
+PassRefPtr<MediaControlChromiumEnclosureElement> MediaControlChromiumEnclosureElement::create(Document* document)
+{
+ return adoptRef(new MediaControlChromiumEnclosureElement(document));
+}
+
+const AtomicString& MediaControlChromiumEnclosureElement::shadowPseudoId() const
+{
+ DEFINE_STATIC_LOCAL(AtomicString, id, ("-webkit-media-controls-enclosure"));
+ return id;
+}
+
MediaControlRootElementChromium::MediaControlRootElementChromium(Document* document)
: MediaControls(document)
, m_mediaController(0)
@@ -59,6 +77,7 @@
, m_fullscreenButton(0)
#endif
, m_panel(0)
+ , m_enclosure(0)
#if ENABLE(VIDEO_TRACK)
, m_textDisplayContainer(0)
, m_textTrackDisplay(0)
@@ -80,6 +99,9 @@
RefPtr<MediaControlRootElementChromium> controls = adoptRef(new MediaControlRootElementChromium(document));
+ // Create an enclosing element for the panel so we can visually offset the controls correctly.
+ RefPtr<MediaControlChromiumEnclosureElement> enclosure = MediaControlChromiumEnclosureElement::create(document);
+
RefPtr<MediaControlPanelElement> panel = MediaControlPanelElement::create(document);
ExceptionCode ec;
@@ -143,10 +165,15 @@
#endif
controls->m_panel = panel.get();
- controls->appendChild(panel.release(), ec, true);
+ enclosure->appendChild(panel.release(), ec, true);
if (ec)
return 0;
+ controls->m_enclosure = enclosure.get();
+ controls->appendChild(enclosure.release(), ec, true);
+ if (ec)
+ return 0;
+
return controls.release();
}
@@ -176,6 +203,8 @@
#endif
if (m_panel)
m_panel->setMediaController(controller);
+ if (m_enclosure)
+ m_enclosure->setMediaController(controller);
#if ENABLE(VIDEO_TRACK)
if (m_textDisplayContainer)
m_textDisplayContainer->setMediaController(controller);
@@ -365,8 +394,7 @@
m_textDisplayContainer = textDisplayContainer.get();
// Insert it before the first controller element so it always displays behind the controls.
- ExceptionCode ec;
- insertBefore(textDisplayContainer.release(), m_panel, ec, true);
+ insertBefore(textDisplayContainer.release(), m_enclosure, ASSERT_NO_EXCEPTION, true);
}
void MediaControlRootElementChromium::showTextTrackDisplay()
Modified: trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.h (120039 => 120040)
--- trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.h 2012-06-12 05:32:29 UTC (rev 120039)
+++ trunk/Source/WebCore/html/shadow/MediaControlRootElementChromium.h 2012-06-12 05:40:04 UTC (rev 120040)
@@ -49,6 +49,7 @@
class MediaControlVolumeSliderElement;
class MediaControlVolumeSliderContainerElement;
class MediaControlPanelElement;
+class MediaControlChromiumEnclosureElement;
class MediaControllerInterface;
class MediaPlayer;
@@ -60,6 +61,24 @@
class MediaControlTextTrackDisplayElement;
#endif
+class MediaControlChromiumEnclosureElement : public HTMLDivElement {
+public:
+ static PassRefPtr<MediaControlChromiumEnclosureElement> create(Document*);
+
+ virtual const AtomicString& shadowPseudoId() const;
+
+ void setMediaController(MediaControllerInterface* controller) { m_mediaController = controller; }
+ MediaControllerInterface* mediaController() const { return m_mediaController; }
+
+protected:
+ MediaControlChromiumEnclosureElement(Document*);
+
+private:
+ virtual bool isMediaControlElement() const { return true; }
+
+ MediaControllerInterface* m_mediaController;
+};
+
class MediaControlRootElementChromium : public MediaControls {
public:
static PassRefPtr<MediaControlRootElementChromium> create(Document*);
@@ -125,6 +144,7 @@
MediaControlFullscreenButtonElement* m_fullscreenButton;
#endif
MediaControlPanelElement* m_panel;
+ MediaControlChromiumEnclosureElement* m_enclosure;
#if ENABLE(VIDEO_TRACK)
MediaControlTextTrackContainerElement* m_textDisplayContainer;
MediaControlTextTrackDisplayElement* m_textTrackDisplay;