Implement more NSCoder methods
https://bugs.webkit.org/show_bug.cgi?id=123815

Reviewed by Dan Bernstein.

Source/WebKit2:

* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(encodeObject):
Assert that object is not nil.

(createEncodedObject):
Handle nil objects.

(-[WKRemoteObjectEncoder encodeValueOfObjCType:at:]):
Call the right object stream encoding function based on the object type.

(-[WKRemoteObjectEncoder encodeBool:forKey:]):
(-[WKRemoteObjectEncoder encodeInt64:forKey:]):
(-[WKRemoteObjectEncoder encodeDouble:forKey:]):
Create APIObjects and add them to the current dictionary.

Tools:

Add a method that takes an NSArray, an NSDictionary and an NSURLRequest.

* TestWebKitAPI/Tests/WebKit2ObjC/WKRemoteObjectRegistry.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/mac/WKRemoteObjectRegistry_Bundle.mm:
(-[BundleObject testMethodWithArray:dictionary:request:]):
* TestWebKitAPI/Tests/mac/WKRemoteObjectRegistry_Shared.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158685 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remove FTL::LowerDFGToLLVM::compileJSConstant()
https://bugs.webkit.org/show_bug.cgi?id=123817

Reviewed by Geoffrey Garen.

* ftl/FTLLowerDFGToLLVM.cpp:



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158686 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix register allocation inside control flow in GetByVal String
https://bugs.webkit.org/show_bug.cgi?id=123816

Reviewed by Geoffrey Garen.

* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158687 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Unreviewed, rolling out r158678.
http://trac.webkit.org/changeset/158678
https://bugs.webkit.org/show_bug.cgi?id=123820

Causes a new debug assertion failure on the Mavericks test
system. (Requested by bfulgham on #webkit).

Source/WebCore:

* rendering/mathml/RenderMathMLOperator.cpp:

LayoutTests:

* TestExpectations:
* mathml/presentation/mo-stretch.html:
* platform/gtk/TestExpectations:
* platform/gtk/mathml/presentation/mo-stretch-expected.png:
* platform/gtk/mathml/presentation/mo-stretch-expected.txt:
* platform/mac/mathml/presentation/mo-stretch-expected.png:
* platform/mac/mathml/presentation/mo-stretch-expected.txt:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158688 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2] Add a WebKit2 API for Geolocation's highAccuracy
https://bugs.webkit.org/show_bug.cgi?id=123786

Reviewed by Darin Adler.

Source/WebKit2: 

This adds support for highAccuracy Geolocation with WebKit2.

The key is to track which page/requester need what kind of geolocation
in order to change between high and low accuracy as pages run and disappear.

WebGeolocationManager and WebGeolocationManagerProxy have very similar roles
but for different sources:
-WebGeolocationManager tracks which live page require high accuracy geolocation.
 When the state changes, it forward the information to the UIProcess.
-WebGeolocationManagerProxy tracks which WebContent processes needs high accuracy.

* Shared/APIClientTraits.cpp:
* Shared/APIClientTraits.h:
* UIProcess/API/C/WKGeolocationManager.h:
* UIProcess/WebGeolocationManagerProxy.cpp:
(WebKit::WebGeolocationManagerProxy::startUpdating):
(WebKit::WebGeolocationManagerProxy::removeRequester):
(WebKit::WebGeolocationManagerProxy::setEnableHighAccuracy):
* UIProcess/WebGeolocationManagerProxy.h:
(WebKit::WebGeolocationManagerProxy::isUpdating):
(WebKit::WebGeolocationManagerProxy::isHighAccuracyEnabled):
* UIProcess/WebGeolocationManagerProxy.messages.in:
* UIProcess/WebGeolocationProvider.cpp:
(WebKit::WebGeolocationProvider::setEnableHighAccuracy):
* UIProcess/WebGeolocationProvider.h:
* WebProcess/Geolocation/WebGeolocationManager.cpp:
(WebKit::WebGeolocationManager::registerWebPage):
(WebKit::WebGeolocationManager::unregisterWebPage):
(WebKit::WebGeolocationManager::setEnableHighAccuracyForPage):
* WebProcess/Geolocation/WebGeolocationManager.h:
(WebKit::WebGeolocationManager::isUpdating):
(WebKit::WebGeolocationManager::isHighAccuracyEnabled):
* WebProcess/WebCoreSupport/WebGeolocationClient.cpp:
(WebKit::WebGeolocationClient::setEnableHighAccuracy):

Tools: 

Add basic testing for the Geolocation API (start, stop and change accuracy).

* TestWebKitAPI/GNUmakefile.am:
* TestWebKitAPI/PlatformEfl.cmake:
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2/Geolocation.cpp: Added.
(TestWebKitAPI::operator<<):
(TestWebKitAPI::GeolocationStateTracker::~GeolocationStateTracker):
(TestWebKitAPI::GeolocationStateTracker::eventsChanged):
(TestWebKitAPI::GeolocationStateTracker::startUpdatingCallback):
(TestWebKitAPI::GeolocationStateTracker::stopUpdatingCallback):
(TestWebKitAPI::GeolocationStateTracker::setEnableHighAccuracyCallback):
(TestWebKitAPI::decidePolicyForGeolocationPermissionRequestCallBack):
(TestWebKitAPI::setupGeolocationProvider):
(TestWebKitAPI::setupView):
(TestWebKitAPI::GeolocationBasicStateTracker::GeolocationBasicStateTracker):
(TestWebKitAPI::GeolocationBasicStateTracker::eventsChanged):
(TestWebKitAPI::GeolocationBasicWithHighAccuracyStateTracker::GeolocationBasicWithHighAccuracyStateTracker):
(TestWebKitAPI::GeolocationBasicWithHighAccuracyStateTracker::eventsChanged):
(TestWebKitAPI::GeolocationTransitionToHighAccuracyStateTracker::GeolocationTransitionToHighAccuracyStateTracker):
(TestWebKitAPI::GeolocationTransitionToHighAccuracyStateTracker::eventsChanged):
(TestWebKitAPI::GeolocationTransitionToLowAccuracyStateTracker::GeolocationTransitionToLowAccuracyStateTracker):
(TestWebKitAPI::GeolocationTransitionToLowAccuracyStateTracker::eventsChanged):
(TestWebKitAPI::didFinishLoadForFrame):
* TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPosition.html: Added.
* TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPositionWithHighAccuracy.html: Added.
* TestWebKitAPI/Tests/WebKit2/geolocationWatchPosition.html: Added.
* TestWebKitAPI/Tests/WebKit2/geolocationWatchPositionWithHighAccuracy.html: Added.
* WebKitTestRunner/GeolocationProviderMock.cpp:
(WTR::GeolocationProviderMock::GeolocationProviderMock):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158689 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Begin work on a WKRemoteObjectDecoder object
https://bugs.webkit.org/show_bug.cgi?id=123819

Reviewed by Dan Bernstein.

* Shared/API/Cocoa/WKRemoteObjectCoder.h:
* Shared/API/Cocoa/WKRemoteObjectCoder.mm:
(-[WKRemoteObjectDecoder initWithRootObjectDictionary:]):
Add designated initializer.

* Shared/API/Cocoa/WKRemoteObjectRegistry.mm:
(-[WKRemoteObjectRegistry _handleMessageWithName:body:]):
If the message has the expected name and body type, pass it along to -_invokeMessageWithBody:.

(-[WKRemoteObjectRegistry _invokeMessageWithBody:]):
Create a decoder.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@158690 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Remote Layer Tree: Apply layer changes to LayerTypeCustom layers to the custom layer in the Web process, not to the CALayerHost
https://bugs.webkit.org/show_bug.cgi?id=123818

Reviewed by Anders Carlsson.

Changes to the properties of a PlatformCALayer of type LayerTypeCustom are intended
to affect the custom CALayer; however, we were bundling them up with the transaction
and applying them to the CALayerHost, leading to important properties being lost.

Instead, apply them to the Web-process-side CALayer when building the transaction.

* Shared/mac/RemoteLayerTreePropertyApplier.h: Added.
* Shared/mac/RemoteLayerTreePropertyApplier.mm: Added.
(WebKit::cgColorFromColor):
(WebKit::toCAFilterType):
(WebKit::RemoteLayerTreePropertyApplier::applyPropertiesToLayer):
(WebKit::RemoteLayerTreePropertyApplier::disableActionsForLayer):
Move code to apply LayerProperties to a CALayer from RemoteLayerTreeHost.
Move code to disable actions on a CALayer from RemoteLayerTreeHost.

* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::commit):
(WebKit::RemoteLayerTreeHost::createLayer):
Use RemoteLayerTreePropertyApplier.
Hand it a map of LayerID->CALayer so that it can look up related layers
for children and mask layers.

* WebKit2.xcodeproj/project.pbxproj:
Add RemoteLayerTreePropertyApplier.{h,mm}

* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(PlatformCALayerRemote::recursiveBuildTransaction):
Upon commit, apply changes to LayerTypeCustom layers to the platform layer.
Setting children or maskLayer won't work, since we don't know about other raw CALayers.
This is OK, since nothing uses those properties on custom layers.

* WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.cpp:
(PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom):
Disable actions on the root custom layer.


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