Changeset 143463 in webkit


Ignore:
Timestamp:
Feb 20, 2013 7:30:15 AM (11 years ago)
Author:
commit-queue@webkit.org
Message:

[Gtk] HTML5 Media controls require a design refresh
https://bugs.webkit.org/show_bug.cgi?id=83869

Source/WebCore:

Created new controls that depend less on Gtk and more in CSS.

Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> and Martin Robinson <mrobinson@igalia.com> on 2013-02-20
Reviewed by Philippe Normand.

  • GNUmakefile.list.am: Added compilation for MediaControlsGtk.cpp

and MediaControlsGtk.h

  • css/mediaControlsGtk.css: Taken from Chromium and adapted for

WebKitGtk+.

  • html/shadow/MediaControlsGtk.cpp: Added.

(WebCore): Added MediaControlsGtk class.
(WebCore::MediaControlsGtk::MediaControlsGtk): Class constructor
(WebCore::MediaControls::create): Creates the Gtk+ controls
components.
(WebCore::MediaControlsGtk::createControls): Creates the Gtk+
controls components.
(WebCore::MediaControlsGtk::initializeControls): Initializes all
media controls.
(WebCore::MediaControlsGtk::setMediaController): Sets the media
controller.
(WebCore::MediaControlsGtk::reset): Resets the controllers.
(WebCore::MediaControlsGtk::playbackStarted): Invoked when the
playback starts
(WebCore::MediaControlsGtk::updateCurrentTimeDisplay): Updates the
controls when the current time shall be updated.
(WebCore::MediaControlsGtk::changedMute): Updates the controls
then the mute changes.
(WebCore::MediaControlsGtk::showVolumeSlider): Invoked when the
volume slider is meant to be shown.
(WebCore::MediaControlsGtk::createTextTrackDisplay): Creates the
track display. Though it is not used by us, it needs to be created
to prevent immediate crashes when loading a video.

  • html/shadow/MediaControlsGtk.h: Added.

(WebCore): Added the MediaControlsGtk class.
(MediaControlsGtk): Added the MediaControlsGtk class.

  • platform/gtk/RenderThemeGtk.cpp:

(WebCore): Added getStockSymbolicIconForWidgetType function
signature to load symbolic icons.
(WebCore::supportsFocus): Added media control widgets to support
focus so that the focus ring is not painted by WebCore.
(WebCore::RenderThemeGtk::paintMediaButton): Added the symbolic
icon support. It supports now normal and symbolic icons at the
same time.
(WebCore::RenderThemeGtk::paintMediaFullscreenButton): Added the
symbolic icon support.
(WebCore::RenderThemeGtk::paintMediaMuteButton): Added the
symbolic icon support.
(WebCore::RenderThemeGtk::paintMediaPlayButton): Added the
symbolic icon support.
(WebCore::RenderThemeGtk::paintMediaSeekBackButton): Added the
symbolic icon support.
(WebCore::RenderThemeGtk::paintMediaSeekForwardButton): Added the
symbolic icon support.
(WebCore::borderRadiiFromStyle): Created the radii info from the
style.
(WebCore::RenderThemeGtk::paintMediaSliderTrack): Removed the
background and the Gtk widget support as it is painted with
CSS. Also paint the time ranges with the CSS style.
(WebCore::RenderThemeGtk::paintMediaSliderThumb): Paint slider
thumb according to the CSS parameters.
(WebCore::RenderThemeGtk::paintMediaVolumeSliderContainer):
Delegates in the CSS.
(WebCore::RenderThemeGtk::paintMediaVolumeSliderTrack): Fills the
track up to the volume level and delegates the border in the CSS.
(WebCore::RenderThemeGtk::paintMediaVolumeSliderThumb): Delegates
in the paintMediaSliderThumb method so the thumb is painted the
same with the CSS parameters.
(WebCore::RenderThemeGtk::paintMediaCurrentTime): Removed the Gtk
background to use only CSS.

  • platform/gtk/RenderThemeGtk.h:

(RenderThemeGtk): Changed paintMediaButton to support the symbolic
and normal icons at the same time.

  • platform/gtk/RenderThemeGtk2.cpp:

(WebCore::RenderThemeGtk::adjustSliderThumbSize): Not adjusting
the thumb size and letting the CSS decide that for media slider.
(WebCore::getStockSymbolicIconForWidgetType): Implemented as a
fallback to the normal stock icons.

  • platform/gtk/RenderThemeGtk3.cpp:

(WebCore):
(WebCore::RenderThemeGtk::adjustSliderThumbSize): Not adjusting
the thumb size and letting the CSS decide that for the media
sliders.
(WebCore::getStockSymbolicIconForWidgetType): Added this function
to load symbolic icons. It falls back to normal icons if the
symbolic is not found.

Tools:

Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-02-20
Reviewed by Philippe Normand.

  • DumpRenderTree/gtk/DumpRenderTree.cpp:

(initializeGtkFontSettings): Added gnome as default icon theme for
the DRT.

  • WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:

(WTR::initializeGtkSettings): Added gnome as default icon theme for
the WTR.

  • gtk/jhbuild.modules: Added gnome-icon-theme-symbolic as external

dependency.

LayoutTests:

Tests flagged and rebaselines.

Patch by Xabier Rodriguez Calvar <calvaris@igalia.com> on 2013-02-20
Reviewed by Philippe Normand.

  • platform/gtk/TestExpectations: Tests flagged and removed some

other flags.

  • platform/gtk/accessibility/media-element-expected.txt: Rebaseline
  • platform/gtk/fast/hidpi/video-controls-in-hidpi-expected.txt: Rebaseline
  • platform/gtk/fast/layers/video-layer-expected.png: Rebaseline
  • platform/gtk/fast/layers/video-layer-expected.txt: Rebaseline
  • platform/gtk/http/tests/media/video-buffered-range-contains-currentTime-expected.png: Rebaseline
  • platform/gtk/media/audio-repaint-expected.png: Rebaseline
  • platform/gtk/media/audio-repaint-expected.txt: Rebaseline
  • platform/gtk/media/controls-styling-strict-expected.png: Rebaseline
  • platform/gtk/media/video-controls-rendering-expected.png: Rebaseline
  • platform/gtk/media/video-empty-source-expected.txt: Rebaseline
  • platform/gtk/media/video-no-audio-expected.txt: Rebaseline
  • platform/gtk/media/video-volume-slider-expected.txt: Rebaseline
  • platform/gtk/media/video-zoom-controls-expected.txt: Rebaseline
  • platform/gtk/media/video-zoom-expected.png: Rebaseline
Location:
trunk
Files:
2 added
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r143458 r143463  
     12013-02-20  Xabier Rodriguez Calvar  <calvaris@igalia.com>
     2
     3        [Gtk] HTML5 Media controls require a design refresh
     4        https://bugs.webkit.org/show_bug.cgi?id=83869
     5
     6        Tests flagged and rebaselines.
     7
     8        Reviewed by Philippe Normand.
     9
     10        * platform/gtk/TestExpectations: Tests flagged and removed some
     11        other flags.
     12        * platform/gtk/accessibility/media-element-expected.txt: Rebaseline
     13        * platform/gtk/fast/hidpi/video-controls-in-hidpi-expected.txt: Rebaseline
     14        * platform/gtk/fast/layers/video-layer-expected.png: Rebaseline
     15        * platform/gtk/fast/layers/video-layer-expected.txt: Rebaseline
     16        * platform/gtk/http/tests/media/video-buffered-range-contains-currentTime-expected.png: Rebaseline
     17        * platform/gtk/media/audio-repaint-expected.png: Rebaseline
     18        * platform/gtk/media/audio-repaint-expected.txt: Rebaseline
     19        * platform/gtk/media/controls-styling-strict-expected.png: Rebaseline
     20        * platform/gtk/media/video-controls-rendering-expected.png: Rebaseline
     21        * platform/gtk/media/video-empty-source-expected.txt: Rebaseline
     22        * platform/gtk/media/video-no-audio-expected.txt: Rebaseline
     23        * platform/gtk/media/video-volume-slider-expected.txt: Rebaseline
     24        * platform/gtk/media/video-zoom-controls-expected.txt: Rebaseline
     25        * platform/gtk/media/video-zoom-expected.png: Rebaseline
     26
    1272013-02-20  Dominik Röttsches  <dominik.rottsches@intel.com>
    228
  • trunk/LayoutTests/platform/gtk/TestExpectations

    r143445 r143463  
    476476webkit.org/b/103771 media/track/track-in-band-cues-added-once.html [ Timeout ]
    477477webkit.org/b/103771 media/track/track-in-band-style.html [ Timeout ]
     478
     479#Incorrect rebaseline
     480webkit.org/b/107818 media/controls-styling.html [ Failure ]
     481
     482# New chromium based controls
     483webkit.org/b/107825 fullscreen/video-controls-drag.html [ Failure ]
     484webkit.org/b/107825 media/audio-delete-while-step-button-clicked.html [ Failure ]
     485webkit.org/b/107825 media/media-volume-slider-rendered-below.html [ Failure ]
     486webkit.org/b/107825 media/nodesFromRect-shadowContent.html [ Failure ]
     487webkit.org/b/107825 media/video-zoom-controls.html [ Failure ]
     488webkit.org/b/107825 media/video-controls-fullscreen-volume.html [ Failure ]
     489webkit.org/b/107825 media/media-controls-clone.html [ Failure ]
    478490
    479491#////////////////////////////////////////////////////////////////////////////////////////
     
    14501462webkit.org/b/109469 fast/events/mouse-cursor-image-set.html [ Timeout ]
    14511463
    1452 webkit.org/b/83869 fast/hidpi/video-controls-in-hidpi.html [ Failure ]
    1453 webkit.org/b/83869 fast/layers/video-layer.html [ Failure ]
    1454 webkit.org/b/83869 media/audio-repaint.html [ Failure ]
    1455 webkit.org/b/83869 media/controls-styling.html [ Failure ]
    1456 webkit.org/b/83869 media/media-controls-clone.html [ Failure ]
    1457 webkit.org/b/83869 media/video-empty-source.html [ Failure ]
    1458 webkit.org/b/83869 media/video-no-audio.html [ Failure ]
    1459 webkit.org/b/83869 media/video-volume-slider.html [ Failure ]
    1460 webkit.org/b/83869 media/video-zoom-controls.html [ Failure ]
    1461 
    14621464webkit.org/b/110089 fast/exclusions/shape-inside/shape-inside-circle.html [ ImageOnlyFailure ]
    14631465webkit.org/b/110089 fast/exclusions/shape-inside/shape-inside-ellipse.html [ ImageOnlyFailure ]
  • trunk/LayoutTests/platform/gtk/accessibility/media-element-expected.txt

    r131708 r143463  
    99
    1010
    11         description: AXDescription: play
    12         role: AXRole: AXButton
     11        description: AXDescription: video element controller
     12        role: AXRole: AXToolbar
    1313
    1414
    15         description: AXDescription:
    16         role: AXRole: AXSlider
     15            description: AXDescription: play
     16            role: AXRole: AXButton
    1717
    1818
    19         description: AXDescription: fast reverse
    20         role: AXRole: AXButton
     19            description: AXDescription:
     20            role: AXRole: AXSlider
    2121
    2222
    23         description: AXDescription: fast forward
    24         role: AXRole: AXButton
     23            description: AXDescription: enter fullscreen
     24            role: AXRole: AXButton
    2525
    2626
    27         description: AXDescription: enter fullscreen
    28         role: AXRole: AXButton
    29 
    30 
    31         description: AXDescription: mute
    32         role: AXRole: AXButton
     27            description: AXDescription: mute
     28            role: AXRole: AXButton
    3329
    3430
  • trunk/LayoutTests/platform/gtk/fast/hidpi/video-controls-in-hidpi-expected.txt

    r142947 r143463  
    1313layer at (8,26) size 300x150
    1414  RenderFlexibleBox {DIV} at (0,0) size 300x150
    15 layer at (8,26) size 300x150 scrollHeight 160
    16   RenderFlexibleBox {DIV} at (0,0) size 300x150
    17     RenderButton {INPUT} at (0,130) size 20x20
    18     RenderFlexibleBox {DIV} at (20,130) size 240x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    19       RenderBlock (anonymous) at (1,0) size 65x30
    20         RenderFlexibleBox {DIV} at (0,0) size 65x30
    21           RenderBlock (anonymous) at (5,5) size 55x20
    22             RenderText {#text} at (0,0) size 55x12
    23               text run at (0,0) width 55: "00:00 / 00:00"
    24       RenderSlider {INPUT} at (66,0) size 173x20
    25         RenderFlexibleBox {DIV} at (2,0) size 169x20
    26           RenderBlock {DIV} at (0,4) size 169x12
    27             RenderBlock {DIV} at (0,0) size 12x12
    28     RenderButton {INPUT} at (260,130) size 20x20
    29     RenderButton {INPUT} at (280,130) size 20x20
    30     RenderBlock {DIV} at (300,150) size 0x0
     15    RenderBlock {DIV} at (0,110) size 300x40
     16layer at (13,141) size 290x30
     17  RenderFlexibleBox {DIV} at (5,5) size 290x30 [bgcolor=#141414CC]
     18    RenderButton {INPUT} at (9,0) size 30x30
     19    RenderSlider {INPUT} at (49,11) size 179x8 [color=#E6E6E659]
     20      RenderFlexibleBox {DIV} at (0,0) size 179x8 [border: (1px solid #E6E6E659)]
     21        RenderBlock {DIV} at (1,-2) size 191x12
     22          RenderBlock {DIV} at (-7,0) size 12x12 [color=#FFFFFF]
     23    RenderFlexibleBox {DIV} at (243,0) size 32x30 [color=#FFFFFF]
     24      RenderBlock (anonymous) at (0,0) size 32x30
     25        RenderText {#text} at (0,7) size 32x15
     26          text run at (0,7) width 32: "00:00"
  • trunk/LayoutTests/platform/gtk/fast/layers/video-layer-expected.txt

    r142947 r143463  
    1818layer at (59,111) size 300x150
    1919  RenderFlexibleBox {DIV} at (1,1) size 300x150
    20 layer at (59,111) size 300x150 scrollHeight 160
    21   RenderFlexibleBox {DIV} at (0,0) size 300x150
    22     RenderButton {INPUT} at (0,130) size 20x20
    23     RenderFlexibleBox {DIV} at (20,130) size 240x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    24       RenderBlock (anonymous) at (1,0) size 65x30
    25         RenderFlexibleBox {DIV} at (0,0) size 65x30
    26           RenderBlock (anonymous) at (5,5) size 55x20
    27             RenderText {#text} at (0,0) size 55x12
    28               text run at (0,0) width 55: "00:00 / 00:00"
    29       RenderSlider {INPUT} at (66,0) size 173x20
    30         RenderFlexibleBox {DIV} at (2,0) size 169x20
    31           RenderBlock {DIV} at (0,4) size 169x12
    32             RenderBlock {DIV} at (0,0) size 12x12
    33     RenderButton {INPUT} at (260,130) size 20x20
    34     RenderButton {INPUT} at (280,130) size 20x20
    35     RenderBlock {DIV} at (300,150) size 0x0
     20    RenderBlock {DIV} at (0,110) size 300x40
     21layer at (64,226) size 290x30
     22  RenderFlexibleBox {DIV} at (5,5) size 290x30 [bgcolor=#141414CC]
     23    RenderButton {INPUT} at (9,0) size 30x30
     24    RenderSlider {INPUT} at (49,11) size 179x8 [color=#E6E6E659]
     25      RenderFlexibleBox {DIV} at (0,0) size 179x8 [border: (1px solid #E6E6E659)]
     26        RenderBlock {DIV} at (1,-2) size 191x12
     27          RenderBlock {DIV} at (-7,0) size 12x12 [color=#FFFFFF]
     28    RenderFlexibleBox {DIV} at (243,0) size 32x30 [color=#FFFFFF]
     29      RenderBlock (anonymous) at (0,0) size 32x30
     30        RenderText {#text} at (0,7) size 32x15
     31          text run at (0,7) width 32: "00:00"
  • trunk/LayoutTests/platform/gtk/media/audio-repaint-expected.txt

    r142947 r143463  
    88          text run at (0,0) width 609: "This tests that in a html document with inline audio content, the media element repaints correctly "
    99          text run at (609,0) width 90: "while playing."
    10       RenderBlock (anonymous) at (0,34) size 784x139
    11         RenderMedia {AUDIO} at (0,0) size 300x20
    12         RenderBR {BR} at (300,20) size 0x0
    13         RenderBR {BR} at (300,65) size 0x0
    14         RenderBR {BR} at (300,139) size 0x0
    15 layer at (8,62) size 300x20
    16   RenderMedia {AUDIO} at (0,20) size 300x20
    17 layer at (8,62) size 300x20
    18   RenderFlexibleBox {DIV} at (0,0) size 300x20
    19 layer at (8,62) size 300x20 scrollHeight 30
    20   RenderFlexibleBox {DIV} at (0,0) size 300x20
    21     RenderButton {INPUT} at (0,0) size 20x20
    22     RenderFlexibleBox {DIV} at (20,0) size 220x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    23       RenderBlock (anonymous) at (1,0) size 65x30
    24         RenderFlexibleBox {DIV} at (0,0) size 65x30
    25           RenderBlock (anonymous) at (5,5) size 55x20
    26             RenderText {#text} at (0,0) size 55x12
    27               text run at (0,0) width 55: "00:00 / 00:01"
    28       RenderSlider {INPUT} at (66,0) size 153x20
    29         RenderFlexibleBox {DIV} at (2,0) size 149x20
    30           RenderBlock {DIV} at (0,4) size 149x12
    31             RenderBlock {DIV} at (68,0) size 12x12
    32     RenderButton {INPUT} at (240,0) size 20x20
    33     RenderButton {INPUT} at (260,0) size 20x20
    34     RenderBlock {DIV} at (280,0) size 20x20
    35 layer at (288,62) size 20x20
    36   RenderButton zI: 2 {INPUT} at (0,0) size 20x20
    37 layer at (8,42) size 300x20
    38   RenderFlexibleBox {DIV} at (0,0) size 300x20
    39 layer at (8,42) size 300x20 scrollHeight 30
    40   RenderFlexibleBox {DIV} at (0,0) size 300x20
    41     RenderButton {INPUT} at (0,0) size 20x20
    42     RenderFlexibleBox {DIV} at (20,0) size 220x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    43       RenderBlock (anonymous) at (1,0) size 65x30
    44         RenderFlexibleBox {DIV} at (0,0) size 65x30
    45           RenderBlock (anonymous) at (5,5) size 55x20
    46             RenderText {#text} at (0,0) size 55x12
    47               text run at (0,0) width 55: "00:00 / 00:01"
    48       RenderSlider {INPUT} at (66,0) size 153x20
    49         RenderFlexibleBox {DIV} at (2,0) size 149x20
    50           RenderBlock {DIV} at (0,4) size 149x12
    51             RenderBlock {DIV} at (68,0) size 12x12
    52     RenderButton {INPUT} at (240,0) size 20x20
    53     RenderButton {INPUT} at (260,0) size 20x20
    54     RenderBlock {DIV} at (280,0) size 20x20
    55 layer at (288,42) size 20x20
    56   RenderButton zI: 2 {INPUT} at (0,0) size 20x20
    57 layer at (8,134) size 300x20
    58   RenderMedia {AUDIO} at (0,92) size 300x20
    59 layer at (8,134) size 300x20
    60   RenderFlexibleBox {DIV} at (0,0) size 300x20
    61 layer at (8,134) size 300x20 scrollHeight 30
    62   RenderFlexibleBox {DIV} at (0,0) size 300x20
    63     RenderButton {INPUT} at (0,0) size 20x20
    64     RenderFlexibleBox {DIV} at (20,0) size 220x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    65       RenderBlock (anonymous) at (1,0) size 65x30
    66         RenderFlexibleBox {DIV} at (0,0) size 65x30
    67           RenderBlock (anonymous) at (5,5) size 55x20
    68             RenderText {#text} at (0,0) size 55x12
    69               text run at (0,0) width 55: "00:00 / 00:01"
    70       RenderSlider {INPUT} at (66,0) size 153x20
    71         RenderFlexibleBox {DIV} at (2,0) size 149x20
    72           RenderBlock {DIV} at (0,4) size 149x12
    73             RenderBlock {DIV} at (68,0) size 12x12
    74     RenderButton {INPUT} at (240,0) size 20x20
    75     RenderButton {INPUT} at (260,0) size 20x20
    76     RenderBlock {DIV} at (280,0) size 20x20
     10      RenderBlock (anonymous) at (0,34) size 784x169
     11        RenderMedia {AUDIO} at (0,0) size 300x30
     12        RenderBR {BR} at (300,30) size 0x0
     13        RenderBR {BR} at (300,85) size 0x0
     14        RenderBR {BR} at (300,169) size 0x0
     15layer at (8,72) size 300x30
     16  RenderMedia {AUDIO} at (0,30) size 300x30
     17layer at (8,72) size 300x30
     18  RenderFlexibleBox {DIV} at (0,0) size 300x30
     19    RenderBlock {DIV} at (0,0) size 300x30
     20layer at (8,72) size 300x30
     21  RenderFlexibleBox {DIV} at (0,0) size 300x30 [bgcolor=#141414CC]
     22    RenderButton {INPUT} at (9,0) size 30x30
     23    RenderSlider {INPUT} at (49,11) size 115x8 [color=#E6E6E659]
     24      RenderFlexibleBox {DIV} at (0,0) size 115x8 [border: (1px solid #E6E6E659)]
     25        RenderBlock {DIV} at (1,-2) size 127x12
     26          RenderBlock {DIV} at (50,0) size 12x12 [color=#FFFFFF]
     27    RenderFlexibleBox {DIV} at (179,0) size 74x30 [color=#FFFFFF]
     28      RenderBlock (anonymous) at (0,0) size 74x30
     29        RenderText {#text} at (0,7) size 74x15
     30          text run at (0,7) width 74: "00:00 / 00:01"
     31    RenderButton {INPUT} at (261,0) size 30x30
     32layer at (8,42) size 300x30
     33  RenderFlexibleBox {DIV} at (0,0) size 300x30
     34    RenderBlock {DIV} at (0,0) size 300x30
     35layer at (8,42) size 300x30
     36  RenderFlexibleBox {DIV} at (0,0) size 300x30 [bgcolor=#141414CC]
     37    RenderButton {INPUT} at (9,0) size 30x30
     38    RenderSlider {INPUT} at (49,11) size 115x8 [color=#E6E6E659]
     39      RenderFlexibleBox {DIV} at (0,0) size 115x8 [border: (1px solid #E6E6E659)]
     40        RenderBlock {DIV} at (1,-2) size 127x12
     41          RenderBlock {DIV} at (50,0) size 12x12 [color=#FFFFFF]
     42    RenderFlexibleBox {DIV} at (179,0) size 74x30 [color=#FFFFFF]
     43      RenderBlock (anonymous) at (0,0) size 74x30
     44        RenderText {#text} at (0,7) size 74x15
     45          text run at (0,7) width 74: "00:00 / 00:01"
     46    RenderButton {INPUT} at (261,0) size 30x30
     47layer at (8,154) size 300x30
     48  RenderMedia {AUDIO} at (0,112) size 300x30
     49layer at (8,154) size 300x30
     50  RenderFlexibleBox {DIV} at (0,0) size 300x30
     51    RenderBlock {DIV} at (0,0) size 300x30
     52layer at (8,154) size 300x30
     53  RenderFlexibleBox {DIV} at (0,0) size 300x30 [bgcolor=#141414CC]
     54    RenderButton {INPUT} at (9,0) size 30x30
     55    RenderSlider {INPUT} at (49,11) size 115x8 [color=#E6E6E659]
     56      RenderFlexibleBox {DIV} at (0,0) size 115x8 [border: (1px solid #E6E6E659)]
     57        RenderBlock {DIV} at (1,-2) size 127x12
     58          RenderBlock {DIV} at (50,0) size 12x12 [color=#FFFFFF]
     59    RenderFlexibleBox {DIV} at (179,0) size 74x30 [color=#FFFFFF]
     60      RenderBlock (anonymous) at (0,0) size 74x30
     61        RenderText {#text} at (0,7) size 74x15
     62          text run at (0,7) width 74: "00:00 / 00:01"
     63    RenderButton {INPUT} at (261,0) size 30x30
  • trunk/LayoutTests/platform/gtk/media/video-empty-source-expected.txt

    r142947 r143463  
    1313layer at (9,43) size 300x150
    1414  RenderFlexibleBox {DIV} at (1,1) size 300x150
    15 layer at (9,43) size 300x150 scrollHeight 160
    16   RenderFlexibleBox {DIV} at (0,0) size 300x150
    17     RenderButton {INPUT} at (0,130) size 20x20
    18     RenderFlexibleBox {DIV} at (20,130) size 240x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    19       RenderBlock (anonymous) at (1,0) size 65x30
    20         RenderFlexibleBox {DIV} at (0,0) size 65x30
    21           RenderBlock (anonymous) at (5,5) size 55x20
    22             RenderText {#text} at (0,0) size 55x12
    23               text run at (0,0) width 55: "00:00 / 00:00"
    24       RenderSlider {INPUT} at (66,0) size 173x20
    25         RenderFlexibleBox {DIV} at (2,0) size 169x20
    26           RenderBlock {DIV} at (0,4) size 169x12
    27             RenderBlock {DIV} at (0,0) size 12x12
    28     RenderButton {INPUT} at (260,130) size 20x20
    29     RenderButton {INPUT} at (280,130) size 20x20
    30     RenderBlock {DIV} at (300,150) size 0x0
     15    RenderBlock {DIV} at (0,110) size 300x40
     16layer at (14,158) size 290x30
     17  RenderFlexibleBox {DIV} at (5,5) size 290x30 [bgcolor=#141414CC]
     18    RenderButton {INPUT} at (9,0) size 30x30
     19    RenderSlider {INPUT} at (49,11) size 179x8 [color=#E6E6E659]
     20      RenderFlexibleBox {DIV} at (0,0) size 179x8 [border: (1px solid #E6E6E659)]
     21        RenderBlock {DIV} at (1,-2) size 191x12
     22          RenderBlock {DIV} at (-7,0) size 12x12 [color=#FFFFFF]
     23    RenderFlexibleBox {DIV} at (243,0) size 32x30 [color=#FFFFFF]
     24      RenderBlock (anonymous) at (0,0) size 32x30
     25        RenderText {#text} at (0,7) size 32x15
     26          text run at (0,7) width 32: "00:00"
  • trunk/LayoutTests/platform/gtk/media/video-no-audio-expected.txt

    r142947 r143463  
    1313layer at (8,42) size 352x288
    1414  RenderFlexibleBox {DIV} at (0,0) size 352x288
    15 layer at (8,42) size 352x288 scrollHeight 298
    16   RenderFlexibleBox {DIV} at (0,0) size 352x288
    17     RenderButton {INPUT} at (0,268) size 20x20
    18     RenderFlexibleBox {DIV} at (20,268) size 272x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    19       RenderBlock (anonymous) at (1,0) size 65x30
    20         RenderFlexibleBox {DIV} at (0,0) size 65x30
    21           RenderBlock (anonymous) at (5,5) size 55x20
    22             RenderText {#text} at (0,0) size 55x12
    23               text run at (0,0) width 55: "00:00 / 00:09"
    24       RenderSlider {INPUT} at (66,0) size 205x20
    25         RenderFlexibleBox {DIV} at (2,0) size 201x20
    26           RenderBlock {DIV} at (0,4) size 201x12
    27             RenderBlock {DIV} at (0,0) size 12x12
    28     RenderButton {INPUT} at (292,268) size 20x20
    29     RenderButton {INPUT} at (312,268) size 20x20
    30     RenderButton {INPUT} at (332,268) size 20x20
    31     RenderBlock {DIV} at (352,288) size 0x0
     15    RenderBlock {DIV} at (0,248) size 352x40
     16layer at (13,295) size 342x30
     17  RenderFlexibleBox {DIV} at (5,5) size 342x30 [bgcolor=#141414CC]
     18    RenderButton {INPUT} at (9,0) size 30x30
     19    RenderSlider {INPUT} at (49,11) size 199x8 [color=#E6E6E659]
     20      RenderFlexibleBox {DIV} at (0,0) size 199x8 [border: (1px solid #E6E6E659)]
     21        RenderBlock {DIV} at (1,-2) size 211x12
     22          RenderBlock {DIV} at (-7,0) size 12x12 [color=#FFFFFF]
     23    RenderFlexibleBox {DIV} at (263,0) size 32x30 [color=#FFFFFF]
     24      RenderBlock (anonymous) at (0,0) size 32x30
     25        RenderText {#text} at (0,7) size 32x15
     26          text run at (0,7) width 32: "00:09"
     27    RenderButton {INPUT} at (303,0) size 30x30
  • trunk/LayoutTests/platform/gtk/media/video-volume-slider-expected.txt

    r135953 r143463  
    1717  RenderVideo {VIDEO} at (0,54) size 320x240
    1818layer at (8,62) size 320x240
    19   RenderDeprecatedFlexibleBox (relative positioned) {DIV} at (0,0) size 320x240
    20 layer at (8,62) size 320x240 scrollHeight 250
    21   RenderDeprecatedFlexibleBox (relative positioned) {DIV} at (0,0) size 320x240
    22     RenderButton {INPUT} at (0,220) size 20x20
    23     RenderDeprecatedFlexibleBox {DIV} at (20,220) size 220x20 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    24       RenderBlock (anonymous) at (1,0) size 65x30
    25         RenderDeprecatedFlexibleBox {DIV} at (0,0) size 65x30
    26           RenderBlock (anonymous) at (5,5) size 55x20
    27             RenderText {#text} at (0,0) size 55x12
    28               text run at (0,0) width 55: "00:00 / 00:06"
    29       RenderSlider {INPUT} at (66,0) size 153x20
    30         RenderFlexibleBox {DIV} at (2,0) size 149x20
    31           RenderBlock {DIV} at (0,4) size 149x12
    32             RenderBlock {DIV} at (0,0) size 12x12
    33     RenderButton {INPUT} at (240,220) size 20x20
    34     RenderButton {INPUT} at (260,220) size 20x20
    35     RenderButton {INPUT} at (280,220) size 20x20
    36     RenderBlock {DIV} at (300,220) size 20x20
    37 layer at (308,182) size 20x100
    38   RenderBlock (positioned) zI: 1 {DIV} at (300,120) size 20x100
    39 layer at (311,187) size 14x95
    40   RenderSlider {INPUT} at (3,5) size 14x95
    41     RenderFlexibleBox {DIV} at (0,0) size 14x95
    42       RenderBlock {DIV} at (0,0) size 14x95
    43         RenderBlock {DIV} at (0,20) size 14x31
    44 layer at (308,282) size 20x20
    45   RenderButton zI: 2 {INPUT} at (0,0) size 20x20
     19  RenderFlexibleBox {DIV} at (0,0) size 320x240
     20    RenderBlock {DIV} at (0,200) size 320x40
     21layer at (13,267) size 310x30
     22  RenderFlexibleBox {DIV} at (5,5) size 310x30 [bgcolor=#141414CC]
     23    RenderButton {INPUT} at (9,0) size 30x30
     24    RenderSlider {INPUT} at (49,11) size 135x8 [color=#E6E6E659]
     25      RenderFlexibleBox {DIV} at (0,0) size 135x8 [border: (1px solid #E6E6E659)]
     26        RenderBlock {DIV} at (1,-2) size 147x12
     27          RenderBlock {DIV} at (-7,0) size 12x12 [color=#FFFFFF]
     28    RenderFlexibleBox {DIV} at (199,0) size 32x30 [color=#FFFFFF]
     29      RenderBlock (anonymous) at (0,0) size 32x30
     30        RenderText {#text} at (0,7) size 32x15
     31          text run at (0,7) width 32: "00:06"
     32    RenderButton {INPUT} at (239,0) size 30x30
     33    RenderButton {INPUT} at (271,0) size 30x30
     34layer at (284,167) size 30x100
     35  RenderBlock (positioned) zI: 2 {DIV} at (271,-100) size 30x100
     36    RenderSlider {INPUT} at (11,10) size 8x80 [color=#E6E6E659]
     37      RenderFlexibleBox {DIV} at (0,0) size 8x80 [border: (1px solid #E6E6E659)]
     38        RenderBlock {DIV} at (-2,-6) size 12x92
     39          RenderBlock {DIV} at (0,25) size 12x12 [color=#FFFFFF]
  • trunk/LayoutTests/platform/gtk/media/video-zoom-controls-expected.txt

    r142947 r143463  
    1111layer at (57,85) size 240x180
    1212  RenderFlexibleBox {DIV} at (0,0) size 240x180
    13 layer at (57,85) size 240x180 scrollHeight 194
    14   RenderFlexibleBox {DIV} at (0,0) size 240x180
    15     RenderButton {INPUT} at (0,150) size 30x30
    16     RenderFlexibleBox {DIV} at (30,150) size 90x30 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    17       RenderBlock (anonymous) at (1,0) size 88x44
    18         RenderFlexibleBox {DIV} at (88,0) size 0x44
    19           RenderBlock (anonymous) at (7,7) size 74x30
    20             RenderText {#text} at (15,0) size 44x35
    21               text run at (15,0) width 44: "00:00 /"
    22               text run at (19,17) width 36: "00:06"
    23       RenderSlider {INPUT} at (89,0) size 6x30
    24         RenderFlexibleBox {DIV} at (3,0) size 0x30
    25           RenderBlock {DIV} at (0,9) size 0x12
    26             RenderBlock {DIV} at (0,0) size 12x12
    27     RenderButton {INPUT} at (120,150) size 30x30
    28     RenderButton {INPUT} at (150,150) size 30x30
    29     RenderButton {INPUT} at (180,150) size 30x30
    30     RenderBlock {DIV} at (210,150) size 30x30
    31 layer at (267,235) size 30x30
    32   RenderButton zI: 2 {INPUT} at (0,0) size 30x30
     13    RenderBlock {DIV} at (0,120) size 240x60
     14layer at (64,212) size 226x45
     15  RenderFlexibleBox {DIV} at (7,7) size 226x45 [bgcolor=#141414CC]
     16    RenderButton {INPUT} at (13,0) size 45x45
     17    RenderSlider {INPUT} at (72,16) size 37x12 [color=#E6E6E659]
     18      RenderFlexibleBox {DIV} at (0,0) size 37x12 [border: (1px solid #E6E6E659)]
     19        RenderBlock {DIV} at (1,-3) size 56x18
     20          RenderBlock {DIV} at (-10,0) size 18x18 [color=#FFFFFF]
     21    RenderFlexibleBox {DIV} at (131,0) size 108x45 [color=#FFFFFF]
     22      RenderBlock (anonymous) at (0,0) size 108x45
     23        RenderText {#text} at (0,11) size 108x23
     24          text run at (0,11) width 108: "00:00 / 00:06"
     25    RenderButton {INPUT} at (251,0) size 45x45
     26    RenderButton {INPUT} at (299,0) size 45x45
    3327layer at (57,310) size 240x180
    3428  RenderVideo {VIDEO} at (45,298) size 240x180
    3529layer at (57,310) size 240x180
    3630  RenderFlexibleBox {DIV} at (0,0) size 240x180
    37 layer at (57,310) size 240x180 scrollHeight 194
    38   RenderFlexibleBox {DIV} at (0,0) size 240x180
    39     RenderButton {INPUT} at (0,150) size 30x30
    40     RenderFlexibleBox {DIV} at (30,150) size 90x30 [border: none (1px solid #FFFFFF33) none (1px solid #FFFFFF33)]
    41       RenderBlock (anonymous) at (1,0) size 88x44
    42         RenderFlexibleBox {DIV} at (88,0) size 0x44
    43           RenderBlock (anonymous) at (7,7) size 74x30
    44             RenderText {#text} at (15,0) size 44x35
    45               text run at (15,0) width 44: "00:00 /"
    46               text run at (19,17) width 36: "00:06"
    47       RenderSlider {INPUT} at (89,0) size 6x30
    48         RenderFlexibleBox {DIV} at (3,0) size 0x30
    49           RenderBlock {DIV} at (0,9) size 0x12
    50             RenderBlock {DIV} at (0,0) size 12x12
    51     RenderButton {INPUT} at (120,150) size 30x30
    52     RenderButton {INPUT} at (150,150) size 30x30
    53     RenderButton {INPUT} at (180,150) size 30x30
    54     RenderBlock {DIV} at (210,150) size 30x30
    55 layer at (267,460) size 30x30 backgroundClip at (74,291) size 240x180 clip at (74,291) size 240x180 outlineClip at (74,291) size 240x180
    56   RenderButton zI: 2 {INPUT} at (0,0) size 30x30
     31    RenderBlock {DIV} at (0,120) size 240x60
     32layer at (64,437) size 226x45
     33  RenderFlexibleBox {DIV} at (7,7) size 226x45 [bgcolor=#141414CC]
     34    RenderButton {INPUT} at (13,0) size 45x45
     35    RenderSlider {INPUT} at (72,16) size 37x12 [color=#E6E6E659]
     36      RenderFlexibleBox {DIV} at (0,0) size 37x12 [border: (1px solid #E6E6E659)]
     37        RenderBlock {DIV} at (1,-3) size 56x18
     38          RenderBlock {DIV} at (-10,0) size 18x18 [color=#FFFFFF]
     39    RenderFlexibleBox {DIV} at (131,0) size 108x45 [color=#FFFFFF]
     40      RenderBlock (anonymous) at (0,0) size 108x45
     41        RenderText {#text} at (0,11) size 108x23
     42          text run at (0,11) width 108: "00:00 / 00:06"
     43    RenderButton {INPUT} at (251,0) size 45x45
     44    RenderButton {INPUT} at (299,0) size 45x45
  • trunk/Source/WebCore/ChangeLog

    r143462 r143463  
     12013-02-20  Xabier Rodriguez Calvar  <calvaris@igalia.com>  and  Martin Robinson  <mrobinson@igalia.com>
     2
     3        [Gtk] HTML5 Media controls require a design refresh
     4        https://bugs.webkit.org/show_bug.cgi?id=83869
     5
     6        Created new controls that depend less on Gtk and more in CSS.
     7
     8        Reviewed by Philippe Normand.
     9
     10        * GNUmakefile.list.am: Added compilation for MediaControlsGtk.cpp
     11        and MediaControlsGtk.h
     12        * css/mediaControlsGtk.css: Taken from Chromium and adapted for
     13        WebKitGtk+.
     14        * html/shadow/MediaControlsGtk.cpp: Added.
     15        (WebCore): Added MediaControlsGtk class.
     16        (WebCore::MediaControlsGtk::MediaControlsGtk): Class constructor
     17        (WebCore::MediaControls::create): Creates the Gtk+ controls
     18        components.
     19        (WebCore::MediaControlsGtk::createControls): Creates the Gtk+
     20        controls components.
     21        (WebCore::MediaControlsGtk::initializeControls): Initializes all
     22        media controls.
     23        (WebCore::MediaControlsGtk::setMediaController): Sets the media
     24        controller.
     25        (WebCore::MediaControlsGtk::reset): Resets the controllers.
     26        (WebCore::MediaControlsGtk::playbackStarted): Invoked when the
     27        playback starts
     28        (WebCore::MediaControlsGtk::updateCurrentTimeDisplay): Updates the
     29        controls when the current time shall be updated.
     30        (WebCore::MediaControlsGtk::changedMute): Updates the controls
     31        then the mute changes.
     32        (WebCore::MediaControlsGtk::showVolumeSlider): Invoked when the
     33        volume slider is meant to be shown.
     34        (WebCore::MediaControlsGtk::createTextTrackDisplay): Creates the
     35        track display. Though it is not used by us, it needs to be created
     36        to prevent immediate crashes when loading a video.
     37        * html/shadow/MediaControlsGtk.h: Added.
     38        (WebCore): Added the MediaControlsGtk class.
     39        (MediaControlsGtk): Added the MediaControlsGtk class.
     40        * platform/gtk/RenderThemeGtk.cpp:
     41        (WebCore): Added getStockSymbolicIconForWidgetType function
     42        signature to load symbolic icons.
     43        (WebCore::supportsFocus): Added media control widgets to support
     44        focus so that the focus ring is not painted by WebCore.
     45        (WebCore::RenderThemeGtk::paintMediaButton): Added the symbolic
     46        icon support. It supports now normal and symbolic icons at the
     47        same time.
     48        (WebCore::RenderThemeGtk::paintMediaFullscreenButton): Added the
     49        symbolic icon support.
     50        (WebCore::RenderThemeGtk::paintMediaMuteButton): Added the
     51        symbolic icon support.
     52        (WebCore::RenderThemeGtk::paintMediaPlayButton): Added the
     53        symbolic icon support.
     54        (WebCore::RenderThemeGtk::paintMediaSeekBackButton): Added the
     55        symbolic icon support.
     56        (WebCore::RenderThemeGtk::paintMediaSeekForwardButton): Added the
     57        symbolic icon support.
     58        (WebCore::borderRadiiFromStyle): Created the radii info from the
     59        style.
     60        (WebCore::RenderThemeGtk::paintMediaSliderTrack): Removed the
     61        background and the Gtk widget support as it is painted with
     62        CSS. Also paint the time ranges with the CSS style.
     63        (WebCore::RenderThemeGtk::paintMediaSliderThumb): Paint slider
     64        thumb according to the CSS parameters.
     65        (WebCore::RenderThemeGtk::paintMediaVolumeSliderContainer):
     66        Delegates in the CSS.
     67        (WebCore::RenderThemeGtk::paintMediaVolumeSliderTrack): Fills the
     68        track up to the volume level and delegates the border in the CSS.
     69        (WebCore::RenderThemeGtk::paintMediaVolumeSliderThumb): Delegates
     70        in the paintMediaSliderThumb method so the thumb is painted the
     71        same with the CSS parameters.
     72        (WebCore::RenderThemeGtk::paintMediaCurrentTime): Removed the Gtk
     73        background to use only CSS.
     74        * platform/gtk/RenderThemeGtk.h:
     75        (RenderThemeGtk): Changed paintMediaButton to support the symbolic
     76        and normal icons at the same time.
     77        * platform/gtk/RenderThemeGtk2.cpp:
     78        (WebCore::RenderThemeGtk::adjustSliderThumbSize): Not adjusting
     79        the thumb size and letting the CSS decide that for media slider.
     80        (WebCore::getStockSymbolicIconForWidgetType): Implemented as a
     81        fallback to the normal stock icons.
     82        * platform/gtk/RenderThemeGtk3.cpp:
     83        (WebCore):
     84        (WebCore::RenderThemeGtk::adjustSliderThumbSize): Not adjusting
     85        the thumb size and letting the CSS decide that for the media
     86        sliders.
     87        (WebCore::getStockSymbolicIconForWidgetType): Added this function
     88        to load symbolic icons. It falls back to normal icons if the
     89        symbolic is not found.
     90
    1912013-02-20  Andras Becsi  <andras.becsi@digia.com>
    292
  • trunk/Source/WebCore/GNUmakefile.list.am

    r143422 r143463  
    36713671        Source/WebCore/html/shadow/MediaControls.cpp \
    36723672        Source/WebCore/html/shadow/MediaControls.h \
    3673         Source/WebCore/html/shadow/MediaControlsApple.cpp \
    3674         Source/WebCore/html/shadow/MediaControlsApple.h \
     3673        Source/WebCore/html/shadow/MediaControlsGtk.cpp \
     3674        Source/WebCore/html/shadow/MediaControlsGtk.h \
    36753675        Source/WebCore/html/shadow/MeterShadowElement.cpp \
    36763676        Source/WebCore/html/shadow/MeterShadowElement.h \
  • trunk/Source/WebCore/css/mediaControlsGtk.css

    r142947 r143463  
    11/*
    2  * WebKitGTK+ specific overrides for HTML5 media elements.
     2 * Copyright (C) 2009 Apple Inc.  All rights reserved.
     3 * Copyright (C) 2009 Google Inc.
     4 * Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com>
     5 * Copyright (C) 2012 Igalia S.L.
    36 *
    4  * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
     7 * Redistribution and use in source and binary forms, with or without
     8 * modification, are permitted provided that the following conditions
     9 * are met:
     10 * 1. Redistributions of source code must retain the above copyright
     11 *    notice, this list of conditions and the following disclaimer.
     12 * 2. Redistributions in binary form must reproduce the above copyright
     13 *    notice, this list of conditions and the following disclaimer in the
     14 *    documentation and/or other materials provided with the distribution.
    515 *
    6  * This library is free software; you can redistribute it and/or
    7  * modify it under the terms of the GNU Library General Public
    8  * License as published by the Free Software Foundation; either
    9  * version 2 of the License, or (at your option) any later version.
    10  *
    11  * This library is distributed in the hope that it will be useful,
    12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    14  * Library General Public License for more details.
    15  *
    16  * You should have received a copy of the GNU Library General Public License
    17  * along with this library; see the file COPYING.LIB.  If not, write to
    18  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
    19  * Boston, MA 02110-1301, USA.
    20  *
     16 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
     17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     19 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
     20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     22 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
     23 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     25 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2126 */
    2227
     28/* These are based on the Chromium media controls */
     29
     30body:-webkit-full-page-media {
     31    background-color: rgb(0, 0, 0);
     32}
     33
    2334audio {
    24     height: 20px;
    2535    width: 300px;
     36    height: 30px;
     37}
     38
     39audio:-webkit-full-page-media, video:-webkit-full-page-media {
     40    max-height: 100%;
     41    max-width: 100%;
     42}
     43
     44audio:-webkit-full-page-media::-webkit-media-controls-panel,
     45video:-webkit-full-page-media::-webkit-media-controls-panel {
     46    bottom: 0px;
     47}
     48
     49::-webkit-media-controls {
     50    display: -webkit-flex;
     51    -webkit-flex-direction: column;
     52    -webkit-justify-content: flex-end;
     53    -webkit-align-items: center;
     54}
     55
     56audio::-webkit-media-controls-enclosure, video::-webkit-media-controls-enclosure {
     57    width: 100%;
     58    max-width: 800px;
     59    height: 30px;
     60    bottom: 0;
     61    text-indent: 0;
     62    padding: 0;
     63    box-sizing: border-box;
     64    overflow: visible;
     65}
     66
     67video::-webkit-media-controls-enclosure {
     68    padding: 5px;
     69    height: 40px;
    2670}
    2771
    2872audio::-webkit-media-controls-panel, video::-webkit-media-controls-panel {
    29     -webkit-align-items: flex-end;
    30     text-align: right;
    31     height: 100%;
     73    display: -webkit-flex;
     74    -webkit-flex-direction: row;
     75    -webkit-align-items: center;
     76    -webkit-justify-content: flex-start;
     77    bottom: auto;
     78    height: 30px;
     79    background-color: rgba(20, 20, 20, 0.8);
     80    border-radius: 5px;
     81    overflow: visible;
    3282}
    3383
    3484audio::-webkit-media-controls-mute-button, video::-webkit-media-controls-mute-button {
    35     width: 20px;
    36     height: 20px;
    37     position: relative;
    38     z-index: 2;
     85    -webkit-appearance: media-mute-button;
     86    display: -webkit-flex;
     87    -webkit-flex: none;
     88    border: none;
     89    box-sizing: border-box;
     90    width: 30px;
     91    height: 30px;
     92    line-height: 30px;
     93    margin: 0 9px 0 -7px;
    3994}
    4095
    4196audio::-webkit-media-controls-play-button, video::-webkit-media-controls-play-button {
    42     width: 20px;
    43     height: 20px;
    44 }
    45 
    46 audio::-webkit-media-controls-timeline-container, video::-webkit-media-controls-timeline-container {
    47     height: 20px;
    48     border-left: 1px solid rgba(255, 255, 255, 0.2);
    49     border-right: 1px solid rgba(255, 255, 255, 0.2);
    50 }
    51 
    52 audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline {
    53     height: 20px;
    54 }
    55 
    56 audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display {
     97    -webkit-appearance: media-play-button;
     98    display: -webkit-flex;
     99    -webkit-flex: none;
     100    border: none;
     101    box-sizing: border-box;
     102    width: 30px;
     103    height: 30px;
     104    line-height: 30px;
     105    margin: 0 9px;
     106}
     107
     108audio::-webkit-media-controls-current-time-display, video::-webkit-media-controls-current-time-display,
     109audio::-webkit-media-controls-time-remaining-display, video::-webkit-media-controls-time-remaining-display {
    57110    -webkit-appearance: media-current-time-display;
    58111    -webkit-user-select: none;
    59     display: inline-block;
    60     height: 20px;
    61 
    62     padding: 5px;
    63 
    64     text-align: center;
    65     font-size: 10px;
    66 }
    67 
    68 audio::-webkit-media-controls-seek-back-button, video::-webkit-media-controls-seek-back-button {
    69     width: 20px;
    70     height: 20px;
    71 }
    72 
    73 audio::-webkit-media-controls-seek-forward-button, video::-webkit-media-controls-seek-forward-button {
    74     width: 20px;
    75     height: 20px;
    76 }
    77 
    78 audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
    79     width: 20px;
    80     height: 20px;
     112    -webkit-flex: none;
     113    display: block;
     114    border: none;
     115    cursor: default;
     116
     117    height: 30px;
     118    margin: 0 15px 0 0;
     119
     120    line-height: 30px;
     121    font-family: -webkit-small-control;
     122    font-size: 13px;
     123    font-weight: normal;
     124    font-style: normal;
     125    color: white;
     126
     127    letter-spacing: normal;
     128    word-spacing: normal;
     129    text-transform: none;
     130    text-indent: 0;
     131    text-shadow: none;
     132    text-decoration: none;
     133}
     134
     135audio::-webkit-media-controls-timeline, video::-webkit-media-controls-timeline {
     136    -webkit-appearance: media-slider;
     137    display: -webkit-flex;
     138    -webkit-flex: 1 1 auto;
     139    height: 8px;
     140    margin: 0 15px 0 1px;
     141    padding: 0;
     142    background-color: transparent;
     143    min-width: 25px;
     144    border-radius: 4px;
     145    color: rgba(230, 230, 230, 0.35);
    81146}
    82147
     
    84149    -webkit-appearance: media-volume-slider-container;
    85150    position: absolute;
     151    padding: 0;
    86152    height: 100px;
    87     width: 20px;
    88     bottom: 20px;
    89     z-index: 1;
     153    width: 30px;
     154    bottom: 30px;
     155    z-index: 2;
     156    background-color: rgba(20, 20, 20, 0.8);
     157    right: 9px;
     158    border-radius: 5px 5px 0px 0px;
    90159}
    91160
    92161audio::-webkit-media-controls-volume-slider, video::-webkit-media-controls-volume-slider {
    93162    -webkit-appearance: media-volume-slider;
    94     display: inline;
    95     position: absolute;
    96     width: 14px;
    97     height: 95px;
    98 
    99     left: 3px;
    100     top: 5px;
    101 }
     163    display: -webkit-flex;
     164    -webkit-align-items: center;
     165    -webkit-flex-direction: column;
     166    box-sizing: border-box;
     167    height: 80px;
     168    width: 8px;
     169    margin: 10px auto;
     170    border-radius: 4px;
     171    background-color: transparent;
     172    color: rgba(230, 230, 230, 0.35);
     173}
     174
     175audio::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-container > div, video::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-container > div {
     176    margin: -7px 0;
     177}
     178
     179audio::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-thumb, video::-webkit-media-controls-volume-slider-container input[type="range"]::-webkit-media-slider-thumb {
     180    -webkit-appearance: media-volume-sliderthumb;
     181    width: 12px;
     182    height: 12px;
     183    border-radius: 3px;
     184    color: white;
     185    margin: 0;
     186}
     187
     188input[type="range"]::-webkit-media-slider-container {
     189    display: -webkit-flex;
     190    -webkit-align-items: center;
     191    -webkit-flex-direction: row; /* This property is updated by C++ code. */
     192    box-sizing: border-box;
     193    height: 100%;
     194    width: 100%;
     195    border: 1px solid rgba(230, 230, 230, 0.35);
     196    border-radius: 4px;
     197    background-color: transparent;
     198}
     199
     200/* The negative right margin causes the track to overflow its container. */
     201input[type="range"]::-webkit-media-slider-container > div {
     202    margin-right: -14px;
     203}
     204
     205input[type="range"]::-webkit-media-slider-thumb {
     206    -webkit-appearance: media-sliderthumb;
     207    width: 12px;
     208    height: 12px;
     209    border-radius: 3px;
     210    color: white;
     211    margin-left: -7px;
     212    margin-right: -7px;
     213}
     214
     215audio::-webkit-media-controls-toggle-closed-captions-button, video::-webkit-media-controls-toggle-closed-captions-button {
     216    -webkit-appearance: media-toggle-closed-captions-button;
     217    display: -webkit-flex;
     218    -webkit-flex: none;
     219    border: none;
     220    box-sizing: border-box;
     221    width: 30px;
     222    height: 30px;
     223    line-height: 30px;
     224    margin: 0 9px 0 -7px;
     225}
     226
     227audio::-webkit-media-controls-fullscreen-button, video::-webkit-media-controls-fullscreen-button {
     228    -webkit-appearance: media-enter-fullscreen-button;
     229    display: -webkit-flex;
     230    -webkit-flex: none;
     231    border: none;
     232    box-sizing: border-box;
     233    width: 30px;
     234    height: 30px;
     235    line-height: 30px;
     236    margin: 0 9px 0 -7px;
     237}
  • trunk/Source/WebCore/platform/gtk/RenderThemeGtk.cpp

    r142271 r143463  
    4646#include "TimeRanges.h"
    4747#include "UserAgentStyleSheets.h"
     48#include <cmath>
    4849#include <gdk/gdk.h>
    4950#include <glib.h>
     
    6061// definition depends on including glib.h, negating the benefit of using a forward declaration.
    6162extern GRefPtr<GdkPixbuf> getStockIconForWidgetType(GType, const char* iconName, gint direction, gint state, gint iconSize);
     63extern GRefPtr<GdkPixbuf> getStockSymbolicIconForWidgetType(GType widgetType, const char* symbolicIconName, const char *fallbackStockIconName, gint direction, gint state, gint iconSize);
    6264
    6365using namespace HTMLNames;
     
    7476
    7577    return static_cast<HTMLMediaElement*>(mediaNode);
    76 }
    77 
    78 static GtkIconSize getMediaButtonIconSize(int mediaIconSize)
    79 {
    80     GtkIconSize iconSize = gtk_icon_size_from_name("webkit-media-button-size");
    81     if (!iconSize)
    82         iconSize = gtk_icon_size_register("webkit-media-button-size", mediaIconSize, mediaIconSize);
    83     return iconSize;
    8478}
    8579
     
    128122    , m_mediaIconSize(16)
    129123    , m_mediaSliderHeight(14)
    130     , m_mediaSliderThumbWidth(12)
    131     , m_mediaSliderThumbHeight(12)
    132124{
    133125    platformInit();
     
    151143    case SliderHorizontalPart:
    152144    case SliderVerticalPart:
     145    case MediaPlayButtonPart:
     146    case MediaVolumeSliderPart:
     147    case MediaMuteButtonPart:
     148    case MediaEnterFullscreenButtonPart:
     149    case MediaSliderPart:
    153150        return true;
    154151    default:
     
    494491#endif
    495492
    496 void RenderThemeGtk::adjustMediaSliderThumbSize(RenderStyle* style) const
    497 {
    498     ASSERT(style->appearance() == MediaSliderThumbPart);
    499     style->setWidth(Length(m_mediaSliderThumbWidth, Fixed));
    500     style->setHeight(Length(m_mediaSliderThumbHeight, Fixed));
    501 }
    502 
    503 bool RenderThemeGtk::paintMediaButton(RenderObject* renderObject, GraphicsContext* context, const IntRect& rect, const char* iconName)
    504 {
    505     GRefPtr<GdkPixbuf> icon = getStockIconForWidgetType(GTK_TYPE_CONTAINER, iconName,
    506                                                         gtkTextDirection(renderObject->style()->direction()),
    507                                                         gtkIconState(this, renderObject),
    508                                                         getMediaButtonIconSize(m_mediaIconSize));
     493bool RenderThemeGtk::paintMediaButton(RenderObject* renderObject, GraphicsContext* context, const IntRect& rect, const char* symbolicIconName, const char* fallbackStockIconName)
     494{
    509495    IntRect iconRect(rect.x() + (rect.width() - m_mediaIconSize) / 2,
    510496                     rect.y() + (rect.height() - m_mediaIconSize) / 2,
    511497                     m_mediaIconSize, m_mediaIconSize);
    512     context->fillRect(FloatRect(rect), m_panelColor, ColorSpaceDeviceRGB);
     498    GRefPtr<GdkPixbuf> icon = getStockSymbolicIconForWidgetType(GTK_TYPE_CONTAINER, symbolicIconName, fallbackStockIconName,
     499        gtkTextDirection(renderObject->style()->direction()), gtkIconState(this, renderObject), iconRect.width());
    513500    paintGdkPixbuf(context, icon.get(), iconRect);
    514501    return false;
     
    522509bool RenderThemeGtk::paintMediaFullscreenButton(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    523510{
    524     return paintMediaButton(renderObject, paintInfo.context, rect, GTK_STOCK_FULLSCREEN);
     511    return paintMediaButton(renderObject, paintInfo.context, rect, "view-fullscreen-symbolic", GTK_STOCK_FULLSCREEN);
    525512}
    526513
     
    531518        return false;
    532519
    533     return paintMediaButton(renderObject, paintInfo.context, rect, mediaElement->muted() ? "audio-volume-muted" : "audio-volume-high");
     520    bool muted = mediaElement->muted();
     521    return paintMediaButton(renderObject, paintInfo.context, rect,
     522        muted ? "audio-volume-muted-symbolic" : "audio-volume-high-symbolic",
     523        muted ? "audio-volume-muted" : "audio-volume-high");
    534524}
    535525
     
    542532        return false;
    543533
    544     return paintMediaButton(renderObject, paintInfo.context, rect, mediaControlElementType(node) == MediaPlayButton ? GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE);
     534    bool play = mediaControlElementType(node) == MediaPlayButton;
     535    return paintMediaButton(renderObject, paintInfo.context, rect,
     536        play ? "media-playback-start-symbolic" : "media-playback-pause-symbolic",
     537        play ? GTK_STOCK_MEDIA_PLAY : GTK_STOCK_MEDIA_PAUSE);
    545538}
    546539
    547540bool RenderThemeGtk::paintMediaSeekBackButton(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    548541{
    549     return paintMediaButton(renderObject, paintInfo.context, rect, GTK_STOCK_MEDIA_REWIND);
     542    return paintMediaButton(renderObject, paintInfo.context, rect, "media-seek-backward-symbolic", GTK_STOCK_MEDIA_REWIND);
    550543}
    551544
    552545bool RenderThemeGtk::paintMediaSeekForwardButton(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    553546{
    554     return paintMediaButton(renderObject, paintInfo.context, rect, GTK_STOCK_MEDIA_FORWARD);
     547    return paintMediaButton(renderObject, paintInfo.context, rect, "media-seek-forward-symbolic", GTK_STOCK_MEDIA_FORWARD);
     548}
     549
     550static RoundedRect::Radii borderRadiiFromStyle(RenderStyle* style)
     551{
     552    return RoundedRect::Radii(
     553        IntSize(style->borderTopLeftRadius().width().intValue(), style->borderTopLeftRadius().height().intValue()),
     554        IntSize(style->borderTopRightRadius().width().intValue(), style->borderTopRightRadius().height().intValue()),
     555        IntSize(style->borderBottomLeftRadius().width().intValue(), style->borderBottomLeftRadius().height().intValue()),
     556        IntSize(style->borderBottomRightRadius().width().intValue(), style->borderBottomRightRadius().height().intValue()));
    555557}
    556558
    557559bool RenderThemeGtk::paintMediaSliderTrack(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
    558560{
    559     GraphicsContext* context = paintInfo.context;
    560 
    561     context->fillRect(FloatRect(r), m_panelColor, ColorSpaceDeviceRGB);
    562     context->fillRect(FloatRect(IntRect(r.x(), r.y() + (r.height() - m_mediaSliderHeight) / 2,
    563                                         r.width(), m_mediaSliderHeight)), m_sliderColor, ColorSpaceDeviceRGB);
    564 
    565     RenderStyle* style = o->style();
    566561    HTMLMediaElement* mediaElement = toParentMediaElement(o);
    567 
    568562    if (!mediaElement)
    569563        return false;
    570564
    571     // Draw the buffered ranges. This code is highly inspired from
    572     // Chrome for the gradient code.
    573     float mediaDuration = mediaElement->duration();
    574     RefPtr<TimeRanges> timeRanges = mediaElement->buffered();
    575     IntRect trackRect = r;
    576     int totalWidth = trackRect.width();
    577 
    578     trackRect.inflate(-style->borderLeftWidth());
     565    GraphicsContext* context = paintInfo.context;
    579566    context->save();
    580567    context->setStrokeStyle(NoStroke);
    581568
     569    float mediaDuration = mediaElement->duration();
     570    float totalTrackWidth = r.width();
     571    RenderStyle* style = o->style();
     572    RefPtr<TimeRanges> timeRanges = mediaElement->buffered();
    582573    for (unsigned index = 0; index < timeRanges->length(); ++index) {
    583574        float start = timeRanges->start(index, IGNORE_EXCEPTION);
    584575        float end = timeRanges->end(index, IGNORE_EXCEPTION);
    585         int width = ((end - start) * totalWidth) / mediaDuration;
    586         IntRect rangeRect;
    587         if (!index) {
    588             rangeRect = trackRect;
    589             rangeRect.setWidth(width);
    590         } else {
    591             rangeRect.setLocation(IntPoint(trackRect.x() + start / mediaDuration* totalWidth, trackRect.y()));
    592             rangeRect.setSize(IntSize(width, trackRect.height()));
    593         }
    594 
    595         // Don't bother drawing empty range.
    596         if (rangeRect.isEmpty())
     576        float startRatio = start / mediaDuration;
     577        float lengthRatio = (end - start) / mediaDuration;
     578        if (!lengthRatio)
    597579            continue;
    598580
    599         IntPoint sliderTopLeft = rangeRect.location();
    600         IntPoint sliderTopRight = sliderTopLeft;
    601         sliderTopRight.move(0, rangeRect.height());
    602 
    603         RefPtr<Gradient> gradient = Gradient::create(sliderTopLeft, sliderTopRight);
    604         Color startColor = m_panelColor;
    605         gradient->addColorStop(0.0, startColor);
    606         gradient->addColorStop(1.0, Color(startColor.red() / 2, startColor.green() / 2, startColor.blue() / 2, startColor.alpha()));
    607 
    608         context->setFillGradient(gradient);
    609         context->fillRect(rangeRect);
     581        IntRect rangeRect(r);
     582        rangeRect.setWidth(lengthRatio * totalTrackWidth);
     583        if (index)
     584            rangeRect.move(startRatio * totalTrackWidth, 0);
     585        context->fillRoundedRect(RoundedRect(rangeRect, borderRadiiFromStyle(style)), style->visitedDependentColor(CSSPropertyColor), style->colorSpace());
    610586    }
    611587
     
    616592bool RenderThemeGtk::paintMediaSliderThumb(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r)
    617593{
    618     // Make the thumb nicer with rounded corners.
    619     paintInfo.context->fillRoundedRect(r, IntSize(3, 3), IntSize(3, 3), IntSize(3, 3), IntSize(3, 3), m_sliderThumbColor, ColorSpaceDeviceRGB);
     594    RenderStyle* style = o->style();
     595    paintInfo.context->fillRoundedRect(RoundedRect(r, borderRadiiFromStyle(style)), style->visitedDependentColor(CSSPropertyColor), style->colorSpace());
    620596    return false;
    621597}
     
    623599bool RenderThemeGtk::paintMediaVolumeSliderContainer(RenderObject*, const PaintInfo& paintInfo, const IntRect& rect)
    624600{
     601    return true;
     602}
     603
     604bool RenderThemeGtk::paintMediaVolumeSliderTrack(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
     605{
     606    HTMLMediaElement* mediaElement = toParentMediaElement(renderObject);
     607    if (!mediaElement)
     608        return true;
     609
     610    float volume = mediaElement->volume();
     611    if (!volume)
     612        return true;
     613
    625614    GraphicsContext* context = paintInfo.context;
    626     context->fillRect(FloatRect(rect), m_panelColor, ColorSpaceDeviceRGB);
     615    context->save();
     616    context->setStrokeStyle(NoStroke);
     617
     618    int rectHeight = rect.height();
     619    float trackHeight = rectHeight * volume;
     620    RenderStyle* style = renderObject->style();
     621    IntRect volumeRect(rect);
     622    volumeRect.move(0, rectHeight - trackHeight);
     623    volumeRect.setHeight(ceil(trackHeight));
     624
     625    context->fillRoundedRect(RoundedRect(volumeRect, borderRadiiFromStyle(style)),
     626        style->visitedDependentColor(CSSPropertyColor), style->colorSpace());
     627    context->restore();
     628
    627629    return false;
    628630}
    629631
    630 bool RenderThemeGtk::paintMediaVolumeSliderTrack(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    631 {
    632     return paintSliderTrack(renderObject, paintInfo, rect);
    633 }
    634 
    635632bool RenderThemeGtk::paintMediaVolumeSliderThumb(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    636633{
    637     return paintSliderThumb(renderObject, paintInfo, rect);
     634    return paintMediaSliderThumb(renderObject, paintInfo, rect);
    638635}
    639636
     
    645642bool RenderThemeGtk::paintMediaCurrentTime(RenderObject* renderObject, const PaintInfo& paintInfo, const IntRect& rect)
    646643{
    647     GraphicsContext* context = paintInfo.context;
    648 
    649     context->fillRect(FloatRect(rect), m_panelColor, ColorSpaceDeviceRGB);
    650644    return false;
    651645}
  • trunk/Source/WebCore/platform/gtk/RenderThemeGtk.h

    r140339 r143463  
    162162    void initMediaColors();
    163163    void initMediaButtons();
    164     void adjustMediaSliderThumbSize(RenderStyle*) const;
    165164    virtual bool hasOwnDisabledStateHandlingFor(ControlPart) const;
    166165    virtual bool paintMediaFullscreenButton(RenderObject*, const PaintInfo&, const IntRect&);
     
    197196
    198197#if ENABLE(VIDEO)
    199     bool paintMediaButton(RenderObject*, GraphicsContext*, const IntRect&, const char* iconName);
     198    bool paintMediaButton(RenderObject*, GraphicsContext*, const IntRect&, const char* symbolicIconName, const char* fallbackStockIconName);
    200199#endif
    201200
     
    209208    const int m_mediaIconSize;
    210209    const int m_mediaSliderHeight;
    211     const int m_mediaSliderThumbWidth;
    212     const int m_mediaSliderThumbHeight;
    213210
    214211#ifdef GTK_API_VERSION_2
  • trunk/Source/WebCore/platform/gtk/RenderThemeGtk2.cpp

    r126359 r143463  
    529529{
    530530    ControlPart part = style->appearance();
    531 #if ENABLE(VIDEO)
    532     if (part == MediaSliderThumbPart) {
    533         adjustMediaSliderThumbSize(style);
     531    if (part != SliderThumbHorizontalPart && part != SliderThumbVerticalPart)
    534532        return;
    535     }
    536 #endif
    537533
    538534    GtkWidget* widget = part == SliderThumbHorizontalPart ? gtkHScale() : gtkVScale();
     
    671667}
    672668
     669GRefPtr<GdkPixbuf> getStockSymbolicIconForWidgetType(GType widgetType, const char* symbolicIconName, const char *fallbackStockIconName, gint direction, gint state, gint iconSize)
     670{
     671    return getStockIconForWidgetType(widgetType, fallbackStockIconName, direction, state, iconSize);
     672}
    673673
    674674Color RenderThemeGtk::platformActiveSelectionBackgroundColor() const
  • trunk/Source/WebCore/platform/gtk/RenderThemeGtk3.cpp

    r137602 r143463  
    709709{
    710710    ControlPart part = style->appearance();
    711 #if ENABLE(VIDEO)
    712     if (part == MediaSliderThumbPart) {
    713         adjustMediaSliderThumbSize(style);
     711    if (part != SliderThumbHorizontalPart && part != SliderThumbVerticalPart)
    714712        return;
    715     }
    716 #endif
    717713
    718714    gint sliderWidth, sliderLength;
     
    900896}
    901897
     898GRefPtr<GdkPixbuf> getStockSymbolicIconForWidgetType(GType widgetType, const char* symbolicIconName, const char *fallbackStockIconName, gint direction, gint state, gint iconSize)
     899{
     900    GtkStyleContext* context = getStyleContext(widgetType);
     901
     902    gtk_style_context_save(context);
     903
     904    guint flags = 0;
     905    if (state == GTK_STATE_PRELIGHT)
     906        flags |= GTK_STATE_FLAG_PRELIGHT;
     907    else if (state == GTK_STATE_INSENSITIVE)
     908        flags |= GTK_STATE_FLAG_INSENSITIVE;
     909
     910    gtk_style_context_set_state(context, static_cast<GtkStateFlags>(flags));
     911    gtk_style_context_set_direction(context, static_cast<GtkTextDirection>(direction));
     912    GtkIconInfo* info = gtk_icon_theme_lookup_icon(gtk_icon_theme_get_default(), symbolicIconName, iconSize,
     913        static_cast<GtkIconLookupFlags>(GTK_ICON_LOOKUP_FORCE_SVG | GTK_ICON_LOOKUP_FORCE_SIZE));
     914    GdkPixbuf* icon = 0;
     915    if (info) {
     916        icon = gtk_icon_info_load_symbolic_for_context(info, context, 0, 0);
     917        gtk_icon_info_free(info);
     918    }
     919
     920    gtk_style_context_restore(context);
     921
     922    if (!icon)
     923        return getStockIconForWidgetType(widgetType, fallbackStockIconName, direction, state, iconSize);
     924
     925    return adoptGRef(icon);
     926}
     927
    902928Color RenderThemeGtk::platformActiveSelectionBackgroundColor() const
    903929{
  • trunk/Tools/ChangeLog

    r143457 r143463  
     12013-02-20  Xabier Rodriguez Calvar  <calvaris@igalia.com>
     2
     3        [Gtk] HTML5 Media controls require a design refresh
     4        https://bugs.webkit.org/show_bug.cgi?id=83869
     5
     6        Reviewed by Philippe Normand.
     7
     8        * DumpRenderTree/gtk/DumpRenderTree.cpp:
     9        (initializeGtkFontSettings): Added gnome as default icon theme for
     10        the DRT.
     11        * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
     12        (WTR::initializeGtkSettings): Added gnome as default icon theme for
     13        the WTR.
     14        * gtk/jhbuild.modules: Added gnome-icon-theme-symbolic as external
     15        dependency.
     16
    1172013-02-20  Jochen Eisinger  <jochen@chromium.org>
    218
  • trunk/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp

    r142509 r143463  
    174174                 "gtk-xft-hinting", 0,
    175175                 "gtk-font-name", "Liberation Sans 12",
     176                 "gtk-icon-theme-name", "gnome",
    176177                 NULL);
    177178    gdk_screen_set_resolution(gdk_screen_get_default(), 96.0);
  • trunk/Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp

    r140969 r143463  
    5151                 "gtk-font-name", "Liberation Sans 12",
    5252                 "gtk-theme-name", "Raleigh",
     53                 "gtk-icon-theme-name", "gnome",
    5354                 "gtk-xft-rgba", "none", NULL);
    5455}
  • trunk/Tools/gtk/jhbuild.modules

    r143345 r143463  
    1818      <dep package="glib-networking"/>
    1919      <dep package="gnome-icon-theme"/>
     20      <dep package="gnome-icon-theme-symbolic"/>
    2021      <dep package="gnome-themes-standard"/>
    2122      <dep package="libsoup"/>
     
    194195  </autotools>
    195196
     197  <autotools id="gnome-icon-theme-symbolic" autogen-sh="configure">
     198    <dependencies>
     199      <dep package="gtk+"/>
     200    </dependencies>
     201    <branch module="pub/GNOME/sources/gnome-icon-theme-symbolic/3.2/gnome-icon-theme-symbolic-3.2.1.tar.xz" version="3.2.1"
     202            repo="ftp.gnome.org"
     203            hash="sha256:a558af2f87f761f00421f49c1addd2149b70228158e09327fa861219ac1a63cb"
     204            md5sum="94137d3c256f2cc80298a9bef15d68c4">
     205    </branch>
     206  </autotools>
     207
    196208  <autotools id="gnome-themes-standard" autogen-sh="configure">
    197209    <dependencies>
Note: See TracChangeset for help on using the changeset viewer.