REGRESSION (r168518): Multiple tests for workers in blobs assert
https://bugs.webkit.org/show_bug.cgi?id=132728

Reviewed by Geoffrey Garen.

Source/WebCore:
Change File serialization to include name, so that we don't have to regenerate anything
on a secondary thread after deserialization.

Files and Blobs can't be stored persistently, because URLs are transient (IndexedDB
has an explicit check, and fails if there were any blob URLs). API doesn't have the
check, but given that anyone who tried to use these to serialize a File would fail,
it seems OK to change the format.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::write):
(WebCore::CloneDeserializer::readFile):
* fileapi/File.cpp:
(WebCore::File::File):
* fileapi/File.h:

LayoutTests:
* platform/mac/TestExpectations: Unskip the tests.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168554 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS] Switch geolocation to an explicit authorization query model
https://bugs.webkit.org/show_bug.cgi?id=132717

Source/WebKit/ios: 
<rdar://problem/16762390>

Reviewed by Sam Weinig.

WebGeolocationCoreLocationProvider is the general WebKit wrapper for CoreLocation.

The old model was to start WebGeolocationCoreLocationProvider and have the start fail or succeed.
The new model is to explicitely ask for authorization through "requestGeolocationAuthorization", and
listen to "geolocationAuthorizationGranted" and "geolocationAuthorizationDenied".

We assume the client of WebGeolocationCoreLocationProvider is well behaved and ask for authorization
before invoking "start".
If "start" is called and the authorization is not granted, we assume geolocation was reset since
the last time authorization was requested, and we reset the client.


WebGeolocationProviderIOS has been adapted to that model. Instead of doing the "warmup" sequence
to get the authorization, it queries WebGeolocationCoreLocationProvider explicitly.

* Misc/WebGeolocationCoreLocationProvider.h:
* Misc/WebGeolocationCoreLocationProvider.mm:
(-[WebGeolocationCoreLocationProvider createLocationManager]):
(-[WebGeolocationCoreLocationProvider dealloc]):
(-[WebGeolocationCoreLocationProvider requestGeolocationAuthorization]):
(isAuthorizationGranted):
(-[WebGeolocationCoreLocationProvider start]):
(-[WebGeolocationCoreLocationProvider stop]):
(-[WebGeolocationCoreLocationProvider locationManager:didChangeAuthorizationStatus:]):
(-[WebGeolocationCoreLocationProvider setEnableHighAccuracy:]):
(-[WebGeolocationCoreLocationProvider handleExternalAuthorizationStatusChange:]): Deleted.
* Misc/WebGeolocationProviderIOS.mm:
(-[WebGeolocationProviderIOS suspend]):
(-[WebGeolocationProviderIOS resume]):
(-[WebGeolocationProviderIOS registerWebView:]):
(-[WebGeolocationProviderIOS unregisterWebView:]):
(-[WebGeolocationProviderIOS setEnableHighAccuracy:]):
(-[WebGeolocationProviderIOS initializeGeolocationForWebView:listener:]):
(-[WebGeolocationProviderIOS geolocationAuthorizationGranted]):
(-[WebGeolocationProviderIOS geolocationAuthorizationDenied]):
(-[WebGeolocationProviderIOS stopTrackingWebView:]):
(-[WebGeolocationProviderIOS resetGeolocation]):
(-[_WebCoreLocationUpdateThreadingProxy geolocationAuthorizationGranted]):
(-[_WebCoreLocationUpdateThreadingProxy geolocationAuthorizationDenied]):
(-[_WebCoreLocationUpdateThreadingProxy positionChanged:WebCore::]):
(-[_WebCoreLocationUpdateThreadingProxy errorOccurred:]):
(-[_WebCoreLocationUpdateThreadingProxy resetGeolocation]):
(-[WebGeolocationProviderIOS _startCoreLocationDelegate]): Deleted.
(-[WebGeolocationProviderIOS _stopCoreLocationDelegateIfNeeded]): Deleted.
(-[WebGeolocationProviderIOS cancelWarmUpForWebView:]): Deleted.
(-[WebGeolocationProviderIOS geolocationDelegateStarted]): Deleted.
(-[WebGeolocationProviderIOS geolocationDelegateUnableToStart]): Deleted.
(-[_WebCoreLocationUpdateThreadingProxy geolocationDelegateStarted]): Deleted.
(-[_WebCoreLocationUpdateThreadingProxy geolocationDelegateUnableToStart]): Deleted.

Source/WebKit/mac: 

Reviewed by Sam Weinig.

Since there is no warmup code, WebGeolocationPolicyListener no longer need to know about the provider,
which is awesome :)

* WebCoreSupport/WebGeolocationClient.mm:
(-[WebGeolocationPolicyListener initWithGeolocation:forWebView:]):
(-[WebGeolocationPolicyListener deny]):
(-[WebGeolocationProviderInitializationListener initializationAllowedWebView:]):
(-[WebGeolocationProviderInitializationListener initializationDeniedWebView:]):
(-[WebGeolocationPolicyListener initWithGeolocation:forWebView:provider:]): Deleted.
(-[WebGeolocationProviderInitializationListener initializationAllowedWebView:provider:]): Deleted.
(-[WebGeolocationProviderInitializationListener initializationDeniedWebView:provider:]): Deleted.
* WebView/WebViewPrivate.h:

Source/WebKit2: 

Reviewed by Sam Weinig.

Switch WKGeolocationProviderIOS to use the new API of WebGeolocationCoreLocationProvider.

On WebKit2, the whole logic to track requesters is in WebGeolocationManagerProxy.

Without the warmup sequence, WKGeolocationProviderIOS becomes really dumb: it just provides
the two step authorization and forward the start/stop messages to the WebGeolocationCoreLocationProvider.

* UIProcess/ios/WKGeolocationProviderIOS.mm:
(-[WKGeolocationProviderIOS _stopUpdating]):
(-[WKGeolocationProviderIOS decidePolicyForGeolocationRequestFromOrigin:frame:request:window:]):
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
(-[WKGeolocationProviderIOS geolocationAuthorizationDenied]):
(-[WKWebAllowDenyPolicyListener initWithPermissionRequestProxy:]):
(-[WKWebAllowDenyPolicyListener deny]):
(-[WKGeolocationProviderIOS _stopUpdatingIfPossible]): Deleted.
(-[WKGeolocationProviderIOS geolocationDelegateStarted]): Deleted.
(-[WKGeolocationProviderIOS geolocationDelegateUnableToStart]): Deleted.
(-[WKGeolocationProviderIOS permissionDenied:]): Deleted.
(-[WKWebAllowDenyPolicyListener initWithProvider:permissionRequestProxy:]): Deleted.

Tools: 

Reviewed by Sam Weinig.

* DumpRenderTree/mac/MockGeolocationProvider.mm:
(-[MockGeolocationProvider initializeGeolocationForWebView:listener:]):
(-[MockGeolocationProvider cancelWarmUpForWebView:]): Deleted.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168555 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS][WK2] Set up the resize events
https://bugs.webkit.org/show_bug.cgi?id=132726

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-09
Reviewed by Darin Adler and Simon Fraser.


Source/WebCore: 
Let the WebKit2 layer override the size used for resize events.

* WebCore.exp.in:
* page/FrameView.cpp:
(WebCore::FrameView::layout):
(WebCore::FrameView::sizeForResizeEvent):
(WebCore::FrameView::sendResizeEventIfNeeded):
(WebCore::FrameView::setCustomSizeForResizeEvent):
* page/FrameView.h:

Source/WebKit2: 
Wire the UI Process updates to FrameView to send the resize events appropriately.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::isChangingObscuredInsetsInteractively):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateVisibleContentRects]):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView didUpdateVisibleRect:unobscuredRect:scale:inStableState:isChangingObscuredInsetsInteractively:]):
(-[WKContentView didUpdateVisibleRect:unobscuredRect:scale:inStableState:]): Deleted.
Pass down the status of the content insets with the view update to main frame's FrameView
when needed.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::dynamicViewportSizeUpdate):
On live resize, send the resize event, then the scroll events (if needed).

Since JavaScript now gets two chances to change the content (resize event + scroll event),
we query the actual scroll offset and scale for the DynamicViewportUpdateChangedTarget.

(WebKit::WebPage::viewportConfigurationChanged):
Define the custom size on load before the app gets a chance to send different rects.
If for some reason the app changes its mind about the insets, the content will be notified with a resize event.

(WebKit::WebPage::updateVisibleContentRects):
Send the resize event when the insets are stable.
Also move the scroll event after the resize event for consistency with live resize.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@168556 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Fix the export file after r168556

Patch by Benjamin Poulain <bpoulain@apple.com> on 2014-05-09

* WebCore.exp.in: I forgot to fix the export file before landing.


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