Clean up the Inspector's WebSocket code and prevent it from dropping messages.

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

Reviewed by Joseph Pecoraro.

* UserInterface/InspectorFrontendHostStub.js:
(.WebInspector.InspectorFrontendHostStub.prototype.initializeWebSocket): Added. Create the socket
and call _sendPendingMessagesToBackendIfNeeded.
(.WebInspector.InspectorFrontendHostStub.prototype.sendMessageToBackend): Store messages as pending
if the socket isn't ready yet. Call _sendPendingMessagesToBackendIfNeeded.
(.WebInspector.InspectorFrontendHostStub.prototype._sendPendingMessagesToBackendIfNeeded): Added.
* UserInterface/Main.js:
(WebInspector._initializeWebSocketIfNeeded): Move socket creation to initializeWebSocket.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155966 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Get rid of a couple unneeded NeverDestroyed::get() calls
https://bugs.webkit.org/show_bug.cgi?id=121500

Reviewed by Andreas Kling.

* css/CSSSelector.cpp:
(WebCore::CSSSelector::parsePseudoType): No need to call get() here.
* dom/make_names.pl:
(printFactoryCppFile): Ditto.
(printWrapperFactoryCppFile): Ditto.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155967 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make SVGTransform::valueAsString use StringBuilder
https://bugs.webkit.org/show_bug.cgi?id=121498

Reviewed by Andreas Kling.

Source/WebCore:

* svg/SVGTransform.cpp:
(WebCore::SVGTransform::valueAsString): Use StringBuilder constently to
avoid creating temporary String objects that cause additional, slow
memory allocation.

Source/WTF:

* wtf/text/StringBuilder.cpp: Added appendNumber functions corresponding to all remaining
String::number functions. If we find we don't need all of these we can delete them later,
but I don't want to give clients a reason to prefer less-efficient API to StringBuilder.
* wtf/text/StringBuilder.h: Ditto.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155968 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Shrink SVGElement::cssPropertyIdForSVGAttributeName and cssPropertyToTypeMap
https://bugs.webkit.org/show_bug.cgi?id=121499

Reviewed by Andreas Kling.

* svg/SVGElement.cpp:
(WebCore::populateAttributeNameToCSSPropertyIDMap): Added. Code that used to
be in SVGElement::cssPropertyIdForSVGAttributeName to build a map that maps
attribute names to CSS property IDs, but without the multiple unrolled calls
to HashMap functions.
(WebCore::populateAttributeNameToAnimatedPropertyTypeMap): Added. Code that
used to be in cssPropertyToTypeMap, but without the multiple unrolled calls
to HashMap functions.
(WebCore::attributeNameToAnimatedPropertyTypeMap): Renamed from
cssPropertyToTypeMap, a confusingly inaccurate and imprecise name, and
reimplemented using the populate function.
(WebCore::SVGElement::animatedPropertyTypeForAttribute): Updated to call
attributeNameToAnimatedPropertyTypeMap, and also removed the double hashing
that was done by calling contains followed by get.
(WebCore::SVGElement::cssPropertyIdForSVGAttributeName): Rewrote to use
populateAttributeNameToCSSPropertyIDMap.
(WebCore::SVGElement::isAnimatableCSSProperty): Updated to call the new
attributeNameToAnimatedPropertyTypeMap.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155969 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Further shrink table-populating code by making the tables read-only data and preventing inlining
https://bugs.webkit.org/show_bug.cgi?id=121468

Reviewed by Sam Weinig.

* bindings/scripts/StaticString.pm:
(GenerateStrings): Eliminated the xxxImpl globals. We definitely did not need
globals for these, much less read-write data. Instead, write the expression at
each site where we need them.
(GenerateStringAsserts): This is one such site (see above).
* css/CSSSelector.cpp:
(WebCore::populatePseudoTypeByNameMap): Mark this function NEVER_INLINE and
add static to make sure the table ends up in read-only data.
* dom/make_names.pl:
(printDefinitions): Write the xxxImpl expression (see above).
(printFactoryCppFile): Ditto. Also mark the populate function NEVER_INLINE and
add static to make sure the table ends up in read-only data.
(printWrapperFactoryCppFile): Ditto.
* html/HTMLElement.cpp:
(WebCore::populateEventNameForAttributeLocalNameMap): Mark this function
NEVER_INLINE and add static to makes sure the table ends up in read-only data.

* platform/text/UnicodeRange.cpp: Added a const to make this read-only data.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155970 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove unused function didSetSelectionTypesForPasteboard from EditorClient.
https://bugs.webkit.org/show_bug.cgi?id=121464

Reviewed by Darin Adler.

Source/WebCore: 

This method was only implemented in WebEditorClient.mm for Mac where it was
calling a private delegate that is no longer in use.
This patch removes it for all the platforms.
I've also removed setTypes and writeAfterSettingTypes from the implementation
of the Pasteboard class for Mac.

* editing/mac/EditorMac.mm:
(WebCore::Editor::writeSelectionToPasteboard): Now calls write instead of
setTypes and writeAfterSettingTypes.
* loader/EmptyClients.h: Removed didSetSelectionTypesForPasteboard.
* page/EditorClient.h: Ditto.
* platform/Pasteboard.h: Removed setTypes and writeAfterSettingTypes.
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::writeSelection): Removed call to didSetSelectionTypesForPasteboard.
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::write): Added to replace setTypes and writeAfterSettingTypes.

Source/WebKit/efl: 

* WebCoreSupport/EditorClientEfl.cpp:
* WebCoreSupport/EditorClientEfl.h:

Source/WebKit/gtk: 

* WebCoreSupport/EditorClientGtk.cpp:
* WebCoreSupport/EditorClientGtk.h:

Source/WebKit/mac: 

This method was only implemented in WebEditorClient.mm for Mac where it was
calling a private delegate that is no longer in use.

* DefaultDelegates/WebDefaultEditingDelegate.m:
* WebCoreSupport/WebEditorClient.h:
* WebCoreSupport/WebEditorClient.mm:
* WebView/WebEditingDelegatePrivate.h:

Source/WebKit/qt: 

* WebCoreSupport/EditorClientQt.cpp:
* WebCoreSupport/EditorClientQt.h:

Source/WebKit/win: 

* WebCoreSupport/WebEditorClient.cpp:
* WebCoreSupport/WebEditorClient.h:

Source/WebKit/wince: 

* WebCoreSupport/EditorClientWinCE.cpp:
* WebCoreSupport/EditorClientWinCE.h:

Source/WebKit2: 

* WebProcess/WebCoreSupport/WebEditorClient.cpp:
* WebProcess/WebCoreSupport/WebEditorClient.h:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155971 268f45cc-cd09-0410-ab3c-d52691b4dbfc
RenderBR should not be RenderText
https://bugs.webkit.org/show_bug.cgi?id=121221

Rubber-stamped by Andreas Kling.
        
Fix assertion in these tests:

fast/repaint/selection-rl.html
fast/writing-mode/horizontal-bt-replaced-selection.html
fast/writing-mode/vertical-rl-replaced-selection.html

* rendering/InlineBox.cpp:
(WebCore::InlineBox::nodeAtPoint):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155972 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix a typo.

* TestWebKitAPI/Tests/WTF/HashMap.cpp:
(TestWebKitAPI::TEST):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155973 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[CSS Regions] Layout Test for selection direction
https://bugs.webkit.org/show_bug.cgi?id=121501

Reviewed by Darin Adler.

Selection follows DOM tree, so the highlighted text in this test case is
the opposite to what the user is actually selecting. This was not
working properly from r139197 to r155058, so adding a Layout Test to
prevent future breaks. It is a reftest comparing regions and absolute
positions behavior.

* fast/regions/selection-direction-expected.html: Added.
* fast/regions/selection-direction.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155974 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add isTextOrBR() and use it
https://bugs.webkit.org/show_bug.cgi?id=121506

Reviewed by Darin Adler.

It is a popular test.

* dom/Document.cpp:
(WebCore::Document::updateHoverActiveState):
* editing/Editor.cpp:
(WebCore::findFirstMarkable):
* editing/TextIterator.cpp:
(WebCore::ignoresContainerClip):
* rendering/InlineBox.cpp:
(WebCore::InlineBox::logicalHeight):
* rendering/InlineIterator.h:
(WebCore::isIteratorTarget):
* rendering/RenderBlock.cpp:
(WebCore::InlineMinMaxIterator::next):
* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::layoutInlineChildren):
* rendering/RenderCounter.cpp:
(WebCore::planCounter):
* rendering/RenderObject.h:
(WebCore::RenderObject::isTextOrBR):
* rendering/RenderTreeAsText.cpp:
(WebCore::write):
* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::ascentAndDescentForBox):
(WebCore::RootInlineBox::verticalPositionForBox):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155975 268f45cc-cd09-0410-ab3c-d52691b4dbfc
AX: Expose ARIA Busy Notifications
https://bugs.webkit.org/show_bug.cgi?id=121451

Patch by Samuel White <samuel_white@apple.com> on 2013-09-17
Reviewed by Darin Adler.

Source/WebCore:

Added AXElementBusyChanged notification that posts when aria-busy is toggled. This
enables screen readers to detect busy states without polling the focused element.

Test: platform/mac/accessibility/element-busy-changed.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::handleAttributeChanged):
* accessibility/AXObjectCache.h:
* accessibility/mac/AXObjectCacheMac.mm:
(WebCore::AXObjectCache::postPlatformNotification):

LayoutTests:

Added test to verify that elements post AXElementBusyChanged notifications when aria-busy is toggled.

* platform/mac/accessibility/element-busy-changed-expected.txt: Added.
* platform/mac/accessibility/element-busy-changed.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155976 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Hardware accelerated CSS transitions appear pixelated when scaled up using transform
https://bugs.webkit.org/show_bug.cgi?id=27684
<rdar://problem/6134606>

Source/WebCore:

Reviewed by Dean Jackson.

Take transforms and animations into account when computing the contentsScale
for a layer, so that scaled-up layers remain sharp most of the time.

In its recursiveCommitChanges() tree walk, GraphicsLayerCA now tracks
a root-relative transform, and extracts from that transform the X and Y
scales which it uses to scale the backing store.

If the layer has transform animations on it, we keep around
a transformation matrix for the animation endpoints (or keyframes),
pick up the state that has the larger impact on the root-relative scale,
and use that as the layer's transform, and the transform when recursing
over descendants.

Tests: compositing/contents-scale/animating.html
       compositing/contents-scale/scaled-ancestor.html
       compositing/contents-scale/simple-scale.html
       compositing/contents-scale/z-translate.html

* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::maxScaleFromTransform): Decompose the transform if necesssary
to extract the X and Y scale components.
(WebCore::GraphicsLayerCA::GraphicsLayerCA): Initialize m_rootRelativeScaleFactor.
(WebCore::GraphicsLayerCA::flushCompositingState): Supply a TransformationMatrix
for the root of the recursion.
(WebCore::GraphicsLayerCA::layerTransform): This code was factored out of
computeVisibleRect(), and optionally takes a custom transform.
(WebCore::GraphicsLayerCA::computeVisibleRect): Use the layerTransform() function.
(WebCore::GraphicsLayerCA::updateRootRelativeScale): Given a transform from the root,
find the max scale factor by multiplying the various animation endpoint matrices and picking
the one with the biggest impact on scale. Use this to set m_rootRelativeScaleFactor, and
set the flag to say that we need to update contentsScale.
(WebCore::GraphicsLayerCA::recursiveCommitChanges):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers): After updating
animations, call updateRootRelativeScale() to update m_rootRelativeScaleFactor.
(WebCore::GraphicsLayerCA::updateAnimations): We have a side table of animation name to
TransformationMatrix, so figure out which entries can be removed from that side table,
and remove them.
(WebCore::GraphicsLayerCA::setAnimationOnLayer):
(WebCore::GraphicsLayerCA::appendToUncommittedAnimations): Store the matrices for
animation endpoints/keyframes in the m_animationTransforms side table. We don't store
them directly in LayerPropertyAnimation because we just want the final matrix for
a transform list, and using a side table makes ownership easier to manage.
(WebCore::GraphicsLayerCA::getTransformFromAnimationsWithMaxScaleImpact):
goes through the matrices for the running animation endpoints/keyframes, and
multiplies each with the transform up to this layer to find the matrix with the
larger impact on scale.
(WebCore::GraphicsLayerCA::setTransformAnimationEndpoints): Returns a vector
of TransformationMatrix for the from and to states.
(WebCore::GraphicsLayerCA::setTransformAnimationKeyframes): Returns a vector
of TransformationMatrix for the keyframes.
(WebCore::GraphicsLayerCA::updateContentsScale): Include m_rootRelativeScaleFactor in the
scale factor computation.
(WebCore::GraphicsLayerCA::dumpAdditionalProperties): If we're dumping visible rects,
also dump the contentsScale. Convenient at these are useful to look at together, and I didn't
want to pollute Internals with yet more flags.
* platform/graphics/ca/GraphicsLayerCA.h:
(WebCore::GraphicsLayerCA::LayerPropertyAnimation::LayerPropertyAnimation): Formatting.

LayoutTests:

Reviewed by Dean Jackson.

New tests that dump contentsScale under various scaling scenarios:

* compositing/contents-scale/animating-expected.txt: Added.
* compositing/contents-scale/animating.html: Added.
* compositing/contents-scale/scaled-ancestor-expected.txt: Added.
* compositing/contents-scale/scaled-ancestor.html: Added.
* compositing/contents-scale/simple-scale-expected.txt: Added.
* compositing/contents-scale/simple-scale.html: Added.
* compositing/contents-scale/z-translate-expected.txt: Added.
* compositing/contents-scale/z-translate.html: Added.

These tests had Mac-specific results (which include visible rects and now
contents scale) in the cross-platform directory, so cleaned up the cross-platform
results and moved the Mac results to platform-mac.

* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants-expected.txt:
* compositing/overflow/clipping-behaviour-change-is-not-propagated-to-descendants2-expected.txt:
* compositing/visible-rect/2d-transformed-expected.txt:
* compositing/visible-rect/3d-transform-style-expected.txt:
* compositing/visible-rect/3d-transformed-expected.txt:
* compositing/visible-rect/animated-expected.txt:
* compositing/visible-rect/animated-from-none-expected.txt:
* compositing/visible-rect/clipped-by-viewport-expected.txt:
* compositing/visible-rect/clipped-visible-rect-expected.txt:
* compositing/visible-rect/flipped-preserve-3d-expected.txt:
* compositing/visible-rect/iframe-and-layers-expected.txt:
* compositing/visible-rect/nested-transform-expected.txt:
* compositing/visible-rect/scrolled-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-clamped-expected.txt:
* platform/mac/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt:
* platform/mac/compositing/tiling/tile-cache-zoomed-expected.txt:
* platform/mac/compositing/visible-rect/2d-transformed-expected.txt: Copied from LayoutTests/compositing/visible-rect/2d-transformed-expected.txt.
* platform/mac/compositing/visible-rect/3d-transform-style-expected.txt: Copied from LayoutTests/compositing/visible-rect/3d-transform-style-expected.txt.
* platform/mac/compositing/visible-rect/3d-transformed-expected.txt: Copied from LayoutTests/compositing/visible-rect/3d-transformed-expected.txt.
* platform/mac/compositing/visible-rect/animated-expected.txt: Copied from LayoutTests/compositing/visible-rect/animated-expected.txt.
* platform/mac/compositing/visible-rect/animated-from-none-expected.txt: Copied from LayoutTests/compositing/visible-rect/animated-from-none-expected.txt.
* platform/mac/compositing/visible-rect/clipped-by-viewport-expected.txt: Copied from LayoutTests/compositing/visible-rect/clipped-by-viewport-expected.txt.
* platform/mac/compositing/visible-rect/clipped-visible-rect-expected.txt: Copied from LayoutTests/compositing/visible-rect/clipped-visible-rect-expected.txt.
* platform/mac/compositing/visible-rect/flipped-preserve-3d-expected.txt: Copied from LayoutTests/compositing/visible-rect/flipped-preserve-3d-expected.txt.
* platform/mac/compositing/visible-rect/iframe-and-layers-expected.txt: Copied from LayoutTests/compositing/visible-rect/iframe-and-layers-expected.txt.
* platform/mac/compositing/visible-rect/iframe-no-layers-expected.txt:
* platform/mac/compositing/visible-rect/nested-transform-expected.txt: Copied from LayoutTests/compositing/visible-rect/nested-transform-expected.txt.
* platform/mac/compositing/visible-rect/scrolled-expected.txt: Copied from LayoutTests/compositing/visible-rect/scrolled-expected.txt.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155977 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Speculative build fix after r155963

* WebKitCOMAPI.cpp:
(classFactory): Use nullptr rather than 0 for HashMap.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155978 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Unreviewed build fix after r155963.

* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::evaluateScriptInIsolatedWorld): Pass nullptr rather than 0.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@155979 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Windows] Disable a number of failing tests to help the EWS system run more rapidly.

* platform/win/TestExpectations:



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