As type of both col and row parameter for ewk_tile_matrix's some APIs listed by this patch
are different from each other and eina_matrixsparse associated with ewk_tile_matrix is now
using unsigned long type for both col and row parameter, row parameter for ewk_tile_matrix
is also better to be specified as unsigned long type.

Adding the new validation functionality. In its current state, it will performs checks,
but they don't fail unless you do allocation in the arguments to the parent constructor in the
initialization list of a class. The allocateCell() method turns on the global flag disallowing any new
allocations, and the constructorBody() method in JSCell turns it off. This way, allocation is still
allowed in constructor bodies while other refactoring efforts continue.

Adding the new validation functionality. In its current state, it will performs checks,
but they don't fail unless you do allocation in the arguments to the parent constructor in the
initialization list of a class. The allocateCell() method turns on the global flag disallowing any new
allocations, and the constructorBody() method in JSCell turns it off. This way, allocation is still
allowed in constructor bodies while other refactoring efforts continue.

bindings/js/JSDOMWindowShell.cpp:

(WebCore::JSDOMWindowShell::operator new):

bindings/js/JSDOMWindowShell.h:

Source/WebKit/mac:

Adding the new validation functionality. In its current state, it will performs checks,
but they don't fail unless you do allocation in the arguments to the parent constructor in the
initialization list of a class. The allocateCell() method turns on the global flag disallowing any new
allocations, and the constructorBody() method in JSCell turns it off. This way, allocation is still
allowed in constructor bodies while other refactoring efforts continue.

For some unknown reason, the default value for this setting was being
obtained from Settings::allowScriptsToCloseWindows() instead of
Settings::javaScriptCanOpenWindowsAutomatically(), which makes no
sense at all.

As current tiled backing store in Webkit EFL is using variable tile size according to the zoom level,
the number of tiles in viewport is not same always and the speed of panning is also not consistent
whenever zoom level is changed.
Therefore, tile size should be constant size in order to make sure the consistent panning speed.

WebViewImpl::didRecreateGraphicsContext() was calling
setRootLayer() on the CC layer tree, but the root layer
doesn't actually change and the code wasn't defensive
against this. This CL adds some asserts to catch tree
corruption and removes the unnecessary calls.

WebViewImpl::didRecreateGraphicsContext() was calling
setRootLayer() on the CC layer tree, but the root layer
doesn't actually change and the code wasn't defensive
against this. This CL adds some asserts to catch tree
corruption and removes the unnecessary calls.

This patch adds a generalized concept of needing a full style recalc to the
BackForwardController. So when the display scale factor is changed, the
BackForwardController can be informed that all pages will need a full style recalc
when they come out of the cache. This same mechanism is also used to fix a long-
standing bug with full-page/text zoom.

Iterate through the HistoryItems and mark all CachedPages as needing a full style
recalc.

history/BackForwardController.cpp:

(WebCore::BackForwardController::markPagesForFullStyleRecalc):

history/BackForwardController.h:

ChachedPage has a new bool -- m_needsFullStyleRecalc -- to track whether a full
style recalc is needed when the CachedPage is restored.

​https://bugs.webkit.org/show_bug.cgi?id=66751
[Chromium]WebWorkerClientImpl should always invoke
InspectorIntrumentation on main thread.
The fix moves calls to InspectorInstrumentation from
WebWorkerClientImpl to unedrlying WorkerMessagingProxy.

This fixes the WebKit Canaries, in particular avoids a crash on tests
like css1/basic/comments.html.

Reviewed by James Robinson.

DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:

(WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
The NSGraphicsContext call graphicsContextWithGraphicsPort takes a void*
parameter, so it took a WebCanvas* (mapped to SkCanvas* in Skia-land)
and treated it as if it were a CGContextRef.

When mobile theme is in use and application palette is using light
color to display text button text becomes invisible. The reason for
that is that in RenderThemeQt::systemFont() we are using application
pallete while when are painting buttons lightGrayPalette is used.
Calling setPaletteFromPageClientIfExists() takes care of the issue.

Windows has no /tmp/ directory and the "TMPDIR" environment variable isn't set in the default setup.
Add the "TEMP" environment variable as additional source for the temporary directory used in writeTempFile.

Before we had proper semantics for flush() in the command buffer, we
used a scheme of latches across contexts to ensure consistent frames
were presented for WebGL and canvas. We no longer have latches and
flush is a proper synchronization primative, so the child context list
no longer does anything. Canvas2DLayerChromium and
WebGLLayerChromium's implementations of updateCompositorResources() do
flushes on the appropriate context already - canvas layers via
DrawingBuffer::publishToPlatformLayer(), and WebGL layers via the call
to prepareTexture().

The problem was that LineWidth::fitBelowFloats is not updating the m_left and m_right fields.
Next time LineWidth::shrinkAvailableWidthForNewFloatIfNeeded was called the width was recalculated
using the old values, making the line bigger.

Patch by Alexandru Chiculita <​achicu@adobe.com> on 2011-08-23
Reviewed by David Hyatt.

Test: fast/block/float/fit_line_below_floats.html

rendering/RenderBlockLineLayout.cpp:

(WebCore::LineWidth::fitBelowFloats):

LayoutTests:

Patch by Alexandru Chiculita <​achicu@adobe.com> on 2011-08-23
Reviewed by David Hyatt.

When RenderFlowThread is doing the layout it also sets the current RenderFlowThread on
the RenderView. RenderFlowThread cannot be nested inside a single RenderView, so there's no
need to put that on the LayoutState.

The right offset used to layout the inlines inside a RenderFlowThread
is now adjusted to fit inside the current region.

Patch by Alexandru Chiculita <​achicu@adobe.com> on 2011-08-23
Reviewed by David Hyatt.

Text indent was not propagated when a new float was pushed on the line.
It was only calculated when the logicalLeft/RightOffsetForLine was called.
Because of that RenderBlock::LineBreaker::nextLineBreak used a bigger width
than actually available and made the line render on top of the borders.

Patch by Alexandru Chiculita <​achicu@adobe.com> on 2011-08-23
Reviewed by David Hyatt.

webcore_remaining has consistently exceeded Visual Studio 2008's
capacity to link when link time code generation is turned on (full
release builds). This has been dealt with the past by carving off
larger and larger pieces of webcore_remaining (ie webcore_html,
webcore_renderer etc).
A new option has been added to gyp to automate this sharding:
'msvs_shard': SHARD_COUNT,
Targets marked in this way will be built in several pieces
(target_0, target_1...).
Since the resulting project is less comprehensible in the IDE (and
since the linking limitation only afflicts official builds), this
option is only needed for those builds.
This patch shards webcore_remaining into 10 parts for official builds.

When an element with absolute position was the sole or first child of a render block with
centred alignment, it wasn't obeying its parent's alignment. However it would obey the
alignment if it was preceded by some text. The problem was that the element's render object
was getting skipped as leading white space, so it was not included in a normal line block in
a bidi run. Instead, its position was getting set by RenderBlockLineLayout::setStaticPositions()
which does not pay attention to alignment. Preceding the element with some text allowed the object
to get included in a Bidi run and so get a linebox which would get properly aligned.

The fix is to get RenderBlockLineLayout::setStaticPositions() to obey the alignment specified by
the object's container. This allows WebKit to get the same result on the test as Firefox and IE.
Opera has the same bug as unpatched WebKit.

rendering/RenderBlock.cpp:

(WebCore::RenderBlock::adjustPositionedBlock): use startAlignedOffsetForBlock

rendering/RenderBlock.h:

rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlock::updateLogicalWidthForAlignment):
(WebCore::RenderBlock::computeInlineDirectionPositionsForLine): Move the alignment check to updateLogicalWidthForAlignment.
(WebCore::setStaticPositions): use startAlignedOffsetForLine and use startAlignedOffsetForBlock
(WebCore::RenderBlock::LineBreaker::nextLineBreak): use startAlignedOffsetForLine
(WebCore::RenderBlock::startAlignedOffsetForBlock): New function, find the aligned offset using updateLogicalWidthForAlignment
(WebCore::RenderBlock::startAlignedOffsetForLine): ditto

rendering/RenderBlock.h:

rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlock::updateLogicalWidthForAlignment):
(WebCore::RenderBlock::computeInlineDirectionPositionsForLine): Move the alignment check to updateLogicalWidthForAlignment.
(WebCore::setStaticPositions): use startAlignedOffsetForLine.
(WebCore::RenderBlock::startAlignedOffsetForLine): New function, find the aligned offset using updateLogicalWidthForAlignment

platform/chromium-linux/fast/repaint/block-layout-inline-children-float-positioned-expected.txt:
Both of these two tests were based on the incorrect behaviour of ignoring the alignment specified
by the container of an element absolute position when there was no text preceding the element.
The updated results agree with Firefox and IE.

Updated TiledLayerChromium and the texture updater classes to not
access LayerRendererChromium or cache GraphicsContext3D. Some settings
like max texture size were moved from LayerRendererChromium to
CCLayerTreeHost in order to facilitate this refactoring.

LayerTextureUpdaterSkPicture has been #ifdef'd to only work when the
compositor is not threaded. It will need to be refactored more in
order to not own graphics resources from the main thread.

This patch avoids recomputing the RenderLayers rectangles if not needed.

The current code path for scrolling would update RenderLayers' repaint rectangles
twice. However we do need to update only children of a fixed element as they are
the only type of layers that move during a scroll.

We just change a call to updateLayerPositions for a call to updateLayerPositionsAfterScroll.
updateLayerPositions being pessimist about the layer's state - because it is called after layout -
it is missing some optimization that can be done during scrolling.

(WebCore::RenderLayer::updateLayerPositionsAfterScroll): Beefed up the method
to take care of also updating the layer's position (that sounded like a bug in
the previous code that is covered by the tests above). Note that we don't care
if one of our ancestor has a fixed position as we are scrolling *inside* this
ancestor.

This patch refactors a bunch of code from summary.js to independent
controllers in controllers.js. This patch also contains the first
iteration of binding the "examine" event to a the behavior showing the
details view for the tests. There's more work to do here to make this
work properly (and elegantly), but this patch is a start.

We were mistakenly picking up mac/WebCoreSystemInterface.h instead of
the Qt one, and building on Lion revealed this when a typedef for
IOSurfaceRef was wrapped in PLATFORM(MAC).

For now we fix this by including WebCoreSystemInterface using
brackets, so that we'll pick up the right file based on the
include paths. This also means exposing a few missing enums
in our own version of the file, so those were added.

Lasty, we need to link against the right system interface library
on Lion.

Add the method animateContentIntoBoundariesIfNeeded() to move the content back into both scale and position boundaries.
This method is now used as the entry point for animations in order to avoid bugs regarding scale or position.

The existing animation methods were renamed accordingly for clarity and consistency with the updateContent methods.

Previously, resizes of cropped images would not be cached. This causes various websites to have janky CSS animations in software compositing mode.

platform/graphics/skia/ImageSkia.cpp:

(WebCore::drawResampledBitmap): Changed to use new APIs for subset caching.
(WebCore::Image::drawPattern): Added allowCaching parameter.

platform/graphics/skia/NativeImageSkia.cpp:

(WebCore::NativeImageSkia::NativeImageSkia):
(WebCore::NativeImageSkia::CachedImageInfo::CachedImageInfo):
(WebCore::NativeImageSkia::CachedImageInfo::isEqual):
(WebCore::NativeImageSkia::CachedImageInfo::set):
(WebCore::NativeImageSkia::hasResizedBitmap): Changed this method so that it does not modify caching data. Added a second version used for cropped image resizes.
(WebCore::NativeImageSkia::resizedBitmap): Added parameter to let caller specify whether caching is allowed.
(WebCore::NativeImageSkia::shouldCacheResampling): Added a second version used for cropped image resizes.
(WebCore::NativeImageSkia::shouldCacheResamplingInternal): Both shouldCacheResampling methods call down to this for the shared logic.

This function is poorly designed because isLoadingMainResource is a
poor proxy for determing whether to flush/finish the parser. Really,
we should change how loads complete to match the model in HTML5, but
that's pretty tricky. In the meantime, this null check fixes the
crash.

I'm sure there's another bug on file about this crash, but we've never
been able to reproduce it. Thanks to Berend-Jan Wever for the test
case!

bindings/js/JSDOMWindowCustom.cpp: (WebCore::JSDOMWindow::getOwnPropertySlot):
Added a FIXME about a difference with Firefox.

(WebCore::DialogHandler::DialogHandler):
(WebCore::DialogHandler::dialogCreated):
(WebCore::DialogHandler::returnValue):
Changed to fetch returnValue from the global object that's in the frame when the dialog is
dismissed. A dialog can navigate itself, and it also creates a new JSDOMWindow on first load
if the origin doesn't match opener origin (which the case with domain relaxing).
Re-added a security check for returnValue that got lost in r73829, so that we don't send the
result across origins. This matches Firefox.

bindings/js/JSDOMWindowShell.cpp: (WebCore::JSDOMWindowShell::setWindow): Added an assertion
against a very confusing case that should no longer occur.

page/Frame.cpp: (WebCore::Frame::pageDestroyed): Don't clear the window shell, it doesn't
seem necessary, but prevents DialogHandler from fetching the return value. Added a keepAlive
call to avoid changing life support timer behavior in this patch.

Hack start-queue.sh in an attempt to resurrect the cr-jail-1 cr-mac-ews bot.
I won't have ssh access to the bot again for a couple days, so
attempting to fix by changing this script. If this doesn't
work we'll just live with the it hung for now.

If there is a network packet boundary in the middle of an attribute
that begins with the letters "on", then the HTMLSourceTracker will get
confused and try to extract too many characters from future input. If
the future input is small enough, that will walk off the end of the
input and crash.

bidiNext and bidiFirst are horribly confusing.
Even worse is that bidiNext takes a bunch of mutually exclusive options.
It appears that there is a "return me every inline, even if its empty"
mode which is only used for simplified inline layout in RenderBlock.cpp.
To support that mode, there is a endOfInline pointer which keeps track
of if we just returned at the end of an inline to so we don't get stuck in
and empty inline (unable to distinguish the start from the finish).

The actual bidi/line-layout code uses bidiNext/bidiFirst in a "skip empty inlines"
mode. (Since empty inlines do not participate in the Unicode Bidi Algorithm.)

This change renames bidiNext to bidiNextShared (still a horrible name) and moves
all callers to explicitly calling bidiNextSkippingEmptyInlines or bidiNextIncludingEmptyInlines.
It becomes obvious which code uses which.

In reviewing this code be aware that the previous bidiNext default was to "skip empty inlines" (skipInlines = true).
Thus any caller who didn't pass true/false should now be calling bidiNextSkippingEmptyInlines instead.

Delay destruction of plugin objects caused by GC until the next
runloop cycle so that they can execute JS in their finalizers.
We do this using a zero delay timer coupled with a queue of
objects to be finalised.

Move chromium-mac/plugins/keyboard-events-expected.txt to
chromium-cg-mac/plugins/keyboard-events-expected.txt since the results
for chromium-mac are currently in chromium-cg-mac. This result was
added in r93519 and put in the wrong place.

Changed ArgumentEncoder to use system malloc instead of fastMalloc.
FastMalloc uses madvise(MADV_FREE_REUSABLE) which is incompatible with
mach message Out Of Line (OOL) messages that use MACH_MSG_VIRTUAL_COPY.
The system malloc has no such limitation.
Changed sendOutgoingMessage to use MACH_MSG_VIRTUAL_COPY again as it
doesn't have size limitations that MACH_MSG_PHYSICAL_COPY.

When RenderFlowThread is doing the layout it also sets the current RenderFlowThread on
the RenderView. RenderFlowThread cannot be nested inside a single RenderView, so there's no
need to put that on the LayoutState.

The right offset used to layout the inlines inside a RenderFlowThread
is now adjusted to fit inside the current region.

Patch by Alexandru Chiculita <​achicu@adobe.com> on 2011-08-22
Reviewed by David Hyatt.

Before beginning an explicit history navigation in a newly initialized
frame, it's important to give a "previous" item to avoid crashes, and
give a state to the state machine to avoid extra validating loads.

Explicitly delete all managed textures when destroying the compositor
context. This regressed due to a combination of using share groups
(so destroying a context no longer implicitly releases all resources
in that context) and switching the TextureManager over to support
deferred texture destruction.

We sadly don't have a way to construct automated tests for resource
leaks currently.

Update the Chromium Linux test results following r88712. Also rebaseline test results
for Chromium Mac. Note the WebKit Mac and Win ports both report 0 for the line number
for all console.log() events. The Chromium port reports the actual line number, hence
the need for separate test results for Chromium. The test now runs, and passes on all
the Chromium ports, following r87855. The test confirms user-plugin interactivity, so
we don't regress sites like youtube.com. Refer to bug 34936.

calculateAnimationPercentAndRepeat() is returning 1, which means 100%, whenever
elapsed >= m_intervalEnd, but this is wrong because m_intervalEnd can be in the middle
of the animation duration. (e.g. begin="0s" end="2s" dur="3s")

This change makes the function return the animations's true progress instead of 100%
when the animation ends.

(WebCore::ImageBuffer::ImageBuffer):
Invoking TryCreateBitmapCanvas instead of CreateBitmapCanvas
This is the non-crashing version of the factory function.
It returns NULL if allocation fails. Code for handling
NULL pointer was already in place.

Fixes crashes due to a bad cast from Image to BitmapImage on skia ports
that use BitmapImageSingleFrameSkia. In the skia port
Image::isBitmapImage() returning true does not necessarily mean that
Image is of type BitmapImage.

Covered by fast/canvas/canvas-as-image.html and many other canvas
tests.

The QtPlatformPlugin was allocated on the stack, so its destructor is unloading the
plugin at the end of the scope. This patch moves the local creation of QtPlatformPlugin
to class member (TextCheckerClientQt::m_platformPlugin), preventing premature unloading
of plugin.

This patch introduces the notion of UI actions and converts our
existing manual <button> manipulation with this new abstraction. The
patch also adds an Examine button to failure notifications. In a
future patch, I'll add a controller that wires this button up to
something useful.

This patch creates a notification-based UI for build failures. The new
UI displays the same information that used to be displayed in the
infobar. There's lots of room for improvement in surfacing more
information, but this is a start.

Both <signal.h> and SA_RESTART usage are guarded behind ENABLE(JSC_MULTIPLE_THREADS).
But we cause a compile error if the platform doesn't support SA_RESTART regardless of
whether JSC_MULTIPLE_THREADS is enabled for the port. Instead, we shouldn't require
SA_RESTART support unless we are building with JSC_MULTIPLE_THREADS enabled.

Added the ability to profile the values seen at function calls (both
arguments and results) and heap loads. This is done with emphasis
on performance. A value profiling site consists of: add, and,
move, and store; no branching is necessary. Each value profiling
site (called a ValueProfile) has a ring buffer of 8 recently-seen
values. ValueProfiles are stored in the CodeBlock; there will be
one for each argument (excluding this) and each heap load or callsite.
Each time a value profiling site executes, it stores the value into
a pseudo-random element in the ValueProfile buffer. The point is
that for frequently executed code, we will have 8 somewhat recent
values in the buffer and will be able to not only figure out what
type it is, but also to be able to reason about the actual values
if we wish to do so.

This feature is currently disabled by default. When enabled, it
results in a 3.7% slow-down on SunSpider.

The chromium GPU configuration does not (currently) contain any tests
incompatible with --experimental-fully-parallel, and this flag is a
significan speedup because of the directory canvas/philip/tests which
contains 802 tests in the same directory. Setting this option by
default on this configuration is a 2x speed in release, 44s to 22s,
and a 3x speedup in debug, 223s to 77s, on linux on a 16 core machine.

WTF_USE_WK_SCROLLBAR_PAINTER is now WTF_USE_SCROLLBAR_PAINTER since WK no longer
applies.

wtf/Platform.h:

Source/WebCore:

Names changed to remove references to WebKitSystemInterface since the
implementation is now in WebCore. And the type names changed to be more Objective-
Cish instead of C++ish
WTF_USE_WK_SCROLLBAR_PAINTER -> WTF_USE_SCROLLBAR_PAINTER
WKScrollbarPainterRef -> ScrollbarPainter
WKScrollbarPainterControllerRef -> ScrollbarPainterController

Fixes crashes due to a bad cast from Image to BitmapImage on skia ports
that use BitmapImageSingleFrameSkia. In the skia port
Image::isBitmapImage() returning true does not necessarily mean that
Image is of type BitmapImage.

Covered by fast/canvas/canvas-as-image.html and many other canvas
tests.

Initially, when creating the style for the RenderFlowThread, overflowX and overflowY were both set to hidden,
so that RenderView did not display scrollbars when a RenderFlowThread exists. However, this allowed the possibility
of scrolling the content displayed in region.

Now, the RenderFlowThread objects are ignored in RenderBlock::insertPositionedObject and the style of the RenderFlowThread
can be set to visible, thus preventing scrolling of the content displayed in regions.

This patch makes QDesktopWebView delegate the decision of whether a navigation
should proceed to a slot in QML. The user of the DesktopWebView must implement a
'navigationPolicyForUrl()' if it wants to use the feature.

Such feature is useful for implementing opening links in "new tab" by using a
specific mouse button or mouse button plus keyboard modifiers.

The patch introduces a internal Qt-level interface called PolicyInterface, that
is used by QtWebPageProxy to delegate policy calls. A concrete implementation is
provided for QDesktopWebView.

Shared/qt/WebCoreArgumentCodersQt.cpp:

(CoreIPC::::encode):
(CoreIPC::::decode):
Implement the serialization of the Request URL, which is the only data
we exposing from the Request.

WebKit2.pro:

UIProcess/qt/PolicyInterface.h: Added.

UIProcess/qt/QtWebPageProxy.cpp:

(QtWebPageProxy::QtWebPageProxy):
(QtWebPageProxy::init):

UIProcess/qt/QtWebPageProxy.h:

Register a Policy Client in the WK2 C API only if there's a PolicyInterface available.

UIProcess/qt/ClientImpl.h:

UIProcess/qt/ClientImpl.cpp:

(toPolicyInterface):
(toQtMouseButton):
(toQtKeyboardModifiers):
(qt_wk_decidePolicyForNavigationAction):
Implement the callback for the Page Policy Client. It will translate the
arguments to Qt jargon and call PolicyInterface.

UIProcess/qt/qdesktopwebpageproxy.cpp:

(QDesktopWebPageProxy::QDesktopWebPageProxy):

UIProcess/API/qt/qdesktopwebview.h:

UIProcess/API/qt/qdesktopwebview_p.h:

UIProcess/API/qt/qdesktopwebview.cpp:

(toPolicyAction):
(hasMetaMethod):
(QDesktopWebViewPrivate::navigationPolicyForURL):
The concrete implementation for QDesktopWebView. Its private object implements
the PolicyInterface and try to call a possible function defined in QML (so return
value and arguments all QVariants). If there's no such a function, returns the
default UsePolicy, like if we haven't registered a PolicyClient in WK2 C API.

The gist of the issue is that we were ignoring calls to HTMLLinkElement::setDisabled that would enable a
style sheet when we were loading a stylesheet (m_sheet was 0 and thus ignored the call per the spec).

FF goes against the CSS OM spec in this case and always keep an associated sheet as long as 'rel' hints
at a stylesheet link and href is present. Instead of siding with FF, I continued to follow the
specification and store the enabled via javascript state into m_scriptState (renamed from
m_isEnabledViaScript). This information gets merged back into the style sheet disabled state when it is
available.

While debugging the case at hand, I found some cases that were not properly handled and were fixed as
part of this change.

html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::HTMLLinkElement): Updated after m_isEnabledViaScript rename.
(WebCore::HTMLLinkElement::setDisabled): Always call setIsEnabledViaScript so that
the information is properly stored (either for recalcStyleSelector or just to store
the state during loading).

(WebCore::HTMLLinkElement::sheetLoaded): Merge back the state from m_scriptState to
the sheet's disabled state.

(WebCore::HTMLLinkElement::disabled): Account for the temporary state and return the
right value. It matches FF and what people would expect.

(WebCore::HTMLLinkElement::areDisabledAndScriptStatesConsistent): Debug only method
that checks that disabled() and isEnabledViaScript() are consistent with each other
(under some circumstances).

LayerTilerChromium is renamed to be CCLayerTilingData. Invalidation
and paint functionality is pushed into TiledLayerChromium and drawing
with GL is pushed into CCTiledLayerImpl. During tree synchronization,
the tiler properties and texture IDs are synchronized into
CCTiledLayerImpl.

(closeUnusedFileDescriptors):
Check if a file descriptor is a kqueue and don't close it if that is the case. While this
isn't a complete fix, (it won't work if other initializers end up creating non-kqueue file descriptors)
it's good enough for Snow Leopard. For Lion, we should use the new posix_spawn API that lets you whitelist
file descriptors from the parent process.

Add ViewportInteractionEngine to handle the content of the viewport. The class make
sure the QTouchWebPage stays in the viewport and in the boundaries.

UIProcess/API/qt/qdesktopwebview.cpp:

(QDesktopWebViewPrivate::loadDidCommit):

UIProcess/API/qt/qdesktopwebview_p.h:

UIProcess/API/qt/qtouchwebpage.cpp:

(QTouchWebPage::QTouchWebPage): Set the transform origin to the top left so
we can asume the position 0, 0 is always the top left of the page.
(QTouchWebPagePrivate::_q_commitScaleChange): Make commitScaleChange a slot
in order to completely decouple the ViewportInteractionEngine and the WebKit classes.

(TestWebKitAPI::WebKitAgnosticTest::runWebKit1Test): Code came from
DynamicDeviceScaleFactor.WebKit.
(TestWebKitAPI::WebKitAgnosticTest::runWebKit2Test): Code came from
DynamicDeviceScaleFactor.WebKit2.

markMisspellingsAndBadGrammar() was using markSpelling() and markBadGrammar().
But these are low-level API and caller should take care of word boundary.
This change replaced these call with overloaded version of markMisspellingsAndBadGrammar(),
which handles word boundary correctly.

There are functions in the API with multiple optional arguments.
When we call it we have to specify an optional argument as 'undefined' if we want to pass non default value for the next one.
This can be solved with passing the arguments as an object.