• commit-queue@webkit.org's avatar
    Add a Setting to make position:fixed form a new stacking context · 7c209235
    commit-queue@webkit.org authored
    https://bugs.webkit.org/show_bug.cgi?id=87186
    
    Patch by James Robinson <jamesr@chromium.org> on 2012-05-23
    Reviewed by Adam Barth.
    
    Source/WebCore:
    
    position:fixed elements form a new stacking context in several mobile WebKit ports and in the Qt port always. To
    be consistent across devices, we want to try turning it on everywhere. This will likely cause compatibility
    issues, so we need a runtime setting in order to stage the change carefully.
    
    Tests: fast/block/positioning/fixed-position-stacking-context.html
           fast/block/positioning/fixed-position-stacking-context2.html
    
    * css/StyleResolver.cpp:
    (WebCore::StyleResolver::collectMatchingRulesForList):
    * page/Settings.cpp:
    (WebCore::Settings::Settings):
    * page/Settings.h:
    (WebCore::Settings::setFixedPositionCreatesStackingContext):
    (WebCore::Settings::fixedPositionCreatesStackingContext):
    (Settings):
    * testing/InternalSettings.cpp:
    (WebCore::InternalSettings::InternalSettings):
    (WebCore::InternalSettings::restoreTo):
    (WebCore::InternalSettings::setFixedPositionCreatesStackingContext):
    (WebCore):
    * testing/InternalSettings.h:
    (InternalSettings):
    * testing/InternalSettings.idl:
    
    Source/WebKit/chromium:
    
    * public/WebSettings.h:
    * src/WebSettingsImpl.cpp:
    (WebKit::WebSettingsImpl::setFixedPositionCreatesStackingContext):
    (WebKit):
    * src/WebSettingsImpl.h:
    (WebSettingsImpl):
    
    LayoutTests:
    
    Adds layout tests that confirm we don't creates stacking contexts for position:fixed by default, but we do when
    the fixedPositionCreatesStackingContext Setting is true.
    
    Qt and Blackberry will need different expectations since they set this via an #ifdef
    
    * fast/block/positioning/fixed-position-stacking-context-expected.png: Added.
    * fast/block/positioning/fixed-position-stacking-context-expected.txt: Added.
    * fast/block/positioning/fixed-position-stacking-context.html: Added.
    * fast/block/positioning/fixed-position-stacking-context2-expected.png: Added.
    * fast/block/positioning/fixed-position-stacking-context2-expected.txt: Added.
    * fast/block/positioning/fixed-position-stacking-context2.html: Added.
    
    git-svn-id: svn://svn.chromium.org/blink/trunk@118263 bbb929c8-8fbe-4397-9dbb-9b2b20218538
    7c209235