paragraphs with different directionality in textarea with unicode-bidi: plaintext are aligned the same
https://bugs.webkit.org/show_bug.cgi?id=71194

Reviewed by David Hyatt.

Merged from Blink r157263 by <igor.o@sisa.samsung.com>
<https://src.chromium.org/viewvc/blink?revision=157263&view=revision>

Source/WebCore:

In the css3-text spec (http://www.w3.org/TR/css3-text/#bidi-linebox):

The start and end edges of a line box are determined by the inline
base direction of the line box. In most cases, this is given by
its containing block's computed ‘direction’. However if its
containing block has ‘unicode-bidi: plaintext’, the inline base
direction the line box must be determined by the base direction of
the bidi paragraph to which it belongs: that is, the bidi
paragraph for which the line box holds content.

This patch just implements the behavior described above modifying
updateLogicalWidthForAlignment and setting the bidi level of the
RootInlineBox.

* rendering/RenderBlockFlow.h:
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::updateLogicalWidthForAlignment):
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment):
(WebCore::RenderBlockFlow::createLineBoxesFromBidiRuns):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
(WebCore::RenderBlockFlow::deleteEllipsisLineBoxes):
(WebCore::RenderBlockFlow::checkLinesForTextOverflow):
(WebCore::RenderBlockFlow::startAlignedOffsetForLine):

LayoutTests:

Modified expectations for two layout tests to make them conforming to the spec.

* fast/text/international/unicode-bidi-plaintext-expected.html:
* platform/gtk/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
* platform/mac-mountainlion/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164867 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Shapes] Update line segments for ShapeInside only if the new line is wide enough
https://bugs.webkit.org/show_bug.cgi?id=129461

Reviewed by David Hyatt.

Shape-inside can make a line only narrower than the original line width, thus we don't need
to update the line/shape segments in fitBelowFloats for every single line inside shape-inside.
This patch adds a helper function, which updates the line segments, furthermore it updates the
line segments only when the content would fit without the shape.

No new tests, no behavior change.

* rendering/line/BreakingContextInlineHeaders.h: Use new helper.
(WebCore::updateSegmentsForShapes):
* rendering/line/LineWidth.cpp: Use new helper.
(WebCore::LineWidth::updateLineSegment): Add new helper.
(WebCore::LineWidth::fitBelowFloats):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164868 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Grid Layout] Fix positioning grid items using named grid lines/areas
https://bugs.webkit.org/show_bug.cgi?id=129372

Reviewed by Darin Adler.

Source/WebCore:

Our code was assuming that a <custom-ident> in
-webkit-grid-{column|row}-{start|end} and
-webkit-grid-{column|row} was always a grid area name. That's
wrong because the <custom-ident> could be also a explicitly named
grid line or the an implicitly named grid line created by a grid
area definition.

The style resolution code was not correct either. This patch fixes
it so it now matches the spec, which means that:
- first we try to match any existing grid area.
- then if there is a named grid line with the name
<custom-ident>-{start|end} for -webkit-grid-{column|row}-{start|end}
defined before the grid area then we use it instead of the grid
area.
- otherwise if there is a named grid line we resolve to the first such line.
- otherwise we treat it as 'auto'.

Fixing this uncovered a bug in GridPosition, we were not using the
name of the stored grid area to check if two GridPositions were
the same.

Tests: fast/css-grid-layout/grid-item-position-changed-dynamic.html
       fast/css-grid-layout/named-grid-lines-with-named-grid-areas-resolution.html

* css/StyleResolver.cpp:
(WebCore::gridLineDefinedBeforeGridArea): New function to check if
a given named grid line was defined before an implicit named grid
line created by a grid area definition.
(WebCore::StyleResolver::adjustNamedGridItemPosition): New
function that adjusts the position of a GridPosition parsed as a
grid area.
(WebCore::StyleResolver::adjustGridItemPosition): Use the new
function adjustNamedGridItemPosition to adjust the positions of
named grid lines.
* css/StyleResolver.h:
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::resolveNamedGridLinePositionFromStyle): Use GridPosition:: namespace.
(WebCore::RenderGrid::resolveGridPositionFromStyle): Ditto.
(WebCore::RenderGrid::resolveRowEndColumnEndNamedGridLinePositionAgainstOppositePosition): Ditto.
* rendering/RenderGrid.h:
* rendering/style/GridPosition.h:
(WebCore::GridPosition::adjustGridPositionForRowEndColumnEndSide): Moved from RenderGrid.cpp.
(WebCore::GridPosition::adjustGridPositionForSide): Ditto.
(WebCore::GridPosition::operator==): Use the named grid line to check equality.

LayoutTests:

Added a new test that checks that we correctly position grid items
using named grid lines, grid areas and also with the implicit
named grid lines created by grid areas.

I'm also importing a test from Blink that checks that we can
dynamically change the position of a grid item by changing the
name of the grid lines used to position it.

* fast/css-grid-layout/grid-item-position-changed-dynamic-expected.txt:
Merged from Blink r153913 by <jchaffraix@chromium.org>.
* fast/css-grid-layout/grid-item-position-changed-dynamic.html: Ditto.
* fast/css-grid-layout/named-grid-lines-with-named-grid-areas-resolution-expected.txt: Added.
* fast/css-grid-layout/named-grid-lines-with-named-grid-areas-resolution.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164869 268f45cc-cd09-0410-ab3c-d52691b4dbfc
MouseEvent.offsetX/Y should just return 0,0 for simulated clicks.
<https://webkit.org/b/129477>

Source/WebCore:

There's no need to compute the exact target-relative coordinates for
simulated mouse events, e.g those fired by HTMLElement.click().

The offsetX/Y properties are not supported by Firefox.

Test: fast/events/relative-offset-of-simulated-click.html

Reviewed by Alexey Proskuryakov.

* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::offsetX):
(WebCore::MouseRelatedEvent::offsetY):

LayoutTests:

Add a test documenting the behavior of offsetX/Y on the simulated
mouse events that get sent by HTMLElement.click().

Reviewed by Alexey Proskuryakov.

* fast/events/relative-offset-of-simulated-click-expected.txt: Added.
* fast/events/relative-offset-of-simulated-click.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164871 268f45cc-cd09-0410-ab3c-d52691b4dbfc
paragraphs with different directionality in textarea with unicode-bidi: plaintext are aligned the same
https://bugs.webkit.org/show_bug.cgi?id=71194

* platform/mac/fast/text/international/unicode-bidi-plaintext-in-textarea-expected.txt:
Updated Mac results for Mavericks (the original patch only updated Mountain Lion results).



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164872 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Mac] Disambiguate calls to [[window contentView] layer] and [... setLayer:]
https://bugs.webkit.org/show_bug.cgi?id=129491

Reviewed by Alexey Proskuryakov.

-[NSWindow contentView] returns a bare id, leading to ambiguity when calling
certain methods, including -layer and -setLayer:. Resolve the ambiguity by
explicitly casting the -contentView call to a NSView*.

* platform/mac/WebVideoFullscreenController.mm:
(-[WebVideoFullscreenController setupVideoOverlay:]):
(-[WebVideoFullscreenController windowDidLoad]):
(-[WebVideoFullscreenController windowDidExitFullscreen]):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164873 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Properly clear m_logicallyLastRun to remove use-after-free possibility
https://bugs.webkit.org/show_bug.cgi?id=129489

Reviewed by David Hyatt.

A use-after-free issue was caught in Blink because m_logicallyLastRun
is not cleared when the item it points to is deleted. Clearing it
turns the use-after-free into a segfault, and prevents any future
use-after-frees from happening.

* platform/text/BidiRunList.h:
(WebCore::BidiRunList<Run>::deleteRuns):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164876 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Source/WebKit2: VisitedLinkProvider should keep track of processes, not pages
https://bugs.webkit.org/show_bug.cgi?id=129497

Reviewed by Dan Bernstein.

Use a counted set of WebProcessProxy pointers instead of a set of pages.

* UIProcess/VisitedLinkProvider.cpp:
(WebKit::VisitedLinkProvider::~VisitedLinkProvider):
Assert that m_processes is null.

(WebKit::VisitedLinkProvider::addProcess):
Add the process to the set.

(WebKit::VisitedLinkProvider::removeProcess):
Remove the process from the set.

* UIProcess/VisitedLinkProvider.h:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::WebPageProxy):
If our process is currently running, add it to the visited link provider.
Otherwise it will be added in connectionWillOpen.

(WebKit::WebPageProxy::close):
If our process is running, remove it from the visited link provider.
Otherwise it's either crashed or not yet launched and will not have been added.

(WebKit::WebPageProxy::connectionWillOpen):
Add the process to the visited link provider.

(WebKit::WebPageProxy::resetStateAfterProcessExited):
Remove the process from the visited link provider.

Tools: Remove logging.

Reviewed by Dan Bernstein.

* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController browsingContextController:decidePolicyForNavigationAction:decisionHandler:]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164877 268f45cc-cd09-0410-ab3c-d52691b4dbfc
FTL should be able to call sin/cos directly on platforms where the intrinsic is busted
https://bugs.webkit.org/show_bug.cgi?id=129503

Reviewed by Mark Lam.

* ftl/FTLIntrinsicRepository.h:
* ftl/FTLOutput.h:
(JSC::FTL::Output::doubleSin):
(JSC::FTL::Output::doubleCos):
(JSC::FTL::Output::intrinsicOrOperation):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164878 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed build fix after r164832.

* UIProcess/ios/WebProcessProxyIOS.mm:
(WebKit::WebProcessProxy::updateProcessState): Switch from removed
'isValid' to 'state() != State::Running'



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164879 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION(r164835): It broke 10 JSC stress test on 32 bit platforms
https://bugs.webkit.org/show_bug.cgi?id=129488

Reviewed by Mark Lam.

Whoops, modify the right register.

* jit/JITCall32_64.cpp:
(JSC::JIT::compileLoadVarargs):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164880 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Mac, iOS] Incorrect ordering of construction arguments for out-of-band text elements
https://bugs.webkit.org/show_bug.cgi?id=129501
<rdar://problem/16198587>

Reviewed by Eric Carlson.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute): Correct order of arguments
to PlatformTextTrack.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164881 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add hiDPI support to DumpRenderTree/WebKitTestRunner without the need of reloading the test case.
https://bugs.webkit.org/show_bug.cgi?id=129438

Reviewed by Simon Fraser.

'hidpi-' prefixed test cases now trigger 2x scale factor on the testing
offscreen window. It makes testing subpixel rendering and positioning possible.

Both the offscreen window's and WebKit's scaling are set accordingly.

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(createWebViewAndOffscreenWindow): cleanup
(destroyWebViewAndOffscreenWindow): cleanup
(dumpRenderTree):
(changeWindowScaleIfNeeded):
(runTest):
* DumpRenderTree/mac/DumpRenderTreeWindow.h:
* DumpRenderTree/mac/DumpRenderTreeWindow.mm:
(-[DumpRenderTreeWindow initWithContentRect:styleMask:backing:defer:]): cleanup
* WebKitTestRunner/PlatformWebView.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::changeWindowScaleIfNeeded):
(WTR::TestInvocation::invoke):
* WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
(WTR::PlatformWebView::changeWindowScaleIfNeeded):
* WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
(WTR::PlatformWebView::changeWindowScaleIfNeeded):
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::PlatformWebView::changeWindowScaleIfNeeded):
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::changeWindowScaleIfNeeded):

LayoutTests:

* fast/borders/hidpi-simple-hairline-border-painting-expected.html: Added.
* fast/borders/hidpi-simple-hairline-border-painting.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164882 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS][WebKit2] Don't grab mach exception port on iOS
https://bugs.webkit.org/show_bug.cgi?id=129505
<rdar://problem/15972749>

Reviewed by Anders Carlsson.

Don't grab the mach exception port on iOS so we get crash logs for web process and network
process.

* Shared/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::didFinishLaunching):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164883 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Properly handle when Test.html is not present in Production builds.

https://bugs.webkit.org/show_bug.cgi?id=129506

Reviewed by Joseph Pecoraro.

Source/WebKit/mac:

* WebCoreSupport/WebInspectorClient.mm:
(-[WebInspectorWindowController inspectorTestPagePath]):
(-[WebInspectorWindowController webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):

Source/WebKit2:

* UIProcess/WebInspectorProxy.cpp:
(WebKit::isMainOrTestInspectorPage):
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::inspectorTestPageURL):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164884 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Enable breakpoints when adding a new breakpoint or enabling an existing breakpoint.

This eliminates a multi-step process for the user that can be confusing.

https://bugs.webkit.org/show_bug.cgi?id=129426

Reviewed by Joseph Pecoraro.

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.set breakpointsEnabled):
(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
* UserInterface/Views/DebuggerSidebarPanel.js:
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointsEnabledDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointsToggleButtonClicked):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164885 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Filters should test for area instead of single dimension
https://bugs.webkit.org/show_bug.cgi?id=123716

Reviewed by Dirk Schulze.

A filtered SVG element with a sigle dimension bigger than 5000
(counting the margin/border) will fail to render. So an element
with 4000x4000 will render fine, while another with 5000x10
won't. This patch instead tests against the total element area,
which fixes such cases.

Source/WebCore:

It also fixes some layer violations where FilterEffectRenderer and
RenderSVGResourceFilter were directly accessing the maximum filter
size in FilterEffect. Since before a somewhat bigger filter would
be aborted, it required to change the maximum kernel size
for blur filter (some filters are slower to run than others for
bigger SVGs).

Tests: svg/filters/big-height-filter-expected.svg
       svg/filters/big-height-filter.svg
       svg/filters/big-width-filter-expected.svg
       svg/filters/big-width-filter.svg

* platform/graphics/filters/FEGaussianBlur.cpp:
* platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::maxFilterArea): New function, returns the
maximum allowed element area (currently is 4096 x 4096).
(WebCore::FilterEffect::isFilterSizeValid): Now it tests for
element area instead of a single dimension. This code is reused by
FilterEffectRenderer.
* platform/graphics/filters/FilterEffect.h:
* rendering/FilterEffectRenderer.cpp:
(WebCore::FilterEffectRenderer::updateBackingStoreRect): Uses the
new function in FilterEffect to test for valid sizes.
(WebCore::FilterEffectRendererHelper::beginFilterEffect): Same case.
* rendering/svg/RenderSVGResourceFilter.cpp:
(WebCore::RenderSVGResourceFilter::fitsInMaximumImageSize): Test
for maximum area and properly changes the scale of transformed
element to fit.

LayoutTests:

The current patch fixes the rendering issue and at same time,
fixes some layer violations where FilterEffectRenderer and
RenderSVGResourceFilter were directly accessing the kMax value
in FilterEffect. Since before a somewhat bigger filter would
be aborted, it required to change the maximum kernel size
for blur filter (some filters are slower to run than others for
bigger SVGs).

* svg/filters/big-height-filter-expected.svg: Added.
* svg/filters/big-height-filter.svg: Added.
* svg/filters/big-width-filter-expected.svg: Added.
* svg/filters/big-width-filter.svg: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164886 268f45cc-cd09-0410-ab3c-d52691b4dbfc
AX: Crash in WebKit::WebPageProxy::registerWebProcessAccessibilityToken
https://bugs.webkit.org/show_bug.cgi?id=127387

Reviewed by Alexey Proskuryakov.

Speculative fix for crasher. We should check if the connection is still valid before proceeding.

* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::registerWebProcessAccessibilityToken):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164887 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Subpixel rendering: Add subpixel support to border type of double, groove, ridge, inset and outset.
https://bugs.webkit.org/show_bug.cgi?id=129226

Reviewed by Simon Fraser.

This is the conversion of double, inset, outset, groove and ridge border type
painting to support device pixel precision width/height.

Regression is covered by existing tests.

* rendering/RenderObject.cpp:
(WebCore::RenderObject::drawLineForBoxSide):
* rendering/RenderObject.h:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@164888 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WebKit2.TerminateTwice test is failing.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetStateAfterProcessExited):
Turns out this can be called even when we're in the launching state so don't try to
remove the process from the visited link provider when in that state.

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