WebKit-https.git
2 years ago[macOS] API test DragAndDropTests.DropColor is failing on macOS 10.12
wenson_hsieh@apple.com [Tue, 9 Oct 2018 03:28:31 +0000 (03:28 +0000)]
[macOS] API test DragAndDropTests.DropColor is failing on macOS 10.12
https://bugs.webkit.org/show_bug.cgi?id=190386

Reviewed by Ryosuke Niwa.

Unlike macOS 10.13 and 10.14, -[NSColor redColor] is not equivalent to a fully red color in sRGB on macOS 10.12.
Fix the test by dragging and dropping an NSColor that is equivalent to rgb(255, 0, 0) on all relevant versions
of macOS.

* TestWebKitAPI/Tests/mac/DragAndDropTestsMac.mm:
(TEST):

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

2 years agoFix inspector/canvas/recording.html after r236952
drousso@apple.com [Tue, 9 Oct 2018 02:37:24 +0000 (02:37 +0000)]
Fix inspector/canvas/recording.html after r236952

Unreviewed. Test gardening.

* inspector/canvas/recording-expected.txt:
* inspector/canvas/recording.html:
Recordings default to only capturing a single frame, so add a parameter to ensure that we
are capturing multiple frames.

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

2 years ago/api/report takes 15+ minutes submitting some test results
rniwa@webkit.org [Tue, 9 Oct 2018 02:17:42 +0000 (02:17 +0000)]
/api/report takes 15+ minutes submitting some test results
https://bugs.webkit.org/show_bug.cgi?id=190382

Rubber-stamped by Alexey Proskuryakov and unofficially reviewed by Dewei Zhu.

The issue was that recursively_ensure_tests would issue thousands of dependent queries.

Since most reporting of results would be happening after all the tests and test metrics had been created,
simply fetch the list of all tests and test metrics upfront in memory.

This would slow-down the reporting of other test results but in practice doesn't matter (an extra few seconds
of overhead) but for slow reporting, it can significantly reduce the runtime from ~10 minutes to ~10 seconds.

* public/include/report-processor.php:
(ReportProcessor::process): Call fetch_tests before recursively_ensure_tests.
(ReportProcessor::fetch_tests): Added. This builds up a mapping of tests based on a parent test ID as well as
a mapping of metrics per test based on its name and then its aggregator's name.
(ReportProcessor::recursively_ensure_tests): Added. Use the in-memory maps built in fetch_tests when possible.
(ReportProcessor::aggregator_list_if_exists): Take a reference instead of passing it by value.
(TestRunsGenerator::add_aggregated_metric): Now takes metric ID. The code to add the test metric had been moved
to recursively_ensure_tests.

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

2 years ago[Cocoa] [WK2] Add support for text alignment and text lists in font attributes
wenson_hsieh@apple.com [Tue, 9 Oct 2018 01:52:49 +0000 (01:52 +0000)]
[Cocoa] [WK2] Add support for text alignment and text lists in font attributes
https://bugs.webkit.org/show_bug.cgi?id=190342
<rdar://problem/44767118>

Reviewed by Tim Horton.

Source/WebCore:

Adds support for computing and encoding information about text alignment and enclosing list elements in the font
attributes dictionary, exposed to the UI delegate on Cocoa platforms. This is exposed through NSParagraphStyle,
which contains properties for both `NSTextAlignment` and an array of enclosing `NSTextList` objects.

Test:   FontAttributes.NestedTextListsWithHorizontalAlignment
        FontAttributes.FontAttributesAfterChangingSelection

* editing/Editor.cpp:
(WebCore::editableTextListsAtPositionInDescendingOrder):

Add a helper function to ascend the DOM, starting at the given position, in search of enclosing list elements.
For each enclosing list element we find within the scope of the editable root, we create a `TextList`
representing the list element.

(WebCore::Editor::fontAttributesAtSelectionStart const):

Compute and set enclosing text lists and text alignment. For text alignment, we convert the initial text-align
value, `start`, to NSTextAlignmentNatural (the default text alignment type on Cocoa platforms); other values
then map to Left, Right, Center, and Justified as expected (taking direction into account).

* editing/FontAttributes.h:
(WebCore::TextList::encode const):
(WebCore::TextList::decode):

Introduce TextList, a platform-agnostic representation of an unordered or ordered list. On Cocoa, this can be
used to construct a corresponding NSTextList.

* editing/cocoa/FontAttributesCocoa.mm:
(WebCore::cocoaTextListMarkerName):

Attempt to map a WebCore list style type to a `NSTextListMarker*` constant. While most of the Cocoa marker
formats have a corresponding web-exposed list style type, many web-exposed types have no Cocoa equivalent; as
such, fall back to default marker formats: "{disc}" for unordered lists and "{decimal}" for ordered lists.

(WebCore::TextList::createTextList const):
(WebCore::FontAttributes::createDictionary const):

Include an NSParagraphStyle in the dictionary of font attributes that includes information about text alignment
and enclosing text lists (per Cocoa convention, in order from outermost list to innermost list).

Source/WebCore/PAL:

* pal/ios/UIKitSoftLink.h:
* pal/ios/UIKitSoftLink.mm:

Add NSParagraphStyle and NSTextList to the UIKit soft link header.

* pal/spi/cocoa/NSAttributedStringSPI.h:
* pal/spi/ios/UIKitSPI.h:

Add some SPI declarations for NSMutableParagraphStyle and NSTextList when building with a non-internal iOS SDK,
and import <UIKit/NSParagraphStyle_Private.h> and <UIKit/NSTextList.h> when building with an internal iOS SDK.
Additionally, define some internal UIFoundation string constants that denote NSTextList marker formats. These
constants are API on macOS, but are neither exposed as API nor SPI on iOS.

Source/WebKit:

Add encoding and decoding for text alignment and text lists in FontAttributes.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<FontAttributes>::encode):
(IPC::ArgumentCoder<FontAttributes>::decode):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm:

Add a new API test to check that the font attributes dictionary contains the correct NSParagraphStyles when
moving the selection around text inside nested list elements.

(TestWebKitAPI::checkParagraphStyles):

Add a new helper to check an NSParagraphStyle against expected results.

(TestWebKitAPI::webViewForTestingFontAttributes):

Allow each test to pass in the name of the test page to load.

(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/nested-lists.html: Added.

Add a new test page that contains text enclosed in multiple levels of unordered and ordered lists.

* TestWebKitAPI/Tests/WebKitCocoa/rich-text-attributes.html:

Remove `text-align: left` from one of these elements, to test for NSTextAlignmentNatural.

LayoutTests:

* editing/mac/attributed-string/attributed-string-for-typing-expected.txt:
* editing/mac/attributed-string/attributed-string-for-typing-with-color-filter-expected.txt:
* platform/mac-sierra/editing/mac/attributed-string/attributed-string-for-typing-expected.txt:
* platform/mac-sierra/editing/mac/attributed-string/attributed-string-for-typing-with-color-filter-expected.txt:

Rebaseline these two layout tests, now that typing attributes include an NSParagraphStyle.

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

2 years agoWebGPU: Rename old WebGPU prototype to WebMetal
justin_fan@apple.com [Tue, 9 Oct 2018 01:37:30 +0000 (01:37 +0000)]
WebGPU: Rename old WebGPU prototype to WebMetal
https://bugs.webkit.org/show_bug.cgi?id=190325
.:

Reviewed by Dean Jackson.

* Source/cmake/WebKitFeatures.cmake:

Source/JavaScriptCore:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* Configurations/FeatureDefines.xcconfig:
* inspector/protocol/Canvas.json:
* inspector/scripts/codegen/generator.py:

Source/WebCore:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Existing WebGPU tests also renamed to reflect WebGPU -> WebMetal change.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* CMakeLists.txt:
* Configurations/FeatureDefines.xcconfig:
* DerivedSources.make:
* Sources.txt:
* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSWebMetalRenderPassAttachmentDescriptorCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderPassAttachmentDescriptorCustom.cpp.
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
* bindings/js/JSWebMetalRenderingContextCustom.cpp: Renamed from Source/WebCore/bindings/js/JSWebGPURenderingContextCustom.cpp.
(WebCore::JSWebMetalRenderingContext::visitAdditionalChildren):
* bindings/js/WebCoreBuiltinNames.h:
* dom/Document.cpp:
(WebCore::Document::getCSSCanvasContext):
* dom/Document.h:
* dom/Document.idl:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::getContext):
(WebCore::HTMLCanvasElement::isWebMetalType):
(WebCore::HTMLCanvasElement::createContextWebMetal):
(WebCore::HTMLCanvasElement::getContextWebMetal):
(WebCore::HTMLCanvasElement::isWebGPUType): Deleted.
(WebCore::HTMLCanvasElement::createContextWebGPU): Deleted.
(WebCore::HTMLCanvasElement::getContextWebGPU): Deleted.
* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.idl:
* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isWebMetal const):
(WebCore::CanvasRenderingContext::isWebGPU const): Deleted.
* html/canvas/WebGPURenderingContext.cpp: Removed.
* html/canvas/WebMetalBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.cpp.
(WebCore::WebMetalBuffer::create):
(WebCore::WebMetalBuffer::WebMetalBuffer):
* html/canvas/WebMetalBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.h.
* html/canvas/WebMetalBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUBuffer.idl.
* html/canvas/WebMetalCommandBuffer.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.cpp.
(WebCore::WebMetalCommandBuffer::create):
(WebCore::WebMetalCommandBuffer::WebMetalCommandBuffer):
(WebCore::WebMetalCommandBuffer::~WebMetalCommandBuffer):
(WebCore::WebMetalCommandBuffer::commit):
(WebCore::WebMetalCommandBuffer::presentDrawable):
(WebCore::WebMetalCommandBuffer::createRenderCommandEncoderWithDescriptor):
(WebCore::WebMetalCommandBuffer::createComputeCommandEncoder):
(WebCore::WebMetalCommandBuffer::completed):
* html/canvas/WebMetalCommandBuffer.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.h.
* html/canvas/WebMetalCommandBuffer.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandBuffer.idl.
* html/canvas/WebMetalCommandQueue.cpp: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.cpp.
(WebCore::WebMetalCommandQueue::create):
(WebCore::WebMetalCommandQueue::WebMetalCommandQueue):
(WebCore::WebMetalCommandQueue::createCommandBuffer):
* html/canvas/WebMetalCommandQueue.h: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.h.
* html/canvas/WebMetalCommandQueue.idl: Renamed from Source/WebCore/html/canvas/WebGPUCommandQueue.idl.
* html/canvas/WebMetalComputeCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.cpp.
(WebCore::GPUSizeMake):
(WebCore::WebMetalComputeCommandEncoder::create):
(WebCore::WebMetalComputeCommandEncoder::WebMetalComputeCommandEncoder):
(WebCore::WebMetalComputeCommandEncoder::setComputePipelineState):
(WebCore::WebMetalComputeCommandEncoder::setBuffer):
(WebCore::WebMetalComputeCommandEncoder::dispatch):
(WebCore::WebMetalComputeCommandEncoder::endEncoding):
* html/canvas/WebMetalComputeCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.h.
* html/canvas/WebMetalComputeCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputeCommandEncoder.idl.
* html/canvas/WebMetalComputePipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.cpp.
(WebCore::WebMetalComputePipelineState::create):
(WebCore::WebMetalComputePipelineState::WebMetalComputePipelineState):
* html/canvas/WebMetalComputePipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.h.
* html/canvas/WebMetalComputePipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUComputePipelineState.idl.
* html/canvas/WebMetalDepthStencilDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.cpp.
(WebCore::WebMetalDepthStencilDescriptor::create):
(WebCore::WebMetalDepthStencilDescriptor::depthWriteEnabled const):
(WebCore::WebMetalDepthStencilDescriptor::setDepthWriteEnabled):
(WebCore::WebMetalDepthStencilDescriptor::depthCompareFunction const):
(WebCore::WebMetalDepthStencilDescriptor::setDepthCompareFunction):
* html/canvas/WebMetalDepthStencilDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.h.
* html/canvas/WebMetalDepthStencilDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilDescriptor.idl.
* html/canvas/WebMetalDepthStencilState.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.cpp.
(WebCore::WebMetalDepthStencilState::create):
(WebCore::WebMetalDepthStencilState::WebMetalDepthStencilState):
(WebCore::WebMetalDepthStencilState::label const):
(WebCore::WebMetalDepthStencilState::setLabel):
* html/canvas/WebMetalDepthStencilState.h: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.h.
* html/canvas/WebMetalDepthStencilState.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.idl.
* html/canvas/WebMetalDrawable.cpp: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.cpp.
(WebCore::WebMetalDrawable::create):
(WebCore::WebMetalDrawable::WebMetalDrawable):
* html/canvas/WebMetalDrawable.h: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.h.
(WebCore::WebMetalDrawable::texture):
* html/canvas/WebMetalDrawable.idl: Renamed from Source/WebCore/html/canvas/WebGPUDrawable.idl.
* html/canvas/WebMetalEnums.cpp: Renamed from Source/WebCore/html/canvas/WebGPUEnums.cpp.
(WebCore::toWebMetalCompareFunction):
(WebCore::web3DCompareFunctionName):
(WebCore::toGPUCompareFunction):
* html/canvas/WebMetalEnums.h: Renamed from Source/WebCore/html/canvas/WebGPUEnums.h.
* html/canvas/WebMetalEnums.idl: Renamed from Source/WebCore/html/canvas/WebGPUEnums.idl.
* html/canvas/WebMetalFunction.cpp: Renamed from Source/WebCore/html/canvas/WebGPUFunction.cpp.
(WebCore::WebMetalFunction::create):
(WebCore::WebMetalFunction::WebMetalFunction):
* html/canvas/WebMetalFunction.h: Renamed from Source/WebCore/html/canvas/WebGPUFunction.h.
* html/canvas/WebMetalFunction.idl: Renamed from Source/WebCore/html/canvas/WebGPUFunction.idl.
* html/canvas/WebMetalLibrary.cpp: Renamed from Source/WebCore/html/canvas/WebGPULibrary.cpp.
(WebCore::WebMetalLibrary::create):
(WebCore::WebMetalLibrary::WebMetalLibrary):
(WebCore::WebMetalLibrary::functionNames const):
(WebCore::WebMetalLibrary::functionWithName const):
* html/canvas/WebMetalLibrary.h: Renamed from Source/WebCore/html/canvas/WebGPULibrary.h.
* html/canvas/WebMetalLibrary.idl: Renamed from Source/WebCore/html/canvas/WebGPULibrary.idl.
* html/canvas/WebMetalRenderCommandEncoder.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.cpp.
(WebCore::WebMetalRenderCommandEncoder::create):
(WebCore::WebMetalRenderCommandEncoder::WebMetalRenderCommandEncoder):
(WebCore::WebMetalRenderCommandEncoder::setRenderPipelineState):
(WebCore::WebMetalRenderCommandEncoder::setDepthStencilState):
(WebCore::WebMetalRenderCommandEncoder::setVertexBuffer):
(WebCore::WebMetalRenderCommandEncoder::setFragmentBuffer):
(WebCore::WebMetalRenderCommandEncoder::drawPrimitives):
(WebCore::WebMetalRenderCommandEncoder::endEncoding):
* html/canvas/WebMetalRenderCommandEncoder.h: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.h.
* html/canvas/WebMetalRenderCommandEncoder.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderCommandEncoder.idl.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassAttachmentDescriptor::WebMetalRenderPassAttachmentDescriptor):
(WebCore::WebMetalRenderPassAttachmentDescriptor::loadAction const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setLoadAction):
(WebCore::WebMetalRenderPassAttachmentDescriptor::storeAction const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setStoreAction):
(WebCore::WebMetalRenderPassAttachmentDescriptor::texture const):
(WebCore::WebMetalRenderPassAttachmentDescriptor::setTexture):
* html/canvas/WebMetalRenderPassAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::create):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::WebMetalRenderPassColorAttachmentDescriptor):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::descriptor const):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::clearColor const):
(WebCore::WebMetalRenderPassColorAttachmentDescriptor::setClearColor):
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassColorAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::create):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::WebMetalRenderPassDepthAttachmentDescriptor):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::clearDepth const):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::setClearDepth):
(WebCore::WebMetalRenderPassDepthAttachmentDescriptor::descriptor const):
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPassDepthAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDepthAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPassDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.cpp.
(WebCore::WebMetalRenderPassDescriptor::create):
(WebCore::WebMetalRenderPassDescriptor::depthAttachment):
(WebCore::WebMetalRenderPassDescriptor::colorAttachments):
* html/canvas/WebMetalRenderPassDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.h.
* html/canvas/WebMetalRenderPassDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPassDescriptor.idl.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.cpp.
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::create):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::WebMetalRenderPipelineColorAttachmentDescriptor):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::pixelFormat const):
(WebCore::WebMetalRenderPipelineColorAttachmentDescriptor::setPixelFormat):
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.h.
* html/canvas/WebMetalRenderPipelineColorAttachmentDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineColorAttachmentDescriptor.idl.
* html/canvas/WebMetalRenderPipelineDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.cpp.
(WebCore::WebMetalRenderPipelineDescriptor::create):
(WebCore::WebMetalRenderPipelineDescriptor::vertexFunction const):
(WebCore::WebMetalRenderPipelineDescriptor::setVertexFunction):
(WebCore::WebMetalRenderPipelineDescriptor::fragmentFunction const):
(WebCore::WebMetalRenderPipelineDescriptor::setFragmentFunction):
(WebCore::WebMetalRenderPipelineDescriptor::colorAttachments):
(WebCore::WebMetalRenderPipelineDescriptor::depthAttachmentPixelFormat const):
(WebCore::WebMetalRenderPipelineDescriptor::setDepthAttachmentPixelFormat):
(WebCore::WebMetalRenderPipelineDescriptor::reset):
* html/canvas/WebMetalRenderPipelineDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.h.
* html/canvas/WebMetalRenderPipelineDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineDescriptor.idl.
* html/canvas/WebMetalRenderPipelineState.cpp: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.cpp.
(WebCore::WebMetalRenderPipelineState::create):
(WebCore::WebMetalRenderPipelineState::WebMetalRenderPipelineState):
(WebCore::WebMetalRenderPipelineState::label const):
(WebCore::WebMetalRenderPipelineState::setLabel):
* html/canvas/WebMetalRenderPipelineState.h: Renamed from Source/WebCore/html/canvas/WebGPURenderPipelineState.h.
* html/canvas/WebMetalRenderPipelineState.idl: Renamed from Source/WebCore/html/canvas/WebGPUDepthStencilState.idl.
* html/canvas/WebMetalRenderingContext.cpp: Added.
(WebCore::WebMetalRenderingContext::create):
(WebCore::WebMetalRenderingContext::WebMetalRenderingContext):
(WebCore::WebMetalRenderingContext::canvas const):
(WebCore::WebMetalRenderingContext::initializeNewContext):
(WebCore::WebMetalRenderingContext::clampedCanvasSize const):
(WebCore::WebMetalRenderingContext::hasPendingActivity const):
(WebCore::WebMetalRenderingContext::stop):
(WebCore::WebMetalRenderingContext::activeDOMObjectName const):
(WebCore::WebMetalRenderingContext::canSuspendForDocumentSuspension const):
(WebCore::WebMetalRenderingContext::platformLayer const):
(WebCore::WebMetalRenderingContext::markLayerComposited):
(WebCore::WebMetalRenderingContext::reshape):
(WebCore::WebMetalRenderingContext::createLibrary):
(WebCore::WebMetalRenderingContext::createRenderPipelineState):
(WebCore::WebMetalRenderingContext::createDepthStencilState):
(WebCore::WebMetalRenderingContext::createComputePipelineState):
(WebCore::WebMetalRenderingContext::createCommandQueue):
(WebCore::WebMetalRenderingContext::nextDrawable):
(WebCore::WebMetalRenderingContext::createBuffer):
(WebCore::WebMetalRenderingContext::createTexture):
* html/canvas/WebMetalRenderingContext.h: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.h.
* html/canvas/WebMetalRenderingContext.idl: Renamed from Source/WebCore/html/canvas/WebGPURenderingContext.idl.
* html/canvas/WebMetalSize.h: Renamed from Source/WebCore/html/canvas/WebGPUSize.h.
* html/canvas/WebMetalSize.idl: Renamed from Source/WebCore/html/canvas/WebGPUSize.idl.
* html/canvas/WebMetalTexture.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTexture.cpp.
(WebCore::WebMetalTexture::create):
(WebCore::WebMetalTexture::WebMetalTexture):
* html/canvas/WebMetalTexture.h: Renamed from Source/WebCore/html/canvas/WebGPUTexture.h.
* html/canvas/WebMetalTexture.idl: Renamed from Source/WebCore/html/canvas/WebGPUTexture.idl.
* html/canvas/WebMetalTextureDescriptor.cpp: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.cpp.
(WebCore::WebMetalTextureDescriptor::create):
(WebCore::WebMetalTextureDescriptor::WebMetalTextureDescriptor):
(WebCore::WebMetalTextureDescriptor::width const):
(WebCore::WebMetalTextureDescriptor::setWidth):
(WebCore::WebMetalTextureDescriptor::height const):
(WebCore::WebMetalTextureDescriptor::setHeight):
(WebCore::WebMetalTextureDescriptor::sampleCount const):
(WebCore::WebMetalTextureDescriptor::setSampleCount):
(WebCore::WebMetalTextureDescriptor::textureType const):
(WebCore::WebMetalTextureDescriptor::setTextureType):
(WebCore::WebMetalTextureDescriptor::storageMode const):
(WebCore::WebMetalTextureDescriptor::setStorageMode):
(WebCore::WebMetalTextureDescriptor::usage const):
(WebCore::WebMetalTextureDescriptor::setUsage):
* html/canvas/WebMetalTextureDescriptor.h: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.h.
* html/canvas/WebMetalTextureDescriptor.idl: Renamed from Source/WebCore/html/canvas/WebGPUTextureDescriptor.idl.
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::requestContent):
(WebCore::contextAsScriptValue):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::setWebMetalEnabled):
(WebCore::RuntimeEnabledFeatures::webMetalEnabled const):
(WebCore::RuntimeEnabledFeatures::setWebGPUEnabled): Deleted.
(WebCore::RuntimeEnabledFeatures::webGPUEnabled const): Deleted.
* platform/Logging.h:
* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(WebCore::PlatformCALayerCocoa::layerTypeForPlatformLayer):
(WebCore::PlatformCALayerCocoa::PlatformCALayerCocoa):
* platform/graphics/cocoa/WebMetalLayer.h: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.h.
* platform/graphics/cocoa/WebMetalLayer.mm: Renamed from Source/WebCore/platform/graphics/cocoa/WebGPULayer.mm.
(-[WebMetalLayer initWithGPUDevice:]):
* platform/graphics/gpu/GPUBuffer.cpp:
(WebCore::GPUBuffer::~GPUBuffer):
* platform/graphics/gpu/GPUBuffer.h:
* platform/graphics/gpu/GPUCommandBuffer.cpp:
(WebCore::GPUCommandBuffer::~GPUCommandBuffer):
* platform/graphics/gpu/GPUCommandBuffer.h:
* platform/graphics/gpu/GPUCommandQueue.cpp:
(WebCore::GPUCommandQueue::~GPUCommandQueue):
* platform/graphics/gpu/GPUCommandQueue.h:
* platform/graphics/gpu/GPUComputeCommandEncoder.cpp:
(WebCore::GPUComputeCommandEncoder::~GPUComputeCommandEncoder):
* platform/graphics/gpu/GPUComputeCommandEncoder.h:
* platform/graphics/gpu/GPUComputePipelineState.cpp:
(WebCore::GPUComputePipelineState::~GPUComputePipelineState):
* platform/graphics/gpu/GPUComputePipelineState.h:
* platform/graphics/gpu/GPUDepthStencilDescriptor.cpp:
(WebCore::GPUDepthStencilDescriptor::~GPUDepthStencilDescriptor):
* platform/graphics/gpu/GPUDepthStencilDescriptor.h:
* platform/graphics/gpu/GPUDepthStencilState.cpp:
(WebCore::GPUDepthStencilState::~GPUDepthStencilState):
* platform/graphics/gpu/GPUDepthStencilState.h:
* platform/graphics/gpu/GPUDevice.cpp:
(WebCore::GPUDevice::~GPUDevice):
* platform/graphics/gpu/GPUDevice.h:
(WebCore::GPUDevice::layer const):
* platform/graphics/gpu/GPUDrawable.cpp:
(WebCore::GPUDrawable::~GPUDrawable):
* platform/graphics/gpu/GPUDrawable.h:
* platform/graphics/gpu/GPUEnums.h:
* platform/graphics/gpu/GPUFunction.cpp:
(WebCore::GPUFunction::~GPUFunction):
* platform/graphics/gpu/GPUFunction.h:
* platform/graphics/gpu/GPULibrary.cpp:
(WebCore::GPULibrary::~GPULibrary):
* platform/graphics/gpu/GPULibrary.h:
* platform/graphics/gpu/GPURenderCommandEncoder.cpp:
(WebCore::GPURenderCommandEncoder::~GPURenderCommandEncoder):
* platform/graphics/gpu/GPURenderCommandEncoder.h:
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.cpp:
(WebCore::GPURenderPassAttachmentDescriptor::~GPURenderPassAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.cpp:
(WebCore::GPURenderPassColorAttachmentDescriptor::~GPURenderPassColorAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassColorAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.cpp:
(WebCore::GPURenderPassDepthAttachmentDescriptor::~GPURenderPassDepthAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPassDepthAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPassDescriptor.cpp:
(WebCore::GPURenderPassDescriptor::~GPURenderPassDescriptor):
* platform/graphics/gpu/GPURenderPassDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.cpp:
(WebCore::GPURenderPipelineColorAttachmentDescriptor::~GPURenderPipelineColorAttachmentDescriptor):
* platform/graphics/gpu/GPURenderPipelineColorAttachmentDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineDescriptor.cpp:
(WebCore::GPURenderPipelineDescriptor::~GPURenderPipelineDescriptor):
* platform/graphics/gpu/GPURenderPipelineDescriptor.h:
* platform/graphics/gpu/GPURenderPipelineState.cpp:
(WebCore::GPURenderPipelineState::~GPURenderPipelineState):
* platform/graphics/gpu/GPURenderPipelineState.h:
* platform/graphics/gpu/GPUSize.h:
* platform/graphics/gpu/GPUTexture.cpp:
(WebCore::GPUTexture::~GPUTexture):
* platform/graphics/gpu/GPUTexture.h:
* platform/graphics/gpu/GPUTextureDescriptor.cpp:
(WebCore::GPUTextureDescriptor::~GPUTextureDescriptor):
* platform/graphics/gpu/GPUTextureDescriptor.h:
* platform/graphics/metal/GPUBufferMetal.mm:
(WebCore::GPUBuffer::GPUBuffer):
* platform/graphics/metal/GPUCommandBufferMetal.mm:
* platform/graphics/metal/GPUCommandQueueMetal.mm:
* platform/graphics/metal/GPUComputeCommandEncoderMetal.mm:
* platform/graphics/metal/GPUComputePipelineStateMetal.mm:
(WebCore::GPUComputePipelineState::GPUComputePipelineState):
* platform/graphics/metal/GPUDepthStencilDescriptorMetal.mm:
* platform/graphics/metal/GPUDepthStencilStateMetal.mm:
(WebCore::GPUDepthStencilState::setLabel const):
* platform/graphics/metal/GPUDeviceMetal.mm:
(WebCore::GPUDevice::reshape const):
* platform/graphics/metal/GPUDrawableMetal.mm:
(WebCore::GPUDrawable::release):
* platform/graphics/metal/GPUFunctionMetal.mm:
* platform/graphics/metal/GPULibraryMetal.mm:
(WebCore::GPULibrary::GPULibrary):
* platform/graphics/metal/GPURenderCommandEncoderMetal.mm:
(WebCore::GPURenderCommandEncoder::GPURenderCommandEncoder):
* platform/graphics/metal/GPURenderPassAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassColorAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassDepthAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPassDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineColorAttachmentDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineDescriptorMetal.mm:
* platform/graphics/metal/GPURenderPipelineStateMetal.mm:
(WebCore::GPURenderPipelineState::setLabel const):
* platform/graphics/metal/GPUTextureDescriptorMetal.mm:
* platform/graphics/metal/GPUTextureMetal.mm:
(WebCore::GPUTexture::GPUTexture):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setWebMetalEnabled):
(WebCore::InternalSettings::setWebGPUEnabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebCore/PAL:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* Configurations/FeatureDefines.xcconfig:

Source/WebInspectorUI:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.
For WebInspector, add WebMetal to valid enums for canvas types.

* UserInterface/Models/Canvas.js:
(WI.Canvas.fromPayload):
(WI.Canvas.displayNameForContextType):

Source/WebKit:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

Source/WebKitLegacy/mac:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* Configurations/FeatureDefines.xcconfig:
* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences webMetalEnabled]):
(-[WebPreferences setWebMetalEnabled:]):
(-[WebPreferences webGPUEnabled]): Deleted.
(-[WebPreferences setWebGPUEnabled:]): Deleted.
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):

Tools:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* DumpRenderTree/mac/DumpRenderTree.mm:
(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):
* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:
* TestWebKitAPI/Tests/WebCore/mac/GPUBuffer.mm:
* TestWebKitAPI/Tests/WebCore/mac/GPUCommandQueue.mm:
* TestWebKitAPI/Tests/WebCore/mac/GPUDevice.mm:
* TestWebKitAPI/Tests/WebCore/mac/GPUFunction.mm:
* TestWebKitAPI/Tests/WebCore/mac/GPULibrary.mm:
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::beginTesting):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::setWebMetalEnabled):
(WTR::TestRunner::setWebGPUEnabled): Deleted.
* WebKitTestRunner/InjectedBundle/TestRunner.h:

Websites/webkit.org:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* demos/webgpu/shared.js: Removed.
* demos/webmetal/2d.html: Renamed from Websites/webkit.org/demos/webgpu/2d.html.
* demos/webmetal/2d.jpg: Renamed from Websites/webkit.org/demos/webgpu/2d.jpg.
* demos/webmetal/2d.js: Renamed from Websites/webkit.org/demos/webgpu/2d.js.
(init):
* demos/webmetal/circle.svg: Renamed from Websites/webkit.org/demos/webgpu/circle.svg.
* demos/webmetal/cubes.html: Renamed from Websites/webkit.org/demos/webgpu/cubes.html.
* demos/webmetal/cubes.jpg: Renamed from Websites/webkit.org/demos/webgpu/cubes.jpg.
* demos/webmetal/cubes.js: Renamed from Websites/webkit.org/demos/webgpu/cubes.js.
(init):
* demos/webmetal/gl-matrix-min.js: Renamed from Websites/webkit.org/demos/webgpu/gl-matrix-min.js.
* demos/webmetal/hello.html: Renamed from Websites/webkit.org/demos/webgpu/hello.html.
* demos/webmetal/hello.jpg: Renamed from Websites/webkit.org/demos/webgpu/hello.jpg.
* demos/webmetal/hello.js: Renamed from Websites/webkit.org/demos/webgpu/hello.js.
(init):
* demos/webmetal/index.html: Renamed from Websites/webkit.org/demos/webgpu/index.html.
* demos/webmetal/shared.css: Renamed from Websites/webkit.org/demos/webgpu/shared.css.
* demos/webmetal/shared.js: Added.
(const.hasWebMetal):
(const.checkForWebMetal):
* demos/webmetal/simple.html: Renamed from Websites/webkit.org/demos/webgpu/simple.html.
* demos/webmetal/simple.jpg: Renamed from Websites/webkit.org/demos/webgpu/simple.jpg.
* demos/webmetal/simple.js: Renamed from Websites/webkit.org/demos/webgpu/simple.js.
(init):
* experimental-features.html:

LayoutTests:

<rdar://problem/44990443>

Reviewed by Dean Jackson.

Rename WebGPU prototype files to WebMetal in preparation for implementing the new (Oct 2018) WebGPU interface.

* fast/canvas/webgpu/webgpu-runtime-flag-expected.txt: Removed.
* fast/canvas/webmetal/webmetal-dispatch-expected.txt: Renamed from LayoutTests/fast/canvas/webgpu/webgpu-dispatch-expected.txt.
* fast/canvas/webmetal/webmetal-dispatch.html: Renamed from LayoutTests/fast/canvas/webgpu/webgpu-dispatch.html.
* fast/canvas/webmetal/webmetal-runtime-flag-expected.txt: Added.
* fast/canvas/webmetal/webmetal-runtime-flag.html: Renamed from LayoutTests/fast/canvas/webgpu/webgpu-runtime-flag.html.
* inspector/canvas/create-context-webmetal-expected.txt: Renamed from LayoutTests/inspector/canvas/create-context-webgpu-expected.txt.
* inspector/canvas/create-context-webmetal.html: Renamed from LayoutTests/inspector/canvas/create-context-webgpu.html.
* inspector/canvas/resolveCanvasContext-webgpu-expected.txt: Removed.
* inspector/canvas/resolveCanvasContext-webmetal-expected.txt: Added.
* inspector/canvas/resolveCanvasContext-webmetal.html: Renamed from LayoutTests/inspector/canvas/resolveCanvasContext-webgpu.html.
* platform/gtk/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:

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

2 years agoWeb Inspector: Dark Mode: canvas recording glyph is black on gray
drousso@apple.com [Tue, 9 Oct 2018 00:19:40 +0000 (00:19 +0000)]
Web Inspector: Dark Mode: canvas recording glyph is black on gray
https://bugs.webkit.org/show_bug.cgi?id=190367
<rdar://problem/45099304>

Reviewed by Joseph Pecoraro.

* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas > footer .view-recording): Added.
(.content-view.canvas-overview .content-view.canvas > footer > .recordings::before): Deleted.

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

2 years agoWeb Inspector: allow multiple canvases to be recorded at the same time
drousso@apple.com [Tue, 9 Oct 2018 00:14:52 +0000 (00:14 +0000)]
Web Inspector: allow multiple canvases to be recorded at the same time
https://bugs.webkit.org/show_bug.cgi?id=190305

Reviewed by Brian Burg.

Source/WebInspectorUI:

Moved the logic for maintaining whether a canvas is actively recording from
`WI.CanvasManager` to `WI.Canvas`, meaning that each canvas can now record independently of
every other canvas in the page. If multiple recordings are all finished simultaneously, only
show the first one to be recieved by the frontend.

* UserInterface/Controllers/CanvasManager.js:
(WI.CanvasManager):
(WI.CanvasManager.prototype.recordingProgress):
(WI.CanvasManager.prototype.recordingFinished):
(WI.CanvasManager.prototype.programCreated):
(WI.CanvasManager.prototype.programDeleted):
(WI.CanvasManager.prototype._removeCanvas):
(WI.CanvasManager.prototype._mainResourceDidChange):
(WI.CanvasManager.prototype.get recordingCanvas): Deleted.
(WI.CanvasManager.prototype.startRecording): Deleted.
(WI.CanvasManager.prototype.stopRecording): Deleted.
(WI.CanvasManager.prototype._dispatchShaderProgramRemoved): Deleted.

* UserInterface/Models/Canvas.js:
(WI.Canvas.prototype.get recordingFrameCount): Added.
(WI.Canvas.prototype.get recordingBufferUsed): Added.
(WI.Canvas.prototype.get recordingActive): Added.
(WI.Canvas.prototype.get isRecording): Deleted.
(WI.Canvas.prototype.startRecording): Added.
(WI.Canvas.prototype.stopRecording): Added.
(WI.Canvas.prototype.recordingProgress): Added.
(WI.Canvas.prototype.recordingFinished): Added.

* UserInterface/Views/CanvasTabContentView.js:
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._recordingImportedOrStopped):
(WI.CanvasTabContentView.prototype._handleSpace):
(WI.CanvasTabContentView):

* UserInterface/Views/CanvasOverviewContentView.css:
(.content-view.canvas-overview .content-view.canvas.recording-active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .title): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .subtitle): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .navigation-bar > .item): Added.
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .recording-active) > header > .navigation-bar): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop.disabled): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover): Added.
(.content-view.canvas-overview .content-view.canvas:not(.recording-active) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > .progress-vie): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > .preview): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header): Added.
(.content-view.canvas-overview .content-view.canvas.recording-active > header > .titles > .subtitle): Added.
(.content-view.canvas-overview .content-view.canvas.is-recording): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item): Deleted.
(.content-view.canvas-overview .content-view.canvas:matches(:hover, .is-recording) > header > .navigation-bar): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover): Deleted.
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > .progress-vie): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > .preview): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header): Deleted.
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle): Deleted.

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype.detached):
(WI.CanvasContentView.prototype._toggleRecording):
(WI.CanvasContentView.prototype._recordingProgress):
(WI.CanvasContentView.prototype._recordingStopped):
(WI.CanvasContentView.prototype._shaderProgramAdded):
(WI.CanvasContentView.prototype._shaderProgramRemoved):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype._updateProgressView):

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel):
(WI.CanvasSidebarPanel.prototype.set canvas):
(WI.CanvasSidebarPanel.prototype._toggleRecording):
(WI.CanvasSidebarPanel.prototype._updateRecordNavigationItem):

* UserInterface/Views/CanvasTreeElement.js:
(WI.CanvasTreeElement):
(WI.CanvasTreeElement.prototype._updateStatus):

LayoutTests:

* inspector/canvas/recording-2d.html:
* inspector/canvas/recording-bitmaprenderer.html:
* inspector/canvas/recording-expected.html:
* inspector/canvas/recording-webgl.html:
* inspector/canvas/recording.html:
* inspector/canvas/resources/recording-utilities.js:
(TestPage.registerInitializer.window.startRecording.handleRecordingProgress):
(TestPage.registerInitializer.window.startRecording):
(TestPage.registerInitializer.window.consoleRecord):
(TestPage.registerInitializer):

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

2 years agoFollowup to r236942: Make input type=color an internal feature
wenson_hsieh@apple.com [Tue, 9 Oct 2018 00:11:54 +0000 (00:11 +0000)]
Followup to r236942: Make input type=color an internal feature
https://bugs.webkit.org/show_bug.cgi?id=189162

Rubber-stamped by Dean Jackson.

I've learned from Dean that an internal feature is more suitable than an experimental feature in this scenario.

* Shared/WebPreferences.yaml:

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

2 years agoWeb Inspector: replace Range.svg icon
drousso@apple.com [Tue, 9 Oct 2018 00:07:24 +0000 (00:07 +0000)]
Web Inspector: replace Range.svg icon
https://bugs.webkit.org/show_bug.cgi?id=190372

Reviewed by Joseph Pecoraro.

* UserInterface/Images/Range.svg:
* UserInterface/Images/RangeLarge.svg: Added.

* UserInterface/Models/Resource.js:
(WI.Resource.classNameForResource): Added.
Create a static function for specializing the `className` of `WI.Resource` objects.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype._populateNameCell):

* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement):

* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-ping .icon, .resource-icon.resource-type-beacon .icon, .large .resource-icon.resource-type-ping .icon, .large .resource-icon.resource-type-beacon .icon):
(.resource-icon.resource-type-range .icon):
(.large .resource-icon.resource-type-range .icon): Added.
Drive-by: added `.large` versions of `ping` and `beacon` icons for the
`WI.OpenResourceDialog` elements.

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

2 years agoCrashTracer: backboardd at Recursion :: QuartzCore: CA::Render::Updater::prepare_subl...
dino@apple.com [Mon, 8 Oct 2018 23:19:25 +0000 (23:19 +0000)]
CrashTracer: backboardd at Recursion :: QuartzCore: CA::Render::Updater::prepare_sublayer0
https://bugs.webkit.org/show_bug.cgi?id=190376
<rdar://problem/44986520>

Reviewed by Tim Horton.

Source/WebCore:

Very deep CoreAnimation layer trees can cause problems. Reduce our maximum
depth from 256 to 128.

Modified existing test: compositing/layer-creation/deep-tree.html

* platform/graphics/ca/GraphicsLayerCA.cpp: Cap the depth at 128.

LayoutTests:

* compositing/layer-creation/deep-tree.html:

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

2 years agoUnreviewed, rolling out r236941.
commit-queue@webkit.org [Mon, 8 Oct 2018 22:27:48 +0000 (22:27 +0000)]
Unreviewed, rolling out r236941.
https://bugs.webkit.org/show_bug.cgi?id=190374

Causing API test failures in new test (Requested by jernoble
on #webkit).

Reverted changeset:

"ISOTrackEncryptionBox returns incorrect defaultKeyID"
https://bugs.webkit.org/show_bug.cgi?id=190368
https://trac.webkit.org/changeset/236941

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

2 years agoMake <input type=color> a runtime enabled (on-by-default) feature
akeerthi@apple.com [Mon, 8 Oct 2018 22:08:41 +0000 (22:08 +0000)]
Make <input type=color> a runtime enabled (on-by-default) feature
https://bugs.webkit.org/show_bug.cgi?id=189162

Reviewed by Wenson Hsieh and Tim Horton.

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Enable the build-time flag INPUT_TYPE_COLOR by default and introduce a runtime-enabled feature for input type
color, also on by default.

Covered by rebaselining existing layout tests.

* Configurations/FeatureDefines.xcconfig:
* html/InputType.cpp:
(WebCore::createInputTypeFactoryMap):
* page/RuntimeEnabledFeatures.h:
(WebCore::RuntimeEnabledFeatures::inputTypeColorEnabled const):
(WebCore::RuntimeEnabledFeatures::setInputTypeColorEnabled):

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig:

Source/WebKit:

* Configurations/FeatureDefines.xcconfig:
* Shared/WebPreferences.yaml:

Add an experimental feature flag for input type=color.

* UIProcess/mac/WebColorPickerMac.mm:
(-[WKPopoverColorWell webDelegate]):
(-[WKPopoverColorWell setWebDelegate:]):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig:

Source/WTF:

* wtf/FeatureDefines.h:

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

LayoutTests:

Rebaseline layout tests after enabling input type=color by default.

* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
* platform/ios-wk2/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
* platform/ios/fast/forms/color/input-appearance-color-expected.txt:
* platform/ios/imported/w3c/web-platform-tests/html/semantics/forms/the-form-element/form-elements-filter-expected.txt: Added.
* platform/ios/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/color-expected.txt:
* platform/mac/accessibility/roles-exposed-expected.txt:
* platform/mac/fast/selectors/read-only-read-write-input-basics-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-validity-badInput-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/constraints/form-validation-willValidate-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/selection-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/type-change-state-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/forms/the-input-element/valueMode-expected.txt:
* platform/mac/imported/w3c/web-platform-tests/html/semantics/selectors/pseudo-classes/readwrite-readonly-expected.txt:

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

2 years agoISOTrackEncryptionBox returns incorrect defaultKeyID
jer.noble@apple.com [Mon, 8 Oct 2018 21:12:12 +0000 (21:12 +0000)]
ISOTrackEncryptionBox returns incorrect defaultKeyID
https://bugs.webkit.org/show_bug.cgi?id=190368

Reviewed by Eric Carlson.

Source/WebCore:

Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox

ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.

Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/iso/ISOBox.h:
* platform/graphics/iso/ISOOriginalFormatBox.h:
* platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
* platform/graphics/iso/ISOSchemeInformationBox.h:
* platform/graphics/iso/ISOSchemeTypeBox.h:
* platform/graphics/iso/ISOTrackEncryptionBox.cpp:
(WebCore::ISOTrackEncryptionBox::parse):
* platform/graphics/iso/ISOTrackEncryptionBox.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/ISOBox.cpp: Added.
(TestWebKitAPI::TEST):

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

2 years agoTry to fix the build
timothy_horton@apple.com [Mon, 8 Oct 2018 21:10:47 +0000 (21:10 +0000)]
Try to fix the build

* UIProcess/ios/WKKeyboardScrollingAnimator.mm:

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

2 years ago[Mac] Web Automation: some keyboard interactions don't generate events, causing event...
bburg@apple.com [Mon, 8 Oct 2018 21:02:20 +0000 (21:02 +0000)]
[Mac] Web Automation: some keyboard interactions don't generate events, causing event simulation to stall
https://bugs.webkit.org/show_bug.cgi?id=190316
<rdar://problem/42833290>

Reviewed by Tim Horton.

Some users have reported that Cmd-A for Select All no longer works in safaridriver.
Instead, this hangs the session. This happens because the WebAutomationSession class
assumes that each call to simulateKeyboardInteraction causes keyboard events to be processed,
but in corner cases like Cmd-A, some events that we simulate are swallowed by AppKit and
never make it back to WebKit. Because the session never gets the "keyboard events flushed"
callback, it assumes the interaction is still ongoing, and never returns, causing a hang.

This patch consists of two parts:
 - Add logging of important state changes and events when simulating user input.
 - Make code more robust when simulating key actions that generate no events on macOS.

This change progresses WPT test key_shortcuts.py::test_mod_a_and_backspace_deletes_all_text on Mac.

* Platform/Logging.h: Add a logging channel.
* UIProcess/Automation/SimulatedInputDispatcher.cpp:
(WebKit::SimulatedInputDispatcher::keyFrameTransitionDurationTimerFired):
(WebKit::SimulatedInputDispatcher::transitionBetweenKeyFrames):
(WebKit::SimulatedInputDispatcher::transitionInputSourceToState):
(WebKit::SimulatedInputDispatcher::run):
(WebKit::SimulatedInputDispatcher::finishDispatching):
Add a bunch of logging so its easier to figure out where things get stuck.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::simulateKeyboardInteraction):
In some cases, no keyboard events need to be processed for the simulated interaction.
When that happens, early exit rather than waiting for keyboard events to be flushed.

* UIProcess/Automation/mac/WebAutomationSessionMac.mm:
(WebKit::WebAutomationSession::sendSynthesizedEventsToPage): Logging.
(WebKit::WebAutomationSession::platformSimulateKeyboardInteraction):
On Mac, if you tap a character key while Command is held down, only a KeyDown event
is forwarded to the first responder by AppKit, even if you send a KeyUp event too.
In this case don't send an NSEvent since it won't ever be delivered back to WebKit.

* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::isProcessingKeyboardEvents const): Expose this state for keyboard
events too.

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

2 years agoMove SystemFontDatabase to a file of its own
antti@apple.com [Mon, 8 Oct 2018 20:37:26 +0000 (20:37 +0000)]
Move SystemFontDatabase to a file of its own
https://bugs.webkit.org/show_bug.cgi?id=190347

Reviewed by Chris Dumez.

Also rename it to SystemFontDatabaseCoreText as it is CoreText specific.

* SourcesCocoa.txt:
* WebCore.xcodeproj/project.pbxproj:
* page/MemoryRelease.cpp:
(WebCore::releaseNoncriticalMemory):
* page/cocoa/MemoryReleaseCocoa.mm:

Release SystemFontDatabaseCoreText directly from platform specific cleanup code.

(WebCore::platformReleaseMemory):
* platform/graphics/cocoa/FontDescriptionCocoa.cpp:
(WebCore::FontDescription::invalidateCaches):
(WebCore::systemFontCascadeList):
(WebCore::FontCascadeDescription::effectiveFamilyCount const):
(WebCore::FontCascadeDescription::effectiveFamilyAt const):
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParameters): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::isHashTableDeletedValue const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::operator== const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::hash const): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::hash): Deleted.
(WebCore::SystemFontDatabase::CoreTextCascadeListParameters::CoreTextCascadeListParametersHash::equal): Deleted.
(): Deleted.
(WebCore::SystemFontDatabase::singleton): Deleted.
(WebCore::SystemFontDatabase::systemFontCascadeList): Deleted.
(WebCore::SystemFontDatabase::clear): Deleted.
(WebCore::SystemFontDatabase::SystemFontDatabase): Deleted.
(WebCore::SystemFontDatabase::applyWeightItalicsAndFallbackBehavior): Deleted.
(WebCore::SystemFontDatabase::removeCascadeList): Deleted.
(WebCore::SystemFontDatabase::computeCascadeList): Deleted.
(WebCore::systemFontParameters): Deleted.
* platform/graphics/cocoa/SystemFontDatabaseCoreText.cpp: Added.
(WebCore::SystemFontDatabaseCoreText::singleton):
(WebCore::SystemFontDatabaseCoreText::SystemFontDatabaseCoreText):
(WebCore::SystemFontDatabaseCoreText::systemFontCascadeList):
(WebCore::SystemFontDatabaseCoreText::clear):
(WebCore::SystemFontDatabaseCoreText::applyWeightItalicsAndFallbackBehavior):
(WebCore::SystemFontDatabaseCoreText::removeCascadeList):
(WebCore::SystemFontDatabaseCoreText::computeCascadeList):
(WebCore::SystemFontDatabaseCoreText::systemFontParameters):
* platform/graphics/cocoa/SystemFontDatabaseCoreText.h: Added.
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParameters):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::isHashTableDeletedValue const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::operator== const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::hash const):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::hash):
(WebCore::SystemFontDatabaseCoreText::CascadeListParameters::CascadeListParametersHash::equal):
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

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

2 years agoMove test expectations from ios-12 to ios directory
ryanhaddad@apple.com [Mon, 8 Oct 2018 20:24:56 +0000 (20:24 +0000)]
Move test expectations from ios-12 to ios directory
https://bugs.webkit.org/show_bug.cgi?id=189839

Unreviewed test gardening..

* platform/ios-11/http/tests/quicklook/hide-referer-on-navigation-expected.txt: Removed.
* platform/ios-11/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt: Removed.
* platform/ios-11/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_hkdf.https-expected.txt: Removed.
* platform/ios-11/platform/ios/ios/fast/text/opticalFont-expected.txt: Removed.
* platform/ios-11/platform/ios/ios/fast/text/opticalFontWithTextStyle-expected.txt: Removed.
* platform/ios-11/platform/ios/ios/fast/text/opticalFontWithWeight-expected.txt: Removed.
* platform/ios-11/quicklook/powerpoint-expected.txt: Removed.
* platform/ios-11/quicklook/powerpoint-legacy-expected.txt: Removed.
* platform/ios-11/quicklook/word-expected.txt: Removed.
* platform/ios-11/quicklook/word-legacy-expected.txt: Removed.
* platform/ios-11/svg/batik/text/longTextOnPath-expected.txt: Removed.
* platform/ios-12/TestExpectations: Removed.
* platform/ios/TestExpectations:

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

2 years agoNetworkCache::Storage should be WTF::DestructionThread::Main
youenn@apple.com [Mon, 8 Oct 2018 20:22:00 +0000 (20:22 +0000)]
NetworkCache::Storage should be WTF::DestructionThread::Main
https://bugs.webkit.org/show_bug.cgi?id=190324

Reviewed by Alex Christensen.

Use WTF::DestructionThread::Main to make sure that Storage is destroyed in the main thread.
Remove the code that was making sure that any ref was destroyed in the main thread.

* NetworkProcess/cache/CacheStorageEngineCaches.cpp: Make sure the completion handler is not null.
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::TraverseOperation::TraverseOperation): Make it clear that a ref is taken.
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::synchronize): Protect 'this' when dispatching back to the main thread.
Move the code that was after dispatch before dispatch to allow moving protectedThis in the dispatch lambda.
(WebKit::NetworkCache::Storage::remove):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::Storage::deleteOldVersions):
* NetworkProcess/cache/NetworkCacheStorage.h:

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

2 years agoAdjust keyboard scrolling animator to springy and semiphysical
timothy_horton@apple.com [Mon, 8 Oct 2018 20:18:26 +0000 (20:18 +0000)]
Adjust keyboard scrolling animator to springy and semiphysical
https://bugs.webkit.org/show_bug.cgi?id=190345
<rdar://problem/43494393>

Reviewed by Simon Fraser.

Introduce WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
and provides a reasonable set of default behaviors for UIScrollView.
This is the first step on the way to WKKeyboardScrollingAnimator
being platform- and toolkit-agnostic, and helps avoid adding a whole
bunch of code to WKContentView.

Adopt UIKit's scroll-to-top animation curve for whole-document scrolls.

Adjust WKKeyboardScrollingAnimator's physics; it now simulates a spring
attached to the page when decelerating. When a key is pressed, it applies
a constant force to the page (up to some maximum velocity). When released,
the spring causes the page to decelerate smoothly.

Add rubber-banding to keyboard scrolling, based on the same spring that
decelerates the page.

Remove the initial bounce on keydown before starting the smooth scroll.

Remove arrow key commands from WKContentView; this avoids double-processing
incoming arrow key events, makes the event stream make more sense, and was
entirely unnecessary.

* Platform/spi/ios/UIKitSPI.h:
Add a wide variety of useful SPI.

* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/Cocoa/WKWebViewInternal.h:
Remove _scrollByContentOffset:animated: because it's only used by
the keyboard scrolling mechanism.

Remove _arrowKey because we're removing the arrow key commands.

* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
Create a WKKeyboardScrollViewAnimator (which knows how to directly
manipulate a UIScrollView) instead of a WKKeyboardScrollingAnimator
(which requires its clients to implement everything in terms of an
abstract interface.

(-[WKContentView scrollViewWillStartPanOrPinchGesture]):
Inform the keyboard scrolling animator that the user is going to start
an interactive gesture that needs control of the scroll view, so it
can stop its current animated scroll.

(-[WKContentView canPerformActionForWebView:withSender:]):
(-[WKContentView keyCommands]):
(-[WKContentView _arrowKeyForWebView:]): Deleted.
Remove arrow key commands.

(-[WKContentView keyboardScrollViewAnimator:distanceForIncrement:]):
Scale from content to WKWebView coordinate space; the keyboard scrolling
animator operates in WKWebView coordinates. This was broken before.

(-[WKContentView keyboardScrollViewAnimatorWillScroll:]):
(-[WKContentView isScrollableForKeyboardScrollViewAnimator:]):
(-[WKContentView isKeyboardScrollable]): Deleted.
(-[WKContentView distanceForScrollingIncrement:]): Deleted.
(-[WKContentView scrollByContentOffset:animated:]): Deleted.
Reimplement these as keyboardScrollViewAnimator delegate methods.

* UIProcess/ios/WKKeyboardScrollingAnimator.h:
Add WKKeyboardScrollViewAnimator, hide the interface for
WKKeyboardScrollingAnimator itself in the implementation file.

* UIProcess/ios/WKKeyboardScrollingAnimator.mm:
(-[WKKeyboardScrollingAnimator initWithScrollable:]):
(-[WKKeyboardScrollingAnimator parameters]):
(-[WKKeyboardScrollingAnimator invalidate]):
(unitVector):
Return a unit vector in the given direction.

(perpendicularAbsoluteUnitVector):
Return a positive unit vector perpendicular to the axis of the given direction.
Useful for multiplying with another vector to remove the component in the
axis of the given direction.

(boxSide):
Convert ScrollingDirection to WebCore::PhysicalBoxSide, for use with RectEdges.

(-[WKKeyboardScrollingAnimator keyboardScrollForEvent:]):
Instead of just returning the desired increment, compute everything we'll need
for the lifetime of the scroll (including the force applied, maximum
velocity, etc.) and return them together.

(-[WKKeyboardScrollingAnimator beginWithEvent:]):
Use the scrollable's native scroll-to-extent animation (e.g. UIScrollView's
scroll-to-top curve) for whole-document scrolls.

Remove the first discrete scroll; start the smooth scroll immediately.

(-[WKKeyboardScrollingAnimator handleKeyEvent:]):
(farthestPointInDirection):
(-[WKKeyboardScrollingAnimator stopAnimatedScroll]):
Stop the current scroll. Let the spring coast to its natural stopping
point given the system's current energy, unless that stopping point is
less than one increment from the starting point. In that case, we attach
the spring to /that/ point and let it run.

(-[WKKeyboardScrollingAnimator startDisplayLinkIfNeeded]):
(-[WKKeyboardScrollingAnimator stopDisplayLink]):
(-[WKKeyboardScrollingAnimator willStartInteractiveScroll]):
Immediately stop all motion if the user touches the screen to scroll
or zoom with fingers.

(-[WKKeyboardScrollingAnimator displayLinkFired:]):
Update the position of the scrollable based on the applied force and spring.
See the comments in this function for more details.

(-[WKKeyboardScrollViewAnimator init]):
(-[WKKeyboardScrollViewAnimator initWithScrollView:]):
(-[WKKeyboardScrollViewAnimator dealloc]):
(-[WKKeyboardScrollViewAnimator invalidate]):
(-[WKKeyboardScrollViewAnimator setDelegate:]):
(-[WKKeyboardScrollViewAnimator willStartInteractiveScroll]):
(-[WKKeyboardScrollViewAnimator beginWithEvent:]):
(-[WKKeyboardScrollViewAnimator handleKeyEvent:]):
(-[WKKeyboardScrollViewAnimator isKeyboardScrollable]):
(-[WKKeyboardScrollViewAnimator distanceForIncrement:]):
(-[WKKeyboardScrollViewAnimator scrollToContentOffset:animated:]):
(-[WKKeyboardScrollViewAnimator scrollWithScrollToExtentAnimationTo:]):
(-[WKKeyboardScrollViewAnimator contentOffset]):
(-[WKKeyboardScrollViewAnimator boundedContentOffset:]):
(-[WKKeyboardScrollViewAnimator interactiveScrollVelocity]):
(-[WKKeyboardScrollViewAnimator scrollableDirectionsFromOffset:]):
(-[WKKeyboardScrollViewAnimator rubberbandableDirections]):
Add WKKeyboardScrollViewAnimator, which wraps WKKeyboardScrollingAnimator
and provides animated keyboard scrolling for a UIScrollView without much
additional plumbing work. It contains reasonable default behaviors,
with a few optional delegate methods for customization.

(-[WKKeyboardScrollingAnimator _scrollOffsetForEvent:]): Deleted.
(-[WKKeyboardScrollingAnimator startAnimatedScroll]): Deleted.

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

2 years agoRemove dead code: VideoFullscreenModel::isVisible()
commit-queue@webkit.org [Mon, 8 Oct 2018 20:15:22 +0000 (20:15 +0000)]
Remove dead code: VideoFullscreenModel::isVisible()
https://bugs.webkit.org/show_bug.cgi?id=190356

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-10-08
Reviewed by Jon Lee.

Source/WebCore:

No new tests because there is no behavior change.

Remove isVisible() since it is no longer used.

* platform/cocoa/VideoFullscreenModel.h:
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(WebCore::VideoFullscreenModelVideoElement::isVisible const): Deleted.
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::isVisible const): Deleted.

Source/WebKit:

Remove isVisible since it is no longer used.

* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenModelContext::isVisible const): Deleted.
(WebKit::VideoFullscreenManagerProxy::isVisible const): Deleted.

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

2 years agoRemove dead code: resetMediaState.
commit-queue@webkit.org [Mon, 8 Oct 2018 20:14:10 +0000 (20:14 +0000)]
Remove dead code: resetMediaState.
https://bugs.webkit.org/show_bug.cgi?id=190355

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-10-08
Reviewed by Jon Lee.

Source/WebCore:

No new tests because no behavior change.

Remove resetMediaState since it is no longer used.

* platform/cocoa/PlaybackSessionInterface.h:
(WebCore::PlaybackSessionInterface::~PlaybackSessionInterface):
* platform/ios/PlaybackSessionInterfaceAVKit.h:
* platform/ios/PlaybackSessionInterfaceAVKit.mm:
(WebCore::PlaybackSessionInterfaceAVKit::resetMediaState): Deleted.
* platform/ios/WebAVPlayerController.h:
* platform/ios/WebAVPlayerController.mm:
(-[WebAVPlayerController resetMediaState]): Deleted.
* platform/mac/PlaybackSessionInterfaceMac.h:
* platform/mac/PlaybackSessionInterfaceMac.mm:
(WebCore::PlaybackSessionInterfaceMac::resetMediaState): Deleted.

Source/WebKit:

Remove resetMediaState since it is no longer used.

* UIProcess/Cocoa/PlaybackSessionManagerProxy.h:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.messages.in:
* UIProcess/Cocoa/PlaybackSessionManagerProxy.mm:
(WebKit::PlaybackSessionManagerProxy::resetMediaState): Deleted.
* WebProcess/cocoa/PlaybackSessionManager.h:
* WebProcess/cocoa/PlaybackSessionManager.mm:
(WebKit::PlaybackSessionInterfaceContext::resetMediaState): Deleted.

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

2 years agoAttempt to fix test failure after 236915
tsavell@apple.com [Mon, 8 Oct 2018 20:12:22 +0000 (20:12 +0000)]
Attempt to fix test failure after 236915
https://bugs.webkit.org/show_bug.cgi?id=190352

Unreviewed Test Gardening

LayoutTests/imported/w3c:

* web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt:

LayoutTests:

* platform/mac-highsierra/hkdf.https.worker-expected.txt: Removed.
* platform/mac/imported/w3c/canvas/2d.shadow.gradient.basic-expected.png: Removed.
* platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt:

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

2 years agoUse MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
commit-queue@webkit.org [Mon, 8 Oct 2018 20:00:35 +0000 (20:00 +0000)]
Use MediaPlayerEnums::VideoGravity in VideoFullscreenModel.
https://bugs.webkit.org/show_bug.cgi?id=190357

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-10-08
Reviewed by Jon Lee.

Source/WebCore:

No new tests because no behavior change.

Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.

* platform/cocoa/VideoFullscreenModel.h:
(): Deleted.
* platform/cocoa/VideoFullscreenModelVideoElement.h:
* platform/cocoa/VideoFullscreenModelVideoElement.mm:
(WebCore::VideoFullscreenModelVideoElement::setVideoLayerGravity):
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerLayer setVideoGravity:]):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::setVideoLayerGravity):
* platform/mac/VideoFullscreenInterfaceMac.mm:
(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):
(-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]):

Source/WebKit:

Use MediaPlayerEnums::VideoGravity instead of creating another identical enum in VideoFullscreenModel.

* UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
(WebKit::VideoFullscreenModelContext::setVideoLayerGravity):
(WebKit::VideoFullscreenManagerProxy::setVideoLayerGravity):
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::setVideoLayerGravityEnum):

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

2 years agoRemove WKBundleFileHandleRef
achristensen@apple.com [Mon, 8 Oct 2018 19:58:09 +0000 (19:58 +0000)]
Remove WKBundleFileHandleRef
https://bugs.webkit.org/show_bug.cgi?id=190360

Reviewed by Tim Horton.

Source/WebKit:

WKBundleFrameGetJavaScriptWrapperForFileForWorld and WKBundleFileHandleCreateWithPath were only used in Mail
and were removed in rdar://problem/44955158
I need to remove them for rdar://problem/24576194

* Shared/API/APIObject.h:
* Shared/API/c/WKDeprecated.h:
* Shared/API/c/WKDeprecatedFunctions.cpp:
(WKBundleFrameGetJavaScriptWrapperForFileForWorld):
(WKBundleFileHandleCreateWithPath):
* Sources.txt:
* SourcesCocoa.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/InjectedBundle/API/c/WKBundleAPICast.h:
* WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.cpp: Removed.
* WebProcess/InjectedBundle/API/c/WKBundleFileHandleRef.h:
* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleFrameGetJavaScriptWrapperForFileForWorld): Deleted.
* WebProcess/InjectedBundle/API/c/WKBundleFrame.h:
* WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.cpp: Removed.
* WebProcess/InjectedBundle/DOM/InjectedBundleFileHandle.h: Removed.
* WebProcess/WebPage/WebFrame.cpp:
* WebProcess/WebPage/WebFrame.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/WKBundleFileHandle.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/WKBundleFileHandle_Bundle.cpp: Removed.

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

2 years agoMoving files to fix failures introduced in r236915
tsavell@apple.com [Mon, 8 Oct 2018 19:53:29 +0000 (19:53 +0000)]
Moving files to fix failures introduced in r236915
https://bugs.webkit.org/show_bug.cgi?id=190352

Unreviewed test gardening

* platform/mac-highsierra/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt: Copied from LayoutTests/platform/mac/hkdf.https.worker-expected.txt.
* platform/mac/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt: Renamed from LayoutTests/platform/mac/hkdf.https.worker-expected.txt.

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

2 years agoValidation in Connection::readBytesFromSocket() is too aggressive
annulen@yandex.ru [Mon, 8 Oct 2018 19:12:28 +0000 (19:12 +0000)]
Validation in Connection::readBytesFromSocket() is too aggressive
https://bugs.webkit.org/show_bug.cgi?id=190281

Reviewed by Michael Catanzaro.

Since r217206 Connection::readBytesFromSocket() validates size of
control message. However, it compares cmsg_len with attachmentMaxAmount,
while Connection::sendOutgoingMessage() computes it as
CMSG_LEN(sizeof(int) * attachmentFDBufferLength) where
attachmentFDBufferLength <= attachmentMaxAmount. This mismatch between
sender and receiver leads to possibility of assertion failure with large
number of attachments, e.g. here 62 attachments have cmsg_length == 264.

* Platform/IPC/unix/ConnectionUnix.cpp:
(IPC::readBytesFromSocket):

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

2 years agoWeb Inspector: group media network entries by the node that triggered the request
drousso@apple.com [Mon, 8 Oct 2018 18:25:52 +0000 (18:25 +0000)]
Web Inspector: group media network entries by the node that triggered the request
https://bugs.webkit.org/show_bug.cgi?id=189606
<rdar://problem/44438527>

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/protocol/Network.json:
Add an optional `nodeId` field to the `Initiator` object that is set it is possible to
determine which ancestor node triggered the load. It may not correspond directly to the node
with the href/src, as that url may only be used by an ancestor for loading.

Source/WebCore:

Test: http/tests/inspector/network/resource-initiatorNode.html

Add extra arguments to functions that create `ResourceRequest` objects for media resources so
that `initiatorNodeIdentifier` can be set for WebInspector frontend to use for grouping.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::loadResource):
* html/HTMLVideoElement.cpp:
(WebCore::HTMLVideoElement::setDisplayMode):
* loader/FrameLoader.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::willLoadMediaElementURL):
Handles initial (e.g. DNT) resource requests.

* loader/ImageLoader.cpp:
(ImageLoader::updateFromElement):
Handles "poster" requests.

* loader/MediaResourceLoader.cpp:
(MediaResourceLoader::requestResource):
Handles byte-range requests.

* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::loadTimerFired):
* loader/TextTrackLoader.h:
* loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::load):
* html/HTMLTrackElement.h:
Handles <track> (e.g. subtitle) requests.

* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::identifierForNode):
* inspector/InspectorInstrumentation.h:
(WebCore::InspectorInstrumentation::identifierForNode):
* inspector/InspectorInstrumentation.cpp:
(WebCore::InspectorInstrumentation::identifierForNodeImpl):
Allows callers to get a `DOM.nodeId` for the given `Node`, which is (in this patch) attached
to the `ResourceRequest` and later used by `InspectorNetworkAgent`.

* inspector/agents/InspectorNetworkAgent.h:
* inspector/agents/InspectorNetworkAgent.cpp:
(WebCore::InspectorNetworkAgent::willSendRequest):
(WebCore::InspectorNetworkAgent::didLoadResourceFromMemoryCache):
(WebCore::InspectorNetworkAgent::buildInitiatorObject):

* platform/network/ResourceRequestBase.h:
(WebCore::ResourceRequestBase::initiatorNodeIdentifier const):
(WebCore::ResourceRequestBase::setInitiatorNodeIdentifier):
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::setAsIsolatedCopy):
* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::ResourceRequest::updateFromDelegatePreservingOldProperties):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::shouldContinueAfterNotifyingLoadedFromMemoryCache):

* inspector/InspectorCanvas.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::buildObjectForCanvas):
* inspector/agents/InspectorCanvasAgent.cpp:
(WebCore::InspectorCanvasAgent::enable):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
Don't try to push the canvas' node to the frontend, as this will create a dangling node in
`InspectorDOMAgent` if the canvas' node is detached from the DOM.

Source/WebInspectorUI:

Introduces a `WI.NavigationItem` for changing whether network entries are grouped by the
node that initiated the load (if applicable). When grouped by node, a tree-like layout of
the table cells (including expand/collapse) is used for resources that share the same
initiator node. The values for the node's cell are based on it's initated resources.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Setting.js:

* UserInterface/Controllers/DOMManager.js:
(WI.DOMManager):
(WI.DOMManager.prototype._mainResourceDidChange): Added.
Whenever the frame navigates, re-request the document so that `NetworkAgent` is able to send
valid `nodeId` for each request's `initiatorNode`. This means that the document should
always be available.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
(WI.NetworkTableContentView.prototype.closed):
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.tableSortChanged):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged):
(WI.NetworkTableContentView.prototype.tablePopulateCell):
(WI.NetworkTableContentView.prototype._populateNameCell.createIconElement): Added.
(WI.NetworkTableContentView.prototype._populateNameCell):
(WI.NetworkTableContentView.prototype._populateDomainCell.createIconAndText): Added.
(WI.NetworkTableContentView.prototype._populateDomainCell):
(WI.NetworkTableContentView.prototype._populateInitiatorCell):
(WI.NetworkTableContentView.prototype._populateTransferSizeCell):
(WI.NetworkTableContentView.prototype._generateSortComparator):
(WI.NetworkTableContentView.prototype._processPendingEntries):
(WI.NetworkTableContentView.prototype._updateEntryForResource.updateExistingEntry): Added.
(WI.NetworkTableContentView.prototype._updateEntryForResource):
(WI.NetworkTableContentView.prototype._insertResourceAndReloadTable):
(WI.NetworkTableContentView.prototype._entryForDOMNode): Added.
(WI.NetworkTableContentView.prototype._tryLinkResourceToDOMNode): Added.
(WI.NetworkTableContentView.prototype._uniqueValuesForDOMNodeEntry): Added.
(WI.NetworkTableContentView.prototype._updateFilteredEntries):
(WI.NetworkTableContentView.prototype._handleGroupByDOMNodeCheckedDidChange): Added.
* UserInterface/Views/NetworkTableContentView.css:
(.network-table .cell.dom-node.name .icon): Added.
(.network-table .cell.dom-node.name .disclosure): Added.
(body[dir=rtl] .network-table .cell.dom-node.name .disclosure): Added.
(.network-table:focus li.selected .cell.dom-node.name .disclosure): Added.
(.network-table .cell.dom-node.name .disclosure.expanded): Added.
(.network-table:focus li.selected .cell.node.name .disclosure.expanded): Added.
(.network-table .cell.grouped-by-node.name): Added.
(body[dir=ltr] .network-table .cell.grouped-by-node.name): Added.
(body[dir=rtl] .network-table .cell.grouped-by-node.name): Added.
(.network-table li:not(.selected) .cell:matches(.cache-type, .multiple)): Added.
(.network-table li.selected .cell.domain > .lock): Added.
(.network-table .cache-type): Deleted.
When two resources are added that share the same `initiatorNode`, insert a node entry into
the `WI.Table` before the first resource entry for that node (based on the current sort).
This node entry is added after the resource entries are filtered, so they won't appear in
the default entries list.

* UserInterface/Models/Resource.js:
(WI.Resource):
(WI.Resource.prototype.initiatorNode): Added.
(WI.Resource.prototype.requestedByteRange): Added.
* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype._initiatorNodeFromPayload): Added.

* UserInterface/Images/Range.svg: Added.
* UserInterface/Views/ResourceIcons.css:
(.resource-icon.resource-type-range .icon): Added.

LayoutTests:

* http/tests/inspector/network/resource-initiatorNode-expected.txt: Added.
* http/tests/inspector/network/resource-initiatorNode.html: Added.

* inspector/canvas/requestNode.html:
Test case no longer needed since the document is always requested once it's available.

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

2 years agoWeb Inspector: clicking initiator link in Network Tab table doesn't automatically...
drousso@apple.com [Mon, 8 Oct 2018 17:24:15 +0000 (17:24 +0000)]
Web Inspector: clicking initiator link in Network Tab table doesn't automatically switch to Preview section
https://bugs.webkit.org/show_bug.cgi?id=190286

Reviewed by Brian Burg.

* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView.prototype.shown):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):

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

2 years ago[Payment Request] Requests should be aborted after details settle when the user cancels
aestes@apple.com [Mon, 8 Oct 2018 17:22:18 +0000 (17:22 +0000)]
[Payment Request] Requests should be aborted after details settle when the user cancels
https://bugs.webkit.org/show_bug.cgi?id=190333

Reviewed by Alex Christensen.

Source/WebCore:

In Payment Request's "update a PaymentRequest's details" algorithm, user agents are expected
to disable the payment UI when PaymentRequest details are being updated by the merchant.
This is to prevent the user from accepting a payment before updated details are displayed.

Further, Payment Request's "user aborts the payment request" algorithm says that the
algorithm should be terminated prior to throwing an AbortError if the request is currently
being updated, and also that user agents SHOULD ensure this never occurs. This is based on
the assumption that payment UIs are disabled during details updates.

For Apple Pay, while it is true that a payment cannot be accepted by the user while details
are being updated by the merchant, the payment UI is not completely disabled. In particular,
the user is allowed to abort the payment while details are being updated. We need to honor
the user's request to abort without doing so in the middle of a details update.

This patch defers a user-initiated abort until after details are settled, at which point the
promise returned by show() is rejected with an AbortError. This behaves as if the details
update promise were rejected by the merchant.

Added a test case to http/tests/paymentrequest/payment-request-show-method.https.html.

* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::settleDetailsPromise):
(WebCore::PaymentRequest::whenDetailsSettled):
(WebCore::PaymentRequest::cancel):
* Modules/paymentrequest/PaymentRequest.h:

LayoutTests:

* http/tests/paymentrequest/payment-request-show-method.https-expected.txt:
* http/tests/paymentrequest/payment-request-show-method.https.html:

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

2 years agoREGRESSION (r235630?): [Mojave WK1] Layout test compositing/filters/opacity-change...
ryanhaddad@apple.com [Mon, 8 Oct 2018 17:19:09 +0000 (17:19 +0000)]
REGRESSION (r235630?): [Mojave WK1] Layout test compositing/filters/opacity-change-on-filtered-paints-into-ancestor.html is a flaky image failure
https://bugs.webkit.org/show_bug.cgi?id=189756

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

2 years agoWeb Inspector: be more specific as to what types of WI.Collection are allowed for...
drousso@apple.com [Mon, 8 Oct 2018 17:17:21 +0000 (17:17 +0000)]
Web Inspector: be more specific as to what types of WI.Collection are allowed for the Resources tab
https://bugs.webkit.org/show_bug.cgi?id=190304

Reviewed by Brian Burg.

* UserInterface/Base/Main.js:
(WI.tabContentViewClassForRepresentedObject):
* UserInterface/Views/ResourcesTabContentView.js:
(WI.ResourcesTabContentView.prototype.canShowRepresentedObject):

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

2 years agoLayout Tests editing/deleting/delete-emoji.html editing/deleting/delete-emoji-1.html...
realdawei@apple.com [Mon, 8 Oct 2018 17:16:30 +0000 (17:16 +0000)]
Layout Tests editing/deleting/delete-emoji.html editing/deleting/delete-emoji-1.html editing/deleting/delete-emoji-9.html are passing.
https://bugs.webkit.org/show_bug.cgi?id=190353

Unreviewed. Remove the tests from TestExpectations file.

* platform/mac/TestExpectations:

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

2 years agoWeb Inspector: Open Resource Dialog should show path to resource (to disambiguate...
drousso@apple.com [Mon, 8 Oct 2018 17:15:19 +0000 (17:15 +0000)]
Web Inspector: Open Resource Dialog should show path to resource (to disambiguate resources with same name)
https://bugs.webkit.org/show_bug.cgi?id=178153
<rdar://problem/34925686>

Reviewed by Brian Burg.

* UserInterface/Views/OpenResourceDialog.js:
(WI.OpenResourceDialog.prototype._populateResourceTreeOutline):
* UserInterface/Views/OpenResourceDialog.css:
(.open-resource-dialog .tree-outline.large .item .titles[data-path]): Added.
(.open-resource-dialog .tree-outline.large .item .titles[data-path]::after): Added.
(.open-resource-dialog .tree-outline.large .item .titles .title): Added.
(.open-resource-dialog .tree-outline.large .item .titles .subtitle): Added.
(.open-resource-dialog .tree-outline.large .item .titles): Deleted.

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

2 years agoHave DOMWindowProperty get is frame from its associated DOMWindow
cdumez@apple.com [Mon, 8 Oct 2018 17:12:38 +0000 (17:12 +0000)]
Have DOMWindowProperty get is frame from its associated DOMWindow
https://bugs.webkit.org/show_bug.cgi?id=190341

Reviewed by Alex Christensen.

Source/WebCore:

Have DOMWindowProperty get is frame from its associated DOMWindow, instead of having its own
m_frame that can potentially get out-of-sync.

* Modules/cache/DOMWindowCaches.cpp:
(WebCore::DOMWindowCaches::DOMWindowCaches):
* Modules/geolocation/NavigatorGeolocation.cpp:
(WebCore::NavigatorGeolocation::NavigatorGeolocation):
(WebCore::NavigatorGeolocation::from):
* Modules/geolocation/NavigatorGeolocation.h:
* Modules/indexeddb/DOMWindowIndexedDatabase.cpp:
(WebCore::DOMWindowIndexedDatabase::DOMWindowIndexedDatabase):
* Modules/mediastream/NavigatorMediaDevices.cpp:
(WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::from):
* Modules/mediastream/NavigatorMediaDevices.h:
* Modules/quota/DOMWindowQuota.cpp:
(WebCore::DOMWindowQuota::DOMWindowQuota):
* Modules/quota/NavigatorStorageQuota.cpp:
(WebCore::NavigatorStorageQuota::NavigatorStorageQuota):
* Modules/quota/NavigatorStorageQuota.h:
* Modules/speech/DOMWindowSpeechSynthesis.cpp:
(WebCore::DOMWindowSpeechSynthesis::DOMWindowSpeechSynthesis):
* css/StyleMedia.cpp:
(WebCore::StyleMedia::StyleMedia):
(WebCore::StyleMedia::type const):
(WebCore::StyleMedia::matchMedium const):
* css/StyleMedia.h:
* loader/appcache/DOMApplicationCache.cpp:
(WebCore::DOMApplicationCache::DOMApplicationCache):
(WebCore::DOMApplicationCache::applicationCacheHost const):
(WebCore::DOMApplicationCache::scriptExecutionContext const):
* loader/appcache/DOMApplicationCache.h:
* page/BarProp.cpp:
(WebCore::BarProp::BarProp):
(WebCore::BarProp::visible const):
* page/BarProp.h:
(WebCore::BarProp::create):
* page/DOMSelection.cpp:
(WebCore::DOMSelection::DOMSelection):
(WebCore::DOMSelection::visibleSelection const):
(WebCore::DOMSelection::anchorNode const):
(WebCore::DOMSelection::anchorOffset const):
(WebCore::DOMSelection::focusNode const):
(WebCore::DOMSelection::focusOffset const):
(WebCore::DOMSelection::baseNode const):
(WebCore::DOMSelection::baseOffset const):
(WebCore::DOMSelection::extentNode const):
(WebCore::DOMSelection::extentOffset const):
(WebCore::DOMSelection::isCollapsed const):
(WebCore::DOMSelection::type const):
(WebCore::DOMSelection::rangeCount const):
(WebCore::DOMSelection::collapse):
(WebCore::DOMSelection::collapseToEnd):
(WebCore::DOMSelection::collapseToStart):
(WebCore::DOMSelection::empty):
(WebCore::DOMSelection::setBaseAndExtent):
(WebCore::DOMSelection::setPosition):
(WebCore::DOMSelection::modify):
(WebCore::DOMSelection::extend):
(WebCore::DOMSelection::getRangeAt):
(WebCore::DOMSelection::removeAllRanges):
(WebCore::DOMSelection::addRange):
(WebCore::DOMSelection::deleteFromDocument):
(WebCore::DOMSelection::containsNode const):
(WebCore::DOMSelection::toString):
(WebCore::DOMSelection::shadowAdjustedNode const):
(WebCore::DOMSelection::shadowAdjustedOffset const):
(WebCore::DOMSelection::isValidForPosition const):
* page/DOMSelection.h:
(WebCore::DOMSelection::create):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::screen):
(WebCore::DOMWindow::history):
(WebCore::DOMWindow::locationbar):
(WebCore::DOMWindow::menubar):
(WebCore::DOMWindow::personalbar):
(WebCore::DOMWindow::scrollbars):
(WebCore::DOMWindow::statusbar):
(WebCore::DOMWindow::toolbar):
(WebCore::DOMWindow::applicationCache):
(WebCore::DOMWindow::navigator):
(WebCore::DOMWindow::location):
(WebCore::DOMWindow::visualViewport):
(WebCore::DOMWindow::webkitNamespace):
(WebCore::DOMWindow::getSelection):
(WebCore::DOMWindow::styleMedia):
* page/DOMWindow.h:
* page/DOMWindowExtension.cpp:
(WebCore::DOMWindowExtension::DOMWindowExtension):
* page/DOMWindowExtension.h:
(WebCore::DOMWindowExtension::create):
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::DOMWindowProperty):
(WebCore::DOMWindowProperty::~DOMWindowProperty):
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
(WebCore::DOMWindowProperty::reconnectFrameFromDocumentSuspension):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
(WebCore::DOMWindowProperty::willDetachGlobalObjectFromFrame):
(WebCore::DOMWindowProperty::frame const):
* page/DOMWindowProperty.h:
(WebCore::DOMWindowProperty::window const):
* page/History.cpp:
(WebCore::History::History):
(WebCore::History::length const):
(WebCore::History::scrollRestoration const):
(WebCore::History::setScrollRestoration):
(WebCore::History::stateInternal const):
(WebCore::History::go):
(WebCore::History::urlForState):
(WebCore::History::stateObjectAdded):
* page/History.h:
* page/Location.cpp:
(WebCore::Location::Location):
(WebCore::Location::url const):
(WebCore::Location::href const):
(WebCore::Location::protocol const):
(WebCore::Location::host const):
(WebCore::Location::hostname const):
(WebCore::Location::port const):
(WebCore::Location::pathname const):
(WebCore::Location::search const):
(WebCore::Location::origin const):
(WebCore::Location::ancestorOrigins const):
(WebCore::Location::hash const):
(WebCore::Location::setHref):
(WebCore::Location::setProtocol):
(WebCore::Location::setHost):
(WebCore::Location::setHostname):
(WebCore::Location::setPort):
(WebCore::Location::setPathname):
(WebCore::Location::setSearch):
(WebCore::Location::setHash):
(WebCore::Location::assign):
(WebCore::Location::replace):
(WebCore::Location::reload):
(WebCore::Location::setLocation):
* page/Location.h:
(WebCore::Location::create):
* page/Navigator.cpp:
(WebCore::Navigator::Navigator):
(WebCore::Navigator::appVersion const):
(WebCore::Navigator::userAgent const):
(WebCore::Navigator::share):
(WebCore::Navigator::plugins):
(WebCore::Navigator::mimeTypes):
(WebCore::Navigator::cookieEnabled const):
(WebCore::Navigator::javaEnabled const):
(WebCore::Navigator::standalone const):
* page/Navigator.h:
* page/Performance.cpp:
(WebCore::Performance::navigation):
(WebCore::Performance::timing):
* page/PerformanceNavigation.cpp:
(WebCore::PerformanceNavigation::PerformanceNavigation):
(WebCore::PerformanceNavigation::type const):
(WebCore::PerformanceNavigation::redirectCount const):
* page/PerformanceNavigation.h:
(WebCore::PerformanceNavigation::create):
* page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::PerformanceTiming):
(WebCore::PerformanceTiming::documentLoader const):
(WebCore::PerformanceTiming::documentTiming const):
* page/PerformanceTiming.h:
(WebCore::PerformanceTiming::create):
* page/Screen.cpp:
(WebCore::Screen::Screen):
(WebCore::Screen::height const):
(WebCore::Screen::width const):
(WebCore::Screen::colorDepth const):
(WebCore::Screen::pixelDepth const):
(WebCore::Screen::availLeft const):
(WebCore::Screen::availTop const):
(WebCore::Screen::availHeight const):
(WebCore::Screen::availWidth const):
* page/Screen.h:
* page/VisualViewport.cpp:
(WebCore::VisualViewport::VisualViewport):
(WebCore::VisualViewport::scriptExecutionContext const):
(WebCore::VisualViewport::addEventListener):
(WebCore::VisualViewport::updateFrameLayout const):
(WebCore::VisualViewport::offsetLeft const):
(WebCore::VisualViewport::offsetTop const):
(WebCore::VisualViewport::pageLeft const):
(WebCore::VisualViewport::pageTop const):
(WebCore::VisualViewport::width const):
(WebCore::VisualViewport::height const):
(WebCore::VisualViewport::scale const):
(WebCore::VisualViewport::update):
(WebCore::VisualViewport::enqueueResizeEvent):
(WebCore::VisualViewport::enqueueScrollEvent):
* page/VisualViewport.h:
* page/WebKitNamespace.cpp:
(WebCore::WebKitNamespace::WebKitNamespace):
* page/WebKitNamespace.h:
(WebCore::WebKitNamespace::create):
* plugins/DOMMimeTypeArray.cpp:
(WebCore::DOMMimeTypeArray::DOMMimeTypeArray):
(WebCore::DOMMimeTypeArray::item):
(WebCore::DOMMimeTypeArray::namedItem):
(WebCore::DOMMimeTypeArray::getPluginData const):
* plugins/DOMMimeTypeArray.h:
(WebCore::DOMMimeTypeArray::create):
* plugins/DOMPluginArray.cpp:
(WebCore::DOMPluginArray::DOMPluginArray):
(WebCore::DOMPluginArray::item):
(WebCore::DOMPluginArray::namedItem):
(WebCore::DOMPluginArray::refresh):
(WebCore::DOMPluginArray::pluginData const):
* plugins/DOMPluginArray.h:
(WebCore::DOMPluginArray::create):
* storage/Storage.cpp:
(WebCore::Storage::create):
(WebCore::Storage::Storage):
(WebCore::Storage::setItem):
(WebCore::Storage::removeItem):
(WebCore::Storage::clear):
* storage/Storage.h:

Source/WebKit:

* WebProcess/InjectedBundle/InjectedBundleDOMWindowExtension.cpp:
(WebKit::InjectedBundleDOMWindowExtension::InjectedBundleDOMWindowExtension):

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

2 years agoLayout Tests editing/deleting/delete-emoji.html editing/deleting/delete-emoji-1.html...
realdawei@apple.com [Mon, 8 Oct 2018 16:58:18 +0000 (16:58 +0000)]
Layout Tests editing/deleting/delete-emoji.html editing/deleting/delete-emoji-1.html editing/deleting/delete-emoji-9.html are passing.
https://bugs.webkit.org/show_bug.cgi?id=190353

Unreviewed test gardening.

Patch by Dawei Fenton <realdawei@apple.com> on 2018-10-08

* platform/mac/TestExpectations:

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

2 years agoRebaseline imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https...
tsavell@apple.com [Mon, 8 Oct 2018 16:48:21 +0000 (16:48 +0000)]
Rebaseline imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker.html for Mojave
https://bugs.webkit.org/show_bug.cgi?id=190352

LayoutTests/imported/w3c:

Unreviewed Test Expetations

* web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt:

LayoutTests:

Unreviewed test Gardening

* platform/mac-highsierra/hkdf.https.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt.
* platform/mac/hkdf.https.worker-expected.txt: Copied from LayoutTests/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/hkdf.https.worker-expected.txt.
* platform/mac/imported/w3c/canvas/2d.shadow.gradient.basic-expected.png: Added.

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

2 years agoMove FontCascadeDescription to a file of its own
antti@apple.com [Mon, 8 Oct 2018 16:09:28 +0000 (16:09 +0000)]
Move FontCascadeDescription to a file of its own
https://bugs.webkit.org/show_bug.cgi?id=190348

Reviewed by Chris Dumez.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/FontCascade.h:
* platform/graphics/FontCascadeDescription.cpp: Copied from Source/WebCore/platform/graphics/FontDescription.cpp.
(WebCore::FontDescription::FontDescription): Deleted.
(WebCore::m_shouldAllowUserInstalledFonts): Deleted.
(WebCore::FontDescription::setLocale): Deleted.
(WebCore::FontDescription::invalidateCaches): Deleted.
* platform/graphics/FontCascadeDescription.h: Copied from Source/WebCore/platform/graphics/FontDescription.h.
(WebCore::FontDescription::operator!= const): Deleted.
(WebCore::FontDescription::computedSize const): Deleted.
(WebCore::FontDescription::computedPixelSize const): Deleted.
(WebCore::FontDescription::italic const): Deleted.
(WebCore::FontDescription::stretch const): Deleted.
(WebCore::FontDescription::weight const): Deleted.
(WebCore::FontDescription::fontSelectionRequest const): Deleted.
(WebCore::FontDescription::renderingMode const): Deleted.
(WebCore::FontDescription::textRenderingMode const): Deleted.
(WebCore::FontDescription::script const): Deleted.
(WebCore::FontDescription::locale const): Deleted.
(WebCore::FontDescription::orientation const): Deleted.
(WebCore::FontDescription::nonCJKGlyphOrientation const): Deleted.
(WebCore::FontDescription::widthVariant const): Deleted.
(WebCore::FontDescription::featureSettings const): Deleted.
(WebCore::FontDescription::variationSettings const): Deleted.
(WebCore::FontDescription::fontSynthesis const): Deleted.
(WebCore::FontDescription::variantCommonLigatures const): Deleted.
(WebCore::FontDescription::variantDiscretionaryLigatures const): Deleted.
(WebCore::FontDescription::variantHistoricalLigatures const): Deleted.
(WebCore::FontDescription::variantContextualAlternates const): Deleted.
(WebCore::FontDescription::variantPosition const): Deleted.
(WebCore::FontDescription::variantCaps const): Deleted.
(WebCore::FontDescription::variantNumericFigure const): Deleted.
(WebCore::FontDescription::variantNumericSpacing const): Deleted.
(WebCore::FontDescription::variantNumericFraction const): Deleted.
(WebCore::FontDescription::variantNumericOrdinal const): Deleted.
(WebCore::FontDescription::variantNumericSlashedZero const): Deleted.
(WebCore::FontDescription::variantAlternates const): Deleted.
(WebCore::FontDescription::variantEastAsianVariant const): Deleted.
(WebCore::FontDescription::variantEastAsianWidth const): Deleted.
(WebCore::FontDescription::variantEastAsianRuby const): Deleted.
(WebCore::FontDescription::variantSettings const): Deleted.
(WebCore::FontDescription::opticalSizing const): Deleted.
(WebCore::FontDescription::fontStyleAxis const): Deleted.
(WebCore::FontDescription::shouldAllowUserInstalledFonts const): Deleted.
(WebCore::FontDescription::setComputedSize): Deleted.
(WebCore::FontDescription::setItalic): Deleted.
(WebCore::FontDescription::setStretch): Deleted.
(WebCore::FontDescription::setIsItalic): Deleted.
(WebCore::FontDescription::setWeight): Deleted.
(WebCore::FontDescription::setRenderingMode): Deleted.
(WebCore::FontDescription::setTextRenderingMode): Deleted.
(WebCore::FontDescription::setOrientation): Deleted.
(WebCore::FontDescription::setNonCJKGlyphOrientation): Deleted.
(WebCore::FontDescription::setWidthVariant): Deleted.
(WebCore::FontDescription::setFeatureSettings): Deleted.
(WebCore::FontDescription::setVariationSettings): Deleted.
(WebCore::FontDescription::setFontSynthesis): Deleted.
(WebCore::FontDescription::setVariantCommonLigatures): Deleted.
(WebCore::FontDescription::setVariantDiscretionaryLigatures): Deleted.
(WebCore::FontDescription::setVariantHistoricalLigatures): Deleted.
(WebCore::FontDescription::setVariantContextualAlternates): Deleted.
(WebCore::FontDescription::setVariantPosition): Deleted.
(WebCore::FontDescription::setVariantCaps): Deleted.
(WebCore::FontDescription::setVariantNumericFigure): Deleted.
(WebCore::FontDescription::setVariantNumericSpacing): Deleted.
(WebCore::FontDescription::setVariantNumericFraction): Deleted.
(WebCore::FontDescription::setVariantNumericOrdinal): Deleted.
(WebCore::FontDescription::setVariantNumericSlashedZero): Deleted.
(WebCore::FontDescription::setVariantAlternates): Deleted.
(WebCore::FontDescription::setVariantEastAsianVariant): Deleted.
(WebCore::FontDescription::setVariantEastAsianWidth): Deleted.
(WebCore::FontDescription::setVariantEastAsianRuby): Deleted.
(WebCore::FontDescription::setOpticalSizing): Deleted.
(WebCore::FontDescription::setFontStyleAxis): Deleted.
(WebCore::FontDescription::setShouldAllowUserInstalledFonts): Deleted.
(WebCore::FontDescription::operator== const): Deleted.
* platform/graphics/FontDescription.cpp:
(WebCore::FontDescription::invalidateCaches):
(WebCore::FontCascadeDescription::FontCascadeDescription): Deleted.
(WebCore::FontCascadeDescription::effectiveFamilyCount const): Deleted.
(WebCore::FontCascadeDescription::effectiveFamilyAt const): Deleted.
(WebCore::FontCascadeDescription::lighterWeight): Deleted.
(WebCore::FontCascadeDescription::bolderWeight): Deleted.
(WebCore::FontCascadeDescription::familiesEqualForTextAutoSizing const): Deleted.
(WebCore::FontCascadeDescription::familyNamesAreEqual): Deleted.
(WebCore::FontCascadeDescription::familyNameHash): Deleted.
(WebCore::FontCascadeDescription::foldedFamilyName): Deleted.
* platform/graphics/FontDescription.h:
(WebCore::FontCascadeDescription::operator!= const): Deleted.
(WebCore::FontCascadeDescription::familyCount const): Deleted.
(WebCore::FontCascadeDescription::firstFamily const): Deleted.
(WebCore::FontCascadeDescription::familyAt const): Deleted.
(WebCore::FontCascadeDescription::families const): Deleted.
(WebCore::FontCascadeDescription::specifiedSize const): Deleted.
(WebCore::FontCascadeDescription::isAbsoluteSize const): Deleted.
(WebCore::FontCascadeDescription::lighterWeight const): Deleted.
(WebCore::FontCascadeDescription::bolderWeight const): Deleted.
(WebCore::FontCascadeDescription::useFixedDefaultSize const): Deleted.
(WebCore::FontCascadeDescription::kerning const): Deleted.
(WebCore::FontCascadeDescription::keywordSize const): Deleted.
(WebCore::FontCascadeDescription::keywordSizeAsIdentifier const): Deleted.
(WebCore::FontCascadeDescription::fontSmoothing const): Deleted.
(WebCore::FontCascadeDescription::isSpecifiedFont const): Deleted.
(WebCore::FontCascadeDescription::setOneFamily): Deleted.
(WebCore::FontCascadeDescription::setFamilies): Deleted.
(WebCore::FontCascadeDescription::setSpecifiedSize): Deleted.
(WebCore::FontCascadeDescription::setIsAbsoluteSize): Deleted.
(WebCore::FontCascadeDescription::setKerning): Deleted.
(WebCore::FontCascadeDescription::setKeywordSize): Deleted.
(WebCore::FontCascadeDescription::setKeywordSizeFromIdentifier): Deleted.
(WebCore::FontCascadeDescription::setFontSmoothing): Deleted.
(WebCore::FontCascadeDescription::setIsSpecifiedFont): Deleted.
(WebCore::FontCascadeDescription::equalForTextAutoSizing const): Deleted.
(WebCore::FontCascadeDescription::initialItalic): Deleted.
(WebCore::FontCascadeDescription::initialFontStyleAxis): Deleted.
(WebCore::FontCascadeDescription::initialWeight): Deleted.
(WebCore::FontCascadeDescription::initialStretch): Deleted.
(WebCore::FontCascadeDescription::initialSmallCaps): Deleted.
(WebCore::FontCascadeDescription::initialKerning): Deleted.
(WebCore::FontCascadeDescription::initialFontSmoothing): Deleted.
(WebCore::FontCascadeDescription::initialTextRenderingMode): Deleted.
(WebCore::FontCascadeDescription::initialFontSynthesis): Deleted.
(WebCore::FontCascadeDescription::initialVariantPosition): Deleted.
(WebCore::FontCascadeDescription::initialVariantCaps): Deleted.
(WebCore::FontCascadeDescription::initialVariantAlternates): Deleted.
(WebCore::FontCascadeDescription::initialOpticalSizing): Deleted.
(WebCore::FontCascadeDescription::initialLocale): Deleted.
(WebCore::FontCascadeDescription::operator== const): Deleted.
* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:
* rendering/style/RenderStyle.h:

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

2 years agoSource/ThirdParty:
mitz@apple.com [Mon, 8 Oct 2018 13:55:14 +0000 (13:55 +0000)]
Source/ThirdParty:
gtest part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250

Reviewed by Anders Carlsson.

Didn’t turn on any of the warnings Xcode recommended for this third-party test support
library.

* gtest/xcode/Config/DebugProject.xcconfig: Set the deployment target in engineering builds
  like we do in other projects. This addresses a build-time warning when building clients
  of the library that its deployment target doesn’t match theirs.
* gtest/xcode/Config/ReleaseProject.xcconfig: Ditto.

* gtest/xcode/gtest.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

Tools:
Tools part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250

Reviewed by Anders Carlsson.

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

* DumpRenderTree/mac/Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
  CLANG_WARN_STRICT_PROTOTYPES, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS,
  CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

* DumpRenderTree/mac/DumpRenderTreeMac.h: Addressed the strict prototype warning.

* DumpRenderTree/mac/EditingDelegate.mm: Suppressed the deprecated implementations warning
  around deprecated methods or categories on deprecated classes.
* DumpRenderTree/mac/FrameLoadDelegate.mm: Ditto.
(-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
* DumpRenderTree/mac/TestRunnerMac.mm: Ditto.
(-[SynchronousLoader connection:didReceiveAuthenticationChallenge:]):

* MiniBrowser/Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
  CLANG_WARN_STRICT_PROTOTYPES, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS,
  CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

* MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

* MiniBrowser/mac/AppDelegate.h: Addressed the strict prototypes warning.
* MiniBrowser/mac/WK2BrowserWindowController.m: Removed an unused #import to avoid having to
  address the fact that many of the WebKit C SPI headers trigger the strict prototypes warning.

* MobileMiniBrowser/Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
  CLANG_WARN_STRICT_PROTOTYPES, CLANG_WARN_SUSPICIOUS_MOVE (by fixing a typo),
  CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, and CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF.

* MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj: Let Xcode update
  LastUpgradeCheck and remove the .xcconfig files from the Copy Bundle Resources build phase.

* TestWebKitAPI/Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
  CLANG_WARN_STRICT_PROTOTYPES, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS,
  CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.
  Made the WebKit headers be treated as system headers to avoid dealing with the fact that
  many C SPI headers trigger the strict prototypes warning.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

* TestWebKitAPI/Tests/WebKitCocoa/Download.mm:
(-[DownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
(-[BlobDownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
(-[UIDownloadAsFileTestDelegate _webView:contextMenu:forElement:]):
(-[RedirectedDownloadDelegate _download:decideDestinationWithSuggestedFilename:allowOverwrite:]):
* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(-[CustomHeaderFieldsDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[WebsitePoliciesWebsiteDataStoreDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
* TestWebKitAPI/Tests/WebKitLegacy/ios/AudioSessionCategoryIOS.mm:
(-[AudioSessionCategoryUIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]):
* TestWebKitAPI/Tests/WebKitLegacy/ios/SnapshotViaRenderInContext.mm:
(-[RenderInContextWebViewDelegate webViewDidFinishLoad:]):
(-[RenderInContextWebViewDelegate webView:didFailLoadWithError:]):
* TestWebKitAPI/Tests/ios/SetTimeoutFunction.mm:
(-[SetTimeoutFunctionWebViewDelegate webViewDidFinishLoad:]):
(-[SetTimeoutFunctionWebViewDelegate webView:didFailLoadWithError:]):
(-[SetTimeoutFunctionWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]):
* TestWebKitAPI/Tests/mac/LegacyDragAndDropTests.mm:
(-[DragInfo namesOfPromisedFilesDroppedAtDestination:]):
* TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:
(-[DragAndDropTestWKWebView dragImage:at:offset:event:pasteboard:source:slideBack:]):
* TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m:
(-[SyntheticBackingScaleFactorWindow IGNORE_WARNINGS_END]):
(-[SyntheticBackingScaleFactorWindow userSpaceScaleFactor]): Deleted.
* TestWebKitAPI/mac/TestDraggingInfo.mm:
(-[TestDraggingInfo namesOfPromisedFilesDroppedAtDestination:]):

In all of the above, suppressed the deprecated implementations warning where needed.

* WebKitTestRunner/Configurations/Base.xcconfig: Enabled ENABLE_STRICT_OBJC_MSGSEND,
  CLANG_WARN_BOOL_CONVERSION, CLANG_WARN_COMMA, CLANG_WARN_CONSTANT_CONVERSION,
  CLANG_WARN_EMPTY_BODY, CLANG_WARN_ENUM_CONVERSION, CLANG_WARN_INT_CONVERSION,
  CLANG_WARN_STRICT_PROTOTYPES, CLANG_WARN_UNREACHABLE_CODE, CLANG_WARN__DUPLICATE_METHOD_MATCH,
  GCC_WARN_UNDECLARED_SELECTOR, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF,
  CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS,
  and GCC_NO_COMMON_BLOCKS.

* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

* WebKitTestRunner/cocoa/TestRunnerWKWebView.mm:
(-[TestRunnerWKWebView dragImage:at:offset:event:pasteboard:source:slideBack:]): Suppressed
  the deprecated implementations warning.

* WebKitTestRunner/mac/UIScriptControllerMac.mm:
(WTR::UIScriptController::replaceTextAtRange): Addressed an int-conversion warning.

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

2 years ago[EME][GStreamer] Add support for WebM encrypted caps "application/x-webm-enc"
commit-queue@webkit.org [Mon, 8 Oct 2018 13:25:02 +0000 (13:25 +0000)]
[EME][GStreamer] Add support for WebM encrypted caps "application/x-webm-enc"
https://bugs.webkit.org/show_bug.cgi?id=189239

Patch by Yacine Bandou <yacine.bandou_ext@softathome.com> on 2018-10-08
Reviewed by Xabier Rodriguez-Calvar.

Add the support of GStreamer caps "application/x-webm-enc" in GStreamerCommon.

The DRM system id field in the encrypted event is set to GST_PROTECTION_UNSPECIFIED_SYSTEM_ID
in case of WebM, for details, see https://bugzilla.gnome.org/attachment.cgi?id=365211.

Tests: media/encrypted-media/clearKey/clearKey-encrypted-webm-eventmse.html
       media/encrypted-media/clearKey/clearKey-webm-video-playback-mse.html

* platform/graphics/gstreamer/GStreamerCommon.cpp:
(WebCore::capsMediaType):
(WebCore::areEncryptedCaps):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::initializationDataEncountered):
* platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:
* platform/graphics/gstreamer/eme/WebKitCommonEncryptionDecryptorGStreamer.cpp:
(webkitMediaCommonEncryptionDecryptTransformCaps):

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

2 years ago[GStreamer][EME][webm] Add the WebM encrypted content support in matroskademux
commit-queue@webkit.org [Mon, 8 Oct 2018 06:18:17 +0000 (06:18 +0000)]
[GStreamer][EME][webm] Add the WebM encrypted content support in matroskademux
https://bugs.webkit.org/show_bug.cgi?id=189238

Patch by Yacine Bandou <yacine.bandou@softathome.com> on 2018-10-07
Reviewed by Xabier Rodriguez-Calvar.

Modifications on GStreamer, tracked in GStreamer bugzilla:
https://bugzilla.gnome.org/show_bug.cgi?id=797231
https://bugzilla.gnome.org/show_bug.cgi?id=765275

* gstreamer/jhbuild.modules: Add new patches.
* gstreamer/patches/gstreamer-0001-protection-Add-a-new-definition-for-unspecified-syst.patch: Added.
* gstreamer/patches/gstreamer-0002-protection-Fix-the-string-to-define-unspecified-syst.patch: Added.
* gstreamer/patches/gst-plugins-good-0011-matroska-Add-the-WebM-encrypted-content-support-in-m.patch: Added.
* gstreamer/patches/gst-plugins-good-0012-matroskdemux-do-not-use-MapInfo.data-after-unmapping.patch: Added.

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

2 years agoFixed building with the latest macOS SDK
mitz@apple.com [Sun, 7 Oct 2018 22:53:12 +0000 (22:53 +0000)]
Fixed building with the latest macOS SDK

* Plugins/WebNetscapePluginPackage.mm:
(-[WebNetscapePluginPackage openResourceFile]):
(-[WebNetscapePluginPackage closeResourceFile:]):

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

2 years agoAdding some temporary asserts with data logging to debug a mysterious ASAN bot crash.
mark.lam@apple.com [Sun, 7 Oct 2018 20:09:45 +0000 (20:09 +0000)]
Adding some temporary asserts with data logging to debug a mysterious ASAN bot crash.
https://bugs.webkit.org/show_bug.cgi?id=190334
<rdar://problem/45071303>

Reviewed by Yusuke Suzuki.

These assertions are needed because we can't reproduce the issue locally.
We'll remove these asserts after the needed data has been collected from the bot.

* wtf/StackBounds.cpp:
(WTF::StackBounds::newThreadStackBounds):
* wtf/StackBounds.h:
(WTF::StackBounds::checkConsistency const):

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

2 years agoTried to fix HAVE(LINK_PREVIEW) iOS builds.
mitz@apple.com [Sun, 7 Oct 2018 16:51:42 +0000 (16:51 +0000)]
Tried to fix HAVE(LINK_PREVIEW) iOS builds.

* UIProcess/WKImagePreviewViewController.mm:
(-[WKImagePreviewViewController previewActions]):

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

2 years agoFixed building with the latest macOS SDK
mitz@apple.com [Sun, 7 Oct 2018 16:48:51 +0000 (16:48 +0000)]
Fixed building with the latest macOS SDK

* platform/graphics/cocoa/IOSurface.mm:
(WebCore::IOSurface::ensurePlatformContext): Suppressed deprecation warnings around use of
  CGIOSurfaceContextSetDisplayMask.

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

2 years ago[JSC][Linux] Use non-truncated name for JIT workers in Linux
yusukesuzuki@slowstart.org [Sun, 7 Oct 2018 16:21:56 +0000 (16:21 +0000)]
[JSC][Linux] Use non-truncated name for JIT workers in Linux
https://bugs.webkit.org/show_bug.cgi?id=190339

Reviewed by Mark Lam.

The current thread names are meaningless in Linux environment. We do not want to
have truncated name in Linux: we want to have clear name in Linux. Instead, we
should have the name for Linux separately from the name used in the non-Linux
environments. This patch adds FTLWorker, DFGWorker, and JITWorker names for
Linux environment.

* dfg/DFGWorklist.cpp:
(JSC::DFG::createWorklistName):
(JSC::DFG::Worklist::Worklist):
(JSC::DFG::Worklist::create):
(JSC::DFG::ensureGlobalDFGWorklist):
(JSC::DFG::ensureGlobalFTLWorklist):
* dfg/DFGWorklist.h:
* jit/JITWorklist.cpp:

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

2 years agoName Heap threads
yusukesuzuki@slowstart.org [Sun, 7 Oct 2018 16:14:50 +0000 (16:14 +0000)]
Name Heap threads
https://bugs.webkit.org/show_bug.cgi?id=190337

Reviewed by Mark Lam.

Source/JavaScriptCore:

Name heap threads as "Heap Helper Thread". In Linux, we name it "HeapHelper" since
Linux does not accept the name longer than 15. We do not want to use the short name
for non-Linux environment. And we want to have clear name in Linux: truncated name
is not good. So, having the two names is the only way.

* heap/HeapHelperPool.cpp:
(JSC::heapHelperPool):

Source/WTF:

Add a functionality naming threads of ParallelHelperPool.

* wtf/ParallelHelperPool.cpp:
(WTF::ParallelHelperPool::ParallelHelperPool):
* wtf/ParallelHelperPool.h:

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

2 years ago[JSC] Avoid creating ProgramExecutable in checkSyntax
yusukesuzuki@slowstart.org [Sun, 7 Oct 2018 09:32:52 +0000 (09:32 +0000)]
[JSC] Avoid creating ProgramExecutable in checkSyntax
https://bugs.webkit.org/show_bug.cgi?id=190332

Reviewed by Mark Lam.

uglify-js in web-tooling-benchmark executes massive number of Function constructor calls.
In Function constructor code, we perform checkSyntax for body and parameters. So fast checkSyntax
is important when the performance of Function constructor matters. Current checkSyntax code
unnecessarily allocates ProgramExecutable. This patch removes this allocation and improves
the benchmark score slightly.

Before:
    uglify-js:  2.87 runs/s
After:
    uglify-js:  2.94 runs/s

* runtime/Completion.cpp:
(JSC::checkSyntaxInternal):
(JSC::checkSyntax):
* runtime/ProgramExecutable.cpp:
(JSC::ProgramExecutable::checkSyntax): Deleted.
* runtime/ProgramExecutable.h:

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

2 years agoTried to fix the macOS Mojave build.
mitz@apple.com [Sun, 7 Oct 2018 02:48:38 +0000 (02:48 +0000)]
Tried to fix the macOS Mojave build.

* UIProcess/API/Cocoa/LegacyBundleForClass.mm:

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

2 years agoWebKit part of [Xcode] Update some build settings as recommended by Xcode 10
mitz@apple.com [Sun, 7 Oct 2018 01:29:52 +0000 (01:29 +0000)]
WebKit part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250

Reviewed by Andy Estes.

* Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA,
  CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF, and
  CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.

* WebKit.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
* UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
* UIProcess/API/Cocoa/WKConnection.mm:
* UIProcess/API/Cocoa/WKNavigationData.mm:
* UIProcess/API/Cocoa/WKProcessGroup.mm:
* UIProcess/API/Cocoa/WKTypeRefWrapper.mm:
* UIProcess/API/Cocoa/WKWebView.mm:
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
* UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
* UIProcess/API/mac/WKView.mm:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
* WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:

  Suppressed -Wdeprecated-implementations around some class, category and method
  implementations the above files.

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

2 years ago[ESNext][BigInt] Implement support for "|"
ticaiolima@gmail.com [Sun, 7 Oct 2018 00:20:59 +0000 (00:20 +0000)]
[ESNext][BigInt] Implement support for "|"
https://bugs.webkit.org/show_bug.cgi?id=186229

Reviewed by Yusuke Suzuki.

JSTests:

* stress/big-int-bitwise-and-jit.js:
* stress/big-int-bitwise-or-general.js: Added.
* stress/big-int-bitwise-or-jit-untyped.js: Added.
* stress/big-int-bitwise-or-jit.js: Added.
* stress/big-int-bitwise-or-memory-stress.js: Added.
* stress/big-int-bitwise-or-to-primitive-precedence.js: Added.
* stress/big-int-bitwise-or-type-error.js: Added.
* stress/big-int-bitwise-or-wrapped-value.js: Added.

Source/JavaScriptCore:

This patch is introducing support for BigInt into bitwise "or" operator.
In addition, we are also introducing 2 new DFG nodes, named "ArithBitOr" and
"ValueBitOr", to replace "BitOr" node. The idea is to follow the
difference that we make on Arith<op> and Value<op>, where ArithBitOr
handles cases when the operands are Int32 and ValueBitOr handles
the remaining cases.

We are also changing op_bitor to use ValueProfile. We are using
ValueProfile during DFG generation to emit "ArithBitOr" when
outcome prediction is Int32.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::arithProfileForPC):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitBinaryOp):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGBackwardsPropagationPhase.cpp:
(JSC::DFG::BackwardsPropagationPhase::isWithinPowerOfTwo):
(JSC::DFG::BackwardsPropagationPhase::propagate):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
(JSC::DFG::bitwiseOp):
* dfg/DFGOperations.h:
* dfg/DFGPredictionPropagationPhase.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileValueBitwiseOp):
(JSC::DFG::SpeculativeJIT::compileBitwiseOp):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::bitOp):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileValueBitOr):
(JSC::FTL::DFG::LowerDFGToB3::compileArithBitOr):
(JSC::FTL::DFG::LowerDFGToB3::compileBitOr): Deleted.
* jit/JITArithmetic.cpp:
(JSC::JIT::emit_op_bitor):
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/JSBigInt.cpp:
(JSC::JSBigInt::bitwiseAnd):
(JSC::JSBigInt::bitwiseOr):
(JSC::JSBigInt::absoluteBitwiseOp):
(JSC::JSBigInt::absoluteAddOne):
* runtime/JSBigInt.h:

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

2 years ago[JSC] Use new extra memory reporting in SparseArrayMap
yusukesuzuki@slowstart.org [Sat, 6 Oct 2018 19:49:45 +0000 (19:49 +0000)]
[JSC] Use new extra memory reporting in SparseArrayMap
https://bugs.webkit.org/show_bug.cgi?id=190278

Reviewed by Keith Miller.

This patch switches the extra memory reporting mechanism from deprecatedReportExtraMemory
to reportExtraMemoryAllocated & reportExtraMemoryVisited in SparseArrayMap.

* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::add):
(JSC::SparseArrayValueMap::visitChildren):

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

2 years agoAdding some temporary asserts to debug a mysterious ASAN bot crash.
mark.lam@apple.com [Sat, 6 Oct 2018 19:10:31 +0000 (19:10 +0000)]
Adding some temporary asserts to debug a mysterious ASAN bot crash.
https://bugs.webkit.org/show_bug.cgi?id=190331

Reviewed by Filip Pizlo.

These assertions are needed because we can't reproduce the issue locally.
We'll remove these asserts after the needed data has been collected from the bot.

* wtf/StackBounds.h:
(WTF::StackBounds::checkConsistency const):

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

2 years ago[Xcode] Never build yasm with ASAN
mitz@apple.com [Sat, 6 Oct 2018 16:07:18 +0000 (16:07 +0000)]
[Xcode] Never build yasm with ASAN
https://bugs.webkit.org/show_bug.cgi?id=190327

Reviewed by Youenn Fablet.

Source/ThirdParty/libwebrtc:

* Configurations/yasm.xcconfig: Set WK_ASAN_DISALLOWED to YES.

Tools:

* asan/asan.xcconfig: Allow targets to opt out of building with ASAN by setting
  the WK_ASAN_DISALLOWED build setting to YES (or, actually, anything other than NO or unset).

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

2 years agoFixed iOS device production builds after r236896.
mitz@apple.com [Sat, 6 Oct 2018 15:59:39 +0000 (15:59 +0000)]
Fixed iOS device production builds after r236896.

* Configurations/yasm.xcconfig: Excluding all sources when building for an iOS device meant
  that nothing got built, which caused the install action to fail when it tried to copy
  the built product. Just put things back the way they were for now.

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

2 years ago[Xcode] Don’t install yasm and don’t compile it in iOS device builds
mitz@apple.com [Sat, 6 Oct 2018 14:41:35 +0000 (14:41 +0000)]
[Xcode] Don’t install yasm and don’t compile it in iOS device builds
https://bugs.webkit.org/show_bug.cgi?id=190326

Reviewed by Youenn Fablet.

* Configurations/yasm.xcconfig: Set SKIP_INSTALL to YES, and excluded all source files when
  targeting iOS devices.

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

2 years agoProperly determine if css custom property values are computationally independent
commit-queue@webkit.org [Sat, 6 Oct 2018 13:57:16 +0000 (13:57 +0000)]
Properly determine if css custom property values are computationally independent
https://bugs.webkit.org/show_bug.cgi?id=190303

Patch by Justin Michaud <justin_michaud@apple.com> on 2018-10-06
Reviewed by Antti Koivisto.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-properties-values-api/register-property-syntax-parsing-expected.txt:
* web-platform-tests/css/css-properties-values-api/registered-property-computation-expected.txt:

Source/WebCore:

Add getDirectComputationalDependencies method to determine if a value is computationally
dependent. Use this method in CSS.registerProperty to replace existing substring checks.
No new tests are needed because the existing tests cover this behaviour.

* css/CSSCalculationValue.cpp:
(WebCore::determineCategory):
* css/CSSCalculationValue.h:
(WebCore::CSSCalcValue::getDirectComputationalDependencies const):
(WebCore::CSSCalcValue::getDirectRootComputationalDependencies const):
* css/CSSCustomPropertyValue.cpp:
(WebCore::CSSCustomPropertyValue::customCSSText const):
(WebCore::CSSCustomPropertyValue::tokens const):
(WebCore::CSSCustomPropertyValue::setResolvedTypedValue):
* css/CSSCustomPropertyValue.h:
* css/CSSPrimitiveValue.cpp:
(WebCore::CSSPrimitiveValue::getDirectComputationalDependencies const):
(WebCore::CSSPrimitiveValue::getDirectRootComputationalDependencies const):
* css/CSSPrimitiveValue.h:
* css/CSSValue.cpp:
(WebCore::CSSValue::getDirectComputationalDependencies const):
(WebCore::CSSValue::getDirectRootComputationalDependencies const):
* css/CSSValue.h:
* css/CSSVariableData.cpp:
(WebCore::CSSVariableData::CSSVariableData):
(WebCore::CSSVariableData::resolveVariableReference const):
* css/DOMCSSRegisterCustomProperty.cpp:
(WebCore::DOMCSSRegisterCustomProperty::registerProperty):

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

2 years agoWeb Inspector: add WebVTT MIME/file type mappings to the frontend
drousso@apple.com [Sat, 6 Oct 2018 01:06:20 +0000 (01:06 +0000)]
Web Inspector: add WebVTT MIME/file type mappings to the frontend
https://bugs.webkit.org/show_bug.cgi?id=190288

Reviewed by Brian Burg.

* UserInterface/Base/MIMETypeUtilities.js:
(WI.mimeTypeForFileExtension):
(WI.fileExtensionForMIMEType):

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.displayNameForResource):
Also attempt to use the mime-type-to-extension when the `WI.Resource` is of type `Other`.

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

2 years agoWeb Inspector: refactor constructor of WI.Resource
drousso@apple.com [Sat, 6 Oct 2018 00:20:54 +0000 (00:20 +0000)]
Web Inspector: refactor constructor of WI.Resource
https://bugs.webkit.org/show_bug.cgi?id=190318

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

Reworked constructor of `WI.Resource` to use an optional object for any non-essential arguments.

Drive-by: moved some simple getters to the top of the class to save space.
* UserInterface/Models/Resource.js:
(WI.Resource):

* UserInterface/Models/SourceMapResource.js:
(WI.SourceMapResource):

* UserInterface/Models/WebSocketResource.js:
(WI.WebSocketResource):

* UserInterface/Controllers/NetworkManager.js:
(WI.NetworkManager.prototype.frameDidNavigate):
(WI.NetworkManager.prototype.resourceRequestWillBeSent):
(WI.NetworkManager.prototype.webSocketWillSendHandshakeRequest):
(WI.NetworkManager.prototype.resourceRequestWasServedFromMemoryCache):
(WI.NetworkManager.prototype.resourceRequestDidReceiveResponse):
(WI.NetworkManager.prototype._addNewResourceToFrameOrTarget):
(WI.NetworkManager.prototype._createFrame):
(WI.NetworkManager.prototype._createResource):

LayoutTests:

* http/tests/inspector/network/har/har-basic.html:
* inspector/unit-tests/resource-collection.html:

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

2 years agoRadar links should be clickable on bugs.webkit.org
jer.noble@apple.com [Sat, 6 Oct 2018 00:02:48 +0000 (00:02 +0000)]
Radar links should be clickable on bugs.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=190293
<rdar://problem/45020184>

Reviewed by Lucas Forschler.

Add a new Extension which formats bug comments and makes radar:// links clickable.

* extensions/Radar/Config.pm: Added.
* extensions/Radar/Extension.pm: Added.
(bug_format_comment):
(_replace_radar):

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

2 years agoRegression(r236862): Crash under DOMWindowExtension::willDetachGlobalObjectFromFrame()
cdumez@apple.com [Fri, 5 Oct 2018 22:25:49 +0000 (22:25 +0000)]
Regression(r236862): Crash under DOMWindowExtension::willDetachGlobalObjectFromFrame()
https://bugs.webkit.org/show_bug.cgi?id=190320
<rdar://problem/45044814>

Reviewed by Geoffrey Garen.

Source/WebCore:

r236862 caused DOMWindowProperty::willDetachGlobalObjectFromFrame() to get called several
times. There was no effect for most DOMWindowProperty objects. However, it would cause
crashes for DOMWindowExtension objects, which subclass DOMWindowProperty and override
DOMWindowProperty::willDetachGlobalObjectFromFrame() because they dereference the frame
without null checking it.

To address the issue, we now make sure DOMWindowProperty::willDetachGlobalObjectFromFrame()
is not called several times.

* dom/Document.cpp:
(WebCore::Document::detachFromFrame):
Stop calling DOMWindow::willDetachDocumentFromFrame() here as most call sites already
take care of calling DOMWindow::willDetachDocumentFromFrame() beforehand (e.g.
Document::prepareForDestruction()).
Also, return early if the Document is already detached from its frame.

(WebCore::Document::frameWasDisconnectedFromOwner):
Add new utility function called when a Frame is disconnected from its owner which
calls both Document::detachFromFrame() and DOMWindow::willDetachDocumentFromFrame().

* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::willDetachDocumentFromFrame):
Return early if the Window is already detached from its frame.

* page/Frame.cpp:
(WebCore::Frame::disconnectOwnerElement):

Tools:

Add API test coverage.

* TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKit/DOMWindowExtensionBasic_Bundle.cpp:
(TestWebKitAPI::DOMWindowExtensionBasic::willDestroyGlobalObjectForDOMWindowExtension):

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

2 years agoREGRESSION(r236154) Page loads are not drawn when loaded in shipped Safari11/12
achristensen@apple.com [Fri, 5 Oct 2018 21:39:57 +0000 (21:39 +0000)]
REGRESSION(r236154) Page loads are not drawn when loaded in shipped Safari11/12
https://bugs.webkit.org/show_bug.cgi?id=190202

Reviewed by Youenn Fablet.

Safari11/12 had a WKPageLoaderClient and a WKPageNavigationClient.
It did not actually draw the page until its WKPageNavigationClient.renderingProgressDidChange was called.
r236154 made it so we only call WKPageLoaderClient.didLayout if an application has both clients.
This fixes open source WebKit running with shipped Safari.

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

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

2 years agoWeb Inspector: use iframe's name attribute for FrameTreeElement
drousso@apple.com [Fri, 5 Oct 2018 21:12:48 +0000 (21:12 +0000)]
Web Inspector: use iframe's name attribute for FrameTreeElement
https://bugs.webkit.org/show_bug.cgi?id=190275

Reviewed by Joseph Pecoraro.

* UserInterface/Views/FrameTreeElement.js:
(WI.FrameTreeElement.prototype.get mainTitleText): Added.

* UserInterface/Views/ResourceTreeElement.js:
(WI.ResourceTreeElement.prototype.get mainTitleText): Added.
(WI.ResourceTreeElement.prototype._updateTitles):
Provide a way for subclasses to override what is used for the `mainTitle`.

* UserInterface/Views/QuickConsole.js:
(WI.QuickConsole.prototype._createExecutionContextPathComponentFromFrame):
Update the execution context picker to match what `WI.FrameTreeElement`s show.

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

2 years agoTry to unflake inspector/layers/layerTreeDidChange.html
joepeck@webkit.org [Fri, 5 Oct 2018 20:08:13 +0000 (20:08 +0000)]
Try to unflake inspector/layers/layerTreeDidChange.html

Unreviewed. Test gardening.

* inspector/layers/layerTreeDidChange.html:
Force a layout early in the test to try to force layout tree
update events in the expected sequence.

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

2 years ago[JSC][Linux] Support Perf JITDump logging
yusukesuzuki@slowstart.org [Fri, 5 Oct 2018 19:59:04 +0000 (19:59 +0000)]
[JSC][Linux] Support Perf JITDump logging
https://bugs.webkit.org/show_bug.cgi?id=189893

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch adds Linux `perf` command's JIT Dump support. It allows JSC to tell perf about JIT code information.
We add a command line option, `--logJITCodeForPerf`, which dumps `jit-%pid.dump` in the current directory.
By using this dump and perf.data output, we can annotate JIT code with profiling information.

    $ echo "(function f() { var s = 0; for (var i = 0; i < 1000000000; i++) { s += i; } return s; })();" > test.js
    $ perf record -k mono ../../WebKitBuild/perf/Release/bin/jsc test.js --logJITCodeForPerf=true
    [ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.182 MB perf.data (4346 samples) ]
    $ perf inject --jit -i perf.data -o perf.jit.data
    $ perf report -i perf.jit.data

* Sources.txt:
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::finalizeCodeWithDisassemblyImpl):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::finalizeCodeWithDisassembly):
* assembler/PerfLog.cpp: Added.
(JSC::PerfLog::singleton):
(JSC::generateTimestamp):
(JSC::getCurrentThreadID):
(JSC::PerfLog::PerfLog):
(JSC::PerfLog::write):
(JSC::PerfLog::flush):
(JSC::PerfLog::log):
* assembler/PerfLog.h: Added.
* jit/ExecutableAllocator.cpp:
(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
* runtime/Options.cpp:
(JSC::Options::isAvailable):
* runtime/Options.h:

Source/WTF:

* wtf/PageReservation.h:
(WTF::PageReservation::reserveAndCommitWithGuardPages):

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

2 years agoFurther unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.
jer.noble@apple.com [Fri, 5 Oct 2018 19:30:42 +0000 (19:30 +0000)]
Further unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):

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

2 years agoGardening: Build fix after r236880.
mark.lam@apple.com [Fri, 5 Oct 2018 19:14:46 +0000 (19:14 +0000)]
Gardening: Build fix after r236880.
https://bugs.webkit.org/show_bug.cgi?id=190317

Unreviewed.

* jit/ExecutableAllocator.h:

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

2 years agoperformJITMemcpy() should handle the case when the executable allocator is not initia...
mark.lam@apple.com [Fri, 5 Oct 2018 18:33:41 +0000 (18:33 +0000)]
performJITMemcpy() should handle the case when the executable allocator is not initialized yet.
https://bugs.webkit.org/show_bug.cgi?id=190317
<rdar://problem/45039398>

Reviewed by Saam Barati.

When SeparatedWXHeaps is in use, jitWriteThunkGenerator() will call performJITMemcpy()
to copy memory before the JIT fixed memory pool is initialize.  Before r236864,
performJITMemcpy() would just do a memcpy in that case.  We need to restore the
equivalent behavior.

* jit/ExecutableAllocator.cpp:
(JSC::isJITPC):
* jit/ExecutableAllocator.h:
(JSC::performJITMemcpy):

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

2 years ago[PSON] Drop snapshotting workaround introduced in r235898
cdumez@apple.com [Fri, 5 Oct 2018 18:26:56 +0000 (18:26 +0000)]
[PSON] Drop snapshotting workaround introduced in r235898
https://bugs.webkit.org/show_bug.cgi?id=190314

Reviewed by Geoffrey Garen.

Drop snapshotting workaround introduced in r235898 as it is no longer needed now
that the flashing bug has been fixed.

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

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

2 years ago Unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.
jer.noble@apple.com [Fri, 5 Oct 2018 17:35:44 +0000 (17:35 +0000)]
   Unreviewed watchOS build fix: videoPerformanceMetrics unavailable on watchOS.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):

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

2 years ago[MediaStream] RealtimeMediaSource should be able to vend hashed IDs
eric.carlson@apple.com [Fri, 5 Oct 2018 17:20:20 +0000 (17:20 +0000)]
[MediaStream] RealtimeMediaSource should be able to vend hashed IDs
https://bugs.webkit.org/show_bug.cgi?id=190142
<rdar://problem/44911109>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests, covered by existing tests.

* Modules/mediastream/CanvasCaptureMediaStreamTrack.cpp:
(WebCore::CanvasCaptureMediaStreamTrack::Source::Source): Update order of parameters passed
to base class.

* Modules/mediastream/MediaDevicesRequest.cpp:
(WebCore::MediaDevicesRequest::start): ASSERT if document.deviceIDHashSalt is not the same
as passed salt.

* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::getSettings const): Don't need to hash ID.
(WebCore::MediaStreamTrack::getCapabilities const): Ditto.
* Modules/mediastream/MediaStreamTrack.h:
* Modules/mediastream/MediaStreamTrack.idl:

* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::allow): Pass hash salt to createMediaStream.

* Modules/mediastream/libwebrtc/LibWebRTCPeerConnectionBackend.cpp:
(WebCore::LibWebRTCPeerConnectionBackend::createReceiverForSource): Update order of parameters passed
to base class.

* Modules/webaudio/MediaStreamAudioSource.cpp:
(WebCore::MediaStreamAudioSource::MediaStreamAudioSource): Ditto.
* platform/mediastream/MediaConstraints.h:

* platform/mediastream/RealtimeIncomingAudioSource.cpp:
(WebCore::RealtimeIncomingAudioSource::RealtimeIncomingAudioSource): Ditto.

* platform/mediastream/RealtimeIncomingVideoSource.cpp:
(WebCore::RealtimeIncomingVideoSource::RealtimeIncomingVideoSource): Ditto.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::RealtimeMediaSource): Calculate hashed ID.
(WebCore::RealtimeMediaSource::selectSettings): Use m_hashedID.
(WebCore::RealtimeMediaSource::hashedId const): New.
(WebCore::RealtimeMediaSource::deviceIDHashSalt const): New.
* platform/mediastream/RealtimeMediaSource.h:

* platform/mediastream/RealtimeMediaSourceCenter.cpp:
(WebCore::RealtimeMediaSourceCenter::createMediaStream): Take hash salt, pass it when creating
a source.
(WebCore::RealtimeMediaSourceCenter::getUserMediaDevices): Ditto.
(WebCore::RealtimeMediaSourceCenter::validateRequestConstraints): Ditto.
* platform/mediastream/RealtimeMediaSourceCenter.h:

* platform/mediastream/RealtimeMediaSourceFactory.h:
* platform/mediastream/RealtimeVideoSource.cpp:
(WebCore::RealtimeVideoSource::RealtimeVideoSource): Update parameters.
* platform/mediastream/RealtimeVideoSource.h:

* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.cpp:
(WebCore::GStreamerAudioCaptureSource::create): Ditto.
(WebCore::GStreamerAudioCaptureSource::GStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerAudioCaptureSource.h:

* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.cpp:
(WebCore::GStreamerVideoCaptureSource::create): Ditto.
(WebCore::GStreamerVideoCaptureSource::GStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/GStreamerVideoCaptureSource.h:

* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.cpp:
(WebCore::WrappedMockRealtimeAudioSource::WrappedMockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockGStreamerAudioCaptureSource::MockGStreamerAudioCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerAudioCaptureSource.h:

* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockGStreamerVideoCaptureSource::MockGStreamerVideoCaptureSource): Ditto.
* platform/mediastream/gstreamer/MockGStreamerVideoCaptureSource.h:

* platform/mediastream/mac/AVVideoCaptureSource.h:
* platform/mediastream/mac/AVVideoCaptureSource.mm:
(WebCore::AVVideoCaptureSource::create): Ditto.
(WebCore::AVVideoCaptureSource::AVVideoCaptureSource): Ditto.
(WebCore::AVVideoCaptureSource::settings): Use hashedId to set device ID.
(WebCore::AVVideoCaptureSource::capabilities): Ditto.

* platform/mediastream/mac/CoreAudioCaptureSource.cpp:
(WebCore::CoreAudioCaptureSource::create): Update parameters.
(WebCore::CoreAudioCaptureSource::CoreAudioCaptureSource): Ditto.
(WebCore::CoreAudioCaptureSource::capabilities): Use hashedId to set device ID.
(WebCore::CoreAudioCaptureSource::settings): Ditto.
* platform/mediastream/mac/CoreAudioCaptureSource.h:

* platform/mediastream/mac/DisplayCaptureSourceCocoa.cpp:
(WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): Update parameters.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:

* platform/mediastream/mac/MockRealtimeAudioSourceMac.h:
* platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSourceMac::MockRealtimeAudioSourceMac): Ditto.

* platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
* platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:
(WebCore::MockRealtimeVideoSource::create): Ditto.
(WebCore::MockRealtimeVideoSourceMac::MockRealtimeVideoSourceMac): Ditto.

* platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.h:
* platform/mediastream/mac/ScreenDisplayCaptureSourceMac.mm:
(WebCore::ScreenDisplayCaptureSourceMac::create): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::ScreenDisplayCaptureSourceMac): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::createDisplayStream): Update logging.
(WebCore::ScreenDisplayCaptureSourceMac::startDisplayStream): Ditto.
(WebCore::ScreenDisplayCaptureSourceMac::frameAvailable): Ditto.

* platform/mediastream/mac/WindowDisplayCaptureSourceMac.h:
* platform/mediastream/mac/WindowDisplayCaptureSourceMac.mm:
(WebCore::WindowDisplayCaptureSourceMac::create): Update parameters.

* platform/mock/MockRealtimeAudioSource.cpp:
(WebCore::MockRealtimeAudioSource::create): Ditto.
(WebCore::MockRealtimeAudioSource::MockRealtimeAudioSource): Ditto.
(WebCore::MockRealtimeAudioSource::settings): Use hashedId to set device ID.
(WebCore::MockRealtimeAudioSource::capabilities): Ditto.
* platform/mock/MockRealtimeAudioSource.h:

* platform/mock/MockRealtimeMediaSourceCenter.cpp:

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::create): Update parameters.
(WebCore::MockRealtimeVideoSource::MockRealtimeVideoSource): Ditto.
(WebCore::MockRealtimeVideoSource::capabilities): Use hashedId to set device ID.
(WebCore::MockRealtimeVideoSource::settings): Ditto.
* platform/mock/MockRealtimeVideoSource.h:

Source/WebKit:

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<MediaConstraints>::encode):
(IPC::ArgumentCoder<MediaConstraints>::decode):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
* UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):
* WebProcess/cocoa/UserMediaCaptureManager.cpp:
(WebKit::UserMediaCaptureManager::Source::Source):
(WebKit::UserMediaCaptureManager::createCaptureSource):
* WebProcess/cocoa/UserMediaCaptureManager.h:

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

2 years agoUnreviewed build fix: internal builds can't find AVVideoPerformanceMetrics.
jer.noble@apple.com [Fri, 5 Oct 2018 16:37:38 +0000 (16:37 +0000)]
Unreviewed build fix: internal builds can't find AVVideoPerformanceMetrics.

* pal/spi/mac/AVFoundationSPI.h:

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

2 years agoAdd support for reporting "display composited video frames" through the VideoPlayback...
jer.noble@apple.com [Fri, 5 Oct 2018 16:04:36 +0000 (16:04 +0000)]
Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
https://bugs.webkit.org/show_bug.cgi?id=190266

Reviewed by Eric Carlson.

Source/WebCore:

Test: TestWebKitAPI.VideoQualityDisplayCompositing

Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
constructor (rather than individual fields). Add a new setting to control visibility
of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.

* Modules/mediasource/VideoPlaybackQuality.cpp:
(WebCore::VideoPlaybackQuality::create):
(WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
* Modules/mediasource/VideoPlaybackQuality.h:
(WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
* Modules/mediasource/VideoPlaybackQuality.idl:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getVideoPlaybackQuality):
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:
* page/Settings.yaml:
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):

Source/WebCore/PAL:

* pal/spi/mac/AVFoundationSPI.h:

Source/WebKit:

Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
(-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/VideoQualityDisplayCompositing.mm: Added.
(TestWebKitAPI::TEST):

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

2 years agoUnreviewed, rolling out r236866.
ryanhaddad@apple.com [Fri, 5 Oct 2018 15:58:40 +0000 (15:58 +0000)]
Unreviewed, rolling out r236866.

Breaks internal builds.

Reverted changeset:

"Add support for reporting "display composited video frames"
through the VideoPlaybackQuality object."
https://bugs.webkit.org/show_bug.cgi?id=190266
https://trac.webkit.org/changeset/236866

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

2 years ago[WPE][JSC] Use Unified Sources for Platform-specific sources
commit-queue@webkit.org [Fri, 5 Oct 2018 15:06:22 +0000 (15:06 +0000)]
[WPE][JSC] Use Unified Sources for Platform-specific sources
https://bugs.webkit.org/show_bug.cgi?id=190300

Patch by Carlos Eduardo Ramalho <cadubentzen@gmail.com> on 2018-10-05
Reviewed by Yusuke Suzuki.

Currently the GTK port already used Unified Sources with the same source files.
As WPE has conditional code using gmodule, we need to add GLIB_GMODULE_LIBRARIES
to the list of libraries to link with.

Source/JavaScriptCore:

* PlatformWPE.cmake:
* SourcesWPE.txt: Added.
* shell/PlatformWPE.cmake:

Tools:

* TestWebKitAPI/PlatformWPE.cmake:

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

2 years agoSkip test on systems with limited memory
commit-queue@webkit.org [Fri, 5 Oct 2018 13:05:15 +0000 (13:05 +0000)]
Skip test on systems with limited memory
https://bugs.webkit.org/show_bug.cgi?id=190310

Invoking runDefault adds test to runlist, skipping the test in the next
line does not prevent the test from executing. Change order of lines such
that runDefault is only executed if test is not executed.

Patch by Dominik Infuehr <dominik.infuehr@gmail.com> on 2018-10-05
Reviewed by Mark Lam.

* stress/regress-190187.js:

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

2 years ago[Web Animations] REGRESSION (r236809): crash under AnimationTimeline::updateCSSAnimat...
graouts@webkit.org [Fri, 5 Oct 2018 10:57:43 +0000 (10:57 +0000)]
[Web Animations] REGRESSION (r236809): crash under AnimationTimeline::updateCSSAnimationsForElement()
https://bugs.webkit.org/show_bug.cgi?id=190307
<rdar://problem/45009901>

Reviewed by Dean Jackson.

Source/WebCore:

We could crash with an invalid access to cssAnimationsByName since cancelOrRemoveDeclarativeAnimation() already
does the job of clearing the m_elementToCSSAnimationByName entry for this particular element if there are no
animations targeting it anymore. This started happening in r236809 when we switched from a simple call to to cancel()
to a call to cancelOrRemoveDeclarativeAnimation(). We can safely remove the removal here since cancelOrRemoveDeclarativeAnimation()
will already have performed this task safely if needed.

* animation/AnimationTimeline.cpp:
(WebCore::AnimationTimeline::updateCSSAnimationsForElement):

LayoutTests:

This test was also crashing even though it should not have been using the new animation engine. Adding the
flag to opt into the legacy animation engine.

* legacy-animation-engine/animations/animation-shorthand-removed.html:

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

2 years ago[GTK] build fails with python 3 if LANG and LC_TYPE are unset
commit-queue@webkit.org [Fri, 5 Oct 2018 10:56:31 +0000 (10:56 +0000)]
[GTK] build fails with python 3 if LANG and LC_TYPE are unset
https://bugs.webkit.org/show_bug.cgi?id=190258

Patch by Mike Gorse <mgorse@alum.wpi.edu> on 2018-10-05
Reviewed by Konstantin Tokarev.

* Scripts/cssmin.py: Set stdout to UTF-8 on python 3.
* Scripts/generateIntlCanonicalizeLanguage.py: Open files with
  encoding=UTF-8 on Python 3.
* yarr/generateYarrCanonicalizeUnicode: Ditto.
* yarr/generateYarrUnicodePropertyTables.py: Ditto.

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

2 years agoExpose whether WKWebProcessPlugInNodeHandle is a select element to clients
commit-queue@webkit.org [Fri, 5 Oct 2018 07:49:56 +0000 (07:49 +0000)]
Expose whether WKWebProcessPlugInNodeHandle is a select element to clients
https://bugs.webkit.org/show_bug.cgi?id=190302
<rdar://problem/45031469>

Patch by Zach Li <zachli@apple.com> on 2018-10-05
Reviewed by Tim Horton.

Source/WebKit:

* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
Introduce a new property `isSelectElement`.
* WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:
(-[WKWebProcessPlugInNodeHandle isSelectElement]):
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::InjectedBundleNodeHandle::isSelectElement const):
Check whether the node is a select element.
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/InjectedBundleNodeHandleIsSelectElement.mm: Added.
(-[InjectedBundleNodeHandleIsSelectElement verifySelectElementForHTMLElementTag:document:jsContext:expectedResult:failedElementTags:]):
(-[InjectedBundleNodeHandleIsSelectElement webProcessPlugIn:didCreateBrowserContextController:]):
* TestWebKitAPI/Tests/WebKitCocoa/UIDelegate.mm:
(-[InjectedBundleNodeHandleIsSelectElementDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(TEST):

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

2 years agoWeb Inspector: REGRESSION (r236766): Storage tab no longer updates after main frame...
mattbaker@apple.com [Fri, 5 Oct 2018 04:04:10 +0000 (04:04 +0000)]
Web Inspector: REGRESSION (r236766): Storage tab no longer updates after main frame navigation
https://bugs.webkit.org/show_bug.cgi?id=190298

Reviewed by Joseph Pecoraro.

Handle Cleared events from storage managers separately, so that successive
events during page load does not cause the Storage tab to destroy newly
created tree elements.

* UserInterface/Views/StorageSidebarPanel.js:
(WI.StorageSidebarPanel):
(WI.StorageSidebarPanel.prototype._closeContentViewForTreeElement):
(WI.StorageSidebarPanel.prototype._domStorageCleared):
(WI.StorageSidebarPanel.prototype._applicationCacheCleared):
(WI.StorageSidebarPanel.prototype._indexedDatabaseCleared):
(WI.StorageSidebarPanel.prototype._databaseCleared):
(WI.StorageSidebarPanel.prototype._storageCleared): Deleted.

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

2 years ago[iOS] [WK2] Expose some more editing SPI on WKWebView
wenson_hsieh@apple.com [Fri, 5 Oct 2018 03:03:21 +0000 (03:03 +0000)]
[iOS] [WK2] Expose some more editing SPI on WKWebView
https://bugs.webkit.org/show_bug.cgi?id=190232
<rdar://problem/44963368>

Reviewed by Tim Horton.

Source/WebKit:

Exposes a few additional editing commands as SPI on WKWebView, by defining a new extension on WKWebView that
also conforms to <UIResponderStandardEditActions>. This patch implements nearly all of the remaining
unimplemented methods on UIResponderStandardEditActions, and the new extension augments this set of editing
methods by adding additional editing helpers that don't currently exist on iOS (e.g. toggleStrikeThrough and
insertUnorderedList). The names of these new methods have been largely been borrowed from their counterparts on
macOS (see: `NSResponder.h`).

The new edit actions are added in this patch on iOS are:

```
- (void)alignCenter:(id)sender;
- (void)alignJustified:(id)sender;
- (void)alignLeft:(id)sender;
- (void)alignRight:(id)sender;
- (void)indent:(id)sender;
- (void)insertOrderedList:(id)sender;
- (void)insertUnorderedList:(id)sender;
- (void)outdent:(id)sender;
- (void)toggleStrikeThrough:(id)sender;
- (void)setFont:(UIFont *)font sender:(id)sender;
- (void)setFontSize:(CGFloat)fontSize sender:(id)sender;
- (void)setTextColor:(UIColor *)color sender:(id)sender;
```

Tests:  WKWebViewEditActions.ListInsertion
        WKWebViewEditActions.ChangeIndentation
        WKWebViewEditActions.SetAlignment
        WKWebViewEditActions.ToggleStrikeThrough
        WKWebViewEditActions.ChangeFontSize
        WKWebViewEditActions.SetTextColor
        WKWebViewEditActions.SetFontFamily

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView canPerformAction:withSender:]):

Update this to handle the new editing actions. For now, we simply treat all of the new edit actions in the same
way as we currently treat bold, italic and underline: that is, they are enabled only when the user is in a
richly contenteditable element.

(-[WKWebView setFont:sender:]):
(-[WKWebView setFontSize:sender:]):

Construct and send a set of FontChanges.

(-[WKWebView setTextColor:sender:]):

Invoke "ForeColor" with the serialized color representation. This allows us to handle `rgba()` color values,
which hex format would not permit.

* UIProcess/API/Cocoa/WKWebViewPrivate.h:

Add the new SPI.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::changeFontAttributes):
(WebKit::WebPageProxy::changeFont):

Pull logic for applying font and font attribute style changes out of macOS-specific code, and into
platform-agnostic code in WebPage and WebPageProxy.

* UIProcess/WebPageProxy.h:
* UIProcess/ios/WKContentViewInteraction.h:

Add the new supported editing commands as supported actions in WKWebView. The only new editing commands that
aren't present in this list are -setFont:sender:, -setColor:sender:, and -setFontSize:sender: which are manually
handled in places where the `FOR_EACH_WKCONTENTVIEW_ACTION` macro is otherwise used. In a followup, we could
consider augmenting `FOR_EACH_WKCONTENTVIEW_ACTION` to handle actions with multiple arguments.

* UIProcess/ios/WKContentViewInteraction.mm:

Define a new helper macro here to define boilerplate implementations of the -…ForWebView edit command
implementations that turn around and invoke `_page->executeEditCommand` with no additional arguments, and an
edit command name matching that of the WebCore edit command.

(-[WKContentView toggleStrikeThroughForWebView:]):
(-[WKContentView increaseSizeForWebView:]):
(-[WKContentView decreaseSizeForWebView:]):
(-[WKContentView setFontForWebView:sender:]):
(-[WKContentView setFontSizeForWebView:sender:]):
(-[WKContentView setTextColorForWebView:sender:]):
(-[WKContentView canPerformActionForWebView:sender:]):

Add …ForWebView plumbing for the new editing actions, so they turn around and call into WKContentView by
default, but behavior may be overridden in WKWebView.

* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::changeFontAttributes): Deleted.
(WebKit::WebPageProxy::changeFont): Deleted.
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::changeFontAttributes):
(WebKit::WebPage::changeFont):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:
* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::changeFontAttributes): Deleted.
(WebKit::WebPage::changeFont): Deleted.

Tools:

Adds new API tests to exercise the new SPIs.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/ios/WKWebViewEditActions.mm: Added.
(-[TestWKWebView querySelectorExists:]):
(TestWebKitAPI::webViewForEditActionTesting):
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/mac/FontManagerTests.mm:
(-[TestWKWebView collapseToStart]): Deleted.
(-[TestWKWebView collapseToEnd]): Deleted.
(-[TestWKWebView stylePropertyAtSelectionStart:]): Deleted.
(-[TestWKWebView stylePropertyAtSelectionEnd:]): Deleted.
* TestWebKitAPI/cocoa/TestWKWebView.h:
* TestWebKitAPI/cocoa/TestWKWebView.mm:
(-[TestWKWebView stylePropertyAtSelectionStart:]):
(-[TestWKWebView stylePropertyAtSelectionEnd:]):
(-[TestWKWebView collapseToStart]):
(-[TestWKWebView collapseToEnd]):

Pull some common testing helpers out of NSFontManager and into TestWKWebView.

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

2 years agoAdd support for reporting "display composited video frames" through the VideoPlayback...
jer.noble@apple.com [Fri, 5 Oct 2018 01:11:22 +0000 (01:11 +0000)]
Add support for reporting "display composited video frames" through the VideoPlaybackQuality object.
https://bugs.webkit.org/show_bug.cgi?id=190266

Reviewed by Eric Carlson.

Source/WebCore:

Test: TestWebKitAPI.VideoQualityDisplayCompositing

Modify VideoPlaybackQuality to take a VideoPlaybackQualityMetrics object in its
constructor (rather than individual fields). Add a new setting to control visibility
of the displayCompositedVideoFrames attribute on VideoPlaybackQuality. Add support
for VideoPlaybackQualityMetrics to MediaPlayerPrivateAVFoundationObjC.

* Modules/mediasource/VideoPlaybackQuality.cpp:
(WebCore::VideoPlaybackQuality::create):
(WebCore::VideoPlaybackQuality::VideoPlaybackQuality):
* Modules/mediasource/VideoPlaybackQuality.h:
(WebCore::VideoPlaybackQuality::displayCompositedVideoFrames const):
* Modules/mediasource/VideoPlaybackQuality.idl:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::getVideoPlaybackQuality):
* html/HTMLMediaElement.h:
* html/HTMLMediaElement.idl:
* page/Settings.yaml:
* platform/graphics/MediaPlayer.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoPlaybackQualityMetrics):
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::videoPlaybackQualityMetrics):
* platform/mock/mediasource/MockMediaSourcePrivate.cpp:
(WebCore::MockMediaSourcePrivate::videoPlaybackQualityMetrics):

Source/WebCore/PAL:

* pal/spi/mac/AVFoundationSPI.h:

Source/WebKit:

Add a new preference to control the visibility of displayCompositedVideoFrames in the VideoPlaybackQualityObject.

* Shared/WebPreferences.yaml:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _setVideoQualityIncludesDisplayCompositingEnabled:]):
(-[WKPreferences _videoQualityIncludesDisplayCompositingEnabled]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/VideoQualityDisplayCompositing.mm: Added.
(TestWebKitAPI::TEST):

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

2 years ago[Cocoa] Add SPI to expose typing attributes at the current selection on WKWebView
wenson_hsieh@apple.com [Fri, 5 Oct 2018 00:47:05 +0000 (00:47 +0000)]
[Cocoa] Add SPI to expose typing attributes at the current selection on WKWebView
https://bugs.webkit.org/show_bug.cgi?id=190119
<rdar://problem/44767062>

Reviewed by Tim Horton.

Source/WebKit:

Add support for new WebKit2 SPI to notify the UI delegate about font attributes when the editor state changes
(e.g. due to selection changes, or executing an edit command). See below for more detail.

Test: FontAttributes.FontAttributesAfterChangingSelection

* Shared/EditorState.cpp:
(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):
* Shared/EditorState.h:

Add a new optional `FontAttributes` member to EditorState's post-layout data. FontAttributes are computed and
sent over IPC only if the UI delegate implements the new delegate hook which requires information about font
attributes.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:

Add a new flag for the UI process to let a new web page know whether it should additionally compute font
attributes when computing editor state.

* UIProcess/API/APIUIClient.h:
(API::UIClient::needsFontAttributes const):
(API::UIClient::didChangeFontAttributes):
* UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _didChangeEditorState]):
* UIProcess/Cocoa/UIDelegate.h:
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::setDelegate):
(WebKit::UIDelegate::UIClient::didChangeFontAttributes):

Call out to the UI delegate with a font attribute dictionary, created via FontAttributes on EditorState's
post-layout data.

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

Update whether or not the UI process needs to know about font attributes. The UI process only requires font
attribute information if the UI delegate implements `-_webView:didChangeFontAttributes:`.

(WebKit::WebPageProxy::setNeedsFontAttributes):
(WebKit::WebPageProxy::creationParameters):
* UIProcess/WebPageProxy.h:
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::editorStateChanged):
* UIProcess/mac/WebPageProxyMac.mm:
(WebKit::WebPageProxy::editorStateChanged):

Update the cached font attributes in the UI process when receiving a new editor state update.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):
(WebKit::WebPage::editorState const):
(WebKit::WebPage::setNeedsFontAttributes):

Add a new IPC hook to update whether or not the page should additionally compute font attributes. In the case
where the UI delegate changes from something that does not require font attributes to one that does, we
additionally schedule an editor state update.

(WebKit::WebPage::updateFontAttributesAfterEditorStateChange):

Private helper function to plumb FontAttributes to the UI client after an editor state change.

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

Tools:

Add a new API test that loads a document containing various rich text styles. This test moves the selection
around the document and checks the last set of font attributes received via the new UI delegate hook.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/FontAttributes.mm: Added.
(-[FontAttributesListener _webView:didChangeFontAttributes:]):
(-[FontAttributesListener lastFontAttributes]):
(-[TestWKWebView selectElementWithIdentifier:]):
(-[TestWKWebView fontAttributesAfterNextPresentationUpdate]):
(ColorExpectation::ColorExpectation):
(ShadowExpectation::ShadowExpectation):
(checkColor):
(checkShadow):
(checkFont):
(webViewForTestingFontAttributes):
* TestWebKitAPI/Tests/WebKitCocoa/rich-text-attributes.html: Added.

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

2 years agoMove start/EndOfFixedExecutableMemoryPool pointers into the FixedVMPoolExecutableAllo...
mark.lam@apple.com [Fri, 5 Oct 2018 00:35:25 +0000 (00:35 +0000)]
Move start/EndOfFixedExecutableMemoryPool pointers into the FixedVMPoolExecutableAllocator object.
https://bugs.webkit.org/show_bug.cgi?id=190295
<rdar://problem/19197193>

Reviewed by Saam Barati.

This allows us to use the tagging logic already baked into MacroAssemblerCodePtr
instead of needing to use our own custom version here.

* jit/ExecutableAllocator.cpp:
(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::memoryStart):
(JSC::FixedVMPoolExecutableAllocator::memoryEnd):
(JSC::FixedVMPoolExecutableAllocator::isJITPC):
(JSC::ExecutableAllocator::allocate):
(JSC::startOfFixedExecutableMemoryPoolImpl):
(JSC::endOfFixedExecutableMemoryPoolImpl):
(JSC::isJITPC):
* jit/ExecutableAllocator.h:

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

2 years agoA Document / Window should lose its browsing context as soon as its iframe is removed...
cdumez@apple.com [Fri, 5 Oct 2018 00:19:46 +0000 (00:19 +0000)]
A Document / Window should lose its browsing context as soon as its iframe is removed from the document
https://bugs.webkit.org/show_bug.cgi?id=190282

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline several WPT tests that are now passing. I have verified that those tests are also passing in
Firefox and Chrome.

* web-platform-tests/html/browsers/windows/nested-browsing-contexts/window-parent-null-expected.txt:
* web-platform-tests/html/semantics/embedded-content/the-iframe-element/iframe-synchronously-discard-expected.txt:

Source/WebCore:

A Document / Window should lose its browsing context (aka Frame) as soon as its iframe is removed from
the document. In WebKit, a Document / Window's Frame was only getting nulled out when the frame gets
destroyed, which happens later usually after a GC happens.

Specification:
- https://html.spec.whatwg.org/#the-iframe-element
"""
When an iframe element is removed from a document, the user agent must discard the element's nested browsing
context, if it is not null, and then set the element's nested browsing context to null.
"""

This was not consistent with the specification or other browsers (tested Chrome and Firefox) so this
patch is aligning our behavior.

In a follow-up, I am planning to look into making the Window not be a FrameDestructionObserver, and instead
get its frame from the Document. This should make the code simpler.

No new tests, rebaselined existing tests.

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::getUserMedia const):
* Modules/mediastream/MediaDevices.h:
Update getUserMedia() to reject a the Promise with an InvalidStateError when calling after the
document has been detached, instead of throwing an InvalidStateError. This behavior is as per
specification:
- https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia (Step 4)
I needed to make this change to keep one of our layout tests passing.

* dom/Document.cpp:
(WebCore::Document::attachToCachedFrame):
(WebCore::Document::detachFromFrame):
* dom/Document.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::didSecureTransitionTo):
(WebCore::DOMWindow::willDetachDocumentFromFrame):
(WebCore::DOMWindow::setStatus):
(WebCore::DOMWindow::detachFromFrame):
(WebCore::DOMWindow::attachToFrame):
* page/DOMWindow.h:
* page/DOMWindowProperty.cpp:
(WebCore::DOMWindowProperty::disconnectFrameForDocumentSuspension):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInCachedFrame):
(WebCore::DOMWindowProperty::willDestroyGlobalObjectInFrame):
* page/Frame.cpp:
(WebCore::Frame::disconnectOwnerElement):

* platform/mock/MockRealtimeVideoSource.cpp:
(WebCore::MockRealtimeVideoSource::drawText):
Calling drawText() with a null String hits an assertion in debug. This was triggered by one of
our layout tests so I made sure we only call drawText when the String is not null.

LayoutTests:

Update existing layout test to reflect behavior change.

* fast/dom/Window/BarInfo-after-frame-removed.html:
* fast/dom/Window/dom-access-from-closure-iframe-expected.txt:
* fast/dom/Window/dom-access-from-closure-window-expected.txt:
* fast/dom/Window/dom-access-from-closure-window-with-gc-expected.txt:
* fast/dom/Window/resources/dom-access-from-closure-iframe-child.html:
* fast/dom/Window/resources/dom-access-from-closure-window-child.html:
* fast/events/resources/before-unload-return-string-conversion-frame.html:
* fast/parser/resources/set-parent-to-javascript-url.html:
* http/tests/media/media-stream/disconnected-frame.html:
* http/tests/security/contentSecurityPolicy/resources/checkDidSameOriginChildWindowLoad.js:
(checkDidLoad):
* http/tests/security/named-window-property-from-same-origin-inactive-document-expected.txt:
* http/tests/security/named-window-property-from-same-origin-inactive-document.html:
* http/tests/security/xss-DENIED-contentWindow-eval-expected.txt:
* http/tests/security/xss-DENIED-named-window-property-from-cross-origin-inactive-document-expected.txt:
* http/tests/security/xss-DENIED-named-window-property-from-cross-origin-inactive-document.html:

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

2 years agoAdd retry for test groups with failed build requests.
dewei_zhu@apple.com [Fri, 5 Oct 2018 00:17:49 +0000 (00:17 +0000)]
Add retry for test groups with failed build requests.
https://bugs.webkit.org/show_bug.cgi?id=190188

Reviewed by Ryosuke Niwa.

Added retry logic in run-analysis script.
Current retry logic will only be triggered when there is at least one successful build request for each commit set
in a test group.

* init-database.sql: Added 'testgroup_initial_repetition_count' and 'testgroup_may_need_more_requests'.
SQL to update existing database:
'''
BEGIN;
    ALTER TABLE analysis_test_groups
        ADD COLUMN testgroup_initial_repetition_count integer DEFAULT NULL,
        ADD COLUMN testgroup_may_need_more_requests boolean DEFAULT FALSE;
    UPDATE analysis_test_groups SET testgroup_initial_repetition_count = (
        SELECT DISTINCT(COUNT(*)) FROM build_requests WHERE request_group = testgroup_id AND request_order >= 0 GROUP BY request_commit_set
    );
    ALTER TABLE analysis_test_groups ALTER COLUMN testgroup_initial_repetition_count DROP DEFAULT, ALTER COLUMN testgroup_may_need_more_requests SET NOT NULL;
END;
'''
'testgroup_initial_repetition_count' represents the number of successful build request for each commit set when
test group is created.
'testgroup_may_need_more_requests' will be set when any build request in test group is set to 'failed'.
* public/api/build-requests.php: Added the logic to set 'testgroup_may_need_more_requests'.
* public/api/test-groups.php: Updated 'ready-for-notification' to 'ready-for-further-processing' so that it returns finished test
groups those either have 'needs_notification' or  'may_need_more_requests' set.
* public/include/commit-sets-helpers.php: Set 'initial_repetition_count' to repetition count.
* public/privileged-api/update-test-group.php: Added APIs to add build request for a test group and
update 'may_need_more_requests' flag.
* public/v3/models/test-group.js:
(TestGroup): Added '_mayNeedMoreRequests' and '_initialRepetitionCount' field.
Refactored code that interacts with '/api/update-test-group'.
(TestGroup.prototype.updateSingleton):
(TestGroup.prototype.mayNeedMoreRequests):
(TestGroup.prototype.initialRepetitionCount):
(TestGroup.prototype.async._updateBuildRequest):
(TestGroup.prototype.updateName):
(TestGroup.prototype.updateHiddenFlag):
(TestGroup.prototype.async.didSendNotification):
(TestGroup.prototype.async.addMoreBuildRequests):
(TestGroup.prototype.async.clearMayNeedMoreBuildRequests): Added API to clear 'may_need_more_requests' flag.
(TestGroup.fetchAllReadyForFurtherProcessing): Refactored 'TestGroup.fetchAllWithNotificationReady' to return test groups either
have 'needs_notification' or  'may_need_more_requests' set.
(TestGroup.fetchAllThatMayNeedMoreRequests): Fetches test groups those may need more build requests.
* server-tests/api-test-groups.js: Added unit tests.
* server-tests/privileged-api-add-build-requests-tests.js: Added unit tests for 'add-build-requests' API.
* server-tests/privileged-api-update-test-group-tests.js: Added unit tests.
* server-tests/resources/mock-data.js:
(MockData.addMockData):
* server-tests/resources/test-server.js:
(TestServer.prototype._determinePgsqlDirectory): Fixed a bug that 'childProcess.execFileSync' may return a buffer.
* tools/run-analysis.js: Added logic to add extra build request before sennding notification.
* tools/js/retry-failed-build-requests.js:
(async.createAdditionalBuildRequestsForTestGroupsWithFailedRequests): Module that add extra build requests.
* unit-tests/retry-failed-build-requests-tests.js: Added.
* unit-tests/test-groups-tests.js: Added unit tests.

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

2 years agoUnify implementation in VideoFullscreenInterfaceAVKit
commit-queue@webkit.org [Thu, 4 Oct 2018 23:52:39 +0000 (23:52 +0000)]
Unify implementation in VideoFullscreenInterfaceAVKit
https://bugs.webkit.org/show_bug.cgi?id=190091
rdar://problem/44734523

Patch by Jeremy Jones <jeremyj@apple.com> on 2018-10-04
Reviewed by Jer Noble.

Source/WebCore:

No new tests because no behavior change.

Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
any changes that had been made in the old path.

* platform/ios/VideoFullscreenInterfaceAVKit.h:
* platform/ios/VideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerViewControllerDelegate playerViewControllerShouldStartPictureInPictureFromInlineWhenEnteringBackground:]):
(VideoFullscreenInterfaceAVKit::preparedToExitFullscreen):
(VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason):
* platform/ios/WebVideoFullscreenControllerAVKit.mm:
(VideoFullscreenControllerContext::requestUpdateInlineRect):
(VideoFullscreenControllerContext::requestVideoContentLayer):
(VideoFullscreenControllerContext::returnVideoContentLayer):
(VideoFullscreenControllerContext::didSetupFullscreen):
(VideoFullscreenControllerContext::didExitFullscreen):

Source/WebKit:

Unified code in VideoFullscreenInterfaceAVKit now that new code path is proven and include
any changes that had been made in the old path.

* UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
* WebProcess/cocoa/VideoFullscreenManager.mm:
(WebKit::VideoFullscreenManager::supportsVideoFullscreenStandby const):
(WebKit::VideoFullscreenManager::didSetupFullscreen):
(WebKit::VideoFullscreenManager::didExitFullscreen):

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

2 years agoMore Carbon build-fixing.
mitz@apple.com [Thu, 4 Oct 2018 23:31:06 +0000 (23:31 +0000)]
More Carbon build-fixing.

* Carbon/CarbonWindowAdapter.mm:
(-[CarbonWindowAdapter _destroyRealWindow:]):
(-[CarbonWindowAdapter _growBoxRect]):

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

2 years agoUnreviewed, add self as contributor.
alancoon@apple.com [Thu, 4 Oct 2018 23:25:53 +0000 (23:25 +0000)]
Unreviewed, add self as contributor.

* Scripts/webkitpy/common/config/contributors.json:

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

2 years agoBindings generator should support static attributes that are interfaces with CallWith
commit-queue@webkit.org [Thu, 4 Oct 2018 23:18:12 +0000 (23:18 +0000)]
Bindings generator should support static attributes that are interfaces with CallWith
https://bugs.webkit.org/show_bug.cgi?id=190292

Patch by Justin Michaud <justin_michaud@apple.com> on 2018-10-04
Reviewed by Chris Dumez.

Add support for static attributes that support callWith to the bindings generator. This
is needed for CSS.paintWorklet.

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateAttributeGetterBodyDefinition):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::jsTestObjConstructorTestStaticReadonlyObjGetter):
(WebCore::jsTestObjConstructorTestStaticReadonlyObj):
* bindings/scripts/test/TestObj.idl:

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

2 years agoUnreviewed test gardening for WinCairo (and one cross-platform test).
ross.kirsling@sony.com [Thu, 4 Oct 2018 22:40:45 +0000 (22:40 +0000)]
Unreviewed test gardening for WinCairo (and one cross-platform test).

* TestExpectations:
Remove a cross-platform failure that seems to be passing on all platforms now.

* platform/wincairo/TestExpectations:
* platform/wincairo/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt: Added.

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

2 years agoUnreviewed, rolling out r236730.
jlewis3@apple.com [Thu, 4 Oct 2018 22:25:04 +0000 (22:25 +0000)]
Unreviewed, rolling out r236730.

Source/WebCore:

This caused a consistent crash in test http/tests/media/media-stream/get-display-media-prompt.html.

Reverted changeset:

"[MediaStream] RealtimeMediaSource should be able to vend
hashed IDs"
https://bugs.webkit.org/show_bug.cgi?id=190142
https://trac.webkit.org/changeset/236730

Source/WebKit:

This caused a consistent crash in test http/tests/media/media-
stream/get-display-media-prompt.html.

Reverted changeset:

"[MediaStream] RealtimeMediaSource should be able to vend
hashed IDs"
https://bugs.webkit.org/show_bug.cgi?id=190142
https://trac.webkit.org/changeset/236730

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

2 years ago[macOS] Fix some font attribute conversion bugs in preparation for "Font > Styles...
wenson_hsieh@apple.com [Thu, 4 Oct 2018 22:08:51 +0000 (22:08 +0000)]
[macOS] Fix some font attribute conversion bugs in preparation for "Font > Styles…" support in WebKit2
https://bugs.webkit.org/show_bug.cgi?id=190289
<rdar://problem/45020806>

Reviewed by Ryosuke Niwa.

Source/WebCore:

Makes some small adjustments to fix two bugs in font attribute conversion logic. See below for more detail.

Tests:  FontManagerTests.AddFontShadowUsingFontOptions
        FontManagerTests.AddAndRemoveColorsUsingFontOptions

* editing/FontAttributeChanges.cpp:
(WebCore::cssValueListForShadow):
* editing/cocoa/FontAttributesCocoa.mm:

Currently, we bail from adding a font shadow if the shadow's offset is empty. However, valid shadow offsets may
have negative dimensions, so a check for `isZero()` should be used instead.

(WebCore::FontAttributes::createDictionary const):
* platform/mac/WebCoreNSFontManagerExtras.mm:

Fall back to a transparent background color; this allows senders to remove the current background color by just
removing NSBackgroundColorAttributeName from the attribute dictionary, rather than explicitly setting it to the
transparent color (this scenario is exercised when using "Font > Styles…" to specify a font style without a
background color).

(WebCore::computedFontAttributeChanges):

Tools:

Add new API tests to exercise two corner cases when using NSFontOptions ("Font > Styles…") to change font
attributes at the current selection.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/TestWebKitAPI/mac/AppKitSPI.h:
* TestWebKitAPI/Tests/mac/FontManagerTests.mm:
(webViewForFontManagerTesting):
(TestWebKitAPI::TEST):
* TestWebKitAPI/mac/TestFontOptions.h: Copied from Source/WebCore/editing/cocoa/FontAttributesCocoa.mm.
* TestWebKitAPI/mac/TestFontOptions.mm: Added.

Introduce TestFontOptions, which wraps the shared NSFontOptions and swizzles `-sharedFontOptions` to return a
global instance of itself. TestFontOptions supports several testing helpers to add or remove font shadows,
foreground colors, and background colors.

(sharedFontOptionsForTesting):
(+[TestFontOptions sharedInstance]):
(-[TestFontOptions initWithFontOptions:]):
(-[TestFontOptions selectedAttributes]):
(-[TestFontOptions fontOptions]):
(-[TestFontOptions shadowWidth]):
(-[TestFontOptions setShadowWidth:]):
(-[TestFontOptions shadowHeight]):
(-[TestFontOptions setShadowHeight:]):
(-[TestFontOptions setShadowBlurRadius:]):
(-[TestFontOptions setHasShadow:]):
(-[TestFontOptions foregroundColor]):
(-[TestFontOptions setForegroundColor:]):
(-[TestFontOptions backgroundColor]):
(-[TestFontOptions setBackgroundColor:]):
(-[TestFontOptions _dispatchFontAttributeChanges]):
(-[TestFontOptions convertAttributes:]):
(-[TestFontOptions setSelectedAttributes:isMultiple:]):
(-[TestFontOptions forwardInvocation:]):

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

2 years agoWeb Inspector: Table should support multiple selection and Cmd-click behavior
mattbaker@apple.com [Thu, 4 Oct 2018 21:54:14 +0000 (21:54 +0000)]
Web Inspector: Table should support multiple selection and Cmd-click behavior
https://bugs.webkit.org/show_bug.cgi?id=189705
<rdar://problem/44571170>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

Add multiple row selection to Table, with new methods for programmatic
selection (deselectRow, deselectAll), and Command-click support for
selecting/deselecting Table rows.

* UserInterface/Base/IndexSet.js: Added.
(WI.IndexSet):
(WI.IndexSet.prototype.get size):
(WI.IndexSet.prototype.get firstIndex):
(WI.IndexSet.prototype.get lastIndex):
(WI.IndexSet.prototype.add):
(WI.IndexSet.prototype.delete):
(WI.IndexSet.prototype.has):
(WI.IndexSet.prototype.clear):
(WI.IndexSet.prototype.indexGreaterThan):
(WI.IndexSet.prototype.indexLessThan):
(WI.IndexSet.prototype.Symbol.iterator):
(WI.IndexSet.prototype._indexClosestTo):
(WI.IndexSet.prototype._validateIndex):
Helper container for managing an ordered sequence of unique positive
integers, with set semantics, backed by a sorted array. Used by Table,
and eventually by TreeOutline.

* UserInterface/Main.html:
* UserInterface/Test.html:
* UserInterface/Test/Test.js:
New files and stubs to make Table layout tests possible.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.reset):
(WI.NetworkTableContentView.prototype.showRepresentedObject):
(WI.NetworkTableContentView.prototype.networkResourceDetailViewClose):
(WI.NetworkTableContentView.prototype.tableSelectionDidChange):
(WI.NetworkTableContentView.prototype._restoreSelectedRow):
(WI.NetworkTableContentView.prototype.tableSelectedRowChanged): Deleted.
Replace uses of `clearSelectedRow` with `deselectAll`, and updated
selection changed delegate.

* UserInterface/Views/Table.css:
(.table > .data-container > .data-list > li):
(.table > .data-container > .data-list > li.selected):
(@media (prefers-dark-interface)):
(.table,): Deleted.
Removed styles that are no longer needed after https://webkit.org/b/189766,
and provide a visual separation between adjacent selected rows.

* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.get selectedRows):
(WI.Table.prototype.get allowsMultipleSelection):
(WI.Table.prototype.set allowsMultipleSelection):
(WI.Table.prototype.reloadData):
(WI.Table.prototype.selectRow):
(WI.Table.prototype.deselectRow):
(WI.Table.prototype.deselectAll):
(WI.Table.prototype._getOrCreateRow):
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._deselectAllAndSelect):
(WI.Table.prototype._isRowSelected):
(WI.Table.prototype._notifySelectionDidChange):
(WI.Table.prototype.clearSelectedRow): Deleted.
Table now tracks selected rows using an IndexSet. selectRow accepts an
optional parameter, `extendSelection`, for adding rows to the selection.
_selectedRowIndex is now used to track the most recently selected row.
This will be the only selected row unless multiple selection is enabled,
in which case it is the row that has the "focus", for purposes of selecting
a new row using the up or down arrow keys.

LayoutTests:

* inspector/table/resources/table-utilities.js: Added.
(TestPage.registerInitializer.InspectorTest.TableDataSource):
(TestPage.registerInitializer.InspectorTest.TableDataSource.prototype.get items):
(TestPage.registerInitializer.InspectorTest.TableDataSource.prototype.tableNumberOfRows):
(TestPage.registerInitializer.InspectorTest.TableDelegate):
(TestPage.registerInitializer.InspectorTest.TableDelegate.prototype.tableSelectionDidChange):
(TestPage.registerInitializer.InspectorTest.TableDelegate.prototype.tablePopulateCell):
(TestPage.registerInitializer.InspectorTest.createTable):
(TestPage.registerInitializer):

* inspector/table/table-selection-expected.txt: Added.
* inspector/table/table-selection.html: Added.
* inspector/unit-tests/index-set-expected.txt: Added.
* inspector/unit-tests/index-set.html: Added.

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

2 years agoWeb Automation: clear pending callbacks when the session terminates
bburg@apple.com [Thu, 4 Oct 2018 21:47:13 +0000 (21:47 +0000)]
Web Automation: clear pending callbacks when the session terminates
https://bugs.webkit.org/show_bug.cgi?id=190259
<rdar://problem/44958352>

Reviewed by Joseph Pecoraro.

WebAutomationSession::terminate() can be called at any time to nuke the session.
However, it's possible that the session is in the midst of simulating keyboard/mouse
events. While in that state, there are some CompletionHandler objects waiting
for key/mouse events to be flushed. We need to empty out callback maps with
CompletionHandler instances so that they do not assert because they were never called.

I was able to test this manually by running a test that erroneously hangs
while waiting for keyboard input. While the test was hung, I killed the NetworkProcess
manually to trigger WebAutomationSession::terminate(). From there, I saw that the
Perform Actions REST API call gets cancelled with the appropriate error code.

* UIProcess/Automation/WebAutomationSession.cpp:
(WebKit::WebAutomationSession::terminate):

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

2 years agoRetried to fix 32-bit macOS builds after r236846.
mitz@apple.com [Thu, 4 Oct 2018 21:14:58 +0000 (21:14 +0000)]
Retried to fix 32-bit macOS builds after r236846.

* WebView/WebHTMLView.mm:
(-[WebHTMLView setMarkedText:selectedRange:]):

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

2 years agoMutationRecord doesn't keep JS wrappers of target, addedNodes, and removedNodes alive
rniwa@webkit.org [Thu, 4 Oct 2018 21:12:04 +0000 (21:12 +0000)]
MutationRecord doesn't keep JS wrappers of target, addedNodes, and removedNodes alive
https://bugs.webkit.org/show_bug.cgi?id=190277

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by JSMutationRecord not visiting any of the nodes referenced by mutation records.

Fixed the bug by adding JSMutationRecord::visitAdditionalChildren, which adds the root nodes of
the root nodes of the target, addedNodes, and removedNodes in each mutation record.

Test: fast/dom/MutationObserver/mutation-record-keeps-js-wrappers-of-nodes-alive.html

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/JSMutationRecordCustom.cpp: Added.
(WebCore::JSMutationRecord::visitAdditionalChildren): Added.
* bindings/js/JSPerformanceObserverCustom.cpp: This file got dumped out of a unified build file
where using namespace JSC was defined. Use the fully qualified names to refer to JSC types.
(WebCore::JSPerformanceObserverOwner::isReachableFromOpaqueRoots):
* dom/MutationRecord.cpp:
(WebCore::ChildListRecord::visitNodesConcurrently): Added.
(WebCore::RecordWithEmptyNodeLists::visitNodesConcurrently): Added.
(WebCore::MutationRecordWithNullOldValue::visitNodesConcurrently): Added.
* dom/MutationRecord.h:
* dom/MutationRecord.idl:

LayoutTests:

Added two regression tests for making sure mutation observers and mutation records keep JS wrappers
of the enqueued nodes alive. Also see r236799 for a previous failed attempt to add a similar test.

* fast/dom/MutationObserver/mutation-observer-keeps-js-wrappers-of-nodes-alive-expected.txt: Added.
* fast/dom/MutationObserver/mutation-observer-keeps-js-wrappers-of-nodes-alive.html: Added.
* fast/dom/MutationObserver/mutation-record-keeps-js-wrappers-of-nodes-alive-expected.txt: Added.
* fast/dom/MutationObserver/mutation-record-keeps-js-wrappers-of-nodes-alive.html: Added.

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

2 years agoRetried to fix 32-bit macOS builds after r236846.
mitz@apple.com [Thu, 4 Oct 2018 21:02:34 +0000 (21:02 +0000)]
Retried to fix 32-bit macOS builds after r236846.

* Carbon/HIWebView.mm:
(ActiveStateChanged):

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

2 years agoWeb Inspector: REGRESSION(r236540): Uncaught Exception: TypeError: pauseReasonBreakpo...
drousso@apple.com [Thu, 4 Oct 2018 20:58:14 +0000 (20:58 +0000)]
Web Inspector: REGRESSION(r236540): Uncaught Exception: TypeError: pauseReasonBreakpointTreeElement.removeStatusImage is not a function.
https://bugs.webkit.org/show_bug.cgi?id=190230

Reviewed by Matt Baker.

* UserInterface/Views/DebuggerSidebarPanel.js:
(WI.DebuggerSidebarPanel._removeBreakpoint):
Leverage existing `status` getter/setter for creating/removing the breakpoint icon element.

* UserInterface/Views/BreakpointTreeElement.js:
(WI.BreakpointTreeElement):
(WI.BreakpointTreeElement.prototype.populateContextMenu):
(WI.BreakpointTreeElement.prototype._updateStatus):
(WI.BreakpointTreeElement.prototype.removeStatusImage): Deleted.

* UserInterface/Views/DOMBreakpointTreeElement.js:
(WI.DOMBreakpointTreeElement):
(WI.DOMBreakpointTreeElement.prototype.onattach):
(WI.DOMBreakpointTreeElement.prototype.ondetach):
(WI.DOMBreakpointTreeElement.prototype._updateStatus):

* UserInterface/Views/EventBreakpointTreeElement.js:
(WI.EventBreakpointTreeElement):
(WI.EventBreakpointTreeElement.prototype.onattach):
(WI.EventBreakpointTreeElement.prototype.ondetach):
(WI.EventBreakpointTreeElement.prototype._updateStatus):

* UserInterface/Views/XHRBreakpointTreeElement.js:
(WI.XHRBreakpointTreeElement):
(WI.XHRBreakpointTreeElement.prototype.onattach):
(WI.XHRBreakpointTreeElement.prototype.ondetach):
(WI.XHRBreakpointTreeElement.prototype._updateStatus):

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

2 years agoTried to fix 32-bit macOS builds after r236846.
mitz@apple.com [Thu, 4 Oct 2018 20:47:32 +0000 (20:47 +0000)]
Tried to fix 32-bit macOS builds after r236846.

* Carbon/HIWebView.mm:
(_NSSelectorForHICommand):

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

2 years agoWebInspectorUI and WebKitLegacy parts of [Xcode] Update some build settings as recomm...
mitz@apple.com [Thu, 4 Oct 2018 20:36:56 +0000 (20:36 +0000)]
WebInspectorUI and WebKitLegacy parts of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250

Reviewed by Andy Estes.

Source/WebCore/PAL:

* pal/spi/mac/NSWindowSPI.h: Added a private API declaration.

Source/WebInspectorUI:

* Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_INFINITE_RECURSION,
  CLANG_WARN_SUSPICIOUS_MOVE, CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, and
  CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF.

* WebInspectorUI.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

Source/WebKitLegacy:

* WebKitLegacy.xcodeproj/project.pbxproj: Let Xcode update LastUpgradeCheck.

Source/WebKitLegacy/mac:
WebKitLegacy part of [Xcode] Update some build settings as recommended by Xcode 10
https://bugs.webkit.org/show_bug.cgi?id=190250

Reviewed by Andy Estes.

* Configurations/Base.xcconfig: Enabled CLANG_WARN_COMMA, CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF,
  CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS, and CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED.
  Also enabled GCC_WARN_UNDECLARED_SELECTOR by deleting the line that set it to NO, which let
  an earlier line set it to YES.

Enabling -Wundeclared-selector exposed some long-standing mistakes and required the most
changes below.

* DefaultDelegates/WebDefaultContextMenuDelegate.mm: Imported an internal header that
  provides some missing method declarations.

* Misc/WebDownload.mm:
(-[WebDownload initWithRequest:delegate:]): Suppressed warning about this implementation of
  a deprecated method.

* Misc/WebIconDatabase.mm: Suppressed warning around our implementation of a deprecated class.

* Misc/WebNSObjectExtras.mm: Declare a category that is implemented in this file, because
  other code in the file uses a method from it.

* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView renewGState]): Suppressed warning about this implementation of
  a deprecated method.

* Plugins/WebPluginController.mm:
(installFlip4MacPlugInWorkaroundIfNecessary): Suppressed the undeclared selector warning
  around use of a selector that may be present in some WebKit client.

* Plugins/WebPluginDatabase.mm: Imported an internal header that provides some missing
  method declarations.

* WebCoreSupport/PopupMenuMac.mm: Imported a header that delcares delegate methods we call
  from here.

* WebCoreSupport/WebCachedFramePlatformData.h: Imported an internal header that provides some
  missing method declarations.

* WebCoreSupport/WebChromeClient.mm: Imported a header that declares delegate methods we call
  from here.

* WebCoreSupport/WebFrameLoaderClient.mm: Imported headers that declare delegate methods we
  call from here.
(WebFrameLoaderClient::setTitle): Suppressed the undeclared selector warning around use of
  an obsolete delegate method for binary compatibility.
(pluginView): Ditto.

* WebCoreSupport/WebVisitedLinkStore.mm: Imported a header that declares delegate methods we
  call from here.

* WebView/WebDeviceOrientationInternal.h: Declared -setController in a new
  WebDeviceOrientationProviderMock protocol.

* WebView/WebDeviceOrientationProviderMock.mm:
(-[WebDeviceOrientationProviderMock setController:]): Moved from an internal category to the
  main @implementation.

* WebView/WebDeviceOrientationProviderMockInternal.h: Declared that
  WebDeviceOrientationProviderMock conforms to WebDeviceOrientationProviderMock.

* WebView/WebDynamicScrollBarsView.mm:
(-[WebDynamicScrollBarsView accessibilityIsIgnored]): Suppressed warning about this implementation
  of a deprecated method.

* WebView/WebHTMLView.mm:
(-[WebHTMLView validateUserInterfaceItemWithoutDelegate:]): Suppressed the undeclared
  selector warning around action methods that are not declared anywhere in WebKit.

(-[WebHTMLView dragImage:at:offset:event:pasteboard:source:slideBack:]): Suppressed warning
  about implementing this deprecated method.
(-[WebHTMLView draggingSourceOperationMaskForLocal:]): Ditto.
(-[WebHTMLView draggedImage:endedAt:operation:]): Ditto.
(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]): Ditto.
(-[WebHTMLView accessibilityAttributeValue:]): Ditto.
(-[WebHTMLView characterIndexForPoint:]): Ditto.
(-[WebHTMLView firstRectForCharacterRange:]): Ditto.
(-[WebHTMLView attributedSubstringFromRange:]): Ditto.
(-[WebHTMLView setMarkedText:selectedRange:]): Ditto.
(-[WebHTMLView doCommandBySelector:]): Ditto.
(-[WebHTMLView insertText:]): Ditto.

* WebView/WebHTMLViewInternal.h: Declared an internal method that’s used from another file.

* WebView/WebJSPDFDoc.mm: Imported a header that declares delegate methods we call from here.

* WebView/WebPDFView.h: Removed previewView ivar.

* WebView/WebPDFView.mm:
  Removed declaration of FileInternal category and merged its implementation with the main
  implementation.
(-[WebPDFView dealloc]): Removed previewView ivar.
(-[WebPDFView initWithFrame:]): Removed code to deal with PDFPreviewView, which doesn’t
  exist in macOS versions we support.
(+[WebPDFView _PDFPreviewViewClass]): Deleted. PDFPreviewView doesn’t exist anymore.
(-[WebPDFView _canLookUpInDictionary]): Suppressed undeclared selector warning around use of
  action methods internal to PDFKit.
(-[WebPDFView _lookUpInDictionaryFromMenu:]): Ditto.
(-[WebPDFView _menuItemsFromPDFKitForEvent:]): Ditto.

* WebView/WebUIDelegatePrivate.h: Restored declarations of the delegate methods we actually
  call on macOS, even though in r86988 we started calling different methods on iOS.

* WebView/WebView.mm:
- Imported headers that declare delegate methods that we call.
- Removed declaration of WebFileInternal category and merged its implementation with the
  main implementation.
- Many internal methods were inexplicibly implemented as part of the WebViewEditingInMail
  category, which made them impossible to call from the main implementation. Moved those
  into the main implementation. One of those had to be declared in a class extension,
  because it is called from a method implemented in the WebPrivate category, and that
  category’s implementation appears first in the file.

(-[WebView _cacheHistoryDelegateImplementations]): Suppressed undeclared selector warning
  around use of obsolete delegate method for binary compatibility.

* WebView/WebViewInternal.h: Declared an internal method that’s used from another file.

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