(WebCore::InputType::destroyShadowSubtree):
Remove all of ShadowRoot contents, and add a <shadow> element to each of
them. We don't remove ShadowRoots from the tree because it's not
supported well.

html/shadow/TextFieldDecorationElement.cpp:

(getDecorationRootAndDecoratedRoot): A helper function for decorate().
If the input element has a ShadowRoot with single <shadow> child, we
don't create new ShadowRoot and reuse it.
(WebCore::TextFieldDecorationElement::decorate):
Use getDecorationRootAndDecoratedRoot().

When it had no negotiated deflate-frame extension, if browser received the frame with
setting compressed bit, it should fail the connection, and it should cover both
enabling ZLIB port and disabling ZLIB port.

Test: http/tests/websocket/tests/hybi/reserved-bits.html

Modules/websockets/WebSocketDeflateFramer.cpp:

(WebCore::WebSocketDeflateFramer::inflate):

LayoutTests:

Solve the problem that Qt Webkit failed when runing the reserved-bits.html
Support both enabled ZLIB and disabled ZLIB scenarios.

This patch is just a minor clean up to Document::canNavigate. Eric
asked me to clean up the function when I moved it from FrameLoader. I'm
not sure this patch is much of a win, but at least the comments say
things that are more sensible now.

(AdminDashboardHandler.get_branches): Change the json format to allow platforms and tests to have
"hidden" boolean states.
(AdminDashboardHandler.get_platforms): Ditto.
(AdminDashboardHandler.get_builders): Just a cleanup. There is no clean for it to have a limit.
(AdminDashboardHandler.get_tests): Change the json format to add "hidden" boolean states.
(ChangeVisibilityHandler): Added.
(ChangeVisibilityHandler.post): Added. Changes the hidden-state (visibility) of a platform and a test.

(Notification):
(WebCore::Notification::cancel): Wrap in ENABLE(LEGACY_NOTIFICATIONS), and use close().
(WebCore::Notification::replaceId): Wrap in ENABLE(LEGACY_NOTIFICATIONS), and use tag().
(WebCore::Notification::setReplaceId): Wrap in ENABLE(LEGACY_NOTIFICATIONS), and use setTag().
(WebCore::Notification::tag):
(WebCore::Notification::setTag):

notifications/Notification.idl: Preserve cancel() and replaceID in ENABLE(LEGACY_NOTIFICATIONS), and

RIM PR: 136381
The code accounted for a now obsolete setup where we used one OpenGL
window for accelerated compositing and one native window for backing
store output, and let the windowing system composite those two. In that
setup an optimization to try and only update the window that had
changed was viable.

Nowadays, we either use an offscreen surface for accelerated
compositing output, which we blend onto the window containing the
backing store output, or render both backing store and accelerated
compositing output directly to one OpenGL window. We always have to
blit the backingstore contents and draw the accelerated compositing
output every frame with these code paths, so don't try to be clever
about it.

Even when we use an OpenGL window, the compositing surface can be non-
null, so don't try to glFinish() and swap the compositing surface when
the GLES2Context is tied to a window.

(WebCore::PageScriptDebugServer::didPause): Added assert for page and early return. Also assert that
m_pausedPage is null.
(WebCore::PageScriptDebugServer::didContinue): Page can be null if we are continuing because the Page closed.
So add a null check before using it. Added an assert that the page is null or m_pausedPage.
(WebCore::PageScriptDebugServer::didRemoveLastListener): Added assert for page.

CoreText have already the features enabled, here we added this to WebKit text layout and rendering.
A member function getCompositeFontReferenceFontData is added to the SimpleFontData class for the component font
correspond to the platformData, in this case, a NSFont. This is used when CoreText layout had resulted
a component of the Composite Font Reference and its corresponding SimpleFontData object is then cached
in the SimpleFontData object of the posting font (Composite Font Reference).

When glyphs are encoded to form the GlyphPage for rendering, the Composite Font Reference is handled throught
the CoreText layout path (using CTLine), here the resulting glyph is associated with a font which could
be not the original font request. In this case, these are the component fonts of the Composite Font
Reference. This is then identified and then added to the GlyphPage appropriately.

To support this feature, a member function isCompositeFontReference is added to FontPlatformData to
indicate a font is a Composite Font Reference. Also in order to pass the component font correctly a boolean
isPrinterFont is added to one the FontPlatformData constructors to describe the NSFont.

(WebCore::GlyphPage::fill):
In the case of Composite Font Reference, when iterate the runs, component font of Composite Font
Reference is used to fill the glyph index in the GlyphPage.

platform/graphics/mac/SimpleFontDataMac.mm:

(WebCore::SimpleFontData::getCompositeFontReferenceFontData):
Newly added method for the component fonts correspond to the platformData, in this case, a NSFont.
This SimpleFontData is created and cached in this object and will only be deleted when the destructor
if this is called.

Network Information APIs is to provide an interface for Web Applications to access
the underlying network information of device. In Web Application case, they need to know
what current network interface it uses. Because, it is important to know current network
information(bandwidth, metered) in mobile domain. Thus, Web Application can let user know
whether current network information via this new functionality. In addition, in streaming
service case, Web Application can control content resolution according to kind of network.

RenderThemeBlackBerry was using GraphicsContext::drawPath() that's added for BlackBerry internally.
But we already have fillPath() and strokePath() in GraphicsContext. So just substitute drawPath()
by them. Also fix a build issue by adding a #include line.

Enable animVal support for the last missing SVG DOM primitive: SVGAnimatedEnumeration.
It's a bit more involved than the others as we have to differentiate between the various
enumerations to use the correct SVGPropertyTraits<MyEnum>::fromString() code-path.

One SVGAnimatedEnumeration property in the SVG DOM is special: SVGAnimatedEnumeration orientType
from SVGMarkerElement. SVGMarkerElement exposes both the orientType and SVGAnimatedAngle orientAngle
SVG DOM properties and both get mapped to the same SVGNames::orientAttr ("orient" XML attribute).
That means that any animation of the orientAttr has to update both orientType & orientAngle.

This is a not a new requirement, we already support attributes like 'stdDeviation' from
SVGFEGaussianBlurElement, which get mapped to multiple SVG DOM objects: SVGAnimatedInteger stdDeviationX/Y.
The difference is that <integer-optional-integer> or <number-optional-number> animations use the
same type in the pair<xxx, xxx> (eg. both int, or both float). The 'orient' attribute needs to be
mapped to pair<xxx, yyy> types. Generalize the templates in SVGAnimatedTypeAnimator to support that.

We need to map the 'orient' attribute to a pair<SVGAngle, unsigned short> type, in order
to track both orientAngle & orientType at the same type. Fortunately SVGAnimatedAngle
is only used in the SVG DOM for SVGMarkerElements orientAngle property. We can directly
switch SVGAnimatedAngleAnimator to the new pair<SVGAngle, unsigned short> type instead
of having to introduce a special SVGAnimatedAngleAndEnumerationAnimator.

Added tests for all SVGAnimatedEnumeration properties in the SVG DOM, including an extensive set of tests
for the synchronization of the orientType / orientAngle properties, when they get animated.

(-[WebInspectorWindowController init]): Factored the URL code out of here into inspectorPagePath.
(-[WebInspectorWindowController inspectorPagePath]): Added.
(-[WebInspectorWindowController webView:decidePolicyForNavigationAction:request:frame:decisionListener:]): Added.
Only allow non-main frame and the inspector page. All other URLs will be opened in the inspected page.

Source/WebKit2:

UIProcess/WebInspectorProxy.cpp:

(WebKit::decidePolicyForNavigationAction): Added. Only allow non-main frame and the inspector page. All other URLs
will be opened in the inspected page.
(WebKit::WebInspectorProxy::createInspectorPage): Set the policy client and use decidePolicyForNavigationAction.

UIProcess/WebInspectorProxy.h: Made inspectorPageURL and inspectorBaseURL public for decidePolicyForNavigationAction.

This change fixes a mistake in r112667 where the CG platform did not properly handle
complex strokes. The mistake was to check for complex fills instead of complex strokes,
which resulted in all complex strokes rendering as black.

No new tests, this change is covered by the following existing tests that were regressed:
1) svg/custom/gradient-stroke-width.svg
2) svg/custom/transform-with-shadow-and-gradient.svg

Fix regression from r112391. The test excerising this code path is skipped on Lion, due to a libxml2 bug.
I didn't notice I broke preserveAspectRatio parsing for many corner cases, revert to old logic.

svg/SVGPreserveAspectRatio.cpp:

(WebCore::SVGPreserveAspectRatio::parse):

LayoutTests:

Reviewed by Dirk Schulze.

Unskip test, as the regression is fixed.

platform/qt/Skipped:

svg/custom/preserve-aspect-ratio-syntax.svg:

Remove one incorrect testcase (which was actually valid and thus doesn't result in a default pAR attribute value).
Can't rebaseline this on Mac Lion, as its skipped to a libxml2 bug, which will be addressed soon.

svg/dom/preserve-aspect-ratio-parser-expected.txt:

svg/dom/preserve-aspect-ratio-parser.html: Switch numbers to constants, so this test is actually readable.

Move the rule properties CSSOM wrapper ownership from the StylePropertySet to the rule itself.
This is preparation for bug 82728 (Split remaining CSSRules into internal and CSSOM types). This
temporarily grows the size of CSSStyleRule by a pointer (82728 will give the memory back and more)

RIM PR: 145660
Added manual test for testing the behavior of http authentication
challenge dialog. Both of these two files should be served over http.

ManualTests/blackberry/http-auth-challenge.html: Added.

ManualTests/blackberry/http-auth-challenge.php: Added.

Source/WebCore:

RIM PR: 145660
Fixed a regression introduced by r111810, we should cancel the new
request when user press cancel button in http authentication challenge
dialog, and we should also allow sending empty username and password
with the request.
Also removed redundant codes which checked the existence of the
FrameLoaderClient pointer, as we've already moved authenticationChallenge()
out of class FrameLoaderClient, it is not needed.

This patch moves all the MediaStream-related platform APIs from
WebKit/chromium/public/platform into Platform/chromium/public. This is
part of a larger project to more clearly separate the platform and
client portions of the Chromium WebKit API.

Delete WebKit/chromium/bridge. This was a directory we were
experimenting with storing WebCore-namespaced code. Now we're able to
actually keep that code in WebCore itself, which is much more sensible.

We finally arive at our destination. This patch actually moves
WebCore::ResourceHandle from Source/WebKit/chromium/src to
Source/WebCore/network/chromium, matching its location in other ports.
To make this happen, we also need to move WrappedResourceRequest and
WrappedResourceResponse.

Finally move to SVGAttributeMode on parsing SVG presentation attributes. SVG attributes are
mainly parsed in the strict mode, which affects strict parsing of colors and no spaces between
values and units. Unit less values are still allowed.

CoreText have already the features enabled, here we added this to WebKit text layout and rendering.
A member function getCompositeFontReferenceFontData is added to the SimpleFontData class for the component font
correspond to the platformData, in this case, a NSFont. This is used when CoreText layout had resulted
a component of the Composite Font Reference and its corresponding SimpleFontData object is then cached
in the SimpleFontData object of the posting font (Composite Font Reference).

When glyphs are encoded to form the GlyphPage for rendering, the Composite Font Reference is handled throught
the CoreText layout path (using CTLine), here the resulting glyph is associated with a font which could
be not the original font request. In this case, these are the component fonts of the Composite Font
Reference. This is then identified and then added to the GlyphPage appropriately.

To support this feature, a member function isCompositeFontReference is added to FontPlatformData to
indicate a font is a Composite Font Reference. Also in order to pass the component font correctly a boolean
isPrinterFont is added to one the FontPlatformData constructors to describe the NSFont.

(WebCore::GlyphPage::fill):
In the case of Composite Font Reference, when iterate the runs, component font of Composite Font
Reference is used to fill the glyph index in the GlyphPage.

platform/graphics/mac/SimpleFontDataMac.mm:

(WebCore::SimpleFontData::getCompositeFontReferenceFontData):
Newly added method for the component fonts correspond to the platformData, in this case, a NSFont.
This SimpleFontData is created and cached in this object and will only be deleted when the destructor
if this is called.

Mostly this is just replacing true/false with the correct new enum value
or removing true/false from the callsites when they would have been default anyway.
I think this makes the code *way* more clear.

The old code was extra confusing because the defaults were "true, false". :)
The new defaults are AllowStyleSharing, MatchAllRules.
It's very uncommon for callers to want to override either of these behaviors.
I think most callers which specify DisallowStyleSharing likely don't actually need to
(our style-sharing code should be smart enough to only share when safe anyway).

Implements additional object equality optimizations for the case that one
operand is predicted to be an easily speculated object (like FinalObject or
Array) and the other is either an easily speculated object or Other, i.e.
Null or Undefined.

2-5% speed-up on V8/raytrace, leading to a sub-1% progression on V8.

I also took the opportunity to clean up the control flow for the speculation
decisions in the various Compare opcodes. And to fix a build bug in SamplingTool.
And to remove debug cruft I stupidly committed in my last patch.

(WebKit::WebAccessibilityObject::boundingBoxRect):
Use pixelSnappedBoundingBoxRect instead of boundingBoxRect which returns
a LayoutRect.

src/WebFrameImpl.cpp:

(WebKit::WebFrameImpl::characterIndexForPoint):
Use roundedPoint instead of point for hit testing as ranges use screen
cordinates which are represented with pixel accuracy.

Source/WebKit/mac:

Change WebKit and WebKit2 platform code to use rounded locations and
pixel snapped rects and sizes. This largely avoids having to expose the
fractional layout types to the platform code.

Reviewed by Eric Seidel.

DOM/WebDOMOperations.mm:

(-[DOMNode _renderRect:]):

Source/WebKit/qt:

Reviewed by Eric Seidel.

Api/qwebelement.cpp:

(QWebElement::geometry):
Replace getRect with getPixelSnappedRect to avoid having to expose
subpixel types to the platform layer.

Api/qwebpage.cpp:

(QWebPagePrivate::TouchAdjuster::findCandidatePointForTouch):
Use pixel snapped element rect when comparing with the touch rect as the
touch rect use screen cordinates which are represented with pixel
accuracy.

WebCoreSupport/ChromeClientQt.h:

(WebCore::ChromeClientQt::scrollRectIntoView):
Change scrollRectIntoView to take a LayoutRect to match base class
interface.

Source/WebKit2:

Change WebKit and WebKit2 platform code to use rounded locations and
pixel snapped rects and sizes. This largely avoids having to expose the
fractional layout types to the platform code.

(WebCore::RenderBox::borderBoxRect):
Rename pixelSnappedBorderBoxRect to borderBoxRect and remove LayoutRect
version of same as we always want to use the pixel snapped version to
ensure proper rounding and alignment to device pixels.
(The way this rect is pixel snapped, using the m_frameRect location,
makes it hard for calling code to take the subpixel rect and correctly
snap it).

(WebCore::RenderBox::borderBoundingBox):

rendering/RenderBoxModelObject.h:

Change pure virtual definition of borderBoundingBox to return an IntRect
to match implementation in RenderBox.

This patch moves a number of files that implement parts of the platform
portion of the Chromium WebKit API from the WebKit layer to
WebCore/platform. These files are in the dependency cone of
ResourceHandle and have no dependencies on anything outside
WebCore/platform.

The problem is that shadow and blur (and custom filters - although not treated in this patch) need the full source image of
the surface that needs to be filtered. Until now the filter was computed only using the area defined by the dirty repaint rectangle.
Those filters need full image source because they displace pixel positions, meaning that pixels in the current dirty rectangle
have a dependency on pixels from the RenderLayer outside the dirty rect. See the bug pictures for an example of how that could go wrong.

The fix is to always keep a copy of the RenderLayer representation in memory. When repaint is needed we still invalidate
only the parts that changed, but the filter is computed using the full source image and not only the dirty rectangle.

In order to make that work, we needed the full repaint rectangle of the current RenderLayer and not just the clipped version that
we get through the ::paint methods. Also, because filters sometime need to repaint more than just the dirty area (because of the
outsets of the filters - ie blur, drop-shadow), it makes it easier to just capture all the repaints in the RenderLayer itself in a
similar way WebKit does now for composited layers. As a result the repaint container can also be a filtered layer (not just composited ones), so
that we can catch all the filter repaints in one place in the RenderLayer. Also with this change I removed the need to add visual overflow to
the RenderBox and also there's no need to patch the repaintUsingContainer. By the way, repaintUsingContainer did not always work because of the
LayoutState optimizations, so repaints during layout would fail (I know that that could be fixed by disabling the LayoutState for filtered areas).

Also part of this patch I extracted a function from RenderLayerCompositor::calculateCompositedBounds, so that we can also use it from RenderLayer.
I called it RenderLayer::calculateLayerBounds and there should be no change in functionality. It now also includes the outsets of the filter. I've
added a different bug to avoid adding the outsets when the filter is computed in hardware. That's because some platforms do not support that yet:​https://bugs.webkit.org/show_bug.cgi?id=81239

Also the visual overflow doesn't include the child RenderLayers, meaning that the outsets would have been applied to the border and not to the bounding box
of the RenderLayer. The end result was that some child RenderLayers could be clipped out of the filtered area.

(WebCore::FilterOperations::getOutsets): Drop shadow should only enlarge the outsets and never make them smaller.

rendering/FilterEffectRenderer.cpp:

(WebCore::FilterEffectRenderer::FilterEffectRenderer):
(WebCore::FilterEffectRenderer::build): Caching the operations.hasFilterThatMovesPixels() in the FilterEffectRenderer.
(WebCore::FilterEffectRenderer::updateBackingStore): It now returns true when the backing store was recreated, so that we can repaint it all.
(WebCore):
(WebCore::FilterEffectRendererHelper::prepareFilterEffect): Separated beginFilterEffect into two methods. One that computed the rects
and one that prepares the draw context.
(WebCore::FilterEffectRendererHelper::beginFilterEffect):
(WebCore::FilterEffectRendererHelper::applyFilterEffect):

(WebCore::RenderBox::computeRectForRepaint): No need to include the outsets in the repaint rect here, we will do it later in RenderLayer.
(WebCore::RenderBox::addVisualEffectOverflow): Removed outsets from the overflow.

rendering/RenderInline.cpp:

(WebCore::RenderInline::computeRectForRepaint): Removed the outsets from this method. We now compute that in
RenderLayer::setFilterBackendNeedsRepaintingInRect.

rendering/RenderLayer.cpp:

(WebCore):
In this change I introduce a new dirty rectangle used by filters. It accumulates all the repaint requests inside the filtered layer,
so that we can invalidate the areas that are outside the clipping rectangle. Such cases include "overflow:scroll" and "overflow:hidden", when
we still want to blur or drop shadow based on content that is not actually displayed on screen (but the shadow for that content is visible). That rectangle
is called m_filterRepaintRect and resets back to zero when the next repaint is finished. All the filtered layers that apply blur and drop-shadow
will have an extra backing surface and only the invalidated areas are repainted in that surface. This is very similar to how composited layers work.

(WebCore::RenderLayer::requiresFullLayerImageForFilters): Returns true in CPU mode and only if the layer needs the full source image of
the layer to compute the filter. Otherwise GPU layers already have access to the full bakcing image.
(WebCore::RenderLayer::enclosingFilterLayer): Returns the enclosing layer that returns true on requiresFullLayerImageForFilters.
(WebCore::RenderLayer::enclosingFilterRepaintLayer): Returns the enclosing layer that can be used to repaint the current layer. Usually that
is the RenderView layer or the parent RenderLayer that is composited.
(WebCore::RenderLayer::setFilterBackendNeedsRepaintingInRect): Intercepts all the repaint queries for the filtered layers and uses
enclosingFilterRepaintLayer to enforce the repaint using the parent container.

(WebCore::RenderLayer::paintLayerContents): Consolidated the filters code in one single place. Also, it is now sending the bounding box and the
dirty rect to the FilterEffectRendererHelper::prepareFilterEffect to make sure the backing store is repainted accordingly. In some cases it might
rewrite the dirty rectangle used to paint the current layer, so that all the dirty areas in the backing store are covered.
(WebCore::RenderLayer::calculateLayerBounds): Extracted from RenderLayerCompositor::calculateCompositedBounds.
(WebCore::RenderLayer::updateOrRemoveFilterEffect): We should not create the filter builder when there's no filter specified.

rendering/RenderLayer.h:

(RenderLayer):

rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::calculateCompositedBounds): Now using the code from RenderLayer::calculateLayerBounds

rendering/RenderObject.cpp:

(WebCore::RenderObject::containerForRepaint): Using RenderLayer::enclosingFilterLayer to also find the parent filtered area.
(WebCore::RenderObject::repaintUsingContainer): Removed the need to add filter outsets in this method. We now compute that in
RenderLayer::setFilterBackendNeedsRepaintingInRect.

LayoutTests:

Reviewed by Dean Jackson.

Added more tests to cover all the repaint issues on filtered RenderLayers.

css3/filters/filter-repaint-blur-expected.png: Added.

css3/filters/filter-repaint-blur-expected.txt: Added.

css3/filters/filter-repaint-blur.html: Added. Checking that the full image of the RenderLayer is used to compute

the blur, even if only a sub-section of the layer has repainted.

css3/filters/filter-repaint-child-layers-expected.png: Added.

css3/filters/filter-repaint-child-layers-expected.txt: Added.

css3/filters/filter-repaint-child-layers.html: Added. Checking that the bounding box of the RenderLayer

and all its children are taken into account when computing the filter box.

For a version change event, the blocked and success events could both be queued
before either is dispatched. The transaction would erroneously be allowed to commit
after the blocked event was dispatched; it should not be, as the request was not
finished.

Reviewed by Tony Chang.

Test: storage/indexeddb/dont-commit-on-blocked.html

Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::dispatchEvent):

LayoutTests:

Landing test marked PASS FAIL as WK82776 prevents it from running in DRT; will
run it as a Chromium browser test for now.

In pathForRenderer, the for loop has 'i < rects().size() - 1' as test expression,
where rects().size() returns with size_t.
In case of empty rect, it leads to unsigned int overflow. Overflow value makes
the associated for loop run with invalid values.
Fix it by making loop variable int and stop using size_t type in the test expression.
Also, return early, if no focus ring found.

Geolocation now uses the Supplement interface instead of
keeping an instance variable on Page. This allows us to
remove all geolocation-related functions, variables, and
ifdefs out of Page and into Modules/geolocation/.

Update PluginViewBlackBerry to follow the changes in
BlackBerry::Platform::Window which now returns std::string instead of char* for
strings. Also copy the windowGroup and rootGroup strings in PluginViewPrivate
instead of just saving a pointer to the returned memory, which could become
invalid at any time.

With this change, turning on compositing borders also turn on a tiny indicator in the top left corner.
This indicator uses color coding to show where wheel events are handled and where the scroll layer position is updated:

Green means that both wheel events and scroll layer position updates are handled on the scrolling thread.

Yellow means that wheel events need to be dispatched to the main thread (due to wheel event handlers), but that scroll layer position
updates still happen on the scrolling thread.

Red means that scroll layer position updates happen on the main thread (due to background-attachment: fixed or fixed position objects).

The layer's clipRect and usesLayerClipping information was not
being initialized for layers that created a renderSurface. (It
was, however, being initialized for the renderSurface itself.)
This patch adds a unit test that reproduces that this is an error,
other unit tests to tightly test the value of clipRect being
initialized, and adds the logic to properly initialize the
clipRect.

Before this patch, this bug was causing flashing on tab-switch on
the apple iphone page. Even worse, with partial swap enabled, the
layers would simply disappear, because the first frame the
clipRect is uninitialized and the layer is not drawn, and the
second frame onwards, the damage tracker correctly things nothing
is damaged, so it doesn't draw that layer again until other damage
causes it to be redrawn.

platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:

(WebCore::calculateDrawTransformsAndVisibilityInternal):

Source/WebKit/chromium:

Added 3 more unit tests. One reproduces the clipRect problem in an
integrated manner, the other two directly test that clipRects are
properly initialized.

This change implements the Chromium-specific code for overriding the device metrics, such as screen size
(by setting the FrameView size) and font zoom factor (necessary for certain emulated devices,)
and for painting the gutter overlay covering the WebView area not occupied by the associated FrameView.

Implement API for calculating the best zoomable area for a
tap-to-zoom gesture.
It picks the area with the largest intersection with the touch. In most
cases this will be all areas fully containing the area, and returns the
smallest inner-most of these.

This patch introduces a special renderer for SVGCircleElements
and SVGEllipseElements to avoid having to use the slower path
rendering code. This patch includes optimized circle code for
the CG platform, and hooks (GC::fillEllipse, GC::strokeEllipse)
are available for other platforms as well.

Tests: svg/hittest/svg-ellipse-non-scale-stroke.xhtml

svg/hittest/svg-ellipse.xhtml

Added a test to exercise hit testing on an ellipse, and on
an ellipse's stroke, to make sure the formulae in this patch
are correct.

(WebCore::AudioFileReader::handleBuffer): Calculate the audio
buffer duration and frames number from the buffer and caps instead
of relying on the buffer offets that are not always correctly set
depending on the audio file format.

I've added ContextSensitivePropertyFilter and changed RenderStyle::diff to use it when
the filter property is changed. In RenderObject::adjustStyleDifference the appropriate StyleDifferenceRepaintLayer
or StyleDifferenceRecompositeLayer is used depending on whether the layer is painting filters in software or in hardware
(composited).

Tests: css3/filters/filter-change-repaint-composited.html

css3/filters/filter-change-repaint.html

css/CSSStyleSelector.cpp:

(WebCore::CSSStyleSelector::createFilterOperations): None was treated as an invalid value.

(WebCore::RenderBoxModelObject::styleWillChange): Repaint the layer when there is a layout change and a filter change.

rendering/RenderLayer.cpp:

(WebCore::RenderLayer::styleChanged): Making sure that the backing store is repainted when filters fallback to hardware.

rendering/RenderObject.cpp:

(WebCore::RenderObject::adjustStyleDifference):

rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::diff):

rendering/style/RenderStyleConstants.h:

LayoutTests:

Repaint was not triggered when the filter property was changed. I've added two
tests, one for software and one for composited mode. Both tests are triggering
all the possible scenarios of changing the filter property.

css3/filters/filter-change-repaint-composited-expected.png: Added.

css3/filters/filter-change-repaint-composited-expected.txt: Added.

css3/filters/filter-change-repaint-composited.html: Added.

css3/filters/filter-change-repaint-expected.png: Added.

css3/filters/filter-change-repaint-expected.txt: Added.

css3/filters/filter-change-repaint.html: Added.

platform/chromium/test_expectations.txt: Disabled the new tests on Chromium. They need rebaselining.

This patch also adds branch-specific code that makes it so the regression tracked
by <rdar://problem/11115221> only affects the branch in HiDPI mode.

Essentially, this is a workaround for <rdar://problem/11150452>. With this
workaround, when the deviceScaleFactor is 1, we have an old-school gradient bezel
in text fields whether they are styled or not. This is good and matches shipping
Safari. When the deviceScaleFactor is greater than 1, text fields will have newer,
AppKit-matching gradients that look much more appropriate at the higher
resolutions. However, if the text field is styled in any way, we'll revert to the
old-school bezel, which doesn't look great in HiDPI, but it looks better than the
CSS border, which is the only alternative until 11150452 is resolved.

This is the merging of the changes listed above.

platform/mac/ThemeMac.mm:

(WebCore::ThemeMac::ensuredView):

rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::paintSliderThumb):

isControlStyled() should treat text fields like it used to in order to avoid the
regression tracked by 11115221.

rendering/RenderThemeMac.h:

rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::isControlStyled):

Use the old gradient always unless we are an unstyled text field in HiDPI.
(WebCore::RenderThemeMac::paintTextField):
(WebCore::RenderThemeMac::textField):

This patch introduces a new class OpenTypeVerticalData to read
vertical font metrics from OpenType fonts.

Currently, WebKit relies on platform APIs to do the work. However,
some platforms such as Windows lack support for all the capabilities
WebKit requires for vertical flow and the text-orientation property
to work correctly. Reading OpenType tables directly also gives
benefits in consistent behavior among the WebKit platforms.

This patch is for any platforms that want to parse OpenType tables
directly, but it's currently included only in CGWin and isn't on any
code path even on CGWin yet. Caller's side change for CGWin and
support for other platforms will be in separate bugs.

Updating CSS property names for wrap-shape-inside and wrap-shape-outside
to shape-inside and shape-outside, per the current exclusions spec.
Renaming some parsing functions in CSSParser for clarity.
No new functionality.

This change is performance neutral on the JS benchmarks we track. It's mostly to improve page
load performance, which currently does at least a couple full GCs per navigation.

heap/Heap.cpp:

(JSC::Heap::discardAllCompiledCode): Rename recompileAllJSFunctions to discardAllCompiledCode
because the function doesn't actually recompile anything (and never did); it simply throws code
away for it to be recompiled later if we determine we should do so.
(JSC):
(JSC::Heap::collectAllGarbage):
(JSC::Heap::addFunctionExecutable): Adds a newly created FunctionExecutable to the Heap's list.
(JSC::Heap::removeFunctionExecutable): Removes the specified FunctionExecutable from the Heap's list.

heap/Heap.h:

(JSC):
(Heap):

runtime/Executable.cpp: Added next and prev fields to FunctionExecutables so that they can

be used in DoublyLinkedLists.
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::finalize): Removes the FunctionExecutable from the Heap's list.

runtime/Executable.h:

(FunctionExecutable):
(JSC::FunctionExecutable::create): Adds the FunctionExecutable to the Heap's list.

runtime/JSGlobalData.cpp: Remove recompileAllJSFunctions, as it's the Heap's job to own and manage

the list of FunctionExecutables.

runtime/JSGlobalData.h:

(JSGlobalData):

runtime/JSGlobalObject.cpp:

(JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Use the new discardAllCompiledCode.

Adds a path for transfering an active wheel fling animation out to the embedder from the compositor and back in
to a WebViewImpl via the embedder. This is used when we start a wheel fling animation on the compositor thread
but then hit a condition that we can't handle from the compositor, such as registered wheel event listeners or a
scrollable area we can't handle.

New tests added to WebCompositorInputHandlerTest for the transfering logic.

No new tests; fixes fuzz test crasher which is not reproducible in DRT or WKTR.

When a RenderFullScreen object is inserted between a child and parent renderer, make sure the
parent renderer deletes its line boxes by calling setNeedsLayoutAndPrefWidthsRecalc(). This
forces its InlineBox renderers to be removed from the line boxes and their parents in the correct
order, fixing a double-delete crash.

The same is true when unwrapping the RenderFullScreen object, and when creating and inserting
the full screen placeholder.

We are assuming the stdout/stderr output from the driver is utf-8
encoded when we get stack traces; this may not be a valid
assumption generally, but if we do get strings that aren't valid
utf-8, we would crash. Now we will ignore any decoding errors.

This is a regression from r110072. I wrongly thought we should call ensureLayer if we create our RenderOverflow.
However the current overflow code removes the before and start overflows (like in horizontal writing mode with ltr direction,
we never have a top or a left overflow). Because of that we would not get a RenderLayer as expected and the overflow clip rects
would be wrong on our RenderLayer children.

rendering/RenderBox.cpp:

(WebCore::RenderBox::addLayoutOverflow):
Moved the ensureLayer() call after the check that we do have some overflow but before we remove the overflow in some directions.

We finally arive at our destination. This patch actually moves
WebCore::ResourceHandle from Source/WebKit/chromium/src to
Source/WebCore/network/chromium, matching its location in other ports.
To make this happen, we also need to move WrappedResourceRequest and
WrappedResourceResponse.

These tests don't depend on the ahem font and after r112489, we seem
to be hitting a race condition on the Mac bots where we are checking
baselines while the font is still being loaded. Speculatively fix by
removing the webfont.

WorkerFileSystemCallbacksBridge relies on a cleanUpAfterCallback being called
prior to the disposal of the bridge to ensure that WorkerFileSystemContextObserver
is unsubscribed and deleted. However cleanUpAfterCallback will only execute if the bridge's
callback has executed on the worker thread, and this might not be the case if the worker
terminates.

This patch fixes this by maintaining a RefPtr from WorkerFileSystemContextObserver to
WorkerFileSystemCallbacksBridge. This ensures that bridge is not deleted while observer is alive.

This patch moves a number of files that implement parts of the platform
portion of the Chromium WebKit API from the WebKit layer to
WebCore/platform. These files are in the dependency cone of
ResourceHandle and have no dependencies on anything outside
WebCore/platform.

WebView/WebFrame.mm:
(-[WebFrame loadRequest:]): Fixed this bug.
(-[WebFrame loadHTMLString:baseURL:]): Also added translation to another API, so that I don't
have to come back again.
(-[WebFrame loadAlternateHTMLString:baseURL:forUnreachableURL:]): Ditto.

WebView/WebView.mm: (-[WebView setMainFrameURL:]): Changed another place where clients used
to pass file paths instead of URLs.

This patch introduces a base class for WebKitPlatformSupport that we
can use to incrementally more APIs from WebKit/chromium/public/platform
into Platform/chromium/public. Using this technique lets us avoid
making changes in the embedder during the transition.

This patch adds a --timing option that will display the time
each test takes. It also removes the --silent option, since
probably no one ever used it, and cleans up the logging
option parsing code to be easier to follow.

Make HashTable<>::add() and derivate functions return an AddResult struct instead
of a pair. This struct contains contains 'iterator' and 'isNewEntry' members, that are
more readable at callsites than previous 'first' and 'second'.

Geolocation now uses the Supplement interface instead of
keeping an instance variable on Page. This allows us to
remove all geolocation-related functions, variables, and
ifdefs out of Page and into Modules/geolocation/.

The problem was that content document subtree was not unbound upon iframe re-push.
Upon owner element refresh content document was not sent to the frontend
since backend assumed that front-end has already had the up-to-date version.

The current occlusion was exposed on the occlusion tracker for the
transition over to culling 2.0 which has landed, so we can remove
it now. It still had one use in unit tests which is moved to a
test subclass.

Above test subclass already existed in the occlusion tracker tests,
so pulled it out to a common file CCOcclusionTrackerTestCommon.h
so that other unit tests can use it to get at occlusion internals.

appendChild, insertBefore, and replaceChild all share a great deal of logic.
This patch factors out the "post-insertion" logic that deals with
notifying parents that their children changed and notifying children
that they've been added to the tree.

Besides reducing code duplication, this is in preparation for moving
this post-insertion notification later in the insertion process.

(WebCore::RenderFlexibleBox::repositionLogicalHeightDependentFlexItems):
(WebCore::initialLinePackingOffset): Similar to initialPackingOffset.
(WebCore):
(WebCore::linePackingSpaceBetweenChildren): Similar to packingSpaceBetweenChildren.
(WebCore::RenderFlexibleBox::packFlexLines): Move lines based on flex-line-pack.

Note that we don't need to relayout on stretch because
alignChildren will do that for us (only auto size needs stretching).

(WebCore::RenderFlexibleBox::flipForWrapReverse): Pull out the initial

cross axis offset before calling packFlexLines because we can
move the the line contexts.

rendering/RenderFlexibleBox.h:

LayoutTests:

Updated the old multiline tests to have -webkit-flex-line-pack: start,
which was the previous default behavior. The correct default behavior
is stretch.

Forward String::operator[] to StringImpl::operator[] instead of indexing into characters().
This avoid implicit conversion of 8-bit strings to 16-bit, and as an example, reduces memory
usage on ​http://www.allthingsd.com/ by 360kB.

to the first place saves 1 of 6 secs on the heap profiler perf test.
(WebInspector.HeapSnapshot.prototype._buildAggregates):
(WebInspector.HeapSnapshot.prototype._buildDominatedNodes): root node is always the first
one and is the only one that doesn't have dominator, so we may start iterating nodes from
the second node and avoid additional check in the loop.

Present go to previous panel shortcut "Cmd - Left" is painful to support since we have
more and more free flow editing capabilities (where Cmd - Left is handled by the editor).
Remaping it to Cmd - Option - [ (]) / (Ctrl - Alt - [ (]) ).

Introduce the new CSSParserMode enum to more classes. SVG classes make use of SVGAttributeMode for CSS parsing already.
But SVGAttributeMode does not differ from CSSQuirksMode at the moment. This will change with a followup patch on bug 46112.

No new tests. No change of functionality. Everything gets covered by existing tests.

css/CSSImportRule.cpp:

(WebCore::CSSImportRule::setCSSStyleSheet):

css/CSSMediaRule.cpp:

(WebCore::CSSMediaRule::insertRule):

css/CSSParser.cpp: Move private functions away from strict boolean and make use of CSSParserMode instead.

(CSSStyleSheet):
(WebCore::CSSStyleSheet::setCSSParserMode): Renamed setStrictParsing to setCSSParserMode since we set an enum now.
(WebCore::CSSStyleSheet::cssParserMode): Renamed useStrictParsing to cssParserMode since it returns CSSParserMode instead of a boolean now.

css/StylePropertySet.h: Use unsigned member variables to store the parser mode.

(WebCore::StylePropertySet::create):
(WebCore::StylePropertySet::setCSSParserMode): Renamed setStrictParsing to setCSSParserMode since we get an enum now. This gets converted to unsigned internally.
(WebCore::StylePropertySet::cssParserMode): Renamed useStrictParsing to cssParserMode since it returns CSSParserMode instead of a boolean now.
(StylePropertySet):

UISourceCode are now loaded from DebuggerPresentationModel on scripts panel creation/reset.
This is needed to show snippets that are loaded before scripts panel creation and are not removed on navigation.

This patch removes the use of the macro QT_VERSION_CHECK() because, in
non-Qt environments, the pre-processors raises an error. Instead of
calling the macro to generate the version number, the version is
expressed directly.

Document::updateViewportArguments() is called twice, while restoring a page from page cache.
First, it is called when the document is set on the mainframe and later, it is called
when page cache finished the restoration. Since viewport arguments don't change between
the 2 calls, it's safe to remove the second.

When heap snapshot is completely loaded move nodes and containment edges
into two separate arrays. This way we don't need _nodeIndex and _nodePosition
maps to go from node offset inside the raw snapshot to its index and back, instead
we may just divide node offset by the number of node fields to get node index. After
the nodes and containment edges are separated original array (_nodes) is dropped.
All front-end code was switched to the new representation.

Sequential focus navigation now behaves exactly as specified in the Shadow DOM spec.

According to the Shadow DOM spec:
The shadow DOM navigation order sequence is inserted into the document navigation order:

immediately after the shadow host, if the shadow host is focusable; or

in place of the shadow host as if the shadow host were assigned the value of auto for determining its position.

Prior to this patch, sequential focus navigation goes into Shadow DOM, but it is incomplete
since insertion points, such as <content> elements or <shadow> elements, are not resolved at all.
Now focus navigation can traverse shadow DOM subtrees in 'reified tree order', resolving lower boundaries transparently.

Implementation notes:
Prior to this patch, sequential focus navigation does not go into Shadow DOM if a shadow host is non-focusable.
Now focus navigation must go into Shadow DOM subtrees even if a show host is not focusable as described in 2).
To support this behavior, this patch introduced adjustedTabIndex() locally in FocusController so that
it does not skip a non-focusable shadow host in current focus scope.
After finding a *pseudo* focusable element in current focus scope, it tries to resolve a focused element recursively,
considering a nested focus scope inside of a shadow host or iframe.
To traverse Shadow DOM subtrees, a FocusController makes use of ReifiedTreeTraversal APIs, which was introduced in r112055.

This change does not affect an existing behavior if a shadow dom is not involved.

Each filesystem can be distinguished by a filesystem ID that is given
by chromium platform code via WebDragData when set of
files/directories are dropped.

This is all platform-specific implementation detail and all the changes
are in chromium directory.

Reviewed by David Levin.

public/platform/WebDragData.h:

(WebDragData):

public/platform/WebFileSystem.h: Added Isolated type.

src/AsyncFileSystemChromium.cpp:

(WebCore::AsyncFileSystemChromium::createIsolatedFileSystemName): Added.
(WebCore::AsyncFileSystemChromium::createIsolatedFileSystem): Added.
(WebCore::AsyncFileSystemChromium::toURL): Made it not to return URL
for isolated filesystem (as we do not support it for now).

(WebCore::TextFieldDecorationElement::decorate):
Added.
This function adds another ShadowRoot, and it contains one flexible box container.
The container contains existin ShadowRoot content and the decoration element.

The goal of these patches is to move WebCore::ResourceHandle out of
Chromium's WebKit layer and into WebCore/platform, where it belongs.

This patch moves the Chromium-WebKit APIs used by ResourceHandle out of
the WebKit layer and into the Plaform layer. These are APIs that WebKit
uses to call "down" to manipulate the underlying platform (rather than
"up" to the client to make decisions). The long-term plan is to move
all of the headers in WebKit/chromium/public/platform into
Platform/chromium/public (although we'll likely need to clean up some
layering violations as we go).

These headers are now just forwarding headers to the new location of
these headers. These forwarding headers exist to avoid breaking
existing users of the API. They will likely be removed (or changed)
in the future once we've updated all folks using them.

Sequential focus navigation now behaves exactly as specified in the Shadow DOM spec.

According to the Shadow DOM spec:
The shadow DOM navigation order sequence is inserted into the document navigation order:

immediately after the shadow host, if the shadow host is focusable; or

in place of the shadow host as if the shadow host were assigned the value of auto for determining its position.

Prior to this patch, sequential focus navigation goes into Shadow DOM, but it is incomplete
since insertion points, such as <content> elements or <shadow> elements, are not resolved at all.
Now focus navigation can traverse shadow DOM subtrees in 'reified tree order', resolving lower boundaries transparently.

Implementation notes:
Prior to this patch, sequential focus navigation does not go into Shadow DOM if a shadow host is non-focusable.
Now focus navigation must go into Shadow DOM subtrees even if a show host is not focusable as described in 2).
To support this behavior, this patch introduced adjustedTabIndex() locally in FocusController so that
it does not skip a non-focusable shadow host in current focus scope.
After finding a *pseudo* focusable element in current focus scope, it tries to resolve a focused element recursively,
considering a nested focus scope inside of a shadow host or iframe.
To traverse Shadow DOM subtrees, a FocusController makes use of ReifiedTreeTraversal APIs, which was introduced in r112055.

This change does not affect an existing behavior if a shadow dom is not involved.

From RFC6455: ​http://tools.ietf.org/html/rfc6455#section-4.1
If the response includes a |Sec-WebSocket-Protocol| header field
and this header field indicates the use of a subprotocol that was
not present in the client's handshake (the server has indicated a
subprotocol not requested by the client), the client MUST _Fail
the WebSocket Connection_.

RenderLayer::~RenderLayer is calling clearBacking which updated the m_filter with new filters,
even though they were to be deleted a couple of lines below. This change avoids updating the filters,
if we are in the "destroyed" state.

No new tests. This change has no visible results to HTML or JavaScript, so it cannot be tested without a debugger.

r109779 changed JPEG alpha channel handling by marking a JPEG image frame
as having no alpha _after_ setting the image status frame-complete, which
prevents the application of image color profiles in some WebGL cases.

No new tests. The application of the color profile is not guaranteed for
images used as textures in WebGL. Refer to ​http://wkb.ug/76498.

platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::jpegComplete): Set the image frame alpha state
before marking the image frame status as frame-complete.

For layout, use the rest of the fallback list while webfonts are loading.
If the webfont is loading, it will be given an invalid Unicode Range so that
font selection mechansim doesn't use the webfont for layout.

Moved low level implementation from FormDataStreamMac, and exposed an additional function
to implement Foundation-based API on top of this.

platform/network/mac/FormDataStreamMac.h:

platform/network/mac/FormDataStreamMac.mm:

Rely on toll-free bridging and implementation details to make this work without duplicating
code.
Note that httpBodyFromStream is confusing - I don't see how it can work when sending serialized
requests across process boundary. We probably only get away with this because we don't attempt
to send requests to UI process once they already have streams associated with them.

WebCore.vcproj/WebCore.vcproj: Added missing platform/cf files.

platform/cf/FileSystemCF.cpp: Fixed include style.

platform/win/FileSystemWin.cpp: (WebCore::fileSystemRepresentation): Ifdef out a broken

TilingData::numTiles() is calculated as the product of two ints and so
can potentially overflow, causing numTiles() to be incorrect. To avoid
calling code accidentally falling into this trap, remove this function
and all code that uses tile index from TilingData. This requires
fixing up a bunch of callers of TilingData and CCLayerTilingData.

Additionally, TilingData::numTiles() has long been a confusing
function name in some contexts, so rename to bool hasEmptyBounds().

Also, remove TilingData::intersectDrawQuad because there are no
clients of that function.

FilterOperations::getOutsets calculates the outsets using integers and
the values are guranteed to be set to full-pixel values. By changing the
function signature we communicate this fact better and avoid unnecessary
type conversions in some cases.

This is an attempt to fix the MAC SL/Lion Bot issue as this issue is not reproducible locally.
The assertion happened when length type is Undefined in valueForLength() function but the assertion for Undefined length type
in RenderBox::computeLogicalWidthInRegionUsing which calls the above said function did not get hit.

This patch passes Length structure as const reference to Length calculation functions which avoids the call to the copy-constructor.
And it ensures that the Length structure is not getting modified during copy-construction.

More Chromium rebaselines from the expected failures tab in garden-o-matic.
They all looked like straightforward text-rendering, form-control rendering or anti-aliasing issues,
except for some where the new results were clearly just more correct.

[New Multicolumn] Add RenderMultiColumnFlowThread to hold the flow thread contents of a multi-column block.
It derives from RenderFlowThread.

Refactor RenderFlowThread to split out the stuff related to explicit naming into a subclass, RenderNamedFlowThread.
This allows RenderFlowThread to be a simple base class that involves maintaining the regions themselves.

Track the in-flight operation, whether it be an abort/write/truncate.
Whether an abort comes back as didWrite, didTruncate, or didFail, handle
it appropriately. Before this fix, the Chromium implementation would
assert in two cases:

If the user calls abort, then write, then abort before the backend
catches up, we'd send both aborts to the backend, even though it hadn't
received the write yet. Chromium's backend asserts if there's an abort
with no write in progress. We now record that we've sent an abort and
are waiting for the response.

If the user calls abort while a write/truncate is just finishing, on the
Chromium worker implementation, the completion message could be
thread-hopping back to WebCore at the
WorkerAsyncFileWriterCallbacksBridge while the abort is thread-hopping
in the other direction. Again, this leads to an abort call to the
backend with no write in progress, and an assert. We're now robust to
completions coming back when we're expecting an abort, and​https://chromiumcodereview.appspot.com/9764018/ will make the backend
robust to extra abort calls.

If a bot has an overly large amount of failing tests, then
storing 750 runs' worth takes a lot of memory and CPU time to
process and we end up getting killed by AppEngine; this cases
data corruption and confusion down the road when we have to
retry the upload of the data and the tests show up as multiple
runs.

More Chromium rebaselines from the expected failures tab in garden-o-matic.
They all looked like straightforward text-rendering or anti-aliasing issues,
except for some where the new results were clearly just more correct.

The layer's clipRect and usesLayerClipping information was not
being initialized for layers that created a renderSurface. (It
was, however, being initialized for the renderSurface itself.)
This patch adds a unit test that reproduces that this is an error,
other unit tests to tightly test the value of clipRect being
initialized, and adds the logic to properly initialize the
clipRect.

Before this patch, this bug was causing flashing on tab-switch on
the apple iphone page. Even worse, with partial swap enabled, the
layers would simply disappear, because the first frame the
clipRect is uninitialized and the layer is not drawn, and the
second frame onwards, the damage tracker correctly things nothing
is damaged, so it doesn't draw that layer again until other damage
causes it to be redrawn.

platform/graphics/chromium/cc/CCLayerTreeHostCommon.cpp:

(WebCore::calculateDrawTransformsAndVisibilityInternal):

Source/WebKit/chromium:

Added 3 more unit tests. One reproduces the clipRect problem in an
integrated manner, the other two directly test that clipRects are
properly initialized.

TilingData::numTiles() is calculated as the product of two ints and so
can potentially overflow, causing numTiles() to be incorrect. To avoid
calling code accidentally falling into this trap, remove this function
and all code that uses tile index from TilingData. This requires
fixing up a bunch of callers of TilingData and CCLayerTilingData.

Additionally, TilingData::numTiles() has long been a confusing
function name in some contexts, so rename to bool hasEmptyBounds().

Also, remove TilingData::intersectDrawQuad because there are no
clients of that function.

(V8DOMWrapper): Make the setJSWrapperFor* methods take PassRefPtr<T>.
(WebCore::V8DOMWrapper::setJSWrapperForDOMObject): Pass leaked ref into the DOMObjectMap.
(WebCore::V8DOMWrapper::setJSWrapperForActiveDOMObject): Pass leaked ref into the ActiveDOMObjectMap.

bindings/v8/V8Proxy.h:

(WebCore::toV8): Remove explicit ref.

bindings/v8/WorkerContextExecutionProxy.cpp:

(WebCore::WorkerContextExecutionProxy::initContextIfNeeded): Cast to a PassRefPTr and remove explicit ref call.

I replaced all uses of the markParents bool with a MarkingBehavior
enum (which has two values: MarkContainingBlockChain and MarkOnlyThis).
I'm not sure the naming is perfect (as it's not clear to me if markParents is
used to mean the same thing in these 3 functions), but hopefully this code is more
clear. I welcome further suggested adjustment from layout experts.

-Store the scrollTop before switching to a new tab and restore the appropriate scrollTop after
switching.
-Modify window.location with the tabName in the hash. Can't use pushState because this is served
from a file URL and Chrome puts each different file URL in it's own origin.

Since r111742 column width in fixed layout tables is set to the width of the cell plus its left padding plus its right padding
plus half its left border plus half its right border in the collapsing border model. The layout of the panel
headers in the inspector depended on pre-r111742 behaviour, so ended up misaligned with the content below. To cater for the
new method of calculating column width enforce a fixed width for the corner column by removing padding and borders (except collapsed
borders from adjacent cells) and specify the expected width (15px) minus the expected width of the collapsed borders (1px).

This was caused by the fix in r109826. Revert that change and fix the original bug by notifying the UI process
that the plug-in lost focus when it's destroyed. This will correctly reset the text input state (merely setting
the text input state to PluginComplexTextInputDisabled doesn't reset the state correctly).

The LayerTiler already knows not to turn on GL_BLEND for opaque layers.
However, it only ever sets the opaque flag for image layers and color
layers, never for content layers.

This was no big deal, because contentsOpaque() is currently false for
all layers except the root layer, which we always drew using the
BlackBerry::WebKit::BackingStore anyway.

When we start using RenderLayerBacking::m_usingTiledCacheLayer=true on
the root layer in situations where the BackingStore is unavailable, we
can speed up rendering of the root layer by honouring the opaque flag.

Fixed by plumbing through the GraphicsLayer::contentsOpaque() flag all
the way to LayerTiler and on to Texture.

(TestRunner._test_cases_to_skip): Return the list of test cases
to skip for the given test depending on the skipped action.
(TestRunner._should_run_test): Decide whether to run the test or
not depending on the skipped action.
(TestRunner.run_tests): Only show the list of skipped tests when
skipped action is 'skip'.

(TestRunner.SkippedTest): Add SkippedTest class to store more
information about skipped tests.
(TestRunner._setup_testing_environment): Use SkippedTest to add
TestWebKitAccessibility to the skipped list.
(TestRunner._find_skipped_test): Return the SkippedTest object for
a given test path.
(TestRunner._test_cases_to_skip): Returns the list of test cases
that should be skipped for a given test path.
(TestRunner._should_run_test): Helper funtion to decide whether
the given test path should be run or not. Tests in the skipped
list that don't have a list of failing test cases are not run at
all. Tests in the skipped list that contain a list of test cases
are run with gtester -s to skip the individual test cases.
(TestRunner._run_test): Helper funtion to run a given test.
(TestRunner.run_tests): Build the list of tests to run based on
_should_run_test() and use helper function _run_test() to run
every test.

(PlatformStrategiesGtk::initialize): Initialize platform
strategies.
(PlatformStrategiesGtk::PlatformStrategiesGtk):
(PlatformStrategiesGtk::createCookiesStrategy): Return this.
(PlatformStrategiesGtk::createPluginStrategy): Ditto.
(PlatformStrategiesGtk::createVisitedLinkStrategy): Ditto.
(PlatformStrategiesGtk::createPasteboardStrategy): Return 0, since
PasteboardStrategy is only used by mac code for now.
(PlatformStrategiesGtk::notifyCookiesChanged):
(PlatformStrategiesGtk::refreshPlugins): Refresh the plugin
database.
(PlatformStrategiesGtk::getPluginInfo): Initialize plugins and
populate the given vector with plugins information.
(PlatformStrategiesGtk::isLinkVisited): Return whether the given
hash is a visited link of the page group.
(PlatformStrategiesGtk::addVisitedLink): Add the given hash to the
page group visited links.

Fix an editing bug where inserting text into a font element would
create an extra div element in the dom tree. The
WebCore::positionAvoidingPrecedingNodes() tries to set the correct
destination position by checking the next visible position, however,
it causes the position moves into the child element in somecase.
Instead, we should only check the position in parent after node.

No new tests required as we're just refactoring existing code to
be used by two different ports.

CMakeLists.txt: added new file.

GNUmakefile.list.am: ditto.

WebCore.vcproj/WebCore.vcproj: ditto.

WebCore.xcodeproj/project.pbxproj: ditto.

platform/network/DNSResolveQueue.cpp: Added.

(WebCore):
(WebCore::DNSResolveQueue::add): adds a new host to be prefetched.
(WebCore::DNSResolveQueue::fired): by using a delay we coalesce
several prefetch requests and try to resolve them all here.

A poorly structured SVG file with a text element inside an
animatedTransform element leaves the text element placed outside of
the SVG root and it has no renderer(). Later attempts to use the
renderer in animatedLocalTransform fail.

Test: svg/custom/get-text-element-transform-crash.html

svg/SVGTextElement.cpp:

(WebCore::SVGTextElement::animatedLocalTransform): Added a check for null renderer, and do not check
for style transform if there is no renderer.

Enable animVal support for SVGAnimatedPreserveAspectRatio. Very simple now that everything is prepared.
All we have to do is add startAnimValAnimation/etc. methods to SVGAnimatedPreserveAspectRatioAnimator.

Modernize SVGPreserveAspectRatio, align parsing this object from String, with the other SVG DOM primitives,
who supply a "void parse(const String&)" method, for this task.

Tests: a new layout test will be introduced once the required WebKit API code is ready.

Introduce the DOMTextContentWalker class to selectively retrieve content
around a given VisiblePosition into a string in such a way that a text
Range can be extracted later from a pair of the string's positions.

A new boolean called m_shouldStop is also introduced in the TextIterator to force
it advancing under certain conditions. Although this is usually done by setting
m_positionNode to zero, it can't be applied in this case since by doing so the
iterator's range is lost.

Improve the way we handle updating an existing CSS property by replacing its value
by the new one rather than removing the old value and then adding the new one. This
speed up by 35% PerformanceTests/CSS/CSSPropertyUpdateValue.html.

No new tests : Updating existing tests that were relying on the order of the properties
after modification. Each updated property is not appended to the list of properties of the
style therefore the cssText value is slightly different. It matches Firefox behavior but not
Opera.

css/StylePropertySet.cpp:

(WebCore::StylePropertySet::addParsedProperty):

LayoutTests:

Updated expectations after behavior change on how we handle updates of
CSS properties from JS. We match now Firefox where the cssText keeps the
order of the properties (but modify its value) whereas before we were appending
the new value at the end of the list of properties.

In PlatformMouseEvent.h the blackberry porting added globalPos() (but not upstreamed yet)
for PlatformMouseEvent, but this method is same as globalPosition() that is available for
every porting. We should use globalPosition().

Import rules always come before all other rules (except @charset). They currently live
in the generic child rule vector. They can be moved to a vector of their own for stronger
typing and more focused traversal. This will also make future refactoring easier.