Add SPI for clearing an entire back-forward list
https://bugs.webkit.org/show_bug.cgi?id=134274

Reviewed by Dan Bernstein.

Add -[WKBackForwardList _clear] which only clears the back-forward items, and
change -[WKBackForwardList _removeAllItems] to remove all items including the current one.

* UIProcess/API/Cocoa/WKBackForwardList.mm:
(-[WKBackForwardList _removeAllItems]):
(-[WKBackForwardList _clear]):
* UIProcess/API/Cocoa/WKBackForwardListPrivate.h:
* UIProcess/WebBackForwardList.cpp:
(WebKit::WebBackForwardList::removeAllItems):
* UIProcess/WebBackForwardList.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Add support for v0 legacy decoding
https://bugs.webkit.org/show_bug.cgi?id=134275

Reviewed by Andreas Kling.

* Shared/SessionState.h:
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::LegacySessionStateDecoder::decodeV0SessionHistory):
(WebKit::LegacySessionStateDecoder::decodeV1SessionHistory):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170395 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[MSE][Mac] Pass AVSampleBufferDisplayLayer HDCP status through to EME
https://bugs.webkit.org/show_bug.cgi?id=134221

Reviewed by Eric Carlson.

Pass the outputObscuredDueToInsufficientExternalProtection property of AVSampleBufferDisplayLayer
as an error to the associated MediaKeySession object.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener invalidate]):
(-[WebAVSampleBufferErrorListener beginObservingLayer:]):
(-[WebAVSampleBufferErrorListener observeValueForKeyPath:ofObject:change:context:]):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170396 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[Fullscreen][Mac] WKView is not firstResponder after entering fullscreen mode
https://bugs.webkit.org/show_bug.cgi?id=134270

Reviewed by Jon Honeycutt.

The WebCoreFullScreenWindow's firstResponder is reset when the full screen animation completes and
the window's style is changed to a fullscreen style. Save the firstResponder, and if it's still in
the window's view hierarchy after the style changes, reset it to the firstResponder.

* platform/mac/WebCoreFullScreenWindow.mm:
(-[WebCoreFullScreenWindow setStyleMask:]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170397 268f45cc-cd09-0410-ab3c-d52691b4dbfc
CSS JIT: Add positionInRootFragments to SelectorFragment
https://bugs.webkit.org/show_bug.cgi?id=133609

Reviewed by Benjamin Poulain.

Some non-backtrack-related predicates use relationToRightFragment information
to decide whether checkingContext->elementStyle should be refered.
To make it works correctly, add the positionInRootFragments field to SelectorFragment.
When positionInRootFragments == Rightmost and relationToRightFragment == Rightmost,
we should see checkingContext->elementStyle.

Source/WebCore:
Test: fast/selectors/first-child-update-with-renderer.html

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::shouldUseRenderStyleFromCheckingContext):
(WebCore::SelectorCompiler::addPseudoClassType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::SelectorCodeGenerator):
(WebCore::SelectorCompiler::constructFragments):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsActive):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsHovered):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild):

LayoutTests:
* fast/selectors/first-child-update-with-renderer-expected.txt: Added.
* fast/selectors/first-child-update-with-renderer.html: Added.


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170398 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Enable GAMEPAD in the Mac build, but disabled at runtime.
https://bugs.webkit.org/show_bug.cgi?id=134255

Reviewed by Dean Jackson.

Source/JavaScriptCore:
* Configurations/FeatureDefines.xcconfig:

* runtime/JSObject.h: Export JSObject::removeDirect() to allow disabling
  functions at runtime.

Source/WebCore:
No new tests (No changes to a tested config).

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation): Add the ability to have a function be EnabledAtRuntime by
  removing such functions from the prototype if they are disabled.

Change the three new objects and the one new function to be EnabledAtRuntime
* Modules/gamepad/Gamepad.idl:
* Modules/gamepad/GamepadButton.idl:
* Modules/gamepad/GamepadEvent.idl:
* Modules/gamepad/NavigatorGamepad.idl:

Add a RuntimeEnabledFeature for Gamepads:
* bindings/generic/RuntimeEnabledFeatures.cpp:
(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):
* bindings/generic/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setGamepadsEnabled):
(WebCore::RuntimeEnabledFeatures::gamepadsEnabled):

* Configurations/FeatureDefines.xcconfig:

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

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(-[WebPreferences gamepadsEnabled]):
(-[WebPreferences setGamepadsEnabled:]):
* WebView/WebPreferencesPrivate.h:

* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit2:
* Configurations/FeatureDefines.xcconfig:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetGamepadsEnabled):
(WKPreferencesGetGamepadsEnabled):
* UIProcess/API/C/WKPreferencesRefPrivate.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170400 268f45cc-cd09-0410-ab3c-d52691b4dbfc
advanceByCombiningCharacterSequence() can be simplified
https://bugs.webkit.org/show_bug.cgi?id=133591

Reviewed by Dean Jackson.

Use U16_NEXT() because it already does what we're trying to do.

No new tests because there is no behavior change.

* platform/graphics/mac/ComplexTextController.cpp:
(WebCore::advanceByCombiningCharacterSequence):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170402 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Simplify decodeLegacySessionState
https://bugs.webkit.org/show_bug.cgi?id=134280

Reviewed by Andreas Kling.

There's no need to use a LegacySessionStateDecoder object with a single member,
just make all functions static and only export a single entry point; decodeLegacySessionState.

No functionality change, just moving code around.

* UIProcess/API/C/WKSessionStateRef.cpp:
(WKSessionStateCreateFromData):
* UIProcess/mac/LegacySessionStateCoding.cpp:
(WebKit::decodeSessionHistoryEntryData):
(WebKit::decodeSessionHistoryEntry):
(WebKit::decodeSessionHistoryEntries):
(WebKit::decodeV0SessionHistory):
(WebKit::decodeV1SessionHistory):
(WebKit::decodeSessionHistory):
(WebKit::decodeLegacySessionState):
(WebKit::LegacySessionStateDecoder::LegacySessionStateDecoder): Deleted.
(WebKit::LegacySessionStateDecoder::~LegacySessionStateDecoder): Deleted.
(WebKit::LegacySessionStateDecoder::decodeSessionState): Deleted.
(WebKit::LegacySessionStateDecoder::decodeSessionHistory): Deleted.
(WebKit::LegacySessionStateDecoder::decodeV0SessionHistory): Deleted.
(WebKit::LegacySessionStateDecoder::decodeV1SessionHistory): Deleted.
(WebKit::LegacySessionStateDecoder::decodeSessionHistoryEntries): Deleted.
(WebKit::LegacySessionStateDecoder::decodeSessionHistoryEntry): Deleted.
(WebKit::LegacySessionStateDecoder::decodeSessionHistoryEntryData): Deleted.
* UIProcess/mac/LegacySessionStateCoding.h:

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170403 268f45cc-cd09-0410-ab3c-d52691b4dbfc
WKContextHistoryClient::didNavigateWithNavigationData is passed incorrect URL when history.pushState is used
<https://webkit.org/b/134271> / <rdar://problem/16270167>

Reviewed by Brady Eidson.

Source/WebCore:
Tests: http/tests/globalhistory/history-delegate-pushstate.html
       http/tests/globalhistory/history-delegate-replacestate.html

* page/History.cpp:
(WebCore::History::stateObjectAdded): Call HistoryController after updating the document's URL so that the
URL will reflect the destination of the navigation when FrameLoaderClient::updateGlobalHistory is called.

LayoutTests:
* http/tests/globalhistory/history-delegate-pushstate-expected.txt: Added.
* http/tests/globalhistory/history-delegate-pushstate.html: Added.
* http/tests/globalhistory/history-delegate-replacestate-expected.txt: Added.
* http/tests/globalhistory/history-delegate-replacestate.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170404 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[MSE][Mac] Uncaught exception when deallocating AVSampleBufferDisplayLayer
https://bugs.webkit.org/show_bug.cgi?id=134281

Reviewed by Brent Fulgham.

AVSampleBufferDisplayLayer is throwing an exception from its -dealloc method because KVO observers exist
at the time of dealloc. Remove the observer for outputObscuredDueToInsufficientExternalProtection inside
-stopObservingLayer.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVSampleBufferErrorListener stopObservingLayer:]):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@170405 268f45cc-cd09-0410-ab3c-d52691b4dbfc
[iOS]: WK2 Inspector Node Highlighting
https://bugs.webkit.org/show_bug.cgi?id=134257

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2014-06-24
Reviewed by Timothy Hatcher.

Source/WebCore:
Some clients want to get highlights with the scroll applied,
others do not. Provide a CoordinateSpace param to be used for
getting a highlight (only used on iOS).

* WebCore.exp.in:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::getHighlight):
* inspector/InspectorController.h:
* inspector/InspectorOverlay.cpp:
(WebCore::InspectorOverlay::getHighlight):
(WebCore::buildObjectForRendererFragments):
* inspector/InspectorOverlay.h:
(WebCore::Highlight::Highlight):
* testing/Internals.cpp:
(WebCore::Internals::inspectorHighlightRects):

Source/WebKit/mac:
* WebInspector/WebNodeHighlightView.mm:
(-[WebNodeHighlightView layoutSublayers:]):

Source/WebKit2:
* Scripts/webkit2/messages.py:
(struct_or_class):
(headers_for_type):
* Shared/WebCoreArgumentCoders.h:
* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<Highlight>::encode):
(IPC::ArgumentCoder<Highlight>::decode):
Add a way to encode a WebCore::Highlight struct.

* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _showInspectorHighlight:WebCore::]):
(-[WKWebView _hideInspectorHighlight]):
* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showInspectorHighlight):
(WebKit::PageClientImpl::hideInspectorHighlight):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::showInspectorHighlight):
(WebKit::WebPageProxy::hideInspectorHighlight):
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
(WebKit::WebInspectorClient::highlight):
(WebKit::WebInspectorClient::hideHighlight):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::showInspectorHighlight):
(WebKit::WebPage::hideInspectorHighlight):
Send web process highlight / hideHighlight messages up to
the UIProcess so it can highlight in the WKContentView.
Pass up a WebCore::Highlight in Document coordinates.

* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKInspectorHighlightView initWithFrame:]):
(-[WKInspectorHighlightView dealloc]):
(-[WKInspectorHighlightView _removeAllLayers]):
(-[WKInspectorHighlightView _createLayers:]):
(findIntersectionOnLineBetweenPoints):
(quadIntersection):
(layerPathWithHole):
(layerPath):
(-[WKInspectorHighlightView _layoutForNodeHighlight:]):
(-[WKInspectorHighlightView _layoutForRectsHighlight:]):
(-[WKInspectorHighlightView update:]):
Reuse the WebKit1 code to turn highlight float quads into CAShapeLayers.

(-[WKContentView _showInspectorHighlight:WebCore::]):
(-[WKContentView _hideInspectorHighlight]):
Show and hide the highlight view with the respective WebCore::Highlight.

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