WebKit-https.git
2 years agoUnreviewed, fix the Windows build after r223031
wenson_hsieh@apple.com [Mon, 9 Oct 2017 17:27:15 +0000 (17:27 +0000)]
Unreviewed, fix the Windows build after r223031

Speculative build fix; no change in behavior.

* page/EventHandler.h:
(WebCore::EventHandler::DragTargetResponse::DragTargetResponse):

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

2 years agoReduce includes in Document.h
achristensen@apple.com [Mon, 9 Oct 2017 17:24:44 +0000 (17:24 +0000)]
Reduce includes in Document.h
https://bugs.webkit.org/show_bug.cgi?id=178035

Reviewed by Darin Adler.

* dom/Document.h:

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

2 years agoAX: [ATK] Explicitly-set aria-sort value of "none" should be exposed as an object...
jdiggs@igalia.com [Mon, 9 Oct 2017 17:12:34 +0000 (17:12 +0000)]
AX: [ATK] Explicitly-set aria-sort value of "none" should be exposed as an object attribute
https://bugs.webkit.org/show_bug.cgi?id=177955

Reviewed by Chris Fleizach.

Source/WebCore:

Expose "none" as the value of aria-sort when the attribute is present and not
one of the other valid sort types. Also add a new AccessibilitySortDirection,
SortDirectionInvalid. This is currently only being used when the sort direction
is sought for a role which does not support this ARIA attribute, but might come
in handy if we want to add further sanity checks on the author-provided values.

Test: accessibility/gtk/aria-sort-values.html

* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::sortDirection const):
* accessibility/AccessibilityObject.h:
* accessibility/atk/WebKitAccessibleWrapperAtk.cpp:
(webkitAccessibleGetAttributes):
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):

LayoutTests:

* accessibility/gtk/aria-sort-values-expected.txt: Added.
* accessibility/gtk/aria-sort-values.html: Added.

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

2 years agoSource/JavaScriptCore:
rmorisset@apple.com [Mon, 9 Oct 2017 16:49:13 +0000 (16:49 +0000)]
Source/JavaScriptCore:
Make the names of the options consistent
https://bugs.webkit.org/show_bug.cgi?id=177933

Reviewed by Saam Barati.

I added an alias so the old spelling still works.
I also fixed a bunch of typos in comments all around the codebase.

* b3/B3LowerToAir.cpp:
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGIntegerRangeOptimizationPhase.cpp:
* dfg/DFGOperations.h:
* dfg/DFGSSAConversionPhase.h:
* dfg/DFGSpeculativeJIT.h:
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::lower):
* ftl/FTLOSREntry.cpp:
(JSC::FTL::prepareOSREntry):
* jit/CallFrameShuffler.cpp:
(JSC::CallFrameShuffler::prepareForTailCall):
* parser/Nodes.h:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseExportDeclaration):
* runtime/Options.h:

Source/WebCore:
Make the names of the options consistent
https://bugs.webkit.org/show_bug.cgi?id=177933

Reviewed by Saam Barati.

No functional change, just fixing comments.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::buffered const):
(WebCore::MediaSource::monitorSourceBuffers):
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::process):
* bindings/scripts/generate-bindings.pl:
* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
* editing/BreakBlockquoteCommand.cpp:
(WebCore::BreakBlockquoteCommand::doApply):
* editing/ReplaceSelectionCommand.cpp:
(WebCore::ReplaceSelectionCommand::doApply):
* editing/VisibleSelection.cpp:
(WebCore::VisibleSelection::setStartAndEndFromBaseAndExtentRespectingGranularity):
* editing/VisibleUnits.cpp:
(WebCore::closestWordBoundaryForPosition):
* html/parser/AtomicHTMLToken.h:
* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::end):
* inspector/InspectorOverlayPage.js:
(reset):
* page/ViewportConfiguration.cpp:
(WebCore::ViewportConfiguration::layoutWidth const):
(WebCore::ViewportConfiguration::layoutHeight const):
* platform/graphics/FloatPolygon.h:
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processCueAttributes):
* platform/graphics/filters/FilterOperation.h:
* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::texImage2D):
* platform/mac/WidgetMac.mm:
(WebCore::safeRemoveFromSuperview):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::collapseMarginsWithChildInfo):
* rendering/RenderBlockFlow.h:
* rendering/RenderBox.cpp:
(WebCore::RenderBox::computePositionedLogicalWidthReplaced const):
* rendering/RenderObject.cpp:
(WebCore::RenderObject::propagateRepaintToParentWithOutlineAutoIfNeeded const):
* rendering/RenderTheme.cpp:
(WebCore::RenderTheme::disabledTextColor const):
* style/ClassChangeInvalidation.cpp:
(WebCore::Style::computeClassChange):
* style/StyleScope.cpp:
(WebCore::Style::Scope::didChangeStyleSheetEnvironment):
* svg/SVGAltGlyphDefElement.cpp:
(WebCore::SVGAltGlyphDefElement::hasValidGlyphElements const):

Source/WebKit:
Make the names of the options consistent
https://bugs.webkit.org/show_bug.cgi?id=177933

Reviewed by Saam Barati.

* NetworkProcess/capture/json.hpp:
* Platform/IPC/Connection.cpp:
(IPC::Connection::connectionDidClose):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _keyboardWillHide:]):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::runModal):
* UIProcess/mac/WebInspectorProxyMac.mm:
(WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::selectWithGesture):

Source/WebKitLegacy/mac:
Make the names of the options consistent
https://bugs.webkit.org/show_bug.cgi?id=177933

Reviewed by Saam Barati.

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

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

2 years agoMark media/media-source/media-source-paint-to-canvas.html as failing.
ryanhaddad@apple.com [Mon, 9 Oct 2017 16:37:11 +0000 (16:37 +0000)]
Mark media/media-source/media-source-paint-to-canvas.html as failing.
https://bugs.webkit.org/show_bug.cgi?id=178083

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years ago[WPE][GTK] Propagate libepoxy compiler flags obtained from pkg-config
aperez@igalia.com [Mon, 9 Oct 2017 16:04:40 +0000 (16:04 +0000)]
[WPE][GTK] Propagate libepoxy compiler flags obtained from pkg-config
https://bugs.webkit.org/show_bug.cgi?id=178081

Reviewed by Carlos Alberto Lopez Perez.

.:

* Source/cmake/FindLibEpoxy.cmake: Define the ${LIBEPOXY_DEFINITIONS} variable when libepoxy
is found by pkg-config. This contains the value of the "Cflags" field from "epoxy.pc".

Source/WebCore:

No new tests needed.

* CMakeLists.txt: Use ${LIBEPOXY_DEFINITIONS} for building WebCore.

Source/WebKit:

* CMakeLists.txt: Use ${LIBEPOXY_DEFINITIONS} for building WebKit.

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

2 years ago[Readable Streams API] Implement canCloseOrEnqueue
romain.bellessort@crf.canon.fr [Mon, 9 Oct 2017 12:53:11 +0000 (12:53 +0000)]
[Readable Streams API] Implement canCloseOrEnqueue
https://bugs.webkit.org/show_bug.cgi?id=178005

Reviewed by Youenn Fablet.

Implemented readableStreamDefaultControllerCanCloseOrEnqueue [1]. This is
just a refactoring (based on spec) aiming at factorizing a set of tests
that are done at multiple places.

[1] https://streams.spec.whatwg.org/#readable-stream-default-controller-can-close-or-enqueue

No new tests (refactoring, no new behavior).

* Modules/streams/ReadableStreamDefaultController.js:
(enqueue): Updated.
(close): Updated.
* Modules/streams/ReadableStreamInternals.js:
(readableStreamDefaultControllerClose): Updated.
(readableStreamDefaultControllerCanCloseOrEnqueue): Added.

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

2 years agoSafari 10 /11 problem with if (!await get(something)).
gskachkov@gmail.com [Mon, 9 Oct 2017 09:59:26 +0000 (09:59 +0000)]
Safari 10 /11 problem with if (!await get(something)).
https://bugs.webkit.org/show_bug.cgi?id=176685

Reviewed by Saam Barati.

JSTests:

* stress/async-await-basic.js:
(awaitEpression.async):
* stress/async-await-syntax.js:
(testTopLevelAsyncAwaitSyntaxSloppyMode.testSyntax):
(prototype.testTopLevelAsyncAwaitSyntaxStrictMode):

Source/JavaScriptCore:

Using unary operator before `await` lead to count it as identifier.
According to spec https://tc39.github.io/ecma262/#sec-async-function-definitions
and Note 1 `await` is as AwaitExpression and it is allowed to use unary operator

* parser/Parser.cpp:
(JSC::Parser<LexerType>::parsePrimaryExpression):

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

2 years agoRemove WOFF2 from Source/ThirdParty.
fred.wang@free.fr [Mon, 9 Oct 2017 09:08:49 +0000 (09:08 +0000)]
Remove WOFF2 from Source/ThirdParty.
https://bugs.webkit.org/show_bug.cgi?id=177862

Patch by Frederic Wang <fwang@igalia.com> on 2017-10-05
Reviewed by Michael Catanzaro.

.:

* Source/CMakeLists.txt: Do not build the woff2 source.
* Source/cmake/FindWOFF2Dec.cmake: Added. New cmake module for woff2.
* Source/cmake/OptionsGTK.cmake: Load the woff2 package.

Source/ThirdParty:

* woff2/CMakeLists.txt: Removed.
* woff2/LICENSE: Removed.
* woff2/README.webkit: Removed.
* woff2/include/woff2/decode.h: Removed.
* woff2/include/woff2/encode.h: Removed.
* woff2/include/woff2/output.h: Removed.
* woff2/src/buffer.h: Removed.
* woff2/src/convert_woff2ttf_*.cc: Removed.
* woff2/src/file.h: Removed.
* woff2/src/font.cc: Removed.
* woff2/src/font.h: Removed.
* woff2/src/glyph.cc: Removed.
* woff2/src/glyph.h: Removed.
* woff2/src/normalize.cc: Removed.
* woff2/src/normalize.h: Removed.
* woff2/src/port.h: Removed.
* woff2/src/round.h: Removed.
* woff2/src/store_bytes.h: Removed.
* woff2/src/table_tags.cc: Removed.
* woff2/src/table_tags.h: Removed.
* woff2/src/transform.cc: Removed.
* woff2/src/transform.h: Removed.
* woff2/src/variable_length.cc: Removed.
* woff2/src/variable_length.h: Removed.
* woff2/src/woff2_common.cc: Removed.
* woff2/src/woff2_common.h: Removed.
* woff2/src/woff2_compress.cc: Removed.
* woff2/src/woff2_dec.cc: Removed.
* woff2/src/woff2_decompress.cc: Removed.
* woff2/src/woff2_enc.cc: Removed.
* woff2/src/woff2_info.cc: Removed.
* woff2/src/woff2_out.cc: Removed.
* woff2/update.sh: Removed.

Source/WebCore:

No new tests, already covered by existing tests.

* CMakeLists.txt: Use the system brotli/woff2 headers/libraries.

Tools:

* Scripts/webkitpy/style/checker.py: Remove woff2.
* gtk/jhbuild.modules: Add new jhbuild module for woff2.

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

2 years agoIt should be possible to create a ListHashSet with a std::initializer_list.
commit-queue@webkit.org [Mon, 9 Oct 2017 04:08:33 +0000 (04:08 +0000)]
It should be possible to create a ListHashSet with a std::initializer_list.
https://bugs.webkit.org/show_bug.cgi?id=178070

Patch by Sam Weinig <sam@webkit.org> on 2017-10-08
Reviewed by Darin Adler.

Source/WTF:

* wtf/ListHashSet.h:
(WTF::U>::ListHashSet):
Add a constructor that takes a std::initializer_list.

Tools:

* TestWebKitAPI/Tests/WTF/ListHashSet.cpp:
(TestWebKitAPI::TEST):
Add a test for using std::initializer_list with ListHashSet.

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

2 years agoAddress additional feedback from Darin for r223039 and sort the using declarations.
weinig@apple.com [Mon, 9 Oct 2017 03:43:17 +0000 (03:43 +0000)]
Address additional feedback from Darin for r223039 and sort the using declarations.

* wtf/Vector.h:

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

2 years agoThere should be a version of copyToVector that returns a Vector, rather than using...
commit-queue@webkit.org [Mon, 9 Oct 2017 03:08:13 +0000 (03:08 +0000)]
There should be a version of copyToVector that returns a Vector, rather than using an out parameter
https://bugs.webkit.org/show_bug.cgi?id=177732

Patch by Sam Weinig <sam@webkit.org> on 2017-10-08
Reviewed by Saam Barati.

Source/WTF:

Add two new helper functions, copyToVector and copyToVectorOf, which will be able to
replace the existing out parameter taking copyToVector. Like it's ancestral namesake,
copyToVector takes an object that is both iterable (supports begin() and end()) and
has a size, and returns a Vector with a copy of all the items iterated. The copyToVectorOf
variant allow the user to specify a type to convert to, so if you have a HashSet<int>
but want those as floats in a Vector, you can do:

    auto floatVector = copyToVectorOf<float>(intSet);

* wtf/Vector.h:
(WTF::copyToVector):
(WTF::copyToVectorOf):

Tools:

* TestWebKitAPI/Tests/WTF/Vector.cpp:
(TestWebKitAPI::TEST):
Add tests for the new copyToVector and copyToVectorOf functions.

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

2 years agoWeb Inspector: add autocompletion for min/max within a CSS calc
webkit@devinrousso.com [Mon, 9 Oct 2017 01:10:43 +0000 (01:10 +0000)]
Web Inspector: add autocompletion for min/max within a CSS calc
https://bugs.webkit.org/show_bug.cgi?id=178068

Reviewed by Joseph Pecoraro.

* UserInterface/Models/CSSKeywordCompletions.js:
(WI.CSSKeywordCompletions.forFunction):

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

2 years agoUnreviewed. Make some type profiler tests run for less time to avoid debug timeouts.
sbarati@apple.com [Mon, 9 Oct 2017 00:44:40 +0000 (00:44 +0000)]
Unreviewed. Make some type profiler tests run for less time to avoid debug timeouts.

* typeProfiler/deltablue-for-of.js:
* typeProfiler/getter-richards.js:

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

2 years agoUpdate HTMLOListElement.start to behavior from latest HTML specification
darin@apple.com [Mon, 9 Oct 2017 00:11:50 +0000 (00:11 +0000)]
Update HTMLOListElement.start to behavior from latest HTML specification
https://bugs.webkit.org/show_bug.cgi?id=178057

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/html/semantics/grouping-content/the-ol-element/grouping-ol-expected.txt:
* web-platform-tests/html/semantics/grouping-content/the-ol-element/ol.start-reflection-2-expected.txt:
Updated to expect more tests to pass.

Source/WebCore:

* html/HTMLOListElement.cpp:
(optionalValue): Added. Helper function that we can put into Expected.h later
if we like; makes it easier to turn Expected into std::optional.
(WebCore::HTMLOListElement::HTMLOListElement): Moved data member initialization
into class definition so it doesn't have to be done here.
(WebCore::HTMLOListElement::parseAttribute): Simplified using the new
optionalValue function. Moved the call to update values in here since it's
a trivial one-liner (albeit done twice).
(WebCore::HTMLOListElement::updateItemValues): Deleted. Moved this into the
parseAttribute function.
(WebCore::HTMLOListElement::itemCount): Updated to use std::optional instead
of a separate m_shouldRecalculateItemCount flag. Also inlined the
recalculateItemCount function since it's a trivial one-liner.
(WebCore::HTMLOListElement::itemCountAfterLayout): Deleted. The only use of
this was to implement the now-obsolete behavior of the start attribute.
(WebCore::HTMLOListElement::recalculateItemCount): Deleted. Moved this into
the itemCount function.

* html/HTMLOListElement.h: Changed startForBindings to return 1 when start
is not specified; this what the HTML specification now calls for. Updated
for the changes above. Merged m_itemCount and m_shouldRecalculateItemCount
into a single optional m_itemCount, and made it mutable so it can be
computed as a side effect of calling the const member function start.

LayoutTests:

* fast/lists/ol-reversed-simple-expected.txt:
* fast/lists/ol-reversed-simple.html:
* fast/lists/ol-reversed-simple.xhtml:
Updated test and results to expect the new behavior.

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

2 years agoFix bugs related to setting reflected floating point DOM attributes
darin@apple.com [Sun, 8 Oct 2017 22:17:46 +0000 (22:17 +0000)]
Fix bugs related to setting reflected floating point DOM attributes
https://bugs.webkit.org/show_bug.cgi?id=178061

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/html/dom/reflection-forms-expected.txt:
Updated to expect meter reflection tests to pass.

Source/WebCore:

* html/HTMLProgressElement.cpp:
(WebCore::HTMLProgressElement::setValue): Changed the semantics to match what
the HTML specification calls for. When a caller passes a negative number or
zero, the value does get set on the element. Negative numbers are not allowed
when you get the current value, but are allowed to be set.
(WebCore::HTMLProgressElement::setMax): Changed the semantics to match what
the HTML specification calls for. When a caller passes a negative number or
zero, this should leave the attribute unchanged.

* html/shadow/MediaControlElementTypes.cpp:
(WebCore::MediaControlVolumeSliderElement::setVolume): Use
String::numberToStringECMAScript instead of String::number since that is what
we want any time we are setting an attribute value from a floating point value.
* html/shadow/MediaControlElements.cpp:
(WebCore::MediaControlTimelineElement::setPosition): Ditto.
(WebCore::MediaControlTimelineElement::setDuration): Removed unneeded check
of std::isfinite since the single caller already checks that.

Source/WTF:

* wtf/dtoa.cpp:
(WTF::formatStringTruncatingTrailingZerosIfNeeded): Fix a bug where
this function would remove trailing zeroes from the exponent if
present instead of from the mantissa. This meant that it would
format 1e10 as "1.00000e+1" instead of "1e+10". Added regression
tests for this to TestWebKitAPI.

* wtf/dtoa/utils.h:
(WTF::double_conversion::StringBuilder::RemoveCharacters): Added.
Used by the fix above.

* wtf/text/AtomicString.cpp:
(WTF::AtomicString::number): Note: This function is used by code
that sets the values of reflected floating point DOM attributes.
Changed the function to use the rules from numberToString rather
ones from numberToFixedPrecisionString. This is analogous to
String::numberToStringECMAScript, and in the future we should change
String and StringBuilder so this "ECMAScript" semantic is the default
way to convert a floating point number to a string, and rename the fixed
precision version that is currently called String::number. I audited
the small number of sites calling AtomicString::number, by temporarily
renaming it, and discovered that this is the correct behavior for all;
none needed fixed precision. Also, fixed a mistake where this explicitly
converted to String. That was defeating the purpose of having these
functions in AtomicString: It would allocate a new String and then
destroy it in the case where an equal string was already in the
AtomicString table.

Tools:

* TestWebKitAPI/Tests/WTF/AtomicString.cpp: Added a test of the
AtomicString::number function, based on the test cases we already
had for String::numberToStringECMAScript, and with some additional
cases with powers of 10 that check handling of trailng zeroes.

* TestWebKitAPI/Tests/WTF/WTFString.cpp: Added test cases to the
existing tests of the String::numberToStringECMAScript function
as above. Also added tests for String::number and for
String::numberToStringFixedWidth. Also changed the tests to all use
EXPECT instead of ASSERT macros since these are all non-fatal.

* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::dumpFrameScrollPosition): Use StringBuilder::appendECMAScriptNumber
instead of String::number.

LayoutTests:

* fast/dom/HTMLProgressElement/set-progress-properties-expected.txt: Updated test to expect
setting HTMLProgressElement.max to 0 to have no effect, rather than setting max to "1".
* fast/dom/HTMLProgressElement/set-progress-properties.html: Ditto.

* platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
Updated to expect meter reflection tests to pass.

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

2 years agoDataTransfer.items does not contain items for custom types supplied via add or setData
wenson_hsieh@apple.com [Sun, 8 Oct 2017 21:58:28 +0000 (21:58 +0000)]
DataTransfer.items does not contain items for custom types supplied via add or setData
https://bugs.webkit.org/show_bug.cgi?id=178016

Reviewed by Darin Adler.

Source/WebCore:

Minor tweaks to expose pasteboard types and data through DataTransfer's item list. This patch fixes two primary
issues: (1) custom pasteboard data is not exposed through the item list in any way, and (2) the "Files"
compatibility type is exposed as a separate data transfer item of kind 'string' when dropping or pasting files.

Tests: editing/pasteboard/data-transfer-items-add-custom-data.html
       editing/pasteboard/data-transfer-items-drop-file.html

* dom/DataTransfer.cpp:
(WebCore::normalizeType):

Use stripLeadingAndTrailingHTMLSpaces instead of stripWhitespace.

(WebCore::shouldReadOrWriteTypeAsCustomData):
(WebCore::DataTransfer::getDataForItem const):
(WebCore::DataTransfer::getData const):

Add getDataForItem, a version of getData that does not normalize types before reading from the pasteboard. This
normalization step is only needed for backwards compatibility with legacy types (such as "text" and "url")
written to and read from using getData and setData; when using DataTransferItemList.add to set data, adding data
for these types should instead write as custom pasteboard data.

(WebCore::DataTransfer::setDataFromItemList):
(WebCore::DataTransfer::types const):
(WebCore::DataTransfer::typesForItemList const):

Add typesForItemList, which fetches the list of types to expose as items on the DataTransfer. Importantly, this
does not include the "Files" type added for compatibility when accessing DataTransfer.types, instead returning
an empty array. The actual files are added separately, by iterating over DataTransfer's files in ensureItems.

Note that when starting a drag or copying, we will still expose the full list of file and string types to
bindings and not just file-backed items. Since all of this information is supplied by the page in the first
place, we don't have to worry about exposing information, such as file paths, that may exist on the pasteboard.

* dom/DataTransfer.h:
* dom/DataTransferItem.cpp:
(WebCore::DataTransferItem::getAsString const):
* dom/DataTransferItemList.cpp:
(WebCore::shouldExposeTypeInItemList):
(WebCore::DataTransferItemList::add):
(WebCore::DataTransferItemList::ensureItems const):
(WebCore::isSupportedType): Deleted.

LayoutTests:

Adds new layout tests to check DataTransfer.items when dropping a file, and when copying and pasting with custom
pasteboard data types. Tweaks an existing test to adjust for normalizeType stripping HTML whitespace rather than
ASCII whitespace.

* TestExpectations:
* editing/pasteboard/data-transfer-get-data-non-normalized-types-expected.txt:
* editing/pasteboard/data-transfer-get-data-non-normalized-types.html:
* editing/pasteboard/data-transfer-items-add-custom-data-expected.txt: Added.
* editing/pasteboard/data-transfer-items-add-custom-data.html: Added.
* editing/pasteboard/data-transfer-items-drop-file-expected.txt: Added.
* editing/pasteboard/data-transfer-items-drop-file.html: Added.
* platform/ios-simulator-wk1/TestExpectations:
* platform/mac-wk1/TestExpectations:

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

2 years agoMake sort-Xcode-project file handle UnifiedSources
dino@apple.com [Sun, 8 Oct 2017 20:30:32 +0000 (20:30 +0000)]
Make sort-Xcode-project file handle UnifiedSources
https://bugs.webkit.org/show_bug.cgi?id=178042

Reviewed by Sam Weinig.

Sort the UnifiedSource(\d+) files by number rather
than alphabetically.

* Scripts/sort-Xcode-project-file:
(sortChildrenByFileName):
(sortFilesByFileName):

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

2 years agoCustomElementRegistry.define was throwing a JavaScript syntax error instead of a...
darin@apple.com [Sun, 8 Oct 2017 17:18:29 +0000 (17:18 +0000)]
CustomElementRegistry.define was throwing a JavaScript syntax error instead of a DOM syntax error
https://bugs.webkit.org/show_bug.cgi?id=178055

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

* web-platform-tests/custom-elements/custom-element-registry/define-expected.txt:
Updated to expect more tests to pass.

Source/WebCore:

Both the JavaScript language and the DOM have "syntax error" exceptions, but
they are not the same thing.

Also, since the time a while back where we moved JavaScript error handling to
use WebCore::Exception and WebCore::ExceptionOr, there are a number of functions
that are no longer used and can be deleted.

* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::validateCustomElementNameAndThrowIfNeeded): Call throwDOMSyntaxError
instead of throwSyntaxError.

* bindings/js/JSDOMExceptionHandling.cpp:
(WebCore::reportDeprecatedGetterError): Deleted. Unused.
(WebCore::reportDeprecatedSetterError): Deleted. Unused.
(WebCore::throwNotSupportedError): Deleted the overload without an error message,
since it's unused. Changed the other overload to take an ASCIILiteral, since
that is what all the callers need.
(WebCore::throwInvalidStateError): Take ASCIILiteral as above.
(WebCore::throwArrayElementTypeError): Deleted. Unused.
(WebCore::throwDOMSyntaxError): Added an ASCIILiteral message argument. This
function was unused; it's now being used above, always with a literal message.
(WebCore::throwIndexSizeError): Deleted. Unused.
(WebCore::throwTypeMismatchError): Deleted. Unused.
* bindings/js/JSDOMExceptionHandling.h: Updated for the changes above.

* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement): Fixed a typo in the error message.

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

2 years agodragenter and dragleave shouldn't use the same data transfer object
rniwa@webkit.org [Sun, 8 Oct 2017 10:08:52 +0000 (10:08 +0000)]
dragenter and dragleave shouldn't use the same data transfer object
https://bugs.webkit.org/show_bug.cgi?id=178056

Reviewed by Darin Adler.

Source/WebCore:

This patch fixes the bug that we were using a single DataTransfer to fire dragleave and dragenter events
when the drag target moves from one element to another.

It alos refactors DragController and EventHandler code so that the construction of DataTransfer object
happens in EventHandler instead of DragController, and extracts createForUpdatingDropTarget out of
createForDrop to have a better encapsulation over the data store mode.

drag related functions in EventHandler now takes std::unique_ptr<Pasteboard>&&, drag operation mask set
by the drag source, and a boolean indicating whether this drag & drop is for files or not. updateDragAndDrop
takes a closure which makes a pasteboard because it has to create two instances of DataTransfer one for
dragleave event and another one for dragenter event in some cases.

Test: editing/pasteboard/data-transfer-is-unique-for-dragenter-and-dragleave.html

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createForDrop): Now takes Pasteboard instead of DragData.
(WebCore::DataTransfer::createForUpdatingDropTarget): Extracted out of createForDrop. Moved the code to
use Readonly mode in dashboad here from createDataTransferToUpdateDrag in DragController.cpp.
* dom/DataTransfer.h:
* page/DragController.cpp:
(WebCore::createDataTransferToUpdateDrag): Deleted.
(WebCore::DragController::dragExited):
(WebCore::DragController::performDragOperation):
(WebCore::DragController::tryDHTMLDrag):
* page/EventHandler.cpp:
(WebCore::EventHandler::dispatchDragEvent): Made this fucntion take DataTransfer& instead of DataTransfer*.
(WebCore::findDropZone): Ditto.
(WebCore::EventHandler::dispatchDragEnterOrDragOverEvent): Added.
(WebCore::EventHandler::updateDragAndDrop):
(WebCore::EventHandler::cancelDragAndDrop):
(WebCore::EventHandler::performDragAndDrop):
(WebCore::EventHandler::dispatchDragSrcEvent):
(WebCore::EventHandler::dispatchDragStartEventOnSourceElement):
* page/EventHandler.h:

LayoutTests:

Added a regression test for checking the uniqueness of dataTransfer object for dragenter and dragleave events.
Unfortunately, the test is only runnable in Mac WebKit1 port due to the lack of support in WebKitTestRunner.

* TestExpectations:
* editing/pasteboard/data-transfer-is-unique-for-dragenter-and-dragleave-expected.txt: Added.
* editing/pasteboard/data-transfer-is-unique-for-dragenter-and-dragleave.html: Added.
* platform/mac-wk1/TestExpectations:

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

2 years agomediaPlaybackRequiresUserAction API replacement annotation is wrong
timothy_horton@apple.com [Sun, 8 Oct 2017 08:00:41 +0000 (08:00 +0000)]
mediaPlaybackRequiresUserAction API replacement annotation is wrong
https://bugs.webkit.org/show_bug.cgi?id=178063

Reviewed by Dan Bernstein.

* UIProcess/API/Cocoa/WKWebViewConfiguration.h:
mediaPlaybackRequiresUserAction suggests that you should use
requiresUserActionForMediaPlayback instead, but that is also deprecated.
Instead, follow the chain and suggest mediaTypesRequiringUserActionForPlayback.

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

2 years agoSourceBuffer remove throws out way more content than requested
jer.noble@apple.com [Sun, 8 Oct 2017 07:52:14 +0000 (07:52 +0000)]
SourceBuffer remove throws out way more content than requested
https://bugs.webkit.org/show_bug.cgi?id=177884
<rdar://problem/34817104>

Reviewed by Darin Adler.

Source/WebCore:

Test: media/media-source/media-source-remove-too-much.html

The end parameter is exclusive, not inclusive, of the range to be removed.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::removeCodedFrames):

LayoutTests:

* media/media-source/media-source-remove-decodeorder-crash-expected.txt:
* media/media-source/media-source-remove-decodeorder-crash.html:
* media/media-source/media-source-remove-too-much-expected.txt: Added.
* media/media-source/media-source-remove-too-much.html: Added.

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

2 years agoNullptr deref in WebCore::Node::computeEditability
bfulgham@apple.com [Sun, 8 Oct 2017 07:47:43 +0000 (07:47 +0000)]
Nullptr deref in WebCore::Node::computeEditability
https://bugs.webkit.org/show_bug.cgi?id=177905
<rdar://problem/34138402>

Reviewed by Darin Adler.

Source/WebCore:

Script can run when setting focus, because a blur event and a focus event are generated.
A handler for one of these events can cause the focused element to be cleared. We should
handle this possibility gracefully.

Test: fast/dom/focus-shift-crash.html

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

LayoutTests:

* fast/dom/focus-shift-crash-expected.txt: Added.
* fast/dom/focus-shift-crash.html: Added.

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

2 years agodirect-construct-arity-mismatch.js can have GCs that take ~70ms if you force poly...
fpizlo@apple.com [Sun, 8 Oct 2017 03:15:56 +0000 (03:15 +0000)]
direct-construct-arity-mismatch.js can have GCs that take ~70ms if you force poly proto and disable generational GC
https://bugs.webkit.org/show_bug.cgi?id=178051

Reviewed by Saam Barati.

After I studied the profile of this test, I found two pathologies in our code relating to
prototypes. I think that now that we support poly proto, it's more likely for these pathologies to
happen. Also, the fact that we force poly proto in some tests, it's possible for one of our tests
to trigger these pathologies.

- WeakGCMap::m_prototoypes is the set of all prototypes. That's super dangerous. This patch turns
  this into a bit in the JSCell header. It uses the last spare bit in indexingTypeAndMisc. Note
  that we still have 6 spare bits in cellState, but those are a bit more annoying to get at.

- WeakGCMap registers itself with GC using a std::function. That means allocating things in the
  malloc heap. This changes it to a virtual method on WeakGCMap. I don't know for sure that this is
  a problem area, but there are places where we could allocate a lot of WeakGCMaps, like if we have
  a lot of transition tables. It's good to reduce the amount of memory those require.

Also, I saw a FIXME about turning the std::tuple in PrototypeMap into a struct, so I did that while
I was at it. I initially thought that this would have to be part of my solution, but it turned out
not to be. I think it's worth landing anyway since it makes the code a lot more clear.

This fixes the timeout in that test and probably reduces memory consumption.

* JavaScriptCore.xcodeproj/project.pbxproj:
* dfg/DFGOperations.cpp:
* heap/Heap.cpp:
(JSC::Heap::pruneStaleEntriesFromWeakGCMaps):
(JSC::Heap::registerWeakGCMap):
(JSC::Heap::unregisterWeakGCMap):
* heap/Heap.h:
* inspector/JSInjectedScriptHostPrototype.cpp:
(Inspector::JSInjectedScriptHostPrototype::finishCreation):
* inspector/JSJavaScriptCallFramePrototype.cpp:
(Inspector::JSJavaScriptCallFramePrototype::finishCreation):
* runtime/ArrayIteratorPrototype.cpp:
(JSC::ArrayIteratorPrototype::finishCreation):
* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
* runtime/AsyncFromSyncIteratorPrototype.cpp:
(JSC::AsyncFromSyncIteratorPrototype::finishCreation):
* runtime/AsyncFunctionPrototype.cpp:
(JSC::AsyncFunctionPrototype::finishCreation):
* runtime/AsyncGeneratorFunctionPrototype.cpp:
(JSC::AsyncGeneratorFunctionPrototype::finishCreation):
* runtime/AsyncGeneratorPrototype.cpp:
(JSC::AsyncGeneratorPrototype::finishCreation):
* runtime/AsyncIteratorPrototype.cpp:
(JSC::AsyncIteratorPrototype::finishCreation):
* runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
* runtime/GeneratorFunctionPrototype.cpp:
(JSC::GeneratorFunctionPrototype::finishCreation):
* runtime/GeneratorPrototype.cpp:
(JSC::GeneratorPrototype::finishCreation):
* runtime/IndexingType.h:
* runtime/IteratorPrototype.cpp:
(JSC::IteratorPrototype::finishCreation):
* runtime/JSCInlines.h:
* runtime/JSCell.h:
* runtime/JSCellInlines.h:
(JSC::JSCell::mayBePrototype const):
(JSC::JSCell::didBecomePrototype):
* runtime/JSObject.cpp:
(JSC::JSObject::notifyPresenceOfIndexedAccessors):
(JSC::JSObject::setPrototypeDirect):
* runtime/JSProxy.cpp:
(JSC::JSProxy::setTarget):
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototype::finishCreation):
* runtime/MapPrototype.cpp:
(JSC::MapPrototype::finishCreation):
* runtime/ObjectPrototype.cpp:
(JSC::ObjectPrototype::finishCreation):
* runtime/PrototypeKey.h: Added.
(JSC::PrototypeKey::PrototypeKey):
(JSC::PrototypeKey::prototype const):
(JSC::PrototypeKey::inlineCapacity const):
(JSC::PrototypeKey::classInfo const):
(JSC::PrototypeKey::globalObject const):
(JSC::PrototypeKey::operator== const):
(JSC::PrototypeKey::operator!= const):
(JSC::PrototypeKey::operator bool const):
(JSC::PrototypeKey::isHashTableDeletedValue const):
(JSC::PrototypeKey::hash const):
(JSC::PrototypeKeyHash::hash):
(JSC::PrototypeKeyHash::equal):
* runtime/PrototypeMap.cpp:
(JSC::PrototypeMap::createEmptyStructure):
(JSC::PrototypeMap::clearEmptyObjectStructureForPrototype):
* runtime/PrototypeMap.h:
(JSC::PrototypeMap::PrototypeMap):
* runtime/PrototypeMapInlines.h: Removed.
* runtime/SetIteratorPrototype.cpp:
(JSC::SetIteratorPrototype::finishCreation):
* runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
* runtime/StringIteratorPrototype.cpp:
(JSC::StringIteratorPrototype::finishCreation):
* runtime/WeakGCMap.h:
(JSC::WeakGCMapBase::~WeakGCMapBase):
* runtime/WeakGCMapInlines.h:
(JSC::KeyTraitsArg>::WeakGCMap):
* runtime/WeakMapPrototype.cpp:
(JSC::WeakMapPrototype::finishCreation):
* runtime/WeakSetPrototype.cpp:
(JSC::WeakSetPrototype::finishCreation):

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

2 years agoUnreviewed, build fix for MallocBench in Linux 32bit
utatane.tea@gmail.com [Sun, 8 Oct 2017 02:55:44 +0000 (02:55 +0000)]
Unreviewed, build fix for MallocBench in Linux 32bit
https://bugs.webkit.org/show_bug.cgi?id=177856

* MallocBench/MallocBench/Interpreter.cpp:
(Interpreter::Interpreter):
(Interpreter::readOps):
Suppress warnings in some GCC versions.

* MallocBench/MallocBench/big.cpp:
(benchmark_big):
* MallocBench/MallocBench/medium.cpp:
(benchmark_medium):
Build fix for Linux 32bit.

* MallocBench/MallocBench/message.cpp:
(benchmark_message_many):
Use more efficient WorkQueue allocation.

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

2 years agoUnreviewed, disable Gigacage on ARM64 Linux
utatane.tea@gmail.com [Sun, 8 Oct 2017 02:06:28 +0000 (02:06 +0000)]
Unreviewed, disable Gigacage on ARM64 Linux
https://bugs.webkit.org/show_bug.cgi?id=177586

Gigacage's LLInt change breaks ARM64 Linux.
Currently we do not have maintainers for this.
Let's simply disable it.

* bmalloc/Gigacage.h:

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

2 years agoOctane/splay can leak memory due to stray pointers on the stack when run from the...
fpizlo@apple.com [Sun, 8 Oct 2017 01:10:19 +0000 (01:10 +0000)]
Octane/splay can leak memory due to stray pointers on the stack when run from the command line
https://bugs.webkit.org/show_bug.cgi?id=178054

Reviewed by Saam Barati.

This throws in a bunch of sanitize calls. It fixes the problem. It's also performance-neutral. In
most cases, calling the sanitize function is O(1), because it doesn't have anything to do if the stack
height stays relatively constant.

* dfg/DFGOperations.cpp:
* dfg/DFGTierUpCheckInjectionPhase.cpp:
(JSC::DFG::TierUpCheckInjectionPhase::run):
* ftl/FTLOSREntry.cpp:
* heap/Heap.cpp:
(JSC::Heap::runCurrentPhase):
* heap/MarkedAllocatorInlines.h:
(JSC::MarkedAllocator::tryAllocate):
(JSC::MarkedAllocator::allocate):
* heap/Subspace.cpp:
(JSC::Subspace::tryAllocateSlow):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::sanitizeStackInline):
* jit/ThunkGenerators.cpp:
(JSC::slowPathFor):
* runtime/VM.h:
(JSC::VM::addressOfLastStackTop):

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

2 years agoUpdate Document.createEvent for recent DOM specification changes
darin@apple.com [Sat, 7 Oct 2017 23:44:45 +0000 (23:44 +0000)]
Update Document.createEvent for recent DOM specification changes
https://bugs.webkit.org/show_bug.cgi?id=178052

Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* web-platform-tests/dom/events/EventTarget-dispatchEvent-expected.txt: Updated to expect more tests to pass.
* web-platform-tests/dom/nodes/Document-createEvent-expected.txt: Ditto.
* web-platform-tests/html/browsers/browsing-the-web/unloading-documents/beforeunload-canceling-expected.txt: Ditto.

Source/WebCore:

* dom/BeforeUnloadEvent.cpp:
(WebCore::BeforeUnloadEvent::BeforeUnloadEvent): Added a constructor for
createForBindings.
(WebCore::BeforeUnloadEvent::~BeforeUnloadEvent): Deleted. Just let the
compiler generate this.
* dom/BeforeUnloadEvent.h: Added createForBindings. Also made more things private.

* dom/Document.cpp:
(WebCore::Document::createEvent): Updated comments for clarity. Responding to
changes to the DOM specification, added support for "beforeunloadevent", "focusevent",
and "svgevents", moved "keyboardevents" and "popstateevent" into the list of strings
we should remove, and moved "compositionevent", "devicemotionevent",
"deviceorientationevent", "hashchangeevent", "storageevent", and "textevent" into
the list of strings we should keep.

* dom/Event.h: Added a virtual setRelatedTarget alongside the virtual relatedTarget
to allow us to clean up the code that manipulates it.

* dom/EventContext.cpp:
(WebCore::MouseOrFocusEventContext::handleLocalEvents const): Call the virtual
setRelatedTarget instead of doing a little type casting dance.

* dom/FocusEvent.h: Added createForBindings. Made more functions private and
changed setRelatedTarget into a private final override.

* dom/MouseEvent.h: Changed setRelatedTarget into a private final override.

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

2 years ago`async` should be able to be used as an imported binding name
utatane.tea@gmail.com [Sat, 7 Oct 2017 21:16:24 +0000 (21:16 +0000)]
`async` should be able to be used as an imported binding name
https://bugs.webkit.org/show_bug.cgi?id=176573

Reviewed by Darin Adler.

JSTests:

* modules/import-default-async.js: Added.
* modules/import-named-async-as.js: Added.
* modules/import-named-async.js: Added.
* modules/import-named-async/target.js: Added.
* modules/import-namespace-async.js: Added.

Source/JavaScriptCore:

Previously, we have ASYNC keyword in the parser. This is introduced only for performance,
and ECMA262 spec does not categorize "async" to keyword. This makes parser code complicated,
since ASYNC should be handled as IDENT. If we missed this ASYNC keyword, we cause a bug.
For example, import declaration failed to bind imported binding to the name "async" because
the parser considered ASYNC as keyword.

This patch removes ASYNC keyword from the parser. By carefully handling ASYNC, we can keep
the current performance without using this ASYNC keyword.

* parser/Keywords.table:
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::maybeParseAsyncFunctionDeclarationStatement):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parseExportDeclaration):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseProperty):
(JSC::Parser<LexerType>::parsePrimaryExpression):
(JSC::Parser<LexerType>::parseMemberExpression):
(JSC::Parser<LexerType>::printUnexpectedTokenText):
* parser/ParserTokens.h:
* runtime/CommonIdentifiers.h:

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

2 years ago[Payment Request] Implement PaymentRequest.show() and PaymentRequest.hide()
aestes@apple.com [Sat, 7 Oct 2017 19:24:04 +0000 (19:24 +0000)]
[Payment Request] Implement PaymentRequest.show() and PaymentRequest.hide()
https://bugs.webkit.org/show_bug.cgi?id=178043
<rdar://problem/34076639>

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

* web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt: Removed.
* web-platform-tests/payment-request/payment-request-show-method.https-expected.txt: Removed.

Source/WebCore:

Tests: http/tests/paymentrequest/payment-request-abort-method.https.html
       http/tests/paymentrequest/payment-request-show-method.https.html

* Modules/applepay/PaymentSession.h: Virtually inherited from PaymentSessionBase to
accommodate ApplePayPaymentHandler inheriting from both this and PaymentHandler.
(WebCore::PaymentSession::~PaymentSession): Deleted.
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.cpp:
(WebCore::paymentCoordinator): Virtually inherited from PaymentSessionBase to accommodate
ApplePayPaymentHandler inheriting from both this and PaymentSession.
(WebCore::ApplePayPaymentHandler::hasActiveSession): Added. Calls PaymentCoordinator::hasActiveSession().
(WebCore::ApplePayPaymentHandler::show): Added. Calls PaymentCoordinator::beginPaymentSession().
(WebCore::ApplePayPaymentHandler::hide): Added. Calls PaymentCoordinator::abortPaymentSession().
* Modules/applepay/paymentrequest/ApplePayPaymentHandler.h: Inherited from PaymentSession in
addition to PaymentHandler so that this can be PaymentCoordinator active session.
* Modules/paymentrequest/PaymentHandler.cpp:
(WebCore::PaymentHandler::create):
(WebCore::PaymentHandler::hasActiveSession):
* Modules/paymentrequest/PaymentHandler.h:
* Modules/paymentrequest/PaymentRequest.cpp:
(WebCore::PaymentRequest::~PaymentRequest):
(WebCore::PaymentRequest::show): Rejected the promise if PaymentCoordinator has an active session.
(WebCore::PaymentRequest::abort): Called stop().
(WebCore::PaymentRequest::canSuspendForDocumentSuspension const): Returned true if state is
Interactive and there is an active handler showing.
(WebCore::PaymentRequest::stop): Hid the active session if it's showing, then set state to
Closed and rejected the show promise.
* Modules/paymentrequest/PaymentRequest.h:
* Modules/paymentrequest/PaymentSessionBase.h: Added. Inherits from
RefCounted<PaymentSessionBase> and defines a virtual destructor. This allows subclasses to
virtually inherit a single ref-count to support multiple inheritance.
* WebCore.xcodeproj/project.pbxproj:
* bindings/scripts/CodeGeneratorJS.pm:
(GetGnuVTableOffsetForType): Added ApplePaySession to the list of classes that need a vtable
offset of 3.

LayoutTests:

Copied payment-request-abort-method.https.html and payment-request-show-method.https.html
from web-platform-tests/payment-request/ and changed the payment method from basic-card to
Apple Pay. This needs to eventually be upstreamed back to WPT.

* TestExpectations:
* http/tests/paymentrequest/payment-request-abort-method.https-expected.txt: Added.
* http/tests/paymentrequest/payment-request-abort-method.https.html: Added.
* http/tests/paymentrequest/payment-request-show-method.https-expected.txt: Added.
* http/tests/paymentrequest/payment-request-show-method.https.html: Added.
* platform/ios-wk2/TestExpectations:
* platform/mac-wk2/TestExpectations:

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

2 years agoWebContentReader::readHTML should be shared between macOS and iOS
rniwa@webkit.org [Sat, 7 Oct 2017 07:04:07 +0000 (07:04 +0000)]
WebContentReader::readHTML should be shared between macOS and iOS
https://bugs.webkit.org/show_bug.cgi?id=178044

Reviewed by Wenson Hsieh.

Merged the implementations for WebContentReader::readHTML between macOS and iOS.

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentReader::readHTML):
* editing/ios/WebContentReaderIOS.mm:
(WebCore::WebContentReader::readHTML): Deleted.
* editing/mac/WebContentReaderMac.mm:
(WebCore::WebContentReader::readHTML): Deleted.

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

2 years agoTry to fix the Apple Internal SDK builds after r223014.
aestes@apple.com [Sat, 7 Oct 2017 07:02:06 +0000 (07:02 +0000)]
Try to fix the Apple Internal SDK builds after r223014.

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:

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

2 years agoRenderTable should not hold a collection of raw pointers to RenderTableCaption
zalan@apple.com [Sat, 7 Oct 2017 04:15:03 +0000 (04:15 +0000)]
RenderTable should not hold a collection of raw pointers to RenderTableCaption
https://bugs.webkit.org/show_bug.cgi?id=178026
<rdar://problem/34863090>

Reviewed by Simon Fraser.

Similar to sections, RenderTable should not store captions as raw pointers. Their lifetimes are
not guaranteed to be sync with the RenderTable's.

Covered by existing tests.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::addCaption):
(WebCore::RenderTable::removeCaption):
(WebCore::RenderTable::addOverflowFromChildren):
* rendering/RenderTable.h:
* rendering/RenderTableCaption.cpp:
(WebCore::RenderTableCaption::insertedIntoTree):
(WebCore::RenderTableCaption::willBeRemovedFromTree):

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

2 years ago[iOS WK2] API tests added in r222991 are failing in iOS 11 test runners
wenson_hsieh@apple.com [Sat, 7 Oct 2017 02:36:59 +0000 (02:36 +0000)]
[iOS WK2] API tests added in r222991 are failing in iOS 11 test runners
https://bugs.webkit.org/show_bug.cgi?id=178037

Reviewed by Tim Horton.

This patch carries out some minor cleanup around UIKitSPI.h in WebKit2, so that the internal SDK isn't required
to implement -[WKContentView insertTextSuggestion:].

* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView insertTextSuggestion:]):

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

2 years agoRemove global-constructors-attributes tests
commit-queue@webkit.org [Sat, 7 Oct 2017 02:33:26 +0000 (02:33 +0000)]
Remove global-constructors-attributes tests
https://bugs.webkit.org/show_bug.cgi?id=178041

Patch by Sam Weinig <sam@webkit.org> on 2017-10-06
Rubber-stamped by Alexey Proskuryakov.

In discusstion with Alexey, we agreed these tests were much more trouble than they
were worth, due to testing very little, but requiring the update of up to eight
platform specific results per global constructor changed.

* js/dom/global-constructors-attributes-dedicated-worker-expected.txt: Removed.
* js/dom/global-constructors-attributes-dedicated-worker.html: Removed.
* js/dom/global-constructors-attributes-expected.txt: Removed.
* js/dom/global-constructors-attributes-idb-expected.txt: Removed.
* js/dom/global-constructors-attributes-idb.html: Removed.
* js/dom/global-constructors-attributes.html: Removed.
* js/dom/script-tests/global-constructors-attributes-idb.js: Removed.
* js/dom/script-tests/global-constructors-attributes.js: Removed.
* platform/gtk/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-sierra-wk1/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-wk1/js/dom/global-constructors-attributes-dedicated-worker-expected.txt: Removed.
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/mac/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/win/js/dom/global-constructors-attributes-expected.txt: Removed.
* platform/wpe/js/dom/global-constructors-attributes-expected.txt: Removed.

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

2 years agoEnable gigacage on iOS
fpizlo@apple.com [Sat, 7 Oct 2017 02:29:19 +0000 (02:29 +0000)]
Enable gigacage on iOS
https://bugs.webkit.org/show_bug.cgi?id=177586

Reviewed by JF Bastien.
JSTests:

Add tests for when Gigacage gets runtime disabled.

* stress/disable-gigacage-arrays.js: Added.
(foo):
* stress/disable-gigacage-strings.js: Added.
(foo):
* stress/disable-gigacage-typed-arrays.js: Added.
(foo):

Source/bmalloc:

Introduce the ability to disable gigacage at runtime if allocation fails. If any step of gigacage
allocation fails, we free all of the gigacages and turn off gigacage support.

* CMakeLists.txt:
* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/Cache.cpp:
(bmalloc::Cache::scavenge):
* bmalloc/Cache.h:
(bmalloc::Cache::tryAllocate):
(bmalloc::Cache::allocate):
(bmalloc::Cache::deallocate):
(bmalloc::Cache::reallocate):
* bmalloc/Gigacage.cpp:
(Gigacage::ensureGigacage):
(Gigacage::runway):
(Gigacage::totalSize):
(Gigacage::shouldBeEnabled):
(): Deleted.
(Gigacage::Callback::Callback): Deleted.
(Gigacage::Callback::function): Deleted.
(Gigacage::PrimitiveDisableCallbacks::PrimitiveDisableCallbacks): Deleted.
* bmalloc/Gigacage.h:
(Gigacage::wasEnabled):
(Gigacage::isEnabled):
(Gigacage::runway): Deleted.
(Gigacage::totalSize): Deleted.
* bmalloc/HeapKind.cpp: Added.
(bmalloc::isActiveHeapKind):
(bmalloc::mapToActiveHeapKind):
* bmalloc/HeapKind.h:
(bmalloc::isActiveHeapKindAfterEnsuringGigacage):
(bmalloc::mapToActiveHeapKindAfterEnsuringGigacage):
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::scavenge):
* bmalloc/bmalloc.h:
(bmalloc::api::tryLargeMemalignVirtual):
(bmalloc::api::freeLargeVirtual):
(bmalloc::api::isEnabled):

Source/JavaScriptCore:

The hardest part of enabling Gigacage on iOS is that it requires loading global variables while
executing JS, so the LLInt needs to know how to load from global variables on all platforms that
have Gigacage. So, this teaches ARM64 how to load from global variables.

Also, this makes the code handle disabling the gigacage a bit better.

* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::caged):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::cage):
(JSC::AssemblyHelpers::cageConditionally):
* offlineasm/arm64.rb:
* offlineasm/asm.rb:
* offlineasm/instructions.rb:

Tools:

Add a mode to test disabling Gigacage.

* Scripts/run-jsc-stress-tests:
* Scripts/webkitruby/jsc-stress-test-writer-default.rb:

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

2 years ago[Beacon][Cocoa] Beacon requests with BufferSource payload should not have a Content...
cdumez@apple.com [Sat, 7 Oct 2017 00:25:00 +0000 (00:25 +0000)]
[Beacon][Cocoa] Beacon requests with BufferSource payload should not have a Content-Type HTTP header
https://bugs.webkit.org/show_bug.cgi?id=178027
<rdar://problem/34748470>

Reviewed by Youenn Fablet.

Source/WebCore/PAL:

Add new CFNetwork SPI.

* pal/spi/cf/CFNetworkSPI.h:

Source/WebKit:

Use new NSURLSessionConfiguration._suppressedAutoAddedHTTPHeaders CFNetwork SPI to
make sure that CFNetwork never adds a Content-Type HTTP headers to our requests
when we did not add one.

This is covered by the following tests on newer OSes:
- imported/w3c/web-platform-tests/beacon/headers/header-content-type.html
- http/tests/blink/sendbeacon/beacon-same-origin.html

* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

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

2 years agoSpelling error annotation should encompass hyphen in misspelled word that wraps acros...
dbates@webkit.org [Sat, 7 Oct 2017 00:18:04 +0000 (00:18 +0000)]
Spelling error annotation should encompass hyphen in misspelled word that wraps across multiple lines
https://bugs.webkit.org/show_bug.cgi?id=177980
<rdar://problem/34847454>

Reviewed by Simon Fraser.

Source/WebCore:

On macOS the spelling and grammar annotations for a word or word phrase encompass
hyphenations added because the word or word phrase wraps across more than one line.
The effect tends to be more aesthetically pleasing and consistent with how these
annotations would be pointed out by a person in conversation: by identify the word
or phrase that has a spelling or grammar issue regardless of whether that word or
phrase is broken into halves due to line wrapping. The same argument applies to
other annotations on macOS, including text matches. Therefore, we should always
include any hyphens encompassed by a marker that were added due to line wrapping
when painting the marker.

Test: editing/spelling/spelling-marker-includes-hyphen.html

* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintDocumentMarker): Compute the text run including any
added hyphens. If a hyphen was added then the inline text box represents that text
up to the hyphen. Adjust the end position of the marker to be the length of the text
run if its greater than or equal to the length of the text box.

LayoutTests:

Add a test to ensure that a spelling error decoration encompasses the hyphen for a misspelled
word that is hyphenated because it is broken across more than one line.

* editing/spelling/spelling-marker-includes-hyphen-expected.html: Added.
* editing/spelling/spelling-marker-includes-hyphen.html: Added.
* platform/ios/TestExpectations: Mark the test as WontFix as spelling and
grammar markers are not support on iOS.
* platform/mac-wk2/TestExpectations: Mark the test as a failure due to <https://bugs.webkit.org/show_bug.cgi?id=105616>.

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

2 years agoSource/WebKit:
commit-queue@webkit.org [Sat, 7 Oct 2017 00:09:48 +0000 (00:09 +0000)]
Source/WebKit:
[iOS] Respect the "caret-color" CSS property when editing
https://bugs.webkit.org/show_bug.cgi?id=177489
<rdar://problem/34600419>

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-10-06
Reviewed by Tim Horton.

This change adds support for the caret-color property on iOS.

* Shared/EditorState.cpp:
(WebKit::EditorState::PostLayoutData::encode const):
(WebKit::EditorState::PostLayoutData::decode):
* Shared/EditorState.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView insertionPointColor]):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::platformEditorState const):

Tools:
[iOS] Respect the "caret-color" CSS property when editing
https://bugs.webkit.org/show_bug.cgi?id=177489
<rdar://problem/34600419>

Patch by Aishwarya Nirmal <anirmal@apple.com> on 2017-10-06
Reviewed by Tim Horton.

Adds test for iOS caret color support.

* TestWebKitAPI/Tests/WebKitCocoa/EditorStateTests.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/ios/UIKitSPI.h:

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

2 years agoWeb Inspector: Add Canvas tab and CanvasOverviewContentView
mattbaker@apple.com [Fri, 6 Oct 2017 23:31:42 +0000 (23:31 +0000)]
Web Inspector: Add Canvas tab and CanvasOverviewContentView
https://bugs.webkit.org/show_bug.cgi?id=177604
<rdar://problem/34714650>

Reviewed by Devin Rousso.

Source/WebInspectorUI:

This patch adds experimental feature support for the Canvas tab. Initially
the tab provides only an overview of the canvases in the page, and will
exist side-by-side with the existing experimental Canvas UI.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Base/Main.js:
(WI.contentLoaded):
* UserInterface/Base/Setting.js:

* UserInterface/Images/Canvas.svg: Added.
* UserInterface/Images/CanvasOverview.svg: Added.
* UserInterface/Main.html:
Add new art and canvas UI classes.

* UserInterface/Models/Canvas.js:
(WI.Canvas.requestNode):
(WI.Canvas.prototype.requestContent):
(WI.Canvas.prototype.requestCSSCanvasClientNodes):
(WI.Canvas.prototype.requestSize.calculateSize.getAttributeValue):
(WI.Canvas.prototype.requestSize.calculateSize):
(WI.Canvas.prototype.requestSize.getPropertyValue):
(WI.Canvas.prototype.requestSize):
Use promises to retrieve canvas data asynchronously.

* UserInterface/Models/CollectionTypes.js: Added.
(WI.CanvasCollection):
New location for concrete collection types. Having a class to type check
makes using a collection as a represented object a bit simpler.

* UserInterface/Views/CanvasContentView.css:
(.content-view.canvas:not(.tab)):
(.content-view.canvas:not(.tab) > .preview):
(.content-view.canvas:not(.tab) > .preview > img):
(.content-view.canvas:not(.tab) > :matches(header, footer)):
(.content-view.canvas): Deleted.
(.content-view.canvas > .preview): Deleted.
(.content-view.canvas > .preview > img): Deleted.
During the transition to the new Canvas tab, CanvasContentView needs to
support being shown as a full-size content view, and as an item in a
CollectionContentView. Hide header and footer elements by default.

* UserInterface/Views/CanvasContentView.js:
(WI.CanvasContentView):
(WI.CanvasContentView.prototype.refresh):
(WI.CanvasContentView.prototype.initialLayout):
(WI.CanvasContentView.prototype.layout):
(WI.CanvasContentView.prototype.shown):
(WI.CanvasContentView.prototype.attached):
(WI.CanvasContentView.prototype.detached):
(WI.CanvasContentView.prototype._showError):
(WI.CanvasContentView.prototype._refreshPixelSize):
(WI.CanvasContentView.prototype._showGridButtonClicked):
(WI.CanvasContentView.prototype._updateImageGrid):
(WI.CanvasContentView.prototype._updateMemoryCost):
(WI.CanvasContentView.prototype._updatePixelSize):
(WI.CanvasContentView.prototype._updateRecordNavigationItem):
(WI.CanvasContentView.prototype.hidden): Deleted.
(WI.CanvasContentView.prototype.closed): Deleted.
(WI.CanvasContentView.prototype._showPreview): Deleted.
Added new UI for display in the Canvas overview. These elements are always
created, but only appear when the canvas is viewed as a "card".

Canvas previews are no longer shown as soon as they are available from
the backend. Instead, once the canvas content is ready a layout is scheduled.
This guarantees that refreshing all canvases at once causes no flicker,
and introduces no perceptible delay.

Finally, the "Cancel recording" tooltip has been renamed "Stop recording",
to match the behavior of the command.

* UserInterface/Views/CanvasDetailsSidebarPanel.js:
(WI.CanvasDetailsSidebarPanel.prototype._refreshSourceSection.this._canvas.requestNode.): Deleted.
Canvas.prototype.requestNode now returns a promise.

* UserInterface/Views/CanvasOverviewContentView.css: Added.
(.content-view.canvas-overview):
(.content-view.canvas-overview .content-view.canvas):
(.content-view.canvas-overview .content-view.canvas.selected:not(.is-recording)):
(.content-view.canvas-overview .content-view.canvas > :matches(header, footer)):
(.content-view.canvas-overview .content-view.canvas > header):
(.content-view.canvas-overview .content-view.canvas.is-recording > header):
(.content-view.canvas-overview .content-view.canvas > header > .titles,):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas > header > .titles > .subtitle,):
(.content-view.canvas-overview .content-view.canvas > header .subtitle::before):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .title):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .titles > .subtitle):
(.content-view.canvas-overview .content-view.canvas.is-recording > header > .navigation-bar > .item):
(.content-view.canvas-overview .content-view.canvas > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(:hover, .is-recording) > header > .navigation-bar):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop.disabled):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):hover):
(.content-view.canvas-overview .content-view.canvas:not(.is-recording) > header > .navigation-bar > .item.record-start-stop:not(.disabled):active):
(.content-view.canvas-overview .content-view.canvas > .preview):
(.content-view.canvas-overview .content-view.canvas > .preview > img):
(.content-view.canvas-overview .content-view.canvas > .preview > .message-text-view):
(.content-view.canvas-overview .content-view.canvas > footer):
(.content-view.canvas-overview .content-view.canvas > footer .memory-cost):
Add header, navigation bar, and footer styles to CanvasContentView when
it is being shown as an item in a CollectionContentView.

* UserInterface/Views/CanvasOverviewContentView.js: Added.
(WI.CanvasOverviewContentView):
(WI.CanvasOverviewContentView.prototype.get navigationItems):
(WI.CanvasOverviewContentView.prototype.get selectionPathComponents):
(WI.CanvasOverviewContentView.prototype.hidden):
(WI.CanvasOverviewContentView.prototype.contentViewAdded):
(WI.CanvasOverviewContentView.prototype.contentViewRemoved):
(WI.CanvasOverviewContentView.prototype.attached):
(WI.CanvasOverviewContentView.prototype.detached):
(WI.CanvasOverviewContentView.prototype._refreshPreviews):
(WI.CanvasOverviewContentView.prototype._selectedPathComponentChanged):
(WI.CanvasOverviewContentView.prototype._showGridButtonClicked):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange.createCanvasPathComponent):
(WI.CanvasOverviewContentView.prototype._supplementalRepresentedObjectsDidChange):
(WI.CanvasOverviewContentView.prototype._updateNavigationItems):
(WI.CanvasOverviewContentView.prototype._updateShowImageGrid):
(WI.CanvasOverviewContentView.prototype._contentViewMouseEnter):
(WI.CanvasOverviewContentView.prototype._contentViewMouseLeave):
The overview extends CollectionContentView, adding buttons for global canvas actions
(refresh all and show/hide grid for all), and maintains a non-visible
outline of CanvasTreeElements to facilitate display of the hierarchical
path in the navigation bar.

* UserInterface/Views/CanvasTabContentView.css: Added.
(.content-view.tab.canvas .navigation-bar > .item > .hierarchical-path-component > .icon):
(.content-view.tab.canvas .navigation-bar > .item > .canvas-overview > .icon):
(.content-view.tab.canvas .navigation-bar > .item .canvas .icon):

* UserInterface/Views/CanvasTabContentView.js: Added.
(WI.CanvasTabContentView):
(WI.CanvasTabContentView.tabInfo):
(WI.CanvasTabContentView.isTabAllowed):
(WI.CanvasTabContentView.prototype.get type):
(WI.CanvasTabContentView.prototype.get supportsSplitContentBrowser):
(WI.CanvasTabContentView.prototype.canShowRepresentedObject):
(WI.CanvasTabContentView.prototype.shown):
(WI.CanvasTabContentView.prototype.treeElementForRepresentedObject):
(WI.CanvasTabContentView.prototype.restoreFromCookie):
(WI.CanvasTabContentView.prototype.saveStateToCookie):
(WI.CanvasTabContentView.prototype.attached):
(WI.CanvasTabContentView.prototype.detached):
(WI.CanvasTabContentView.prototype._canvasAdded):
(WI.CanvasTabContentView.prototype._canvasRemoved):
(WI.CanvasTabContentView.prototype._overviewPathComponentClicked):
(WI.CanvasTabContentView.prototype._mainResourceDidChange):

* UserInterface/Views/CollectionContentView.js:
(WI.CollectionContentView):
(WI.CollectionContentView.prototype.setSelectedItem):
(WI.CollectionContentView.prototype.addContentViewForItem):
(WI.CollectionContentView.prototype.removeContentViewForItem):
(WI.CollectionContentView.prototype.initialLayout):
(WI.CollectionContentView.prototype._showContentPlaceholder):
(WI.CollectionContentView.prototype._hideContentPlaceholder):
Placeholder content should be created lazily, and shown after a slight delay
to give represented objects a chance to load. Make sure to call the
shown or hidden method after adding or removing a content view.

* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createExperimentalSettingsView):

* UserInterface/Views/Variables.css:
(:root):
(body.window-inactive *):

* UserInterface/Views/View.js:
(WI.View.fromElement):

LayoutTests:

Add test for new static function View.fromElement.

* inspector/view/basics-expected.txt:
* inspector/view/basics.html:

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

2 years agoEnable RegExp JIT for match only Unicode RegExp's
msaboff@apple.com [Fri, 6 Oct 2017 23:21:48 +0000 (23:21 +0000)]
Enable RegExp JIT for match only Unicode RegExp's
https://bugs.webkit.org/show_bug.cgi?id=178033

Reviewed by JF Bastien.

I forgot to turn on JIT'ing for match-only Unicode RegExp's in r221052.  Do it now.

* runtime/RegExp.cpp:
(JSC::RegExp::compileMatchOnly):

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

2 years agoRenderTable should not hold a collection of raw pointers to RenderTableCol
zalan@apple.com [Fri, 6 Oct 2017 23:15:31 +0000 (23:15 +0000)]
RenderTable should not hold a collection of raw pointers to RenderTableCol
https://bugs.webkit.org/show_bug.cgi?id=178030
<rdar://problem/34865236>

Reviewed by Simon Fraser.

In addition to the m_columnRenderersValid flag, this patch ensures that
we don't dereference stale column renderers even when the flag is out of sync.

Covered by existing tests.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::updateColumnCache const):
(WebCore::RenderTable::slowColElement const):
* rendering/RenderTable.h:

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

2 years agoLayoutTest http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and...
ryanhaddad@apple.com [Fri, 6 Oct 2017 23:06:07 +0000 (23:06 +0000)]
LayoutTest http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=177679

Reviewed by Alexey Proskuryakov.

Move runTest() from an inline script to a load event handler to avoid a race between parsing and navigation.

* http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction-expected.txt:
* http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html:

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

2 years agoWeb Inspector: clicking in Inspector webview clears the selection in the inspected...
bburg@apple.com [Fri, 6 Oct 2017 23:05:43 +0000 (23:05 +0000)]
Web Inspector: clicking in Inspector webview clears the selection in the inspected page
https://bugs.webkit.org/show_bug.cgi?id=178014
<rdar://problem/12706857>

Reviewed by Timothy Hatcher.

If the Inspector is docked to the inspected view, clicking on the Inspector
webview will cause selection in the inspected view to be lost. This is because
the selection is lost when the web view resigns first responder.

Add a check in maintainsInactiveSelection to always retain selection if
Web Inspector is open. This approach seems simpler than trying to sync a client's
usage of WKPageSetMaintainsInactiveSelection with overrides that need to be applied
and unapplied when an inspector web view is shown or hidden.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::maintainsInactiveSelection const):
(WebKit::WebPageProxy::inspector const): Drive by, use nullptr.

* UIProcess/WebPageProxy.h:
(WebKit::WebPageProxy::maintainsInactiveSelection const): Deleted.

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

2 years agoWeb Inspector: Network Tab - Headers Detail View
joepeck@webkit.org [Fri, 6 Oct 2017 22:48:28 +0000 (22:48 +0000)]
Web Inspector: Network Tab - Headers Detail View
https://bugs.webkit.org/show_bug.cgi?id=177896
<rdar://problem/34071924>

Source/WebInspectorUI:

Reviewed by Devin Rousso.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
New resources and strings.

* UserInterface/Base/URLUtilities.js:
(parseURL):
(WI.h2Authority):
(WI.h2Path):
Utility methods to get the :authority and :path pseudo-headers from a URL.
This required adding user info (user:pass@) support to URL parsing.

* UserInterface/Views/NetworkTabContentView.js:
(WI.NetworkTabContentView):
* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.get navigationItems):
(WI.NetworkTableContentView.prototype.get filterNavigationItems):
Move the NetworkTab's filter controls to the left. Since these are not
dynamic just vend them from the TableContentView and place them in the
navigation bar.

* UserInterface/Models/Resource.js:
(WI.Resource.prototype.updateWithMetrics):
New event whenever metrics change. This is the first event that will allow
a client to react to a resource.protocol change.

* UserInterface/Views/NetworkResourceDetailView.css:
(.content-view.resource-details):
Base styles for the sub detail views.

* UserInterface/Views/NetworkResourceDetailView.js:
(WI.NetworkResourceDetailView):
(WI.NetworkResourceDetailView.prototype.headersContentViewGoToRequestData):
(WI.NetworkResourceDetailView.prototype.initialLayout):
(WI.NetworkResourceDetailView.prototype._showPreferredContentView):
(WI.NetworkResourceDetailView.prototype._showContentViewForNavigationItem):
Create a Header view and provide a way to switch to a particular view. This wil
be useful to jump from the Header's Request Data directly to the Preview's
Request ContentView.

* UserInterface/Views/ResourceDetailsSection.css:
(.resource-details > section):
(.resource-details > section > .title):
(.resource-details > section > .details):
(.resource-details > section > .details > p):
(.resource-details > section.incomplete > .details):
* UserInterface/Views/ResourceDetailsSection.js:
(WI.ResourceDetailsSection):
(WI.ResourceDetailsSection.prototype.get element):
(WI.ResourceDetailsSection.prototype.get titleElement):
(WI.ResourceDetailsSection.prototype.get detailsElement):
(WI.ResourceDetailsSection.prototype.toggleIncomplete):
(WI.ResourceDetailsSection.prototype.toggleError):
Simple sections with a title and details div with a border.
It may be common to have an incomplete load / error so this
provides some APIs and styles for sections marked incomplete
or with errors.

* UserInterface/Views/ResourceHeadersContentView.css:
(.resource-headers > section > .details):
(.resource-headers > section.headers > .details):
(.resource-headers > section.error > .details):
(.resource-headers > section.error .key):
Style the left border different colors for different sections or cases.

(.resource-headers .details):
(.resource-headers .details .pair):
(.resource-headers .details .key):
(.resource-headers .value):
(.resource-headers .header > .key):
(.resource-headers .h1-status > .key):
(.resource-headers .h2-pseudo-header > .key):
Wrapped text for key/value pairs and different colors for different
sections or cases.

(.resource-headers .go-to-arrow):
Go-to arrow styles for a request data section.

* UserInterface/Views/ResourceHeadersContentView.js: Added.
(WI.ResourceHeadersContentView):
(WI.ResourceHeadersContentView.prototype.initialLayout):
(WI.ResourceHeadersContentView.prototype.layout):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithMessage):
(WI.ResourceHeadersContentView.prototype._incompleteSectionWithLoadingIndicator):
(WI.ResourceHeadersContentView.prototype._appendKeyValuePair):
(WI.ResourceHeadersContentView.prototype._responseSourceDisplayString):
(WI.ResourceHeadersContentView.prototype._refreshSummarySection):
(WI.ResourceHeadersContentView.prototype._refreshRequestHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshResponseHeadersSection):
(WI.ResourceHeadersContentView.prototype._refreshQueryStringSection):
(WI.ResourceHeadersContentView.prototype._refreshRequestDataSection):
(WI.ResourceHeadersContentView.prototype._resourceMetricsDidChange):
(WI.ResourceHeadersContentView.prototype._resourceRequestHeadersDidChange):
(WI.ResourceHeadersContentView.prototype._resourceResponseReceived):
(WI.ResourceHeadersContentView.prototype._goToRequestDataClicked):
Summary, Request, Response, Query String, and Request Data sections.
The sections refresh as data becomes available.

* UserInterface/Views/Table.css:
(.table):
These variables are already defined globally.

* UserInterface/Views/Variables.css:
(:root):
New variables for the colors we use. They closely match, and are
sometimes identical to ones used in Timelines / Memory views.

Source/WebInspectorUI/../../LayoutTests:

Reviewed by NOBODY (OOPS!).

* inspector/unit-tests/url-utilities-expected.txt:
* inspector/unit-tests/url-utilities.html:
Tests for new utility functions.

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

2 years agoBuild fix after r223002.
achristensen@apple.com [Fri, 6 Oct 2017 22:38:34 +0000 (22:38 +0000)]
Build fix after r223002.

* dfg/DFGOSRExit.cpp:
(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):

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

2 years agoRootInlineBox should not hold a collection of raw pointers to RenderBox
zalan@apple.com [Fri, 6 Oct 2017 22:14:05 +0000 (22:14 +0000)]
RootInlineBox should not hold a collection of raw pointers to RenderBox
https://bugs.webkit.org/show_bug.cgi?id=178025
<rdar://problem/34862488>

Reviewed by Simon Fraser.

There are already some assertions in place to check if the renderers are valid.

Covered by existing test cases.

* rendering/RenderBlockLineLayout.cpp:
(WebCore::RenderBlockFlow::reattachCleanLineFloats):
(WebCore::RenderBlockFlow::determineStartPosition):
(WebCore::RenderBlockFlow::determineEndPosition):
* rendering/RootInlineBox.h:
(WebCore::RootInlineBox::appendFloat):
(WebCore::RootInlineBox::floatsPtr):

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

2 years agoContinuation map should not hold a raw pointer
zalan@apple.com [Fri, 6 Oct 2017 22:13:14 +0000 (22:13 +0000)]
Continuation map should not hold a raw pointer
https://bugs.webkit.org/show_bug.cgi?id=178021
<rdar://problem/34861590>

Reviewed by Simon Fraser.

This patch ensures proper lifetime management for renderers stored in the Continuation map
(currently they rely on the correctness of addChild/takeChild methods).

Covered by existing tests.

* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::continuation const):
(WebCore::RenderBoxModelObject::setContinuation):

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

2 years agoUnreviewed, rolling out r222791 and r222873.
ryanhaddad@apple.com [Fri, 6 Oct 2017 22:12:41 +0000 (22:12 +0000)]
Unreviewed, rolling out r222791 and r222873.
https://bugs.webkit.org/show_bug.cgi?id=178031

Caused crashes with workers/wasm LayoutTests (Requested by
ryanhaddad on #webkit).

Reverted changesets:

"WebAssembly: no VM / JS version of everything but Instance"
https://bugs.webkit.org/show_bug.cgi?id=177473
http://trac.webkit.org/changeset/222791

"WebAssembly: address no VM / JS follow-ups"
https://bugs.webkit.org/show_bug.cgi?id=177887
http://trac.webkit.org/changeset/222873

Patch by Commit Queue <commit-queue@webkit.org> on 2017-10-06

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

2 years agoSource/WebCore:
achristensen@apple.com [Fri, 6 Oct 2017 22:07:19 +0000 (22:07 +0000)]
Source/WebCore:
Add more infrastructure to apply custom header fields to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

Covered by new API tests.

* loader/DocumentLoader.h:
(WebCore::DocumentLoader::customHeaderFields):
* loader/HTTPHeaderField.cpp:
(WebCore::HTTPHeaderField::create):
(WebCore::HTTPHeaderField::HTTPHeaderField): Deleted.
* loader/HTTPHeaderField.h:
(WebCore::HTTPHeaderField::encode const):
(WebCore::HTTPHeaderField::decode):

Change HTTPHeaderField from one String containing the name and value
to a string for the name and another for value.  This matches HTTPHeaderMap
and NSURLRequest more closely where names and values are treated as separate Strings.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::requestResource):

If the DocumentLoader has custom header fields from the WebsitePolicies, apply them to any same-origin requests.

* loader/cache/CachedResourceRequest.h:
(WebCore::CachedResourceRequest::resourceRequest):
* platform/network/ResourceRequestBase.cpp:
(WebCore::ResourceRequestBase::setCachePolicy):
(WebCore::ResourceRequestBase::setTimeoutInterval):
(WebCore::ResourceRequestBase::setHTTPMethod):
(WebCore::ResourceRequestBase::setHTTPHeaderField):
(WebCore::ResourceRequestBase::clearHTTPAuthorization):
(WebCore::ResourceRequestBase::clearHTTPContentType):
(WebCore::ResourceRequestBase::clearHTTPReferrer):
(WebCore::ResourceRequestBase::clearHTTPOrigin):
(WebCore::ResourceRequestBase::clearHTTPUserAgent):
(WebCore::ResourceRequestBase::clearHTTPAccept):
(WebCore::ResourceRequestBase::clearHTTPAcceptEncoding):
(WebCore::ResourceRequestBase::setResponseContentDispositionEncodingFallbackArray):
(WebCore::ResourceRequestBase::setHTTPBody):
(WebCore::ResourceRequestBase::setAllowCookies):
(WebCore::ResourceRequestBase::setPriority):
(WebCore::ResourceRequestBase::addHTTPHeaderFieldIfNotPresent):
(WebCore::ResourceRequestBase::addHTTPHeaderField):
(WebCore::ResourceRequestBase::setHTTPHeaderFields):

non-HTTP/HTTPS ResourceRequests need to be updated, too, if header fields are added.
Skipping updating non-HTTP/HTTPS ResourceRequests is not a valid shortcut, and with the
growing importance of custom schemes with our new public API, we should update ResourceRequests
of custom schemes correctly.

Source/WebKit:
Add more infrastructure to apply custom headers to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

* UIProcess/API/C/WKWebsitePolicies.cpp:
(WKWebsitePoliciesCopyCustomHeaderFields):
(WKWebsitePoliciesSetCustomHeaderFields):
* UIProcess/API/C/WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.h:
* UIProcess/API/Cocoa/_WKWebsitePolicies.mm:
(-[_WKWebsitePolicies customHeaderFields]):
(-[_WKWebsitePolicies setCustomHeaderFields:]):

Make the SPI for setting custom header fields take a dictionary<String, String>
instead of an array of Strings with colons. This matches NSURLRequest and other
APIs that deal with header fields.

Tools:
Add more infrastructure to apply custom header fields to same-origin requests
https://bugs.webkit.org/show_bug.cgi?id=177629

Reviewed by Ryosuke Niwa.

* TestWebKitAPI/Tests/WebCore/HTTPHeaderField.cpp:
(canonicalizeHTTPHeader):
(shouldRemainUnchanged):
(shouldBeInvalid):
(shouldBecome):
* TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:
(TEST):
(expectHeaders):
(-[CustomHeaderFieldsDelegate _webView:decidePolicyForNavigationAction:decisionHandler:]):
(-[CustomHeaderFieldsDelegate webView:startURLSchemeTask:]):
(-[CustomHeaderFieldsDelegate webView:stopURLSchemeTask:]):

Test main resource requests, subresource requests, and cross-origin requests.

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

2 years agoAX: [iOS] Layout Test accessibility/ios-simulator/video-elements-ios.html is failing
n_wang@apple.com [Fri, 6 Oct 2017 21:41:01 +0000 (21:41 +0000)]
AX: [iOS] Layout Test accessibility/ios-simulator/video-elements-ios.html is failing
https://bugs.webkit.org/show_bug.cgi?id=177954
<rdar://problem/34838094>

The test is flaky because that the video element has triggered the canplaythrough event before
we registered the event handler. Fixed it by setting the source after registering the handler.

Reviewed by Chris Fleizach.

* accessibility/ios-simulator/video-elements-ios.html:

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

2 years agoVersioning.
matthew_hanson@apple.com [Fri, 6 Oct 2017 21:40:31 +0000 (21:40 +0000)]
Versioning.

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

2 years agoAdd basic support for getting a ImageBitmapRenderingContext
commit-queue@webkit.org [Fri, 6 Oct 2017 21:29:01 +0000 (21:29 +0000)]
Add basic support for getting a ImageBitmapRenderingContext
https://bugs.webkit.org/show_bug.cgi?id=177983

Patch by Sam Weinig <sam@webkit.org> on 2017-10-06
Reviewed by Dean Jackson.

Source/WebCore:

Add initial support for ImageBitmapRenderingContext.

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

    Add new files.

* dom/Document.cpp:
* dom/Document.h:
* dom/Document.idl:

    Add ImageBitmapRenderingContext to RenderingContext variant so it wil be able to
    be used with Document.getCSSCanvasContext.

* html/HTMLCanvasElement.h:
* html/HTMLCanvasElement.cpp:
(WebCore::HTMLCanvasElement::setHeight):
(WebCore::HTMLCanvasElement::setWidth):

    Throw an exception if the context is in the placeholder mode (which we
    signify via a special PlaceholderRenderingContext) as speced. This can't
    currently be hit, as setting a placeholder requires offscreen canvas
    support, coming soon.

(WebCore::HTMLCanvasElement::getContext):

    Re-work to match the spec's matrix of options, adding in support
    for 'bitmaprenderer'/ ImageBitmapRenderingContext type as well as
    the placeholder mode.

(WebCore::HTMLCanvasElement::createContext2d):
(WebCore::HTMLCanvasElement::getContext2d):
(WebCore::HTMLCanvasElement::isWebGLType):
(WebCore::HTMLCanvasElement::createContextWebGL):
(WebCore::HTMLCanvasElement::getContextWebGL):
(WebCore::HTMLCanvasElement::createContextWebGPU):
(WebCore::HTMLCanvasElement::getContextWebGPU):
(WebCore::HTMLCanvasElement::isBitmapRendererType):
(WebCore::HTMLCanvasElement::createContextBitmapRenderer):
(WebCore::HTMLCanvasElement::getContextBitmapRenderer):

    Split creation out of the get functions so it can be called
    by getContext, where we know if the canvas is null or not.

* html/HTMLCanvasElement.idl:

    Add ImageBitmapRenderingContext to RenderingContext variant so it wil be able to
    be used with HTMLCanvasElement.getContext.

* html/canvas/CanvasRenderingContext.h:
(WebCore::CanvasRenderingContext::isBitmapRenderer const):
(WebCore::CanvasRenderingContext::isPlaceholder const):

    Add predicates for ImageBitmapRenderingContext and
    PlaceholderRenderingContext.

* html/canvas/ImageBitmapRenderingContext.cpp: Added.
(WebCore::ImageBitmapRenderingContext::ImageBitmapRenderingContext):
* html/canvas/ImageBitmapRenderingContext.h: Added.
* html/canvas/ImageBitmapRenderingContext.idl: Added.
* html/canvas/PlaceholderRenderingContext.cpp: Added.
(WebCore::PlaceholderRenderingContext::PlaceholderRenderingContext):
* html/canvas/PlaceholderRenderingContext.h: Added.

    Add stubbed out implementations for the new contexts.

LayoutTests:

* js/dom/global-constructors-attributes-expected.txt:
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-sierra-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:
* platform/wpe/js/dom/global-constructors-attributes-expected.txt:

    Update test results.

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

2 years agoMark inspector/canvas/create-context-2d.html as flaky.
ryanhaddad@apple.com [Fri, 6 Oct 2017 21:08:30 +0000 (21:08 +0000)]
Mark inspector/canvas/create-context-2d.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=178028

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

2 years agoNetflix playback fails with S7353 error
jer.noble@apple.com [Fri, 6 Oct 2017 21:02:11 +0000 (21:02 +0000)]
Netflix playback fails with S7353 error
https://bugs.webkit.org/show_bug.cgi?id=178023

Reviewed by Dean Jackson.

On certain platforms, WebCoreDecompressionSession will fail to produce CVImageBuffers when presented with
encrypted content. On those platforms, the seek() command will fail, because frames at the destination time
cannot be decoded. This occurs for Netflix because the <video> element is not in the DOM at decode time.

Only create a WebCoreDecompressionSession in MediaPlayerPrivateMediaSourceAVFObjC when we have explicitly
been asked to paint into a WebGL canvas.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::acceleratedRenderingStateChanged):

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

2 years agoSkipped http/tests/cache/disk-cache/disk-cache-validation-no-body.html on El Capitan...
jlewis3@apple.com [Fri, 6 Oct 2017 20:14:40 +0000 (20:14 +0000)]
Skipped http/tests/cache/disk-cache/disk-cache-validation-no-body.html on El Capitan Release.
https://bugs.webkit.org/show_bug.cgi?id=178019

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

2 years agoReplace some stack raw pointers with RefPtrs within WebCore/dom
jiewen_tan@apple.com [Fri, 6 Oct 2017 20:10:25 +0000 (20:10 +0000)]
Replace some stack raw pointers with RefPtrs within WebCore/dom
https://bugs.webkit.org/show_bug.cgi?id=177852
<rdar://problem/34804487>

Reviewed by Ryosuke Niwa.

This is an effort to reduce raw pointer usage in DOM code. In this patch,
stack raw pointers that could be freed during their lifetime because of
event dispatching, layout updating and etc are selected. All selections are
basing on code speculation.

No changes in behaviours.

* dom/ContainerNodeAlgorithms.cpp:
(WebCore::addChildNodesToDeletionQueue):
Escalate the RefPtr to where node is first defined.
* dom/Document.cpp:
(WebCore::Document::setVisualUpdatesAllowed):
(WebCore::Document::updateLayout):
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):
Possible layout updates during their lifetime.
(WebCore::Document::implicitClose):
Possible event dispatching during its lifetime.
(WebCore::Document::nodeChildrenWillBeRemoved):
(WebCore::Document::nodeWillBeRemoved):
Possible node removal during their lifetime.
(WebCore::command):
Possible layout updates during its lifetime.
* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::renderedRectsForMarkers):
Possible layout updates during its lifetime.
* dom/Element.cpp:
(WebCore::Element::removedFrom):
 Possible event dispatching during its lifetime.
(WebCore::checkForSiblingStyleChanges):
Possible layout updates during their lifetime.
* dom/MouseRelatedEvent.cpp:
(WebCore::MouseRelatedEvent::computeRelativePosition):
Possible layout updates during its lifetime.
* dom/RadioButtonGroups.cpp:
(WebCore::RadioButtonGroup::setCheckedButton):
Possible layout updates during its lifetime.
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::didChangeSlot):
Possible layout updates during its lifetime.

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

2 years agoAdd try-bot button on perf analysis status page.
dewei_zhu@apple.com [Fri, 6 Oct 2017 19:54:51 +0000 (19:54 +0000)]
Add try-bot button on perf analysis status page.
https://bugs.webkit.org/show_bug.cgi?id=177995

Reviewed by Ryosuke Niwa.

Add 'Create' button on analysis status top-left corner to create trybot analysis task.

* public/v3/pages/analysis-category-toolbar.js:
(AnalysisCategoryToolbar.cssTemplate):

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

2 years ago[iOS] Tweak support for classifying form controls (followup to r222487)
wenson_hsieh@apple.com [Fri, 6 Oct 2017 18:53:00 +0000 (18:53 +0000)]
[iOS] Tweak support for classifying form controls (followup to r222487)
https://bugs.webkit.org/show_bug.cgi?id=177917
<rdar://problem/34820122>

Reviewed by Dean Jackson.

Source/WebKit:

This patch follows up with <http://trac.webkit.org/r222487>. It combines the functionality of two SPI hooks
implemented on WKContentView into a single method that vends a context dictionary, and additionally addresses an
issue with the original implementation, wherein some cached state on WebPageProxy is set upon starting node
assistance, but is never unset when stopping node assistance, nor set anywhere else. See per-method comments for
more detail.

* UIProcess/WebPageProxy.h:

Remove members m_acceptsAutofilledLoginCredentials and m_representingPageURL from WebPageProxy. This state is
retrieved from the AssistedNodeInformation struct when starting node assistance, but is never reset anywhere
else. Instead of introducing new members to remember this state, we can just use the WKContentView's current
assisted node information.

This also means that programmatically focusing forms (without user gesture) will no longer cause WKContentView
to accept autofilled login credentials, since we bail out of node assistance and don't begin an input session.

* UIProcess/ios/WKContentView.mm:
(-[WKContentView acceptsAutofilledLoginCredentials]): Deleted.
(-[WKContentView representingPageURL]): Deleted.
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _autofillContext]):

Merge functionality of the previous two SPI hooks, such that -_autofillContext will return a non-null dictionary
containing the URL of the focused element's document if and only if WKContentView accepts autofilled login
credentials, and there exists a representing page URL.

When the page stops assisting the focused node, we set the AssistedNodeInformation's element type to None, so we
additionally bail and return nil if the element type is None. As an aside, it seems a more reasonable approach to
resetting state upon stopping node assistance is to just completely reset _assistedNodeInformation to its initial
value, i.e. via _assistedNodeInformation = { }. It's not clear whether there are behaviors relying on the fact
that all members but the element type in the content view's assisted node information could be stale, so this
seems worthy of some investigation.

* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::startAssistingNode):
(WebKit::WebPageProxy::acceptsAutofilledLoginCredentials): Deleted.
(WebKit::WebPageProxy::representingPageURL): Deleted.

Source/WebKitLegacy/mac:

Implement _autofillContext in legacy WebKit, and remove the two previous SPI hooks.

* DOM/DOMHTMLInputElement.mm:
(-[DOMHTMLInputElement _autofillContext]):
(-[DOMHTMLInputElement acceptsAutofilledLoginCredentials]): Deleted.
(-[DOMHTMLInputElement representingPageURL]): Deleted.

Tools:

Minor cleanup around autofill API tests added in r222487. Additionally, augments some of these API tests to
verify that after blurring the focused element, the content view no longer accepts autofill credentials (see
WebKit ChangeLog for more details). Also augments tests to verify that the URL in the autofill context matches
the document URL.

* TestWebKitAPI/Tests/ios/WKWebViewAutofillTests.mm:

Remove the USE(APPLE_INTERNAL_SDK) guard for these API tests.

(newUIKeyboardLoginCredentialsSuggestion):

Add a stub implementation of UIKeyboardLoginCredentialsSuggestion. This allows
[UIKeyboardLoginCredentialsSuggestion new] to return a nonnull object, which allows these API tests to verify
that the credential filling codepath works as intended without any additional UIKit changes. Currently, tests
for the value of username and password fields are passing even though the fields are not being populated because
the expected string values are null, and the observed value is an empty string. We instead check the literal
string values here instead of credentialSuggestion's properties, so that tests verifying the behavior of
-insertTextSuggestion: will require username and password inputs to be populated.

(-[TestInputDelegate _webView:focusShouldStartInputSession:]):
(-[AutofillTestView initWithFrame:]):
(-[AutofillTestView _autofillInputView]):
(-[AutofillTestView textInputHasAutofillContext]):
(TestWebKitAPI::TEST):

Add an additional API test to verify that programmatic focus without user interaction (and also without testing
overrides) does not activate autofill.

(createUIKeyboardLoginCredentialsSuggestion): Deleted.
(-[WKWebView _privateTextInput]): Deleted.
* TestWebKitAPI/ios/UIKitSPI.h:

Minor gardening to remove iOS version >= 11 guards that are now unnecessary. Additionally, add some more private
header imports (with corresponding interface definitions for building and running with the public SDK).

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

2 years agoRootInlineBox should not hold a raw pointer to RenderObject
zalan@apple.com [Fri, 6 Oct 2017 18:47:47 +0000 (18:47 +0000)]
RootInlineBox should not hold a raw pointer to RenderObject
https://bugs.webkit.org/show_bug.cgi?id=178018
<rdar://problem/34859256>

Reviewed by Simon Fraser.

Not resetting the line break object could lead to dereferencing a stale renderer.

Covered by existing tests.

* rendering/RootInlineBox.cpp:
(WebCore::RootInlineBox::RootInlineBox):
(WebCore::RootInlineBox::setLineBreakInfo):
* rendering/RootInlineBox.h:
(WebCore::RootInlineBox::lineBreakObj const):

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

2 years ago[WinCairo] Add shared curl files
commit-queue@webkit.org [Fri, 6 Oct 2017 18:12:14 +0000 (18:12 +0000)]
[WinCairo] Add shared curl files
https://bugs.webkit.org/show_bug.cgi?id=177999

Patch by Yousuke Kimoto <yousuke.kimoto@sony.com> on 2017-10-06
Reviewed by Alex Christensen.

* PlatformWin.cmake:
* Shared/Authentication/curl/AuthenticationManagerCurl.cpp: Added.
(WebKit::AuthenticationManager::receivedCredential):
(WebKit::AuthenticationManager::receivedRequestToContinueWithoutCredential):
(WebKit::AuthenticationManager::receivedCancellation):
(WebKit::AuthenticationManager::receivedRequestToPerformDefaultHandling):
(WebKit::AuthenticationManager::receivedChallengeRejection):
* Shared/curl/WebCoreArgumentCodersCurl.cpp: Added.
(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):
(IPC::ArgumentCoder<CertificateInfo>::encode):
(IPC::ArgumentCoder<CertificateInfo>::decode):
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):
(IPC::ArgumentCoder<ProtectionSpace>::encodePlatformData):
(IPC::ArgumentCoder<ProtectionSpace>::decodePlatformData):
(IPC::ArgumentCoder<Credential>::encodePlatformData):
(IPC::ArgumentCoder<Credential>::decodePlatformData):

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

2 years agoWeb Inspector: Network Tab - Make selection in the table more reliable (mousedown...
commit-queue@webkit.org [Fri, 6 Oct 2017 18:03:17 +0000 (18:03 +0000)]
Web Inspector: Network Tab - Make selection in the table more reliable (mousedown instead of click)
https://bugs.webkit.org/show_bug.cgi?id=177990

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-10-06
Reviewed by Brian Burg.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.tableCellClicked): Deleted.
* UserInterface/Views/Table.js:
(WI.Table.prototype._handleMouseDown):
(WI.Table.prototype._handleClick): Deleted.
Switch to mousedown.

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

2 years agoRemoving some dead code in RTCPeerConnection
commit-queue@webkit.org [Fri, 6 Oct 2017 16:59:41 +0000 (16:59 +0000)]
Removing some dead code in RTCPeerConnection
https://bugs.webkit.org/show_bug.cgi?id=178011

Patch by Youenn Fablet <youenn@apple.com> on 2017-10-06
Reviewed by Alejandro G. Castro.

No change of behavior.
Removing code used by non-libwebrtc WebRTC backends.

* Modules/mediastream/RTCPeerConnection.cpp:
(WebCore::RTCPeerConnection::addTrack):
(WebCore::RTCPeerConnection::removeTrack):
(WebCore::RTCPeerConnection::completeAddTransceiver):

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

2 years agoImageBitmap API stubs
dino@apple.com [Fri, 6 Oct 2017 16:51:47 +0000 (16:51 +0000)]
ImageBitmap API stubs
https://bugs.webkit.org/show_bug.cgi?id=177984
<rdar://problem/34848023>

Patch by Sam and Dean.
Reviewed by Dean and Sam.

Source/WebCore:

Add the IDL for ImageBitmap and ImageBitmapOptions, plus some
stub implementations (complete with all the algorithms from
the HTML specification as comments).

* CMakeLists.txt: Add the new files.
* DerivedSources.make: Create the JS bindings for ImageBitmap and ImageBitmapOptions.
* WebCore.xcodeproj/project.pbxproj:
* bindings/js/CallTracerTypes.h:
* html/ImageBitmap.cpp: Added.
(WebCore::ImageBitmap::create):
(WebCore::ImageBitmap::createPromise):
(WebCore::ImageBitmap::ImageBitmap):
(WebCore::ImageBitmap::~ImageBitmap):
(WebCore::ImageBitmap::width const):
(WebCore::ImageBitmap::height const):
(WebCore::ImageBitmap::close):
* html/ImageBitmap.h: Added.
(WebCore::ImageBitmap::isDetached const):
* html/ImageBitmap.idl: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
* html/ImageBitmapOptions.h: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
* html/ImageBitmapOptions.idl: Copied from Source/WebCore/html/canvas/CanvasDrawImage.idl.
* html/canvas/CanvasDrawImage.idl:
* html/canvas/CanvasFillStrokeStyles.idl:
* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::size):
(WebCore::CanvasRenderingContext2D::drawImage):
(WebCore::CanvasRenderingContext2D::createPattern):
* html/canvas/CanvasRenderingContext2D.h:
* inspector/InspectorCanvas.cpp:
(WebCore::InspectorCanvas::indexForData):
(WebCore::InspectorCanvas::buildAction):
(WebCore::InspectorCanvas::buildArrayForImageBitmap):
* inspector/InspectorCanvas.h:
* inspector/RecordingSwizzleTypes.h:

LayoutTests:

New global constructors, so go through the pain of updating all
the platform results :(

* js/dom/global-constructors-attributes-expected.txt:
* platform/gtk/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan-wk2/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-sierra-wk2/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-sierra/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-wk2/js/dom/global-constructors-attributes-expected.txt:
* platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
* platform/mac/js/dom/global-constructors-attributes-expected.txt:
* platform/win/js/dom/global-constructors-attributes-expected.txt:
* platform/wpe/js/dom/global-constructors-attributes-expected.txt:

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

2 years agoCreate bindings for WebGL2's versions of texImage2D.
Ms2ger@igalia.com [Fri, 6 Oct 2017 16:49:50 +0000 (16:49 +0000)]
Create bindings for WebGL2's versions of texImage2D.
https://bugs.webkit.org/show_bug.cgi?id=178006

Reviewed by Dean Jackson.

No new tests: not much point in adding tests now; this method doesn't
do anything anyway.

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::texImage2D):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGL2RenderingContext.idl:
* html/canvas/WebGLRenderingContext.idl:
* html/canvas/WebGLRenderingContextBase.idl:

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

2 years agoSandbox rules block PluginProcess using "File Open/Save" dialogs
bfulgham@apple.com [Fri, 6 Oct 2017 16:40:53 +0000 (16:40 +0000)]
Sandbox rules block PluginProcess using "File Open/Save" dialogs
https://bugs.webkit.org/show_bug.cgi?id=177965
<rdar://problem/33976846>

Reviewed by Alexey Proskuryakov.

Update the PluginProcess sandboxes to allow the same XPC services as
the WebContent process. Also allow access to the openAndSavePanelServices.

* PluginProcess/mac/com.apple.WebKit.plugin-common.sb.in:

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

2 years agoWeb Inspector: Improve setting the default / initial sort of a Table
commit-queue@webkit.org [Fri, 6 Oct 2017 16:37:56 +0000 (16:37 +0000)]
Web Inspector: Improve setting the default / initial sort of a Table
https://bugs.webkit.org/show_bug.cgi?id=177989

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-10-06
Reviewed by Brian Burg.

* UserInterface/Views/NetworkTableContentView.js:
(WI.NetworkTableContentView.prototype.initialLayout):
Set the default / initial sort.

* UserInterface/Views/Table.js:
(WI.Table):
(WI.Table.prototype.set sortOrder):
(WI.Table.prototype.set sortColumnIdentifier):
During setup we should always update header views.

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

2 years agoUse one Scavenger thread for all Heaps
fpizlo@apple.com [Fri, 6 Oct 2017 16:34:41 +0000 (16:34 +0000)]
Use one Scavenger thread for all Heaps
https://bugs.webkit.org/show_bug.cgi?id=174973

Reviewed by JF Bastien.

This combines the scavengers from all Heap instances into a single scavenger. It also combines
the accounting for deciding when to run. Each Heap still controls what it means to scavenge
itself (it's all in Heap::scavenge) but the policy decisions are all controlled by Scavenger.
Because Scavenger is also the only thing that needs an AsyncTask, this removes AsyncTask and
moves all of AsyncTask's logic into Scavenger.

This appears to be a 1% progression on JetStream (with high statistical confidence: p = 0.0049).

* bmalloc.xcodeproj/project.pbxproj:
* bmalloc/AsyncTask.h: Removed.
* bmalloc/Heap.cpp:
(bmalloc::Heap::Heap):
(bmalloc::Heap::allocateSmallChunk):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::deallocateSmallLine):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateLarge):
(bmalloc::Heap::shrinkLarge):
(bmalloc::Heap::deallocateLarge):
(bmalloc::Heap::concurrentScavenge): Deleted.
(bmalloc::Heap::scheduleScavengerIfUnderMemoryPressure): Deleted.
(bmalloc::Heap::scheduleScavenger): Deleted.
* bmalloc/Heap.h:
* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::Scavenger):
(bmalloc::Scavenger::run):
(bmalloc::Scavenger::runHoldingLock):
(bmalloc::Scavenger::runSoon):
(bmalloc::Scavenger::runSoonHoldingLock):
(bmalloc::Scavenger::didStartGrowing):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressure):
(bmalloc::Scavenger::scheduleIfUnderMemoryPressureHoldingLock):
(bmalloc::Scavenger::schedule):
(bmalloc::Scavenger::threadEntryPoint):
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::setSelfQOSClass):
* bmalloc/Scavenger.h:
(bmalloc::Scavenger::willRun):
(bmalloc::Scavenger::willRunSoon):

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

2 years agoAvoid integer overflow in DFGStrengthReduction.cpp
rmorisset@apple.com [Fri, 6 Oct 2017 16:33:42 +0000 (16:33 +0000)]
Avoid integer overflow in DFGStrengthReduction.cpp
https://bugs.webkit.org/show_bug.cgi?id=177944

Reviewed by Saam Barati.

The check that we won't do integer overflow by negating INT32_MIN was itself an integer overflow.
I think that signed integer overflow is undefined behaviour in C, so I replace it by an explicit check that value != INT32_MIN instead.

* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):

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

2 years agoAdd (entirely incorrect) fetching of ServiceWorker scripts.
beidson@apple.com [Fri, 6 Oct 2017 16:20:04 +0000 (16:20 +0000)]
Add (entirely incorrect) fetching of ServiceWorker scripts.
https://bugs.webkit.org/show_bug.cgi?id=176179

Reviewed by Andy Estes.

Source/WebCore:

No new tests (Covered by changes to existing tests).

When the Storage process is running the "Update" algorithm and a ServiceWorker script file needs to be fetched, this patch:
  - Messages back to the WebContent process that started the register/update job
  - Executes a FetchLoad in that script context for the script
  - Sends the results back to the Storage process

We don't do anything with the results yet.

Soon.

* WebCore.xcodeproj/project.pbxproj:

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::didFail):
* workers/WorkerScriptLoader.h:
(WebCore::WorkerScriptLoader::error const):

* workers/WorkerScriptLoaderClient.h:
(WebCore::WorkerScriptLoaderClient::~WorkerScriptLoaderClient):
(WebCore::WorkerScriptLoaderClient::didReceiveResponse): Deleted.
(WebCore::WorkerScriptLoaderClient::notifyFinished): Deleted.

* workers/service/ServiceWorkerContainer.cpp:
(WebCore::ServiceWorkerContainer::startScriptFetchForJob):
(WebCore::ServiceWorkerContainer::jobFinishedLoadingScript):
(WebCore::ServiceWorkerContainer::jobFailedLoadingScript):
* workers/service/ServiceWorkerContainer.h:

* workers/service/ServiceWorkerFetchResult.h: Copied from Source/WebCore/workers/service/server/SWClientConnection.h.
(WebCore::ServiceWorkerFetchResult::encode const):
(WebCore::ServiceWorkerFetchResult::decode):

* workers/service/ServiceWorkerJob.cpp:
(WebCore::ServiceWorkerJob::startScriptFetch):
(WebCore::ServiceWorkerJob::fetchScriptWithContext):
(WebCore::ServiceWorkerJob::didReceiveResponse):
(WebCore::ServiceWorkerJob::notifyFinished):
* workers/service/ServiceWorkerJob.h:
* workers/service/ServiceWorkerJobClient.h:

* workers/service/server/SWClientConnection.cpp:
(WebCore::SWClientConnection::finishedFetchingScript):
(WebCore::SWClientConnection::failedFetchingScript):
(WebCore::SWClientConnection::startScriptFetchForServer):
* workers/service/server/SWClientConnection.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::Connection::finishFetchingScriptInServer):
(WebCore::SWServer::startScriptFetch):
(WebCore::SWServer::scriptFetchFinished):
* workers/service/server/SWServer.h:

* workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::scriptFetchFinished):
(WebCore::SWServerRegistration::runUpdateJob):
(WebCore::SWServerRegistration::startScriptFetchFromMainThread):
(WebCore::SWServerRegistration::startScriptFetchForCurrentJob):
* workers/service/server/SWServerRegistration.h:

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startScriptFetchInClient):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:

* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::finishFetchingScriptInServer):
* WebProcess/Storage/WebSWClientConnection.h:
* WebProcess/Storage/WebSWClientConnection.messages.in:

LayoutTests:

* http/tests/workers/service/basic-register-exceptions-expected.txt:
* http/tests/workers/service/basic-register-expected.txt:
* http/tests/workers/service/resources/basic-register-exceptions.js:
* http/tests/workers/service/resources/basic-register.js:
* http/tests/workers/service/resources/registration-task-queue-scheduling-1.js:

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

2 years agoRebaseline js/dom/global-constructors-attributes.html
ryanhaddad@apple.com [Fri, 6 Oct 2017 15:06:25 +0000 (15:06 +0000)]
Rebaseline js/dom/global-constructors-attributes.html

Unreviewed test gardening.

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

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

2 years agoSkip editing/pasteboard/data-transfer-items.html on iOS.
ryanhaddad@apple.com [Fri, 6 Oct 2017 15:01:48 +0000 (15:01 +0000)]
Skip editing/pasteboard/data-transfer-items.html on iOS.
https://bugs.webkit.org/show_bug.cgi?id=177961

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

2 years agoMinor WeakPtr improvements
antti@apple.com [Fri, 6 Oct 2017 13:08:58 +0000 (13:08 +0000)]
Minor WeakPtr improvements
https://bugs.webkit.org/show_bug.cgi?id=177958

Reviewed by Sam Weinig.

Source/WTF:

* wtf/WeakPtr.h:
(WTF::WeakPtr::operator bool const):

    Make explicit.

(WTF::WeakPtrFactory::createWeakPtr const):
(WTF::makeWeakPtr):

    Remove templating from createWeakPtr, makeWeakPtr() is now the
    canonical way to make derived-type WeakPtrs.

Tools:

* TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
(TestWebKitAPI::TEST):
(TestWebKitAPI::Base::createWeakPtr): Deleted.

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

2 years agoUnreviewed. Fix parsing of GTK unit tests output in bot configuration.
carlosgc@webkit.org [Fri, 6 Oct 2017 13:05:57 +0000 (13:05 +0000)]
Unreviewed. Fix parsing of GTK unit tests output in bot configuration.

* BuildSlaveSupport/build.webkit.org-config/master.cfg:
(RunGtkAPITests.commandComplete): Remove trailing ':' from the regular expression.

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

2 years ago[Cairo] Create Cairo patterns from Gradient objects on-the-fly
zandobersek@gmail.com [Fri, 6 Oct 2017 10:44:53 +0000 (10:44 +0000)]
[Cairo] Create Cairo patterns from Gradient objects on-the-fly
https://bugs.webkit.org/show_bug.cgi?id=177947

Reviewed by Carlos Garcia Campos.

Stop caching cairo_pattern_t objects for a specific global alpha value
in the Gradient class. Instead, create these as required, for whatever
alpha value. This drops some efficiency benefits in exchange for better
Cairo operation isolation, while also matching the same approach that
is used in the Pattern implementation for Cairo.

Introduce the createPlatformGradient() method for Cairo, resuing the
implementation of platformGradient() that's now removed. The
Cairo-specific setPlatformGradientSpaceTransform() method is also
removed since there's no cached cairo_pattern_t object that we can
update. The Cairo-specific m_platformGradientAlpha member float is also
deleted.

Gradient::fill() and prepareCairoContextSource() are the only two places
that need to create a cairo_pattern_t object off of Gradient, so they
are updated accordingly.

No new tests -- no changes in behavior.

* platform/graphics/Gradient.cpp:
(WebCore::Gradient::setGradientSpaceTransform):
(WebCore::Gradient::setPlatformGradientSpaceTransform): Deleted.
* platform/graphics/Gradient.h:
* platform/graphics/cairo/GradientCairo.cpp:
(WebCore::Gradient::platformDestroy):
(WebCore::Gradient::createPlatformGradient):
(WebCore::Gradient::fill):
(WebCore::Gradient::platformGradient): Deleted.
(WebCore::Gradient::setPlatformGradientSpaceTransform): Deleted.
* platform/graphics/cairo/PlatformContextCairo.cpp:
(WebCore::prepareCairoContextSource):

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

2 years agoCreate bindings for WebGL2's versions of compressedTexImage2D.
Ms2ger@igalia.com [Fri, 6 Oct 2017 10:22:37 +0000 (10:22 +0000)]
Create bindings for WebGL2's versions of compressedTexImage2D.
https://bugs.webkit.org/show_bug.cgi?id=177481

Reviewed by Žan Doberšek.

No new tests: not much point in adding tests now; this method doesn't
do anything anyway.

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::compressedTexImage2D):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGL2RenderingContext.idl:
* html/canvas/WebGLRenderingContext.idl:
* html/canvas/WebGLRenderingContextBase.idl:

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

2 years ago[GTK] 2 text tests failing since r222838
tpopela@redhat.com [Fri, 6 Oct 2017 10:16:51 +0000 (10:16 +0000)]
[GTK] 2 text tests failing since r222838
https://bugs.webkit.org/show_bug.cgi?id=177938

Reviewed by Carlos Garcia Campos.

These tests are passing after r222907

* platform/gtk/TestExpectations:

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

2 years ago[GStreamer][MSE] Likely race condition causes WTF::Deque to crash on debug
eocanha@igalia.com [Fri, 6 Oct 2017 09:43:25 +0000 (09:43 +0000)]
[GStreamer][MSE] Likely race condition causes WTF::Deque to crash on debug
https://bugs.webkit.org/show_bug.cgi?id=177410

Reviewed by Xabier Rodriguez-Calvar.

Deque keeps a chain of iterators which is updated as iterators are
created/destroyed. This can cause problems when iterators are created
from multiple threads as they are now, sometimes without proper
locking because it's not actually needed.

For instance, the lock in PlaybackPipeline::enqueueSample() is not
needed because none of the accesses are actually risky. Locking there
just to make Deque happy would only cause a performance penalty on the
readers working in other threads.

No new tests.

* platform/graphics/gstreamer/mse/PlaybackPipeline.cpp:
(WebCore::PlaybackPipeline::addSourceBuffer): Use Vector instead of
Deque.
(WebCore::PlaybackPipeline::removeSourceBuffer): Ditto.
(WebCore::PlaybackPipeline::enqueueSample): Remove lock and explain
why it's not needed.
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamer.cpp:
(webKitMediaSrcFinalize): Use Vector.
* platform/graphics/gstreamer/mse/WebKitMediaSourceGStreamerPrivate.h:
Use Vector.

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

2 years agoRemove dead code from Pattern
zandobersek@gmail.com [Fri, 6 Oct 2017 09:30:58 +0000 (09:30 +0000)]
Remove dead code from Pattern
https://bugs.webkit.org/show_bug.cgi?id=177945

Reviewed by Carlos Garcia Campos.

Drop the platormDestroy() and setPlatformPatternSpaceTransform() methods
from the Pattern class -- these were empty implementations, with no port
providing their own. The destructor is defaulted in the implementation
file. The m_pattern member variable is also dropped as it was unused.

No new tests -- no change in behavior.

* platform/graphics/Pattern.cpp:
(WebCore::Pattern::setPatternSpaceTransform):
(WebCore::Pattern::~Pattern): Deleted.
(WebCore::Pattern::platformDestroy): Deleted.
(WebCore::Pattern::setPlatformPatternSpaceTransform): Deleted.
* platform/graphics/Pattern.h:

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

2 years agoDisable bmalloc when running Valgrind
cturner@igalia.com [Fri, 6 Oct 2017 09:01:22 +0000 (09:01 +0000)]
Disable bmalloc when running Valgrind
https://bugs.webkit.org/show_bug.cgi?id=177923

Reviewed by Carlos Alberto Lopez Perez.

* Scripts/webkitpy/port/gtk.py:
(GtkPort.setup_environ_for_server):

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

2 years ago[GTK][Clang] Build fix after r222926
clopez@igalia.com [Fri, 6 Oct 2017 08:52:33 +0000 (08:52 +0000)]
[GTK][Clang] Build fix after r222926
https://bugs.webkit.org/show_bug.cgi?id=175384

Unreviewed build fix.

* css/CSSFontFace.cpp:
(WebCore::CSSFontFace::setStatus):

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

2 years agoImplement TestController::platformContext() for WPE, returning the
zandobersek@gmail.com [Fri, 6 Oct 2017 08:36:36 +0000 (08:36 +0000)]
Implement TestController::platformContext() for WPE, returning the
m_context pointer as the GTK+ port does. This fixes the crashes on
the WPE testers.

Rubber-stamped by Carlos Garcia Campos.

* WebKitTestRunner/wpe/TestControllerWPE.cpp:
(WTR::TestController::platformContext):

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

2 years ago[GTK][WPE] Add API to configure and enable resource load statistics
carlosgc@webkit.org [Fri, 6 Oct 2017 07:47:01 +0000 (07:47 +0000)]
[GTK][WPE] Add API to configure and enable resource load statistics
https://bugs.webkit.org/show_bug.cgi?id=177943

Reviewed by Michael Catanzaro.

Source/WebKit:

Add new WebKitWebsiteDataManager construct only property to set the directory where the persistent stats are
stored, and methods to enable resource load statistics and query whether it's currently enabled. Also add a new
Website data type to be able to remove the persistent stats using WebKitWebsiteDataManager existing API.

* UIProcess/API/glib/WebKitWebContext.cpp:
(websiteDataStoreConfigurationForWebProcessPoolConfiguration):
(webkitWebContextConstructed):
* UIProcess/API/glib/WebKitWebsiteData.cpp:
(recordContainsSupportedDataTypes):
(toWebKitWebsiteDataTypes):
* UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
(webkitWebsiteDataManagerGetProperty):
(webkitWebsiteDataManagerSetProperty):
(webkitWebsiteDataManagerConstructed):
(webkit_website_data_manager_class_init):
(webkitWebsiteDataManagerGetDataStore):
(webkit_website_data_manager_get_resource_load_stats_directory):
(webkit_website_data_manager_set_resource_load_stats_enabled):
(webkit_website_data_manager_get_resource_load_stats_enabled):
(toWebsiteDataTypes):
* UIProcess/API/gtk/WebKitWebsiteData.h:
* UIProcess/API/gtk/WebKitWebsiteDataManager.h:
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/wpe/WebKitWebsiteData.h:
* UIProcess/API/wpe/WebKitWebsiteDataManager.h:

Tools:

Add a command line option to enable intelligent tracking prevention to MiniBrowser and tests cases to check the
new API.

* MiniBrowser/gtk/main.c:
(main):
* TestWebKitAPI/Tests/WebKitGLib/TestWebsiteData.cpp:
(serverCallback):
(testWebsiteDataConfiguration):
(testWebsiteDataEphemeral):
(testWebsiteDataResourceLoadStats):
(beforeAll):
* TestWebKitAPI/glib/WebKitGLib/TestMain.h:
(Test::Test):
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.cpp:
(directoryChangedCallback):
(WebViewTest::waitUntilFileExists):
* TestWebKitAPI/glib/WebKitGLib/WebViewTest.h:

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

2 years ago[MSE][GStreamer] Seek on youtube.com/tv fails after r217185
eocanha@igalia.com [Fri, 6 Oct 2017 07:44:11 +0000 (07:44 +0000)]
[MSE][GStreamer] Seek on youtube.com/tv fails after r217185
https://bugs.webkit.org/show_bug.cgi?id=177976

Reviewed by Jer Noble.

Covered by existing tests.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::seekToTime): Only call waitForSeekCompleted()
when the time is not buffered when using GStreamer.

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

2 years ago[MSE] Dead code in SourceBuffer::appendBufferTimerFired()
eocanha@igalia.com [Fri, 6 Oct 2017 07:43:53 +0000 (07:43 +0000)]
[MSE] Dead code in SourceBuffer::appendBufferTimerFired()
https://bugs.webkit.org/show_bug.cgi?id=177951

Reviewed by Jer Noble.

Covered by LayoutTests/imported/w3c/web-platform-tests/media-source/mediasource-append-buffer.html.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::appendBufferTimerFired): Remove redundant code.

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

2 years agoSplit StaticPasteboard::writeString into writeString and writeStringInCustomData
rniwa@webkit.org [Fri, 6 Oct 2017 07:30:20 +0000 (07:30 +0000)]
Split StaticPasteboard::writeString into writeString and writeStringInCustomData
https://bugs.webkit.org/show_bug.cgi?id=177991

Reviewed by Wenson Hsieh.

Split writeString into the one that writes into the plaform pasteboard natively and the custom pasteboard data like we did
in r222680 for readString and readStringInCustomData.

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::setData):
(WebCore::DataTransfer::setDataFromItemList): Extracted out of setData.
* dom/DataTransfer.h:
* dom/DataTransferItemList.cpp:
(WebCore::DataTransferItemList::add):
* platform/StaticPasteboard.cpp:
(WebCore::updateTypes): Extacted out of writeString.
(WebCore::StaticPasteboard::writeString):
(WebCore::StaticPasteboard::writeStringInCustomData):
* platform/StaticPasteboard.h:

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

2 years ago[WebGL] Safari performance is slow due to high MSAA usage
dino@apple.com [Fri, 6 Oct 2017 06:52:16 +0000 (06:52 +0000)]
[WebGL] Safari performance is slow due to high MSAA usage
https://bugs.webkit.org/show_bug.cgi?id=177949
<rdar://problem/34835619>

Reviewed by Sam Weinig.

On some hardware, typically integrated GPUs, using MSAA with a sample
count above 4 produces bad performance. Limit the number of samples to
4 universally.

* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::GraphicsContext3D::reshapeFBOs):

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

2 years ago[GTK][WPE] All resource load statistics tests added in r212183 crash in GTK bots...
carlosgc@webkit.org [Fri, 6 Oct 2017 06:48:38 +0000 (06:48 +0000)]
[GTK][WPE] All resource load statistics tests added in r212183 crash in GTK bots, timeout in GTK and WPE bots since r219049
https://bugs.webkit.org/show_bug.cgi?id=168171

Reviewed by Chris Dumez.

Source/WebCore:

Add an implementation of FileMonitor for GLib based ports.

* PlatformGTK.cmake:
* PlatformWPE.cmake:
* platform/FileMonitor.cpp:
* platform/FileMonitor.h:
* platform/glib/FileMonitorGLib.cpp: Added.
(WebCore::FileMonitor::FileMonitor):
(WebCore::FileMonitor::~FileMonitor):
(WebCore::FileMonitor::fileChangedCallback):
(WebCore::FileMonitor::didChange):

Source/WebKit:

Add C API to handle all resource load statistics requests made by the layout tests.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreSetStatisticsLastSeen):
(WKWebsiteDataStoreSetStatisticsPrevalentResource):
(WKWebsiteDataStoreIsStatisticsPrevalentResource):
(WKWebsiteDataStoreSetStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreIsStatisticsHasHadUserInteraction):
(WKWebsiteDataStoreSetStatisticsGrandfathered):
(WKWebsiteDataStoreIsStatisticsGrandfathered):
(WKWebsiteDataStoreSetStatisticsSubframeUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUnderTopFrameOrigin):
(WKWebsiteDataStoreSetStatisticsSubresourceUniqueRedirectTo):
(WKWebsiteDataStoreSetStatisticsTimeToLiveUserInteraction):
(WKWebsiteDataStoreSetStatisticsTimeToLiveCookiePartitionFree):
(WKWebsiteDataStoreStatisticsProcessStatisticsAndDataRecords):
(WKWebsiteDataStoreStatisticsUpdateCookiePartitioning):
(WKWebsiteDataStoreSetStatisticsShouldPartitionCookiesForHost):
(WKWebsiteDataStoreStatisticsSubmitTelemetry):
(WKWebsiteDataStoreSetStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WKWebsiteDataStoreSetStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WKWebsiteDataStoreSetStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WKWebsiteDataStoreSetStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WKWebsiteDataStoreSetStatisticsGrandfatheringTime):
(WKWebsiteDataStoreSetStatisticsMaxStatisticsEntries):
(WKWebsiteDataStoreSetStatisticsPruneEntriesDownTo):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStore):
(WKWebsiteDataStoreStatisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WKWebsiteDataStoreStatisticsClearThroughWebsiteDataRemoval):
(WKWebsiteDataStoreStatisticsResetToConsistentState):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:

Tools:

Implement all resource load statistics functions in TestController using the C API. Also enable the FileMonitor
unit test. This test requires a platform implementation of Util::run(), so I've added UtilitiesGLib.cpp with an
iplementation common to glib based ports using WTF RunLoop abstraction.

* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWPE.cmake:
* TestWebKitAPI/Tests/WebCore/FileMonitor.cpp:
* TestWebKitAPI/glib/UtilitiesGLib.cpp: Copied from Source/WebKit/UIProcess/API/C/WKWebsiteDataStoreRef.h.
(TestWebKitAPI::Util::run):
(TestWebKitAPI::Util::spinRunLoop):
(TestWebKitAPI::Util::sleep):
* TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp:
* TestWebKitAPI/wpe/PlatformUtilitiesWPE.cpp:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::platformAdjustContext):
(WTR::TestController::setStatisticsLastSeen):
(WTR::TestController::setStatisticsPrevalentResource):
(WTR::ResourceStatisticsCallbackContext::ResourceStatisticsCallbackContext):
(WTR::resourceStatisticsCallback):
(WTR::TestController::isStatisticsPrevalentResource):
(WTR::TestController::setStatisticsHasHadUserInteraction):
(WTR::TestController::isStatisticsHasHadUserInteraction):
(WTR::TestController::setStatisticsGrandfathered):
(WTR::TestController::isStatisticsGrandfathered):
(WTR::TestController::setStatisticsSubframeUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUnderTopFrameOrigin):
(WTR::TestController::setStatisticsSubresourceUniqueRedirectTo):
(WTR::TestController::setStatisticsTimeToLiveUserInteraction):
(WTR::TestController::setStatisticsTimeToLiveCookiePartitionFree):
(WTR::TestController::statisticsProcessStatisticsAndDataRecords):
(WTR::TestController::statisticsUpdateCookiePartitioning):
(WTR::TestController::statisticsSetShouldPartitionCookiesForHost):
(WTR::TestController::statisticsSubmitTelemetry):
(WTR::TestController::setStatisticsNotifyPagesWhenDataRecordsWereScanned):
(WTR::TestController::setStatisticsShouldClassifyResourcesBeforeDataRecordsRemoval):
(WTR::TestController::setStatisticsNotifyPagesWhenTelemetryWasCaptured):
(WTR::TestController::setStatisticsMinimumTimeBetweenDataRecordsRemoval):
(WTR::TestController::setStatisticsGrandfatheringTime):
(WTR::TestController::setStatisticsMaxStatisticsEntries):
(WTR::TestController::setStatisticsPruneEntriesDownTo):
(WTR::TestController::statisticsClearInMemoryAndPersistentStore):
(WTR::TestController::statisticsClearInMemoryAndPersistentStoreModifiedSinceHours):
(WTR::TestController::statisticsClearThroughWebsiteDataRemovalCallback):
(WTR::TestController::statisticsClearThroughWebsiteDataRemoval):
(WTR::TestController::statisticsResetToConsistentState):
* WebKitTestRunner/TestController.h:

LayoutTests:

Unskip the tests.

* platform/wpe/TestExpectations:
* platform/wpe/TestExpectations:

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

2 years agoLots of missing frames in YouTube360 when fullscreen on MacBook
dino@apple.com [Fri, 6 Oct 2017 06:37:16 +0000 (06:37 +0000)]
Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

Reviewed by Sam Weinig.

Source/WebCore:

Our compositing path for WebGL on macOS was too slow, requiring a copy
of the framebuffer into another GL context. Replace this by having
WebGL render into a texture that is backed by an IOSurface, and then
set the WebGLLayer to use the IOSurface as contents.

Covered by the existing WebGL tests.

* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::platformTexture const): We no longer use the
framebuffer object outside the class, so change this to return the GL texture
that the framebuffer is rendering in to. It was kind-of strange that it was
named this way originally.
Also make endPaint available on macOS, and add the definitions for
createIOSurfaceBackingStore and updateFramebufferTextureBackingStoreFromLayer.

* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D): Now that we're using an IOSurface,
we're binding to a new attachment point, GL_TEXTURE_RECTANGLE.
(WebCore::GraphicsContext3D::endPaint): This is now being called on macOS and iOS,
so add a comment that explains the extra work that iOS needs to do. At some future
point it would be nice to make this slightly cleaner, so that iOS and macOS are
more similar.
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore): New function that calls
into the corresponding WebGLLayer function.
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer): Ditto.

* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::wipeAlphaChannelFromPixels): Both readPixels and drawing a WebGL context
into another buffer need to fill out the alpha channel if this context was
created without one, otherwise the IOSurface backing store will happily provide
what might be non-zero values.
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary): Call the helper above.
(WebCore::GraphicsContext3D::reshapeFBOs): Add more code to call into the macOS-specific
function to use an IOSurface as the framebuffer texture.
(WebCore::GraphicsContext3D::readPixels): Call the helper above.

* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayerCocoa::copyContentsFromLayer): Replace the use of the
deprecated setContentsChanged with reloadValueForKeyPath.

* platform/graphics/cocoa/WebGLLayer.h: The macOS implementation now
inherits from CALayer directly rather than CAOpenGLLayer. It also adds
a few member variables to handle the IOSurfaces used for triple buffering.

* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer initWithGraphicsContext3D:]): If we were created without an
alpha channel, tell CA that we're an opaque layer. Also set the layer's transform
to identity, so that it calls into the code below to flip the contents.
(-[WebGLLayer setTransform:]): Because an IOSurface is used for the layer contents,
we don't get a chance to flip the drawing the way we do via the drawInContext delegate.
Instead we have to apply a scale(1, -1) transform on top of the layer transform to
make sure the layer is rendered right-way up.
(-[WebGLLayer setAnchorPoint:]): Ditto, except we have to assume the anchor point is
at the bottom of the layer, so flip the Y value.
(-[WebGLLayer display]): Swap between the drawing buffer and the contents buffer, and
then get a new buffer ready for display.
(createAppropriateIOSurface): Helper.
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): Initializes the
IOSurfaces used for drawing buffers.
(-[WebGLLayer bindFramebufferToNextAvailableSurface]): Take the next available IOSurface and
make it the drawing buffer (binding in to WebGL at the same time).
(-[WebGLLayer copyCGLPixelFormatForDisplayMask:]): Deleted.
(-[WebGLLayer copyCGLContextForPixelFormat:]): Deleted.
(-[WebGLLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.

* platform/graphics/mac/WebLayer.mm: Remove the definition of reloadValueForKeyPath.

Source/WebCore/PAL:

Add reloadValueForKeyPath to replace setContentsChanged on CALayer.

* pal/spi/cocoa/QuartzCoreSPI.h:

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

2 years agoUpdate Source/ThirdParty/woff2 to 22c256bc457777744ba14b7325a6e8e0e7dec91c
commit-queue@webkit.org [Fri, 6 Oct 2017 06:32:57 +0000 (06:32 +0000)]
Update Source/ThirdParty/woff2 to 22c256bc457777744ba14b7325a6e8e0e7dec91c
https://bugs.webkit.org/show_bug.cgi?id=177994

Patch by Frederic Wang <fwang@igalia.com> on 2017-10-05
Reviewed by Michael Catanzaro.

Source/ThirdParty:

* woff2/CMakeLists.txt: Also consider the directory for public headers.
* woff2/README.webkit:
* woff2/include/woff2/decode.h: Renamed from Source/ThirdParty/woff2/src/woff2_dec.h.
* woff2/include/woff2/encode.h: Renamed from Source/ThirdParty/woff2/src/woff2_enc.h.
(woff2::WOFF2Params::WOFF2Params):
* woff2/include/woff2/output.h: Renamed from Source/ThirdParty/woff2/src/woff2_out.h.
(woff2::WOFF2Out::~WOFF2Out):
(woff2::WOFF2StringOut::MaxSize):
* woff2/src/buffer.h:
* woff2/src/convert_woff2ttf_*.cc:
* woff2/src/file.h:
* woff2/src/font.cc:
* woff2/src/font.h:
* woff2/src/glyph.cc:
* woff2/src/glyph.h:
* woff2/src/normalize.cc:
* woff2/src/normalize.h:
* woff2/src/port.h:
* woff2/src/round.h:
* woff2/src/store_bytes.h:
* woff2/src/table_tags.cc:
* woff2/src/table_tags.h:
* woff2/src/transform.cc:
* woff2/src/transform.h:
* woff2/src/variable_length.cc:
* woff2/src/variable_length.h:
* woff2/src/woff2_common.cc:
* woff2/src/woff2_common.h:
* woff2/src/woff2_compress.cc:
* woff2/src/woff2_dec.cc:
* woff2/src/woff2_decompress.cc:
* woff2/src/woff2_enc.cc:
* woff2/src/woff2_info.cc:
* woff2/src/woff2_out.cc:
* woff2/update.sh: Also consider directory for public headers.

Source/WebCore:

No new tests, already covered by existing tests.

* CMakeLists.txt: Include the directory for public headers instead.
* platform/graphics/WOFFFileFormat.cpp: Use the public header
woff2/decode.h and do not use the "wOF2" constant from private headers.
(WebCore::isWOFF):
(WebCore::convertWOFFToSfnt):

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

2 years agoWeb Inspector: Styles Redesign: Add support for keyboard navigation (Tab, Shift-Tab...
nvasilyev@apple.com [Fri, 6 Oct 2017 05:48:19 +0000 (05:48 +0000)]
Web Inspector: Styles Redesign: Add support for keyboard navigation (Tab, Shift-Tab, Enter, Esc)
https://bugs.webkit.org/show_bug.cgi?id=177711

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

Enter, Tab, Shift-Tab should commit changes.
Escape should discard changes.

Tab and Enter should navigate forward (focus on the next field).
Shift-Tab should navigate backward (focus on the previous field).
Esc should not change the focus.

When navigating forward from:

- Selector: Focus on the first property name. If it doesn’t exist, create a blank property.

- Property name:
  - If property name is blank, discard the property and focus on the next editable field (property name or selector of the next rule).
  - If property is not blank, focus on the value.

- Property value:
  - If the last value in the rule, create a blank property and focus on its name.
  - If not the last value in the rule, focus on the next editable field (property name or selector of the next rule).

When navigating backward from:

- Selector: create a blank property on the previous editable rule and focus on its name.

- Property name:
  - Focus on the rule's selector.

- Property value:
  - Focus on the property name.

* UserInterface/Base/Utilities.js:
(Event.prototype.stop):
* UserInterface/Main.html:
Add new files. Keep one class per file.

* UserInterface/Models/CSSProperty.js:
(WI.CSSProperty.prototype.remove):
(WI.CSSProperty.prototype.set name):
(WI.CSSProperty.prototype.set rawValue):
(WI.CSSProperty.prototype.get editable):
(WI.CSSProperty.prototype._updateStyleText):
(WI.CSSProperty.prototype._updateOwnerStyleText):
Update indices and ranges of properties following the edited one to prevent data corruption.

* UserInterface/Models/CSSStyleDeclaration.js:
(WI.CSSStyleDeclaration.prototype.get selectorEditable):
(WI.CSSStyleDeclaration.prototype.set text):
(WI.CSSStyleDeclaration.prototype.newBlankProperty):
(WI.CSSStyleDeclaration.prototype.shiftPropertiesAfter):
(WI.CSSStyleDeclaration.prototype._rangeAfterPropertyAtIndex):
Implement adding new blank properties.

* UserInterface/Models/TextRange.js:
(WI.TextRange.prototype.cloneAndModify):
Add an assert to catch negative number errors.

(WI.TextRange.prototype.collapseToEnd):
Add a utility function akin Selection.prototype.collapseToEnd.

* UserInterface/Views/CSSStyleDeclarationTextEditor.js:
(WI.CSSStyleDeclarationTextEditor.prototype._handleShiftTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._handleTabKey):
(WI.CSSStyleDeclarationTextEditor.prototype._formattedContent):
Move PrefixWhitespace from a view to a model (WI.CSSStyleDeclaration.PrefixWhitespace),
since it's already used in the model.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.css:
(.spreadsheet-style-declaration-editor :matches(.name, .value).editing):
* UserInterface/Views/SpreadsheetCSSStyleDeclarationEditor.js:
(WI.SpreadsheetCSSStyleDeclarationEditor):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.layout):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingFirstProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.startEditingLastProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetCSSStyleDeclarationEditorFocusMoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.spreadsheetStylePropertyRemoved):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype.get _propertiesToRender):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._addBlankProperty):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._isFocused):
(WI.SpreadsheetCSSStyleDeclarationEditor.prototype._propertiesChanged):
Give SpreadsheetCSSStyleDeclarationEditor a delegate so that it can move focus to a CSS selector, or previous and next CSS rules.

* UserInterface/Views/SpreadsheetCSSStyleDeclarationSection.js:
(WI.SpreadsheetCSSStyleDeclarationSection):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get propertiesEditor):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.get editable):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.initialLayout):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.startEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationTextEditorStartEditingRuleSelector):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.spreadsheetSelectorFieldDidChange):
(WI.SpreadsheetCSSStyleDeclarationSection.prototype.cssStyleDeclarationEditorStartEditingAdjacentRule):
Give SpreadsheetCSSStyleDeclarationSection a delegate so that it can move focus to previous and next CSS rules.

* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.refresh):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingNextRule):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.cssStyleDeclarationSectionStartEditingPreviousRule):
(WI.SpreadsheetRulesStyleDetailsPanel):
Implement focusing on the next and previous CSS rules.

* UserInterface/Views/SpreadsheetSelectorField.js: Added.
(WI.SpreadsheetSelectorField):
(WI.SpreadsheetSelectorField.prototype.get editing):
(WI.SpreadsheetSelectorField.prototype.startEditing):
(WI.SpreadsheetSelectorField.prototype.stopEditing):
(WI.SpreadsheetSelectorField.prototype._selectText):
(WI.SpreadsheetSelectorField.prototype._handleClick):
(WI.SpreadsheetSelectorField.prototype._handleFocus):
(WI.SpreadsheetSelectorField.prototype._handleBlur):
(WI.SpreadsheetSelectorField.prototype._handleKeyDown):
Move SpreadsheetSelectorField into its own file.

* UserInterface/Views/SpreadsheetStyleProperty.js: Added.
(WI.SpreadsheetStyleProperty):
(WI.SpreadsheetStyleProperty.prototype.get element):
(WI.SpreadsheetStyleProperty.prototype.get nameTextField):
(WI.SpreadsheetStyleProperty.prototype.get valueTextField):
(WI.SpreadsheetStyleProperty.prototype._remove):
(WI.SpreadsheetStyleProperty.prototype._update):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidChange):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidCommit):
(WI.SpreadsheetStyleProperty.prototype.spreadsheetTextFieldDidBlur):
(WI.SpreadsheetStyleProperty.prototype._handleNameChange):
(WI.SpreadsheetStyleProperty.prototype._handleValueChange):
Move SpreadsheetStyleProperty into its own file.

* UserInterface/Views/SpreadsheetTextField.js: Added.
(WI.SpreadsheetTextField):
(WI.SpreadsheetTextField.prototype.get element):
(WI.SpreadsheetTextField.prototype.get editing):
(WI.SpreadsheetTextField.prototype.get value):
(WI.SpreadsheetTextField.prototype.set value):
(WI.SpreadsheetTextField.prototype.startEditing):
(WI.SpreadsheetTextField.prototype.stopEditing):
(WI.SpreadsheetTextField.prototype._selectText):
(WI.SpreadsheetTextField.prototype._discardChange):
(WI.SpreadsheetTextField.prototype._handleFocus):
(WI.SpreadsheetTextField.prototype._handleBlur):
(WI.SpreadsheetTextField.prototype._handleKeyDown):
(WI.SpreadsheetTextField.prototype._handleInput):
Introduce SpreadsheetTextField that is used for editing CSS property names and values.

LayoutTests:

Add tests for WI.CSSProperty.prototype.remove.

* inspector/css/css-property-expected.txt:
* inspector/css/css-property.html:

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

2 years agoRebaseline fast/dom/navigator-detached-no-crash.html.
ryanhaddad@apple.com [Fri, 6 Oct 2017 05:04:42 +0000 (05:04 +0000)]
Rebaseline fast/dom/navigator-detached-no-crash.html.
https://bugs.webkit.org/show_bug.cgi?id=177261

Unreviewed test gardening.

* fast/dom/navigator-detached-no-crash-expected.txt:
* platform/mac-elcapitan-wk2/fast/dom/navigator-detached-no-crash-expected.txt:

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

2 years agoUnreviewed, rolling out r222951 and r222952.
ryanhaddad@apple.com [Fri, 6 Oct 2017 05:00:18 +0000 (05:00 +0000)]
Unreviewed, rolling out r222951 and r222952.
https://bugs.webkit.org/show_bug.cgi?id=177992

"Broke the iOS build and introduced a webgl LayoutTest
failure." (Requested by ryanhaddad on #webkit).

Reverted changesets:

"Lots of missing frames in YouTube360 when fullscreen on
MacBook"
https://bugs.webkit.org/show_bug.cgi?id=177903
http://trac.webkit.org/changeset/222951

"Lots of missing frames in YouTube360 when fullscreen on
MacBook"
https://bugs.webkit.org/show_bug.cgi?id=177903
http://trac.webkit.org/changeset/222952

Patch by Commit Queue <commit-queue@webkit.org> on 2017-10-05

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

2 years agoDataTransfer shouldn't contain text/html when performing Paste and Match Style
rniwa@webkit.org [Fri, 6 Oct 2017 03:51:35 +0000 (03:51 +0000)]
DataTransfer shouldn't contain text/html when performing Paste and Match Style
https://bugs.webkit.org/show_bug.cgi?id=174165
<rdar://problem/33138027>

Reviewed by Wenson Hsieh.

Source/WebCore:

When performing Paste and Match Style, only expose the plain text by creating a StaticPasteboard with plain text content.

This patch introduces ClipboardEventKind enum class to differentiate regular paste and paste and match style (internally
called as pasteAsPlainText) since both operations use "paste" event.

Tests: editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled.html
       editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text.html

* dom/DataTransfer.cpp:
(WebCore::DataTransfer::createForCopyAndPaste): Made this function take Pasteboard as an argument.
* dom/DataTransfer.h:
* editing/Editor.cpp:
(WebCore::ClipboardEventKind): Added.
(WebCore::eventNameForClipboardEvent): Added.
(WebCore::createDataTransferForClipboardEvent): Added.
(WebCore::dispatchClipboardEvent):
(WebCore::Editor::canDHTMLCut):
(WebCore::Editor::canDHTMLCopy):
(WebCore::Editor::canDHTMLPaste):
(WebCore::Editor::tryDHTMLCopy):
(WebCore::Editor::tryDHTMLCut):
(WebCore::Editor::tryDHTMLPaste): Deleted.
(WebCore::Editor::paste):
(WebCore::Editor::pasteAsPlainText):
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::addHTMLClipboardTypesForCocoaType): Add "text/html" when public.html UTI is in the pasteboard
even when the custom pasteboard data is disabled. We continue to add public.html in the case some app dependent on
seeing "public.html" in dataTransfer.types.

LayoutTests:

Added regression tests for pasting as plain text.

* editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-expected.txt: Added.
* editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled-expected.txt: Added.
* editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text-when-custom-pasteboard-data-disabled.html: Added.
* editing/pasteboard/data-transfer-get-data-on-paste-as-plain-text.html: Added.

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

2 years agoFix the Mac CMake build
timothy_horton@apple.com [Fri, 6 Oct 2017 03:06:35 +0000 (03:06 +0000)]
Fix the Mac CMake build
https://bugs.webkit.org/show_bug.cgi?id=177985

Unreviewed build fix.

* CMakeLists.txt:
* PlatformMac.cmake:
After r222917, there's one more piece of WebKitSystemInterface left.
And some missing bits of PaymentRequest.

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

2 years agoJSC generate unified sources doesn't need to run during installhdrs.
keith_miller@apple.com [Fri, 6 Oct 2017 03:01:57 +0000 (03:01 +0000)]
JSC generate unified sources doesn't need to run during installhdrs.
https://bugs.webkit.org/show_bug.cgi?id=177640

Reviewed by Dan Bernstein.

generate unified sources doesn't need to have a xcconfig file
since we don't have any feature defines. Also, remove the plist
because there's no plist for this...

* JavaScriptCore.xcodeproj/project.pbxproj:

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

2 years agoRenderTable should not hold section raw pointers
zalan@apple.com [Fri, 6 Oct 2017 02:41:35 +0000 (02:41 +0000)]
RenderTable should not hold section raw pointers
https://bugs.webkit.org/show_bug.cgi?id=177977
<rdar://problem/34846034>

Reviewed by Simon Fraser.

This enables us to remove forced recalcSections calls.

Covered by existing tests.

* rendering/RenderTable.cpp:
(WebCore::RenderTable::RenderTable):
(WebCore::resetSectionPointerIfNotBefore):
(WebCore::RenderTable::addChild):
(WebCore::RenderTable::recalcSections const):
(WebCore::RenderTable::sectionAbove const):
* rendering/RenderTable.h:
(WebCore::RenderTable::header const):
(WebCore::RenderTable::footer const):
(WebCore::RenderTable::firstBody const):
(WebCore::RenderTable::topSection const):

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

2 years agoLots of missing frames in YouTube360 when fullscreen on MacBook
dino@apple.com [Fri, 6 Oct 2017 02:36:20 +0000 (02:36 +0000)]
Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

iOS build fix.

* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:

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

2 years agoLots of missing frames in YouTube360 when fullscreen on MacBook
dino@apple.com [Fri, 6 Oct 2017 02:31:39 +0000 (02:31 +0000)]
Lots of missing frames in YouTube360 when fullscreen on MacBook
https://bugs.webkit.org/show_bug.cgi?id=177903
<rdar://problem/33273300>

Reviewed by Sam Weinig.

Our compositing path for WebGL on macOS was too slow, requiring a copy
of the framebuffer into another GL context. Replace this by having
WebGL render into a texture that is backed by an IOSurface, and then
set the WebGLLayer to use the IOSurface as contents.

Covered by the existing WebGL tests.

* platform/graphics/GraphicsContext3D.h:
(WebCore::GraphicsContext3D::platformTexture const): We no longer use the
framebuffer object outside the class, so change this to return the GL texture
that the framebuffer is rendering in to. It was kind-of strange that it was
named this way originally.
Also make endPaint available on macOS, and add the definitions for
createIOSurfaceBackingStore and updateFramebufferTextureBackingStoreFromLayer.

* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::GraphicsContext3D): Now that we're using an IOSurface,
we're binding to a new attachment point, GL_TEXTURE_RECTANGLE.
(WebCore::GraphicsContext3D::endPaint): This is now being called on macOS and iOS,
so add a comment that explains the extra work that iOS needs to do. At some future
point it would be nice to make this slightly cleaner, so that iOS and macOS are
more similar.
(WebCore::GraphicsContext3D::allocateIOSurfaceBackingStore): New function that calls
into the corresponding WebGLLayer function.
(WebCore::GraphicsContext3D::updateFramebufferTextureBackingStoreFromLayer): Ditto.

* platform/graphics/opengl/GraphicsContext3DOpenGL.cpp:
(WebCore::wipeAlphaChannelFromPixels): Both readPixels and drawing a WebGL context
into another buffer need to fill out the alpha channel if this context was
created without one, otherwise the IOSurface backing store will happily provide
what might be non-zero values.
(WebCore::GraphicsContext3D::readPixelsAndConvertToBGRAIfNecessary): Call the helper above.
(WebCore::GraphicsContext3D::reshapeFBOs): Add more code to call into the macOS-specific
function to use an IOSurface as the framebuffer texture.
(WebCore::GraphicsContext3D::readPixels): Call the helper above.

* platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:
(PlatformCALayerCocoa::copyContentsFromLayer): Replace the use of the
deprecated setContentsChanged with reloadValueForKeyPath.

* platform/graphics/cocoa/WebGLLayer.h: The macOS implementation now
inherits from CALayer directly rather than CAOpenGLLayer. It also adds
a few member variables to handle the IOSurfaces used for triple buffering.

* platform/graphics/cocoa/WebGLLayer.mm:
(-[WebGLLayer initWithGraphicsContext3D:]): If we were created without an
alpha channel, tell CA that we're an opaque layer. Also set the layer's transform
to identity, so that it calls into the code below to flip the contents.
(-[WebGLLayer setTransform:]): Because an IOSurface is used for the layer contents,
we don't get a chance to flip the drawing the way we do via the drawInContext delegate.
Instead we have to apply a scale(1, -1) transform on top of the layer transform to
make sure the layer is rendered right-way up.
(-[WebGLLayer setAnchorPoint:]): Ditto, except we have to assume the anchor point is
at the bottom of the layer, so flip the Y value.
(-[WebGLLayer display]): Swap between the drawing buffer and the contents buffer, and
then get a new buffer ready for display.
(createAppropriateIOSurface): Helper.
(-[WebGLLayer allocateIOSurfaceBackingStoreWithSize:usingAlpha:]): Initializes the
IOSurfaces used for drawing buffers.
(-[WebGLLayer bindFramebufferToNextAvailableSurface]): Take the next available IOSurface and
make it the drawing buffer (binding in to WebGL at the same time).
(-[WebGLLayer copyCGLPixelFormatForDisplayMask:]): Deleted.
(-[WebGLLayer copyCGLContextForPixelFormat:]): Deleted.
(-[WebGLLayer drawInCGLContext:pixelFormat:forLayerTime:displayTime:]): Deleted.

* platform/graphics/mac/WebLayer.mm: Remove the definition of reloadValueForKeyPath.

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

2 years agoREGRESSION(r222868): Web Inspector: Timeline ScopeBar Navigation Bar items too large
commit-queue@webkit.org [Fri, 6 Oct 2017 01:30:40 +0000 (01:30 +0000)]
REGRESSION(r222868): Web Inspector: Timeline ScopeBar Navigation Bar items too large
https://bugs.webkit.org/show_bug.cgi?id=177979

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-10-05
Reviewed by Matt Baker.

* UserInterface/Views/ButtonNavigationItem.css:
(.navigation-bar .item.button.text-only):
Make the height of text-only items the size of the text, not 100%.

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