Timeline



Aug 27, 2018:

11:38 PM Changeset in webkit [235420] by yusukesuzuki@slowstart.org
  • 36 edits
    2 copies
    4 adds in trunk

[WebAssembly] Parse wasm modules in a streaming fashion
https://bugs.webkit.org/show_bug.cgi?id=188943

Reviewed by Mark Lam.

JSTests:

Wasm parsing error should not report the total byte size since streaming parsing does not
want to load all the bytes.
Add a simple test wasm/stress/streaming-basic.js for initial streaming parsing implementation.

  • wasm/function-tests/invalid-duplicate-export.js:
  • wasm/function-tests/memory-alignment.js:

(const.op.of.WASM.opcodes):

  • wasm/function-tests/memory-section-and-import.js:
  • wasm/function-tests/void-argument-type-should-be-a-validation-error.js:
  • wasm/js-api/Module-compile.js:

(async.testPromiseAPI):

  • wasm/js-api/element.js:

(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(assert.throws):

  • wasm/js-api/global-error.js:

(assert.throws.new.WebAssembly.Module.bin):
(assert.throws):

  • wasm/js-api/table.js:

(new.WebAssembly.Module):
(assert.throws):
(assertBadTableImport):

  • wasm/js-api/test_Data.js:

(DataSectionWithoutMemory):

  • wasm/js-api/test_Start.js:

(InvalidStartFunctionIndex):

  • wasm/js-api/test_basic_api.js:

(const.c.in.constructorProperties.switch):

  • wasm/js-api/version.js:
  • wasm/stress/nameSection.wasm: Added.
  • wasm/stress/streaming-basic.js: Added.

(check):

Source/JavaScriptCore:

This patch adds Wasm::StreamingParser, which parses wasm binary in a streaming fashion.
Currently, this StreamingParser is not enabled and integrated. In subsequent patches,
we start integrating it into BBQPlan and dropping the old ModuleParser.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • tools/JSDollarVM.cpp:

(WTF::WasmStreamingParser::WasmStreamingParser):
(WTF::WasmStreamingParser::create):
(WTF::WasmStreamingParser::createStructure):
(WTF::WasmStreamingParser::streamingParser):
(WTF::WasmStreamingParser::finishCreation):
(WTF::functionWasmStreamingParserAddBytes):
(WTF::functionWasmStreamingParserFinalize):
(JSC::functionCreateWasmStreamingParser):
(JSC::JSDollarVM::finishCreation):
The $vm Wasm::StreamingParser object is introduced for testing purpose. Added new stress test uses
this interface to test streaming parser in the JSC shell.

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::parseAndValidateModule):
(JSC::Wasm::BBQPlan::prepare):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):
(JSC::Wasm::BBQPlan::work):

  • wasm/WasmBBQPlan.h:

BBQPlan has m_source, but once ModuleInformation is parsed, it is no longer necessary.
In subsequent patches, we will remove this, and stream the data into the BBQPlan.

  • wasm/WasmFormat.h:
  • wasm/WasmModuleInformation.cpp:

(JSC::Wasm::ModuleInformation::ModuleInformation):

  • wasm/WasmModuleInformation.h:

One of the largest change in this patch is that ModuleInformation no longer holds source bytes,
since source bytes can be added in a streaming fashion. Instead of holding all the source bytes
in ModuleInformation, each function (ModuleInformation::functions, FunctionData) should have
Vector<uint8_t> for its data. This data is eventually filled by StreamingParser, and compiling
a function with this data can be done concurrently with StreamingParser.

(JSC::Wasm::ModuleInformation::create):
(JSC::Wasm::ModuleInformation::memoryCount const):
(JSC::Wasm::ModuleInformation::tableCount const):
memoryCount and tableCount should be recorded in ModuleInformation.

  • wasm/WasmModuleParser.cpp:

(JSC::Wasm::ModuleParser::parse):
(JSC::Wasm::makeI32InitExpr): Deleted.
(JSC::Wasm::ModuleParser::parseType): Deleted.
(JSC::Wasm::ModuleParser::parseImport): Deleted.
(JSC::Wasm::ModuleParser::parseFunction): Deleted.
(JSC::Wasm::ModuleParser::parseResizableLimits): Deleted.
(JSC::Wasm::ModuleParser::parseTableHelper): Deleted.
(JSC::Wasm::ModuleParser::parseTable): Deleted.
(JSC::Wasm::ModuleParser::parseMemoryHelper): Deleted.
(JSC::Wasm::ModuleParser::parseMemory): Deleted.
(JSC::Wasm::ModuleParser::parseGlobal): Deleted.
(JSC::Wasm::ModuleParser::parseExport): Deleted.
(JSC::Wasm::ModuleParser::parseStart): Deleted.
(JSC::Wasm::ModuleParser::parseElement): Deleted.
(JSC::Wasm::ModuleParser::parseCode): Deleted.
(JSC::Wasm::ModuleParser::parseInitExpr): Deleted.
(JSC::Wasm::ModuleParser::parseGlobalType): Deleted.
(JSC::Wasm::ModuleParser::parseData): Deleted.
(JSC::Wasm::ModuleParser::parseCustom): Deleted.
Extract section parsing code out from ModuleParser. We create SectionParser and ModuleParser uses it.
SectionParser is also used by StreamingParser.

  • wasm/WasmModuleParser.h:

(): Deleted.

  • wasm/WasmNameSection.h:

(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::create):
(JSC::Wasm::NameSection::setHash):
Hash calculation is deferred since all the source is not available in streaming parsing.

  • wasm/WasmNameSectionParser.cpp:

(JSC::Wasm::NameSectionParser::parse):

  • wasm/WasmNameSectionParser.h:

Use Ref<NameSection>.

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):
Wasm::Plan no longer have m_source since data will be eventually filled in a streaming fashion.
OMGPlan can get data of the function by using ModuleInformation::functions.

  • wasm/WasmParser.h:

(JSC::Wasm::Parser::source const):
(JSC::Wasm::Parser::length const):
(JSC::Wasm::Parser::offset const):
(JSC::Wasm::Parser::fail const):
(JSC::Wasm::makeI32InitExpr):

  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):
Wasm::Plan should not have all the source apriori. Streamed data will be pumped from the provider.

  • wasm/WasmPlan.h:
  • wasm/WasmSectionParser.cpp: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.cpp.

SectionParser is extracted from ModuleParser. And it is used by both the old (currently working)
ModuleParser and the new StreamingParser.

(JSC::Wasm::SectionParser::parseType):
(JSC::Wasm::SectionParser::parseImport):
(JSC::Wasm::SectionParser::parseFunction):
(JSC::Wasm::SectionParser::parseResizableLimits):
(JSC::Wasm::SectionParser::parseTableHelper):
(JSC::Wasm::SectionParser::parseTable):
(JSC::Wasm::SectionParser::parseMemoryHelper):
(JSC::Wasm::SectionParser::parseMemory):
(JSC::Wasm::SectionParser::parseGlobal):
(JSC::Wasm::SectionParser::parseExport):
(JSC::Wasm::SectionParser::parseStart):
(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseCode):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseGlobalType):
(JSC::Wasm::SectionParser::parseData):
(JSC::Wasm::SectionParser::parseCustom):

  • wasm/WasmSectionParser.h: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.h.
  • wasm/WasmStreamingParser.cpp: Added.

(JSC::Wasm::parseUInt7):
(JSC::Wasm::StreamingParser::fail):
(JSC::Wasm::StreamingParser::StreamingParser):
(JSC::Wasm::StreamingParser::parseModuleHeader):
(JSC::Wasm::StreamingParser::parseSectionID):
(JSC::Wasm::StreamingParser::parseSectionSize):
(JSC::Wasm::StreamingParser::parseCodeSectionSize):
Code section in Wasm binary is specially handled compared with the other sections since it includes
a bunch of functions. StreamingParser extracts each function in a streaming fashion and enable
streaming validation / compilation of Wasm functions.

(JSC::Wasm::StreamingParser::parseFunctionSize):
(JSC::Wasm::StreamingParser::parseFunctionPayload):
(JSC::Wasm::StreamingParser::parseSectionPayload):
(JSC::Wasm::StreamingParser::consume):
(JSC::Wasm::StreamingParser::consumeVarUInt32):
(JSC::Wasm::StreamingParser::addBytes):
(JSC::Wasm::StreamingParser::failOnState):
(JSC::Wasm::StreamingParser::finalize):

  • wasm/WasmStreamingParser.h: Added.

(JSC::Wasm::StreamingParser::addBytes):
(JSC::Wasm::StreamingParser::errorMessage const):
This is our new StreamingParser implementation. StreamingParser::consumeXXX functions get data, and
StreamingParser::parseXXX functions parse consumed data. The user of StreamingParser calls
StreamingParser::addBytes() to pump the bytes stream into the parser. And once all the data is pumped,
the user calls StreamingParser::finalize. StreamingParser is a state machine which feeds on the
incoming byte stream.

  • wasm/js/JSWebAssemblyModule.cpp:

(JSC::JSWebAssemblyModule::source const): Deleted.
All the source should not be held.

  • wasm/js/JSWebAssemblyModule.h:
  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyValidateFunc):

Source/WTF:

Add maxByteLength function to get the maximum size for T.

  • wtf/LEBDecoder.h:

(WTF::LEBDecoder::maxByteLength):
(WTF::LEBDecoder::decodeUInt):
(WTF::LEBDecoder::decodeInt):

10:01 PM Changeset in webkit [235419] by mark.lam@apple.com
  • 34 edits
    3 adds
    2 deletes in trunk

Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

JSTests:

  • stress/regress-188577.js: Added.

Source/JavaScriptCore:

  1. Introduced CallFrame::convertToStackOverflowFrame() which converts the current (top) CallFrame (which may not have a valid callee) into a StackOverflowFrame.

The StackOverflowFrame is a sentinel frame that the low level code (exception
throwing code, stack visitor, and stack unwinding code) will know to skip
over. The StackOverflowFrame will also have a valid JSCallee so that client
code can compute the globalObject or VM from this frame.

As a result, client code that throws StackOverflowErrors no longer need to
compute the caller frame to throw from: it just converts the top frame into
a StackOverflowFrame and everything should *Just Work*.

  1. NativeCallFrameTracerWithRestore is now obsolete.

Instead, client code should always call convertToStackOverflowFrame() on the
frame before instantiating a NativeCallFrameTracer with it.

This means that topCallFrame will always point to the top CallFrame (which
may be a StackOverflowFrame), and topEntryFrame will always point to the top
EntryFrame. We'll never temporarily point them to the previous EntryFrame
(which we used to do with NativeCallFrameTracerWithRestore).

  1. genericUnwind() and Interpreter::unwind() will now always unwind from the top CallFrame, and will know how to handle a StackOverflowFrame if they see one.

This obsoletes the UnwindStart flag.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • Sources.txt:
  • debugger/Debugger.cpp:

(JSC::Debugger::pauseIfNeeded):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::callerFrame const):
(JSC::CallFrame::unsafeCallerFrame const):
(JSC::CallFrame::convertToStackOverflowFrame):
(JSC::CallFrame::callerFrame): Deleted.
(JSC::CallFrame::unsafeCallerFrame): Deleted.

  • interpreter/CallFrame.h:

(JSC::ExecState::iterate):

  • interpreter/CallFrameInlines.h: Added.

(JSC::CallFrame::isStackOverflowFrame const):
(JSC::CallFrame::isWasmFrame const):

  • interpreter/EntryFrame.h: Added.

(JSC::EntryFrame::vmEntryRecordOffset):
(JSC::EntryFrame::calleeSaveRegistersBufferOffset):

  • interpreter/FrameTracers.h:

(JSC::NativeCallFrameTracerWithRestore::NativeCallFrameTracerWithRestore): Deleted.
(JSC::NativeCallFrameTracerWithRestore::~NativeCallFrameTracerWithRestore): Deleted.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::unwind):

  • interpreter/Interpreter.h:
  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::StackVisitor):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::visit):
(JSC::StackVisitor::topEntryFrameIsEmpty const):

  • interpreter/VMEntryRecord.h:

(JSC::VMEntryRecord::callee const):
(JSC::EntryFrame::vmEntryRecordOffset): Deleted.
(JSC::EntryFrame::calleeSaveRegistersBufferOffset): Deleted.

  • jit/AssemblyHelpers.h:
  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITExceptions.h:
  • jit/JITOperations.cpp:
  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CallData.cpp:
  • runtime/CommonSlowPaths.cpp:

(JSC::throwArityCheckStackOverflowError):
(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPathsExceptions.cpp: Removed.
  • runtime/CommonSlowPathsExceptions.h: Removed.
  • runtime/Completion.cpp:

(JSC::evaluateWithScopeExtension):

  • runtime/JSGeneratorFunction.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::stackOverflowFrameCallee const):

  • runtime/VM.cpp:

(JSC::VM::throwException):

  • runtime/VM.h:
  • runtime/VMInlines.h:

(JSC::VM::topJSCallFrame const):

LayoutTests:

  • http/tests/misc/large-js-program-expected.txt:
5:43 PM Changeset in webkit [235418] by Basuke Suzuki
  • 5 edits in trunk/Source/WebKit

[Curl] Enable Proxy Authentication on WebKit.
https://bugs.webkit.org/show_bug.cgi?id=188998

Reviewed by Alex Christensen.

Add support for proxy authentication to curl backend running on WebKit.
This is follow up implementation of legacy implementation:

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
(WebKit::NetworkDataTaskCurl::tryProxyAuthentication):

  • NetworkProcess/curl/NetworkDataTaskCurl.h:
  • NetworkProcess/curl/NetworkProcessCurl.cpp:
  • PlatformWin.cmake:
5:37 PM Changeset in webkit [235417] by Justin Fan
  • 9 edits in trunk

WebGL 2 conformance: framebuffer-test
https://bugs.webkit.org/show_bug.cgi?id=188812

Reviewed by Jon Lee.

Source/WebCore:

Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance. Also taking this
chance to fix memory leak in PlatformScreenMac/gpuIDForDisplayMask().

Covered by existing WebGL tests as well as newly-enabled webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html.

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::framebufferTextureLayer):
(WebCore::validateDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):
(WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters):
(WebCore::WebGL2RenderingContext::validateFramebufferTarget):
(WebCore::WebGL2RenderingContext::validateNonDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getParameter):

  • html/canvas/WebGL2RenderingContext.h:
  • html/canvas/WebGLFramebuffer.cpp:

(WebCore::WebGLFramebuffer::isBound const):

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::checkFramebufferStatus):
(WebCore::WebGLRenderingContextBase::deleteFramebuffer):
(WebCore::WebGLRenderingContextBase::framebufferRenderbuffer):
(WebCore::WebGLRenderingContextBase::framebufferTexture2D):

  • html/canvas/WebGLRenderingContextBase.h:
  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::blitFramebuffer):

  • platform/mac/PlatformScreenMac.mm:

(WebCore::gpuIDForDisplayMask):

LayoutTests:

Update WebGL 2 implementation to handle READ_FRAMEBUFFER and default framebuffer conformance.

  • TestExpectations: Unskipping webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html.
5:37 PM Changeset in webkit [235416] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

Null pointer deref in WidthIterator
https://bugs.webkit.org/show_bug.cgi?id=188993

Reviewed by Brent Fulgham.

Source/WebCore:

Test: fast/text/rtl-justification.html

We simply need to guard glyphBuffer like we do in the rest of the function.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::advanceInternal):

LayoutTests:

  • fast/text/rtl-justification-expected.html: Added.
  • fast/text/rtl-justification.html: Added.
5:35 PM Changeset in webkit [235415] by sihui_liu@apple.com
  • 3 edits in trunk/LayoutTests

[ MacOS iOS ] Layout Test storage/indexeddb/modern/opendatabase-after-storage-crash.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187648
<rdar://problem/42405935>

Add an early exit so test does not call waitUntilDone after test ends.

Reviewed by Ryosuke Niwa.

  • platform/wk2/TestExpectations:
  • storage/indexeddb/modern/opendatabase-after-storage-crash.html:
5:28 PM Changeset in webkit [235414] by Wenson Hsieh
  • 22 edits
    1 delete in trunk

[Attachment Support] Remove WebCore::AttachmentDisplayOptions and friends
https://bugs.webkit.org/show_bug.cgi?id=189004

Reviewed by Dan Bernstein.

Source/WebCore:

No new tests, since there is no change in behavior.

  • WebCore.xcodeproj/project.pbxproj:
  • editing/Editor.cpp:

(WebCore::Editor::insertAttachment):

  • editing/Editor.h:
  • html/AttachmentTypes.h: Removed.
  • html/HTMLAttachmentElement.h:

Source/WebKit:

Removes all usage of WebCore::AttachmentDisplayOptions, and deletes an SPI method that isn't being used by any
internal clients. Removal of _WKAttachmentDisplayOptions itself is still blocked on the submission of
<rdar://problem/43357281>.

  • Scripts/webkit/messages.py:
  • Shared/WebCoreArgumentCoders.cpp:
  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::setDisplayOptions): Deleted.

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

(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:

Deprecate -_insertAttachmentWithFileWrapper:contentType:options:completion:, in favor of
-_insertAttachmentWithFileWrapper:contentType:completion:.

  • UIProcess/API/Cocoa/_WKAttachment.h:

Remove -setDisplayOptions:completion:, since it is a now a noop, and also isn't used by any internal clients.

  • UIProcess/API/Cocoa/_WKAttachment.mm:

(-[_WKAttachmentDisplayOptions coreDisplayOptions]): Deleted.
(-[_WKAttachment setDisplayOptions:completion:]): Deleted.

  • UIProcess/API/Cocoa/_WKAttachmentInternal.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::insertAttachment):
(WebKit::WebPageProxy::setAttachmentDisplayOptions): Deleted.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::setAttachmentDisplayOptions): Deleted.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Move off of deprecated attachment insertion SPI.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(-[TestWKWebView synchronouslyInsertAttachmentWithFileWrapper:contentType:]):
(-[TestWKWebView synchronouslyInsertAttachmentWithFilename:contentType:data:]):
(-[_WKAttachment synchronouslySetDisplayOptions:error:]): Deleted.

5:26 PM Changeset in webkit [235413] by achristensen@apple.com
  • 21 edits in trunk/Source/WebKit

NetworkLoad::didReceiveResponse should pass its completion handler to its client
https://bugs.webkit.org/show_bug.cgi?id=188701

Reviewed by Michael Catanzaro.

Right now we have a confusing enum ShouldContinueDidReceiveResponse and a complicated flow
that involves many objects and implicitly using NetworkLoad's destructor as part of the
loading flow. This makes the responsibilities of the objects clear.

  • NetworkProcess/Downloads/PendingDownload.cpp:

(WebKit::PendingDownload::didReceiveResponse):

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

(WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
(WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession): Deleted.

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

(WebKit::NetworkDataTask::didReceiveResponse):

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

(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::continueDidReceiveResponse): Deleted.
(WebKit::NetworkLoad::didReceiveResponseNetworkSession): Deleted.

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkLoadClient.h:
  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::~NetworkResourceLoader):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/PingLoad.cpp:

(WebKit::PingLoad::didReceiveResponse):
(WebKit::PingLoad::didReceiveResponseNetworkSession): Deleted.

  • NetworkProcess/PingLoad.h:
  • NetworkProcess/PreconnectTask.cpp:

(WebKit::PreconnectTask::didReceiveResponse):

  • NetworkProcess/PreconnectTask.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/capture/NetworkDataTaskReplay.cpp:

(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

5:07 PM Changeset in webkit [235412] by Keith Rollin
  • 20 edits in trunk/Source

Unreviewed build fix -- disable LTO for production builds

  • Configurations/Base.xcconfig:
4:47 PM Changeset in webkit [235411] by pvollan@apple.com
  • 2 edits in trunk/Source/WebKit

[macOS] Block CoreServices in sandbox.
https://bugs.webkit.org/show_bug.cgi?id=189005
<rdar://problem/35369091>

Reviewed by Brent Fulgham.

The sandbox for the WebContent process should block CoreServices.

  • WebProcess/com.apple.WebProcess.sb.in:
4:41 PM Changeset in webkit [235410] by youenn@apple.com
  • 6 edits
    6 adds in trunk

Various IndexDB tests abandon documents
https://bugs.webkit.org/show_bug.cgi?id=188728
<rdar://problem/43651095>

Reviewed by Alex Christensen.

Source/WebCore:

Some IDB objects implement hasPendingActivity but there are some possibilities that they continue returning true after being stopped.
This is the case for requests that get stopped while still waiting for some pending activity.
This is also the case for requests that emits upgradeneeded or blocked events.

Enforce that these objects return false to hasPendingActivity once being stopped.
This ensures that they can be garbage collected once their context is preparing for destruction like in Document::prepareForDestruction.

Test: http/tests/IndexedDB/collect-IDB-objects.https.html

  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::hasPendingActivity const):

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::hasPendingActivity const):

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::hasPendingActivity const):
(WebCore::IDBRequest::enqueueEvent):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::notifyDidAbort):
In case the context is stopped, IDBTransaction should not ask IDBRequest to fire an event.

LayoutTests:

  • http/tests/IndexedDB/collect-IDB-objects.https-expected.txt: Added.
  • http/tests/IndexedDB/collect-IDB-objects.https.html: Added.
  • http/tests/IndexedDB/resources/myidbframe.htm: Added.
  • http/tests/IndexedDB/resources/support.js: Added.
4:31 PM Changeset in webkit [235409] by Simon Fraser
  • 4 edits in trunk/LayoutTests

[LayoutTests] results.html shows "no expected results" for text diff failures
https://bugs.webkit.org/show_bug.cgi?id=188927

Reviewed by Alexey Proskuryakov.

The results.html rewrite confused "is missing all results" with "is missing one type of result",
causing tests with a missing image to show as tests with no results.

Fix by clarifying the types of "missing".

  • fast/harness/full_results.json:
  • fast/harness/results-expected.txt:
  • fast/harness/results.html:
4:31 PM Changeset in webkit [235408] by Simon Fraser
  • 20 edits in trunk

Teach WebKitTestRunner and DumpRenderTree about detecting world leaks
https://bugs.webkit.org/show_bug.cgi?id=188994

Reviewed by Tim Horton.
Source/WebCore:

Export Document::postTask() for use by WTR's injected bundle.

  • dom/Document.h:

Source/WebKit:

This patch adds the notion of a "control command" in the protocol between webkitpy and
WebKitTestRunner/DumpRenderTree. A command is simply an input string starting with a #
that is checked for before trying to parse the input as test URL. For now, just one
commmand is supported, which is "#CHECK FOR WORLD LEAKS".

In response to the command, the tool dumps an output block in the usual pseudo-MIME-style,
with a trailing "#EOF". Future patches will add support to webkitpy to parse this output.

DumpRenderTree stubs out the command, returning an empty block.

WebKitTestRunner responds to the command by dumping the list of live documents, if it was
run with the --check-for-world-leaks option.

When run with --check-for-world-leaks, WebKitTestRunner gets the list of live documents via
WKBundleGetLiveDocumentURLs() after every test (this allows it to detect the first test
that leaked a document), and keeps them in a map of document identifier to test and live document URL.
Then when it receives the "#CHECK FOR WORLD LEAKS" command, it calls into the bundle to
clear the page and memory caches, runs a GC, then posts a task (in the Document::postTaks() sense)
after which it requests the list of live documents for a final time, excluding any that are loaded
in live Frames (thus omitting the about:blank that will be loaded at this point). Documents in this
list are therefore leaked (or abandoned).

Future patches will hook up webkitpy reporting for leaked documents.

  • WebProcess/InjectedBundle/API/c/WKBundle.cpp:

(WKBundleGetLiveDocumentURLs):
(WKBundleClearPageCache):
(WKBundleClearMemoryCache):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePagePostTask):

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

(WebKit::InjectedBundle::liveDocumentURLs):

  • WebProcess/InjectedBundle/InjectedBundle.h:

Tools:

This patch adds the notion of a "control command" in the protocol between webkitpy and
WebKitTestRunner/DumpRenderTree. A command is simply an input string starting with a #
that is checked for before trying to parse the input as test URL. For now, just one
commmand is supported, which is "#CHECK FOR WORLD LEAKS".

In response to the command, the tool dumps an output block in the usual pseudo-MIME-style,
with a trailing "#EOF". Future patches will add support to webkitpy to parse this output.

DumpRenderTree stubs out the command, returning an empty block.

WebKitTestRunner responds to the command by dumping the list of live documents, if it was
run with the --check-for-world-leaks option.

When run with --check-for-world-leaks, WebKitTestRunner gets the list of live documents via
WKBundleGetLiveDocumentURLs() after every test (this allows it to detect the first test
that leaked a document), and keeps them in a map of document identifier to test and live document URL.
Then when it receives the "#CHECK FOR WORLD LEAKS" command, it calls into the bundle to
clear the page and memory caches, runs a GC, then posts a task (in the Document::postTaks() sense)
after which it requests the list of live documents for a final time, excluding any that are loaded
in live Frames (thus omitting the about:blank that will be loaded at this point). Documents in this
list are therefore leaked (or abandoned).

Future patches will hook up webkitpy reporting for leaked documents.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(initializeGlobalsFromCommandLineOptions):
(handleControlCommand):
(runTestingServerLoop):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(handleControlCommand):
(main):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::postGCTask):
(WTR::InjectedBundle::reportLiveDocuments):
(WTR::InjectedBundle::didReceiveMessageToPage):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:
  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionCheckForWorldLeaks):
(WTR::OptionsHandler::OptionsHandler):

  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::AsyncTask::run):
(WTR::AsyncTask::currentTask):
(WTR::TestController::initialize):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::updateLiveDocumentsAfterTest):
(WTR::TestController::checkForWorldLeaks):
(WTR::TestController::findAndDumpWorldLeaks):
(WTR::TestController::willDestroyWebView):
(WTR::parseInputLine):
(WTR::TestController::waitForCompletion):
(WTR::TestController::handleControlCommand):
(WTR::TestController::runTestingServerLoop):
(WTR::TestController::run):
(WTR::TestController::didReceiveLiveDocumentsList):
(WTR::TestController::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/TestController.h:

(WTR::AsyncTask::AsyncTask):
(WTR::AsyncTask::taskComplete):
(WTR::TestController::AbandonedDocumentInfo::AbandonedDocumentInfo):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::invoke):

  • WebKitTestRunner/TestOptions.h:

(WTR::TestOptions::hasSameInitializationOptions const):

4:29 PM Changeset in webkit [235407] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix plug-ins after r235398
https://bugs.webkit.org/show_bug.cgi?id=188997

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::findPlugin):

3:25 PM Changeset in webkit [235406] by aestes@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Teach Web Inspector how to complete keywords for -apple-pay-button-style and -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=189001

Reviewed by Devin Rousso.

  • UserInterface/Models/CSSKeywordCompletions.js:
3:23 PM Changeset in webkit [235405] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix API test after r235398
https://bugs.webkit.org/show_bug.cgi?id=188997

  • TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp:

(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
willGoToBackForwardListItem is unused and unsupported. Removing its check.

3:19 PM Changeset in webkit [235404] by dbates@webkit.org
  • 3 edits in trunk/Tools

Partial revert of r235376
https://bugs.webkit.org/show_bug.cgi?id=189011

For now revert the unit tests added in r235376 as the following tests are failing on Apple Sierra
Debug and Apple High Sierra Debug bots:

lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSetProvider_simple
lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple

Will investigate offline.

  • lldb/lldbWebKitTester/main.cpp:

(testSummaryProviders):

  • lldb/lldb_webkit_unittest.py:

(TestSummaryProviders.serial_test_WTFHashSet_tablesize_and_size):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_empty): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSetProvider_empty): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSetProvider_simple): Deleted.

2:48 PM Changeset in webkit [235403] by Aditya Keerthi
  • 21 edits in trunk

Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
https://bugs.webkit.org/show_bug.cgi?id=188931

Reviewed by Wenson Hsieh.

.:

  • Source/cmake/OptionsMac.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
  • Source/cmake/WebKitFeatures.cmake: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

PerformanceTests:

  • StitchMarker/wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebKit:

A popover is the preferred interface for <input type=color> on macOS. The color
panel is still accessible through a button on the popover, for fine-grained
color selection. We can consolidate the two build flags, so that a popover is
always displayed in the ENABLE(INPUT_TYPE_COLOR) build.

  • Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::showColorPicker):
(WebKit::WebPageProxy::closeOverlayedViews):

  • UIProcess/mac/WebColorPickerMac.mm:

(WebKit::WebColorPickerMac::WebColorPickerMac):
(WebKit::WebColorPickerMac::showColorPicker):

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WTF:

  • wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
2:36 PM Changeset in webkit [235402] by Justin Fan
  • 2 edits in trunk/Tools

Add Justin Fan to list of WebKit contributors
https://bugs.webkit.org/show_bug.cgi?id=184431

  • Scripts/webkitpy/common/config/contributors.json:
2:27 PM Changeset in webkit [235401] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: when scrolling a virtualized TreeOutline, only update the DOM periodically
https://bugs.webkit.org/show_bug.cgi?id=188960

Reviewed by Brian Burg.

After each updateVirtualizedElements call, remember the WI.TreeElement that is located
halfway within the visible list. When handling each "scroll", only regenerate the
WI.TreeOutline DOM if the user has scrolled extraRows distance.

  • UserInterface/Views/TreeOutline.js:

(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Added.

2:11 PM Changeset in webkit [235400] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit

Pass webPageID and webFrameID to NetworkLoad for speculative loads
https://bugs.webkit.org/show_bug.cgi?id=188682

Reviewed by Youenn Fablet.

This also removes an authentication shortcut I introduced in r234941

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):

  • Shared/Authentication/AuthenticationManager.cpp:

(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

2:11 PM Changeset in webkit [235399] by Simon Fraser
  • 16 edits in trunk/Tools

Convert timeout values in WebKitTestRunner to WTF::Seconds
https://bugs.webkit.org/show_bug.cgi?id=188987

Reviewed by Ryosuke Niwa.

Replace various 'int' timeout values with WTF::Seconds. The timeout argument
comes in as milliseconds, so convert on input. When sending messages to the InjectedBundle
using integers, convert to and from milliseconds.

Also do some #pragma once, and initializer cleanup.

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::beginTesting):
(WTR::InjectedBundle::InjectedBundle): Deleted.

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

(WTR::TestRunner::timeout):
(WTR::TestRunner::setCustomTimeout):

  • WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:

(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):

  • WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:

(WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):

  • WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:

(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::TestController):
(WTR::parseInputLine):
(WTR::TestController::runTest):
(WTR::TestController::runUntil):
(WTR::TestController::didReceiveMessageFromInjectedBundle):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::shortTimeout const):
(WTR::TestInvocation::createTestSettingsDictionary):

  • WebKitTestRunner/TestInvocation.h:
  • WebKitTestRunner/TestOptions.h:
  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::TestController::platformRunUntil):

  • WebKitTestRunner/gtk/TestControllerGtk.cpp:

(WTR::TestController::platformRunUntil):

  • WebKitTestRunner/wpe/TestControllerWPE.cpp:

(WTR::TestController::platformRunUntil):

2:00 PM Changeset in webkit [235398] by achristensen@apple.com
  • 5 edits in trunk/Source/WebKit

Remove most of LoaderClient
https://bugs.webkit.org/show_bug.cgi?id=188997

Reviewed by Tim Horton.

We still have a few clients using basic functionality that are transitioning to WKPageNavigationClient,
but most of it can be removed.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::~LoaderClient):
(API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
(API::LoaderClient::didFailLoadWithErrorForFrame):
(API::LoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(API::LoaderClient::didReachLayoutMilestone):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
(API::LoaderClient::didCommitLoadForFrame): Deleted.
(API::LoaderClient::didFinishDocumentLoadForFrame): Deleted.
(API::LoaderClient::didSameDocumentNavigationForFrame): Deleted.
(API::LoaderClient::didReceiveTitleForFrame): Deleted.
(API::LoaderClient::didFirstLayoutForFrame): Deleted.
(API::LoaderClient::didDisplayInsecureContentForFrame): Deleted.
(API::LoaderClient::didRunInsecureContentForFrame): Deleted.
(API::LoaderClient::didDetectXSSForFrame): Deleted.
(API::LoaderClient::didReceiveAuthenticationChallengeInFrame): Deleted.
(API::LoaderClient::didStartProgress): Deleted.
(API::LoaderClient::didChangeProgress): Deleted.
(API::LoaderClient::didFinishProgress): Deleted.
(API::LoaderClient::processDidBecomeUnresponsive): Deleted.
(API::LoaderClient::processDidBecomeResponsive): Deleted.
(API::LoaderClient::processDidCrash): Deleted.
(API::LoaderClient::didChangeBackForwardList): Deleted.
(API::LoaderClient::willGoToBackForwardListItem): Deleted.
(API::LoaderClient::didNavigateWithNavigationData): Deleted.
(API::LoaderClient::didPerformClientRedirect): Deleted.
(API::LoaderClient::didPerformServerRedirect): Deleted.
(API::LoaderClient::didUpdateHistoryTitle): Deleted.
(API::LoaderClient::navigationGestureDidBegin): Deleted.
(API::LoaderClient::navigationGestureWillEnd): Deleted.
(API::LoaderClient::navigationGestureDidEnd): Deleted.
(API::LoaderClient::pluginLoadPolicy): Deleted.
(API::LoaderClient::didFailToInitializePlugin): Deleted.
(API::LoaderClient::didBlockInsecurePluginVersion): Deleted.
(API::LoaderClient::webGLLoadPolicy const): Deleted.
(API::LoaderClient::resolveWebGLLoadPolicy const): Deleted.
(API::LoaderClient::didStartLoadForQuickLookDocumentInMainFrame): Deleted.
(API::LoaderClient::didFinishLoadForQuickLookDocumentInMainFrame): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChangeBackForwardList):
(WebKit::WebPageProxy::willGoToBackForwardListItem):
(WebKit::WebPageProxy::didStartProgress):
(WebKit::WebPageProxy::didChangeProgress):
(WebKit::WebPageProxy::didFinishProgress):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::didFirstLayoutForFrame):
(WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
(WebKit::WebPageProxy::didRunInsecureContentForFrame):
(WebKit::WebPageProxy::didDetectXSSForFrame):
(WebKit::WebPageProxy::didNavigateWithNavigationData):
(WebKit::WebPageProxy::didPerformClientRedirect):
(WebKit::WebPageProxy::didPerformServerRedirect):
(WebKit::WebPageProxy::didUpdateHistoryTitle):
(WebKit::WebPageProxy::webGLPolicyForURL):
(WebKit::WebPageProxy::resolveWebGLPolicyForURL):
(WebKit::WebPageProxy::processDidBecomeUnresponsive):
(WebKit::WebPageProxy::processDidBecomeResponsive):
(WebKit::WebPageProxy::dispatchProcessDidTerminate):
(WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
(WebKit::WebPageProxy::navigationGestureDidBegin):
(WebKit::WebPageProxy::navigationGestureWillEnd):
(WebKit::WebPageProxy::navigationGestureDidEnd):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didStartLoadForQuickLookDocumentInMainFrame):
(WebKit::WebPageProxy::didFinishLoadForQuickLookDocumentInMainFrame):

1:58 PM Changeset in webkit [235397] by achristensen@apple.com
  • 4 edits in trunk

REGRESSION(r234985/r234989) WKPageLoadHTMLString with a 16-bit String has the wrong encoding
https://bugs.webkit.org/show_bug.cgi?id=189002

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/C/WKPage.cpp:

(encodingOf):

Tools:

  • TestWebKitAPI/Tests/WebKit/WillLoad.cpp:

(TestWebKitAPI::TEST_F):

1:57 PM Changeset in webkit [235396] by bshafiei@apple.com
  • 2 edits in tags/Safari-607.1.3.3/Source/WebKit/UIProcess

Build fix. rdar://problem/43765405

1:46 PM Changeset in webkit [235395] by bshafiei@apple.com
  • 7 edits in tags/Safari-607.1.3.3/Source

Versioning.

1:44 PM Changeset in webkit [235394] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.3.3

Tag Safari-607.1.3.3.

1:31 PM Changeset in webkit [235393] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Improve the showAllDocuments logging
https://bugs.webkit.org/show_bug.cgi?id=188990

Reviewed by Tim Horton.

Improve the output triggered by "notifyutil -p com.apple.WebKit.showAllDocuments" to denote
SVG documents (which often have no URL), and to show the refCount and referencingNodeCount,
which helps with leak debugging.

Sample output:

2 live documents:
Document 0x1236f1200 3 (refCount 6, referencingNodeCount 580) https://webkit.org/
SVGDocument 0x134b60000 13 (refCount 1, referencingNodeCount 197)

  • page/mac/PageMac.mm:

(WebCore::Page::platformInitialize):

1:14 PM Changeset in webkit [235392] by Wenson Hsieh
  • 22 edits in trunk

[Cocoa] Exception (fileType 'dyn.agq8u' is not a valid UTI) raised when dragging an attachment whose file wrapper is a directory
https://bugs.webkit.org/show_bug.cgi?id=188903
<rdar://problem/43702993>

Reviewed by Tim Horton.

Source/WebCore:

Fixes the exception for attachments that are created when dropping files with extensions that don't map to any
known UTIs, and when dropping folders. See below for more detail.

Tests: WKAttachmentTests.InsertFolderAndFileWithUnknownExtension

WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging
WKAttachmentTests.ChangeAttachmentDataAndFileInformation

  • editing/Editor.cpp:

(WebCore::Editor::insertAttachment):

  • editing/Editor.h:
  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::WebContentReader::readFilePaths):

When creating an attachment by dropping or pasting a file backed by a file path, handle the cases where…
(1) the dropped path is a directory, by setting the UTI to "public.directory". This allows us to show a

folder icon for the dropped attachment element on macOS.

(2) the dropped path is a file whose UTI is unknown, by defaulting to "public.data".

By ensuring that the UTI of a dropped file-backed attachment is set to a concrete type in any case, we avoid an
exception when dragging the attachment on macOS, and on iOS, avoid silently failing to drag an attachment.

  • html/HTMLAttachmentElement.cpp:

(WebCore::HTMLAttachmentElement::updateAttributes):

Change this method to take an optional file size (the subtitle attribute will only be set if the file size is
not std::nullopt). Furthermore, allow callers of this method to clear attributes on the attachment element by
passing in std::nullopt for any of the three arguments. This allows us to handle the case where an
attachment's file wrapper is changed from a regular file to a folder whose total size is currently unknown.
Instead of showing "0 bytes", we'll simply refrain from showing a subtitle at all (in the future, this should
be improved by implementing a way to estimate the size of the files in the folder, or perhaps show the number of
items in the folder as the subtitle).

  • html/HTMLAttachmentElement.h:

Source/WebKit:

Fixes the bug by supporting NSFileWrappers of type directory, as well as NSFileWrappers with file that do not
map to concrete type identifiers. Among other things, this patch ensures that:

  • Inserting a directory file wrapper (or using -setFileWrapper:…: to change an existing _WKAttachment's

file wrapper to a directory) does not cause the attachment element to show "0 bytes" as the subtitle.

  • In the above scenario, we also won't end up with a missing "type" attribute for the attachment element,

as well as a corresponding API::Attachment::contentType() that's an empty string.

  • Dropping or pasting attachments backed by paths on disk also doesn't trigger these problems, if the path

is a directory or of unknown file type.

Changes are verified by 2 new API tests.

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::updateAttributes):
(API::Attachment::fileSizeForDisplay const):

  • UIProcess/API/APIAttachment.h:
  • UIProcess/API/Cocoa/APIAttachmentCocoa.mm:

(API::Attachment::setFileWrapperAndUpdateContentType):

Add a helper that sets the file wrapper to the given NSFileWrapper, and either sets the content type to the
given content type if it's specified, or infers it from the file extension of the new NSFileWrapper. Invoked
whenever an NSFileWrapper and content type combination is set on an API attachment via WebKit SPI.

(API::Attachment::fileSizeForDisplay const):

Returns a file size to be displayed in the attachment element's subtitle. This returns an optional file size,
where std::nullopt indicates that there should not be a file size shown. For now, this returns std::nullopt
for directory file wrappers, though in the future, this should be done only in cases where we don't immediately
have a size estimate for the file wrapper.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):

Use API::Attachment::setFileWrapperAndUpdateContentType() instead of trying to come up with a fallback UTI.

  • UIProcess/API/Cocoa/_WKAttachment.mm:

(-[_WKAttachment setFileWrapper:contentType:completion:]):

Use API::Attachment::setFileWrapperAndUpdateContentType() instead of trying to come up with a fallback UTI.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::insertAttachment):

Remove the separate arguments for file size, content type, and file name, and instead get them from the given
API Attachment object.

(WebKit::WebPageProxy::updateAttachmentAttributes):

Remove separate arguments for file size, content type and file name and just take an API::Attachment instead.
These separate pieces of information can simply be asked from the Attachment itself.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::updateAttachmentAttributes):

Adjust some interfaces here to allow the displayed file size to be optional.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Tools:

Add two API tests and adjust existing WKAttachment API tests. The new tests exercise the following scenarios, in
both iOS and macOS:

  • Dropping a folder as an attachment element, and then moving that attachment element in the document by

dragging and dropping.

  • Using WKWebView SPI to insert a folder and a file with an unknown extension, and then using more

_WKAttachment SPI to swap the attachments' backing file wrappers.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(runTestWithTemporaryFolder):

Add a helper function to run a test with a new folder path, created in the temporary directory and populated
with some sample content. This folder is deleted after running the test.

(simulateFolderDragWithURL):

Add a helper function to prepare a given DragAndDropSimulator for simulating a dragged folder from a source
external to the web view.

(platformCopyRichTextWithMultipleAttachments):
(platformCopyRichTextWithImage):
(platformCopyPNG):
(TestWebKitAPI::TEST):

Add new API tests, and adjust existing tests to reflect new -setFileWrapper:…: behavior. Specifically,
ChangeAttachmentDataAndFileInformation previously required that changing a _WKAttachment's NSFileWrapper would
preserve the previous NSFileWrapper's preferred name if the new file wrapper does not have a preferred name, but
this quirk is no longer supported.

Also add a few bridging casts for the eventual transition of TestWebKitAPI to ARC.

  • TestWebKitAPI/cocoa/DragAndDropSimulator.h:

Add a new hook to clear any external drag information on an existing DragAndDropSimulator. This is convenient
when using the same DragAndDropSimulator to perform multiple drags in a single test.

  • TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:

(-[DragAndDropSimulator clearExternalDragInformation]):

  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropSimulator clearExternalDragInformation]):

12:38 PM Changeset in webkit [235391] by achristensen@apple.com
  • 3 edits
    4 moves
    1 delete in trunk/Tools

Translate 4 tests using WKPageLoaderClient to ObjC
https://bugs.webkit.org/show_bug.cgi?id=188827

Reviewed by Tim Horton.

They use processDidBecomeUnresponsive, didChangeBackForwardList, or willGoToBackForwardListItem.
Rather than introduce these to WKPageNavigationClient, I just translated the tests to use WKNavigationDelegate, which already have equivalent callbacks.
willGoToBackForwardListItem had userData from the InjectedBundle, but nobody was using it so I did not add that to the ObjC SPI, so I don't test that unused
bundle functionality any more.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem_Bundle.cpp: Removed.
  • TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimer.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp.

(-[ResponsivenessTimerDelegate webView:didFinishNavigation:]):
(-[ResponsivenessTimerDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimerDoesntFireEarly.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp.

(-[ResponsivenessDelegate webView:didFinishNavigation:]):
(-[ResponsivenessDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didReceiveMessageFromInjectedBundle): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setInjectedBundleClient): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp.

(-[SessionStateDelegate webView:didFinishNavigation:]):
(-[SessionStateDelegate _webView:backForwardListItemAdded:removed:]):
(TestWebKitAPI::createSessionStateData):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didChangeBackForwardListForPage): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/ShouldGoToBackForwardListItem.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp.

(-[BackForwardClient webView:didFinishNavigation:]):
(-[BackForwardClient _webView:willGoToBackForwardListItem:inPageCache:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

12:30 PM Changeset in webkit [235390] by aestes@apple.com
  • 25 edits
    3 copies
    3 moves
    34 adds
    4 deletes in trunk/LayoutTests

[Payment Request] Update payment-request web platform tests
https://bugs.webkit.org/show_bug.cgi?id=188985

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

  • web-platform-tests/payment-request/META.yml: Added.
  • web-platform-tests/payment-request/OWNERS: Removed.
  • web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html:
  • web-platform-tests/payment-request/PaymentAddress/w3c-import.log:
  • web-platform-tests/payment-request/PaymentItem/type_member.https-expected.txt: Added.
  • web-platform-tests/payment-request/PaymentItem/type_member.https.html: Added.
  • web-platform-tests/payment-request/PaymentItem/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
  • web-platform-tests/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https-expected.txt: Added.
  • web-platform-tests/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https.html: Added.
  • web-platform-tests/payment-request/PaymentMethodChangeEvent/methodName-attribute.https-expected.txt: Added.
  • web-platform-tests/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html: Added.
  • web-platform-tests/payment-request/PaymentMethodChangeEvent/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
  • web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html: Added.
  • web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html: Added.
  • web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html: Added.
  • web-platform-tests/payment-request/PaymentValidationErrors/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
  • web-platform-tests/payment-request/algorithms-manual.https.html:
  • web-platform-tests/payment-request/allowpaymentrequest/w3c-import.log:
  • web-platform-tests/payment-request/change-shipping-option-manual.https.html:
  • web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html: Added.
  • web-platform-tests/payment-request/idlharness.https.window-expected.txt: Added.
  • web-platform-tests/payment-request/idlharness.https.window.html: Added.
  • web-platform-tests/payment-request/idlharness.https.window.js: Added.

(idlArray.catch):

  • web-platform-tests/payment-request/interfaces.https-expected.txt: Removed.
  • web-platform-tests/payment-request/interfaces.https.html: Removed.
  • web-platform-tests/payment-request/onpaymentmenthodchange-attribute.https-expected.txt: Added.
  • web-platform-tests/payment-request/onpaymentmenthodchange-attribute.https.html: Added.
  • web-platform-tests/payment-request/payment-request-abort-method-manual.https-expected.txt: Removed.
  • web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt: Added.
  • web-platform-tests/payment-request/payment-request-abort-method.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-abort-method-manual.https.html.
  • web-platform-tests/payment-request/payment-request-canmakepayment-method.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https-expected.txt.
  • web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html.
  • web-platform-tests/payment-request/payment-request-insecure.http-expected.txt: Added.
  • web-platform-tests/payment-request/payment-request-insecure.http.html: Added.
  • web-platform-tests/payment-request/payment-request-not-exposed.https.worker-expected.txt: Added.
  • web-platform-tests/payment-request/payment-request-not-exposed.https.worker.html: Added.
  • web-platform-tests/payment-request/payment-request-not-exposed.https.worker.js: Added.

(test):

  • web-platform-tests/payment-request/payment-request-show-method.https.html:
  • web-platform-tests/payment-request/payment-response/complete-method-manual.https.html:
  • web-platform-tests/payment-request/payment-response/helpers.js:

(async.getPaymentResponse):

  • web-platform-tests/payment-request/payment-response/methodName-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.https-expected.txt: Added.
  • web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.https.html: Added.
  • web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/payerEmail-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/payerName-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/payerPhone-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/rejects_if_not_active-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/requestId-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/retry-method-manual.https.html: Added.
  • web-platform-tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/shippingOption-attribute-manual.https.html:
  • web-platform-tests/payment-request/payment-response/w3c-import.log:
  • web-platform-tests/payment-request/resources/w3c-import.log:
  • web-platform-tests/payment-request/shipping-address-changed-manual.https.html:
  • web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html: Added.
  • web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html: Added.
  • web-platform-tests/payment-request/show-method-postmessage-iframe.html: Added.
  • web-platform-tests/payment-request/show-method-postmessage-manual.https.html: Added.
  • web-platform-tests/payment-request/updateWith-method-pmi-handling-manual.https.html:
  • web-platform-tests/payment-request/user-abort-algorithm-manual.https.html:
  • web-platform-tests/payment-request/user-accepts-payment-request-algo-manual.https.html:
  • web-platform-tests/payment-request/w3c-import.log:

LayoutTests:

  • platform/mac-wk2/TestExpectations:
11:49 AM Changeset in webkit [235389] by Devin Rousso
  • 9 edits
    2 adds in trunk

Web Inspector: provide autocompletion for event breakpoints
https://bugs.webkit.org/show_bug.cgi?id=188717

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add getSupportedEventNames command.

Source/WebCore:

Test: inspector/dom/getSupportedEventNames.html

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

(WebCore::InspectorDOMAgent::getSupportedEventNames): Added.

Source/WebInspectorUI:

  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.getSupportedEventNames): Added.

  • UserInterface/Views/EventBreakpointPopover.js:

(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype.completionSuggestionsClickedCompletion): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._showSuggestionsView): Added.

LayoutTests:

  • inspector/dom/getSupportedEventNames-expected.txt: Added.
  • inspector/dom/getSupportedEventNames.html: Added.
11:47 AM Changeset in webkit [235388] by Wenson Hsieh
  • 2 edits in trunk/Tools

[Cocoa] "video.html" appears at the top level of the TestWebKitAPI Xcode project
https://bugs.webkit.org/show_bug.cgi?id=188989

Reviewed by Andy Estes.

Move this into the Tests/WebKit/Resources group in the project.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
11:22 AM Changeset in webkit [235387] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Avoid an exception in the interactive interpreter
https://bugs.webkit.org/show_bug.cgi?id=188991

Patch by Thomas Denney <tdenney@apple.com> on 2018-08-27
Reviewed by Myles C. Maxfield.

  • WebGPUShadingLanguageRI/index.html: Corrects a typo in the name of a

local variable

11:22 AM Changeset in webkit [235386] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Allow new vector types to work with the interactive interpreter
https://bugs.webkit.org/show_bug.cgi?id=188988

Patch by Thomas Denney <tdenney@apple.com> on 2018-08-27
Reviewed by Myles C. Maxfield.

  • WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:

(FlattenedStructOffsetGatherer.prototype.visitTypeRef): Do not
unncessarily visit the type arguments of a TypeRef, as by this point
there are none that are relevant.

  • WebGPUShadingLanguageRI/Intrinsics.js:

(Intrinsics): Treat VectorType as a primitive type.

10:54 AM Changeset in webkit [235385] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit

Fix internal builds after r235368

  • UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:

At least the ios macros need an introductory version.

10:42 AM Changeset in webkit [235384] by bshafiei@apple.com
  • 12 edits in tags/Safari-607.1.3.2/Source/WebKit

Revert r234985. rdar://problem/43703115

10:42 AM Changeset in webkit [235383] by bshafiei@apple.com
  • 2 edits in tags/Safari-607.1.3.2/Source/WebKit

Revert r234989. rdar://problem/43703115

10:38 AM Changeset in webkit [235382] by youenn@apple.com
  • 524 edits
    1 copy
    8 moves
    669 adds
    64 deletes in trunk/LayoutTests

Update WPT tools to 87329a1
https://bugs.webkit.org/show_bug.cgi?id=188766

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • resources/config.json:
  • web-platform-tests/fetch/cross-origin-resource-policy/fetch.any.js:

Fixing test that was including testharness.js twice once explictly and once with WPT test template.

  • web-platform-tests/infrastructure: Refreshed.
  • web-platform-tests/infrastructure/testdriver/bless.html: Added.
  • web-platform-tests/tools: Refreshed

LayoutTests:

The test name (.any.serviceworker.html) is clashing with the new WPT server.

  • http/wpt/service-workers/cors-preflight-star.any-serviceworker-expected.txt: Renamed from LayoutTests/http/wpt/service-workers/cors-preflight-star.any.serviceworker-expected.txt.
  • http/wpt/service-workers/cors-preflight-star.any-serviceworker.html: Renamed from LayoutTests/http/wpt/service-workers/cors-preflight-star.any.serviceworker.html.
10:16 AM Changeset in webkit [235381] by Keith Rollin
  • 37 edits in trunk

Build system support for LTO
https://bugs.webkit.org/show_bug.cgi?id=187785
<rdar://problem/42353132>

Reviewed by Dan Bernstein.

.:

Add support for building WebKit with LTO (Link Time Optimization) on
macOS and iOS. Both variations are supported: "full" (which performs
all the optimizations it can regardless of the cost) and "thin" (which
sacrifices some optimizations in order to recover build time and
memory usage).

By default, LTO is disabled for Debug and Release builds, but is
enabled for Production builds. For Debug and Release builds, LTO is
controlled as follows:

  • When using make from the command line, include WK_LTO_MODE={none,thin,full}. For example, `make WK_LTO_MODE=full release`. As when specifying debug/release, the LTO configuration information is written to the WebKitBuild directory and is used as the default on the next build if a new setting is not specified.
  • When using build-webkit, include --lto-mode={none,thin,full} on the command line. For example, build-webkit --lto-mode=full ....
  • When using Xcode, create a configuration file called LocalOverrides.xcconfig at the root level of your WebKit checkout directory. Include within it a line that says:

WK_LTO_MODE={none,thin,full}

For example:

WK_LTO_MODE=full

Note that LocalOverrides.xcconfig is included in the .gitignore file,
so you won't accidentally check your changes into source control.

Enabling LTO can greatly increase build times, especially when using
"full" LTO with 32GB or RAM or less. Following is a table of full
build times for a Release build on a fully decked-out 2017 iMac Pro:

LTO macOS iOS
----- ------- -------
None: 9m 11s 14m 11s
Thin: 11m 44s 17m 30s
Full: 21m 39s 28m 56s

Incremental times are affected even more greatly. The actual
optimization and compilation of LLVM bitcode is moved to the link
phase, meaning that the link phase, which previously took only
seconds, can now take many minutes. It's for this reason that LTO is
not enabled in Debug and Release builds, since incremental builds are
an integral part of those configurations. However, using the
mechanisms described above, developers can perform optional LTO builds
if needed to track down build or runtime issues in that configuration.

  • .gitignore: Include LocalOverrides.xcconfig.
  • Makefile.shared: Add support for WK_LTO_MODE on the command line.

Source/bmalloc:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

No new tests -- no new WebKit functionality.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKit:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Source/WTF:

Update Base.xcconfig and DebugRelease.xcconfig to optionally enable
LTO.

  • Configurations/Base.xcconfig:
  • Configurations/DebugRelease.xcconfig:

Tools:

Add tools/scripts support for controlling LTO builds.

  • Scripts/build-webkit: Add --lto-mode={none,thin,full}.
  • Scripts/set-webkit-configuration: Add support for saving LTO

configuration to WebKitBuild/LTO.

  • Scripts/webkitdirs.pm: Add support for reading configuration from

WebKitBuild/LTO and providing it to xcodebuild.
(determineLTOMode):
(ltoMode):
(XcodeOptions):

10:10 AM Changeset in webkit [235380] by dbates@webkit.org
  • 7 edits in trunk/Source/WebCore

[iOS] Make color of spelling dots match UIKit
https://bugs.webkit.org/show_bug.cgi?id=188861

Reviewed by Simon Fraser.

  • rendering/RenderThemeCocoa.h:
  • rendering/RenderThemeCocoa.mm:

(WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Modified to call colorForMarkerLineStyle()
for the color to use for the line style.
(WebCore::colorForStyle): Deleted.

  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::colorForMarkerLineStyle): Added.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::colorForMarkerLineStyle): Added.

10:09 AM Changeset in webkit [235379] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

Remove extern variable and simplify state initialization in TextCheckerMac.mm
https://bugs.webkit.org/show_bug.cgi?id=188820

Reviewed by Simon Fraser.

Use the same approach to initializing the TextCheckerState in TextCheckerMac.mm as we did in
TextCheckerIOS.mm. Make use of a static, non-member, file-local function and NeverDestroyed
to initialize a TextCheckerState object once and provide access to it from other implementation
functions.

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::mutableState):
(WebKit::TextChecker::state):
(WebKit::TextChecker::setTestingMode):
(WebKit::TextChecker::setContinuousSpellCheckingEnabled):
(WebKit::TextChecker::setGrammarCheckingEnabled):
(WebKit::TextChecker::setAutomaticSpellingCorrectionEnabled):
(WebKit::TextChecker::setAutomaticQuoteSubstitutionEnabled):
(WebKit::TextChecker::setAutomaticDashSubstitutionEnabled):
(WebKit::TextChecker::setAutomaticLinkDetectionEnabled):
(WebKit::TextChecker::setAutomaticTextReplacementEnabled):
(WebKit::TextChecker::didChangeAutomaticTextReplacementEnabled):
(WebKit::TextChecker::didChangeAutomaticSpellingCorrectionEnabled):
(WebKit::TextChecker::didChangeAutomaticQuoteSubstitutionEnabled):
(WebKit::TextChecker::didChangeAutomaticDashSubstitutionEnabled):
(WebKit::TextChecker::continuousSpellCheckingEnabledStateChanged):
(WebKit::TextChecker::grammarCheckingEnabledStateChanged):
(WebKit::initializeState): Deleted.

10:06 AM Changeset in webkit [235378] by dbates@webkit.org
  • 14 edits
    6 deletes in trunk/Source/WebCore

Spelling dots do not scale with page on iOS; share spelling dot painting code between Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=188828
<rdar://problem/15966403>

Reviewed by Simon Fraser.

The look of the spelling dots on Mac and iOS are identical up to color. Towards making the
spelling dots in WebKit on iOS more closely match the look of the spelling dots in UIKit-
apps, standardize on using the same painting code for both Mac and iOS.

Currently iOS uses bitmaps to render the spelling dots and does not account for user/CSS
zooming. As a result, the spelling dots on iOS render with artifacts (e.g. truncated dots).
A side benefit of having iOS share the same painting code as Mac is that iOS will now paint
the dots programmatically and we avoid both the need to use bitmaps and fix the bugs in
the painting of the bitmap dots with respect to zooming.

  • Resources/DictationPhraseWithAlternativesDot.png: Removed.
  • Resources/DictationPhraseWithAlternativesDot@2x.png: Removed.
  • Resources/SpellingDot.png: Removed.
  • Resources/SpellingDot@2x.png: Removed.
  • Resources/SpellingDot@3x.png: Removed.
  • WebCore.xcodeproj/project.pbxproj:
  • page/Page.cpp:

(WebCore::Page::setDeviceScaleFactor):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.

  • platform/graphics/cocoa/GraphicsContextCocoa.mm:

(WebCore::GraphicsContext::drawLineForDocumentMarker):
(WebCore::findImage): Deleted.
(WebCore::createDotPattern): Deleted.
(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.

  • platform/graphics/win/GraphicsContextCGWin.cpp:

(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.

  • platform/graphics/win/GraphicsContextDirect2D.cpp:

(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.

  • platform/ios/wak/WKGraphics.mm:

(WKRectFill): Incorporated the logic from _FillRectUsingOperation().
(_FillRectUsingOperation): Deleted; moved the logic into WKRectFill() since WKRectFill()
is now the only caller of this function.
(WKRectFillUsingOperation): Deleted.
(imageResourcePath): Deleted.
(WKGraphicsCreateImageFromBundleWithName): Deleted.
(WKDrawPatternBitmap): Deleted.
(WKReleasePatternBitmap): Deleted.
(WKSetPattern): Deleted.

  • platform/ios/wak/WKGraphicsInternal.h: Removed.
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::paintPlatformDocumentMarker):

  • rendering/RenderThemeCocoa.h: Add headers RenderText.h and GraphicsContextCG.h. Fix some style nits while I am here;

substitute #import for #include and remove some unnecessary headers TranslateTransformOperation.h, RenderStyle.h, and
RenderElement.h.

  • rendering/RenderThemeCocoa.mm:

(WebCore::colorForStyle):
(WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Moved from RenderThemeMac. I renamed
the local variable ctx to context and fixed a type in a comment while moving this code.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::colorForStyle): Deleted; moved to class RenderThemeCocoa.
(WebCore::RenderThemeMac::drawLineForDocumentMarker): Deleted; moved to class RenderThemeCocoa.

9:59 AM Changeset in webkit [235377] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: virtualized TreeOutline is empty when filtering
https://bugs.webkit.org/show_bug.cgi?id=188959

Reviewed by Brian Burg.

  • UserInterface/Views/TreeElement.js:

(WI.TreeElement.prototype.set hidden):
Only set focusedTreeElement if the WI.TreeElement is selected and not hidden. There is
no reason to focus a hidden or unselected WI.TreeElement.

9:59 AM Changeset in webkit [235376] by dbates@webkit.org
  • 4 edits in trunk/Tools

lldb-webkit: Pretty-print OptionSet
https://bugs.webkit.org/show_bug.cgi?id=188936

Reviewed by Simon Fraser.

Add LLDB formatters to pretty-print an OptionSet.

  • lldb/lldbWebKitTester/main.cpp:

(testSummaryProviders):

  • lldb/lldb_webkit.py:

(lldb_init_module):
(
lldb_init_module.lldb_webkit):
(WTFOptionSet_SummaryProvider):
(WTFOptionSetProvider):
(WTFOptionSetProvider.init):
(WTFOptionSetProvider.has_children):
(WTFOptionSetProvider.num_children):
(WTFOptionSetProvider.get_child_index):
(WTFOptionSetProvider.get_child_at_index):
(WTFOptionSetProvider.update):

  • lldb/lldb_webkit_unittest.py:

(TestSummaryProviders.serial_test_WTFHashSet_tablesize_and_size):
(TestSummaryProviders):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_empty):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple):
(TestSummaryProviders.serial_test_WTFOptionSetProvider_empty):
(TestSummaryProviders.serial_test_WTFOptionSetProvider_simple):

9:45 AM Changeset in webkit [235375] by Wenson Hsieh
  • 4 edits in trunk

[Attachment Support] [WK2] Images copied from Mail message view paste with the wrong file name in compose
https://bugs.webkit.org/show_bug.cgi?id=188957
<rdar://problem/43737715>

Reviewed by Darin Adler.

Source/WebCore:

Allow the alt attribute of a pasted image element to determine the name of an image attachment, rather than
using the source URL's last path component first. This is because in some clients, such as Mail, the source of
the image element is some nondescript UUID, and the alt text contains the real name of the image.

Test: WKAttachmentTests.PasteWebArchiveContainingImages

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::replaceRichContentWithAttachments):

Tools:

Add a new API test to verify that pasting a web archive containing several image elements with alt attributes
generates _WKAttachments whose names reflect those alt attributes.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(testGIFFileURL):
(testGIFData):
(TestWebKitAPI::TEST):

9:43 AM Changeset in webkit [235374] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Don't launch network process in WebCookieManagerProxy::setHTTPCookieAcceptPolicy
https://bugs.webkit.org/show_bug.cgi?id=188906
<rdar://problem/42875795>

Reviewed by Ryosuke Niwa.

Add callback in early return.

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):

9:39 AM Changeset in webkit [235373] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[GTK][JSC] Add warn_unused_result attribute to some APIs
https://bugs.webkit.org/show_bug.cgi?id=188983

Patch by Patrick Griffis <Patrick Griffis> on 2018-08-27
Reviewed by Michael Catanzaro.

  • API/glib/JSCValue.h:
9:34 AM Changeset in webkit [235372] by achristensen@apple.com
  • 2 edits
    5 copies
    4 deletes in trunk/Tools

Unreviewed, rolling out r235367.

Broke iOS build.

Reverted changeset:

"Translate 4 tests using WKPageLoaderClient to ObjC"
https://bugs.webkit.org/show_bug.cgi?id=188827
https://trac.webkit.org/changeset/235367

9:27 AM Changeset in webkit [235371] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix GTK build.

  • TestWebKitAPI/CMakeLists.txt:
9:25 AM Changeset in webkit [235370] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix iOS build.

  • TestWebKitAPI/PlatformWebView.h:
9:18 AM Changeset in webkit [235369] by bshafiei@apple.com
  • 7 edits in tags/Safari-607.1.3.2/Source

Versioning.

9:16 AM Changeset in webkit [235368] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Transition WKBrowsingContextController from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188942

Reviewed by Andy Estes.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(didStartProvisionalNavigation):
(didReceiveServerRedirectForProvisionalNavigation):
(didFailProvisionalNavigation):
(didCommitNavigation):
(didFinishNavigation):
(didFailNavigation):
(canAuthenticateAgainstProtectionSpace):
(didReceiveAuthenticationChallenge):
(setUpPageLoaderClient):
(-[WKBrowsingContextController setLoadDelegate:]):
(didStartProvisionalLoadForFrame): Deleted.
(didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
(didFailProvisionalLoadWithErrorForFrame): Deleted.
(didCommitLoadForFrame): Deleted.
(didFinishLoadForFrame): Deleted.
(didFailLoadWithErrorForFrame): Deleted.
(canAuthenticateAgainstProtectionSpaceInFrame): Deleted.
(didReceiveAuthenticationChallengeInFrame): Deleted.
(didStartProgress): Deleted.
(didChangeProgress): Deleted.
(didFinishProgress): Deleted.
(didChangeBackForwardList): Deleted.

  • UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
9:08 AM Changeset in webkit [235367] by achristensen@apple.com
  • 2 edits
    4 moves
    1 delete in trunk/Tools

Translate 4 tests using WKPageLoaderClient to ObjC
https://bugs.webkit.org/show_bug.cgi?id=188827

Reviewed by Tim Horton.

They use processDidBecomeUnresponsive, didChangeBackForwardList, or willGoToBackForwardListItem.
Rather than introduce these to WKPageNavigationClient, I just translated the tests to use WKNavigationDelegate, which already have equivalent callbacks.
willGoToBackForwardListItem had userData from the InjectedBundle, but nobody was using it so I did not add that to the ObjC SPI, so I don't test that unused
bundle functionality any more.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp: Removed.
  • TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem_Bundle.cpp: Removed.
  • TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimer.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp.

(-[ResponsivenessTimerDelegate webView:didFinishNavigation:]):
(-[ResponsivenessTimerDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimerDoesntFireEarly.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp.

(-[ResponsivenessDelegate webView:didFinishNavigation:]):
(-[ResponsivenessDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didReceiveMessageFromInjectedBundle): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setInjectedBundleClient): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp.

(-[SessionStateDelegate webView:didFinishNavigation:]):
(-[SessionStateDelegate _webView:backForwardListItemAdded:removed:]):
(TestWebKitAPI::createSessionStateData):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didChangeBackForwardListForPage): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/ShouldGoToBackForwardListItem.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp.

(-[BackForwardClient webView:didFinishNavigation:]):
(-[BackForwardClient _webView:willGoToBackForwardListItem:inPageCache:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

8:57 AM Changeset in webkit [235366] by bshafiei@apple.com
  • 1 copy in tags/Safari-607.1.3.2

Tag Safari-607.1.3.2.

8:51 AM Changeset in webkit [235365] by Darin Adler
  • 39 edits in trunk/Source/WebKit

[Cocoa] Adapt more WebKit code to be ARC-compatible
https://bugs.webkit.org/show_bug.cgi?id=188955

Reviewed by Anders Carlsson.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.h: Use strong for an in/out argument.
  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
Use strong for a in/out argument.
(WebKit::NetworkDataTaskCocoa::applyCookieBlockingPolicy): Call a NSURLSessionTask
method using an explicit category declaration rather than by using performSelector:
since ARC is unable to correctly compile a call when it doesn't know argument and
result types.

  • PluginProcess/mac/PluginProcessMac.mm:

(WebKit::initializeCocoaOverrides): Add some bridge casts.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm: Use HashSet<CFTypeRef> instead of

HashSet<Class> since Class ia an ARC-managed type and WTF hash tables can't
currently handle those as key types.
(-[WKRemoteObjectDecoder decodeValueOfObjCType:at:]): Changed types and added casts
to adapt to the above.
(decodeObjectFromObjectStream): Ditto.
(checkIfClassIsAllowed): Ditto.
(decodeInvocationArguments): Ditto.
(decodeObject): Ditto.
(-[WKRemoteObjectDecoder decodeObjectOfClasses:forKey:]): Ditto.
(-[WKRemoteObjectDecoder allowedClasses]): Ditto.

  • Shared/API/Cocoa/_WKRemoteObjectInterface.mm:

(propertyListClasses): Ditto.
(initializeMethod): Ditto.
(-[_WKRemoteObjectInterface debugDescription]): Ditto.
(classesForSelectorArgument): Ditto.
(-[_WKRemoteObjectInterface classesForSelector:argumentIndex:ofReply:]): Ditto.
(-[_WKRemoteObjectInterface setClasses:forSelector:argumentIndex:ofReply:]): Ditto.
(-[_WKRemoteObjectInterface _allowedArgumentClassesForSelector:]): Ditto.
(-[_WKRemoteObjectInterface _allowedArgumentClassesForReplyBlockOfSelector:]): Ditto.

  • Shared/API/Cocoa/_WKRemoteObjectInterfaceInternal.h: Ditto.
  • Shared/API/c/cf/WKStringCF.mm:

(WKStringCreateWithCFString): Use CFRetain instead of -[NSObject retain]. Also use
a bridge cast.

  • Shared/API/c/cf/WKURLCF.mm:

(WKURLCreateWithCFURL): Ditto.

  • Shared/Cocoa/APIObject.mm:

(API::Object::ref): Added a bridge cast.
(API::Object::deref): Ditto.
(API::allocateWKObject): Use class_createInstance instead of NSAllocateObject.
(API::Object::wrap): Use a
bridge cast.
(API::Object::unwrap): Ditto.

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h: Use CFTypeRef for layers

or views in the RelatedLayerMap since we don't want the items retained, and can't
use unsafe_uretained because the header is used in non-Objective-C contexts.

  • Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:

(WebKit::RemoteLayerTreePropertyApplier::applyProperties): Added bridge casts,
needed because of the above change.

  • UIProcess/API/Cocoa/WKBrowsingContextController.mm:

(WebKit::browsingContextControllerMap): Use unsafe_unretained.

  • UIProcess/API/Cocoa/WKConnection.mm:

(didReceiveMessage): Use a bridge cast.

  • UIProcess/API/Cocoa/WKContentRuleListStore.mm:

(-[WKContentRuleListStore compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
Use a retain here so we don't have to have a "releasesArgument:" boolean. The cost of a single
retain/release pair should be infinitesmal compared to the entire process of compiling.
(-[WKContentRuleListStore _compileContentRuleListForIdentifier:encodedContentRuleList:completionHandler:]):
Moved the code for the "releases argument" version here since the private method is now the
actual method that does the work. The public method now simply calls this private one after
doing a retain. The optimization of releasing the argument at the correct moment should be intact.

  • UIProcess/API/Cocoa/WKHTTPCookieStore.mm: Use CFTypeRef for the key to the _observers

HashMap since the WTF collections can't yet handle ARC types for keys.
(-[WKHTTPCookieStore addObserver:]): Added bridge cast for compatibility with the above.
(-[WKHTTPCookieStore removeObserver:]): Ditto.

  • UIProcess/API/Cocoa/WKProcessGroup.mm:

(setUpConnectionClient): Added a bridge cast.
(setUpHistoryClient): Ditto.

  • UIProcess/API/Cocoa/WKViewPrivate.h: Added a declaration of the

-[WKView _shouldLoadIconWithParameters:completionHandler:] method. This peculiar idiom
should be removed, but I didn't bother doing that since the entire WKView class is already
deprecated and so will eventually be removed.

  • UIProcess/API/Cocoa/WKWebView.mm: Use unsafe_unretained for the keys in the page to

view map.
(accessibilityEventsEnabledChangedCallback): Use a bridge cast.
(-[WKWebView _certificateChain]): Ditto.
(-[WKWebView certificateChain]): Ditto.

  • UIProcess/API/mac/WKView.mm:

(-[WKView maybeInstallIconLoadingClient]): Call the method
_shouldLoadIconWithParameters:completionHandler: in a normal way rather than using
performSelector:withObject:withObject: since ARC is unable to correctly compile a call
when it doesn't know argument and result types.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::webCryptoMasterKey): Use the overload
of API::Data::createWithoutCopying that knows how to work with an NSData rather than
re-implementing it here.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto. Also removed unneeded
use of RetainPtr.

  • UIProcess/Cocoa/WebViewImpl.h: Use NSObject * as the result type of

immediateActionAnimationControllerForHitTestResult. Our techniques for defining such
functions in headers while remaining compatible with non-Objective-C will still work
fine given how we use this, and converting to and from void* rather than NSObject *
would be difficult to do correctly under ARC.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::acceptsFirstMouse): Use CFRetain/CFAutorelease instead of
retain/autorelease.
(WebKit::WebViewImpl::shouldDelayWindowOrderingForEvent): Ditto.
(WebKit::WebViewImpl::immediateActionAnimationControllerForHitTestResult):
Updated return type to NSObject *.
(WebKit::WebViewImpl::performKeyEquivalent): Use CFRetain/CFAutorelease.

  • UIProcess/PageClient.h: Use NSObject * as the result type, as above.
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:

(WebKit::RemoteLayerTreeHost::updateLayerTree): Use bridge casts to be compatible
with the changes to the RelatedLayerMap types.
(WebKit::recursivelyMapIOSurfaceBackingStore): Use
bridge cast.

  • Source/WebKit/UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::immediateActionAnimationControllerForHitTestResult):
Use NSObject * as the result type, as above.

  • Source/WebKit/UIProcess/WebPageProxy.h: Ditto.
  • UIProcess/mac/PageClientImplMac.h: Use NSObject * as the result type, as above.
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::immediateActionAnimationControllerForHitTestResult):
Ditto.
(WebKit::PageClientImpl::refView): Use bridge cast.
(WebKit::PageClientImpl::derefView): Ditto.

  • UIProcess/mac/ServicesController.mm:

(WebKit::ServicesController::refreshExistingServices): Removed unnecessary use
of NeverDestroyed for Objective-C object pointers. Simpler and more efficient
both with and without ARC.

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _updateImmediateActionItem]): Removed unneeded
cast now that immediateActionAnimationControllerForHitTestResult has a more
accurate return type.

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView dealloc]): Use a more direct approach to making sure we do the
non-thread-safe actions on the main thread with a call to callOnMainThread.
The old solution, WebCoreObjCScheduleDeallocateOnMainThread, may not be possible
in an ARC-compatible way, but this one should work fine.
(linkDestinationName): Changed to return an NSString * to make sure we get the
object lifetimes correct under ARC.
(-[WKPrintingView _drawPDFDocument:page:atPoint:]): Added bridge casts.

  • WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: Use unsafe_unretained

for the value types in DOM caches.

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

(WebKit::toWKDOMNode): Updated for the above.
(WebKit::toWKDOMRange): Ditto.

  • WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:

(WebKit::NetscapePlugin::platformPreInitialize): Rewrote the class_replaceMethod
call to sidestep the rules about not using @selector(release) under ARC.
(WebKit::NetscapePlugin::updatePluginLayer): Use bridge casts.

  • WebProcess/Plugins/PDF/PDFPlugin.mm: Added an include of

WebAccessibilityObjectWrapperMac.h, without which this code doesn't compile
under ARC.

  • WebProcess/WebCoreSupport/mac/WebEditorClientMac.mm:

(WebKit::changeWordCase): Use a function rather than a selector, since ARC is unable
to correctly compile a method call when it doesn't know argument and result types.
(WebKit::WebEditorClient::uppercaseWord): Updated to use a function rather than a selector.
(WebKit::WebEditorClient::lowercaseWord): Ditto.
(WebKit::WebEditorClient::capitalizeWord): Ditto.

  • WebProcess/cocoa/WebProcessCocoa.mm: Added an include of

WebAccessibilityObjectWrapperIOS/Mac.h, without which this code doesn't compile
under ARC.

8:44 AM Changeset in webkit [235364] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit

Fix authentication for clients of WKPageLoaderClient after r234941
https://bugs.webkit.org/show_bug.cgi?id=188939

Reviewed by Youenn Fablet.

I simplified the authentication code path elegantly for clients of WKPageNavigationClient/WKNavigationDelegate,
but clients of WKPageLoaderClient that do not implement didReceiveAuthenticationChallengeInFrame would hang.
This fixes that. I've also made the performDefaultHandling (when delegates are not implemented) and rejectProtectionSpaceAndContinue
(when canAuthenticationAgainstProtectionSpace returns false) behave correctly.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::didReachLayoutMilestone):
(API::LoaderClient::canAuthenticateAgainstProtectionSpaceInFrame): Deleted.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):
(WKPageSetPageNavigationClient):

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::NavigationClient::didReceiveAuthenticationChallenge):

8:42 AM Changeset in webkit [235363] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix IOSMAC build
https://bugs.webkit.org/show_bug.cgi?id=188934
<rdar://problem/43694979>

Reviewed by Darin Adler.

  • platform/network/cf/FormDataStreamCFNet.cpp:
7:31 AM Changeset in webkit [235362] by Michael Catanzaro
  • 3 edits in trunk

Unreviewed, bump WPE/GTK version numbers

We have a pkg-config dependency on 2.21.92 but trunk is stuck on 2.21.5. So bump the version
number to 2.23.0. It seems like a good version number to use until the next real release
(2.23.1).

  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/OptionsWPE.cmake:
7:02 AM Changeset in webkit [235361] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Layout Test fast/events/dblclick-event-getModifierState.html is failing
https://bugs.webkit.org/show_bug.cgi?id=188948

Unreviewed test gardening.

  • platform/win/TestExpectations:
6:40 AM Changeset in webkit [235360] by commit-queue@webkit.org
  • 8 edits in trunk

XMLHTTPRequest.send for Document should have same Content-Type processing rules as String
https://bugs.webkit.org/show_bug.cgi?id=188953

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-27
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/xhr/setrequestheader-content-type-expected.txt:

Source/WebCore:

Processing rules for Content-Type have been implemented for send with String as parameter, but
not for Document, but both should be treated the same according to the spec [1]. This patch
implements this.

Behavior matches Firefox.

[1] https://xhr.spec.whatwg.org/#the-send()-method

Test: web-platform-tests/XMLHttpRequest/setrequestheader-content-type.htm

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::send):

LayoutTests:

  • platform/gtk/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt:
  • platform/wpe/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt:
4:49 AM Changeset in webkit [235359] by keith_miller@apple.com
  • 2 edits in trunk/Tools

test262-runner -s --test-only should replace test results
https://bugs.webkit.org/show_bug.cgi?id=188450

Reviewed by Michael Saboff.

  • Scripts/test262/Runner.pm:

(main):
(SetFailureForTest):
(UpdateResults):

4:13 AM Changeset in webkit [235358] by ajuma@chromium.org
  • 17 edits in trunk

[IntersectionObserver] Implement intersection logic for the explicit root case
https://bugs.webkit.org/show_bug.cgi?id=188809

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests now that some intersection logic has been implemented.

  • web-platform-tests/intersection-observer/bounding-box-expected.txt:
  • web-platform-tests/intersection-observer/containing-block-expected.txt:
  • web-platform-tests/intersection-observer/edge-inclusive-intersection-expected.txt:
  • web-platform-tests/intersection-observer/isIntersecting-change-events-expected.txt:
  • web-platform-tests/intersection-observer/remove-element-expected.txt:
  • web-platform-tests/intersection-observer/same-document-root-expected.txt:
  • web-platform-tests/intersection-observer/unclipped-root-expected.txt:

Source/WebCore:

Add logic to Document::updateIntersectionObservations to compute the intersection
between the target and root elements, for the case where an IntersectionObserver
has a root element.

There are no changes to the scheduling of intersection observations in this patch,
so observations are still only computed once for each observer.

  • dom/Document.cpp:

(WebCore::computeIntersectionRects):
(WebCore::Document::updateIntersectionObservations):

  • page/FrameView.cpp:

(WebCore::FrameView::absoluteToClientRect const):

  • page/FrameView.h:
  • page/IntersectionObserver.cpp:

(WebCore::IntersectionObserver::IntersectionObserver):
(WebCore::IntersectionObserver::createTimestamp const):

  • page/IntersectionObserver.h:
  • platform/graphics/FloatRect.h:

(WebCore::FloatRect::area const):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::isContainingBlockAncestorFor const):

  • rendering/RenderBlock.h:
1:52 AM Changeset in webkit [235357] by yusukesuzuki@slowstart.org
  • 3 edits in trunk/Source/WebCore

Shrink size of HTMLCollection
https://bugs.webkit.org/show_bug.cgi?id=188945

Reviewed by Darin Adler.

Shrink the size of HTMLCollection by reordering members.

No behavior change.

  • html/HTMLCollection.cpp:

(WebCore::HTMLCollection::HTMLCollection):

  • html/HTMLCollection.h:
1:31 AM Changeset in webkit [235356] by yusukesuzuki@slowstart.org
  • 7 edits
    1 add in trunk

[JSC] Array.prototype.reverse modifies JSImmutableButterfly
https://bugs.webkit.org/show_bug.cgi?id=188794

Reviewed by Saam Barati.

JSTests:

  • stress/reverse-with-immutable-butterfly.js: Added.

(shouldBe):
(reverseInt):
(reverseDouble):
(reverseContiguous):

Source/JavaScriptCore:

While Array.prototype.reverse modifies the butterfly of the given Array,
it does not account JSImmutableButterfly case. So it accidentally modifies
the content of JSImmutableButterfly.
This patch converts CoW arrays to writable arrays before reversing.

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncReverse):

  • runtime/JSObject.h:

(JSC::JSObject::ensureWritable):

1:30 AM Changeset in webkit [235355] by yusukesuzuki@slowstart.org
  • 7 edits in trunk/Source

Shrink size of XMLHttpRequest
https://bugs.webkit.org/show_bug.cgi?id=188944

Reviewed by Saam Barati.

Source/WebCore:

Shrink the size of XMLHttpRequest by packing bits and reordering members.
It reduces the size from 1248 to 1176.

No behavior change.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::XMLHttpRequest):
(WebCore::XMLHttpRequest::responseText):
(WebCore::XMLHttpRequest::createResponseBlob):
(WebCore::XMLHttpRequest::createResponseArrayBuffer):
(WebCore::XMLHttpRequest::setResponseType):
(WebCore::XMLHttpRequest::changeState):
(WebCore::XMLHttpRequest::callReadyStateChangeListener):
(WebCore::XMLHttpRequest::setWithCredentials):
(WebCore::XMLHttpRequest::open):
(WebCore::XMLHttpRequest::prepareToSend):
(WebCore::XMLHttpRequest::createRequest):
(WebCore::XMLHttpRequest::abort):
(WebCore::XMLHttpRequest::overrideMimeType):
(WebCore::XMLHttpRequest::setRequestHeader):
(WebCore::XMLHttpRequest::getAllResponseHeaders const):
(WebCore::XMLHttpRequest::getResponseHeader const):
(WebCore::XMLHttpRequest::status const):
(WebCore::XMLHttpRequest::statusText const):
(WebCore::XMLHttpRequest::didFinishLoading):
(WebCore::XMLHttpRequest::createDecoder const):
(WebCore::XMLHttpRequest::didReceiveData):
(WebCore::XMLHttpRequest::didReachTimeout):
(WebCore::XMLHttpRequest::readyState const): Deleted.

  • xml/XMLHttpRequest.h:

(WebCore::XMLHttpRequest::responseType const):
(WebCore::XMLHttpRequest::readyState const):

  • xml/XMLHttpRequestProgressEventThrottle.cpp:

(WebCore::XMLHttpRequestProgressEventThrottle::XMLHttpRequestProgressEventThrottle):

  • xml/XMLHttpRequestProgressEventThrottle.h:

Source/WTF:

StringBuilder is included in XMLHttpRequest. We reduce the size of StringBuilder too
by reordering members.

  • wtf/text/StringBuilder.h:

(WTF::StringBuilder::StringBuilder):

12:48 AM Changeset in webkit [235354] by youenn@apple.com
  • 15 edits
    710 copies
    82 adds
    9 deletes in trunk/LayoutTests

Update WPT XHR tests to 87329a1
https://bugs.webkit.org/show_bug.cgi?id=188816

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Moved tests from XMLHttpRequest to xhr.
Updated xhr tests according upstream WPT.

  • resources/import-expectations.json:
  • resources/resource-files.json:
  • web-platform-tests/XMLHttpRequest: Removed.
  • web-platform-tests/xhr: Added.

LayoutTests:

Update expectations according renamed XMLHttpRequest to xhr folder.

  • TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async-expected.txt.
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-expected.txt.
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-network-error-sync-events.sub-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt.
  • platform/gtk/imported/w3c/web-platform-tests/xhr/send-redirect-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-expected.txt.
  • platform/gtk/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Renamed from LayoutTests/platform/gtk/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-content-type-expected.txt.
  • platform/ios-wk1/imported/w3c/web-platform-tests/xhr/send-network-error-sync-events.sub-expected.txt: Renamed from LayoutTests/platform/ios-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-sync-events.sub-expected.txt.
  • platform/ios/imported/w3c/web-platform-tests/xhr/getresponseheader-case-insensitive-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/XMLHttpRequest/getresponseheader-case-insensitive-expected.txt.
  • platform/ios/imported/w3c/web-platform-tests/xhr/send-blob-with-no-mime-type-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/XMLHttpRequest/send-blob-with-no-mime-type-expected.txt.
  • platform/ios/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-empty-expected.txt.
  • platform/ios/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-none-expected.txt.
  • platform/ios/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Renamed from LayoutTests/platform/ios/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-content-type-expected.txt.
  • platform/mac-sierra/imported/w3c/web-platform-tests/xhr/send-blob-with-no-mime-type-expected.txt: Renamed from LayoutTests/platform/mac-sierra/imported/w3c/web-platform-tests/XMLHttpRequest/send-blob-with-no-mime-type-expected.txt.
  • platform/mac-wk1/TestExpectations:
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/access-control-and-redirects-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-and-redirects-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/late-upload-events-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/late-upload-events-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/send-authentication-basic-cors-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/send-network-error-async-events.sub-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-async-events.sub-expected.txt.
  • platform/mac-wk1/imported/w3c/web-platform-tests/xhr/xmlhttprequest-sync-default-feature-policy.sub-expected.txt: Renamed from LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-sync-default-feature-policy.sub-expected.txt.
  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/mac/imported/w3c/web-platform-tests/xhr/getresponseheader-case-insensitive-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/XMLHttpRequest/getresponseheader-case-insensitive-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-blob-with-no-mime-type-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/XMLHttpRequest/send-blob-with-no-mime-type-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-empty-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-empty-expected.txt.
  • platform/mac/imported/w3c/web-platform-tests/xhr/send-entity-body-none-expected.txt: Renamed from LayoutTests/platform/mac/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-none-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/xhr/access-control-and-redirects-expected.txt: Renamed from LayoutTests/platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-and-redirects-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/xhr/late-upload-events-expected.txt: Renamed from LayoutTests/platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/late-upload-events-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/xhr/send-authentication-basic-cors-expected.txt: Renamed from LayoutTests/platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/send-authentication-basic-cors-expected.txt.
  • platform/win/imported/w3c/web-platform-tests/xhr/send-network-error-async-events.sub-expected.txt: Renamed from LayoutTests/platform/win/imported/w3c/web-platform-tests/XMLHttpRequest/send-network-error-async-events.sub-expected.txt.
  • platform/wpe/TestExpectations:
  • platform/wpe/imported/w3c/web-platform-tests/xhr/access-control-basic-cors-safelisted-request-headers-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-basic-cors-safelisted-request-headers-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/access-control-basic-get-fail-non-simple-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-basic-get-fail-non-simple-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/access-control-basic-post-with-non-cors-safelisted-content-type-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/access-control-basic-post-with-non-cors-safelisted-content-type-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-async-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-async-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/send-entity-body-get-head-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/send-entity-body-get-head-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/send-redirect-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/send-redirect-infinite-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-infinite-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/send-redirect-infinite-sync-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/send-redirect-infinite-sync-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/setrequestheader-content-type-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/setrequestheader-content-type-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/xmlhttprequest-network-error-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-network-error-expected.txt.
  • platform/wpe/imported/w3c/web-platform-tests/xhr/xmlhttprequest-network-error-sync-expected.txt: Renamed from LayoutTests/platform/wpe/imported/w3c/web-platform-tests/XMLHttpRequest/xmlhttprequest-network-error-sync-expected.txt.

Aug 26, 2018:

11:57 PM Changeset in webkit [235353] by zandobersek@gmail.com
  • 2 edits
    1221 adds in trunk/LayoutTests

Unreviewed WPE gardening. Enabling more tests under the fast/ directory.

  • platform/wpe/TestExpectations:
  • platform/wpe/fast/backgrounds: Added 28 baselines.
  • platform/wpe/fast/block: Added 267 baselines.
  • platform/wpe/fast/body-propagation: Added 65 baselines.
  • platform/wpe/fast/borders: Added 69 baselines.
  • platform/wpe/fast/css: Added 193 baselines.
  • platform/wpe/fast/css3-text: Added 2 baselines.
  • platform/wpe/fast/frames: Added 27 baselines.
  • platform/wpe/fast/hidpi: Added 20 baselines.
  • platform/wpe/fast/html: Added 64 baselines.
  • platform/wpe/fast/images: Added 14 baselines.
  • platform/wpe/fast/layers: Added 12 baselines.
  • platform/wpe/fast/multicol: Added 98 baselines.
  • platform/wpe/fast/overflow: Added 43 baselines.
  • platform/wpe/fast/reflections: Added 9 baselines.
  • platform/wpe/fast/selectors: Added 101 baselines.
  • platform/wpe/fast/sub-pixel: Added 6 baselines.
  • platform/wpe/fast/table: Added 162 baselines.
  • platform/wpe/fast/visual-viewport: Added 1 baseline.
10:01 PM Changeset in webkit [235352] by Alan Bujtas
  • 6 edits
    2 moves in trunk/Source/WebCore

[LFC][Floating] FloatBox -> FloatAvoider
https://bugs.webkit.org/show_bug.cgi?id=188941

Reviewed by Antti Koivisto.

This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats.

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/displaytree/DisplayBox.h:
  • layout/floats/FloatAvoider.cpp: Renamed from Source/WebCore/layout/floats/FloatBox.cpp.

(WebCore::Layout::FloatAvoider::FloatAvoider):
(WebCore::Layout::FloatAvoider::initializePosition):
(WebCore::Layout::FloatAvoider::isLeftAligned const):
(WebCore::Layout::FloatAvoider::setLeft):
(WebCore::Layout::FloatAvoider::setTopLeft):
(WebCore::Layout::FloatAvoider::resetVertically):
(WebCore::Layout::FloatAvoider::resetHorizontally):
(WebCore::Layout::FloatAvoider::topLeftInContainingBlock const):

  • layout/floats/FloatAvoider.h: Renamed from Source/WebCore/layout/floats/FloatBox.h.

(WebCore::Layout::FloatAvoider::top const):
(WebCore::Layout::FloatAvoider::left const):
(WebCore::Layout::FloatAvoider::marginTop const):
(WebCore::Layout::FloatAvoider::marginLeft const):
(WebCore::Layout::FloatAvoider::marginBottom const):
(WebCore::Layout::FloatAvoider::marginRight const):
(WebCore::Layout::FloatAvoider::rectWithMargin const):
(WebCore::Layout::FloatAvoider::setTop):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::floatingPosition const):

  • layout/floats/FloatingContext.h:
9:55 PM Changeset in webkit [235351] by chris.reid@sony.com
  • 2 edits in trunk/Source/WebCore

[Curl] Implement deleteCookie()
https://bugs.webkit.org/show_bug.cgi?id=188908

Reviewed by Fujii Hironori.

Support deleting cookies from the web inspector

Tested from the web inspector.

  • platform/network/curl/CookieJarCurlDatabase.cpp:

(WebCore::CookieJarCurlDatabase::deleteCookie const):

9:03 PM Changeset in webkit [235350] by Alan Bujtas
  • 5 edits in trunk/Source/WebCore

[LFC][Floating] Simplify FloatingState::FloatItem class
https://bugs.webkit.org/show_bug.cgi?id=188912

Reviewed by Antti Koivisto.

Let's remove some redundant code now that FloatingState::FloatItem is not used for incoming floats anymore.

  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):

  • layout/floats/FloatBox.cpp:

(WebCore::Layout::FloatBox::resetVertically):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingPair::left const):
(WebCore::Layout::FloatingPair::right const):
(WebCore::Layout::FloatingPair::intersects const):
(WebCore::Layout::previousFloatingIndex):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):

  • layout/floats/FloatingState.cpp:

(WebCore::Layout::FloatingState::FloatItem::FloatItem):
(WebCore::Layout::FloatingState::remove):
(WebCore::Layout::FloatingState::bottom const):

  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::FloatItem::operator== const):
(WebCore::Layout::FloatingState::FloatItem::isLeftPositioned const):
(WebCore::Layout::FloatingState::FloatItem::rectWithMargin const):
(WebCore::Layout::FloatingState::FloatItem::bottom const):
(WebCore::Layout::FloatingState::leftBottom const):
(WebCore::Layout::FloatingState::rightBottom const):
(WebCore::Layout::FloatingState::bottom const):
(WebCore::Layout::FloatingState::FloatItem::inFormattingContext const):
(WebCore::Layout::FloatingState::FloatItem::layoutBox const): Deleted.
(WebCore::Layout::FloatingState::FloatItem::containingBlock const): Deleted.
(WebCore::Layout::FloatingState::FloatItem::displayBox const): Deleted.
(WebCore::Layout::FloatingState::FloatItem::containingBlockDisplayBox const): Deleted.

8:32 PM Changeset in webkit [235349] by aestes@apple.com
  • 15 edits
    2 copies
    1 add in trunk

[Apple Pay] Introduce new values for -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=188949
<rdar://problem/39992228>

Reviewed by Anders Carlsson.

Source/WebCore:

Added "in-store", "checkout", "book", and "subscribe" keywords for -apple-pay-button-type,
and mapped those values to their equivalent PKPaymentButtonTypes.

Tests: http/tests/ssl/applepay/ApplePayButton.html

http/tests/ssl/applepay/ApplePayButtonV4.html

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator ApplePayButtonType const):

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

(WebCore::CSSParserFastPaths::isValidKeywordPropertyAndValue):

  • rendering/RenderThemeCocoa.mm:

(WebCore::toPKPaymentButtonType):

  • rendering/style/RenderStyleConstants.h:

Source/WebCore/PAL:

  • pal/spi/cocoa/PassKitSPI.h:

LayoutTests:

  • http/tests/ssl/applepay/ApplePayButton.html: Added.
  • http/tests/ssl/applepay/ApplePayButtonV4.html: Added.
  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.png:
  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.txt:
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButtonV4-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButtonV4-expected.txt: Added.
  • platform/mac-wk2/TestExpectations:
7:54 PM Changeset in webkit [235348] by Michael Catanzaro
  • 2 edits in trunk

[CMake] Remove stale comment from WebKitFeatures.cmake
https://bugs.webkit.org/show_bug.cgi?id=188918

Reviewed by Fujii Hironori.

This comment at the top of WebKitFeatures.cmake is no longer accurate because feature defaults are no longer defined in FeatureList.pm (thank goodness!)

  • Source/cmake/WebKitFeatures.cmake:
7:48 PM Changeset in webkit [235347] by aestes@apple.com
  • 1 edit
    2 moves
    2 adds in trunk/LayoutTests

Update test expectations for http/tests/ssl/applepay/ApplePayButton.html on macOS High Sierra.

  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.png: Renamed from LayoutTests/platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.png.
  • platform/mac-highsierra/http/tests/ssl/applepay/ApplePayButton-expected.txt: Renamed from LayoutTests/platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.txt.
7:45 PM Changeset in webkit [235346] by commit-queue@webkit.org
  • 4 edits in trunk

Using _WKRemoteObjectInterface with a protocol that inherits from a non-NSObject protocol crashes
https://bugs.webkit.org/show_bug.cgi?id=188958

Patch by Sam Weinig <sam@webkit.org> on 2018-08-26
Reviewed by Anders Carlsson.

Source/WebKit:

  • Shared/API/Cocoa/_WKRemoteObjectInterface.mm:

(initializeMethods):
Fix infinite recursion by using the passed in protocol rather
than always using the one from the initial interface.

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/RemoteObjectRegistry.h:

Update test protocol to have inheritance.

7:44 PM Changeset in webkit [235345] by youenn@apple.com
  • 4 edits in trunk/Source/WebCore

Make IDBCursor::m_request a WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=188938

Reviewed by Alex Christensen.

Make m_request a WeakPtr so that if m_request is destroyed, the related cursor will not use the invalid pointer.

Covered by existing tests.

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::continuePrimaryKey): Other continue and advance methods that are calling uncheckedIterateCursor do check for m_request.
Apply the same check for continuePrimaryKey.
(WebCore::IDBCursor::uncheckedIterateCursor):

  • Modules/indexeddb/IDBCursor.h:

(WebCore::IDBCursor::setRequest):
(WebCore::IDBCursor::clearRequest):
(WebCore::IDBCursor::request):

  • Modules/indexeddb/IDBRequest.h:
7:43 PM Changeset in webkit [235344] by youenn@apple.com
  • 10 edits in trunk/Source/WebCore

IDBCursor does not need to be an ActiveDOMObject
https://bugs.webkit.org/show_bug.cgi?id=188937

Reviewed by Alex Christensen.

Remove ActiveDOMObject from IDBCursor IDL.
Update constructors and call sites accordingly.
This allows removing m_outstandingRequestCount and related code in IDBRequest.

Covered by existing tests.

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::create):
(WebCore::IDBCursor::IDBCursor):
(WebCore::IDBCursor::update):
(WebCore::IDBCursor::uncheckedIterateCursor):
(WebCore::IDBCursor::deleteFunction):
(WebCore::IDBCursor::activeDOMObjectName const): Deleted.
(WebCore::IDBCursor::canSuspendForDocumentSuspension const): Deleted.
(WebCore::IDBCursor::hasPendingActivity const): Deleted.
(WebCore::IDBCursor::decrementOutstandingRequestCount): Deleted.

  • Modules/indexeddb/IDBCursor.h:
  • Modules/indexeddb/IDBCursor.idl:
  • Modules/indexeddb/IDBCursorWithValue.cpp:

(WebCore::IDBCursorWithValue::create):
(WebCore::IDBCursorWithValue::IDBCursorWithValue):

  • Modules/indexeddb/IDBCursorWithValue.h:
  • Modules/indexeddb/IDBCursorWithValue.idl:
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::setSource):
(WebCore::IDBRequest::dispatchEvent):
(WebCore::IDBRequest::willIterateCursor):
(WebCore::IDBRequest::didOpenOrIterateCursor):

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

(WebCore::IDBTransaction::requestOpenCursor):

  • WebCore.xcodeproj/project.pbxproj:
7:37 PM Changeset in webkit [235343] by Wenson Hsieh
  • 38 edits
    1 add in trunk

[Attachment Support] Dropping and pasting images should insert inline image elements with _WKAttachments
https://bugs.webkit.org/show_bug.cgi?id=188933
<rdar://problem/43699724>

Reviewed by Darin Adler.

Source/WebCore:

Support the ability to drop and paste images as image elements, with attachment elements, only if attachment
elements are enabled. See changes below for more detail.

Tests: WKAttachmentTests.CutAndPastePastedImage

WKAttachmentTests.MovePastedImageByDragging
WKAttachmentTests.RemoveNewlinesBeforePastedImage

  • editing/Editor.h:
  • editing/cocoa/EditorCocoa.mm:

(WebCore::Editor::getPasteboardTypesAndDataForAttachment):

Adjust this helper to take an Element& rather than an HTMLAttachmentElement&, and address a FIXME by writing the
document origin identifier to the pasteboard via custom pasteboard data when dragging an attachment. This allows
us to avoid creating extra image and attachment elements when dragging an image backed by an attachment within
the same document.

  • editing/cocoa/WebContentReaderCocoa.mm:

(WebCore::contentTypeIsSuitableForInlineImageRepresentation):

Add a helper to determine whether a content type (UTI or MIME type) should be read as an inline image.

(WebCore::createFragmentForImageAttachment):
(WebCore::replaceRichContentWithAttachments):
(WebCore::WebContentReader::readFilePaths):

Teach codepaths where we currently create attachment elements to instead create image elements if the MIME type,
is something suitable for display via an inline image element; add the attachment element under the shadow root
of the image element.

  • editing/markup.cpp:

(WebCore::StyledMarkupAccumulator::appendCustomAttributes):
(WebCore::restoreAttachmentElementsInFragment):

When dragging or copying an image element, we need to make sure that any attachment element backing the image
is preserved in the pasted or dropped fragment. To do this, we use a technique similar to what was done for
r180785 and r224593 and write a temporary "webkitattachmentid" attribute to the serialized markup on copy. Upon
deserializing the markup back to a fragment, we then create an attachment element with the same identifier under
the image.

(WebCore::createFragmentFromMarkup):

  • html/HTMLAttachmentElement.h:
  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::setAttachmentElement):
(WebCore::HTMLImageElement::attachmentElement const):

Helper methods to get and set an attachment element under an image element. Setting an image's attachment
element puts that attachment element under the shadow root of the image, and also hides the attachment element.

(WebCore::HTMLImageElement::attachmentIdentifier const):

Returns the identifier of an attachment element associated with the image element, or null.

  • html/HTMLImageElement.h:
  • html/HTMLImageElement.idl:

Add HTMLImageElement.webkitAttachmentIdentifier, a readonly attribute guarded by runtime-enabled attachment
element feature.

  • page/DragController.cpp:

(WebCore::DragController::startDrag):

In the case of dragging an image, if that image element is backed by an attachment element, don't bother writing
the image data to the clipboard; instead, write the attachment data as a promise.

(WebCore::DragController::doImageDrag):

Plumb promised attachment information to DragController::doSystemDrag.

(WebCore::DragController::promisedAttachmentInfo):

Teach this to handle attachment elements as well as image elements that are backed by attachment elements.

  • page/DragController.h:
  • platform/PromisedAttachmentInfo.h:

(WebCore::PromisedAttachmentInfo::operator bool const):

A valid PromisedAttachmentInfo no longer requires a contentType to be set; instead, an attachment identifier
alone is sufficient, since an up-to-date content type can be requested in the UI process from the API attachment
object.

Source/WebKit:

Support the ability to drop and paste images as image elements, with attachment elements, only if attachment
elements are enabled. See changes below for more detail.

  • Shared/WebCoreArgumentCoders.cpp:

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

Rename "filename" to "fileName", for consistency with WKContentView and WebViewImpl.

  • UIProcess/API/APIAttachment.cpp:

(API::Attachment::mimeType const):
(API::Attachment::fileName const):

  • UIProcess/API/APIAttachment.h:

Push getters for MIME type, UTI, and the file name down from _WKAttachment to API::Attachment. This allows
WKContentView and WebViewImpl to ask an API::Attachment questions about its UTI and file name without
additionally creating a wrapper object.

  • UIProcess/API/Cocoa/APIAttachmentCocoa.mm: Added.

(API::mimeTypeInferredFromFileExtension):
(API::isDeclaredOrDynamicTypeIdentifier):
(API::Attachment::mimeType const):
(API::Attachment::utiType const):
(API::Attachment::fileName const):

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

Add a private delegate hook to notify the UI delegate when a drop has been performed. This is used by tests to
know when a drop with file promises has been processed by the page.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _web_didPerformDragOperation:]):

  • UIProcess/API/Cocoa/_WKAttachment.mm:

(-[_WKAttachmentInfo initWithFileWrapper:filePath:mimeType:utiType:]):
(-[_WKAttachmentInfo fileWrapper]):
(-[_WKAttachmentInfo contentType]):
(-[_WKAttachment info]):
(-[_WKAttachmentInfo initWithFileWrapper:filePath:contentType:]): Deleted.
(isDeclaredOrDynamicTypeIdentifier): Deleted.
(-[_WKAttachmentInfo _typeIdentifierFromPathExtension]): Deleted.
(-[_WKAttachmentInfo mimeType]): Deleted.
(-[_WKAttachmentInfo utiType]): Deleted.

Moved to APIAttachmentCocoa.mm.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _web_didPerformDragOperation:]):

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKPromisedAttachmentContext initWithIdentifier:blobURL:fileName:]):

Adjust this constructor to take each piece of data separately. This is because, in the case where our
PromisedAttachmentInfo contains an attachment identifier, we determine the UTI and file name from the associated
file wrapper.

(-[WKPromisedAttachmentContext fileName]):
(WebKit::WebViewImpl::fileNameForFilePromiseProvider):
(WebKit::WebViewImpl::didPerformDragOperation):
(WebKit::WebViewImpl::startDrag):

Determine UTI and file name from the attachment element corresponding to the attachment identifier when
dragging. This is because the attachment element in the web process shouldn't need to have type and title
attributes set when starting a drag if it already has an identifier that maps to attachment data in the UI
process. An example of this is in inline images backed by attachments, for which we don't need to bother keeping
specifying display attributes, since they are never visible.

(-[WKPromisedAttachmentContext initWithAttachmentInfo:]): Deleted.
(-[WKPromisedAttachmentContext filename]): Deleted.

  • UIProcess/PageClient.h:

(WebKit::PageClient::didPerformDragOperation):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didPerformDragOperation):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:

Rename DidPerformDataInteractionControllerOperation to DidPerformDragOperation, and make it cross-platform (this
was previously only sent on iOS). Add plumbing through PageClient and friends on macOS to notify the UI
delegate when a drop is handled by the web process.

  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didPerformDragOperation):
(WebKit::PageClientImpl::didPerformDataInteractionControllerOperation): Deleted.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _didPerformDragOperation:]):
(-[WKContentView _prepareToDragPromisedAttachment:]):

Just like in WebViewImpl::startDrag, infer content type and file name from the API attachment object.

(-[WKContentView _didPerformDataInteractionControllerOperation:]): Deleted.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didPerformDataInteractionControllerOperation): Deleted.

  • UIProcess/mac/PageClientImplMac.h:
  • UIProcess/mac/PageClientImplMac.mm:

(WebKit::PageClientImpl::didPerformDragOperation):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::performDragControllerAction):

Tools:

Rebaseline existing API tests that involve dropping or pasting image files, and additionally write some new
tests. These new tests exercise the following cases:

  • Inserting and removing newlines before an inline image with an attachment element does not cause new

_WKAttachments to be created and destroyed.

  • Pasting an image, cutting it, and then pasting it again propagates an attachment update to the UI

process with the original _WKAttachment.

  • A pasted attachment in the document can be moved around by dragging, and doing so does not cause us to

lose a _WKAttachment.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(-[TestWKWebView expectElementCount:tagName:]):
(TestWebKitAPI::TEST):

Add the new tests described above, and also adjust existing tests to check that images are dropped or pasted
as image elements, but still have associated attachment elements whose attachment identifiers (observed via
script) match that of the corresponding _WKAttachment's uniqueIdentifier in the UI process.

  • TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:

(-[DragAndDropSimulator runFrom:to:]):
(-[DragAndDropSimulator continueDragSession]):
(-[DragAndDropSimulator performDragInWebView:atLocation:withImage:pasteboard:source:]):

Teach DragAndDropSimulator on macOS to wait until the drop has been handled by the web process before returning
execution to the caller. This ensures that tests which involve dropping promised files as attachments aren't
flaky, due to how the promised data is retrieved asynchronously when performing the drop.

(-[DragAndDropSimulator _webView:didPerformDragOperation:]):

6:39 PM Changeset in webkit [235342] by aestes@apple.com
  • 6 edits in trunk

[Apple Pay] PaymentRequest.show() should reject when an unsupported ApplePayRequest version is specified
https://bugs.webkit.org/show_bug.cgi?id=188954

Reviewed by Darin Adler.

Source/WebCore:

In Apple Pay JS, calling the ApplePaySession constructor with an unsupported version results
in an exception being thrown. We need to do something similar for Payment Request.

This patch moves the logic for validating the version from ApplePaySession to a common
routine in ApplePayRequestBase that both APIs call to convert requests into a common format.

In Apple Pay JS, an exception will still be thrown when constructing an ApplePaySession. In
Payment Request, the promise returned by show() will be rejected.

Added test cases to http/tests/ssl/applepay/PaymentRequest.https.html.

  • Modules/applepay/ApplePayRequestBase.cpp:

(WebCore::convertAndValidate):

  • Modules/applepay/ApplePaySession.cpp:

(WebCore::ApplePaySession::create):

LayoutTests:

  • http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
  • http/tests/ssl/applepay/PaymentRequest.https.html:
6:27 PM Changeset in webkit [235341] by aestes@apple.com
  • 1 edit
    9 adds in trunk/LayoutTests

[Apple Pay] Add a test for rendering Apple Pay buttons
https://bugs.webkit.org/show_bug.cgi?id=188947

Reviewed by Sam Weinig.

  • http/tests/ssl/applepay/ApplePayButton.html: Added.
  • platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac-sierra/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.png: Added.
  • platform/mac/http/tests/ssl/applepay/ApplePayButton-expected.txt: Added.
6:00 PM Changeset in webkit [235340] by mitz@apple.com
  • 2 edits in trunk/Source/WebKitLegacy

[Xcode] Don’t make unnecessary, broken WebKitPluginAgent symlink when WK_USE_OVERRIDE_FRAMEWORKS_DIR=YES
https://bugs.webkit.org/show_bug.cgi?id=188956
<rdar://problem/43253221>

Reviewed by Darin Adler.

  • WebKitLegacy.xcodeproj/project.pbxproj: Updated the Symlink WebKitPluginHost build phase.
5:48 PM Changeset in webkit [235339] by Lucas Forschler
  • 1 edit in trunk/Tools/ChangeLog

Open for business.

Aug 24, 2018:

4:33 PM Changeset in webkit [235338] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Unreviewed test fix after r235249
https://bugs.webkit.org/show_bug.cgi?id=178981

  • WebGPUShadingLanguageRI/Test.js:
4:12 PM Changeset in webkit [235337] by rniwa@webkit.org
  • 4 edits in trunk

Click event from click() is not composed
https://bugs.webkit.org/show_bug.cgi?id=170211

Reviewed by Wenson Hsieh.

LayoutTests/imported/w3c:

Rebaselined the test now that all test cases pass.

  • web-platform-tests/shadow-dom/event-composed-expected.txt:

Source/WebCore:

Fixed the bug. All simulated clicks should be composed regardless of whether it's trusted or not.
See: https://html.spec.whatwg.org/multipage/interaction.html#dom-click

https://html.spec.whatwg.org/multipage/webappapis.html#fire-a-synthetic-mouse-event

  • dom/SimulatedClick.cpp:
3:54 PM Changeset in webkit [235336] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WTF

Improve unified source generator script logging and error messages
https://bugs.webkit.org/show_bug.cgi?id=188932

Reviewed by Simon Fraser.

  • Scripts/generate-unified-source-bundles.rb:

Add the ability to explain why you're getting usage() instead of just printing it.
Capitalize log messages, and improve the wording in a few places.

3:51 PM Changeset in webkit [235335] by rniwa@webkit.org
  • 13 edits in trunk/Source/WebCore

Avoid calling setUntrusted in SimulatedMouseEvent
https://bugs.webkit.org/show_bug.cgi?id=188929

Reviewed by Simon Fraser.

Added IsTrusted flag to Event constructors instead of creating a trusted event
and making it untrusted in the constructor of SimulatedMouseEvent.

This makes EventTarget::dispatchEventForBindings the only caller of setUntrusted().

  • dom/Event.cpp:

(WebCore::Event::Event):

  • dom/Event.h:
  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):

  • dom/MouseEvent.h:
  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent):

  • dom/MouseRelatedEvent.h:
  • dom/SimulatedClick.cpp:
  • dom/UIEvent.cpp:

(WebCore::UIEvent::UIEvent):

  • dom/UIEvent.h:
  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::UIEventWithKeyState):

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::WheelEvent):

2:40 PM Changeset in webkit [235334] by jer.noble@apple.com
  • 3 edits
    2 adds in trunk

Using Touch Bar to scrub video on Youtube results in video playback freeze
https://bugs.webkit.org/show_bug.cgi?id=188926

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/media-source/media-source-seek-twice.html

When converting from a double-precision float to a MediaTime, a certain amount of precision is lost. If that
results in a round-trip between float in -> MediaTime -> float out where in != out, we will wait forever for
the time jump observer to fire. Break the cycle by comparing m_lastSeekTime to the synchronizerTime only after
m_lastSeekTime has been normalized into a rational-time value.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):

LayoutTests:

  • media/media-source/media-source-seek-twice-expected.txt: Added.
  • media/media-source/media-source-seek-twice.html: Added.
2:15 PM Changeset in webkit [235333] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

YARR: Update UCS canonicalization tables for Unicode 11
https://bugs.webkit.org/show_bug.cgi?id=188928

Reviewed by Mark Lam.

Generated YarrCanonicalizeUCS2.cpp from YarrCanonicalizeUCS2.js.

This passes JavaScriptCore and test262 tests.

  • yarr/YarrCanonicalizeUCS2.cpp:
  • yarr/YarrCanonicalizeUCS2.js:

(printHeader):

1:36 PM Changeset in webkit [235332] by jeffm@apple.com
  • 4 edits in trunk/Source/WebKit

Remove -[WKNavigationDelegate _webView:decidePolicyForPluginLoadWithCurrentPolicy:pluginInfo:unavailabilityDescription:]
https://bugs.webkit.org/show_bug.cgi?id=188889

Reviewed by Alex Christensen.

  • UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:

Remove obsolete method.

  • UIProcess/Cocoa/NavigationState.h:

Remove obsolete flag.

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::NavigationState::setNavigationDelegate):
Remove obsolete flag.

(WebKit::NavigationState::NavigationClient::decidePolicyForPluginLoad):
Remove support for obsolete delegate method.

1:14 PM Changeset in webkit [235331] by rniwa@webkit.org
  • 34 edits in trunk/Source

Pass in IsComposed flag to Event constructors
https://bugs.webkit.org/show_bug.cgi?id=188720
<rdar://problem/43580387>

Reviewed by Simon Fraser.

Source/WebCore:

This patch replaces the logic in Event::isComposed to decide whether an event is composed or not by
explicitly passing IsComposed flag to Event constructor. This decouples being composed from whether
an event is trusted and of a partciular event type, paving our way to make synthetic click event
dispatched by an author script composable in webkit.org/b/170211.

This patch also removes IsTrusted from the argument list of event constructors and create functions
to systematically eliminate the possibility of this patch making an event uncomposed by not setting
IsComposed flag.

No new tests since there should be no behavioral change.

  • dom/ClipboardEvent.cpp:

(WebCore::ClipboardEvent::ClipboardEvent): A trusted ClipboardEvent is composed.

  • dom/ClipboardEvent.h:

(WebCore::ClipboardEvent::ClipboardEvent): Removed IsTrusted from the variant which takes Init object
to make sure this refactoring is correct.
(WebCore::ClipboardEvent::create): Ditto.

  • dom/CompositionEvent.cpp:

(WebCore::CompositionEvent::CompositionEvent): A trusted CompositionEvent is composed.

  • dom/CompositionEvent.h:
  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent): A trusted dblclick event is composed (this is a non-standard
event but virtually every mouse event is composed so it makes sense to make this composed).

  • dom/Event.cpp:

(WebCore::Event::Event):
(WebCore::Event::create):
(WebCore::Event::composed const): Deleted. The trival implementation moved to the header file.

  • dom/Event.h:

(WebCore::Event::composed const):

  • dom/FocusEvent.cpp:

(WebCore::FocusEvent::FocusEvent): A trusted Focus event is composed.

  • dom/FocusEvent.h:

(WebCore::FocusEvent::create): Removed IsTrusted from Init variant for the correctness guarantee.
(WebCore::FocusEvent::FocusEvent): Ditto.

  • dom/InputEvent.cpp:

(WebCore::InputEvent::create): Removed IsTrusted from Init variant for the correctness guarantee.
(WebCore::InputEvent::InputEvent): A trsuted InputEvent is composed.

  • dom/InputEvent.h:
  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent): A trsuted KeyboardEvent is composed.
(WebCore::KeyboardEvent::create): Removed IsTrusted from Init variant for the correctness guarantee.

  • dom/KeyboardEvent.h:
  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create): Removed IsTrusted from Init variant for the correctness guarantee.
(WebCore::MouseEvent::MouseEvent): Explicitly take IsComposed flag from subclasses since simulated click
does not currently compose.

  • dom/MouseEvent.h:
  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent): A trusted touch event is composed.

  • dom/MouseRelatedEvent.h:
  • dom/Node.cpp:

(WebCore::Node::dispatchDOMActivateEvent): A trusted DOMActivateEvent event is composed.
(WebCore::Node::dispatchInputEvent): A trusted input event is composed.

  • dom/SimulatedClick.cpp:

(SimulatedMouseEvent::SimulatedMouseEvent): A simulated click is composed if it's a trusted event for now.
This is the bug to be fixed in webkit.org/b/170211.

  • dom/TextEvent.cpp:

(WebCore::TextEvent::TextEvent): A trsuted textInput event is composed.

  • dom/UIEvent.cpp:

(WebCore::UIEvent::UIEvent): Added IsComposed as an argument to the variant which creates a trusted event,
and removed IsTrusted from Init variant for the correctness guarantee.

  • dom/UIEvent.h:

(WebCore::UIEvent::create): Ditto.

  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::UIEventWithKeyState): Ditto.

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::WheelEvent): A trusted Wheel event, which is a subclass of MouseEvent, is composed.
(WebCore::WheelEvent::create): Removed IsTrusted from Init variant for the correctness guarantee.

  • dom/WheelEvent.h:
  • editing/Editor.cpp:

(WebCore::dispatchBeforeInputEvent):
(WebCore::dispatchInputEvent):
(WebCore::dispatchClipboardEvent): Call the newly added variant which takes DataTransfer directly so that
we can remove IsTrusted from the variant which takes Init for the correctness guarantee.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent): A trusted mouse event is composed.

Source/WebKit:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick): A trusted click event is composed regardless of
whether it's simulated or not.

Source/WebKitLegacy/ios:

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]): A trusted click event is composed regardless
of whether it's simulated or not.

Source/WebKitLegacy/mac:

  • WebView/WebPDFView.mm:

(-[WebPDFView PDFViewWillClickOnLink:withURL:]): A trusted click event is composed regardless of
whether it's simulated or not.

1:12 PM Changeset in webkit [235330] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Remove the flaky test expectation now that the test isn't flaky on bots after r235274.

  • platform/wk2/TestExpectations:
1:07 PM Changeset in webkit [235329] by rniwa@webkit.org
  • 13 edits
    1 copy
    3 adds in trunk

Add getModifierState to MouseEvent
https://bugs.webkit.org/show_bug.cgi?id=188913
<rdar://problem/43668772>

Reviewed by Simon Fraser.

Source/WebCore:

Moved getModifierState from KeyboardEvent to UIEventWithKeyState and exposed it in MouseEvent.
See https://www.w3.org/TR/2016/WD-uievents-20160804/#mouseevent

This patch also fixes the bug that initMouseEvent was not clearing AltGraph and CapsLock states,
which was preserved in the refactoring done in r235158.

Tests: fast/events/constructors/mouse-event-getModifierState.html

fast/events/dblclick-event-getModifierState.html

  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::getModifierState const): Moved to UIEventWithKeyState.

  • dom/KeyboardEvent.h:
  • dom/KeyboardEvent.idl: Insert a blank line to match the spec's IDL.
  • dom/MouseEvent.idl: Added getModifierState.
  • dom/UIEventWithKeyState.cpp:

(WebCore::UIEventWithKeyState::modifiersFromInitializer): Moved from the header file.
(WebCore::UIEventWithKeyState::getModifierState const):
(WebCore::UIEventWithKeyState::setModifierKeys): Moved from the header file.

  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::modifierKeys const):
(WebCore::UIEventWithKeyState::setModifierKeys): Deleted the variant which didn't take altGraphKey
since that variant behaves same as the one which takes altGraphKey.

LayoutTests:

Added two tests for getModifierState: one manually setting modifier key states in MouseEvent's constructor,
and another one for dblclick inheriting modifier key states from the click event.

Also improved the test coverage for KeyboardEvent's getModifierState.

  • fast/events/constructors/keyboard-event-getModifierState-expected.txt:
  • fast/events/constructors/keyboard-event-getModifierState.html: Added more test cases.
  • fast/events/constructors/mouse-event-getModifierState-expected.txt: Added.
  • fast/events/constructors/mouse-event-getModifierState.html: Added.
  • fast/events/dblclick-event-getModifierState-expected.txt: Added.
  • fast/events/dblclick-event-getModifierState.html: Added.
  • fast/events/init-event-clears-capslock-expected.txt:
  • fast/events/init-event-clears-capslock.html: Added tests for MouseEvent. Note that initMouseEvent doesn't

take altGraphKey boolean unlike initKeyboardEvent.

  • platform/ios/TestExpectations: Skip the dblclick test in iOS since click event isn't supported on iOS.
12:43 PM Changeset in webkit [235328] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Add WKWebView._mainFrame SPI
https://bugs.webkit.org/show_bug.cgi?id=188925

Reviewed by Brian Burg.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _mainFrame]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
12:30 PM Changeset in webkit [235327] by youenn@apple.com
  • 11 edits in trunk

libwebrtc PeerConnection::AddTrack sometimes fail
https://bugs.webkit.org/show_bug.cgi?id=188914

Reviewed by Eric Carlson.

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-addTrack.https-expected.txt:

Source/WebCore:

AddTrack may fail so test the result and if not successful, make JS addTrack to throw an exception.
This makes some tests to fail now.
These tests should pass again when unified plan will be enabled.
Covered by rebased tests.

  • Modules/mediastream/PeerConnectionBackend.h:

(WebCore::PeerConnectionBackend::notifyAddedTrack):

  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::addTrack):
(WebCore::RTCPeerConnection::addTransceiver):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp:

(WebCore::LibWebRTCMediaEndpoint::addTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:

(WebCore::LibWebRTCPeerConnectionBackend::notifyAddedTrack):

  • Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.h:

LayoutTests:

  • fast/mediastream/RTCPeerConnection-add-removeTrack-expected.txt:
12:14 PM Changeset in webkit [235326] by Basuke Suzuki
  • 3 edits in trunk/Source/WebKit

[Curl] Match the interface used in NetworkDataTask and ResourceHandle.
https://bugs.webkit.org/show_bug.cgi?id=188922

Reviewed by Alex Christensen.

The interfaces for NetworkDataTask and ResourceHandle are diverged.
It should be same for the same purpose because they do same thing.

No change in behavior.

  • NetworkProcess/curl/NetworkDataTaskCurl.cpp:

(WebKit::NetworkDataTaskCurl::NetworkDataTaskCurl):
(WebKit::NetworkDataTaskCurl::createCurlRequest):
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCurl::restartWithCredential):

  • NetworkProcess/curl/NetworkDataTaskCurl.h:
12:13 PM Changeset in webkit [235325] by Adrian Perez de Castro
  • 2 edits in trunk/Source/WebCore

[FreeType] Do not cast through GLib types in FontCustomPlatformDataFreeType.cpp
https://bugs.webkit.org/show_bug.cgi?id=188919

Reviewed by Michael Catanzaro.

No new tests needed.

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::FontCustomPlatformData::FontCustomPlatformData): Cast
through "void (*)(void)" instead of GCallback to avoid the warning
produced by -Wcast-function-type.

12:10 PM Changeset in webkit [235324] by achristensen@apple.com
  • 3 edits in trunk/Source/WebKit

Follow up to r235323
https://bugs.webkit.org/show_bug.cgi?id=188923
<rdar://problem/34657861>

  • UIProcess/API/C/mac/WKInspectorPrivateMac.h:
  • UIProcess/mac/WebInspectorProxyMac.mm:

(-[WKWebInspectorProxyObjCAdapter inspector]):
A _WKInspector * accessor in the WKWebInspectorProxyObjCAdapter is nice, too.

11:41 AM Changeset in webkit [235323] by achristensen@apple.com
  • 7 edits
    3 adds in trunk

Introduce _WKInspector
https://bugs.webkit.org/show_bug.cgi?id=188923
<rdar://problem/34657861>

Reviewed by Brian Burg.

Source/WebKit:

  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _inspector]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKInspector.h: Added.
  • UIProcess/API/Cocoa/_WKInspector.mm: Added.

(-[_WKInspector webView]):
(-[_WKInspector isConnected]):
(-[_WKInspector isVisible]):
(-[_WKInspector isFront]):
(-[_WKInspector isProfilingPage]):
(-[_WKInspector isElementSelectionActive]):
(-[_WKInspector connect]):
(-[_WKInspector show]):
(-[_WKInspector hide]):
(-[_WKInspector close]):
(-[_WKInspector showConsole]):
(-[_WKInspector showResources]):
(-[_WKInspector showMainResourceForFrame:]):
(-[_WKInspector attach]):
(-[_WKInspector detach]):
(-[_WKInspector showTimelines]):
(-[_WKInspector togglePageProfiling]):
(-[_WKInspector toggleElementSelection]):
(-[_WKInspector printErrorToConsole:]):
(-[_WKInspector _apiObject]):

  • UIProcess/API/Cocoa/_WKInspectorInternal.h: Added.
  • WebKit.xcodeproj/project.pbxproj:

Tools:

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController validateMenuItem:]):
(-[WK2BrowserWindowController showHideWebInspector:]):

11:22 AM Changeset in webkit [235322] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

YARR: JIT RegExps with non-greedy parenthesized sub patterns
https://bugs.webkit.org/show_bug.cgi?id=180876

Reviewed by Filip Pizlo.

Implemented the non-greedy nested parenthesis based on the prior greedy nested parenthesis work.
For the matching code, the greedy path was correct except that we don't try matching for the
non-greedy case. Added a jump out to the term after the parenthesis and a label to perform the
first / next match when we backtrack. The backtracking code needs to check to see if we have
tried the first match or if we can do another match.

Updated the disassembly annotations to include parenthesis capturing info, quantifier type and
count. Did other minor cleanup as well.

Fixed function name typo, added missing 't' in "setUsesPaternContextBuffer()".

Updated the text in some comments, both for this change as well as accuracy for existing code.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::dumpCompileFailure):
(JSC::Yarr::jitCompile):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::setUsesPatternContextBuffer):
(JSC::Yarr::YarrCodeBlock::setUsesPaternContextBuffer): Deleted.

10:46 AM Changeset in webkit [235321] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Don't launch network process in WebCookieManagerProxy::setHTTPCookieAcceptPolicy
https://bugs.webkit.org/show_bug.cgi?id=188906
<rdar://problem/43539661>

Reviewed by Geoffrey Garen.

In WebCookieManagerProxy::setHTTPCookieAcceptPolicy, we persist the cookieAcceptPolicy of
sharedCookieStorage. When we launch the network process later, we pass the
identifier of sharedCookieStorage to network process, so network process has the correct
cookieAcceptPolicy. Therefore, we don't have to launch the network process and send the
setting message if the network process is not launched.

  • UIProcess/WebCookieManagerProxy.cpp:

(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):

9:35 AM Changeset in webkit [235320] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/video-load-preload-metadata.html as flaky on iOS
https://bugs.webkit.org/show_bug.cgi?id=128312

Unreviewed test gardening.

  • platform/ios/TestExpectations:
8:56 AM Changeset in webkit [235319] by Ryan Haddad
  • 2 edits in branches/safari-606-branch/Tools

Cherry-pick r235317. rdar://problem/43646060

Fix handling of iOS minor versions in default_baseline_search_path
https://bugs.webkit.org/show_bug.cgi?id=188902

Reviewed by Aakash Jain.

  • Scripts/webkitpy/port/ios.py: (IOSPort.default_baseline_search_path): When the major version matches the major version of the CURRENT_VERSION, treat it as a the CURRENT_VERSION.

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

8:20 AM Changeset in webkit [235318] by aestes@apple.com
  • 11 edits in trunk

[Apple Pay] Allow $0 totals
https://bugs.webkit.org/show_bug.cgi?id=185150
<rdar://problem/39212331>

Reviewed by Dan Bernstein.

Source/WebCore:

Relaxed payment request validation to allow $0 totals. This matches PassKit behavior.

Updated test cases in http/tests/ssl/applepay/.

  • Modules/applepay/PaymentRequestValidator.mm:

(WebCore::PaymentRequestValidator::validateTotal):

LayoutTests:

  • http/tests/ssl/applepay/ApplePaySession-expected.txt:
  • http/tests/ssl/applepay/ApplePaySession.html:
  • http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV3.html:
  • http/tests/ssl/applepay/ApplePaySessionV4-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV4.html:
  • http/tests/ssl/applepay/PaymentRequest.https-expected.txt:
  • http/tests/ssl/applepay/PaymentRequest.https.html:
7:03 AM Changeset in webkit [235317] by Jonathan Bedard
  • 2 edits in trunk/Tools

Fix handling of iOS minor versions in default_baseline_search_path
https://bugs.webkit.org/show_bug.cgi?id=188902

Reviewed by Aakash Jain.

  • Scripts/webkitpy/port/ios.py:

(IOSPort.default_baseline_search_path): When the major version matches the major version of the CURRENT_VERSION, treat
it as a the CURRENT_VERSION.

3:12 AM Changeset in webkit [235316] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Remove ScrollByPrecisePixel granularity
https://bugs.webkit.org/show_bug.cgi?id=188915

Patch by Frederic Wang <fwang@igalia.com> on 2018-08-24
Reviewed by Carlos Garcia Campos.

ScrollByPrecisePixel was introduced in bug 87535 and bug 91020 for Chromium Linux/Windows but
it is no longer used.

No new tests, behavior unchanged.

  • platform/ScrollAnimatorSmooth.cpp:

(WebCore::ScrollAnimatorSmooth::scroll): Remove special handling for ScrollByPrecisePixel.

  • platform/ScrollTypes.h: Remove ScrollByPrecisePixel, it is never used.
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::scroll): Remove special handling for ScrollByPrecisePixel.

  • platform/gtk/ScrollAnimatorGtk.cpp:

(WebCore::ScrollAnimatorGtk::scroll): Remove special handling for ScrollByPrecisePixel.

2:30 AM Changeset in webkit [235315] by Antti Koivisto
  • 9 edits in trunk

Allow creating WeakPtrs to const objects
https://bugs.webkit.org/show_bug.cgi?id=188785

Reviewed by Geoff Garen.

Source/WebCore:

Remove some unneeded const_casts.

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::MediaQueryEvaluator):
(WebCore::MediaQueryEvaluator::evaluate const):

  • css/MediaQueryEvaluator.h:
  • rendering/FloatingObjects.cpp:

(WebCore::ComputeFloatOffsetAdapter::ComputeFloatOffsetAdapter):
(WebCore::ComputeFloatOffsetForFloatLayoutAdapter::ComputeFloatOffsetForFloatLayoutAdapter):
(WebCore::ComputeFloatOffsetForLineLayoutAdapter::ComputeFloatOffsetForLineLayoutAdapter):
(WebCore::FindNextFloatLogicalBottomAdapter::FindNextFloatLogicalBottomAdapter):
(WebCore::FloatingObjects::FloatingObjects):

  • rendering/FloatingObjects.h:

(WebCore::FloatingObjects::renderer const):

Source/WTF:

const Foo foo;
WeakPtr<const Foo> weakConstFoo = makeWeakPtr(foo);

  • wtf/WeakPtr.h:

(WTF::WeakPtrFactory::createWeakPtr const):

Add a separate factory function for const T.
The underlying WeakReference is kept non-const in all cases.

Tools:

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp:

(TestWebKitAPI::Base::weakPtrFactory const):
(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::weakPtrFactory): Deleted.

2:13 AM Changeset in webkit [235314] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[CoordGraphics] Move inline methods on CoordinatedGraphicsLayer out-of-line
https://bugs.webkit.org/show_bug.cgi?id=188916

Reviewed by Carlos Garcia Campos.

Style checker produced complaints that CoordinatedGraphicsLayer class is
using inline-defined methods despite the WEBCORE_EXPORT macro being used
for the whole class. Keep the macro where it is but instead move the
method definitions out-of-line.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::isCoordinatedGraphicsLayer const):
(WebCore::CoordinatedGraphicsLayer::id const):
(WebCore::CoordinatedGraphicsLayer::primaryLayerID const):
(WebCore::CoordinatedGraphicsLayer::usesContentsLayer const):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
2:03 AM Changeset in webkit [235313] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.21.92

WebKitGTK+ 2.21.92

2:03 AM Changeset in webkit [235312] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.22

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.21.92 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit:

  • gtk/NEWS: Add release notes for 2.21.92.
1:35 AM WebKitGTK/2.22.x edited by Carlos Garcia Campos
(diff)
1:12 AM Changeset in webkit [235311] by Carlos Garcia Campos
  • 1 edit in releases/WebKitGTK/webkit-2.22/Source/WebKit/gtk/NEWS

Unreviewed. Fix GTK+ NEWS file formatting

I broke it by mistake when releasing 2.21.91

1:10 AM Changeset in webkit [235310] by Carlos Garcia Campos
  • 12 edits in releases/WebKitGTK/webkit-2.22

Merge r235282 - [GTK][WPE] Add API to inject/register user content in isolated worlds
https://bugs.webkit.org/show_bug.cgi?id=188883

Reviewed by Michael Catanzaro.

Source/WebKit:

Add new API to create user scripts/stylesheets for a given script world and to register/unregister user script
messages in a given script world.

  • UIProcess/API/glib/WebKitUserContent.cpp:

(webkitUserContentWorld):
(_WebKitUserStyleSheet::_WebKitUserStyleSheet):
(webkit_user_style_sheet_new):
(webkit_user_style_sheet_new_for_world):
(_WebKitUserScript::_WebKitUserScript):
(webkit_user_script_new):
(webkit_user_script_new_for_world):

  • UIProcess/API/glib/WebKitUserContentManager.cpp:

(webkit_user_content_manager_register_script_message_handler_in_world):
(webkit_user_content_manager_unregister_script_message_handler_in_world):

  • UIProcess/API/glib/WebKitUserContentPrivate.h:
  • UIProcess/API/gtk/WebKitUserContent.h:
  • UIProcess/API/gtk/WebKitUserContentManager.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitUserContent.h:
  • UIProcess/API/wpe/WebKitUserContentManager.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addUserContentWorlds):

Tools:

Add test cases for the new API.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:

(isStyleSheetInjectedForURLAtPath):
(isScriptInjectedForURLAtPath):
(testUserContentManagerInjectedStyleSheet):
(testUserContentManagerInjectedScript):
(UserScriptMessageTest::registerHandler):
(UserScriptMessageTest::unregisterHandler):
(UserScriptMessageTest::postMessageAndWaitUntilReceived):
(testUserContentManagerScriptMessageInWorldReceived):
(beforeAll):

1:10 AM Changeset in webkit [235309] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235162 - Do not try to update the compositing policy when not in accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=188787

Reviewed by Simon Fraser.

RenderLayerCompositor::updateCompositingPolicy() is called very often (called from
RenderLayerCompositor::cacheAcceleratedCompositingFlags()) and it uses WTF::memoryFootprint() to decide the
current compositing policy. Getting the memory footprint is an expensive operation in Linux (and I suspect other
non-cocoa ports too), causing an excessive CPU usage. This caused the WPE and GTK+ unit test
/webkit/WebKitWebContext/uri-scheme to start timing out in the bots, because the test expects things to happen
fast and that's no longer the case. We could reduce the CPU usage a lot by not trying to update the policy when
not in accelerated compositing mode. We will need a solution for the accelerated compositing mode, though.

Fixes WPE/GTK+ unit test /webkit/WebKitWebContext/uri-scheme.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateCompositingPolicy): Return early when not in accelerated compositing mode.

1:10 AM Changeset in webkit [235308] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/JavaScriptCore

Merge r235161 - [JSC] HeapUtil should care about pointer overflow
https://bugs.webkit.org/show_bug.cgi?id=188740

Reviewed by Saam Barati.

pointer - sizeof(IndexingHeader) - 1 causes an undefined behavior if a pointer overflows.
For example, if pointer is nullptr, it causes pointer overflow. Instead of calculating this
with char* pointer, we cast it to uintptr_t temporarily. This issue is found by UBSan.

  • heap/HeapUtil.h:

(JSC::HeapUtil::findGCObjectPointersForMarking):

1:10 AM Changeset in webkit [235307] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/JavaScriptCore

Merge r235160 - [JSC] Should not rotate constant with 64
https://bugs.webkit.org/show_bug.cgi?id=188556

Reviewed by Saam Barati.

To defend against JIT splaying, we rotate a constant with a randomly generated seed.
But if a seed becomes 64 or 0, the following code performs value << 64 or value >> 64
where value's type is uint64_t, and they cause undefined behaviors (UBs). This patch limits
the seed in the range of [1, 63] not to generate code causing UBs. This is found by UBSan.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::generateRotationSeed):
(JSC::MacroAssembler::rotationBlindConstant):

1:10 AM Changeset in webkit [235306] by Carlos Garcia Campos
  • 23 edits in releases/WebKitGTK/webkit-2.22/Source

Merge r235158 - Replace booleans for modifier keys in UIEventWithKeyState with OptionSet<Modifier>
https://bugs.webkit.org/show_bug.cgi?id=188777

Reviewed by Simon Fraser.

Source/WebCore:

Replaced boolean arguments and instance variables for modifier keys (ctrl, alt, shift, and meta keys) in
UIEventWithKeyState with OptionSet<Modifier> and isSimulated boolean in MouseRelatedEvent with IsSimulated
enum class.

Also made movementDelta always compiled instead of only when ENABLE(POINTER_LOCK) to simplify the code.

No new tests since there should be no observable behavioral change.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseEvent):

  • dom/KeyboardEvent.cpp:

(WebCore::KeyboardEvent::KeyboardEvent):
(WebCore::KeyboardEvent::initKeyboardEvent): Call setModifierKeys.

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::initMouseEvent): Ditto.

  • dom/MouseEvent.h:
  • dom/MouseRelatedEvent.cpp:

(WebCore::MouseRelatedEvent::MouseRelatedEvent): Added a new variant which takes the minimum arguments
for gesture & touch events. In those events, detail is always set to 0, movementDelta is always set to 0,0,
and they are never simulated.

  • dom/MouseRelatedEvent.h:

(WebCore::MouseRelatedEvent::IsSimulated): Added.

  • dom/SimulatedClick.cpp:

(WebCore::SimulatedMouseEvent::SimulatedMouseEvent): Get OptionSet<Modifier> out of the underlying event
instead of manually setting each key state. This code now preserves the state of caps lock and alt-graph
keys but this is not observable because we have yet to implement getModifierState on MouseEvent.
(WebCore::SimulatedMouseEvent::modifiersFromUnderlyingEvent): Added.

  • dom/TouchEvent.cpp:

(WebCore::TouchEvent::TouchEvent):

  • dom/TouchEvent.h:
  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::Modifier): Alias to PlatformEvent::Modifier.
(WebCore::UIEventWithKeyState::ctrlKey const): Updated to use m_modifiers.
(WebCore::UIEventWithKeyState::shiftKey const): Ditto.
(WebCore::UIEventWithKeyState::altKey const): Ditto.
(WebCore::UIEventWithKeyState::metaKey const): Ditto.
(WebCore::UIEventWithKeyState::altGraphKey const): Ditto.
(WebCore::UIEventWithKeyState::capsLockKey const): Ditto.
(WebCore::UIEventWithKeyState::modifierKeys): Added.
(WebCore::UIEventWithKeyState::UIEventWithKeyState): Now takes OptionSet<Modifier>.
(WebCore::UIEventWithKeyState::setModifierKeys): Added. Used by init*Event functions in subclasses. Note that
these functions preseve the states of alt-graph and caps lock keys to match the existing behaviors in this
cleanup patch but they don't match behaviors of Chrome or Firefox.
(WebCore::UIEventWithKeyState::modifiersFromInitializer): Added.

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::WheelEvent): Simulated::No corresponds to the last boolean being false.

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::handleTouchEvent):

  • platform/PlatformEvent.h:

(WebCore::PlatformEvent::Modifier): Added AltGraphKey.

  • platform/mac/PlatformEventFactoryMac.h:

(WebCore::modifiersForEvent): Exported to be used in [WebPDFView PDFViewWillClickOnLink:withURL:].

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::modifiersForEvent):

  • testing/Internals.cpp:

(WebCore::Internals::accessKeyModifiers const):

Source/WebKit:

Added two FIXMEs.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::navigateToPDFLinkWithSimulatedClick):

Source/WebKitLegacy/ios:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKitLegacy/mac:

Create MouseEvent::create with IsSimulated set to Yes; correspoding to the last argument
being "true" before the code change.

Use modifiersForEvent to convert [nsEvent modifierFlags] to OptionSet<Modifier>.

  • WebView/WebPDFView.mm:

(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

1:10 AM Changeset in webkit [235305] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.22

Merge r235148 - Transition ResizeReversePaginatedWebView API test from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188821

Reviewed by Simon Fraser.

Source/WebKit:

Add some more values to WKPageRenderingProgressEvents which were already supported by _WKRenderingProgressEvents and WKLayoutMilestones.

  • UIProcess/API/C/WKPageRenderingProgressEvents.h:
  • UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:

(pageRenderingProgressEvents):

Tools:

  • TestWebKitAPI/Tests/WebKit/ResizeReversePaginatedWebView.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::TEST):

1:10 AM Changeset in webkit [235304] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.22/Tools

Merge r235138 - Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188813

Reviewed by Andy Estes.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayout.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutForImages.cpp:

(TestWebKitAPI::didLayout):
(TestWebKitAPI::setPageLoaderClient):

1:10 AM Changeset in webkit [235303] by Carlos Garcia Campos
  • 1 edit
    1 add in releases/WebKitGTK/webkit-2.22/Source/WebInspectorUI

Merge r235134 - Web Inspector: Rulers.svg is missing
https://bugs.webkit.org/show_bug.cgi?id=188806
<rdar://problem/43574273>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-21
Reviewed by Devin Rousso.

  • UserInterface/Images/Rulers.svg: Added.
1:09 AM Changeset in webkit [235302] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebKit

Merge r235133 - Increment NetworkCache::Storage::lastStableVersion after r233742
https://bugs.webkit.org/show_bug.cgi?id=188798
<rdar://43561761>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.h:
1:09 AM Changeset in webkit [235301] by Carlos Garcia Campos
  • 15 edits in releases/WebKitGTK/webkit-2.22/Tools

Merge r235123 - Transition more API tests from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188797

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKit/AboutBlankLoad.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/EphemeralSessionPushStateNoHistoryCallback.cpp:

(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FailedLoad.cpp:

(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameMIMETypeHTML.cpp:

(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameMIMETypePNG.cpp:

(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LayoutMilestonesWithAllContentInFrame.cpp:

(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didLayout): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFrames.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::renderingProgressDidChange):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didLayout): Deleted.

  • TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:

(TestWebKitAPI::State::State):
(TestWebKitAPI::didStartProvisionalNavigation):
(TestWebKitAPI::didCommitNavigation):
(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::decidePolicyForNavigationAction):
(TestWebKitAPI::decidePolicyForResponse):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didStartProvisionalLoadForFrame): Deleted.
(TestWebKitAPI::didCommitLoadForFrame): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::decidePolicyForNewWindowAction): Deleted.

  • TestWebKitAPI/Tests/WebKit/PageLoadDidChangeLocationWithinPageForFrame.cpp:

(TestWebKitAPI::didSameDocumentNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/PrivateBrowsingPushStateNoHistoryCallback.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::didSameDocumentNavigationForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ReloadPageAfterCrash.cpp:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/WKBundleFileHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/RestoreStateAfterTermination.mm:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKitCocoa/CommandBackForward.mm:

(WebKit2_CommandBackForwardTestWKView::SetUp):
(WebKit2_CommandBackForwardTestWKView::didFinishLoadForFrame): Deleted.

1:09 AM Changeset in webkit [235300] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merge r235121 - Disallow navigations when page cache updates the current document of the frame
https://bugs.webkit.org/show_bug.cgi?id=188422

Reviewed by Ryosuke Niwa.

Source/WebCore:

Make use of NavigationDisabler to disallow navigations when associating the cached
document back with its frame (i.e. calling Frame::setDocument()).

When we associate a cached document with its frame we will construct its render tree
and run post style resolution callbacks that can do anything, including performing
a frame load. Until page restoration is comnplete the frame tree is in a transient
state that makes reasoning about it difficult and error prone. We should not allow
navigations in this state.

Test: fast/history/go-back-to-object-subframe.html

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::open):

LayoutTests:

Add a test case that ensures that we do not hit the assertion ASSERT(ownerFrame
m_frame.isMainFrame())

in FrameLoader::addExtraFieldsToRequest() when navigating back to a page that loads a nested
page, whose URL contains a fragment, via an HTML object element. This assertion fails if
navigations are allowed when restoring a page from the page cache.

This change does not prevent navigations initiated from a pageshow event handler.

  • fast/history/go-back-to-object-subframe-expected.txt: Added.
  • fast/history/go-back-to-object-subframe.html: Added.
1:09 AM Changeset in webkit [235299] by Carlos Garcia Campos
  • 35 edits
    1 add in releases/WebKitGTK/webkit-2.22/Source

Merge r235120 - Replace TextCheckingTypeMask with OptionSet
https://bugs.webkit.org/show_bug.cgi?id=188678

Reviewed by Antti Koivisto.

Source/WebCore:

Replaces TextCheckingTypeMask with an OptionSet to improve type safety and code clarity. Additionally
change the values of TextCheckingType such that all the enumerators fit within an uint8_t.

  • PlatformMac.cmake:
  • SourcesCocoa.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasMisspelling const):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetSpelling):

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::timerFired):
(WebCore::AlternativeTextController::processMarkersOnTextToBeReplacedByResult):

  • editing/Editor.cpp:

(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::markMisspellingsAfterTypingToWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):
(WebCore::isAutomaticTextReplacementType):
(WebCore::Editor::markAndReplaceFor): For now, change a local variable from const to non-const to work
around the following MSVC compiler bug: <https://developercommunity.visualstudio.com/content/problem/316713/msvc-cant-compile-webkits-optionsetcontainsany.html>.
(WebCore::Editor::markMisspellingsAndBadGrammar):
(WebCore::Editor::updateMarkersForWordsAffectedByEditing):
(WebCore::Editor::editorUIUpdateTimerFired):
(WebCore::Editor::resolveTextCheckingTypeMask):

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

(WebCore::SpellCheckRequest::SpellCheckRequest):
(WebCore::SpellCheckRequest::create):
(WebCore::SpellChecker::didCheckSucceed):

  • editing/SpellChecker.h:
  • editing/TextCheckingHelper.cpp:

(WebCore::findGrammaticalErrors):
(WebCore::findMisspellings):
(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange const):
(WebCore::checkTextOfParagraph):

  • editing/TextCheckingHelper.h:
  • loader/EmptyClients.cpp:
  • platform/text/TextCheckerClient.h:
  • platform/text/TextChecking.h: Remove TextCheckingTypeMask. Reorganized the fields of TextCheckingRequestData

to coallesce padding and move it to the end of class. Also used default initializer syntax and defaulted (= default)
the default constructor of TextCheckingRequestData, removing the need for a user-defined default constructor.
(WebCore::TextCheckingRequestData::TextCheckingRequestData):
(WebCore::TextCheckingRequestData::text const): Changed return type from String to const String&
to avoid unnecessary ref-count churn for callers that do not need to take a shared ownership in
this string.
(WebCore::TextCheckingRequestData::checkingTypes const): Renamed; formerly named mask.
(WebCore::TextCheckingRequestData::mask const): Deleted.

  • platform/text/mac/TextCheckingMac.mm: Added.

(WebCore::nsTextCheckingTypes):

  • testing/Internals.cpp:

(WebCore::Internals::handleAcceptedCandidate):

Source/WebKit:

  • Scripts/webkit/messages.py: Add WebCore::TextCheckingType to the special case map so that

the generator knows what header has the definition for this type.

  • Shared/WebCoreArgumentCoders.cpp:

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

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::coreTextCheckingType):
(WebKit::textCheckingResultFromNSTextCheckingResult):

  • UIProcess/TextChecker.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::checkTextOfParagraph):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/gtk/TextCheckerGtk.cpp:

(WebKit::TextChecker::requestCheckingOfString):
(WebKit::TextChecker::checkTextOfParagraph): Also simplified return expressions.

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/win/TextCheckerWin.cpp:

(WebKit::TextChecker::checkTextOfParagraph):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(WebKit::WebEditorClient::checkTextOfParagraph):

  • WebProcess/WebCoreSupport/WebEditorClient.h:

Source/WebKitLegacy/mac:

Currently we have code in WebEditorClient::checkTextOfParagraph() that incorrectly assumes
that the enumerators of TextCheckingType have a one-to-one correspondence with NSTextCheckingType.
(This is not the case because there is not corresponding NSTextCheckingType for TextCheckingTypeShowCorrectionPanel).
We now explicitly convert from OptionSet<TextCheckingType> to NSTextCheckingTypes.

  • WebCoreSupport/WebEditorClient.h:
  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::checkTextOfParagraph):
(WebEditorClient::shouldEraseMarkersAfterChangeSelection const):
(core): Fix up code style nits; compare resultType on the right-hand side instead of the
left as this is more readable and unncessary now that modern compilers like Clang have
diagnostics to catch accidental assignments when equality was intended.
(WebEditorClient::didCheckSucceed):

  • WebView/WebView.mm:

(coreTextCheckingType):
(textCheckingResultFromNSTextCheckingResult):

1:09 AM Changeset in webkit [235298] by Carlos Garcia Campos
  • 48 edits in releases/WebKitGTK/webkit-2.22/Tools

Merge r235117 - Replace WKPageLoaderClient with WKPageNavigationClient in many API tests
https://bugs.webkit.org/show_bug.cgi?id=188771

Reviewed by Tim Horton.

  • TestWebKitAPI/Tests/WebKit/CloseThenTerminate.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/CookieManager.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DeferredViewInWindowStateChange.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DidNotHandleKeyDown.cpp:

(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/DidRemoveFrameFromHiearchyInPageCache.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/EventModifiers.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/Find.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FindMatches.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ForceRepaint.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/FrameHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/Geolocation.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/HitTestResultNodeHandle.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/InjectedBundleBasic.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LimitTitleSize.cpp:

(TestWebKitAPI::didFinishLoadForFrame):

  • TestWebKitAPI/Tests/WebKit/LoadAlternateHTMLStringWithNonDirectoryURL.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::loadAlternateHTMLString):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LoadCanceledNoServerRedirectCallback.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/LoadPageOnCrash.cpp:

(TestWebKitAPI::WebKit2CrashLoader::WebKit2CrashLoader):
(TestWebKitAPI::didFinishLoad):

  • TestWebKitAPI/Tests/WebKit/MenuTypesForMouseEvents.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/MouseMoveAfterCrash.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/NewFirstVisuallyNonEmptyLayoutFails.cpp:

(TestWebKitAPI::didFinishLoadForFrame):

  • TestWebKitAPI/Tests/WebKit/PageLoadBasic.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/PendingAPIRequestURL.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/ResizeWindowAfterCrash.cpp:

(TestWebKitAPI::didFinishLoad):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit/RestoreSessionState.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/RestoreSessionStateContainingFormData.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/ScrollPinningBehaviors.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishDocumentLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/SpacebarScrolling.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/StopLoadingDuringDidFailProvisionalLoad.cpp:

(TestWebKitAPI::didFailProvisionalNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/TerminateTwice.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/TextFieldDidBeginAndEndEditing.cpp:

(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishNavigation):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2TextFieldBeginAndEditEditingTest::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/UserMessage.cpp:

(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishNavigation):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::setPageLoaderClient):
(TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageConfiguration.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageCopySessionStateWithFiltering.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageGetScaleFactorNotZero.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKPageIsPlayingAudio.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setUpClients):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WKThumbnailView.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/WebArchive.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/AttributedSubstringForProposedRangeWithImage.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/ContextMenuDownload.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/CustomBundleParameter.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/EditorCommands.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/GetPIDAfterAbortedProcessLaunch.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKit/mac/InjectedBundleAppleEvent.cpp:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/FullscreenDelegate.mm:

(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/WebKitCocoa/PictureInPictureDelegate.mm:

(didFinishNavigation):
(TestWebKitAPI::TEST):
(didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/Tests/mac/FirstResponderScrollingPosition.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

  • TestWebKitAPI/mac/WebKitAgnosticTest.mm:

(TestWebKitAPI::didFinishNavigation):
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.

1:08 AM Changeset in webkit [235297] by Carlos Garcia Campos
  • 5 edits
    1 move in releases/WebKitGTK/webkit-2.22

Merge r235116 - [WPE] Update to use libwpe-1.0.0 and WPEBackend-fdo-1.0.0
https://bugs.webkit.org/show_bug.cgi?id=188782

Reviewed by Michael Catanzaro.

Make the build depend on wpe-0.2, and change the Flatpak and JHBuild development
environments to use version 1.0.0 of libwpe and WPEBackend-fdo.

.:

  • Source/cmake/FindWPE.cmake: Renamed from Source/cmake/FindWPEBackend.cmake and changed

to check for libwpe-0.2.

  • Source/cmake/OptionsWPE.cmake: Adapt to the rename to FindWPE.cmake.

Tools:

  • flatpak/org.webkit.WPE.yaml: Update to use libwpe and WPEBackend-fdo version 1.0.0 from

release tarballs, and removed the (now unneeded) Lua and LuaJIT modules.

  • wpe/jhbuild.modules: Ditto.
1:08 AM Changeset in webkit [235296] by Carlos Garcia Campos
  • 14 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235115 - Don't place "using namespace XXX;" in global space for unified source builds
https://bugs.webkit.org/show_bug.cgi?id=188739

Reviewed by Yusuke Suzuki.

No new tests (No behavior change).

  • html/track/AudioTrackList.cpp:
  • html/track/TextTrackList.cpp:
  • html/track/VideoTrackList.cpp:
  • page/SecurityOriginData.cpp:
  • page/TextIndicator.cpp:
  • platform/geoclue/GeolocationProviderGeoclue.cpp:
  • platform/graphics/gstreamer/ImageGStreamerCairo.cpp:
  • platform/graphics/win/FullScreenController.cpp:
  • platform/mediastream/CaptureDeviceManager.cpp:
  • platform/mock/MediaPlaybackTargetPickerMock.cpp:
  • svg/animation/SMILTime.cpp:
  • testing/js/WebCoreTestSupport.cpp:
  • xml/XPathParser.cpp:
1:08 AM Changeset in webkit [235295] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WTF

Merge r235113 - [Linux] Cache the memory footprint and only update it after 1 second
https://bugs.webkit.org/show_bug.cgi?id=188791

Reviewed by Yusuke Suzuki.

Getting the memory footprint is an expensive operation in Linux. When called multiple times, the CPU usage is
too much (see bug #188787). We could cache the result for at least 1 second to ensure we don't call it more than
once per second.

  • wtf/linux/MemoryFootprintLinux.cpp:

(WTF::forEachLine):
(WTF::computeMemoryFootprint):
(WTF::memoryFootprint):

1:08 AM Changeset in webkit [235294] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235112 - [GStreamer] Warn early about incomplete MSE track switching support
https://bugs.webkit.org/show_bug.cgi?id=188653

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

The proper track switching support shall be fixed at some point by:
https://bugs.webkit.org/show_bug.cgi?id=182531.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::updateTracks): Remove redundant test.
(WebCore::MediaPlayerPrivateGStreamer::enableTrack): Exit early if
this method is called by the MSE player.

1:08 AM Changeset in webkit [235293] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235110 - [GStreamer][MSE] Generic main thread notification support
https://bugs.webkit.org/show_bug.cgi?id=188647

Patch by Philippe Normand <philn@igalia.com> on 2018-08-21
Reviewed by Xabier Rodriguez-Calvar.

Using GstBus for main thread notifications has the side effect of "leaking" the
application messages to the media player, leading to CPU cycles wasting.

No new tests, existing MSE tests cover this change.

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webkit_media_src_init):
(webKitMediaSrcFinalize):
(webKitMediaSrcSetMediaPlayerPrivate):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:
1:08 AM Changeset in webkit [235292] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235109 - [GStreamer][MSE] Remove parsers from playback pipeline
https://bugs.webkit.org/show_bug.cgi?id=188646

Patch by Philippe Normand <philn@igalia.com> on 2018-08-16
Reviewed by Xabier Rodriguez-Calvar.

Decodebin already includes parsers in front of the decoders.

No new tests, existing MSE tests cover this change.

  • platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:

(WebCore::PlaybackPipeline::addSourceBuffer):
(WebCore::PlaybackPipeline::attachTrack):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:

(webKitMediaSrcLinkSourcePad):

  • platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:
1:08 AM Changeset in webkit [235291] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.22/Source/WebCore

Merge r235108 - Unreviewed, rolling out r234979.
https://bugs.webkit.org/show_bug.cgi?id=188780

broke ubuntu LTS build (Requested by philn on #webkit).

Reverted changeset:

"[GTK] Never return an uninitialized ImageGStreamer object."
https://bugs.webkit.org/show_bug.cgi?id=188305
https://trac.webkit.org/changeset/234979

1:07 AM Changeset in webkit [235290] by Carlos Garcia Campos
  • 31 edits
    7 adds in releases/WebKitGTK/webkit-2.22

Merge r235106 - Inline DataView accesses into DFG/FTL
https://bugs.webkit.org/show_bug.cgi?id=188573
<rdar://problem/43286746>

Reviewed by Michael Saboff.

JSTests:

  • microbenchmarks/data-view-accesses-2.js: Added.

(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):
(test):

  • microbenchmarks/data-view-accesses.js: Added.

(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):

  • stress/dataview-jit-bounds-checks.js: Added.

(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):

  • stress/dataview-jit-get.js: Added.

(assert):
(test1.bigEndian):
(test1.littleEndian):
(test1.biEndian):
(test1):
(test2.bigEndian):
(test2.littleEndian):
(test2.biEndian):
(test2):
(test3.bigEndian):
(test3.littleEndian):
(test3.biEndian):
(test3):
(test4.bigEndian):
(test4.littleEndian):
(test4.biEndian):
(test4):
(test5.bigEndian):
(test5.littleEndian):
(test5.biEndian):
(test5):
(test6.bigEndian):
(test6.littleEndian):
(test6.biEndian):
(test6):
(test7.load):
(test7):
(test8.load):
(test8):

  • stress/dataview-jit-neuter.js: Added.

(assert):
(test.load):
(test):
(test2.load):
(test2):

  • stress/dataview-jit-set.js: Added.

(assert):
(isLittleEndian):
(readByte):
(readHex):
(test.storeLittleEndian):
(test.storeBigEndian):
(test.store):
(test):
(test2.storeLittleEndian):
(test2.storeBigEndian):
(test2.store):
(test2):
(test3.storeLittleEndian):
(test3.storeBigEndian):
(test3.store):
(test3):
(test4.storeLittleEndian):
(test4.storeBigEndian):
(test4.store):
(test4):
(test5.storeLittleEndian):
(test5.storeBigEndian):
(test5.store):
(test5):
(test6.storeLittleEndian):
(test6.storeBigEndian):
(test6.store):
(test6):
(test7.store):
(test7):
(test8.store):
(test8):

  • stress/dataview-jit-unaligned-accesses.js: Added.

(assert):
(let.p.of.Object.keys.let.str):
(let.p.of.Object.keys):

Source/JavaScriptCore:

This patch teaches the DFG/FTL to inline DataView accesses. The approach is
straight forward. We inline the various get*/set* operations as intrinsics.

This patch takes the most obvious approach for now. We OSR exit when:

  • An isLittleEndian argument is provided, and is not a boolean.
  • The index isn't an integer.
  • The |this| isn't a DataView.
  • We do an OOB access (or see a neutered array)

To implement this change in a performant way, this patch teaches the macro
assembler how to emit byte swap operations. The semantics of the added functions
are byteSwap + zero extend. This means for the 16bit byte swaps, we need
to actually emit zero extend instructions. For the 32/64bit byte swaps,
the instructions already have these semantics.

This patch is just a lightweight initial implementation. There are some easy
extensions we can do in future changes:

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::byteSwap16):
(JSC::MacroAssemblerARM64::byteSwap32):
(JSC::MacroAssemblerARM64::byteSwap64):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::byteSwap32):
(JSC::MacroAssemblerX86Common::byteSwap16):
(JSC::MacroAssemblerX86Common::byteSwap64):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::bswapl_r):
(JSC::X86Assembler::bswapq_r):
(JSC::X86Assembler::shiftInstruction16):
(JSC::X86Assembler::rolw_i8r):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • assembler/testmasm.cpp:

(JSC::testByteSwap):
(JSC::run):

  • bytecode/DataFormat.h:
  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):
(JSC::speculationFromClassInfo):
(JSC::speculationFromJSType):
(JSC::speculationFromString):

  • bytecode/SpeculatedType.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • 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::dataViewData):

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

(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateDataViewObject):
(JSC::DFG::SpeculativeJIT::speculate):

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

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::byteSwap32):
(JSC::FTL::DFG::LowerDFGToB3::byteSwap64):
(JSC::FTL::DFG::LowerDFGToB3::emitCodeBasedOnEndiannessBranch):
(JSC::FTL::DFG::LowerDFGToB3::compileDataViewGet):
(JSC::FTL::DFG::LowerDFGToB3::compileDataViewSet):
(JSC::FTL::DFG::LowerDFGToB3::lowDataViewObject):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateDataViewObject):

  • runtime/Intrinsic.cpp:

(JSC::intrinsicName):

  • runtime/Intrinsic.h:
  • runtime/JSDataViewPrototype.cpp:

Source/WTF:

  • wtf/TriState.h:
1:07 AM Changeset in webkit [235289] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merge r235104 - [YARR] Extend size of fixed characters bulk matching in 64bit platform
https://bugs.webkit.org/show_bug.cgi?id=181989

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2018-08-20
Reviewed by Michael Saboff.

JSTests:

  • stress/characters-regexp-ignore-case.js: Added.

(shouldBe):
(testH):
(testHe):
(testHel):
(testHell):
(testHello):
(testHelloW):
(testHelloWo):
(testHelloWor):
(testHelloWorl):
(testHelloWorld):

  • stress/characters-regexp.js: Added.

(shouldBe):
(testH):
(testHe):
(testHel):
(testHell):
(testHello):
(testHelloW):
(testHelloWo):
(testHelloWor):
(testHelloWorl):
(testHelloWorld):

Source/JavaScriptCore:

This patch extends bulk matching style for fixed-sized characters.
In 64bit environment, the GPR can hold up to 8 characters. This change
reduces the code size since we can fuse multiple mov operations into one.

  • assembler/LinkBuffer.h:
  • runtime/Options.h:
  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::compile):

1:07 AM Changeset in webkit [235288] by Carlos Garcia Campos
  • 19 edits
    2 adds in releases/WebKitGTK/webkit-2.22

Merge r235103 - Web Inspector: allow breakpoints to be set for specific event listeners
https://bugs.webkit.org/show_bug.cgi?id=183138

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

  • inspector/protocol/DOM.json:

Add setBreakpointForEventListener and removeBreakpointForEventListener, each of which
takes an eventListenerId and toggles whether that specific usage of that event listener
should have a breakpoint and pause before running.

Source/WebCore:

Test: inspector/dom/breakpoint-for-event-listener.html

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

(WebCore::InspectorDOMAgent::getEventListenersForNode):
(WebCore::InspectorDOMAgent::setEventListenerDisabled):
(WebCore::InspectorDOMAgent::setBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::removeBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::willRemoveEventListener):
(WebCore::InspectorDOMAgent::isEventListenerDisabled):
(WebCore::InspectorDOMAgent::hasBreakpointForEventListener): Added.
(WebCore::InspectorDOMAgent::idForEventListener): Added.
Rework the event listener data structure to be based on ID instead of EventListener, since
it is possible to have the same EventListener be used for multiple events.

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

(WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint):
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent): Added.
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded):
For DOM events, also check to see if there is a matching event listener specific breakpoint
set via the DOMAgent, and break on it if one is found.

  • inspector/InspectorInstrumentation.h:
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::willHandleEventImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::pauseOnNativeEventIfNeeded):
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
Split off pauseOnNativeEventIfNeeded to only handle non-DOM events, since all DOM events
would already only go through willHandleEvent.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Models/EventBreakpoint.js:

(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload): Added.
(WI.EventBreakpoint.prototype.get eventListener): Added.

  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager):

  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.get eventBreakpoints): Added.
(WI.DOMTreeManager.prototype._setDocument):
(WI.DOMTreeManager.prototype.setEventListenerDisabled):
(WI.DOMTreeManager.prototype.setBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.removeBreakpointForEventListener): Added.
(WI.DOMTreeManager.prototype.breakpointForEventListenerId): Added.

  • UserInterface/Controllers/EventBreakpointTreeController.js:

(WI.EventBreakpointTreeController):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):

  • UserInterface/Views/EventListenerSectionGroup.js:

(WI.EventListenerSectionGroup):
(WI.EventListenerSectionGroup.prototype._createDisabledToggleRow):
(WI.EventListenerSectionGroup.prototype._createBreakpointToggleRow): Added.

  • UserInterface/Views/EventBreakpointTreeElement.js:

(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.ondelete):
(WI.EventBreakpointTreeElement.prototype.populateContextMenu):
(WI.EventBreakpointTreeElement.prototype._toggleBreakpoint):

LayoutTests:

  • inspector/dom/breakpoint-for-event-listener-expected.txt: Added.
  • inspector/dom/breakpoint-for-event-listener.html: Added.
1:07 AM Changeset in webkit [235287] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Source/JavaScriptCore

Merge r235102 - Fix the LLInt so that btjs shows vmEntryToJavaScript instead of llintPCRangeStart for the entry frame.
https://bugs.webkit.org/show_bug.cgi?id=188769

Reviewed by Michael Saboff.

  • llint/LowLevelInterpreter.asm:
  • Just put an unused instruction between llintPCRangeStart and vmEntryToJavaScript so that libunwind doesn't get confused by the 2 labels pointing to the same code address.
1:06 AM Changeset in webkit [235286] by Carlos Garcia Campos
  • 35 edits in releases/WebKitGTK/webkit-2.22/Source/WebKit

Merge r235101 - Use unified build for NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=185011

Reviewed by Alex Christensen.

  • NetworkProcess/Cookies/WebCookieManager.cpp:
  • NetworkProcess/Downloads/Download.cpp:
  • NetworkProcess/Downloads/DownloadManager.cpp:
  • NetworkProcess/Downloads/PendingDownload.cpp:
  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:
  • NetworkProcess/NetworkCORSPreflightChecker.cpp:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:
  • NetworkProcess/NetworkContentRuleListManager.cpp:
  • NetworkProcess/NetworkDataTask.cpp:
  • NetworkProcess/NetworkDataTaskBlob.cpp:
  • NetworkProcess/NetworkLoadChecker.cpp:
  • NetworkProcess/NetworkProcess.cpp:
  • NetworkProcess/NetworkProcessPlatformStrategies.cpp:
  • NetworkProcess/NetworkResourceLoadParameters.cpp:
  • NetworkProcess/NetworkResourceLoader.cpp:
  • NetworkProcess/NetworkSession.cpp:
  • NetworkProcess/NetworkSocketStream.cpp:
  • NetworkProcess/PingLoad.cpp:
  • NetworkProcess/cache/CacheStorageEngine.cpp:
  • NetworkProcess/cache/CacheStorageEngineCache.cpp:
  • NetworkProcess/cache/CacheStorageEngineCaches.cpp:
  • NetworkProcess/cache/CacheStorageEngineConnection.cpp:
  • NetworkProcess/cache/NetworkCache.cpp:
  • NetworkProcess/capture/NetworkCaptureEvent.cpp:
  • NetworkProcess/capture/NetworkCaptureManager.cpp:
  • NetworkProcess/capture/NetworkCaptureRecorder.cpp:
  • NetworkProcess/capture/NetworkCaptureReplayer.cpp:
  • NetworkProcess/capture/NetworkDataTaskReplay.cpp:
  • NetworkProcess/webrtc/NetworkMDNSRegister.cpp:
  • NetworkProcess/Downloads/cocoa/DownloadCocoa.mm:

(WebKit::Download::platformCancelNetworkLoad):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:didBecomeInvalidWithError:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]):
Fix the build with unified sources.

  • Sources.txt: Un-@no-unify NetworkProcess/*.
  • SourcesCocoa.txt: Un-@no-unify NetworkProcess/*.
1:06 AM Changeset in webkit [235285] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.22/Source

Merge r235098 - [CMake] Sync unified build with Cocoa ports
https://bugs.webkit.org/show_bug.cgi?id=188732

Reviewed by Tim Horton.

Source/WebCore:

For iOS, disambiguate between ::WebEvent declared in PlatformKeyboardEvent.h and
WebCore::WebEvent declared in WebEvent.h. It's expected that we'll have to deal with random
issues like this when modifying unrelated source files in higher-level projects, since any
change to the sources list changes which files get bundled together, and headers from
lower-level projects that were not included before may now be included together.

  • platform/PlatformKeyboardEvent.h:

(WebCore::PlatformKeyboardEvent::event const):

Source/WebKit:

Sync unified build with Cocoa ports. This enables unified build for WebKit/Platform and
WebKit/Shared.

Lots of files need to be moved around since the existing Sources.txt was not copied from
CMakeLists.txt. This replaces the Sources.txt with the sources list from CMakeList.txt.
Files that are not built for Cocoa are moved to SourcesGTK.txt, SourcesWPE.txt, and
PlatformWin.cmake. Files that are built only on Cocoa are moved to SourcesCocoa.txt. There's
plenty of room to determine if many of these files really need to be platform-specific in
the future, but let's not change that now.

Unfortunately, several files under Shared and PluginProcess need to be un-unified to be
usable for GTK's WebKitPluginProcess2. I've never managed to understand why, but it won't
link otherwise. Fortunately, this only affects a few files (listed in
PluginProcessGTK2_SOURCES), only a couple dozen of which are cross-platform.

  • CMakeLists.txt:
  • PlatformWin.cmake:
  • Sources.txt:
  • SourcesCocoa.txt:
  • SourcesGTK.txt:
  • SourcesWPE.txt:
1:06 AM Changeset in webkit [235284] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.22/Tools

Merge r235080 - [GTK] Sort inspector GResource manifest to ensure reproducible builds
https://bugs.webkit.org/show_bug.cgi?id=188738

Patch by Bernhard M. Wiedemann <bwiedemann@suse.de> on 2018-08-20
Reviewed by Michael Catanzaro.

  • glib/generate-inspector-gresource-manifest.py:

(get_filenames): sort list of input files

1:06 AM Changeset in webkit [235283] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.22

Merge r235050 - Throw an exception if window.open() gets passed a URL that cannot be parsed
https://bugs.webkit.org/show_bug.cgi?id=171656

Patch by Rob Buis <rbuis@igalia.com> on 2018-08-20
Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/url/failure-expected.txt:

Source/WebCore:

Throw a SyntaxError exception when an invalid url gets passed into window.open().

Tests: imported/w3c/web-platform-tests/url/failure.html

fast/dom/Window/open-invalid-url.html

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::open):
(WebCore::DOMWindow::showModalDialog):

  • page/DOMWindow.h:
  • page/DOMWindow.idl:
  • testing/Internals.cpp:

(WebCore::Internals::openDummyInspectorFrontend):

LayoutTests:

  • fast/dom/Window/open-invalid-url-expected.txt:
  • fast/dom/Window/open-invalid-url.html:
1:04 AM Changeset in webkit [235282] by Carlos Garcia Campos
  • 12 edits in trunk

[GTK][WPE] Add API to inject/register user content in isolated worlds
https://bugs.webkit.org/show_bug.cgi?id=188883

Reviewed by Michael Catanzaro.

Source/WebKit:

Add new API to create user scripts/stylesheets for a given script world and to register/unregister user script
messages in a given script world.

  • UIProcess/API/glib/WebKitUserContent.cpp:

(webkitUserContentWorld):
(_WebKitUserStyleSheet::_WebKitUserStyleSheet):
(webkit_user_style_sheet_new):
(webkit_user_style_sheet_new_for_world):
(_WebKitUserScript::_WebKitUserScript):
(webkit_user_script_new):
(webkit_user_script_new_for_world):

  • UIProcess/API/glib/WebKitUserContentManager.cpp:

(webkit_user_content_manager_register_script_message_handler_in_world):
(webkit_user_content_manager_unregister_script_message_handler_in_world):

  • UIProcess/API/glib/WebKitUserContentPrivate.h:
  • UIProcess/API/gtk/WebKitUserContent.h:
  • UIProcess/API/gtk/WebKitUserContentManager.h:
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
  • UIProcess/API/wpe/WebKitUserContent.h:
  • UIProcess/API/wpe/WebKitUserContentManager.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::addUserContentWorlds):

Tools:

Add test cases for the new API.

  • TestWebKitAPI/Tests/WebKitGLib/TestWebKitUserContentManager.cpp:

(isStyleSheetInjectedForURLAtPath):
(isScriptInjectedForURLAtPath):
(testUserContentManagerInjectedStyleSheet):
(testUserContentManagerInjectedScript):
(UserScriptMessageTest::registerHandler):
(UserScriptMessageTest::unregisterHandler):
(UserScriptMessageTest::postMessageAndWaitUntilReceived):
(testUserContentManagerScriptMessageInWorldReceived):
(beforeAll):

12:43 AM Changeset in webkit [235281] by Antti Koivisto
  • 4 edits in trunk/Source/WebCore

Use OptionSet::containsAny and containsAll in some more places
https://bugs.webkit.org/show_bug.cgi?id=188885

Reviewed by Sam Weinig.

  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::activityStateChanged):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateLayerPositionsAfterScroll):
(WebCore::RenderLayer::paintLayerContents):
(WebCore::RenderLayer::calculateClipRects const):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::~RenderLayerBacking):

12:32 AM Changeset in webkit [235280] by Kocsen Chung
  • 1 copy in tags/Safari-607.1.3.1

Tag Safari-607.1.3.1.

12:27 AM Changeset in webkit [235279] by Kocsen Chung
  • 28 edits in tags/Safari-607.1.3/Source/WebKit

Revert r234941. rdar://problem/43667266

12:27 AM Changeset in webkit [235278] by Kocsen Chung
  • 5 edits in tags/Safari-607.1.3/Source/WebKit

Revert r234990. rdar://problem/43667266

12:27 AM Changeset in webkit [235277] by Kocsen Chung
  • 28 edits in tags/Safari-607.1.3/Source/WebKit

Revert r235266. rdar://problem/43667266

12:27 AM Changeset in webkit [235276] by Kocsen Chung
  • 5 edits in tags/Safari-607.1.3/Source/WebKit

Revert r235270. rdar://problem/43667266

Aug 23, 2018:

11:38 PM Changeset in webkit [235275] by Kocsen Chung
  • 7 edits in tags/Safari-607.1.3/Source

Versioning.

10:51 PM Changeset in webkit [235274] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

fast/files/blob-network-process-crash.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=188911

Reviewed by Saam Barati.

The flakiness appears to come from the web content process not getting notified of
the termination of the network process in time. Wait for the network process to
relaunch after terminating one by continuously fetch'ing itself with an increasing
time interval until it succeeds.

  • fast/files/blob-network-process-crash.html:
9:55 PM Inspecting the GC heap edited by Simon Fraser
(diff)
9:55 PM Changeset in webkit [235273] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Color picker: can't enter decimal numbers for opacity
https://bugs.webkit.org/show_bug.cgi?id=187026
<rdar://problem/41446500>

Reviewed by Brian Burg.

After every "input" event, we update the color value of the WI.ColorPicker based on a
generated string using the values of the various <input>. The issue with this approach is
that adding a decimal point (e.g. "0.") would still be construed as 0, meaning that the
color wouldn't change and would instead be reset back to it's old value. This patch adds an
early return if the newly generated color has the same value as the current color, thereby
meaning that the color wouldn't change when changing from "0" to "0.".

  • UserInterface/Views/ColorPicker.js:

(WI.ColorPicker):
(WI.ColorPicker.createColorInput):
(WI.ColorPicker.prototype._handleColorInputInput):

9:51 PM Inspecting the GC heap edited by Simon Fraser
(diff)
9:38 PM Inspecting the GC heap edited by Simon Fraser
(diff)
9:36 PM gc-heap-inspector.png attached to Inspecting the GC heap by Simon Fraser
GC heap inspector screenshot
9:36 PM Inspecting the GC heap edited by Simon Fraser
(diff)
9:33 PM gc-heap-inspector.png attached to WikiStart by Simon Fraser
GC heap inspector
9:31 PM Inspecting the GC heap edited by Simon Fraser
(diff)
9:22 PM Changeset in webkit [235272] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.10-branch/Source

Versioning.

9:10 PM Changeset in webkit [235271] by Simon Fraser
  • 170 edits
    1 copy
    5 adds in trunk

Add support for dumping GC heap snapshots, and a viewer
https://bugs.webkit.org/show_bug.cgi?id=186416

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Make a way to dump information about the GC heap that is useful for looking for leaked
or abandoned objects. This dump is obtained (on Apple platforms) via:

notifyutil -p com.apple.WebKit.dumpGCHeap

which writes a JSON file to /tmp which can then be loaded into the viewer in Tools/GCHeapInspector.

This leverages the heap snapshot used by Web Inspector, adding an alternate format for
the snapshot JSON that adds additional data about objects and why they are GC roots.

SlotVisitor maintains a RootMarkReason (via SetRootMarkReasonScope) that allows
the HeapSnapshotBuilder to keep track of why a JSCell was treated as a GC root. For
objects visited via opaque roots, we record the reason why via a new out param to
isReachableFromOpaqueRoots().

HeapSnapshotBuilder is enhanced to produce GCDebuggingSnapshot JSON output. This contains
additional information including the address of the JSCell* and the wrapped object (for
JSDOMWrappers), the root reasons, and for some objects like JSDocument a label which can
be the document URL.

GCDebuggingSnapshots are always full snapshots (previous snapshots are not kept around).

  • API/JSAPIWrapperObject.mm:

(JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots):

  • API/JSManagedValue.mm:

(JSManagedValueHandleOwner::isReachableFromOpaqueRoots):

  • API/glib/JSAPIWrapperObjectGLib.cpp:

(JSAPIWrapperObjectHandleOwner::isReachableFromOpaqueRoots):

  • CMakeLists.txt:
  • heap/ConservativeRoots.h:

(JSC::ConservativeRoots::size const):
(JSC::ConservativeRoots::size): Deleted.

  • heap/Heap.cpp:

(JSC::Heap::addCoreConstraints):

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::getNextObjectIdentifier):
(JSC::HeapSnapshotBuilder::HeapSnapshotBuilder):
(JSC::HeapSnapshotBuilder::~HeapSnapshotBuilder):
(JSC::HeapSnapshotBuilder::buildSnapshot):
(JSC::HeapSnapshotBuilder::appendNode):
(JSC::HeapSnapshotBuilder::appendEdge):
(JSC::HeapSnapshotBuilder::setOpaqueRootReachabilityReasonForCell):
(JSC::HeapSnapshotBuilder::setWrappedObjectForCell):
(JSC::HeapSnapshotBuilder::previousSnapshotHasNodeForCell):
(JSC::snapshotTypeToString):
(JSC::rootTypeToString):
(JSC::HeapSnapshotBuilder::setLabelForCell):
(JSC::HeapSnapshotBuilder::descriptionForCell const):
(JSC::HeapSnapshotBuilder::json):
(JSC::HeapSnapshotBuilder::hasExistingNodeForCell): Deleted.

  • heap/HeapSnapshotBuilder.h:
  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendSlow):

  • heap/SlotVisitor.h:

(JSC::SlotVisitor::heapSnapshotBuilder const):
(JSC::SlotVisitor::rootMarkReason const):
(JSC::SlotVisitor::setRootMarkReason):
(JSC::SetRootMarkReasonScope::SetRootMarkReasonScope):
(JSC::SetRootMarkReasonScope::~SetRootMarkReasonScope):

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::specializedVisit):

  • heap/WeakHandleOwner.cpp:

(JSC::WeakHandleOwner::isReachableFromOpaqueRoots):

  • heap/WeakHandleOwner.h:
  • runtime/SimpleTypedArrayController.cpp:

(JSC::SimpleTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots):

  • runtime/SimpleTypedArrayController.h:
  • tools/JSDollarVM.cpp:

Source/WebCore:

Make a way to dump information about the GC heap that is useful for looking for leaked
or abandoned objects. This dump is obtained (on Apple platforms) via:

notifyutil -p com.apple.WebKit.dumpGCHeap

which writes a JSON file to /tmp which can then be loaded into the viewer in Tools/GCHeapInspector.

This leverages the heap snapshot used by Web Inspector, adding an alternate format for
the snapshot JSON that adds additional data about objects and why they are GC roots.

The generated bindings code is changed to include the output root reason from isReachableFromOpaqueRoots(),
and to implement heapSnapshot() which provides the address of the wrapped object. A new IDL attribute,
CustomHeapSnapshot, is used to allow custom heapSnapshot() implementations for classes like JSDocument
that need to decorate the heap snapshot cell data with things like the document URL.

GCController registers a notifyutil callback which gathers the debug heap snapshot, and dumps it
to a file in /tmp. The file path is printed out to the system log.

  • bindings/js/DOMGCOutputConstraint.cpp:

(WebCore::DOMGCOutputConstraint::executeImpl):

  • bindings/js/GCController.cpp:

(WebCore::GCController::GCController):
(WebCore::GCController::dumpHeap):

  • bindings/js/GCController.h:
  • bindings/js/JSCSSRuleListCustom.cpp:

(WebCore::JSCSSRuleListOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackDataWeak::WeakOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSCallbackData.h:
  • bindings/js/JSCanvasRenderingContext2DCustom.cpp:

(WebCore::JSCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlot):
(WebCore::JSDOMWindow::heapSnapshot):

  • bindings/js/JSDeprecatedCSSOMValueCustom.cpp:

(WebCore::JSDeprecatedCSSOMValueOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::heapSnapshot):

  • bindings/js/JSMicrotaskCallback.h:

(WebCore::JSMicrotaskCallback::call):

  • bindings/js/JSMutationObserverCustom.cpp:

(WebCore::JSMutationObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSNavigatorCustom.cpp:

(WebCore::JSNavigator::visitAdditionalChildren):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::isReachableFromDOM):
(WebCore::JSNodeOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSNodeListCustom.cpp:

(WebCore::JSNodeListOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSOffscreenCanvasRenderingContext2DCustom.cpp:

(WebCore::JSOffscreenCanvasRenderingContext2DOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSPerformanceObserverCustom.cpp:

(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):

  • bindings/js/JSPopStateEventCustom.cpp:
  • bindings/js/JSTextTrackCueCustom.cpp:

(WebCore::JSTextTrackCueOwner::isReachableFromOpaqueRoots):

  • bindings/js/WebCoreTypedArrayController.cpp:

(WebCore::WebCoreTypedArrayController::JSArrayBufferOwner::isReachableFromOpaqueRoots):

  • bindings/js/WebCoreTypedArrayController.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::JSInterfaceName::heapSnapshot):
(WebCore::JSInterfaceNameOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSInterfaceName.h:
  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::JSMapLike::heapSnapshot):
(WebCore::JSMapLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSMapLike.h:
  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:

(WebCore::JSReadOnlyMapLike::heapSnapshot):
(WebCore::JSReadOnlyMapLikeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.h:
  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::JSTestActiveDOMObject::heapSnapshot):
(WebCore::JSTestActiveDOMObjectOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:
  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::JSTestCEReactions::heapSnapshot):
(WebCore::JSTestCEReactionsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCEReactions.h:
  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::JSTestCEReactionsStringifier::heapSnapshot):
(WebCore::JSTestCEReactionsStringifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::JSTestCallTracer::heapSnapshot):
(WebCore::JSTestCallTracerOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCallTracer.h:
  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::JSTestClassWithJSBuiltinConstructor::heapSnapshot):
(WebCore::JSTestClassWithJSBuiltinConstructorOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:

(WebCore::JSTestCustomConstructorWithNoInterfaceObject::heapSnapshot):
(WebCore::JSTestCustomConstructorWithNoInterfaceObjectOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::JSTestDOMJIT::heapSnapshot):

  • bindings/scripts/test/JS/JSTestDOMJIT.h:
  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::JSTestEnabledBySetting::heapSnapshot):
(WebCore::JSTestEnabledBySettingOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.h:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::JSTestEventConstructor::heapSnapshot):

  • bindings/scripts/test/JS/JSTestEventConstructor.h:
  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::heapSnapshot):

  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::JSTestException::heapSnapshot):
(WebCore::JSTestExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::JSTestGenerateIsReachable::heapSnapshot):
(WebCore::JSTestGenerateIsReachableOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::JSTestGlobalObject::heapSnapshot):
(WebCore::JSTestGlobalObjectOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestGlobalObject.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestIndexedSetterNoIdentifier::heapSnapshot):
(WebCore::JSTestIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::JSTestIndexedSetterThrowingException::heapSnapshot):
(WebCore::JSTestIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestIndexedSetterWithIdentifier::heapSnapshot):
(WebCore::JSTestIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::heapSnapshot):
(WebCore::JSTestInterfaceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::JSTestInterfaceLeadingUnderscore::heapSnapshot):
(WebCore::JSTestInterfaceLeadingUnderscoreOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::JSTestIterable::heapSnapshot):
(WebCore::JSTestIterableOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestIterable.h:
  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::JSTestMediaQueryListListener::heapSnapshot):
(WebCore::JSTestMediaQueryListListenerOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterNoIdentifier::heapSnapshot):
(WebCore::JSTestNamedAndIndexedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::JSTestNamedAndIndexedSetterThrowingException::heapSnapshot):
(WebCore::JSTestNamedAndIndexedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedAndIndexedSetterWithIdentifier::heapSnapshot):
(WebCore::JSTestNamedAndIndexedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::JSTestNamedConstructor::heapSnapshot):
(WebCore::JSTestNamedConstructorOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedConstructor.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::JSTestNamedDeleterNoIdentifier::heapSnapshot):
(WebCore::JSTestNamedDeleterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::JSTestNamedDeleterThrowingException::heapSnapshot):
(WebCore::JSTestNamedDeleterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::JSTestNamedDeleterWithIdentifier::heapSnapshot):
(WebCore::JSTestNamedDeleterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::JSTestNamedDeleterWithIndexedGetter::heapSnapshot):
(WebCore::JSTestNamedDeleterWithIndexedGetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::JSTestNamedGetterCallWith::heapSnapshot):
(WebCore::JSTestNamedGetterCallWithOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.h:
  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::JSTestNamedGetterNoIdentifier::heapSnapshot):
(WebCore::JSTestNamedGetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::JSTestNamedGetterWithIdentifier::heapSnapshot):
(WebCore::JSTestNamedGetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::JSTestNamedSetterNoIdentifier::heapSnapshot):
(WebCore::JSTestNamedSetterNoIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::JSTestNamedSetterThrowingException::heapSnapshot):
(WebCore::JSTestNamedSetterThrowingExceptionOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::JSTestNamedSetterWithIdentifier::heapSnapshot):
(WebCore::JSTestNamedSetterWithIdentifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetter::heapSnapshot):
(WebCore::JSTestNamedSetterWithIndexedGetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::JSTestNamedSetterWithIndexedGetterAndSetter::heapSnapshot):
(WebCore::JSTestNamedSetterWithIndexedGetterAndSetterOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:

(WebCore::JSTestNamedSetterWithOverrideBuiltins::heapSnapshot):
(WebCore::JSTestNamedSetterWithOverrideBuiltinsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:

(WebCore::JSTestNamedSetterWithUnforgableProperties::heapSnapshot):
(WebCore::JSTestNamedSetterWithUnforgablePropertiesOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.h:
  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:

(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins::heapSnapshot):
(WebCore::JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::JSTestNode::heapSnapshot):

  • bindings/scripts/test/JS/JSTestNode.h:
  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::JSTestObj::heapSnapshot):
(WebCore::JSTestObjOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::JSTestOverloadedConstructors::heapSnapshot):
(WebCore::JSTestOverloadedConstructorsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::JSTestOverloadedConstructorsWithSequence::heapSnapshot):
(WebCore::JSTestOverloadedConstructorsWithSequenceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::JSTestOverrideBuiltins::heapSnapshot):
(WebCore::JSTestOverrideBuiltinsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::JSTestPluginInterface::heapSnapshot):
(WebCore::JSTestPluginInterfaceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestPluginInterface.h:
  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::JSTestPromiseRejectionEvent::heapSnapshot):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.h:
  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::JSTestSerialization::heapSnapshot):
(WebCore::JSTestSerializationOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestSerialization.h:
  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:

(WebCore::JSTestSerializationIndirectInheritance::heapSnapshot):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.h:
  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:

(WebCore::JSTestSerializationInherit::heapSnapshot):

  • bindings/scripts/test/JS/JSTestSerializationInherit.h:
  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:

(WebCore::JSTestSerializationInheritFinal::heapSnapshot):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.h:
  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::JSTestSerializedScriptValueInterface::heapSnapshot):
(WebCore::JSTestSerializedScriptValueInterfaceOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::JSTestStringifier::heapSnapshot):
(WebCore::JSTestStringifierOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifier.h:
  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::JSTestStringifierAnonymousOperation::heapSnapshot):
(WebCore::JSTestStringifierAnonymousOperationOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.h:
  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::JSTestStringifierNamedOperation::heapSnapshot):
(WebCore::JSTestStringifierNamedOperationOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.h:
  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::JSTestStringifierOperationImplementedAs::heapSnapshot):
(WebCore::JSTestStringifierOperationImplementedAsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.h:
  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::JSTestStringifierOperationNamedToString::heapSnapshot):
(WebCore::JSTestStringifierOperationNamedToStringOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.h:
  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::JSTestStringifierReadOnlyAttribute::heapSnapshot):
(WebCore::JSTestStringifierReadOnlyAttributeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.h:
  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::JSTestStringifierReadWriteAttribute::heapSnapshot):
(WebCore::JSTestStringifierReadWriteAttributeOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.h:
  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::JSTestTypedefs::heapSnapshot):
(WebCore::JSTestTypedefsOwner::isReachableFromOpaqueRoots):

  • bindings/scripts/test/JS/JSTestTypedefs.h:
  • dom/Document.idl:
  • page/DOMWindow.idl:

Source/WebInspectorUI:

Make a way to dump information about the GC heap that is useful for looking for leaked
or abandoned objects. This dump is obtained (on Apple platforms) via:

notifyutil -p com.apple.WebKit.dumpGCHeap

which writes a JSON file to /tmp which can then be loaded into the viewer in Tools/GCHeapInspector.

This leverages the heap snapshot used by Web Inspector, adding an alternate format for
the snapshot JSON that adds additional data about objects and why they are GC roots.

The generated bindings code is changed to include the output root reason from isReachableFromOpaqueRoots(),
and to implement heapSnapshot() which provides the address of the wrapped object. A new IDL attribute,
CustomHeapSnapshot, is used to allow custom heapSnapshot() implementations for classes like JSDocument
that need to decorate the heap snapshot cell data with things like the document URL.

GCController registers a notifyutil callback which gathers the debug heap snapshot, and dumps it
to a file in /tmp. The file path is printed out to the system log.

  • UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:

(HeapSnapshot):

Tools:

Add a viewer for GC heap snapshots. A snapshot JSON file can be dragged into this
page for inspection (or set via the 'filename' URL parameter).

For now, this page shows all objects, all roots, and the shortest path from a root
to all HTMLDocuments and Windows.

  • GCHeapInspector/gc-heap-inspector.html: Added.
  • GCHeapInspector/heap-analysis/HeapSnapshot.js: Copied from Source/WebInspectorUI/UserInterface/Workers/HeapSnapshot/HeapSnapshot.js.
  • GCHeapInspector/script/interface.js: Added.
9:08 PM Changeset in webkit [235270] by Kocsen Chung
  • 5 edits in tags/Safari-607.1.3/Source/WebKit

Revert r234990. rdar://problem/43667266

9:06 PM Inspecting the GC heap created by Simon Fraser
8:49 PM WikiStart edited by Simon Fraser
(diff)
8:41 PM Changeset in webkit [235269] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Add a flaky failing test expectation to fast/files/blob-network-process-crash.html
while we investigate the root cause in webkit.org/b/188911.

  • platform/wk2/TestExpectations:
7:01 PM Changeset in webkit [235268] by rniwa@webkit.org
  • 3 edits
    2 adds in trunk

initKeyboardEvent doesn't clear CapsLock state
https://bugs.webkit.org/show_bug.cgi?id=188909

Reviewed by Wenson Hsieh.

Source/WebCore:

Fixed the bug by not preserving CapsLock state in setModifierKeys variant which takes boolean
for altGraphKey, which is only called by KeyboardEvent::initKeyboardEvent.

Test: fast/events/init-event-clears-capslock.html

  • dom/UIEventWithKeyState.h:

(WebCore::UIEventWithKeyState::setModifierKeys):

LayoutTests:

Added a regression test. Note that altGraph is only supported in WebKit
so Chrome and Firefox would fail to reset it via initKeyboardEvent.

  • fast/events/init-event-clears-capslock-expected.txt: Added.
  • fast/events/init-event-clears-capslock.html: Added.
6:33 PM Changeset in webkit [235267] by Kocsen Chung
  • 7 edits in branches/safari-606.1.36.1-branch/Source

Versioning.

6:31 PM Changeset in webkit [235266] by Kocsen Chung
  • 28 edits in tags/Safari-607.1.3/Source/WebKit

Revert r234941. rdar://problem/43667266

5:59 PM Changeset in webkit [235265] by timothy_horton@apple.com
  • 120 edits in trunk/Source/WebKit

Use unified build for UIProcess
https://bugs.webkit.org/show_bug.cgi?id=185014

Reviewed by Alex Christensen.

  • Sources.txt:
  • SourcesCocoa.txt:
  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/Cocoa/WKWebView.mm:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration urlSchemeHandlerForURLScheme:]):

  • UIProcess/API/glib/IconDatabase.cpp:
  • UIProcess/API/gtk/PageClientImpl.cpp:
  • UIProcess/API/gtk/WebKitColorChooser.cpp:
  • UIProcess/API/gtk/WebKitPopupMenu.cpp:
  • UIProcess/API/gtk/WebKitRemoteInspectorProtocolHandler.cpp:
  • UIProcess/ApplicationStateTracker.mm:
  • UIProcess/Authentication/mac/WebCredentialMac.mm:
  • UIProcess/Automation/cocoa/WebAutomationSessionCocoa.mm:
  • UIProcess/Automation/ios/WebAutomationSessionIOS.mm:
  • UIProcess/Automation/mac/WebAutomationSessionMac.mm:
  • UIProcess/Cocoa/NavigationState.mm:
  • UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
  • UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
  • UIProcess/Cocoa/ViewGestureController.cpp:
  • UIProcess/Cocoa/WKWebViewContentProviderRegistry.mm:

(-[WKWebViewContentProviderRegistry initWithConfiguration:]):
(-[WKWebViewContentProviderRegistry addPage:]):
(-[WKWebViewContentProviderRegistry removePage:]):

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:
  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:
  • UIProcess/Cocoa/WebURLSchemeHandlerCocoa.mm:
  • UIProcess/Cocoa/WebViewImpl.mm:

(-[WKTextTouchBarItemController itemForIdentifier:]):
(WebKit::WebViewImpl::performDragOperation):

  • UIProcess/Downloads/DownloadProxy.cpp:
  • UIProcess/DrawingAreaProxy.cpp:
  • UIProcess/Gamepad/UIGamepad.cpp:
  • UIProcess/Gamepad/UIGamepadProvider.cpp:
  • UIProcess/Gamepad/cocoa/UIGamepadProviderCocoa.mm:
  • UIProcess/HighPerformanceGraphicsUsageSampler.cpp:
  • UIProcess/Network/NetworkProcessProxy.cpp:
  • UIProcess/Notifications/WebNotificationManagerProxy.cpp:
  • UIProcess/PerActivityStateCPUUsageSampler.cpp:
  • UIProcess/Plugins/PluginInfoStore.cpp:
  • UIProcess/Plugins/PluginProcessProxy.cpp:
  • UIProcess/Plugins/mac/PluginInfoStoreMac.mm:
  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeDrawingAreaProxy.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
  • UIProcess/RemoteLayerTree/RemoteLayerTreeScrollingPerformanceData.mm:
  • UIProcess/RemoteLayerTree/RemoteScrollingCoordinatorProxy.cpp:
  • UIProcess/RemoteLayerTree/RemoteScrollingTree.cpp:
  • UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
  • UIProcess/RemoteLayerTree/ios/ScrollingTreeOverflowScrollingNodeIOS.mm:
  • UIProcess/RemoteWebInspectorProxy.cpp:
  • UIProcess/ResourceLoadStatisticsMemoryStore.cpp:
  • UIProcess/ServiceWorkerProcessProxy.cpp:
  • UIProcess/Storage/StorageProcessProxy.cpp:
  • UIProcess/SuspendedPageProxy.cpp:
  • UIProcess/TextCheckerCompletion.cpp:
  • UIProcess/UIMessagePortChannelProvider.cpp:
  • UIProcess/UserMediaPermissionCheckProxy.cpp:
  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
  • UIProcess/UserMediaPermissionRequestProxy.cpp:
  • UIProcess/VisitedLinkStore.cpp:
  • UIProcess/WKInspectorHighlightView.mm:

(findIntersectionOnLineBetweenPoints):
(quadIntersection):
(layerPathWithHole):
(layerPath):
(-[WKInspectorHighlightView _layoutForNodeHighlight:offset:]):
(-[WKInspectorHighlightView _layoutForNodeListHighlight:]):
(-[WKInspectorHighlightView _layoutForRectsHighlight:]):
(-[WKInspectorHighlightView update:]):

  • UIProcess/WebBackForwardList.cpp:
  • UIProcess/WebContextMenuListenerProxy.cpp:
  • UIProcess/WebCookieManagerProxy.cpp:
  • UIProcess/WebEditCommandProxy.cpp:
  • UIProcess/WebFrameProxy.cpp:
  • UIProcess/WebFullScreenManagerProxy.cpp:
  • UIProcess/WebInspectorProxy.cpp:
  • UIProcess/WebNavigationState.cpp:
  • UIProcess/WebOpenPanelResultListenerProxy.cpp:
  • UIProcess/WebPageInjectedBundleClient.cpp:
  • UIProcess/WebPageProxy.cpp:
  • UIProcess/WebProcessPool.cpp:
  • UIProcess/WebProcessProxy.cpp:
  • UIProcess/WebStorage/LocalStorageDatabaseTracker.cpp:
  • UIProcess/WebURLSchemeHandler.cpp:
  • UIProcess/WebURLSchemeTask.cpp:
  • UIProcess/gtk/AcceleratedBackingStoreWayland.cpp:
  • UIProcess/gtk/AcceleratedBackingStoreX11.cpp:
  • UIProcess/ios/DragDropInteractionState.mm:
  • UIProcess/ios/InputViewUpdateDeferrer.mm:
  • UIProcess/ios/PageClientImplIOS.mm:

(-[WKEditCommandObjC initWithWebEditCommandProxy:]):
(-[WKEditCommandObjC command]):

  • UIProcess/ios/SmartMagnificationController.mm:
  • UIProcess/ios/TextCheckerIOS.mm:
  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::removeSwipeSnapshot):

  • UIProcess/ios/WKActionSheetAssistant.mm:

(presentationStyleForView):

  • UIProcess/ios/WKApplicationStateTrackingView.mm:

(-[WKApplicationStateTrackingView initWithFrame:webView:]):
(-[WKApplicationStateTrackingView _applicationDidEnterBackground]):
(-[WKApplicationStateTrackingView _applicationDidFinishSnapshottingAfterEnteringBackground]):
(-[WKApplicationStateTrackingView _applicationWillEnterForeground]):

  • UIProcess/ios/WKGeolocationProviderIOS.mm:

(-[WKGeolocationProviderIOS _startUpdating]):
(-[WKGeolocationProviderIOS _stopUpdating]):
(-[WKGeolocationProviderIOS _setEnableHighAccuracy:]):
(-[WKGeolocationProviderIOS init]):
(-[WKGeolocationProviderIOS initWithProcessPool:]):
(-[WKGeolocationProviderIOS decidePolicyForGeolocationRequestFromOrigin:frame:completionHandler:view:]):
(-[WKGeolocationProviderIOS geolocationAuthorizationGranted]):
(-[WKLegacyCoreLocationProvider positionChanged:]):

  • UIProcess/ios/WKKeyboardScrollingAnimator.mm:

(-[WKKeyboardScrollingAnimator _scrollOffsetForEvent:]):
(-[WKKeyboardScrollingAnimator beginWithEvent:]):
(-[WKKeyboardScrollingAnimator handleKeyEvent:]):
(-[WKKeyboardScrollingAnimator startAnimatedScroll]):
(-[WKKeyboardScrollingAnimator stopAnimatedScroll]):

  • UIProcess/ios/WKLegacyPDFView.mm:
  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView web_setContentProviderData:suggestedFilename:]):

  • UIProcess/ios/WKScrollView.mm:

(-[WKScrollView _systemContentInset]):

  • UIProcess/ios/WKSystemPreviewView.mm:
  • UIProcess/ios/WebPageProxyIOS.mm:
  • UIProcess/mac/CorrectionPanel.mm:

(correctionIndicatorType):

  • UIProcess/mac/PageClientImplMac.mm:
  • UIProcess/mac/RemoteWebInspectorProxyMac.mm:

(-[WKRemoteWebInspectorProxyObjCAdapter initWithRemoteWebInspectorProxy:]):

  • UIProcess/mac/TextCheckerMac.mm:
  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:
  • UIProcess/mac/ViewGestureControllerMac.mm:
  • UIProcess/mac/ViewSnapshotStore.mm:
  • UIProcess/mac/WKFullKeyboardAccessWatcher.mm:

(-[WKFullKeyboardAccessWatcher notifyAllProcessPools]):

  • UIProcess/mac/WKFullScreenWindowController.mm:

(WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface):
(WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const):
(-[WKFullScreenWindowController initWithWindow:webView:page:]):
(-[WKFullScreenWindowController enterFullScreen:]):
(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]):
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]):
(-[WKFullScreenWindowController windowDidEnterFullScreen:]):
(-[WKFullScreenWindowController windowDidExitFullScreen:]):
(-[WKFullScreenWindowController _manager]):
(-[WKFullScreenWindowController _replaceView:with:]):
(zoomAnimation):
(createMask):
(maskAnimation):

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController initWithPage:view:viewImpl:recognizer:]):
(-[WKImmediateActionController willDestroyView:]):
(-[WKImmediateActionController _clearImmediateActionState]):
(-[WKImmediateActionController didPerformImmediateActionHitTest:contentPreventsDefault:userData:]):
(-[WKImmediateActionController immediateActionRecognizerWillPrepare:]):
(-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]):
(-[WKImmediateActionController _webHitTestResult]):
(-[WKImmediateActionController _defaultAnimationController]):
(-[WKImmediateActionController menuItem:maxSizeForPoint:]):
(-[WKImmediateActionController _animationControllerForDataDetectedText]):
(-[WKImmediateActionController _animationControllerForDataDetectedLink]):
(-[WKImmediateActionController _animationControllerForText]):

  • UIProcess/mac/WKInspectorViewController.mm:

(-[WKInspectorViewController initWithInspectedPage:]):
(-[WKInspectorViewController webView]):
(-[WKInspectorViewController configuration]):
(-[WKInspectorViewController webView:runOpenPanelWithParameters:initiatedByFrame:completionHandler:]):
(-[WKInspectorViewController webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WKInspectorViewController inspectorWKWebViewReload:]):

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _expectedPreviewCallbackForRect:]):
(pageDidDrawToImage):
(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]):
(pageDidComputePageRects):
(-[WKPrintingView _askPageToComputePageRects]):
(-[WKPrintingView _pageForRect:]):
(-[WKPrintingView _drawPDFDocument:page:atPoint:]):
(-[WKPrintingView _drawPreview:]):
(-[WKPrintingView drawRect:]):
(-[WKPrintingView rectForPage:]):

  • UIProcess/mac/WKTextFinderClient.mm:

(-[WKTextFinderClient initWithPage:view:]):
(-[WKTextFinderClient findMatchesForString:relativeToMatch:findOptions:maxResults:resultCollector:]):
(-[WKTextFinderClient getSelectedText:]):
(arrayFromRects):
(-[WKTextFinderClient didFindStringMatchesWithRects:didWrapAround:]):
(-[WKTextFinderClient didGetImageForMatchResult:]):

  • UIProcess/mac/WKTextInputWindowController.mm:
  • UIProcess/mac/WKViewLayoutStrategy.mm:

(+[WKViewLayoutStrategy layoutStrategyWithPage:view:viewImpl:mode:]):
(-[WKViewLayoutStrategy initWithPage:view:viewImpl:mode:]):
(-[WKViewViewSizeLayoutStrategy initWithPage:view:viewImpl:mode:]):
(-[WKViewFixedSizeLayoutStrategy initWithPage:view:viewImpl:mode:]):
(-[WKViewDynamicSizeComputedFromViewScaleLayoutStrategy initWithPage:view:viewImpl:mode:]):
(-[WKViewDynamicSizeComputedFromMinimumDocumentSizeLayoutStrategy initWithPage:view:viewImpl:mode:]):

  • UIProcess/mac/WebColorPickerMac.mm:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKMenuTarget forwardContextMenuAction:]):
(WebKit::menuItemIdentifier):
(WebKit::WebContextMenuProxyMac::createContextMenuItem):

  • UIProcess/mac/WebInspectorProxyMac.mm:

(-[WKWebInspectorProxyObjCAdapter initWithWebInspectorProxy:]):

  • UIProcess/mac/WebPageProxyMac.mm:
  • UIProcess/mac/WebPopupMenuProxyMac.mm:
  • UIProcess/win/PageClientImpl.cpp:
  • UIProcess/win/TextCheckerWin.cpp:
  • UIProcess/win/WebContextMenuProxyWin.cpp:
  • UIProcess/win/WebPopupMenuProxyWin.cpp:
  • UIProcess/win/WebView.cpp:
  • UIProcess/wpe/TextCheckerWPE.cpp:
  • UIProcess/wpe/WebPasteboardProxyWPE.cpp:
  • WebKit.xcodeproj/project.pbxproj:
5:43 PM Changeset in webkit [235264] by rniwa@webkit.org
  • 2 edits in trunk/LayoutTests

Store the timer we scheduled in the global object.
The underlying bug is tracked by https://webkit.org/b/188911.

  • fast/files/blob-network-process-crash.html:
5:16 PM Changeset in webkit [235263] by Aditya Keerthi
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix the Windows build after r235245.

  • html/InputMode.cpp:

(WebCore::stringForInputMode):

4:57 PM Changeset in webkit [235262] by Ross Kirsling
  • 5 edits
    1 add in trunk/Websites/bugs.webkit.org

EWS bubbles are being hidden due to lack of space.
https://bugs.webkit.org/show_bug.cgi?id=188607

Reviewed by Daniel Bates.

  • PrettyPatch/PrettyPatch.rb:
  • code-review.js:
  • js/status-bubble.js: Added.

Refactor Review Patch page so that the postMessage to resize EWS iframes may be used on other pages too.

  • template/en/default/attachment/edit.html.tmpl:
  • template/en/default/attachment/list.html.tmpl:

Resize EWS iframes via postMessage on bug page and attachment details page.

4:57 PM Changeset in webkit [235261] by sbarati@apple.com
  • 22 edits in trunk/Source

JSRunLoopTimer may run part of a member function after it's destroyed
https://bugs.webkit.org/show_bug.cgi?id=188426

Reviewed by Mark Lam.

Source/JavaScriptCore:

When I was reading the JSRunLoopTimer code, I noticed that it is possible
to end up running timer code after the class had been destroyed.

The issue I spotted was in this function:
`
void JSRunLoopTimer::timerDidFire()
{

JSLock* apiLock = m_apiLock.get();
if (!apiLock) {

Likely a buggy usage: the timer fired while JSRunLoopTimer was being destroyed.
return;

}
HERE
std::lock_guard<JSLock> lock(*apiLock);
RefPtr<VM> vm = apiLock->vm();
if (!vm) {

The VM has been destroyed, so we should just give up.
return;

}

doWork();

}
`

Look at the comment 'HERE'. Let's say that the timer callback thread gets context
switched before grabbing the API lock. Then, some other thread destroys the VM.
And let's say that the VM owns (perhaps transitively) this timer. Then, the
timer would run code and access member variables after it was destroyed.

This patch fixes this issue by introducing a new timer manager class.
This class manages timers on a per VM basis. When a timer is scheduled,
this class refs the timer. It also calls the timer callback while actively
maintaining a +1 ref to it. So, it's no longer possible to call the timer
callback after the timer has been destroyed. However, calling a timer callback
can still race with the VM being destroyed. We continue to detect this case and
bail out of the callback early.

This patch also removes a lot of duplicate code between GCActivityCallback
and JSRunLoopTimer.

  • heap/EdenGCActivityCallback.cpp:

(JSC::EdenGCActivityCallback::doCollection):
(JSC::EdenGCActivityCallback::lastGCLength):
(JSC::EdenGCActivityCallback::deathRate):

  • heap/EdenGCActivityCallback.h:
  • heap/FullGCActivityCallback.cpp:

(JSC::FullGCActivityCallback::doCollection):
(JSC::FullGCActivityCallback::lastGCLength):
(JSC::FullGCActivityCallback::deathRate):

  • heap/FullGCActivityCallback.h:
  • heap/GCActivityCallback.cpp:

(JSC::GCActivityCallback::doWork):
(JSC::GCActivityCallback::scheduleTimer):
(JSC::GCActivityCallback::didAllocate):
(JSC::GCActivityCallback::willCollect):
(JSC::GCActivityCallback::cancel):
(JSC::GCActivityCallback::cancelTimer): Deleted.
(JSC::GCActivityCallback::nextFireTime): Deleted.

  • heap/GCActivityCallback.h:
  • heap/Heap.cpp:

(JSC::Heap::reportAbandonedObjectGraph):
(JSC::Heap::notifyIncrementalSweeper):
(JSC::Heap::updateAllocationLimits):
(JSC::Heap::didAllocate):

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::scheduleTimer):
(JSC::IncrementalSweeper::doWork):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock):
(JSC::IncrementalSweeper::startSweeping):
(JSC::IncrementalSweeper::stopSweeping):

  • heap/IncrementalSweeper.h:
  • heap/StopIfNecessaryTimer.cpp:

(JSC::StopIfNecessaryTimer::doWork):
(JSC::StopIfNecessaryTimer::scheduleSoon):

  • heap/StopIfNecessaryTimer.h:
  • runtime/JSRunLoopTimer.cpp:

(JSC::epochTime):
(JSC::JSRunLoopTimer::Manager::timerDidFireCallback):
(JSC::JSRunLoopTimer::Manager::PerVMData::setRunLoop):
(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):
(JSC::JSRunLoopTimer::Manager::PerVMData::~PerVMData):
(JSC::JSRunLoopTimer::Manager::timerDidFire):
(JSC::JSRunLoopTimer::Manager::shared):
(JSC::JSRunLoopTimer::Manager::registerVM):
(JSC::JSRunLoopTimer::Manager::unregisterVM):
(JSC::JSRunLoopTimer::Manager::scheduleTimer):
(JSC::JSRunLoopTimer::Manager::cancelTimer):
(JSC::JSRunLoopTimer::Manager::timeUntilFire):
(JSC::JSRunLoopTimer::Manager::didChangeRunLoop):
(JSC::JSRunLoopTimer::timerDidFire):
(JSC::JSRunLoopTimer::JSRunLoopTimer):
(JSC::JSRunLoopTimer::timeUntilFire):
(JSC::JSRunLoopTimer::setTimeUntilFire):
(JSC::JSRunLoopTimer::cancelTimer):
(JSC::JSRunLoopTimer::setRunLoop): Deleted.
(JSC::JSRunLoopTimer::timerDidFireCallback): Deleted.
(JSC::JSRunLoopTimer::scheduleTimer): Deleted.

  • runtime/JSRunLoopTimer.h:

(JSC::JSRunLoopTimer::Manager::PerVMData::PerVMData):

  • runtime/PromiseDeferredTimer.cpp:

(JSC::PromiseDeferredTimer::doWork):
(JSC::PromiseDeferredTimer::runRunLoop):
(JSC::PromiseDeferredTimer::addPendingPromise):
(JSC::PromiseDeferredTimer::hasPendingPromise):
(JSC::PromiseDeferredTimer::hasDependancyInPendingPromise):
(JSC::PromiseDeferredTimer::cancelPendingPromise):
(JSC::PromiseDeferredTimer::scheduleWorkSoon):

  • runtime/PromiseDeferredTimer.h:
  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::~VM):
(JSC::VM::setRunLoop):
(JSC::VM::registerRunLoopTimer): Deleted.
(JSC::VM::unregisterRunLoopTimer): Deleted.

  • runtime/VM.h:

(JSC::VM::runLoop const):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyModuleValidateAsyncInternal):
(JSC::instantiate):
(JSC::compileAndInstantiate):
(JSC::webAssemblyModuleInstantinateAsyncInternal):
(JSC::webAssemblyCompileStreamingInternal):
(JSC::webAssemblyInstantiateStreamingInternal):

Source/WebCore:

  • page/cocoa/ResourceUsageThreadCocoa.mm:

(WebCore::ResourceUsageThread::platformThreadBody):

  • page/linux/ResourceUsageThreadLinux.cpp:

(WebCore::ResourceUsageThread::platformThreadBody):

4:37 PM Changeset in webkit [235260] by sihui_liu@apple.com
  • 12 edits in trunk/Source/WebKit

Move legacy directory configuration from WebProcessPool to API::WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=188765
<rdar://problem/43633183>

Reviewed by Geoffrey Garen.

Diretories are parameters of websiteDataStore instead of webProcessPool, so we should move
legacy default paths to API::WebsiteDataStore, which already stores default paths for
non-legacy cases.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::createWithLegacyOptions):
(API::ProcessPoolConfiguration::createWithWebsiteDataStoreConfiguration):

  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::legacyDefaultDataStoreConfiguration):

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/API/glib/APIWebsiteDataStoreGLib.cpp:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/API/win/APIWebsiteDataStoreWin.cpp:

(API::WebsiteDataStore::legacyDefaultApplicationCacheDirectory):
(API::WebsiteDataStore::legacyDefaultNetworkCacheDirectory):
(API::WebsiteDataStore::legacyDefaultWebSQLDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultIndexedDBDatabaseDirectory):
(API::WebsiteDataStore::legacyDefaultLocalStorageDirectory):
(API::WebsiteDataStore::legacyDefaultMediaCacheDirectory):
(API::WebsiteDataStore::legacyDefaultMediaKeysStorageDirectory):
(API::WebsiteDataStore::legacyDefaultJavaScriptConfigurationDirectory):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/WebProcessPool.h:
  • UIProcess/gtk/WebProcessPoolGtk.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/win/WebProcessPoolWin.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

  • UIProcess/wpe/WebProcessPoolWPE.cpp:

(WebKit::WebProcessPool::legacyPlatformDefaultApplicationCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultIndexedDBDatabaseDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultNetworkCacheDirectory): Deleted.
(WebKit::WebProcessPool::legacyPlatformDefaultJavaScriptConfigurationDirectory): Deleted.

4:37 PM Changeset in webkit [235259] by achristensen@apple.com
  • 6 edits in trunk

Add new _webViewRequestPointerLock SPI with a completionHandler
https://bugs.webkit.org/show_bug.cgi?id=188907
<rdar://problem/35871109>

Reviewed by Andy Estes.

Source/WebKit:

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/Cocoa/UIDelegate.h:
  • UIProcess/Cocoa/UIDelegate.mm:

(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::requestPointerLock):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:

(-[PointerLockDelegate _webViewRequestPointerLock:completionHandler:]):
(-[PointerLockDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

4:36 PM Changeset in webkit [235258] by david_fenton@apple.com
  • 9 edits in trunk

Unreviewed, rolling out r235129.

broke internal builds

Reverted changeset:

"Allow creating WeakPtrs to const objects"
https://bugs.webkit.org/show_bug.cgi?id=188785
https://trac.webkit.org/changeset/235129

4:32 PM Changeset in webkit [235257] by BJ Burg
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: fix typos in some compositing reasons
https://bugs.webkit.org/show_bug.cgi?id=188905
<rdar://problem/43624825>

Reviewed by Simon Fraser.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:

(WI.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WI.LayerTreeDetailsSidebarPanel):

  • UserInterface/Views/Layers3DContentView.js:

(WI.Layers3DContentView.prototype._updateReasonsList):
(WI.Layers3DContentView):

4:19 PM Changeset in webkit [235256] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

[iOS] Test editing/undo/replace-text-in-node-preserving-markers-crash.html crashes
https://bugs.webkit.org/show_bug.cgi?id=188898

Reviewed by Simon Fraser.

Not all document markers may have a dictation metadata on iOS.

Currently we assume that every marker has dictation alternatives (i.e. DocumentMarker::alternatives()
can be called) when deleting a selection preserving document markers on iOS. However, only markers
for dictation may have dictation alternatives. For example, document markers for misspelled words do
not have dictation metadata by definition. Instead of assuming every marker has dictation alternatives
on iOS we need to check the marker type to determine whether it has associated dictation metadata and
invoke the appropriate DocumentMarkerController::addMarker() overload.

  • dom/DocumentMarker.h:

(WebCore::DocumentMarker::isDictation const): Added.

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::replaceTextInNodePreservingMarkers): Only access DocumentMarker::alternatives()
and add a dictation marker on iOS if the marker is a dictation marker.

4:11 PM Changeset in webkit [235255] by Dewei Zhu
  • 7 edits in trunk/Websites/perf.webkit.org

Show t-test results based on individual measurements to analysis task page.
https://bugs.webkit.org/show_bug.cgi?id=188425

Reviewed by Ryosuke Niwa.

Added comparison for individual iterations in analysis task page.
Added comparison for individual iterations for notification on A/B tests completion.
Refactored t-distribution inverse lookup to any degree of freedom with 5 significant figures.

  • public/shared/statistics.js: Refactored t-distribution inverse lookup function and adapted this

change to all invocations.
(Statistics.new.this.supportedConfidenceIntervalProbabilities):
(Statistics.new.this.supportedOneSideTTestProbabilities):
(Statistics.new.this.confidenceIntervalDelta):
(Statistics.new.sampleMeanAndVarianceForMultipleSamples):
(Statistics.new.this.probabilityRangeForWelchsT):
(Statistics.new.this.probabilityRangeForWelchsTFromTwoSampleSets):
(Statistics.new.this._determinetwoSidedProbabilityBoundaryForWelchsT):
(Statistics.new.this.computeWelchsT):
(Statistics.new.this._computeWelchsTFromStatistics):
(Statistics.new.this.minimumTForOneSidedProbability): Function that does t-distribution inverse lookup.

  • public/v3/components/analysis-results-viewer.js: Adapted TestGroup.compareTestResults change.

(AnalysisResultsViewer.TestGroupStackingBlock.prototype._measurementsForCommitSet):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._computeTestGroupStatus):
(AnalysisResultsViewer.TestGroupStackingBlock.prototype._valuesForCommitSet): Deleted.

  • public/v3/components/test-group-results-viewer.js: Show both comparisions for both individual and mean.

(TestGroupResultsViewer.prototype._renderResultsTable):
(TestGroupResultsViewer.prototype._buildRowForMetric.):
(TestGroupResultsViewer.prototype._buildValueMap):

  • public/v3/models/test-group.js:

(TestGroup.compareTestResults): Added comparison for individual iterations.

  • tools/js/test-group-result-page.js:

(TestGroupResultPage.prototype._constructTableForMetric):
(TestGroupResultPage.prototype.get styleTemplate):
(TestGroupResultPage):
(TestGroupResultPage.prototype._URLForAnalysisTask): Renamed to '_resultsForTestGroup'

  • unit-tests/statistics-tests.js: Updated and added unit tests.
3:57 PM Changeset in webkit [235254] by mark.lam@apple.com
  • 30 edits in trunk/Source

Move vmEntryGlobalObject() to VM from CallFrame.
https://bugs.webkit.org/show_bug.cgi?id=188900
<rdar://problem/43655753>

Reviewed by Michael Saboff.

Source/JavaScriptCore:

Also introduced CallFrame::isGlobalExec() which makes use of one property of
GlobalExecs to identify them i.e. GlobalExecs have null callerFrame and returnPCs.
CallFrame::initGlobalExec() ensures this.

In contrast, normal CallFrames always have a callerFrame (because they must at
least be preceded by a VM EntryFrame) and a returnPC (at least return to the
VM entry glue).

  • API/APIUtils.h:

(handleExceptionIfNeeded):
(setException):

  • API/JSBase.cpp:

(JSEvaluateScript):
(JSCheckScriptSyntax):

  • API/JSContextRef.cpp:

(JSGlobalContextRetain):
(JSGlobalContextRelease):
(JSGlobalContextCopyName):
(JSGlobalContextSetName):
(JSGlobalContextGetRemoteInspectionEnabled):
(JSGlobalContextSetRemoteInspectionEnabled):
(JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions):
(JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions):
(JSGlobalContextGetDebuggerRunLoop):
(JSGlobalContextSetDebuggerRunLoop):
(JSGlobalContextGetAugmentableInspectorController):

  • API/JSValue.mm:

(reportExceptionToInspector):

  • API/glib/JSCClass.cpp:

(jscContextForObject):

  • API/glib/JSCContext.cpp:

(jsc_context_evaluate_in_object):

  • debugger/Debugger.cpp:

(JSC::Debugger::pauseIfNeeded):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::vmEntryGlobalObject const):
(JSC::DebuggerCallFrame::evaluateWithScopeExtension):

  • interpreter/CallFrame.cpp:

(JSC::CallFrame::vmEntryGlobalObject): Deleted.

  • interpreter/CallFrame.h:

(JSC::ExecState::scope const):
(JSC::ExecState::noCaller):
(JSC::ExecState::isGlobalExec const):

  • interpreter/Interpreter.cpp:

(JSC::notifyDebuggerOfUnwinding):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::debug):

  • runtime/CallData.cpp:

(JSC::profiledCall):

  • runtime/Completion.cpp:

(JSC::evaluate):
(JSC::profiledEvaluate):
(JSC::evaluateWithScopeExtension):
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
(JSC::linkAndEvaluateModule):
(JSC::importModule):

  • runtime/ConstructData.cpp:

(JSC::profiledConstruct):

  • runtime/Error.cpp:

(JSC::getStackTrace):

  • runtime/VM.cpp:

(JSC::VM::throwException):
(JSC::VM::vmEntryGlobalObject const):

  • runtime/VM.h:

Source/WebCore:

No new tests needed because this patch does not introduce new functionality.

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::create):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::callerGlobalObject):
(WebCore::toJSDOMGlobalObject): Deleted.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::firstDOMWindow):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::convertValueToNPVariant):

  • bridge/objc/WebScriptObject.mm:

(WebCore::addExceptionToConsole):

  • bridge/objc/objc_instance.mm:

(ObjcInstance::moveGlobalExceptionToExecState):

  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::convertValueToObjcObject):

  • bridge/objc/objc_utility.mm:

(JSC::Bindings::convertValueToObjcValue):

  • testing/Internals.cpp:

(WebCore::Internals::cloneArrayBuffer):

Source/WebKitLegacy/mac:

  • WebView/WebScriptDebugger.mm:

(WebScriptDebugger::sourceParsed):

3:53 PM Changeset in webkit [235253] by don.olmstead@sony.com
  • 4 edits in trunk

[CMake] Have checks are not getting set inside CMake properly
https://bugs.webkit.org/show_bug.cgi?id=188901

Reviewed by Michael Catanzaro.

.:

Make sure the variable's value is sent to SET_AND_EXPOSE_TO_BUILD
within the WEBKIT_CHECK_HAVE_* macros.

  • Source/cmake/WebKitFeatures.cmake:

PerformanceTests:

Add notification that MallocBench is disabled.

  • CMakeLists.txt:
3:50 PM Changeset in webkit [235252] by Jonathan Bedard
  • 3 edits in trunk/Tools

API tests should output json results
https://bugs.webkit.org/show_bug.cgi?id=188869
<rdar://problem/43615652>

Reviewed by Aakash Jain.

JSON output for API tests is of the form:

{

"Failed": [{"name": <test name>, "output": <test log>}],
"Timedout": [...],
"Skipped": [...],
"Crashed": [...]

}

Tests which are successful are not displayed in the json output.

  • Scripts/webkitpy/api_tests/manager.py:

(Manager.run): Print test results to provided file as a json dictionary.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(run): Pass json option.
(parse_args): Add --json-output flag.

3:23 PM Changeset in webkit [235251] by aestes@apple.com
  • 20 edits
    2 adds in trunk

[Apple Pay] Introduce Apple Pay JS v4 on iOS 12 and macOS Mojave
https://bugs.webkit.org/show_bug.cgi?id=188829

Reviewed by Tim Horton.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Test: http/tests/ssl/applepay/ApplePaySessionV4.html

  • Configurations/FeatureDefines.xcconfig:
  • testing/MockPaymentCoordinator.cpp:

(WebCore::MockPaymentCoordinator::supportsVersion):

Source/WebCore/PAL:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit:

  • Configurations/FeatureDefines.xcconfig:
  • WebProcess/ApplePay/WebPaymentCoordinator.cpp:

(WebKit::WebPaymentCoordinator::supportsVersion):

Source/WebKitLegacy/mac:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • http/tests/ssl/applepay/ApplePaySession-expected.txt:
  • http/tests/ssl/applepay/ApplePaySession.html:
  • http/tests/ssl/applepay/ApplePaySessionV3-expected.txt:
  • http/tests/ssl/applepay/ApplePaySessionV3.html:
  • http/tests/ssl/applepay/ApplePaySessionV4-expected.txt: Added.
  • http/tests/ssl/applepay/ApplePaySessionV4.html: Added.
  • platform/mac-wk2/TestExpectations:
3:13 PM Changeset in webkit [235250] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.10.5

Tag Safari-606.1.36.10.5.

2:43 PM Changeset in webkit [235249] by mmaxfield@apple.com
  • 13 edits
    1 copy in trunk/Tools

[WSL] Ternary expressions appear to be unimplemented
https://bugs.webkit.org/show_bug.cgi?id=178981

Reviewed by Saam Barati.

Implement ternary statements. These can be both lvalues and rvalues. (a ? b : c ? d : e)
is parsed as (a ? b : (c ? d : e)).

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Checker.js:

(Checker.prototype.visitTernaryExpression):

  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitTernaryExpression):

  • WebGPUShadingLanguageRI/NormalUsePropertyResolver.js:

(NormalUsePropertyResolver.prototype.visitTernaryExpression):
(NormalUsePropertyResolver):

  • WebGPUShadingLanguageRI/Parse.js:

(parsePossibleTernaryConditional):

  • WebGPUShadingLanguageRI/PropertyResolver.js:

(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder.prototype.visitTernaryExpression):
(PropertyResolver.prototype._visitRValuesWithinLValue.RValueFinder):
(PropertyResolver.prototype._visitRValuesWithinLValue):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitTernaryExpression):

  • WebGPUShadingLanguageRI/SPIRV.html:
  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:
  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitProtocolDecl):

  • WebGPUShadingLanguageRI/index.html:
2:36 PM Changeset in webkit [235248] by Devin Rousso
  • 30 edits
    2 moves
    8 adds
    1 delete in trunk

Web Inspector: support breakpoints for timers and animation-frame events
https://bugs.webkit.org/show_bug.cgi?id=188778

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Debugger.json:

Add AnimationFrame and Timer types to the list of pause reasons.

  • inspector/protocol/DOMDebugger.json:

Introduced setEventBreakpoint and removeEventBreakpoint to replace the more specific:

  • setEventListenerBreakpoint
  • removeEventListenerBreakpoint
  • setInstrumentationBreakpoint
  • removeInstrumentationBreakpoint

Also created an EventBreakpointType to enumerate the available types of event breakpoints.

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator.generate_output):
(CppProtocolTypesHeaderGenerator._generate_forward_declarations_for_binding_traits):
(CppProtocolTypesHeaderGenerator._generate_declarations_for_enum_conversion_methods):
(CppProtocolTypesHeaderGenerator._generate_hash_declarations): Added.
Generate DefaultHash for all enum class used by inspector protocols.

  • inspector/scripts/tests/generic/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/generic/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/generic/expected/enum-values.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/generic/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/generic/expected/type-requiring-runtime-casts.json-result:

Source/WebCore:

The original implementation of "instrumentation" breakpoints relied upon the frontend
sending somewhat arbitrary strings when enabling breakpoints for specific events. As an
example, setting a breakpoint for requestAnimationFrame expects "animationFrameFired"
as the string, which doesn't make much sense. This patch removes the usage of these strings
and instead expects the agent to implement a method that matches what is happening.

Tests: inspector/dom-debugger/event-animation-frame-breakpoints.html

inspector/dom-debugger/event-listener-breakpoints.html
inspector/dom-debugger/event-timer-breakpoints.html

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::willFireTimer):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didInstallTimerImpl):
(WebCore::InspectorInstrumentation::didRemoveTimerImpl):
(WebCore::InspectorInstrumentation::willFireTimerImpl):
(WebCore::InspectorInstrumentation::didRequestAnimationFrameImpl):
(WebCore::InspectorInstrumentation::didCancelAnimationFrameImpl):
(WebCore::InspectorInstrumentation::willFireAnimationFrameImpl):
(WebCore::InspectorInstrumentation::pauseOnNativeEventIfNeeded): Deleted.

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

(WebCore::InspectorDOMDebuggerAgent::setEventBreakpoint): Added.
(WebCore::InspectorDOMDebuggerAgent::removeEventBreakpoint): Added.
(WebCore::InspectorDOMDebuggerAgent::willHandleEvent):
(WebCore::InspectorDOMDebuggerAgent::willFireTimer): Added.
(WebCore::InspectorDOMDebuggerAgent::willFireAnimationFrame): Added.
(WebCore::InspectorDOMDebuggerAgent::setEventListenerBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::setInstrumentationBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::setBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeEventListenerBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeInstrumentationBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::removeBreakpoint): Deleted.
(WebCore::InspectorDOMDebuggerAgent::pauseOnNativeEventIfNeeded): Deleted.
Unify the event listener and instrumentation breakpoint commands into a single method,
setEventBreakpoint, that takes in both an EventBreakpointType and eventName.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::fired):

Source/WebInspectorUI:

Add a type to WI.EventBreakpoint that matches DOMDebugger.EventBreakpointType:

  • AnimationFrame for requestAnimationFrame
  • Listener for any named DOM Event
  • Timer for setTimeout and setInterval

Modified WI.EventBreakpointPopover to provide ways for selecting these other types, which
is then passed to WI.DOMDebuggerManager, which now calls through to the newly added
DOMDebugger.removeEventBreakpoint and DOMDebugger.setEventBreakpoint that sets
breakpoints for all event types.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Images/EventBreakpointAnimationFrame.svg: Added.
  • UserInterface/Images/EventBreakpointListener.svg: Renamed from Source/WebInspectorUI/UserInterface/Images/EventBreakpoint.svg.
  • UserInterface/Images/EventBreakpointTimer.svg: Added.
  • UserInterface/Controllers/DOMDebuggerManager.js:

(WI.DOMDebuggerManager.supportsEventBreakpoints): Added.
(WI.DOMDebuggerManager.prototype.eventBreakpointForTypeAndEventName): Added.
(WI.DOMDebuggerManager.prototype.addEventBreakpoint):
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint.breakpointRemoved): Added.
(WI.DOMDebuggerManager.prototype.removeEventBreakpoint):
(WI.DOMDebuggerManager.prototype._updateEventBreakpoint):
(WI.DOMDebuggerManager.prototype.eventBreakpointForEventName): Deleted.

  • UserInterface/Controllers/DOMTreeManager.js:

(WI.DOMTreeManager.prototype.setBreakpointForEventListener):

  • UserInterface/Controllers/DebuggerManager.js:

(WI.DebuggerManager.prototype._pauseReasonFromPayload):

  • UserInterface/Models/EventBreakpoint.js:

(WI.EventBreakpoint):
(WI.EventBreakpoint.fromPayload):
(WI.EventBreakpoint.prototype.get type): Added.
(WI.EventBreakpoint.prototype.get serializableInfo):
(WI.EventBreakpoint.prototype.saveIdentityToCookie):

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WI.DebuggerSidebarPanel.prototype._updatePauseReasonSection):
(WI.DebuggerSidebarPanel.prototype.willDismissPopover):

  • UserInterface/Views/EventBreakpointPopover.js:

(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.get breakpoint): Added.
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.show.createOption): Added.
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._handleTypeSelectChange): Added.
(WI.EventBreakpointPopover.prototype.get result): Deleted.
(WI.EventBreakpointPopover.prototype.get value): Deleted.

  • UserInterface/Views/EventBreakpointPopover.css:

(.popover .event-breakpoint-content > .event-type): Added.
(.popover .event-breakpoint-content > input): Deleted.

  • UserInterface/Views/EventBreakpointTreeElement.js:

(WI.EventBreakpointTreeElement):

  • UserInterface/Views/EventBreakpointTreeElement.css:

(.breakpoint.event.animation-frame:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.listener:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event.timer:not(.breakpoint-paused-icon) .icon): Added.
(.breakpoint.event:not(.breakpoint-paused-icon) .icon): Deleted.

LayoutTests:

  • inspector/dom-debugger/event-animation-frame-breakpoints-expected.txt: Added.
  • inspector/dom-debugger/event-animation-frame-breakpoints.html: Added.
  • inspector/dom-debugger/event-breakpoint-with-navigation.html:
  • inspector/dom-debugger/event-timer-breakpoints-expected.txt: Added.
  • inspector/dom-debugger/event-timer-breakpoints.html: Added.
  • inspector/dom-debugger/event-listener-breakpoints-expected.txt: Renamed from LayoutTests/inspector/dom-debugger/event-breakpoints-expected.txt.
  • inspector/dom-debugger/event-listener-breakpoints.html: Renamed from LayoutTests/inspector/dom-debugger/event-breakpoints.html.
  • inspector/dom-debugger/resources/event-breakpoint-utilities.js: Added.

(TestPage.registerInitializer.window.teardown):
(TestPage.registerInitializer.window.failOnPause):
(TestPage.registerInitializer.window.addBreakpoint):
(TestPage.registerInitializer.window.removeBreakpoint):
(TestPage.registerInitializer.window.disableBreakpoint):
(TestPage.registerInitializer.window.awaitEvent):

2:31 PM Changeset in webkit [235247] by Ryan Haddad
  • 3 edits in trunk/Source/WebKit

Unreviewed, rolling out r234942.

Caused page loading issues in iTunes

Reverted changeset:

"Transition more WKWebViewConfiguration ivars to
API::PageConfiguration values"
https://bugs.webkit.org/show_bug.cgi?id=188663
https://trac.webkit.org/changeset/234942

2:26 PM Changeset in webkit [235246] by Kocsen Chung
  • 1 copy in tags/Safari-606.1.36.1.9

Tag Safari-606.1.36.1.9.

2:24 PM Changeset in webkit [235245] by Aditya Keerthi
  • 18 edits
    4 moves
    4 adds in trunk

[iOS] Support the inputmode attribute on contenteditable elements
https://bugs.webkit.org/show_bug.cgi?id=188878

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.

Source/WebCore:

The inputmode attribute should apply to contenteditable elements, in addition to
textfield inputs and textareas.

Moved the inputmode attribute from HTMLInputElement.idl and
HTMLTextAreaElement.idl to HTMLElement.idl to reflect the specification.

Also moved all logic to convert between the InputMode enum and string values
into InputMode.cpp to avoid exposing unnecessary details to WebKit. Furthermore,
InputMode::Auto was renamed to InputMode::Unspecified to avoid confusion with the
specification.

Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities:-the-inputmode-attribute

Tests: fast/forms/inputmode-attribute-contenteditable.html

fast/forms/inputmode-attribute-input.html
fast/forms/inputmode-attribute-textarea.html

  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::canonicalInputMode const):
(WebCore::HTMLElement::inputMode const):
(WebCore::HTMLElement::setInputMode):

  • html/HTMLElement.h:
  • html/HTMLElement.idl:
  • html/HTMLInputElement.idl:
  • html/HTMLTextAreaElement.idl:
  • html/HTMLTextFormControlElement.cpp:
  • html/HTMLTextFormControlElement.h:
  • html/InputMode.cpp: Renamed from Source/WebCore/html/InputModeNames.cpp.

(WebCore::inputModeForAttributeValue):
(WebCore::stringForInputMode):

  • html/InputMode.h: Renamed from Source/WebCore/html/InputModeNames.h.

Source/WebKit:

Ensured that the assistedNodeInformation for a contenteditable element reflects
the value of the element's inputmode attribute.

Moved logic to obtain the InputMode from the attribute value into WebCore.

  • Shared/AssistedNodeInformation.h:
  • UIProcess/ios/WKContentViewInteraction.mm:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getAssistedNodeInformation):

LayoutTests:

Added additional tests to verify the inputmode attribute is accessible on
HTMLElements.

  • fast/forms/inputmode-attribute-contenteditable-expected.txt: Added.
  • fast/forms/inputmode-attribute-contenteditable.html: Added.
  • fast/forms/inputmode-attribute-input-expected.txt: Renamed from LayoutTests/fast/forms/inputmode-attribute-expected.txt.
  • fast/forms/inputmode-attribute-input.html: Renamed from LayoutTests/fast/forms/inputmode-attribute.html.
  • fast/forms/inputmode-attribute-textarea-expected.txt: Added.
  • fast/forms/inputmode-attribute-textarea.html: Added.
  • js/dom/dom-static-property-for-in-iteration-expected.txt: Rebaseline.
2:14 PM Changeset in webkit [235244] by Kocsen Chung
  • 3 edits in tags/Safari-607.1.3/Source/WebKit

Revert r234942. rdar://problem/43655048

1:51 PM Changeset in webkit [235243] by rniwa@webkit.org
  • 8 edits
    2 adds in trunk

Assert in NetworkBlobRegistry::unregisterBlobURL after network process had terminated
https://bugs.webkit.org/show_bug.cgi?id=188880

Reviewed by Saam Barati.

Source/WebKit:

Removed the debug assertion. WebContent process might be asking this network process
to unregister a blob registered from another network processs which had since crashed.

We could keep track of which blob had been registered with which network process
in WebContent process and avoid sending IPC to the network process but that's a lot of
house-keeping for virtually no benefit other than not hitting this assertion.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::unregisterBlobURL):

Tools:

Fixed the bug that testRunner's terminateNetworkProcess, terminateServiceWorkerProcess, and terminateStorageProcess
were asynchronously terminating respective processes. Do so synchronously so that we can deterministically
test WebKit's behavior in layout tests.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::terminateNetworkProcess):
(WTR::TestRunner::terminateServiceWorkerProcess):
(WTR::TestRunner::terminateStorageProcess):

  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

Added a layout test which demonstrates this debug assertion.

  • TestExpectations:
  • fast/files/blob-network-process-crash-expected.txt: Added.
  • fast/files/blob-network-process-crash.html: Added.
  • platform/wk2/TestExpectations:
1:20 PM Changeset in webkit [235242] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: console.inspect(sessionStorage) first time does not show Session Storage content view if Storage tab was previously unvisited
https://bugs.webkit.org/show_bug.cgi?id=188801

Reviewed by Matt Baker.

  • UserInterface/Base/Main.js:

(WI.tabContentViewClassForRepresentedObject):
(WI._storageWasInspected):
Since the WI.StorageSidebarPanel is not created until the WI.StorageTabContentView is
created, the WI.StorageManager.Event.DOMStorageObjectWasInspected and
WI.StorageManager.Event.DatabaseWasInspected events do not reach the sidebar. We should
follow what WI._domNodeWasInspected does and additionally call WI.showRepresentedObject
on the inspected object.

1:08 PM Changeset in webkit [235241] by don.olmstead@sony.com
  • 6 edits in trunk

[CMake] Add HAVE_MALLOC_TRIM definition
https://bugs.webkit.org/show_bug.cgi?id=188897

Reviewed by Konstantin Tokarev.

.:

Add CMake check for malloc_trim.

  • Source/cmake/OptionsCommon.cmake:

PerformanceTests:

MallocBench should only be built on Apple platforms and platforms that
have malloc_trim.

  • CMakeLists.txt:

Source/WTF:

Use HAVE(MALLOC_TRIM) check instead of GLIBC.

  • wtf/linux/MemoryPressureHandlerLinux.cpp:

(WTF::MemoryPressureHandler::platformReleaseMemory):

1:06 PM Changeset in webkit [235240] by Devin Rousso
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: InspectorStyleSheet not visible in the resources sidebar
https://bugs.webkit.org/show_bug.cgi?id=188819
<rdar://problem/43579039>

Reviewed by Brian Burg.

  • UserInterface/Models/ResourceCollection.js:

(WI.ResourceCollection.prototype.objectIsRequiredType):

12:58 PM Changeset in webkit [235239] by sihui_liu@apple.com
  • 2 edits in trunk/Source/WebKit

Remove keys of defaults that are no longer used in webProcessPool
https://bugs.webkit.org/show_bug.cgi?id=188855

Reviewed by Alex Christensen.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::registerUserDefaultsIfNeeded):

12:57 PM Changeset in webkit [235238] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

YARR: Need to JIT compile a RegExp before using containsNestedSubpatterns flag
https://bugs.webkit.org/show_bug.cgi?id=188895

Reviewed by Mark Lam.

Found while working on another change. This will allow processing of nested
parenthesis that require saved ParenContext structures.

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::compile):

12:52 PM Changeset in webkit [235237] by mmaxfield@apple.com
  • 27 edits
    2 copies
    1 delete in trunk/Tools

[WHLSL] Allow native types to have type arguments (like "vector<float, 4>")
https://bugs.webkit.org/show_bug.cgi?id=188773

Reviewed by Filip Pizlo.

Before this patch, it was impossible to represent "native typedef vector<float, 4>" because NativeTypes couldn't have
typeArguments.

Previously, the way to identify a type was strictly by name, which was represented by a string. Therefore, when something like
"vector<int, 3>" was parsed, it would produce a TypeRef with the name "vector" and typeArguments [TypeRef, IntLiteral]. Then,
there was a pass to convert the TypeRef to have the name "int3" and no typeArguments. After this transformation, each type could
be uniquely identified by name. That name was then matched to the string-only NativeType name.

This is okay for vectors and matrices, but it is unfortunate for textures (e.g. Texture2D<float4>) because they don't have any
natural string-only name. In addition, the canonicalization would have to be made aware of the fact that Texture2D<float4> is
the same as Texture2D<vector<float, 4>>. Similarly, an author may wish to typedef float4 to a different name.

It would be possible to mangle the names of the texture types to something unique, but then we lose information about the inner
type. For example, if we did this, Visitor wouldn't recurse into the float4 when encountering Texture2D<float4> because that
information would be lost. This could potentially make operations like programWithUnnecessaryThingsRemoved() more difficult to
implement in the future.

So, it would be better to have each type uniquely identified by (name, typeArguments). TypeRef will therefore also have
typeArguments which are used to determine which type it is referencing. After this analysis is done to determine what each
TypeRef is referencing, subsequent passes shouldn't care about the typeArguments and should only care about the .type field
which had been set - this was true even before this patch.

This means that NameContext has to aggregate types that accept typeArguments into arrays, where each array holds all the Types
that have the same name but different typeArguments. Then, when we need to match a TypeRef with a Type, we can ask the
NameContext for the appropriate array. This is the same way that function resolution works.

We can use Node.unify() to determine whether a TypeRef matches a NativeType. Eventually, this will go away, but for now, this is
an okay start. This works just about the same way that function overload resolution works.

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/CallExpression.js:

(CallExpression.prototype.resolve):

  • WebGPUShadingLanguageRI/CheckTypesWithArguments.js: Copied from Tools/WebGPUShadingLanguageRI/ResolveTypeDefs.js. After types

have been resolved, there should be no TypeRefs with name "vector" that don't have type arguments. This is just a sanity check.
(checkTypesWithArguments.TypeWithArgumentsChecker.prototype.visitTypeRef):
(checkTypesWithArguments.TypeWithArgumentsChecker):
(checkTypesWithArguments):

  • WebGPUShadingLanguageRI/Checker.js:

(Checker.prototype.visitProgram): Program.types mirrors NameContext: it's a Map that maps strings to types. Because types with
typeArguments share names, this has to be updated to map strings to arrays for these types.
(Checker.prototype.visitTypeRef):

  • WebGPUShadingLanguageRI/InferTypesForCall.js:

(inferTypesForCall): Don't know why this was here.
(inferTypesForTypeArguments): Same as inferTypesForCall, but this one is for matching type arguments.

  • WebGPUShadingLanguageRI/Intrinsics.js: Adding the types. This patch also adds some scalar types like half, char, etc, but they

don't have any functions which accept them. Those will be tested in my next patch which adds math functions for these types. This
moves in the direction of matching the standard library in the spec.
(Intrinsics.cast):
(Intrinsics.bitwiseCast):
(Intrinsics.castToHalf):
(Intrinsics.):
(Intrinsics):

  • WebGPUShadingLanguageRI/NameContext.js: Aggregate types with typeArguments into arrays.

(NameContext.prototype.add):
(NameContext.prototype.get let):
(NameContext.underlyingThings.prototype.else):
(NameContext.prototype.Symbol.iterator):
(NameContext):

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitTypeRef): Call TypeRef.resolve().
(NameResolver.prototype.visitCallExpression):
(NameResolver):
(NameResolver.prototype.visitVectorType): Deleted.

  • WebGPUShadingLanguageRI/NativeType.js: NativeTypes can have type arguments now.

(NativeType):
(NativeType.prototype.get typeArguments):
(NativeType.prototype.toString):
(NativeType.create):

  • WebGPUShadingLanguageRI/Prepare.js:

(let.prepare):

  • WebGPUShadingLanguageRI/Program.js: Update to work with types aggregated into arrays.

(Program.prototype.add):
(Program.prototype.toString):
(Program):

  • WebGPUShadingLanguageRI/RemoveTypeArguments.js: Removed.
  • WebGPUShadingLanguageRI/ResolveNames.js: Update to work with types aggregated into arrays.

(resolveNamesInTypes):

  • WebGPUShadingLanguageRI/ResolveOverloadImpl.js: Resolve the type overload for types with typeArguments.
  • WebGPUShadingLanguageRI/ResolveTypeDefs.js: Update to work with types aggregated into arrays.

(resolveTypeDefsInTypes):

  • WebGPUShadingLanguageRI/Rewriter.js: TypeRefs and Native/Vector types can have typeArguments.

(Rewriter.prototype.visitTypeRef):
(Rewriter.prototype.visitVectorType):
(Rewriter):

  • WebGPUShadingLanguageRI/SPIRV.html:
  • WebGPUShadingLanguageRI/StandardLibrary.js: Matches Intrinsics.

(bool.operator):

  • WebGPUShadingLanguageRI/StatementCloner.js: Native types can have typeArguments.

(StatementCloner.prototype.visitNativeType):

  • WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js: Vector types need constructors too.

(synthesizeDefaultConstructorOperator.FindAllTypes.prototype.visitVectorType):
(synthesizeDefaultConstructorOperator.FindAllTypes):
(synthesizeDefaultConstructorOperator):

  • WebGPUShadingLanguageRI/SynthesizeStructAccessors.js: No reason to distinguish between wrapping and instantiating a TypeRef.

(synthesizeStructAccessors.createTypeRef):

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:
  • WebGPUShadingLanguageRI/TypeOverloadResolutionFailure.js: Copied from Tools/WebGPUShadingLanguageRI/ResolveTypeDefs.js.

(TypeOverloadResolutionFailure):
(TypeOverloadResolutionFailure.prototype.get type):
(TypeOverloadResolutionFailure.prototype.get reason):
(TypeOverloadResolutionFailure.prototype.toString):

  • WebGPUShadingLanguageRI/TypeRef.js:

(TypeRef.wrap):
(TypeRef.prototype.resolve): Figure out which item in the possibleOverloads array matches this.
(TypeRef.prototype.toString):
(TypeRef):
(TypeRef.instantiate): Deleted.

  • WebGPUShadingLanguageRI/UnificationContext.js: We need to give literals a chance to assume their preferred type. This

adds this facility back into the compiler (it was previously deleted).
(UnificationContext.prototype.verify):

  • WebGPUShadingLanguageRI/VectorType.js: Vector types have type arguments.

(VectorType):
(VectorType.prototype.get elementType):
(VectorType.prototype.get numElements):
(VectorType.prototype.get numElementsValue):
(VectorType.prototype.toString):

  • WebGPUShadingLanguageRI/Visitor.js: Iterate over the typeArguments.

(Visitor.prototype.visitTypeRef):
(Visitor.prototype.visitNativeType):
(Visitor.prototype.visitVectorType):
(Visitor):

  • WebGPUShadingLanguageRI/index.html:
12:51 PM Changeset in webkit [235236] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit

[Cocoa] First scroll gesture in pinned, non-rubber-banding WKWebView may fail to initiate back/forward swipe
https://bugs.webkit.org/show_bug.cgi?id=188894
<rdar://problem/43651434>

Reviewed by Tim Horton.

  • WebProcess/WebPage/EventDispatcher.cpp:

(WebKit::EventDispatcher::wheelEvent): Set the rubber-band state on the ScrollingTree

synchronously rather than dispatching doing that to the scrolling thread. This is safe to
do because ScrollingTree synchrnoizes access to the rubber-band state with an internal
mutex.

12:48 PM Changeset in webkit [235235] by don.olmstead@sony.com
  • 2 edits in trunk/Source/WTF

[WTF] Add generic implementation for Memory querying
https://bugs.webkit.org/show_bug.cgi?id=188867
<rdar://problem/43630726>

Unreviewed build fix.

Adding MemoryPressureHandler::memoryMeasurementTimerFired was done
prematurely.

  • wtf/generic/MemoryPressureHandlerGeneric.cpp:

(WTF::MemoryPressureHandler::memoryMeasurementTimerFired): Deleted.

12:43 PM Changeset in webkit [235234] by youenn@apple.com
  • 3 edits
    3 adds in trunk

self.isSecureContext undefined in Service Worker
https://bugs.webkit.org/show_bug.cgi?id=188842

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.https-expected.txt: Added.
  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.https.html: Added.
  • web-platform-tests/service-workers/service-worker/ServiceWorkerGlobalScope/isSecureContext.serviceworker.js: Added.

(test):

Source/WebKit:

Enable isSecureContext runtime flag.

  • WebProcess/Storage/WebSWContextManagerConnection.cpp:

(WebKit::WebSWContextManagerConnection::updatePreferencesStore):

12:31 PM Changeset in webkit [235233] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[MediaStream] Store video preset sizes in a map
https://bugs.webkit.org/show_bug.cgi?id=188866
<rdar://problem/43622643>

Reviewed by Youenn Fablet.

No new tests, tested manually.

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::AVVideoCaptureSource):
(WebCore::AVVideoCaptureSource::initializeCapabilities):
(WebCore::AVVideoCaptureSource::sizeForPreset):
(WebCore::AVVideoCaptureSource::setPreset):
(WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions):
(WebCore::sizeForPreset): Deleted.
(WebCore::AVVideoCaptureSource::bestSessionPresetForVideoDimensions const): Deleted.

12:16 PM Changeset in webkit [235232] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed, attempt to fix the build after r235230.

  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp:
11:11 AM Changeset in webkit [235231] by youenn@apple.com
  • 1 edit
    1 delete in trunk/Source/ThirdParty/libwebrtc

2018-08-23 youenn fablet <youennf@gmail.com>

Remove libwebrtc unneeded .exe file.
Unreviewed.

  • Source/webrtc/data/voice_engine/stereo_rtp_files/rtpplay.exe: Removed.
10:32 AM Changeset in webkit [235230] by youenn@apple.com
  • 3050 edits
    25 copies
    146 moves
    1061 adds
    216 deletes in trunk

2018-08-23 Youenn Fablet <youenn@apple.com>

Update libwebrtc up to 984f1a80c0
https://bugs.webkit.org/show_bug.cgi?id=188745
<rdar://problem/43539177>

Reviewed by Eric Carlson.

Source/ThirdParty/libwebrtc:

Update libwebrtc main code.
Update exported symbols and related applied modifications.

  • CMakeLists.txt:
  • Configurations/libwebrtc.iOS.exp:
  • Configurations/libwebrtc.iOSsim.exp:
  • Configurations/libwebrtc.mac.exp:
  • Configurations/libwebrtc.xcconfig:
  • Source/webrtc: refreshed
  • WebKit/0001-Updating-webrtc.patch: Added.
  • WebKit/0001-Adapting-libwebrtc-H264-codec.patch: Removed.
  • WebKit/0001-Disable-SIGPIPE-for-WebRTC-sockets.patch: Removed.
  • WebKit/0001-Update-RTCVideoEncoderH264.mm-for-WebKit.patch: Removed.
  • WebKit/0001-Using-VCP.patch: Removed.
  • WebKit/0003-Fixing-VP8-files.patch: Removed.
  • WebKit/0004-Removing-parameter-names-from-files-included-from-We.patch: Removed.
  • WebKit/0005-Fix-RTC_FATAL.patch: Removed.
  • WebKit/0006-Disabling-VP8.patch: Removed.
  • WebKit/0007-Fix-RTC_STRINGIZE.patch: Removed.
  • WebKit/0008-Fix-sanitizer.patch: Removed.
  • WebKit/0009-Remove-dispatch_set_target_queue.patch: Removed.
  • WebKit/0010-Fix-RTCVideoEncoderH264-CVPixelBuffer-leak.patch: Removed.
  • WebKit/0011-Fix-AudioDeviceID-array-leak.patch: Removed.
  • WebKit/0012-Add-WK-prefix-to-Objective-C-classes-and-protocols.patch: Removed.
  • WebKit/0013-Fix-SafeSetError-use-after-move.patch: Removed.
  • libwebrtc.xcodeproj/project.pbxproj:

Source/WebCore:

Updated implementation according new webrtc backend.
Instead of modifying libwebrtc header files, we disable unused parameter warning for such headers included in WebCore.
WebCore implementation is updated according new webrtc API, mostly AddRef/Release.
RealtimeOutgoingVideoSource now uses a pixel convolver to convert RGB pixel buffers as I420.

Covered by existing tests.

  • CMakeLists.txt:
  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.cpp: (WebCore::LibWebRTCMediaEndpoint::addTrack): (WebCore::LibWebRTCMediaEndpoint::mediaStreamFromRTCStream): (WebCore::fillEncodingParameters): (WebCore::fillRtpParameters):
  • Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h: (WebCore::LibWebRTCMediaEndpoint::Release const):
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/RealtimeIncomingAudioSource.h:
  • platform/mediastream/RealtimeIncomingVideoSource.h:
  • platform/mediastream/RealtimeMediaSource.cpp: (WebCore::RealtimeMediaSource::supportsSizeAndFrameRate): (WebCore::RealtimeMediaSource::supportsConstraint const): (WebCore::RealtimeMediaSource::supportsConstraints):
  • platform/mediastream/RealtimeOutgoingAudioSource.h:
  • platform/mediastream/RealtimeOutgoingVideoSource.h:
  • platform/mediastream/libwebrtc/GStreamerVideoDecoderFactory.cpp: (WebCore::GStreamerVideoDecoder::newSampleCallback):
  • platform/mediastream/libwebrtc/GStreamerVideoEncoderFactory.cpp: (WebCore::GStreamerVideoEncoder::GStreamerVideoEncoder): (WebCore::GStreamerVideoEncoder::newSampleCallback):
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
  • platform/mediastream/libwebrtc/LibWebRTCProvider.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm: (WebCore::MockRealtimeVideoSourceMac::CMSampleBufferFromPixelBuffer):
  • platform/mediastream/mac/RealtimeIncomingVideoSourceCocoa.mm:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.cpp: (WebCore::ConvertToI420): (WebCore::RealtimeOutgoingVideoSourceCocoa::sampleBufferUpdated):
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.h:
  • platform/mediastream/mac/RealtimeOutgoingVideoSourceCocoa.mm: Added. (WebCore::RealtimeOutgoingVideoSourceCocoa::convertToYUV):
  • testing/MockLibWebRTCPeerConnection.cpp: (WebCore::MockLibWebRTCPeerConnection::AddTrack):
  • testing/MockLibWebRTCPeerConnection.h: (WebCore::MockRtpSender::GetParameters): (WebCore::MockRtpSender::SetParameters):

LayoutTests:

Updated tests according new webrtc backend.

  • webrtc/libwebrtc/setLocalDescriptionCrash.html:
  • webrtc/video-getParameters.html:

LayoutTests/imported/w3c:

  • web-platform-tests/webrtc/RTCPeerConnection-addIceCandidate-expected.txt:
  • web-platform-tests/webrtc/no-media-call-expected.txt:
10:20 AM Changeset in webkit [235229] by Wenson Hsieh
  • 6 edits in trunk

[Attachment Support] Attachment elements don't appear in drag images on macOS
https://bugs.webkit.org/show_bug.cgi?id=188823
<rdar://problem/43616378>

Reviewed by Tim Horton.

Source/WebCore:

Currently, attachment elements don't show up in the drag image snapshot on macOS. This is because only the
"Selection" phase is painted when generating a drag image on macOS, and many replaced renderers (with some
exceptions, such as RenderImage) only paint visible content during the "Foreground" phase. To fix this, we
override RenderAttachment::paintReplaced to paint the attachment in the case where the Selection phase is being
painted.

Tests: WKAttachmentTestsMac.DragAttachmentAsFilePromise

WKAttachmentTests.MoveAttachmentElementAsIconByDragging

  • rendering/RenderAttachment.cpp:

(WebCore::RenderAttachment::paintReplaced):

  • rendering/RenderAttachment.h:
  • rendering/RenderThemeMac.mm:

(WebCore::titleTextColorForAttachment):
(WebCore::AttachmentLayout::layOutTitle):

Plumb an AttachmentLayoutStyle (i.e. NonSelected or Selected) to AttachmentLayout, and use this bit when
determining the title text color, as well whether to paint backgrounds for the icon and title.

(WebCore::AttachmentLayout::AttachmentLayout):
(WebCore::RenderThemeMac::attachmentIntrinsicSize const):
(WebCore::RenderThemeMac::attachmentBaseline const):
(WebCore::paintAttachmentIconBackground):
(WebCore::paintAttachmentTitleBackground):

Bail from painting backgrounds if a selected style is used for the attachment.

(WebCore::RenderThemeMac::paintAttachment):

Rather than check the RenderAttachment's selection state when determining whether to paint with a non-selected
or selected style, only use selected style if the RenderAttachment has a selection _and_ the painting phase is
not "Selection". While this sounds extremely counter-intuitive, the "Selection" painting phase refers to
painting the selected foreground content _without_ including any part of the selection highlight.

Tools:

Adjusts a couple of existing tests to additionally verify that the drag image generated when dragging an
attachment element in macOS is not completely transparent.

  • TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:

(isCompletelyTransparent):
(TestWebKitAPI::TEST):

10:09 AM Changeset in webkit [235228] by Ryan Haddad
  • 4 edits in trunk/LayoutTests

Update iOS selection tests to reflect new behavior introduced by r235153
https://bugs.webkit.org/show_bug.cgi?id=188888

Reviewed by Megan Gardner.

  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-down-to-change-selected-text.html:
  • fast/events/touch/ios/double-tap-on-editable-content-for-selection-then-drag-up-to-change-selected-text.html:
  • fast/events/touch/ios/long-press-on-editable-content-then-drag-up-to-change-selected-text.html:
9:39 AM Changeset in webkit [235227] by Jonathan Bedard
  • 4 edits in trunk/Tools

Explain test name matching in run-api-tests help
https://bugs.webkit.org/show_bug.cgi?id=188280

Reviewed by Ryosuke Niwa.

Improve the run-api-tests help message to explain how test
name matching works.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(parse_args):

  • Scripts/webkitpy/port/base.py:

(Port):
(Port.path_to_api_test_binaries): Make binary names a globally accessible array.

  • Scripts/webkitpy/port/win.py:

(WinPort):
(WinPort.path_to_api_test_binaries): Ditto.

9:37 AM Changeset in webkit [235226] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

JSContext Inspector: Scripts not showing up in Resources tab
https://bugs.webkit.org/show_bug.cgi?id=188814
<rdar://problem/43576117>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2018-08-23
Reviewed by Brian Burg.

  • UserInterface/Views/ResourceSidebarPanel.js:

(WI.ResourceSidebarPanel.prototype._addScript):
This path shouldn't apply to JSContext inspection which will
never have a pageTarget and but doesn't have a mainResource.

8:51 AM Changeset in webkit [235225] by youenn@apple.com
  • 5 edits
    1 delete in trunk

Use "wpt serve" to launch WPT server
https://bugs.webkit.org/show_bug.cgi?id=188848

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • resources/config.json:

Use config alias to serve http/wpt content as /WebKit/

Tools:

Use "wpt serve" provided by WPT instead of using our custom launcher.
This simplifies things and will avoid future breakage.
Further simplify web_platform_test_server.py by removing no longer needed actions.

  • Do not copy files but use alias
  • Do not kill main pid, which leaves subprocesses alive, use interrupt instead.
  • Stop enumerating subprocess pids.
  • Scripts/webkitpy/common/system/executive_mock.py:

(MockExecutive.interrupt):

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py: Removed.
  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer.init):
(WebPlatformTestServer.ports_to_forward):
(WebPlatformTestServer._prepare_config):
(WebPlatformTestServer._spawn_process):
(WebPlatformTestServer._stop_running_server):

8:30 AM Changeset in webkit [235224] by commit-queue@webkit.org
  • 12 edits in trunk/Source/WebKit

Unreviewed, rolling out r235216.
https://bugs.webkit.org/show_bug.cgi?id=188887

Caused 50+ Layout Tests to Crash and 173 api Failures on Debug
builds (Requested by Truitt on #webkit).

Reverted changeset:

"Move legacy directory configuration from WebProcessPool to
API::WebsiteDataStore"
https://bugs.webkit.org/show_bug.cgi?id=188765
https://trac.webkit.org/changeset/235216

8:12 AM Changeset in webkit [235223] by Alan Bujtas
  • 8 edits
    1 copy
    1 add in trunk/Source/WebCore

[LFC][Floating] Decouple the incoming floats and floats already placed in the list
https://bugs.webkit.org/show_bug.cgi?id=188886

Reviewed by Antti Koivisto.

This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats.

  1. Introduce FloatBox class for the incoming floats (This will need to be renamed when adding support for avoidance -incoming box is actually not a float).
  2. Use the existing FloatState::FloatItem class for placed floats.
  • Sources.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • layout/LayoutUnits.h:
  • layout/Verification.cpp:

(WebCore::Layout::LayoutContext::verifyAndOutputMismatchingLayoutTree const):

  • layout/displaytree/DisplayBox.h:
  • layout/floats/FloatBox.cpp: Added.

(WebCore::Layout::FloatBox::FloatBox):
(WebCore::Layout::FloatBox::initializePosition):
(WebCore::Layout::FloatBox::isLeftAligned const):
(WebCore::Layout::FloatBox::setLeft):
(WebCore::Layout::FloatBox::setTopLeft):
(WebCore::Layout::FloatBox::resetVertically):
(WebCore::Layout::FloatBox::resetHorizontally):
(WebCore::Layout::FloatBox::topLeftInContainingBlock const):

  • layout/floats/FloatBox.h: Copied from Source/WebCore/layout/floats/FloatingContext.h.

(WebCore::Layout::FloatBox::top const):
(WebCore::Layout::FloatBox::left const):
(WebCore::Layout::FloatBox::marginTop const):
(WebCore::Layout::FloatBox::marginLeft const):
(WebCore::Layout::FloatBox::marginBottom const):
(WebCore::Layout::FloatBox::marginRight const):
(WebCore::Layout::FloatBox::rectWithMargin const):
(WebCore::Layout::FloatBox::setTop):

  • layout/floats/FloatingContext.cpp:

(WebCore::Layout::FloatingPair::verticalPosition const):
(WebCore::Layout::begin):
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::verticalPositionWithClearance const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingPair::horiztonalPosition const):
(WebCore::Layout::FloatingPair::bottom const):
(WebCore::Layout::Iterator::Iterator):
(WebCore::Layout::Iterator::operator++):
(WebCore::Layout::Iterator::set):
(WebCore::Layout::FloatingContext::initialVerticalPosition const): Deleted.
(WebCore::Layout::FloatingContext::alignWithContainingBlock const): Deleted.
(WebCore::Layout::FloatingContext::alignWithFloatings const): Deleted.
(WebCore::Layout::FloatingContext::toContainingBlock const): Deleted.

  • layout/floats/FloatingContext.h:
  • layout/floats/FloatingState.h:

(WebCore::Layout::FloatingState::root const):
(WebCore::Layout::FloatingState::layoutContext const):

6:59 AM Changeset in webkit [235222] by Jonathan Bedard
  • 2 edits in trunk/Tools

run-api-tests: Add --webkit-only, --webcore-only and --webkit-legacy-only options to run WebKit, WebCore and WebKitLegacy tests
https://bugs.webkit.org/show_bug.cgi?id=188262

Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/api_tests/run_api_tests.py:

(parse_args):

5:34 AM Changeset in webkit [235221] by zandobersek@gmail.com
  • 10 edits in trunk/Source

[CoordGraphics] Remove the remaining CoordinatedGraphicsLayerState cruft
https://bugs.webkit.org/show_bug.cgi?id=188881

Reviewed by Carlos Garcia Campos.

Source/WebCore:

Remove what's left of CoordinatedGraphicsLayerState usage in the
CoordinatedGraphics subsystem. In CoordinatedGraphicsLayer, this means
dropping the m_layerState member variable since at this point it is not
used anymore in any capacity. Affected helper methods and member
variables are also removed where possible.

The syncLayerState() method on the CoordinatedGraphicsLayerClient
interface is adjusted to not accept any parameters. Client should just
mark frame synchronization as required while the layer state is now
managed differently.

Instead of the CoordinatedLayerID (which is removed) the
Nicosia::PlatformLayer::LayerID alias is introduced as a layer ID type,
aliased to the uint64_t type.

CoordinatedGraphicsState.h file is rid of all structs except the
basic CoordinatedGraphicsState struct that at this point contains only
a reference to the Nicosia::Scene object. This will be further
simplified in the patches that follow.

  • platform/graphics/nicosia/NicosiaPlatformLayer.h:

(Nicosia::PlatformLayer::id const):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::didChangeAnimations):
(WebCore::CoordinatedGraphicsLayer::didChangeChildren):
(WebCore::CoordinatedGraphicsLayer::didChangeFilters):
(WebCore::CoordinatedGraphicsLayer::didUpdateTileBuffers):
(WebCore::CoordinatedGraphicsLayer::didChangeGeometry):
(WebCore::CoordinatedGraphicsLayer::CoordinatedGraphicsLayer):
(WebCore::CoordinatedGraphicsLayer::setPosition):
(WebCore::CoordinatedGraphicsLayer::setAnchorPoint):
(WebCore::CoordinatedGraphicsLayer::setSize):
(WebCore::CoordinatedGraphicsLayer::setTransform):
(WebCore::CoordinatedGraphicsLayer::setChildrenTransform):
(WebCore::CoordinatedGraphicsLayer::setPreserves3D):
(WebCore::CoordinatedGraphicsLayer::setMasksToBounds):
(WebCore::CoordinatedGraphicsLayer::setDrawsContent):
(WebCore::CoordinatedGraphicsLayer::setContentsVisible):
(WebCore::CoordinatedGraphicsLayer::setContentsOpaque):
(WebCore::CoordinatedGraphicsLayer::setBackfaceVisibility):
(WebCore::CoordinatedGraphicsLayer::setOpacity):
(WebCore::CoordinatedGraphicsLayer::setContentsRect):
(WebCore::CoordinatedGraphicsLayer::setContentsTileSize):
(WebCore::CoordinatedGraphicsLayer::setContentsTilePhase):
(WebCore::CoordinatedGraphicsLayer::setContentsToSolidColor):
(WebCore::CoordinatedGraphicsLayer::setShowDebugBorder):
(WebCore::CoordinatedGraphicsLayer::setShowRepaintCounter):
(WebCore::CoordinatedGraphicsLayer::setMaskLayer):
(WebCore::CoordinatedGraphicsLayer::setReplicatedByLayer):
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplay):
(WebCore::CoordinatedGraphicsLayer::setNeedsDisplayInRect):
(WebCore::CoordinatedGraphicsLayer::setDebugBorder):
(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):
(WebCore::CoordinatedGraphicsLayer::syncPendingStateChangesIncludingSubLayers):
(WebCore::CoordinatedGraphicsLayer::purgeBackingStores):
(WebCore::CoordinatedGraphicsLayer::setCoordinatorIncludingSubLayersIfNeeded):
(WebCore::toCoordinatedLayerID): Deleted.
(WebCore::CoordinatedGraphicsLayer::didChangeLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncChildren): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncFilters): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayer::syncAnimations): Deleted.
(WebCore::CoordinatedGraphicsLayer::resetLayerState): Deleted.

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.h:
  • platform/graphics/texmap/coordinated/CoordinatedGraphicsState.h:

(): Deleted.
(WebCore::CoordinatedGraphicsLayerState::CoordinatedGraphicsLayerState): Deleted.
(WebCore::CoordinatedGraphicsLayerState::hasPendingChanges const): Deleted.

Source/WebKit:

Rid CompositingCoordinator class of code that manages now-deleted state
tracking of layer creation, update and removal on the
CoordinatedGraphicsState class. The syncLayerState() method is changed
accordingly, now only enforcing a frame synchronization when called.

Use of Nicosia::PlatformLayer::LayerID is adopted since the
CoordinatedLayerID type has been removed.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::purgeGLResources):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.cpp:

(WebKit::CompositingCoordinator::flushPendingLayerChanges):
(WebKit::CompositingCoordinator::initializeRootCompositingLayerIfNeeded):
(WebKit::CompositingCoordinator::syncLayerState):
(WebKit::CompositingCoordinator::createGraphicsLayer):
(WebKit::CompositingCoordinator::detachLayer):
(WebKit::CompositingCoordinator::attachLayer):
(WebKit::CompositingCoordinator::clearPendingStateChanges): Deleted.

  • WebProcess/WebPage/CoordinatedGraphics/CompositingCoordinator.h:
12:00 AM Changeset in webkit [235220] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit

NetworkCache::Storage::lastStableVersion should be a developer-only feature
https://bugs.webkit.org/show_bug.cgi?id=188843
<rdar://problem/43574100>

Reviewed by Geoffrey Garen.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::deleteOldVersions):

Delete old cache versions unconditionally if we are system WebKit.

  • Shared/ChildProcess.h:
  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::isSystemWebKit):

Find out if WebKit is installed under '/System/'.

Note: See TracTimeline for information about the timeline view.