Changeset 60805 in webkit


Ignore:
Timestamp:
Jun 7, 2010 3:45:58 PM (14 years ago)
Author:
Martin Robinson
Message:

2010-06-07 Martin Robinson <mrobinson@igalia.com>

Reviewed by Oliver Hunt.

[GTK] HTML5 input type=range is not drawn
https://bugs.webkit.org/show_bug.cgi?id=39561

Uncomment and add baselines for slider tests which are now passing. Group
remaining failing slider tests by their type of failure.

  • platform/gtk/Skipped:
  • platform/gtk/fast/forms/range-thumb-height-percentage-expected.txt: Added.
  • platform/gtk/fast/forms/slider-thumb-shared-style-expected.txt: Added.
  • platform/gtk/fast/forms/slider-thumb-stylability-expected.txt: Added.
  • platform/gtk/fast/forms/thumbslider-crash-expected.txt: Added.
  • platform/gtk/fast/forms/thumbslider-no-parent-slider-expected.txt: Added.

2010-06-07 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Fix XFrameOptions and xssAuditor crashes in HTML5 parser
https://bugs.webkit.org/show_bug.cgi?id=40265

We're not supposed to call end() while the tokenizer's write() method.
This causes a bunch of LayoutTests to crash. In particular, this patch
fixes crashes in the following tests:

Tests:

  • http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html
  • http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html
  • http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html
  • http/tests/security/xssAuditor/full-block-base-href.html
  • http/tests/security/xssAuditor/full-block-get-from-iframe.html
  • http/tests/security/xssAuditor/full-block-iframe-javascript-url.html
  • http/tests/security/xssAuditor/full-block-link-onclick.html
  • http/tests/security/xssAuditor/full-block-post-from-iframe.html
  • http/tests/security/xssAuditor/full-block-script-tag.html
  • http/tests/security/xssAuditor/xss-protection-parsing-01.html
  • html/HTML5Tokenizer.cpp: (WebCore::): (WebCore::HTML5Tokenizer::HTML5Tokenizer): (WebCore::HTML5Tokenizer::write): (WebCore::HTML5Tokenizer::attemptToEnd): (WebCore::HTML5Tokenizer::endIfDelayed): (WebCore::HTML5Tokenizer::finish): (WebCore::HTML5Tokenizer::resumeParsingAfterScriptExecution):
  • html/HTML5Tokenizer.h: (WebCore::HTML5Tokenizer::inWrite):
Location:
trunk
Files:
5 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r60804 r60805  
     12010-06-07  Martin Robinson  <mrobinson@igalia.com>
     2
     3        Reviewed by Oliver Hunt.
     4
     5        [GTK] HTML5 input type=range is not drawn
     6        https://bugs.webkit.org/show_bug.cgi?id=39561
     7
     8        Uncomment and add baselines for slider tests which are now passing. Group
     9        remaining failing slider tests by their type of failure.
     10
     11        * platform/gtk/Skipped:
     12        * platform/gtk/fast/forms/range-thumb-height-percentage-expected.txt: Added.
     13        * platform/gtk/fast/forms/slider-thumb-shared-style-expected.txt: Added.
     14        * platform/gtk/fast/forms/slider-thumb-stylability-expected.txt: Added.
     15        * platform/gtk/fast/forms/thumbslider-crash-expected.txt: Added.
     16        * platform/gtk/fast/forms/thumbslider-no-parent-slider-expected.txt: Added.
     17
    1182010-06-07  Martin Robinson  <mrobinson@igalia.com>
    219
  • trunk/LayoutTests/platform/gtk/Skipped

    r60804 r60805  
    12631263fast/forms/search-styled.html
    12641264fast/forms/select-script-onchange.html
    1265 fast/forms/slider-mouse-events.html
    1266 fast/forms/slider-onchange-event.html
    1267 fast/forms/slider-transformed.html
    1268 fast/forms/slider-zoomed.html
    12691265fast/forms/text-control-intrinsic-widths.html
    12701266fast/forms/textarea-paste-newline.html
     
    23022298fast/forms/radio_checked.html
    23032299fast/forms/radio_checked_dynamic.html
    2304 fast/forms/range-thumb-height-percentage.html
    23052300fast/forms/search-cancel-button-style-sharing.html
    23062301fast/forms/search-display-none-cancel-button.html
     
    23272322fast/forms/select-visual-hebrew.html
    23282323fast/forms/select-writing-direction-natural.html
    2329 fast/forms/slider-padding.html
    2330 fast/forms/slider-thumb-shared-style.html
    2331 fast/forms/slider-thumb-stylability.html
    23322324fast/forms/stuff-on-my-optgroup.html
    23332325fast/forms/tabbing-input-iframe.html
     
    23432335fast/forms/textfield-outline.html
    23442336fast/forms/textfield-overflow.html
    2345 fast/forms/thumbslider-crash.html
    2346 fast/forms/thumbslider-no-parent-slider.html
    23472337fast/forms/visual-hebrew-text-field.html
    23482338fast/frames/001.html
     
    52135203fast/events/ondrop-text-html.html
    52145204fast/events/prevent-drag-to-navigate.html
    5215 fast/forms/slider-delete-while-dragging-thumb.html
    52165205fast/events/tab-focus-anchor.html
    52175206http/tests/local/drag-over-remote-content.html
     
    59275916# https://bugs.webkit.org/show_bug.cgi?id=40269
    59285917media/controls-drag-timebar.html
     5918
     5919# GTK+ theme-rendered widgets do not support CSS transforms
     5920# https://bugs.webkit.org/show_bug.cgi?id=40139
     5921fast/forms/slider-transformed.html
     5922fast/forms/slider-transformed.html
     5923
     5924# Some input type=range tests fail because of the size
     5925# of the slider thumb in GTK+ themes.
     5926fast/forms/slider-mouse-events.html
     5927fast/forms/slider-zoomed.html
  • trunk/WebCore/ChangeLog

    r60802 r60805  
    293293        (WebCore::HTMLTokenizer::parseTag):
    294294        * html/HTMLTokenizer.h:
     295
     2962010-06-07  Martin Robinson  <mrobinson@igalia.com>
     297
     298        Reviewed by Oliver Hunt.
     299
     300        [GTK] HTML5 input type=range is not drawn
     301        https://bugs.webkit.org/show_bug.cgi?id=39561
     302
     303        Support HTML5 range widgets. They are now drawn using the standard
     304        GTK+ theme drawing mechanism.
     305
     306        * platform/gtk/RenderThemeGtk.cpp:
     307        (WebCore::supportsFocus): Add focus support for parts of sliders.
     308        (WebCore::setMozillaState):
     309        Add the GtkThemeWidgetType argument and honor depressed states for slider thumbs.
     310        (WebCore::paintMozillaGtkWidget): Pass in the widget type to setMozillaState.
     311        (WebCore::RenderThemeGtk::paintSliderTrack): Added.
     312        (WebCore::RenderThemeGtk::adjustSliderTrackStyle): Added.
     313        (WebCore::RenderThemeGtk::paintSliderThumb): Added.
     314        (WebCore::RenderThemeGtk::adjustSliderThumbStyle): Added.
     315        (WebCore::RenderThemeGtk::adjustSliderThumbSize): Added support for non-media sliders.
     316        * platform/gtk/RenderThemeGtk.h: Added new method declarations.
    295317
    2963182010-06-07  Martin Robinson  <mrobinson@igalia.com>
  • trunk/WebCore/platform/gtk/RenderThemeGtk.cpp

    r60724 r60805  
    214214    case RadioPart:
    215215    case CheckboxPart:
     216    case SliderHorizontalPart:
     217    case SliderVerticalPart:
    216218        return true;
    217219    default:
     
    276278}
    277279
    278 static void setMozillaState(const RenderTheme* theme, GtkWidgetState* state, RenderObject* o)
     280static void setMozillaState(const RenderTheme* theme, GtkThemeWidgetType type, RenderObject* o, GtkWidgetState* state)
    279281{
    280282    state->active = theme->isPressed(o);
     
    285287    state->isDefault = false;
    286288    state->canDefault = false;
    287     state->depressed = false;
     289
     290
     291    // FIXME: The depressed value should probably apply for other theme parts too.
     292    // It must be used for range thumbs, because otherwise when the thumb is pressed,
     293    // the rendering is incorrect.
     294    if (type == MOZ_GTK_SCALE_THUMB_HORIZONTAL || type == MOZ_GTK_SCALE_THUMB_VERTICAL)
     295        state->depressed = theme->isPressed(o);
     296    else
     297        state->depressed = false;
    288298}
    289299
     
    302312
    303313    GtkWidgetState mozState;
    304     setMozillaState(theme, &mozState, o);
     314    setMozillaState(theme, type, o, &mozState);
    305315
    306316    int flags;
     
    531541}
    532542
     543bool RenderThemeGtk::paintSliderTrack(RenderObject* object, const RenderObject::PaintInfo& info, const IntRect& rect)
     544{
     545    ControlPart part = object->style()->appearance();
     546    ASSERT(part == SliderHorizontalPart || part == SliderVerticalPart);
     547
     548    GtkThemeWidgetType gtkPart = MOZ_GTK_SCALE_HORIZONTAL;
     549    if (part == SliderVerticalPart)
     550        gtkPart = MOZ_GTK_SCALE_VERTICAL;
     551
     552    return paintMozillaGtkWidget(this, gtkPart, object, info, rect);
     553}
     554
     555void RenderThemeGtk::adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
     556{
     557    style->setBoxShadow(0);
     558}
     559
     560bool RenderThemeGtk::paintSliderThumb(RenderObject* object, const RenderObject::PaintInfo& info, const IntRect& rect)
     561{
     562    ControlPart part = object->style()->appearance();
     563    ASSERT(part == SliderThumbHorizontalPart || part == SliderThumbVerticalPart);
     564
     565    GtkThemeWidgetType gtkPart = MOZ_GTK_SCALE_THUMB_HORIZONTAL;
     566    if (part == SliderThumbVerticalPart)
     567        gtkPart = MOZ_GTK_SCALE_THUMB_VERTICAL;
     568
     569    return paintMozillaGtkWidget(this, gtkPart, object, info, rect);
     570}
     571
     572void RenderThemeGtk::adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle* style, Element*) const
     573{
     574    style->setBoxShadow(0);
     575}
     576
    533577void RenderThemeGtk::adjustSliderThumbSize(RenderObject* o) const
    534578{
     579    ControlPart part = o->style()->appearance();
    535580#if ENABLE(VIDEO)
    536     if (o->style()->appearance() == MediaSliderThumbPart) {
     581    if (part == MediaSliderThumbPart) {
    537582        o->style()->setWidth(Length(m_mediaSliderThumbWidth, Fixed));
    538583        o->style()->setHeight(Length(m_mediaSliderThumbHeight, Fixed));
    539     }
     584    } else
    540585#endif
     586    if (part == SliderThumbHorizontalPart || part == SliderThumbVerticalPart) {
     587        gint width, height;
     588        moz_gtk_get_scalethumb_metrics(part == SliderThumbHorizontalPart ? GTK_ORIENTATION_HORIZONTAL : GTK_ORIENTATION_VERTICAL, &width, &height);
     589        o->style()->setWidth(Length(width, Fixed));
     590        o->style()->setHeight(Length(height, Fixed));
     591    }
    541592}
    542593
  • trunk/WebCore/platform/gtk/RenderThemeGtk.h

    r60440 r60805  
    123123    virtual bool paintSearchFieldCancelButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
    124124
    125     virtual void adjustSliderThumbSize(RenderObject*) const;
     125    virtual bool paintSliderTrack(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     126    virtual void adjustSliderTrackStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     127
     128    virtual bool paintSliderThumb(RenderObject*, const RenderObject::PaintInfo&, const IntRect&);
     129    virtual void adjustSliderThumbStyle(CSSStyleSelector*, RenderStyle*, Element*) const;
     130
     131    virtual void adjustSliderThumbSize(RenderObject* object) const;
    126132
    127133#if ENABLE(VIDEO)
Note: See TracChangeset for help on using the changeset viewer.