Add optional debug logging when we fall into/out of threaded scrolling
https://bugs.webkit.org/show_bug.cgi?id=93898
<rdar://problem/12089098>

Reviewed by Simon Fraser.

Add logging when we enter and exit the threaded scrolling mode, and logs the reasons we
fall into main-thread scrolling.

The logging output looks like this:
    SCROLLING: Switching to main-thread scrolling mode. Time: 15843.554718 Reason(s): viewport-constrained objects
    SCROLLING: Switching to threaded scrolling mode. Time: 15844.550866
    SCROLLING: Switching to main-thread scrolling mode. Time: 15845.551214 Reason(s): viewport-constrained objects
    SCROLLING: Switching to threaded scrolling mode. Time: 15846.552619
    SCROLLING: Switching to main-thread scrolling mode. Time: 15847.553587 Reason(s): viewport-constrained objects
    SCROLLING: Switching to threaded scrolling mode. Time: 15848.554084

No new tests, as this is just debugging logging.

* WebCore.xcodeproj/project.pbxproj:
Expose ScrollingTreeState.h as a private header.

* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::frameViewHasSlowRepaintObjectsDidChange):
(WebCore::ScrollingCoordinator::frameViewFixedObjectsDidChange):
(WebCore::ScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::ScrollingCoordinator::setForceMainThreadScrollLayerPositionUpdates):
(WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThreadReason):
* page/scrolling/ScrollingCoordinator.h:
(ScrollingCoordinator):
* page/scrolling/ScrollingCoordinatorNone.cpp:
(WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThreadReason):
* page/scrolling/ScrollingTreeNode.cpp:
(WebCore::ScrollingTreeNode::ScrollingTreeNode):
(WebCore::ScrollingTreeNode::update):
* page/scrolling/ScrollingTreeNode.h:
(WebCore::ScrollingTreeNode::shouldUpdateScrollLayerPositionOnMainThreadReason):
(ScrollingTreeNode):
* page/scrolling/ScrollingTreeState.cpp:
(WebCore::ScrollingTreeState::ScrollingTreeState):
(WebCore::ScrollingTreeState::setShouldUpdateScrollLayerPositionOnMainThreadReason):
* page/scrolling/ScrollingTreeState.h:
(WebCore::ScrollingTreeState::shouldUpdateScrollLayerPositionOnMainThreadReason):
* page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:
(WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThreadReason):
Rename updateShouldUpdateScrollLayerPositionOnMainThread to updateShouldUpdateScrollLayerPositionOnMainThreadReason (and related).

* page/scrolling/ScrollingCoordinator.cpp:
(WebCore::ScrollingCoordinator::hasNonLayerViewportConstrainedObjects):
Renamed from hasNonLayerFixedObjects to match the rest of the renames going on.
(WebCore::ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThreadReason):
Construct a bitfield describing the reasons we fall into main-thread scrolling mode.

* page/scrolling/ScrollingTreeState.h:
(ScrollingTreeState):
Add ReasonsForUpdatingScrollLayerPositionOnMainThread enum, with the current reasons that we might fallback to main-thread scrolling.

* page/scrolling/mac/ScrollingTreeNodeMac.mm:
(WebCore):
(WebCore::ScrollingTreeNodeMac::update): Log every time scrolling mode changes.
(WebCore::ScrollingTreeNodeMac::scrollPosition):
(WebCore::ScrollingTreeNodeMac::setScrollPositionWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeNodeMac::setScrollLayerPosition):
(WebCore::logThreadedScrollingMode): Pretty-print the scrolling mode and shouldUpdateScrollLayerPositionOnMainThreadReason.

Update the scrolling tree's scrollingPerformanceLoggingEnabled preference
before the early-return if we don't have layer debugging borders on.

* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
(WebKit::TiledCoreAnimationDrawingArea::updatePreferences):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127837 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Make CSSPrimitiveValue::cleanup() handle all UnitTypes, fixing memory leak in the process.
https://bugs.webkit.org/show_bug.cgi?id=95938

Reviewed by Andreas Kling.

Several unit types have been added without updating the cleanup function, including CSS_VARIABLE_NAME.
I've added all the existing unit types back in and cast m_primitiveUnitType (a bitfield in CSSValue)
to the enum type to ensure the compiler catches any future errors.

No test added, but switch made to use enum type so we can't accidentally fail to update this function again.

* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::cleanup):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127838 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] Support the permission function of the Web Notification.
https://bugs.webkit.org/show_bug.cgi?id=90603

Patch by Kihong Kwon <kihong.kwon@samsung.com> on 2012-09-07
Reviewed by Gyuyoung Kim.

Implement permission related functions of Web Notifications.
checkPermission for Notification.permissionLevel().
requestPermission for Notification.requestPermission().
In addition, if the application(like a browser) has permitted domains already,
it can be cached using ewk_view_notification_permissions_store.

* WebCoreSupport/NotificationPresenterClientEfl.cpp:
(WebCore::NotificationPresenterClientEfl::NotificationPresenterClientEfl):
(WebCore::NotificationPresenterClientEfl::requestPermission):
(WebCore::NotificationPresenterClientEfl::checkPermission):
(WebCore::NotificationPresenterClientEfl::addToPermissionCache):
(WebCore):
(WebCore::NotificationPresenterClientEfl::setPermission):
* WebCoreSupport/NotificationPresenterClientEfl.h:
(WebCore):
(NotificationPresenterClientEfl):
(WebCore::NotificationPresenterClientEfl::requestPermission):
(WebCore::NotificationPresenterClientEfl::cancelRequestsForPermission):
* ewk/ewk_view.cpp:
(_ewk_view_priv_new):
(ewk_view_notification_permission_store):
(ewk_view_notification_permissions_set):
(ewk_view_notification_permission_request):
* ewk/ewk_view.h:
* ewk/ewk_view_private.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127839 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Scrolling performance logging should use WTFLogAlways instead of printf
https://bugs.webkit.org/show_bug.cgi?id=96080

Reviewed by Dan Bernstein.

Use WTF logging facilities instead of printf() for scrolling performance logging.

* page/scrolling/mac/ScrollingTreeNodeMac.mm:
(WebCore::ScrollingTreeNodeMac::logExposedUnfilledArea):
* platform/graphics/ca/mac/WebTileLayer.mm:
(-[WebTileLayer logFilledFreshTile]):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127840 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] Use ASCIILiteral for cursorStringMap.
https://bugs.webkit.org/show_bug.cgi?id=96072

Reviewed by Gyuyoung Kim.

This patch converts static strings of cursorStringMap to use ASCIILiteral
as recommended by http://trac.webkit.org/wiki/EfficientStrings.

* platform/efl/EflScreenUtilities.cpp:
(WebCore::CursorMap::CursorMap):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127841 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL][WK2] Add APIs to enable or disable the mouse events of the ewk_view.
https://bugs.webkit.org/show_bug.cgi?id=88631

Patch by Eunmi Lee <eunmi15.lee@samsung.com> on 2012-09-07
Reviewed by Gyuyoung Kim.

We can turn on/off the mouse events of the ewk_view using the mouse
events enabling API. This API can be used when we want to turn off the
mouse events on the touchscreen device to process the touch events
instead of the mouse events.

* UIProcess/API/efl/ewk_view.cpp:
(_Ewk_View_Private_Data):
(_Ewk_View_Private_Data::_Ewk_View_Private_Data):
(_ewk_view_smart_add):
(ewk_view_mouse_events_enabled_set):
(ewk_view_mouse_events_enabled_get):
* UIProcess/API/efl/ewk_view.h:
* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(TEST_F):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127842 268f45cc-cd09-0410-ab3c-d52691b4dbfc
We should have a localized string of empty for date time field
https://bugs.webkit.org/show_bug.cgi?id=96081

Reviewed by Kent Tamura.

Source/Platform:

This patch adds a localized string enum field for empty field value
description text for accessibility support in multiple fields date
time related input types for Chromium ports.

* chromium/public/WebLocalizedString.h: Added AXDateTimeFieldEmptyValueText
enum field.

Source/WebCore:

This patch add a declaration of function for getting localized string
of empty field value date time field for accessibility inside
ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS.

These functions will be used by derived classes of DateTimeFieldElement.

Note: We'll rename ENABLE_INPUT_TYPE_MULTIPLE_FIELDS to generic name
to support "date", "datetime", "month" and "week" multiple fields input
UI.

No new tests. This patch doesn't change behavior.

* platform/LocalizedStrings.h:
(WebCore): Added a declaration of AXDateTimeFieldEmptyValueText().

Source/WebKit/chromium:

This patch add a function for getting localized string of empty field
value of date time fields for accessibility inside
ENABLE_INPUT_TYPE_TIME_MULTIPLE_FIELDS.

These functions will be used by derived classes of DateTimeFieldElement.

Note: We'll rename ENABLE_INPUT_TYPE_MULTIPLE_FIELDS to generic name
to support "date", "datetime", "month" and "week" multiple fields input
UI.

* src/LocalizedStrings.cpp:
(WebCore::AXDateTimeFieldEmptyValueText): Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127843 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Rebaselines for windows due to r127831.

Unreviewed gardening.

* platform/chromium-linux/media/track/track-cue-rendering-horizontal-expected.txt: Removed.
* platform/chromium-win/media/track/track-cue-rendering-horizontal-expected.png:
* platform/chromium-win/media/track/track-cue-rendering-horizontal-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127844 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2] APIClientTraits<WKPageLoaderClient> and APIClientTraits<WKBundlePageLoaderClient> are not initialized properly
https://bugs.webkit.org/show_bug.cgi?id=96079

Patch by Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> on 2012-09-07
Reviewed by Kenneth Rohde Christiansen.

APIClientTraits<WKPageLoaderClient> was missing offset for version number 2 and
APIClientTraits<WKBundlePageLoaderClient> was missing offset for version number 3.

* Shared/APIClientTraits.cpp:
(WebKit):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127845 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[chromium] Allow enumeration of WebRenderingStats structure
https://bugs.webkit.org/show_bug.cgi?id=94565

Reviewed by James Robinson.

* chromium/public/WebRenderingStats.h:
(WebRenderingStats):
(Enumerator):
(WebKit::WebRenderingStats::Enumerator::~Enumerator):
(WebKit::WebRenderingStats::enumerateFields):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127846 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Introduce the Chromium Android Release (Tests) bot
https://bugs.webkit.org/show_bug.cgi?id=95980

Reviewed by Adam Barth.

This adds the Chromium Android Release (Tests) bot to the WebKit waterfall,
which will be running layout tests on actual Android devices. Right now,
four Galaxy Nexus phones are attached.

* BuildSlaveSupport/build.webkit.org-config/config.json:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127847 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r127839.
http://trac.webkit.org/changeset/127839
https://bugs.webkit.org/show_bug.cgi?id=90603

This patch was landed with wrong implementation and policy.

* WebCoreSupport/NotificationPresenterClientEfl.cpp:
(WebCore::NotificationPresenterClientEfl::NotificationPresenterClientEfl):
(WebCore::NotificationPresenterClientEfl::requestPermission):
(WebCore::NotificationPresenterClientEfl::checkPermission):
(WebCore::NotificationPresenterClientEfl::cancelRequestsForPermission):
* WebCoreSupport/NotificationPresenterClientEfl.h:
(NotificationPresenterClientEfl):
* ewk/ewk_view.cpp:
(_ewk_view_priv_new):
* ewk/ewk_view.h:
* ewk/ewk_view_private.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127848 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[NRWT] XvfbDriver should stop the Xvfb more aggressively
https://bugs.webkit.org/show_bug.cgi?id=95097

Reviewed by Dirk Pranke.

The Xvfb process is now killed when the XvfbDriver is stopping. Simply
terminating the process does not always work as expected, leading to timeouts
in run-webkit-tests on the buildbot. The lock file Xvfb creates is also removed
as it's not removed by the killed Xvfb process.

Also included is a thorough unittest for XvfbDriver. Proper starting of the driver
is tested in different circumstances - whether pixel tests are enabled or not,
with an arbitrary worker number or with an Xorg process already running on the system.
The stopping of the driver is tested by checking that the Xvfb process is truly killed
and then set to None.

* BuildSlaveSupport/kill-old-processes:
Kill any stale Xvfb processes at the start of the build cycle so no Xvfb
is left running, potentially clogging up a display at a certain position.
* Scripts/webkitpy/common/system/executive_mock.py:
(MockExecutive.__init__):
The _running_pids is now a dictionary with process names as keys and pids
as values.
(MockExecutive.check_running_pid):
Check whether the passed-in pid is in the _running_pids dictionary's values.
(MockExecutive):
(MockExecutive.running_pids):
This method returns the list of all the process pids of which the name passes
through the process_name_filter.
* Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
Use the Executive object of the port's host to check for running pids and open
new subprocesses or kill them throughout the class.
(XvfbDriver._start):
Use the _server_process_constructor to make testing the XvfbDriver possible. Also,
start the server process after it's created.
(XvfbDriver.stop):
Now kills the Xvfb process instead of terminating it and waiting for it to close.
* Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py: Added.
(XvfbDriverTest):
(XvfbDriverTest.make_driver):
(XvfbDriverTest.assertDriverStartSuccessful):
(XvfbDriverTest.test_start_no_pixel_tests):
(XvfbDriverTest.test_start_pixel_tests):
(XvfbDriverTest.test_start_arbitrary_worker_number):
(XvfbDriverTest.test_start_existing_xorg_process):
(XvfbDriverTest.test_stop):
(XvfbDriverTest.test_stop.FakeXvfbProcess):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127849 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] Add TestExpectations file for efl-wk1
https://bugs.webkit.org/show_bug.cgi?id=96019

Patch by Christophe Dumez <christophe.dumez@intel.com> on 2012-09-07
Reviewed by Gyuyoung Kim.

Tools:

Update TestExpectations cascading for EFL port
so that we use efl-wk1 -> efl search paths
for WebKit1 EFL.

* Scripts/webkitpy/layout_tests/port/efl.py:
(EflPort._search_paths):

LayoutTests:

Add TestExpectations file for WebKit1 EFL.

* platform/efl-wk1/TestExpectations: Added.
* platform/efl-wk2/TestExpectations:
* platform/efl/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127850 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Qt] Fix ROOT_BUILD_DIR on Windows MSVC build.
https://bugs.webkit.org/show_bug.cgi?id=96078

Patch by Zoltan Arvai <zarvai@inf.u-szeged.hu> on 2012-09-07
Reviewed by Tor Arne Vestbø.

Correct JSC, DumpRenderTree, ImageDiff, QtTestBrowser binaries location by adding $$toSystemPath to ROOT_BUILD_DIR generation.

* qmake/mkspecs/features/default_pre.prf:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127851 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add *explicit* keyword to constructors in WebCore/xml
https://bugs.webkit.org/show_bug.cgi?id=96071

Reviewed by Kentaro Hara.

As a step to let *explicit* add to constructors which have only one parameter,
*explicit* is added to Source/WebCore/xml in order to avoid implicit type conversion.

No new tests. Covered by existing tests.

* xml/NativeXPathNSResolver.h:
(NativeXPathNSResolver):
* xml/XMLHttpRequestException.h:
(WebCore::XMLHttpRequestException::XMLHttpRequestException):
* xml/XMLHttpRequestProgressEventThrottle.h:
(XMLHttpRequestProgressEventThrottle):
* xml/XMLHttpRequestUpload.h:
(XMLHttpRequestUpload):
* xml/XPathException.h:
(WebCore::XPathException::XPathException):
* xml/XPathPredicate.h:
(Number):
(StringExpression):
(Predicate):
* xml/XPathValue.h:
(WebCore::XPath::ValueData::ValueData):
* xml/XPathVariableReference.h:
(VariableReference):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127852 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed. Add Gábor Ballabás as contributor.

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

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127853 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: Migrate IndexedDB to async protocol commands.
https://bugs.webkit.org/show_bug.cgi?id=95978

Reviewed by Alexander Pavlov.

Source/WebCore:

IndexedDB is now implemented using async protocol commands.
Removed boilerplate code used to emulate async commands before.

* inspector/Inspector.json:
* inspector/InspectorIndexedDBAgent.cpp:
(WebCore):
(WebCore::InspectorIndexedDBAgent::clearFrontend):
(WebCore::InspectorIndexedDBAgent::requestDatabaseNamesForFrame):
(WebCore::InspectorIndexedDBAgent::requestDatabase):
(WebCore::InspectorIndexedDBAgent::requestData):
* inspector/InspectorIndexedDBAgent.h:
(InspectorIndexedDBAgent):
* inspector/front-end/IndexedDBModel.js:
(WebInspector.IndexedDBModel):
(WebInspector.IndexedDBModel.prototype._frameDetached):
(WebInspector.IndexedDBModel.prototype._reset):
(WebInspector.IndexedDBModel.prototype._databaseRemoved):
(WebInspector.IndexedDBModel.prototype._loadDatabaseNamesForFrame):
(WebInspector.IndexedDBModel.prototype._loadDatabase.callback):
(WebInspector.IndexedDBModel.prototype._loadDatabase):
(WebInspector.IndexedDBModel.prototype.loadObjectStoreData):
(WebInspector.IndexedDBModel.prototype.loadIndexData):
(WebInspector.IndexedDBModel.prototype._requestData.innerCallback):
(WebInspector.IndexedDBModel.prototype._requestData):

LayoutTests:

* http/tests/inspector/indexeddb/database-data.html:
* http/tests/inspector/indexeddb/database-names.html:
* http/tests/inspector/indexeddb/database-structure.html:
* http/tests/inspector/indexeddb/resources-panel.html:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127854 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[EFL] Unskip passing tests on EFL build bot
https://bugs.webkit.org/show_bug.cgi?id=96089

Unreviewed EFL gardening, unskip now passing tests.

Patch by Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> on 2012-09-07

* platform/efl/TestExpectations:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@127855 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Web Inspector: NMI: remove DataRef instrumentation from the core NMI code.
https://bugs.webkit.org/show_bug.cgi?id=96086

Reviewed by Yury Semikhatsky.

This patch is removing the last WebCore specific methods from core memory instrumentation code.

It is covered by webkit_unit_tests.

* dom/MemoryInstrumentation.h:
(WebCore):
(MemoryObjectInfo):
(WebCore::MemoryClassInfo::MemoryClassInfo):
* rendering/style/DataRef.h:
(DataRef):
(WebCore::DataRef::reportMemoryUsage):

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