WebKit-https.git
5 years agoSome proof-reading of the WebKit2 API headerdoc
ggaren@apple.com [Wed, 28 May 2014 00:16:25 +0000 (00:16 +0000)]
Some proof-reading of the WebKit2 API headerdoc
https://bugs.webkit.org/show_bug.cgi?id=133328

Reviewed by Anders Carlsson.

Consistently say "item" to reference back-forward list items.

Consistently say "webpage" instead of "page" or "web page".

Consistently say "navigation" instead of "load".

Plus a few fix-ups for run-on sentences, mismatched verb tense, and
mismatched singular vs plural.

* UIProcess/API/Cocoa/WKBackForwardList.h:
* UIProcess/API/Cocoa/WKBackForwardListItem.h:
* UIProcess/API/Cocoa/WKBrowsingContextController.h:
* UIProcess/API/Cocoa/WKBrowsingContextGroup.h:
* UIProcess/API/Cocoa/WKFrameInfo.h:
* UIProcess/API/Cocoa/WKNavigation.h:
* UIProcess/API/Cocoa/WKNavigationAction.h:
* UIProcess/API/Cocoa/WKNavigationDelegate.h:
* UIProcess/API/Cocoa/WKProcessPool.h:
* UIProcess/API/Cocoa/WKUIDelegate.h:
* UIProcess/API/Cocoa/WKWebView.h:

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

5 years agoUnreviewed Mac Gardening.
achristensen@apple.com [Wed, 28 May 2014 00:02:34 +0000 (00:02 +0000)]
Unreviewed Mac Gardening.

* platform/mac/TestExpectations:
Skip webtiming-two-redirects.php which I forgot to re-skip in r169403.

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

5 years agoRun web timing tests if web timing is enabled.
achristensen@apple.com [Tue, 27 May 2014 23:32:21 +0000 (23:32 +0000)]
Run web timing tests if web timing is enabled.
https://bugs.webkit.org/show_bug.cgi?id=133327

Reviewed by Ryosuke Niwa.

* fast/dom/script-tests/webtiming-document-open.js:
(finishTest):
* fast/dom/script-tests/webtiming-navigate-within-document.js:
(checkTimingNotChanged):
Use for in loop instead of Object.keys because properties are in prototype chain.
* fast/dom/script-tests/webtiming.js:
Use performance.now instead of 0.
* platform/mac/TestExpectations:
Made web timing tests skipped on Mountain Lion and Mavericks.

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

5 years agoUnreviewed, rolling out r169399.
commit-queue@webkit.org [Tue, 27 May 2014 22:56:09 +0000 (22:56 +0000)]
Unreviewed, rolling out r169399.
https://bugs.webkit.org/show_bug.cgi?id=133326

Causes assertion failures in tests.  See
http://build.webkit.org/results/Apple%20Mavericks%20Debug%20WK1%20(Tests)/r169399%20(5622)/results.html
(Requested by mlam on #webkit).

Reverted changeset:

"Caret's screen position does not update during an overflow
scroll"
https://bugs.webkit.org/show_bug.cgi?id=133256
http://trac.webkit.org/changeset/169399

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

5 years agoUnreviewed post-commit ChangeLog fixup
mmaxfield@apple.com [Tue, 27 May 2014 21:38:44 +0000 (21:38 +0000)]
Unreviewed post-commit ChangeLog fixup

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

5 years agoSVG TextRuns do not always get RenderingContexts
mmaxfield@apple.com [Tue, 27 May 2014 21:34:38 +0000 (21:34 +0000)]
SVG TextRuns do not always get RenderingContexts
https://bugs.webkit.org/show_bug.cgi?id=133198

Reviewed by Simon Fraser.

Source/WebCore:
There were a couple places in RenderListMarker and RenderMenuList that were
implicitly creating TextRuns by passing a String to a function which
expected a TextRun. Because TextRun has a constructor which takes a single
String and isn't marked explicit, TextRuns were being created without
any of the associated code that initializes the TextRun (such as creating
a RenderingContext if necessary).

This patch marks the aforementioned constructor as "explicit" to discourage
such behavior in the future.

Test: svg/custom/list-items-with-svg-font-family.html

* platform/graphics/TextRun.h:
(WebCore::TextRun::TextRun): Mark constructors as explicit.
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::computePreferredLogicalWidths): Call
RenderBlock::constructTextRun.
(WebCore::RenderListMarker::getRelativeMarkerRect): Ditto.
* rendering/RenderMenuList.cpp:
(RenderMenuList::updateOptionsWidth): Ditto.

LayoutTests:
See per-file comments.

* svg/custom/list-items-with-svg-font-family-expected.txt: Added.
* svg/custom/list-items-with-svg-font-family.html: Added. Make sure there is
no crash when styling list elements with SVG fonts.

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

5 years agoCaret's screen position does not update during an overflow scroll
mmaxfield@apple.com [Tue, 27 May 2014 21:14:20 +0000 (21:14 +0000)]
Caret's screen position does not update during an overflow scroll
https://bugs.webkit.org/show_bug.cgi?id=133256

Reviewed by Simon Fraser.

Source/WebCore:
During a scroll, we set a flag which caret position is gated on, but we never
actually invalidate the caret's position. This patch does so.

Test: editing/input/caret-position-during-scroll.html

* editing/FrameSelection.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollTo):

LayoutTests:
This test places the caret, inspects its position, scrolls, and then immediately inspects its
position again. The two positions should be different.

* editing/input/caret-position-during-scroll-expected.txt: Added.
* editing/input/caret-position-during-scroll.html: Added.

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

5 years ago[wk2] PDFPlugin snapshots are misplaced
timothy_horton@apple.com [Tue, 27 May 2014 20:45:21 +0000 (20:45 +0000)]
[wk2] PDFPlugin snapshots are misplaced
https://bugs.webkit.org/show_bug.cgi?id=133323

Reviewed by Simon Fraser.

* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::paintControlForLayerInContext):
(WebKit::PDFPlugin::snapshot):
Include the scroll offset in the snapshot translation,
and use the whole document size instead of just the view size.

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

5 years agoREGRESSION(r169265): sh: line 0: cd: ../.vm
msaboff@apple.com [Tue, 27 May 2014 18:53:07 +0000 (18:53 +0000)]
REGRESSION(r169265): sh: line 0: cd: ../.vm
https://bugs.webkit.org/show_bug.cgi?id=133242

Rubber stamped by Oliver Hunt.

Changed runAndMonitorTestRunnerCommand() to pass mysys as a string instead of an
array since the command may contain character escapes that don't work with the
array form of system().

* Scripts/run-jsc-stress-tests:

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

5 years agoTurn on the LayerPool for iOS
timothy_horton@apple.com [Tue, 27 May 2014 18:35:39 +0000 (18:35 +0000)]
Turn on the LayerPool for iOS
https://bugs.webkit.org/show_bug.cgi?id=133299

Reviewed by Antti Koivisto.

* Configurations/WebCore.xcconfig:
* platform/cocoa/MemoryPressureHandlerCocoa.mm:
(WebCore::MemoryPressureHandler::platformReleaseMemory):
* platform/graphics/ca/mac/TileController.mm:
(WebCore::TileController::createTileLayer):
* platform/graphics/ca/mac/TileGrid.mm:
(WebCore::TileGrid::removeTiles):
Turn on the LayerPool for iOS.
We've used this on Mac for a long time, and the WebKit1
("legacy") iOS TileCache also had a similar pool.
This helps a good bit with flashiness while scrolling.

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

5 years ago[WebKit2] Move WebPreferences macro definitions and key names into their own files
weinig@apple.com [Tue, 27 May 2014 18:35:12 +0000 (18:35 +0000)]
[WebKit2] Move WebPreferences macro definitions and key names into their own files
https://bugs.webkit.org/show_bug.cgi?id=133315

Reviewed by Anders Carlsson.

* CMakeLists.txt:
* Shared/WebPreferencesDefinitions.h: Copied from Source/WebKit2/Shared/WebPreferencesStore.h.
* Shared/WebPreferencesKeys.cpp: Copied from Source/WebKit2/Shared/WebPreferencesStore.cpp.
* Shared/WebPreferencesKeys.h: Copied from Source/WebKit2/Shared/WebPreferencesStore.h.
* Shared/WebPreferencesStore.cpp:
* Shared/WebPreferencesStore.h:
* UIProcess/WebPreferences.cpp:
* UIProcess/WebPreferences.h:
* UIProcess/mac/WebContextMac.mm:
* UIProcess/mac/WebPreferencesMac.mm:
* UIProcess/mac/WebProcessProxyMac.mm:
* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
* WebProcess/WebPage/WebPage.cpp:
* WebProcess/WebProcess.cpp:

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

5 years agoAdd UI process watchdog on iOS to ensure WebProcess connections close
barraclough@apple.com [Tue, 27 May 2014 18:31:56 +0000 (18:31 +0000)]
Add UI process watchdog on iOS to ensure WebProcess connections close
https://bugs.webkit.org/show_bug.cgi?id=133200
<rdar://problem/16997983>

Mountain Lion build fix

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):

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

5 years agoimportance_assertion -> denap_assertion
barraclough@apple.com [Tue, 27 May 2014 18:21:34 +0000 (18:21 +0000)]
importance_assertion -> denap_assertion
https://bugs.webkit.org/show_bug.cgi?id=133294

iOS build fix

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open):

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

5 years agoREGRESSION: Audio volume scrubber does not show volume level thumb
hyatt@apple.com [Tue, 27 May 2014 17:59:25 +0000 (17:59 +0000)]
REGRESSION: Audio volume scrubber does not show volume level thumb
<rdar://problem/16902004>
https://bugs.webkit.org/show_bug.cgi?id=133310

Reviewed by Dean Jackson.

Source/WebCore:
This was just a silly mistake on my part with the setting of the pagination
layers. Layers inside transforms are supposed to clear out their pagination
status based off their ancestor containing block layers, and not off the
enclosing pagination layer.

Added fast/multicol/pagination/nested-transforms.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::updatePagination):

LayoutTests:
* fast/multicol/pagination/nested-transforms.html: Added.
* platform/mac/fast/multicol/pagination/nested-transforms-expected.png: Added.
* platform/mac/fast/multicol/pagination/nested-transforms-expected.txt: Added.

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

5 years agoAdd UI process watchdog on iOS to ensure WebProcess connections close
barraclough@apple.com [Tue, 27 May 2014 17:36:55 +0000 (17:36 +0000)]
Add UI process watchdog on iOS to ensure WebProcess connections close
https://bugs.webkit.org/show_bug.cgi?id=133200
<rdar://problem/16997983>

Reviewed by Darin Adler.

When the WebProcessProxy wants to disconnect from a WebContent process it just drops the connection,
and hopes the connection closes. There is a watchdog thread in the ChildProcess to try to ensure this
happens.

On iOS the process may not be runnable at the time, preventing termination. Instead add a watchdog in
the UI process to make the process runnable, and to terminate if it doesn't quit in a timely fashion.

* Platform/IPC/Connection.h:
    - added terminateSoon.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
    - take an assertion to make the process runnable, and start a watchdog timer.
(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
    - if the process hasn't quit by the timer the watchdog fires, kill it.
(IPC::Connection::terminateSoon):
    - create a ConnectionTerminationWatchdog.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::removeWebPage):
    - when disconnecting from a process, first tell it to terminateSoon.

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

5 years agoimportance_assertion -> denap_assertion
barraclough@apple.com [Tue, 27 May 2014 17:36:21 +0000 (17:36 +0000)]
importance_assertion -> denap_assertion
https://bugs.webkit.org/show_bug.cgi?id=133294

Patch by Gavin Barraclough <barraclough@apple.com> on 2014-05-26
Reviewed by Sam Weinig.

Update in accordance with API change. The importance assertion is used on
Mavericks & newer to ensure the WebContent process wakes from AppNap.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open):
    - MACH_PORT_IMPORTANCE_RECEIVER -> MACH_PORT_DENAP_RECEIVER
* Platform/IPC/mac/ImportanceAssertion.h:
(IPC::ImportanceAssertion::ImportanceAssertion):
(IPC::ImportanceAssertion::~ImportanceAssertion):
    - proc_importance_assertion -> proc_denap_assertion

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

5 years ago[Mac] media controls should prevent 'click' events from reaching the page
eric.carlson@apple.com [Tue, 27 May 2014 17:33:04 +0000 (17:33 +0000)]
[Mac] media controls should prevent 'click' events from reaching the page
https://bugs.webkit.org/show_bug.cgi?id=133268

Source/WebCore:
Reviewed by Jer Noble.

Test: media/media-controls-cancel-events.html

* Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.handleEvent): Allow event handler to cancel event default action.
(Controller.prototype.handleRewindButtonClicked): Cancel event default.
(Controller.prototype.handlePlayButtonClicked): Ditto.
(Controller.prototype.handleMuteButtonClicked): Ditto.
(Controller.prototype.handleMinButtonClicked): Ditto.
(Controller.prototype.handleCaptionButtonClicked): Ditto.
(Controller.prototype.handleFullscreenButtonClicked): Ditto.
* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.handlePlayButtonTouchEnd): Ditto.
(ControllerIOS.prototype.handlePlayButtonTouchCancel): Ditto.
(ControllerIOS.prototype.handleFullscreenTouchEnd): Ditto.
(ControllerIOS.prototype.handleFullscreenTouchCancel): Ditto.
(ControllerIOS.prototype.handleStartPlaybackButtonTouchEnd): Ditto.
(ControllerIOS.prototype.handleStartPlaybackButtonTouchCancel): Ditto.
(ControllerIOS.prototype.handleWirelessPickerButtonClicked): Ditto.

LayoutTests:
Reviewed by by Jer Noble.

* media/media-controls-cancel-events-expected.txt: Added.
* media/media-controls-cancel-events.html: Added.

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

5 years agoFix Mavericks bots from r169383.
jonlee@apple.com [Tue, 27 May 2014 16:45:09 +0000 (16:45 +0000)]
Fix Mavericks bots from r169383.
https://bugs.webkit.org/show_bug.cgi?id=133311

Reviewed by Eric Carlson.

* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h: Update #ifdef to check for ENABLE(MEDIA_SOURCE).
* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm: Ditto.

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

5 years agoREGRESSION (r168046): Incorrect handling of multicol spanner
stavila@adobe.com [Tue, 27 May 2014 16:36:09 +0000 (16:36 +0000)]
REGRESSION (r168046): Incorrect handling of multicol spanner
https://bugs.webkit.org/show_bug.cgi?id=133249

Reviewed by David Hyatt.

When removing the child of an object, the removeChild method should return the next element
following the one being deleted. This will ensure that proper iteration and destruction of
an object's children is possible.

No new tests added. This is because the test that triggers this issue also triggers
another assertion, in RenderMultiColumnSet::requiresBalancing(). However, that is a totally
separate problem and will be handled in a separate bug: https://bugs.webkit.org/show_bug.cgi?id=133309

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::removeChild):
* rendering/RenderBlock.h:
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::removeChild):
* rendering/RenderBlockFlow.h:
* rendering/RenderButton.cpp:
(WebCore::RenderButton::removeChild):
* rendering/RenderButton.h:
* rendering/RenderElement.cpp:
(WebCore::RenderElement::removeChild):
(WebCore::RenderElement::removeChildInternal):
* rendering/RenderElement.h:
* rendering/RenderMenuList.cpp:
(RenderMenuList::removeChild):
* rendering/RenderMenuList.h:
* rendering/RenderMultiColumnFlowThread.cpp:
(WebCore::RenderMultiColumnFlowThread::flowThreadDescendantInserted):
* rendering/RenderRuby.cpp:
(WebCore::RenderRubyAsInline::removeChild):
(WebCore::RenderRubyAsBlock::removeChild):
* rendering/RenderRuby.h:
* rendering/RenderRubyRun.cpp:
(WebCore::RenderRubyRun::removeChild):
* rendering/RenderRubyRun.h:
* rendering/mathml/RenderMathMLScripts.cpp:
(WebCore::RenderMathMLScripts::removeChildInternal):
(WebCore::RenderMathMLScripts::removeChild):
(WebCore::RenderMathMLScriptsWrapper::removeChildInternal):
(WebCore::RenderMathMLScriptsWrapper::removeChild):
* rendering/mathml/RenderMathMLScripts.h:
* rendering/svg/RenderSVGContainer.cpp:
(WebCore::RenderSVGContainer::removeChild):
* rendering/svg/RenderSVGContainer.h:
* rendering/svg/RenderSVGInline.cpp:
(WebCore::RenderSVGInline::removeChild):
* rendering/svg/RenderSVGInline.h:
* rendering/svg/RenderSVGRoot.cpp:
(WebCore::RenderSVGRoot::removeChild):
* rendering/svg/RenderSVGRoot.h:
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::removeChild):
* rendering/svg/RenderSVGText.h:

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

5 years agoRevert r169362 since it broke the ML build.
jberlin@webkit.org [Tue, 27 May 2014 16:30:50 +0000 (16:30 +0000)]
Revert r169362 since it broke the ML build.

* Platform/IPC/Connection.h:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::ConnectionTerminationWatchdog::createConnectionTerminationWatchdog): Deleted.
(IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog): Deleted.
(IPC::ConnectionTerminationWatchdog::watchdogTimerFired): Deleted.
(IPC::Connection::terminateSoon): Deleted.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::removeWebPage):

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

5 years agoUpdate ENABLE(MEDIA_SOURCE) on Mac
jonlee@apple.com [Tue, 27 May 2014 16:25:56 +0000 (16:25 +0000)]
Update ENABLE(MEDIA_SOURCE) on Mac
https://bugs.webkit.org/show_bug.cgi?id=133141

Reviewed by Darin Adler.

Source/JavaScriptCore:
* Configurations/FeatureDefines.xcconfig:

Source/WebCore:
* Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:
* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:
* Configurations/FeatureDefines.xcconfig:

Source/WTF:
* wtf/FeatureDefines.h: #ifdef unneeded for Mac since it's covered in the .xcconfigs.

LayoutTests:
* platform/mac-mountainlion/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/TestExpectations:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:

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

5 years agoUnreviewed EFL gardening
m.pakula@samsung.com [Tue, 27 May 2014 15:12:49 +0000 (15:12 +0000)]
Unreviewed EFL gardening

Add failing tests to TestExpectations.

* platform/efl-wk2/TestExpectations:
* platform/efl/TestExpectations:

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

5 years ago[EFL] Change download url of freetype6
gyuyoung.kim@samsung.com [Tue, 27 May 2014 15:12:24 +0000 (15:12 +0000)]
[EFL] Change download url of freetype6
https://bugs.webkit.org/show_bug.cgi?id=133303

Reviewed by Csaba Osztrogonác.

freetype6 tarball isn't downloaded in Korea. So, we need to
change the url for now.

* efl/jhbuild.modules:

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

5 years agoRemove BLOB guards
commit-queue@webkit.org [Tue, 27 May 2014 14:27:18 +0000 (14:27 +0000)]
Remove BLOB guards
https://bugs.webkit.org/show_bug.cgi?id=132863

Patch by Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com> on 2014-05-27
Reviewed by Csaba Osztrogonác.

.:
* Source/cmake/OptionsEfl.cmake:
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:

Source/JavaScriptCore:
* Configurations/FeatureDefines.xcconfig:

Source/WebCore:
* Configurations/FeatureDefines.xcconfig:
* Modules/websockets/WebSocketChannel.cpp:
(WebCore::WebSocketChannel::WebSocketChannel):
(WebCore::WebSocketChannel::didFail):
(WebCore::WebSocketChannel::processOutgoingFrameQueue):
(WebCore::WebSocketChannel::abortOutgoingFrameQueue):
* Modules/websockets/WebSocketChannel.h:
* WebCore.exp.in:
* WebCore.vcxproj/WebCore.vcxproj:
* bindings/js/JSBlobCustom.cpp:
(WebCore::JSBlobConstructor::constructJSBlob):
* bindings/js/JSFileReaderCustom.cpp:
* dom/DOMExceptions.in:
* dom/EventTargetFactory.in:
* dom/ScriptExecutionContext.cpp:
(WebCore::ScriptExecutionContext::publicURLManager):
* dom/ScriptExecutionContext.h:
* fileapi/AsyncFileStream.cpp:
* fileapi/AsyncFileStream.h:
* fileapi/Blob.cpp:
(WebCore::Blob::Blob):
* fileapi/Blob.h:
(WebCore::Blob::slice):
* fileapi/Blob.idl:
* fileapi/FileError.h:
* fileapi/FileError.idl:
* fileapi/FileException.cpp:
* fileapi/FileException.h:
* fileapi/FileException.idl:
* fileapi/FileReader.cpp:
* fileapi/FileReader.h:
* fileapi/FileReader.idl:
* fileapi/FileReaderLoader.cpp:
* fileapi/FileReaderLoader.h:
* fileapi/FileReaderLoaderClient.h:
* fileapi/FileReaderSync.cpp:
* fileapi/FileReaderSync.h:
* fileapi/FileReaderSync.idl:
* fileapi/FileThread.cpp:
* fileapi/FileThread.h:
* fileapi/ThreadableBlobRegistry.cpp:
(WebCore::ThreadableBlobRegistry::registerFileBlobURL): Deleted.
(WebCore::ThreadableBlobRegistry::registerBlobURL): Deleted.
(WebCore::ThreadableBlobRegistry::registerBlobURLForSlice): Deleted.
(WebCore::ThreadableBlobRegistry::unregisterBlobURL): Deleted.
(WebCore::ThreadableBlobRegistry::blobSize): Deleted.
(WebCore::ThreadableBlobRegistry::getCachedOrigin): Deleted.
* fileapi/WebKitBlobBuilder.cpp:
(WebCore::BlobBuilder::append):
* fileapi/WebKitBlobBuilder.h:
* html/DOMURL.cpp:
* html/DOMURL.h:
* html/DOMURL.idl:
* html/PublicURLManager.cpp:
* html/PublicURLManager.h:
* loader/LoaderStrategy.cpp:
(WebCore::LoaderStrategy::createBlobRegistry):
* loader/LoaderStrategy.h:
* page/DOMWindow.idl:
* page/SecurityOrigin.cpp:
(WebCore::SecurityOrigin::shouldUseInnerURL):
(WebCore::getCachedOrigin):
* platform/FileStream.cpp:
* platform/FileStream.h:
* platform/FileStreamClient.h:
* platform/SchemeRegistry.cpp:
(WebCore::canDisplayOnlyIfCanRequestSchemes):
* platform/network/BlobRegistry.cpp:
* platform/network/BlobRegistryImpl.cpp:
* platform/network/BlobResourceHandle.cpp:
* platform/network/BlobResourceHandle.h:
* platform/network/FormData.cpp:
(WebCore::FormData::deepCopy):
(WebCore::FormData::appendFile):
(WebCore::FormData::appendBlob):
(WebCore::FormData::appendKeyValuePairItems):
(WebCore::FormData::resolveBlobReferences):
(WebCore::encodeElement):
(WebCore::decodeElement):
* platform/network/FormData.h:
(WebCore::FormDataElement::FormDataElement):
(WebCore::operator==):
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::closeCurrentStream):
(WebCore::advanceCurrentStream):
(WebCore::formCreate):
(WebCore::formRead):
(WebCore::setHTTPBody):
* platform/network/curl/ResourceHandleManager.cpp:
(WebCore::getFormElementsCount):
* platform/network/soup/ResourceHandleSoup.cpp:
(WebCore::addEncodedBlobToSoupMessageBody):
(WebCore::addFormElementsToSoupMessage):
* workers/WorkerGlobalScope.idl:
* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send):
(WebCore::XMLHttpRequest::createRequest):

Source/WebKit/mac:
* Configurations/FeatureDefines.xcconfig:
* WebView/WebView.mm:
(+[WebView _canHandleRequest:forMainFrame:]):

Source/WebKit2:
* Configurations/FeatureDefines.xcconfig:
* NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
* NetworkProcess/FileAPI/NetworkBlobRegistry.h:
* NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didClose):
(WebKit::NetworkConnectionToWebProcess::blobSize):
* NetworkProcess/NetworkConnectionToWebProcess.h:
* NetworkProcess/NetworkConnectionToWebProcess.messages.in:
* NetworkProcess/NetworkProcessPlatformStrategies.cpp:
* NetworkProcess/NetworkProcessPlatformStrategies.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::NetworkResourceLoader):
* WebProcess/FileAPI/BlobRegistryProxy.cpp:
* WebProcess/FileAPI/BlobRegistryProxy.h:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::canHandleRequest):

Source/WTF:
* wtf/FeatureDefines.h:

Tools:
* Scripts/webkitperl/FeatureList.pm:

WebKitLibraries:
* win/tools/vsprops/FeatureDefines.props:
* win/tools/vsprops/FeatureDefinesCairo.props:

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

5 years agoAllow building CMake based ports with WEB_REPLAY
commit-queue@webkit.org [Tue, 27 May 2014 11:31:17 +0000 (11:31 +0000)]
Allow building CMake based ports with WEB_REPLAY
https://bugs.webkit.org/show_bug.cgi?id=133154

Patch by Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com> on 2014-05-27
Reviewed by Csaba Osztrogonác.

.:
* Source/cmake/WebKitFeatures.cmake:
* Source/cmakeconfig.h.cmake:

Source/JavaScriptCore:
* CMakeLists.txt:

Source/WebCore:
* CMakeLists.txt:

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

5 years ago[GStreamer] Add missing <wtf/MathExtras.h> header
commit-queue@webkit.org [Tue, 27 May 2014 10:56:29 +0000 (10:56 +0000)]
[GStreamer] Add missing <wtf/MathExtras.h> header
https://bugs.webkit.org/show_bug.cgi?id=133236

Patch by Adrian Perez de Castro <aperez@igalia.com> on 2014-05-27
Reviewed by Philippe Normand.

In some configurations, not including <wtf/MathExtras.h> will cause
errors about undefined functions. In particular, this happens in
Linux with glibc 2.19 and compiling with Clang. Having the header
included is the correct thing to do anyway.

* platform/graphics/gstreamer/GStreamerUtilities.cpp:
Include <wtf/MathExtras.h>

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

5 years agoRemove leftover comment from r165182.
berto@igalia.com [Tue, 27 May 2014 10:24:42 +0000 (10:24 +0000)]
Remove leftover comment from r165182.

Rubber stamped by Carlos Garcia Campos.

* TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:

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

5 years agoSpeculative Windows buildfix after r169358.
ossy@webkit.org [Tue, 27 May 2014 10:19:52 +0000 (10:19 +0000)]
Speculative Windows buildfix after r169358.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

5 years ago[GLIB] RunLoop::dispatch always executes the function on the main thread instead...
commit-queue@webkit.org [Tue, 27 May 2014 08:08:24 +0000 (08:08 +0000)]
[GLIB] RunLoop::dispatch always executes the function on the main thread instead of the target thread.
https://bugs.webkit.org/show_bug.cgi?id=133291

Patch by Gwang Yoon Hwang <yoon@igalia.com> on 2014-05-27
Reviewed by Carlos Garcia Campos.

GMainLoopSource::schedule[AfterDelay] must be used with the appropriate
GMainContext. Because current implementations in RunLoopGtk passes nullptr
instead of its runLoopContext when using GMainLoopSource, all of dispatched
functions are executed on the main thread regardless of which runloops is used.

This patch fixes the issue by passing the m_runLoopContext instead the default
parameter to the GMainLoopSource::schedule[AfterDelay].

* wtf/gtk/RunLoopGtk.cpp:
(WTF::RunLoop::wakeUp):
(WTF::RunLoop::TimerBase::start):

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

5 years agoSetting up OrderIterator shouldn't require an extra Vector
rego@igalia.com [Tue, 27 May 2014 07:17:52 +0000 (07:17 +0000)]
Setting up OrderIterator shouldn't require an extra Vector
https://bugs.webkit.org/show_bug.cgi?id=119061

Reviewed by Darin Adler.

From Blink r153971 by <jchaffraix@chromium.org>

This patches reuse the OrderIterator's Vector. It provides a helper class OrderIteratorPopulator, used for
manipulating the Vector directly. Which allows to consolidate the code into a single implementation across
flexbox and grid.

No new tests, already covered by current tests.

* rendering/OrderIterator.cpp:
(WebCore::OrderIteratorPopulator::~OrderIteratorPopulator): Reset OrderIterator and call
removeDuplicatedOrderValues().
(WebCore::OrderIteratorPopulator::removeDuplicatedOrderValues): Sorts the Vector and removes the duplicated
order values.
(WebCore::OrderIteratorPopulator::collectChild): Collect order value information from child.
(WebCore::OrderIterator::setOrderValues): Deleted.
* rendering/OrderIterator.h:
(WebCore::OrderIteratorPopulator::OrderIteratorPopulator): Add helper class to manipulate OrderValues Vector.
* rendering/RenderFlexibleBox.cpp:
(WebCore::RenderFlexibleBox::layoutBlock): Remove unneeded code related to old OrderValues vector.
(WebCore::RenderFlexibleBox::prepareOrderIteratorAndMargins): Populate OrderIterator using collectChild().
(WebCore::RenderFlexibleBox::computeMainAxisPreferredSizes): Deleted.
* rendering/RenderFlexibleBox.h: Rename computeMainAxisPreferredSizes() to prepareOrderIteratorAndMargins().
* rendering/RenderGrid.cpp:
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator): Populate OrderIterator using collectChild().

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

5 years ago[EFL] Add LLVM as optional jhbuild module for FTL developers
commit-queue@webkit.org [Tue, 27 May 2014 07:05:44 +0000 (07:05 +0000)]
[EFL] Add LLVM as optional jhbuild module for FTL developers
https://bugs.webkit.org/show_bug.cgi?id=133216

Patch by Tibor Meszaros <tmeszaros.u-szeged@partner.samsung.com> on 2014-05-26
Reviewed by Gyuyoung Kim.

* efl/jhbuild.modules:

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

5 years ago[wk2] RemoteLayerBackingStore front buffers should be purgeable when unparented
timothy_horton@apple.com [Tue, 27 May 2014 06:14:15 +0000 (06:14 +0000)]
[wk2] RemoteLayerBackingStore front buffers should be purgeable when unparented
https://bugs.webkit.org/show_bug.cgi?id=133020
<rdar://problem/16521736>

Reviewed by Simon Fraser.

* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::display):
Let the context know whenever a RemoteLayerBackingStore is displayed, so that
RemoteLayerBackingStoreCollection can (if needed) note that the backing store
is active once again (because we only display parented backing store).

(WebKit::RemoteLayerBackingStore::setBufferVolatility):
Ensure that we never have live contexts attached to any buffers when
marking them volatile, because checking isInUse() with live contexts is futile.

* Shared/mac/RemoteLayerBackingStoreCollection.h:
* Shared/mac/RemoteLayerBackingStoreCollection.mm:
(WebKit::RemoteLayerBackingStoreCollection::RemoteLayerBackingStoreCollection):
(WebKit::RemoteLayerBackingStoreCollection::willFlushLayers):
(WebKit::RemoteLayerBackingStoreCollection::willCommitLayerTree):
(WebKit::RemoteLayerBackingStoreCollection::didFlushLayers):
(WebKit::RemoteLayerBackingStoreCollection::backingStoreWillBeDestroyed):
(WebKit::RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayed):
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatileImmediately):
(WebKit::RemoteLayerBackingStoreCollection::markBackingStoreVolatile):
(WebKit::RemoteLayerBackingStoreCollection::backingStoreBecameUnreachable):
(WebKit::RemoteLayerBackingStoreCollection::volatilityTimerFired):
(WebKit::RemoteLayerBackingStoreCollection::scheduleVolatilityTimer):
(WebKit::RemoteLayerBackingStoreCollection::purgeabilityTimerFired): Deleted.
(WebKit::RemoteLayerBackingStoreCollection::schedulePurgeabilityTimer): Deleted.
Rename purgeable->volatile for accuracy.
Keep track of two sets of backing store: those which are active/parented, and
those which are not. Backing store is moved to the inactive set after building
the transaction in which its owning layer is unparented.
When backing store is unparented, try to mark it volatile immediately. Also,
mark the backing store property as dirty on the owning layer so that when
said layer is reparented, we encode the backing store in the commit that reparents it,
as the UI process will throw away its reference to the backing store when
the layer is unparented. Mark the front buffers of unparented layers as volatile,
in addition to the others.

* Shared/mac/RemoteLayerTreeTransaction.h:
(WebKit::RemoteLayerTreeTransaction::layerIDsWithNewlyUnreachableBackingStore):
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::encode):
(WebKit::RemoteLayerTreeTransaction::decode):
(WebKit::RemoteLayerTreeTransaction::setLayerIDsWithNewlyUnreachableBackingStore):
Include the list of layers (by ID) with backing store which just became unreachable in the transaction.

* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree):
Clear the contents of layers which now have unreachable backing store.
Otherwise, the UI process would hold a 'use' on the IOSurface, and prevent
the Web process from marking it volatile.

* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::backingStoreWillBeDisplayed):
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):
Give RemoteLayerBackingStoreCollection a shot at the RemoteLayerTreeTransaction,
so that it can fill in layerIDsWithNewlyUnreachableBackingStore.
Also, let it know when the flush begins and ends, so that it can keep track
of which layers were reached in the flush.

* WebCore.exp.in:
* platform/graphics/cg/IOSurfacePool.cpp:
(WebCore::IOSurfacePool::willAddSurface):
* platform/graphics/cocoa/IOSurface.h:
* platform/graphics/cocoa/IOSurface.mm:
(IOSurface::releaseGraphicsContext):
Rename clearGraphicsContext to releaseGraphicsContext for clarity.

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

5 years agoFix test failures on python test
gyuyoung.kim@samsung.com [Tue, 27 May 2014 05:38:27 +0000 (05:38 +0000)]
Fix test failures on python test
https://bugs.webkit.org/show_bug.cgi?id=133297

Reviewed by Dirk Schulze.

2 tests are failing because of unbounded local variable reference in test_importer.py.

* Scripts/webkitpy/w3c/test_importer.py: Move local variable declaration to top.
(TestImporter.import_tests):

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

5 years agoRemove special case for transparent SVG root layers
pdr@google.com [Tue, 27 May 2014 05:23:57 +0000 (05:23 +0000)]
Remove special case for transparent SVG root layers
https://bugs.webkit.org/show_bug.cgi?id=116856

Reviewed by Dirk Schulze.

This patch removes a special case from RenderLayer for root SVG layers
with opacity. Instead of checking whether a composited layer exists in
SVGRenderingContext::prepareToRenderSVGContent we now exclude the root
SVG renderobject from the opacity checks in prepareToRenderSVGContent.

This is a merge of https://src.chromium.org/viewvc/blink?view=rev&revision=174102
by Philip Rogers <pdr@chromium.org>.

No new tests as this is covered by svg/custom/composited-svg-with-opacity.html.

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::isTransparent): Deleted.
* rendering/RenderLayer.h:
* rendering/svg/SVGRenderingContext.cpp:
(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
    The opacity case for root svg renderers is now handled by
    RenderLayer.

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

5 years ago[EFL][WK2] Fix EWK2BackForwardListTest test fails.
commit-queue@webkit.org [Tue, 27 May 2014 04:52:36 +0000 (04:52 +0000)]
[EFL][WK2] Fix EWK2BackForwardListTest test fails.
https://bugs.webkit.org/show_bug.cgi?id=133171

Patch by Shivakumar JM <shiva.jm@samsung.com> on 2014-05-26
Reviewed by Gyuyoung Kim.

Use local test html pages instead of EWK2UnitTestServer, call ewk_view_url_set() to load test html pages.
Since even after setting no_proxy="localhost,127.0.0.1", still test server was unable to load the test
html pages for ewk2_back_forward_list tests, so changed to use local html pages.

* UIProcess/API/efl/tests/test_ewk2_back_forward_list.cpp:
(TEST_F):

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

5 years ago[EFL][WK2] Fix code style check errors in EFL API tests.
commit-queue@webkit.org [Tue, 27 May 2014 04:32:33 +0000 (04:32 +0000)]
[EFL][WK2] Fix code style check errors in EFL API tests.
https://bugs.webkit.org/show_bug.cgi?id=133170

Patch by Shivakumar JM <shiva.jm@samsung.com> on 2014-05-26
Reviewed by Gyuyoung Kim.

Omit int when using unsigned modifier, as per coding style rules.

* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
(EWK2UnitTest::EWK2UnitTestBase::SetUp):
* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestEnvironment.h:
(EWK2UnitTest::EWK2UnitTestEnvironment::defaultWidth):
(EWK2UnitTest::EWK2UnitTestEnvironment::defaultHeight):

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

5 years agoFix wrong inclusion depth of js-test-pre.js in is-protocol-handler-registered.html
gyuyoung.kim@samsung.com [Tue, 27 May 2014 02:23:31 +0000 (02:23 +0000)]
Fix wrong inclusion depth of js-test-pre.js in is-protocol-handler-registered.html
https://bugs.webkit.org/show_bug.cgi?id=133273

Reviewed by Darin Adler.

Can't use debug() due to wrong inclusion path.

* fast/dom/NavigatorContentUtils/is-protocol-handler-registered.html:

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

5 years ago[EFL] Move navigator content utils's to own directory
gyuyoung.kim@samsung.com [Tue, 27 May 2014 02:22:29 +0000 (02:22 +0000)]
[EFL] Move navigator content utils's to own directory
https://bugs.webkit.org/show_bug.cgi?id=133275

Reviewed by Darin Adler.

Expected results need to be maintained by own directory because navigator content utils have been maintained by
own directory as well.

* platform/efl/fast/dom/NavigatorContentUtils/register-protocol-handler-expected.txt: Renamed from LayoutTests/platform/efl/fast/dom/register-protocol-handler-expected.txt.
* platform/efl/fast/dom/NavigatorContentUtils/unregister-protocol-handler-expected.txt: Renamed from LayoutTests/platform/efl/fast/dom/unregister-protocol-handler-expected.txt.

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

5 years agoCSS JIT: Fix build error raised when CSS_SELECTOR_JIT_DEBUGGING is 1
commit-queue@webkit.org [Tue, 27 May 2014 00:19:17 +0000 (00:19 +0000)]
CSS JIT: Fix build error raised when CSS_SELECTOR_JIT_DEBUGGING is 1
https://bugs.webkit.org/show_bug.cgi?id=133266

Patch by Yusuke Suzuki <utatane.tea@gmail.com> on 2014-05-26
Reviewed by Benjamin Poulain.

When CSS_SELECTOR_JIT_DEBUGGING is 1, build erros occur on x86_64.

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generatePrologue):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateEpilogue):

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

5 years agoAdd UI process watchdog on iOS to ensure WebProcess connections close
barraclough@apple.com [Tue, 27 May 2014 00:02:34 +0000 (00:02 +0000)]
Add UI process watchdog on iOS to ensure WebProcess connections close
https://bugs.webkit.org/show_bug.cgi?id=133200
<rdar://problem/16997983>

Reviewed by Darin Adler.

When the WebProcessProxy wants to disconnect from a WebContent process it just drops the connection,
and hopes the connection closes. There is a watchdog thread in the ChildProcess to try to ensure this
happens.

On iOS the process may not be runnable at the time, preventing termination. Instead add a watchdog in
the UI process to make the process runnable, and to terminate if it doesn't quit in a timely fashion.

* Platform/IPC/Connection.h:
    - added terminateSoon.
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::ConnectionTerminationWatchdog::ConnectionTerminationWatchdog):
    - take an assertion to make the process runnable, and start a watchdog timer.
(IPC::ConnectionTerminationWatchdog::watchdogTimerFired):
    - if the process hasn't quit by the timer the watchdog fires, kill it.
(IPC::Connection::terminateSoon):
    - create a ConnectionTerminationWatchdog.
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::removeWebPage):
    - when disconnecting from a process, first tell it to terminateSoon.

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

5 years ago[GTK] GObject DOM bindings API break test fails in the tests bots
commit-queue@webkit.org [Mon, 26 May 2014 23:42:49 +0000 (23:42 +0000)]
[GTK] GObject DOM bindings API break test fails in the tests bots
https://bugs.webkit.org/show_bug.cgi?id=133211

Patch by Carlos Alberto Lopez Perez <clopez@igalia.com> on 2014-05-26
Reviewed by Martin Robinson.

When generating the built product archive on platform GTK, we need
to copy also the file gtkdoc-webkitdom.cfg and the directory
DerivedSources/webkitdom.

* BuildSlaveSupport/built-product-archive:
(archiveBuiltProduct):

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

5 years agoFix the quirks mode selector matching of the pseudo classes :hover and :active
benjamin@webkit.org [Mon, 26 May 2014 21:45:17 +0000 (21:45 +0000)]
Fix the quirks mode selector matching of the pseudo classes :hover and :active
https://bugs.webkit.org/show_bug.cgi?id=133063

Reviewed by Antti Koivisto.

Source/WebCore:
Our implementation of the quirks mode of :active and :hover was very wrong. The only
thing it was doing is verify the pseudo class is not the first selector of a fragment
(which was conveniently the only thing that was tested :)).

Since those pseudo class were only checking for the order of the filters, something like
    #target:hover
would succeed because :hover is not the first simple selector, while
    :hover#target
would fail.

That behavior is also a problem for the CSS JIT as it is an implementation detail of SelectorChecker
and compiling something like that with our out-of-order matching would be nonsense.

This patch update the implementation to follow http://quirks.spec.whatwg.org/#the-:active-and-:hover-quirk
Basically, the only cases that do not work in quirks mode are selectors composed only of "*, :hover and :active".

To implement this behavior, I needed to be able to inspect a complete selector fragment, including
what is before and after :hover/:active.
To do that, I replaced the boolean isSubSelector by a pointer to the first selector of the fragment.
When we need to match :active/:hover in quirks mode, we just go over all the selectors in the fragment
to find one of the qualifying match type.

Tests: fast/selectors/active-hover-quirks.html
       fast/selectors/active-quirks.html
       fast/selectors/hover-quirks.html

* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively):
(WebCore::canMatchHoverOrActiveInQuirksMode):
(WebCore::SelectorChecker::checkOne):
* css/SelectorChecker.h:
(WebCore::SelectorChecker::SelectorCheckingContext::SelectorCheckingContext):

LayoutTests:
The test coverage of :hover and :active was extremly poor.
Those new tests add coverage for the cases fixed by this patch.

* fast/selectors/active-hover-quirks-expected.txt: Added.
* fast/selectors/active-hover-quirks.html: Added.
* fast/selectors/active-hover-strict-expected.txt: Added.
* fast/selectors/active-hover-strict.html: Added.
* fast/selectors/active-quirks-expected.txt: Added.
* fast/selectors/active-quirks.html: Added.
* fast/selectors/active-strict-expected.txt: Added.
* fast/selectors/active-strict.html: Added.
* fast/selectors/hover-quirks-expected.txt: Added.
* fast/selectors/hover-quirks.html: Added.
* fast/selectors/hover-strict-expected.txt: Added.
* fast/selectors/hover-strict.html: Added.
* fast/selectors/resources/hover-active-quirks-utility.js: Added.
* selectors/resources/hover-active-strict-utility.js: Added.

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

5 years agoSplit the call to adjustForLocalZoom out into a separate expression.
zalan@apple.com [Mon, 26 May 2014 20:18:25 +0000 (20:18 +0000)]
Split the call to adjustForLocalZoom out into a separate expression.
https://bugs.webkit.org/show_bug.cgi?id=133286

Reviewed by Darin Adler.

This patch ensures that adjustForLocalZoom() always gets called before we look at
zoomFactor's value. (and not rely on the undefined behavior of the order of function argument evaluation)

* dom/Element.cpp:
(WebCore::Element::offsetLeft):
(WebCore::Element::offsetTop):

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

5 years agoClass name matching should use ASCII case-insensitive matching, not Unicode case...
darin@apple.com [Mon, 26 May 2014 19:58:29 +0000 (19:58 +0000)]
Class name matching should use ASCII case-insensitive matching, not Unicode case folding
https://bugs.webkit.org/show_bug.cgi?id=133292

Reviewed by Anders Carlsson.

Source/WebCore:
Tests: fast/dom/getElementsByClassName/ASCII-case-insensitive.html
       fast/dom/getElementsByClassName/case-sensitive.html

* dom/SpaceSplitString.cpp:
(WebCore::hasNonASCIIOrUpper): Deleted.
(WebCore::tokenizeSpaceSplitString): Use a for loop instead of while.
(WebCore::spaceSplitStringTable): Renamed from sharedDataMap; the new name is supposed
to help us see the analogy with the atomic string table.
(WebCore::SpaceSplitString::set): Removed unneeded special case for null and preflight
since AtomicString::convertToASCIILowercase now handles both of those. Changed to call
convertToASCIILowercase instead of foldCase, since we don't want to fold non-ASCII.
(WebCore::SpaceSplitString::spaceSplitStringContainsValue): Ditto.
(WebCore::SpaceSplitStringData::create): Marked this inline since it's only called in
one place and that place is in this file. Also used auto a bit and used get instead of
find since the value type is a simple pointer.
(WebCore::SpaceSplitStringData::destroy): Removed unneeded check for null. We never
create any SpaceSplitStringData with empty strings, and a null is a kind of empty string.

* dom/SpaceSplitString.h: Removed some unneeded includes and some unneeded uses of the
inline keyword. Changed types from size_t to unsigned in a couple places; we had a mix
of the types and there was no reason to use size_t there.

Source/WTF:
* wtf/text/AtomicString.cpp:
(WTF::AtomicString::addSlowCase): Change to take references instead of pointers since these
arguments can never be null.
(WTF::AtomicString::lower): Rearranged slightly to use PassRef in a more efficient but
slightly uglier way.
(WTF::AtomicString::convertToASCIILowercase): Added.
* wtf/text/AtomicString.h: Updated for above changes.

* wtf/text/StringImpl.cpp:
(WTF::StringImpl::convertToASCIILowercase): Added.
* wtf/text/StringImpl.h: Updated for above.

* wtf/text/WTFString.cpp:
(WTF::String::convertToASCIILowercase): Added.
* wtf/text/WTFString.h: Updated for above.

LayoutTests:
* fast/dom/getElementsByClassName/ASCII-case-insensitive-expected.txt: Added.
* fast/dom/getElementsByClassName/ASCII-case-insensitive.html: Added.
* fast/dom/getElementsByClassName/case-sensitive-expected.txt: Added.
* fast/dom/getElementsByClassName/case-sensitive.html: Added.

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

5 years ago[WebKit2] Add better default preferences while keeping backward compatibility for...
weinig@apple.com [Mon, 26 May 2014 18:01:45 +0000 (18:01 +0000)]
[WebKit2] Add better default preferences while keeping backward compatibility for the C-SPI
https://bugs.webkit.org/show_bug.cgi?id=133289

Reviewed by Anders Carlsson.

* Shared/WebPreferencesStore.h:
Change a few defaults:
- PluginsEnabled -> false
- JavaEnabled -> false
- JavaEnabledForLocalFiles -> false
- StorageBlockingPolicy -> BlockThirdPartyStorage

* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesCreate):
(WKPreferencesCreateWithIdentifier):
* UIProcess/WebPageGroup.cpp:
(WebKit::WebPageGroup::WebPageGroup):
Switch to using WebPreferences::createWithLegacyDefaults().

* UIProcess/WebPreferences.cpp:
(WebKit::WebPreferences::create):
(WebKit::WebPreferences::createWithLegacyDefaults):
* UIProcess/WebPreferences.h:
Move create functions to the cpp file and add createWithLegacyDefaults() which keeps
the old defaults;

* UIProcess/API/C/WKPreferencesRef.h:
Fix the comment.

* UIProcess/API/Cocoa/WKPreferences.h:
Update the comment to reflect the new defaults.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
Unconditionally set setShouldDispatchJavaScriptWindowOnErrorEvents() to true. This setting only
exists for legacy WebKit.

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

5 years ago[Cocoa] Rewrite WK_DESIGNATED_INITIALIZER in installed headers
mitz@apple.com [Mon, 26 May 2014 18:00:47 +0000 (18:00 +0000)]
[Cocoa] Rewrite WK_DESIGNATED_INITIALIZER in installed headers
https://bugs.webkit.org/show_bug.cgi?id=133290

Reviewed by Anders Carlsson.

* Shared/API/Cocoa/WKFoundation.h: When WK_API_AVAILABILITY_ENABLED is defined, don’t
provide definitions of WK_DESIGNATED_INITIALIZER and WK_UNAVAILABLE, since those macros will
be rewritten out of the headers. When WK_API_AVAILABILITY_ENABLED isn’t defined, provide
definitions of the other two macros as appropriate for the target OS.
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h: Removed WK_DESIGNATED_INITIALIZER from a
category method declaration.
* UIProcess/API/Cocoa/WKWebView.h: Mark the superclass designated initializer
-initWithCoder: as unavailable.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithCoder:]): Override this designated initializer of the superclass by
returning nil.
* mac/rewrite-availability-macros.sh: Rewrite WK_DESIGNATED_INITIALIZER to
NS_DESIGNATED_INITIALIZER and WK_UNAVAILABLE to NS_UNAVAILABLE. Also make sure to process
all headers if the script has changed since the last time it was run.

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

5 years agoUnreviewed, rolling out r169122.
commit-queue@webkit.org [Mon, 26 May 2014 17:45:08 +0000 (17:45 +0000)]
Unreviewed, rolling out r169122.
https://bugs.webkit.org/show_bug.cgi?id=133288

Broke CJK font fallback (Requested by ap on #webkit).

Reverted changeset:

"[Mac] WebProcess doesn't follow localization of UI process
when run as a service"
https://bugs.webkit.org/show_bug.cgi?id=133126
http://trac.webkit.org/changeset/169122

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

5 years agoLatest emscripten life benchmark is 4x slower because the DFG doesn't realize that...
fpizlo@apple.com [Mon, 26 May 2014 17:43:41 +0000 (17:43 +0000)]
Latest emscripten life benchmark is 4x slower because the DFG doesn't realize that arithmetic on booleans is a thing
https://bugs.webkit.org/show_bug.cgi?id=133136

Reviewed by Oliver Hunt.

Source/JavaScriptCore:

Some key concepts:

- Except for the prediction propagation and type fixup phases, which are super early in
  the pipeline, nobody has to know about the fact that booleans may flow into numerical
  operations because there will just be a BooleanToNumber node that will take a value
  and, if that value is a boolean, will convert it to the equivalent numerical value. It
  will have a BooleanUse mode where it will also speculate that the input is a boolean
  but it can also do UntypedUse in which case it will pass through any non-booleans.
  This operation is very easy to model in all of the compiler tiers.

- No changes to the baseline JIT. The Baseline JIT will still believe that boolean
  inputs require taking the slow path and it will still report that it took slow path
  for any such operations.  The DFG will now be smart enough to ignore baseline JIT slow
  path profiling on operations that were known to have had boolean inputs.  That's a
  little quirky, but it's probably easier than modifying the baseline JIT to track
  booleans correctly.

4.1x speed-up on the emscripten "life" benchmark. Up to 10x speed-up on microbenchmarks.

* bytecode/SpeculatedType.h:
(JSC::isInt32OrBooleanSpeculation):
(JSC::isInt32SpeculationForArithmetic):
(JSC::isInt32OrBooleanSpeculationForArithmetic):
(JSC::isInt32OrBooleanSpeculationExpectingDefined):
(JSC::isInt52Speculation):
(JSC::isMachineIntSpeculation):
(JSC::isFullNumberOrBooleanSpeculation):
(JSC::isFullNumberOrBooleanSpeculationExpectingDefined):
(JSC::isInt32SpeculationExpectingDefined): Deleted.
(JSC::isMachineIntSpeculationExpectingDefined): Deleted.
(JSC::isMachineIntSpeculationForArithmetic): Deleted.
(JSC::isBytecodeNumberSpeculationExpectingDefined): Deleted.
(JSC::isFullNumberSpeculationExpectingDefined): Deleted.
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGAllocator.h:
(JSC::DFG::Allocator<T>::indexOf):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::makeSafe):
(JSC::DFG::ByteCodeParser::makeDivSafe):
(JSC::DFG::ByteCodeParser::handleIntrinsic):
* dfg/DFGCSEPhase.cpp:
(JSC::DFG::CSEPhase::performNodeCSE):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGCommon.h:
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixIntConvertingEdge):
(JSC::DFG::FixupPhase::fixIntOrBooleanEdge):
(JSC::DFG::FixupPhase::fixDoubleOrBooleanEdge):
(JSC::DFG::FixupPhase::attemptToMakeIntegerAdd):
(JSC::DFG::FixupPhase::fixIntEdge): Deleted.
* dfg/DFGGraph.h:
(JSC::DFG::Graph::addSpeculationMode):
(JSC::DFG::Graph::valueAddSpeculationMode):
(JSC::DFG::Graph::arithAddSpeculationMode):
(JSC::DFG::Graph::addShouldSpeculateInt32):
(JSC::DFG::Graph::mulShouldSpeculateInt32):
(JSC::DFG::Graph::mulShouldSpeculateMachineInt):
(JSC::DFG::Graph::negateShouldSpeculateInt32):
(JSC::DFG::Graph::negateShouldSpeculateMachineInt):
(JSC::DFG::Graph::addImmediateShouldSpeculateInt32):
(JSC::DFG::Graph::mulImmediateShouldSpeculateInt32): Deleted.
* dfg/DFGNode.h:
(JSC::DFG::Node::sawBooleans):
(JSC::DFG::Node::shouldSpeculateInt32OrBoolean):
(JSC::DFG::Node::shouldSpeculateInt32ForArithmetic):
(JSC::DFG::Node::shouldSpeculateInt32OrBooleanForArithmetic):
(JSC::DFG::Node::shouldSpeculateInt32OrBooleanExpectingDefined):
(JSC::DFG::Node::shouldSpeculateMachineInt):
(JSC::DFG::Node::shouldSpeculateDouble):
(JSC::DFG::Node::shouldSpeculateNumberOrBoolean):
(JSC::DFG::Node::shouldSpeculateNumberOrBooleanExpectingDefined):
(JSC::DFG::Node::shouldSpeculateNumber):
(JSC::DFG::Node::canSpeculateInt32):
(JSC::DFG::Node::canSpeculateInt52):
(JSC::DFG::Node::sourceFor):
(JSC::DFG::Node::shouldSpeculateInt32ExpectingDefined): Deleted.
(JSC::DFG::Node::shouldSpeculateMachineIntForArithmetic): Deleted.
(JSC::DFG::Node::shouldSpeculateMachineIntExpectingDefined): Deleted.
(JSC::DFG::Node::shouldSpeculateDoubleForArithmetic): Deleted.
(JSC::DFG::Node::shouldSpeculateNumberExpectingDefined): Deleted.
* dfg/DFGNodeFlags.cpp:
(JSC::DFG::dumpNodeFlags):
* dfg/DFGNodeFlags.h:
(JSC::DFG::nodeMayOverflow):
(JSC::DFG::nodeMayNegZero):
(JSC::DFG::nodeCanSpeculateInt32):
(JSC::DFG::nodeCanSpeculateInt52):
* dfg/DFGNodeType.h:
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::run):
(JSC::DFG::PredictionPropagationPhase::propagateToFixpoint):
(JSC::DFG::PredictionPropagationPhase::speculatedDoubleTypeForPrediction):
(JSC::DFG::PredictionPropagationPhase::propagate):
(JSC::DFG::PredictionPropagationPhase::doDoubleVoting):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValueToInt32):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileValueToInt32):
(JSC::FTL::LowerDFGToLLVM::compileBooleanToNumber):
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::asInt32ForArithmetic):
* tests/stress/max-boolean-exit.js: Added.
(foo):
(test):
* tests/stress/mul-boolean-exit.js: Added.
(foo):
(test):
* tests/stress/plus-boolean-exit.js: Added.
(foo):
(test):
* tests/stress/plus-boolean-or-double.js: Added.
(foo):
(test):
* tests/stress/plus-boolean-or-int.js: Added.
(foo):
(test):

LayoutTests:

* js/regress/abs-boolean-expected.txt: Added.
* js/regress/abs-boolean.html: Added.
* js/regress/div-boolean-double-expected.txt: Added.
* js/regress/div-boolean-double.html: Added.
* js/regress/div-boolean-expected.txt: Added.
* js/regress/div-boolean.html: Added.
* js/regress/max-boolean-expected.txt: Added.
* js/regress/max-boolean.html: Added.
* js/regress/min-boolean-expected.txt: Added.
* js/regress/min-boolean.html: Added.
* js/regress/minus-boolean-double-expected.txt: Added.
* js/regress/minus-boolean-double.html: Added.
* js/regress/minus-boolean-expected.txt: Added.
* js/regress/minus-boolean.html: Added.
* js/regress/mod-boolean-double-expected.txt: Added.
* js/regress/mod-boolean-double.html: Added.
* js/regress/mod-boolean-expected.txt: Added.
* js/regress/mod-boolean.html: Added.
* js/regress/mul-boolean-double-expected.txt: Added.
* js/regress/mul-boolean-double.html: Added.
* js/regress/mul-boolean-expected.txt: Added.
* js/regress/mul-boolean.html: Added.
* js/regress/neg-boolean-expected.txt: Added.
* js/regress/neg-boolean.html: Added.
* js/regress/plus-boolean-arith-expected.txt: Added.
* js/regress/plus-boolean-arith.html: Added.
* js/regress/plus-boolean-double-expected.txt: Added.
* js/regress/plus-boolean-double.html: Added.
* js/regress/plus-boolean-expected.txt: Added.
* js/regress/plus-boolean.html: Added.
* js/regress/script-tests/abs-boolean.js: Added.
* js/regress/script-tests/div-boolean-double.js: Added.
* js/regress/script-tests/div-boolean.js: Added.
* js/regress/script-tests/max-boolean.js: Added.
* js/regress/script-tests/min-boolean.js: Added.
* js/regress/script-tests/minus-boolean-double.js: Added.
* js/regress/script-tests/minus-boolean.js: Added.
* js/regress/script-tests/mod-boolean-double.js: Added.
* js/regress/script-tests/mod-boolean.js: Added.
* js/regress/script-tests/mul-boolean-double.js: Added.
* js/regress/script-tests/mul-boolean.js: Added.
* js/regress/script-tests/neg-boolean.js: Added.
* js/regress/script-tests/plus-boolean-arith.js: Added.
* js/regress/script-tests/plus-boolean-double.js: Added.
* js/regress/script-tests/plus-boolean.js: Added.
* js/regress/script-tests/sin-boolean.js: Added.
* js/regress/sin-boolean-expected.txt: Added.
* js/regress/sin-boolean.html: Added.

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

5 years agoConvert a couple of loops over to range-based for
andersca@apple.com [Mon, 26 May 2014 17:30:23 +0000 (17:30 +0000)]
Convert a couple of loops over to range-based for
https://bugs.webkit.org/show_bug.cgi?id=133287

Reviewed by Simon Fraser.

* UIProcess/Plugins/PluginInfoStore.cpp:
(WebKit::PluginInfoStore::findPluginForMIMEType):
(WebKit::PluginInfoStore::findPluginForExtension):
(WebKit::PluginInfoStore::infoForPluginWithPath):
* UIProcess/Plugins/mac/PluginProcessManagerMac.mm:
(WebKit::PluginProcessManager::setProcessSuppressionEnabled):

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

5 years ago[GTK] WebProcess leaked when closing pages with network process enabled
carlosgc@webkit.org [Mon, 26 May 2014 16:55:04 +0000 (16:55 +0000)]
[GTK] WebProcess leaked when closing pages with network process enabled
https://bugs.webkit.org/show_bug.cgi?id=129684

Reviewed by Anders Carlsson.

Source/WebKit2:
The problem is that the web process is not notified when the UI
process closes the connection, because when close() is called on
the socket by the UI process, the socket is shared by another web
process launched later, preventing the connection from being
shut down. We need to set the CLOEXEC flag on the sockets file
descriptor to make sure they are not exposed to other processes.

* Platform/IPC/Connection.h: Add ConnectionOptions parameter to
createPlatformConnection() with a default value compatible with
existing callers.
* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::createPlatformConnection): Set the CLOEXEC flag
on the client and server socket file descriptors depending on the
options passed.
* UIProcess/Launcher/gtk/ProcessLauncherGtk.cpp:
(WebKit::ProcessLauncher::launchProcess): Use
IPC::Connection::createPlatformConnection() instead of
socketpair() directly, setting the CLOEXEC flag on the server
before spawning the new process and on the client right after
spawning the new process.

Tools:
Enable the test to check that web processes finish when the web
view is destroyed.

* TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp:

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

5 years agoInitialize WKWebViewConfiguration ivars lazily
andersca@apple.com [Mon, 26 May 2014 16:40:44 +0000 (16:40 +0000)]
Initialize WKWebViewConfiguration ivars lazily
https://bugs.webkit.org/show_bug.cgi?id=133270
<rdar://problem/17027606>

Reviewed by Sam Weinig.

Create a LazyInitialized class template and use it to lazily initialize WKWebViewConfiguration properties.

* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(LazyInitialized::get):
Initialize m_value with the given function if it hasn't been initialized already.

(LazyInitialized::set):
Update m_value and set m_isInitialized to true.

(LazyInitialized::peek):
Return m_value without initializing it.

(-[WKWebViewConfiguration description]):
Use getters so we'll initialize variables if needed.

(-[WKWebViewConfiguration copyWithZone:]):
Ditto.

(-[WKWebViewConfiguration processPool]):
(-[WKWebViewConfiguration setProcessPool:]):
(-[WKWebViewConfiguration preferences]):
(-[WKWebViewConfiguration setPreferences:]):
(-[WKWebViewConfiguration userContentController]):
(-[WKWebViewConfiguration setUserContentController:]):
(-[WKWebViewConfiguration _visitedLinkProvider]):
(-[WKWebViewConfiguration _setVisitedLinkProvider:]):
(-[WKWebViewConfiguration _websiteDataStore]):
(-[WKWebViewConfiguration _setWebsiteDataStore:]):
(-[WKWebViewConfiguration _contentProviderRegistry]):
(-[WKWebViewConfiguration _setContentProviderRegistry:]):
Pass initialization code to all getters.

(-[WKWebViewConfiguration _validate]):
Use getters.

(-[WKWebViewConfiguration init]): Deleted.

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

5 years agoREGRESSION(r164632): [GTK] Crash in generate-gtkdoc when rebasing docs
carlosgc@webkit.org [Mon, 26 May 2014 16:37:59 +0000 (16:37 +0000)]
REGRESSION(r164632): [GTK] Crash in generate-gtkdoc when rebasing docs
https://bugs.webkit.org/show_bug.cgi?id=133279

Reviewed by Philippe Normand.

generator.saw_warnings is only set by GTKDoc::generate(), so it
should only be used after generate.

* gtk/generate-gtkdoc:
(generate_documentation_for_config): Do not check
generator.saw_warnings again, simply return the value returned by
generate_doc() which is generator.saw_warnings. When rebasing,
returns always False since there aren't warnings.

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

5 years ago[CSS Grid Layout] Implementation of the "grid" shorthand.
commit-queue@webkit.org [Mon, 26 May 2014 16:25:25 +0000 (16:25 +0000)]
[CSS Grid Layout] Implementation of the "grid" shorthand.
https://bugs.webkit.org/show_bug.cgi?id=132122

Patch by Javier Fernandez <jfernandez@igalia.com> on 2014-05-26
Reviewed by Darin Adler.

Source/WebCore:
The grid property is a shorthand that sets all of the explicit
grid properties (grid-template-rows, grid-template-columns, and
grid-template-areas) as well as all the implicit grid properties
(grid-auto-rows, grid-auto-columns, and grid-auto-flow) in a
single declaration

Notice that either explicit or implicit grid can be specified,
assigning the initial values to the omitted properties.

Test: fast/css-grid-layout/grid-shorthand-get-set.html

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseGridShorthand):
* css/CSSParser.h:
* css/CSSPropertyNames.in:
* css/StylePropertyShorthand.cpp:
(WebCore::webkitGridShorthand):
* css/StylePropertyShorthand.h:

LayoutTests:
Layout Test for the basic functionality of the 'grid' shorthand. It was
also added a new javascript file with some utility functions.

* fast/css-grid-layout/grid-shorthand-get-set-expected.txt: Added.
* fast/css-grid-layout/grid-shorthand-get-set.html: Added.
* fast/css-grid-layout/resources/grid-shorthand-parsing-utils.js: Added.
(testGridDefinitionsValues):
(testGridDefinitionsSetJSValues):
(testNonGridDefinitionsSetJSValues):
(checkGridDefinitionsSetJSValues):
(testGridDefinitionsSetBadJSValues):

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

5 years agoRemove dead code from VM.cpp
commit-queue@webkit.org [Mon, 26 May 2014 16:11:41 +0000 (16:11 +0000)]
Remove dead code from VM.cpp
https://bugs.webkit.org/show_bug.cgi?id=133284

Patch by Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com> on 2014-05-26
Reviewed by Darin Adler.

This workaround was added in r127505. Since the clang is the
only used compiler in this case, this workaround is obsolete.

* runtime/VM.cpp:
(JSC::enableAssembler):

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

5 years agoW3C test importer should catch exceptions coming from HTML/CSS conversion
commit-queue@webkit.org [Mon, 26 May 2014 16:11:12 +0000 (16:11 +0000)]
W3C test importer should catch exceptions coming from HTML/CSS conversion
https://bugs.webkit.org/show_bug.cgi?id=133176

Patch by Youenn Fablet <youenn.fablet@crf.canon.fr> on 2014-05-26
Reviewed by Darin Adler.

Exceptions raised when converting HTML/CSS are caught.
Files for which conversion failed are still copied to the target directory.
Each individual conversion failure is logged.
Total conversion failure number is logged at the end of the import process.

* Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.import_tests):

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

5 years agoSubpixel layout: Legacy Element.offset* client* return values are invalid in certain...
zalan@apple.com [Mon, 26 May 2014 16:08:16 +0000 (16:08 +0000)]
Subpixel layout: Legacy Element.offset* client* return values are invalid in certain cases.
https://bugs.webkit.org/show_bug.cgi?id=133272

Reviewed by Simon Fraser.

Element.offset* client* functions applied various rounding strategies on the return values before r168868.
(for example, offsetLeft/Top either floored through implicit integer arithmetics or rounded explicitly depending
whether the zoom scale was 1. see http://trac.webkit.org/changeset/168868/trunk/Source/WebCore/dom/Element.cpp for details)
This patch mimics the legacy behavior by either rounding or flooring the return value.

Not testable (legacy switch is not exposed)

* dom/Element.cpp:
(WebCore::adjustForLocalZoom):
(WebCore::convertToNonSubpixelValueIfNeeded):
(WebCore::Element::offsetLeft):
(WebCore::Element::offsetTop):

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

5 years agoUnreviewed EFL gardening
m.pakula@samsung.com [Mon, 26 May 2014 15:04:27 +0000 (15:04 +0000)]
Unreviewed EFL gardening

Remove expectations for now passing tests.

* platform/efl-wk2/TestExpectations:
* platform/efl/TestExpectations:

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

5 years ago[GTK] Allow to run the tests on the native X display.
commit-queue@webkit.org [Mon, 26 May 2014 14:19:51 +0000 (14:19 +0000)]
[GTK] Allow to run the tests on the native X display.
https://bugs.webkit.org/show_bug.cgi?id=133157

Patch by Carlos Alberto Lopez Perez <clopez@igalia.com> on 2014-05-26
Reviewed by Benjamin Poulain.

This adds a new driver (xorgdriver) that runs the tests on the
X display referenced by the environment variable DISPLAY.

This new driver will be activated only if the environment variable
USE_NATIVE_XDISPLAY is defined. This can be used both for layout
tests and performance tests.

This patch also makes the script run-perf-tests to check the
system dependencies before starting the tests. Previously this
was not checked, and if the system dependencies were not met,
the script tried to execute the tests anyway, causing massive
failures. For example, if you had Xvfb not installed and you
wanted to use the Xvfb driver (the default on GTK and EFL),
run-perf-tests would not abort.

* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(PerfTestsRunner._parse_args): Check the system dependencies of
the driver before starting the tests.
* Scripts/webkitpy/port/driver.py:
(Driver): Implement generic check_driver method.
(Driver.check_driver):
(Driver.check_driver.implementation):
* Scripts/webkitpy/port/gtk.py:
(GtkPort._driver_class): Check for environment variable
USE_NATIVE_XDISPLAY to decide if the Xorg driver should be used.
* Scripts/webkitpy/port/xorgdriver.py: Added.
(XorgDriver): Implement Xorg driver.
(XorgDriver.check_driver):
(XorgDriver._start):

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

5 years agoREGRESSION(r166798): [GTK] [EFL] kill-old-processes should not kill dbus-daemon
commit-queue@webkit.org [Mon, 26 May 2014 14:16:05 +0000 (14:16 +0000)]
REGRESSION(r166798): [GTK] [EFL] kill-old-processes should not kill dbus-daemon
https://bugs.webkit.org/show_bug.cgi?id=133215

Patch by Carlos Alberto Lopez Perez <clopez@igalia.com> on 2014-05-26
Reviewed by Csaba Osztrogonác.

This reverts r166798.

* BuildSlaveSupport/kill-old-processes:
(main):

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

5 years ago[EFL] Turn on ENABLE_CSS_FILTERS in build script
m.pakula@samsung.com [Mon, 26 May 2014 14:04:21 +0000 (14:04 +0000)]
[EFL] Turn on ENABLE_CSS_FILTERS in build script
https://bugs.webkit.org/show_bug.cgi?id=133278

Reviewed by Gyuyoung Kim.

* Scripts/webkitperl/FeatureList.pm: Add a build script condition missing in r169172.

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

5 years agoJSC CLoop warning fix
commit-queue@webkit.org [Mon, 26 May 2014 13:57:20 +0000 (13:57 +0000)]
JSC CLoop warning fix
https://bugs.webkit.org/show_bug.cgi?id=133259

Patch by Eva Balazsfalvi <evab.u-szeged@partner.samsung.com> on 2014-05-26
Reviewed by Darin Adler.

* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

5 years agorun-javascriptcore-tests warning fix on non Mac platforms
commit-queue@webkit.org [Mon, 26 May 2014 13:55:24 +0000 (13:55 +0000)]
run-javascriptcore-tests warning fix on non Mac platforms
https://bugs.webkit.org/show_bug.cgi?id=133260

Patch by Eva Balazsfalvi <evab.u-szeged@partner.samsung.com> on 2014-05-26
Reviewed by Darin Adler.

* Scripts/webkitdirs.pm:
(argumentsForConfiguration):

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

5 years agoRemove WebKit2 framework from generate-forwarding-headers.pl
commit-queue@webkit.org [Mon, 26 May 2014 12:06:46 +0000 (12:06 +0000)]
Remove WebKit2 framework from generate-forwarding-headers.pl
https://bugs.webkit.org/show_bug.cgi?id=133214

Since renaming WebKit2.framework to WebKit.framework is done and all WebKit2/*.h includes
were renamed to WebKit/*.h, generating forwarding headers for WebKit2/*.h framework style
headers is not necessary anymore.

Patch by Martin Hodovan <mhodovan.u-szeged@partner.samsung.com> on 2014-05-26
Reviewed by Darin Adler.

* Scripts/generate-forwarding-headers.pl:

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

5 years ago[EFL] Input fields and text areas are not rendered correctly after r167771
m.pakula@samsung.com [Mon, 26 May 2014 09:50:18 +0000 (09:50 +0000)]
[EFL] Input fields and text areas are not rendered correctly after r167771
https://bugs.webkit.org/show_bug.cgi?id=133181

Reviewed by Gyuyoung Kim.

Source/WebCore:
r167771 changed arguments of RenderTheme two virtual method arguments which were not reflected
in changes in derived classes, which caused parent method to be called. Arguments in derived class
were updated, also 'override' specifiers were added to all virtual methods to prevent similar errors.

Already covered by fast/forms/textarea-placeholder-wrapping.html

* platform/efl/RenderThemeEfl.cpp:
(WebCore::RenderThemeEfl::paintTextField):
(WebCore::RenderThemeEfl::paintTextArea):
* platform/efl/RenderThemeEfl.h:
(WebCore::RenderThemeEfl::supportsHover):
(WebCore::RenderThemeEfl::supportsControlTints):

LayoutTests:
* platform/efl-wk2/TestExpectations: Remove now passing test from test expectations.

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

5 years ago[CSS Grid Layout] Children of grid containers must be turned into grid items
svillar@igalia.com [Mon, 26 May 2014 09:48:55 +0000 (09:48 +0000)]
[CSS Grid Layout] Children of grid containers must be turned into grid items
https://bugs.webkit.org/show_bug.cgi?id=132991

Reviewed by Darin Adler.

From Blink r150472 by <jchaffraix@chromium.org>

Source/WebCore:
According to specs each child of a grid container must become a
grid item meaning that grid items are grid level boxes and thus,
do not participate in the block formatting context but in the grid
formatting one.

This change updates the grid items' 'display' property after style
resolution so that we match the specification (see section 4. Grid
Items). The spec basically instructs us to compute the value of
'display' by applying the table in CSS2.1 Chapter 9.7
http://www.w3.org/TR/CSS2/visuren.html#dis-pos-flo

Test: fast/css-grid-layout/grid-item-display.html

* css/StyleResolver.cpp:
(WebCore::isDisplayGridBox):
(WebCore::StyleResolver::adjustRenderStyle):

LayoutTests:
Added a new test case to verify the computed value for 'display'
in grid items. The test also checks that items are correctly
positioned inside the grid, i.e., they properly became grid
items.

Also removed ietestcenter's grid-items-002.html and
grid-items-003.html from the list of failing tests as they should
be working now.

* fast/css-grid-layout/grid-item-display-expected.txt: Added.
* fast/css-grid-layout/grid-item-display.html: Added.
* ietestcenter/css3/grid/grid-items-002.htm: Fixed a typo and
replaced -webkit-grid-definition-* by -webkit-grid-template-*
* ietestcenter/css3/grid/grid-items-003.htm: Ditto.
* platform/efl/TestExpectations: Removed the two tests above.
* platform/gtk/TestExpectations: Ditto.
* platform/mac/TestExpectations: Ditto.
* platform/win/TestExpectations: Ditto.

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

5 years agoRemove Vector copies in ShorthandPropertyWrapper implementation and use
zandobersek@gmail.com [Mon, 26 May 2014 09:26:51 +0000 (09:26 +0000)]
Remove Vector copies in ShorthandPropertyWrapper implementation and use
https://bugs.webkit.org/show_bug.cgi?id=133265

Reviewed by Simon Fraser.

* page/animation/CSSPropertyAnimation.cpp:
(WebCore::ShorthandPropertyWrapper::ShorthandPropertyWrapper): Move the passed-in Vector
into the member variable instead of using Vector<>::swap().
(WebCore::ShorthandPropertyWrapper::propertyWrappers): Return a const reference of the member
variable instead of a const value.
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap): Move the Vector
object into the ShorthandProperthyWrapper constructor.
(WebCore::gatherEnclosingShorthandProperties): Deploy a range-based for-loop.

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

5 years agoWebPage::setComposition(), WebPageProxy::didFindStringMatches() should take Vector...
zandobersek@gmail.com [Mon, 26 May 2014 09:22:39 +0000 (09:22 +0000)]
WebPage::setComposition(), WebPageProxy::didFindStringMatches() should take Vector parameters by const reference
https://bugs.webkit.org/show_bug.cgi?id=133264

Reviewed by Darin Adler.

Taking the Vector parameters in the two methods (invoked through the IPC message handling)
by value causes unnecessary copies. The methods don't modify the objects and don't want
or need fresh copies, hence they should take in const references to Vector objects.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didFindStringMatches):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setComposition):
* WebProcess/WebPage/WebPage.h:

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

5 years ago[EFL] Fix build error in blob.cpp after r168435
commit-queue@webkit.org [Mon, 26 May 2014 07:15:08 +0000 (07:15 +0000)]
[EFL] Fix build error in blob.cpp after r168435
https://bugs.webkit.org/show_bug.cgi?id=132678

Patch by Tanay C <tanay.c@samsung.com> on 2014-05-26
Reviewed by Alexey Proskuryakov.

* fileapi/Blob.cpp:
(WebCore::Blob::size): Using isInBound to check range of local var
actualsize to resolve build error

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

5 years ago[EFL] Remove TileCairo and TiledBackingStoreBackendCairo
ryuan.choi@samsung.com [Mon, 26 May 2014 06:17:57 +0000 (06:17 +0000)]
[EFL] Remove TileCairo and TiledBackingStoreBackendCairo
https://bugs.webkit.org/show_bug.cgi?id=133274

Reviewed by Gyuyoung Kim.

Now, TiledBackingStore is only used for CoordinatedGraphics and the EFL port.
CoordinatedGraphics does not use TileCairo and TiledBackingStoreBackendCairo.

This patch removed them and refactored related files.

* PlatformEfl.cmake:
* PlatformGTK.cmake:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* platform/graphics/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::TiledBackingStore): Deleted.
* platform/graphics/TiledBackingStore.h:
* platform/graphics/TiledBackingStoreBackend.h:
* platform/graphics/cairo/TileCairo.cpp: Removed.
* platform/graphics/cairo/TiledBackingStoreBackendCairo.cpp: Removed.

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

5 years agosetData() of DataTransfer has a void return type
jinwoo7.song@samsung.com [Mon, 26 May 2014 02:53:42 +0000 (02:53 +0000)]
setData() of DataTransfer has a void return type
https://bugs.webkit.org/show_bug.cgi?id=133108

Reviewed by Alexey Proskuryakov.

Source/WebCore:
According to HTML5 spec, setData() of DataTranfer interface does not return value.
http://www.w3.org/TR/html/editing.html#the-datatransfer-interface

Test: editing/pasteboard/set_data_typeof_return.html

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::setData):
* dom/DataTransfer.h:
* dom/DataTransfer.idl:
* platform/Pasteboard.h:
* platform/efl/PasteboardEfl.cpp:
(WebCore::Pasteboard::writeString):
* platform/gtk/PasteboardGtk.cpp:
(WebCore::Pasteboard::writeString):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::writeString):
* platform/mac/PasteboardMac.mm:
(WebCore::Pasteboard::writeString):
* platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::writeString):

LayoutTests:
* editing/pasteboard/set_data_typeof_return-expected.txt: Added.
* editing/pasteboard/set_data_typeof_return.html: Added.

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

5 years ago[iOS][WK2] Fix some state reset on crash on the WKWebView
benjamin@webkit.org [Mon, 26 May 2014 00:04:43 +0000 (00:04 +0000)]
[iOS][WK2] Fix some state reset on crash on the WKWebView
https://bugs.webkit.org/show_bug.cgi?id=133039

Reviewed by Sam Weinig.

This is in no way complete, but this should reduce the undefined states on crash.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _processDidExit]):
If the view is animating, nuke the resize animation. That should be invisible to the user
because the background color is reset to white below.

Reset the contentView frame and scrollview state.

Reset the runtime states. We do not strictly need to reset _needsResetViewStateAfterCommitLoadForMainFrame,
_delayUpdateVisibleContentRects and _hadDelayedUpdateVisibleContentRects but it seems better to have
a clean slate.

(-[WKWebView _beginAnimatedResizeWithUpdates:]):
(-[WKWebView _endAnimatedResize]):
We could have crashes during rotation. To simplify the reset code, the animated resize code
no longer change any state when WKWebView is using a custom content view.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::processDidExit):
Send a _processDidExit on the WKWebView too.

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

5 years agoUse the right paths for website data
andersca@apple.com [Sun, 25 May 2014 22:30:25 +0000 (22:30 +0000)]
Use the right paths for website data
https://bugs.webkit.org/show_bug.cgi?id=133267
<rdar://problem/17027698>

Reviewed by Sam Weinig.

* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _initWithConfiguration:]):
Get the path of the absolute URL.

* UIProcess/Storage/LocalStorageDatabaseTracker.cpp:
(WebKit::LocalStorageDatabaseTracker::databasePath):
Fix spelling error.

* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didCacheResource):
Ditto.

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

5 years ago[iOS][WK2] Use ScrollView's scrollOffset as the unobscuredContentRect
benjamin@webkit.org [Sun, 25 May 2014 22:17:43 +0000 (22:17 +0000)]
[iOS][WK2] Use ScrollView's scrollOffset as the unobscuredContentRect
https://bugs.webkit.org/show_bug.cgi?id=133262

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-25
Reviewed by Simon Fraser.

Source/WebCore:
Since VisibleContentRect was fixed, we were no longer sending scroll events when updating the scrollOffset
when updating the visible content rects. The reason is that the scrollOffset was defined as the top left of the
VisibleContentRect, and as such was already at the end position after updating the unobscured rect.

This patch split the unobscuredContentRect in unobscuredContentSize (updated live on zoom) and the position defined
by the ScrollView's scrollOffset (updated when scrolling).

* WebCore.exp.in:
* platform/ScrollView.h:
* platform/ios/ScrollViewIOS.mm:
(WebCore::ScrollView::unobscuredContentRect):
(WebCore::ScrollView::setUnobscuredContentSize):
(WebCore::ScrollView::setUnobscuredContentRect): Deleted.

Source/WebKit2:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
(WebKit::WebPage::viewportConfigurationChanged):
(WebKit::WebPage::updateVisibleContentRects):

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

5 years agoBuild fix 2.
weinig@apple.com [Sun, 25 May 2014 19:54:54 +0000 (19:54 +0000)]
Build fix 2.

* UIProcess/API/Cocoa/WKPreferences.h:

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

5 years agoFix build.
weinig@apple.com [Sun, 25 May 2014 19:34:40 +0000 (19:34 +0000)]
Fix build.

* UIProcess/API/Cocoa/WKPreferences.h:

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

5 years ago[WebKit2] Rework WebPreferencesStore to allow easier overriding of defaults
weinig@apple.com [Sun, 25 May 2014 18:59:41 +0000 (18:59 +0000)]
[WebKit2] Rework WebPreferencesStore to allow easier overriding of defaults
https://bugs.webkit.org/show_bug.cgi?id=133258

Reviewed by Anders Carlsson.

To support changing default values of preferences based on which API you are using (either
the legacy C-SPI or the Objective-C API), overhaul the WebPreferencesStore to use a single
HashMap of String -> Value (where Value is new type that can be a String, bool, uint32_t or double)
instead of four HashMaps.  This allows us to use two of these new HashMaps, one for the actual
set values, and one for overridden defaults. This new Value class will also allow easier incremental
updating of preferences in the future.

Other notable changes:
- Removed Float kind of preferences. There were none.
- Move StorageBlockingPolicy preference to the correct group, it's a uint32_t, not bool.

* Shared/WebPreferencesStore.cpp:
* Shared/WebPreferencesStore.h:

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

5 years agoAdd type-checked casts for TransformOperations
ddkilzer@apple.com [Sun, 25 May 2014 18:09:16 +0000 (18:09 +0000)]
Add type-checked casts for TransformOperations
<http://webkit.org/b/133217>

Reviewed by Simon Fraser.

Source/WebCore:

* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::validateTransformOperations):
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::getTransformFunctionValue):
- Switch to type-checked casts.

* platform/graphics/transforms/IdentityTransformOperation.h:
* platform/graphics/transforms/Matrix3DTransformOperation.h:
* platform/graphics/transforms/MatrixTransformOperation.h:
* platform/graphics/transforms/PerspectiveTransformOperation.h:
* platform/graphics/transforms/RotateTransformOperation.h:
* platform/graphics/transforms/ScaleTransformOperation.h:
* platform/graphics/transforms/SkewTransformOperation.h:
* platform/graphics/transforms/TranslateTransformOperation.h:
- Add 'final' to class declaration.
- Add 'override' to overridden methods.
- Add type-checked cast via TRANSFORMOPERATION_TYPE_CASTS macro.
- Move implementation of operator==(const TransformOperation&)
  from header to source file so it is able to use a type-checked
  cast, and switch back to using a reference instead of a
  pointer.
- Add or update ASSERT in private constructor to check for
  correct OperationType in classes that represent multiple
  types.

* platform/graphics/transforms/Matrix3DTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.

* platform/graphics/transforms/MatrixTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::MatrixTransformOperation::blend):
- Switch to type-checked casts and use a reference.

* platform/graphics/transforms/PerspectiveTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::PerspectiveTransformOperation::blend):
* platform/graphics/transforms/RotateTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::RotateTransformOperation::blend):
* platform/graphics/transforms/ScaleTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::ScaleTransformOperation::blend):
* platform/graphics/transforms/SkewTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::SkewTransformOperation::blend):
* platform/graphics/transforms/TranslateTransformOperation.cpp:
(WebCore::Matrix3DTransformOperation::operator==): Added.
(WebCore::TranslateTransformOperation::blend):
- Switch to type-checked casts.

* platform/graphics/transforms/TransformOperation.h:
(WebCore::TransformOperation::isRotateTransformOperationType):
(WebCore::TransformOperation::isScaleTransformOperationType):
(WebCore::TransformOperation::isSkewTransformOperationType):
(WebCore::TransformOperation::isTranslateTransformOperationType):
- Add type-checking methods used in constructors and type-checked
  casts.
- Define TRANSFORMOPERATION_TYPE_CASTS macro used by subclasses.

Source/WebKit2:

* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
(IPC::ArgumentCoder<TransformOperations>::encode):
- Switch to type-checked casts.

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

5 years agoUse type-checking FilterOperation casts in CoordinatedGraphicsArgumentCoders.cpp
ddkilzer@apple.com [Sun, 25 May 2014 18:00:09 +0000 (18:00 +0000)]
Use type-checking FilterOperation casts in CoordinatedGraphicsArgumentCoders.cpp
<http://webkit.org/b/133203>

Reviewed by Simon Fraser.

* Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:
(IPC::ArgumentCoder<WebCore::FilterOperations>::encode):
- Replace static_cast<>() operators with type-checking
  FilterOperation casts.
- Replace 'default' statement with 'case' statements so new
  filters added later require an explicit decision to be made.
(IPC::ArgumentCoder<WebCore::FilterOperations>::decode):
- Replace 'default' statement with 'case' statements so new
  filters added later require an explicit decision to be made.

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

5 years agoCrash in WebCore::TextResourceDecoder::checkForCSSCharset
ddkilzer@apple.com [Sun, 25 May 2014 16:37:38 +0000 (16:37 +0000)]
Crash in WebCore::TextResourceDecoder::checkForCSSCharset
<http://webkit.org/b/133257>
<rdar://problem/17027109>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Test: fast/encoding/css-charset-missing-semi-colon-and-newline.html

* loader/TextResourceDecoder.cpp:
(WebCore::TextResourceDecoder::checkForCSSCharset): Add early
return.

LayoutTests:

* fast/encoding/css-charset-missing-semi-colon-and-newline-expected.txt: Added.
* fast/encoding/css-charset-missing-semi-colon-and-newline.html: Added.

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

5 years ago[Mac] preload AVAssetTrack properties before asking for them
eric.carlson@apple.com [Sun, 25 May 2014 07:00:12 +0000 (07:00 +0000)]
[Mac] preload AVAssetTrack properties before asking for them
https://bugs.webkit.org/show_bug.cgi?id=133240

Reviewed by Jer Noble.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::assetTrackMetadataKeyNames): Add preferredTransform and naturalSize to the list
    of properties we preload.

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

5 years agoObject.prototype.toString() should use cached strings for null/undefined.
akling@apple.com [Sun, 25 May 2014 03:50:43 +0000 (03:50 +0000)]
Object.prototype.toString() should use cached strings for null/undefined.
<https://webkit.org/b/133261>

Normally, when calling Object.prototype.toString() on a regular object,
we'd cache the result of the stringification on the object's structure,
making repeated calls fast.

For null and undefined, we were not as smart. We'd instead construct a
new string with either "[object Null]" or "[object Undefined]" each time.

This was exposed by Dromaeo's JS library tests, where some prototype.js
subtests generate millions of strings this way.

This patch adds two VM-permanent cached strings to the SmallStrings.
Looks like ~10% speed-up on Dromaeo/jslib-traverse-prototype.html

Reviewed by Darin Adler.

* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncToString):
* runtime/SmallStrings.cpp:
(JSC::SmallStrings::SmallStrings):
(JSC::SmallStrings::initializeCommonStrings):
(JSC::SmallStrings::visitStrongReferences):
* runtime/SmallStrings.h:
(JSC::SmallStrings::nullObjectString):
(JSC::SmallStrings::undefinedObjectString):

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

5 years agoPotential null dereference in
jhoneycutt@apple.com [Sun, 25 May 2014 03:30:56 +0000 (03:30 +0000)]
Potential null dereference in
WebFrameLoaderClient::dispatchDidFailProvisionalLoad()
<https://bugs.webkit.org/show_bug.cgi?id=133193>

WebFrameLoaderClient::dispatchDidFailProvisionalLoad() calls the
InjectedBundleLoaderClient's didFailProvisionalLoadWithErrorForFrame()
before sending a message to the UI process that a provisional load has
failed. It's possible for the provisional document loader to become
null while calling into the InjectedBundleLoaderClient (as is the case
with the WebKitTestRunner's injected bundle), leading to a null
dereference when trying to send the DidFailProvisionalLoadForFrame
message.

Reviewed by Darin Adler.

* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDidFailProvisionalLoad):
Get the navigation ID before calling into the injected bundle.

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

5 years agoRemove one of the CSSProperty constructor
commit-queue@webkit.org [Sun, 25 May 2014 03:12:27 +0000 (03:12 +0000)]
Remove one of the CSSProperty constructor
https://bugs.webkit.org/show_bug.cgi?id=131094

Patch by Zsolt Borbely <zsborbely.u-szeged@partner.samsung.com> on 2014-05-24
Reviewed by Darin Adler.

Remove one of the CSSProperty constructor, because it is obsolete.

* css/CSSProperty.h:
(WebCore::CSSProperty::CSSProperty): Deleted.
* css/StyleProperties.h:
(WebCore::StyleProperties::PropertyReference::toCSSProperty):

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

5 years agoRename ScrollingTreeScrollingNode's m_scrollPosition to make it clear that it's the...
simon.fraser@apple.com [Sat, 24 May 2014 20:40:04 +0000 (20:40 +0000)]
Rename ScrollingTreeScrollingNode's m_scrollPosition to make it clear that it's the value committed from the state tree
https://bugs.webkit.org/show_bug.cgi?id=133254

Reviewed by Tim Horton.

Source/WebCore:

Make ScrollingTreeScrollingNode::scrollPosition() pure virtual, and rename
the member variable and associated getter to make it clear that they relate
to the last committed scroll position.

* page/scrolling/ScrollingTreeScrollingNode.cpp:
(WebCore::ScrollingTreeScrollingNode::updateBeforeChildren):
* page/scrolling/ScrollingTreeScrollingNode.h:
(WebCore::ScrollingTreeScrollingNode::lastCommittedScrollPosition):
(WebCore::ScrollingTreeScrollingNode::scrollPosition): Deleted.

Source/WebKit2:

Override scrollPosition() on ScrollingTreeOverflowScrollingNodeIOS.

* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
* UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
(WebKit::ScrollingTreeOverflowScrollingNodeIOS::scrollPosition):

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

5 years agoShare some more ScrollingTreeScrollingNode code
simon.fraser@apple.com [Sat, 24 May 2014 20:40:03 +0000 (20:40 +0000)]
Share some more ScrollingTreeScrollingNode code
https://bugs.webkit.org/show_bug.cgi?id=133248

Reviewed by Sam Weinig.

Push scrollBy(), scrollByWithoutContentEdgeConstraints() and setScrollPosition()
down to ScrollingTreeFrameScrollingNode.

This requires that scrollPosition() return the right thing for each class, so make
it virtual. Future patches will reduce the confusion between the committed scroll
position and the one derived from layers.

* page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::scrollBy):
(WebCore::ScrollingTreeFrameScrollingNode::scrollByWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeFrameScrollingNode::setScrollPosition):
* page/scrolling/ScrollingTreeFrameScrollingNode.h:
* page/scrolling/ScrollingTreeScrollingNode.h:
(WebCore::ScrollingTreeScrollingNode::scrollPosition):
* page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
* page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:
(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition): Deleted.
(WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollBy): Deleted.
(WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollByWithoutContentEdgeConstraints): Deleted.
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollBy):
(WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollByWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::scrollBy): Deleted.
(WebCore::ScrollingTreeFrameScrollingNodeMac::scrollByWithoutContentEdgeConstraints): Deleted.

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

5 years agoScrolling tests should not try to dump pixels
simon.fraser@apple.com [Sat, 24 May 2014 20:40:00 +0000 (20:40 +0000)]
Scrolling tests should not try to dump pixels
https://bugs.webkit.org/show_bug.cgi?id=133245

Reviewed by Tim Horton.

dumpAsText(true) -> dumpAsText().

* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-div.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-div-latched-mainframe.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-iframe.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-iframe-latched-mainframe.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-mainframe.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select-with-handler.html:
* platform/mac-wk2/tiled-drawing/fast-scroll-select-latched-select.html:

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

5 years agoAX: fix coordinate mapping for iOS accessibility
cfleizach@apple.com [Sat, 24 May 2014 19:30:49 +0000 (19:30 +0000)]
AX: fix coordinate mapping for iOS accessibility
https://bugs.webkit.org/show_bug.cgi?id=133188

Reviewed by Sam Weinig.

Source/WebCore:
Make WebCore aware of the accessibility point/rect conversion methods.

* accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
(-[WebAccessibilityObjectWrapper convertPointToScreenSpace:]):
(-[WebAccessibilityObjectWrapper convertRectToScreenSpace:]):
* loader/EmptyClients.h:
* page/Chrome.cpp:
(WebCore::Chrome::accessibilityScreenToRootView):
(WebCore::Chrome::rootViewToAccessibilityScreen):
* page/Chrome.h:
* page/ChromeClient.h:
* platform/HostWindow.h:

Source/WebKit/mac:
* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::accessibilityScreenToRootView):
(WebChromeClient::rootViewToAccessibilityScreen):

Source/WebKit2:
Add in accessibility conversion methods that will check if the methods are present
(if accessibility is not on, they won't be)
and use those to convert points into the right coordinate space that VoiceOver is expecting.

* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::accessibilityScreenToRootView):
(WebKit::WebPageProxy::rootViewToAccessibilityScreen):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::accessibilityScreenToRootView):
(WebKit::PageClientImpl::rootViewToAccessibilityScreen):
* UIProcess/mac/PageClientImpl.h:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::accessibilityScreenToRootView):
(WebKit::WebChromeClient::rootViewToAccessibilityScreen):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/WKAccessibilityWebPageObjectIOS.mm:
(-[WKAccessibilityWebPageObject accessibilityHitTest:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::accessibilityScreenToRootView):
(WebKit::WebPage::rootViewToAccessibilityScreen):
* WebProcess/WebPage/WebPage.h:

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

5 years agoSubpixel rendering: Non-compositing transforms with subpixel coordinates paint to...
zalan@apple.com [Sat, 24 May 2014 14:50:42 +0000 (14:50 +0000)]
Subpixel rendering: Non-compositing transforms with subpixel coordinates paint to wrong position.
https://bugs.webkit.org/show_bug.cgi?id=133184
<rdar://problem/16745606>

Reviewed by Simon Fraser.

Snapping relative negative coordinate values should produce the same position as if they were
positive absolute coordinates.
When a child box gets positioned off of its containers towards top/left, its relative coordinates
become negative. Pixel snapping those negative values should produce the same
final painting position as if the child box was fixed positioned with positive coordinates.
Since halfway values always round away from zero, negative and positive halfway values
produce opposite rounding direction.
This patch ensures that negative halfway values round to the direction as if they were positive.

Source/WebCore:
Test: fast/layers/hidpi-floor-negative-coordinate-values-to-maintain-rounding-direction.html

* platform/LayoutUnit.h:
(WebCore::roundToDevicePixel):
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::paintLayerByApplyingTransform):

LayoutTests:
* fast/layers/hidpi-floor-negative-coordinate-values-to-maintain-rounding-direction-expected.html: Added.
* fast/layers/hidpi-floor-negative-coordinate-values-to-maintain-rounding-direction.html: Added.

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

5 years agoUpdate GTK references for some tests after bug 130322.
fred.wang@free.fr [Sat, 24 May 2014 11:49:40 +0000 (11:49 +0000)]
Update GTK references for some tests after bug 130322.
https://bugs.webkit.org/show_bug.cgi?id=130322

Unreviewed gardening.

* platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt:
* platform/gtk/mathml/presentation/mo-stretch-expected.txt:

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

5 years agoMark some opentype MATH tests failing due to bad references.
fred.wang@free.fr [Sat, 24 May 2014 11:30:16 +0000 (11:30 +0000)]
Mark some opentype MATH tests failing due to bad references.
https://bugs.webkit.org/show_bug.cgi?id=130322

Unreviewed gardening.

* platform/mac/TestExpectations:

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

5 years agoREGRESSION(r165841): Messages sent before the child process is launched are never...
carlosgc@webkit.org [Sat, 24 May 2014 07:17:53 +0000 (07:17 +0000)]
REGRESSION(r165841): Messages sent before the child process is launched are never sent after r165841
https://bugs.webkit.org/show_bug.cgi?id=131675

Reviewed by Anders Carlsson.

Since r165841 the connection is opened after the pending messages
are sent, because connectionWillOpen might send messages that we
want to happen after the ones already pending. The problem is that
Connection::canSendOutgoingMessages() returns false when
connection hasn't been opened. We should ensure no messages are
sent by connectionWillOpen.

* Shared/ChildProcessProxy.cpp:
(WebKit::ChildProcessProxy::didFinishLaunching): Open the
connection before sending pending messages.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::connectionWillOpen): Do not call
VisitedLinkProvider::addProcess() here because it tries to send a
message to the web process, but the connection hasn't be opened yet.
(WebKit::WebPageProxy::processDidFinishLaunching): Call
VisitedLinkProvider::addProcess() here instead.
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::didFinishLaunching): Call
WebPageProxy::processDidFinishLaunching() for every web page.

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

5 years agoUse size variants and glyph assembly from the MATH data.
fred.wang@free.fr [Sat, 24 May 2014 04:56:50 +0000 (04:56 +0000)]
Use size variants and glyph assembly from the MATH data.
https://bugs.webkit.org/show_bug.cgi?id=130322

Reviewed by Chris Fleizach.

Source/WebCore:
This patch modifies the RenderMathMLOperator code to use the MATH table
when one is provided in the current font on the <math> tag. More
precisely, the MathVariants table is used to draw a size variant or
a glyph assembly. The displaystyle attribute is not supported yet, so
for now large operators are always assumed to be in display style. The
MATH support does not work well with all platforms+fonts, so at the
moment the default font-family on the <math> is not changed.

Tests: mathml/opentype/large-operators-LatinModern.html
       mathml/opentype/opentype-stretchy.html
       mathml/opentype/vertical-LatinModern.html

* css/mathml.css: We only specify the default font-family on the math root, so that people can easily style the mathematics.
For now, old fonts without the MATH table are still used as the default.
(math):
(math, mfenced > *): Deleted.
(mo, mfenced): Deleted.
* platform/graphics/SimpleFontData.cpp: don't return the math data if the font is loading.
(WebCore::SimpleFontData::mathData):
* platform/graphics/opentype/OpenTypeMathData.cpp: update #ifdef so that disabling ENABLE_OPENTYPE_MATH won't lead to errors with unused parameters.
(WebCore::OpenTypeMathData::OpenTypeMathData):
(WebCore::OpenTypeMathData::getMathConstant):
(WebCore::OpenTypeMathData::getItalicCorrection):
(WebCore::OpenTypeMathData::getMathVariants):
* rendering/mathml/RenderMathMLOperator.cpp:
(WebCore::RenderMathMLOperator::boundsForGlyph):
(WebCore::RenderMathMLOperator::heightForGlyph):
(WebCore::RenderMathMLOperator::advanceForGlyph):
(WebCore::RenderMathMLOperator::computePreferredLogicalWidths): We handle preferred width of size variants.
(WebCore::RenderMathMLOperator::shouldAllowStretching): This function now only returns whether the operator will stretch and no longer has side effect.
(WebCore::RenderMathMLOperator::getGlyphAssemblyFallBack): We add a function to convert from the MathVariant table data to the format supported by RenderMathMLOperator.
(WebCore::RenderMathMLOperator::getDisplayStyleLargeOperator): We add a function to get the glyph that will be used for large operators in display style.
(WebCore::RenderMathMLOperator::findStretchyData): We make this function handle size variants.
(WebCore::RenderMathMLOperator::updateStyle): We handle size variants.
(WebCore::RenderMathMLOperator::paint): We handle size variants.
* rendering/mathml/RenderMathMLOperator.h:

LayoutTests:
This adds some pixel tests for large operators and vertical stretchy operators.

* mathml/opentype/LICENSE-LatinModern.txt: Added.
* mathml/opentype/large-operators-LatinModern.html: Added.
* mathml/opentype/latinmodern-math.woff: Added.
* mathml/opentype/opentype-stretchy.html: Added.
* mathml/opentype/stretchy.woff: Added.
* mathml/opentype/vertical-LatinModern.html: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/efl/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/efl/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.png: Added.
* platform/gtk/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.png: Added.
* platform/gtk/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/gtk/mathml/presentation/mo-stretch-expected.png: update reference due to change in mathml.css
* platform/gtk/mathml/presentation/mo-stretch-expected.txt: ditto
* platform/mac/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/large-operators-LatinModern-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/opentype-stretchy-expected.txt: Added.
* platform/mac-wk2/mathml/opentype/vertical-LatinModern-expected.txt: Added.
* platform/win/TestExpectations: Mark the OpenType MATH tests as failing

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

5 years agoREGRESSION: Rubberbanding out jumps to top left corner on google.com
benjamin@webkit.org [Sat, 24 May 2014 04:35:51 +0000 (04:35 +0000)]
REGRESSION: Rubberbanding out jumps to top left corner on google.com
https://bugs.webkit.org/show_bug.cgi?id=133253
<rdar://problem/17025664>

Patch by Ian Henderson <ianh@apple.com> on 2014-05-23
Reviewed by Benjamin Poulain.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView scrollViewWillEndDragging:withVelocity:targetContentOffset:]):
Avoid deceleration during zooming to work around a UIKit bug.

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

5 years ago[iOS][WK2] Avoid updating the view from the viewport configuration unnecessarily
benjamin@webkit.org [Sat, 24 May 2014 04:25:09 +0000 (04:25 +0000)]
[iOS][WK2] Avoid updating the view from the viewport configuration unnecessarily
https://bugs.webkit.org/show_bug.cgi?id=133255
<rdar://problem/16890926>

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-23
Reviewed by Simon Fraser.

All the updates were mostly harmless since they are pretty cheap, but they can be
very annoying for debugging.

This patch skips viewportUpdates in the trivial cases.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setMinimumLayoutSizeOverride:]):
(-[WKWebView _setMinimumLayoutSizeOverrideForMinimalUI:]):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::mainFrameDidLayout):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::viewportPropertiesDidChange):

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

5 years ago[iOS][WK2] The page scale factor randomly resets to initial scale when editing
benjamin@webkit.org [Sat, 24 May 2014 03:45:00 +0000 (03:45 +0000)]
[iOS][WK2] The page scale factor randomly resets to initial scale when editing
https://bugs.webkit.org/show_bug.cgi?id=133244

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-23
Reviewed by Enrica Casucci.

We were never telling the WebProcess that zoom is used triggered. As a result, the ViewportConfiguration was free
to reset the scale whenever it felt like it. The fix is to call willStartUserTriggeredZoom before changing the scale.

This patch also split _willStartUserTriggeredScrollingOrZooming from willStartUserTriggeredZoom
and rename it to willStartPanOrPinchGesture. This is just a tiny cleanup since the only thing left in _willStartUserTriggeredScrollingOrZooming
was gesture related.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _zoomToFocusRect:WebCore::selectionRect:WebCore::fontSize:minimumScale:maximumScale:allowScaling:forceScroll:]):
(-[WKWebView scrollViewWillBeginZooming:withView:]):
(-[WKWebView scrollViewWillBeginDragging:]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/ios/WKViewIOS.mm:
(-[WKView scrollViewWillBeginDragging:]):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView willStartUserTriggeredZoom]):
(-[WKContentView willStartUserTriggeredScroll]): Deleted.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView willStartPanOrPinchGesture]):
(-[WKContentView _willStartUserTriggeredScrollingOrZooming]): Deleted.

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

5 years agoREGRESSION (iOS WebKit2): requestAnimationFrame fires more than once between layer...
timothy_horton@apple.com [Sat, 24 May 2014 02:17:59 +0000 (02:17 +0000)]
REGRESSION (iOS WebKit2): requestAnimationFrame fires more than once between layer tree commits
https://bugs.webkit.org/show_bug.cgi?id=132794
<rdar://problem/16877909>

Reviewed by Simon Fraser.

Virtualize DisplayRefreshMonitor so that WebKit2 can implement its own DisplayRefreshMonitor for UI-side compositing views.
This allows the synchronization of requestAnimationFrame callbacks with UI-side compositing painting.

* WebCore.exp.in:
* WebCore.xcodeproj/project.pbxproj:

* page/ChromeClient.h:
(WebCore::ChromeClient::graphicsLayerFactory):
(WebCore::ChromeClient::createDisplayRefreshMonitor):
* platform/graphics/DisplayRefreshMonitorFactory.h: Added.
* platform/graphics/GraphicsLayerUpdater.cpp:
(WebCore::GraphicsLayerUpdater::createDisplayRefreshMonitor):
* platform/graphics/GraphicsLayerUpdater.h:
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::createDisplayRefreshMonitor):
* rendering/RenderLayerCompositor.h:
Give the ChromeClient a chance to provide us with a custom DisplayRefreshMonitor.
If it does not, we'll fall back to making a DisplayRefreshMonitorMac or
DisplayRefreshMonitorIOS depending on the platform.

* dom/ScriptedAnimationController.cpp:
* dom/ScriptedAnimationController.h:
* platform/graphics/DisplayRefreshMonitor.cpp:
* platform/graphics/DisplayRefreshMonitor.h:
* platform/graphics/DisplayRefreshMonitorClient.cpp: Added.
* platform/graphics/DisplayRefreshMonitorClient.h: Added.
* platform/graphics/DisplayRefreshMonitorManager.cpp: Added.
* platform/graphics/DisplayRefreshMonitorManager.h: Added.
Split DisplayRefreshMonitor.cpp into one file per class.
Use references in a few places.
Remove some useless comments.

* platform/graphics/DisplayRefreshMonitor.cpp:
(WebCore::DisplayRefreshMonitor::displayDidRefresh):
Use takeAny() and remove a FIXME about it not existing.

* platform/graphics/DisplayRefreshMonitorClient.cpp: Added.
(WebCore::DisplayRefreshMonitorClient::fireDisplayRefreshIfNeeded):
Use an early return instead of having the whole function body in an if().

* platform/graphics/ios/DisplayRefreshMonitorIOS.h: Added.
* platform/graphics/ios/DisplayRefreshMonitorIOS.mm:
* platform/graphics/mac/DisplayRefreshMonitorMac.cpp:
* platform/graphics/mac/DisplayRefreshMonitorMac.h: Added.
Virtualize DisplayRefreshMonitorIOS and DisplayRefreshMonitorMac,
and move things specific to each of them out of DisplayRefreshMonitor itself.

* WebKit2.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::createDisplayRefreshMonitor):
* WebProcess/WebCoreSupport/WebChromeClient.h:
* WebProcess/WebPage/DrawingArea.h:
(WebKit::DrawingArea::graphicsLayerFactory):
(WebKit::DrawingArea::createDisplayRefreshMonitor):
Plumb the DisplayRefreshMonitor request through to the DrawingArea.
RemoteLayerTreeDrawingArea will implement and return a RemoteLayerTreeDisplayRefreshMonitor.

* WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.h: Added.
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::create):
* WebProcess/WebPage/Cocoa/RemoteLayerTreeDisplayRefreshMonitor.mm: Added.
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::RemoteLayerTreeDisplayRefreshMonitor):
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::~RemoteLayerTreeDisplayRefreshMonitor):
(WebKit::RemoteLayerTreeDisplayRefreshMonitor::requestRefreshCallback):
When requesting a display refresh callback, schedule a layer commit.
It may end up being empty, but will still call us back with a didUpdate,
upon which we'll fire the callback.

(WebKit::RemoteLayerTreeDisplayRefreshMonitor::didUpdateLayers):

* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
(WebKit::RemoteLayerTreeDrawingArea::createDisplayRefreshMonitor):
(WebKit::RemoteLayerTreeDrawingArea::willDestroyDisplayRefreshMonitor):
Keep track of the set of DisplayRefreshMonitors.

(WebKit::RemoteLayerTreeDrawingArea::didUpdate):
Fire requestAnimationFrame callbacks once the UI process commits the new layer tree.

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

5 years agoCSS JIT: Apply backtracking optimization to adjacent backtracking
commit-queue@webkit.org [Sat, 24 May 2014 02:11:17 +0000 (02:11 +0000)]
CSS JIT: Apply backtracking optimization to adjacent backtracking
https://bugs.webkit.org/show_bug.cgi?id=132951

Patch by Yusuke Suzuki <utatane.tea@gmail.com> on 2014-05-23
Reviewed by Benjamin Poulain.

Apply the backtracking optimization to the adjacent backtracking.
This optimization is already done for the descendant backtracking.
We apply this to the adjacent backtracking similarly.

Source/WebCore:
Test: fast/selectors/backtracking-adjacent-optimized.html

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorFragment::SelectorFragment):
(WebCore::SelectorCompiler::solveAdjacentBacktrackingActionForDirectAdjacent):
(WebCore::SelectorCompiler::solveBacktrackingAction):
(WebCore::SelectorCompiler::computeBacktrackingStartOffsetInChain):
(WebCore::SelectorCompiler::computeBacktrackingHeightFromDescendant):
(WebCore::SelectorCompiler::computeBacktrackingWidthFromIndirectAdjacent):
(WebCore::SelectorCompiler::SelectorCodeGenerator::computeBacktrackingInformation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateIndirectAdjacentTreeWalker):
(WebCore::SelectorCompiler::SelectorCodeGenerator::linkFailures):
(WebCore::SelectorCompiler::computeBacktrackingStartHeightFromDescendant): Deleted.

LayoutTests:
* fast/selectors/backtracking-adjacent-optimized-expected.txt: Added.
* fast/selectors/backtracking-adjacent-optimized.html: Added.

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

5 years agoMake CSS JIT run on ARM64.
achristensen@apple.com [Sat, 24 May 2014 01:06:16 +0000 (01:06 +0000)]
Make CSS JIT run on ARM64.
https://bugs.webkit.org/show_bug.cgi?id=133156

Reviewed by Benjamin Poulain.

* cssjit/FunctionCall.h:
(WebCore::FunctionCall::saveAllocatedRegisters):
(WebCore::FunctionCall::restoreAllocatedRegisters):
Use StackAllocator's new push and pop functions to push and pop a vector instead of iterating it.
* cssjit/RegisterAllocator.h:
(WebCore::RegisterAllocator::reserveCalleeSavedRegisters):
(WebCore::RegisterAllocator::restoreCalleeSavedRegisters):
Return a vector of registers to allocate instead of doing the allocation to make the RegisterAllocator
not need to know about the StackAllocator and to use the new vector push and pop functions.
(WebCore::RegisterAllocator::~RegisterAllocator):
Store RegisterIDs instead of StackReferences to avoid needing to know about the stack.
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::compile):
Removed the requirement for assert to be disabled to print disassembly when debugging css jit.
(WebCore::SelectorCompiler::SelectorCodeGenerator::generatePrologue):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateEpilogue):
Added to correctly push the link register and frame pointer.
This is required if the jit code calls a function on arm64 and helpful for debugging tools on x86_64.
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorChecker):
Generate the prologue and epilogue which respectively push and pop
the link register, frame pointer, and callee saved registers if needed.
* cssjit/StackAllocator.h:
(WebCore::StackAllocator::push):
(WebCore::StackAllocator::pop):
Added new vector push and pop functions to use stp and ldb instructions on arm64.

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

5 years agoHide fullscreen immediately when switching tabs.
commit-queue@webkit.org [Sat, 24 May 2014 00:23:15 +0000 (00:23 +0000)]
Hide fullscreen immediately when switching tabs.
https://bugs.webkit.org/show_bug.cgi?id=133239

Patch by Jeremy Jones <jeremyj@apple.com> on 2014-05-23
Reviewed by Eric Carlson.

Source/WebCore:
This change allows fullscreen to disappear immediately while still cleaning
up fullscreen normally.

* WebCore.exp.in:
* platform/ios/WebVideoFullscreenControllerAVKit.h:
renamed function to requestHideAndExitFullscreen

* platform/ios/WebVideoFullscreenControllerAVKit.mm:
renamed function to requestHideAndExitFullscreen

(-[WebVideoFullscreenController requestHideAndExitFullscreen]):
rename of requestExitFullscreen that also hides.

(-[WebVideoFullscreenController requestExitFullscreen]): Deleted.
* platform/ios/WebVideoFullscreenInterfaceAVKit.h: declare requestHideAndExitFullscreen()
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(WebVideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen):
this hides the window before requesting exitfullscreen from the model.

Source/WebKit/mac:
Renamed a function to better describe it's new functionality.

* WebView/WebView.mm:
(-[WebView viewDidMoveToWindow]):
now calls: requestHideAndExitFullscreen

Source/WebKit2:
Renamed a function to better describe it's new functionality.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::viewStateDidChange):
now calls: requestHideAndExitFullscreen

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

5 years agoREGRESSION (WebKit2): Keyboard disappears/appears automatically between text boxes.
enrica@apple.com [Sat, 24 May 2014 00:18:32 +0000 (00:18 +0000)]
REGRESSION (WebKit2): Keyboard disappears/appears automatically between text boxes.
https://bugs.webkit.org/show_bug.cgi?id=133243
<rdar://problem/16761913>

Reviewed by Benjamin Poulain.

We need to ensure that when an element loses focus and another one gets it,
this is handled in one single message in the UI process to avoid seeing
the keyboard animating in and out.
This is accomplished by always postponing the blur notification until all events
have been processed.
If a new node is focused before the delayed blur notification is sent to the UI
process, the message we send includes both blur and focus notification. In this case,
the postponed blur notification is not sent.

* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::startAssistingNode):
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
(-[WKContentView _startAssistingNode:userIsInteracting:userObject:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::startAssistingNode):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::elementDidFocus):
(WebKit::WebPage::elementDidBlur):

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