WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Added back custom rendering
bug-85990-20120510023539.patch (text/plain), 8.86 KB, created by
Victor Carbune
on 2012-05-09 16:35:41 PDT
(
hide
)
Description:
Added back custom rendering
Filename:
MIME Type:
Creator:
Victor Carbune
Created:
2012-05-09 16:35:41 PDT
Size:
8.86 KB
patch
obsolete
>Subversion Revision: 116303 >diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog >index 02736d1109dc63a69f75aaa0eec629c7d11a0521..ae64759c1aa177e1965f1fa9550ccc2634536da3 100644 >--- a/Source/WebCore/ChangeLog >+++ b/Source/WebCore/ChangeLog >@@ -1,3 +1,30 @@ >+2012-05-09 Victor Carbune <vcarbune@adobe.com> >+ >+ Volume slider needs to be displayed below the mute button >+ https://bugs.webkit.org/show_bug.cgi?id=85990 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Reverting display logic. >+ >+ No new tests, yet. Updated tests expectations. >+ >+ * css/mediaControlsChromium.css: >+ (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container): >+ * css/mediaControlsQuickTime.css: >+ (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button): >+ * html/shadow/MediaControlElements.cpp: >+ (WebCore::MediaControlPanelElement::makeTransparent): >+ (RenderMediaVolumeSliderContainer): >+ (WebCore): >+ (WebCore::RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer): >+ (WebCore::RenderMediaVolumeSliderContainer::layout): >+ (WebCore::MediaControlVolumeSliderContainerElement::createRenderer): >+ * html/shadow/MediaControlElements.h: >+ (MediaControlVolumeSliderContainerElement): >+ * html/shadow/MediaControlRootElement.cpp: >+ (WebCore::MediaControlRootElement::create): >+ > 2012-05-07 Csaba Osztrogonác <ossy@webkit.org> > > Buildfix for buggy GCC >diff --git a/Source/WebCore/css/mediaControlsChromium.css b/Source/WebCore/css/mediaControlsChromium.css >index 7323f2a46a232cbe554dc3c60fe45aef029656a7..409398c5d0ccf0c9d63f60e9b69372e9a3924d26 100644 >--- a/Source/WebCore/css/mediaControlsChromium.css >+++ b/Source/WebCore/css/mediaControlsChromium.css >@@ -154,7 +154,8 @@ audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline { > > audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container { > -webkit-appearance: media-volume-slider-container; >- position: relative; >+ position: absolute; >+ bottom: 32px; > > width: 34px; > height: 100px; >diff --git a/Source/WebCore/css/mediaControlsQuickTime.css b/Source/WebCore/css/mediaControlsQuickTime.css >index a7e5f41bcf2500a2fa539eb8302068be8c4196bc..ea4e1298c0d3a5e74c024063e1e4bd925218050f 100644 >--- a/Source/WebCore/css/mediaControlsQuickTime.css >+++ b/Source/WebCore/css/mediaControlsQuickTime.css >@@ -221,3 +221,16 @@ audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volum > width: 10px; > height: 80px; > } >+ >+audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button { >+ -webkit-appearance: media-volume-slider-mute-button; >+ display: inline; >+ position: absolute; >+ >+ bottom: 5px; >+ left: 4px; >+ >+ width: 14px; >+ height: 12px; >+ border: none !important; >+} >diff --git a/Source/WebCore/html/shadow/MediaControlElements.cpp b/Source/WebCore/html/shadow/MediaControlElements.cpp >index 6ea485d1e8efdbefe595bca5c57469a14fea0e50..97ada25330ba2f5aab95f045cff4de1340138cf1 100644 >--- a/Source/WebCore/html/shadow/MediaControlElements.cpp >+++ b/Source/WebCore/html/shadow/MediaControlElements.cpp >@@ -257,7 +257,10 @@ void MediaControlPanelElement::makeTransparent() > > m_opaque = false; > >- startTimer(); >+ // Setting the display:none property on controls is not working >+ // because localToAbsolute is behaving differently(?!) >+ >+ // startTimer(); > } > > void MediaControlPanelElement::defaultEventHandler(Event* event) >@@ -322,6 +325,36 @@ const AtomicString& MediaControlTimelineContainerElement::shadowPseudoId() const > > // ---------------------------- > >+class RenderMediaVolumeSliderContainer : public RenderBlock { >+public: >+ RenderMediaVolumeSliderContainer(Node*); >+ >+private: >+ virtual void layout(); >+}; >+ >+RenderMediaVolumeSliderContainer::RenderMediaVolumeSliderContainer(Node* node) >+ : RenderBlock(node) >+{ >+} >+ >+void RenderMediaVolumeSliderContainer::layout() >+{ >+ RenderBlock::layout(); >+ >+ if (style()->display() == NONE || !nextSibling() || !nextSibling()->isBox()) >+ return; >+ >+ RenderBox* buttonBox = toRenderBox(nextSibling()); >+ int absoluteOffsetTop = buttonBox->localToAbsolute(FloatPoint(0, -size().height())).y(); >+ >+ LayoutStateDisabler layoutStateDisabler(view()); >+ >+ // If the slider would be rendered outside the page, it should be moved below the controls. >+ if (UNLIKELY(absoluteOffsetTop < 0)) >+ setY(theme()->volumeSliderOffsetFromMuteButton(buttonBox, pixelSnappedSize()).y()); >+} >+ > inline MediaControlVolumeSliderContainerElement::MediaControlVolumeSliderContainerElement(Document* document) > : MediaControlElement(document) > { >@@ -334,6 +367,11 @@ PassRefPtr<MediaControlVolumeSliderContainerElement> MediaControlVolumeSliderCon > return element.release(); > } > >+RenderObject* MediaControlVolumeSliderContainerElement::createRenderer(RenderArena* arena, RenderStyle*) >+{ >+ return new (arena) RenderMediaVolumeSliderContainer(this); >+} >+ > void MediaControlVolumeSliderContainerElement::defaultEventHandler(Event* event) > { > if (!event->isMouseEvent() || event->type() != eventNames().mouseoutEvent) >diff --git a/Source/WebCore/html/shadow/MediaControlElements.h b/Source/WebCore/html/shadow/MediaControlElements.h >index 467e31d781529314737aa1fce9f0f6ae69c28c62..b643ac6bbc34552d0f757861e1ee0f86436cf6f5 100644 >--- a/Source/WebCore/html/shadow/MediaControlElements.h >+++ b/Source/WebCore/html/shadow/MediaControlElements.h >@@ -158,9 +158,11 @@ private: > class MediaControlVolumeSliderContainerElement : public MediaControlElement { > public: > static PassRefPtr<MediaControlVolumeSliderContainerElement> create(Document*); >+ void displayBelowMuteButton(bool); > > private: > MediaControlVolumeSliderContainerElement(Document*); >+ virtual RenderObject* createRenderer(RenderArena*, RenderStyle*); > virtual void defaultEventHandler(Event*); > virtual MediaControlElementType displayType() const; > virtual const AtomicString& shadowPseudoId() const; >diff --git a/Source/WebCore/html/shadow/MediaControlRootElement.cpp b/Source/WebCore/html/shadow/MediaControlRootElement.cpp >index 7f831bc42b00a7f992f9b3e9fe053cedfac44b83..e5c8bc2c2a17b40418b47329cd9fc9e2d65c5756 100644 >--- a/Source/WebCore/html/shadow/MediaControlRootElement.cpp >+++ b/Source/WebCore/html/shadow/MediaControlRootElement.cpp >@@ -186,6 +186,15 @@ PassRefPtr<MediaControlRootElement> MediaControlRootElement::create(Document* do > if (ec) > return 0; > >+ // This is a duplicate mute button, which is visible in some ports at the bottom of the volume bar. >+ // It's important only when the volume bar is displayed below the controls. >+ RefPtr<MediaControlVolumeSliderMuteButtonElement> volumeSliderMuteButton = MediaControlVolumeSliderMuteButtonElement::create(document); >+ controls->m_volumeSliderMuteButton = volumeSliderMuteButton.get(); >+ volumeSliderContainer->appendChild(volumeSliderMuteButton.release(), ec, true); >+ >+ if (ec) >+ return 0; >+ > controls->m_volumeSliderContainer = volumeSliderContainer.get(); > panelVolumeControlContainer->appendChild(volumeSliderContainer.release(), ec, true); > if (ec) >diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog >index 8260ba55b17b3bdb71747ad92c58264eb5cbcafe..766cee0de05bf3b1f506895eff964b3881e36494 100644 >--- a/LayoutTests/ChangeLog >+++ b/LayoutTests/ChangeLog >@@ -1,3 +1,12 @@ >+2012-05-09 Victor Carbune <vcarbune@adobe.com> >+ >+ Volume slider needs to be displayed below the mute button >+ https://bugs.webkit.org/show_bug.cgi?id=85990 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ * platform/chromium/test_expectations.txt: Updated. >+ > 2012-05-07 Alexis Menard <alexis.menard@openbossa.org> > > [Qt] Enable fullscreen api layout tests on WebKit2. >diff --git a/LayoutTests/platform/chromium/test_expectations.txt b/LayoutTests/platform/chromium/test_expectations.txt >index 72b8a6fe6180a01f60021f68ee716dcd192a2d0f..b4175a5a8233c0faf500aa47d03d3265f4c6283f 100644 >--- a/LayoutTests/platform/chromium/test_expectations.txt >+++ b/LayoutTests/platform/chromium/test_expectations.txt >@@ -3038,6 +3038,12 @@ BUGWK73865 : media/track/text-track-is-reachable.html = TEXT CRASH > BUGWK81402 WIN : media/track/track-active-cues.html = PASS TIMEOUT > BUGWK83882 : media/track/track-mode.html = PASS TEXT TIMEOUT > >+BUGWK85990 : media/video-controls-rendering-toggle-display-none.html = TEXT >+BUGWK85990 : media/video-controls-toggling.html = TIMEOUT >+ >+// Needs rebaseline. >+BUGWK85990 : media/video-volume-slider.html = TEXT >+ > BUGWK72271 MAC DEBUG : fast/loader/javascript-url-in-embed.html = PASS CRASH > BUGWK72271 SNOWLEOPARD DEBUG : fast/dom/node-iterator-reference-node-moved-crash.html = PASS CRASH >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 85990
:
140931
|
141049
|
141160
|
141205
|
141216
|
141230
|
141257
|
141263
|
141609