[WinCairo] Build WebKit Tools under VS2010
https://bugs.webkit.org/show_bug.cgi?id=112821

Reviewed by Tim Horton.

* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
Add WinCairo-specific build target.
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props: Added.
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj: Add WinCairo-specific build target.
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props: Added.
* DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeWinCairo.props: Added.
* DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
Add WinCairo-specific build target.
* DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
* DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
Add WinCairo-specific build target.
* TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj: Add
WinCairo-specific build target.
* TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props: Added.
* TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props: Added.
* WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj: Add WinCairo-
specific build target.
* WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Add
WinCairo-specific build target.
* win/record-memory/record-memory.vcxproj: Add WinCairo target.
* win/record-memory/record-memoryDebugWinCairo.props: Added.
* win/record-memory/record-memoryReleaseWinCairo.props: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Correct coordinated scrolling for RTL iframe and overflow:scroll
https://bugs.webkit.org/show_bug.cgi?id=112088

Patch by Tien-Ren Chen <trchen@chromium.org> on 2013-03-20
Reviewed by James Robinson.

Source/WebCore:

This patch adds appropriate offset in ScrollingCoordinatorChromium to
adjust impl-side scroll position to the range [0, maxPos - minPos].

This also corrects RenderLayer to return correct scroll position for RTL,
explained below:

There are 2 commonly used scroll offset coordinate systems in WebCore.

1. The scroll offset is the amount that needs to be translated when painting
   child elements in a RenderBox. The value can be negative when there is
   negative overflow (for RTL). The range will be within
   [overflow_top_left_corner, overflow_bottom_right_corner - client_size].
   This system is mainly used for painting and layer positioning.

2. The scroll offset will be always non-negative, and the range will be within
   [0, content_size - client_size]. This system is mainly used for scrollbars.

scrollOrigin is defined to convert between the two systems. scrollOrigin is always
non-negative, and equivalent to -overflow_top_left_corner.

The first system is used for ScrollableArea::scrollPosition/minimumScrollPosition/
maximumScrollPosition function family. So is it implemented in ScrollView/Frameview.
RenderLayer errorneously implemented scrollPosition in the second system,
and worse, returned minimumScrollPosition/maximumScrollPosition were totally non-sense.
This patch corrects RenderLayer to use the first coordinate system.

Test: compositing/rtl/rtl-overflow-scrolling.html
      ScrollingCoordinatorChromiumTest.rtlIframe

* page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:
(WebCore::ScrollingCoordinatorChromium::scrollableAreaScrollLayerDidChange):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollPosition):
(WebCore::RenderLayer::minimumScrollPosition):
(WebCore::RenderLayer::maximumScrollPosition):
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):

Source/WebKit/chromium:

Added test to ensure RTL iframe has appropriate impl-side scroll position.

* tests/ScrollingCoordinatorChromiumTest.cpp:
(WebKit::TEST_F):
(WebKit):
* tests/data/rtl-iframe-inner.html: Added.
* tests/data/rtl-iframe.html: Added.

LayoutTests:

This patch corrects scrollOrigin compensation for composited overflow:scroll.

compositing/rtl/rtl-overflow-scrolling.html is added to verify RTL divs
can be correctly scrolled to the left under accelerated scrolling mode.

fast/css/sticky/inline-sticky-abspos-child.html is modified to avoid sub-pixel
issue with Ahem font.

* compositing/rtl/rtl-overflow-scrolling-expected.png: Added.
* compositing/rtl/rtl-overflow-scrolling-expected.txt: Added.
* compositing/rtl/rtl-overflow-scrolling.html: Added.
* fast/css/sticky/inline-sticky-abspos-child-expected.html:
* fast/css/sticky/inline-sticky-abspos-child.html:
* platform/chromium/TestExpectations:
* platform/mac/compositing/rtl/rtl-overflow-scrolling-expected.txt: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@146399 268f45cc-cd09-0410-ab3c-d52691b4dbfc
"" + x where x is not a string should be optimized by the DFG to some manner of ToString conversion
https://bugs.webkit.org/show_bug.cgi?id=112845

Reviewed by Mark Hahnenberg.
        
I like to do "" + x. So I decided to make DFG recognize it, and related idioms.

* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupToPrimitive):
(FixupPhase):
(JSC::DFG::FixupPhase::fixupToString):
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::resultOfToPrimitive):
(DFG):
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGPredictionPropagationPhase.h:
(DFG):



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