2010-07-08 Eric Carlson <eric.carlson@apple.com>
authoreric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Jul 2010 20:00:49 +0000 (20:00 +0000)
committereric.carlson@apple.com <eric.carlson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 8 Jul 2010 20:00:49 +0000 (20:00 +0000)
        Reviewed by NOBODY (OOPS!).

        Mac OS X media controls should have a way to adjust volume incrementally
        https://bugs.webkit.org/show_bug.cgi?id=41718
        <rdar://problem/5679472>

        * css/CSSPrimitiveValueMappings.h:
        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Handle MediaVolumeSliderMuteButtonPart.

        * css/CSSSelector.cpp:
        (WebCore::CSSSelector::pseudoId): Handle PseudoMediaControlsVolumeSliderMuteButton.
        (WebCore::nameToPseudoTypeMap): Define mediaControlsVolumeSliderMuteButton.
        (WebCore::CSSSelector::extractPseudoType): Handle PseudoMediaControlsVolumeSliderMuteButton.

        * css/CSSSelector.h:
        (WebCore::CSSSelector::): Define PseudoMediaControlsVolumeSliderMuteButton.

        * css/CSSValueKeywords.in: Define media-volume-slider-mute-button.

        * css/mediaControls.css:
        (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button): New.

        * css/mediaControlsQuickTime.css:
        (audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel): Add "overflow: visible"
        so volume slider pop-up will be visible.

        (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): Make
        mute button 14x12 instead of 15x14 so it matches the size in the volume slider.

        (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container):
        (audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider):
        (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button):
        New.

        * platform/ThemeTypes.h: Define MediaVolumeSliderMuteButtonPart.

        * rendering/MediaControlElements.cpp:
        (WebCore::MediaControlInputElement::MediaControlInputElement): Handle MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.
        (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement): Add ButtonLocation
        parameter both mute buttons can be created.
        (WebCore::MediaControlMuteButtonElement::create): Ditto.

        * rendering/MediaControlElements.h: Define MediaVolumeSliderMuteButton and ButtonLocation.

        * rendering/RenderMedia.cpp:
        (WebCore::RenderMedia::styleDidChange): Update volume slider mute button.
        (WebCore::RenderMedia::createMuteButton): Pass ButtonLocation parameter to MediaControlMuteButtonElement::create.
        (WebCore::RenderMedia::createVolumeSliderMuteButton): New.
        (WebCore::RenderMedia::updateControls): Deal with volume slider mute button.
        (WebCore::RenderMedia::updateVolumeSliderContainer): Don't assume all ports want to position
        the volume slider in the same place, call new volumeSliderOffsetFromMuteButton theme function.
        (WebCore::RenderMedia::forwardEvent): Handle volume slider mute button.
        * rendering/RenderMedia.h:

        * rendering/RenderTheme.cpp:
        (WebCore::RenderTheme::paint): Handle MediaVolumeSliderMuteButtonPart.
        (WebCore::RenderTheme::volumeSliderOffsetFromMuteButton): New, return location previously hard
        coded in RenderMedia::updateVolumeSliderContainer.
        * rendering/RenderTheme.h:

        * rendering/RenderThemeMac.h:
        * rendering/RenderThemeMac.mm:
        (WebCore::RenderThemeMac::adjustMediaSliderThumbSize): Deal with the volume slider thumb.
        (WebCore::RenderThemeMac::paintMediaVolumeSliderContainer): New, call the WKSI paint function
        for this button.
        (WebCore::RenderThemeMac::paintMediaVolumeSliderTrack): Ditto.
        (WebCore::RenderThemeMac::paintMediaVolumeSliderThumb): Ditto.
        (WebCore::RenderThemeMac::shouldRenderMediaControlPart): Draw the volume slider parts when
        using the new controller UI for a movie that has audio.
        (WebCore::RenderThemeMac::volumeSliderOffsetFromMuteButton): New, position the volume slider
        directly above the mute button.

        * rendering/style/RenderStyleConstants.h: Define MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.

2010-07-08  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        Update WebKitSystemInterface.

        * libWebKitSystemInterfaceLeopard.a:
        * libWebKitSystemInterfaceSnowLeopard.a:
        * libWebKitSystemInterfaceTiger.a:

2010-07-08  Eric Carlson  <eric.carlson@apple.com>

        Reviewed by Dan Bernstein.

        Mac OS X media controls should have a way to adjust volume incrementally
        https://bugs.webkit.org/show_bug.cgi?id=41718
        <rdar://problem/5679472>

        Updated results for the mute button size change. Remove some Leopard test results
        where the SnowLeopard results are identical.

        * platform/mac-leopard/media/audio-controls-rendering-expected.checksum: Removed.
        * platform/mac-leopard/media/audio-controls-rendering-expected.png: Removed.
        * platform/mac-leopard/media/audio-controls-rendering-expected.txt: Removed.
        * platform/mac-leopard/media/controls-after-reload-expected.checksum: Removed.
        * platform/mac-leopard/media/controls-after-reload-expected.png: Removed.
        * platform/mac-leopard/media/controls-after-reload-expected.txt: Removed.
        * platform/mac-leopard/media/controls-styling-expected.checksum: Removed.
        * platform/mac-leopard/media/controls-styling-expected.png: Removed.
        * platform/mac-leopard/media/controls-styling-expected.txt: Removed.
        * platform/mac-leopard/media/video-zoom-controls-expected.checksum: Removed.
        * platform/mac-leopard/media/video-zoom-controls-expected.png: Removed.
        * platform/mac-leopard/media/video-zoom-controls-expected.txt: Removed.
        * platform/mac/media/audio-controls-rendering-expected.txt:
        * platform/mac/media/controls-after-reload-expected.txt:
        * platform/mac/media/controls-styling-expected.txt:
        * platform/mac/media/video-zoom-controls-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@62821 268f45cc-cd09-0410-ab3c-d52691b4dbfc

35 files changed:
LayoutTests/ChangeLog
LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.checksum [deleted file]
LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.png [deleted file]
LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.txt [deleted file]
LayoutTests/platform/mac-leopard/media/controls-after-reload-expected.txt
LayoutTests/platform/mac-leopard/media/controls-strict-expected.txt
LayoutTests/platform/mac-leopard/media/controls-styling-expected.txt
LayoutTests/platform/mac-leopard/media/video-controls-rendering-expected.txt
LayoutTests/platform/mac-leopard/media/video-display-toggle-expected.txt
LayoutTests/platform/mac-leopard/media/video-zoom-controls-expected.txt
LayoutTests/platform/mac/media/audio-controls-rendering-expected.txt
LayoutTests/platform/mac/media/controls-after-reload-expected.txt
LayoutTests/platform/mac/media/controls-styling-expected.txt
LayoutTests/platform/mac/media/video-zoom-controls-expected.txt
WebCore/ChangeLog
WebCore/css/CSSPrimitiveValueMappings.h
WebCore/css/CSSSelector.cpp
WebCore/css/CSSSelector.h
WebCore/css/CSSValueKeywords.in
WebCore/css/mediaControls.css
WebCore/css/mediaControlsQuickTime.css
WebCore/platform/ThemeTypes.h
WebCore/rendering/MediaControlElements.cpp
WebCore/rendering/MediaControlElements.h
WebCore/rendering/RenderMedia.cpp
WebCore/rendering/RenderMedia.h
WebCore/rendering/RenderTheme.cpp
WebCore/rendering/RenderTheme.h
WebCore/rendering/RenderThemeMac.h
WebCore/rendering/RenderThemeMac.mm
WebCore/rendering/style/RenderStyleConstants.h
WebKitLibraries/ChangeLog
WebKitLibraries/libWebKitSystemInterfaceLeopard.a
WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a
WebKitLibraries/libWebKitSystemInterfaceTiger.a

index 9c23e81..874f03d 100644 (file)
@@ -1,3 +1,28 @@
+2010-07-08  Eric Carlson  <eric.carlson@apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        Mac OS X media controls should have a way to adjust volume incrementally
+        https://bugs.webkit.org/show_bug.cgi?id=41718
+        <rdar://problem/5679472>
+
+        Updated results for the mute button size change. Remove some Leopard test results
+        where the SnowLeopard results are identical.
+
+        * platform/mac-leopard/media/audio-controls-rendering-expected.checksum: Removed.
+        * platform/mac-leopard/media/audio-controls-rendering-expected.png: Removed.
+        * platform/mac-leopard/media/audio-controls-rendering-expected.txt: Removed.
+        * platform/mac-leopard/media/controls-after-reload-expected.txt:
+        * platform/mac-leopard/media/controls-strict-expected.txt:
+        * platform/mac-leopard/media/controls-styling-expected.txt:
+        * platform/mac-leopard/media/video-controls-rendering-expected.txt:
+        * platform/mac-leopard/media/video-display-toggle-expected.txt:
+        * platform/mac-leopard/media/video-zoom-controls-expected.txt:
+        * platform/mac/media/audio-controls-rendering-expected.txt:
+        * platform/mac/media/controls-after-reload-expected.txt:
+        * platform/mac/media/controls-styling-expected.txt:
+        * platform/mac/media/video-zoom-controls-expected.txt:
+
 2010-07-07  Ojan Vafai  <ojan@chromium.org>
 
         Reviewed by Darin Adler.
diff --git a/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.checksum b/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.checksum
deleted file mode 100644 (file)
index 2e1a032..0000000
+++ /dev/null
@@ -1 +0,0 @@
-23d92921001dcac799a7bf70535f0723
\ No newline at end of file
diff --git a/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.png b/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.png
deleted file mode 100644 (file)
index cc20439..0000000
Binary files a/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.png and /dev/null differ
diff --git a/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.txt b/LayoutTests/platform/mac-leopard/media/audio-controls-rendering-expected.txt
deleted file mode 100644 (file)
index d7ab43a..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-layer at (0,0) size 800x600
-  RenderView at (0,0) size 800x600
-layer at (0,0) size 800x600
-  RenderBlock {HTML} at (0,0) size 800x600
-    RenderBody {BODY} at (8,8) size 784x584
-      RenderBlock {P} at (0,0) size 784x18
-        RenderText {#text} at (0,0) size 153x18
-          text run at (0,0) width 153: "Test controls placement."
-      RenderBlock (anonymous) at (0,34) size 784x104
-        RenderMedia {AUDIO} at (0,0) size 200x25 [bgcolor=#0000FF]
-        RenderBR {BR} at (200,25) size 0x0
-        RenderBR {BR} at (0,25) size 0x18
-        RenderMedia {AUDIO} at (0,43) size 320x25 [bgcolor=#0000FF]
-        RenderBR {BR} at (320,68) size 0x0
-        RenderBR {BR} at (0,68) size 0x18
-        RenderBR {BR} at (0,86) size 0x18
-layer at (8,42) size 200x25
-  RenderBlock (relative positioned) {DIV} at (0,0) size 200x25
-layer at (8,42) size 200x25
-  RenderFlexibleBox (positioned) {DIV} at (0,0) size 200x25
-    RenderButton {INPUT} at (6,3) size 18x18
-    RenderButton {INPUT} at (32,4) size 16x16
-    RenderFlexibleBox {DIV} at (49,1) size 126x22
-      RenderSlider {INPUT} at (0,5) size 126x13
-        RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (177,5) size 15x14
-layer at (8,85) size 320x25
-  RenderBlock (relative positioned) {DIV} at (0,0) size 320x25
-layer at (8,85) size 320x25
-  RenderFlexibleBox (positioned) {DIV} at (0,0) size 320x25
-    RenderButton {INPUT} at (6,3) size 18x18
-    RenderButton {INPUT} at (32,4) size 16x16
-    RenderFlexibleBox {DIV} at (49,5) size 246x15
-      RenderSlider {INPUT} at (45,2) size 156x13
-        RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
-layer at (57,92) size 45x11
-  RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
-    RenderBlock (anonymous) at (9,0) size 26x11
-      RenderText {#text} at (0,0) size 26x11
-        text run at (0,0) width 26: "00:00"
-layer at (258,92) size 45x11
-  RenderFlexibleBox {DIV} at (201,2) size 45x11 [color=#FFFFFF]
-    RenderBlock (anonymous) at (6,0) size 32x11
-      RenderText {#text} at (0,0) size 32x11
-        text run at (0,0) width 32: "-00:07"
-layer at (8,128) size 320x100
-  RenderMedia {AUDIO} at (8,128) size 320x100 [bgcolor=#0000FF]
-layer at (8,128) size 320x100
-  RenderBlock (relative positioned) {DIV} at (0,0) size 320x100
-layer at (8,203) size 320x25
-  RenderFlexibleBox (positioned) {DIV} at (0,75) size 320x25
-    RenderButton {INPUT} at (6,3) size 18x18
-    RenderButton {INPUT} at (32,4) size 16x16
-    RenderFlexibleBox {DIV} at (49,5) size 246x15
-      RenderSlider {INPUT} at (45,2) size 156x13
-        RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
-layer at (57,210) size 45x11
-  RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
-    RenderBlock (anonymous) at (9,0) size 26x11
-      RenderText {#text} at (0,0) size 26x11
-        text run at (0,0) width 26: "00:00"
-layer at (258,210) size 45x11
-  RenderFlexibleBox {DIV} at (201,2) size 45x11 [color=#FFFFFF]
-    RenderBlock (anonymous) at (6,0) size 32x11
-      RenderText {#text} at (0,0) size 32x11
-        text run at (0,0) width 32: "-00:07"
index 1904766..7ea089a 100644 (file)
@@ -21,7 +21,7 @@ layer at (8,257) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,264) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index 94db021..74d2be9 100644 (file)
@@ -21,7 +21,7 @@ layer at (8,265) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,272) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index 890e91e..9e00ffb 100644 (file)
@@ -25,7 +25,7 @@ layer at (18,257) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (67,264) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
@@ -45,7 +45,7 @@ layer at (8,497) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,504) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index 787d870..a29c685 100644 (file)
@@ -24,7 +24,7 @@ layer at (8,257) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,264) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
@@ -44,7 +44,7 @@ layer at (8,497) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,504) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
@@ -66,7 +66,7 @@ layer at (8,737) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,744) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index 72242e0..bfbb17f 100644 (file)
@@ -20,7 +20,7 @@ layer at (8,241) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,248) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index b9b79a7..52a51df 100644 (file)
@@ -17,7 +17,7 @@ layer at (57,228) size 240x37
     RenderFlexibleBox {DIV} at (73,1) size 130x34
       RenderSlider {INPUT} at (0,9) size 130x19
         RenderBlock {DIV} at (0,3) size 15x12
-    RenderButton {INPUT} at (206,8) size 22x21
+    RenderButton {INPUT} at (206,9) size 21x18
 layer at (57,310) size 240x180
   RenderVideo {VIDEO} at (45,298) size 240x180
 layer at (57,310) size 240x180
@@ -29,4 +29,4 @@ layer at (57,453) size 240x37
     RenderFlexibleBox {DIV} at (73,1) size 130x34
       RenderSlider {INPUT} at (0,9) size 130x19
         RenderBlock {DIV} at (0,3) size 15x12
-    RenderButton {INPUT} at (206,8) size 22x21
+    RenderButton {INPUT} at (206,9) size 21x18
index d7ab43a..662e3b3 100644 (file)
@@ -23,7 +23,7 @@ layer at (8,42) size 200x25
     RenderFlexibleBox {DIV} at (49,1) size 126x22
       RenderSlider {INPUT} at (0,5) size 126x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (177,5) size 15x14
+    RenderButton {INPUT} at (177,6) size 14x12
 layer at (8,85) size 320x25
   RenderBlock (relative positioned) {DIV} at (0,0) size 320x25
 layer at (8,85) size 320x25
@@ -33,7 +33,7 @@ layer at (8,85) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,92) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
@@ -55,7 +55,7 @@ layer at (8,203) size 320x25
     RenderFlexibleBox {DIV} at (49,5) size 246x15
       RenderSlider {INPUT} at (45,2) size 156x13
         RenderBlock {DIV} at (0,2) size 10x8
-    RenderButton {INPUT} at (297,5) size 15x14
+    RenderButton {INPUT} at (297,6) size 14x12
 layer at (57,210) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index 717e616..f2e2b88 100644 (file)
@@ -22,7 +22,7 @@ layer at (8,257) size 320x25
       RenderSlider {INPUT} at (45,2) size 126x13
         RenderBlock {DIV} at (0,2) size 10x8
     RenderButton {INPUT} at (297,4) size 16x16
-    RenderButton {INPUT} at (267,5) size 15x14
+    RenderButton {INPUT} at (267,6) size 14x12
 layer at (57,264) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index d96a02e..fae6ed4 100644 (file)
@@ -26,7 +26,7 @@ layer at (18,257) size 320x25
       RenderSlider {INPUT} at (45,2) size 126x13
         RenderBlock {DIV} at (0,2) size 10x8
     RenderButton {INPUT} at (297,4) size 16x16
-    RenderButton {INPUT} at (267,5) size 15x14
+    RenderButton {INPUT} at (267,6) size 14x12
 layer at (67,264) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
@@ -47,7 +47,7 @@ layer at (8,497) size 320x25
       RenderSlider {INPUT} at (45,2) size 126x13
         RenderBlock {DIV} at (0,2) size 10x8
     RenderButton {INPUT} at (297,4) size 16x16
-    RenderButton {INPUT} at (267,5) size 15x14
+    RenderButton {INPUT} at (267,6) size 14x12
 layer at (57,504) size 45x11
   RenderFlexibleBox {DIV} at (0,2) size 45x11 [color=#FFFFFF]
     RenderBlock (anonymous) at (9,0) size 26x11
index a6da37e..b06b1e2 100644 (file)
@@ -18,7 +18,7 @@ layer at (57,228) size 240x37
       RenderSlider {INPUT} at (0,9) size 86x19
         RenderBlock {DIV} at (0,3) size 15x12
     RenderButton {INPUT} at (206,6) size 24x24
-    RenderButton {INPUT} at (162,8) size 22x21
+    RenderButton {INPUT} at (162,9) size 21x18
 layer at (57,310) size 240x180
   RenderVideo {VIDEO} at (45,298) size 240x180
 layer at (57,310) size 240x180
@@ -31,4 +31,4 @@ layer at (57,453) size 240x37
       RenderSlider {INPUT} at (0,9) size 86x19
         RenderBlock {DIV} at (0,3) size 15x12
     RenderButton {INPUT} at (206,6) size 24x24
-    RenderButton {INPUT} at (162,8) size 22x21
+    RenderButton {INPUT} at (162,9) size 21x18
index 903113e..cc39347 100644 (file)
@@ -1,3 +1,79 @@
+2010-07-08  Eric Carlson  <eric.carlson@apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        Mac OS X media controls should have a way to adjust volume incrementally
+        https://bugs.webkit.org/show_bug.cgi?id=41718
+        <rdar://problem/5679472>
+
+        * css/CSSPrimitiveValueMappings.h:
+        (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Handle MediaVolumeSliderMuteButtonPart.
+
+        * css/CSSSelector.cpp: 
+        (WebCore::CSSSelector::pseudoId): Handle PseudoMediaControlsVolumeSliderMuteButton.
+        (WebCore::nameToPseudoTypeMap): Define mediaControlsVolumeSliderMuteButton.
+        (WebCore::CSSSelector::extractPseudoType): Handle PseudoMediaControlsVolumeSliderMuteButton.
+
+        * css/CSSSelector.h:
+        (WebCore::CSSSelector::): Define PseudoMediaControlsVolumeSliderMuteButton.
+
+        * css/CSSValueKeywords.in: Define media-volume-slider-mute-button.
+
+        * css/mediaControls.css: 
+        (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button): New.
+
+        * css/mediaControlsQuickTime.css:
+        (audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel): Add "overflow: visible" 
+        so volume slider pop-up will be visible.
+
+        (audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button): Make 
+        mute button 14x12 instead of 15x14 so it matches the size in the volume slider.
+
+        (audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container):
+        (audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider):
+        (audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button): 
+        New.
+
+        * platform/ThemeTypes.h: Define MediaVolumeSliderMuteButtonPart.
+
+        * rendering/MediaControlElements.cpp:
+        (WebCore::MediaControlInputElement::MediaControlInputElement): Handle MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.
+        (WebCore::MediaControlMuteButtonElement::MediaControlMuteButtonElement): Add ButtonLocation 
+        parameter both mute buttons can be created.
+        (WebCore::MediaControlMuteButtonElement::create): Ditto.
+
+        * rendering/MediaControlElements.h: Define MediaVolumeSliderMuteButton and ButtonLocation.
+
+        * rendering/RenderMedia.cpp: 
+        (WebCore::RenderMedia::styleDidChange): Update volume slider mute button.
+        (WebCore::RenderMedia::createMuteButton): Pass ButtonLocation parameter to MediaControlMuteButtonElement::create.
+        (WebCore::RenderMedia::createVolumeSliderMuteButton): New.
+        (WebCore::RenderMedia::updateControls): Deal with volume slider mute button.
+        (WebCore::RenderMedia::updateVolumeSliderContainer): Don't assume all ports want to position
+        the volume slider in the same place, call new volumeSliderOffsetFromMuteButton theme function.
+        (WebCore::RenderMedia::forwardEvent): Handle volume slider mute button.
+        * rendering/RenderMedia.h:
+
+        * rendering/RenderTheme.cpp: 
+        (WebCore::RenderTheme::paint): Handle MediaVolumeSliderMuteButtonPart.
+        (WebCore::RenderTheme::volumeSliderOffsetFromMuteButton): New, return location previously hard
+        coded in RenderMedia::updateVolumeSliderContainer.
+        * rendering/RenderTheme.h:
+
+        * rendering/RenderThemeMac.h:
+        * rendering/RenderThemeMac.mm:
+        (WebCore::RenderThemeMac::adjustMediaSliderThumbSize): Deal with the volume slider thumb.
+        (WebCore::RenderThemeMac::paintMediaVolumeSliderContainer): New, call the WKSI paint function 
+        for this button.
+        (WebCore::RenderThemeMac::paintMediaVolumeSliderTrack): Ditto.
+        (WebCore::RenderThemeMac::paintMediaVolumeSliderThumb): Ditto.
+        (WebCore::RenderThemeMac::shouldRenderMediaControlPart): Draw the volume slider parts when
+        using the new controller UI for a movie that has audio.
+        (WebCore::RenderThemeMac::volumeSliderOffsetFromMuteButton): New, position the volume slider 
+        directly above the mute button.
+
+        * rendering/style/RenderStyleConstants.h: Define MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON.
+
 2010-07-08  Antonio Gomes  <tonikitoo@webkit.org>
 
         Unreviewed complementary fix for r62815
index baa1ab8..b1d2d3d 100644 (file)
@@ -253,6 +253,9 @@ template<> inline CSSPrimitiveValue::CSSPrimitiveValue(ControlPart e)
         case MediaVolumeSliderPart:
             m_value.ident = CSSValueMediaVolumeSlider;
             break;
+        case MediaVolumeSliderMuteButtonPart:
+            m_value.ident = CSSValueMediaVolumeSliderMuteButton;
+            break;
         case MediaVolumeSliderThumbPart:
             m_value.ident = CSSValueMediaVolumeSliderthumb;
             break;
index ddf1737..47ead5f 100644 (file)
@@ -3,7 +3,7 @@
  *               1999 Waldo Bastian (bastian@kde.org)
  *               2001 Andreas Schlapbach (schlpbch@iam.unibe.ch)
  *               2001-2003 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2002, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2002, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
  * Copyright (C) 2008 David Smith (catfish.man@gmail.com)
  * Copyright (C) 2010 Google Inc. All rights reserved.
  *
@@ -140,6 +140,8 @@ PseudoId CSSSelector::pseudoId(PseudoType type)
         return MEDIA_CONTROLS_TIMELINE;
     case PseudoMediaControlsVolumeSlider:
         return MEDIA_CONTROLS_VOLUME_SLIDER;
+    case PseudoMediaControlsVolumeSliderMuteButton:
+        return MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON;
     case PseudoMediaControlsSeekBackButton:
         return MEDIA_CONTROLS_SEEK_BACK_BUTTON;
     case PseudoMediaControlsSeekForwardButton:
@@ -324,6 +326,7 @@ static HashMap<AtomicStringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap(
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsPlayButton, ("-webkit-media-controls-play-button"));
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsTimeline, ("-webkit-media-controls-timeline"));
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSlider, ("-webkit-media-controls-volume-slider"));
+    DEFINE_STATIC_LOCAL(AtomicString, mediaControlsVolumeSliderMuteButton, ("-webkit-media-controls-volume-slider-mute-button"));
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekBackButton, ("-webkit-media-controls-seek-back-button"));
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsSeekForwardButton, ("-webkit-media-controls-seek-forward-button"));
     DEFINE_STATIC_LOCAL(AtomicString, mediaControlsRewindButton, ("-webkit-media-controls-rewind-button"));
@@ -437,6 +440,7 @@ static HashMap<AtomicStringImpl*, CSSSelector::PseudoType>* nameToPseudoTypeMap(
         nameToPseudoType->set(mediaControlsTimeRemainingDisplay.impl(), CSSSelector::PseudoMediaControlsTimeRemainingDisplay);
         nameToPseudoType->set(mediaControlsTimeline.impl(), CSSSelector::PseudoMediaControlsTimeline);
         nameToPseudoType->set(mediaControlsVolumeSlider.impl(), CSSSelector::PseudoMediaControlsVolumeSlider);
+        nameToPseudoType->set(mediaControlsVolumeSliderMuteButton.impl(), CSSSelector::PseudoMediaControlsVolumeSliderMuteButton);
         nameToPseudoType->set(mediaControlsSeekBackButton.impl(), CSSSelector::PseudoMediaControlsSeekBackButton);
         nameToPseudoType->set(mediaControlsSeekForwardButton.impl(), CSSSelector::PseudoMediaControlsSeekForwardButton);
         nameToPseudoType->set(mediaControlsRewindButton.impl(), CSSSelector::PseudoMediaControlsRewindButton);
@@ -541,6 +545,7 @@ void CSSSelector::extractPseudoType() const
     case PseudoMediaControlsTimeRemainingDisplay:
     case PseudoMediaControlsTimeline:
     case PseudoMediaControlsVolumeSlider:
+    case PseudoMediaControlsVolumeSliderMuteButton:
     case PseudoMediaControlsSeekBackButton:
     case PseudoMediaControlsSeekForwardButton:
     case PseudoMediaControlsRewindButton:
index 250c09d..fc0dd7b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Copyright (C) 1999-2003 Lars Knoll (knoll@kde.org)
  *               1999 Waldo Bastian (bastian@kde.org)
- * Copyright (C) 2004, 2006, 2007, 2008 Apple Inc. All rights reserved.
+ * Copyright (C) 2004, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -177,6 +177,7 @@ namespace WebCore {
             PseudoMediaControlsPlayButton,
             PseudoMediaControlsTimelineContainer,
             PseudoMediaControlsVolumeSliderContainer,
+            PseudoMediaControlsVolumeSliderMuteButton,
             PseudoMediaControlsCurrentTimeDisplay,
             PseudoMediaControlsTimeRemainingDisplay,
             PseudoMediaControlsToggleClosedCaptions,
index 3439878..d302990 100644 (file)
@@ -583,6 +583,7 @@ media-sliderthumb
 media-volume-slider-container
 media-volume-slider
 media-volume-sliderthumb
+media-volume-slider-mute-button
 media-controls-background
 media-current-time-display
 media-time-remaining-display
index de2c2fe..6a0f14b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Apple Inc.  All rights reserved.
+ * Copyright (C) 2009, 2010 Apple Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -131,3 +131,8 @@ audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-medi
     width: 16px;
     height: 16px;
 }
+
+audio::-webkit-media-controls-volume-slider-mute-button, video::-webkit-media-controls-volume-slider-mute-button {
+    -webkit-appearance: media-volume-slider-mute-button;
+    display: none;
+}
index 965685d..d2c731f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2009 Apple Inc.  All rights reserved.
+ * Copyright (C) 2009, 2010 Apple Inc.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -32,6 +32,7 @@ audio {
 audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
     /* In mediaControls.css */
     -webkit-appearance: media-controls-background;
+    overflow: visible;
     height: 25px;
 }
 
@@ -41,10 +42,11 @@ video:-webkit-full-page-media::-webkit-media-controls-panel {
 
 audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
     -webkit-box-ordinal-group: 2; /* Before the fullscreen button */
-    width: 15px;
-    height: 14px;
+
+    width: 14px;
+    height: 12px;
     margin-left: 2px;
-    margin-right: 8px;
+    margin-right: 9px;
 }
 
 audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
@@ -185,3 +187,38 @@ audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-medi
     margin-right: 7px;
     -webkit-box-ordinal-group: 3; /* between mute and fullscreen */
 }
+
+audio::-webkit-media-controls-volume-slider-container, video::-webkit-media-controls-volume-slider-container {
+    -webkit-appearance: media-volume-slider-container;
+    position: absolute;
+
+    top: 0;
+    left: 0;
+
+    width: 22px;
+    height: 114px;
+}
+
+audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
+    -webkit-appearance: media-volume-slider;
+    display: inline;
+    position: absolute;
+
+    top: 7px;
+    left: 6px;
+
+    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;
+}
index 271bd83..d82aa73 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
+ * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -51,7 +51,7 @@ enum ControlPart {
     MediaFullscreenButtonPart, MediaMuteButtonPart, MediaPlayButtonPart, MediaSeekBackButtonPart, 
     MediaSeekForwardButtonPart, MediaRewindButtonPart, MediaReturnToRealtimeButtonPart, MediaToggleClosedCaptionsButtonPart,
     MediaSliderPart, MediaSliderThumbPart, MediaVolumeSliderContainerPart, MediaVolumeSliderPart, MediaVolumeSliderThumbPart,
-    MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
+    MediaVolumeSliderMuteButtonPart, MediaControlsBackgroundPart, MediaCurrentTimePart, MediaTimeRemainingPart,
     MenulistPart, MenulistButtonPart, MenulistTextPart, MenulistTextFieldPart, MeterPart, OuterSpinButtonPart, ProgressBarPart, ProgressBarValuePart,
     SliderHorizontalPart, SliderVerticalPart, SliderThumbHorizontalPart,
     SliderThumbVerticalPart, CaretPart, SearchFieldPart, SearchFieldDecorationPart,
index d5cb187..d4eb9a9 100644 (file)
@@ -378,6 +378,9 @@ MediaControlInputElement::MediaControlInputElement(HTMLMediaElement* mediaElemen
     case MEDIA_CONTROLS_VOLUME_SLIDER:
         m_displayType = MediaVolumeSlider;
         break;
+    case MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON:
+        m_displayType = MediaVolumeSliderMuteButton;
+        break;
     case MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON:
         m_displayType = MediaShowClosedCaptionsButton;
         break;
@@ -475,14 +478,14 @@ void MediaControlInputElement::setDisplayType(MediaControlElementType displayTyp
 
 // ----------------------------
 
-inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(HTMLMediaElement* mediaElement)
-    : MediaControlInputElement(mediaElement, MEDIA_CONTROLS_MUTE_BUTTON, "button")
+inline MediaControlMuteButtonElement::MediaControlMuteButtonElement(HTMLMediaElement* mediaElement, ButtonLocation location)
+    : MediaControlInputElement(mediaElement, location == Controller ? MEDIA_CONTROLS_MUTE_BUTTON : MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON, "button")
 {
 }
 
-PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(HTMLMediaElement* mediaElement)
+PassRefPtr<MediaControlMuteButtonElement> MediaControlMuteButtonElement::create(HTMLMediaElement* mediaElement, ButtonLocation location)
 {
-    return adoptRef(new MediaControlMuteButtonElement(mediaElement));
+    return adoptRef(new MediaControlMuteButtonElement(mediaElement, location));
 }
 
 void MediaControlMuteButtonElement::defaultEventHandler(Event* event)
index 68c06a3..ceb0255 100644 (file)
@@ -65,7 +65,8 @@ enum MediaControlElementType {
     MediaControlsPanel,
     MediaVolumeSliderContainer,
     MediaVolumeSlider,
-    MediaVolumeSliderThumb
+    MediaVolumeSliderThumb,
+    MediaVolumeSliderMuteButton,
 };
 
 HTMLMediaElement* toParentMediaElement(RenderObject*);
@@ -202,12 +203,13 @@ private:
 
 class MediaControlMuteButtonElement : public MediaControlInputElement {
 public:
-    static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*);
+    enum ButtonLocation { Controller, VolumeSlider };
+    static PassRefPtr<MediaControlMuteButtonElement> create(HTMLMediaElement*, ButtonLocation);
 
     virtual void defaultEventHandler(Event*);
 
 private:
-    MediaControlMuteButtonElement(HTMLMediaElement*);
+    MediaControlMuteButtonElement(HTMLMediaElement*, ButtonLocation);
 
     virtual void updateDisplayType();
 };
index ba60ed0..d7b4a99 100644 (file)
@@ -33,6 +33,7 @@
 #include "HTMLNames.h"
 #include "MediaControlElements.h"
 #include "MouseEvent.h"
+#include "Page.h"
 #include "RenderTheme.h"
 #include <wtf/CurrentTime.h>
 #include <wtf/MathExtras.h>
@@ -135,6 +136,8 @@ void RenderMedia::styleDidChange(StyleDifference diff, const RenderStyle* oldSty
             m_timeRemainingDisplay->updateStyle();
         if (m_volumeSliderContainer)
             m_volumeSliderContainer->updateStyle();
+        if (m_volumeSliderMuteButton)
+            m_volumeSliderMuteButton->updateStyle();
         if (m_volumeSlider)
             m_volumeSlider->updateStyle();
     }
@@ -184,7 +187,7 @@ void RenderMedia::createPanel()
 void RenderMedia::createMuteButton()
 {
     ASSERT(!m_muteButton);
-    m_muteButton = MediaControlMuteButtonElement::create(mediaElement());
+    m_muteButton = MediaControlMuteButtonElement::create(mediaElement(), MediaControlMuteButtonElement::Controller);
     m_muteButton->attachToParent(m_panel.get());
 }
 
@@ -269,6 +272,14 @@ void RenderMedia::createVolumeSlider()
     m_volumeSlider->attachToParent(m_volumeSliderContainer.get());
 }
 
+void RenderMedia::createVolumeSliderMuteButton()
+{
+    ASSERT(!m_volumeSliderMuteButton);
+    m_volumeSliderMuteButton = MediaControlMuteButtonElement::create(mediaElement(), MediaControlMuteButtonElement::VolumeSlider);
+    m_volumeSliderMuteButton->attachToParent(m_volumeSliderContainer.get());
+    
+}
+
 void RenderMedia::createCurrentTimeDisplay()
 {
     ASSERT(!m_currentTimeDisplay);
@@ -316,6 +327,7 @@ void RenderMedia::updateControls()
             m_fullscreenButton = 0;
             m_volumeSliderContainer = 0;
             m_volumeSlider = 0;
+            m_volumeSliderMuteButton = 0;
             m_controlsShadowRoot = 0;
             m_toggleClosedCaptionsButton = 0;
         }
@@ -345,8 +357,10 @@ void RenderMedia::updateControls()
             createFullscreenButton();
             createMuteButton();
             createVolumeSliderContainer();
-            if (m_volumeSliderContainer)
+            if (m_volumeSliderContainer) {
                 createVolumeSlider();
+                createVolumeSliderMuteButton();
+            }
             m_panel->attach();
         }
     }
@@ -396,6 +410,8 @@ void RenderMedia::updateControls()
         m_fullscreenButton->update();
     if (m_volumeSlider)
         m_volumeSlider->update();
+    if (m_volumeSliderMuteButton)
+        m_volumeSliderMuteButton->update();
 
     updateTimeDisplay();
     updateControlVisibility();
@@ -499,13 +515,13 @@ void RenderMedia::updateVolumeSliderContainer(bool visible)
 
         RefPtr<RenderStyle> s = m_volumeSliderContainer->styleForElement();
         int height = s->height().isPercent() ? 0 : s->height().value();
-        int x = m_muteButton->renderBox()->offsetLeft();
-        int y = m_muteButton->renderBox()->offsetTop() - height;
-        FloatPoint absPoint = m_muteButton->renderer()->localToAbsolute(FloatPoint(x, y), true, true);
-        if (absPoint.y() < 0)
-            y = m_muteButton->renderBox()->offsetTop() + m_muteButton->renderBox()->height();
-        m_volumeSliderContainer->setVisible(true);
+        int width = s->width().isPercent() ? 0 : s->width().value();
+        IntPoint offset = document()->page()->theme()->volumeSliderOffsetFromMuteButton(m_muteButton->renderer()->node(), IntSize(width, height));
+        int x = offset.x() + m_muteButton->renderBox()->offsetLeft();
+        int y = offset.y() + m_muteButton->renderBox()->offsetTop();
+
         m_volumeSliderContainer->setPosition(x, y);
+        m_volumeSliderContainer->setVisible(true);
         m_volumeSliderContainer->update();
         m_volumeSlider->update();
     } else if (!visible && m_volumeSliderContainer->isVisible()) {
@@ -519,8 +535,15 @@ void RenderMedia::forwardEvent(Event* event)
     if (event->isMouseEvent() && m_controlsShadowRoot) {
         MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
         IntPoint point(mouseEvent->absoluteLocation());
+
+        bool defaultHandled = false;
+        if (m_volumeSliderMuteButton && m_volumeSliderMuteButton->hitTest(point)) {
+            m_volumeSliderMuteButton->defaultEventHandler(event);
+            defaultHandled = event->defaultHandled();
+        }
+
         bool showVolumeSlider = false;
-        if (m_muteButton && m_muteButton->hitTest(point)) {
+        if (!defaultHandled && m_muteButton && m_muteButton->hitTest(point)) {
             m_muteButton->defaultEventHandler(event);
             if (event->type() != eventNames().mouseoutEvent)
                 showVolumeSlider = true;
index 32d6d65..4c980b5 100644 (file)
@@ -104,6 +104,7 @@ private:
     void createTimeline();
     void createVolumeSliderContainer();
     void createVolumeSlider();
+    void createVolumeSliderMuteButton();
     void createCurrentTimeDisplay();
     void createTimeRemainingDisplay();
     void createFullscreenButton();
@@ -131,6 +132,7 @@ private:
     RefPtr<MediaControlToggleClosedCaptionsButtonElement> m_toggleClosedCaptionsButton;
     RefPtr<MediaControlTimelineElement> m_timeline;
     RefPtr<MediaControlVolumeSliderElement> m_volumeSlider;
+    RefPtr<MediaControlMuteButtonElement> m_volumeSliderMuteButton;
     RefPtr<MediaControlFullscreenButtonElement> m_fullscreenButton;
     RefPtr<MediaControlTimelineContainerElement> m_timelineContainer;
     RefPtr<MediaControlVolumeSliderContainerElement> m_volumeSliderContainer;
index c2dd6c0..6d18e4f 100644 (file)
@@ -1,7 +1,7 @@
 /**
  * This file is part of the theme implementation for form controls in WebCore.
  *
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Computer, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -337,6 +337,8 @@ bool RenderTheme::paint(RenderObject* o, const PaintInfo& paintInfo, const IntRe
             if (o->parent()->isSlider())
                 return paintMediaSliderThumb(o, paintInfo, r);
             break;
+        case MediaVolumeSliderMuteButtonPart:
+            return paintMediaMuteButton(o, paintInfo, r);
         case MediaVolumeSliderContainerPart:
             return paintMediaVolumeSliderContainer(o, paintInfo, r);
         case MediaVolumeSliderPart:
@@ -534,6 +536,15 @@ String RenderTheme::formatMediaControlsRemainingTime(float currentTime, float du
     return formatMediaControlsTime(currentTime - duration);
 }
 
+IntPoint RenderTheme::volumeSliderOffsetFromMuteButton(Node* muteButton, const IntSize& size) const
+{
+    int y = -size.height();
+    FloatPoint absPoint = muteButton->renderer()->localToAbsolute(FloatPoint(muteButton->renderBox()->offsetLeft(), y), true, true);
+    if (absPoint.y() < 0)
+        y = muteButton->renderBox()->height();
+    return IntPoint(0, y);
+}
+
 #endif
 
 Color RenderTheme::activeSelectionBackgroundColor() const
index ff0ccca..f001aac 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the theme implementation for form controls in WebCore.
  *
- * Copyright (C) 2005, 2006, 2007, 2008 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Computer, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -191,6 +191,9 @@ public:
     virtual String formatMediaControlsTime(float time) const;
     virtual String formatMediaControlsCurrentTime(float currentTime, float duration) const;
     virtual String formatMediaControlsRemainingTime(float currentTime, float duration) const;
+    
+    // Returns the media volume slider container's offset from the mute button.
+    virtual IntPoint volumeSliderOffsetFromMuteButton(Node*, const IntSize&) const;
 #endif
 
 #if ENABLE(METER_TAG)
index 44d9189..95661b8 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * This file is part of the theme implementation for form controls in WebCore.
  *
- * Copyright (C) 2005 Apple Computer, Inc.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Computer, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -156,12 +156,16 @@ protected:
     virtual bool paintMediaControlsBackground(RenderObject*, const PaintInfo&, const IntRect&);
     virtual bool paintMediaCurrentTime(RenderObject*, const PaintInfo&, const IntRect&);
     virtual bool paintMediaTimeRemaining(RenderObject*, const PaintInfo&, const IntRect&);
+    virtual bool paintMediaVolumeSliderContainer(RenderObject*, const PaintInfo&, const IntRect&);
+    virtual bool paintMediaVolumeSliderTrack(RenderObject*, const PaintInfo&, const IntRect&);
+    virtual bool paintMediaVolumeSliderThumb(RenderObject*, const PaintInfo&, const IntRect&);
 
     // Media controls
     virtual String extraMediaControlsStyleSheet();
 
     virtual bool shouldRenderMediaControlPart(ControlPart, Element*);
     virtual void adjustMediaSliderThumbSize(RenderObject*) const;
+    virtual IntPoint volumeSliderOffsetFromMuteButton(Node*, const IntSize&) const;
 #endif
 
 private:
index 993bc72..bbf6906 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -1686,14 +1686,16 @@ void RenderThemeMac::adjustSliderThumbSize(RenderObject* o) const
 
 void RenderThemeMac::adjustMediaSliderThumbSize(RenderObject* o) const
 {
-    if (o->style()->appearance() == MediaSliderThumbPart) {
+    ControlPart part = o->style()->appearance();
+
+    if (part == MediaSliderThumbPart || part == MediaVolumeSliderThumbPart) {
         int width = mediaSliderThumbWidth;
         int height = mediaSliderThumbHeight;
         
         if (mediaControllerTheme() == MediaControllerThemeQuickTime) {
             CGSize  size;
             
-            wkMeasureMediaUIPart(MediaSliderThumb, MediaControllerThemeQuickTime, NULL, &size);
+            wkMeasureMediaUIPart(part == MediaSliderThumbPart ? MediaSliderThumb : MediaVolumeSliderThumb, MediaControllerThemeQuickTime, NULL, &size);
             width = size.width;
             height = size.height;
         }
@@ -1913,13 +1915,46 @@ bool RenderThemeMac::paintMediaTimeRemaining(RenderObject* o, const PaintInfo& p
     return false;
 }
 
+bool RenderThemeMac::paintMediaVolumeSliderContainer(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+    Node* node = o->node();
+    if (!node)
+        return false;
+
+    LocalCurrentGraphicsContext localContext(paintInfo.context);
+    wkDrawMediaUIPart(MediaVolumeSliderContainer, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+    return false;
+}
+
+bool RenderThemeMac::paintMediaVolumeSliderTrack(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+    Node* node = o->node();
+    if (!node)
+        return false;
+
+    LocalCurrentGraphicsContext localContext(paintInfo.context);
+    wkDrawMediaUIPart(MediaVolumeSlider, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+    return false;
+}
+    
+bool RenderThemeMac::paintMediaVolumeSliderThumb(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
+{
+    Node* node = o->node();
+    if (!node)
+        return false;
+
+    LocalCurrentGraphicsContext localContext(paintInfo.context);
+    wkDrawMediaUIPart(MediaVolumeSliderThumb, mediaControllerTheme(), paintInfo.context->platformContext(), r, getMediaUIPartStateFlags(node));
+    return false;
+}
+    
 String RenderThemeMac::extraMediaControlsStyleSheet()
 {
 #if PLATFORM(MAC)
     if (mediaControllerTheme() == MediaControllerThemeQuickTime)
         return String(mediaControlsQuickTimeUserAgentStyleSheet, sizeof(mediaControlsQuickTimeUserAgentStyleSheet));
-    else
-        return String();
+
+    return String();
 #else
     ASSERT_NOT_REACHED();
     return String();
@@ -1928,16 +1963,38 @@ String RenderThemeMac::extraMediaControlsStyleSheet()
 
 bool RenderThemeMac::shouldRenderMediaControlPart(ControlPart part, Element* element)
 {
-    if (part == MediaToggleClosedCaptionsButtonPart) {
-
+    switch (part) {
+    case MediaVolumeSliderContainerPart:
+    case MediaVolumeSliderPart:
+    case MediaVolumeSliderMuteButtonPart:
+    case MediaVolumeSliderThumbPart: {
+        HTMLMediaElement* mediaElement = static_cast<HTMLMediaElement*>(element);
+        return mediaControllerTheme() == MediaControllerThemeQuickTime && mediaElement->hasAudio();
+    }
+    case MediaToggleClosedCaptionsButtonPart:
         // We rely on QTKit to render captions so don't enable the button unless it will be able to do so.
         if (!element->hasTagName(videoTag))
             return false;
+    default:
+        break;
     }
 
     return RenderTheme::shouldRenderMediaControlPart(part, element);
 }
 
+IntPoint RenderThemeMac::volumeSliderOffsetFromMuteButton(Node* muteButton, const IntSize& size) const
+{
+    static const int xOffset = -4;
+    static const int yOffset = 5;
+
+    float zoomLevel = muteButton->renderer()->style()->effectiveZoom();
+    int y = yOffset * zoomLevel + muteButton->renderBox()->offsetHeight() - size.height();
+    FloatPoint absPoint = muteButton->renderer()->localToAbsolute(FloatPoint(muteButton->renderBox()->offsetLeft(), y), true, true);
+    if (absPoint.y() < 0)
+        y = muteButton->renderBox()->height();
+    return IntPoint(xOffset * zoomLevel, y);
+}
+
 #endif // ENABLE(VIDEO)
 
 NSPopUpButtonCell* RenderThemeMac::popupButton() const
index dd82433..70b128b 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
  *           (C) 2000 Antti Koivisto (koivisto@kde.org)
  *           (C) 2000 Dirk Mueller (mueller@kde.org)
- * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
+ * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
  * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/)
  *
@@ -70,7 +70,8 @@ enum PseudoId {
     NOPSEUDO, FIRST_LINE, FIRST_LETTER, BEFORE, AFTER, SELECTION, FIRST_LINE_INHERITED, SCROLLBAR, FILE_UPLOAD_BUTTON, INPUT_PLACEHOLDER,
     SLIDER_THUMB, SEARCH_CANCEL_BUTTON, SEARCH_DECORATION, SEARCH_RESULTS_DECORATION, SEARCH_RESULTS_BUTTON, MEDIA_CONTROLS_PANEL,
     MEDIA_CONTROLS_PLAY_BUTTON, MEDIA_CONTROLS_MUTE_BUTTON, MEDIA_CONTROLS_TIMELINE, MEDIA_CONTROLS_TIMELINE_CONTAINER,
-    MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY, 
+    MEDIA_CONTROLS_VOLUME_SLIDER, MEDIA_CONTROLS_VOLUME_SLIDER_CONTAINER, MEDIA_CONTROLS_VOLUME_SLIDER_MUTE_BUTTON, 
+    MEDIA_CONTROLS_CURRENT_TIME_DISPLAY, MEDIA_CONTROLS_TIME_REMAINING_DISPLAY, 
     MEDIA_CONTROLS_SEEK_BACK_BUTTON, MEDIA_CONTROLS_SEEK_FORWARD_BUTTON, MEDIA_CONTROLS_FULLSCREEN_BUTTON, MEDIA_CONTROLS_REWIND_BUTTON, 
     MEDIA_CONTROLS_RETURN_TO_REALTIME_BUTTON, MEDIA_CONTROLS_TOGGLE_CLOSED_CAPTIONS_BUTTON,
     MEDIA_CONTROLS_STATUS_DISPLAY, SCROLLBAR_THUMB, SCROLLBAR_BUTTON, SCROLLBAR_TRACK, SCROLLBAR_TRACK_PIECE, SCROLLBAR_CORNER, RESIZER,
index f791ac2..c912775 100644 (file)
@@ -1,3 +1,13 @@
+2010-07-08  Eric Carlson  <eric.carlson@apple.com>
+
+        Reviewed by Dan Bernstein.
+
+        Update WebKitSystemInterface.
+
+        * libWebKitSystemInterfaceLeopard.a:
+        * libWebKitSystemInterfaceSnowLeopard.a:
+        * libWebKitSystemInterfaceTiger.a:
+
 2010-07-07  Dumitru Daniliuc  <dumi@chromium.org>
 
         Reviewed by Adam Roben.
index 3b4061c..cc4ae89 100644 (file)
Binary files a/WebKitLibraries/libWebKitSystemInterfaceLeopard.a and b/WebKitLibraries/libWebKitSystemInterfaceLeopard.a differ
index 5d3106c..d3d715a 100644 (file)
Binary files a/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a and b/WebKitLibraries/libWebKitSystemInterfaceSnowLeopard.a differ
index a3743e4..305bb6c 100644 (file)
Binary files a/WebKitLibraries/libWebKitSystemInterfaceTiger.a and b/WebKitLibraries/libWebKitSystemInterfaceTiger.a differ