StyleRareNonInheritedData's copy constructor omitted to copy
the m_content data, which caused us to detach and re-attach the renderer
at the start of the transition, thereby killing the transition.

Fix by making StyleRareNonInheritedData's copy ctor do the right thing.

Test: transitions/transition-on-element-with-content.html

rendering/style/ContentData.h:

rendering/style/ContentData.cpp:
(WebCore::ContentData::clone): New method to do a deep clone. (Can't use a copy
ctor because of the subclasses.)

rendering/style/CounterDirectives.h: Pack the data members to save space.
Add a clone() function for the HashMap.

rendering/style/CounterDirectives.cpp:
(WebCore::clone): Make a new HashMap and copy the contents over.

rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): Copy
the content and counter directives over.
(WebCore::StyleRareNonInheritedData::operator==): Rather than just comparing
for pointer equality, do a correct check for m_counterDirectives equality.
(WebCore::StyleRareNonInheritedData::counterDataEquivalent):

Adds a basic gesture recognizer to the Chromium platform. Adds an entry
point to the GestureRecognizer to reset any internal state on a page reset.
Resetting the gesture recognizer on page load is necesary for reliable
layout test execution and improves gesture recognizer operational
robustness.

Added an additional constructor to permit building a synthetic
PlatformWheelEvent.

Small modifications to the PlatformGestureRecognizer as required to
implement the simple Chromium platform gesture recognizer.

(-[WKResponderChainSink detach]):
This method formerly blindly assumed that since -initWithResponderChain: put self at the
end of the responder chain, after _lastResponderInChain, then self is still at the end
of the responder chain and still immediately after _lastResponderInChain. Made this function
robust against some kinds of responder chain manipulations, though it can't be robust against
some other kinds (e.g., manipulations that removed self from this chain and put it into some
other chain).

Remove our "detection" about the end of a scrub now that there is an explicit seek completion
handler available in AVFoundation. Move what we used to do upon detection in timeChanged()
into seekCompleted().

rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::clearContent):
(WebCore::RenderStyle::appendContent):
(WebCore::RenderStyle::setContent): Replace the overly complex prepareToSetContent()
code with code that either appends, or replaces the content.
This loses an optimization where the existing ContentData object could get reused,
but this seems to be rarely hit in practice.

Apparently we need to move the conditional block further out of the
nesting in order to see the branding variable. This patch also remove
the dummy branding variable I added to get the buildbot building again.

TiledDrawingArea: Delay serving tile requests when the drawing area is suspended.

Do not paint tiles when painting is disabled (suspended) on the web process side.
Buffer up the tile requests and paint them, when the drawing area gets resumed.
On the UI process side, do not block on tile updates, when the tiled area is
not visible (painting is disabled on the web process side).

This change allows fonts allocated as system fallback fonts to be
released. Previously, the reference counts for these fonts grew
without bound. This is implemented as an auto release class that wraps
accesses to the cache for system fallback fonts. All such accesses are
via the method FontCache::getFontDataForCharacters. The new class is
called FontCachePurgePreventer. When such an object exists, it protects
these fonts from deletion.

This change allows fonts allocated as system fallback fonts to be
released. Previously, the reference counts for these fonts grew
without bound. This is implemented as an auto release class that wraps
accesses to the cache for system fallback fonts. All such accesses are
via the method FontCache::getFontDataForCharacters. The new class is
called FontCachePurgePreventer. When such an object exists, it protects
these fonts from deletion.

This change allows fonts allocated as system fallback fonts to be
released. Previously, the reference counts for these fonts grew
without bound. This is implemented as an auto release class that wraps
accesses to the cache for system fallback fonts. All such accesses are
via the method FontCache::getFontDataForCharacters. The new class is
called FontCachePurgePreventer. When such an object exists, it protects
these fonts from deletion.

Most accesses to the font cache still use the reference counting
implemented by FontCache::getCacheFontData() and
FontCache::releaseFontData() and that operation is not affected by
this change.

Added local scoped instance of FontCachePurgePreventer to wrap code
that directly or indirectly accesses fonts via getFontDataForCharacters.
Did a few other miscellaneous bug fixes and changes to allow system
fallback fonts to be pruned from the GlyphPageTree. Changed the
calls to getFontData in the platform specific versions of
Fontcache::getFontDataForCharacters to not increment the reference
count. Moved the purge font check
outside of FontCache::getCachedFontData() into a separate method,
purgeInactiveFontDataIfNeeded() since almost all calls to
getCachedFontData() now happen when purging is not allowed.
purgeInactiveFontDataIfNeeded is invoked in enablePurging() when
m_purgePreventCount is 0.

No new test as the functionality has not changed. Improved font life
cycle management.

platform/graphics/FontCache.cpp:
(WebCore::FontCache::FontCache):
(WebCore::FontCache::getCachedFontData):
Moved purge check to new method since it likely can't happen here.
(WebCore::FontCache::releaseFontData):
(WebCore::FontCache::purgeInactiveFontDataIfNeeded):
(WebCore::FontCache::purgeInactiveFontData):
Made purging conditional on m_purgePreventCount. Now some fonts
in the cache are reference counted while other can be purged
outside of code wrapped by in scope FontCachePurgePreventer objects.

platform/graphics/wx/FontCacheWx.cpp:
(WebCore::FontCache::getFontDataForCharacters):
Changed the calls to getFontData() to not increment the reference
count. The caller of this getFontDataForCharacters() (currently only
Font::glyphDataForCharacter() in fontFastPath.cpp) and it's callers
don't attempt to release the returned fonts so we use the purge
protection described above.

QML files cannot be loaded on Symbian due to difference
in capabilities between qmlwebkitplugin.dll and Qtwebkit.dll.
A PlatSec error that Qtwebkit.dll has "DRM AllFiles" capabilities
missing is observed when dynamically loading the QML plugin.

symbian/platformplugin/platformplugin.pro: Match capabilities with the other 2 DLLs.
Also remove TARGET.VID from platformplugin, as it's not used in any other Qt WebKit DLL,
and causes build warnings about undefined VENDOR_VID.

html/HTMLLinkElement.cpp:
(WebCore::HTMLLinkElement::disabled): Return our stylesheet's 'disabled' value or
false if we don't have a stylesheet.
(WebCore::HTMLLinkElement::setDisabled): Set our stylesheet's 'disabled' value or
ignore the call if we don't have a stylesheet.

html/HTMLLinkElement.h:

html/HTMLLinkElement.idl: Remove 'Reflect' as it is not a reflected attribute anymore in HTML5.
This matches the way FF4, Opera and IE9 handle the attribute.

The change to TestEventPrinter fixes a latent bug, because
objects are deleted through the TestEventPrinter type, but none
of the subclasses have destructors or non-POD members.

The changes to NotificationPresenter and WebViewHost do _not_ to fix a
real bug, they just make clang's -Wdelete-non-virtual-dtor happy. As
discussed at ​http://codereview.chromium.org/7094005/, we prefer making
leaf class destructors virtual over making the leaf classes final.

In WebKit2 PluginPackage is used by the UI process to load plugins
in order to get information about them, but it doesn't use any GTK
symbol. So the UI process should be able to load plugins even when
building with GTK3, but we should not allow the plugin view to use
the plugin if it mixes GTK2 and GTK3 symbols.

plugins/PluginPackage.h:
(WebCore::PluginPackage::module): New method to return the
platform module.

In WebKit2 PluginPackage is used by the UI process to load plugins
in order to get information about them, but it doesn't use any GTK
symbol. So the UI process should be able to load plugins even when
building with GTK3, but we should not allow the plugin view to use
the plugin if it mixes GTK2 and GTK3 symbols.

Change JSC::initializeThreading() and WTF::initializeMainThread() to
WebCore::ScriptController::initializeThreading() which contains these
functions and remove JSC dependency to build webkit/efl with v8.

platform/chromium/PopupMenuChromium.cpp:
(WebCore::PopupContainer::showPopup): Set m_focusedNode from m_frameView.
(WebCore::PopupListBox::handleMouseReleaseEvent): Call dispatchMouseEvent to forward the event only if select popup.
(WebCore::PopupListBox::acceptIndex): Change to return accepted or not.

​https://bugs.webkit.org/show_bug.cgi?id=62164
Remove "multi-threaded" logic in V8 DOMData, DOMDataStore and friends
This functionality is untested and unused:
This is an old code from Lockers-based implementation of WebWorkers in
V8 bindings, to make sure that DOM objects are released on the right thread
even though GC could have happened on any thread. It is currently unused (since
current model is one worker per process) and is being removed because new implementation
of WebWorkers will be using V8 isolates.

This fixes a real bug, since WebMediaPlayerClientImpl::putCurrentFrame
deletes a VideoFrameChromium subclass type through this interface
class, causing ~VideoFrameChromiumImpl's destructor not to run.
(VideoFrameChroimumImpl happens to not have a destructor or any
non-POD member variables, so it's more a latent bug.)

(WebKit::PDFViewController::findString):
Return kWKMoreThanMaximumMatchCount when appropriate, a la FindController::countStringMatches().
Also, skip counting all the matches if maxMatchCount is 0, to avoid (perhaps slowly) computing a
number that would be ignored.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

When an inline element has a right border/margin/padding and it has more than one descendant with no siblings,
the width of the right border/margin/padding should be included in line breaking calculation only once,
and not for each descendant.

Use SOCK_STREAM instead of SOCK_DGRAM sockets. Rework the message
receiver code to support stream sockets, since it requires to
handle message boundaries. The same code works for DGRAM sockets,
so this change shouldn't break other ports using DGRAM.

rendering/svg/SVGTextRunRenderingContext.cpp:
(WebCore::SVGTextRunWalker::walk): bail early when from and to
is outside the text run boundary. this hit easily after adding
the assert when from = to = end and read in run.data(from).

We're unskipping acid2.html event though it's just a landing
page for the acid2 test. Some elements of the test are loaded by
the landing page so it is testing something, but acid2-pixel covers the same
ground.

shouldFallBack() tells the DOM if it should attempt to render
the next nested <object> if its parent fails to load.

This fix is only required for the fast/css version of the ACID2
test, which loads a non-existent ​file:// url. The HTTP version of the
test already passes because the loader will render fallback content
on a failed HTTP load without delegating the decision to the client
( see MainResourceLoader::continueAfterContentPolicy).

Some ports also check for WebKitErrorPluginWillHandleLoad when deciding
what to return. This error isn't currently set by Qt so we don't check
it. (Other ports set it when the erring document is a MediaDocument, maybe
we should do that too at some point).

Add additional ChromeClient functions to indicate the beginning and end of
the various ScrollAnimator animations. Change existing notification that a
rubber-band has completed for the main frame to be triggered for all frames.

Stub out new ChromeClient functions regarding the start and end of ScrollAnimator
animated scrolls, and update logic for rubber-band ending to check for main frame
now that it is called for all frames.

css/html.css:
(input[type="button"], input[type="submit"], input[type="reset"]): Moved -webkit-file-upload-button to its own rule.
(input[type="file"]::-webkit-file-upload-button): Added and moved all previously hard-coded properties there.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

This is _not_ to fix a real bug, just to make clang's
-Wdelete-non-virtual-dtor happy. As discussed at​http://codereview.chromium.org/7094005/, we prefer making leaf class
destructors virtual over making the leaf classes final.

Clang has grown a new warning that warns on |delete ptr| if ptr's
class is non-final, has virtual methods, but no virtual destructor.
This warning finds real bugs, so we want to keep it enabled. However,
it also warns about DataTransferItem[s]. Since these are subclassed,
they can't be made final, so make their destructors virtual. (Maybe
clang's warning even points out an actual bug here.)

Alas it is necessary to provide an Identifier reference for keywords
so that we can do the right thing when they're used in object literals.
We now keep Identifiers for all reserved words in the CommonIdentifiers
structure so that we can access them without a hash lookup.

This is really just a typo.
When setting up the arguments for a call out to a C operation, we'll
fail to swap arguments where this is necessary. For example, in the
case of 2 arg calls, where the first argument is in %rdx & the second
is in %rsi we should swap (exec will be passed in %rdi), but we don't.

I don't know if this can actually happen in practice, so no new tests.

platform/network/mac/ResourceHandleMac.mm:
(-[WebCoreResourceHandleAsDelegate connection:didReceiveAuthenticationChallenge:]):
Cancel authentication challenge if we don't have a client. We must always respond to the
challenge to release the connection, and there is nothing else to do in this state anyway.

Switching paintMask and paintObject to use IntPoint for their paint offset instead of
a pair of ints. paintObject is still on tx/ty, but paintMask was converted to IntSize
passed by value -- bringing it in-line with the agreed-upon convention of a const IntPoint&.

Canvas text is only recognized by Skia if it is registered
by creating a new SkTypeface. Skia uses CGFont to measure
and render the glyphs, then takes care of managing the glyph
cache.

Skia on Mac Chrome is not yet enabled, so this change
does not affect existing code, and requires no new tests.

platform/graphics/mac/FontCustomPlatformData.cpp:
(WebCore::RemoteFontStream::RemoteFontStream):
(WebCore::RemoteFontStream::~RemoteFontStream):
(WebCore::RemoteFontStream::rewind):
(WebCore::RemoteFontStream::read):
Turn the buffer into a stream. This is identical to
the implementation in skia/FontCustomPlatformData.cpp.
While that file could be modified instead of this one,
it was simpler to add SkTypeface streaming to this instead
of adding all CGFont support to the skia platform file.

Rather than doing multiple hash lookups as we currently
do when trying to identify keywords we now use an
automatically generated decision tree (essentially it's
a hard coded patricia trie). We still use the regular
lookup table for the last few characters of an input as
this allows us to completely skip all bounds checks.

Add smart replace support to WebCore and add hooks for it in WebKit
via DumpRenderTreeSupportGtk. When a platform supports smart replace,
WebCore will remove extra spaces that appear when pasting text. Eventually
WebKitGTK+ may want to expose this in the public API.

platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::writeSelection): Now pass whether or not to use smart replace
when calling writeSelection.
(WebCore::Pasteboard::canSmartReplace): Added an implementation that checks the clipboard
for whether or not it supports smart paste.

Entering full-screen mode is causing the page layout to change because the full-screen
element is taken out of the normal flow. To counteract this effect, insert a placeholder
block as a parent of the full-screen renderer with the same size and style as the full-screen
element pre-full-screen.

Only create a placeholder for block-level elements; the technique required for inline elements
would be vastly more complicated.

Switching paintBoxDecorations to take an IntPoint representing
the paint offset instead of a pair of ints. Also cleaning up
some duplicated code in InlineFlowBox related to constraining
the paint rect to the linetop and linebottom.

The test is to get the render tree of select menu lists with varying widths based on content.
Some select list based tests are rebaselined because minimum width of RenderMenuList changes
based on the content with this fix.

The minimum width of the select-box is calculated to be as small as possible
instead of hardcoded value (width of 7 characters) in minimumMenuListSize() function
This will avoid overapping the select lists in popular websites.

Instead of creating and destroying pixmaps, and copying them using QPixmap::copy()
or relying on the implicit sharing functionality, we keep the QPixmaps alive
and just make sure their content is synchronized.

This seems to improve responsiveness noticably, as now the UI process doesn't deal
with allocating/deallocating pixmaps, and the copies are done with the optimized
path (QPainter) vs the unoptimized ones (QPixmap::copy().)

Turns out, even if we trim the ancestor chain to 0, the event is still dispatched during AT_TARGET.
So might as well be explicit about what we are trying to do and add a flag to prevent dispatch in these cases.

Zooming an object with auto size, that references a svg with fixed size was broken. The svg size stayed the same.
Get rid of the dependency between RenderSVGRoot and SVGSVGElement::currentScale(), always ask for the effective
zoom in the RenderStyle instead of asking SVGSVGElement.

The SVGSVGElement::currentScale()/setCurrentScale() methods are now only used when called from the bindings (eg. JS).
They only take effect on the outermost <svg> element in standalone documents, otherwhise they are no-ops.

When building inside the Qt source tree, qmake always append the mkspecs
defines after ours. We have to workaround and make sure that we append
our flags after the qmake variable used inside Qt. This workaround was provided
by our qmake folks. We need to append in both case because qmake behave differently
when called with -spec or via SUBDIR+=.

When building inside the Qt source tree, qmake always append the mkspecs
defines after ours. We have to workaround and make sure that we append
our flags after the qmake variable used inside Qt. This workaround was provided
by our qmake folks. We need to append in both case because qmake behave differently
when called with -spec or via SUBDIR+=. This patch unbreak r87950 on Mac for Qt port.