Source/WebCore: Contained div with right 0 sometimes overlaps parent div
https://bugs.webkit.org/show_bug.cgi?id=91521

Reviewed by Levi Weintraub.

Due to unnecessary rounding in clientLogicalWidth and clientLogicalHeight
we lost precision when computing the width and position of render boxes.
Change clientLogicalWidth/Height to return values with subpixel precision
to avoid this.

Test: fast/sub-pixel/position-right-aligns-with-container.html

* rendering/RenderBox.h:
(WebCore::RenderBox::clientLogicalWidth):
(WebCore::RenderBox::clientLogicalHeight):
Remove unnecessary rounding.

Source/WebKit2: Add a ChromeClient method to send diagnostic logging messages from WebCore to the client.
https://bugs.webkit.org/show_bug.cgi?id=92340

Reviewed by Anders Carlsson.

Pipe the ChromeClient logDiagnosticMessage() function through WebKit2 to a new bundle class
InjectedBundlePageDiagnosticLoggingClient, to be implemented by the client.

* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetDiagnosticLoggingClient): Added.
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added.
(WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage):
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added.
(InjectedBundlePageDiagnosticLoggingClient):
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::logDiagnosticMessage):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::initializeInjectedBundleDiagnosticLoggingClient):
* WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::injectedBundleDiagnosticLoggingClient):

Add a convenience class to retrieve the diagnostic message keys:
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.cpp: Added.
(WebKit::InjectedBundlePageDiagnosticLoggingClient::logDiagnosticMessage):
* WebProcess/InjectedBundle/InjectedBundlePageDiagnosticLoggingClient.h: Added.
(InjectedBundlePageDiagnosticLoggingClient):

Add the InjectedBundlePageDiagnosticLoggingClient.cpp,h files.
* CMakeLists.txt:
* GNUmakefile.list.am:
* Target.pri:
* win/WebKit2.vcproj:
* WebKit2.xcodeproj/project.pbxproj:

Tools: [nrwt] get rid of --skip-pixel-test-if-no-baseline
https://bugs.webkit.org/show_bug.cgi?id=92377

Reviewed by Adam Barth.

Remove the option and all code paths that handled it.

* Scripts/webkitpy/layout_tests/port/base.py:
(Port.should_run_as_pixel_test):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(_set_up_derived_options):
(parse_args):
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(MainTest.test_repeat_each):

LayoutTests: Contained div with right 0 sometimes overlaps parent div
https://bugs.webkit.org/show_bug.cgi?id=91521

Reviewed by Levi Weintraub.

Add test for elements positioned based on the right edge and update two
existing tests that where affected by the rounding.

* fast/sub-pixel/position-right-aligns-with-container-expected.html: Added.
* fast/sub-pixel/position-right-aligns-with-container.html: Added.
* platform/chromium-linux/svg/custom/svg-fonts-in-html-expected.png:
* platform/chromium-win/css2.1/t080301-c411-vt-mrgn-00-b-expected.txt:
* platform/chromium-win/svg/custom/svg-fonts-in-html-expected.txt:
* platform/mac-lion/Skipped:
* platform/mac-snowleopard/Skipped:
* platform/mac-wk2/Skipped:
* platform/mac/Skipped:
* platform/qt-4.8/Skipped:
* platform/qt-5.0-wk2/Skipped:
* platform/qt/Skipped:
* platform/win-wk2/Skipped:
* platform/win-xp/Skipped:
* platform/win/Skipped:
* platform/wincairo/Skipped:
* platform/wk2/Skipped:
Mark new subpixel test as skipped on platforms that do not enable
subpixel layout.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123782 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Regression: r123696 made css3/flexbox tests failing
https://bugs.webkit.org/show_bug.cgi?id=92352

Reviewed by Levi Weintraub.

Source/WebCore:

Use roundedLayoutUnit so ports without subpixel layout still pass existing tests.

Covered by css3/flexbox/flex-algorithm-min-max.html which should pass again.

* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::resolveFlexibleLengths):

LayoutTests:

Skip css3/flexbox/flex-rounding.html on ports that don't enable subpixel layout.

* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/mac/Skipped:
* platform/qt/Skipped:


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123783 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[BlackBerry] InputHandler failure logs should be logAlways and critical.
https://bugs.webkit.org/show_bug.cgi?id=92403

Reviewed by Rob Buis.

Update Log level for failures and fix mask in log.

Reviewed Internally by Nima Ghanavatian.

* WebKitSupport/InputHandler.cpp:
(BlackBerry::WebKit::convertStringToWchar):
(BlackBerry::WebKit::convertStringToWcharVector):
(BlackBerry::WebKit::convertSpannableStringToString):
(BlackBerry::WebKit::InputHandler::spannableTextInRange):
(BlackBerry::WebKit::InputHandler::setTextAttributes):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123784 268f45cc-cd09-0410-ab3c-d52691b4dbfc
<svg> element with no intrinsic size and max-width gets sized incorrectly
https://bugs.webkit.org/show_bug.cgi?id=92410

Reviewed by Dean Jackson.

Source/WebCore: 

Test: svg/css/max-width-2.html

* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::computeReplacedLogicalWidth): The rule for computing the width for
elements whose computed width and height are both auto and which have no intrinsic size, but
have an intrinsic ratio was applied only to elements with a content renderer (such as <img>
with an SVG source). Removed the requirement to have a content renderer, so that it will
apply to all elements including <svg>.

LayoutTests: 

* svg/css/max-width-2-expected.html: Added.
* svg/css/max-width-2.html: Added.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123785 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Qt] requestAnimationFrame should only trigger when a new frame can be displayed.
https://bugs.webkit.org/show_bug.cgi?id=88638

Source/WebKit/qt:

Disable REQUEST_ANIMATION_FRAME_TIMER for the Qt port and tie
the servicing of scripted animations to the renderNextFrame call for WK2.
For WK1 we rely on the RefreshAnimation that is based on QAbstractAnimation.

Reviewed by Jocelyn Turcotte.

* WebCoreSupport/ChromeClientQt.cpp:
(RefreshAnimation):
    Add a RefreshAnimation that is based on QAbstractAnimation
    and drives the servicing of the scripted animations for WK1.
(WebCore::RefreshAnimation::RefreshAnimation):
(WebCore::RefreshAnimation::duration):
(WebCore::RefreshAnimation::scheduleAnimation):
    Set m_animationScheduled to true and start the animation
    timer in case it is not running yet.
(WebCore::RefreshAnimation::updateCurrentTime):
    Call serviceScriptedAnimations if m_animationScheduled is true.
    If this is not the case, the animation timer can be stopped,
    because no animation needs to be scheduled anymore.
(WebCore):
(WebCore::ChromeClientQt::scheduleAnimation):
    Create and start the RefreshAnimation instance with the
    first call to scheduleAnimation.
* WebCoreSupport/ChromeClientQt.h:
(WebCore):
(ChromeClientQt):

Source/WebKit2:

Disable REQUEST_ANIMATION_FRAME_TIMER for the Qt port and tie
the servicing of scripted animations to layer syncing for WK2.
For WK1 we rely on the RefreshAnimation that is based on QAbstractAnimation.

Reviewed by Jocelyn Turcotte.

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit):
(WebKit::WebChromeClient::scheduleAnimation):
* WebProcess/WebCoreSupport/WebChromeClient.h:
(WebChromeClient):
* WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.cpp:
(WebKit::LayerTreeCoordinator::performScheduledLayerFlush):
(WebKit::LayerTreeCoordinator::scheduleAnimation):
(WebKit):
* WebProcess/WebPage/LayerTreeCoordinator/LayerTreeCoordinator.h:
(LayerTreeCoordinator):
* WebProcess/WebPage/LayerTreeHost.h:
(LayerTreeHost):

Source/WTF:

Disable REQUEST_ANIMATION_FRAME_TIMER for the Qt port and tie
the servicing of scripted animations to layer syncing for WK2.
For WK1 we rely on the RefreshAnimation that is based on QAbstractAnimation.

Reviewed by Jocelyn Turcotte.

* wtf/Platform.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123786 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[BlackBerry] Add timing logs to SelectionHandler.
https://bugs.webkit.org/show_bug.cgi?id=92404

Reviewed by Rob Buis.

Add selection timing logs.

Reviewed Internally by Nima Ghanavatian.

* WebKitSupport/SelectionHandler.cpp:
(BlackBerry::WebKit::SelectionHandler::setSelection):
(BlackBerry::WebKit::SelectionHandler::selectionPositionChanged):
* WebKitSupport/SelectionHandler.h:
(SelectionHandler):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@123787 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Href attribute with javascript protocol is stripped when content is pasted into a XML doucment
https://bugs.webkit.org/show_bug.cgi?id=92310

Reviewed by Adam Barth.

Source/WebCore: 

The bug was caused by setAttributeNS's stripping attributes for which isAttributeToRemove
return true instead of setting an empty string. Changing this in setAttributeNS is problematic
because it will trigger a logic, in HTMLAnchorElement for example, to resolve the URL.

Fixed the bug by making XML parsers call parserSetAttributes instead of setAttributeNS.
After this patch, handleNamespaceAttributes and handleElementAttributes simply fills up a Vector
with which startElementNs (or parseStartElement in Qt) calls parserSetAttributes.

* dom/Element.cpp:
(WebCore::Element::parserSetAttributes): Sets emptyAtom instead of nullAtom as nullAtom can be
turned into "null".
(WebCore::Element::parseAttributeName): Extracted from setAttributeNS.
(WebCore::Element::setAttributeNS): No longer takes FragmentScriptingPermission.
* dom/Element.h:
(Element):
* editing/markup.cpp:
(WebCore::completeURLs): Don't resolve URLs when it's empty since empty attribute has a canonical
meaning in some cases. e.g. <frame src=""></iframe>
* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::handleNamespaceAttributes): Renamed from handleElementNamespaces. Call
parserSetAttributes even when exiting early to be maintain the same behavior.
(WebCore::handleElementAttributes):
(WebCore::XMLDocumentParser::startElementNs):
* xml/parser/XMLDocumentParserQt.cpp:
(WebCore::handleNamespaceAttributes): Use XMLNSNames::xmlnsNamespaceURI. Call parserSetAttributes
even when exiting early to be maintain the same behavior.
(WebCore::handleElementAttributes):
(WebCore::XMLDocumentParser::parseStartElement):

LayoutTests: 

Rebaseline a test that catches this bug.

* editing/pasteboard/paste-noscript-xhtml-expected.txt:


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