WebKit-https.git
3 years agoFix clean Windows build after r210029
achristensen@apple.com [Tue, 20 Dec 2016 23:34:39 +0000 (23:34 +0000)]
Fix clean Windows build after r210029
https://bugs.webkit.org/show_bug.cgi?id=165881

* DerivedSources.cpp:

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

3 years agoAddress some style problems found by static analysis
bfulgham@apple.com [Tue, 20 Dec 2016 23:32:58 +0000 (23:32 +0000)]
Address some style problems found by static analysis
https://bugs.webkit.org/show_bug.cgi?id=165975

Reviewed by Alex Christensen.

Source/JavaScriptCore:

Correct the const-correctness of functions that are implemented using stricter
const declarations.

* inspector/agents/InspectorDebuggerAgent.h:
* inspector/agents/InspectorHeapAgent.cpp:
* inspector/agents/InspectorHeapAgent.h:
* inspector/agents/InspectorRuntimeAgent.h:
* inspector/agents/InspectorScriptProfilerAgent.cpp:
* inspector/agents/InspectorScriptProfilerAgent.h:
* inspector/scripts/codegen/cpp_generator.py:
(cpp_type_for_unchecked_formal_in_parameter): Update to match const declarations of
implementation files.
* inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
Rebaselined results for "const Ptr* const" syntax.

Source/WebCore:

Correct the const-correctness of functions that are implemented using stricter
const declarations.

Avoid passing large ANGLE data structures through the ANGLEWebKitBridge methods.

* inspector/InspectorCSSAgent.h: Declare the method overrides properly to match
the stricter const declarations in the implementation files.
* inspector/InspectorDOMAgent.h: Ditto.
* inspector/InspectorPageAgent.h: Ditto.
* inspector/InspectorTimelineAgent.h: Ditto.
* inspector/PageDebuggerAgent.h: Ditto.
* platform/graphics/ANGLEWebKitBridge.cpp:
(WebCore::ANGLEWebKitBridge::setResources): Pass by const reference.
* platform/graphics/ANGLEWebKitBridge.h:
(WebCore::ANGLEWebKitBridge::getResources): Return a const reference.
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::selectSettings): Use a lambda that takes
a const reference, rather than copying the maps while searching.

Source/WebKit2:

Avoid passing large ANGLE data structures through the ANGLEWebKitBridge methods.

* Shared/WebBackForwardListItem.cpp:
(WebKit::WebBackForwardListItem::create):
(WebKit::WebBackForwardListItem::WebBackForwardListItem):
* Shared/WebBackForwardListItem.h:

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

3 years ago[iOS WK2] Switching or closing a tab leads to all-white tab content if the status...
simon.fraser@apple.com [Tue, 20 Dec 2016 23:32:28 +0000 (23:32 +0000)]
[iOS WK2] Switching or closing a tab leads to all-white tab content if the status bar is double height
https://bugs.webkit.org/show_bug.cgi?id=166286
rdar://problem/29593525

Reviewed by Tim Horton.

A double-height status bar triggers view resize while snapshotting in the background,
which also triggers calls to _endAnimatedResize on tab resume. However, it was possible
for _endAnimatedResize to re-enter via synchronizeDynamicViewportUpdate()/didCommitLayerTree(),
causing us to use a nil _resizeAnimationView for scale computations, thus setting a zero
scale on the WKContentView.

Fix by checking _dynamicViewportUpdateMode again after the call to synchronizeDynamicViewportUpdate(),
and do a belt-and-braces check for a nil _resizeAnimationView.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _endAnimatedResize]):

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

3 years agoRemove an ANGLE Markdown file from the ANGLE target
timothy_horton@apple.com [Tue, 20 Dec 2016 23:31:10 +0000 (23:31 +0000)]
Remove an ANGLE Markdown file from the ANGLE target
https://bugs.webkit.org/show_bug.cgi?id=166279

Reviewed by Alex Christensen.

* ANGLE.xcodeproj/project.pbxproj:
We don't need to build this, it's not source code.

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

3 years agoRebaseline js/dom/global-constructors-attributes.html for mac-wk1.
ryanhaddad@apple.com [Tue, 20 Dec 2016 23:07:06 +0000 (23:07 +0000)]
Rebaseline js/dom/global-constructors-attributes.html for mac-wk1.

Unreviewed test gardening.

* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:

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

3 years agoWebAssembly: construct 32-bit encodedJSValue properly
jfbastien@apple.com [Tue, 20 Dec 2016 22:16:28 +0000 (22:16 +0000)]
WebAssembly: construct 32-bit encodedJSValue properly
https://bugs.webkit.org/show_bug.cgi?id=166199

Reviewed by Mark Lam.

Constructing an encodedJSValue using `{ }` yields the wrong value
on 32-bit platforms. WebAssembly doesn't currently target 32-bit
platforms, but we may as well get it right.

* wasm/JSWebAssembly.cpp:
(JSC::webAssemblyCompileFunc):
(JSC::webAssemblyValidateFunc):
* wasm/js/JSWebAssemblyHelpers.h:
(JSC::toNonWrappingUint32):
* wasm/js/WebAssemblyCompileErrorConstructor.cpp:
(JSC::constructJSWebAssemblyCompileError):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
* wasm/js/WebAssemblyInstanceConstructor.cpp:
(JSC::constructJSWebAssemblyInstance):
* wasm/js/WebAssemblyMemoryConstructor.cpp:
(JSC::constructJSWebAssemblyMemory):
* wasm/js/WebAssemblyModuleConstructor.cpp:
(JSC::constructJSWebAssemblyModule):
* wasm/js/WebAssemblyRuntimeErrorConstructor.cpp:
(JSC::constructJSWebAssemblyRuntimeError):
* wasm/js/WebAssemblyTableConstructor.cpp:
(JSC::constructJSWebAssemblyTable):
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::webAssemblyTableProtoFuncLength):
(JSC::webAssemblyTableProtoFuncGrow):
(JSC::webAssemblyTableProtoFuncGet):
(JSC::webAssemblyTableProtoFuncSet):

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

3 years ago[WebIDL] Remove custom binding for WorkerGlobalScope::importScripts
weinig@apple.com [Tue, 20 Dec 2016 22:16:11 +0000 (22:16 +0000)]
[WebIDL] Remove custom binding for WorkerGlobalScope::importScripts
https://bugs.webkit.org/show_bug.cgi?id=166243

Reviewed by Alex Christensen.

* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::importScripts): Deleted.
* workers/WorkerGlobalScope.idl:
Import scripts can now be trivially generated.

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

3 years agoUpdate keyword completions in the inspector for the new scroll snapping CSS properties
wenson_hsieh@apple.com [Tue, 20 Dec 2016 21:57:22 +0000 (21:57 +0000)]
Update keyword completions in the inspector for the new scroll snapping CSS properties
https://bugs.webkit.org/show_bug.cgi?id=166235

Reviewed by Joseph Pecoraro.

The CSS keyword completions for the scroll snapping properties need to be updated for the latest version of the spec.

* UserInterface/Models/CSSKeywordCompletions.js:

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

3 years agoSVG elements should inherit the root's flow thread state.
zalan@apple.com [Tue, 20 Dec 2016 21:47:31 +0000 (21:47 +0000)]
SVG elements should inherit the root's flow thread state.
https://bugs.webkit.org/show_bug.cgi?id=166173
rdar://problem/29704862

Reviewed by Simon Fraser.

Source/WebCore:

When the <svg> is not part of the multicolumn context (out of flow positioning), its descendants should not be in the flow either.

Test: fast/multicol/svg-inside-multicolumn.html

* rendering/RenderObject.cpp:
(WebCore::RenderObject::computedFlowThreadState):
* rendering/RenderObject.h:
(WebCore::RenderObject::isProgress):
(WebCore::RenderObject::isRenderSVGBlock):
* rendering/svg/RenderSVGBlock.h:

LayoutTests:

* fast/multicol/svg-inside-multicolumn-expected.txt: Added.
* fast/multicol/svg-inside-multicolumn.html: Added.

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

3 years agoFix yet another app that uses initEvent with fewer than 3 parameters
achristensen@apple.com [Tue, 20 Dec 2016 21:41:14 +0000 (21:41 +0000)]
Fix yet another app that uses initEvent with fewer than 3 parameters
https://bugs.webkit.org/show_bug.cgi?id=166257
<rdar://problem/29420268>

Reviewed by Sam Weinig.

* dom/Event.cpp:
(WebCore::Event::initEventForBindings):
* platform/RuntimeApplicationChecks.h:
* platform/RuntimeApplicationChecks.mm:
(WebCore::IOSApplication::isAutoNaviAMap):
AutoNavi amap has content that uses initEvent with one parameter. This quirk is needed here, too.

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

3 years agoWeb Inspector: Console could be made useful for very simple await expressions
joepeck@webkit.org [Tue, 20 Dec 2016 21:41:03 +0000 (21:41 +0000)]
Web Inspector: Console could be made useful for very simple await expressions
https://bugs.webkit.org/show_bug.cgi?id=165681
<rdar://problem/29755339>

Reviewed by Brian Burg.

Source/WebInspectorUI:

Normally await expressions are only allowed inside of async functions.
They make dealing with async operations easy, but can't be used directly
in Web Inspector's console without making your own async function wrapper.

This change allows simple await expressions to be run in the console.
The supported syntaxes are (simple expression with optional assignment):

    await <expr>
    x = await <expr>
    let x = await <expr>

Web Inspector's console will automatically wrap this in an async
function and report the resulting value or exception. For instance
in the last example above:

    let x;
    (async function() {
        try {
            x = await <expr>;
            console.info("%o", x);
        } catch (e) {
            console.error(e);
        }
    })();
    undefined

This way users can get the convenience of await in the Console.
This also gives users a nice way of extracting a value out of
a Promise without writing their own handlers.

* UserInterface/Controllers/RuntimeManager.js:
(WebInspector.RuntimeManager.prototype.evaluateInInspectedWindow):
(WebInspector.RuntimeManager.prototype._tryApplyAwaitConvenience):
Wrap simple await expressions into a function that will log the result.

LayoutTests:

* inspector/controller/runtime-controller-expected.txt:
* inspector/controller/runtime-controller.html:
Test the "await expression" convenience of RuntimeManager.

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

3 years agoWeb Inspector: Update CodeMirror to support async/await keyword and other ES2017...
joepeck@webkit.org [Tue, 20 Dec 2016 21:41:00 +0000 (21:41 +0000)]
Web Inspector: Update CodeMirror to support async/await keyword and other ES2017 features
https://bugs.webkit.org/show_bug.cgi?id=165677

Rubber-stamped by Brian Burg.

Update CodeMirror from version 5.5.1 to 5.21.1. Highlights include:

  - Syntax highlighting for ES2017 features (async/await)
  - Syntax highlighting improvements for some ES6 features (new.target)
  - Syntax highlighting for CSS4 #rrggbbaa and #rgba colors

As well as a number of smaller bug fixes.

Had to add a few semicolons to codemirror.js so that our minifier
didn't choke in a few places due to ASI behavior.

* Scripts/update-codemirror-resources.rb:
* UserInterface/External/CodeMirror/LICENSE:
* UserInterface/External/CodeMirror/clojure.js:
* UserInterface/External/CodeMirror/closebrackets.js:
* UserInterface/External/CodeMirror/codemirror.css:
* UserInterface/External/CodeMirror/codemirror.js:
* UserInterface/External/CodeMirror/coffeescript.js:
* UserInterface/External/CodeMirror/comment.js:
* UserInterface/External/CodeMirror/css.js:
* UserInterface/External/CodeMirror/htmlmixed.js:
* UserInterface/External/CodeMirror/javascript.js:
* UserInterface/External/CodeMirror/livescript.js:
* UserInterface/External/CodeMirror/matchbrackets.js:
* UserInterface/External/CodeMirror/overlay.js:
* UserInterface/External/CodeMirror/placeholder.js:
* UserInterface/External/CodeMirror/runmode.js:
* UserInterface/External/CodeMirror/sql.js:
* UserInterface/External/CodeMirror/sublime.js:
* UserInterface/External/CodeMirror/xml.js:

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

3 years ago[Cocoa] REGRESSION (r209558): Calling decisionHandler multiple times in webView:decid...
aestes@apple.com [Tue, 20 Dec 2016 21:18:30 +0000 (21:18 +0000)]
[Cocoa] REGRESSION (r209558): Calling decisionHandler multiple times in webView:decidePolicyForNavigationAction:decisionHandler: leads to a crash
https://bugs.webkit.org/show_bug.cgi?id=165992
Source/WebKit2:

<rdar://problem/29693817>

Reviewed by Brady Eidson.

r209558 added additional move semantics to the decisionHandler block passed to
-webView:decidePolicyForNavigationAction:decisionHandler:, resulting in a null pointer
dereference in clients that call the decisionHandler block more than once.

None of the completion handlers we expose in the WebKit API are intended to be called more
than once, and we ASSERT in CompletionHandlerCallChecker::didCallCompletionHandler() that
this doesn't happen.

This change strenghtens that protection by returning immediately in completion handlers
called more than once. And in programs linked on or after WebKit 603.1.17, an NSException is
thrown if a completion handler is called a second time, like we do for completion handlers
that are never called.

New API test: WebKit2.DuplicateCompletionHandlerCalls

* Shared/Cocoa/CompletionHandlerCallChecker.h: Declared completionHandlerHasBeenCalled().
* Shared/Cocoa/CompletionHandlerCallChecker.mm:
(WebKit::shouldThrowExceptionForDuplicateCompletionHandlerCall): Added. Returns true if the
program is linked on or after
LibraryVersion::FirstWithExceptionsForDuplicateCompletionHandlerCalls.
(WebKit::CompletionHandlerCallChecker::completionHandlerHasBeenCalled): Added. Returns
whether or not the completion handler has been called. If it has, and
shouldThrowExceptionForDuplicateCompletionHandlerCall() returns true, throws an
NSInternalInconsistencyException.
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setInputDelegate:]): Added an early return if the completion handler has
already been called.
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction): Ditto.
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationResponse): Ditto.
(WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge): Ditto.
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::runJavaScriptAlert): Ditto.
(WebKit::UIDelegate::UIClient::runJavaScriptConfirm): Ditto.
(WebKit::UIDelegate::UIClient::runJavaScriptPrompt): Ditto.
(WebKit::UIDelegate::UIClient::exceededDatabaseQuota): Ditto.
(WebKit::UIDelegate::UIClient::runOpenPanel): Ditto.
(WebKit::UIDelegate::UIClient::reachedApplicationCacheOriginQuota): Ditto.
* UIProcess/Cocoa/VersionChecks.h: Added
FirstWithExceptionsForDuplicateCompletionHandlerCalls with the version number for 603.1.17.

Tools:

Reviewed by Brady Eidson.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2Cocoa/DuplicateCompletionHandlerCalls.mm: Added.
(expectException):
(-[DuplicateCompletionHandlerCallsDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate _webView:decideDatabaseQuotaForSecurityOrigin:currentQuota:currentOriginUsage:currentDatabaseUsage:expectedUsage:decisionHandler:]):
(-[DuplicateCompletionHandlerCallsDelegate _webView:willSubmitFormValues:userObject:submissionHandler:]):
(TEST):
* TestWebKitAPI/Tests/WebKit2Cocoa/duplicate-completion-handler-calls.html: Added.

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

3 years agoRebaseline js/dom/global-constructors-attributes.html for mac-elcapitan after r210024.
ryanhaddad@apple.com [Tue, 20 Dec 2016 21:14:00 +0000 (21:14 +0000)]
Rebaseline js/dom/global-constructors-attributes.html for mac-elcapitan after r210024.

Unreviewed test gardening.

* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:

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

3 years agoRemove INDIE_UI
dino@apple.com [Tue, 20 Dec 2016 20:37:07 +0000 (20:37 +0000)]
Remove INDIE_UI
https://bugs.webkit.org/show_bug.cgi?id=165881
<rdar://problem/29672532>

Reviewed by Simon Fraser.

The Indie UI work has been discontinued.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

* Configurations/FeatureDefines.xcconfig:
* Modules/indieui/UIRequestEvent.cpp: Removed.
* Modules/indieui/UIRequestEvent.h: Removed.
* Modules/indieui/UIRequestEvent.idl: Removed.
* WebCore.xcodeproj/project.pbxproj:
* dom/Element.cpp:
(WebCore::Element::setUIActions): Deleted.
(WebCore::Element::UIActions): Deleted.
* dom/Element.h:
* dom/Element.idl:
* dom/EventNames.in:
* dom/Node.cpp:
(WebCore::Node::dispatchUIRequestEvent): Deleted.
* dom/Node.h:

Source/WebKit/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

* Configurations/FeatureDefines.xcconfig:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

* fast/custom-elements/reactions-for-indieui-expected.txt: Removed.
* fast/custom-elements/reactions-for-indieui.html: Removed.
* indieui/uiactions-expected.txt: Removed.
* indieui/uiactions.html: Removed.
* js/dom/dom-static-property-for-in-iteration-expected.txt:
* js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:

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

3 years agoWebAssembly API: implement WebAssembly.LinkError
jfbastien@apple.com [Tue, 20 Dec 2016 20:20:05 +0000 (20:20 +0000)]
WebAssembly API: implement WebAssembly.LinkError
https://bugs.webkit.org/show_bug.cgi?id=165805
<rdar://problem/29747874>

JSTests:

Reviewed by Mark lam.

Update all exception sites which now throw WebAssembly.LinkError.

* wasm/js-api/element-data.js:
* wasm/js-api/element.js:
(assert.throws):
* wasm/js-api/global-error.js:
(new.Number):
* wasm/js-api/table.js:
(assert.throws):
(new.WebAssembly.Table):
* wasm/js-api/test_Data.js:
* wasm/js-api/test_basic_api.js:
(const.c.in.constructorProperties.switch):
* wasm/js-api/test_memory.js:
(test):
(test.testMemImportError): Deleted.

Source/JavaScriptCore:

Reviewed by Mark Lam.

As described here: https://github.com/WebAssembly/design/pull/901
Some TypeError and RangeError are now converted to WebAssembly.LinkError.

* CMakeLists.txt: add files
* DerivedSources.make: add autoget .lut.h files
* JavaScriptCore.xcodeproj/project.pbxproj: add files
* builtins/BuiltinNames.h: new name LinkError
* runtime/JSGlobalObject.h: auto-register LinkError using existing macro magic
* wasm/JSWebAssembly.h: make the new includes available
* wasm/js/JSWebAssemblyLinkError.cpp: Copied from Source/JavaScriptCore/wasm/JSWebAssemblyCompileError.cpp.
(JSC::JSWebAssemblyLinkError::create):
(JSC::JSWebAssemblyLinkError::JSWebAssemblyLinkError):
(JSC::createWebAssemblyLinkError):
* wasm/js/JSWebAssemblyLinkError.h: Copied from Source/JavaScriptCore/wasm/JSWebAssemblyCompileError.h.
(JSC::JSWebAssemblyLinkError::create):
* wasm/js/WebAssemblyInstanceConstructor.cpp: update as per spec change
(JSC::constructJSWebAssemblyInstance):
* wasm/js/WebAssemblyLinkErrorConstructor.cpp: Copied from Source/JavaScriptCore/wasm/WebAssemblyCompileErrorConstructor.cpp.
(JSC::constructJSWebAssemblyLinkError):
(JSC::callJSWebAssemblyLinkError):
(JSC::WebAssemblyLinkErrorConstructor::create):
(JSC::WebAssemblyLinkErrorConstructor::createStructure):
(JSC::WebAssemblyLinkErrorConstructor::finishCreation):
(JSC::WebAssemblyLinkErrorConstructor::WebAssemblyLinkErrorConstructor):
(JSC::WebAssemblyLinkErrorConstructor::getConstructData):
(JSC::WebAssemblyLinkErrorConstructor::getCallData):
* wasm/js/WebAssemblyLinkErrorConstructor.h: Copied from Source/JavaScriptCore/wasm/WebAssemblyCompileErrorConstructor.h.
* wasm/js/WebAssemblyLinkErrorPrototype.cpp: Copied from Source/JavaScriptCore/wasm/WebAssemblyCompileErrorPrototypr.cpp.
(JSC::WebAssemblyLinkErrorPrototype::create):
(JSC::WebAssemblyLinkErrorPrototype::createStructure):
(JSC::WebAssemblyLinkErrorPrototype::finishCreation):
(JSC::WebAssemblyLinkErrorPrototype::WebAssemblyLinkErrorPrototype):
* wasm/js/WebAssemblyLinkErrorPrototype.h: Copied from Source/JavaScriptCore/wasm/WebAssemblyCompileErrorPrototypr.h.
* wasm/js/WebAssemblyModuleRecord.cpp: update as per spec change
(JSC::dataSegmentFail):
(JSC::WebAssemblyModuleRecord::evaluate):

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

3 years ago[Readable Streams API] Implement readableByteStreamControllerCallPullIfNeeded()
commit-queue@webkit.org [Tue, 20 Dec 2016 19:43:48 +0000 (19:43 +0000)]
[Readable Streams API] Implement readableByteStreamControllerCallPullIfNeeded()
https://bugs.webkit.org/show_bug.cgi?id=166022

Patch by Romain Bellessort <romain.bellessort@crf.canon.fr> on 2016-12-20
Reviewed by Youenn Fablet.

Source/WebCore:

Implemented readableByteStreamControllerCallPullIfNeeded(). This function is
in particular called when a new ReadableByteStreamController is created; hence,
ReadableByteStreamController constructor has been updated.

Added 3 tests to check behaviour in case of success/failure of the start and pull functions
associated to the underlyingByteSource.

* Modules/streams/ReadableByteStreamInternals.js:
(privateInitializeReadableByteStreamController): Updated handling of underlyingByteSource
start function (especially with call to readableByteStreamControllerCallPullIfNeeded).
(isReadableStreamBYOBReader): Added.
(readableStreamHasBYOBReader): Added.
(readableStreamHasDefaultReader): Added.
(readableByteStreamControllerCallPullIfNeeded): Added.
* Modules/streams/ReadableStreamInternals.js:
(privateInitializeReadableStreamDefaultController): Added missing asserts.
* bindings/js/WebCoreBuiltinNames.h: Added readIntoRequests.

LayoutTests:

Added 3 tests to check behaviour in case of success/failure of the start and pull functions
associated to the underlyingByteSource.

* streams/readable-byte-stream-controller-expected.txt: Added expectations for new tests.
* streams/readable-byte-stream-controller.js: Added 3 new tests.

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

3 years agoWebAssembly: unique function signatures
jfbastien@apple.com [Tue, 20 Dec 2016 18:54:33 +0000 (18:54 +0000)]
WebAssembly: unique function signatures
https://bugs.webkit.org/show_bug.cgi?id=165957
<rdar://problem/29735737>

Reviewed by Saam Barati.

JSTests:

* wasm/function-tests/table-basic.js: FIXME is now addressed,
though instance to instance calls still need work which bug
#165282 will address
(i.assert.eq.foo):
* wasm/js-api/unique-signature.js: Added.
(CallIndirectWithDuplicateSignatures):

Source/JavaScriptCore:

Signatures in a Module's Type section can be duplicated, we
therefore need to unique them so that call_indirect only needs to
do a single integer compare to check that a callee's Signature is
the same as the Signature declared at the call site. Without
uniquing we'd either trap when duplicate Signatures are used, or
we'd need to do multiple comparisons. This patch makes that narrow
usecase function correctly.

There's further complication when calling from wasm to
wasm, in which case the Signatures must also match. Such
cross-instance calls will be improved in bug #165282, but this
patch sets the groundwork for it:

- Signatures are now owned by SignatureInformation which lives on
  VM, and is shared by all Modules.
- When parsing a Module, a Signature is created for every Type
  entry, and then uniqued by SignatureInformation's adopt
  method. Duplicate Signatures are dropped and the previous
  SignatureIndex is returned, new Signatures are adopted and a new
  SignatureIndex is created.
- The SignatureIndex values are monotonic. 0 is used to represent
  invalid indices, which trap. This can only occur through Table.
- SignatureInformation is used while generating code to map a
  SignatureIndex back to the Signature* when return / argument
  information is needed. This is a simple lookup into a Vector. It
  isn't used at runtime.
- These Signatures live forever on VM because the bookkeeping
  likely isn't worth it. We may want to empty things out if all
  Modules die, this is tracked in bug #166037.
- We can further improve things by bit-packing SignatureIndex with
  Code*, which is tracked by bug #165511.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* runtime/VM.h: wasm signatures are uniqued here, but aren't accessed frequently (only during parsing) so indirection is fine
* wasm/WasmB3IRGenerator.cpp: use SignatureIndex instead of Signature* when appropriate, and when still using Signature* do so with its new API
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):
* wasm/WasmBinding.cpp:
(JSC::Wasm::importStubGenerator): use SignatureIndex
* wasm/WasmBinding.h:
* wasm/WasmCallingConvention.h:
(JSC::Wasm::CallingConvention::loadArguments):
* wasm/WasmFormat.cpp: drive-by move of alloc/free functions to the implementation file, allows the .h file to drop an FastMalloc.h
(JSC::Wasm::Segment::create):
(JSC::Wasm::Segment::destroy):
(JSC::Wasm::Segment::createPtr):
* wasm/WasmFormat.h: move Signature to its own file
(JSC::Wasm::CallableFunction::CallableFunction):
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::FunctionParser):
* wasm/WasmModuleParser.cpp:
* wasm/WasmModuleParser.h:
(JSC::Wasm::ModuleParser::ModuleParser):
* wasm/WasmParser.h:
(JSC::Wasm::Parser<SuccessType>::Parser):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::parseAndValidateModule):
(JSC::Wasm::Plan::run):
* wasm/WasmSignature.cpp: Added.
(JSC::Wasm::Signature::dump):
(JSC::Wasm::Signature::hash):
(JSC::Wasm::Signature::create):
(JSC::Wasm::Signature::createInvalid):
(JSC::Wasm::Signature::destroy):
(JSC::Wasm::SignatureInformation::~SignatureInformation):
(JSC::Wasm::SignatureInformation::adopt):
(JSC::Wasm::SignatureInformation::get):
* wasm/WasmSignature.h: Added.
(JSC::Wasm::Signature::Signature):
(JSC::Wasm::Signature::storage):
(JSC::Wasm::Signature::allocatedSize):
(JSC::Wasm::Signature::returnType):
(JSC::Wasm::Signature::returnCount):
(JSC::Wasm::Signature::argumentCount):
(JSC::Wasm::Signature::argument):
(JSC::Wasm::Signature::operator==):
(JSC::Wasm::SignatureHash::empty):
(JSC::Wasm::SignatureHash::deleted):
(JSC::Wasm::SignatureHash::SignatureHash):
(JSC::Wasm::SignatureHash::operator==):
(JSC::Wasm::SignatureHash::equal):
(JSC::Wasm::SignatureHash::hash):
(JSC::Wasm::SignatureHash::isHashTableDeletedValue):
* wasm/WasmValidate.cpp:
(JSC::Wasm::validateFunction):
* wasm/WasmValidate.h:
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::create):
* wasm/js/JSWebAssemblyModule.h:
(JSC::JSWebAssemblyModule::signatureForFunctionIndexSpace):
* wasm/js/JSWebAssemblyTable.cpp:
(JSC::JSWebAssemblyTable::JSWebAssemblyTable):
(JSC::JSWebAssemblyTable::clearFunction):
(JSC::JSWebAssemblyTable::setFunction):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
(JSC::WebAssemblyFunction::call):
(JSC::WebAssemblyFunction::create):
(JSC::WebAssemblyFunction::WebAssemblyFunction):
(JSC::WebAssemblyFunction::finishCreation):
* wasm/js/WebAssemblyFunction.h:
(JSC::WebAssemblyFunction::signatureIndex):
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

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

3 years ago[DataCue] Un-prefix DataCue and remove custom bindings
weinig@apple.com [Tue, 20 Dec 2016 18:52:56 +0000 (18:52 +0000)]
[DataCue] Un-prefix DataCue and remove custom bindings
https://bugs.webkit.org/show_bug.cgi?id=166087

Reviewed by Eric Carlson.

Source/WebCore:

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
* bindings/js/JSDataCueCustom.cpp: Removed.
Remove JSDataCueCustom.cpp

* bindings/js/JSTextTrackCueCustom.cpp:
(WebCore::toJSNewlyCreated):
Remove out of date comment.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateConstructorDefinition):
Update constructor generation code to use JSDOMConvert.

* html/track/DataCue.cpp:
(WebCore::DataCue::DataCue):
(WebCore::DataCue::~DataCue):
(WebCore::DataCue::data):
(WebCore::DataCue::setData):
(WebCore::DataCue::cueContentsMatch):
(WebCore::DataCue::value):
(WebCore::DataCue::setValue):
(WebCore::DataCue::valueOrNull):
* html/track/DataCue.h:
* html/track/DataCue.idl:
* platform/SerializedPlatformRepresentation.h:
Remove DATACUE_VALUE define from web exposed classes, so the interface can
be the same on all platforms. Platforms that don't support DATACUE_VALUE will
just never have any value. Also remove custom annotations.

LayoutTests:

* media/track/track-datacue-value-expected.txt:
* media/track/track-datacue-value.html:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
Update tests for unprefixed DataCue.

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

3 years agoImplement the updated port/area-based Scroll Snap Module Level 1 Spec
wenson_hsieh@apple.com [Tue, 20 Dec 2016 18:44:38 +0000 (18:44 +0000)]
Implement the updated port/area-based Scroll Snap Module Level 1 Spec
https://bugs.webkit.org/show_bug.cgi?id=165317
<rdar://problem/29490956>

Reviewed by Dean Jackson.

Source/WebCore:

Implements the changes drafted in the latest iteration of the Scroll Snap Module Level 1 spec, which uses a
snap-area and snap-port-based method for determining snap positions in a scroll snapping container.
Additionally, removes the now-obsolete and prefixed implementation of the scroll snap spec and refactors all
affected layout tests to use the new CSS properties. Also adds new layout tests covering some behaviors detailed
in the new version of the spec, such as scroll snapping with transformed child elements.

See below for more detailed descriptions of the changes.

Tests: css3/scroll-snap/scroll-snap-2d-change-axis-type.html
       css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.html
       css3/scroll-snap/scroll-snap-children-with-scroll-snap-margin.html
       css3/scroll-snap/scroll-snap-children-with-transforms.html
       css3/scroll-snap/scroll-snap-positions-mainframe.html
       css3/scroll-snap/scroll-snap-positions-overflow-resize.html
       css3/scroll-snap/scroll-snap-positions.html
       css3/scroll-snap/scroll-snap-style-changed-align.html
       css3/scroll-snap/scroll-snap-with-scroll-padding.html

* WebCore.xcodeproj/project.pbxproj:
* css/CSSCalculationValue.cpp:
(WebCore::hasDoubleValue):

Removed use of length repeat.

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::valueForScrollSnapType):
(WebCore::valueForScrollSnapAlignment):
(WebCore::ComputedStyleExtractor::propertyValue):
(WebCore::scrollSnapDestination): Deleted.
(WebCore::scrollSnapPoints): Deleted.
(WebCore::scrollSnapCoordinates): Deleted.

Removed helper functions used to create CSS values for scroll snap coordinates and destination, and added
helpers for computed scroll snap type (a combination of axis and strictness values) as well as scroll snap align
(an alignment value per axis).

* css/CSSPrimitiveValue.cpp:
(WebCore::isValidCSSUnitTypeForDoubleConversion):
(WebCore::isStringType):
(WebCore::CSSPrimitiveValue::cleanup):
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText):
(WebCore::CSSPrimitiveValue::cloneForCSSOM):
(WebCore::CSSPrimitiveValue::equals):

Removed usages of the length repeat type, since repeat(*) is no longer being used anywhere.

* css/CSSPrimitiveValue.h:
* css/CSSPrimitiveValueMappings.h:
(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ScrollSnapStrictness):
(WebCore::CSSPrimitiveValue::operator ScrollSnapAxis):
(WebCore::CSSPrimitiveValue::operator ScrollSnapAxisAlignType):
(WebCore::CSSPrimitiveValue::operator ScrollSnapType): Deleted.

Added CSSPrimitiveValue mappings to ScrollSnapAxisAlignType, ScrollSnapStrictness, and ScrollSnapAxis. Removed
the old ScrollSnapType mapping.

* css/CSSProperties.json:

Replaced the old scroll snap CSS properties with the new ones. Note that scroll-snap-margin and scroll-padding
have 4 shorthands each, for the individual top/bottom/left/right values.

* css/CSSValueKeywords.in:

Added CSS keywords {x, y}, which are necessary to support the new scroll snapping properties.

* css/LengthRepeat.h: Removed.

Removed LengthRepeat entirely. This represented the `repeat(<length>)` CSS value, which was only used for the
scroll-snap-points-x and scroll-snap-points-y values.

* css/StyleBuilderConverter.h:
(WebCore::StyleBuilderConverter::convertScrollSnapType):
(WebCore::StyleBuilderConverter::convertScrollSnapAlign):
(WebCore::StyleBuilderConverter::parseSnapCoordinate): Deleted.
(WebCore::StyleBuilderConverter::convertScrollSnapPoints): Deleted.
(WebCore::StyleBuilderConverter::convertSnapCoordinatePair): Deleted.
(WebCore::StyleBuilderConverter::convertScrollSnapCoordinates): Deleted.

Added helper functions to convert scroll snap type and scroll snap alignment from parsed CSS values to their
primary representation in WebCore as ScrollSnapType and ScrollSnapAlign. These methods assume that the given
CSS values have successfully cleared the parsing step and are represented as CSSValueLists or length 1 or 2.

* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyInitialWebkitScrollSnapPointsX): Deleted.
(WebCore::StyleBuilderCustom::applyInheritWebkitScrollSnapPointsX): Deleted.
(WebCore::StyleBuilderCustom::applyInitialWebkitScrollSnapPointsY): Deleted.
(WebCore::StyleBuilderCustom::applyInheritWebkitScrollSnapPointsY): Deleted.
* css/StyleProperties.cpp:
(WebCore::StyleProperties::getPropertyValue):
(WebCore::StyleProperties::asText):

Adds support for the scroll-snap-margin and scroll-padding.

* css/parser/CSSParser.cpp:
(WebCore::isValidKeywordPropertyAndValue):
(WebCore::CSSParser::parseValue):
(WebCore::isScrollSnapAxisAlign):
(WebCore::isScrollSnapStrictness):
(WebCore::CSSParser::parseScrollSnapAlign):
(WebCore::CSSParser::parseScrollSnapType):
(WebCore::CSSParser::parseNonElementSnapPoints): Deleted.
(WebCore::CSSParser::parseScrollSnapPositions): Deleted.
(WebCore::CSSParser::parseScrollSnapDestination): Deleted.
(WebCore::CSSParser::parseScrollSnapCoordinate): Deleted.
* css/parser/CSSParser.h:

Removed references to LengthRepeat, and added support for parsing new scroll snapping properties. Scroll snap
margin and scroll padding, along with their shorthands, are parsed using the same helper functions as normal
margin and padding. For type and align, I added new helper functions that build up lists of 1 or 2
CSSPrimitiveValues for each of the properties.

Parsing scroll-snap-align is straightforward -- we either have one or two values in the set {none, start,
center, end}. For scroll-snap-type, we allow a single axis value {x, y, inline, block, both}, or a single
strictness value {none, proximity, mandatory}, or an axis value followed by a non-'none' strictness (i.e. either
proximity or mandatory).

* css/parser/CSSParserFastPaths.cpp:
(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):
(WebCore::CSSParserFastPaths::isKeywordPropertyID):
* css/parser/CSSParserValues.cpp:
(WebCore::CSSParserValue::createCSSValue):

Removed references to LengthRepeat.

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
(WebCore::CSSPropertyParser::parseShorthand):
(WebCore::consumeSnapPointCoordinateList): Deleted.
(WebCore::consumeScrollSnapCoordinate): Deleted.
(WebCore::consumeScrollSnapDestination): Deleted.
(WebCore::consumeScrollSnapPoints): Deleted.
(WebCore::consumeScrollSnapAlign):
(WebCore::consumeScrollSnapType):
(WebCore::CSSPropertyParser::parseSingleValue):

Added parsing for the longhand properties of scroll-snap-margin and scroll-padding, which use the existing
consumeLength and consumeLengthOrPercent helpers, respectively. Removed code for parsing scroll snap
coordinates, destinations and points. Added parsing logic for align and type.

* page/scrolling/AxisScrollSnapOffsets.cpp:
(WebCore::computeScrollSnapPortOrAreaRect):
(WebCore::computeScrollSnapAlignOffset):
(WebCore::snapOffsetsToString):
(WebCore::snapPortOrAreaToString):
(WebCore::updateSnapOffsetsForScrollableArea):
(WebCore::appendChildSnapOffsets): Deleted.
(WebCore::destinationOffsetForViewSize): Deleted.
(WebCore::updateFromStyle): Deleted.
(WebCore::styleUsesElements): Deleted.

Overhauled updateSnapOffsetsForScrollableArea to work with the new scroll snapping model. In the new way of
computing scroll snap offsets, we:

Compute the scroll container's scroll snap port, which is the padding box inset by the scroll padding
For each child with snap positions (i.e. scroll-snap-align is not none on both axes)
  Compute the child's scroll snap area, which is the bounding box of the transformed border box
    If the container snaps along the horizontal axis and the snap area contributes a horizontal snap offset:
      Emit the distance from the alignment offset in the horizontal of the snap port to the corresponding offset
      in the snap area as a snap position.
    If the container snaps along the vertical axis and the snap area contributes a vertical snap offset:
      Emit the distance from the alignment offset in the vertical of the snap port to the corresponding offset
      in the snap area as a snap position.
For the snap offsets in each axis, if there is at least one snap offset:
  Clamp the offsets to the min and max scroll offsets
  Ensure that the offsets are sorted and do not contain duplicated offsets

* platform/cocoa/ScrollController.mm:
(WebCore::ScrollController::updateScrollSnapState):

Clear out the ScrollController's snap offsets and state along an axis when its ScrollableArea no longer has snap
offsets in that axis.

* rendering/RenderBox.cpp:
(WebCore::RenderBox::styleWillChange):
(WebCore::RenderBox::willBeRemovedFromTree):
* rendering/RenderLayerModelObject.cpp:
(WebCore::scrollSnapContainerRequiresUpdateForStyleUpdate):
(WebCore::RenderLayerModelObject::styleDidChange):
* rendering/RenderView.cpp:
(WebCore::RenderView::registerBoxWithScrollSnapPositions):
(WebCore::RenderView::unregisterBoxWithScrollSnapPositions):
(WebCore::RenderView::registerBoxWithScrollSnapCoordinates): Deleted.
(WebCore::RenderView::unregisterBoxWithScrollSnapCoordinates): Deleted.
* rendering/RenderView.h:

Tweaked the scroll snap child registration logic. registerBoxWithScrollSnapCoordinates is renamed to
unregisterBoxWithScrollSnapPositions, since the notion of scroll snap coordinates no longer exists, and instead
of checking if the list of scroll snap coordinates is empty for the absence of scroll positions, we instead
check for a computed scroll snap align that is not none on both axes.

* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::initialScrollSnapType):
(WebCore::RenderStyle::initialScrollSnapAlign):
(WebCore::RenderStyle::scrollSnapArea):
(WebCore::RenderStyle::scrollSnapPort):
(WebCore::RenderStyle::scrollSnapType):
(WebCore::RenderStyle::scrollPadding):
(WebCore::RenderStyle::scrollPaddingTop):
(WebCore::RenderStyle::scrollPaddingBottom):
(WebCore::RenderStyle::scrollPaddingLeft):
(WebCore::RenderStyle::scrollPaddingRight):
(WebCore::RenderStyle::scrollSnapAlign):
(WebCore::RenderStyle::scrollSnapMargin):
(WebCore::RenderStyle::scrollSnapMarginTop):
(WebCore::RenderStyle::scrollSnapMarginBottom):
(WebCore::RenderStyle::scrollSnapMarginLeft):
(WebCore::RenderStyle::scrollSnapMarginRight):
(WebCore::RenderStyle::setScrollSnapType):
(WebCore::RenderStyle::setScrollPaddingTop):
(WebCore::RenderStyle::setScrollPaddingBottom):
(WebCore::RenderStyle::setScrollPaddingLeft):
(WebCore::RenderStyle::setScrollPaddingRight):
(WebCore::RenderStyle::setScrollSnapAlign):
(WebCore::RenderStyle::setScrollSnapMarginTop):
(WebCore::RenderStyle::setScrollSnapMarginBottom):
(WebCore::RenderStyle::setScrollSnapMarginLeft):
(WebCore::RenderStyle::setScrollSnapMarginRight):
(WebCore::RenderStyle::initialScrollSnapDestination): Deleted.
(WebCore::RenderStyle::initialScrollSnapCoordinates): Deleted.
(WebCore::RenderStyle::scrollSnapPointsX): Deleted.
(WebCore::RenderStyle::scrollSnapPointsY): Deleted.
(WebCore::RenderStyle::scrollSnapDestination): Deleted.
(WebCore::RenderStyle::scrollSnapCoordinates): Deleted.
(WebCore::RenderStyle::setScrollSnapPointsX): Deleted.
(WebCore::RenderStyle::setScrollSnapPointsY): Deleted.
(WebCore::RenderStyle::setScrollSnapDestination): Deleted.
(WebCore::RenderStyle::setScrollSnapCoordinates): Deleted.
* rendering/style/RenderStyle.h:
(WebCore::RenderStyle::initialScrollSnapMargin):
(WebCore::RenderStyle::initialScrollPadding):
(WebCore::RenderStyle::scrollSnapType): Deleted.
(WebCore::RenderStyle::setScrollSnapType): Deleted.
(WebCore::RenderStyle::initialScrollSnapType): Deleted.
(WebCore::RenderStyle::initialScrollSnapPointsX): Deleted.
(WebCore::RenderStyle::initialScrollSnapPointsY): Deleted.

Added boilerplate code for returning various new scroll snap style properties, and removed similar code for
handling the old scroll snap properties.

* rendering/style/RenderStyleConstants.h:

Added three new enum classes:
- ScrollSnapStrictness represents the strictness of scroll snapping along one or both axes
- ScrollSnapAxis designates the axes along which scroll snapping should occur
- ScrollSnapAxisAlignType indicates which offsets along the x or y axes of the snap port and snap area should be
  used to compute the snap position emitted by a snap area.

* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
* rendering/style/StyleRareNonInheritedData.h:

Replaces the StyleScrollSnapPoints object (which, confusingly, was in charge of storing both the scroll
container's and child elements' scroll snap styles) with StyleScrollSnapPort and StyleScrollSnapArea objects,
which keep track of the style properties on the scroll container and the child element, respectively.

* rendering/style/StyleScrollSnapPoints.h:
(WebCore::operator==):
(WebCore::StyleScrollSnapPort::copy):
(WebCore::StyleScrollSnapPort::StyleScrollSnapPort):
(WebCore::StyleScrollSnapArea::copy):
(WebCore::StyleScrollSnapArea::StyleScrollSnapArea):
* rendering/style/StyleScrollSnapping.h: Added.
(WebCore::operator!=):
(WebCore::StyleScrollSnapPort::create):
(WebCore::StyleScrollSnapArea::create):
(WebCore::StyleScrollSnapArea::hasSnapPosition):

Overhauled StyleScrollSnapPoints, breaking the logic here into two classes: StyleScrollSnapPort for the scroll
container, handling the properties `scroll-snap-type` and `scroll-padding` and StyleScrollSnapArea for child
elements, handling the properties `scroll-snap-align` and `scroll-snap-margin`. The ScrollSnapType itself is
composed of an axis value and a strictness, while a ScrollSnapAlign keeps track of the alignment modes in each
axis. By default, these are initialized to {Both, None} and {None, None}, respectively. The rest of the logic is
boilerplate code for comparing these style objects to one another and copying style representations.

* testing/Internals.cpp:
(WebCore::Internals::scrollSnapOffsets):

Perform a layout on the document if needed before returning the list of computed snap offsets. The absence of
this layout pass was causing some layout tests in css3/scroll-snap/ to flake when testing that programmatic
changes to the scroll snap style properties change the computed snap offsets.

Source/WebKit2:

Remove unused code for adopting scroll snapping in the PDF plugin.

* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::didCalculateSizes):

LayoutTests:

Refactors layout tests to use the new scroll snapping properties, removing any tests that only made sense in the
context of the old version of scroll snapping and adding new ones to cover behaviors that the existing tests do
not verify. See per-method descriptions for more details. In most cases, the old way of specifying scroll
snapping via repeat(<container width or length>) or a coordinate at (0, 0) on each child has been replaced with
`scroll-snap-type: (x|y|both) mandatory;` on the container and `scroll-snap-align: start` on each child element.
If a test below does not have an accompanying description, then this is the only change applied to it, and the
behavior it is testing is still relevant in the new scroll snapping model.

* css3/scroll-snap/improper-snap-points-crash-expected.txt: Removed.
* css3/scroll-snap/improper-snap-points-crash.html: Removed.

This test is no longer valid in the new scroll snapping model, since there is no way to specify both repeating
points along an axis and child elements with scroll snap coordinates.

* css3/scroll-snap/nested-elements-expected.txt:
* css3/scroll-snap/nested-elements.html:
* css3/scroll-snap/resources/iframe-content.html:
* css3/scroll-snap/scroll-snap-2d-change-axis-type-expected.txt: Added.
* css3/scroll-snap/scroll-snap-2d-change-axis-type.html: Added.

New layout test to check that changing the scroll-snap-type from one to both axes updates the computed snap
offsets in the container to have offsets from both axes.

* css3/scroll-snap/scroll-snap-2d-offsets-computed-independently-expected.txt: Added.
* css3/scroll-snap/scroll-snap-2d-offsets-computed-independently.html: Added.

New layout test to check that snap offsets are computed independently on each axis. In a 3x3 grid of child
elements with the child elements along the diagonal having `scroll-snap-align`s of `end`, `center` and `start`
in order from top left to bottom right, we should observe the same effect as having each child emit snap
positions in both axes.

* css3/scroll-snap/scroll-snap-children-with-scroll-snap-margin-expected.txt: Added.
* css3/scroll-snap/scroll-snap-children-with-scroll-snap-margin.html: Added.

New layout test to check that specifying a `scroll-snap-margin` correctly insets the scroll snap area of a child
element, and that changing the `scroll-snap-margin` via script also changes the computed scroll snap offsets.

* css3/scroll-snap/scroll-snap-children-with-transforms-expected.txt: Added.
* css3/scroll-snap/scroll-snap-children-with-transforms.html: Added.

New layout test to check that when computing the scroll snap areas of child elements, we take transforms into
account and use the bounding box of the transformed border box of the child element. Also verifies that we apply
the scroll offset _after_ the transform, so that scrolling the container and then recomputing snap offsets when
child elements are transformed does not result in different snap offsets.

* css3/scroll-snap/scroll-snap-coordinate-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-coordinate.html: Removed.

Renamed to scroll-snap-position.html, since the notion of scroll snap coordinates no longer exists.

* css3/scroll-snap/scroll-snap-desination-lock-up-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-desination-lock-up.html: Removed.

This test is no longer relevant in the new scroll snapping model. This is because the logic for computing scroll
snap offsets in AxisScrollSnapOffsets no longer has an opportunity to loop infinitely while trying to fill a
scrollable axis with snap offsets, since repeating snap points have been removed.

* css3/scroll-snap/scroll-snap-elements-container-larger-than-children.html:
* css3/scroll-snap/scroll-snap-inherit-expected.txt:
* css3/scroll-snap/scroll-snap-inherit.html:

Updated to test the new scroll snap properties.

* css3/scroll-snap/scroll-snap-initial-expected.txt:
* css3/scroll-snap/scroll-snap-initial.html:

Updated to test the new scroll snap properties.

* css3/scroll-snap/scroll-snap-mismatch.html:
* css3/scroll-snap/scroll-snap-negative-repeat-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-negative-repeat.html: Removed.

Removed, since negative repeating scroll snap offsets are (thankfully) no longer possible in the new scroll
snapping model.

* css3/scroll-snap/scroll-snap-offsets-expected.txt:
* css3/scroll-snap/scroll-snap-offsets.html:

Augmented to mix in various alignment values among the scroll snap child elements as well as various levels of
nesting.

* css3/scroll-snap/scroll-snap-position-values-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-position-values.html: Removed.

The behaviors tested here are covered by other similar tests: scroll-snap-initial and scroll-snap-inherit.

* css3/scroll-snap/scroll-snap-positions-expected.txt: Added.
* css3/scroll-snap/scroll-snap-positions-mainframe-expected.txt: Renamed from LayoutTests/css3/scroll-snap/scroll-snap-coordinate-mainframe-expected.txt.
* css3/scroll-snap/scroll-snap-positions-mainframe.html: Renamed from LayoutTests/css3/scroll-snap/scroll-snap-coordinate-mainframe.html.
* css3/scroll-snap/scroll-snap-positions-overflow-resize-expected.txt: Renamed from LayoutTests/css3/scroll-snap/scroll-snap-coordinate-overflow-resize-expected.txt.
* css3/scroll-snap/scroll-snap-positions-overflow-resize.html: Renamed from LayoutTests/css3/scroll-snap/scroll-snap-coordinate-overflow-resize.html.
* css3/scroll-snap/scroll-snap-positions.html: Added.

Renamed these existing tests to not use the term `scroll-snap-coordinate`. The semantics of these tests are
still the same, only using different values of `scroll-snap-align` instead of `-webkit-scroll-snap-coordinate`.

* css3/scroll-snap/scroll-snap-property-computed-style-expected.txt:
* css3/scroll-snap/scroll-snap-property-computed-style.js:
* css3/scroll-snap/scroll-snap-property-parsing-expected.txt:
* css3/scroll-snap/scroll-snap-property-parsing.js:
* css3/scroll-snap/scroll-snap-style-changed-align-expected.txt: Added.
* css3/scroll-snap/scroll-snap-style-changed-align.html: Renamed from LayoutTests/css3/scroll-snap/scroll-snap-style-changed-coordinates.html.
* css3/scroll-snap/scroll-snap-style-changed-coordinates-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-style-changed-repeat-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-style-changed-repeat.html: Removed.

No longer relevant, since repeating scroll snap offsets are no longer in the spec.

* css3/scroll-snap/scroll-snap-subpixel-repeat-expected.txt: Removed.
* css3/scroll-snap/scroll-snap-subpixel-repeat.html: Removed.

No longer relevant, since repeating scroll snap offsets are no longer in the spec.

* css3/scroll-snap/scroll-snap-with-scroll-padding-expected.txt: Added.
* css3/scroll-snap/scroll-snap-with-scroll-padding.html: Added.

New layout test to check that specifying scroll padding on a scroll container correctly outsets the scroll snap
port, and that changing scroll padding via script also changes the computed snap offsets.

* platform/mac-wk2/TestExpectations:

Removed tiled-drawing/scrolling/latched-div-with-scroll-snap.html from the list of failing tests.

* tiled-drawing/scrolling/latched-div-with-scroll-snap-expected.txt:
* tiled-drawing/scrolling/latched-div-with-scroll-snap.html:

This test was failing 100% of the time due to the momentum portion of the scrolling phase being invoked after
scroll snapping has ended. This has been rewritten to perform the following steps:
1. Scroll the top div with momentum and verify that the scroll 'glided' to the red box.
2. Scroll the top div without momentum and verify that the scroll snaps back to the red box.
3. Repeat (1) and (2), but for the bottom div. The same thing should occur.

* tiled-drawing/scrolling/scroll-snap/resources/horizontal-mainframe.html:
* tiled-drawing/scrolling/scroll-snap/resources/vertical-mainframe.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-destination-lock-up-expected.txt: Removed.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-destination-lock-up.html: Removed.
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-then-horizontal.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-stateless.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-scrolling-jumps-to-top.html:

All of the tests here were updated to use the new scroll-snap-* properties instead of the old versions. The
semantics of these tests have not changed.

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

3 years agoModernize for loops in JSC
annulen@yandex.ru [Tue, 20 Dec 2016 18:26:10 +0000 (18:26 +0000)]
Modernize for loops in JSC
https://bugs.webkit.org/show_bug.cgi?id=166060

Reviewed by Yusuke Suzuki.

* API/JSCallbackObject.h:
(JSC::JSCallbackObjectData::JSPrivatePropertyMap::visitChildren):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::propagateTransitions):
(JSC::CodeBlock::stronglyVisitStrongReferences):
(JSC::CodeBlock::stronglyVisitWeakReferences):
(JSC::CodeBlock::jettison):
(JSC::CodeBlock::getArrayProfile):
(JSC::CodeBlock::tallyFrequentExitSites):
(JSC::CodeBlock::nameForRegister):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
* bytecompiler/NodesCodegen.cpp:
(JSC::ObjectPatternNode::bindValue):
* debugger/Debugger.cpp:
(JSC::Debugger::applyBreakpoints):
* dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlock):
* dfg/DFGClobberSet.cpp:
(JSC::DFG::ClobberSet::setOf):
* dfg/DFGDesiredIdentifiers.cpp:
(JSC::DFG::DesiredIdentifiers::reallyAdd):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::visitChildren):
* dfg/DFGIntegerCheckCombiningPhase.cpp:
(JSC::DFG::IntegerCheckCombiningPhase::handleBlock):
* dfg/DFGIntegerRangeOptimizationPhase.cpp:
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::link):
* dfg/DFGLICMPhase.cpp:
(JSC::DFG::LICMPhase::run):
* dfg/DFGMaximalFlushInsertionPhase.cpp:
(JSC::DFG::MaximalFlushInsertionPhase::treatRootBlock):
* dfg/DFGPutStackSinkingPhase.cpp:
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::linkBranches):
* dfg/DFGStructureRegistrationPhase.cpp:
(JSC::DFG::StructureRegistrationPhase::run):
* dfg/DFGTypeCheckHoistingPhase.cpp:
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):
* dfg/DFGValidate.cpp:
* dfg/DFGVirtualRegisterAllocationPhase.cpp:
(JSC::DFG::VirtualRegisterAllocationPhase::run):
* heap/HeapVerifier.cpp:
(JSC::trimDeadObjectsFromList):
(JSC::HeapVerifier::trimDeadObjects):
* heap/LiveObjectList.cpp:
(JSC::LiveObjectList::findObject):
* heap/MarkedAllocator.cpp:
(JSC::MarkedAllocator::isPagedOut):
* inspector/ScriptCallStack.cpp:
(Inspector::ScriptCallStack::firstNonNativeCallFrame):
* jit/JIT.cpp:
(JSC::JIT::link):
* parser/VariableEnvironment.cpp:
(JSC::VariableEnvironment::markAllVariablesAsCaptured):
(JSC::VariableEnvironment::hasCapturedVariables):
* runtime/FunctionHasExecutedCache.cpp:
(JSC::FunctionHasExecutedCache::hasExecutedAtOffset):
(JSC::FunctionHasExecutedCache::getFunctionRanges):
* runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::visitChildren):
* runtime/TypeProfiler.cpp:
(JSC::TypeProfiler::findLocation):
* runtime/TypeSet.cpp:
(JSC::TypeSet::addTypeInformation):
(JSC::TypeSet::dumpTypes):
* runtime/VM.cpp:
(JSC::VM::gatherConservativeRoots):
* runtime/WeakMapData.cpp:
(JSC::WeakMapData::DeadKeyCleaner::visitWeakReferences):
(JSC::WeakMapData::DeadKeyCleaner::finalizeUnconditionally):
* tools/ProfileTreeNode.h:
(JSC::ProfileTreeNode::dumpInternal):
* yarr/YarrInterpreter.cpp:
(JSC::Yarr::ByteCompiler::emitDisjunction):

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

3 years agoFix memory leak in malformed test
commit-queue@webkit.org [Tue, 20 Dec 2016 17:25:26 +0000 (17:25 +0000)]
Fix memory leak in malformed test
https://bugs.webkit.org/show_bug.cgi?id=165917

Patch by Megan Gardner <megan_gardner@apple.com> on 2016-12-20
Reviewed by Alexey Proskuryakov.

Navigation caused 'onload' to be called twice, causing test harness to have extraneous
HID callback around after script controller was dismantled. Loading in body will eliminate
double load, and also prevent other race conditions where the body doesn't load fast enough.

* http/tests/quicklook/hide-referer-on-navigation.html:

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

3 years agoUse ENABLE() in place of ENABLE_CSS_SELECTORS_LEVEL4
dino@apple.com [Tue, 20 Dec 2016 12:27:51 +0000 (12:27 +0000)]
Use ENABLE() in place of ENABLE_CSS_SELECTORS_LEVEL4
https://bugs.webkit.org/show_bug.cgi?id=166043
<rdar://problems/29743655>

Reviewed by Alex Christensen.

This doesn't compile unless the ENABLE_CSS_SELECTORS_LEVEL4 is defined.

* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively):
* css/SelectorFilter.cpp:
(WebCore::SelectorFilter::collectIdentifierHashes):
* css/parser/CSSSelectorParser.cpp:
(WebCore::isOnlyPseudoClassFunction):
(WebCore::CSSSelectorParser::consumePseudo):
(WebCore::CSSSelectorParser::consumeCombinator):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::fragmentRelationForSelectorRelation):

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

3 years agoUnreviewed, attempt to fix Windows Debug build part 2
utatane.tea@gmail.com [Tue, 20 Dec 2016 11:42:20 +0000 (11:42 +0000)]
Unreviewed, attempt to fix Windows Debug build part 2
https://bugs.webkit.org/show_bug.cgi?id=166035

Ensured that this patch passes the build on the GTK port.

* rendering/RenderElement.cpp:
* rendering/RenderElement.h:

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

3 years ago__cpuid() requires <intrin.h> to be included
annulen@yandex.ru [Tue, 20 Dec 2016 11:24:31 +0000 (11:24 +0000)]
__cpuid() requires <intrin.h> to be included
https://bugs.webkit.org/show_bug.cgi?id=166051

Reviewed by Yusuke Suzuki.

* assembler/MacroAssemblerX86Common.h:

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

3 years agoUnreviewed, fix Windows Debug build
utatane.tea@gmail.com [Tue, 20 Dec 2016 10:50:24 +0000 (10:50 +0000)]
Unreviewed, fix Windows Debug build
https://bugs.webkit.org/show_bug.cgi?id=166035

The size of SameSizeAsRenderElement should be in sync with sizeof(RenderElement).

* rendering/RenderElement.cpp:

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

3 years agoWebRTC: RTCPeerConnection constructor argument should be optional
nael.ouedraogo@crf.canon.fr [Tue, 20 Dec 2016 10:24:39 +0000 (10:24 +0000)]
WebRTC: RTCPeerConnection constructor argument should be optional
https://bugs.webkit.org/show_bug.cgi?id=164057

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Update expectation of RTCPeerConnection constructor tests.

* web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt:

Source/WebCore:

Modify RTCPeerConnection JSBuiltin constructor to allow RTCPeerConfiguration
argument to be optional.

Update existing tests.

* Modules/mediastream/RTCPeerConnection.js:
(initializeRTCPeerConnection):

LayoutTests:

Remove tests since they are duplicated with WPT tests.

* fast/mediastream/RTCPeerConnection-expected.txt:
* fast/mediastream/RTCPeerConnection.html:

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

3 years ago[ES6] Enable ES6 Modules
utatane.tea@gmail.com [Tue, 20 Dec 2016 08:32:52 +0000 (08:32 +0000)]
[ES6] Enable ES6 Modules
https://bugs.webkit.org/show_bug.cgi?id=165849

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* features.json:

Source/WebCore:

* dom/ScriptElement.cpp:
(WebCore::ScriptElement::determineScriptType):
* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute):
* page/Settings.in:

Source/WebKit/mac:

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences es6ModulesEnabled]): Deleted.
(-[WebPreferences setES6ModulesEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Source/WebKit/win:

* Interfaces/IWebPreferencesPrivate.idl:
* WebPreferenceKeysPrivate.h:
* WebPreferences.cpp:
(WebPreferences::setES6ModulesEnabled): Deleted.
(WebPreferences::es6ModulesEnabled): Deleted.
* WebPreferences.h:
* WebView.cpp:
(WebView::notifyPreferencesChanged):

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetES6ModulesEnabled): Deleted.
(WKPreferencesGetES6ModulesEnabled): Deleted.
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

Tools:

* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebPreferencesToConsistentValues):
* DumpRenderTree/win/DumpRenderTree.cpp:
(resetWebPreferencesToConsistentValues):
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setES6ModulesEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

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

3 years agoVersioning.
bshafiei@apple.com [Tue, 20 Dec 2016 03:09:26 +0000 (03:09 +0000)]
Versioning.

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

3 years agoMarking http/tests/fetch/fetching-same-resource-with-diffferent-options.html as flaky...
ryanhaddad@apple.com [Tue, 20 Dec 2016 02:31:51 +0000 (02:31 +0000)]
Marking http/tests/fetch/fetching-same-resource-with-diffferent-options.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=166025

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 years agoRolling out r209974 and r209952. They break some websites in mysterious ways. Step...
mark.lam@apple.com [Tue, 20 Dec 2016 02:03:02 +0000 (02:03 +0000)]
Rolling out r209974 and r209952. They break some websites in mysterious ways. Step 2: Rollout r209952.
https://bugs.webkit.org/show_bug.cgi?id=166049

Not reviewed.

JSTests:

* stress/deeply-nested-finallys.js: Removed.
* stress/test-finally.js: Removed.

Source/JavaScriptCore:

* bytecode/HandlerInfo.h:
(JSC::HandlerInfoBase::typeName):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitReturn):
(JSC::BytecodeGenerator::pushFinallyControlFlowScope):
(JSC::BytecodeGenerator::pushIteratorCloseControlFlowScope):
(JSC::BytecodeGenerator::popFinallyControlFlowScope):
(JSC::BytecodeGenerator::popIteratorCloseControlFlowScope):
(JSC::BytecodeGenerator::emitComplexPopScopes):
(JSC::BytecodeGenerator::emitPopScopes):
(JSC::BytecodeGenerator::pushTry):
(JSC::BytecodeGenerator::popTryAndEmitCatch):
(JSC::BytecodeGenerator::labelScopeDepth):
(JSC::BytecodeGenerator::pushLocalControlFlowScope):
(JSC::BytecodeGenerator::popLocalControlFlowScope):
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::popTry): Deleted.
(JSC::BytecodeGenerator::emitCatch): Deleted.
(JSC::BytecodeGenerator::restoreScopeRegister): Deleted.
(JSC::BytecodeGenerator::labelScopeDepthToLexicalScopeIndex): Deleted.
(JSC::BytecodeGenerator::emitIsNumber): Deleted.
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded): Deleted.
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded): Deleted.
(JSC::BytecodeGenerator::emitFinallyCompletion): Deleted.
(JSC::BytecodeGenerator::allocateFinallyRegisters): Deleted.
(JSC::BytecodeGenerator::releaseFinallyRegisters): Deleted.
(JSC::BytecodeGenerator::emitCompareFinallyActionAndJumpIf): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::BytecodeGenerator::isInFinallyBlock):
(JSC::FinallyJump::FinallyJump): Deleted.
(JSC::FinallyContext::FinallyContext): Deleted.
(JSC::FinallyContext::outerContext): Deleted.
(JSC::FinallyContext::finallyLabel): Deleted.
(JSC::FinallyContext::depth): Deleted.
(JSC::FinallyContext::numberOfBreaksOrContinues): Deleted.
(JSC::FinallyContext::incNumberOfBreaksOrContinues): Deleted.
(JSC::FinallyContext::handlesReturns): Deleted.
(JSC::FinallyContext::setHandlesReturns): Deleted.
(JSC::FinallyContext::registerJump): Deleted.
(JSC::FinallyContext::numberOfJumps): Deleted.
(JSC::FinallyContext::jumps): Deleted.
(JSC::ControlFlowScope::ControlFlowScope): Deleted.
(JSC::ControlFlowScope::isLabelScope): Deleted.
(JSC::ControlFlowScope::isFinallyScope): Deleted.
(JSC::BytecodeGenerator::currentLexicalScopeIndex): Deleted.
(JSC::BytecodeGenerator::FinallyRegistersScope::FinallyRegistersScope): Deleted.
(JSC::BytecodeGenerator::FinallyRegistersScope::~FinallyRegistersScope): Deleted.
(JSC::BytecodeGenerator::finallyActionRegister): Deleted.
(JSC::BytecodeGenerator::finallyReturnValueRegister): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToNormalCompletion): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToJumpID): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyReturnValueRegister): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNormalCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotJump): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotThrowCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfCompletionTypeIsThrow): Deleted.
(JSC::BytecodeGenerator::bytecodeOffsetToJumpID): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::ContinueNode::emitBytecode):
(JSC::BreakNode::emitBytecode):
(JSC::ReturnNode::emitBytecode):
(JSC::TryNode::emitBytecode):

Source/WTF:

* wtf/SegmentedVector.h:
(WTF::SegmentedVector::last):
(WTF::SegmentedVector::first): Deleted.
(WTF::SegmentedVector::takeLast): Deleted.

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

3 years agoWeb Inspector: Address some assertions and uncaught exceptions seen using Inspector
commit-queue@webkit.org [Tue, 20 Dec 2016 02:01:21 +0000 (02:01 +0000)]
Web Inspector: Address some assertions and uncaught exceptions seen using Inspector
https://bugs.webkit.org/show_bug.cgi?id=166048

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-19
Reviewed by Matt Baker.

* UserInterface/Controllers/CodeMirrorEditingController.js:
(WebInspector.CodeMirrorEditingController.prototype.presentHoverMenu):
(WebInspector.CodeMirrorEditingController.prototype.dismissHoverMenu):
classList throws an exception when given an empty string. Avoid those cases.

* UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
(WebInspector.CodeMirrorTokenTrackingController.prototype._startTracking):
(WebInspector.CodeMirrorTokenTrackingController.prototype._stopTracking):
Seen this assert frequently for a while, existing code handles it gracefully.

* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
We correctly handle these tokens but they were not in the list of expected tokens.

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

3 years agoRolling out r209974 and r209952. They break some websites in mysterious ways. Step...
mark.lam@apple.com [Tue, 20 Dec 2016 01:48:52 +0000 (01:48 +0000)]
Rolling out r209974 and r209952. They break some websites in mysterious ways. Step 1: Rollout r209974.
https://bugs.webkit.org/show_bug.cgi?id=166049

Not reviewed.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitFinallyCompletion):
(JSC::BytecodeGenerator::allocateFinallyRegisters):
(JSC::BytecodeGenerator::releaseFinallyRegisters):
(JSC::BytecodeGenerator::emitCompareFinallyActionAndJumpIf):
(JSC::BytecodeGenerator::allocateCompletionRecordRegisters): Deleted.
(JSC::BytecodeGenerator::releaseCompletionRecordRegisters): Deleted.
(JSC::BytecodeGenerator::emitJumpIfCompletionType): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::FinallyJump::FinallyJump):
(JSC::FinallyContext::registerJump):
(JSC::BytecodeGenerator::FinallyRegistersScope::FinallyRegistersScope):
(JSC::BytecodeGenerator::FinallyRegistersScope::~FinallyRegistersScope):
(JSC::BytecodeGenerator::finallyActionRegister):
(JSC::BytecodeGenerator::finallyReturnValueRegister):
(JSC::BytecodeGenerator::emitSetFinallyActionToNormalCompletion):
(JSC::BytecodeGenerator::emitSetFinallyActionToReturnCompletion):
(JSC::BytecodeGenerator::emitSetFinallyActionToJumpID):
(JSC::BytecodeGenerator::emitSetFinallyReturnValueRegister):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNormalCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotJump):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsReturnCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotReturnCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotThrowCompletion):
(JSC::BytecodeGenerator::emitJumpIfCompletionTypeIsThrow):
(JSC::BytecodeGenerator::bytecodeOffsetToJumpID):
(JSC::bytecodeOffsetToJumpID): Deleted.
(JSC::BytecodeGenerator::CompletionRecordScope::CompletionRecordScope): Deleted.
(JSC::BytecodeGenerator::CompletionRecordScope::~CompletionRecordScope): Deleted.
(JSC::BytecodeGenerator::completionTypeRegister): Deleted.
(JSC::BytecodeGenerator::completionValueRegister): Deleted.
(JSC::BytecodeGenerator::emitSetCompletionType): Deleted.
(JSC::BytecodeGenerator::emitSetCompletionValue): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::TryNode::emitBytecode):

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

3 years agoRemove a few trivial custom bindings
weinig@apple.com [Tue, 20 Dec 2016 01:18:57 +0000 (01:18 +0000)]
Remove a few trivial custom bindings
https://bugs.webkit.org/show_bug.cgi?id=165999

Reviewed by Simon Fraser.

* CMakeLists.txt:
* bindings/js/JSBindingsAllInOne.cpp:
Remove files.

* WebCore.xcodeproj/project.pbxproj:
Move custom bindings that only exist for GC or wrapping reasons
to their own group, so we can focus on the ones with custom functions.

* bindings/js/JSDataTransferCustom.cpp: Removed.
* bindings/js/JSTrackEventCustom.cpp: Removed.

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::types):
Remove incorrect comment and use a more concise empty initialization syntax.

* dom/DataTransfer.idl:
Update IDL to remove [Custom] annotation and match spec better.

* html/track/TrackEvent.cpp:
(WebCore::convertToTrackEventTrack):
(WebCore::TrackEvent::TrackEvent):
* html/track/TrackEvent.h:
Switch to store the Track in a Variant to make the binding easier.

* html/track/TrackEvent.idl:
Remove [CustomGetter] annotation.

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

3 years agoFix unwanted deletion of record/replay files
krollin@apple.com [Tue, 20 Dec 2016 00:37:01 +0000 (00:37 +0000)]
Fix unwanted deletion of record/replay files
https://bugs.webkit.org/show_bug.cgi?id=166040

Reviewed by Alex Christensen.

As part of some refactoring, the objects that create the meta files
that are part of the record/replay cache would get deleted. They were
always getting opened in "write" mode", which would truncate the
files. Fix this so that the files are opened in the right modes for
record, replay, and neither.

* NetworkProcess/capture/NetworkCaptureManager.cpp:
(WebKit::NetworkCapture::Manager::initialize):

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

3 years agoRepurpose bots and clean up dashboard.
ryanhaddad@apple.com [Tue, 20 Dec 2016 00:23:29 +0000 (00:23 +0000)]
Repurpose bots and clean up dashboard.
https://bugs.webkit.org/show_bug.cgi?id=166045

Reviewed by Lucas Forschler.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
(BubbleQueueServer):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/Dashboard.js:
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
(WebKitBuildbot):
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Styles/Main.css:
(table.queue-grid tr.platform.mac-os-x-yosemite img.logo): Deleted.

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

3 years agoDo not position detached list item marker.
zalan@apple.com [Mon, 19 Dec 2016 23:41:45 +0000 (23:41 +0000)]
Do not position detached list item marker.
https://bugs.webkit.org/show_bug.cgi?id=166035
<rdar://problem/29175235>

Reviewed by Simon Fraser.

In certain (non-reproducible) cases, the list item marker can get detached from the tree
during layout and when in RenderListItem::positionListMarker() we dereference the marker's parent, we crash.
In addition to the null check, this patch adds an ASSERTION to catch such cases early on.

Unable to reproduce.

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::moveChildTo):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::removeChildInternal):
* rendering/RenderElement.h:
* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::layout):
(WebCore::RenderListItem::positionListMarker):
* rendering/RenderListItem.h:
* rendering/RenderListMarker.h:

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

3 years agoMarking http/tests/inspector/network/fetch-network-data.html as flaky on macOS.
ryanhaddad@apple.com [Mon, 19 Dec 2016 23:36:47 +0000 (23:36 +0000)]
Marking http/tests/inspector/network/fetch-network-data.html as flaky on macOS.
https://bugs.webkit.org/show_bug.cgi?id=166038

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

3 years agoWeb Inspector: Assertion seen in InspectorDebuggerAgent::refAsyncCallData with Inspec...
commit-queue@webkit.org [Mon, 19 Dec 2016 22:45:02 +0000 (22:45 +0000)]
Web Inspector: Assertion seen in InspectorDebuggerAgent::refAsyncCallData with Inspector open
https://bugs.webkit.org/show_bug.cgi?id=166034
<rdar://problem/29554366>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-19
Reviewed by Brian Burg.

* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::refAsyncCallData):
Remove assertion. This assert can happen if the currently executing callback
was just explicitly cancelled by script. Existing code already handles if
no async data was found for the given identifier.

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

3 years ago[CSS Parser] Enable CSS Deferred Parsing
barraclough@apple.com [Mon, 19 Dec 2016 22:06:25 +0000 (22:06 +0000)]
[CSS Parser] Enable CSS Deferred Parsing
https://bugs.webkit.org/show_bug.cgi?id=165869

Unreviewed rollout – looks like this regressed performance.

Source/WebCore:

* css/parser/CSSParserMode.h:
* page/Settings.in:

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:

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

3 years agoRebaseline fast/text/emoji.html for macOS.
ryanhaddad@apple.com [Mon, 19 Dec 2016 21:59:13 +0000 (21:59 +0000)]
Rebaseline fast/text/emoji.html for macOS.

Unreviewed test gardening.

* platform/mac-elcapitan/fast/text/emoji-expected.txt: Copied from LayoutTests/platform/mac/fast/text/emoji-expected.txt.
* platform/mac/fast/text/emoji-expected.txt:

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

3 years agoREGRESSION: Crash in com.apple.WebKit:IPC::Connection::platformCanSendOutgoingMessage...
andersca@apple.com [Mon, 19 Dec 2016 21:27:15 +0000 (21:27 +0000)]
REGRESSION: Crash in com.apple.WebKit:IPC::Connection::platformCanSendOutgoingMessages() const + 0
https://bugs.webkit.org/show_bug.cgi?id=165817
rdar://problem/29626731

Reviewed by Dan Bernstein.

If the receive right is invalidated before we send the message, the kernel won't be able to create a send right,
and we'll crash due to mach_msg returning MACH_SEND_INVALID_RIGHT.

Fix this by immediately creating a send right, and passing MACH_MSG_TYPE_MOVE_SEND to the attachment constructor.

* WebProcess/WebPage/WebInspector.cpp:
(WebKit::WebInspector::openFrontendConnection):

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

3 years agoUnreviewed, mark fixed-element-on-bottom-with-keyboard.html as skip for OpenSource...
wenson_hsieh@apple.com [Mon, 19 Dec 2016 20:33:57 +0000 (20:33 +0000)]
Unreviewed, mark fixed-element-on-bottom-with-keyboard.html as skip for OpenSource iOS WK2
https://bugs.webkit.org/show_bug.cgi?id=166027

This test should have been disabled on OpenSource bots due to the lack of touch handling.

* platform/ios-simulator-wk2/TestExpectations:

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

3 years agoAdd a few Worker loading tests that don't seem to be explicitly handled
commit-queue@webkit.org [Mon, 19 Dec 2016 20:28:47 +0000 (20:28 +0000)]
Add a few Worker loading tests that don't seem to be explicitly handled
https://bugs.webkit.org/show_bug.cgi?id=165870

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-19
Reviewed by Daniel Bates.

The tests already pass as expected, but adding specific tests
for specific expected behavior with Worker script loads.

* http/tests/security/contentSecurityPolicy/worker-redirect-allowed-expected.txt: Added.
* http/tests/security/contentSecurityPolicy/worker-redirect-allowed.html: Added.
* http/tests/security/resources/worker-message-pass.js: Added.
* http/tests/security/worker-cross-origin-expected.txt: Added.
* http/tests/security/worker-cross-origin.html: Added.
* http/tests/security/worker-same-origin-expected.txt: Added.
* http/tests/security/worker-same-origin.html: Added.

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

3 years ago[CMake] TestWebKitAPIBase links to itself
mcatanzaro@igalia.com [Mon, 19 Dec 2016 19:12:38 +0000 (19:12 +0000)]
[CMake] TestWebKitAPIBase links to itself
https://bugs.webkit.org/show_bug.cgi?id=165985

Reviewed by Alex Christensen.

Fix CMake warning about a target linking to itself, which makes no sense.

* TestWebKitAPI/CMakeLists.txt:

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

3 years agoSide effects while restting form elements
bfulgham@apple.com [Mon, 19 Dec 2016 19:05:36 +0000 (19:05 +0000)]
Side effects while restting form elements
https://bugs.webkit.org/show_bug.cgi?id=165959
<rdar://problem/29705967>

Reviewed by Anders Carlsson.

Source/WebCore:

JavaScript logic can run while resetting FormElement objects. This can
lead to unintended side-effets and other unwanted behavior. We should
protect these elements during the reset.

Test: fast/html/form-mutate.html

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::HTMLFormElement): Switch to C++11 initialization.
(WebCore::HTMLFormElement::reset): Protect elements until the reset
operation is finished.
(WebCore::HTMLFormElement::resetAssociatedFormControlElements): Added to share
code with 'resumeFromDocument'.
(WebCore::HTMLFormElement::resumeFromDocument): Protect elements until the
reset operation is finished.

LayoutTests:

* fast/html/form-mutate-expected.txt: Added.
* fast/html/form-mutate.html: Added.

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

3 years agoUnreviewed, rolling out r209983.
zandobersek@gmail.com [Mon, 19 Dec 2016 18:18:41 +0000 (18:18 +0000)]
Unreviewed, rolling out r209983.
https://bugs.webkit.org/show_bug.cgi?id=166024

There's intent to support persistent-usage-record (Requested
by zdobersek on #webkit).

Reverted changeset:

"[EME] Remove MediaKeySessionType::persistent-usage-record"
https://bugs.webkit.org/show_bug.cgi?id=166012
http://trac.webkit.org/changeset/209983

Patch by Commit Queue <commit-queue@webkit.org> on 2016-12-19

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

3 years agoMove custom files / callback objects into their respective groups.
weinig@apple.com [Mon, 19 Dec 2016 18:01:47 +0000 (18:01 +0000)]
Move custom files / callback objects into their respective groups.

Rubber-stamped by Simon Fraser.

* WebCore.xcodeproj/project.pbxproj:

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

3 years ago[WebIDL] Remove custom binding for the named Image constructor
weinig@apple.com [Mon, 19 Dec 2016 17:53:00 +0000 (17:53 +0000)]
[WebIDL] Remove custom binding for the named Image constructor
https://bugs.webkit.org/show_bug.cgi?id=166023

Reviewed by Alex Christensen.

* bindings/js/JSBindingsAllInOne.cpp:
* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
Remove JSImageConstructor.

* bindings/js/JSImageConstructor.cpp: Removed.
* bindings/js/JSImageConstructor.h: Removed.

* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::image): Deleted.
* page/DOMWindow.idl:
Remove custom getter for the constructor.

* html/HTMLImageElement.idl:
Add NamedConstructor annotation.

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

3 years agoRemove RenderObject::requiresForcedStyleRecalcPropagation
antti@apple.com [Mon, 19 Dec 2016 17:37:11 +0000 (17:37 +0000)]
Remove RenderObject::requiresForcedStyleRecalcPropagation
https://bugs.webkit.org/show_bug.cgi?id=166021

Reviewed by Andreas Kling.

It is not called. It also makes no sense architecturally.

* html/shadow/mac/ImageControlsButtonElementMac.cpp:
* html/shadow/mac/ImageControlsRootElementMac.cpp:
* rendering/RenderButton.h:
* rendering/RenderFileUploadControl.h:
* rendering/RenderListItem.h:
* rendering/RenderMedia.h:
* rendering/RenderMenuList.h:
* rendering/RenderMeter.h:
* rendering/RenderObject.h:
(WebCore::RenderObject::requiresForcedStyleRecalcPropagation): Deleted.
* rendering/RenderProgress.h:
* rendering/RenderSlider.h:
* rendering/RenderTextControl.h:
* style/RenderTreeUpdater.cpp:
(WebCore::RenderTreeUpdater::updateElementRenderer):

    This is the only call site. Combination

        update.change == Style::NoChange && parent().styleChange == Style::Force

    is impossible ('Force' inherits) so requiresForcedStyleRecalcPropagation doesn't ever even get called.

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

3 years ago[EME] Remove MediaKeySessionType::persistent-usage-record
zandobersek@gmail.com [Mon, 19 Dec 2016 16:14:33 +0000 (16:14 +0000)]
[EME] Remove MediaKeySessionType::persistent-usage-record
https://bugs.webkit.org/show_bug.cgi?id=166012

Reviewed by Xabier Rodriguez-Calvar.

Remove the "persistent-usage-record" value from the MediaKeySessionType.
This was removed from the spec as an at-risk feature.
https://github.com/w3c/encrypted-media/issues/353

No non-imported tests need to be updated. This is still present in the
tests imported from the W3C's web-platform-tests repository, but the
tests haven't yet been updated upstream.

* Modules/encryptedmedia/CDM.cpp:
(WebCore::CDM::isPersistentType):
* Modules/encryptedmedia/MediaKeySessionType.h:
* Modules/encryptedmedia/MediaKeySessionType.idl:

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

3 years ago[GTK] GLXBadFBConfig error when creating an OpenGL context
magomez@igalia.com [Mon, 19 Dec 2016 15:41:28 +0000 (15:41 +0000)]
[GTK] GLXBadFBConfig error when creating an OpenGL context
https://bugs.webkit.org/show_bug.cgi?id=165200

Reviewed by Carlos Garcia Campos.

glXCreateContextAttribsARB causes a GLXBadFBConfig X error when it's not able to provide the
OpenGL version >= 3.2 we are requesting. Due to this, the app crashes instead of falling back to
the legacy path.
The patch modifies GLX context creation using a XErrorTrapper, so the first time a context is created
we don't crash if OpenGL >= 3.2 is not available.
If the gotten context is not valid, we fall back to whatever version glXCreateContextAttribsARB is
able to provide.
The legacy glXCreateContext is only used if the GLX_ARB_create_context extension is not available.

Covered by existent tests.

* platform/graphics/glx/GLContextGLX.cpp:
(WebCore::tryCreateGLXARBContext):
(WebCore::GLContextGLX::createWindowContext):
(WebCore::GLContextGLX::createPbufferContext):

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

3 years ago[GTK] GtkDoc build should be quieter
mcatanzaro@igalia.com [Mon, 19 Dec 2016 13:02:54 +0000 (13:02 +0000)]
[GTK] GtkDoc build should be quieter
https://bugs.webkit.org/show_bug.cgi?id=165994

Reviewed by Carlos Garcia Campos.

Make it not print by default.

* gtk/generate-gtkdoc:
(get_generator_for_config):
(generate_doc):
* gtk/gtkdoc.py:
(GTKDoc._run_command):
(GTKDoc._copy_doc_files_to_output_dir):

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

3 years agoWebAssembly: Make running Wasm tests take less time by reducing some tests' iteration...
sbarati@apple.com [Mon, 19 Dec 2016 08:19:01 +0000 (08:19 +0000)]
WebAssembly: Make running Wasm tests take less time by reducing some tests' iteration count and by splitting some tests into different files
https://bugs.webkit.org/show_bug.cgi?id=166017

Reviewed by Yusuke Suzuki.

* wasm/function-tests/trap-load-2.js: Added.
(assert):
(wasmFrameCountFromError):
(continuation):
(i.catch):
* wasm/function-tests/trap-load.js:
(assert.continuation): Deleted.
* wasm/function-tests/trap-store-2.js: Added.
(import.Builder.from.string_appeared_here.assert):
(continuation):
(i.catch):
* wasm/function-tests/trap-store.js:
(assert.continuation): Deleted.
(assert): Deleted.
* wasm/js-api/test_memory.js:
(test):

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

3 years agoWebAssembly: Implement the WebAssembly.compile and WebAssembly.validate
sbarati@apple.com [Mon, 19 Dec 2016 07:22:42 +0000 (07:22 +0000)]
WebAssembly: Implement the WebAssembly.compile and WebAssembly.validate
https://bugs.webkit.org/show_bug.cgi?id=165936

Reviewed by Mark Lam.

JSTests:

* wasm/js-api/Module-compile.js: Added.
(async.testPromiseAPI):
* wasm/js-api/test_basic_api.js:
(const.c.in.constructorProperties.switch):
* wasm/js-api/validate.js: Added.
(assert.truthy.WebAssembly.validate.builder.WebAssembly):

Source/JavaScriptCore:

The APIs are documented here:
- https://github.com/WebAssembly/design/blob/master/JS.md#webassemblycompile
- https://github.com/WebAssembly/design/blob/master/JS.md#webassemblyvalidate

* wasm/JSWebAssembly.cpp:
(JSC::webAssemblyCompileFunc):
(JSC::webAssemblyValidateFunc):
(JSC::JSWebAssembly::finishCreation):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::parseAndValidateModule):
(JSC::Wasm::Plan::run):
* wasm/WasmPlan.h:
* wasm/js/JSWebAssemblyHelpers.h:
(JSC::getWasmBufferFromValue):
* wasm/js/WebAssemblyModuleConstructor.cpp:
(JSC::constructJSWebAssemblyModule):
(JSC::callJSWebAssemblyModule):
(JSC::WebAssemblyModuleConstructor::createModule):
* wasm/js/WebAssemblyModuleConstructor.h:

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

3 years agoIndexedDB 2.0: Prefetch cursor records in the server.
beidson@apple.com [Mon, 19 Dec 2016 01:40:37 +0000 (01:40 +0000)]
IndexedDB 2.0: Prefetch cursor records in the server.
https://bugs.webkit.org/show_bug.cgi?id=166014

Reviewed by Andy Estes.

No new tests (Covered by existing LayoutTests and PerformanceTests).

This patch implements the followng:
1 - After a backing store cursor completes a fetch in the server, it will schedule the next fetch
    even before the client requests one. It will do this up to a limited number of prefetches.
2 - Once a client request to advance the cursor comes in, we'll work our way through prefetched
    records instead of reading anything from disk, which might then cause us to continue prefetch.
3 - If any changes to the object store occur, it will throw away all previously fetched records
    (There's room for future improvement here)

* Modules/indexeddb/server/IDBBackingStore.h:

* Modules/indexeddb/server/IDBServer.cpp:
(WebCore::IDBServer::IDBServer::postDatabaseTask):

* Modules/indexeddb/server/MemoryIDBBackingStore.h:

* Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:
(WebCore::IDBServer::SQLiteIDBBackingStore::deleteRange):
(WebCore::IDBServer::SQLiteIDBBackingStore::prefetchCursor):
* Modules/indexeddb/server/SQLiteIDBBackingStore.h:

* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::prefetch):
(WebCore::IDBServer::SQLiteIDBCursor::advance):
* Modules/indexeddb/server/SQLiteIDBCursor.h:

* Modules/indexeddb/server/UniqueIDBDatabase.cpp:
(WebCore::IDBServer::UniqueIDBDatabase::performIterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performPrefetchCursor):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
* Modules/indexeddb/server/UniqueIDBDatabase.h:

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

3 years agoChanging text direction fires input events with null inputTypes and no data
wenson_hsieh@apple.com [Mon, 19 Dec 2016 01:14:10 +0000 (01:14 +0000)]
Changing text direction fires input events with null inputTypes and no data
https://bugs.webkit.org/show_bug.cgi?id=166007
<rdar://problem/29557205>

Reviewed by Sam Weinig.

Source/WebCore:

Adds support for the "formatSetInlineTextDirection" input type, triggered when using the context menu on Mac in
an editable area (for both plain and rich text cases) to change paragraph direction. To do this, we add cases
for EditActionSetWritingDirection in inputTypeNameForEditingAction and inputEventDataForEditingStyleAndAction.

When changing text direction for a plaintext editable element, we have logic in Editor::setBaseWritingDirection
that sets the focused element's dir attribute to the requested value (ltr or rtl). We add similar hooks here to
dispatch input events and handle preventing default.

Test: fast/events/before-input-events-prevent-text-direction.html

* editing/EditCommand.cpp:
(WebCore::inputTypeNameForEditingAction):

Handle the EditActionSetWritingDirection case.

* editing/Editor.cpp:
(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::Editor::applyParagraphStyle):

Include input event data when dispatching an input event here.

(WebCore::Editor::setBaseWritingDirection):
* testing/Internals.cpp:
(WebCore::Internals::setBaseWritingDirection):
* testing/Internals.h:
* testing/Internals.idl:

Introduce an internal testing support hook for setting base writing direction (the same codepath taken when
using the context menu to change paragraph direction). Currently, using testRunner.execCommand creates and
applies style with an additional `unicode-bidi` attribute, and appears to also be intentionally disabled for
plaintext editable elements.

LayoutTests:

Verifies that changing text direction causes beforeinput and input events with appropriate inputType and data to
be dispatched, and that preventing this beforeinput event causes no change in text direction.

* fast/events/before-input-events-prevent-text-direction-expected.txt: Added.
* fast/events/before-input-events-prevent-text-direction.html: Added.

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

3 years agoExpose a way for MiniBrowser to simulate header and footer banners
simon.fraser@apple.com [Sun, 18 Dec 2016 21:09:34 +0000 (21:09 +0000)]
Expose a way for MiniBrowser to simulate header and footer banners
https://bugs.webkit.org/show_bug.cgi?id=166005

Reviewed by Wenson Hsieh.

Source/WebKit2:

Expose testing SPI that allows a client to simulate the presence of header
and footer banners. These are simply plumbed through to set FrameView's
m_headerHeight and m_footerHeight.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _setHeaderBannerHeightForTesting:]):
(-[WKWebView _setFooterBannerHeightForTesting:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::setHeaderBannerHeightForTesting):
(WebKit::WebPageProxy::setFooterBannerHeightForTesting):
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setHeaderBannerHeightForTesting):
(WebKit::WebPage::setFooterBannerHeightForTesting):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

Add a MiniBrowser menu item and setting to toggle adding space for header and footer
banners. This only works in WebKit2.

We need to reset these on each navigation, since newly created FrameViews
don't re-fetch the header and footer height stored on Page.

Also fix the signature of webView:didFinishNavigation: to follow API changes,
as well as fixing webViewWebContentProcessDidTerminate:

* MiniBrowser/mac/SettingsController.h:
* MiniBrowser/mac/SettingsController.m:
(-[SettingsController _populateMenu]):
(-[SettingsController validateMenuItem:]):
(-[SettingsController toggleReserveSpaceForBanners:]):
(-[SettingsController isSpaceReservedForBanners]):
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController didChangeSettings]):
(-[WK2BrowserWindowController webView:didFinishNavigation:]):
(-[WK2BrowserWindowController webViewWebContentProcessDidTerminate:]):
(-[WK2BrowserWindowController webView:didFinishLoadingNavigation:]): Deleted.
(-[WK2BrowserWindowController _webViewWebProcessDidCrash:]): Deleted.

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

3 years agoRename finallyActionRegister to completionTypeRegister and only store int JSValues...
mark.lam@apple.com [Sun, 18 Dec 2016 19:04:20 +0000 (19:04 +0000)]
Rename finallyActionRegister to completionTypeRegister and only store int JSValues in it.
https://bugs.webkit.org/show_bug.cgi?id=165979

Reviewed by Saam Barati.

This patch makes it so that we only store int JSValues in the finallyActionRegister
thereby making type prediction on this register more successful for JITs.  In so
doing, we are able to get some additional benefits:

1. Renamed the following:
   FinallyRegistersScope => CompletionRecordScope
   finallyActionRegister => completionTypeRegister
   finallyReturnValueRegister => completionValueRegister

   These new names are more in line with the ES spec, which describes these
   values as the completion record and its type and value properties.
   https://tc39.github.io/ecma262/#sec-completion-record-specification-type

2. We now think of the Break and Continue jumpIDs as encodings of CompletionType
   (in our implementation of completion type).  As a result, we only need one of
   each of the emitter methods for getting, setting, and compare-and-jump on the
   completion type.  The code using these methods also reads much clearer now.

3. Finally blocks' op_catch should now always pop the caught Exception object into
   the completionValueRegister instead of the completionTypeRegister (formerly
   finallyActionRegister).

Also removed the restoreScopeRegister() call in the IteratorClose catch block
because that is an implementation specific synthesized catch block, and we
can guarantee that it never needs to resolve any symbols from the scope.  Hence,
there is no need to restore the scope register.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitFinallyCompletion):
(JSC::BytecodeGenerator::allocateCompletionRecordRegisters):
(JSC::BytecodeGenerator::releaseCompletionRecordRegisters):
(JSC::BytecodeGenerator::emitJumpIfCompletionType):
(JSC::BytecodeGenerator::allocateFinallyRegisters): Deleted.
(JSC::BytecodeGenerator::releaseFinallyRegisters): Deleted.
(JSC::BytecodeGenerator::emitCompareFinallyActionAndJumpIf): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::bytecodeOffsetToJumpID):
(JSC::FinallyJump::FinallyJump):
(JSC::FinallyContext::registerJump):
(JSC::BytecodeGenerator::CompletionRecordScope::CompletionRecordScope):
(JSC::BytecodeGenerator::CompletionRecordScope::~CompletionRecordScope):
(JSC::BytecodeGenerator::completionTypeRegister):
(JSC::BytecodeGenerator::completionValueRegister):
(JSC::BytecodeGenerator::emitSetCompletionType):
(JSC::BytecodeGenerator::emitSetCompletionValue):
(JSC::BytecodeGenerator::FinallyRegistersScope::FinallyRegistersScope): Deleted.
(JSC::BytecodeGenerator::FinallyRegistersScope::~FinallyRegistersScope): Deleted.
(JSC::BytecodeGenerator::finallyActionRegister): Deleted.
(JSC::BytecodeGenerator::finallyReturnValueRegister): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToNormalCompletion): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyActionToJumpID): Deleted.
(JSC::BytecodeGenerator::emitSetFinallyReturnValueRegister): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNormalCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotJump): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotReturnCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotThrowCompletion): Deleted.
(JSC::BytecodeGenerator::emitJumpIfCompletionTypeIsThrow): Deleted.
(JSC::BytecodeGenerator::bytecodeOffsetToJumpID): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::TryNode::emitBytecode):

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

3 years agoRebaseline these tests after r209967, since they are now affected by status bar height.
simon.fraser@apple.com [Sun, 18 Dec 2016 17:26:26 +0000 (17:26 +0000)]
Rebaseline these tests after r209967, since they are now affected by status bar height.

* fast/viewport/ios/ipad/width-is-device-width-expected.txt:
* fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-expected.txt:
* fast/viewport/ios/width-is-device-width-overflowing-body-overflow-hidden-tall-expected.txt:
* fast/viewport/ios/width-is-device-width-overflowing-expected.txt:
* fast/viewport/ios/width-is-device-width-overflowing-no-shrink-to-fit-expected.txt:

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

3 years agoFix iOS test results after r209967.
simon.fraser@apple.com [Sun, 18 Dec 2016 08:11:48 +0000 (08:11 +0000)]
Fix iOS test results after r209967.

Subtracting out the status bar height was erroneously happening for all tests,
not just for flexible viewport tests.

Fix by plumbing WebViewSizingMode through resizeTo() and setWindowFrame().

* WebKitTestRunner/PlatformWebView.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::resetStateToConsistentValues):
* WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
(WTR::PlatformWebView::resizeTo):
(WTR::PlatformWebView::setWindowFrame):
* WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
(WTR::PlatformWebView::resizeTo):
(WTR::PlatformWebView::setWindowFrame):
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::PlatformWebView::resizeTo):
(WTR::PlatformWebView::setWindowFrame):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformConfigureViewForTest):
* WebKitTestRunner/mac/PlatformWebViewMac.mm:
(WTR::PlatformWebView::resizeTo):
(WTR::PlatformWebView::setWindowFrame):

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

3 years agoBuild fix: linking WebCore was failing: you can't export inline functions.
simon.fraser@apple.com [Sun, 18 Dec 2016 08:11:45 +0000 (08:11 +0000)]
Build fix: linking WebCore was failing: you can't export inline functions.

* css/DeprecatedCSSOMPrimitiveValue.cpp:
(WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType):
(WebCore::DeprecatedCSSOMPrimitiveValue::setFloatValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getFloatValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::setStringValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getStringValue):
* css/DeprecatedCSSOMPrimitiveValue.h:
(WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType): Deleted.
(WebCore::DeprecatedCSSOMPrimitiveValue::setFloatValue): Deleted.
(WebCore::DeprecatedCSSOMPrimitiveValue::getFloatValue): Deleted.
(WebCore::DeprecatedCSSOMPrimitiveValue::setStringValue): Deleted.
(WebCore::DeprecatedCSSOMPrimitiveValue::getStringValue): Deleted.

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

3 years ago[EFL] bump EFL version to 1.18.4
jh718.park@samsung.com [Sun, 18 Dec 2016 06:07:17 +0000 (06:07 +0000)]
[EFL] bump EFL version to 1.18.4
https://bugs.webkit.org/show_bug.cgi?id=166004

Reviewed by Gyuyoung Kim.

.:

* Source/cmake/OptionsEfl.cmake: Use efl-1.18.4 instead of 1.18.1.

Tools:

* efl/jhbuild.modules: Use efl-1.18.4 instead of 1.18.1.

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

3 years ago[CSS Values] Make separate wrapper classes for the deprecated CSS Values OM
hyatt@apple.com [Sat, 17 Dec 2016 20:08:34 +0000 (20:08 +0000)]
[CSS Values] Make separate wrapper classes for the deprecated CSS Values OM
https://bugs.webkit.org/show_bug.cgi?id=165968

Reviewed by Andreas Kling.

Source/WebCore:

This patch changes the CSS OM for values to use distinct wrapper
classes instead of cloning the existing classes. By actually wrapping
values instead of cloning, we are freed up to change our CSS value hierarchy
however we'd like (such as changing to match the new CSS Values OM that
is coming soon).

All of the CSS Values wrapper classes are prefixed with "DeprecatedCSSOM"
to reflect our desire (ultimately) to remove this API from our tree. We're
the only ones that support it, and it's not used on the Web, but it is part
of the WebKitLegacy API and might be used internally.

* CMakeLists.txt:
* DerivedSources.cpp:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/DOMWrapperWorld.h:
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
* bindings/js/JSCSSValueCustom.cpp:
(WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots):
(WebCore::JSDeprecatedCSSOMValueOwner::finalize):
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
(WebCore::JSCSSValueOwner::isReachableFromOpaqueRoots): Deleted.
(WebCore::JSCSSValueOwner::finalize): Deleted.
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
* css/CSSComputedStyleDeclaration.h:
* css/CSSGridLineNamesValue.cpp:
(WebCore::CSSGridLineNamesValue::cloneForCSSOM): Deleted.
* css/CSSGridLineNamesValue.h:
* css/CSSImageSetValue.cpp:
(WebCore::CSSImageSetValue::cloneForCSSOM): Deleted.
* css/CSSImageSetValue.h:
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::createDeprecatedCSSOMWrapper):
(WebCore::CSSImageValue::cloneForCSSOM): Deleted.
* css/CSSImageValue.h:
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::createDeprecatedCSSOMPrimitiveWrapper):
(WebCore::CSSPrimitiveValue::cloneForCSSOM): Deleted.
* css/CSSPrimitiveValue.h:
* css/CSSPrimitiveValue.idl: Removed.
* css/CSSStyleDeclaration.h:
* css/CSSStyleDeclaration.idl:
* css/CSSValue.cpp:
(WebCore::CSSValue::traverseSubresources):
(WebCore::CSSValue::equals):
(WebCore::CSSValue::cssText):
(WebCore::CSSValue::destroy):
(WebCore::CSSValue::createDeprecatedCSSOMWrapper):
(): Deleted.
(WebCore::CSSValue::cloneForCSSOM): Deleted.
* css/CSSValue.h:
(WebCore::CSSValue::CSSValue):
(WebCore::CSSValue::setCssText): Deleted.
(WebCore::CSSValue::isCSSOMSafe): Deleted.
(WebCore::CSSValue::isSubtypeExposedToCSSOM): Deleted.
* css/CSSValue.idl: Removed.
* css/CSSValueList.cpp:
(WebCore::CSSValueList::cloneForCSSOM): Deleted.
* css/CSSValueList.h:
(WebCore::CSSValueList::separator):
* css/CSSValueList.idl: Removed.
* css/Counter.h:
* css/Counter.idl: Removed.
* css/DeprecatedCSSOMCounter.h: Added.
* css/DeprecatedCSSOMCounter.idl: Copied from Source/WebCore/css/Counter.idl.
* css/DeprecatedCSSOMPrimitiveValue.cpp: Added.
(WebCore::DeprecatedCSSOMPrimitiveValue::getCounterValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getRectValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getRGBColorValue):
* css/DeprecatedCSSOMPrimitiveValue.h: Added.
(WebCore::DeprecatedCSSOMPrimitiveValue::create):
(WebCore::DeprecatedCSSOMPrimitiveValue::equals):
(WebCore::DeprecatedCSSOMPrimitiveValue::cssValueType):
(WebCore::DeprecatedCSSOMPrimitiveValue::cssText):
(WebCore::DeprecatedCSSOMPrimitiveValue::primitiveType):
(WebCore::DeprecatedCSSOMPrimitiveValue::setFloatValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getFloatValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::setStringValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::getStringValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::stringValue):
(WebCore::DeprecatedCSSOMPrimitiveValue::DeprecatedCSSOMPrimitiveValue):
* css/DeprecatedCSSOMPrimitiveValue.idl: Copied from Source/WebCore/css/CSSPrimitiveValue.idl.
* css/DeprecatedCSSOMRGBColor.h: Added.
* css/DeprecatedCSSOMRGBColor.idl: Copied from Source/WebCore/css/RGBColor.idl.
* css/DeprecatedCSSOMRect.h: Added.
* css/DeprecatedCSSOMRect.idl: Copied from Source/WebCore/css/Rect.idl.
* css/DeprecatedCSSOMValue.cpp: Added.
(WebCore::compareCSSOMValues):
(WebCore::DeprecatedCSSOMValue::equals):
(WebCore::DeprecatedCSSOMValue::destroy):
(WebCore::DeprecatedCSSOMValue::cssValueType):
(WebCore::DeprecatedCSSOMValue::cssText):
* css/DeprecatedCSSOMValue.h: Added.
(WebCore::DeprecatedCSSOMValue::deref):
(WebCore::DeprecatedCSSOMValue::setCssText):
(WebCore::DeprecatedCSSOMValue::operator==):
(WebCore::DeprecatedCSSOMValue::isComplexValue):
(WebCore::DeprecatedCSSOMValue::isPrimitiveValue):
(WebCore::DeprecatedCSSOMValue::isValueList):
(WebCore::DeprecatedCSSOMValue::classType):
(WebCore::DeprecatedCSSOMValue::DeprecatedCSSOMValue):
(WebCore::DeprecatedCSSOMValue::~DeprecatedCSSOMValue):
(WebCore::DeprecatedCSSOMComplexValue::create):
(WebCore::DeprecatedCSSOMComplexValue::equals):
(WebCore::DeprecatedCSSOMComplexValue::cssText):
(WebCore::DeprecatedCSSOMComplexValue::cssValueType):
(WebCore::DeprecatedCSSOMComplexValue::DeprecatedCSSOMComplexValue):
* css/DeprecatedCSSOMValue.idl: Copied from Source/WebCore/css/CSSValue.idl.
* css/DeprecatedCSSOMValueList.cpp: Added.
(WebCore::DeprecatedCSSOMValueList::equals):
(WebCore::DeprecatedCSSOMValueList::cssText):
* css/DeprecatedCSSOMValueList.h: Added.
(WebCore::DeprecatedCSSOMValueList::create):
(WebCore::DeprecatedCSSOMValueList::cssValueType):
(WebCore::DeprecatedCSSOMValueList::length):
(WebCore::DeprecatedCSSOMValueList::item):
(WebCore::DeprecatedCSSOMValueList::DeprecatedCSSOMValueList):
* css/DeprecatedCSSOMValueList.idl: Copied from Source/WebCore/css/CSSValueList.idl.
* css/LengthRepeat.h:
* css/PropertySetCSSStyleDeclaration.cpp:
(WebCore::PropertySetCSSStyleDeclaration::getPropertyCSSValue):
(WebCore::PropertySetCSSStyleDeclaration::wrapForDeprecatedCSSOM):
(WebCore::StyleRuleCSSStyleDeclaration::didMutate):
(WebCore::InlineCSSStyleDeclaration::didMutate):
(WebCore::PropertySetCSSStyleDeclaration::cloneAndCacheForCSSOM): Deleted.
* css/PropertySetCSSStyleDeclaration.h:
* css/RGBColor.cpp:
(WebCore::RGBColor::red): Deleted.
(WebCore::RGBColor::green): Deleted.
(WebCore::RGBColor::blue): Deleted.
(WebCore::RGBColor::alpha): Deleted.
* css/RGBColor.h:
* css/RGBColor.idl: Removed.
* css/Rect.h:
(WebCore::RectBase::RectBase):
* css/Rect.idl: Removed.
* svg/SVGElement.cpp:
(WebCore::SVGElement::getPresentationAttribute):
* svg/SVGElement.h:
* svg/SVGElement.idl:

Source/WebKit/mac:

* DOM/DOMCSS.mm:
(kitClass):
* DOM/DOMCSSPrimitiveValue.mm:
(-[DOMCSSPrimitiveValue getCounterValue]):
(-[DOMCSSPrimitiveValue getRectValue]):
(kit):
* DOM/DOMCSSPrimitiveValueInternal.h:
* DOM/DOMCSSStyleDeclaration.mm:
* DOM/DOMCSSValue.mm:
(kit):
* DOM/DOMCSSValueInternal.h:
* DOM/DOMCSSValueList.mm:
* DOM/DOMCounter.mm:
(kit):
* DOM/DOMCounterInternal.h:
* DOM/DOMRGBColor.mm:
(kit):
* DOM/DOMRGBColorInternal.h:
* DOM/DOMRect.mm:
(kit):
* DOM/DOMRectInternal.h:
* DOM/DOMUtility.mm:
(createDOMWrapper):

Source/WebKit2:

* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValue.cpp:
(WebKit::kit):
(WebKit::core):
(WebKit::wrapCSSValue):
(webkit_dom_css_value_constructor):
(webkit_dom_css_value_get_css_text):
(webkit_dom_css_value_set_css_text):
(webkit_dom_css_value_get_css_value_type):
* WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCSSValuePrivate.h:

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

3 years agoUnreviewed, rollout r209860 OWR player shouldn't be selected for
philn@webkit.org [Sat, 17 Dec 2016 19:32:45 +0000 (19:32 +0000)]
Unreviewed, rollout r209860 OWR player shouldn't be selected for
normal video playback

Source/WebCore:

* platform/GStreamer.cmake:
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:
(WebCore::MediaPlayerPrivateGStreamerOwr::~MediaPlayerPrivateGStreamerOwr):
(WebCore::MediaPlayerPrivateGStreamerOwr::play):
(WebCore::MediaPlayerPrivateGStreamerOwr::pause):
(WebCore::MediaPlayerPrivateGStreamerOwr::load):
(WebCore::MediaPlayerPrivateGStreamerOwr::stop):
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnded):
(WebCore::MediaPlayerPrivateGStreamerOwr::trackEnabledChanged):
(WebCore::MediaPlayerPrivateGStreamerOwr::setSize):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h:
* platform/mediastream/openwebrtc/MediaEndpointOwr.cpp:
(WebCore::MediaEndpointOwr::createMutedRemoteSource):
* platform/mediastream/openwebrtc/RealtimeAudioSourceOwr.h: Removed.
* platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:
(WebCore::RealtimeMediaSourceCenterOwr::mediaSourcesAvailable):
* platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.cpp: Removed.
* platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h:
* platform/mediastream/openwebrtc/RealtimeVideoSourceOwr.h: Removed.

LayoutTests:

* platform/gtk/TestExpectations:

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

3 years agoVisual viewports: bottom fixed elements disappear behind the keyboard
wenson_hsieh@apple.com [Sat, 17 Dec 2016 19:18:12 +0000 (19:18 +0000)]
Visual viewports: bottom fixed elements disappear behind the keyboard
https://bugs.webkit.org/show_bug.cgi?id=165983
<rdar://problem/29409852>

Reviewed by Simon Fraser.

Source/WebKit2:

Accounts for input view bounds in WebPageProxy::computeCustomFixedPositionRect. To do this, we introduce and
pass unobscuredContentRectRespectingInputViewBounds along with the regular unobscuredContentRect (which does not
respect the obscuring keyboard rect). This unobscuredContentRectRespectingInputViewBounds is then used when
computing the origin of the updated layout viewport rect (and also, when we are _not_ below minimum scale),

Additionally, the size is computed using the (unconstrained) unobscured rect. This is because we previously
would use the document-constrained version of the unobscured rect, which caused the layout viewport to shrink
when approaching the max scroll extents of the document while the keyboard is up, since the unobscured rect
would spill out of the document rect. However, using this unconstrained rect's size also means that if the user
rubber-bands out of the document rect, we would end up pushing the layout viewport rect out of the document,
with no way of adjusting it back in without the user scrolling to push the layout viewport into back document
bounds. To address this, we move the layout rect to be within document bounds after computing its size and
location.

Added a new layout test: fast/visual-viewport/ios/fixed-element-on-bottom-with-keyboard.html, and also tweaked
fixed-caret-position-after-scroll.html to cover these changes.

* Shared/VisibleContentRectUpdateInfo.cpp:
(WebKit::operator<<):
* Shared/VisibleContentRectUpdateInfo.h:
(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::unobscuredContentRectRespectingInputViewBounds):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _updateContentRectsWithState:]):
(-[WKWebView _inputViewBounds]):

Returns the current bounds of the input view. For testing purposes.

* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::unobscuredContentRectRespectingInputViewBounds):
* UIProcess/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxy::customFixedPositionRect):
* UIProcess/ios/WKContentView.h:
* UIProcess/ios/WKContentView.mm:
(-[WKContentView _computeUnobscuredContentRectRespectingInputViewBounds:unobscuredContentRect:inputViewBounds:scale:]):

Helper to compute the unobscured rect, accounting for the bounds of the current input view.

(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:inputViewBounds:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]):
(-[WKContentView _didCommitLayerTree:]):
(-[WKContentView didUpdateVisibleRect:unobscuredRect:unobscuredRectInScrollViewCoordinates:obscuredInset:scale:minimumScale:inStableState:isChangingObscuredInsetsInteractively:enclosedInScrollableAncestorView:]): Deleted.
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::computeCustomFixedPositionRect):
* UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:
(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

Tools:

Add support for UIScriptController.inputViewBounds, which UI-side scripts may use to fetch the bounding rect of
the keyboard when it is up.

* DumpRenderTree/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::inputViewBounds):
* TestRunnerShared/UIScriptContext/Bindings/UIScriptController.idl:
* TestRunnerShared/UIScriptContext/UIScriptController.cpp:
(WTR::UIScriptController::inputViewBounds):
* TestRunnerShared/UIScriptContext/UIScriptController.h:
* WebKitTestRunner/ios/PlatformWebViewIOS.mm:
(WTR::viewRectForWindowRect):

Previously, we accounted for the status bar height by translating the entire web view down by the height of the
status bar. However, we did not shrink the height of the web view itself, which means that for tests which
involve scrolling past the end of the document, the bottom strip of the web view is out of bounds of the window.

(WTR::PlatformWebView::PlatformWebView):
(WTR::PlatformWebView::setWindowFrame):
* WebKitTestRunner/ios/UIScriptControllerIOS.mm:
(WTR::UIScriptController::inputViewBounds):

LayoutTests:

Tweaked fixed-caret-position-after-scroll.html to account for the keyboard height, and also added a new layout
test, fixed-element-on-bottom-with-keyboard.html, which checks that the layout viewport does not change before
and after showing the keyboard, and that scrolling past the end of the document does not bump the layout
viewport past document bounds.

The rest of the changes here involve rebaselining existing tests to account for the height of the web view no
longer being equal to the height of the window.

* editing/caret/ios/absolute-caret-position-after-scroll-expected.txt:
* editing/caret/ios/absolute-caret-position-after-scroll.html:
* editing/caret/ios/fixed-caret-position-after-scroll-expected.txt:
* editing/caret/ios/fixed-caret-position-after-scroll.html:
* editing/selection/ios/absolute-selection-after-scroll.html:
* editing/selection/ios/fixed-selection-after-scroll.html:
* fast/events/ios/keyboard-scrolling-distance-expected.txt:
* fast/events/ios/keyboard-should-not-trigger-resize-expected.txt:
* fast/events/ios/viewport-zooms-from-element-to-initial-scale-expected.txt:
* fast/forms/ios/accessory-bar-navigation-expected.txt:
* fast/forms/ios/focus-input-in-fixed-expected.txt:
* fast/forms/ios/focus-input-in-iframe-expected.txt:
* fast/forms/ios/focus-input-via-button-expected.txt:
* fast/forms/ios/focus-input-via-button-no-scaling-expected.txt:
* fast/forms/ios/focus-long-textarea-expected.txt:
* fast/forms/ios/zoom-after-input-tap-expected.txt:
* fast/forms/ios/zoom-after-input-tap-wide-input-expected.txt:
* fast/scrolling/ios/subpixel-overflow-scrolling-with-ancestor-expected.txt:
* fast/viewport/ios/width-is-device-width-expected.txt:
* fast/visual-viewport/ios/fixed-element-on-bottom-with-keyboard-expected.txt: Added.
* fast/visual-viewport/ios/fixed-element-on-bottom-with-keyboard.html: Added.
* fast/visual-viewport/ios/zoomed-focus-in-fixed-expected.txt:
* platform/ios-simulator/fast/scrolling/ios/clipping-ancestor-with-accelerated-scrolling-ancestor-expected.txt:
* platform/ios-simulator/fast/scrolling/ios/overflow-scrolling-ancestor-clip-expected.txt:
* platform/ios-simulator/fast/scrolling/ios/overflow-scrolling-ancestor-clip-size-expected.txt:
* platform/ios-simulator/fast/scrolling/ios/scrolling-content-clip-to-viewport-expected.txt:
* platform/ios-simulator/fast/scrolling/ios/touch-stacking-expected.txt:
* scrollingcoordinator/ios/non-stable-viewport-scroll-expected.txt:
* scrollingcoordinator/ios/ui-scrolling-tree-expected.txt:

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

3 years agoWebAssembly: WasmB3IRGenerator uses WarmAny as a ValueRep but expects the incoming...
sbarati@apple.com [Sat, 17 Dec 2016 18:44:17 +0000 (18:44 +0000)]
WebAssembly: WasmB3IRGenerator uses WarmAny as a ValueRep but expects the incoming value to be a register
https://bugs.webkit.org/show_bug.cgi?id=165989

Reviewed by Mark Lam.

The input should be constrained to a register to match what
the patchpoint code expects.

* wasm/WasmB3IRGenerator.cpp:

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

3 years agowarning: the compiler can assume that the address of 'thisObject' will always evaluat...
mcatanzaro@igalia.com [Sat, 17 Dec 2016 18:13:32 +0000 (18:13 +0000)]
warning: the compiler can assume that the address of 'thisObject' will always evaluate to 'true' [-Waddress] in WebCore::JSHTMLDocument::getOwnPropertySlot
https://bugs.webkit.org/show_bug.cgi?id=165987

Reviewed by Mark Lam.

Work around the warning by passing the JSObject pointer this function receives directly to
ASSERT_GC_OBJECT_INHERITS, instead of casting it to a reference and then taking the address
of that, to avoid the -Waddress warning.

* bindings/js/JSHTMLDocumentCustom.cpp:
(WebCore::JSHTMLDocument::getOwnPropertySlot):

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

3 years agoAdd implementation for navigator.requestMediaKeySystemAccess()
jer.noble@apple.com [Sat, 17 Dec 2016 17:18:54 +0000 (17:18 +0000)]
Add implementation for navigator.requestMediaKeySystemAccess()
https://bugs.webkit.org/show_bug.cgi?id=165850

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html

Add an implementation of NavigatorEME::requestMediaKeySystemAccess() as well as the CDM
object on which it depends.

* Modules/encryptedmedia/CDM.cpp: Added.
(WebCore::cdmFactories):
(WebCore::createCDMPrivateForKeySystem):
(WebCore::CDM::registerCDMFactory):
(WebCore::CDM::unregisterCDMFactory):
(WebCore::CDM::supportsKeySystem):
(WebCore::CDM::create):
(WebCore::CDM::CDM):
(WebCore::CDM::getSupportedConfiguration):
(WebCore::CDM::doSupportedConfigurationStep):
(WebCore::CDM::isPersistentType):
(WebCore::CDM::getSupportedCapabilitiesForAudioVideoType):
(WebCore::CDM::getConsentStatus):
* Modules/encryptedmedia/CDM.h: Added.
(WebCore::CDMFactory::~CDMFactory):
(WebCore::CDM::keySystem):
(WebCore::CDM::createWeakPtr):
* Modules/encryptedmedia/CDMPrivate.h: Added.
(WebCore::CDMPrivate::~CDMPrivate):
* Modules/encryptedmedia/NavigatorEME.cpp:
(WebCore::NavigatorEME::requestMediaKeySystemAccess):
(WebCore::tryNextSupportedConfiguration):
* Modules/encryptedmedia/NavigatorEME.h:
* Modules/encryptedmedia/NavigatorEME.idl:

To aid in testing, a new Internals object is added, MockCDMFactory, which can be
controlled by LayoutTests to change the behavior of the Mock objects it creates.

* testing/Internals.cpp:
(WebCore::Internals::registerMockCDM):
* testing/Internals.h:
* testing/Internals.idl:
* testing/MockCDMFactory.cpp: Added.
(WebCore::MockCDMFactory::MockCDMFactory):
(WebCore::MockCDMFactory::~MockCDMFactory):
(WebCore::MockCDMFactory::unregister):
(WebCore::MockCDMFactory::supportsKeySystem):
(WebCore::MockCDMFactory::createCDM):
(WebCore::MockCDM::MockCDM):
(WebCore::MockCDM::supportsInitDataType):
(WebCore::MockCDM::supportsConfiguration):
(WebCore::MockCDM::supportsConfigurationWithRestrictions):
(WebCore::MockCDM::supportsSessionTypeWithConfiguration):
(WebCore::MockCDM::supportsRobustness):
(WebCore::MockCDM::distinctiveIdentifiersRequirement):
(WebCore::MockCDM::persistentStateRequirement):
(WebCore::MockCDM::distinctiveIdentifiersAreUniquePerOriginAndClearable):
* testing/MockCDMFactory.h: Added.
(WebCore::MockCDMFactory::create):
(WebCore::MockCDMFactory::supportedDataTypes):
(WebCore::MockCDMFactory::setSupportedDataTypes):
(WebCore::MockCDMFactory::supportedRobustness):
(WebCore::MockCDMFactory::setSupportedRobustness):
(WebCore::MockCDMFactory::distinctiveIdentifiersRequirement):
(WebCore::MockCDMFactory::setDistinctiveIdentifiersRequirement):
(WebCore::MockCDMFactory::persistentStateRequirement):
(WebCore::MockCDMFactory::setPersistentStateRequirement):
* testing/MockCDMFactory.idl: Added.

Move the MediaKeySessionType definition out of the MediaKeys.idl file and into its own.
Move the MediaKeysRequiriment definition out of the MediaKeySystemConfiguration.idl file
and into its own. Generally fix up the .idl files so that they properly work with their
implementation files.

* Modules/encryptedmedia/MediaKeySessionType.idl: Added.
* Modules/encryptedmedia/MediaKeySystemAccess.cpp:
(WebCore::MediaKeySystemAccess::create):
(WebCore::MediaKeySystemAccess::MediaKeySystemAccess):
(WebCore::MediaKeySystemAccess::keySystem): Deleted.
(WebCore::MediaKeySystemAccess::getConfiguration): Deleted.
* Modules/encryptedmedia/MediaKeySystemAccess.h:
(WebCore::MediaKeySystemAccess::keySystem):
(WebCore::MediaKeySystemAccess::getConfiguration):
(WebCore::MediaKeySystemAccess::create): Deleted.
* Modules/encryptedmedia/MediaKeySystemAccess.idl:
* Modules/encryptedmedia/MediaKeySystemConfiguration.h:
* Modules/encryptedmedia/MediaKeySystemConfiguration.idl:
* Modules/encryptedmedia/MediaKeySystemMediaCapability.idl:
* Modules/encryptedmedia/MediaKeys.idl:
* Modules/encryptedmedia/MediaKeysRequirement.idl: Added.
* Modules/encryptedmedia/MediaKeysRestrictions.h: Added.
* bindings/js/JSMediaKeySystemAccessCustom.cpp: Removed.

As some of these enums are referenced in the Internals project, they need to be exported
from WebCore correctly. Teach the code generator how to export the symbols generated by
enums.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateEnumerationHeaderContent):

Add new files to the project.

* CMakeLists.txt:
* DerivedSources.make:
* WebCore.xcodeproj/project.pbxproj:

LayoutTests:

* media/encrypted-media/mock-navigator-requestMediaKeySystemAccess-expected.txt: Added.
* media/encrypted-media/mock-navigator-requestMediaKeySystemAccess.html: Added.
* platform/ios-simulator/TestExpectations:
* platform/mac/TestExpectations:

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

3 years agoWebAssembly: Change a RELEASE_ASSERT_NOT_REACHED to a jit.breakpoint() for now to...
sbarati@apple.com [Sat, 17 Dec 2016 17:14:03 +0000 (17:14 +0000)]
WebAssembly: Change a RELEASE_ASSERT_NOT_REACHED to a jit.breakpoint() for now to allow us to run some wasm benchmarks
https://bugs.webkit.org/show_bug.cgi?id=165990

Reviewed by Mark Lam.

* wasm/WasmBinding.cpp:
(JSC::Wasm::importStubGenerator):

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

3 years agoRemove WebCore::Dictionary, which is now unused
darin@apple.com [Sat, 17 Dec 2016 16:42:03 +0000 (16:42 +0000)]
Remove WebCore::Dictionary, which is now unused
https://bugs.webkit.org/show_bug.cgi?id=165988

Reviewed by Andreas Kling.

* CMakeLists.txt: Removed the files.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* bindings/js/Dictionary.cpp: Removed.
* bindings/js/Dictionary.h: Removed.
* bindings/js/JSBindingsAllInOne.cpp: Removed include of Dictionary.cpp.

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

3 years agoCloned CachedResource should not have an empty response
commit-queue@webkit.org [Sat, 17 Dec 2016 10:33:12 +0000 (10:33 +0000)]
Cloned CachedResource should not have an empty response
https://bugs.webkit.org/show_bug.cgi?id=165947

Patch by Youenn Fablet <youenn@apple.com> on 2016-12-17
Reviewed by Sam Weinig.

Source/WebCore:

Test: http/tests/loading/reusing-cached-stylesheet-from-different-domain.html

* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::setBodyDataFrom): Copying the response to the cloned resource.
Even though the issue is appearing for stylesheets only, it is safer to do that for all cloned ressources.

LayoutTests:

This new test is working as follow:
- A first frame is loaded. As part of it, it will load an absolute URL CSS stylesheet that contains a relative URL to import a CSS stylesheet.
This second stylesheet will make the background as green.
- Once done, a second frame is loaded (same HTML but from a different domain) with the same absolute URL CSS stylesheet.
The relative URL stylesheet should use the absolute URL of the CSS stylesheet as base.
If it is using the frame as base, the loaded CSS will change background to red.

* http/tests/loading/resources/cached-stylesheet-from-different-domain-frame.css.php: Added.
* http/tests/loading/resources/cached-stylesheet-from-different-domain-frame.html: Added.
* http/tests/loading/resources/imported-stylesheet-varying-according-domain.css.php: Added.
* http/tests/loading/reusing-cached-stylesheet-from-different-domain-expected.html: Added.
* http/tests/loading/reusing-cached-stylesheet-from-different-domain.html: Added.

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

3 years agoIndexedDB: Refactor SQLiteIDBCursor to prepare for cursor prefetching.
beidson@apple.com [Sat, 17 Dec 2016 07:29:17 +0000 (07:29 +0000)]
IndexedDB: Refactor SQLiteIDBCursor to prepare for cursor prefetching.
https://bugs.webkit.org/show_bug.cgi?id=165978

Reviewed by Alex Christensen.

No new tests (Refactor, no behavior change).

In preparation for cursor prefetching, we need to shift the cursor off of keeping "the current record"
and onto keeping "a deque of fetched records", the first of which is "the current record".

This patch does just that, but with no behavior change; The deque only ever holds 0 or 1 records.

* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::currentData):
(WebCore::IDBServer::SQLiteIDBCursor::objectStoreRecordsChanged):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindStatement):
(WebCore::IDBServer::SQLiteIDBCursor::prefetch):
(WebCore::IDBServer::SQLiteIDBCursor::advance):
(WebCore::IDBServer::SQLiteIDBCursor::fetch):
(WebCore::IDBServer::SQLiteIDBCursor::fetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::markAsErrored):
(WebCore::IDBServer::SQLiteIDBCursor::internalFetchNextRecord):
(WebCore::IDBServer::SQLiteIDBCursor::iterate):
(WebCore::IDBServer::SQLiteIDBCursor::currentKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentPrimaryKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentValue):
(WebCore::IDBServer::SQLiteIDBCursor::didComplete):
(WebCore::IDBServer::SQLiteIDBCursor::didError):
(WebCore::IDBServer::SQLiteIDBCursor::currentRecordRowID):
(WebCore::IDBServer::SQLiteIDBCursor::advanceUnique): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::advanceOnce): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::internalAdvanceOnce): Deleted.

* Modules/indexeddb/server/SQLiteIDBCursor.h:
(WebCore::IDBServer::SQLiteIDBCursor::SQLiteCursorRecord::isTerminalRecord):
(WebCore::IDBServer::SQLiteIDBCursor::currentRecordRowID): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::currentKey): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::currentPrimaryKey): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::currentValue): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::didComplete): Deleted.
(WebCore::IDBServer::SQLiteIDBCursor::didError): Deleted.

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

3 years agoRemove all custom bindings from media streams, using dictionaries instead
darin@apple.com [Sat, 17 Dec 2016 06:42:39 +0000 (06:42 +0000)]
Remove all custom bindings from media streams, using dictionaries instead
https://bugs.webkit.org/show_bug.cgi?id=165943

Reviewed by Sam Weinig.

Source/WebCore:

* CMakeLists.txt: Added and removed files.
* DerivedSources.make: Ditto.

* Modules/mediastream/DoubleRange.h: Added. Moved dictionary here so it can be shared
by both MediaStreamTrack and MediaTrackSupportedConstraints.
* Modules/mediastream/DoubleRange.idl: Ditto.
* Modules/mediastream/LongRange.h: Ditto.
* Modules/mediastream/LongRange.idl: Ditto.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getSupportedConstraints): Changed to return a struct instead
of a reference counted object.
* Modules/mediastream/MediaDevices.h: Updated for the above.
* Modules/mediastream/MediaDevices.idl: Added a conditional on the dictionary in this
file; not needed because the conditional on the interface automatically affects the
entire fiel, but for now the style seems to be to put these on all the dictionaries.

* Modules/mediastream/MediaSourceSettings.cpp: Removed.
* Modules/mediastream/MediaSourceSettings.h: Removed.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings): Changed to return a struct instead of a
reference counted object.
(WebCore::capabilityDoubleRange): Added. Helper for getCapabilities.
(WebCore::capabilityIntRange): Ditto.
(WebCore::capabilityStringVector): Ditto.
(WebCore::capabilityBooleanVector): Ditto.
(WebCore::MediaStreamTrack::getCapabilities): Changed to return a struct instead
of a reference counted object.
* Modules/mediastream/MediaStreamTrack.h: Updated for the above changes. Also
defined the structs here in the class.
* Modules/mediastream/MediaStreamTrack.idl: Defined the two dictionaries here and
changed the functions to return them and not use [Custom] any more.

* Modules/mediastream/MediaTrackConstraints.h: Moved DoubleRange and LongRange out
of this file and into their own headers. Also removed the currently unimplemented
latency and channelCount; there are FIXME comments in the IDL file about eventually
adding these to match the specification.
* Modules/mediastream/MediaTrackConstraints.idl: Added conditionals, and removed
the unimplemented latency and channelCount.
style of marking everything consistently.

* Modules/mediastream/MediaTrackSupportedConstraints.h: Replaced this class with
a struct.
* Modules/mediastream/MediaTrackSupportedConstraints.idl: Replaced this interface
with a dictionary.

* WebCore.xcodeproj/project.pbxproj: Added and removed files.

* bindings/js/JSMediaStreamTrackCustom.cpp: Removed.
* bindings/js/JSMediaTrackSupportedConstraintsCustom.cpp: Removed.

* platform/mediastream/MediaStreamTrackPrivate.cpp: Removed include of the
MediaSourceSettings.h header.
* platform/mediastream/MediaStreamTrackPrivate.h: Removed forward declaration of
the MediaSourceSettings class.

LayoutTests:

* fast/mediastream/MediaDevices-getSupportedConstraints-expected.txt: Updated since the
properties in the dictionaries are now in alphabetical order and because of the test change.
* fast/mediastream/MediaDevices-getSupportedConstraints.html: Updated to expect some true
and some false rather than some true and some missing.

* fast/mediastream/MediaStreamTrack-getCapabilities-expected.txt: Updated since the
properties in the dictionaries are now in alphabetical order.
* fast/mediastream/MediaStreamTrack-getSettings-expected.txt: Ditto.

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

3 years agoJSContext Inspector: Avoid some possible exceptions inspecting a JSContext
commit-queue@webkit.org [Sat, 17 Dec 2016 05:05:17 +0000 (05:05 +0000)]
JSContext Inspector: Avoid some possible exceptions inspecting a JSContext
https://bugs.webkit.org/show_bug.cgi?id=165986
<rdar://problem/29551379>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-16
Reviewed by Matt Baker.

Source/JavaScriptCore:

* inspector/InjectedScriptSource.js:
(InjectedScript.prototype.processProperties):
Prefer String.prototype.endsWith now that it is available.

(InjectedScript.prototype._describe):
Prefer Function.prototype.toString for converting functions to String.
Previously we were doing String(f) which would to Symbol.toPrimitive
conversion which seems unnecessary here.

Source/WebInspectorUI:

* UserInterface/Base/Main.js:
There will not be a main frame if we are debugging a JSContext.
In those cases do not change the title.

* UserInterface/Views/ResourceSidebarPanel.js:
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
There may not be a parent folder in JavaScript inspection. In that case
ScriptTreeElements are added to the Top Level, not folders.

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

3 years agoDeleting a character converted from pinyin after an image causes a Safari crash
rniwa@webkit.org [Sat, 17 Dec 2016 04:04:08 +0000 (04:04 +0000)]
Deleting a character converted from pinyin after an image causes a Safari crash
https://bugs.webkit.org/show_bug.cgi?id=165839
Source/WebKit2:

Reviewed by Darin Adler.

The crash was caused by the payload of the IPC not being decoded correctly when the encoded attributed string
contains a NSTextAttachment but send<> would still gladly send it to the UIProcess.

Fixed it by omitting the image as done in r176412 since encoding NSFileWrapper, etc... would require
quite a bit of work, and IME doesn't really need to see the image in its attributed string.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::attributedSubstringForCharacterRangeAsync): Fixed the bug.

Tools:

<rdar://problem/27951933>

Reviewed by Wenson Hsieh.

Add a WebKit API test to call attributedSubstringForProposedRange on a WKWebView
while the proposed range contains an image. This should not cause a WebProcess to crash
or send an invalid message to the UIProcess.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit2/chinese-character-with-image.html: Added.
* TestWebKitAPI/Tests/WebKit2/mac/AttributedSubstringForProposedRangeWithImage.mm: Added.
(TestWebKitAPI::didFinishLoadForFrame):
(TestWebKitAPI::processDidCrash):
(TestWebKitAPI::invalidMessageFunction):
(TestWebKitAPI::WebKit2.AttributedSubstringForProposedRangeWithImage):

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

3 years agoUnreviewed, fix GCC 6 build failure after r209952
mcatanzaro@igalia.com [Sat, 17 Dec 2016 03:32:39 +0000 (03:32 +0000)]
Unreviewed, fix GCC 6 build failure after r209952

Return false, not nullptr, in function returning bool.

* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):

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

3 years agoWebAssembly: We still have some incorrect parsing productions inside unreachable...
sbarati@apple.com [Sat, 17 Dec 2016 03:19:48 +0000 (03:19 +0000)]
WebAssembly: We still have some incorrect parsing productions inside unreachable code
https://bugs.webkit.org/show_bug.cgi?id=165981

Reviewed by Keith Miller.

This hardens our parsing for CallIndirect and Loop/Block/If to be exactly like their reachable variant.

It also fixes a more nefarious bug in which we were decoding an extra varuint32
for Br/BrIf inside unreachable code.

* wasm/WasmFunctionParser.h:

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

3 years agoCellState should have members with accurate names
fpizlo@apple.com [Sat, 17 Dec 2016 02:41:05 +0000 (02:41 +0000)]
CellState should have members with accurate names
https://bugs.webkit.org/show_bug.cgi?id=165969

Reviewed by Mark Lam.

This once again renames the members in CellState. I wanted to convey the following
pieces of information in the names:

- What does the state mean for Generational GC?
- What does the state mean for Concurrent GC?
- Does the state guarantee what it means, or is there some contingency?

The names I came up with are:

PossiblyOldOrBlack: An object in this state may be old, or may be black, depending on
    other things. If the mark bit is set then the object is either black or being
    blackened as we speak. It's going to survive the GC, so it will be old, but may be
    new now. In between GCs, objects in this state are definitely old. If the mark bit
    is not set, then the object is actually old and white.

DefinitelyNewAndWhite: The object was just allocated so it is white (not marked) and
    new.

DefinitelyGrey: The object is definitely grey - it will be rescanned in the future. It
    may be new or old depending on other things.

* heap/CellState.h:
* heap/Heap.cpp:
(JSC::Heap::addToRememberedSet):
(JSC::Heap::writeBarrierSlowPath):
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::appendJSCellOrAuxiliary):
(JSC::SlotVisitor::setMarkedAndAppendToMarkStack):
(JSC::SlotVisitor::appendToMarkStack):
(JSC::SlotVisitor::visitChildren):
* runtime/JSCellInlines.h:
(JSC::JSCell::JSCell):
* runtime/StructureIDBlob.h:
(JSC::StructureIDBlob::StructureIDBlob):

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

3 years agoB3::DoubleToFloatReduction will accidentally convince itself it converted a Phi from...
sbarati@apple.com [Sat, 17 Dec 2016 01:07:38 +0000 (01:07 +0000)]
B3::DoubleToFloatReduction will accidentally convince itself it converted a Phi from Double to Float and then convert uses of that Phi into a use of FloatToDouble(@Phi)
https://bugs.webkit.org/show_bug.cgi?id=165946

Reviewed by Keith Miller.

This was happening because the phase will convert some Phi nodes
from Double to Float. However, one place that did this conversion
forgot to first check if the Phi was already a Float. If it's already
a Float, a later part of the phase will be buggy if the phase claims that it has
converted it from Double->Float. The reason is that at the end of the
phase, we'll look for all uses of former Double Phi nodes and make them
be a use of ConvertFloatToDouble on the Phi, instead of a use of the Phi itself.
This is clearly wrong if the Phi were Float to begin with (and
therefore, the uses were Float uses to begin with).

* b3/B3ReduceDoubleToFloat.cpp:
* b3/testb3.cpp:
(JSC::B3::testReduceFloatToDoubleValidates):
(JSC::B3::run):

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

3 years agoJSTests:
mark.lam@apple.com [Sat, 17 Dec 2016 01:06:49 +0000 (01:06 +0000)]
JSTests:
De-duplicate finally blocks.
https://bugs.webkit.org/show_bug.cgi?id=160168

Reviewed by Keith Miller.

* stress/deeply-nested-finallys.js: Added.
- Tests many levels of finally nesting.  This causes the old code to hang (and
  crashes eventually) while trying to generate bytecode for the exponentially
  duplicated finally blocks.  The new code completes this test almost instantly.

* stress/test-finally.js: Added.
- Tests control flow through various permutations of finally blocks.

Source/JavaScriptCore:
De-duplicate finally blocks.
https://bugs.webkit.org/show_bug.cgi?id=160168

Reviewed by Keith Miller.

JS execution can arrive at a finally block when there are abrupt completions from
its try or catch block.  The abrupt completion types include Break,
Continue, Return, and Throw.  The non-abrupt completion type is called Normal
(i.e. the case of a try block falling through to the finally block).

Previously, we enable each of these paths for abrupt completion (except for Throw)
to run the finally block code by duplicating the finally block code at each of
the sites that trigger those completions.  This patch fixes the implementation so
that each of these abrupt completions will set a finallyActionRegister (plus a
finallyReturnValueRegister for CompletionType::Return) and then jump to the
relevant finally blocks, and continue to thread through subsequent outer finally
blocks until execution reaches the outermost finally block that the completion
type dictates.  We no longer duplicate the finally block code.

The implementation details:
1. We allocate a pair of finallyActionRegister and finallyReturnValueRegister
   just before entering the outermost try-catch-finally scope.

   On allocating the registers, we set them to the empty JSValue.  This serves
   to set the completion type to CompletionType::Normal (see (2) below).

2. The finallyActionRegister serves 2 purpose:
   a. indicates the CompletionType that triggered entry into the finally block.

      This is how we encode the completion type in the finallyActionRegister:
      1. CompletionType::Normal
         - finallyActionRegister is set to the empty JSValue.
      2. CompletionType::Break
         - finallyActionRegister is set to the int jumpID for the site of the break statement.
      3. CompletionType::Continue
         - finallyActionRegister is set to the int jumpID for the site of the continue statement.
      4. CompletionType::Return
         - finallyActionRegister is set to CompletionType::Return as an int JSValue.
         - finallyReturnValueRegister is set to the value to be returned.
      5. CompletionType::Throw
         - finallyActionRegister is set to the exception object that was caught by the finally block.

      Hence, if the finallyActionRegister can either be:
      1. empty i.e. we're handling CompletionType::Normal.
      2. an int JSValue i.e. we're handling CompletionType::Break, Continue, or Return.
      3. an object i.e. we're handling CompletionType::Throw.

   b. stores the exception caught in the finally block if we're handing
      CompletionType::Throw.

3. Each finally block will have 2 entries:
   a. the entry via throw.
   b. the normal entry.

   The entry via throw is recorded in the codeBlock's exception table, and can
   only be jumped to by the VM's exception handling mechanism.

   The normal entry is recorded in a FinallyContext (at bytecode generation time
   only) and is jumped to when we want enter the finally block due any of the
   other CompletionTypes.

4. CompletionType::Normal
   ======================
   We encounter this when falling through from a try or catch block to the finally block.

   For the try block case, since finallyActionRegister is set to Normal by default,
   there's nothing more that needs to be done.

   For the catch block case, since we entered the catch block with an exception,
   finallyActionRegister may be set to Throw.  We'll need to set it to Normal
   before jumping to the finally block's normal entry.

   CompletionType::Break
   =====================
   When we emit bytecode for the BreakNode, we check if we have any FinallyContexts
   that we need to service before jumping to the breakTarget.  If we do, then:
   a. we'll register a jumpID along with the breakTarget with the outermost FinallyContext.
   b. we'll also increment the numberOfBreaksOrContinues count in each FinallyContext
      from the innermost to the outermost.
   c. instead of emitting bytecode to jump to the breakTarget, we:
      1. emit bytecode to set finallyActionRegister to the jumpID.
      b. emit bytecode to jump to the normal entry of the innermost finally block.

   Each finally block will take care of cascading to the next outer finally block
   as needed (see (5) below).

   CompletionType::Continue
   ========================
   Since continues and breaks work the same way (i.e. with a jump), we handle this
   exactly the same way as CompletionType::Break, except that we use the
   continueTarget instead of the breakTarget.

   CompletionType::Return
   ======================
   When we emit bytecode for the ReturnNode, we check if we have any FinallyContexts
   at all on the m_controlFlowScopeStack.

   If so, then instead of emitting op_ret, we:
      1. emit bytecode to set finallyActionRegister to the CompletionType::Return.
      1. emit bytecode to move the return value into finallyReturnValueRegister.
      2. emit bytecode to jump to the normal entry of the innermost finally block.

   Each finally block will take care of cascading to the next outer finally block
   as needed (see (5) below).

   CompletionType::Throw
   ======================
   The op_catch of a finally block will always store the caught exception object
   in the finallyActionRegister.  This means we're handling CompletionType::Throw
   (see (2) above).

5. What happens in each finally block?
   ==================================
   Only the finally block's entry via throw will have an op_catch that catches the
   pending exception (and stores it in the finallyActionRegister).  This throw
   entry then falls through to the normal entry.

   The finally block's normal entry will restore the scope of the finally block
   and proceed to execute its code.

   At the end of the finally block (see emitFinallyCompletion()), the finally
   block will check the finallyActionRegister for each completion type in the
   following order:

   a. CompletionType::Normal: jump to the code after the finally block as
      designated by a normalCompletion label.

   b. CompletionType::Break and Continue:
      If the FinallyContext for this block has registered FinallyJumps, we'll
      check for the jumpIDs against the finallyActionRegister.  If the jumpID
      matches, jump to the corresponding jumpTarget.

      If no jumpIDs match but the FinallyContext's numberOfBreaksOrContinues is
      greater than the number of registered FinallyJumps, then this means that
      we have a Break or Continue that needs to be handled by an outer finally
      block.  In that case, jump to the outer finally block's normal entry.

   c. CompletionType::Return:
      If this finally block is not the outermost and finallyActionRegister contains
      CompletionType::Return, then jump to the outer finally block's normal entry.

      Otherwise, if this finally block is the outermost and finallyActionRegister
      contains CompletionType::Return, then execute op_ret and return the value
      in finallyReturnValueRegister.

   d. CompletionType::Throw:
      If we're not handling any of the above cases, then just throw the
      finallyActionRegister which contains the exception to re-throw.

6. restoreScopeRegister()

   Since the needed scope objects are always stored in a local, we can restore
   the scope register by simply moving from that local instead of going through
   op_get_parent_scope.

7. m_controlFlowScopeStack needs to be a SegmentedVector instead of a Vector.
   This makes it easier to keep a pointer to the FinallyContext on that stack,
   and not have to worry about the vector being realloc'ed due to resizing.

Performance appears to be neutral both on ES6SampleBench (run via cli) and the
JSC benchmarks.

Relevant spec references:
https://tc39.github.io/ecma262/#sec-completion-record-specification-type
https://tc39.github.io/ecma262/#sec-try-statement-runtime-semantics-evaluation

* bytecode/HandlerInfo.h:
(JSC::HandlerInfoBase::typeName):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitReturn):
(JSC::BytecodeGenerator::pushFinallyControlFlowScope):
(JSC::BytecodeGenerator::popFinallyControlFlowScope):
(JSC::BytecodeGenerator::allocateAndEmitScope):
(JSC::BytecodeGenerator::pushTry):
(JSC::BytecodeGenerator::popTry):
(JSC::BytecodeGenerator::emitCatch):
(JSC::BytecodeGenerator::restoreScopeRegister):
(JSC::BytecodeGenerator::labelScopeDepthToLexicalScopeIndex):
(JSC::BytecodeGenerator::labelScopeDepth):
(JSC::BytecodeGenerator::pushLocalControlFlowScope):
(JSC::BytecodeGenerator::popLocalControlFlowScope):
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitIsNumber):
(JSC::BytecodeGenerator::emitYield):
(JSC::BytecodeGenerator::emitDelegateYield):
(JSC::BytecodeGenerator::emitJumpViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitReturnViaFinallyIfNeeded):
(JSC::BytecodeGenerator::emitFinallyCompletion):
(JSC::BytecodeGenerator::allocateFinallyRegisters):
(JSC::BytecodeGenerator::releaseFinallyRegisters):
(JSC::BytecodeGenerator::emitCompareFinallyActionAndJumpIf):
(JSC::BytecodeGenerator::pushIteratorCloseControlFlowScope): Deleted.
(JSC::BytecodeGenerator::popIteratorCloseControlFlowScope): Deleted.
(JSC::BytecodeGenerator::emitComplexPopScopes): Deleted.
(JSC::BytecodeGenerator::emitPopScopes): Deleted.
(JSC::BytecodeGenerator::popTryAndEmitCatch): Deleted.
* bytecompiler/BytecodeGenerator.h:
(JSC::FinallyJump::FinallyJump):
(JSC::FinallyContext::FinallyContext):
(JSC::FinallyContext::outerContext):
(JSC::FinallyContext::finallyLabel):
(JSC::FinallyContext::depth):
(JSC::FinallyContext::numberOfBreaksOrContinues):
(JSC::FinallyContext::incNumberOfBreaksOrContinues):
(JSC::FinallyContext::handlesReturns):
(JSC::FinallyContext::setHandlesReturns):
(JSC::FinallyContext::registerJump):
(JSC::FinallyContext::numberOfJumps):
(JSC::FinallyContext::jumps):
(JSC::ControlFlowScope::ControlFlowScope):
(JSC::ControlFlowScope::isLabelScope):
(JSC::ControlFlowScope::isFinallyScope):
(JSC::BytecodeGenerator::currentLexicalScopeIndex):
(JSC::BytecodeGenerator::FinallyRegistersScope::FinallyRegistersScope):
(JSC::BytecodeGenerator::FinallyRegistersScope::~FinallyRegistersScope):
(JSC::BytecodeGenerator::finallyActionRegister):
(JSC::BytecodeGenerator::finallyReturnValueRegister):
(JSC::BytecodeGenerator::emitSetFinallyActionToNormalCompletion):
(JSC::BytecodeGenerator::emitSetFinallyActionToReturnCompletion):
(JSC::BytecodeGenerator::emitSetFinallyActionToJumpID):
(JSC::BytecodeGenerator::emitSetFinallyReturnValueRegister):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNormalCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotJump):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsReturnCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotReturnCompletion):
(JSC::BytecodeGenerator::emitJumpIfFinallyActionIsNotThrowCompletion):
(JSC::BytecodeGenerator::emitJumpIfCompletionTypeIsThrow):
(JSC::BytecodeGenerator::bytecodeOffsetToJumpID):
(JSC::BytecodeGenerator::isInFinallyBlock): Deleted.
* bytecompiler/NodesCodegen.cpp:
(JSC::ContinueNode::emitBytecode):
(JSC::BreakNode::emitBytecode):
(JSC::ReturnNode::emitBytecode):
(JSC::TryNode::emitBytecode):

Source/WTF:
Add predecessor info to dumps from JSC_dumpBytecodeLivenessResults=true.
https://bugs.webkit.org/show_bug.cgi?id=165958

Reviewed by Keith Miller.

Added some methods to bring SegmentedVector closer to parity with Vector.

* wtf/SegmentedVector.h:
(WTF::SegmentedVector::first):
(WTF::SegmentedVector::last):
(WTF::SegmentedVector::takeLast):

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

3 years agoPossible nullptr dereference when applying pagination to viewport
zalan@apple.com [Sat, 17 Dec 2016 00:48:31 +0000 (00:48 +0000)]
Possible nullptr dereference when applying pagination to viewport
https://bugs.webkit.org/show_bug.cgi?id=165926

Reviewed by Simon Fraser.

Static analysis found a code path where a null dereference could occur.

* page/FrameView.cpp:
(WebCore::FrameView::applyPaginationToViewport):

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

3 years agoFix failing test.
weinig@apple.com [Fri, 16 Dec 2016 23:59:20 +0000 (23:59 +0000)]
Fix failing test.

* http/tests/ssl/applepay/ApplePaySession-expected.txt:
* http/tests/ssl/applepay/ApplePaySession.html:
Update results to match latest IDL.

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

3 years agoFix the Windows build.
ryanhaddad@apple.com [Fri, 16 Dec 2016 23:51:59 +0000 (23:51 +0000)]
Fix the Windows build.

Unreviewed build fix.

* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:

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

3 years agoYet another attempt to fix the Windows build after r209936.
ryanhaddad@apple.com [Fri, 16 Dec 2016 23:32:55 +0000 (23:32 +0000)]
Yet another attempt to fix the Windows build after r209936.

Unreviewed build fix.

* platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.h:

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

3 years agoUse initEvent quirk added in r207908 for Flipboard
achristensen@apple.com [Fri, 16 Dec 2016 23:24:06 +0000 (23:24 +0000)]
Use initEvent quirk added in r207908 for Flipboard
https://bugs.webkit.org/show_bug.cgi?id=165974
<rdar://problem/28264190>

Reviewed by Chris Dumez.

* dom/Event.cpp:
(WebCore::Event::initEventForBindings):
* platform/RuntimeApplicationChecks.h:
* platform/RuntimeApplicationChecks.mm:
(WebCore::IOSApplication::isFlipboard):
Flipboard also has JavaScript content that calls initEvent with not enough arguments.

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

3 years ago[iOS] Align HTML from validation popover style with Copy/Paste callout bar
cdumez@apple.com [Fri, 16 Dec 2016 23:17:42 +0000 (23:17 +0000)]
[iOS] Align HTML from validation popover style with Copy/Paste callout bar
https://bugs.webkit.org/show_bug.cgi?id=165973
<rdar://problem/29336638>

Reviewed by Simon Fraser.

Tweak font size and padding of the HTML from validation popover to
match the style of the Copy/Paste callout bar on iOS.

* platform/ios/ValidationBubbleIOS.mm:
(WebCore::ValidationBubble::ValidationBubble):

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

3 years agoAnother attempt to fix the Windows build after r209936.
ryanhaddad@apple.com [Fri, 16 Dec 2016 23:12:59 +0000 (23:12 +0000)]
Another attempt to fix the Windows build after r209936.

Unreviewed build fix.

* CMakeLists.txt:

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

3 years agoAdd a setting to suppress keyboard input during provisional navigation
aestes@apple.com [Fri, 16 Dec 2016 23:10:56 +0000 (23:10 +0000)]
Add a setting to suppress keyboard input during provisional navigation
https://bugs.webkit.org/show_bug.cgi?id=165830

Reviewed by Brent Fulgham.

Source/WebCore:

Added a setting that suppresses keyboard input during provisional navigation. When the
setting is enabled, DOM propogation of keyboard input events (KeyboardEvents,
CompositionEvents, InputEvents, and some TextEvents) is suppressed, and text insertion is
disabled in the editor.

Non-editing default event handling still occurs, for instance keyboard scrolling, access
keys, and focus navigation.

Test: http/tests/navigation/keyboard-events-during-provisional-navigation.html

* dom/CompositionEvent.h: Added a type trait specialization.
* dom/EventDispatcher.cpp:
(WebCore::shouldSuppressEventDispatchInDOM): Added. Returns true if the event is trusted,
FrameLoader::shouldSuppressKeyboardInput() returns true, and the event is a
CompositionEvent, InputEvent, KeyboardEvent, or keyboard/composition TextEvent.
(WebCore::EventDispatcher::dispatchEvent): Called stopPropogation() on the event if
shouldSuppressEventDispatchInDOM() returns true.
* dom/InputEvent.h: Removed the inline no-op destructor so that DataTransfer does not need
to be a complete type in every translation unit that includes this header. Added a type
trait specialization.
* dom/TextEvent.h: Added isKeyboard() to determine if m_inputType is TextEventInputKeyboard.
* editing/Editor.cpp:
(WebCore::Editor::shouldInsertText): Returned false if
FrameLoader::shouldSuppressKeyboardInput() returns true and the action is
EditorInsertActionTyped.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::shouldSuppressKeyboardInput): Added. Returns true if
Settings::shouldSuppressKeyboardInputDuringProvisionalNavigation() returns true and the
state is FrameStateProvisional.
* loader/FrameLoader.h: Declared shouldSuppressKeyboardInput().
* page/EventHandler.h: Exported accessKeyModifiers().
* page/Settings.in: Defined shouldSuppressKeyboardInputDuringProvisionalNavigation with an
initial value of false.
* testing/Internals.cpp:
(WebCore::Internals::accessKeyModifiers): Added. Returns a vector of strings representing
the access key modifiers.
* testing/Internals.h: Declared accessKeyModifiers().
* testing/Internals.idl: Exposed accessKeyModifiers() on the internals object.

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h: Defined
shouldSuppressKeyboardDOMEventsDuringProvisionalNavigation.
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetShouldSuppressKeyboardInputDuringProvisionalNavigation): Added.
(WKPreferencesGetShouldSuppressKeyboardInputDuringProvisionalNavigation): Added.
* UIProcess/API/C/WKPreferencesRefPrivate.h: Declared a getter and setter for the new
preference.
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _shouldSuppressKeyboardInputDuringProvisionalNavigation]): Added.
(-[WKPreferences _setShouldSuppressKeyboardInputDuringProvisionalNavigation:]): Added.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h: Declared a property for the new preference.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences): Mapped the new preference to its corresponding
WebCore::Setting.

LayoutTests:

* http/tests/navigation/keyboard-events-during-provisional-navigation-expected.txt: Added.
* http/tests/navigation/keyboard-events-during-provisional-navigation.html: Added.
* http/tests/navigation/resources/keyboard-events-after-navigation.html: Added.
* http/tests/navigation/resources/keyboard-events-test.js: Added.
(runTest.eventHandler):
(runTest):
* http/tests/navigation/resources/never-respond.php: Added.
* platform/ios-simulator/TestExpectations:

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

3 years agoMore SQLiteIDBCursor refactoring.
beidson@apple.com [Fri, 16 Dec 2016 23:03:26 +0000 (23:03 +0000)]
More SQLiteIDBCursor refactoring.
https://bugs.webkit.org/show_bug.cgi?id=165956

Reviewed by Tim Horton.

No new tests (No behavior change).

This is a simple patch that encapsulates the current state of the cursor in one structure
which will allow for storing multiple-such states in the future (to support prefetching).

* Modules/indexeddb/server/SQLiteIDBCursor.cpp:
(WebCore::IDBServer::SQLiteIDBCursor::currentData):
(WebCore::IDBServer::SQLiteIDBCursor::resetAndRebindStatement):
(WebCore::IDBServer::SQLiteIDBCursor::advance):
(WebCore::IDBServer::SQLiteIDBCursor::advanceUnique):
(WebCore::IDBServer::SQLiteIDBCursor::markAsErrored):
(WebCore::IDBServer::SQLiteIDBCursor::internalAdvanceOnce):
(WebCore::IDBServer::SQLiteIDBCursor::iterate):

* Modules/indexeddb/server/SQLiteIDBCursor.h:
(WebCore::IDBServer::SQLiteIDBCursor::currentRecordRowID):
(WebCore::IDBServer::SQLiteIDBCursor::currentKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentPrimaryKey):
(WebCore::IDBServer::SQLiteIDBCursor::currentValue):
(WebCore::IDBServer::SQLiteIDBCursor::didComplete):
(WebCore::IDBServer::SQLiteIDBCursor::didError):

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

3 years agoHTML form validation bubble should be dismissed on navigation
cdumez@apple.com [Fri, 16 Dec 2016 23:00:48 +0000 (23:00 +0000)]
HTML form validation bubble should be dismissed on navigation
https://bugs.webkit.org/show_bug.cgi?id=165960
<rdar://problem/29668086>

Reviewed by Simon Fraser.

Source/WebKit/mac:

Dismiss HTML form validation bubble on top-level navigation on Mac WK1.

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

Source/WebKit2:

Dismiss HTML form validation bubble on top-level navigation on WK2.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didStartProvisionalLoadForFrame):

LayoutTests:

Add layout test coverage.

* http/tests/navigation/navigation-dismisses-validation-bubbles-expected.txt: Added.
* http/tests/navigation/navigation-dismisses-validation-bubbles.html: Added.
* http/tests/navigation/resources/check-validation-bubble-not-visible.html: Added.

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

3 years agoFollow-up build fix after r209936; also rename MockCDM -> LegacyMockCDM in
jer.noble@apple.com [Fri, 16 Dec 2016 22:33:00 +0000 (22:33 +0000)]
Follow-up build fix after r209936; also rename MockCDM -> LegacyMockCDM in
CMakeLists.txt.

* CMakeLists.txt:

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

3 years ago[Bindings] Remove use of Dictionary/ArrayValue in CDMSessionClearKey
weinig@apple.com [Fri, 16 Dec 2016 22:29:19 +0000 (22:29 +0000)]
[Bindings] Remove use of Dictionary/ArrayValue in CDMSessionClearKey
https://bugs.webkit.org/show_bug.cgi?id=165961

Reviewed by Darin Adler.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSBindingsAllInOne.cpp:
Remove ArrayValue.h/cpp

* bindings/js/ArrayValue.cpp: Removed.
* bindings/js/ArrayValue.h: Removed.

* bindings/js/Dictionary.cpp:
* bindings/js/Dictionary.h:
Remove support for ArrayValue.

* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
(WebCore::CDMSessionClearKey::update):
Replace use of Dictionary/ArrayValue with direct JSObject functions. This
should really be replaced with a JSON parser that does not require round
tripping through JavaScript objects.

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

3 years agoREGRESSION: HipChat and Mail sometimes hang beneath JSC::Heap::lastChanceToFinalize()
msaboff@apple.com [Fri, 16 Dec 2016 22:26:09 +0000 (22:26 +0000)]
REGRESSION: HipChat and Mail sometimes hang beneath JSC::Heap::lastChanceToFinalize()
https://bugs.webkit.org/show_bug.cgi?id=165962

Reviewed by Filip Pizlo.

There is an inherent race in Condition::waitFor() where the timeout can happen just before
a notify from another thread.

Fixed this by adding a condition variable and flag to each AutomaticThread.  The flag
is used to signify to a notifying thread that the thread is waiting.  That flag is set
in the waiting thread before calling waitFor() and cleared by another thread when it
notifies the thread.  The access to that flag happens when the lock is held.
Now the waiting thread checks if the flag after a timeout to see that it in fact should
proceed like a normal notification.

The added condition variable allows us to target a specific thread.  We used to keep a list
of waiting threads, now we keep a list of all threads.  To notify one thread, we look for
a waiting thread and notify it directly.  If we can't find a waiting thread, we start a
sleeping thread.

We notify all threads by waking all waiting threads and starting all sleeping threads.

* wtf/AutomaticThread.cpp:
(WTF::AutomaticThreadCondition::notifyOne):
(WTF::AutomaticThreadCondition::notifyAll):
(WTF::AutomaticThread::isWaiting):
(WTF::AutomaticThread::notify):
(WTF::AutomaticThread::start):
* wtf/AutomaticThread.h:

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

3 years agoSmall refactor: Use HashCountedSet rather than HashMap<..., int> to store client...
jer.noble@apple.com [Fri, 16 Dec 2016 22:05:54 +0000 (22:05 +0000)]
Small refactor: Use HashCountedSet rather than HashMap<..., int> to store client counts in WebPlaybackSessionManager{,Proxy}.
https://bugs.webkit.org/show_bug.cgi?id=165807

Reviewed by Eric Carlson.

* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
(WebKit::WebPlaybackSessionManagerProxy::addClientForContext):
(WebKit::WebPlaybackSessionManagerProxy::removeClientForContext):
* WebProcess/cocoa/WebPlaybackSessionManager.h:
* WebProcess/cocoa/WebPlaybackSessionManager.mm:
(WebKit::WebPlaybackSessionManager::addClientForContext):
(WebKit::WebPlaybackSessionManager::removeClientForContext):

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

3 years agoMove existing CDM* implementations into modules/encryptedmedia/legacy
jer.noble@apple.com [Fri, 16 Dec 2016 21:52:38 +0000 (21:52 +0000)]
Move existing CDM* implementations into modules/encryptedmedia/legacy
https://bugs.webkit.org/show_bug.cgi?id=165823

Rubber-stamped by Sam Weinig.

* Modules/encryptedmedia/legacy/LegacyCDM.cpp: Renamed from Source/WebCore/Modules/encryptedmedia/CDM.cpp.
(WebCore::CDMFactory::CDMFactory):
(WebCore::installedCDMFactories):
(WebCore::CDM::registerCDMFactory):
(WebCore::CDMFactoryForKeySystem):
(WebCore::CDM::supportsKeySystem):
(WebCore::CDM::keySystemSupportsMimeType):
(WebCore::CDM::create):
(WebCore::CDM::CDM):
(WebCore::CDM::~CDM):
(WebCore::CDM::supportsMIMEType):
(WebCore::CDM::createSession):
(WebCore::CDM::mediaPlayer):
* Modules/encryptedmedia/legacy/LegacyCDM.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDM.h.
(WebCore::CDMClient::~CDMClient):
(WebCore::CDM::keySystem):
(WebCore::CDM::client):
(WebCore::CDM::setClient):
* Modules/encryptedmedia/legacy/LegacyCDMPrivate.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivate.h.
(WebCore::CDMPrivateInterface::CDMPrivateInterface):
(WebCore::CDMPrivateInterface::~CDMPrivateInterface):
* Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.cpp: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivateClearKey.cpp.
(WebCore::CDMPrivateClearKey::supportsKeySystem):
(WebCore::CDMPrivateClearKey::supportsKeySystemAndMimeType):
(WebCore::CDMPrivateClearKey::supportsMIMEType):
(WebCore::CDMPrivateClearKey::createSession):
* Modules/encryptedmedia/legacy/LegacyCDMPrivateClearKey.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivateClearKey.h.
(WebCore::CDMPrivateClearKey::CDMPrivateClearKey):
(WebCore::CDMPrivateClearKey::~CDMPrivateClearKey):
* Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.cpp: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.cpp.
(WebCore::CDMPrivateMediaPlayer::supportsKeySystem):
(WebCore::CDMPrivateMediaPlayer::supportsKeySystemAndMimeType):
(WebCore::CDMPrivateMediaPlayer::supportsMIMEType):
(WebCore::CDMPrivateMediaPlayer::createSession):
* Modules/encryptedmedia/legacy/LegacyCDMPrivateMediaPlayer.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMPrivateMediaPlayer.h.
(WebCore::CDMPrivateMediaPlayer::CDMPrivateMediaPlayer):
(WebCore::CDMPrivateMediaPlayer::~CDMPrivateMediaPlayer):
(WebCore::CDMPrivateMediaPlayer::cdm):
* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp: Renamed from Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.cpp.
(WebCore::clearKeyVM):
(WebCore::CDMSessionClearKey::CDMSessionClearKey):
(WebCore::CDMSessionClearKey::~CDMSessionClearKey):
(WebCore::CDMSessionClearKey::generateKeyRequest):
(WebCore::CDMSessionClearKey::releaseKeys):
(WebCore::CDMSessionClearKey::update):
(WebCore::CDMSessionClearKey::cachedKeyForKeyID):
* Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.h: Renamed from Source/WebCore/Modules/encryptedmedia/CDMSessionClearKey.h.
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:
* Modules/encryptedmedia/legacy/WebKitMediaKeys.h:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/LegacyCDMSession.h: Renamed from Source/WebCore/platform/graphics/CDMSession.h.
(WebCore::CDMSessionClient::~CDMSessionClient):
(WebCore::CDMSession::CDMSession):
(WebCore::CDMSession::~CDMSession):
(WebCore::CDMSession::type):
(WebCore::CDMSession::cachedKeyForKeyID):
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/CDMPrivateMediaSourceAVFObjC.mm:
* platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
* platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.h:
* testing/Internals.cpp:
* testing/LegacyMockCDM.cpp: Renamed from Source/WebCore/testing/MockCDM.cpp.
(WebCore::MockCDMSession::~MockCDMSession):
(WebCore::MockCDM::supportsKeySystem):
(WebCore::MockCDM::supportsKeySystemAndMimeType):
(WebCore::MockCDM::supportsMIMEType):
(WebCore::MockCDM::createSession):
(WebCore::initDataPrefix):
(WebCore::keyPrefix):
(WebCore::keyRequest):
(WebCore::generateSessionId):
(WebCore::MockCDMSession::MockCDMSession):
(WebCore::MockCDMSession::generateKeyRequest):
(WebCore::MockCDMSession::releaseKeys):
(WebCore::MockCDMSession::update):
* testing/LegacyMockCDM.h: Renamed from Source/WebCore/testing/MockCDM.h.
(WebCore::MockCDM::MockCDM):
(WebCore::MockCDM::~MockCDM):

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

3 years agoMove the skip expectation for fast/visual-viewport/ios/zoomed-focus-in-fixed.html...
ryanhaddad@apple.com [Fri, 16 Dec 2016 21:42:50 +0000 (21:42 +0000)]
Move the skip expectation for fast/visual-viewport/ios/zoomed-focus-in-fixed.html to ios-simulator-wk2.

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/TestExpectations:

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

3 years agoAdd missing cases to parseUnreachableExpression and cleanup FunctionParser
keith_miller@apple.com [Fri, 16 Dec 2016 21:36:40 +0000 (21:36 +0000)]
Add missing cases to parseUnreachableExpression and cleanup FunctionParser
https://bugs.webkit.org/show_bug.cgi?id=165966

Reviewed by Saam Barati.

This patch adds a number of missing cases to the Wasm FunctionParser's unreachable
code decoder. It also, removes unneeded OpType namespaces where they were not
needed and has the unary / binary macros cover all the cases rather than
just the simple cases.

* wasm/WasmFunctionParser.h:

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

3 years agoWeb Inspector: REGRESSION (r209882): Opening find banner in editor causes UI to hang
mattbaker@apple.com [Fri, 16 Dec 2016 21:20:53 +0000 (21:20 +0000)]
Web Inspector: REGRESSION (r209882): Opening find banner in editor causes UI to hang
https://bugs.webkit.org/show_bug.cgi?id=165967

Reviewed by Timothy Hatcher.

* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype._findBannerDidShow):
Showing the find banner should cause search results to be refreshed only
if it contains query text.

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

3 years agoSubframes going into page cache don't need to resetScrollbars().
akling@apple.com [Fri, 16 Dec 2016 20:44:01 +0000 (20:44 +0000)]
Subframes going into page cache don't need to resetScrollbars().
<https://webkit.org/b/163750>
<rdar://problem/29273020>

Reviewed by Antti Koivisto.

Source/WebCore:

The main frame is the only frame that switches its FrameView when using the page cache,
subframes just suspend their DOM and wait around to be either killed or restored.

Thus there is no reason for subframes to reset their FrameView's scrollbars when going
into page cache, since nothing affects them while cached, and their layout should end up
identical when restoring.

This was causing some flakiness with subframe scrollbars jumping between different sizes
in when restoring from page cache in macOS/WK1. This change makes the behavior consistent
in both WK1 and WK2, and removes the flakiness.

* dom/Document.cpp:
(WebCore::Document::setPageCacheState):

LayoutTests:

Unskip compositing/iframes/page-cache-layer-tree.html on mac-wk1 and fix up the
result now that WK2 behaves correctly as well.

Both DRT and WTR run with scrollbars in "always on" mode, so the correct dimensions
for the 300x150 iframe layers here are 285x135.

* compositing/iframes/page-cache-layer-tree-expected.txt:
* platform/mac-wk1/TestExpectations:

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