[CSS Exclusions] The radius of a circle should be computed based on the shorter available dimension
https://bugs.webkit.org/show_bug.cgi?id=113255

Reviewed by Julien Chaffraix.

When we decide what should be the radius of a circle, we should choose the smallest available space. For instance when the
width or height is not resolvable for the circle we should not have a radius for it. This change modifies the behavior to
use the smaller available space, so we won't render unnecessary circle shapes.

Source/WebCore: 

Test: fast/exclusions/shape-inside/shape-inside-on-nested-container-with-unresolved-height.html

* rendering/ExclusionShape.cpp:
(WebCore::ExclusionShape::createExclusionShape):

LayoutTests: 

* fast/exclusions/shape-inside/shape-inside-on-nested-container-with-unresolved-height-expected.html: Added.
* fast/exclusions/shape-inside/shape-inside-on-nested-container-with-unresolved-height.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146938 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed gardening.
Marked compositing/iframes/scrolling-iframe.html flaky on all platforms.

* platform/chromium/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146939 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Non-paintsContent fixed position layer should not cause slow scrolling
https://bugs.webkit.org/show_bug.cgi?id=113238

Reviewed by James Robinson.

Source/WebCore:

Added NotCompositedForNoVisibleContent in ViewportConstrainedNotCompositedReason and set it in RLC.

Test: compositing/layer-creation/fixed-position-no-content-scroll-reason.html

* rendering/RenderLayer.h: Add NotCompositedForNoVisibleContent.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingForPosition): Set NotCompositedForNoVisibleContent reason when the fixed position layer has no visible content.

LayoutTests:

* compositing/layer-creation/fixed-position-no-content-scroll-reason-expected.txt: Added.
* compositing/layer-creation/fixed-position-no-content-scroll-reason.html: Copied from LayoutTests/compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html. Test case for the bug.
* compositing/layer-creation/fixed-position-in-view-dynamic.html: Set background of fixed layer to distinguish out-of-view case from no-content case.
* compositing/layer-creation/fixed-position-out-of-view-dynamic.html: Ditto.
* compositing/layer-creation/fixed-position-out-of-view-scroll-reason.html: Ditto.
* platform/chromium/compositing/layer-creation/fixed-position-in-view-dynamic-expected.txt: Removed. This was a wrong rebaseline related to this bug.
* platform/chromium/platform/chromium/virtual/softwarecompositing/layer-creation/fixed-position-in-view-dynamic-expected.txt: Removed. This was a wrong rebaseline related to this bug.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146940 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows, WinCairo] Scroll offset being applied to plugins during print operations.
https://bugs.webkit.org/show_bug.cgi?id=39889

Reviewed by Anders Carlsson.

This must be tested manually. See the issue for details.

* plugins/win/PluginViewWin.cpp:
(WebCore::PluginView::paintWindowedPluginIntoContext):
Revise the Windows implementation of the PluginView class
paintWindowedPluginIntoContext to use the containing window
position when computing the plugin's position for printing.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146941 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed gardening.
Marked compositing/rtl/rtl-iframe-* tests as ImageOnlyFailure instead of Failure.

* platform/chromium/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146942 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. Fix test after r146938. Since CSS Exclusions is still an experimental feature, shape-inside-on-nested-container-with-unresolved-height.html
test should enable CSS Exclusions for the testrunners first.  

* fast/exclusions/shape-inside/shape-inside-on-nested-container-with-unresolved-height.html: Set CSSExclisions enabled for DRT/WTR.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146943 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION(r144131): It made fast/js/regress/string-repeat-arith.html assert on 32 bit
https://bugs.webkit.org/show_bug.cgi?id=112106

Rubber stamped by Filip Pizlo.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkGeneratedTypeForToInt32): Get rid of the case for constants because
we would have done constant folding anyways on a ValueToInt32.
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean): Fixed a random compile error with this flag enabled.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146945 268f45cc-cd09-0410-ab3c-d52691b4dbfc
When a primary plugin is restarted, also start similar plugins
https://bugs.webkit.org/show_bug.cgi?id=113265

Reviewed by Tim Horton.

Source/WebCore:

If we detect a primary plugin that is snapshotted, we immediately restart it.
When this happens, we should also restart any other plugins that
match the same origin and type. This allows sites with a lot of
(geometrically) nearby plugins to behave as if they are a single big plugin.

Tests: plugins/snapshotting/autoplay-similar-to-dominant-after-delay.html
       plugins/snapshotting/autoplay-similar-to-dominant.html

* WebCore.exp.in: Export mimeTypeFromURL.
* html/HTMLPlugInImageElement.cpp:
(WebCore::addPlugInsFromNodeListMatchingPlugInOrigin): Use loadedMimeType helper.
(WebCore::HTMLPlugInImageElement::restartSimilarPlugIns): New method, which copied the
    existing code from userDidClickSnapshot.
(WebCore::HTMLPlugInImageElement::userDidClickSnapshot): Move the similar plugin detection
    out into another function and call it.
(WebCore::HTMLPlugInImageElement::setIsPrimarySnapshottedPlugIn): Call restartSimilarPlugIns.
(WebCore::HTMLPlugInImageElement::subframeLoaderWillCreatePlugIn): Use loadedMimeType helper.
* html/HTMLPlugInImageElement.h: Declaration of restartSimilarPlugIns.
(WebCore::HTMLPlugInImageElement::loadedMimeType): New helper method since this
    code was being often duplicated.

Source/WebKit2:

Remember the origin of the primary plugin, so that we can
autostart anything that is similar.

* WebProcess/WebCoreSupport/WebPlugInClient.cpp:
(WebKit::WebPlugInClient::WebPlugInClient): Keep a pointer to the WebPage.
(WebKit::WebPlugInClient::shouldAutoStartFromOrigin): Pass the page onto the process.
* WebProcess/WebCoreSupport/WebPlugInClient.h:
(WebPlugInClient): New member variable for the WebPage we were created with.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::determinePrimarySnapshottedPlugIn): Remember the origin information
    for the primary plugin.
(WebKit::WebPage::matchesPrimaryPlugIn): Returns true if we're seeing something that
    looks like the primary plugin.
* WebProcess/WebPage/WebPage.h: New method matchesPrimaryPlugIn.
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::shouldPlugInAutoStartFromOrigin): Check if the page thinks this is
    the primary plugin.
* WebProcess/WebProcess.h: Accept a reference to the page in shouldPlugInAutoStartFromOrigin.

LayoutTests:

Two new tests. The first has one big plugin (that should be detected as the primary)
and then a few smaller versions (which should autostart along with the primary).
The second has one big plugin, and then adds a similar one after a short delay.

* platform/mac-wk2/plugins/snapshotting/autoplay-similar-to-dominant-after-delay-expected.txt: Added.
* platform/mac-wk2/plugins/snapshotting/autoplay-similar-to-dominant-expected.txt: Added.
* plugins/snapshotting/autoplay-similar-to-dominant-after-delay.html: Added.
* plugins/snapshotting/autoplay-similar-to-dominant.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146946 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION: Sometimes, operations on proven strings ignore changes to the string prototype
https://bugs.webkit.org/show_bug.cgi?id=113353
<rdar://problem/13510778>

Source/JavaScriptCore: 

Reviewed by Mark Hahnenberg and Geoffrey Garen.
        
ToString should call speculateStringObject() even if you know that it's a string object, since
it calls it to also get the watchpoint. Note that even with this change, if you do
Phantom(Check:StringObject:@a), it might get eliminated just because we proved that @a is a
string object (thereby eliminating the prototype watchpoint); that's fine since ToString is
MustGenerate and never decays to Phantom.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileToStringOnCell):
(JSC::DFG::SpeculativeJIT::speculateStringObject):
(JSC::DFG::SpeculativeJIT::speculateStringOrStringObject):
* dfg/DFGSpeculativeJIT.h:
(SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::speculateStringObjectForStructure):

LayoutTests: 

Reviewed by Mark Hahnenberg and Geoffrey Garen.

* fast/js/jsc-test-list:
* fast/js/dfg-phantom-base-expected.txt: Added.
* fast/js/dfg-phantom-base.html: Added.
* fast/js/dfg-to-string-toString-becomes-bad-with-check-structure-expected.txt: Added.
* fast/js/dfg-to-string-toString-becomes-bad-with-check-structure.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146947 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix compile for OS(WIN) != PLATFORM(WIN)
https://bugs.webkit.org/show_bug.cgi?id=113356

Reviewed by Tim Horton.

* wtf/ProcessID.h:
(WTF::getCurrentProcessID):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146948 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit does not expose @required or @aria-required as AXRequired on select elements
https://bugs.webkit.org/show_bug.cgi?id=113339

Reviewed by Tim Horton.

Source/WebCore: 

Make sure button types can return the AXRequired attribute.

Tests: platform/mac/accessibility/aria-required-popup-button.html

* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):

LayoutTests: 

* platform/mac/accessibility/aria-required-popup-button-expected.txt: Added.
* platform/mac/accessibility/aria-required-popup-button.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146949 268f45cc-cd09-0410-ab3c-d52691b4dbfc
IndexedDB: Histogram cause of LevelDB write errors
https://bugs.webkit.org/show_bug.cgi?id=113350

Reviewed by Tony Chang.

Add histogram for source of LevelDB errors on Write in addition to
Open.

No new tests - no good way to test histogram code.

* platform/leveldb/LevelDBDatabase.cpp:
(WebCore::histogramLevelDBError):
(WebCore):
(WebCore::LevelDBDatabase::open):
(WebCore::LevelDBDatabase::write):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146950 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Compile fix - OS(WINDOWS), not OS(WIN).

* wtf/ProcessID.h:
(WTF::getCurrentProcessID):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146951 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed.  Rolled Chromium DEPS to r190706.  Requested by
danakj_ via sheriffbot.

Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2013-03-26

* DEPS:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146952 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make HTMLProgressElement::isDeterminate private
https://bugs.webkit.org/show_bug.cgi?id=113299

Reviewed by Kentaro Hara.

The only callsite of isDeterminate outside of HTMLProgressElement
is in StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes,
and we can replace it with Element::shouldAppearIndeterminate.

No new tests. Just a refactoring.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::sharingCandidateHasIdenticalStyleAffectingAttributes):
Use Element::shouldAppearIndeterminate.
* html/HTMLProgressElement.h:
(HTMLProgressElement): Make isDeterminate private.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146953 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Regression (r145601): out-of-bounds read in line breaking / new width cache
https://bugs.webkit.org/show_bug.cgi?id=113347

Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-03-26
Reviewed by Geoffrey Garen.

The values zero and 0xffff have special values with the default HashTraits. Those values
are also valid values for UChar.

To avoid any table inconsitency, switch from UChar to uint32_t as the key type for
the WidthCache's single char map. The traits is also changed to allow zero as a normal
value.

This makes no space or time change over the previous code because:
-The struct KeyValuePair was already 64bits due to the ABI alignment restrictions on floats.
-The two hashes take the same number of instructions.

* platform/graphics/WidthCache.h:
(WidthCache):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146954 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Test if non-immediate descendants obscure background
https://bugs.webkit.org/show_bug.cgi?id=113137

Reviewed by Simon Fraser.

Source/WebCore: 

The current obscuration test only covers immediate children. We can find more cases by looking deeper into descendants.
        
The patch makes the test sufficiently smart to stop a heavy fully obscured gif animation on micrsoft.com.

* loader/cache/CachedImage.cpp:
(WebCore::CachedImage::animationAdvanced):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleDidChange):
        
    Invalidate parents to max test depth.

(WebCore::RenderBox::backgroundPaintedExtent):
        
    Background painting is pixel snapped.

(WebCore::isCandidateForOpaquenessTest):
(WebCore::RenderBox::foregroundIsKnownToBeOpaqueInRect):
        
    Separate foreground testing and make it recursive.
    Add fast bailout for common static positioned case.
    Remove maximum child count, the fast bailouts should prevent long tests.
    Add maximum depth so we know how deep we need to invalidate in styleDidChange.

(WebCore::RenderBox::computeBackgroundIsKnownToBeObscured):
(WebCore):
* rendering/RenderBox.h:
(RenderBox):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::foregroundIsKnownToBeOpaqueInRect):
(WebCore):
(WebCore::RenderImage::computeBackgroundIsKnownToBeObscured):
        
* rendering/RenderImage.h:
(RenderImage):

LayoutTests: 

* fast/backgrounds/obscured-background-child-style-change-expected.html:
* fast/backgrounds/obscured-background-child-style-change.html:
* fast/repaint/obscured-background-no-repaint-expected.txt:
* fast/repaint/obscured-background-no-repaint.html:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146955 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[ca] Tell CA to clean up unused resources if a given WebProcess won't be drawing
https://bugs.webkit.org/show_bug.cgi?id=107539
<rdar://problem/13032692>

Reviewed by Simon Fraser.

* WebProcess/WebCoreSupport/mac/WebSystemInterface.mm:
(InitWebCoreSystemInterface): Update WebCoreSystemInterface.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage): Initially move the Page out of the window if necessary;
Page defaults to in-window, which is wrong in many cases - we depend on
Page::isInWindow being accurate to decide whether WebPage::setIsInWindow is actually
a state change or not.
(WebKit::WebPage::setIsInWindow):
* WebProcess/WebProcess.cpp: Inform WebProcess when we go on/off screen.
(WebKit::WebProcess::WebProcess):
(WebKit::WebProcess::pageDidMoveOnscreen): Keep track of the number of on-screen pages in this process.
(WebKit::WebProcess::pageWillMoveOffscreen): If the number of on-screen pages drops to zero,  clean up unused rendering resources.
* WebProcess/WebProcess.h:

Update WebSystemInterface.

* WebCoreSupport/WebSystemInterface.mm:
(InitWebCoreSystemInterface):

* platform/mac/WebCoreSystemInterface.h:
* platform/mac/WebCoreSystemInterface.mm:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146956 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Remove the WebVideoFrame, WebVideoFrameProvider, WebStreamTextureClient, and WebVideoLayer classes.
https://bugs.webkit.org/show_bug.cgi?id=112483

Reviewed by James Robinson.

Source/Platform:

These classes are no longer used, so remove them. And remove APIs
to provide them.

* Platform.gypi:
* chromium/public/WebCompositorSupport.h:
(WebKit):
* chromium/public/WebVideoFrame.h: Removed.
* chromium/public/WebVideoFrameProvider.h: Removed.
* chromium/public/WebVideoLayer.h: Removed.

Source/WebKit/chromium:

These classes are no longer used, so remove them.

* WebKit.gyp:
* public/WebMediaPlayer.h:
(WebKit):
(WebMediaPlayer):
* public/WebStreamTextureClient.h: Removed.
* public/WebVideoFrame.h: Removed.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146957 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Greening the mac bots.
https://bugs.webkit.org/show_bug.cgi?id=113361.

Not Reviewed.

* platform/mac/TestExpectations:



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