Clients that request the selection services menu after WebKit2 will get one with different metrics than otherwise
https://bugs.webkit.org/show_bug.cgi?id=135765
<rdar://problem/17962180>

Reviewed by Brady Eidson.

* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::setupServicesMenu):
The menu is cached between clients, but we make adjustments to it.
We should copy it before adjusting.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172364 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[WK2] Scrolling does not work inside nested frames
https://bugs.webkit.org/show_bug.cgi?id=135775
<rdar://problem/17959896>

Reviewed by Tim Horton.

Source/WebCore:

r169733 added an "isMainFrame" check in AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged.
However we have to rebuild the non-fast-scrollable region when any subframe changes,
even a deeply nested one. So always rebuild it, starting from the root frame.

Fixes scrolling on nested framesets like http://www.opengl.org/sdk/docs/man3/.

Test: platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html

* page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):

LayoutTests:

Nested frameset test that dumps the scrolling tree.

* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability.html: Added.
* platform/mac-wk2/tiled-drawing/scrolling/frames/resources/frameset-frame.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@172365 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[mac] Dynamically update serviceability when the set of services changes
https://bugs.webkit.org/show_bug.cgi?id=135738
<rdar://problem/17533459>

Reviewed by Brady Eidson.

* UIProcess/WebContext.cpp:
(WebKit::WebContext::createNewWebProcess):
Adopt the new universal refreshExistingServices.

(WebKit::WebContext::refreshExistingServices): Deleted.
* UIProcess/WebContext.h:
Remove WebContext::refreshExistingServices; there's no need for it.

* UIProcess/mac/ServicesController.h:
* UIProcess/mac/ServicesController.mm:
Fix the build with only public headers by including NSSharingService.h itself.
Place the NSSharingServicePicker (Details) category outside the #ifdef.
Forward-declare and possibly import NSExtension SPI.

(WebKit::ServicesController::ServicesController):
Register a callback to be notified whenever the set of services changes.
When this occurs, call refreshExistingServices. We let refreshExistingServices
coalesce updates because these notifications can come in small batches.

(WebKit::ServicesController::refreshExistingServices):
Dispatch changes in service availability to all processes in all contexts.

* UIProcess/mac/WebContextMenuProxyMac.mm:
(WebKit::WebContextMenuProxyMac::setupServicesMenu):
Adjust the referenced rdar:// and call ServicesController::refreshExistingServices
instead of the now-removed WebContext:: variant. We can't remove this
yet because our services state can still be stale because NSServiceSharingPicker
can still sometimes lie about the current service state immediately after a change occurs;
once that is fixed, we should get rid of this as well as the refresh in Web Process creation.


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