REGRESSION (Safari 5?): Pasting a line into textarea inserts two newlines
https://bugs.webkit.org/show_bug.cgi?id=49288

Reviewed by Tony Chang.

Source/WebCore: 

The bug was caused by positionAvoidingPrecedingNodes getting out of a block when the insertion point is at a line break.
It caused the subsequent code to be misinformed of the insertion position and ended up not pruning the extra line break.

Fixed the bug by checking this special case and bailing out so that we don't crawl out of the enclosing block.
It's similar to checks several lines below it.

Test: editing/pasteboard/copy-paste-pre-line-content.html

* editing/ReplaceSelectionCommand.cpp:
(WebCore::positionAvoidingPrecedingNodes):

LayoutTests: 

Add a test regerssion test for copying & pasting a line in pre into textarea twice.

* editing/pasteboard/copy-paste-pre-line-content-expected.txt: Added.
* editing/pasteboard/copy-paste-pre-line-content.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121357 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Let Xcode have its own way.

* WebCore.xcodeproj/project.pbxproj:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121358 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector [JSC]: Implement ScriptCallStack::stackTrace
https://bugs.webkit.org/show_bug.cgi?id=40118

Patch by Anthony Scian <ascian@rim.com> on 2012-06-27
Reviewed by Yong Li.

Source/JavaScriptCore:

Added member functions to expose function name, urlString, and line #.
Refactored toString to make use of these member functions to reduce
duplicated code for future maintenance.

Manually tested refactoring of toString by tracing thrown exceptions.

* interpreter/Interpreter.h:
(StackFrame):
(JSC::StackFrame::toString):
(JSC::StackFrame::friendlySourceURL):
(JSC::StackFrame::friendlyFunctionName):
(JSC::StackFrame::friendlyLineNumber):

Source/WebCore:

Implemented stub for createScriptCallStack to call into
Interpreter and extract the current stack frames, iterate
through the frames and create the return result required.

No new tests, manually tested thrown exception and inspector
tracebacks.

* bindings/js/ScriptCallStackFactory.cpp:
(WebCore::createScriptCallStack):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121359 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[gtk] Spell checker doesn't recognize contractions (apostrophes)
https://bugs.webkit.org/show_bug.cgi?id=86118

Patch by Martin Robinson <mrobinson@igalia.com> on 2012-06-27
Reviewed by Gustavo Noronha Silva.

Work-around a bug in Pango by trying to detect apostrophes
that create contractions. This work-around is similar to one
found in gtkspell.

* webkit/webkitspellcheckerenchant.cpp:
(wordEndIsAContractionApostrophe): Added this helper which tries to detect
situations where a word end is both an apostrophe and followed by a alphabetic
character.
(checkSpellingOfString): When searching for the end of a word, skip over
apostrophes that appear to be part of contractions.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121360 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Allow screen space rects and occluding rects to be visualized for debugging.
https://bugs.webkit.org/show_bug.cgi?id=90012

Patch by Ian Vollick <vollick@chromium.org> on 2012-06-27
Reviewed by Adrienne Walker.

No new tests. No new functionality.

* platform/graphics/chromium/cc/CCDebugRectHistory.cpp:
(WebCore::CCDebugRectHistory::enabled):
(WebCore::CCDebugRectHistory::saveDebugRectsForCurrentFrame):
(WebCore::CCDebugRectHistory::saveScreenSpaceRects):
(WebCore):
(WebCore::CCDebugRectHistory::saveOccludingRects):
* platform/graphics/chromium/cc/CCDebugRectHistory.h:
(WebCore):
(CCDebugRectHistory):
* platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:
(WebCore::CCHeadsUpDisplay::showDebugRects):
(WebCore::CCHeadsUpDisplay::draw):
(WebCore::CCHeadsUpDisplay::drawDebugRects):
* platform/graphics/chromium/cc/CCLayerTreeHost.h:
(WebCore::CCLayerTreeSettings::CCLayerTreeSettings):
(CCLayerTreeSettings):
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
(WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
(WebCore::CCLayerTreeHostImpl::drawLayers):
* platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
(FrameData):
* platform/graphics/chromium/cc/CCOcclusionTracker.cpp:
(WebCore::::CCOcclusionTrackerBase):
(WebCore::addOcclusionBehindLayer):
(WebCore::::markOccludedBehindLayer):
* platform/graphics/chromium/cc/CCOcclusionTracker.h:
(CCOcclusionTrackerBase):
(WebCore::CCOcclusionTrackerBase::setOccludingScreenSpaceRectsContainer):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121361 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[BlackBerry] Wrong scale after leaving fullscreen <video>
https://bugs.webkit.org/show_bug.cgi?id=89546

Reviewed by Antonio Gomes.
Patch by Jacky Jiang <zhajiang@rim.com>

PR: 164948
When we were entering fullscreen, the current scale A was clamped to a
greater minimum scale B as we relayouted the contents during the change
of the viewport size. When leaving fullscreen, we still used that scale
B as the current scale which was incorrect.
To fix this, we can save the current scale when entering fullscreen and
restore it when leaving fullscreen.

* Api/WebPage.cpp:
(BlackBerry::WebKit::WebPagePrivate::WebPagePrivate):
(BlackBerry::WebKit::WebPagePrivate::enterFullScreenForElement):
(BlackBerry::WebKit::WebPagePrivate::exitFullScreenForElement):
* Api/WebPage_p.h:
(WebPagePrivate):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121362 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Derive ChromiumPort from WebKitPort to add support for missing symbols to skip tests
https://bugs.webkit.org/show_bug.cgi?id=89706

Reviewed by Adam Barth.

Based on the original patch by Raymond Toy.

This patch changes ChromiumPort to derive from webkit.WebKitPort
instead of base.Port. This is a long-awaited change and a
precursor to merging base.Port and webkit.WebKitPort, but is
driven by the desire to dynamically detect whether the MP3 and
AAC codecs are compiled into DRT on Chromium, for which we
wanted to re-use the existing logic in WebKit port for determine
what to skip at compile time.

Most of the changes are shuffling things around so that we don't
change any other logic and so we override the necessary methods
in WebKitPort (and try to follow the same method definition
order where possible).

Also, on the Chromium port the mp3 and aac codecs are actually
defined in a separate library, so scanning webcore isn't
sufficient. This patch generalizes the symbol lookup to handle
multiple libraries, and uses different libraries as appropriate
for Chromium.

The only functional/visible changes should be in the value
returned for skipped_layout_tests().

* Scripts/webkitpy/layout_tests/port/chromium.py:
(ChromiumPort):
(ChromiumPort.__init__):
(ChromiumPort.driver_name):
(ChromiumPort._driver_class):
(ChromiumPort._missing_symbol_to_skipped_tests):
(ChromiumPort.skipped_layout_tests):
(ChromiumPort.setup_test_run):
(ChromiumPort._path_to_image_diff):
(ChromiumPort._convert_path):
* Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
(ChromiumPortTest.test_missing_symbol_to_skipped_tests):
* Scripts/webkitpy/layout_tests/port/chromium_linux.py:
(ChromiumLinuxPort._modules_to_search_for_symbols):
* Scripts/webkitpy/layout_tests/port/chromium_mac.py:
(ChromiumLinuxPort._modules_to_search_for_symbols):
* Scripts/webkitpy/layout_tests/port/chromium_win.py:
(ChromiumLinuxPort._modules_to_search_for_symbols):
* Scripts/webkitpy/layout_tests/port/webkit.py:
(WebKitPort):
(WebKitPort.__init__):
(WebKitPort._symbols_string):
(WebKitPort._modules_to_search_for_symbols):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121363 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Expose device scale factor in WebPluginContainer
https://bugs.webkit.org/show_bug.cgi?id=87874

Patch by Josh Horwich <jhorwich@chromium.org> on 2012-06-27
Reviewed by Adam Barth.

* public/WebPluginContainer.h:
(WebPluginContainer):
* src/WebPluginContainerImpl.cpp:
(WebKit::WebPluginContainerImpl::deviceScaleFactor):
(WebKit):
(WebKit::WebPluginContainerImpl::pageScaleFactor):
(WebKit::WebPluginContainerImpl::pageZoomFactor):
* src/WebPluginContainerImpl.h:
(WebPluginContainerImpl):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121364 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Moving from committers to reviewers :-)

Rubber stamped by Filip Pizlo.

* Scripts/webkitpy/common/config/committers.py:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] IndexedDB: Expose WebIDBTransaction::commit() method in public API
https://bugs.webkit.org/show_bug.cgi?id=90089

Reviewed by James Robinson.

Prep work for http://webkit.org/b/89379 which requires empty transactions to
trigger a commit from the front-end.

* public/WebIDBTransaction.h:
(WebKit::WebIDBTransaction::commit):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121366 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix typo introduced in r121363.

Unreviewed, build fix.

* Scripts/webkitpy/layout_tests/port/webkit.py:
(WebKitPort._symbols_string):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121367 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed GTK gardening, adding a new baseline that's required
after the Gamepad API has been turned on in r121332.

* platform/gtk/fast/dom/navigator-detached-no-crash-expected.txt: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Chromium] DumpRenderTree on Android should call SkUseTestFontConfigFile once available
https://bugs.webkit.org/show_bug.cgi?id=89801

Reviewed by Nate Chapin.

Let's call SkUseTestFontConfigFile now that it exists.

* DumpRenderTree/chromium/TestShellAndroid.cpp:
(platformInit):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121369 268f45cc-cd09-0410-ab3c-d52691b4dbfc
REGRESSION(r121135): It made qmltests::WebViewColorChooser::test_accept() fail
https://bugs.webkit.org/show_bug.cgi?id=89871

Patch by Thiago Marcos P. Santos <thiago.santos@intel.com> on 2012-06-27
Reviewed by Simon Hausmann.

Added proper event synchronization to the test case.

* UIProcess/API/qt/tests/qmltests/WebView/tst_colorChooser.qml:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121370 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] ScrollbarLayerChromium should support painting forward-track and back-track in different styles.
https://bugs.webkit.org/show_bug.cgi?id=89908

Reviewed by Adrienne Walker.

Source/WebCore:

Test: platform/chromium/compositing/scrollbars/custom-composited-different-track-parts.html

Adds support for accelerated drawing (impl thread) of scrollbars with different styles for the
forward-track and back-track parts.

* platform/graphics/chromium/ScrollbarLayerChromium.cpp:
(WebCore::ScrollbarLayerChromium::pushPropertiesTo):
(WebCore::ScrollbarBackgroundPainter::create):
(WebCore::ScrollbarBackgroundPainter::ScrollbarBackgroundPainter):
(ScrollbarBackgroundPainter):
(WebCore::ScrollbarLayerChromium::setLayerTreeHost):
(WebCore::ScrollbarLayerChromium::createTextureUpdaterIfNeeded):
(WebCore::ScrollbarLayerChromium::update):
* platform/graphics/chromium/ScrollbarLayerChromium.h:
(ScrollbarLayerChromium):
* platform/graphics/chromium/cc/CCScrollbarLayerImpl.cpp:
(WebCore::CCScrollbarLayerImpl::CCScrollbarLayerImpl):
(WebCore):
(WebCore::CCScrollbarLayerImpl::appendQuads):
* platform/graphics/chromium/cc/CCScrollbarLayerImpl.h:
(WebCore::CCScrollbarLayerImpl::setBackTrackTextureId):
(WebCore::CCScrollbarLayerImpl::setForeTrackTextureId):
(CCScrollbarLayerImpl):

LayoutTests:

Adds support for accelerated drawing (impl thread) of scrollbars with different styles for the
forward-track and back-track parts.

* platform/chromium/compositing/scrollbars/custom-composited-different-track-parts-expected.png: Added.
* platform/chromium/compositing/scrollbars/custom-composited-different-track-parts-expected.txt: Added.
* platform/chromium/compositing/scrollbars/custom-composited-different-track-parts.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121371 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add a comment clarifying Options::showDisassembly versus Options::showDFGDisassembly.

Rubber stamped by Mark Hahnenberg.

* runtime/Options.cpp:
(JSC::Options::initializeOptions):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121372 268f45cc-cd09-0410-ab3c-d52691b4dbfc
webkitpy: fix a couple of issues running under cygwin
https://bugs.webkit.org/show_bug.cgi?id=90035

Reviewed by Eric Seidel.

These were causing unit tests to fail on cygwin (apple win bot).

* Scripts/webkitpy/layout_tests/port/chromium.py:
* Scripts/webkitpy/performance_tests/perftest.py:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121373 268f45cc-cd09-0410-ab3c-d52691b4dbfc
x86 disassembler confuses immediates with addresses
https://bugs.webkit.org/show_bug.cgi?id=90099

Reviewed by Mark Hahnenberg.
        
Prepend "$" to immediates to disambiguate between immediates and addresses. This is in
accordance with the gas and AT&T syntax.

* disassembler/udis86/udis86_syn-att.c:
(gen_operand):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121374 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Use categorized TRACE_EVENTN() macros in compositor code
https://bugs.webkit.org/show_bug.cgi?id=90100

Reviewed by Adrienne Walker.

Specify the category in all traces in the compositor. Patch generated mostly by the sed command
's/TRACE_EVENT(\(.*\), this, 0)/TRACE_EVENT0("cc", \1)/'.

* platform/graphics/chromium/LayerRendererChromium.cpp:
(WebCore::LayerRendererChromium::beginDrawingFrame):
(WebCore::LayerRendererChromium::finish):
(WebCore::LayerRendererChromium::swapBuffers):
(WebCore::LayerRendererChromium::initializeSharedObjects):
(WebCore::LayerRendererChromium::tileCheckerboardProgram):
(WebCore::LayerRendererChromium::solidColorProgram):
(WebCore::LayerRendererChromium::headsUpDisplayProgram):
(WebCore::LayerRendererChromium::renderPassProgram):
(WebCore::LayerRendererChromium::renderPassProgramAA):
(WebCore::LayerRendererChromium::renderPassMaskProgram):
(WebCore::LayerRendererChromium::renderPassMaskProgramAA):
(WebCore::LayerRendererChromium::tileProgram):
(WebCore::LayerRendererChromium::tileProgramOpaque):
(WebCore::LayerRendererChromium::tileProgramAA):
(WebCore::LayerRendererChromium::tileProgramSwizzle):
(WebCore::LayerRendererChromium::tileProgramSwizzleOpaque):
(WebCore::LayerRendererChromium::tileProgramSwizzleAA):
(WebCore::LayerRendererChromium::textureProgram):
(WebCore::LayerRendererChromium::textureProgramFlip):
(WebCore::LayerRendererChromium::textureIOSurfaceProgram):
(WebCore::LayerRendererChromium::videoYUVProgram):
(WebCore::LayerRendererChromium::videoStreamTextureProgram):
* platform/graphics/chromium/LayerTextureSubImage.cpp:
(WebCore::LayerTextureSubImage::uploadWithTexSubImage):
(WebCore::LayerTextureSubImage::uploadWithMapTexSubImage):
* platform/graphics/chromium/SkPictureCanvasLayerTextureUpdater.cpp:
(WebCore::SkPictureCanvasLayerTextureUpdater::drawPicture):
* platform/graphics/chromium/TextureCopier.cpp:
(WebCore::AcceleratedTextureCopier::copyTexture):
* platform/graphics/chromium/TextureManager.cpp:
(WebCore::TextureManager::evictTexture):
* platform/graphics/chromium/cc/CCFrameRateController.cpp:
(WebCore::CCFrameRateController::setActive):
(WebCore::CCFrameRateController::onTimerTick):
* platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
(WebCore::CCLayerTreeHost::initialize):
(WebCore::CCLayerTreeHost::~CCLayerTreeHost):
(WebCore::CCLayerTreeHost::initializeLayerRenderer):
(WebCore::CCLayerTreeHost::beginCommitOnImplThread):
(WebCore::CCLayerTreeHost::didLoseContext):
(WebCore::CCLayerTreeHost::updateLayers):
(WebCore::CCLayerTreeHost::animateLayers):
* platform/graphics/chromium/cc/CCSingleThreadProxy.cpp:
(WebCore::CCSingleThreadProxy::CCSingleThreadProxy):
(WebCore::CCSingleThreadProxy::~CCSingleThreadProxy):
(WebCore::CCSingleThreadProxy::compositeAndReadback):
(WebCore::CCSingleThreadProxy::stop):
* platform/graphics/chromium/cc/CCThreadProxy.cpp:
(WebCore::CCThreadProxy::CCThreadProxy):
(WebCore::CCThreadProxy::~CCThreadProxy):
(WebCore::CCThreadProxy::compositeAndReadback):
(WebCore::CCThreadProxy::initializeContext):
(WebCore::CCThreadProxy::initializeLayerRenderer):
(WebCore::CCThreadProxy::setNeedsAnimate):
(WebCore::CCThreadProxy::setNeedsCommit):
(WebCore::CCThreadProxy::onSwapBuffersCompleteOnImplThread):
(WebCore::CCThreadProxy::setNeedsCommitOnImplThread):
(WebCore::CCThreadProxy::setNeedsForcedCommitOnImplThread):
(WebCore::CCThreadProxy::postAnimationEventsToMainThreadOnImplThread):
(WebCore::CCThreadProxy::setNeedsRedraw):
(WebCore::CCThreadProxy::setNeedsRedrawOnImplThread):
(WebCore::CCThreadProxy::stop):
(WebCore::CCThreadProxy::finishAllRenderingOnImplThread):
(WebCore::CCThreadProxy::beginFrame):
(WebCore::CCThreadProxy::beginFrameCompleteOnImplThread):
(WebCore::CCThreadProxy::scheduledActionUpdateMoreResources):
(WebCore::CCThreadProxy::scheduledActionCommit):
(WebCore::CCThreadProxy::scheduledActionDrawAndSwapInternal):
(WebCore::CCThreadProxy::acquireLayerTextures):
(WebCore::CCThreadProxy::initializeImplOnImplThread):
(WebCore::CCThreadProxy::initializeContextOnImplThread):
(WebCore::CCThreadProxy::initializeLayerRendererOnImplThread):
(WebCore::CCThreadProxy::layerTreeHostClosedOnImplThread):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@121375 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[V8] Improve variable resolution order on window
https://bugs.webkit.org/show_bug.cgi?id=84247

Reviewed by Ojan Vafai.

This changes the V8 flag to turn on es52_globals and updates the layout tests to reflect the fixed behavior.

This is the second (third?) try. Last time there was a bug in the V8 code related to the split window.
I added a test that tests the failure that caused this to be rolled back last time.

Source/WebCore:

Tests: fast/dom/Window/es52-globals.html
       fast/dom/Window/window-property-shadowing-onclick.html

* bindings/v8/V8DOMWindowShell.cpp:
(WebCore::V8DOMWindowShell::initContextIfNeeded):
* bindings/v8/WorkerContextExecutionProxy.cpp:
(WebCore::WorkerContextExecutionProxy::initIsolate):

LayoutTests:

* fast/dom/Window/es52-globals-expected.txt: Added.
* fast/dom/Window/es52-globals.html: Added.
* fast/dom/Window/window-property-shadowing-onclick-expected.txt: Added.
* fast/dom/Window/window-property-shadowing-onclick.html: Added.
* platform/chromium/fast/dom/Window/es52-globals-expected.txt: Added.
* platform/chromium/fast/dom/Window/window-property-shadowing-name-expected.txt: Added.
* platform/chromium/fast/dom/Window/window-property-shadowing-onclick-expected.txt: Added.


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