Timeline



Nov 9, 2016:

11:53 PM Changeset in webkit [208527] by rniwa@webkit.org
  • 22 edits in trunk

WebHTMLView's _attributeStringFromDOMRange should use HTMLConverter instead of NSAttributedString's _initWithDOMRange
https://bugs.webkit.org/show_bug.cgi?id=164501
<rdar://problem/29152282>

Reviewed by Sam Weinig.

Source/WebKit/mac:

Align what [WebHTMLView attributedString] returns to what would be used on copy & paste by using HTMLConverter
instead of _initWithDOMRange in [WebHTMLView _attributeStringFromDOMRange].

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _attributedStringFromDOMRange:]): Renamed from _attributeStringFromDOMRange.
(-[WebHTMLView attributedString]):
(-[WebHTMLView selectedAttributedString]):
(-[WebHTMLView selectedString]): Moved to reduce the number of occurrences of the if-defs.

Tools:

  • DumpRenderTree/mac/TextInputController.m:

(-[TextInputController legacyAttributedString:]):

LayoutTests:

Prior to this patch, attributed-string tests were inadvertently testing NSAttributedString's _initWithDOMRange
instead of HTMLConverter as intended because _attributeStringFromDOMRange was using _initWithDOMRange.

This patch aliens [WebHTMLView attributedString] to what we use on copy & paste by using HTMLConverter instead.
The rebaselined done below highlights the existing behavior difference between AppKit's converter and HTMLConverter.

I've manually confirmed that these test results didn't change across the large refactoring as seen in:
https://trac.webkit.org/log/trunk/Source/WebCore/platform/mac/HTMLConverter.mm?rev=166145

  • editing/mac/attributed-string/anchor-element-expected.txt:
  • editing/mac/attributed-string/basic-expected.txt:
  • editing/mac/attributed-string/font-size-expected.txt:
  • editing/mac/attributed-string/font-style-variant-effect-expected.txt:
  • editing/mac/attributed-string/font-weight-expected.txt:
  • editing/mac/attributed-string/letter-spacing-expected.txt:
  • editing/mac/attributed-string/text-decorations-expected.txt:
  • editing/mac/attributed-string/vertical-align-expected.txt:
  • platform/mac-elcapitan/editing/mac/attributed-string/font-style-variant-effect-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/anchor-element-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/basic-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/font-size-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/font-style-variant-effect-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/font-weight-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/letter-spacing-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/text-decorations-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/vertical-align-expected.txt:
11:46 PM Changeset in webkit [208526] by Chris Dumez
  • 8 edits in trunk

[WK2][!NETWORK_SESSION] Add support for downloading file backed blobs
https://bugs.webkit.org/show_bug.cgi?id=164522

Reviewed by Alex Christensen.

Source/WebKit2:

Add support for downloading file backed blobs for the non-NETWORK_SESSION
code path of WebKit2, which is still use on pre-Sierra macOS.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::~Download):

  • NetworkProcess/Downloads/Download.h:

(WebKit::Download::setBlobFileReferences):

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):
(WebKit::DownloadManager::convertNetworkLoadToDownload):

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::convertToDownload):

LayoutTests:

Unskip corresponding tests now that they pass on Yosemite and El Capitan.

  • platform/mac-wk2/TestExpectations:
11:46 PM Changeset in webkit [208525] by Philippe Normand
  • 4 edits in trunk

[WebRTC] white-list turns urls from the RTCConfiguration
https://bugs.webkit.org/show_bug.cgi?id=164506

Reviewed by Alejandro G. Castro.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-constructor-expected.txt: Rebaseline test, since turns servers are now parsed.

Source/WebCore:

  • Modules/mediastream/RTCConfiguration.cpp:

(WebCore::validateIceServerURL): Add the turns URL scheme to the
list of supported relay and signaling server protocols.

10:34 PM Changeset in webkit [208524] by Yusuke Suzuki
  • 42 edits
    8 adds in trunk

[JSC] Avoid cloned arguments allocation in ArrayPrototype methods
https://bugs.webkit.org/show_bug.cgi?id=164502

Reviewed by Saam Barati.

JSTests:

  • stress/argument-intrinsic-basic.js: Added.

(shouldBe):
(builtin.createBuiltin):

  • stress/argument-intrinsic-inlining-with-result-escape.js: Added.

(shouldBe):
(builtin.createBuiltin):
(escape):

  • stress/argument-intrinsic-nested-inlining.js: Added.

(shouldBe):
(builtin.createBuiltin):
(builtinCaller1):
(builtinCaller2):
(escape):

  • stress/argument-intrinsic-not-convert-to-get-argument.js: Added.

(shouldBe):
(builtin.createBuiltin):

  • stress/argument-intrinsic-with-stack-write.js: Added.

(shouldBe):
(builtin.createBuiltin):

Source/JavaScriptCore:

In many builtin functions, we use arguments to just get optional parameters.
While FTL argument elimination can drop arguments allocations, it leaves
the allocations in LLInt, Baseline, and DFG. And we found that DFG compiled
Array#map is heavily used in ES6SampleBench/Basic. And it always creates
a meaningless ClonedArguments.

Using ES6 default parameter here is not a solution. It increases the number
of parameters of the CodeBlock (not function.length). And the optional
parameters in Array.prototype.xxx methods are not typically passed. For
example, we typically do not pass thisArg to Array.prototype.map function.
In this case, the arity check frequently fails. It requires the additional C
call to fixup arguments and it becomes pure overhead.

To solve this problem, this patch introduces a new bytecode intrinsic @argument().
This offers the way to retrieve the argument value without increasing the
arity of the function. And if the argument is not passed (out of bounds), it
just returns undefined. The semantics of this intrinsic is the same to the C++
ExecState::argument(). This operation does not require arguments object. And we
can drop the argument references even in lower 3 tiers.

We implement op_get_argument for this intrinsic. And later this will be converted
to DFG GetArgument node. All the tiers handles this feature.

This patch improves ES6SampleBench/Basic 13.8% in steady state. And in summary,
it improves 4.5%.

In the future, we can improve the implementation of the default parameters.
Currently, the default parameter always increases the arity of the function. So
if you do not pass the argument, the arity check fails. But since it is the default
parameter, it is likely that we don't pass the argument. Using op_get_argument to
implement the default parameter can decrease the case in which the arity check
frequently fails. And it can change the builtin implementation to use the ES6
default parameters instead of using the special @argument() intrinsic in the future.
And at that case, the user code also receives the benefit.

ES6SampleBench/Basic.

Baseline:

Running... Basic ( 1 to go)
firstIteration: 39.38 ms +- 4.48 ms
averageWorstCase: 20.79 ms +- 0.96 ms
steadyState: 1959.22 ms +- 65.55 ms

Patched:

Running... Basic ( 1 to go)
firstIteration: 37.85 ms +- 4.09 ms
averageWorstCase: 18.60 ms +- 0.76 ms
steadyState: 1721.89 ms +- 57.58 ms

All summary.

Baseline:

summary: 164.34 ms +- 5.01 ms

Patched:

summary: 157.26 ms +- 5.96 ms

  • builtins/ArrayConstructor.js:
  • builtins/ArrayPrototype.js:

(reduce):
(reduceRight):
(every):
(forEach):
(filter):
(map):
(some):
(fill):
(find):
(findIndex):
(includes):
(copyWithin):

  • builtins/DatePrototype.js:

(toLocaleString):
(toLocaleDateString):
(toLocaleTimeString):

  • builtins/MapPrototype.js:

(forEach):

  • builtins/NumberPrototype.js:

(toLocaleString):

  • builtins/SetPrototype.js:

(forEach):

  • builtins/StringPrototype.js:

(padStart):
(padEnd):
(localeCompare):

  • builtins/TypedArrayConstructor.js:
  • builtins/TypedArrayPrototype.js:

(every):
(fill):
(find):
(findIndex):
(forEach):
(some):
(reduce):
(reduceRight):
(map):
(filter):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::finishCreation):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitGetArgument):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emit_intrinsic_argument):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasArgumentIndex):
(JSC::DFG::Node::argumentIndex):

  • dfg/DFGNodeType.h:
  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetArgument):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileGetArgument):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_get_argument):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_get_argument):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
10:07 PM Changeset in webkit [208523] by Joseph Pecoraro
  • 35 edits in trunk

Web Inspector: DebuggerManager.Event.Resumed introduces test flakiness
https://bugs.webkit.org/show_bug.cgi?id=161951
<rdar://problem/28295767>

Reviewed by Brian Burg.

Source/JavaScriptCore:

This removes an ambiguity in the protocol when stepping through
JavaScript. Previously, when paused and issuing a Debugger.step*
command the frontend would always receive a Debugger.resumed event and
then, maybe, a Debugger.paused event indicating we paused again (after
stepping). However, this ambiguity means that the frontend needs to
wait for a short period of time to determine if we really resumed
or not. And even still that decision may be incorrect if the step
takes a sufficiently long period of time.

The new approach removes this ambiguity. Now, in response to a
Debugger.step* command the backend MUST send a single Debugger.paused
event or Debugger.resumed event. Now the frontend knows that the
next Debugger event it receives after issuing the step command is
the result (stepped and paused, or stepped and resumed).

To make resuming consistent in all cases, a Debugger.resume command
will always respond with a Debugger.resumed event.

Finally, Debugger.continueToLocation is treated like a "big step"
in cases where we can resolve the location. If we can't resolve the
location it is treated as a resume, maintaining the old behavior.

  • inspector/agents/InspectorDebuggerAgent.h:
  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::stepOver):
(Inspector::InspectorDebuggerAgent::stepInto):
(Inspector::InspectorDebuggerAgent::stepOut):
(Inspector::InspectorDebuggerAgent::willStepAndMayBecomeIdle):
(Inspector::InspectorDebuggerAgent::didBecomeIdleAfterStepping):
When stepping register a VM exit observer so that we can issue
a Debugger.resumed event if the step caused us to exit the VM.

(Inspector::InspectorDebuggerAgent::resume):
Set a flag to issue a Debugger.resumed event once we break out
of the nested run loop.

(Inspector::InspectorDebuggerAgent::didPause):
We are issuing Debugger.paused so clear the state to indicate that
we no longer need to issue Debugger.resumed event, we have paused.

(Inspector::InspectorDebuggerAgent::didContinue):
Only issue the Debugger.resumed event if needed (explicitly asked
to resume).

(Inspector::InspectorDebuggerAgent::continueToLocation):
(Inspector::InspectorDebuggerAgent::clearDebuggerBreakpointState):
All places that do continueProgram should be audited. In error cases,
if we are paused and continue we should remember to send Debugger.resumed.

  • inspector/protocol/Debugger.json:

Clarify in the protocol description the contract of these methods.

Source/WebCore:

Covered by existing tests that would ASSERT otherwise.

  • inspector/InspectorClient.cpp:

(WebCore::InspectorClient::doDispatchMessageOnFrontendPage):
When paused on an exception in the inspected page and evaluating
commands in the inspector frontend page (which evaluates JavaScript)
we ASSERT when entering the Global DOM VM with an existing exception.
This makes it so when we evaluate JavaScript in the frontend we
suspend / ignore the state of the VM for the inspected page, and
restore it when we return from the inspector.

Source/WebInspectorUI:

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype.debuggerDidResume):
Now, Debugger.resumed events really mean the debugger resumed,
so act immediately instead of guessing. We must still guess
in legacy backends.

  • UserInterface/Test/Test.js:

When the inspector frontend encounters an issue, log it.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerActiveCallFrameDidChange):
Always enable the step out button. I don't think it makes sense to disable
it sometimes, and if there are issues with this we should solve the issues
instead of hiding them.

LayoutTests:

Rewrite tests to be more deterministic. For tests that
relied on a Resumed event to happen after a short amount
of time, instead have the test dispatch an event when it is
appropriate to continue. Take this opportunity to rewrite
some tests using new style and best practices.

  • inspector/debugger/break-in-constructor-before-super.html:
  • inspector/debugger/break-on-exception-throw-in-promise.html:
  • inspector/debugger/break-on-exception.html:
  • inspector/debugger/break-on-uncaught-exception-throw-in-promise.html:
  • inspector/debugger/break-on-uncaught-exception.html:
  • inspector/debugger/breakpoint-syntax-error-top-level.html:
  • inspector/debugger/command-line-api-exception-expected.txt:
  • inspector/debugger/command-line-api-exception-nested-catch.html:
  • inspector/debugger/command-line-api-exception.html:
  • inspector/debugger/csp-exceptions.html:
  • inspector/debugger/didSampleProbe-multiple-probes.html:
  • inspector/debugger/evaluateOnCallFrame-CommandLineAPI.html:
  • inspector/debugger/evaluateOnCallFrame-errors.html:
  • inspector/debugger/pause-reason-expected.txt:
  • inspector/debugger/pause-reason.html:
  • inspector/debugger/paused-scopes-expected.txt:
  • inspector/debugger/paused-scopes.html:
  • inspector/debugger/resources/exceptions.js:
  • inspector/debugger/scriptParsed.html:
  • inspector/debugger/sourceURL-repeated-identical-executions.html:
  • inspector/debugger/sourceURLs.html:
  • inspector/debugger/stepping/stepping-pause-in-inner-step-to-parent.html:
9:28 PM Changeset in webkit [208522] by Chris Dumez
  • 27 edits
    4 adds in trunk

[WK2][NETWORK_SESSION] Add support for downloading file backed blobs
https://bugs.webkit.org/show_bug.cgi?id=164458
<rdar://problem/28905514>

Reviewed by Darin Adler.

Source/WebKit2:

Add support for downloading file backed blobs on WebKit2.
It previously wasn't working because we weren't calling
BlobDataFileReference::prepareForFileAccess() for each blob file before
starting the download, similarly to what is done in NetworkResourceLoader's
consumeSandboxExtensions().

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/DownloadManager.h:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::startDownload):
(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::download):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::downloadRequest):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/PingLoad.h:

Tools:

Add testRunner.setShouldDownloadUndisplayableMIMETypes(bool) API so that layout
tests can request that such resources are downloaded instead of being ignored.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setShouldDownloadUndisplayableMIMETypes):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::decidePolicyForNavigationResponse):

  • WebKitTestRunner/TestController.h:

(WTR::TestController::setShouldDownloadUndisplayableMIMETypes):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Add layout test coverage for downloading blobs, both via <a download> or
because a load is later converted into a download.

  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download.html: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
8:49 PM Changeset in webkit [208521] by commit-queue@webkit.org
  • 21 edits in trunk

NetworkSession: Network process crash when converting main resource to download
https://bugs.webkit.org/show_bug.cgi?id=164220

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-11-09
Reviewed by Alex Christensen.

Source/WebKit2:

Right after the main resource load is converted to a download, the web process deletes the ResourceLoader which
sends the RemoveLoadIdentifier to the network process and the load is aborted. Sometimes it happens that
NetworkResourceLoader::abort() is called while the NetworkLoad is still deciding the destination of the
download. In such case, NetworkResourceLoader::didConvertToDownload() has already been called, but not
NetworkResourceLoader::didBecomeDownload(). In NetworkResourceLoader::abort() we already handle the case of
having a NetworkLoad after NetworkResourceLoader::didConvertToDownload() has been called, to avoid canceling the
load in such case, however cleanup() is always called unconditionally and the NetworkLoad is deleted before
NetworkResourceLoader::didBecomeDownload() is called. When the NetworkLoad is destroyed the NetworkDataTask
client becomes nullptr, leaving it in a state where both the client is nullptr and the download hasn't been
created yet. That's not expected to happen and when the response completion handler is called in the
NetworkDataTask it tries to use either the client or the download and it crashes.
We need to cleanup and destroy the ResourceLoader as soon as it becomes a download, because that's the expected
behavior, but at the same time we need to keep the NetworkLoad alive until the NetworkDataTask finishes to become
a download. This patch creates a PendingDownload to take the ownership of the NetworkLoad, so that
ResourceLoader can be cleaned up and destroyed. The DownloadManager now will handle the PendingDownload as if it
was created by startDownload(), but ensuring it's deleted right before the final Download object is added to the
downloads map. That way NetworkDataTask will always have a valid client until the final Download is created,
first the ResourceLoader and then the PendingDownload. Since the DownloadManager is the owner of the
PendingDownload we no longer need the didBecomeDownload() callback to delete the NetworkLoad, because the
NetworkLoad will always be owned by the PendingDownload now that will be deleted by the DownloadManager.

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::dataTaskBecameDownloadTask): Change the ASSERT because at this point we should always
have a PendingDownload, and then remove it from the map here before adding the final Download to the map.
(WebKit::DownloadManager::convertNetworkLoadToDownload): This replaces convertHandleToDownload, but it also now
used for the NetworkSession. It creates a PendingDownload for the given NetworkLoad.
(WebKit::DownloadManager::continueDecidePendingDownloadDestination): Do not take the PendingDownload from the
map here, just check it's present, because it will be removed from dataTaskBecameDownloadTask().
(WebKit::DownloadManager::convertHandleToDownload): Deleted.

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::PendingDownload): Add a constructor that receives a NetworkLoad.

  • NetworkProcess/Downloads/PendingDownload.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload): Just ask the ResourceLoader to be
converted to a download.

  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::download): Do not call didBecomeDownload() and add an assert to ensure the client
has already been removed right after the final Download object is created.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad): Use a pointer for the client instead of a reference because now we need to
change the client when the load is converted to a download. We don't need to null check the client in any case
because the member is only updated internally and always from a passed reference.
(WebKit::NetworkLoad::sharedDidReceiveResponse):
(WebKit::NetworkLoad::sharedWillSendRedirectedRequest):
(WebKit::NetworkLoad::convertTaskToDownload): This now receives a PendingDownload. It updates the client and no
longer sends DidStart, because the PendingDownload sends it now.
(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::didReceiveData):
(WebKit::NetworkLoad::didCompleteWithError):
(WebKit::NetworkLoad::didSendData):
(WebKit::NetworkLoad::wasBlocked):
(WebKit::NetworkLoad::cannotShowURL):
(WebKit::NetworkLoad::didReceiveBuffer):
(WebKit::NetworkLoad::didFinishLoading):
(WebKit::NetworkLoad::didFail):
(WebKit::NetworkLoad::canAuthenticateAgainstProtectionSpaceAsync):
(WebKit::NetworkLoad::didBecomeDownload): Deleted.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h: Remove didBecomeDownload().
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::convertToDownload): This replaces didBecomeDownload() and
didConvertToDownload(). It transfers the NetworkLoad to the DownloadManager.
(WebKit::NetworkResourceLoader::abort): We don't need to check if the load was converted to a download here,
because m_networkLoad will always be null here in such case.
(WebKit::NetworkResourceLoader::didBecomeDownload): Deleted
(WebKit::NetworkResourceLoader::didConvertToDownload): Deleted

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.h: Remove didBecomeDownload().
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h: Ditto.
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h: Ditto.
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm: Ditto.
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didBecomeDownloadTask:]): Do not call didBecomeDownload().

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::download): Do not call didBecomeDownload() and add an assert to ensure the client
has already been removed right after the final Download object is created.

Tools:

Split /webkit2/Downloads/policy-decision-download in two, one to test the full load when main resource is
converted to a download and another one to test the cancellation as the test was doing before. When doing the
full load, delay a bit the decide destination to ensure the load is aborted before the data task has became a
download.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp:

(testPolicyResponseDownload):
(testPolicyResponseDownloadCancel):
(beforeAll):

7:54 PM Changeset in webkit [208520] by Joseph Pecoraro
  • 51 edits
    7 adds
    1 delete in trunk

Web Inspector: Associate Worker Resources with the Worker and not the Page
https://bugs.webkit.org/show_bug.cgi?id=164342
<rdar://problem/29075775>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Network.json:
  • inspector/protocol/Page.json:

Associate Resource data with a target.

Source/WebCore:

Test: inspector/worker/resources-in-worker.html

Provide a way to associate an initiator identifier with a ResourceRequest.
This will allow Web Inspector to identify who started particular resource
loads. This is important to associate Worker(...), importScript(...), and
XMLHttpRequest / Fetch loads with that specific Worker.

  • platform/network/ResourceRequestBase.cpp:

(WebCore::ResourceRequestBase::setAsIsolatedCopy):

  • platform/network/ResourceRequestBase.h:

(WebCore::ResourceRequestBase::initiatorIdentifier):
(WebCore::ResourceRequestBase::setInitiatorIdentifier):
Optional initiator identifier. Currently used only be Web Inspector.

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::resourceRequestIdentifier):
Non-page execution contexts, like WorkerGlobalScope, should provide
a unique identifier that may be used to distinguish loads initiated
from within that context.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest):

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeWith):
XHR / Fetch loads should include the ScriptExecutionContext's
initiator identifier.

  • workers/WorkerScriptLoader.cpp:

(WebCore::WorkerScriptLoader::WorkerScriptLoader):
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
(WebCore::WorkerScriptLoader::createResourceRequest):

  • workers/WorkerScriptLoader.h:

Provide a way to provide initiator identifier information for
Worker script loads. Currently this is new Worker(...) and
importScripts(...) resource loads.

  • workers/Worker.cpp:

(WebCore::Worker::Worker):
(WebCore::Worker::create):

  • workers/Worker.h:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope):
(WebCore::WorkerGlobalScope::importScripts):

  • workers/WorkerGlobalScope.h:

Give Worker itself the unique identifier, because new Worker(...)
loads happen before the WorkerGlobalScript (ScriptExecutionContext)
is actually created, but we want to associate it with this Worker.

  • workers/DedicatedWorkerGlobalScope.cpp:

(WebCore::DedicatedWorkerGlobalScope::create):
(WebCore::DedicatedWorkerGlobalScope::DedicatedWorkerGlobalScope):

  • workers/DedicatedWorkerGlobalScope.h:
  • workers/DedicatedWorkerThread.cpp:

(WebCore::DedicatedWorkerThread::DedicatedWorkerThread):
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope):

  • workers/DedicatedWorkerThread.h:
  • workers/WorkerInspectorProxy.cpp:

(WebCore::WorkerInspectorProxy::WorkerInspectorProxy):

  • workers/WorkerInspectorProxy.h:
  • workers/WorkerMessagingProxy.cpp:

(WebCore::WorkerMessagingProxy::WorkerMessagingProxy):
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThreadStartupData::WorkerThreadStartupData):
(WebCore::WorkerThread::WorkerThread):
(WebCore::WorkerThread::workerThread):

  • workers/WorkerThread.h:

Pass the MainThread's Worker identifier through to the WorkerGlobalScope
created on the WorkerThread. They should be the same identifier.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::InspectorNetworkAgent::willSendRequest):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::buildObjectForFrameTree):
Pass the initiator identifier data to the frontend. This identifier is
equivalent to a "target identifier" in the frontend. Currently the only
non-Page targets are Workers.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::shouldContinueAfterNotifyingLoadedFromMemoryCache):
When using the memory cache we create a new resource request. Be sure
to copy over useful inspector data, like the initiator identifier,
from the original request.

  • platform/network/cf/ResourceRequestCFNet.cpp:

(WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):
When rebuilding a ResourceRequest from NSURLRequest, copy over the
initiator identifier property that wouldn't otherwise have survived
the transition.

Source/WebInspectorUI:

A Target may have its own list of Resource. For example, Workers may
request any resources via XHR/Fetch. So we associate a ResourceCollection
with a Target, and ensure we show them in Web Inspector as you would expect.
At this point, Target starts acting like Frame. Target has a resourceCollection
and extraScriptsCollection just like Frame. Target has events for ResourceAdded
just like Frame.

Even though Resource loads are happening in Workers, the Network data
still comes from the Page's Network agent. The added "targetId" data
with the Resource will let us associate a Resoure with a Target.

When opening inspector after a page has loaded, the frontend loads Resources
via the Page.getResourceTree path. In this case, the frontend may be
informed of Resources for a Target that it does not know about yet. In
these cases, it sets them aside as Orphaned resources for a target. Later,
when that Target is created, it will adopt its Orphaned resources.

Places that used to listen to just Frame.Event.ResourceWasAdded should now
also listen for Target.Event.ResourceAdded to ensure it sees the resources
associated with non-page targets.

  • UserInterface/Protocol/Target.js:

(WebInspector.Target):
(WebInspector.Target.prototype.get identifier):
(WebInspector.Target.prototype.get resourceCollection):
(WebInspector.Target.prototype.get extraScriptCollection):
(WebInspector.Target.prototype.addResource):
(WebInspector.Target.prototype.adoptResource):
(WebInspector.Target.prototype.addScript):
Give Target resource collections.

(WebInspector.MainTarget):
(WebInspector.MainTarget.prototype.get mainResource):
Pass through to the FrameResourceManager for the MainTarget.

(WebInspector.WorkerTarget):
(WebInspector.WorkerTarget.prototype.initialize):
Adopt orphaned resources on creation.

  • UserInterface/Models/Resource.js:

(WebInspector.Resource):
(WebInspector.Resource.prototype.get target):
(WebInspector.Resource.prototype.get type):
Resource now has a Target. During creation, if there is a targetId
then we must produce a Target or null (orphaned).

(WebInspector.Resource.prototype.associateWithScript):
When associating a Resource with a Script, we can use this opportunity
to convert from an XML / Other type to Script.

  • UserInterface/Models/Script.js:

(WebInspector.Script.prototype._resolveResource):
When associating Scripts with a resource we must associate resources
from within the proper Target. If it is the Main target we still use
the FrameResourceManager which keep searches across all Frames.

  • UserInterface/Protocol/NetworkObserver.js:

(WebInspector.NetworkObserver.prototype.requestWillBeSent):

  • UserInterface/Controllers/FrameResourceManager.js:

(WebInspector.FrameResourceManager.prototype.initialize):
(WebInspector.FrameResourceManager.prototype.frameDidNavigate):
(WebInspector.FrameResourceManager.prototype.resourceRequestWillBeSent):
(WebInspector.FrameResourceManager.prototype.resourceRequestWasServedFromMemoryCache):
(WebInspector.FrameResourceManager.prototype.resourceRequestDidReceiveResponse):
(WebInspector.FrameResourceManager.prototype.adoptOrphanedResourcesForTarget):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrameOrTarget):
(WebInspector.FrameResourceManager.prototype._addResourceToTarget):
(WebInspector.FrameResourceManager.prototype._createResource):
(WebInspector.FrameResourceManager.prototype._addFrameTreeFromFrameResourceTreePayload):
(WebInspector.FrameResourceManager.prototype._addOrphanedResource):
(WebInspector.FrameResourceManager.prototype._mainFrameDidChange):
(WebInspector.FrameResourceManager.prototype._addNewResourceToFrame): Deleted.
When creating Resources from Network events we may now have a targetId.
Once created a Resource must be associated with a Frame, Target, or orphaned.

  • UserInterface/Main.html:
  • UserInterface/Views/TargetTreeElement.js: Removed.
  • UserInterface/Views/WorkerTreeElement.js: Added.

(WebInspector.WorkerTreeElement):
(WebInspector.WorkerTreeElement.prototype.get target):
(WebInspector.WorkerTreeElement.prototype.onexpand):
(WebInspector.WorkerTreeElement.prototype.oncollapse):
(WebInspector.WorkerTreeElement.prototype.onpopulate):
(WebInspector.WorkerTreeElement.prototype.updateSourceMapResources):
(WebInspector.WorkerTreeElement.prototype.onattach):
(WebInspector.WorkerTreeElement.prototype.compareChildTreeElements):
(WebInspector.WorkerTreeElement.prototype._handleContextMenuEvent):
(WebInspector.WorkerTreeElement.prototype._scriptAdded):
(WebInspector.WorkerTreeElement.prototype._resourceAdded):
Convert TargetTreeElement to WorkerTreeElement as that is clearer.
Behave like FrameTreeElement and populate resources on creation,
handle SourceMapResource, etc.

  • UserInterface/Views/FolderizedTreeElement.js:

(WebInspector.FolderizedTreeElement.prototype.registerFolderizeSettings):
(WebInspector.FolderizedTreeElement.prototype._compareTreeElementsByMainTitle):
(WebInspector.FolderizedTreeElement.prototype._parentTreeElementForRepresentedObject):
If the display name for a folder is null then there is no folder,
and place such child tree elements at the top level. This will be
the case for a Worker's Script's, which we choose not to folderize.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager.prototype.scriptDidParse):

  • UserInterface/Controllers/TargetManager.js:

(WebInspector.TargetManager.prototype.targetForIdentifier):

  • UserInterface/Models/DefaultDashboard.js:

(WebInspector.DefaultDashboard):

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager):

  • UserInterface/Controllers/WorkerManager.js:

(WebInspector.WorkerManager.prototype.workerCreated):

  • UserInterface/Views/OpenResourceDialog.js:

(WebInspector.OpenResourceDialog.prototype.didDismissDialog):
(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
(WebInspector.OpenResourceDialog.prototype._addScriptsForTarget): Deleted.
(WebInspector.OpenResourceDialog.prototype._addResourcesForTarget): Added.
Ensure those that listen for Frame.Event.ResourceWasAdded now also
listen for Target.Event.ResourceAdded.

  • UserInterface/Views/ContextMenuUtilities.js:

(WebInspector.appendContextMenuItemsForSourceCode):
(WebInspector.appendContextMenuItemsForResource): Deleted.

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype.appendContextMenuItems):

  • UserInterface/Views/ResourceTreeElement.js:

(WebInspector.ResourceTreeElement.prototype._updateTitles):
(WebInspector.ResourceTreeElement.prototype._handleContextMenuEvent):
Generalize ContextMenu helper to SourceCode so it can be used on a Script or Resource.

  • UserInterface/Views/ResourceDetailsSidebarPanel.js:

(WebInspector.ResourceDetailsSidebarPanel.prototype.inspect):
When looking at a WorkerTarget's mainResource (Script) show the
Resource Details sidebar for its Resource.

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel):
(WebInspector.ResourceSidebarPanel.prototype._scriptWasAdded):
(WebInspector.ResourceSidebarPanel.prototype._scriptsCleared):
(WebInspector.ResourceSidebarPanel.prototype._addTargetWithMainResource):
(WebInspector.ResourceSidebarPanel.prototype._targetRemoved):
(WebInspector.ResourceSidebarPanel.prototype._addScriptForNonMainTarget): Deleted.
Simplify ResourceSidebarPanel to only handle adding WorkerTreeElements,
which will do the rest of the work for their Resources/Scripts.

  • UserInterface/Views/SourceCodeTreeElement.js:

(WebInspector.SourceCodeTreeElement.prototype.descendantResourceTreeElementTypeDidChange):
When we were changing the type of a resource, it would remove and re-insert.
This would collapse the parent if it was the only child in removal, and not
expand the parent when re-inserting. This ensures we re-expand.

LayoutTests:

  • inspector/worker/resources-in-worker-expected.txt: Added.
  • inspector/worker/resources-in-worker.html: Added.
  • inspector/worker/resources/dataFetch.json: Added.
  • inspector/worker/resources/dataXHR.json: Added.
  • inspector/worker/resources/resource-utilities.js: Added.

(loadResourceXHR):
(loadResourceFetch):

  • inspector/worker/resources/worker-resources.js: Added.

(importScript):
(onmessage):

7:06 PM Changeset in webkit [208519] by hyuki.kim@samsung.com
  • 2 edits in trunk/Tools

[EFL] fix error message caused by eina log
https://bugs.webkit.org/show_bug.cgi?id=164546

Reviewed by Gyuyoung Kim.

Fix error message caused by eina log when MiniBrowser is working with help option.

  • MiniBrowser/efl/main.c:

(quit):

5:42 PM Changeset in webkit [208518] by beidson@apple.com
  • 9 edits in trunk

IndexedDB 2.0: Clean up some exception ordering.
https://bugs.webkit.org/show_bug.cgi?id=164566

LayoutTests/imported/w3c:

Reviewed by NOBODY (OOPS!).

  • IndexedDB-private-browsing/idbcursor_advance_index7-expected.txt:
  • IndexedDB-private-browsing/idbcursor_continue_index7-expected.txt:
  • web-platform-tests/IndexedDB/idbcursor_advance_index7-expected.txt:
  • web-platform-tests/IndexedDB/idbcursor_continue_index7-expected.txt:
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex14-exception_order-expected.txt:

Source/WebCore:

Reviewed by Alex Christensen.

No new tests (Covered by existing tests).

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::advance):
(WebCore::IDBCursor::continueFunction):

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::createIndex):

5:36 PM Changeset in webkit [208517] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

Windows localStorage tests will fail until Bug 155185 is fixed.
https://bugs.webkit.org/show_bug.cgi?id=155185

  • platform/win/TestExpectations: Mark localStorage tests as expected

to fail for now.

5:34 PM Changeset in webkit [208516] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/modern-media-controls/pip-support/pip-support-enabled.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=164336

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
5:33 PM Changeset in webkit [208515] by Brent Fulgham
  • 2 edits in trunk/Tools

Unreviewed build fix after r208509.

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::setNeedsStorageAccessFromFileURLsQuirk): Add missing TestRunner implementation."

5:22 PM Changeset in webkit [208514] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

jsc CLI should work with the remote inspector
https://bugs.webkit.org/show_bug.cgi?id=164569

Reviewed by Joseph Pecoraro.

This patch enables using the remote inspector on the jsc CLI.
In order to use the remote inspector, jsc users need to pass an option.

  • jsc.cpp:

(CommandLine::parseArguments):
(runJSC):

5:21 PM Changeset in webkit [208513] by achristensen@apple.com
  • 28 edits
    4 deletes in trunk

Unreviewed, rolling out r208438.

crashes

Reverted changeset:

"[WK2][NETWORK_SESSION] Add support for downloading file
backed blobs"
https://bugs.webkit.org/show_bug.cgi?id=164458
http://trac.webkit.org/changeset/208438

5:16 PM Changeset in webkit [208512] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking two media/modern-media-controls tests as flaky.

Unreviewed test gardening.

5:13 PM Changeset in webkit [208511] by commit-queue@webkit.org
  • 18 edits
    6 adds in trunk

Change the decoding for some animated images to be asynchronous
https://bugs.webkit.org/show_bug.cgi?id=161566

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2016-11-09
Reviewed by Simon Fraser.

Source/WebCore:

Tests: fast/images/slower-animation-than-decoding-image.html

fast/images/slower-decoding-than-animation-image.html
fast/images/stopped-animation-deleted-image.html

Request the next frame before firing the animation timer. The asynchronous
image decoding work queue notifies the BitmapImage when the frame finishes
decoding. If the timer fires before the frame is decoded, no repaint will
be requested. Only when the image frame is ready, the animation will be
advanced and the image will be repainted.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::load): Cache the image settings in CachedImage.
(WebCore::CachedImage::createImage): No need to pass allowSubsampling to BitmapImage. It can be retrieved through Image::imageObserver().
(WebCore::CachedImage::changedInRect): Change the parameter to notifyObservers() to be a pointer.

  • loader/cache/CachedImage.h: Cache the settings: allowSubsampling, allowAsyncImageDecoding and showDebugBackground through m_loader.
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::dataChanged): Fix a logging message.
(WebCore::BitmapImage::draw): Store the current SubsamplingLevel to be used when requesting decoding the image of the next frame.
Draw a debug rectangle if the next frame is missed because it is being decoded and the setting showDebugBackground is on.
(WebCore::BitmapImage::startAnimation): Deleted. Moved to the header file.
(WebCore::BitmapImage::internalStartAnimation): Added. Request asynchronous image decoding for the next frame if required. Return the
result of starting the animation.
(WebCore::BitmapImage::advanceAnimation): Call internalAdvanceAnimation() if the frame image is not being decoded. If it is being decoded
and the setting showDebugBackground is on, force repaint so the debug rectangle is drawn.
(WebCore::BitmapImage::internalAdvanceAnimation): This is the old body of advanceAnimation().
(WebCore::BitmapImage::stopAnimation): Stop the asynchronous image decoding if it is started.
(WebCore::BitmapImage::newFrameNativeImageAvailableAtIndex): This function is called from the async image decoding work queue when finishing decoding a native image frame.

  • platform/graphics/BitmapImage.h:

(WebCore::BitmapImage::startAnimation): Added. It is now calls internalStartAnimation().

  • platform/graphics/Color.h: Define a constant for the yellow color.
  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::clearMetadata): Delete unreferenced member.
(WebCore::ImageFrameCache::requestFrameAsyncDecodingAtIndex): Return true if the frame is requested for async decoding.

  • platform/graphics/ImageFrameCache.h:
  • platform/graphics/ImageObserver.h: Add virtual functions for allowSubsampling, allowAsyncImageDecoding and showDebugBackground.
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::maximumSubsamplingLevel): Move checking allowSubsampling() to the caller BitmapImage::draw().

  • platform/graphics/ImageSource.h: Remove the setting allowSubsampling(); it can be retrieved from imageObserver().

(WebCore::ImageSource::setAllowSubsampling): Deleted.

  • rendering/RenderImageResource.cpp:

(WebCore::RenderImageResource::shutdown): Stop the animation of an image when shutting down the resource.

  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::shutdown): Ditto.
svg/graphics/SVGImageClients.h: Change the parameter to ImageObserver::changedInRect() to be a pointer.
(WebCore::SVGImageChromeClient::invalidateContentsAndRootView):

  • testing/Internals.cpp:

(WebCore::Internals::setImageFrameDecodingDuration): Sets a fixed frame decoding duration for testing.

  • testing/Internals.h:
  • testing/Internals.idl: Adds an internal option for ImageFrameDecodingDuration.

LayoutTests:

  • fast/images/slower-animation-than-decoding-image-expected.txt: Added.
  • fast/images/slower-animation-than-decoding-image.html: Added.
  • fast/images/slower-decoding-than-animation-image-expected.txt: Added.
  • fast/images/slower-decoding-than-animation-image.html: Added.

In these tests, CanvasRenderingContext2D.drawImage() is used to better
control advancing the animation of an animated image. A setTimeout() is
used instead of the frame duration to schedule when the drawing happens.
The first test ensures that faster decoding does not overrule the frame
duration; the setTimeout interval in this case. The second test ensures
the animation is not advanced unless decoding the next frame has finished.

  • fast/images/stopped-animation-deleted-image-expected.txt: Added.
  • fast/images/stopped-animation-deleted-image.html: Added.

This test ensures that if an animated image is removed from the document,
its draw() method won't be called even if the animation timer fires or the
decoding new frame availability notification is received.

5:11 PM Changeset in webkit [208510] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Settings tab sections overlap each other in docked Inspector window
https://bugs.webkit.org/show_bug.cgi?id=164564

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/SettingsTabContentView.css:

(.content-view.settings):
Make settings sections non-shrinkable and make the content view vertically scrollable.

(.content-view.settings > .setting-container):
Set vertical padding that looks good for non-shrinkable sections.

4:58 PM Changeset in webkit [208509] by Brent Fulgham
  • 38 edits
    8 adds in trunk

Local HTML should be blocked from localStorage access unless "Disable Local File Restrictions" is checked
https://bugs.webkit.org/show_bug.cgi?id=155185
<rdar://problem/11101440>

Reviewed by Brady Eidson.

Source/WebCore:

Add a new quirk for localStorage that defaults to 'on'. When active, this quirk says that
localStorage access should be granted, without needing to grant universal file access.

If the quirk is turned off, then localStorage is blocked unless the WebKit client explicitly
grants universal file access.

Tests: storage/domstorage/localstorage/blocked-file-access-permitted-by-quirk.html

storage/domstorage/localstorage/blocked-file-access.html

  • dom/Document.cpp:

(WebCore::Document::initSecurityContext): Set localStorage quirk mode based on settings.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::SecurityOrigin): Use more C++11 initializers.
(WebCore::SecurityOrigin::canAccessStorage): If the origin is a local file, and we are NOT in
localStorage quirks mode, and we have not been granted universal file access, prevent access
to DOM localStorage.
(WebCore::SecurityOrigin::setNeedsLocalStorageQuirk): Added.

  • page/SecurityOrigin.h:

(WebCore::SecurityOrigin::needsLocalStorageQuirk): Added.

  • page/Settings.in:
  • workers/WorkerGlobalScope.cpp:

(WebCore::WorkerGlobalScope::WorkerGlobalScope): Make sure Workers know what the
localStorage quirks mode is set to.

Source/WebKit/mac:

Provide SPI to access the new quirk for localStorage. The quirk defaults to 'on'. When active, this
quirk says that localStorage access should be granted, without needing to grant universal file access.

If the quirk is turned off, then localStorage is blocked unless the WebKit client explicitly
grants universal file access.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(-[WebPreferences needsLocalStorageQuirk]): Added.
(-[WebPreferences setNeedsLocalStorageQuirk:]): Added.

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]): Honor the new localStorage quirk.

Source/WebKit2:

Provide SPI to access the new quirk for localStorage. The quirk defaults to 'on'. When active, this
quirk says that localStorage access should be granted, without needing to grant universal file access.

If the quirk is turned off, then localStorage is blocked unless the WebKit client explicitly
grants universal file access.

Tested by existing TestWebKitAPI tests and WebKit2.LocalStorageQuirkTest

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetNeedsLocalStorageQuirk): Added.
(WKPreferencesGetNeedsLocalStorageQuirk): Added.

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): Honor the new localStorage quirk.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Honor the new localStorage quirk flag.
(-[WKWebViewConfiguration copyWithZone:]): Ditto.
(-[WKWebViewConfiguration _needsLocalStorageQuirk]): Added.
(-[WKWebViewConfiguration _setNeedsLocalStorageQuirk:]): Added.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleSetNeedsLocalStorageQuirk): Added.

  • WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::setNeedsLocalStorageQuirk): Added.

  • WebProcess/InjectedBundle/InjectedBundle.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Honor the new localStorage quirk flag.

Tools:

  • DumpRenderTree/TestRunner.cpp:

(setNeedsLocalStorageQuirkCallback): Added.
(TestRunner::staticFunctions):

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues): Update for new quirk setting.

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::setNeedsLocalStorageQuirk):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp:
  • TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageClear.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageNullEntries.mm:
  • TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageQuirkEnabled.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/LocalStorageQuirkTest.mm: Added.

(-[LocalStorageQuirkMessageHandler userContentController:didReceiveScriptMessage:]):

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting): Update for new quirk setting.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setNeedsLocalStorageQuirk): Added.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

LayoutTests:

  • storage/domstorage/localstorage/blocked-file-access-expected.txt: Added.
  • storage/domstorage/localstorage/blocked-file-access-permitted-by-quirk-expected.txt: Added.
  • storage/domstorage/localstorage/blocked-file-access-permitted-by-quirk.html: Added.
  • storage/domstorage/localstorage/blocked-file-access.html: Added.
  • storage/domstorage/localstorage/resources/allowed-example.html: Added.
  • storage/domstorage/localstorage/resources/blocked-example.html: Added.
4:30 PM Changeset in webkit [208508] by commit-queue@webkit.org
  • 13 edits in trunk

URLParser should not consider path of URLs with no host to start at the first slash after the colon
https://bugs.webkit.org/show_bug.cgi?id=164555

Patch by Alex Christensen <achristensen@webkit.org> on 2016-11-09
Reviewed by Tim Horton.

LayoutTests/imported/w3c:

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/url-constructor-expected.txt:

Source/WebCore:

When we see a url that is only scheme:// we treated the as the path. Firefox did this with unrecognized schemes,
but based on https://github.com/whatwg/url/issues/148 they seem willing to change. We had added similar behavior to
URL::parse, and I added this to URLParser in r206783 which this effectively reverts.

Covered by API and layout tests.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):
Don't move m_userStart to m_pathStart back by two when we see an empty host.

Tools:

  • TestWebKitAPI/Tests/WebCore/URLParser.cpp:

(TestWebKitAPI::TEST_F):

LayoutTests:

  • fast/url/segments-expected.txt:
  • fast/url/segments-from-data-url-expected.txt:
  • fast/loader/url-parse-1-expected.txt:
  • fetch/fetch-url-serialization-expected.txt:
4:18 PM Changeset in webkit [208507] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Simplify logic of SecurityOrigin::databaseIdentifier
https://bugs.webkit.org/show_bug.cgi?id=164565

Reviewed by Brady Eidson.

No change in behavior.

SecurityOrigins with the file scheme need a special database identifier to be backwards-compatible with existing storage.
Instead of determining whether this is a file SecurityOrigin at parsing time and only using that information when
making the database identifier, just determine whether we need this quirk when making the database identifier.
I'm planning to move this logic to SecurityOriginData in another patch.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::SecurityOrigin):
(WebCore::SecurityOrigin::create):
(WebCore::SecurityOrigin::databaseIdentifier):

  • page/SecurityOrigin.h:
4:11 PM Changeset in webkit [208506] by ljaehun.lim@samsung.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, build fix after r208460

isValidColorString() was renamed isValidSimpleColorString().

  • html/ColorInputType.cpp:

(WebCore::ColorInputType::suggestions):

3:59 PM Changeset in webkit [208505] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit/win

Fix Windows build after r208499
https://bugs.webkit.org/show_bug.cgi?id=164562

  • WebKitDLL.cpp:

(shutDownWebKit):

3:51 PM Changeset in webkit [208504] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Fix STP build.

  • WebCorePrefix.h:
3:41 PM Changeset in webkit [208503] by Simon Fraser
  • 33 edits
    9 adds in trunk

Implement visual-viewport based position:fixed handling for Mac async scrolling
https://bugs.webkit.org/show_bug.cgi?id=164495

Reviewed by Tim Horton.

Source/WebCore:

Educate the scrolling tree about visual and layout viewports. This is runtime-switchable,
so we push the enable flag to via the root state node, then push the layout viewport,
and the min/max scroll position that contstrain it, through frame state nodes.

When a scroll happens, we compute a new layout viewport when the visual viewport hits
an edge, and push that down through setScrollLayerPosition() since it's used to position
fixed and sticky layers.

When the main thread gets notified about an async scroll, we set the new layout viewport
on the FrameView, but do so in such a way that does not trigger layout. This is OK because
we do a RenderLayer update which udpates all the layoutViewport-dependent state, and is
necessary to avoid repaints every main thread update.

The iOS code is made to compile, but not work yet.

Tests: compositing/tiling/visiblerect-accumulated-offset.html

fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up.html
fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down.html
fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state.html

  • page/FrameView.cpp:

(WebCore::FrameView::setLayoutViewportOrigin):
(WebCore::FrameView::updateLayoutViewport):
(WebCore::FrameView::visualViewportRect):
(WebCore::FrameView::unscaledMinimumScrollPosition):
(WebCore::FrameView::scrollPositionChanged):

  • page/FrameView.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::scheduleUpdateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScrollTimerFired):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::visualViewportEnabled):

  • page/scrolling/AsyncScrollingCoordinator.h:

(WebCore::AsyncScrollingCoordinator::ScheduledScrollUpdate::ScheduledScrollUpdate):

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setLayoutViewport):
(WebCore::ScrollingStateFrameScrollingNode::setMinLayoutViewportOrigin):
(WebCore::ScrollingStateFrameScrollingNode::setMaxLayoutViewportOrigin):
(WebCore::ScrollingStateFrameScrollingNode::setVisualViewportEnabled):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties):

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::viewportChangedViaDelegatedScrolling):
(WebCore::ScrollingTree::scrollPositionChangedViaDelegatedScrolling):
(WebCore::ScrollingTree::commitTreeState):

  • page/scrolling/ScrollingTree.h:

(WebCore::ScrollingTree::visualViewportEnabled):
(WebCore::ScrollingTree::setVisualViewportEnabled):

  • page/scrolling/ScrollingTreeFrameScrollingNode.cpp:

(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition):

  • page/scrolling/ScrollingTreeFrameScrollingNode.h:

(WebCore::ScrollingTreeFrameScrollingNode::layoutViewport):
(WebCore::ScrollingTreeFrameScrollingNode::minLayoutViewportOrigin):
(WebCore::ScrollingTreeFrameScrollingNode::maxLayoutViewportOrigin):

  • page/scrolling/ScrollingTreeScrollingNode.cpp:

(WebCore::ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints):

  • page/scrolling/ScrollingTreeScrollingNode.h:
  • page/scrolling/ThreadedScrollingTree.cpp:

(WebCore::ThreadedScrollingTree::scrollingTreeNodeDidScroll):

  • page/scrolling/ThreadedScrollingTree.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h:
  • page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm:

(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition):

  • page/scrolling/ios/ScrollingTreeIOS.cpp:

(WebCore::ScrollingTreeIOS::scrollingTreeNodeDidScroll):

  • page/scrolling/ios/ScrollingTreeIOS.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):

Source/WebKit2:

Educate the scrolling tree about visual and layout viewports. This is runtime-switchable,
so we push the enable flag to via the root state node, then push the layout viewport,
and the min/max scroll position that contstrain it, through frame state nodes.

When a scroll happens, we compute a new layout viewport when the visual viewport hits
an edge, and push that down through setScrollLayerPosition() since it's used to position
fixed and sticky layers.

The iOS code is made to compile, but not work yet.

  • Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):

  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.cpp:

(WebKit::RemoteScrollingCoordinatorProxy::scrollingTreeNodeDidScroll):

  • UIProcess/Scrolling/RemoteScrollingCoordinatorProxy.h:
  • UIProcess/Scrolling/RemoteScrollingTree.cpp:

(WebKit::RemoteScrollingTree::scrollingTreeNodeDidScroll):

  • UIProcess/Scrolling/RemoteScrollingTree.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h:
  • UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:

(WebKit::ScrollingTreeOverflowScrollingNodeIOS::setScrollLayerPosition):

  • WebProcess/Scrolling/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::scrollPositionChangedForNode):

LayoutTests:

Tests that dump the scrolling state tree, and the layer tree.

  • TestExpectations:
  • compositing/tiling/visiblerect-accumulated-offset.html: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-expected.txt: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up-expected.txt: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down-then-up.html: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolled-down.html: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state-expected.txt: Added.
  • fast/visual-viewport/tiled-drawing/zoomed-fixed-scrolling-layers-state.html: Added.
  • platform/mac-wk2/TestExpectations:
  • platform/mac/compositing/tiling/visiblerect-accumulated-offset-expected.txt: Added.
3:38 PM Changeset in webkit [208502] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

More attempted build fix.

  • UIProcess/Cocoa/WebViewImpl.mm:
3:34 PM Changeset in webkit [208501] by beidson@apple.com
  • 4 edits in trunk

IndexedDB 2.0: W3C test IndexedDB/idbtransaction_objectStoreNames.html fails.
https://bugs.webkit.org/show_bug.cgi?id=164528

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/idbtransaction_objectStoreNames-expected.txt:

Source/WebCore:

No new tests (Covered by existing test).

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::transaction): De-dupe the input names.

3:29 PM Changeset in webkit [208500] by beidson@apple.com
  • 21 edits
    5 adds in trunk

IndexedDB 2.0: Implement new IDBCursor.continuePrimaryKey function.
https://bugs.webkit.org/show_bug.cgi?id=164404

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/idbcursor-continuePrimaryKey-exception-order-expected.txt:

Source/WebCore:

Tests: storage/indexeddb/modern/idbcursor-continue-primary-key-1-private.html

storage/indexeddb/modern/idbcursor-continue-primary-key-1.html
Also covered by existing tests.

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::continuePrimaryKey):
(WebCore::IDBCursor::uncheckedIterateCursor):

  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBKeyData.h:

(WebCore::IDBKeyData::operator>):
(WebCore::IDBKeyData::operator<=):
(WebCore::IDBKeyData::operator>=):

  • Modules/indexeddb/server/MemoryCursor.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/MemoryIndexCursor.cpp:

(WebCore::IDBServer::MemoryIndexCursor::iterate):

  • Modules/indexeddb/server/MemoryIndexCursor.h:
  • Modules/indexeddb/server/MemoryObjectStoreCursor.cpp:

(WebCore::IDBServer::MemoryObjectStoreCursor::iterate):

  • Modules/indexeddb/server/MemoryObjectStoreCursor.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/SQLiteIDBCursor.cpp:

(WebCore::IDBServer::SQLiteIDBCursor::iterate):

  • Modules/indexeddb/server/SQLiteIDBCursor.h:
  • Modules/indexeddb/shared/IDBIterateCursorData.cpp:

(WebCore::IDBIterateCursorData::isolatedCopy):

  • Modules/indexeddb/shared/IDBIterateCursorData.h:

(WebCore::IDBIterateCursorData::encode):
(WebCore::IDBIterateCursorData::decode):

LayoutTests:

  • storage/indexeddb/cursor-basics-expected.txt:
  • storage/indexeddb/cursor-basics-private-expected.txt:
  • storage/indexeddb/modern/idbcursor-continue-primary-key-1-expected.txt: Added.
  • storage/indexeddb/modern/idbcursor-continue-primary-key-1-private-expected.txt: Added.
  • storage/indexeddb/modern/idbcursor-continue-primary-key-1-private.html: Added.
  • storage/indexeddb/modern/idbcursor-continue-primary-key-1.html: Added.
  • storage/indexeddb/modern/resources/idbcursor-continue-primary-key-1.js: Added.
3:28 PM Changeset in webkit [208499] by achristensen@apple.com
  • 31 edits in trunk/Source

Clean up Storage code
https://bugs.webkit.org/show_bug.cgi?id=164562

Reviewed by Brady Eidson.

Source/WebKit:

Some classes were in WebCore namespace instead of WebKit.

  • Storage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::StorageAreaImpl):
(WebKit::StorageAreaImpl::create):
(WebKit::StorageAreaImpl::copy):
(WebCore::StorageAreaImpl::~StorageAreaImpl): Deleted.
(WebCore::StorageAreaImpl::StorageAreaImpl): Deleted.
(WebCore::StorageAreaImpl::create): Deleted.
(WebCore::StorageAreaImpl::copy): Deleted.
(WebCore::StorageAreaImpl::canAccessStorage): Deleted.
(WebCore::StorageAreaImpl::storageType): Deleted.
(WebCore::StorageAreaImpl::length): Deleted.
(WebCore::StorageAreaImpl::key): Deleted.
(WebCore::StorageAreaImpl::item): Deleted.
(WebCore::StorageAreaImpl::setItem): Deleted.
(WebCore::StorageAreaImpl::removeItem): Deleted.
(WebCore::StorageAreaImpl::clear): Deleted.
(WebCore::StorageAreaImpl::contains): Deleted.
(WebCore::StorageAreaImpl::importItems): Deleted.
(WebCore::StorageAreaImpl::close): Deleted.
(WebCore::StorageAreaImpl::clearForOriginDeletion): Deleted.
(WebCore::StorageAreaImpl::sync): Deleted.
(WebCore::StorageAreaImpl::blockUntilImportComplete): Deleted.
(WebCore::StorageAreaImpl::memoryBytesUsedByCache): Deleted.
(WebCore::StorageAreaImpl::incrementAccessCount): Deleted.
(WebCore::StorageAreaImpl::decrementAccessCount): Deleted.
(WebCore::StorageAreaImpl::closeDatabaseTimerFired): Deleted.
(WebCore::StorageAreaImpl::closeDatabaseIfIdle): Deleted.
(WebCore::StorageAreaImpl::dispatchStorageEvent): Deleted.

  • Storage/StorageAreaImpl.h:
  • Storage/StorageAreaSync.cpp:

(WebKit::StorageAreaSync::StorageAreaSync):
(WebKit::StorageAreaSync::create):
(WebCore::StorageAreaSync::StorageAreaSync): Deleted.
(WebCore::StorageAreaSync::create): Deleted.
(WebCore::StorageAreaSync::~StorageAreaSync): Deleted.
(WebCore::StorageAreaSync::scheduleFinalSync): Deleted.
(WebCore::StorageAreaSync::scheduleItemForSync): Deleted.
(WebCore::StorageAreaSync::scheduleClear): Deleted.
(WebCore::StorageAreaSync::scheduleCloseDatabase): Deleted.
(WebCore::StorageAreaSync::syncTimerFired): Deleted.
(WebCore::StorageAreaSync::openDatabase): Deleted.
(WebCore::StorageAreaSync::migrateItemTableIfNeeded): Deleted.
(WebCore::StorageAreaSync::performImport): Deleted.
(WebCore::StorageAreaSync::markImported): Deleted.
(WebCore::StorageAreaSync::blockUntilImportComplete): Deleted.
(WebCore::StorageAreaSync::sync): Deleted.
(WebCore::StorageAreaSync::performSync): Deleted.
(WebCore::StorageAreaSync::deleteEmptyDatabase): Deleted.
(WebCore::StorageAreaSync::scheduleSync): Deleted.

  • Storage/StorageAreaSync.h:
  • Storage/StorageNamespaceImpl.cpp:

(WebKit::StorageNamespaceImpl::createSessionStorageNamespace):
(WebKit::StorageNamespaceImpl::getOrCreateLocalStorageNamespace):
(WebKit::StorageNamespaceImpl::storageArea):
(WebCore::localStorageNamespaceMap): Deleted.
(WebCore::StorageNamespaceImpl::createSessionStorageNamespace): Deleted.
(WebCore::StorageNamespaceImpl::getOrCreateLocalStorageNamespace): Deleted.
(WebCore::StorageNamespaceImpl::StorageNamespaceImpl): Deleted.
(WebCore::StorageNamespaceImpl::~StorageNamespaceImpl): Deleted.
(WebCore::StorageNamespaceImpl::copy): Deleted.
(WebCore::StorageNamespaceImpl::storageArea): Deleted.
(WebCore::StorageNamespaceImpl::close): Deleted.
(WebCore::StorageNamespaceImpl::clearOriginForDeletion): Deleted.
(WebCore::StorageNamespaceImpl::clearAllOriginsForDeletion): Deleted.
(WebCore::StorageNamespaceImpl::sync): Deleted.
(WebCore::StorageNamespaceImpl::closeIdleLocalStorageDatabases): Deleted.

  • Storage/StorageNamespaceImpl.h:
  • Storage/StorageTracker.cpp:

(WebCore::StorageTracker::initializeTracker): Deleted.
(WebCore::StorageTracker::internalInitialize): Deleted.
(WebCore::StorageTracker::tracker): Deleted.
(WebCore::StorageTracker::StorageTracker): Deleted.
(WebCore::StorageTracker::setDatabaseDirectoryPath): Deleted.
(WebCore::StorageTracker::databaseDirectoryPath): Deleted.
(WebCore::StorageTracker::trackerDatabasePath): Deleted.
(WebCore::ensureDatabaseFileExists): Deleted.
(WebCore::StorageTracker::openTrackerDatabase): Deleted.
(WebCore::StorageTracker::importOriginIdentifiers): Deleted.
(WebCore::StorageTracker::finishedImportingOriginIdentifiers): Deleted.
(WebCore::StorageTracker::syncImportOriginIdentifiers): Deleted.
(WebCore::StorageTracker::syncFileSystemAndTrackerDatabase): Deleted.
(WebCore::StorageTracker::setOriginDetails): Deleted.
(WebCore::StorageTracker::syncSetOriginDetails): Deleted.
(WebCore::StorageTracker::origins): Deleted.
(WebCore::StorageTracker::deleteAllOrigins): Deleted.
(WebCore::truncateDatabaseFile): Deleted.
(WebCore::StorageTracker::syncDeleteAllOrigins): Deleted.
(WebCore::StorageTracker::deleteOriginWithIdentifier): Deleted.
(WebCore::StorageTracker::deleteOrigin): Deleted.
(WebCore::StorageTracker::syncDeleteOrigin): Deleted.
(WebCore::StorageTracker::willDeleteAllOrigins): Deleted.
(WebCore::StorageTracker::willDeleteOrigin): Deleted.
(WebCore::StorageTracker::canDeleteOrigin): Deleted.
(WebCore::StorageTracker::cancelDeletingOrigin): Deleted.
(WebCore::StorageTracker::isActive): Deleted.
(WebCore::StorageTracker::setIsActive): Deleted.
(WebCore::StorageTracker::databasePathForOrigin): Deleted.
(WebCore::StorageTracker::diskUsageForOrigin): Deleted.

  • Storage/StorageTracker.h:

(WebCore::StorageTracker::storageDatabaseIdleInterval): Deleted.
(WebCore::StorageTracker::setStorageDatabaseIdleInterval): Deleted.

  • Storage/WebStorageNamespaceProvider.cpp:

(storageNamespaceProviders): Deleted.
(WebStorageNamespaceProvider::create): Deleted.
(WebStorageNamespaceProvider::WebStorageNamespaceProvider): Deleted.
(WebStorageNamespaceProvider::~WebStorageNamespaceProvider): Deleted.
(WebStorageNamespaceProvider::closeLocalStorage): Deleted.
(WebStorageNamespaceProvider::clearLocalStorageForAllOrigins): Deleted.
(WebStorageNamespaceProvider::clearLocalStorageForOrigin): Deleted.
(WebStorageNamespaceProvider::closeIdleLocalStorageDatabases): Deleted.
(WebStorageNamespaceProvider::syncLocalStorage): Deleted.
(WebStorageNamespaceProvider::createSessionStorageNamespace): Deleted.
(WebStorageNamespaceProvider::createLocalStorageNamespace): Deleted.
(WebStorageNamespaceProvider::createTransientLocalStorageNamespace): Deleted.

  • Storage/WebStorageNamespaceProvider.h:
  • WebCoreSupport/WebResourceLoadScheduler.h:
  • WebCoreSupport/WebViewGroup.cpp:

(WebViewGroup::storageNamespaceProvider):

Source/WebKit/mac:

  • Storage/WebStorageManager.mm:

(-[WebStorageManager origins]):
(-[WebStorageManager deleteAllOrigins]):
(-[WebStorageManager deleteOrigin:]):
(-[WebStorageManager diskUsageForOrigin:]):
(-[WebStorageManager syncLocalStorage]):
(-[WebStorageManager syncFileSystemAndTrackerDatabase]):
(+[WebStorageManager setStorageDatabaseIdleInterval:]):
(+[WebStorageManager closeIdleLocalStorageDatabases]):
(WebKitInitializeStorageIfNecessary):

  • WebView/WebView.mm:

(+[WebView _applicationWillTerminate]):

Source/WebKit2:

Use more Refs!

  • NetworkProcess/CustomProtocols/CustomProtocolManager.h:
  • Platform/IPC/Connection.cpp:

(IPC::Connection::addWorkQueueMessageReceiver):

  • Platform/IPC/Connection.h:
  • UIProcess/Storage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::create):
(WebKit::LocalStorageDatabase::LocalStorageDatabase):

  • UIProcess/Storage/LocalStorageDatabase.h:
  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::create):
(WebKit::LocalStorageDatabaseTracker::LocalStorageDatabaseTracker):

  • UIProcess/Storage/LocalStorageDatabaseTracker.h:
  • UIProcess/Storage/StorageManager.cpp:

(WebKit::StorageManager::StorageArea::openDatabaseAndImportItemsIfNeeded):
(WebKit::StorageManager::StorageManager):

  • UIProcess/Storage/StorageManager.h:
  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::processWillOpenConnection):

  • UIProcess/mac/SecItemShimProxy.cpp:

(WebKit::SecItemShimProxy::initializeConnection):

  • WebProcess/Plugins/PluginProcessConnectionManager.cpp:

(WebKit::PluginProcessConnectionManager::initializeConnection):

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::initializeConnection):

  • WebProcess/WebPage/ViewUpdateDispatcher.cpp:

(WebKit::ViewUpdateDispatcher::initializeConnection):

3:27 PM Changeset in webkit [208498] by Jonathan Bedard
  • 2 edits in trunk/Tools

test-webkitpy failing test_create_patch_is_full_patch unit test
https://bugs.webkit.org/show_bug.cgi?id=164385

Reviewed by Darin Adler.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py: Fixed expected output to match output.
3:25 PM Changeset in webkit [208497] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Another attempted build fix.

  • UIProcess/Cocoa/WebViewImpl.mm:
3:23 PM Changeset in webkit [208496] by sbarati@apple.com
  • 3 edits
    1 add in trunk

Math.min()/Math.max() with no arguments is lowered incorrectly in the BytecodeParser
https://bugs.webkit.org/show_bug.cgi?id=164464
<rdar://problem/29131452>

Reviewed by Darin Adler.

JSTests:

  • stress/math-max-min-no-arguments.js: Added.

(assert):
(min):
(max):
(test):

Source/JavaScriptCore:

We were incorrectly matching this pattern inside the bytecode parser
to return NaN. Instead, we must return:

Infinity for Math.min()

-Infinity for Math.max()

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleMinMax):

3:18 PM Changeset in webkit [208495] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

Experimental features should not be enabled by default
https://bugs.webkit.org/show_bug.cgi?id=164367

Reviewed by Darin Adler.

We have two classes of experimental features:

(1) Features that are unstable and should be off by default, except for the developers

currently working on them. This is straightforward to handle; the default value should
be false.

(2) Features that are still not ready for end users, but are stable enough for testing. We

want these features to be enabled in testing environments like the bots, MiniBrowser,
Safari Tech Preview, and so forth, but not in stable release builds.

Implement this. It is better than having all experimental features on unconditionally, and
expecting them to be disabled manually on release branches, which is not something we are
keen to do. An exception is Cocoa ports, which to my knowledge do not currently have any
concept of development builds. These ports seem happy to continue disabling features
manually in release branches, and should continue to do so at least for now.

We also have features that we wish to enumerate at runtime, yet have enabled by default
unconditionally. We do not currently have any infrastructure to support this and should not
abuse the experimental status for this purpose; it requires future work. All settings can
still be toggled at runtime by clients that know about them using the existing runtime
features API.

Lastly, the custom elements feature is ready to be enabled by default, so it's no longer
experimental and can graduate to the list of normal boolean features.

  • Shared/WebPreferencesDefinitions.h:
3:17 PM Changeset in webkit [208494] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Build fix.

  • UIProcess/Cocoa/WebViewImpl.mm:
3:03 PM Changeset in webkit [208493] by Beth Dakin
  • 2 edits in trunk/Source/WebKit/mac

Another attempted build fix.

  • WebView/WebView.mm:
2:53 PM Changeset in webkit [208492] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-602.3.10

New tag.

2:34 PM Changeset in webkit [208491] by commit-queue@webkit.org
  • 5 edits
    1 copy
    8 adds in trunk

[Modern Media Controls] Media Controller: set status label according to media state
https://bugs.webkit.org/show_bug.cgi?id=164557
<rdar://problem/29184097>

Patch by Antoine Quint <Antoine Quint> on 2016-11-09
Reviewed by Dean Jackson.

Source/WebCore:

Correctly set the StatusLabel text based on the media loading and network state.

Tests: http/tests/media/modern-media-controls/status-support/status-support-live-broadcast.html

http/tests/media/modern-media-controls/status-support/status-support-loading.html
media/modern-media-controls/status-support/status-support-error.html

  • Modules/modern-media-controls/js-files:
  • Modules/modern-media-controls/media/media-controller.js:

(MediaController):

  • Modules/modern-media-controls/media/status-support.js: Added.

(StatusSupport.prototype.get control):
(StatusSupport.prototype.get mediaEvents):
(StatusSupport.prototype.syncControl):
(StatusSupport):

  • WebCore.xcodeproj/project.pbxproj:

LayoutTests:

Add new tests to check that we display the expected StatusLabel text when the media is in the
"Loading", "Error" and "Live Broadcast" states.

  • http/tests/media/modern-media-controls/status-support/status-support-live-broadcast-expected.txt: Added.
  • http/tests/media/modern-media-controls/status-support/status-support-live-broadcast.html: Added.
  • http/tests/media/modern-media-controls/status-support/status-support-loading-expected.txt: Added.
  • http/tests/media/modern-media-controls/status-support/status-support-loading.html: Added.
  • media/modern-media-controls/status-support/status-support-error-expected.txt: Added.
  • media/modern-media-controls/status-support/status-support-error.html: Added.
2:29 PM Changeset in webkit [208490] by matthew_hanson@apple.com
  • 1 delete in tags/Safari-603.1.11/trunk

Remove fallout from incorrect tag.

2:27 PM Changeset in webkit [208489] by Beth Dakin
  • 2 edits in trunk/Source/WebKit/mac

Attempted build fix.

  • WebView/WebView.mm:
2:27 PM Changeset in webkit [208488] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.12

New tag.

2:25 PM Changeset in webkit [208487] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

No need to set setFlowThreadState on RenderText in createTextRenderer.
https://bugs.webkit.org/show_bug.cgi?id=164559

Reviewed by Antti Koivisto.

setFlowThreadState in create*Renderer ensures that by the time we issue the initial call to
styleWillChange/styleDidChange through initializeStyle, the state is already set.
However since RenderText does not have its own style, it's sufficient to have the flow state set
through the normal RenderElement::insertChildInternal code path.

No change in functionality.

  • style/RenderTreeUpdater.cpp:

(WebCore::createTextRenderer):

2:24 PM Changeset in webkit [208486] by beidson@apple.com
  • 30 edits
    2 adds in trunk/Source

IndexedDB 2.0: Encapsulate cursor iteration parameters for easy future expansion.
https://bugs.webkit.org/show_bug.cgi?id=164504

Reviewed by Darin Adler.

Source/WebCore:

No new tests (Refactor, no behavior change).

This patch literally just takes the "key" and "count" arguments and encapsulates them in a struct.
That struct will then be easily expandable in the future (e.g. bug 164404).

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::uncheckedIterateCursor):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::iterateCursor):
(WebCore::IDBTransaction::iterateCursorOnServer):

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/client/IDBConnectionProxy.cpp:

(WebCore::IDBClient::IDBConnectionProxy::iterateCursor):

  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/indexeddb/client/IDBConnectionToServer.cpp:

(WebCore::IDBClient::IDBConnectionToServer::iterateCursor):

  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::iterateCursor):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::iterateCursor):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::iterateCursor):
(WebCore::IDBServer::UniqueIDBDatabase::performIterateCursor):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::iterateCursor):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
  • Modules/indexeddb/shared/IDBIterateCursorData.cpp: Added.

(WebCore::IDBIterateCursorData::isolatedCopy):

  • Modules/indexeddb/shared/IDBIterateCursorData.h: Added.

(WebCore::IDBIterateCursorData::encode):
(WebCore::IDBIterateCursorData::decode):

  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::iterateCursor):

  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

Source/WebKit2:

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::iterateCursor):

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:
  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::iterateCursor):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
2:15 PM Changeset in webkit [208485] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebCore

StyledElement::attributeChanged shouldn't do any work when the attribute value didn't change
https://bugs.webkit.org/show_bug.cgi?id=129476

Reviewed by Andreas Kling.

Avoid calling styleAttributeChanged and setPresentationAttributeStyleIsDirty
when the attribute value didn't change as in r164856.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::attributeChanged):

2:06 PM Changeset in webkit [208484] by mitz@apple.com
  • 8 copies
    1 add in releases/Apple/Safari Technology Preview 17

Added a tag for Safari Technology Preview release 17.

2:02 PM Changeset in webkit [208483] by sbarati@apple.com
  • 6 edits
    1 add in trunk

TypeProfiler and running GC collection on another thread don't play nicely with each other
https://bugs.webkit.org/show_bug.cgi?id=164441
<rdar://problem/29132174>

Reviewed by Geoffrey Garen.

JSTests:

  • typeProfiler/type-profiler-gc.js: Added.

(bar):
(foo):

Source/JavaScriptCore:

This fix here is simple: we now treat the type profiler log as a GC root.
GC will make sure that we mark any values/structures that are in the log.
It's easy to reason about the correctness of this, and it also solves
the problem that we were clearing the log on the GC thread. Clearing the
log on the GC thread was a problem because when we clear the log, we may
allocate, which we're not allowed to do from the GC thread.

  • heap/Heap.cpp:

(JSC::Heap::markRoots):
(JSC::Heap::visitTypeProfiler):
(JSC::Heap::collectInThread):

  • heap/Heap.h:
  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::processLogEntries):
(JSC::TypeProfilerLog::visit):

  • runtime/TypeProfilerLog.h:
1:42 PM Changeset in webkit [208482] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Allow RefPtrs of const ThreadSafeRefCounted types
https://bugs.webkit.org/show_bug.cgi?id=164548

Patch by Alex Christensen <achristensen@webkit.org> on 2016-11-09
Reviewed by Tim Horton.

  • wtf/ThreadSafeRefCounted.h:

Make m_refCount mutable like we did with RefCounted in r203257.

1:33 PM Changeset in webkit [208481] by Yusuke Suzuki
  • 4 edits
    2 adds in trunk

[DOMJIT] Implement Node::ownerDocument
https://bugs.webkit.org/show_bug.cgi?id=164004

Reviewed by Darin Adler.

Source/WebCore:

Test: js/dom/domjit-accessor-owner-document.html

Still I cannot reproduce this crash in x64 environment, according to the crash log, it accesses 0x8 address.
This can happen if document() accidentally returns nullptr. In the C++ ownerDocument implementation,
if document() returns nullptr, it just returns nullptr. But in the DOMJIT implementation, we assume that
document() won't return nullptr and access the member of it.

This patch aligns the DOMJIT implementation strictly to the C++ one.

  • dom/Node.idl:
  • domjit/JSNodeDOMJIT.cpp:

(WebCore::NodeOwnerDocumentDOMJIT::checkDOM):
(WebCore::NodeOwnerDocumentDOMJIT::callDOMGetter):

LayoutTests:

  • js/dom/domjit-accessor-owner-document-expected.txt: Added.
  • js/dom/domjit-accessor-owner-document.html: Added.
1:30 PM Changeset in webkit [208480] by commit-queue@webkit.org
  • 32 edits
    1 copy
    1 move in trunk/Source/WebCore

[SVG] Start moving special casing of SVG out of the bindings - SVGAngle
https://bugs.webkit.org/show_bug.cgi?id=164496

Patch by Sam Weinig <sam@webkit.org> on 2016-11-09
Reviewed by Darin Adler.

There is quite a bit of special casing of SVG types in the bindings that adds
a lot of complexity and is relatively fragile, as it is based on type naming.

Instead of keeping the complexity in the bindings, I am going to move it into
the implementation, where it has also longed to be.

Starting small, with just SVGAngle. It has been split in two, with the existing
SVGAngle being renamed SVGAngleValue, and the bound instance, which used to be name
SVGPropertyTearOff<SVGAngle>, taking the name SVGAngle (and inheriting from
SVGPropertyTearOff<SVGAngleValue>).

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:

Add SVGAngleValue.cpp

  • bindings/scripts/CodeGenerator.pm:

Remove SVGAngle as a special case.

  • svg/SVGAngle.cpp: Removed.
  • svg/SVGAngle.h:

Added. Implements the SVGAngle interface explicitly, getting to
the SVGAngleValue through propertyReference().

  • svg/SVGAngle.idl:
  • svg/SVGAngleValue.cpp: Copied from Source/WebCore/svg/SVGAngle.cpp.
  • svg/SVGAngleValue.h: Copied from Source/WebCore/svg/SVGAngle.h.

Move old SVGAngle implementation to SVGAngleValue.

  • svg/SVGAnimatedAngle.cpp:

Replace SVGAngle usage with SVGAngleValue.

  • svg/SVGAnimatedAngle.h:

Switch SVGAnimatedAngle to be a type alias. This remains SVGAnimatedPropertyTearOff<SVGAngle>
as SVGAnimatedPropertyTearOff has been changed to take the TearOff type as its parameter.

  • svg/SVGAnimatedLength.h:
  • svg/SVGAnimatedPreserveAspectRatio.h:
  • svg/SVGAnimatedRect.h:

Switch to using type aliases and pass the TearOff to SVGAnimatedPropertyTearOff.

  • svg/SVGAnimatedType.cpp:

(WebCore::SVGAnimatedType::createAngleAndEnumeration):

  • svg/SVGAnimatedType.h:

(WebCore::SVGAnimatedType::angleAndEnumeration):
Use SVGAngleValue.

  • svg/SVGComponentTransferFunctionElement.h:

Add missing include of SVGElement.h (need because it removed from SVGPropertyTearOff).

  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::parseAttribute):
(WebCore::SVGMarkerElement::setOrient):
Switch to take an SVGAngleValue.

(WebCore::SVGMarkerElement::setOrientToAngle):
Update to pull the value out via propertyReference().

  • svg/SVGMarkerElement.h:

Switch to take an SVGAngleValue.

  • svg/SVGLengthList.h:
  • svg/SVGNumberList.h:
  • svg/SVGPathSegList.h:
  • svg/SVGPointList.h:
  • svg/SVGStringList.h:
  • svg/SVGTransformList.h:

Switch to using type aliases in SVGPropertyTraits and add an alias for
ListItemTearOff.

  • svg/SVGSVGElement.cpp:

(WebCore::SVGSVGElement::createSVGAngle):

  • svg/SVGSVGElement.h:

Change createSVGAngle to return a Ref<SVGAngle> and create one.

  • svg/SVGSVGElement.idl:

Annotate IDL to indicate that a new value is being returned.

  • svg/SVGTransform.cpp:

Remove unnecessary include of SVGAngle.h.

  • svg/SVGViewSpec.cpp:

Add missing include of SVGElement.h (need because it removed from SVGPropertyTearOff).

  • svg/properties/SVGAnimatedPropertyTearOff.h:

Change to be parameterized on the TearOffType, rather than the PropertyType itself. Get the
Property type from the TearOffType.

  • svg/properties/SVGListProperty.h:
  • svg/properties/SVGListPropertyTearOff.h:

Fix assumption that all TearOffTypes are just a SVGPropertyTearOff templatized on a property
type. This is no longer true for SVGAngle. Instead, get the TearOffType for lists via SVGPropertyTraits.

  • svg/properties/SVGPropertyTearOff.h:

Make the PropertyType available by exposing it as a type alias.

1:27 PM Changeset in webkit [208479] by Darin Adler
  • 43 edits in trunk/Source

Move Range from ExceptionCode to ExceptionOr
https://bugs.webkit.org/show_bug.cgi?id=164457

Reviewed by Alex Christensen.

Source/WebCore:

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::rangeForNodeContents): Update to use ExceptionOr,
keeping behavior the same.
(WebCore::characterOffsetsInOrder): Ditto.
(WebCore::setRangeStartOrEndWithCharacterOffset): Changed argument to a
reference instead of a pointer. Use a boolean return value to indicate
success rather than an exception, since the callers don't need to know
which exception it is.
(WebCore::AXObjectCache::rangeForUnorderedCharacterOffsets): Updated for
the above.
(WebCore::AXObjectCache::nextBoundary): Ditto.
(WebCore::AXObjectCache::previousBoundary): Ditto.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::rangeOfStringClosestToRangeInDirection):
Update to use ExceptionOr, keeping behavior the same.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::documentBasedSelectedTextRange): Ditto.

  • accessibility/atk/WebKitAccessibleUtil.cpp:

(selectionBelongsToObject): Ditto.

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _convertToNSRange:]): Ditto.

  • dom/Node.cpp:

(WebCore::Node::textRects): Ditto.

  • dom/Range.cpp:

(WebCore::Range::~Range): Remove old comment that no longer makes sense now
that the detach function no longer does anything.
(WebCore::checkForDifferentRootContainer): Updated to use ExceptionOr,
keeping behavior the same.
(WebCore::Range::setStart): Ditto.
(WebCore::Range::setEnd): Ditto.
(WebCore::Range::isPointInRange): Ditto.
(WebCore::Range::comparePoint): Ditto.
(WebCore::Range::compareNode): Ditto.
(WebCore::top): Added helper function so that compareBoundaryPoints doesn't
need to have two identical loops in it.
(WebCore::Range::compareBoundaryPoints): Updated to use ExceptionOr,
keeping behavior the same.
(WebCore::Range::compareBoundaryPointsForBindings): Ditto. Also use a switch
instead of relying on the order of the values to check for unsupported values.
(WebCore::Range::boundaryPointsValid): Ditto.
(WebCore::Range::deleteContents): Ditto.
(WebCore::Range::intersectsNode): Ditto.
(WebCore::Range::processContents): Ditto.
(WebCore::deleteCharacterData): Ditto.
(WebCore::processContentsBetweenOffsets): Ditto. Also changed to be a
non-member function and private to this file instead of in the class.
(WebCore::processNodes): Ditto. Also changed one argument to be a RefPtr
since the code relies on using it after mutating the DOM.
(WebCore::processAncestorsAndTheirSiblings): Ditto. Changed one argument type
to use ExceptionOr so the caller doesn't have to check the exception first.
(WebCore::Range::extractContents): Ditto.
(WebCore::Range::cloneContents): Ditto.
(WebCore::Range::insertNode): Ditto. Also fixed to only call nodeType once
instead of three times.
(WebCore::Range::toString): Ditto. Also fixed to call nodeType only once
per node instead of twice, to use downcast instead of static_cast, and to
use the word "node" instead of "n" for the local variable name.
(WebCore::Range::createContextualFragment): Ditto.
(WebCore::Range::checkNodeWOffset): Ditto.
(WebCore::Range::setStartAfter): Ditto.
(WebCore::Range::setEndBefore): Ditto.
(WebCore::Range::setEndAfter): Ditto.
(WebCore::Range::selectNode): Ditto.
(WebCore::Range::selectNodeContents): Ditto.
(WebCore::Range::surroundContents): Ditto.
(WebCore::Range::setStartBefore): Ditto.
(WebCore::Range::contains): Ditto. Except added code to handle exception
case to return false without asserting because I saw at least one crash
that seemed to imply this behavior was needed.
(WebCore::rangesOverlap): Ditto.
(WebCore::rangeOfContents): Ditto.
(WebCore::Range::expand): Ditto.
(WebCore::Range::getClientRects): Ditto.
(WebCore::Range::getBoundingClientRect): Ditto.
(WebCore::Range::borderAndTextQuads): Changed to use return value
instead of out argument, since it's a private function used only
within this class so it was easy to update all call sites.
(WebCore::Range::boundingRect): Updated for above. Also renamed since
there was no need for the name "internal" in this.
(WebCore::Range::absoluteBoundingRect): Ditto.

  • dom/Range.h: Updated for above.
  • dom/Range.idl: Use non-legacy exceptions. Also changed the default value

of the string argument to the expand function to the empty string rather
than "undefined", because the function silently does nothing when passed
any unrecognized string, and so this leaves behavior unchanged. I removed
the comment saying that the "undefined" default is wrong.

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::applyAlternativeTextToRange): Updated
to use ExceptionOr but behave the same.

  • editing/Editor.cpp:

(WebCore::Editor::advanceToNextMisspelling): Ditto.
(WebCore::Editor::markAndReplaceFor): Ditto.
(WebCore::isFrameInRange): Ditto. Also made a few style tweaks.
(WebCore::Editor::countMatchesForText): Ditto.

  • editing/EditorCommand.cpp:

(WebCore::unionDOMRanges): Ditto.

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::respondToNodeModification): Ditto.

  • editing/InsertListCommand.cpp:

(WebCore::InsertListCommand::doApplyForSingleParagraph): Ditto.

  • editing/TextCheckingHelper.cpp:

(WebCore::TextCheckingParagraph::offsetTo): Ditto.

  • editing/TextCheckingHelper.h: Updated for above and also deleted

unneeded private function checkingRange, which just churned the
reference count unnecessarily; instead use m_checkingRange directly.

  • editing/TextIterator.cpp:

(WebCore::TextIterator::getLocationAndLengthFromRange): Ditto.

  • editing/VisiblePosition.cpp:

(WebCore::setStart): Ditto.
(WebCore::setEnd): Ditto.

  • editing/VisibleSelection.cpp:

(WebCore::makeSearchRange): Ditto.

  • editing/VisibleUnits.cpp:

(WebCore::suffixLengthForRange): Changed argument from RefPtr to
a reference.
(WebCore::prefixLengthForRange): Ditto.
(WebCore::previousBoundary): Updated for ExceptionOr and the change
above.
(WebCore::nextBoundary): Ditto.

  • editing/VisibleUnits.h: Updated for above.
  • editing/htmlediting.cpp:

(WebCore::comparePositions): Updated to use ExceptionOr but behave
the same.
(WebCore::visiblePositionForIndexUsingCharacterIterator): Ditto.
(WebCore::isNodeVisiblyContainedWithin): Ditto.

  • editing/ios/EditorIOS.mm:

(WebCore::Editor::setDictationPhrasesAsChildOfElement): Ditto.
(WebCore::Editor::setTextAsChildOfElement): Ditto.

  • editing/mac/EditorMac.mm:

(WebCore::Editor::adjustedSelectionRange): Ditto.

  • editing/markup.cpp:

(WebCore::createMarkupInternal): Ditto.

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::contextMenuItemSelected): Ditto.

  • page/DOMSelection.cpp:

(WebCore::DOMSelection::addRange): Ditto.
(WebCore::DOMSelection::deleteFromDocument): Ditto.
(WebCore::DOMSelection::containsNode): Ditto.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchMouseEvent): Updated for change to
use ExceptionOr in Ragne::compareNode. Also refactored the function
to make the logic a little mroe straightforward and nest less of it
inside a loop.

  • page/Page.cpp:

(WebCore::Page::findStringMatchingRanges): Updated for ExceptionOr
without changing behavior.

  • page/TextIndicator.cpp:

(WebCore::hasNonInlineOrReplacedElements): Ditto.

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::getRanges): Ditto.

Source/WebKit/mac:

  • DOM/DOMRange.mm:

(-[DOMRange setStart:offset:]): Updated exception handling.
(-[DOMRange setEnd:offset:]): Ditto.
(-[DOMRange setStartBefore:]): Ditto.
(-[DOMRange setStartAfter:]): Ditto.
(-[DOMRange setEndBefore:]): Ditto.
(-[DOMRange setEndAfter:]): Ditto.
(-[DOMRange selectNode:]): Ditto.
(-[DOMRange selectNodeContents:]): Ditto.
(-[DOMRange compareBoundaryPoints:sourceRange:]): Ditto.
(-[DOMRange deleteContents]): Ditto.
(-[DOMRange extractContents]): Ditto.
(-[DOMRange cloneContents]): Ditto.
(-[DOMRange insertNode:]): Ditto.
(-[DOMRange surroundContents:]): Ditto.
(-[DOMRange createContextualFragment:]): Ditto.
(-[DOMRange compareNode:]): Ditto.
(-[DOMRange intersectsNode:]): Ditto.
(-[DOMRange comparePoint:offset:]): Ditto.
(-[DOMRange isPointInRange:offset:]): Ditto.
(-[DOMRange expand:]): Ditto.

  • WebView/WebFrame.mm:

(-[WebFrame _documentFragmentWithMarkupString:baseURLString:]): Ditto.
(-[WebFrame _smartDeleteRangeForProposedRange:]): Deleted.
This function was incorrectly implemented (set both start and end of
the range to the computed start), not declared in any header file,
not used anywhere inside WebKit, and I also could not find a use of it
in outside-WebKit Apple code.

  • mac/DOM/DOMUIKitExtensions.mm:

(-[DOMRange move:inDirection:]): Ditto.
(-[DOMRange extend:inDirection:]): Ditto.

Source/WebKit/win:

  • WebView.cpp:

(WebView::onIMERequestCharPosition): Updated for new exception handling.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMRange.cpp:

(webkit_dom_range_set_start): Updated exception handling.
(webkit_dom_range_set_end): Ditto.
(webkit_dom_range_set_start_before): Ditto.
(webkit_dom_range_set_start_after): Ditto.
(webkit_dom_range_set_end_before): Ditto.
(webkit_dom_range_set_end_after): Ditto.
(webkit_dom_range_select_node): Ditto.
(webkit_dom_range_select_node_contents): Ditto.
(webkit_dom_range_compare_boundary_points): Ditto.
(webkit_dom_range_delete_contents): Ditto.
(webkit_dom_range_extract_contents): Ditto.
(webkit_dom_range_clone_contents): Ditto.
(webkit_dom_range_insert_node): Ditto.
(webkit_dom_range_surround_contents): Ditto.
(webkit_dom_range_create_contextual_fragment): Ditto.
(webkit_dom_range_compare_node): Ditto.
(webkit_dom_range_intersects_node): Ditto.
(webkit_dom_range_compare_point): Ditto.
(webkit_dom_range_is_point_in_range): Ditto.
(webkit_dom_range_expand): Ditto.

  • WebProcess/InjectedBundle/API/mac/WKDOMRange.mm:

(-[WKDOMRange setStart:offset:]): Ditto.
(-[WKDOMRange setEnd:offset:]): Ditto.
(-[WKDOMRange selectNode:]): Ditto.
(-[WKDOMRange selectNodeContents:]): Ditto.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::contentsAsString): Ditto.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::rangeForWebSelectionAtPosition): Ditto.
(WebKit::WebPage::rangeForBlockAtPoint): Ditto.
(WebKit::WebPage::selectWithGesture): Ditto.
(WebKit::containsRange): Ditto.
(WebKit::unionDOMRanges): Ditto.
(WebKit::WebPage::switchToBlockSelectionAtPoint): Ditto.
(WebKit::WebPage::getPositionInformation): Ditto.

1:27 PM Changeset in webkit [208478] by hyatt@apple.com
  • 5 edits in trunk

[CSS Parser] Fix grid layout parsing
https://bugs.webkit.org/show_bug.cgi?id=164489

Reviewed by Dean Jackson.

Source/WebCore:

  • css/CSSValueKeywords.in:
  • css/parser/CSSPropertyParser.cpp:

(WebCore::consumeFitContent):
(WebCore::isGridTrackFixedSized):
(WebCore::consumeGridTrackSize):
(WebCore::consumeGridTrackRepeatFunction):
(WebCore::consumeGridTrackList):
(WebCore::isCustomIdentValue):
(WebCore::CSSPropertyParser::consumeGridItemPositionShorthand):
(WebCore::CSSPropertyParser::consumeGridAreaShorthand):
(WebCore::consumeImplicitGridAutoFlow):
(WebCore::CSSPropertyParser::consumeGridShorthand):

LayoutTests:

  • fast/css-grid-layout/grid-auto-columns-rows-auto-flow-resolution.html:
1:21 PM Changeset in webkit [208477] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Correct a typo in the name of a flaky test.
https://bugs.webkit.org/show_bug.cgi?id=164388

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:21 PM Changeset in webkit [208476] by Darin Adler
  • 87 edits in trunk/Source

Move EventTarget from ExceptionCode to ExceptionOr
https://bugs.webkit.org/show_bug.cgi?id=164465

Reviewed by Youenn Fablet.

Source/WebCore:

  • Modules/indexeddb/IDBRequest.h: Added now-needed forward

class declarations.

  • Modules/webaudio/AudioContext.h: Ditto.
  • bindings/js/JSEventListener.cpp:

(WebCore::eventHandlerAttribute): Updated for name change of the
attributeEventListener function.
(WebCore::documentEventHandlerAttribute): Ditto.

  • dom/Document.cpp:

(WebCore::Document::getWindowAttributeEventListener): Ditto.

  • dom/EventTarget.cpp:

(WebCore::EventTarget::setAttributeEventListener): Updated for
name change.
(WebCore::EventTarget::attributeEventListener): Ditto.
(WebCore::EventTarget::dispatchEventForBindings): Use ExceptionOr.
(WebCore::legacyType): Use null instead of empty for no type, since
it's more efficient to check for null.
(WebCore::EventTarget::fireEventListeners): Check for null.
Also streamlined logic a little bit and removed a very old comment.
(WebCore::EventTarget::eventListeners): Renamed from getEventListeners.

  • dom/EventTarget.h: Removed lots of unneeded declarations. Renamed

some functions to remove get prefix. Updated for above changes.
Moved one inline function out of the class header. Made the destructor
for EventTarget be inline to make the destructors for derived classes
slightly more efficient.

  • dom/EventTarget.idl: Use non-legacy exception.
  • dom/Node.cpp:

(WebCore::Node::didMoveToNewDocument): Updated for name change.

  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplacementFragment::ReplacementFragment): Ditto.

  • inspector/InspectorCSSAgent.h: Added now-needed forward declaration.
  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::getEventListeners): Updated for name change.

  • inspector/InspectorInstrumentation.h: Added now-needed forward declaration.
  • page/DOMWindow.h: Ditto.
  • xml/XMLHttpRequest.h: Ditto.

Source/WebKit/mac:

  • DOM/DOMNode.mm:

(-[DOMNode dispatchEvent:]): Updated exception handling.

Source/WebKit/win:

  • DOMCoreClasses.cpp:

(DOMNode::dispatchEvent): Updated exception handling.
(DOMWindow::dispatchEvent): Ditto.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMAttr.cpp:

(webkit_dom_attr_dispatch_event): Updated exception handling.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCDATASection.cpp:

(webkit_dom_cdata_section_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMCharacterData.cpp:

(webkit_dom_character_data_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMComment.cpp:

(webkit_dom_comment_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDOMWindow.cpp:

(webkit_dom_dom_window_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocument.cpp:

(webkit_dom_document_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentFragment.cpp:

(webkit_dom_document_fragment_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMDocumentType.cpp:

(webkit_dom_document_type_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:

(webkit_dom_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAnchorElement.cpp:

(webkit_dom_html_anchor_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAppletElement.cpp:

(webkit_dom_html_applet_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLAreaElement.cpp:

(webkit_dom_html_area_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBRElement.cpp:

(webkit_dom_html_br_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBaseElement.cpp:

(webkit_dom_html_base_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLBodyElement.cpp:

(webkit_dom_html_body_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLButtonElement.cpp:

(webkit_dom_html_button_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLCanvasElement.cpp:

(webkit_dom_html_canvas_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDListElement.cpp:

(webkit_dom_html_d_list_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDirectoryElement.cpp:

(webkit_dom_html_directory_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDivElement.cpp:

(webkit_dom_html_div_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLDocument.cpp:

(webkit_dom_html_document_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLElement.cpp:

(webkit_dom_html_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLEmbedElement.cpp:

(webkit_dom_html_embed_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFieldSetElement.cpp:

(webkit_dom_html_field_set_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFontElement.cpp:

(webkit_dom_html_font_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFormElement.cpp:

(webkit_dom_html_form_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameElement.cpp:

(webkit_dom_html_frame_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLFrameSetElement.cpp:

(webkit_dom_html_frame_set_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHRElement.cpp:

(webkit_dom_html_hr_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadingElement.cpp:

(webkit_dom_html_heading_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHeadElement.cpp:

(webkit_dom_html_head_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLHtmlElement.cpp:

(webkit_dom_html_html_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLIFrameElement.cpp:

(webkit_dom_html_iframe_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLImageElement.cpp:

(webkit_dom_html_image_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLInputElement.cpp:

(webkit_dom_html_input_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLIElement.cpp:

(webkit_dom_html_li_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLabelElement.cpp:

(webkit_dom_html_label_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLegendElement.cpp:

(webkit_dom_html_legend_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLLinkElement.cpp:

(webkit_dom_html_link_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMapElement.cpp:

(webkit_dom_html_map_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMarqueeElement.cpp:

(webkit_dom_html_marquee_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMenuElement.cpp:

(webkit_dom_html_menu_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLMetaElement.cpp:

(webkit_dom_html_meta_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLModElement.cpp:

(webkit_dom_html_mod_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOListElement.cpp:

(webkit_dom_html_o_list_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLObjectElement.cpp:

(webkit_dom_html_object_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptGroupElement.cpp:

(webkit_dom_html_opt_group_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLOptionElement.cpp:

(webkit_dom_html_option_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParagraphElement.cpp:

(webkit_dom_html_paragraph_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLParamElement.cpp:

(webkit_dom_html_param_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLPreElement.cpp:

(webkit_dom_html_pre_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLQuoteElement.cpp:

(webkit_dom_html_quote_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLScriptElement.cpp:

(webkit_dom_html_script_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLSelectElement.cpp:

(webkit_dom_html_select_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLStyleElement.cpp:

(webkit_dom_html_style_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCaptionElement.cpp:

(webkit_dom_html_table_caption_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:

(webkit_dom_html_table_cell_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableColElement.cpp:

(webkit_dom_html_table_col_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableElement.cpp:

(webkit_dom_html_table_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableRowElement.cpp:

(webkit_dom_html_table_row_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableSectionElement.cpp:

(webkit_dom_html_table_section_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTextAreaElement.cpp:

(webkit_dom_html_text_area_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTitleElement.cpp:

(webkit_dom_html_title_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLUListElement.cpp:

(webkit_dom_html_u_list_element_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMNode.cpp:

(webkit_dom_node_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMProcessingInstruction.cpp:

(webkit_dom_processing_instruction_dispatch_event): Ditto.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMText.cpp:

(webkit_dom_text_dispatch_event): Ditto.

1:17 PM Changeset in webkit [208475] by dbates@webkit.org
  • 8 edits
    30 adds in trunk

Add test infrastructure and tests for existing HTTP 0.9 sandbox machinery
https://bugs.webkit.org/show_bug.cgi?id=164389
<rdar://problem/29101072>

Reviewed by Alex Christensen.

Source/WebCore:

Add test infrastructure to support registering an arbitrary port as the default port
for a protocol. The behavior of various machinery, including the HTTP 0.9 machinery,
can be effected by whether the resource request was made using the default port for
the protocol. We expose window.internals.registerDefaultPortForProtocol() to allow
a test to override the default port associated with a protocol so as to support
testing these code paths using the existing port 8000 server started by run-webkit-httpd.
Without window.internals.registerDefaultPortForProtocol() we would need to teach
run-webkit-httpd to run a web server on port 80, which requires superuser privileges
(since it is a privileged port number) and is more likely to interfere with an
existing web server setup.

Tests: http/tests/security/http-0.9/default-port-plugin-blocked.html

http/tests/security/http-0.9/default-port-script-blocked.html
http/tests/security/http-0.9/iframe-blocked.html
http/tests/security/http-0.9/image-blocked.html
http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed-ref-test.html
http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed.html
http/tests/security/http-0.9/image-on-HTTP-0.9-page-blocked.html
http/tests/security/http-0.9/worker-connect-src-blocked.html
http/tests/security/http-0.9/worker-importScripts-blocked.html
http/tests/security/http-0.9/xhr-asynchronous-blocked.html

  • platform/URL.cpp:

(WebCore::defaultPortForProtocolMapForTesting): Added.
(WebCore::registerDefaultPortForProtocolForTesting): Adds the specified (protocol, port) to the
mapping used for testing.
(WebCore::clearDefaultPortForProtocolMapForTesting): Clears the protocol to default port testing map.
We call this function from Internals::resetToConsistentState() so that the mapping is cleared between
test runs.
(WebCore::defaultPortForProtocol): Modified to check the protocol to default port map for testing
before consulting URLParser::defaultPortForProtocol().

  • platform/URL.h:
  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState): Clear the default port mapping used for testing.
(WebCore::Internals::registerDefaultPortForProtocol): Added.

  • testing/Internals.h:
  • testing/Internals.idl: Added declaration for registerDefaultPortForProtocol().

LayoutTests:

Add tests for the existing HTTP 0.9 sandbox machinery. Until we fix <https://bugs.webkit.org/show_bug.cgi?id=164387>,
these tests can only be run singly (i.e. pass --run-singly to run-webkit-tests). So, we skip
these tests to avoid test failures when run-webkit-tests runs in parallel mode (the default
mode and the mode used on the buildbots).

  • TestExpectations:
  • http/tests/security/http-0.9/default-port-plugin-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/default-port-plugin-blocked.html: Added.
  • http/tests/security/http-0.9/default-port-script-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/default-port-script-blocked.html: Added.
  • http/tests/security/http-0.9/iframe-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/iframe-blocked.html: Added.
  • http/tests/security/http-0.9/image-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/image-blocked.html: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed-expected.txt: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed-ref-test-expected.html: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed-ref-test.html: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-default-port-page-allowed.html: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-page-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/image-on-HTTP-0.9-page-blocked.html: Added.
  • http/tests/security/http-0.9/resources/blue-square.png: Added.
  • http/tests/security/http-0.9/resources/nph-alert-fail.pl: Added.
  • http/tests/security/http-0.9/resources/nph-fail.pl: Added.
  • http/tests/security/http-0.9/resources/nph-image-on-HTTP-0.9-default-port-page-allowed.pl: Added.
  • http/tests/security/http-0.9/resources/nph-image-on-HTTP-0.9-page-blocked.pl: Added.
  • http/tests/security/http-0.9/resources/nph-image.pl: Added.
  • http/tests/security/http-0.9/resources/nph-load-plugin-fail.pl: Added.
  • http/tests/security/http-0.9/resources/nph-worker-fail.pl: Added.
  • http/tests/security/http-0.9/worker-connect-src-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/worker-connect-src-blocked.html: Added.
  • http/tests/security/http-0.9/worker-importScripts-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/worker-importScripts-blocked.html: Added.
  • http/tests/security/http-0.9/xhr-asynchronous-blocked-expected.txt: Added.
  • http/tests/security/http-0.9/xhr-asynchronous-blocked.html: Added.
1:16 PM Changeset in webkit [208474] by commit-queue@webkit.org
  • 36 edits in trunk/Source/WebCore

[WebIDL] Add proper parsing for Promises
https://bugs.webkit.org/show_bug.cgi?id=164497

Patch by Sam Weinig <sam@webkit.org> on 2016-11-09
Reviewed by Tim Horton.

  • bindings/scripts/IDLParser.pm:

(parseNonAnyType):
(parseStringType):
Require Promise types to declare the type they resolve to.

  • bindings/js/JSDOMPromise.h:

Allow DOMPromise to be be parameterized on void. Add an SFINAE guarded
overload of resolve that takes no arguments when in a DOMPromise<void>.

  • Modules/applepay/ApplePaySession.idl:
  • Modules/fetch/DOMWindowFetch.idl:
  • Modules/fetch/FetchBody.idl:
  • Modules/fetch/FetchResponse.idl:
  • Modules/fetch/WorkerGlobalScopeFetch.idl:
  • Modules/mediastream/MediaDevices.idl:
  • Modules/mediastream/MediaStreamTrack.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCStatsReport.idl:
  • Modules/streams/ReadableStream.idl:
  • Modules/streams/ReadableStreamDefaultReader.idl:
  • Modules/streams/ReadableStreamSource.idl:
  • Modules/streams/WritableStream.idl:
  • Modules/webaudio/AudioContext.idl:
  • bindings/scripts/test/TestNode.idl:
  • bindings/scripts/test/TestObj.idl:
  • crypto/SubtleCrypto.idl:
  • crypto/WebKitSubtleCrypto.idl:
  • css/FontFace.idl:
  • css/FontFaceSet.idl:
  • dom/CustomElementRegistry.idl:
  • html/HTMLMediaElement.idl:

Update IDLs to specify the resolve type of promise types.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::MediaEndpointPeerConnection::replaceTrack):
(WebCore::MediaEndpointPeerConnection::replaceTrackTask):

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::applyConstraints):

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::setLocalDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
(WebCore::PeerConnectionBackend::addIceCandidateSucceeded):

  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/streams/ReadableStreamSource.h:

(WebCore::ReadableStreamSource::start):
(WebCore::ReadableStreamSource::pull):
(WebCore::ReadableStreamSource::startFinished):
(WebCore::ReadableStreamSource::pullFinished):

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::addReaction):
(WebCore::AudioContext::setState):
(WebCore::AudioContext::suspend):
(WebCore::AudioContext::resume):
(WebCore::AudioContext::close):

  • Modules/webaudio/AudioContext.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::rejectPendingPlayPromises):
(WebCore::HTMLMediaElement::resolvePendingPlayPromises):
(WebCore::HTMLMediaElement::play):

  • html/HTMLMediaElement.h:

Update implementations to use DOMPromise<void> rather than DOMPromise<nullptr_t>
and use the new resolve() overload.

1:12 PM Changeset in webkit [208473] by Ryan Haddad
  • 2 edits in branches/safari-602-branch/LayoutTests

Land test expectations for rdar://problem/29169239.

1:06 PM Changeset in webkit [208472] by matthew_hanson@apple.com
  • 5 edits in branches/safari-602-branch/Source

Versioning.

12:58 PM Changeset in webkit [208471] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Followup to https://bugs.webkit.org/show_bug.cgi?id=164466 - Make an IDBTransaction* be an IDBTransaction&

Rubberstamped by Alex Christensen.

No new tests (No behavior change).

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::IDBObjectStore):
(WebCore::IDBObjectStore::~IDBObjectStore):
(WebCore::IDBObjectStore::hasPendingActivity):
(WebCore::IDBObjectStore::name):
(WebCore::IDBObjectStore::setName):
(WebCore::IDBObjectStore::keyPath):
(WebCore::IDBObjectStore::indexNames):
(WebCore::IDBObjectStore::transaction):
(WebCore::IDBObjectStore::autoIncrement):
(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::openKeyCursor):
(WebCore::IDBObjectStore::get):
(WebCore::IDBObjectStore::putOrAdd):
(WebCore::IDBObjectStore::doDelete):
(WebCore::IDBObjectStore::clear):
(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::index):
(WebCore::IDBObjectStore::deleteIndex):
(WebCore::IDBObjectStore::doCount):
(WebCore::IDBObjectStore::getAll):
(WebCore::IDBObjectStore::getAllKeys):
(WebCore::IDBObjectStore::markAsDeleted):
(WebCore::IDBObjectStore::rollbackForVersionChangeAbort):
(WebCore::IDBObjectStore::ref):
(WebCore::IDBObjectStore::deref):

  • Modules/indexeddb/IDBObjectStore.h:
12:38 PM Changeset in webkit [208470] by Alan Bujtas
  • 8 edits in trunk/Source/WebCore

Move RenderNamedFlowThread nextRendererForElement logic to RenderTreeUpdater.
https://bugs.webkit.org/show_bug.cgi?id=164503

Reviewed by Antti Koivisto.

When we insert a renderer into the render tree, we need to know both its parent
and its next sibling. Normally the parent and the sibling are based on the DOM, but
when this renderer is part of a flow thread, its insertion sibling is not necessarily the DOM sibling.
To find the correct sibling, we call RenderNamedFlowThread's nextRendererForElement().
RenderNamedFlowThread keeps track of its children so that it can compute the next sibling
for the insertion point.

This patch eliminates the need for keeping track of the child renderers of each
flow by moving the 'next sibling' logic to RenderTreePosition.

No change in functionality.

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::insertedIntoTree):
(WebCore::RenderElement::willBeDestroyed):
(WebCore::RenderElement::removeFromRenderFlowThread):
(WebCore::RenderElement::renderNamedFlowThreadWrapper): Deleted.

  • rendering/RenderElement.h:
  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::nextRendererForElement): Deleted.
(WebCore::RenderNamedFlowThread::addFlowChild): Deleted.
(WebCore::RenderNamedFlowThread::removeFlowChild): Deleted.

  • rendering/RenderNamedFlowThread.h:
  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::previousSiblingRenderer):
(WebCore::RenderTreePosition::flowThreadInsertionContext):

  • style/RenderTreePosition.h:

(WebCore::RenderTreePosition::RenderTreePosition):
(WebCore::RenderTreePosition::parent):

  • style/RenderTreeUpdater.cpp:

(WebCore::registerElementForFlowThreadIfNeeded): We need to registed the element even when it does not create renderer (display: none).
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::moveToFlowThreadIfNeeded): Deleted.

12:29 PM Changeset in webkit [208469] by pvollan@apple.com
  • 2 edits in trunk/Source/WebCore

[Win][Direct2D] Incomplete image decoding.
https://bugs.webkit.org/show_bug.cgi?id=164511

Reviewed by Darin Adler.

Create native decoder when all image data has been received.

  • platform/graphics/win/ImageDecoderDirect2D.cpp:

(WebCore::ImageDecoder::setData):

12:25 PM Changeset in webkit [208468] by Beth Dakin
  • 2 edits in trunk/Source/WebCore

Attempted build fix.

  • platform/spi/cocoa/AVKitSPI.h:
12:23 PM Changeset in webkit [208467] by beidson@apple.com
  • 13 edits
    1 add in trunk

IndexedDB 2.0: Clean up more transaction abort behavior, including tweaks to Index/ObjectStore lifetime.
https://bugs.webkit.org/show_bug.cgi?id=164466

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/IndexedDB/transaction-abort-index-metadata-revert-expected.txt:
  • web-platform-tests/IndexedDB/transaction-abort-multiple-metadata-revert-expected.txt:
  • web-platform-tests/IndexedDB/transaction-abort-object-store-metadata-revert-expected.txt:

Source/WebCore:

No new tests (Covered by existing tests that now pass).

Previously, IDBIndex ref/deref didn't track a traditional ref count but instead kept the owning object store alive.
Now, IDBObjectStore ref/deref do the same thing for the owning transaction.

Now when a version change transaction is rolled back, some object stores and indexes get pulled out of the "deleted"
set and get promoted back up into the "referenced" set.

Now deleted object stores/indexes are considered opaque roots, as live objects in the deleted state *can* get back
to the owning objects.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::rollbackInfoForVersionChangeAbort):

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::IDBObjectStore):
(WebCore::IDBObjectStore::indexNames):
(WebCore::IDBObjectStore::transaction):
(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::openKeyCursor):
(WebCore::IDBObjectStore::deleteIndex):
(WebCore::IDBObjectStore::rollbackForVersionChangeAbort):
(WebCore::IDBObjectStore::visitReferencedIndexes):
(WebCore::IDBObjectStore::ref):
(WebCore::IDBObjectStore::deref):
(WebCore::IDBObjectStore::create): Deleted.

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::objectStore):
(WebCore::IDBTransaction::transitionedToFinishing):
(WebCore::IDBTransaction::internalAbort):
(WebCore::IDBTransaction::createObjectStore):
(WebCore::IDBTransaction::deleteObjectStore):
(WebCore::IDBTransaction::visitReferencedObjectStores):

  • Modules/indexeddb/IDBTransaction.h:
  • Modules/indexeddb/IDBTransaction.idl:
  • bindings/js/JSIDBTransactionCustom.cpp: Added.

(WebCore::JSIDBTransaction::visitAdditionalChildren):

12:22 PM Changeset in webkit [208466] by Simon Fraser
  • 14 edits in trunk/Source/WebCore

Allow customization of TextStream-based logging for geometry types
https://bugs.webkit.org/show_bug.cgi?id=164460

Reviewed by Zalan Bujtas.

TextStream-based logging was constrained by the requirement to maintain compatibility
with DRT-style output, which includes cumbersome rect logging ("at (5,0) size 40x40")
and dumping LayoutRects as IntRects.

Add some formatting flags so that other TextStream clients (e.g. logging) can have
more readable output, and opt into automatic FormatNumberRespectingIntegers behavior.

TextStreams whose output appears in test results are given flags to avoid behavior
changes, but in the longer term test results should be updated.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::replayDisplayListAsText):

  • page/scrolling/ScrollingStateNode.cpp:

(WebCore::ScrollingStateNode::scrollingStateTreeAsText):

  • platform/graphics/FloatPoint.cpp:

(WebCore::operator<<):

  • platform/graphics/FloatRect.cpp:

(WebCore::operator<<):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::layerTreeAsText):

  • platform/graphics/IntRect.cpp:

(WebCore::operator<<):

  • platform/graphics/LayoutPoint.cpp:

(WebCore::operator<<):

  • platform/graphics/LayoutRect.cpp:

(WebCore::operator<<):

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::replayDisplayListAsText):

  • platform/graphics/displaylists/DisplayList.cpp:

(WebCore::DisplayList::DisplayList::asText):

  • platform/text/TextStream.cpp:

(WebCore::TextStream::operator<<):

  • platform/text/TextStream.h:

(WebCore::TextStream::TextStream):
(WebCore::TextStream::formattingFlags):
(WebCore::TextStream::setFormattingFlags):
(WebCore::TextStream::hasFormattingFlag):
(WebCore::TextStream::increaseIndent):
(WebCore::TextStream::decreaseIndent):

  • rendering/RenderTreeAsText.cpp:

(WebCore::externalRepresentation):
(WebCore::counterValueForElement):

12:21 PM Changeset in webkit [208465] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

RenderFlowThread::flowThreadRelativeWillBeRemoved should take RenderObject& instead of RenderObject*
https://bugs.webkit.org/show_bug.cgi?id=164543

Reviewed by Simon Fraser.

No change in functionality.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::removeChild):

  • rendering/RenderFlowThread.h:
  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::RenderMultiColumnFlowThread::handleSpannerRemoval):
(WebCore::RenderMultiColumnFlowThread::flowThreadRelativeWillBeRemoved):

  • rendering/RenderMultiColumnFlowThread.h:
12:18 PM Changeset in webkit [208464] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r208149): Media scrubber is not displayed in media controls
https://bugs.webkit.org/show_bug.cgi?id=164514

Reviewed by Darin Adler.

Fixes broken Media Controls API tests.

Added a new PlatformMediaSessionType; need to add that same type to the TYPE_TRAITS section of
MediaElementSession.h so that is<> and downcast<> work correctly.

  • html/MediaElementSession.h:

(isType):

12:13 PM Changeset in webkit [208463] by jfbastien@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

WebAssembly: Silence noisy warning
https://bugs.webkit.org/show_bug.cgi?id=164459

Reviewed by Yusuke Suzuki.

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):

12:06 PM Changeset in webkit [208462] by Wenson Hsieh
  • 8 edits in trunk

When editing IME, compositionend events should fire after input events
https://bugs.webkit.org/show_bug.cgi?id=164324
<rdar://problem/29050438>

Reviewed by Darin Adler.

Source/WebCore:

Moves where we dispatch compositionend events to after applying editing commands that fire beforeinput or
input events. Also augments existing layout tests to verify the change.

  • editing/Editor.cpp:

(WebCore::Editor::setComposition):

LayoutTests:

Augments fast/events/input-events-ime-recomposition.html and fast/events/input-events-ime-composition.html to
verify that compositionend events are fired after input events. Also rebaselines
fast/events/ime-composition-events-001.html.

  • fast/events/ime-composition-events-001-expected.txt:
  • fast/events/input-events-ime-composition-expected.txt:
  • fast/events/input-events-ime-composition.html:
  • fast/events/input-events-ime-recomposition-expected.txt:
  • fast/events/input-events-ime-recomposition.html:
12:04 PM Changeset in webkit [208461] by Wenson Hsieh
  • 5 edits
    2 adds in trunk

Setting foreground color when text is selected should fire an input event with color data
https://bugs.webkit.org/show_bug.cgi?id=164241
<rdar://problem/29032759>

Reviewed by Darin Adler.

Source/WebCore:

Refactors Editor::applyStyle and Editor::applyParagraphStyle to handle beforeinput and input event dispatch.
Instead of going through the ApplyStyleCommand to dispatch input events, override shouldDispatchInputEvents to
return false. This strategy also has the effect of unifying the way input events are dispatched in applyStyle,
in both codepaths where we computeAndSetTypingStyle and where we create and then apply a style command.

Test: fast/events/input-events-selection-forecolor-data.html

  • editing/ApplyStyleCommand.h:
  • editing/Editor.cpp:

(WebCore::inputEventDataForEditingStyleAndAction):
(WebCore::Editor::applyStyle):
(WebCore::Editor::applyParagraphStyle):
(WebCore::Editor::computeAndSetTypingStyle):

LayoutTests:

Adds a new layout test verifying that selecting text and setting its foreground color will fire input events
with the correct RGB values in the data attribute.

  • fast/events/input-events-selection-forecolor-data-expected.txt: Added.
  • fast/events/input-events-selection-forecolor-data.html: Added.
  • platform/ios-simulator/TestExpectations:
11:56 AM Changeset in webkit [208460] by dino@apple.com
  • 50 edits
    10 adds in trunk

Rendering support for ExtendedColors
https://bugs.webkit.org/show_bug.cgi?id=164443
<rdar://problems/29123243>

Reviewed by Simon Fraser and Darin Adler.

Source/WebCore:

Add support for rendering the new color() syntax, which
ends up as an ExtendedColor.

In order to make rendering code a little more readable, I
changed Color::hasAlpha to Color::isOpaque (since an alpha
of 100% is still an alpha), and added a Color::isVisible
helper (the color isn't completely transparent). These new
helpers support ExtendedColor forms.

Support for painting gradients and blending between colors
is still to come. I also added some FIXME comments
to show other places that don't handle ExtendedColors yet.

Tests: css3/color/backgrounds-and-borders.html

css3/color/box-shadows.html
css3/color/canvas.html
css3/color/composited-solid-backgrounds.html
css3/color/text.html

  • css/CSSGradientValue.cpp: Add some notes that this is broken.

(WebCore::interpolate):
(WebCore::CSSGradientValue::knownToBeOpaque):

  • editing/EditingStyle.cpp: Use new Color helpers.

(WebCore::isTransparentColorValue):

  • editing/mac/EditorMac.mm: Use new Color helpers.

(WebCore::Editor::fontAttributesForSelectionStart):

  • html/ColorInputType.cpp: No need to use the Color class at all here.

(WebCore::isValidSimpleColorString): Renamed from isValidColorString.
(WebCore::ColorInputType::sanitizeValue):
(WebCore::ColorInputType::typeMismatchFor):
(WebCore::isValidColorString): Deleted.

  • html/canvas/CanvasRenderingContext2D.cpp: New helpers.

(WebCore::CanvasRenderingContext2D::shouldDrawShadows):
(WebCore::CanvasRenderingContext2D::didDraw):

  • page/FrameView.cpp: Ditto.

(WebCore::FrameView::recalculateScrollbarOverlayStyle):
(WebCore::FrameView::hasOpaqueBackground):
(WebCore::FrameView::setBaseBackgroundColor):

  • platform/graphics/Color.cpp:

(WebCore::differenceSquared): Support ExtendedColor, but also
add a note to indicate that this method and its call sites
should use floats.
(WebCore::Color::serialized): New helper.
(WebCore::Color::cssText): Ditto.
(WebCore::Color::blend): Ditto.
(WebCore::Color::blendWithWhite):
(WebCore::Color::colorWithAlphaMultipliedBy): Implementation of new function.
(WebCore::Color::colorWithAlpha): Ditto.
(WebCore::Color::opaqueColor): New method to return an opaque version of the given color.
(WebCore::blend):

  • platform/graphics/Color.h:

(WebCore::Color::isOpaque): New helper that is !hasAlpha().
(WebCore::Color::isVisible): New helper.
(WebCore::Color::alphaAsFloat): Gets the alpha value as a float. This replaces
a bunch of places that were calculating it manually each time. Meanwhile, we
might consider always exposing the primaries as floats... or at least
have that option.
(WebCore::isBlackColor): New helper - it was used in a couple of places.
(WebCore::isWhiteColor): Ditto.
(WebCore::Color::hasAlpha): Deleted.

  • platform/graphics/Gradient.cpp: Add FIXME.

(WebCore::Gradient::addColorStop):

  • platform/graphics/Gradient.h:
  • platform/graphics/GraphicsContext.cpp: Use new helpers.

(WebCore::GraphicsContext::computeLineBoundsAndAntialiasingModeForText):

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContext::hasVisibleShadow):

  • platform/graphics/Image.cpp: Ditto.

(WebCore::Image::fillWithSolidColor):

  • platform/graphics/ShadowBlur.cpp: Ditto.

(WebCore::ShadowBlur::updateShadowBlurValues):

  • platform/graphics/ca/GraphicsLayerCA.cpp: Ditto.

(WebCore::GraphicsLayerCA::setContentsToSolidColor):

  • platform/graphics/cg/GradientCG.cpp:

(WebCore::Gradient::platformGradient): Add a FIXME to note that we can
add ExtendedColor support simply by using CGColors, rather than fetching
the components ourselves.

  • platform/graphics/cg/GraphicsContextCG.cpp: New helpers.

(WebCore::calculateDrawingMode):

  • platform/graphics/cocoa/FontCascadeCocoa.mm: New helpers.

(WebCore::FontCascade::drawGlyphs):

  • platform/graphics/mac/ColorMac.mm: Use the new helpers and Color::hash().

(WebCore::nsColor):

  • platform/graphics/texmap/TextureMapperGL.cpp: New helpers.

(WebCore::TextureMapperGL::drawBorder):

  • rendering/BorderEdge.cpp: Ditto.

(WebCore::BorderEdge::obscuresBackgroundEdge):
(WebCore::BorderEdge::obscuresBackground):

  • rendering/RenderBox.cpp: Ditto.

(WebCore::RenderBox::getBackgroundPaintedExtent):
(WebCore::RenderBox::backgroundIsKnownToBeOpaqueInRect):
(WebCore::RenderBox::backgroundHasOpaqueTopLayer):

  • rendering/RenderBoxModelObject.cpp: Ditto.

(WebCore::RenderBoxModelObject::paintFillLayerExtended):
(WebCore::colorNeedsAntiAliasAtCorner):
(WebCore::willBeOverdrawn):
(WebCore::RenderBoxModelObject::paintTranslucentBorderSides):
(WebCore::RenderBoxModelObject::paintBorder):
(WebCore::RenderBoxModelObject::boxShadowShouldBeAppliedToBackground):
(WebCore::RenderBoxModelObject::paintBoxShadow):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintOutline):

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::paintOutline):

  • rendering/RenderLayerBacking.cpp:

(WebCore::canCreateTiledImage):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::viewHasTransparentBackground):

  • rendering/RenderMenuList.cpp:

(RenderMenuList::getItemBackgroundColor):

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::disabledTextColor):

  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/TextDecorationPainter.cpp:

(WebCore::TextDecorationPainter::paintTextDecoration):

  • rendering/TextPainter.cpp:

(WebCore::TextPainter::paintTextWithShadows):

  • rendering/style/BorderValue.h:

(WebCore::BorderValue::isTransparent):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::visitedDependentColor):

  • rendering/style/RenderStyle.h:

(WebCore::RenderStyle::hasBackground):

  • rendering/svg/RenderSVGResource.cpp:

(WebCore::requestPaintingResource):

  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::paintSelectionBackground):

  • svg/SVGAnimatedColor.cpp: Add a FIXME to note this is broken.

(WebCore::SVGAnimatedColorAnimator::calculateAnimatedValue):

Source/WebKit2:

Implement argument coders for Color.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<Color>::encode):
(IPC::ArgumentCoder<Color>::decode):

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _updateScrollViewBackground]):

LayoutTests:

Tests that use the new color() syntax.

  • css3/color/backgrounds-and-borders-expected.html: Added.
  • css3/color/backgrounds-and-borders.html: Added.
  • css3/color/box-shadows-expected.html: Added.
  • css3/color/box-shadows.html: Added.
  • css3/color/canvas-expected.html: Added.
  • css3/color/canvas.html: Added.
  • css3/color/composited-solid-backgrounds-expected.html: Added.
  • css3/color/composited-solid-backgrounds.html: Added.
  • css3/color/text-expected.html: Added.
  • css3/color/text.html: Added.
  • editing/mac/attributed-string/anchor-element-expected.txt: Updated.
  • editing/mac/attributed-string/basic-expected.txt:
11:54 AM Changeset in webkit [208459] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Build fix.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::~WebViewImpl):

11:44 AM Changeset in webkit [208458] by matthew_hanson@apple.com
  • 4 edits
    4 adds in branches/safari-602-branch

Merge r208437. rdar://problem/29032334

11:40 AM Changeset in webkit [208457] by achristensen@apple.com
  • 6 edits in trunk/LayoutTests/imported/w3c

Ignore URL.origin in URL web-platform-tests
https://bugs.webkit.org/show_bug.cgi?id=164553

Reviewed by Tim Horton.

Spec-noncompliance in our SecurityOrigin class is covering up URLParser bugs.
Let's ignore those bugs for now in our copy of the web-platform-tests so we can see URLParser conformance improvement in our results.
I've proposed moving these URL.origin checks to different tests in https://github.com/w3c/web-platform-tests/pull/4182

  • web-platform-tests/url/a-element-expected.txt:
  • web-platform-tests/url/a-element-xhtml-expected.txt:
  • web-platform-tests/url/a-element.js:

(runURLTests):

  • web-platform-tests/url/url-constructor-expected.txt:
  • web-platform-tests/url/url-constructor.html:
11:37 AM Changeset in webkit [208456] by graouts@webkit.org
  • 10 edits
    7 adds in trunk

[Modern Media Controls] UI Library: StatusLabel
https://bugs.webkit.org/show_bug.cgi?id=164544
<rdar://problem/29179541>

Reviewed by Dean Jackson.

We add a new StatusLabel class to display a string of text in place of the TimeControl.
A followup patch will add the logic to display "Error", "Loading" and "Live Broadcast"
test under the right media state.

Tests: media/modern-media-controls/macos-inline-media-controls/macos-inline-media-controls-status-label.html

media/modern-media-controls/status-label/status-label.html

  • Modules/modern-media-controls/controls/macos-inline-media-controls.css:

(.media-controls.mac.inline .time-label,):
(.media-controls.mac.inline .time-label): Deleted.

  • Modules/modern-media-controls/controls/macos-inline-media-controls.js:

(MacOSInlineMediaControls.prototype.layout):

  • Modules/modern-media-controls/controls/media-controls.js:

(MediaControls.):

  • Modules/modern-media-controls/controls/status-label.css: Added.

(.status-label):

  • Modules/modern-media-controls/controls/status-label.js: Added.

(StatusLabel.prototype.get text):
(StatusLabel.prototype.set text):
(StatusLabel.prototype.commitProperty):

  • Modules/modern-media-controls/js-files:
  • WebCore.xcodeproj/project.pbxproj:
11:31 AM Changeset in webkit [208455] by Chris Dumez
  • 75 edits in trunk

[Mac] Stop using deprecated AppKit enumeration values
https://bugs.webkit.org/show_bug.cgi?id=164494

Reviewed by Darin Adler.

Stop using deprecated AppKit enumeration values.

Source/WebCore:

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::computedAttributesForElement):
(HTMLConverter::_processElement):
(HTMLConverter::_addMarkersToList):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::keyEvent):
(WebCore::lastEventIsMouseUp):
(WebCore::EventHandler::passSubframeEventToSubframe):
(WebCore::EventHandler::widgetDidHandleWheelEvent):
(WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):

  • page/mac/TextIndicatorWindow.mm:

(WebCore::TextIndicatorWindow::setTextIndicator):

  • platform/graphics/mac/IconMac.mm:

(WebCore::Icon::paint):

  • platform/mac/CursorMac.mm:

(WebCore::createCustomCursor):

  • platform/mac/DragImageMac.mm:

(WebCore::dissolveDragImageToFraction):
(WebCore::createDragImageFromImage):

  • platform/mac/EventLoopMac.mm:

(WebCore::EventLoop::cycle):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::setDragImage):

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::globalPointForEvent):
(WebCore::pointForEvent):
(WebCore::mouseButtonForEvent):
(WebCore::mouseEventTypeForEvent):
(WebCore::clickCountForEvent):
(WebCore::isKeypadEvent):
(WebCore::windowsKeyCodeForKeyEvent):
(WebCore::isKeyUpEvent):
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::scrollbarControlSizeToNSControlSize):

  • platform/mac/ThemeMac.mm:

(-[WebCoreThemeView window]):
(WebCore::controlSizeForFont):
(WebCore::controlSizeFromPixelSize):
(WebCore::setUpButtonCell):
(WebCore::stepperControlSizeForFont):
(WebCore::paintStepper):
(WebCore::ThemeMac::minimumControlSize):

  • platform/mac/WebVideoFullscreenHUDWindowController.mm:

(-[WebVideoFullscreenHUDWindow initWithContentRect:styleMask:backing:defer:]):
(-[WebVideoFullscreenHUDWindow performKeyEquivalent:]):
(-[WebVideoFullscreenHUDWindowController init]):
(-[WebVideoFullscreenHUDWindowController keyDown:]):
(-[WebVideoFullscreenHUDWindowController windowDidLoad]):

  • platform/mac/WebWindowAnimation.mm:

(WebWindowAnimationDurationFromDuration):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::updateCachedSystemFontDescription):
(WebCore::RenderThemeMac::controlSizeForFont):
(WebCore::RenderThemeMac::controlSizeForCell):
(WebCore::RenderThemeMac::controlSizeForSystemFont):
(WebCore::RenderThemeMac::paintProgressBar):
(WebCore::RenderThemeMac::popupMenuSize):
(WebCore::RenderThemeMac::sliderThumbHorizontal):
(WebCore::RenderThemeMac::sliderThumbVertical):

Source/WebKit/mac:

  • Carbon/CarbonWindowAdapter.mm:

(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
(-[CarbonWindowAdapter sendSuperEvent:]):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(WebKit::NetscapePluginHostProxy::beginModal):

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::syntheticKeyDownWithCommandModifier):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(-[WebHostedNetscapePluginView drawRect:]):

  • Plugins/WebNetscapePluginEventHandlerCocoa.mm:

(WebNetscapePluginEventHandlerCocoa::syntheticKeyDownWithCommandModifier):

  • WebCoreSupport/PopupMenuMac.mm:

(PopupMenuMac::populate):
(PopupMenuMac::show):

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::showContextMenu):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::actionDictionary):

  • WebCoreSupport/WebInspectorClient.mm:

(WebInspectorFrontendClient::canAttach):
(-[WebInspectorWindowController window]):

  • WebInspector/WebNodeHighlight.mm:

(-[WebNodeHighlight initWithTargetView:inspectorController:]):

  • WebView/WebFrameView.mm:

(-[WebFrameView keyDown:keyDown:]):

  • WebView/WebFullScreenController.mm:

(-[WebFullScreenController init]):
(createBackgroundFullscreenWindow):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _postFakeMouseMovedEventForFlagsChangedEvent:]):
(-[WebHTMLView _setMouseDownEvent:_setMouseDownEvent:]):
(-[WebHTMLView _updateMouseoverWithFakeEvent]):
(isQuickLookEvent):
(-[WebHTMLView hitTest:]):
(-[WebHTMLView _sendToolTipMouseExited]):
(-[WebHTMLView _sendToolTipMouseEntered]):
(mouseEventIsPartOfClickOrDrag):
(-[WebHTMLView _updateMouseoverWithEvent:]):
(-[WebHTMLView _autoscroll]):
(-[WebHTMLView acceptsFirstResponder]):
(-[WebHTMLView viewDidMoveToWindow]):
(-[WebHTMLView mouseDown:mouseDown:]):
(currentKeyboardEvent):
(-[WebHTMLView _handleStyleKeyEquivalent:]):
(-[WebHTMLView _interpretKeyEvent:savingCommands:]):

  • WebView/WebPDFView.mm:

(-[WebPDFView hitTest:]):
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):
(-[WebPDFView _fakeKeyEventWithFunctionKey:]):

  • WebView/WebTextCompletionController.mm:

(-[WebTextCompletionController _buildUI]):
(-[WebTextCompletionController _placePopupWindow:]):

  • WebView/WebView.mm:

(-[WebView applicationFlags:]):

Source/WebKit2:

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::stopNSAppRunLoop):

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::mouseEventTypeForEvent):
(WebKit::clickCountForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::textFromEvent):
(WebKit::unmodifiedTextFromEvent):
(WebKit::isKeypadEvent):
(WebKit::isKeyUpEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::becomeFirstResponder):
(WebKit::WebViewImpl::updateContentInsetsIfAutomatic):
(WebKit::WebViewImpl::viewDidMoveToWindow):
(WebKit::WebViewImpl::postFakeMouseMovedEventForFlagsChangedEvent):
(WebKit::WebViewImpl::createFullScreenWindow):
(WebKit::WebViewImpl::sendToolTipMouseExited):
(WebKit::WebViewImpl::sendToolTipMouseEntered):
(WebKit::applicationFlagsForDrag):
(WebKit::WebViewImpl::setLastMouseDownEvent):
(WebKit::WebViewImpl::doneWithKeyEvent):
(WebKit::WebViewImpl::collectKeyboardLayoutCommandsForEvent):
(WebKit::WebViewImpl::performKeyEquivalent):

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::beginModal):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::showContextMenuWithItems):

  • UIProcess/mac/WebInspectorProxyMac.mm:
  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::populate):
(WebKit::WebPopupMenuProxyMac::showPopupMenu):

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::modifierFlagsFromWebEvent):
(WebKit::getEventTypeFromWebEvent):

  • WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:

(WebKit::cssAlignmentValueForNSTextAlignment):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::convertImageToBitmap):

Source/WTF:

  • wtf/mac/AppKitCompatibilityDeclarations.h:

Tools:

  • DumpRenderTree/mac/EventSendingController.mm:

(eventTypeForMouseButtonAndAction):
(modifierFlags):
(-[EventSendingController mouseMoveToX:Y:]):
(-[EventSendingController contextClick]):
(-[EventSendingController keyDown:withModifiers:withLocation:]):

  • DumpRenderTree/mac/TextInputController.m:

(-[TextInputController interpretKeyEvents:withSender:]):

  • TestWebKitAPI/Tests/WebKit2Cocoa/CommandBackForward.mm:

(simulateCommandArrow):

  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenDelegate.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenLayoutConstraints.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/FullscreenTopContentInset.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/ShouldOpenExternalURLsInNewWindowActions.mm:

(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserInitiatedActionInNavigationAction.mm:

(UserInitiatedActionTest::SetUp):
(UserInitiatedActionTest::click):

  • TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm:

(TestWebKitAPI::AcceptsFirstMouse::runTest):

  • TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm:

(TestWebKitAPI::contextMenuCopyLink):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/ContextMenuDefaultItemsHaveTags.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/FullscreenZoomInitialFrame.mm:

(TestWebKitAPI::FullscreenZoomInitialFrame::runTest):

  • TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/mac/PlatformUtilitiesMac.mm:

(TestWebKitAPI::Util::isKeyDown):

  • TestWebKitAPI/mac/PlatformWebViewMac.mm:

(TestWebKitAPI::PlatformWebView::initialize):
(TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
(TestWebKitAPI::PlatformWebView::simulateRightClick):
(TestWebKitAPI::PlatformWebView::simulateMouseMove):
(TestWebKitAPI::eventTypeForButton):
(TestWebKitAPI::modifierFlagsForWKModifiers):

  • TestWebKitAPI/mac/TestWKWebViewMac.mm:

(simulated_forceClickAssociatedEventsMask):
(-[TestWKWebViewHostWindow _mouseDownAtPoint:simulatePressure:]):
(-[TestWKWebView _setUpTestWindow:]):
(-[TestWKWebView typeCharacter:]):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(WTR::eventTypeForMouseButtonAndAction):
(WTR::buildModifierFlags):
(WTR::EventSenderProxy::sendMouseDownToStartPressureEvents):
(WTR::EventSenderProxy::mouseForceClick):
(WTR::EventSenderProxy::startAndCancelMouseForceClick):
(WTR::EventSenderProxy::mouseMoveTo):
(WTR::EventSenderProxy::keyDown):
(WTR::EventSenderProxy::swipeGestureWithWheelAndMomentumPhases):

  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::PlatformWebView):

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetStateToConsistentValues):

11:31 AM Changeset in webkit [208454] by graouts@webkit.org
  • 5 edits
    16 adds in trunk

[Modern Media Controls] UI Library: iOS inline controls
https://bugs.webkit.org/show_bug.cgi?id=164513
<rdar://problem/27989475>

Reviewed by Dean Jackson.

We introduce a new IOSInlineMediaControls class which can be used to instantiate media controls
for inline playback on iOS.

Tests: media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-buttons-styles.html

media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-constructor.html
media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-controls-bar-styles.html
media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-layout.html
media/modern-media-controls/ios-inline-media-controls/ios-inline-media-controls-time-control-styles.html
media/modern-media-controls/ios-inline-media-controls/ios-inline-media-dropping-controls.html

  • Modules/modern-media-controls/controls/ios-inline-media-controls.css: Added.

(.media-controls.ios.inline > .controls-bar):
(.media-controls.ios.inline .time-control):
(.media-controls.ios.inline button):
(.media-controls.ios.inline button:active):
(.media-controls.ios.inline > .controls-bar button):
(.media-controls.ios.inline .buttons-container.right):
(.media-controls.ios.inline button.play-pause):
(.media-controls.ios.inline button.skip-back):
(.media-controls.ios.inline .scrubber.slider):
(.media-controls.ios.inline button.airplay):
(.media-controls.ios.inline button.pip):
(.media-controls.ios.inline button.fullscreen):
(.media-controls.ios.inline .time-label):
(.media-controls.ios.inline .scrubber.slider > .fill):
(.media-controls.ios.inline .scrubber.slider > input::-webkit-slider-thumb):

  • Modules/modern-media-controls/controls/ios-inline-media-controls.js: Added.

(IOSInlineMediaControls.prototype.layout):
(IOSInlineMediaControls):

  • Modules/modern-media-controls/images/iOS/slider-thumb@2x.png: Added.
  • Modules/modern-media-controls/js-files:
  • WebCore.xcodeproj/project.pbxproj:
11:20 AM Changeset in webkit [208453] by Simon Fraser
  • 2 edits in trunk/LayoutTests

LayoutTest fast/visual-viewport/rtl-zoomed-rects.html failing
https://bugs.webkit.org/show_bug.cgi?id=164491

Mark fast/visual-viewport/rtl-zoomed-rects.html as failing on Yosemite and El Capitan
in WK1.

  • platform/mac-wk1/TestExpectations:
11:16 AM Changeset in webkit [208452] by Beth Dakin
  • 20 edits
    1 add in trunk

Support TouchBar in WebKit
https://bugs.webkit.org/show_bug.cgi?id=164437
-and corresponding-
rdar://problem/28876524

Reviewed by Darin Adler.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • platform/spi/cocoa/AVKitSPI.h:
  • platform/spi/cocoa/NSTouchBarSPI.h: Added.
  • platform/spi/mac/NSSpellCheckerSPI.h:

Source/WebKit/mac:

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::respondToChangedSelection):
(WebEditorClient::updateEditorStateAfterLayoutIfEditabilityChanged):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView candidateListTouchBarItem]):

  • WebView/WebView.mm:

(-[_WebTextListTouchBarViewController initWithWebView:]):
(-[_WebTextListTouchBarViewController _selectList:]):
(-[_WebTextListTouchBarViewController setCurrentListType:]):
(-[WebTextTouchBarItemController initWithWebView:]):
(-[WebTextTouchBarItemController itemForIdentifier:]):
(-[WebTextTouchBarItemController webTextListTouchBarViewController]):
(-[WebTextTouchBarItemController setTextIsBold:]):
(-[WebTextTouchBarItemController setTextIsItalic:]):
(-[WebTextTouchBarItemController setTextIsUnderlined:]):
(-[WebTextTouchBarItemController _webChangeTextStyle:]):
(-[WebTextTouchBarItemController setCurrentTextAlignment:]):
(-[WebTextTouchBarItemController _webChangeTextAlignment:]):
(-[WebTextTouchBarItemController textColor]):
(-[WebTextTouchBarItemController setTextColor:]):
(-[WebTextTouchBarItemController _webChangeColor:]):
(-[WebTextTouchBarItemController textListViewController]):
(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView showCandidates:forString:inRect:forSelectedRange:view:completionHandler:]):
(-[WebView shouldRequestCandidates]):
(-[WebView forceRequestCandidatesForTesting]):
(-[WebView makeTouchBar]):
(-[WebView touchBar:makeItemForIdentifier:]):
(textCheckingResultFromNSTextCheckingResult):
(-[WebView candidateListTouchBarItem:endSelectingCandidateAtIndex:]):
(-[WebView candidateListTouchBarItem:changedCandidateListVisibility:]):
(-[WebView _setUpPlaybackControlsManagerForMediaElement:]):
(-[WebView _clearPlaybackControlsManager]):
(-[WebView _dismissTextTouchBarPopoverItemWithIdentifier:]):
(-[WebView _textTouchBarCustomizationAllowedIdentifiers]):
(-[WebView _plainTextTouchBarCustomizationDefaultItemIdentifiers]):
(-[WebView _richTextTouchBarCustomizationDefaultItemIdentifiers]):
(-[WebView touchBarDidExitCustomization:]):
(-[WebView touchBarWillEnterCustomization:]):
(-[WebView didChangeAutomaticTextCompletion:]):
(-[WebView setUpTextTouchBar:]):
(-[WebView _isRichlyEditable]):
(-[WebView textTouchBar]):
(-[WebView updateTextTouchBar]):
(-[WebView updateMediaTouchBar]):
(-[WebView updateTouchBar]):
(-[WebView prepareForMouseDown]):
(-[WebView prepareForMouseUp]):
(-[WebView webViewAdditionsWillDestroyView]):
(-[WebView candidateList]):
(-[WebView updateWebViewAdditions]): Deleted.

  • WebView/WebViewData.h:
  • WebView/WebViewInternal.h:
  • WebView/WebViewPrivate.h:

Source/WebKit2:

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView makeTouchBar]):
(-[WKWebView candidateListTouchBarItem]):
(-[WKWebView _web_didAddMediaControlsManager:]):
(-[WKWebView _web_didRemoveMediaControlsManager]):
(-[WKWebView _interactWithMediaControlsForTesting]):
(-[WKWebView _wantsMediaPlaybackControlsView]):
(-[WKWebView _setWantsMediaPlaybackControlsView:]):
(-[WKWebView _mediaPlaybackControlsView]):
(-[WKWebView _addMediaPlaybackControlsView:]):
(-[WKWebView _removeMediaPlaybackControlsView]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView makeTouchBar]):
(-[WKView candidateListTouchBarItem]):
(-[WKView _web_didAddMediaControlsManager:]):
(-[WKView _web_didRemoveMediaControlsManager]):
(-[WKView _wantsMediaPlaybackControlsView]):
(-[WKView _setWantsMediaPlaybackControlsView:]):
(-[WKView _mediaPlaybackControlsView]):
(-[WKView _addMediaPlaybackControlsView:]):
(-[WKView _removeMediaPlaybackControlsView]):

  • UIProcess/Cocoa/WebViewImpl.h:

(WebKit::WebViewImpl::currentTouchBar):
(WebKit::WebViewImpl::clientWantsMediaPlaybackControlsView):
(WebKit::WebViewImpl::setClientWantsMediaPlaybackControlsView):
(WebKit::WebViewImpl::setIsCustomizingTouchBar):

  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKTextListTouchBarViewController initWithWebViewImpl:]):
(-[WKTextListTouchBarViewController didDestroyView]):
(-[WKTextListTouchBarViewController _selectList:]):
(-[WKTextListTouchBarViewController setCurrentListType:]):
(-[WKTextTouchBarItemController initWithWebViewImpl:]):
(-[WKTextTouchBarItemController didDestroyView]):
(-[WKTextTouchBarItemController touchBar:makeItemForIdentifier:]):
(-[WKTextTouchBarItemController itemForIdentifier:]):
(-[WKTextTouchBarItemController candidateListTouchBarItem:endSelectingCandidateAtIndex:]):
(-[WKTextTouchBarItemController candidateListTouchBarItem:changedCandidateListVisibility:]):
(-[WKTextTouchBarItemController textListTouchBarViewController]):
(-[WKTextTouchBarItemController setTextIsBold:]):
(-[WKTextTouchBarItemController setTextIsItalic:]):
(-[WKTextTouchBarItemController setTextIsUnderlined:]):
(-[WKTextTouchBarItemController _wkChangeTextStyle:]):
(-[WKTextTouchBarItemController setCurrentTextAlignment:]):
(-[WKTextTouchBarItemController _wkChangeTextAlignment:]):
(-[WKTextTouchBarItemController textColor]):
(-[WKTextTouchBarItemController setTextColor:]):
(-[WKTextTouchBarItemController _wkChangeColor:]):
(-[WKTextTouchBarItemController textListViewController]):
(WebKit::WebViewImpl::makeTouchBar):
(WebKit::WebViewImpl::candidateListTouchBarItem):
(WebKit::WebViewImpl::mediaPlaybackControlsView):
(WebKit::WebViewImpl::useMediaPlaybackControlsView):
(WebKit::WebViewImpl::dismissTextTouchBarPopoverItemWithIdentifier):
(WebKit::textTouchBarCustomizationAllowedIdentifiers):
(WebKit::plainTextTouchBarCustomizationDefaultItemIdentifiers):
(WebKit::richTextTouchBarCustomizationDefaultItemIdentifiers):
(WebKit::touchBarDidExitCustomization):
(WebKit::touchBarWillEnterCustomization):
(WebKit::didChangeAutomaticTextCompletion):
(WebKit::WebViewImpl::updateTouchBarAndRefreshTextBarIdentifiers):
(WebKit::WebViewImpl::setUpTextTouchBar):
(WebKit::WebViewImpl::isRichlyEditable):
(WebKit::WebViewImpl::textTouchBar):
(WebKit::WebViewImpl::updateTextTouchBar):
(WebKit::WebViewImpl::updateMediaTouchBar):
(WebKit::WebViewImpl::forceRequestCandidatesForTesting):
(WebKit::WebViewImpl::updateTouchBar):
(WebKit::WebViewImpl::shouldRequestCandidates):
(WebKit::WebViewImpl::showCandidates):
(WebKit::WebViewImpl::webViewImplAdditionsWillDestroyView):
(WebKit::WebViewImpl::setEditableElementIsFocused):
(WebKit::WebViewImpl::becomeFirstResponder):
(WebKit::WebViewImpl::selectionDidChange):
(WebKit::WebViewImpl::videoControlsManagerDidChange):
(WebKit::WebViewImpl::updateWebViewImplAdditions): Deleted.

Tools:

This makes MiniBrowser support TouchBar customization.

  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate awakeFromNib]):

11:14 AM Changeset in webkit [208451] by Chris Dumez
  • 7 edits
    4 adds in trunk

Use Blob URL instead of webkit-fake-url when pasting an image
https://bugs.webkit.org/show_bug.cgi?id=49141

Reviewed by Darin Adler.

Source/WebCore:

Use Blob URL instead of webkit-fake-url when pasting an image.

Tests: editing/pasteboard/paste-image-as-blob-url.html

editing/pasteboard/paste-image-using-image-data.html

  • editing/Editor.h:
  • editing/mac/EditorMac.mm:

(WebCore::Editor::WebContentReader::readImage):
(WebCore::Editor::createFragmentForImageAndURL):

LayoutTests:

Add layout test coverage checking that the image shows as expected and that the
resulting URL is indeed a Blob URL.

  • editing/pasteboard/paste-image-as-blob-url-expected.txt: Added.
  • editing/pasteboard/paste-image-as-blob-url.html: Added.
  • editing/pasteboard/paste-image-using-image-data-expected.html: Added.
  • editing/pasteboard/paste-image-using-image-data.html: Added.
11:10 AM Changeset in webkit [208450] by Yusuke Suzuki
  • 11 edits
    3 adds in trunk

[JSC] The implementation of 8 bit operation in MacroAssembler should care about uint8_t / int8_t
https://bugs.webkit.org/show_bug.cgi?id=164432

Reviewed by Michael Saboff.

Source/JavaScriptCore:

Except for X86, our supported MacroAssemblers do not have native 8bit instructions.
It means that all the 8bit instructions are converted to 32bit operations by using
scratch registers. For example, ARM64 branch8 implementation is the following.

Jump branch8(RelationCondition cord, Address left, TrustedImm32 right)
{

TrustedImm32 right8(static_cast<int8_t>(right.m_value));
load8(left, getCachedMemoryTempRegisterIDAndInvalidate());
return branch32(cone, memoryTempRegister, right8);

}

The problem is that we exclusively use zero-extended load instruction (load8). Even
for signed RelationConditions, we do not perform sign extension. It makes signed
operations with negative numbers incorrect! Consider the |left| address holds -1
in int8_t form. However load8 will load it as 255 into 32bit register. On the other hand,
|right| will be sign extended. If you pass 0 as |right| and LessThan condition, this
branch8 should jump based on the answer of -1 < 0. But the current MacroAssembler
performs 255 < 0 in int32_t context and returns the incorrect result.

We should follow the x86 model. So we should select the appropriate load operation and masking
operation based on the RelationCondition. This patch introduces mask8OnCondition and load8OnCondition.
And we use them in 8bit operations including branch8, branchTest8, compare8, and test8.

We intentionally do not change anything on x86 assembler since it has the native signed 8bit operations.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/AbstractMacroAssembler.h:
  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::isSigned):
(JSC::MacroAssembler::isUnsigned):
(JSC::MacroAssembler::branchTest8):

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::branch8):
(JSC::MacroAssemblerARM::branchTest8):
(JSC::MacroAssemblerARM::compare8):
(JSC::MacroAssemblerARM::test8):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::branch8):
(JSC::MacroAssemblerARM64::branchTest8):
(JSC::MacroAssemblerARM64::compare8):
(JSC::MacroAssemblerARM64::test8):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::branch8):
(JSC::MacroAssemblerARMv7::branchTest8):
(JSC::MacroAssemblerARMv7::compare8):
(JSC::MacroAssemblerARMv7::test8):

  • assembler/MacroAssemblerHelpers.h: Added.

(JSC::MacroAssemblerHelpers::isSigned):
(JSC::MacroAssemblerHelpers::isUnsigned):
(JSC::MacroAssemblerHelpers::mask8OnCondition):
(JSC::MacroAssemblerHelpers::load8OnCondition):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::branch8):
(JSC::MacroAssemblerMIPS::compare8):
(JSC::MacroAssemblerMIPS::branchTest8):
(JSC::MacroAssemblerMIPS::test8):

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::branchTest8):
(JSC::MacroAssemblerSH4::branch8):
(JSC::MacroAssemblerSH4::compare8):
(JSC::MacroAssemblerSH4::test8):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branch8):

LayoutTests:

Use ownerDocument. Once DOMJIT for ownerDocument is landed, this will use branch8.

  • js/dom/domjit-accessor-owner-document-type-check-expected.txt: Added.
  • js/dom/domjit-accessor-owner-document-type-check.html: Added.
11:10 AM Changeset in webkit [208449] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Fix error message when SQLite initialization fails
https://bugs.webkit.org/show_bug.cgi?id=164462

Reviewed by Darin Adler.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::initializeSQLiteIfNecessary):

11:01 AM Changeset in webkit [208448] by graouts@webkit.org
  • 21 edits
    17 adds in trunk

[Modern Media Controls] UI Library: macOS fullscreen controls
https://bugs.webkit.org/show_bug.cgi?id=164414
<rdar://problem/27989474>

Reviewed by Dean Jackson.

We introduce a new MacOSFullscreenMediaControls class which can be used to instantiate media controls
for fullscreen playback on macOS. These controls can be dragged by the user.

Tests: media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-containers-styles.html

media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-buttons-styles.html
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-constructor.html
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-controls-bar-styles.html
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-right-container-margin.html
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-time-control-styles.html
media/modern-media-controls/macos-fullscreen-media-controls/macos-fullscreen-media-controls-volume-styles.html

  • Modules/modern-media-controls/controls/button.js:

(Button.prototype.set enabled):

Correctly notify the layoutDelegate when the enabled property changes, regardless of whether
the flag is on.

  • Modules/modern-media-controls/controls/icon-button.js:

(IconButton.prototype._updateImage):
(IconButton):

Correctly notify the layout delegate when the image metrics have changed so that it may perform
a layout. This issues became apparent with the new tests on Yosemite and caused some flakyness.

  • Modules/modern-media-controls/controls/icon-service.js:

(const.iconService.new.IconService.prototype._fileNameAndPlatformForIconNameAndLayoutTraits):
(const.iconService.new.IconService):

Fix a typo.

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.css: Added.

(.media-controls.mac.fullscreen > .controls-bar):
(.media-controls.mac.fullscreen .volume.slider):
(.media-controls.mac.fullscreen .buttons-container):
(.media-controls.mac.fullscreen .buttons-container.center):
(.media-controls.mac.fullscreen > .controls-bar button):
(.media-controls.mac.fullscreen button.rewind):
(.media-controls.mac.fullscreen button.play-pause):
(.media-controls.mac.fullscreen button.forward):
(.media-controls.mac.fullscreen .buttons-container.right):
(.media-controls.mac.fullscreen button.airplay):
(.media-controls.mac.fullscreen button.aspect-ratio):
(.media-controls.mac.fullscreen button.pip):
(.media-controls.mac.fullscreen button.tracks):
(.media-controls.mac.fullscreen button.fullscreen):
(.media-controls.mac.fullscreen .time-control):
(.media-controls.mac.fullscreen .time-label):
(.media-controls.mac.fullscreen .scrubber):

  • Modules/modern-media-controls/controls/macos-fullscreen-media-controls.js: Added.

(MacOSFullscreenMediaControls.prototype.layout):
(MacOSFullscreenMediaControls):

  • Modules/modern-media-controls/controls/macos-media-controls.js:

(MacOSMediaControls):

Allow the layoutTraits property to be set to something other than just LayoutTraits.macOS
so that MacOSFullscreenMediaControls may set the LayoutTraits.Fullscreen bit.

  • Modules/modern-media-controls/js-files:

Add a reference to the new macos-fullscreen-media-controls.js file.

  • WebCore.xcodeproj/project.pbxproj:

Add references to the new macos-fullscreen-media-controls.js and
macos-fullscreen-media-controls.css files.

10:35 AM Changeset in webkit [208447] by Chris Dumez
  • 1 edit
    2 adds in trunk/LayoutTests

Add test coverage for radiusX / radiusY in WebPlatformTouchPoint.
https://bugs.webkit.org/show_bug.cgi?id=162801
<rdar://problem/28807455>

Reviewed by Darin Adler.

Add test coverage for radiusX / radiusY in WebPlatformTouchPoint.

  • fast/events/touch/ios/touch-event-radius-expected.txt: Added.
  • fast/events/touch/ios/touch-event-radius.html: Added.
10:32 AM Changeset in webkit [208446] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Shave 16 bytes off HTMLInputElement
https://bugs.webkit.org/show_bug.cgi?id=164488

Reviewed by Sam Weinig.

Shave 16 bytes off HTMLInputElement (232 -> 216) by packing data members
better.

  • html/HTMLFormControlElement.h:
  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::HTMLTextFormControlElement):

  • html/HTMLTextFormControlElement.h:
10:28 AM Changeset in webkit [208445] by commit-queue@webkit.org
  • 7 edits in trunk

[WebRTC] Introduce asynchronous backend for other RTCPeerConnection API
https://bugs.webkit.org/show_bug.cgi?id=164409

Patch by Youenn Fablet <youenn@apple.com> on 2016-11-09
Reviewed by Eric Carlson.

Source/WebCore:

Covered by existing tests.

Following on createOffer changes, applying the same changes to createAnswer, setLocalDescription, setRemoteDescription and addIceCandidate.
Also refactored ICE candidate event generation (done at PeerConnectionBackend).
Updated stop implementation to clean any promise that may be stored in PeerConnectionBackend.

The goal of this is to be more aligned with https://www.w3.org/TR/webrtc/.
Implementation of the various functions such as www.w3.org/TR/webrtc/#set-description would be done in PeerConnectionBackend.
This will require additional code moved from MediaEndpointPeerConnection up to PeerConnectionBackend.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::MediaEndpointPeerConnection::createOfferTask):
(WebCore::MediaEndpointPeerConnection::doCreateAnswer):
(WebCore::MediaEndpointPeerConnection::createAnswerTask):
(WebCore::MediaEndpointPeerConnection::doSetLocalDescription):
(WebCore::MediaEndpointPeerConnection::setLocalDescriptionTask):
(WebCore::MediaEndpointPeerConnection::doSetRemoteDescription):
(WebCore::MediaEndpointPeerConnection::setRemoteDescriptionTask):
(WebCore::MediaEndpointPeerConnection::doAddIceCandidate):
(WebCore::MediaEndpointPeerConnection::addIceCandidateTask):
(WebCore::MediaEndpointPeerConnection::doStop):
(WebCore::MediaEndpointPeerConnection::gotIceCandidate):
(WebCore::MediaEndpointPeerConnection::doneGatheringCandidates):
(WebCore::MediaEndpointPeerConnection::createAnswer): Deleted.
(WebCore::MediaEndpointPeerConnection::setLocalDescription): Deleted.
(WebCore::MediaEndpointPeerConnection::setRemoteDescription): Deleted.
(WebCore::MediaEndpointPeerConnection::addIceCandidate): Deleted.
(WebCore::MediaEndpointPeerConnection::stop): Deleted.
(WebCore::MediaEndpointPeerConnection::localDescriptionTypeValidForState): Deleted.
(WebCore::MediaEndpointPeerConnection::remoteDescriptionTypeValidForState): Deleted.

  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/PeerConnectionBackend.cpp:

(WebCore::PeerConnectionBackend::createOffer):
(WebCore::PeerConnectionBackend::createOfferFailed):
(WebCore::PeerConnectionBackend::createAnswer):
(WebCore::PeerConnectionBackend::createAnswerSucceeded):
(WebCore::PeerConnectionBackend::createAnswerFailed):
(WebCore::isLocalDescriptionTypeValidForState):
(WebCore::PeerConnectionBackend::setLocalDescription):
(WebCore::PeerConnectionBackend::setLocalDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setLocalDescriptionFailed):
(WebCore::isRemoteDescriptionTypeValidForState):
(WebCore::PeerConnectionBackend::setRemoteDescription):
(WebCore::PeerConnectionBackend::setRemoteDescriptionSucceeded):
(WebCore::PeerConnectionBackend::setRemoteDescriptionFailed):
(WebCore::PeerConnectionBackend::addIceCandidate):
(WebCore::PeerConnectionBackend::addIceCandidateSucceeded):
(WebCore::PeerConnectionBackend::addIceCandidateFailed):
(WebCore::PeerConnectionBackend::fireICECandidateEvent):
(WebCore::PeerConnectionBackend::doneGatheringCandidates):
(WebCore::PeerConnectionBackend::stop):

  • Modules/mediastream/PeerConnectionBackend.h:

LayoutTests:

Rebasing test as patch changes the order in which error cases are checked in case of setRemoteDescription/setLocalDescription.
New order tries to follow more closely https://www.w3.org/TR/webrtc/#set-description.

  • fast/mediastream/RTCPeerConnection-stable-expected.txt:
10:27 AM Changeset in webkit [208444] by eric.carlson@apple.com
  • 6 edits in trunk/Source/WebCore

[MediaStream][Mac] Mark captured video frames as ready for display immediately
https://bugs.webkit.org/show_bug.cgi?id=164482
<rdar://problem/29139073>

Reviewed by Jer Noble.

  • platform/cf/CoreMediaSoftLink.cpp: Add new constant.
  • platform/cf/CoreMediaSoftLink.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::requestNotificationWhenReadyForMediaData):

New, ask register for a callback when the sample buffer display layer is ready
for more media data.

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSampleBuffer): Don't change

the sample timestamps, assume the caller has configured the sample correctly.

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::prepareVideoSampleBufferFromTrack): Don't

drop frames when the display layer isn't ready.

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::destroyLayer): Call stopRequestingMediaData.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::sampleBufferUpdated):
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::enqueueVideoSampleBufferFromTrack): Deleted.

  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::setupCaptureSession): Tell the video output to always discard

late video frames, we don't need them.

(WebCore::AVVideoCaptureSource::processNewFrame): Add a kCMSampleAttachmentKey_DisplayImmediately

attachment.

10:26 AM Changeset in webkit [208443] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Settings tab: Checkbox labels should be clickable
https://bugs.webkit.org/show_bug.cgi?id=164470
<rdar://problem/29133787>

Reviewed by Matt Baker.

  • UserInterface/Views/SettingsTabContentView.js:

(WebInspector.SettingsTabContentView.prototype.initialLayout):
Add a label element to make checkboxes clickable.

10:25 AM Changeset in webkit [208442] by jdiggs@igalia.com
  • 5 edits
    4 adds
    1 delete in trunk

AX: [ATK] Wrong selected element at a given index in a list box (redux)
https://bugs.webkit.org/show_bug.cgi?id=164430

Reviewed by Darin Adler.

Source/WebCore:

This essentially undoes the implementation change resulting from r164577.
As stated in the ATK documentation, atk_selection_ref_selection() takes
"a gint specifying the index in the selection set. (e.g. the ith selection
as opposed to the ith child)." r164577 deliberately modified that, causing
atk_selection_ref_selection() to treat the index as if it were the position
with respect to all of the children. There is different API in ATK, namely
atk_object_ref_accessible_child(), when the ith child from the set of all
children is sought.

Tests: accessibility/aria-listbox-no-selection.html

accessibility/native-listbox-no-selection.html

  • accessibility/atk/WebKitAccessibleInterfaceSelection.cpp:

(optionFromSelection):

LayoutTests:

Add tests to ensure listboxes with no selected children do not report
a selected child. Modify select-element-at-index.html to reflect the
corrected behavior for ATK. Move the Mac port's expectations to the
shared expectations.

  • accessibility/aria-listbox-no-selection-expected.txt: Added.
  • accessibility/aria-listbox-no-selection.html: Added.
  • accessibility/native-listbox-no-selection-expected.txt: Added.
  • accessibility/native-listbox-no-selection.html: Added.
  • accessibility/select-element-at-index-expected.txt: Modified.
  • accessibility/select-element-at-index.html: Modified.
  • platform/mac/accessibility/select-element-at-index-expected.txt: Removed.
10:25 AM Changeset in webkit [208441] by commit-queue@webkit.org
  • 7 edits
    4 adds in trunk/Source/WebInspectorUI

Web Inspector: Allow FolderTreeElement to display content when selected
https://bugs.webkit.org/show_bug.cgi?id=164407

Patch by Devin Rousso <Devin Rousso> on 2016-11-09
Reviewed by Timothy Hatcher.

  • UserInterface/Main.html:

Add CollectionContentView and TitleView.

  • UserInterface/Base/Main.js:
  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
Add support for Collection as the representedObject of a content view.

  • UserInterface/Views/CollectionContentView.css: Added.

(.content-view.collection):
(.content-view.collection > .content-view):

  • UserInterface/Views/CollectionContentView.js: Added.

(WebInspector.CollectionContentView):
(WebInspector.CollectionContentView.prototype.initialLayout):
(WebInspector.CollectionContentView.prototype._addContentViewForItem):
(WebInspector.CollectionContentView.prototype._removeContentViewForItem):
(WebInspector.CollectionContentView.prototype._handleItemAdded):
(WebInspector.CollectionContentView.prototype._handleItemRemoved):
(WebInspector.CollectionContentView.prototype._handleContentError):
Takes in a Collection when constructed, and attempts to display a sub-ContentView for each
item in the collection if the type of the collection is viewable en masse. Currently, this
is only supported for WebInspector.Resource.Type.Image collections.

  • UserInterface/Views/ResourceContentView.js:

(WebInspector.ResourceContentView.prototype._contentError):
Dispatch an event whenever the content fails to load.

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel.prototype._treeSelectionDidChange):

  • UserInterface/Views/ResourcesTabContentView.js:

(WebInspector.ResourcesTabContentView.prototype.canShowRepresentedObject):
Allow FolderTreeElements to be selected.

  • UserInterface/Views/TitleView.css: Added.

(.title-view):

  • UserInterface/Views/TitleView.js: Added.

(WebInspector.TitleView):
Basic view that displays the given text in the center of the viewable area.

10:24 AM Changeset in webkit [208440] by Gyuyoung Kim
  • 6 edits in trunk

[EFL] Use libgcrypt instead of GnuTLS for CryptoDigest
https://bugs.webkit.org/show_bug.cgi?id=164461

Reviewed by Michael Catanzaro.

.:

  • Source/cmake/OptionsEfl.cmake: Find LibGcrypt package instead of GnuTLS.

Source/WebCore:

As GTK port in r208297, EFL port starts to use libgcrypt instead of GnuTLS as well.

No new tests, no behavior change.

  • PlatformEfl.cmake:

Tools:

As GTK port in r208297, EFL port starts to use libgcrypt instead of GnuTLS as well.

  • efl/install-dependencies: Add libgcript package dependecy.
10:23 AM Changeset in webkit [208439] by Gyuyoung Kim
  • 2 edits in trunk/Tools

[EFL] Remove unused function in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=164398

Reviewed by Darin Adler.

  • MiniBrowser/efl/main.c:

(window_find_with_elm_window): Deleted because it is not used anywhere.

10:07 AM Changeset in webkit [208438] by Chris Dumez
  • 27 edits
    4 adds in trunk

[WK2][NETWORK_SESSION] Add support for downloading file backed blobs
https://bugs.webkit.org/show_bug.cgi?id=164458
<rdar://problem/28905514>

Reviewed by Darin Adler.

Source/WebKit2:

Add support for downloading file backed blobs on WebKit2.
It previously wasn't working because we weren't calling
BlobDataFileReference::prepareForFileAccess() for each blob file before
starting the download, similarly to what is done in NetworkResourceLoader's
consumeSandboxExtensions().

  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/Downloads/DownloadManager.h:

(WebKit::DownloadManager::startDownload):

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::startDownload):
(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):

  • NetworkProcess/NetworkDataTask.cpp:

(WebKit::NetworkDataTask::create):

  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkDataTaskBlob.cpp:

(WebKit::NetworkDataTaskBlob::NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::download):

  • NetworkProcess/NetworkDataTaskBlob.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):

  • NetworkProcess/NetworkLoadParameters.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::downloadRequest):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::NetworkResourceLoader):
(WebKit::NetworkResourceLoader::startNetworkLoad):

  • NetworkProcess/PingLoad.h:

Tools:

Add testRunner.setShouldDownloadUndisplayableMIMETypes(bool) API so that layout
tests can request that such resources are downloaded instead of being ignored.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setShouldDownloadUndisplayableMIMETypes):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::decidePolicyForNavigationResponse):

  • WebKitTestRunner/TestController.h:

(WTR::TestController::setShouldDownloadUndisplayableMIMETypes):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Add layout test coverage for downloading blobs, both via <a download> or
because a load is later converted into a download.

  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-convert-to-download.html: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download-expected.txt: Added.
  • fast/dom/HTMLAnchorElement/anchor-file-blob-download.html: Added.
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
10:06 AM Changeset in webkit [208437] by Chris Dumez
  • 4 edits
    4 adds in trunk

[WK2] Network cache speculative revalidation can cause loads to hang
https://bugs.webkit.org/show_bug.cgi?id=164532
<rdar://problem/28519331>

Reviewed by Alex Christensen.

Source/WebKit2:

Network cache speculative revalidation could cause loads to hang when HTTP
authentication was involved because NetworkCacheSpeculativeLoad failed to
call NetworkLoad::continueCanAuthenticateAgainstProtectionSpace() in its
canAuthenticateAgainstProtectionSpaceAsync() callback.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::canAuthenticateAgainstProtectionSpaceAsync):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:

LayoutTests:

Add layout test coverage. The test hangs without the fix.

  • http/tests/cache/disk-cache/speculative-validation/http-auth-expected.txt: Added.
  • http/tests/cache/disk-cache/speculative-validation/http-auth.html: Added.
  • http/tests/cache/disk-cache/speculative-validation/resources/frame-with-authenticated-resource.php: Added.
  • http/tests/cache/disk-cache/speculative-validation/resources/resource-with-auth.php: Added.
9:53 AM Changeset in webkit [208436] by matthew_hanson@apple.com
  • 5 edits in trunk/Source

Versioning.

9:51 AM Changeset in webkit [208435] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-603.1.11/trunk

New tag.

9:49 AM Changeset in webkit [208434] by Ryan Haddad
  • 9 edits in trunk

Unreviewed, rolling out r208422.

Roll r208382 back in since it was not responsible for the API
test failures seen on macOS.

Reverted changeset:

"Unreviewed, rolling out r208382."
https://bugs.webkit.org/show_bug.cgi?id=164319
http://trac.webkit.org/changeset/208422

9:36 AM Changeset in webkit [208433] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

One more URTBF after r208361.

  • PlatformMac.cmake:
9:28 AM Changeset in webkit [208432] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

URTBF after r208361.

  • PlatformMac.cmake:
9:18 AM Changeset in webkit [208431] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Unreviewed typo fix after r160616 to fix the build on case sensitive file systems.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:
9:17 AM Changeset in webkit [208430] by Jonathan Bedard
  • 2 edits in trunk/Tools

Make rpaths more robust for iOS Simulators
https://bugs.webkit.org/show_bug.cgi?id=164521

Reviewed by Simon Fraser.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort._createSimulatorApp): Added more robust path.

8:52 AM Changeset in webkit [208429] by Csaba Osztrogonác
  • 6 edits in trunk/Tools

Fix Tools build on case sensitive file systems
https://bugs.webkit.org/show_bug.cgi?id=164474

Unreviewed buildfix.

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformMac.cmake:
  • DumpRenderTree/PlatformWin.cmake:
  • DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
  • MiniBrowser/mac/CMakeLists.txt:
8:49 AM Changeset in webkit [208428] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

Typo fix after r162782
https://bugs.webkit.org/show_bug.cgi?id=164473

Unreviewed trivial fix.

  • platform/ThreadGlobalData.cpp:

Nov 8, 2016:

6:51 PM Changeset in webkit [208427] by rniwa@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION: date-format-tofte.js is super slow
https://bugs.webkit.org/show_bug.cgi?id=164499

Patch by Geoffrey Garen <ggaren@apple.com> on 2016-11-08
Reviewed by Sam Weinig.

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::CacheKey::operator==): Use character comparison,
not pointer comparison. (This function was always wrong, but I started
calling it in more places.)

6:50 PM Changeset in webkit [208426] by rniwa@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION: Crashes in StringImpl destructor during GC when clearing the HasOwnPropertyCache
https://bugs.webkit.org/show_bug.cgi?id=164433

Patch by Saam Barati <sbarati@apple.com> on 2016-11-08
Reviewed by Mark Lam.

Clearing the HasOwnPropertyCache will call deref() on the StringImpls
in the cache. We were doing this from the collector thread, which is
not allowed. It must be done from the mutator thread. We now clear the
cache in Heap::finalize() which happens before the mutator begins
executing JS after a collection happens.

  • heap/Heap.cpp:

(JSC::Heap::collectInThread):
(JSC::Heap::finalize):

6:02 PM Changeset in webkit [208425] by bshafiei@apple.com
  • 5 edits in tags/Safari-603.1.11.2/Source

Versioning.

5:59 PM Changeset in webkit [208424] by bshafiei@apple.com
  • 1 copy in tags/Safari-603.1.11.2

New tag.

Nov 7, 2016:

5:26 PM Changeset in webkit [208423] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.3.9

New tag.

6:46 AM Changeset in webkit [208422] by Ryan Haddad
  • 9 edits in trunk

Unreviewed, rolling out r208382.

This change appears to have caused 3
SerializedCryptoKeyWrapTest API tests to fail on macOS.

Reverted changeset:

"[Readable Streams API] Implement ByteStreamController
error()"
https://bugs.webkit.org/show_bug.cgi?id=164319
http://trac.webkit.org/changeset/208382

Nov 6, 2016:

10:12 PM Changeset in webkit [208421] by matthew_hanson@apple.com
  • 8 edits in branches/safari-602-branch/Source/WebCore

Merge r208392. rdar://problem/28409526

Nov 5, 2016:

11:00 AM Changeset in webkit [208420] by Konstantin Tokarev
  • 4 edits in trunk/Source

Fixed compilation of LLInt with MinGW
https://bugs.webkit.org/show_bug.cgi?id=164449

Reviewed by Michael Catanzaro.

MinGW uses LLIntAssembly.h with GNU assembler syntax, just like GCC on
other platforms.

Source/JavaScriptCore:

  • llint/LowLevelInterpreter.cpp: Include LLIntAssembly.h with

appropriate preamble.

Source/WTF:

  • wtf/InlineASM.h: Define LOCAL_LABEL_STRING as .L#name for MinGW.
10:59 AM Changeset in webkit [208419] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Removing flaky expectations for tests that were fixed with r208327.
https://bugs.webkit.org/show_bug.cgi?id=164034

Unreviewed test gardening.

10:58 AM Changeset in webkit [208418] by Konstantin Tokarev
  • 4 edits in trunk

[MinGW] Fixed C99/C++11 format attributes in printf-like functions
https://bugs.webkit.org/show_bug.cgi?id=164448

Reviewed by Michael Catanzaro.

By default MinGW uses printf-like function provided in msvcrt.dll,
however they miss support for C99/C++11 format attributes. Use MinGW
implementations instead.

.:

  • Source/cmake/OptionsCommon.cmake: Define USE_MINGW_ANSI_STDIO

Source/WTF:

  • wtf/Assertions.h: Use gnu_printf format in WTF_ATTRIBUTE_PRINTF
1:24 AM Changeset in webkit [208417] by Yusuke Suzuki
  • 2 edits in trunk/Source/WTF

[JSCOnly] RunLoopGeneric should adopt MonotonicTime / WallTime change
https://bugs.webkit.org/show_bug.cgi?id=164447

Reviewed by Csaba Osztrogonác.

Build fix for JSCOnly.

  • wtf/generic/RunLoopGeneric.cpp:

(WTF::RunLoop::TimerBase::ScheduledTask::create):
(WTF::RunLoop::TimerBase::ScheduledTask::ScheduledTask):
(WTF::RunLoop::TimerBase::ScheduledTask::scheduledTimePoint):
(WTF::RunLoop::TimerBase::ScheduledTask::updateReadyTime):
(WTF::RunLoop::populateTasks):
(WTF::RunLoop::dispatchAfter):
(WTF::RunLoop::TimerBase::start):

12:56 AM Changeset in webkit [208416] by Carlos Garcia Campos
  • 4 edits in trunk

[SOUP] Layout test http/tests/misc/authentication-redirect-3/authentication-sent-to-redirect-same-origin-with-location-credentials.html fails
https://bugs.webkit.org/show_bug.cgi?id=139358

Reviewed by Michael Catanzaro.

Source/WebKit2:

Stop putting the credentials in the URL unconditionally and ensure we only do that when provided by the URL
itself. Libsoup has its own cache of SoupAuth, so we don't need to pass user/pass in the URL for every single
request, libsoup will authenticate those automatically.

  • NetworkProcess/soup/NetworkDataTaskSoup.cpp:

(WebKit::NetworkDataTaskSoup::applyAuthenticationToRequest):

LayoutTests:

  • platform/gtk/TestExpectations: Unskip http/tests/misc/authentication-redirect-3/authentication-sent-to-redirect-same-origin-with-location-credentials.html.
Note: See TracTimeline for information about the timeline view.