WebKit-https.git
3 years agoAdd IDB perf tests stressing key size.
beidson@apple.com [Thu, 8 Dec 2016 00:50:17 +0000 (00:50 +0000)]
Add IDB perf tests stressing key size.
https://bugs.webkit.org/show_bug.cgi?id=165567

Reviewed by Alex Christensen.

* IndexedDB/large-array-keys.html: Added.
* IndexedDB/large-binary-keys.html: Added.
* IndexedDB/large-string-keys.html: Added.

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

3 years agoNetwork event record/replay
krollin@apple.com [Thu, 8 Dec 2016 00:44:19 +0000 (00:44 +0000)]
Network event record/replay
https://bugs.webkit.org/show_bug.cgi?id=164527
<rdar://problem/29168157>

Reviewed by Alex Christensen.

Source/WebCore:

Export parseURLEncodedForm.

No new tests -- no functionality added, changed, or removed.

* platform/URLParser.h:

Source/WebKit2:

Add WebKit2/NetworkProcess/capture/* for recording the network events
that occur when loading a page and for replaying them later. Update
NetworkLoad to invoke capture facilities. Add preferences for enabling
record or replay.

* CMakeLists.txt:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::NetworkLoad):
(WebKit::NetworkLoad::initializeForRecord):
(WebKit::NetworkLoad::initializeForReplay):
(WebKit::NetworkLoad::initialize):
(WebKit::NetworkLoad::setDefersLoading):
(WebKit::NetworkLoad::continueWillSendRequest):
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::didReceiveData):
(WebKit::NetworkLoad::didCompleteWithError):
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::terminate):
* NetworkProcess/NetworkProcessCreationParameters.cpp:
(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):
* NetworkProcess/NetworkProcessCreationParameters.h:
* NetworkProcess/capture/NetworkCaptureEvent.cpp: Added.
(WebKit::NetworkCapture::copyHeaders):
(WebKit::NetworkCapture::KeyValuePair::KeyValuePair):
(WebKit::NetworkCapture::ResourceRequest::ResourceRequest):
(WebKit::NetworkCapture::ResourceRequest::operator WebCore::ResourceRequest):
(WebKit::NetworkCapture::ResourceResponse::ResourceResponse):
(WebKit::NetworkCapture::ResourceResponse::operator WebCore::ResourceResponse):
(WebKit::NetworkCapture::ResourceError::ResourceError):
(WebKit::NetworkCapture::ResourceError::operator WebCore::ResourceError):
(WebKit::NetworkCapture::JSONCoder::encode):
(WebKit::NetworkCapture::JSONCoder::decode):
(WebKit::NetworkCapture::JSONCoder<String>::encode):
(WebKit::NetworkCapture::JSONCoder<String>::decode):
(WebKit::NetworkCapture::JSONCoder<CaptureTimeType>::encode):
(WebKit::NetworkCapture::JSONCoder<CaptureTimeType>::decode):
(WebKit::NetworkCapture::JSONCoder<KeyValuePair>::encode):
(WebKit::NetworkCapture::JSONCoder<KeyValuePair>::decode):
(WebKit::NetworkCapture::JSONCoder<Vector<T>>::encode):
(WebKit::NetworkCapture::JSONCoder<Vector<T>>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceRequest>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceRequest>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceResponse>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceResponse>::decode):
(WebKit::NetworkCapture::JSONCoder<ResourceError>::encode):
(WebKit::NetworkCapture::JSONCoder<ResourceError>::decode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::encode):
(WebKit::NetworkCapture::JSONCoder<WebCore::SharedBuffer>::decode):
(WebKit::NetworkCapture::JSONCoder<RequestSentEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RequestSentEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<ResponseReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<ResponseReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<RedirectReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RedirectReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<RedirectSentEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<RedirectSentEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<DataReceivedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<DataReceivedEvent>::decode):
(WebKit::NetworkCapture::JSONCoder<FinishedEvent>::encode):
(WebKit::NetworkCapture::JSONCoder<FinishedEvent>::decode):
(WebKit::NetworkCapture::eventToString):
(WebKit::NetworkCapture::stringToEvent):
* NetworkProcess/capture/NetworkCaptureEvent.h: Added.
(WebKit::NetworkCapture::TimedEvent::TimedEvent):
* NetworkProcess/capture/NetworkCaptureLogging.h: Added.
* NetworkProcess/capture/NetworkCaptureManager.cpp: Added.
(WebKit::NetworkCapture::Manager::singleton):
(WebKit::NetworkCapture::Manager::initialize):
(WebKit::NetworkCapture::Manager::terminate):
(WebKit::NetworkCapture::Manager::findMatch):
(WebKit::NetworkCapture::Manager::findExactMatch):
(WebKit::NetworkCapture::Manager::findBestFuzzyMatch):
(WebKit::NetworkCapture::Manager::fuzzyMatchURLs):
(WebKit::NetworkCapture::Manager::loadResources):
(WebKit::NetworkCapture::Manager::reportLoadPath):
(WebKit::NetworkCapture::Manager::reportRecordPath):
(WebKit::NetworkCapture::Manager::reportReplayPath):
(WebKit::NetworkCapture::Manager::requestToPath):
(WebKit::NetworkCapture::Manager::stringToHash):
(WebKit::NetworkCapture::Manager::hashToPath):
(WebKit::NetworkCapture::Manager::logRecordedResource):
(WebKit::NetworkCapture::Manager::logLoadedResource):
(WebKit::NetworkCapture::Manager::logPlayedBackResource):
(WebKit::NetworkCapture::Manager::ensureFileHandle):
(WebKit::NetworkCapture::Manager::openCacheFile):
(WebKit::NetworkCapture::Manager::readFile):
(WebKit::NetworkCapture::Manager::getLine):
(WebKit::NetworkCapture::Manager::getWord):
(WebKit::NetworkCapture::Manager::printToFile):
* NetworkProcess/capture/NetworkCaptureManager.h: Added.
(WebKit::NetworkCapture::Manager::isRecording):
(WebKit::NetworkCapture::Manager::isReplaying):
(WebKit::NetworkCapture::Manager::mode):
* NetworkProcess/capture/NetworkCaptureRecorder.cpp: Added.
(WebKit::NetworkCapture::Recorder::recordRequestSent):
(WebKit::NetworkCapture::Recorder::recordResponseReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectReceived):
(WebKit::NetworkCapture::Recorder::recordRedirectSent):
(WebKit::NetworkCapture::Recorder::recordDataReceived):
(WebKit::NetworkCapture::Recorder::recordFinish):
(WebKit::NetworkCapture::Recorder::writeEvents):
* NetworkProcess/capture/NetworkCaptureRecorder.h: Added.
(WebKit::NetworkCapture::Recorder::recordEvent):
* NetworkProcess/capture/NetworkCaptureReplayer.cpp: Added.
(WebKit::NetworkCapture::Replayer::replayResource):
* NetworkProcess/capture/NetworkCaptureReplayer.h: Added.
* NetworkProcess/capture/NetworkCaptureResource.cpp: Added.
(WebKit::NetworkCapture::Resource::Resource):
(WebKit::NetworkCapture::Resource::url):
(WebKit::NetworkCapture::Resource::baseURL):
(WebKit::NetworkCapture::Resource::queryParameters):
(WebKit::NetworkCapture::Resource::eventStream):
(WebKit::NetworkCapture::Resource::EventStream::EventStream):
(WebKit::NetworkCapture::Resource::EventStream::nextEvent):
* NetworkProcess/capture/NetworkCaptureResource.h: Added.
* NetworkProcess/capture/NetworkCaptureTypes.h: Added.
(WebKit::NetworkCapture::TypeHolder::forEachTypeImpl):
(WebKit::NetworkCapture::TypeHolder::forEachType):
* NetworkProcess/capture/NetworkDataTaskReplay.cpp: Added.
(WebKit::NetworkCapture::NetworkDataTaskReplay::NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::~NetworkDataTaskReplay):
(WebKit::NetworkCapture::NetworkDataTaskReplay::resume):
(WebKit::NetworkCapture::NetworkDataTaskReplay::suspend):
(WebKit::NetworkCapture::NetworkDataTaskReplay::cancel):
(WebKit::NetworkCapture::NetworkDataTaskReplay::complete):
(WebKit::NetworkCapture::NetworkDataTaskReplay::invalidateAndCancel):
(WebKit::NetworkCapture::NetworkDataTaskReplay::enqueueEventHandler):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRequestSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayResponseReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayRedirectSent):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayDataReceived):
(WebKit::NetworkCapture::NetworkDataTaskReplay::replayFinished):
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):
(WebKit::NetworkCapture::NetworkDataTaskReplay::didFinish):
* NetworkProcess/capture/NetworkDataTaskReplay.h: Added.
(WebKit::NetworkCapture::NetworkDataTaskReplay::create):
* NetworkProcess/capture/json.hpp: Added.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeNetworkProcess):
* WebKit2.xcodeproj/project.pbxproj:
* config.h:

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

3 years ago[CSS Parser] Remove tests that depend on SVG CSS OM that has been removed
hyatt@apple.com [Thu, 8 Dec 2016 00:42:29 +0000 (00:42 +0000)]
[CSS Parser] Remove tests that depend on SVG CSS OM that has been removed
https://bugs.webkit.org/show_bug.cgi?id=165565

Reviewed by Jon Lee.

* TestExpectations:
* svg/dom/SVGColor-expected.txt: Removed.
* svg/dom/SVGColor.html: Removed.
* svg/dom/SVGPaint-expected.txt: Removed.
* svg/dom/SVGPaint.html: Removed.
* svg/dom/rgb-color-parser-expected.txt: Removed.
* svg/dom/rgb-color-parser.html: Removed.

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

3 years agoMarking compositing/layer-creation/fixed-overlap-extent-rtl.html as failing on mac...
ryanhaddad@apple.com [Thu, 8 Dec 2016 00:37:28 +0000 (00:37 +0000)]
Marking compositing/layer-creation/fixed-overlap-extent-rtl.html as failing on mac-wk1.
https://bugs.webkit.org/show_bug.cgi?id=165541

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

3 years ago[CSS Parser] Consolidate string/ident/url serialization functions
hyatt@apple.com [Thu, 8 Dec 2016 00:34:02 +0000 (00:34 +0000)]
[CSS Parser] Consolidate string/ident/url serialization functions
https://bugs.webkit.org/show_bug.cgi?id=165552

Reviewed by Zalan Bujtas.

Source/WebCore:

Right now CSSParser has string, ident and url serialization functions
called quoteCSStringIfNeeded (which actually serializes both strings and
identifiers), as well as quoteCSSURLIfNeeded.

CSSMarkup already has serialization functions that exist outside of the
CSSParser and that handle serialization of strings, idents and URLs. This
patch eliminates the CSSParser functions and consolidates all of the
serialization to use CSSMarkup's functions.

Note that we are not spec-compliant at all here, and so I had to amend
the functions to support our non-spec-compliant serialization. The goal
of this patch is consolidation and not to fix our broken serialization.

Notable changes include parameterizing string serialization so that
both single and double quotes are supported, since in the existing code
we're sometimes spec-compliant (CSSSelectors) and sometimes not
(CSSPrimitiveValue).

We also overload CSS_STRING primitive value type and have it act as both
a string and a custom identifier. This is lame, since the parser should
have made two different types of objects instead, but since our parser
doesn't do that yet, I added a serializeAsStringOrCustomIdent that
preserves our old behavior of "quote the string only if needed." In this
case what that really meant was "Try to guess that we were originally a
custom ident and leave off quotes if so." This function will go away
once we properly create CSSStringValues and CSSCustomIdentValues instead
of turning the latter into strings.

* css/CSSBasicShapes.cpp:
(WebCore::buildPathString):
* css/CSSImageValue.cpp:
(WebCore::CSSImageValue::customCSSText):
* css/CSSMarkup.cpp:
(WebCore::isCSSTokenizerURL):
(WebCore::serializeString):
(WebCore::serializeURL):
(WebCore::serializeAsStringOrCustomIdent):
(WebCore::serializeURI): Deleted.
* css/CSSMarkup.h:
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::formatNumberForCustomCSSText):
* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText):
* css/parser/CSSParser.cpp:
(WebCore::isCSSTokenizerIdent): Deleted.
(WebCore::isCSSTokenizerURL): Deleted.
(WebCore::quoteCSSStringInternal): Deleted.
(WebCore::quoteCSSString): Deleted.
(WebCore::quoteCSSStringIfNeeded): Deleted.
(WebCore::quoteCSSURLIfNeeded): Deleted.
* css/parser/CSSParser.h:
* html/HTMLElement.cpp:
(WebCore::HTMLElement::mapLanguageAttributeToLocale):

LayoutTests:

* fast/css/content-language-only-whitespace-expected.txt:
* fast/css/content-language-with-whitespace-expected.txt:

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

3 years agoExpose internal API to detect media documents
dino@apple.com [Thu, 8 Dec 2016 00:27:35 +0000 (00:27 +0000)]
Expose internal API to detect media documents
https://bugs.webkit.org/show_bug.cgi?id=165559
<rdar://problems/29564054>

Reviewed by Antoine Quint.

Expose via MediaControlsHost whether or not we're in
a MediaDocument.

Since MediaControlsHost is only exposed to our
internal controls, it's not possible to test this
directly. However, a subsequent test for media documents
with audio-only content will cover this change.

* Modules/mediacontrols/MediaControlsHost.cpp: Add isInMediaDocument and put const on
various methods that should have it.
(WebCore::MediaControlsHost::captionDisplayMode):
(WebCore::MediaControlsHost::supportsFullscreen):
(WebCore::MediaControlsHost::isVideoLayerInline):
(WebCore::MediaControlsHost::isInMediaDocument):
* Modules/mediacontrols/MediaControlsHost.h:
* Modules/mediacontrols/MediaControlsHost.idl: Add isInMediaDocument.

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

3 years agoMarking imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters...
ryanhaddad@apple.com [Thu, 8 Dec 2016 00:17:26 +0000 (00:17 +0000)]
Marking imported/mathml-in-html5/mathml/presentation-markup/fractions/frac-parameters-1.html as flaky on El Capitan WK2.
https://bugs.webkit.org/show_bug.cgi?id=165392

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

3 years agoWeb Inspector: Add ability to distinguish if a Script was parsed as a module
joepeck@webkit.org [Thu, 8 Dec 2016 00:04:13 +0000 (00:04 +0000)]
Web Inspector: Add ability to distinguish if a Script was parsed as a module
https://bugs.webkit.org/show_bug.cgi?id=164900
<rdar://problem/29323817>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::didParseSource):
* inspector/protocol/Debugger.json:
Add an optional event parameter to distinguish if a script was a module or not.

Source/WebInspectorUI:

* UserInterface/Models/Script.js:
(WebInspector.Script.prototype.get sourceType):
New property of Scripts. SourceType is either Program or Module.

* UserInterface/Controllers/DebuggerManager.js:
(WebInspector.DebuggerManager.prototype.scriptDidParse):
* UserInterface/Protocol/DebuggerObserver.js:
(WebInspector.DebuggerObserver.prototype.scriptParsed):
Convert incoming module boolean into SourceType when creating new Scripts.

* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree):
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Update the generic AST for new module specific Esprima types.

* UserInterface/Views/SourceCodeTextEditor.js:
(WebInspector.SourceCodeTextEditor.prototype.textEditorScriptSourceType):
* UserInterface/Views/TextEditor.js:
(WebInspector.TextEditor.prototype._startWorkerPrettyPrint):
For pretty printing correctly state if this is a module or not for Esprima.

LayoutTests:

* inspector/model/parse-script-syntax-tree-expected.txt:
* inspector/model/parse-script-syntax-tree.html:
* inspector/model/resources/module.js: Added.
(import.string_appeared_here.myModule):
* inspector/model/resources/other-module.js: Added.
(myOtherModule):
* inspector/model/resources/program.js: Added.
(myProgram):
* inspector/model/script-sourceType-expected.txt: Added.
* inspector/model/script-sourceType.html: Added.

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

3 years agoWeb Inspector: Update Esprima to support new features / syntax (**, async/await,...
joepeck@webkit.org [Thu, 8 Dec 2016 00:04:07 +0000 (00:04 +0000)]
Web Inspector: Update Esprima to support new features / syntax (**, async/await, trailing comma)
https://bugs.webkit.org/show_bug.cgi?id=164830
<rdar://problem/29293814>

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

* UserInterface/External/Esprima/LICENSE:
* UserInterface/External/Esprima/esprima.js:
Updated to Esprima@7219731 (4.0.0-dev).

* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
* UserInterface/Workers/Formatter/ESTreeWalker.js:
(ESTreeWalker.prototype._walkChildren):
Add new nodes (AwaitExpression).
Add new states (async boolean property on Functions).
Remove stale properties (defaults is no longer needed, as parameters
with default values are now AssignmentPatterns).
Update MetaProperty where meta/property are now Identifiers not strings.

* UserInterface/Workers/Formatter/EsprimaFormatter.js:
(EsprimaFormatter.prototype._handleTokenAtNode):
Handle pretty printing of new nodes and identifiers.

* Controllers/FrameResourceManager.js
Address a console.assert warning for stripping assertions in Production.

LayoutTests:

* inspector/formatting/resources/javascript-tests/arrow-functions-expected.js:
* inspector/formatting/resources/javascript-tests/arrow-functions.js:
* inspector/formatting/resources/javascript-tests/classes-expected.js:
* inspector/formatting/resources/javascript-tests/classes.js:
* inspector/formatting/resources/javascript-tests/functions-expected.js:
* inspector/formatting/resources/javascript-tests/functions.js:
* inspector/formatting/resources/javascript-tests/other-statements-expected.js:
* inspector/formatting/resources/javascript-tests/other-statements.js:
* inspector/formatting/resources/javascript-tests/unary-binary-expressions-expected.js:
* inspector/formatting/resources/javascript-tests/unary-binary-expressions.js:
* inspector/model/parse-script-syntax-tree-expected.txt:
* inspector/model/parse-script-syntax-tree.html:
Coverage for new supported syntax.

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

3 years agoRebaseline tests after r209486. Also updated media-shadow-manipulation.html now that...
rniwa@webkit.org [Wed, 7 Dec 2016 23:53:10 +0000 (23:53 +0000)]
Rebaseline tests after r209486. Also updated media-shadow-manipulation.html now that range is null.

* fast/shadow-dom/color-input-element-shadow-manipulation-expected.txt:
* fast/shadow-dom/file-input-element-shadow-manipulation-expected.txt:
* fast/shadow-dom/media-shadow-manipulation-expected.txt:
* fast/shadow-dom/media-shadow-manipulation.html:
* fast/shadow-dom/range-input-element-shadow-manipulation-expected.txt:
* fast/shadow-dom/textarea-shadow-manipulation-expected.txt:

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

3 years agoAdd system trace points for JavaScript VM entry/exit
simon.fraser@apple.com [Wed, 7 Dec 2016 23:41:58 +0000 (23:41 +0000)]
Add system trace points for JavaScript VM entry/exit
https://bugs.webkit.org/show_bug.cgi?id=165550

Reviewed by Tim Horton.
Source/JavaScriptCore:

Add trace points for entry/exit into/out of the JS VM.

* runtime/VMEntryScope.cpp:
(JSC::VMEntryScope::VMEntryScope):
(JSC::VMEntryScope::~VMEntryScope):

Source/WTF:

Add trace points for entry/exit into/out of the JS VM.

* wtf/SystemTracing.h:

Tools:

Add trace points for entry/exit into/out of the JS VM.

* Tracing/SystemTracePoints.plist:

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

3 years agoMarking two compositing tests as failing.
ryanhaddad@apple.com [Wed, 7 Dec 2016 23:23:30 +0000 (23:23 +0000)]
Marking two compositing tests as failing.
https://bugs.webkit.org/show_bug.cgi?id=165530

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:

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

3 years agoASSERTION FAILED: count >= 1 in WebCore::RenderMultiColumnSet::columnCount
zalan@apple.com [Wed, 7 Dec 2016 23:21:27 +0000 (23:21 +0000)]
ASSERTION FAILED: count >= 1 in WebCore::RenderMultiColumnSet::columnCount
https://bugs.webkit.org/show_bug.cgi?id=136365
<rdar://problem/27686727>

Reviewed by Simon Fraser.

Source/WebCore:

Margin value overflow ends up confusing the column count computing logic.

Test: fast/multicol/assert-on-column-count-when-zoomed-in.html

* css/StyleResolver.cpp:
(WebCore::addIntrinsicMargins):

LayoutTests:

* fast/multicol/assert-on-column-count-when-zoomed-in-expected.txt: Added.
* fast/multicol/assert-on-column-count-when-zoomed-in.html: Added.

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

3 years agodocument.caretRangeFromPoint doesn't retarget the resultant Range correctly.
rniwa@webkit.org [Wed, 7 Dec 2016 22:51:54 +0000 (22:51 +0000)]
document.caretRangeFromPoint doesn't retarget the resultant Range correctly.
https://bugs.webkit.org/show_bug.cgi?id=165146

Reviewed by Sam Weinig.

Source/WebCore:

The bug was caused by caretRangeFromPoint not retargeting the resultant Range correctly.
Namely, it's possible for RenderObject::positionForPoint to move across shadow boundary
even if node was identically equal to ancestorInThisScope(node).

Fixed the bug by directly retargeting the range's container node and its offset as done
for elementFromPoint in r206795.

Test: fast/shadow-dom/caret-range-from-point-in-shadow-tree.html

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

LayoutTests:

Added a regression test for caretRangeFromPoint retargeting the result.

* fast/shadow-dom/caret-range-from-point-in-shadow-tree-expected.txt: Added.
* fast/shadow-dom/caret-range-from-point-in-shadow-tree.html: Added.

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

3 years agoFix use of enum in a WK2 C SPI header.
simon.fraser@apple.com [Wed, 7 Dec 2016 22:51:21 +0000 (22:51 +0000)]
Fix use of enum in a WK2 C SPI header.
rdar://problem/28725583

Followup to correctly prefix the enum values.

Source/WebKit2:

* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetEventThrottlingBehaviorOverride):
* WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

Tools:

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::prepare):

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

3 years ago[Modern Media Controls] Entering fullscreen and returning to inline shows fullscreen...
commit-queue@webkit.org [Wed, 7 Dec 2016 22:47:06 +0000 (22:47 +0000)]
[Modern Media Controls] Entering fullscreen and returning to inline shows fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=165536

Patch by Antoine Quint <graouts@apple.com> on 2016-12-07
Reviewed by Tim Horton.

Source/WebCore:

We regressed when we implemented the fix for webkit.org/b/165494 and we started to rely solely
on the "webkitpresentationmodechanged" event to identify presention mode changes. As it turns out,
when the "webkitpresentationmodechanged" event is dispatched when exiting fullscreen and returning
to the inline presentation mode, querying the "webkitPresentationMode" property says "inline" while
"webkitDisplayingFullscreen" still returns true (raised as webkit.org/b/165538).

We now use the "webkitPresentationMode" property when that property is supported and we're using the
"webkitpresentationmodechanged" event, and we use the "webkitDisplayingFullscreen" property otherwise.

Test: media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype.get layoutTraits):

LayoutTests:

Add a new test that checks we're using the right media controls presentation as we enter and exit fullscreen.

* media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline-expected.txt: Added.
* media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-inline.html: Added.

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

3 years agoFix build.
andersca@apple.com [Wed, 7 Dec 2016 22:44:19 +0000 (22:44 +0000)]
Fix build.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::open):

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

3 years ago[GTK] Cannot build GTK+ with CUPS 2.* versions
changseok@webkit.org [Wed, 7 Dec 2016 22:36:46 +0000 (22:36 +0000)]
[GTK] Cannot build GTK+ with CUPS 2.* versions
https://bugs.webkit.org/show_bug.cgi?id=163591

Reviewed by Michael Catanzaro.

GTK+ build has failed on the system which CUPS 2.x is installed in. GTK+ 3.16.4
does not assume to use the recent CUPS thus it fails to detect the CUPS in configuration.
GTK+ upstream fixed this issue but it is not easy to apply the original patch to our
old gtk+ since it requires not only bumping up glib accordingly and its consequence
causes many printing test failures. So, I propose to fix the configuration issue by
applying the change to the configure file directly. By doing this, we don't need to
upgrade glib and worry about any test failures as a consequence of the upgraded glib.

* gtk/jhbuild.modules:
* gtk/patches/gtk+-configure-fix-detecting-CUPS-2.x.patch: Added.

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

3 years agoRename the connection sources to better indicate what data direction they are used for
andersca@apple.com [Wed, 7 Dec 2016 22:30:58 +0000 (22:30 +0000)]
Rename the connection sources to better indicate what data direction they are used for
https://bugs.webkit.org/show_bug.cgi?id=165548

Reviewed by Tim Horton.

* Platform/IPC/Connection.h:
* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::platformInvalidate):
(IPC::Connection::platformInitialize):
(IPC::createReceiveSource):
(IPC::Connection::initializeSendSource):
(IPC::Connection::receiveSourceEventHandler):
(IPC::createDataAvailableSource): Deleted.
(IPC::Connection::initializeDeadNameSource): Deleted.
Rename m_deadNameSource to m_sendSource, and m_receivePortDataAvailableSource to m_receiveSource.

(IPC::Connection::open):
Initialize the send source before we attempt to send a first message.

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

3 years agoBuild more of ANGLE on Mac and Windows
achristensen@apple.com [Wed, 7 Dec 2016 22:28:58 +0000 (22:28 +0000)]
Build more of ANGLE on Mac and Windows
https://bugs.webkit.org/show_bug.cgi?id=165543

Reviewed by Dean Jackson.

We will need to compile these files to use ANGLE's GLESv2 implementation instead of
using OpenGL directly. No functional change.

* ANGLE.xcodeproj/project.pbxproj:
* CMakeLists.txt:
Move platform-specific files to Platform*.cmake.
* PlatformMac.cmake: Added.
* PlatformWin.cmake: Added.
* src/libANGLE/renderer/Format.cpp:
* src/libANGLE/renderer/Format_autogen.cpp:
(angle::Format::Get):
* src/libANGLE/renderer/gl/PathGL.cpp:
* src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.h:
* src/libANGLE/renderer/gl/cgl/WindowSurfaceCGL.mm:
Rename SwapLayer to WebSwapLayer.  Otherwise, WebCore complains about improperly named ObjC classes.
Since this is the only one, let's just rename it instead of adding an exception.
(rx::WindowSurfaceCGL::initialize):
(-[SwapLayer initWithSharedState:withContext:withFunctions:]): Deleted.
* src/libANGLE/renderer/gl/formatutilsgl.cpp:
(rx::nativegl::GetInternalFormatMap):
(rx::nativegl::GetInternalFormatInfo):
* src/libANGLE/renderer/renderer_utils.cpp:
(rx::GetColorWriteFunction):
* src/libGLESv2/entry_points_egl.cpp:
(egl::GetProcAddress):

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

3 years agoFix use of enum in a WK2 C SPI header.
simon.fraser@apple.com [Wed, 7 Dec 2016 22:21:55 +0000 (22:21 +0000)]
Fix use of enum in a WK2 C SPI header.
rdar://problem/28725583

Reviewed by Dan Bernstein.

Use correct enum style for a C SPI header and fix the callers.

Source/WebKit2:

* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePageSetEventThrottlingBehaviorOverride):
* WebProcess/InjectedBundle/API/c/WKBundlePagePrivate.h:

Tools:

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::prepare):

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

3 years agoScroll position jumps to the origin when scrolling without momentum at the end of...
wenson_hsieh@apple.com [Wed, 7 Dec 2016 21:50:11 +0000 (21:50 +0000)]
Scroll position jumps to the origin when scrolling without momentum at the end of a scroll snapping container
https://bugs.webkit.org/show_bug.cgi?id=165474
<rdar://problem/29534305>

Reviewed by Simon Fraser.

Source/WebCore:

When initializing an AppKit _NSScrollingMomentumCalculator, if the initial and target positions are the same and
the initial velocity is (0, 0), the momentum calculator will output (0, 0) as the animated scroll position when
animating. This causes the scroll position to jump to the top left in some cases when scrolling in scroll snap
containers. To fix this, we teach the ScrollingMomentumCalculatorMac to return an animation duration of 0 and
an animated scroll position equal to the final scroll position when this is the case.

Test: tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top.html

* page/scrolling/mac/ScrollingMomentumCalculatorMac.h:
* page/scrolling/mac/ScrollingMomentumCalculatorMac.mm:
(WebCore::ScrollingMomentumCalculatorMac::ScrollingMomentumCalculatorMac):
(WebCore::ScrollingMomentumCalculatorMac::scrollOffsetAfterElapsedTime):
(WebCore::ScrollingMomentumCalculatorMac::animationDuration):

LayoutTests:

Added a new test verifying that if a scroll gesture ends without momentum at the bottom of a scroll snapping
container, the scroll position won't jump to the top.

* tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top-expected.txt: Added.
* tiled-drawing/scrolling/scroll-snap/scrolling-jumps-to-top.html: Added.

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

3 years agoAdd support for truncation operators
keith_miller@apple.com [Wed, 7 Dec 2016 21:43:58 +0000 (21:43 +0000)]
Add support for truncation operators
https://bugs.webkit.org/show_bug.cgi?id=165519

Reviewed by Geoffrey Garen.

JSTests:

* wasm/function-tests/i32-trunc-s-f32.js: Added.
* wasm/function-tests/i32-trunc-s-f64.js: Added.
* wasm/function-tests/i32-trunc-u-f32.js: Added.
* wasm/function-tests/i32-trunc-u-f64.js: Added.
* wasm/function-tests/i64-trunc-s-f32.js: Added.
* wasm/function-tests/i64-trunc-s-f64.js: Added.
* wasm/function-tests/i64-trunc-u-f32.js: Added.
* wasm/function-tests/i64-trunc-u-f64.js: Added.

Source/JavaScriptCore:

This patch adds initial support for truncation operators. The current patch
does range based out of bounds checking, in the future we should use system
register flags on ARM and other tricks on X86 improve the performance of
these opcodes.

* assembler/MacroAssemblerARM64.h:
(JSC::MacroAssemblerARM64::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerARM64::truncateDoubleToInt64):
(JSC::MacroAssemblerARM64::truncateDoubleToUint64):
(JSC::MacroAssemblerARM64::truncateFloatToInt32):
(JSC::MacroAssemblerARM64::truncateFloatToUint32):
(JSC::MacroAssemblerARM64::truncateFloatToInt64):
(JSC::MacroAssemblerARM64::truncateFloatToUint64):
* assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::truncateFloatToInt32):
(JSC::MacroAssemblerX86Common::truncateDoubleToUint32): Deleted.
* assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::truncateDoubleToUint32):
(JSC::MacroAssemblerX86_64::truncateDoubleToInt64):
(JSC::MacroAssemblerX86_64::truncateDoubleToUint64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint32):
(JSC::MacroAssemblerX86_64::truncateFloatToInt64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint64):
* assembler/X86Assembler.h:
(JSC::X86Assembler::cvttss2si_rr):
(JSC::X86Assembler::cvttss2siq_rr):
* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I32TruncUF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF64>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncSF32>):
(JSC::Wasm::B3IRGenerator::addOp<OpType::I64TruncUF32>):
* wasm/WasmFunctionParser.h:
(JSC::Wasm::FunctionParser<Context>::parseExpression):

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

3 years agoRemove iCloud Pages and Keynote site-specific hacks
bdakin@apple.com [Wed, 7 Dec 2016 21:33:37 +0000 (21:33 +0000)]
Remove iCloud Pages and Keynote site-specific hacks
https://bugs.webkit.org/show_bug.cgi?id=165544
-and corresponding-
rdar://problem/29082536

Reviewed by Wenson Hsieh.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::needsHiddenContentEditableQuirk):
(WebKit::needsPlainTextQuirk):

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

3 years agoREGRESSION (r209447): LayoutTests compositing/layer-creation/fixed-position-out-of...
simon.fraser@apple.com [Wed, 7 Dec 2016 21:27:08 +0000 (21:27 +0000)]
REGRESSION (r209447): LayoutTests compositing/layer-creation/fixed-position-out-of-view-scaled.html and compositing/layer-creation/fixed-position-out-of-view-scaled-scroll.html failing
https://bugs.webkit.org/show_bug.cgi?id=165530

New baseline for WK1 (which has RTL/compositing isseus), and mark a test as flakey in WK1.

* platform/mac-wk1/TestExpectations:
* platform/mac-wk1/compositing/layer-creation/fixed-overlap-extent-rtl-expected.txt: Added.

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

3 years agoAdd a getter for serverTrust in _WKObservablePageState
adachan@apple.com [Wed, 7 Dec 2016 21:20:15 +0000 (21:20 +0000)]
Add a getter for serverTrust in _WKObservablePageState
https://bugs.webkit.org/show_bug.cgi?id=165433

Reviewed by Anders Carlsson.

* UIProcess/API/C/mac/WKPagePrivateMac.h:
* UIProcess/API/C/mac/WKPagePrivateMac.mm:
(-[WKObservablePageState serverTrust]):

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

3 years agoAX: menu type toolbar should be mapped correctly on Mac
n_wang@apple.com [Wed, 7 Dec 2016 21:13:13 +0000 (21:13 +0000)]
AX: menu type toolbar should be mapped correctly on Mac
https://bugs.webkit.org/show_bug.cgi?id=165537

Reviewed by Chris Fleizach.

Source/WebCore:

The menu tag with a toolbar type should have the corresponding role.

Test: accessibility/mac/menu-type-toolbar.html

* accessibility/AccessibilityRenderObject.cpp:
(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

LayoutTests:

* accessibility/mac/menu-type-toolbar-expected.txt: Added.
* accessibility/mac/menu-type-toolbar.html: Added.

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

3 years agoFixed a test failure seen in web-timing-minimal-performance-now.html
ggaren@apple.com [Wed, 7 Dec 2016 21:10:24 +0000 (21:10 +0000)]
Fixed a test failure seen in web-timing-minimal-performance-now.html
https://bugs.webkit.org/show_bug.cgi?id=165542

Reviewed by Beth Dakin.

This test was always slightly wrong, but it is much more likely to fail
as of <https://trac.webkit.org/changeset/209462>.

* fast/dom/Window/web-timing-minimal-performance-now.html: < is not a
correct test for monotonicity. < tests for stricly increasing. <= is a
correct test for monotonicity. All computer clocks have some granularity,
so computer clocks are monotonic but not strictly increasing: you can
sample the clock twice in the same tick.

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

3 years agoAdd a new project for recording and playing back editing commands in editable web...
wenson_hsieh@apple.com [Wed, 7 Dec 2016 20:40:43 +0000 (20:40 +0000)]
Add a new project for recording and playing back editing commands in editable web content
https://bugs.webkit.org/show_bug.cgi?id=165114
<rdar://problem/29408135>

Reviewed by Beth Dakin.

Source/WebCore:

Adds new scripts used to record and play back editing, as well as a new Xcode Copy files phase that pushes these
scripts to the internal system directory when installing. See the Tools ChangeLog and individual comments below
for more details. Covered by 3 new unit tests in the EditingHistory project.

* InternalScripts/DumpEditingHistory.js: Added.
(beginProcessingTopLevelUpdate):
(endProcessingTopLevelUpdate):
(appendDOMUpdatesFromRecords):
(appendSelectionUpdateIfNecessary):

Adds new entries into the top-level list of DOM updates captured when editing. Respectively, these are input
events and selection changes.

(EditingHistory.getEditingHistoryAsJSONString):
* InternalScripts/EditingHistoryUtil.js: Added.
(prototype._scramble):
(prototype.applyToText):
(prototype.applyToFilename):
(prototype._scrambedNumberIndexForCode):
(prototype._scrambedLowercaseIndexForCode):
(prototype._scrambedUppercaseIndexForCode):

Naive implementation of an obfuscator. Currently, this only affects alphanumeric characters. Obfuscation is off
by default, but can be toggled on in JavaScript.

(elementFromMarkdown):
(GlobalNodeMap):
(GlobalNodeMap.prototype.nodesForGUIDs):
(GlobalNodeMap.prototype.guidsForTNodes):
(GlobalNodeMap.prototype.nodeForGUID):
(GlobalNodeMap.prototype.guidForNode):
(GlobalNodeMap.prototype.hasGUIDForNode):
(GlobalNodeMap.prototype.nodes):
(GlobalNodeMap.prototype.toObject):
(GlobalNodeMap.fromObject):
(GlobalNodeMap.dataForNode):
(GlobalNodeMap.elementFromTagName):
(GlobalNodeMap.nodeAttributesToObject):
(GlobalNodeMap.prototype.descriptionHTMLForGUID):
(GlobalNodeMap.prototype.descriptionHTMLForNode):

The GlobalNodeMap keeps track of every node that has appeared in the DOM, assigning each node a globally unique
identifier (GUID). This GUID is used when reconstructing the DOM, as well as unapplying or applying editing.

(SelectionState):
(SelectionState.prototype.isEqual):
(SelectionState.prototype.applyToSelection):
(SelectionState.fromSelection):
(SelectionState.prototype.toObject):
(SelectionState.fromObject):

Represents a snapshot of the Selection state (determined by getSelection()).

(DOMUpdate):
(DOMUpdate.prototype.apply):
(DOMUpdate.prototype.unapply):
(DOMUpdate.prototype.targetNode):
(DOMUpdate.prototype.detailsElement):
(DOMUpdate.ofType):
(DOMUpdate.fromRecords):

A DOMUpdate is an abstract object representing a change in the DOM that may be applied and unapplied. These are
also serializable as hashes, which may then be converted to JSON when generating editing history data.

(ChildListUpdate):
(ChildListUpdate.prototype.apply):
(ChildListUpdate.prototype.unapply):
(ChildListUpdate.prototype._nextSibling):
(ChildListUpdate.prototype._removedNodes):
(ChildListUpdate.prototype._addedNodes):
(ChildListUpdate.prototype.toObject):
(ChildListUpdate.prototype.detailsElement):
(ChildListUpdate.fromObject):

These three update types correspond to the three types of DOM mutations. These may appear as top-level updates
if they are not captured during an input event, but for the majority of user-input-driven changes, they will be
children of an input event.

(CharacterDataUpdate):
(CharacterDataUpdate.prototype.apply):
(CharacterDataUpdate.prototype.unapply):
(CharacterDataUpdate.prototype.detailsElement):
(CharacterDataUpdate.prototype.toObject):
(CharacterDataUpdate.fromObject):
(AttributeUpdate):
(AttributeUpdate.prototype.apply):
(AttributeUpdate.prototype.unapply):
(AttributeUpdate.prototype.detailsElement):
(AttributeUpdate.prototype.toObject):
(AttributeUpdate.fromObject):
(SelectionUpdate):
(SelectionUpdate.prototype.apply):
(SelectionUpdate.prototype.unapply):
(SelectionUpdate.prototype.toObject):
(SelectionUpdate.fromObject):
(SelectionUpdate.prototype._rangeDescriptionHTML):
(SelectionUpdate.prototype._anchorDescriptionHTML):
(SelectionUpdate.prototype._focusDescriptionHTML):
(SelectionUpdate.prototype.detailsElement):

Represents a change in the Selection. While no changes to the DOM structure occur as a result of a
SelectionUpdate, the information contained in these updates is used to determine where the selection should be
when rewinding or playing back the editing history.

(InputEventUpdate):
(InputEventUpdate.prototype._obfuscatedData):
(InputEventUpdate.prototype.apply):
(InputEventUpdate.prototype.unapply):
(InputEventUpdate.prototype.toObject):
(InputEventUpdate.fromObject):
(InputEventUpdate.prototype.detailsElement):

Represents an update due to user input, which consists of some number of child DOM mutation updates.

* WebCore.xcodeproj/project.pbxproj:

Tools:

Adds a new Xcode project containing work towards rewinding and playing back editing commands. This work is
wrapped in an Xcode project to take advantage of the XCTest framework. To manually test recording, open the
capture test harness, edit the contenteditable body, and then hit cmd-S. This downloads a .json file which may
then be dragged into the playback test harness.

Also adds 3 new unit tests in EditingHistoryTests/RewindAndPlaybackTests.m. These tests carry out the following
steps:

1. Load the capture harness and perform test-specific editing on the web view.
2. Let originalState be a dump of the DOM at this point in time.
3. Extract the JSON-serialized editing history data and load the playback harness with this data.
4. Rewind all editing to the beginning.
5. Playback all editing to the end.
6. Dump the state of the DOM. This should be identical to originalState.

* EditingHistory/EditingHistory.xcodeproj/project.pbxproj: Added.
* EditingHistory/EditingHistory/Info.plist: Added.
* EditingHistory/EditingHistory/Resources/CaptureHarness.html: Added.
* EditingHistory/EditingHistory/Resources/DOMTestingUtil.js: Added.
* EditingHistory/EditingHistory/Resources/PlaybackHarness.html: Added.
* EditingHistory/EditingHistory/TestRunner.h: Added.
* EditingHistory/EditingHistory/TestRunner.m: Added.
(injectedMessageEventHandlerScript):
(-[TestRunner init]):
(-[TestRunner deleteBackwards:]):
(-[TestRunner typeString:]):
(-[TestRunner bodyElementSubtree]):
(-[TestRunner bodyTextContent]):
(-[TestRunner editingHistoryJSON]):
(-[TestRunner loadPlaybackTestHarnessWithJSON:]):
(-[TestRunner numberOfUpdates]):
(-[TestRunner jumpToUpdateIndex:]):
(-[TestRunner expectEvents:afterPerforming:]):
(-[TestRunner loadCaptureTestHarness]):
(-[TestRunner setTextObfuscationEnabled:]):
(-[TestRunner isDoneWaitingForPendingEvents]):
(-[TestRunner userContentController:didReceiveScriptMessage:]):

The TestRunner provides utilities that a unit test should use to drive the test forward (e.g. loading harnesses)
or inspect the state of the loaded page (e.g. extracting JSON editing history data from the capture harness).

* EditingHistory/EditingHistory/TestUtil.h: Added.
* EditingHistory/EditingHistory/TestUtil.m: Added.
(waitUntilWithTimeout):
(waitUntil):

Provides utilities for running tests. For now, this is just spinning the runloop on a given condition.

* EditingHistory/EditingHistory/WKWebViewAdditions.h: Added.
* EditingHistory/EditingHistory/WKWebViewAdditions.m: Added.
(-[WKWebView loadPageFromBundleNamed:]):
(-[WKWebView typeCharacter:]):
(-[WKWebView keyPressWithCharacters:keyCode:]):
(-[WKWebView stringByEvaluatingJavaScriptFromString:]):

Provides utilities for simulating interaction in a web view.

* EditingHistory/EditingHistory/main.m: Added.
(main):
* EditingHistory/EditingHistoryTests/Info.plist: Added.
* EditingHistory/EditingHistoryTests/RewindAndPlaybackTests.m: Added.
(-[RewindAndPlaybackTests setUp]):
(-[RewindAndPlaybackTests tearDown]):
(-[RewindAndPlaybackTests testTypingSingleLineOfText]):
(-[RewindAndPlaybackTests testTypingMultipleLinesOfText]):
(-[RewindAndPlaybackTests testTypingAndDeletingText]):
(-[RewindAndPlaybackTests rewindAndPlaybackEditingInPlaybackTestHarness]):
(-[RewindAndPlaybackTests originalBodySubtree:isEqualToFinalSubtree:]):

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

3 years agoASSERT crash while running media-source/mediasource-activesourcebuffers.html under...
jer.noble@apple.com [Wed, 7 Dec 2016 20:32:39 +0000 (20:32 +0000)]
ASSERT crash while running media-source/mediasource-activesourcebuffers.html under Stress GC bot.
https://bugs.webkit.org/show_bug.cgi?id=165514

Reviewed by Eric Carlson.

If a track associated with MSE is disabled after a SourceBuffer begins parsing a queued
append operation, SourceBuffer can get into a state where it asks SourceBufferPrivateAVFObjC
if it is ready to accept data for that disabled track. This causes an ASSERT_NOT_REACHED in
isReadyForMoreData().

However, this seems to be a valid condition; we can safely just return "false" from
isReadyForMoreSamples() (and also bail from notifyClientWhenReadyForMoreSamples()) when asked
about a disabled track.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples):
(WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples):

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

3 years agoExiting Element Fullscreen mode loses focus on WKWebView.
jer.noble@apple.com [Wed, 7 Dec 2016 20:29:55 +0000 (20:29 +0000)]
Exiting Element Fullscreen mode loses focus on WKWebView.
https://bugs.webkit.org/show_bug.cgi?id=165512

Reviewed by Eric Carlson.

Setting 'window.contentView.hidden = YES' will reset the first-responder (whereas
previously setting 'window.contentView.layer.hidden = YES' did not). Grab the first-
responder before doing so, so that it can be reset correctly when moving the WKWebView
back to it's original window.

* UIProcess/mac/WKFullScreenWindowController.mm:
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):

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

3 years agoFix CMake build after r209418.
achristensen@apple.com [Wed, 7 Dec 2016 20:25:22 +0000 (20:25 +0000)]
Fix CMake build after r209418.
https://bugs.webkit.org/show_bug.cgi?id=165484

* PlatformMac.cmake:

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

3 years ago[CSS Parser] Eliminate the Scope class and fold it into CSSTokenizer
hyatt@apple.com [Wed, 7 Dec 2016 19:51:56 +0000 (19:51 +0000)]
[CSS Parser] Eliminate the Scope class and fold it into CSSTokenizer
https://bugs.webkit.org/show_bug.cgi?id=165532

Reviewed by Dean Jackson.

The Scope class, nested inside CSSTokenizer, is both poorly named and serves
no purpose. It's especially weird that it was the entry point into tokenization
instead of CSSTokenizer.

Eliminate the class, fold its members and functions into CSSTokenizer, and have
callers just make a CSSTokenizer instead.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseSupportsCondition):
(WebCore::CSSParser::parseSelector):
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::parseValue):
(WebCore::CSSParserImpl::parseCustomPropertyValue):
(WebCore::CSSParserImpl::parseInlineStyleDeclaration):
(WebCore::CSSParserImpl::parseDeclarationList):
(WebCore::CSSParserImpl::parseRule):
(WebCore::CSSParserImpl::parseStyleSheet):
(WebCore::CSSParserImpl::parseKeyframeKeyList):
(WebCore::CSSParserImpl::parseDeclarationListForInspector):
(WebCore::CSSParserImpl::parseStyleSheetForInspector):
* css/parser/CSSTokenizer.cpp:
(WebCore::CSSTokenizer::CSSTokenizer):
(WebCore::CSSTokenizer::tokenRange):
(WebCore::CSSTokenizer::tokenCount):
(WebCore::CSSTokenizer::registerString):
(WebCore::CSSTokenizer::Scope::Scope): Deleted.
(WebCore::CSSTokenizer::Scope::tokenRange): Deleted.
(WebCore::CSSTokenizer::Scope::tokenCount): Deleted.
* css/parser/CSSTokenizer.h:
(WebCore::CSSTokenizer::Scope::storeString): Deleted.
* css/parser/CSSTokenizerInputStream.cpp:
(WebCore::CSSTokenizerInputStream::CSSTokenizerInputStream):
* css/parser/CSSTokenizerInputStream.h:
* css/parser/MediaQueryParser.cpp:
(WebCore::MediaQueryParser::parseMediaQuerySet):
* css/parser/SizesAttributeParser.cpp:
(WebCore::SizesAttributeParser::SizesAttributeParser):

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

3 years agoWeb Inspector: Remove unused and mostly untested Page domain commands and events
commit-queue@webkit.org [Wed, 7 Dec 2016 19:31:08 +0000 (19:31 +0000)]
Web Inspector: Remove unused and mostly untested Page domain commands and events
https://bugs.webkit.org/show_bug.cgi?id=165507

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

Source/JavaScriptCore:

Remove unused and unsupported commands and events.

  - Page.setDocumentContent
  - Page.getScriptExecutionStatus
  - Page.setScriptExecutionDisabled
  - Page.handleJavaScriptDialog
  - Page.javascriptDialogOpening
  - Page.javascriptDialogClosed
  - Page.scriptsEnabled

* inspector/protocol/Page.json:

Source/WebCore:

Remove any code associated with the commands/events being removed.

* inspector/DOMPatchSupport.cpp:
* inspector/DOMPatchSupport.h:
* inspector/InspectorClient.h:
(WebCore::InspectorClient::handleJavaScriptDialog): Deleted.
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::scriptsEnabledImpl): Deleted.
(WebCore::InspectorInstrumentation::willRunJavaScriptDialogImpl): Deleted.
(WebCore::InspectorInstrumentation::didRunJavaScriptDialogImpl): Deleted.
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::scriptsEnabled): Deleted.
(WebCore::InspectorInstrumentation::willRunJavaScriptDialog): Deleted.
(WebCore::InspectorInstrumentation::didRunJavaScriptDialog): Deleted.
* inspector/InspectorPageAgent.cpp:
(WebCore::InspectorPageAgent::disable):
(WebCore::InspectorPageAgent::didClearWindowObjectInWorld):
(WebCore::InspectorPageAgent::didPaint):
(WebCore::InspectorPageAgent::buildObjectForFrame):
(WebCore::InspectorPageAgent::archive):
(WebCore::createXHRTextDecoder): Deleted.
(WebCore::InspectorPageAgent::getScriptExecutionStatus): Deleted.
(WebCore::InspectorPageAgent::setScriptExecutionDisabled): Deleted.
(WebCore::InspectorPageAgent::willRunJavaScriptDialog): Deleted.
(WebCore::InspectorPageAgent::didRunJavaScriptDialog): Deleted.
(WebCore::InspectorPageAgent::scriptsEnabled): Deleted.
(WebCore::InspectorPageAgent::handleJavaScriptDialog): Deleted.
* inspector/InspectorPageAgent.h:
* page/Chrome.cpp:
(WebCore::Chrome::runBeforeUnloadConfirmPanel):
(WebCore::Chrome::runJavaScriptAlert):
(WebCore::Chrome::runJavaScriptConfirm):
(WebCore::Chrome::runJavaScriptPrompt):
* page/Settings.cpp:
(WebCore::Settings::setScriptEnabled):

Source/WebInspectorUI:

* UserInterface/Protocol/PageObserver.js:
(WebInspector.PageObserver.prototype.javascriptDialogOpening):
(WebInspector.PageObserver.prototype.javascriptDialogClosed):
(WebInspector.PageObserver.prototype.scriptsEnabled):
Keep stub in case legacy backends dispatch the event to the frontend.

* UserInterface/Protocol/Legacy/10.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/7.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/8.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.0/InspectorBackendCommands.js:
* UserInterface/Protocol/Legacy/9.3/InspectorBackendCommands.js:
* Versions/Inspector-iOS-10.0.json:
* Versions/Inspector-iOS-7.0.json:
* Versions/Inspector-iOS-8.0.json:
* Versions/Inspector-iOS-9.0.json:
* Versions/Inspector-iOS-9.3.json:
Remove handleJavaScriptDialog command from legacy backends because it
doesn't appear as if the iOS backend handled it at all.

LayoutTests:

* inspector/page/javascriptDialogEvents-expected.txt: Removed.
* inspector/page/javascriptDialogEvents.html: Removed.
* platform/gtk/TestExpectations:
* platform/mac/TestExpectations:
Remove test skipped by all platforms.

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

3 years ago[pointer-lock] Cursor should become visible when exiting pointer-lock via ESC key.
jer.noble@apple.com [Wed, 7 Dec 2016 19:30:45 +0000 (19:30 +0000)]
[pointer-lock] Cursor should become visible when exiting pointer-lock via ESC key.
https://bugs.webkit.org/show_bug.cgi?id=165377

Reviewed by Eric Carlson.

Follow up to previous patch; clear the m_forceCursorVisibleUponUnlock flag upon losing
pointer lock, so that subsequent unlocks don't erroneously cause the cursor to become
visible.

* page/PointerLockController.cpp:
(WebCore::PointerLockController::didLosePointerLock):

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

3 years agoperformance.now() should truncate to 100us
ggaren@apple.com [Wed, 7 Dec 2016 18:39:44 +0000 (18:39 +0000)]
performance.now() should truncate to 100us
https://bugs.webkit.org/show_bug.cgi?id=165503
<rdar://problem/29544531>

Reviewed by Mark Lam.

* page/Performance.cpp:
(WebCore::Performance::reduceTimeResolution):

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

3 years agoFix a bad result that I landed by accident.
hyatt@apple.com [Wed, 7 Dec 2016 18:33:28 +0000 (18:33 +0000)]
Fix a bad result that I landed by accident.

* fast/css/object-position/parsing-object-position-expected.txt:

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

3 years ago[CSS Parser] Turn back on a bunch of layout tests
hyatt@apple.com [Wed, 7 Dec 2016 17:18:45 +0000 (17:18 +0000)]
[CSS Parser] Turn back on a bunch of layout tests
https://bugs.webkit.org/show_bug.cgi?id=165529

Reviewed by Zalan Bujtas.

Source/WebCore:

Fixes fast/css/transform-origin-parsing.html.

* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::consumeTransformOrigin):
The implicit check was relying on a null check of the z value, but
we called releaseNonNull on it already. This meant all z properties were
marked as implicit incorrectly. Fix by storing whether or not we had a z
value in a local variable.

LayoutTests:

* TestExpectations:
* css3/parsing-css3-nthchild-expected.txt:
* css3/parsing-css3-nthchild.html:
* css3/scroll-snap/scroll-snap-position-values-expected.txt:
* css3/scroll-snap/scroll-snap-position-values.html:
* editing/execCommand/insert-list-with-noneditable-content-expected.txt:
* fast/css/object-position/parsing-object-position-expected.txt:
* fast/css/object-position/parsing-object-position.html:
* fast/css/parsing-css-number-types-expected.txt:
* fast/css/parsing-css-wrap-expected.txt:
* fast/css/script-tests/transform-origin-parsing.js:
* fast/css/transform-inline-style-remove-expected.txt:
* fast/css/transform-origin-parsing-expected.txt:
* fast/css/variables/custom-property-dynamic-update-expected.html:
* fast/events/mouse-cursor-expected.txt:
* fast/inspector-support/style-expected.txt:
* platform/mac/svg/webarchive/svg-script-subresouces-expected.txt:

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

3 years agoVersioning.
matthew_hanson@apple.com [Wed, 7 Dec 2016 16:48:03 +0000 (16:48 +0000)]
Versioning.

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

3 years agoRebaseline fast/table/003.html after r209421.
ryanhaddad@apple.com [Wed, 7 Dec 2016 16:35:35 +0000 (16:35 +0000)]
Rebaseline fast/table/003.html after r209421.
https://bugs.webkit.org/show_bug.cgi?id=165513

Unreviewed test gardening.

* platform/ios-simulator/fast/table/003-expected.txt:

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

3 years ago[iOS] Remove bitrotted FrameLoader attempt to limit page caching under memory pressure.
akling@apple.com [Wed, 7 Dec 2016 16:27:34 +0000 (16:27 +0000)]
[iOS] Remove bitrotted FrameLoader attempt to limit page caching under memory pressure.
<https://webkit.org/b/165527>

Reviewed by Antti Koivisto.

This code no longer does anything, as the page cache is hard capped
at 0 entries while under memory pressure.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::commitProvisionalLoad):

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

3 years ago[JSC] Merge PromiseReactions
utatane.tea@gmail.com [Wed, 7 Dec 2016 15:32:27 +0000 (15:32 +0000)]
[JSC] Merge PromiseReactions
https://bugs.webkit.org/show_bug.cgi?id=165526

Reviewed by Sam Weinig.

Our promise implementation has two arrays per Promise; promiseFulfillReactions and promiseRejectReactions.
And everytime we call `promise.then`, we create two promise reactions for fullfill and reject.
However, these two reactions and the arrays for reactions can be merged into one array and one reaction.
It reduces the unnecessary object allocations.

No behavior change.

* builtins/BuiltinNames.h:
* builtins/PromiseOperations.js:
(globalPrivate.newPromiseReaction):
(globalPrivate.triggerPromiseReactions):
(globalPrivate.rejectPromise):
(globalPrivate.fulfillPromise):
(globalPrivate.promiseReactionJob):
(globalPrivate.initializePromise):
* builtins/PromisePrototype.js:
(then):
* runtime/JSPromise.cpp:
(JSC::JSPromise::finishCreation):

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

3 years ago[GTK][jhbuild] missing dependency on libvpx in gst-plugins-good
philn@webkit.org [Wed, 7 Dec 2016 13:38:57 +0000 (13:38 +0000)]
[GTK][jhbuild] missing dependency on libvpx in gst-plugins-good
https://bugs.webkit.org/show_bug.cgi?id=165525

Reviewed by Carlos Garcia Campos.

* gtk/jhbuild.modules: gst-plugins-good should depend on the
libvpx package built within jhbuild.

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

3 years agoUnreviewed, GTK build fix after r209407.
philn@webkit.org [Wed, 7 Dec 2016 11:14:48 +0000 (11:14 +0000)]
Unreviewed, GTK build fix after r209407.

* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::Connection::processMessage):
* UIProcess/LegacySessionStateCodingNone.cpp:
(WebKit::decodeLegacySessionState):

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

3 years ago[GTK][jhbuild] gst-plugins-bad fails to build with OpenSSL 1.1.0
philn@webkit.org [Wed, 7 Dec 2016 09:15:37 +0000 (09:15 +0000)]
[GTK][jhbuild] gst-plugins-bad fails to build with OpenSSL 1.1.0
https://bugs.webkit.org/show_bug.cgi?id=165520

Reviewed by Carlos Garcia Campos.

* gtk/jhbuild.modules: Added missing dependency on openh264 in
gst-plugins-bad, along with 2 upstream patches fixing the build
against OpenSSL 1.1.0.
* gtk/patches/gst-plugins-bad-0001-dtls-port-to-OpenSSL-1.1.0.patch: Added.
* gtk/patches/gst-plugins-bad-0002-dtlscertificate-Fix-error-checking-in-RSA_generate_k.patch: Added.

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

3 years ago[Modern Media Controls] Use tap and pinch gestures on iOS
graouts@webkit.org [Wed, 7 Dec 2016 07:48:23 +0000 (07:48 +0000)]
[Modern Media Controls] Use tap and pinch gestures on iOS
https://bugs.webkit.org/show_bug.cgi?id=165518

Reviewed by Dean Jackson.

Source/WebCore:

We now use touch events to identify taps and pinches on media controls to respond immediately
to user interaction on buttons and enter fullscreen when pinching out.

* Modules/modern-media-controls/controls/button.css:
(button):
* Modules/modern-media-controls/controls/button.js:
(Button):
(Button.prototype.handleEvent):
(Button.prototype.gestureRecognizerStateDidChange):
(Button.prototype._notifyDelegateOfActivation):
(Button.prototype._handleUIEvent): Deleted.
* Modules/modern-media-controls/controls/controls-bar.js:
(ControlsBar.prototype.set fadesWhileIdle):
(ControlsBar.prototype.gestureRecognizerStateDidChange):
* Modules/modern-media-controls/controls/icon-button.js:
(IconButton.prototype._updateImage):
(IconButton):
* Modules/modern-media-controls/controls/ios-inline-media-controls.js:
(IOSInlineMediaControls.prototype.gestureRecognizerStateDidChange):
* Modules/modern-media-controls/gesture-recognizers/gesture-recognizer.js: Added.
(GestureRecognizer):
(GestureRecognizer.prototype.get state):
(GestureRecognizer.prototype.set state):
(GestureRecognizer.prototype.get target):
(GestureRecognizer.prototype.set target):
(GestureRecognizer.prototype.get numberOfTouches):
(GestureRecognizer.prototype.get enabled):
(GestureRecognizer.prototype.set enabled):
(GestureRecognizer.prototype.reset):
(GestureRecognizer.prototype.locationInElement):
(GestureRecognizer.prototype.locationInClient):
(GestureRecognizer.prototype.locationOfTouchInElement):
(GestureRecognizer.prototype.touchesBegan):
(GestureRecognizer.prototype.touchesMoved):
(GestureRecognizer.prototype.touchesEnded):
(GestureRecognizer.prototype.touchesCancelled):
(GestureRecognizer.prototype.gestureBegan):
(GestureRecognizer.prototype.gestureChanged):
(GestureRecognizer.prototype.gestureEnded):
(GestureRecognizer.prototype.enterPossibleState):
(GestureRecognizer.prototype.enterBeganState):
(GestureRecognizer.prototype.enterEndedState):
(GestureRecognizer.prototype.enterCancelledState):
(GestureRecognizer.prototype.enterFailedState):
(GestureRecognizer.prototype.enterChangedState):
(GestureRecognizer.prototype.enterRecognizedState):
(GestureRecognizer.prototype.handleEvent):
(GestureRecognizer.prototype._initRecognizer):
(GestureRecognizer.prototype._updateBaseListeners):
(GestureRecognizer.prototype._removeTrackingListeners):
(GestureRecognizer.prototype._updateTargetTouches):
(GestureRecognizer.prototype._updateKeyboardModifiers):
* Modules/modern-media-controls/gesture-recognizers/pinch.js: Added.
(PinchGestureRecognizer):
(PinchGestureRecognizer.prototype.get velocity):
(PinchGestureRecognizer.prototype.touchesBegan):
(PinchGestureRecognizer.prototype.touchesMoved):
(PinchGestureRecognizer.prototype.touchesEnded):
(PinchGestureRecognizer.prototype.gestureBegan):
(PinchGestureRecognizer.prototype.gestureChanged):
(PinchGestureRecognizer.prototype.gestureEnded):
(PinchGestureRecognizer.prototype.reset):
(PinchGestureRecognizer.prototype._recordGesture):
(PinchGestureRecognizer.prototype._updateStateWithEvent):
(PinchGestureRecognizer.prototype._distance):
* Modules/modern-media-controls/gesture-recognizers/tap.js: Added.
(TapGestureRecognizer):
(TapGestureRecognizer.prototype.touchesBegan):
(TapGestureRecognizer.prototype.touchesMoved):
(TapGestureRecognizer.prototype.touchesEnded):
(TapGestureRecognizer.prototype.reset):
(TapGestureRecognizer.prototype.locationInElement):
(TapGestureRecognizer.prototype.locationInClient):
(TapGestureRecognizer.prototype._clearTimer):
(TapGestureRecognizer.prototype._rewindTimer):
(TapGestureRecognizer.prototype._timerFired):
* Modules/modern-media-controls/js-files:
* Modules/modern-media-controls/media/airplay-support.js:
(AirplaySupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/controls-visibility-support.js:
(ControlsVisibilitySupport):
(ControlsVisibilitySupport.prototype.handleEvent):
(ControlsVisibilitySupport.prototype.syncControl): Deleted.
* Modules/modern-media-controls/media/fullscreen-support.js:
(FullscreenSupport):
(FullscreenSupport.prototype.iOSInlineMediaControlsRecognizedPinchInGesture):
(FullscreenSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/media-controller-support.js:
(MediaControllerSupport):
(MediaControllerSupport.prototype.handleEvent):
(MediaControllerSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/mute-support.js:
(MuteSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/pip-support.js:
(PiPSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/playback-support.js:
(PlaybackSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/skip-back-support.js:
(SkipBackSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/start-support.js:
(StartSupport.prototype.buttonWasClicked): Deleted.
* Modules/modern-media-controls/media/tracks-support.js:
(TracksSupport.prototype.buttonWasClicked): Deleted.

LayoutTests:

With the addition of new gesture recognizer source files, some tests were failing
due to linking to only a subset of the modern media controls resources.

* media/modern-media-controls/airplay-button/airplay-button.html:
* media/modern-media-controls/aspect-ratio-button/aspect-ratio-button.html:
* media/modern-media-controls/button/button.html:
* media/modern-media-controls/buttons-container/buttons-container-buttons-property.html:
* media/modern-media-controls/buttons-container/buttons-container-constructor.html:
* media/modern-media-controls/buttons-container/buttons-container-layout.html:
* media/modern-media-controls/fullscreen-button/fullscreen-button.html:
* media/modern-media-controls/icon-button/icon-button-active-state.html:
* media/modern-media-controls/icon-button/icon-button.html:
* media/modern-media-controls/mute-button/mute-button.html:
* media/modern-media-controls/pip-button/pip-button.html:
* media/modern-media-controls/placard/placard.html:
* media/modern-media-controls/play-pause-button/play-pause-button.html:
* media/modern-media-controls/skip-back-button/skip-back-button.html:
* media/modern-media-controls/start-button/start-button-styles.html:
* media/modern-media-controls/start-button/start-button.html:
* media/modern-media-controls/tracks-button/tracks-button.html:

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

3 years agoApply styling to media documents with modern controls
dino@apple.com [Wed, 7 Dec 2016 06:07:42 +0000 (06:07 +0000)]
Apply styling to media documents with modern controls
https://bugs.webkit.org/show_bug.cgi?id=165499
<rdar://problems/29543847>

Reviewed by Antoine Quint.

Forgot to commit most of the changes in MediaDocument.cpp :(

* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):

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

3 years agoUnreviewed, rolling out r209422.
ryanhaddad@apple.com [Wed, 7 Dec 2016 05:31:57 +0000 (05:31 +0000)]
Unreviewed, rolling out r209422.

This change caused assertion failures during API tests.

Reverted changeset:

"[MediaStream][Mac] Revoke sandbox extensions when capture
ends"
https://bugs.webkit.org/show_bug.cgi?id=165476
http://trac.webkit.org/changeset/209422

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

3 years agoMarking http/tests/security/module-incorrect-mime-types.html as flaky on ios-simulato...
ryanhaddad@apple.com [Wed, 7 Dec 2016 05:18:56 +0000 (05:18 +0000)]
Marking http/tests/security/module-incorrect-mime-types.html as flaky on ios-simulator-wk2.
https://bugs.webkit.org/show_bug.cgi?id=165344

Unreviewed test gardening.

* platform/ios-simulator-wk2/TestExpectations:

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

3 years agoTwo tiled drawing tests failing with visual viewports enabled.
simon.fraser@apple.com [Wed, 7 Dec 2016 05:14:28 +0000 (05:14 +0000)]
Two tiled drawing tests failing with visual viewports enabled.
https://bugs.webkit.org/show_bug.cgi?id=165489

Reviewed by Dean Jackson.
Source/WebCore:

computeLayoutViewportOrigin() gets called for iframes when the layout viewport
is zero-sized, but the visual viewport is non-zero. It doesn't really make sense
to compute a layout viewport when the visual viewport is larger than the layout
viewport, but if this happens just anchor the layout viewport at the origin
of the visual viewport.

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

LayoutTests:

Unfail and rebaseline.

* platform/mac-wk2/TestExpectations:
* tiled-drawing/scrolling/frames/coordinated-frame-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-in-fixed-expected.txt:

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

3 years agoRemove various stray uses of WebCore::Dictionary
darin@apple.com [Wed, 7 Dec 2016 04:58:23 +0000 (04:58 +0000)]
Remove various stray uses of WebCore::Dictionary
https://bugs.webkit.org/show_bug.cgi?id=165358

Reviewed by Sam Weinig.

I discovered three completely unused classes in the MediaStream code:
MediaTrackConstraint, MediaTrackConstraintSet, and MediaTrackConstraints.
While there is some chance we may implement these at some point, they are
likely to be dictionaries or some other kind of data structure rather than
clases, and there is no reason to keep the current classes.

* CMakeLists.txt: Removed MediaTrackConstraint, MediaTrackConstraintSet,
and MediaTrackConstraints.
* DerivedSources.cpp: Ditto.
* DerivedSources.make: Ditto.

* Modules/indexeddb/IDBDatabase.h: Removed include of Dictionary.h.
* Modules/indexeddb/IDBObjectStore.cpp: Added include of HeapInlines.h.
* Modules/indexeddb/IDBRequest.cpp: Added include of StrongInlines.h.
* Modules/indexeddb/IDBTransaction.cpp: Added include of SerializedScriptValue.h.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getConstraints): Deleted.
This function is implemented entirely in the bindings layer.
* Modules/mediastream/MediaStreamTrack.h: Removed getConstraints.

* Modules/mediastream/MediaTrackConstraint.cpp: Removed.
* Modules/mediastream/MediaTrackConstraint.h: Removed.
* Modules/mediastream/MediaTrackConstraint.idl: Removed.
* Modules/mediastream/MediaTrackConstraintSet.cpp: Removed.
* Modules/mediastream/MediaTrackConstraintSet.h: Removed.
* Modules/mediastream/MediaTrackConstraintSet.idl: Removed.
* Modules/mediastream/MediaTrackConstraints.cpp: Removed.
* Modules/mediastream/MediaTrackConstraints.h: Removed.
* Modules/mediastream/MediaTrackConstraints.idl: Removed.

* Modules/mediastream/NavigatorUserMedia.idl: Use the type names from the latest
getUserMedia specification for the arguments to webkitGetUserMedia; not sure they
are precisely correct for this legacy function, but since this is a JSBuiltin,
it's all ignored anyway. Just important not to call anything "Dictionary".

* WebCore.xcodeproj/project.pbxproj: Removed MediaTrackConstraint, MediaTrackConstraintSet,
and MediaTrackConstraints.

* bindings/js/JSApplePaySessionCustom.cpp:
(WebCore::JSApplePaySession::completeShippingMethodSelection): Use uncheckedArgument, since
the code explicitly checks the number of arguments.
(WebCore::JSApplePaySession::completeShippingContactSelection): Ditto.
(WebCore::JSApplePaySession::completePaymentMethodSelection): Ditto.

* bindings/js/JSFontFaceCustom.cpp: Removed include of Dictionary.h.
* dom/Document.cpp: Ditto.
* dom/Element.cpp: Ditto.

* dom/Element.h: Removed forward declaration of Dictionary.

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

3 years agoAfter preventing a beforeinput event, an input event is fired when formatting rich...
wenson_hsieh@apple.com [Wed, 7 Dec 2016 04:36:55 +0000 (04:36 +0000)]
After preventing a beforeinput event, an input event is fired when formatting rich text
https://bugs.webkit.org/show_bug.cgi?id=165435
<rdar://problem/29522314>

Reviewed by Ryosuke Niwa.

Source/WebCore:

This regressed after I refactored some input event event dispatch logic when formatting text in r208461.
I moved the logic for dispatching input events when applying styles into Editor::applyStyle, but left out an
early return after firing the beforeinput event if the default behavior was prevented, which caused us to
continue on and dispatch an input event. The fix is to bail from applyStyle if default was prevented.

Augmented an existing layout test to cover this case.

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

LayoutTests:

Augmented a layout test to verify that when preventing beforeinput events, a corresponding input event is not
fired in addition to the style not being applied to the text.

* fast/events/before-input-prevent-biu.html:

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

3 years agoFix behavior of background-attachment:fixed with visual viewports
simon.fraser@apple.com [Wed, 7 Dec 2016 04:26:50 +0000 (04:26 +0000)]
Fix behavior of background-attachment:fixed with visual viewports
https://bugs.webkit.org/show_bug.cgi?id=165465

Fixed backgrounds are working correctly. Unskip and land a new image result for this test.

* TestExpectations:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-zoomed-expected.png:

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

3 years agoInclude default value in Experimental Feature information
dino@apple.com [Wed, 7 Dec 2016 04:24:02 +0000 (04:24 +0000)]
Include default value in Experimental Feature information
https://bugs.webkit.org/show_bug.cgi?id=165509
<rdar://problems/29547177>

Reviewed by Tim Horton.

Add a defaultValue member variable to experimental
features, both the C++ and ObjC interfaces.

* UIProcess/API/APIExperimentalFeature.cpp:
(API::ExperimentalFeature::create):
(API::ExperimentalFeature::ExperimentalFeature):
* UIProcess/API/APIExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.h:
* UIProcess/API/Cocoa/_WKExperimentalFeature.mm:
(-[_WKExperimentalFeature description]):
(-[_WKExperimentalFeature defaultValue]):
* UIProcess/WebPreferences.cpp:
(WebKit::createExperimentalFeaturesVector):

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

3 years agoGetByID IC is wrongly unwrapping the global proxy this value for getter/setters.
mark.lam@apple.com [Wed, 7 Dec 2016 03:12:05 +0000 (03:12 +0000)]
GetByID IC is wrongly unwrapping the global proxy this value for getter/setters.
https://bugs.webkit.org/show_bug.cgi?id=165401

Reviewed by Saam Barati.

Source/JavaScriptCore:

When the this value for a property access is the JS global and that property
access is via a GetterSetter, the underlying getter / setter functions would
expect the this value they receive to be the JSProxy instance instead of the
JSGlobalObject.  This is consistent with how the LLINT and runtime code behaves.
The IC code should behave the same way.

Also added some ASSERTs to document invariants in the code, and help detect
bugs sooner if the code gets changed in a way that breaks those invariants in
the future.

* bytecode/PolymorphicAccess.cpp:
(JSC::AccessCase::generateImpl):

LayoutTests:

Set the test loose now that this bug is fixed.

* TestExpectations:
* js/script-tests/prototype-assignment.js:

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

3 years ago[Modern Media Controls] Instantiate iOS media controls
commit-queue@webkit.org [Wed, 7 Dec 2016 03:03:16 +0000 (03:03 +0000)]
[Modern Media Controls] Instantiate iOS media controls
https://bugs.webkit.org/show_bug.cgi?id=165498

Patch by Antoine Quint <graouts@apple.com> on 2016-12-06
Reviewed by Dean Jackson.

Add support for the modern media controls runtime flags in RenderThemeIOS and, when instantiating iOS controls,
return an IOSInlineMediaControls class.

* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype._controlsClass):
(MediaController):
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::mediaControlsStyleSheet):
(WebCore::RenderThemeIOS::mediaControlsScript):
(WebCore::RenderThemeIOS::mediaControlsBase64StringForIconAndPlatform):

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

3 years agoDumpRenderTree ASSERT in JSC::ExecutableBase::isHostFunction seen on bots
commit-queue@webkit.org [Wed, 7 Dec 2016 02:52:35 +0000 (02:52 +0000)]
DumpRenderTree ASSERT in JSC::ExecutableBase::isHostFunction seen on bots
https://bugs.webkit.org/show_bug.cgi?id=165497
<rdar://problem/29538973>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2016-12-06
Reviewed by Saam Barati.

* inspector/agents/InspectorScriptProfilerAgent.cpp:
(Inspector::InspectorScriptProfilerAgent::trackingComplete):
Defer collection when extracting and processing the samples to avoid
any objects held by the samples from getting collected while processing.
This is because while processing we call into functions that can
allocate and we must prevent those functions from syncing with the
GC thread which may collect other sample data yet to be processed.

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

3 years agoApply styling to media documents with modern controls
dino@apple.com [Wed, 7 Dec 2016 01:23:54 +0000 (01:23 +0000)]
Apply styling to media documents with modern controls
https://bugs.webkit.org/show_bug.cgi?id=165499
<rdar://problems/29543847>

Reviewed by Antoine Quint.

Source/WebCore:

Existing MediaDocuments got styling from the injected style
sheet, which had rules for such documents. The modern media controls
use a scoped style rule, so we can't touch the document style. Instead,
inline the style directly from MediaDocument.

Test: media/modern-media-controls/media-documents/background-color-and-centering.html

* html/MediaDocument.cpp:
(WebCore::MediaDocumentParser::createDocumentStructure):

LayoutTests:

Make sure that the small test video has the correct background,
and is not anchored to the top left of the page.

* media/modern-media-controls/media-documents/background-color-and-centering-expected.html: Added.
* media/modern-media-controls/media-documents/background-color-and-centering.html: Added.

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

3 years agoMove RenderElement::rendererForRootBackground to RenderView.
zalan@apple.com [Wed, 7 Dec 2016 01:15:42 +0000 (01:15 +0000)]
Move RenderElement::rendererForRootBackground to RenderView.
https://bugs.webkit.org/show_bug.cgi?id=165454

Reviewed by Simon Fraser.

Currently RenderElement::rendererForRootBackground can only be called on document element's renderer.
This patch removes this limitation and moves the functionality from RenderElement to RenderView.

No change in functionality.

* page/FrameView.cpp:
(WebCore::FrameView::calculateExtendedBackgroundMode):
* rendering/RenderBox.cpp:
(WebCore::RenderBox::paintRootBoxFillLayers):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::rendererForRootBackground): Deleted.
* rendering/RenderElement.h:
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::rendererBackgroundColor):
* rendering/RenderView.cpp:
(WebCore::RenderView::rendererForRootBackground):
(WebCore::rendererObscuresBackground):
(WebCore::RenderView::paintBoxDecorations):
(WebCore::RenderView::rootBackgroundIsEntirelyFixed):
* rendering/RenderView.h:

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

3 years ago[Part 1 of 2] Add support for SPKI format while doing SubtleCrypto.importKey/exportKey
jiewen_tan@apple.com [Wed, 7 Dec 2016 01:15:20 +0000 (01:15 +0000)]
[Part 1 of 2] Add support for SPKI format while doing SubtleCrypto.importKey/exportKey
https://bugs.webkit.org/show_bug.cgi?id=129978
<rdar://problem/21799829>

LayoutTests/imported/w3c:

Reviewed by Brent Fulgham.

* WebCryptoAPI/encrypt_decrypt/test_rsa_oaep-expected.txt:

Source/WebCore:

This is part 1 of Bug 129978. In this patch, it adds the SPKI format support for
SubtleCrypto.importKey/exportKey. Currently support algorithms are RSAES-PKCS1-v1_5,
RSASSA-PKCS1-v1_5 and RSA-OAEP.

Reviewed by Brent Fulgham.

Tests: crypto/subtle/rsa-import-jwk-key-export-spki-key.html
       crypto/subtle/rsa-import-spki-key-export-jwk-key.html
       crypto/subtle/rsa-import-spki-key-export-spki-key.html
       crypto/subtle/rsa-import-spki-small-key.html
       crypto/subtle/rsa-oaep-generate-export-key-spki.html
       crypto/subtle/rsa-oaep-import-spki-key.html
       crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-spki.html
       crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key.html
       crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-spki.html
       crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key.html
       crypto/workers/subtle/rsa-export-spki-key.html
       crypto/workers/subtle/rsa-import-spki-key.html

* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::toKeyData):
* crypto/CommonCryptoUtilities.h:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSAES_PKCS1_v1_5::exportKey):
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::importKey):
(WebCore::CryptoAlgorithmRSASSA_PKCS1_v1_5::exportKey):
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
(WebCore::CryptoAlgorithmRSA_OAEP::importKey):
(WebCore::CryptoAlgorithmRSA_OAEP::exportKey):
* crypto/gnutls/CryptoKeyRSAGnuTLS.cpp:
(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::exportSpki):
* crypto/keys/CryptoKeyRSA.h:
* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::bytesUsedToEncodedLength):
(WebCore::bytesNeededForEncodedLength):
(WebCore::addEncodedASN1Length):
(WebCore::CryptoKeyRSA::importSpki):
(WebCore::CryptoKeyRSA::exportSpki):

LayoutTests:

Reviewed by Brent Fulgham.

* crypto/subtle/import-key-malformed-parameters-expected.txt:
* crypto/subtle/import-key-malformed-parameters.html:
* crypto/subtle/rsa-export-key-malformed-parameters-expected.txt:
* crypto/subtle/rsa-export-key-malformed-parameters.html:
* crypto/subtle/rsa-import-jwk-key-export-spki-key-expected.txt: Added.
* crypto/subtle/rsa-import-jwk-key-export-spki-key.html: Added.
* crypto/subtle/rsa-import-key-malformed-parameters-expected.txt:
* crypto/subtle/rsa-import-key-malformed-parameters.html:
* crypto/subtle/rsa-import-spki-key-export-jwk-key-expected.txt: Added.
* crypto/subtle/rsa-import-spki-key-export-jwk-key.html: Added.
* crypto/subtle/rsa-import-spki-key-export-spki-key-expected.txt: Added.
* crypto/subtle/rsa-import-spki-key-export-spki-key.html: Added.
* crypto/subtle/rsa-import-spki-small-key-expected.txt: Added.
* crypto/subtle/rsa-import-spki-small-key.html: Added.
* crypto/subtle/rsa-oaep-generate-export-key-spki-expected.txt: Added.
* crypto/subtle/rsa-oaep-generate-export-key-spki.html: Added.
* crypto/subtle/rsa-oaep-import-spki-key-expected.txt: Added.
* crypto/subtle/rsa-oaep-import-spki-key.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-spki-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-generate-export-key-spki.html: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key-expected.txt: Added.
* crypto/subtle/rsaes-pkcs1-v1_5-import-spki-key.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-spki-expected.txt: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-generate-export-key-spki.html: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key-expected.txt: Added.
* crypto/subtle/rsassa-pkcs1-v1_5-import-spki-key.html: Added.
* crypto/workers/subtle/resources/rsa-export-spki-key.js: Added.
* crypto/workers/subtle/resources/rsa-import-spki-key.js: Added.
* crypto/workers/subtle/rsa-export-spki-key-expected.txt: Added.
* crypto/workers/subtle/rsa-export-spki-key.html: Added.
* crypto/workers/subtle/rsa-import-spki-key-expected.txt: Added.
* crypto/workers/subtle/rsa-import-spki-key.html: Added.

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

3 years agoFix editing text flakiness introduced in r209411
simon.fraser@apple.com [Wed, 7 Dec 2016 00:46:23 +0000 (00:46 +0000)]
Fix editing text flakiness introduced in r209411
https://bugs.webkit.org/show_bug.cgi?id=165500

Reviewed by Dean Jackson.

The "insideFixed" out param was left uninitialized sometimes. This affected FrameSelection's
m_caretInsidePositionFixed, which caused problems in these tests.

Tested by editing tests in WK1.

* editing/htmlediting.cpp:
(WebCore::absoluteBoundsForLocalCaretRect):

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

3 years agoUnreviewed, rolling out r209391.
commit-queue@webkit.org [Wed, 7 Dec 2016 00:46:02 +0000 (00:46 +0000)]
Unreviewed, rolling out r209391.
https://bugs.webkit.org/show_bug.cgi?id=165501

requires explicit nullptr checks so missing env vars don't
flip AC mode (Requested by mcatanzaro on #webkit).

Reverted changeset:

"[GTK] Process accelerated compositing env variables only if
they are really enabled"
https://bugs.webkit.org/show_bug.cgi?id=165300
http://trac.webkit.org/changeset/209391

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

3 years agoCorrect SDKROOT values in xcconfig files
ap@apple.com [Wed, 7 Dec 2016 00:34:49 +0000 (00:34 +0000)]
Correct SDKROOT values in xcconfig files
https://bugs.webkit.org/show_bug.cgi?id=165487
rdar://problem/29539209

Reviewed by Dan Bernstein.

Fix suggested by Dan Bernstein.

Source/bmalloc:

* Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

* Configurations/DebugRelease.xcconfig:

Source/ThirdParty:

* gtest/xcode/Config/DebugProject.xcconfig:
* gtest/xcode/Config/ReleaseProject.xcconfig:

Source/ThirdParty/ANGLE:

* Configurations/DebugRelease.xcconfig:

Source/WebCore:

* Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

* Configurations/DebugRelease.xcconfig:

Source/WebKit/mac:

* Configurations/DebugRelease.xcconfig:

Source/WebKit2:

* Configurations/DebugRelease.xcconfig:

Source/WTF:

* Configurations/DebugRelease.xcconfig:

Tools:

* ContentExtensionTester/Configurations/DebugRelease.xcconfig:
* DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
* MiniBrowser/Configurations/DebugRelease.xcconfig:
* TestWebKitAPI/Configurations/DebugRelease.xcconfig:
* WebEditingTester/Configurations/DebugRelease.xcconfig:
* WebKitTestRunner/Configurations/DebugRelease.xcconfig:

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

3 years agoRemove old Wasm object model
sbarati@apple.com [Wed, 7 Dec 2016 00:27:58 +0000 (00:27 +0000)]
Remove old Wasm object model
https://bugs.webkit.org/show_bug.cgi?id=165481

Reviewed by Keith Miller and Mark Lam.

Source/JavaScriptCore:

It's confusing to see code that consults both the old
Wasm object model alongside the new one. The old object
model is not a thing, and it's not being used. Let's
remove it now to prevent further confusion.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finalizeLLIntInlineCaches):
(JSC::CodeBlock::replacement):
(JSC::CodeBlock::computeCapabilityLevel):
(JSC::CodeBlock::updateAllPredictions):
* bytecode/CodeBlock.h:
* bytecode/WebAssemblyCodeBlock.cpp: Removed.
* bytecode/WebAssemblyCodeBlock.h: Removed.
* dfg/DFGCapabilities.cpp:
(JSC::DFG::isSupportedForInlining):
* interpreter/Interpreter.cpp:
(JSC::GetStackTraceFunctor::operator()):
(JSC::UnwindFunctor::operator()):
(JSC::isWebAssemblyExecutable): Deleted.
* jit/JITOperations.cpp:
* jit/Repatch.cpp:
(JSC::linkPolymorphicCall):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::setUpCall):
* runtime/ExecutableBase.cpp:
(JSC::ExecutableBase::clearCode):
* runtime/ExecutableBase.h:
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
* runtime/JSFunction.cpp:
* runtime/JSFunction.h:
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::isBuiltinFunction):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
* runtime/WebAssemblyExecutable.cpp: Removed.
* runtime/WebAssemblyExecutable.h: Removed.

Source/WebCore:

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

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

3 years ago[Modern Media Controls] Media controls use the fullscreen layout after going from...
graouts@webkit.org [Tue, 6 Dec 2016 23:48:40 +0000 (23:48 +0000)]
[Modern Media Controls] Media controls use the fullscreen layout after going from inline to fullscreen to PiP to inline
https://bugs.webkit.org/show_bug.cgi?id=165494

Reviewed by Dean Jackson.

We would only call _updateControlsIfNeeded() when entering or leaving fullscreen, so we going from fullscreen to PiP to
inline would retain fullscreen controls since we would not check for the event that indicates we went back from PiP to
inline. On platforms that support it, we listen to the "webkitpresentationmodechanged" event
to update the controls, and only "webkitfullscreenchange" on others (ie. Yosemite).

Test: media/modern-media-controls/media-controller/media-controller-inline-to-fullscreen-to-pip-to-inline.html

* Modules/modern-media-controls/media/media-controller.js:
(MediaController):
(MediaController.prototype.handleEvent):
(MediaController.prototype._returnMediaLayerToInlineIfNeeded):

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

3 years ago[Modern Media Controls] Rendering issues with controls bar when captions are on
graouts@webkit.org [Tue, 6 Dec 2016 23:45:02 +0000 (23:45 +0000)]
[Modern Media Controls] Rendering issues with controls bar when captions are on
https://bugs.webkit.org/show_bug.cgi?id=165390

Reviewed by Dean Jackson.

We would face some layout issues with captions due to RenderImage::layoutShadowControls()
expecting a single RenderBox in the media controls shadow root, which was the case with
legacy media controls, but no longer the case with modern media controls. We now host
both the captions and the media controls elements under a single container, and add
an asertion in RenderImage to check that a single RenderBox child exists.

Test: media/modern-media-controls/media-controller/media-controller-single-container.html

* Modules/modern-media-controls/controls/media-controls.css:
(.media-controls-container):
(.media-controls-container,):
(.media-controls-container > *):
(.media-controls):
* Modules/modern-media-controls/controls/text-tracks.css:
(video::-webkit-media-text-track-container):
* Modules/modern-media-controls/media/media-controller.js:
(MediaController):
(MediaController.prototype._updateControlsIfNeeded):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::layoutShadowControls):

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

3 years ago[Modern Media Controls] Automatically hide the controls bar when the mouse is idle
graouts@webkit.org [Tue, 6 Dec 2016 23:39:21 +0000 (23:39 +0000)]
[Modern Media Controls] Automatically hide the controls bar when the mouse is idle
https://bugs.webkit.org/show_bug.cgi?id=165492

Reviewed by Dean Jackson.

We now automatically hide the controls bar. When the media is no longer paused, the controls remain
visible for 4 seconds, regardless of where the mouse pointer is located. When the user mouses over the
media, the controls become visible and automatically hide 4 seconds after the last time the user has
moved his mouse over the media. When the user mouses out of the media, the controls automatically hide.
When the mouse is over the controls bar, it remains visible. When the media is paused, the controls bar
remain visible regardless of the mouse position.

Tests: media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-and-mouse-leave.html
       media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-enter-over-controls-bar.html
       media/modern-media-controls/media-controller/media-controller-auto-hide-mouse-leave-after-play.html
       media/modern-media-controls/media-controller/media-controller-auto-hide-pause.html
       media/modern-media-controls/media-controller/media-controller-auto-hide-rewind-with-mouse-enter.html
       media/modern-media-controls/media-controller/media-controller-auto-hide.html

* Modules/modern-media-controls/controls/controls-bar.css: Added.
(.controls-bar):
(.controls-bar.faded):
* Modules/modern-media-controls/controls/controls-bar.js:
(ControlsBar.prototype.get userInteractionEnabled):
(ControlsBar.prototype.set userInteractionEnabled):
(ControlsBar.prototype.get fadesWhileIdle):
(ControlsBar.prototype.set fadesWhileIdle):
(ControlsBar.prototype.get visible):
(ControlsBar.prototype.set visible):
(ControlsBar.prototype.get faded):
(ControlsBar.prototype.set faded):
(ControlsBar.prototype.handleEvent):
(ControlsBar.prototype.commitProperty):
(ControlsBar.prototype._cancelAutoHideTimer):
(ControlsBar.prototype._rewindAutoHideTimer):
(ControlsBar.prototype._autoHideTimerFired):
* Modules/modern-media-controls/controls/media-controls.js:
* Modules/modern-media-controls/media/controls-visibility-support.js:
(ControlsVisibilitySupport.prototype.get mediaEvents):
(ControlsVisibilitySupport.prototype.syncControl):
(ControlsVisibilitySupport):
* Modules/modern-media-controls/media/media-controller.js:
(MediaController.prototype._updateControlsIfNeeded):

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

3 years agoPureNaN: fix typo
jfbastien@apple.com [Tue, 6 Dec 2016 23:29:28 +0000 (23:29 +0000)]
PureNaN: fix typo
https://bugs.webkit.org/show_bug.cgi?id=165493

Reviewed by Mark Lam.

* runtime/PureNaN.h:

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

3 years agoTest fast/selectors/040.html fails on iOS Simulator following <https://trac.webkit...
dbates@webkit.org [Tue, 6 Dec 2016 23:24:46 +0000 (23:24 +0000)]
Test fast/selectors/040.html fails on iOS Simulator following <https://trac.webkit.org/changeset/209404>
(https://bugs.webkit.org/show_bug.cgi?id=79694)

Skip test fast/selectors/040.html as we do not visually highlight a programmatic selection on iOS from
observation.

* platform/ios-simulator/TestExpectations:

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

3 years agoCan not select whole line when using flexbox
zalan@apple.com [Tue, 6 Dec 2016 23:06:42 +0000 (23:06 +0000)]
Can not select whole line when using flexbox
https://bugs.webkit.org/show_bug.cgi?id=165299

Reviewed by David Hyatt.

Source/WebCore:

RootInlineBox::selectionTopAdjustedForPrecedingBlock assumes that the preceding block is
always above the current line. However in certain layout contexts (flex as an example) the block before
could just be on the same line as the current one.

This patch checks if we actually need to adjust the selection top to avoid vertical selection overlap.

Test: fast/flexbox/flexbox-fail-to-select-same-line.html

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::blockBeforeWithinSelectionRoot): Deleted.
* rendering/RenderBlock.h:
* rendering/RootInlineBox.cpp:
(WebCore::blockBeforeWithinSelectionRoot):
(WebCore::RootInlineBox::selectionTopAdjustedForPrecedingBlock):

LayoutTests:

* fast/flexbox/flexbox-fail-to-select-same-line-expected.html: Added.
* fast/flexbox/flexbox-fail-to-select-same-line.html: Added.

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

3 years agoAdd more assertions to ElementQueue diagnose a bug
rniwa@webkit.org [Tue, 6 Dec 2016 23:01:56 +0000 (23:01 +0000)]
Add more assertions to ElementQueue diagnose a bug
https://bugs.webkit.org/show_bug.cgi?id=164814

Reviewed by Alexey Proskuryakov.

Set m_invoking in release builds now that assertions are also run in release builds.

* dom/CustomElementReactionQueue.cpp:
(WebCore::CustomElementReactionStack::ElementQueue::invokeAll):

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

3 years agoYouTube sometimes pauses when switching tabs
jer.noble@apple.com [Tue, 6 Dec 2016 22:48:17 +0000 (22:48 +0000)]
YouTube sometimes pauses when switching tabs
https://bugs.webkit.org/show_bug.cgi?id=165468

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-session-restrictions.html

The bitfield which represents the restrictions for "VideoAudio" media type was unititialized,
leading to what was effectively a random set of restrictions at runtime.

* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::resetRestrictions):
* testing/Internals.cpp:
(WebCore::mediaTypeFromString):
(WebCore::Internals::setMediaSessionRestrictions):
(WebCore::Internals::mediaSessionRestrictions):
* testing/Internals.h:
* testing/Internals.idl:

LayoutTests:

* media/media-session-restrictions.html: Added.
* platform/ios-simulator/media/media-session-restrictions-expected.txt: Added.
* platform/mac/media/media-session-restrictions-expected.txt: Added.

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

3 years agoIntroduce the concept of Immutable Prototype Exotic Objects to comply with the spec.
mark.lam@apple.com [Tue, 6 Dec 2016 22:43:16 +0000 (22:43 +0000)]
Introduce the concept of Immutable Prototype Exotic Objects to comply with the spec.
https://bugs.webkit.org/show_bug.cgi?id=165227
<rdar://problem/29442665>

Reviewed by Saam Barati.

JSTests:

* stress/get-from-scope-dynamic-onto-proxy.js:
- Updated error message.

* stress/proxy-dont-infinite-loop.js: Removed.
* stress/proxy-json-path.js: Removed.
* stress/rest-parameter-allocation-elimination-watchpoints-6.js: Removed.
- Removed these tests because the issue they are testing relies on being able to
  set Object.prototype.__proto__ to something else (which is now not possible).

Source/JavaScriptCore:

* runtime/JSObject.cpp:
(JSC::JSObject::setPrototypeWithCycleCheck):
- This is where we check for immutable prototype exotic objects and refuse to set
  the prototype if needed.
  See https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects.

* runtime/JSTypeInfo.h:
(JSC::TypeInfo::isImmutablePrototypeExoticObject):
* runtime/Structure.h:
- Add flag for declaring immutable prototype exotic objects.

* runtime/ObjectPrototype.h:
- Declare that Object.prototype is an immutable prototype exotic object.
  See https://tc39.github.io/ecma262/#sec-properties-of-the-object-prototype-object.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorSetPrototypeOf):
- Use better error messages.

Source/WebCore:

Make all objects in window.__proto__'s prototype chain immutable prototype exotic
objects.  This gives us roughly equivalent behavior to other browsers.

Firefox's behavior differ slightly in that Firefox will fail any attempted
assignment their __proto__, while the immutable prototype exotic objects will
only fail if the assignment is of a different value.  See
https://tc39.github.io/ecma262/#sec-immutable-prototype-exotic-objects.

Chrome differs in that assignment to window.__proto__ is also handled like an
immutable prototype exotic object.  Instead we adhere to the current HTML spec
that says that the assignment should fail unconditionally.  See
https://html.spec.whatwg.org/#the-windowproxy-exotic-object and
https://html.spec.whatwg.org/#windowproxy-setprototypeof.

If the HTML spec is changed to make the WindowProxy and Location objects into
immutable prototype exotic objects later, we can update to match the spec then.

Test: js/prototype-assignment.html

* bindings/js/JSDOMWindowProperties.h:
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GeneratePrototypeDeclaration):
* bindings/scripts/IDLAttributes.txt:
* dom/EventTarget.idl:
* page/DOMWindow.idl:

LayoutTests:

The new prototype-assignment.js test is currently only enabled for LLInt only
run in the JSC tests until webkit.org/b/165401 is fixed.

* TestExpectations:
- Skip js/prototype-assignment.html for now until webkit.org/b/165401 is fixed.

* http/tests/security/window-named-valueOf-expected.txt:
* js/dom/proxy-is-not-allowed-in-global-prototype-chain-expected.txt:
* js/dom/proxy-is-not-allowed-in-global-prototype-chain.html:
- Updated error messages.

* js/prototype-assignment-expected.txt: Added.
* js/prototype-assignment.html: Added.
* js/script-tests/prototype-assignment.js: Added.
(else):
(reportError):
(shouldEqual):
(shouldThrow):
(stringify):
(makeTestID):
(doInternalSetPrototypeOf):
(ordinarySetPrototypeOf):
(setImmutablePrototype):
(windowProxySetPrototypeOf):
(initSetterExpectation):
(throwIfNoExceptionPending):
(objectSetPrototypeOf):
(setUnderscoreProto):
(reflectSetPrototypeOf):
(newObjectProto.toString):
(this.testObject.targets.push.value):
(this.testProxy.targets.push.setPrototypeOf):
(Symbol):
(test):
(runTests):
* js/setPrototypeOf-expected.txt:

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

3 years ago[Cocoa] Add some memory usage related information to sysdiagnose state dumps
akling@apple.com [Tue, 6 Dec 2016 22:38:45 +0000 (22:38 +0000)]
[Cocoa] Add some memory usage related information to sysdiagnose state dumps
<https://webkit.org/b/165375>
<rdar://problem/29057243>

Reviewed by Darin Adler.

Follow-up to address two more review comments.

Source/WebCore:

* page/PerformanceLogging.cpp:
(WebCore::PerformanceLogging::javaScriptObjectCounts): Use WTFMove() when returning the
HashCountedSet to avoid making an extra copy.

Source/WebKit2:

* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::registerWithStateDumper): Use adoptNS() instead of autorelease for NSStrings.

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

3 years ago[MediaStream][Mac] Revoke sandbox extensions when capture ends
eric.carlson@apple.com [Tue, 6 Dec 2016 22:32:45 +0000 (22:32 +0000)]
[MediaStream][Mac] Revoke sandbox extensions when capture ends
https://bugs.webkit.org/show_bug.cgi?id=165476

Reviewed by Brady Eidson.

Track media capture by process so it is possible to revoke the sandbox extensions issued to
a web process when capture stops.

* CMakeLists.txt: Add new files.

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::UserMediaPermissionRequestManagerProxy): Register
  with process manager.
(WebKit::UserMediaPermissionRequestManagerProxy::~UserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Move sandbox
  extension code to the process manager.
(WebKit::UserMediaPermissionRequestManagerProxy::stopCapture): New.
(WebKit::UserMediaPermissionRequestManagerProxy::startedCaptureSession): New, report state
  change to the process manager.
(WebKit::UserMediaPermissionRequestManagerProxy::endedCaptureSession): Ditto.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:

* UIProcess/UserMediaProcessManager.cpp: Added.
(WebKit::ProcessState::ProcessState):
(WebKit::ProcessState::managers):
(WebKit::ProcessState::sandboxExtensionsGranted):
(WebKit::ProcessState::setSandboxExtensionsGranted):
(WebKit::stateMap):
(WebKit::processState):
(WebKit::ProcessState::addRequestManager):
(WebKit::ProcessState::removeRequestManager):
(WebKit::UserMediaProcessManager::singleton):
(WebKit::UserMediaProcessManager::addUserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaProcessManager::removeUserMediaPermissionRequestManagerProxy):
(WebKit::UserMediaProcessManager::willCreateMediaStream):
(WebKit::UserMediaProcessManager::startedCaptureSession):
(WebKit::UserMediaProcessManager::endedCaptureSession):
* UIProcess/UserMediaProcessManager.h: Added.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isPlayingMediaDidChange): Report capture state changes to the request
  manager proxy.
* UIProcess/WebPageProxy.h:

* WebKit2.xcodeproj/project.pbxproj: Add new files.

* WebProcess/MediaStream/MediaDeviceSandboxExtensions.cpp: Added.
(WebKit::MediaDeviceSandboxExtensions::MediaDeviceSandboxExtensions):
(WebKit::MediaDeviceSandboxExtensions::encode):
(WebKit::MediaDeviceSandboxExtensions::decode):
(WebKit::MediaDeviceSandboxExtensions::operator[]):
(WebKit::MediaDeviceSandboxExtensions::size):
* WebProcess/MediaStream/MediaDeviceSandboxExtensions.h: Added.

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager): Sandbox extension
  is now in a HashMap, not a Vector.
(WebKit::UserMediaPermissionRequestManager::grantUserMediaDeviceSandboxExtensions): Record
  IDs with extensions so they can be revoked later.
(WebKit::UserMediaPermissionRequestManager::revokeUserMediaDeviceSandboxExtensions): New.
(WebKit::UserMediaPermissionRequestManager::grantUserMediaDevicesSandboxExtension): Deleted.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::grantUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::revokeUserMediaDeviceSandboxExtensions):
(WebKit::WebPage::grantUserMediaDevicesSandboxExtension): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

3 years agoREGRESSION (Safari 10): Scrolling not working inside height 100% table
hyatt@apple.com [Tue, 6 Dec 2016 22:31:45 +0000 (22:31 +0000)]
REGRESSION (Safari 10): Scrolling not working inside height 100% table
https://bugs.webkit.org/show_bug.cgi?id=164366
<rdar://problem/29095535>

Reviewed by Zalan Bujtas.

Source/WebCore:

Added fast/table/overflow-percent-height-regression.html

* rendering/RenderBox.cpp:
(WebCore::RenderBox::computePercentageLogicalHeight):
This patch wasn't merged correctly from Blink. The value returned needed
to be 0, not unset.

LayoutTests:

* fast/table/overflow-percent-height-regression-expected.html: Added.
* fast/table/overflow-percent-height-regression.html: Added.

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

3 years agoRebaseline fast/shadow-dom/slotted-pseudo-element-css-text.html after r209396.
ryanhaddad@apple.com [Tue, 6 Dec 2016 22:21:36 +0000 (22:21 +0000)]
Rebaseline fast/shadow-dom/slotted-pseudo-element-css-text.html after r209396.

Unreviewed test gardening.

* fast/shadow-dom/slotted-pseudo-element-css-text-expected.txt:

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

3 years agoMark two tiled-drawing tests as flakey. Layout viewport rect computation has issues...
simon.fraser@apple.com [Tue, 6 Dec 2016 22:10:19 +0000 (22:10 +0000)]
Mark two tiled-drawing tests as flakey. Layout viewport rect computation has issues in subframes,
covered by https://bugs.webkit.org/show_bug.cgi?id=165489.

* platform/mac-wk2/TestExpectations:
* tiled-drawing/scrolling/frames/coordinated-frame-gain-scrolling-ancestor-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-lose-scrolling-ancestor-expected.txt:

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

3 years agoAdd a new MachMessage class and use it for sending outgoing messages
andersca@apple.com [Tue, 6 Dec 2016 21:59:51 +0000 (21:59 +0000)]
Add a new MachMessage class and use it for sending outgoing messages
https://bugs.webkit.org/show_bug.cgi?id=165484

Reviewed by Sam Weinig.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::Connection::sendOutgoingMessage):
Instead of trying to randomly use memory from the stack as well as using mmap for the message data for out of line messages
(which makes no sense at all, since the body data is already mmapped), just always create a MachMessage object and use it.

(IPC::machMessageSize): Deleted.
This has been moved to MachMessage::messageSize().

* Platform/IPC/mac/MachMessage.cpp: Added.
(IPC::MachMessage::create):
Allocate extra memory to store the actual buffer.

(IPC::MachMessage::MachMessage):
Initialize variables. m_size isn't really used right now, but will be in a subsequent patch.

(IPC::MachMessage::header):
Return the header.

* Platform/IPC/mac/MachMessage.h: Added.
(IPC::MachMessage::length):

* WebKit2.xcodeproj/project.pbxproj:
Add new files.

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

3 years agoREGRESSION: media/track LayoutTests are flaky failures
weinig@apple.com [Tue, 6 Dec 2016 21:52:18 +0000 (21:52 +0000)]
REGRESSION: media/track LayoutTests are flaky failures
https://bugs.webkit.org/show_bug.cgi?id=165432

Reviewed by Antoine Quint.

RenderThemeMac was caching the media controls script / style sheets
and not being invalidated when the RuntimeEnabledFeatures changed. So,
we can just cache both.

* bindings/generic/RuntimeEnabledFeatures.h:
Initialize m_areModernMediaControlsEnabled to false.

* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::mediaControlsStyleSheet):
(WebCore::RenderThemeMac::mediaControlsScript):
Have separate caches for the modern and legacy media control scripts/style sheets.

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

3 years agoDumpRenderTree crashed in com.apple.WebCore: WebCore::MockMediaEndpoint::generateDtls...
weinig@apple.com [Tue, 6 Dec 2016 21:45:00 +0000 (21:45 +0000)]
DumpRenderTree crashed in com.apple.WebCore: WebCore::MockMediaEndpoint::generateDtlsInfo const + 23
https://bugs.webkit.org/show_bug.cgi?id=165486
<rdar://problem/29149588>

Reviewed by Tim Horton.

The MockMediaEndpoint can be destroyed before the task created in MockMediaEndpoint::generateDtlsInfo()
gets a chance to run, so guard it with a weak pointer.

* platform/mock/MockMediaEndpoint.cpp:
(WebCore::MockMediaEndpoint::MockMediaEndpoint):
(WebCore::MockMediaEndpoint::generateDtlsInfo):
* platform/mock/MockMediaEndpoint.h:

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

3 years agoAdd HTML interactive form validation blacklist for some WebKit-specific sites
cdumez@apple.com [Tue, 6 Dec 2016 21:40:02 +0000 (21:40 +0000)]
Add HTML interactive form validation blacklist for some WebKit-specific sites
https://bugs.webkit.org/show_bug.cgi?id=165470
<rdar://problem/29509424>

Reviewed by Simon Fraser.

Add HTML interactive form validation blacklist for some WebKit-specific sites
expecting our old behavior, until they get a chance to be updated.

* html/HTMLFormElement.cpp:
(WebCore::isURLBlacklistedForInteractiveFormValidation):
(WebCore::HTMLFormElement::prepareForSubmission):

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

3 years agoUnreviewed, rollout r209050.
cdumez@apple.com [Tue, 6 Dec 2016 21:34:38 +0000 (21:34 +0000)]
Unreviewed, rollout r209050.

This change may impact other popovers than the HTML validation one.
The previous code is safer.

* platform/ValidationBubble.h:
* platform/ios/ValidationBubbleIOS.mm:
(-[WebValidationBubbleDelegate adaptivePresentationStyleForPresentationController:traitCollection:]):
(WebCore::ValidationBubble::setAnchorRect):
* platform/spi/ios/UIKitSPI.h:

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

3 years agoREGRESSION(r209399): Causes crashes when dumping JIT disassembly
msaboff@apple.com [Tue, 6 Dec 2016 21:03:43 +0000 (21:03 +0000)]
REGRESSION(r209399): Causes crashes when dumping JIT disassembly
https://bugs.webkit.org/show_bug.cgi?id=165483

Reviewed by Geoffrey Garen.

Fixed the RELEASE_ASSERT() to check that the 6 character string is terminated by a null
character.

* wtf/SixCharacterHash.cpp:
(WTF::sixCharacterHashStringToInteger):

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

3 years agoREGRESSION (r209396): animations/font-variations/font-variation-settings* tests timin...
hyatt@apple.com [Tue, 6 Dec 2016 20:33:49 +0000 (20:33 +0000)]
REGRESSION (r209396): animations/font-variations/font-variation-settings* tests timing out
https://bugs.webkit.org/show_bug.cgi?id=165475

Reviewed by Myles C. Maxfield.

The new parser only allows strings for @keyframe names when @-webkit-keyframe is used. Patch
the tests to use identifiers instead.

* animations/font-variations/font-variation-settings-order.html:
* animations/font-variations/font-variation-settings-unlike.html:
* animations/font-variations/font-variation-settings.html:

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

3 years agoImprove the behavior of scroll-into-view when the target is inside position:fixed
simon.fraser@apple.com [Tue, 6 Dec 2016 20:00:28 +0000 (20:00 +0000)]
Improve the behavior of scroll-into-view when the target is inside position:fixed
https://bugs.webkit.org/show_bug.cgi?id=165354

Reviewed by Zalan Bujtas.
Source/WebCore:

The existing RenderLayer::scrollRectToVisible() code paid no heed to whether the
target was inside position:fixed, resulting in unwanted scrolls.

Fix this by plumbing through from the call sites a "insideFixed" flag which we get
when we call localToAbsolute(), and use this flag to avoid scrolling at all if
unzoomed.

If zoomed and we're focussing something inside position:fixed, and if visual viewports
are enabled, we can compute the visual viewport required to reveal the target rect,
which gives us the ideal scroll position.

Fix a bug on non-iOS platforms when zoomed, which is to scale the viewRect since
frameView.visibleContentRect() gives an unscaled rect on those platforms.

Not all callers of scrollRectToVisible() are fixed, but those that are not will get
the current behavior.

Tests: fast/overflow/scroll-anchor-in-position-fixed.html
       fast/visual-viewport/zoomed-scroll-into-view-fixed.html
       fast/visual-viewport/zoomed-scroll-to-anchor-in-position-fixed.html

* dom/Element.cpp:
(WebCore::Element::scrollIntoView):
(WebCore::Element::scrollIntoViewIfNeeded):
(WebCore::Element::scrollIntoViewIfNotVisible):
(WebCore::Element::updateFocusAppearance):
* editing/FrameSelection.cpp:
(WebCore::FrameSelection::FrameSelection):
(WebCore::FrameSelection::absoluteCaretBounds):
(WebCore::FrameSelection::recomputeCaretRect):
(WebCore::FrameSelection::revealSelection):
* editing/FrameSelection.h:
* editing/VisiblePosition.cpp:
(WebCore::VisiblePosition::absoluteCaretBounds):
* editing/VisiblePosition.h:
* editing/htmlediting.cpp:
(WebCore::absoluteBoundsForLocalCaretRect):
* editing/htmlediting.h:
* page/FrameView.cpp:
(WebCore::FrameView::scrollElementToRect):
(WebCore::FrameView::scrollToAnchor):
* page/PrintContext.cpp:
(WebCore::PrintContext::outputLinkedDestinations):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::getLeadingCorner):
(WebCore::RenderElement::getTrailingCorner):
(WebCore::RenderElement::absoluteAnchorRect):
(WebCore::RenderElement::anchorRect): Deleted.
* rendering/RenderElement.h:
* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::scrollRectToVisible):
(WebCore::RenderLayer::getRectToExpose):
(WebCore::RenderLayer::autoscroll):
* rendering/RenderLayer.h:
* rendering/RenderObject.cpp:
(WebCore::RenderObject::scrollRectToVisible):
* rendering/RenderObject.h:

Source/WebKit/mac:

Plumb through 'insideFixed'. We don't get compute it, so behavior from
these call sites won't change.

* WebView/WebFrame.mm:
(-[WebFrame _scrollDOMRangeToVisible:]):
(-[WebFrame _scrollDOMRangeToVisible:withInset:]):

LayoutTests:

* fast/overflow/scroll-anchor-in-position-fixed-expected.txt: Added.
* fast/overflow/scroll-anchor-in-position-fixed.html: Added.
* fast/transforms/selection-bounds-in-transformed-view.html:
* fast/visual-viewport/zoomed-scroll-into-view-fixed-expected.txt: Added.
* fast/visual-viewport/zoomed-scroll-into-view-fixed.html: Added.
* fast/visual-viewport/zoomed-scroll-to-anchor-in-position-fixed-expected.txt: Added.
* fast/visual-viewport/zoomed-scroll-to-anchor-in-position-fixed.html: Added.
* platform/ios-simulator/TestExpectations:

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

3 years ago[Cocoa] REGRESSION(r205396): Intermediate CTRuns with initial advances get double...
mmaxfield@apple.com [Tue, 6 Dec 2016 19:54:49 +0000 (19:54 +0000)]
[Cocoa] REGRESSION(r205396): Intermediate CTRuns with initial advances get double counted when glyph origins are enabled
https://bugs.webkit.org/show_bug.cgi?id=165084

Reviewed by Simon Fraser.

Source/WebCore:

When glyph origins are not enabled, an intermediate CTRun's initial advance is simply added
to the previous glyph's advance. However, when glyph origins are enabled, this shouldn't
occur.

Test: fast/text/initial-advance-in-intermediate-run-complex.html

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

LayoutTests:

* fast/text/initial-advance-in-intermediate-run-complex-expected.html: Added.
* fast/text/initial-advance-in-intermediate-run-complex.html: Added.
* platform/ios-simulator/TestExpectations: Disable the test on iOS because it relies
on Arial being used to draw Arabic, which we explicitly don't allow.

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

3 years agoEnable visual viewports by default on Mac, and iOS Wk2
simon.fraser@apple.com [Tue, 6 Dec 2016 19:39:32 +0000 (19:39 +0000)]
Enable visual viewports by default on Mac, and iOS Wk2
https://bugs.webkit.org/show_bug.cgi?id=165452

Reviewed by Zalan Bujtas.

Source/WebCore:

Some tests revealed an issue where, during scrollbar updates, the visual viewport would be
15px wider than the layout viewport, which results in the layout viewport shifting 15px to the
right. Prevent this by disallowing viewport updates during the AdjustViewSize phase; we'll
be called again in postLayoutTasks.

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

Source/WebKit/mac:

Turn visual viewports on by default for WK1 on Mac.

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

Source/WebKit2:

Turn visual viewports on by default for WK2.

* Shared/WebPreferencesDefinitions.h:

LayoutTests:

Skip, fix or adjust tests for visual viewports.

* TestExpectations:
* animations/trigger-container-scroll-boundaries.html:
* animations/trigger-container-scroll-empty.html:
* animations/trigger-container-scroll-simple.html:
* compositing/geometry/fixed-position-composited-page-scale-smaller-than-viewport.html:
* compositing/layer-creation/fixed-position-out-of-view-scaled-expected.txt:
* compositing/layer-creation/fixed-position-out-of-view-scaled-scroll-expected.txt:
* fast/scrolling/ios/remove-scrolling-role-expected.txt:
* fast/zooming/client-rect-in-fixed-zoomed-expected.txt:
* fast/zooming/client-rect-in-fixed-zoomed.html:
* platform/ios-simulator-wk2/compositing/geometry/fixed-in-composited-expected.txt: Removed.
* platform/ios-simulator-wk2/compositing/geometry/limit-layer-bounds-fixed-expected.txt:
* platform/ios-simulator-wk2/compositing/geometry/limit-layer-bounds-fixed-positioned-expected.txt:
* platform/ios-simulator-wk2/compositing/layer-creation/fixed-position-under-transform-expected.txt:
* platform/ios-simulator-wk2/compositing/layer-creation/no-compositing-for-sticky-expected.txt:
* platform/ios-simulator-wk2/fast/overflow/position-fixed-transform-clipping-expected.txt:
* platform/ios-simulator/compositing/absolute-inside-out-of-view-fixed-expected.txt:
* platform/ios-simulator/compositing/geometry/fixed-in-composited-expected.txt:
* scrollingcoordinator/ios/non-stable-viewport-scroll-expected.txt:
* scrollingcoordinator/ios/ui-scrolling-tree-expected.txt:
* tiled-drawing/fixed-layout-size-fixed-attachment-cover.html:
* tiled-drawing/fixed-layout-size-fixed-attachment-local.html:
* tiled-drawing/scrolling/clamp-out-of-bounds-scrolls-expected.txt:
* tiled-drawing/scrolling/fixed-background/fixed-body-background-zoomed-expected.txt:
* tiled-drawing/scrolling/fixed/absolute-inside-fixed-expected.txt:
* tiled-drawing/scrolling/fixed/absolute-inside-out-of-view-fixed-expected.txt:
* tiled-drawing/scrolling/fixed/fixed-in-overflow-expected.txt:
* tiled-drawing/scrolling/fixed/fixed-position-out-of-view-expected.txt:
* tiled-drawing/scrolling/fixed/fixed-position-out-of-view-negative-zindex-expected.txt:
* tiled-drawing/scrolling/fixed/four-bars-expected.txt:
* tiled-drawing/scrolling/fixed/four-bars-with-header-and-footer-expected.txt:
* tiled-drawing/scrolling/fixed/four-bars-zoomed-expected.txt:
* tiled-drawing/scrolling/fixed/negative-scroll-offset-expected.txt:
* tiled-drawing/scrolling/fixed/negative-scroll-offset-in-view-expected.txt:
* tiled-drawing/scrolling/fixed/nested-fixed-expected.txt:
* tiled-drawing/scrolling/fixed/percentage-inside-fixed-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-gain-scrolling-ancestor-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-in-fixed-expected.txt:
* tiled-drawing/scrolling/frames/coordinated-frame-lose-scrolling-ancestor-expected.txt:
* tiled-drawing/scrolling/frames/fixed-inside-frame-expected.txt:
* tiled-drawing/scrolling/frames/frameset-frame-scrollability-expected.txt:
* tiled-drawing/scrolling/frames/frameset-nested-frame-scrollability-expected.txt:
* tiled-drawing/scrolling/frames/remove-coordinated-frame-expected.txt:
* tiled-drawing/scrolling/frames/scroll-region-after-frame-layout-expected.txt:
* tiled-drawing/scrolling/scrolling-tree-after-scroll-expected.txt:
* tiled-drawing/scrolling/scrolling-tree-slow-scrolling-expected.txt:
* tiled-drawing/scrolling/sticky/negative-scroll-offset-expected.txt:
* tiled-drawing/scrolling/sticky/sticky-horizontal-expected.txt:
* tiled-drawing/scrolling/sticky/sticky-vertical-expected.txt:

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

3 years agoWebKitTestRunner: Plugins are disabled in new windows
dbates@webkit.org [Tue, 6 Dec 2016 19:35:56 +0000 (19:35 +0000)]
WebKitTestRunner: Plugins are disabled in new windows
https://bugs.webkit.org/show_bug.cgi?id=165410

Reviewed by Alex Christensen.

Source/WebKit2:

Remove SPI exposed to explicitly toggle plugins from WebKitTestRunner.
Instead we will update WebKitTestRunner to make use of the SPI
WKBundleOverrideBoolPreferenceForTestRunner() to toggle plugins in
all windows.

* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleSetPluginsEnabled): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::setPluginsEnabled): Deleted.

Tools:

Currently WebKitTestRunner only enables plugins in the main window. So, a test that opens
a new window and loads a plugin will fail. We should enable plugins in all windows by
default. Moreover toggling testRunner.setPluginsEnabled() should effect all windows.

Making these changes is a step towards running plugins/open-and-close-window-with-plugin.html
in WebKitTestRunner (we still need to fix <https://bugs.webkit.org/show_bug.cgi?id=46714>) and
will make the behavior of WebKitTestRunner more closely match the behavior DumpRenderTree.

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting): Call TestRunner::setPluginsEnabled() instead of
WKBundleSetPluginsEnabled().
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setPluginsEnabled): Take a similar approach as TestRunner::setXSSAuditorEnabled()
and make use of WKBundleOverrideBoolPreferenceForTestRunner().

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

3 years agoDon't memcpy out of line data
andersca@apple.com [Tue, 6 Dec 2016 19:20:19 +0000 (19:20 +0000)]
Don't memcpy out of line data
https://bugs.webkit.org/show_bug.cgi?id=165434

Reviewed by Sam Weinig.

Change the Decoder constructor to take a buffer deallocator parameter. If the buffer deallocator is null, the
data will be copied as before. Otherwise, the memory will be adopted by the Decoder object, and will be deallocated
by invoking the data deallocator.

* Platform/IPC/Decoder.cpp:
(IPC::copyBuffer):
Add a new helper.

(IPC::Decoder::Decoder):
Copy the buffer if the deallocator is null.

(IPC::Decoder::~Decoder):
Invoke the deallocator or call fastFree if it is null.

(IPC::Decoder::unwrapForTesting):
Update constructor.

(IPC::roundUpToAlignment):
(IPC::Decoder::alignBufferPosition):
(IPC::Decoder::decodeVariableLengthByteArray):
(IPC::decodeValueFromBuffer):
Change all these to deal with const pointers.

* Platform/IPC/Decoder.h:
Add new members.

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::createMessageDecoder):
When we have out of line data, pass a deallocator that calls vm_deallocate, instead of copying the data
and then immediately throwing the original away.

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

3 years agoSkip modern-media-controls tests until flakiness can be resolved.
ryanhaddad@apple.com [Tue, 6 Dec 2016 19:07:56 +0000 (19:07 +0000)]
Skip modern-media-controls tests until flakiness can be resolved.
https://bugs.webkit.org/show_bug.cgi?id=164784

Unreviewed test gardening.

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

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

3 years agoAlmost half-second stall scrolling apple.com because of synchronous getPositionInform...
timothy_horton@apple.com [Tue, 6 Dec 2016 18:24:28 +0000 (18:24 +0000)]
Almost half-second stall scrolling apple.com because of synchronous getPositionInformation
https://bugs.webkit.org/show_bug.cgi?id=165403
<rdar://problem/29493285>

Reviewed by Enrica Casucci.

When retrieving interaction information, we don't always need to do
snapshots for 3D Touch or the action sheet, especially if we're
synchronously blocking the UI process main thread waiting for the reply.

Add a new InteractionInformationRequest, which allows callers of
getPositionInformation and requestPositionInformation to specify which
optional pieces of information they would like to compute.

* Shared/AssistedNodeInformation.h:
Fix a incorrect comment.

* Shared/ios/InteractionInformationRequest.cpp: Added.
(WebKit::InteractionInformationRequest::encode):
(WebKit::InteractionInformationRequest::decode):
(WebKit::InteractionInformationRequest::isValidForRequest):
* Shared/ios/InteractionInformationRequest.h: Added.
(WebKit::InteractionInformationRequest::InteractionInformationRequest):
* WebKit2.xcodeproj/project.pbxproj:
Add InteractionInformationRequest, which encapsulates all of the
parameters required to generate an InteractionInformationAtPosition.
Previously, that was just a point, but now we have two new parameters:
whether we should generate a snapshot of the element, and whether
we should generate a TextIndicator if the element is a link.

* Shared/ios/InteractionInformationAtPosition.h:
* Shared/ios/InteractionInformationAtPosition.mm:
(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):
(WebKit::InteractionInformationAtPosition::mergeCompatibleOptionalInformation):
Adopt InteractionInformationRequest.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::getPositionInformation):
(WebKit::WebPageProxy::requestPositionInformation):
* UIProcess/ios/WKActionSheetAssistant.mm:
(-[WKActionSheetAssistant initialPresentationRectInHostViewForSheet]):
(-[WKActionSheetAssistant presentationRectInHostViewForSheet]):
(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant showLinkSheet]):
* UIProcess/ios/WKPDFView.mm:
(-[WKPDFView annotation:isBeingPressedAtPoint:controller:]):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
Adopt InteractionInformationRequest.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showAttachmentSheet]):
(-[WKContentView ensurePositionInformationIsUpToDate:]):
If we have a outstanding asynchronous position information request
for the current point, instead of sending a second separate request,
just wait for the async one to come in.

(-[WKContentView requestAsynchronousPositionInformationUpdate:]):
If asked to do an asynchronous request with more optional bits than
the current otherwise-valid response's request, update the position information.

(-[WKContentView gestureRecognizerShouldBegin:]):
The design of this mechanism is that during the highlight long press,
we do an async position information update, and then when we actually
begin a 3D Touch gesture, we hope to already have the requisite snapshots
ready (so that we can avoid synchronously blocking for them, there).
So, in the highlight long-press async request, ask for all the goodies.

(-[WKContentView hasSelectablePositionAtPoint:]):
(-[WKContentView pointIsNearMarkedText:]):
(-[WKContentView pointIsInAssistedNode:]):
(-[WKContentView _didNotHandleTapAsClick:]):
(-[WKContentView _positionInformationDidChange:]):
If we get a position information update for the same point, but with less
goodies attached (the snapshot/link indicator), copy them over from the old
position information, so that we never accidentally "downgrade" our info.

(-[WKContentView updatePositionInformationForActionSheetAssistant:]):
(-[WKContentView actionSheetAssistant:willStartInteractionWithElement:]):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
More adoption.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleTap):
(WebKit::WebPage::handleTwoFingerTapAtPoint):
(WebKit::WebPage::commitPotentialTap):
Adopt InteractionInformationRequest.

(WebKit::WebPage::getPositionInformation):
(WebKit::WebPage::requestPositionInformation):
Copy the request into the response.
Only snapshot if the request wants a snapshot.
Only make a link indicator if the request wants one.

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

3 years agoMake fast/selectors/040.html actually test background-color painting for ::selection...
dbates@webkit.org [Tue, 6 Dec 2016 17:58:39 +0000 (17:58 +0000)]
Make fast/selectors/040.html actually test background-color painting for ::selection when run in DRT
https://bugs.webkit.org/show_bug.cgi?id=79694

Reviewed by Beth Dakin.

Currently the test case fast/selectors/040.html doesn't actually test that we
honor the background-color of ::selection when run in DRT. In particular, it
doesn't programmatically select any text and hence the DRT results reflect a
paragraph of non-selected text. Instead, we should programmatically select the
test paragraph so that DRT can capture the painting of background-color for ::selection.

* fast/selectors/040-expected.html: Added.
* fast/selectors/040.html:
* platform/efl/fast/selectors/040-expected.png: Removed.
* platform/efl/fast/selectors/040-expected.txt: Removed.
* platform/gtk/fast/selectors/040-expected.png: Removed.
* platform/gtk/fast/selectors/040-expected.txt: Removed.
* platform/ios-simulator/fast/selectors/040-expected.txt: Removed.
* platform/mac/fast/selectors/040-expected.png: Removed.
* platform/mac/fast/selectors/040-expected.txt: Removed.
* platform/win/fast/selectors/040-expected.txt: Removed.

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

3 years agoCleanup: Rename some HTTP 0.9-specific functions to conform to WebKit Code Style...
dbates@webkit.org [Tue, 6 Dec 2016 17:46:48 +0000 (17:46 +0000)]
Cleanup: Rename some HTTP 0.9-specific functions to conform to WebKit Code Style Guidelines
https://bugs.webkit.org/show_bug.cgi?id=165451

Reviewed by Alex Christensen.

Source/WebCore:

Rename Document::shouldEnforceHTTP0_9Sandbox() and ResourceResponseBase::isHttpVersion0_9()
to Document::shouldEnforceHTTP09Sandbox() and ResourceResponseBase::isHTTP09, respectively,
to conform to the WebKit Code Style Guidelines.

* dom/Document.cpp:
(WebCore::Document::initSecurityContext):
(WebCore::Document::shouldEnforceHTTP09Sandbox): Renamed; formerly named shouldEnforceHTTP0_9Sandbox
* dom/Document.h:
* platform/network/ResourceHandle.cpp:
(WebCore::ResourceHandle::didReceiveResponse):
* platform/network/ResourceResponseBase.cpp:
(WebCore::ResourceResponseBase::isHTTP09): Renamed; formerly named isHttpVersion0_9.
* platform/network/ResourceResponseBase.h:

Source/WebKit2:

* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):

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

3 years agoRemove unused InjectedBundle::overrideXSSAuditorEnabledForTestRunner()
dbates@webkit.org [Tue, 6 Dec 2016 17:46:23 +0000 (17:46 +0000)]
Remove unused InjectedBundle::overrideXSSAuditorEnabledForTestRunner()
https://bugs.webkit.org/show_bug.cgi?id=165408

Reviewed by Alex Christensen.

InjectedBundle::overrideXSSAuditorEnabledForTestRunner() is unused. This function was only
called by WKBundleOverrideXSSAuditorEnabledForTestRunner(), which was removed in r106005.

* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideXSSAuditorEnabledForTestRunner): Deleted.
* WebProcess/InjectedBundle/InjectedBundle.h:

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

3 years agoTest insecure-xhr-sync-in-main-frame.html fails with CORS error if run before r203542
dbates@webkit.org [Tue, 6 Dec 2016 17:45:54 +0000 (17:45 +0000)]
Test insecure-xhr-sync-in-main-frame.html fails with CORS error if run before r203542
https://bugs.webkit.org/show_bug.cgi?id=165407

Reviewed by Alexey Proskuryakov.

Make the test insecure-xhr-sync-in-main-frame.html demonstrate a mixed content failure
instead of a CORS failure when run before r203542.

In r203542 the test http/tests/security/mixedContent/insecure-xhr-sync-in-main-frame.html
was added to ensure that we block loading insecure data via XHR from an HTTPS page. When
this test is run prior to r203542 it fails due to a CORS errors as opposed to showing
the intended JavaScript alert failure message. The CORS error is due to loading a
cross-origin resource that did not return an appropriate Access-Control-Allow-Origin header
to allow reading of the response.

* http/tests/security/mixedContent/insecure-xhr-sync-in-main-frame-expected.txt: Update expected result
based on the change below.
* http/tests/security/mixedContent/resources/insecure-xhr-sync-in-main-frame-window.html:
Load a resource that returns "Access-Control-Allow-Origin: *" so that origin (http, 127.0.0.1, 8000)
can read the response returned from origin (https, 127.0.0.1, 8443).

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

3 years agoUse Vector::uncheckedAppend() in more places
dbates@webkit.org [Tue, 6 Dec 2016 17:42:37 +0000 (17:42 +0000)]
Use Vector::uncheckedAppend() in more places
https://bugs.webkit.org/show_bug.cgi?id=164952

Reviewed by Darin Adler.

We can use Vector::uncheckedAppend() whenever the number of items that will be appended
to a vector is equal to or less than its capacity. Using Vector::uncheckedAppend() is
more efficient than Vector::append() as it avoids checking the capacity of the vector
before appending a value to the end of it.

* bindings/js/SerializedScriptValue.cpp:
(WebCore::SerializedScriptValue::SerializedScriptValue):
* contentextensions/DFABytecodeCompiler.cpp:
(WebCore::ContentExtensions::DFABytecodeCompiler::extractJumpTable):
* contentextensions/DFAMinimizer.cpp:
* css/StyleProperties.cpp:
(WebCore::StyleProperties::copyPropertiesInSet): Use Vector::uncheckedAppend() and inline
the assignment of the temporary variable value into the if condition to limit its scope
as it is referenced exactly once in the loop body.
* css/StyleRule.cpp:
(WebCore::StyleRuleGroup::StyleRuleGroup): Use Vector::uncheckedAppend() and write for-loop
using a C++11 range-based for-loop.
* css/parser/CSSParserValues.cpp:
(WebCore::CSSParserSelector::setLangArgumentList):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChildOf):
* dom/DocumentMarkerController.cpp:
(WebCore::updateRenderedRectsForMarker):
* page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
(WebCore::convertToLayoutUnits):
* platform/audio/AudioBus.cpp:
(WebCore::AudioBus::AudioBus):
* platform/graphics/FontCache.cpp:
(WebCore::FontCache::purgeInactiveFontData):
* platform/graphics/PathUtilities.cpp:
(WebCore::polygonsForRect):
* platform/mediastream/CaptureDeviceManager.cpp:
(CaptureDeviceManager::bestSourcesForTypeAndConstraints):
* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::fitnessDistance):
* platform/network/cf/FormDataStreamCFNet.cpp:
(WebCore::formCreate):

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

3 years agoUse ASCIICType more, and improve it a little bit
darin@apple.com [Tue, 6 Dec 2016 17:18:20 +0000 (17:18 +0000)]
Use ASCIICType more, and improve it a little bit
https://bugs.webkit.org/show_bug.cgi?id=165360

Reviewed by Sam Weinig.

Source/JavaScriptCore:

* inspector/InspectorValues.cpp:
(Inspector::readHexDigits): Use isASCIIHexDigit.
(Inspector::hextoInt): Deleted.
(decodeString): Use toASCIIHexValue.

* runtime/JSGlobalObjectFunctions.cpp:
(JSC::parseDigit): Use isASCIIDigit, isASCIIUpper, and isASCIILower.

* runtime/StringPrototype.cpp:
(JSC::substituteBackreferencesSlow): Use isASCIIDigit.

Source/WebCore:

* css/CSSGrammar.y.in: Use isASCIIDigit.

* css/parser/CSSParser.cpp:
(WebCore::CSSParser::parseFontFaceUnicodeRange): Use isASCIIHexDigit and
toASCIIHexValue.
(WebCore::isEqualToCSSIdentifier): Use isASCIILower.
* html/FormController.cpp:
(WebCore::isNotFormControlTypeCharacter): Use isASCIILower.
* html/parser/CSSPreloadScanner.cpp:
(WebCore::CSSPreloadScanner::tokenize): Use isASCIIAlpha.
* platform/Decimal.cpp:
(WebCore::Decimal::fromString): Use isASCIIDigit.
* platform/FileSystem.cpp:
(WebCore::decodeFromFilename): Use isASCIIHexDigit and toASCIIHexValue.
* platform/URL.cpp:
(WebCore::isLetterMatchIgnoringCase): Deleted.
(WebCore::isSchemeCharacterMatchIgnoringCase): Deleted.
(WebCore::assertProtocolIsGood): Use isASCIIUpper.
(WebCore::URL::protocolIs): Use isASCIIAlphaCaselessEqual.
(WebCore::URL::parse): Ditto.
(WebCore::protocolIs): Ditto.
(WebCore::protocolIsInHTTPFamily): Ditto.
* platform/URLParser.cpp:
(WeCore::URLParser::parseIPv4Piece): Use isASCIIDigit.

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::isRussianDomainNameCharacter): Use isASCIIDigit.
(WebCore::allCharactersAllowedByTLDRules): Ditto.
(WebCore::dataWithUserTypedString): Use upperNibbleToASCIIHexDigit and
lowerNibbleToASCIIHexDigit.
(WebCore::dataForURLComponentType): Ditto.
(WebCore::createStringWithEscapedUnsafeCharacters): Ditto.
(WebCore::userVisibleString): Use isASCIIHexDigit, toASCIIHexValue,
upperNibbleToASCIIHexDigit, and lowerNibbleToASCIIHexDigit.
(WebCore::isUserVisibleURL): Use isASCIIHexDigit and toASCIIHexValue.

* platform/network/FormDataBuilder.cpp:
(WebCore::FormDataBuilder::encodeStringAsFormData): Use isASCIIAlphanumeric.

* rendering/mathml/RenderMathMLToken.cpp:
(WebCore::mathVariant): Use isASCIIUpper, isASCIILower, and isASCIIDigit.

* svg/SVGParserUtilities.cpp:
(WebCore::genericParseNumber): Use isASCIIDigit.
* svg/SVGPathStringSource.cpp:
(WebCore::nextCommandHelper): Ditto.
* xml/XPathParser.cpp:
(WebCore::XPath::Parser::lexNumber): Ditto.
(WebCore::XPath::Parser::nextTokenInternal): Ditto.

Source/WebKit2:

* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
(WebKit::capitalizeRFC822HeaderFieldName): Removed unneeded checks to simplify code.

Source/WTF:

* wtf/ASCIICType.h: Added declarations of all the functions to the top of the file,
so we have a list of what's available, not just a mix of that and the implementation.

* wtf/HexNumber.h:
(WTF::Internal::hexDigitsForMode): Moved lowerHexDigits and upperHexDigits
inside this function.
(WTF::appendByteAsHex): Use auto.
(WTF::placeByteAsHexCompressIfPossible): Ditto.
(WTF::placeByteAsHex): Ditto.
(WTF::appendUnsignedAsHex): Ditto.
(WTF::appendUnsigned64AsHex): Ditto.
(WTF::appendUnsignedAsHexFixedSize): Ditto.
(WTF::isHexDigit): Deleted.
(WTF::uncheckedHexDigit): Deleted.
(WTF::hexDigitValue): Deleted.
(WTF::uncheckedHexDigitValue): Deleted.

* wtf/SixCharacterHash.cpp:
(WTF::sixCharacterHashStringToInteger): Use isASCIIUpper, isASCIILower, and
isASCIIDigit. Also added some FIXMEs; for some reason this function uses
RELEASE_ASSERT to abort if the passed-in string is not six characters long,
and it's not clear to me why this is so critical to assert.
(WTF::integerToSixCharacterHashString): Moved the table inside this function,
obviating the need for a macro named TABLE.

* wtf/dtoa/bignum.cc:
(WTF::double_conversion::HexCharValue): Deleted.
(WTF::double_conversion::Bignum::AssignHexString): Use toASCIIHexValue.
* wtf/dtoa/double-conversion.cc:
(WTF::double_conversion::StringToDoubleConverter::StringToDouble): Use isASCIIDigit.

* wtf/text/StringBuilder.cpp:
(WTF::appendQuotedJSONStringInternal): Use upperNibbleToASCIIHexDigit and
lowerNibbleToASCIIHexDigit.

* wtf/text/StringImpl.cpp:
(WTF::StringImpl::convertToUppercaseWithoutLocale): Use toASCIIUpper.
Removed the workaround for a bug that was fixed in Visual Studio 2013.

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

3 years agoRebaseline bindings tests after r209390.
ryanhaddad@apple.com [Tue, 6 Dec 2016 17:14:03 +0000 (17:14 +0000)]
Rebaseline bindings tests after r209390.

Unreviewed test gardening.

* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::convertDictionaryToJS):
* bindings/scripts/test/JS/JSTestObj.h:

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

3 years agoPDF markup/annotations visible in Mail on macOS but not on iOS
timothy_horton@apple.com [Tue, 6 Dec 2016 16:55:49 +0000 (16:55 +0000)]
PDF markup/annotations visible in Mail on macOS but not on iOS
https://bugs.webkit.org/show_bug.cgi?id=165444
<rdar://problem/28942896>

Reviewed by Simon Fraser.

No new tests, but enabled an existing test for this feature.

* platform/graphics/cg/PDFDocumentImage.cpp:
(WebCore::PDFDocumentImage::drawPDFPage):
* platform/spi/cg/CoreGraphicsSPI.h:
Make use of CGContextDrawPDFPageWithAnnotations where available,
to paint the page with annotations.

* platform/ios-simulator/TestExpectations:

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