WebKit-https.git
13 months agoUse the null string instead of std::nullopt for missing attachment file names and...
wenson_hsieh@apple.com [Wed, 29 Aug 2018 19:17:45 +0000 (19:17 +0000)]
Use the null string instead of std::nullopt for missing attachment file names and content types
https://bugs.webkit.org/show_bug.cgi?id=189080

Reviewed by Tim Horton.

Replace instances of std::optional<String> with just String instead, and use the null string to represent a
missing value instead of std::nullopt. No change in behavior.

Source/WebCore:

* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateAttributes):
* html/HTMLAttachmentElement.h:

Source/WebKit:

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updateAttachmentAttributes):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

13 months ago[mac-wk1] Mark three IntersectionObserver web platform tests as flaky
ajuma@chromium.org [Wed, 29 Aug 2018 18:44:22 +0000 (18:44 +0000)]
[mac-wk1] Mark three IntersectionObserver web platform tests as flaky
https://bugs.webkit.org/show_bug.cgi?id=189091

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

13 months ago[WHLSL] Ensure that isLValue is copied by the rewriter
commit-queue@webkit.org [Wed, 29 Aug 2018 18:24:45 +0000 (18:24 +0000)]
[WHLSL] Ensure that isLValue is copied by the rewriter
https://bugs.webkit.org/show_bug.cgi?id=189083

The value of isLValue was not propagated when new TernaryExpressions are
created in Rewriter.

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

* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/Test.js: Add new test to verify the value is
propagated.

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

13 months ago[WHLSL] Add more functions to the standard library
mmaxfield@apple.com [Wed, 29 Aug 2018 18:21:49 +0000 (18:21 +0000)]
[WHLSL] Add more functions to the standard library
https://bugs.webkit.org/show_bug.cgi?id=188873

Reviewed by Filip Pizlo.

This patch adds the rest of the standard library to StandardLibrary.js, and updates the compiler to be able to compile it.

There are a few major pieces:
1. Swizzle operators are now implemented in the language, instead of as native functions
2. Vector constructors are now implemented in the language, instead of as native functions
3. The matrix type is implemented
4. Vector operator&[] is illegal, and is removed from the compiler
5. Vector index setters & index getters are now implemented in the language, instead of as native functions
6. Vector and matrix equality operators are implemented in the language, instead of as native functions
7. Casting a scalar to a boolean is implemented in the language, instead of as native functions
8. Casting a vector to a boolean is not part of the language, and is removed from the compiler
9. Half-precision floating point types are implemented

* WebGPUShadingLanguageRI/All.js:
* WebGPUShadingLanguageRI/BuiltinMatrixGetter.js: Copied from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexSetter.js.
(BuiltinMatrixGetter):
(BuiltinMatrixGetter.prototype.get height):
(BuiltinMatrixGetter.prototype.get width):
(BuiltinMatrixGetter.prototype.toString):
(BuiltinMatrixGetter.functions):
(BuiltinMatrixGetter.prototype.instantiateImplementation):
* WebGPUShadingLanguageRI/BuiltinMatrixSetter.js: Renamed from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexSetter.js.
(BuiltinMatrixSetter):
(BuiltinMatrixSetter.prototype.get height):
(BuiltinMatrixSetter.prototype.get width):
(BuiltinMatrixSetter.prototype.toString):
(BuiltinMatrixSetter.functions):
(BuiltinMatrixSetter.prototype.instantiateImplementation):
* WebGPUShadingLanguageRI/BuiltinVectorConstructors.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorEqualityOperator.js: Removed.
* WebGPUShadingLanguageRI/BuiltinVectorGetter.js:
(BuiltinVectorGetter.prototype.instantiateImplementation):
(BuiltinVectorGetter):
* WebGPUShadingLanguageRI/BuiltinVectorSetter.js:
(BuiltinVectorSetter.functions):
(BuiltinVectorSetter.prototype.instantiateImplementation):
(BuiltinVectorSetter):
* WebGPUShadingLanguageRI/CallExpression.js:
(CallExpression.prototype.resolve):
* WebGPUShadingLanguageRI/CheckTypesWithArguments.js:
(checkTypesWithArguments.TypeWithArgumentsChecker.prototype.visitTypeRef):
(checkTypesWithArguments.TypeWithArgumentsChecker):
(checkTypesWithArguments):
* WebGPUShadingLanguageRI/Checker.js:
(Checker.prototype.visitVectorType):
(Checker.prototype.visitMatrixType):
* WebGPUShadingLanguageRI/ConstexprFolder.js:
(ConstexprFolder.prototype.visitCallExpression):
(ConstexprFolder):
* WebGPUShadingLanguageRI/Evaluator.js:
(Evaluator.prototype.visitTernaryExpression):
* WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:
(FlattenedStructOffsetGatherer.prototype.visitMatrixType):
(FlattenedStructOffsetGatherer):
* WebGPUShadingLanguageRI/Intrinsics.js:
(Intrinsics.):
(Intrinsics):
* WebGPUShadingLanguageRI/MatrixType.js: Renamed from Tools/WebGPUShadingLanguageRI/BuiltinVectorIndexGetter.js.
(MatrixType):
(MatrixType.prototype.get elementType):
(MatrixType.prototype.get numRows):
(MatrixType.prototype.get numColumns):
(MatrixType.prototype.get numRowsValue):
(MatrixType.prototype.get numColumnsValue):
(MatrixType.prototype.get size):
(MatrixType.prototype.unifyImpl):
(MatrixType.prototype.populateDefaultValue):
(MatrixType.prototype.toString):
* WebGPUShadingLanguageRI/NameContext.js:
(NameContext.prototype.add):
* WebGPUShadingLanguageRI/NativeType.js:
(NativeType.create):
(NativeType):
* WebGPUShadingLanguageRI/OperatorAnderIndexer.js: Renamed from Tools/WebGPUShadingLanguageRI/OperatorAnderIndex.js.
(OperatorAnderIndexer):
* WebGPUShadingLanguageRI/OperatorBool.js: Removed.
* WebGPUShadingLanguageRI/Prepare.js:
(let.prepare):
* WebGPUShadingLanguageRI/Program.js:
(Program.prototype.add):
* WebGPUShadingLanguageRI/Rewriter.js:
(Rewriter.prototype.visitMatrixType):
(Rewriter):
* WebGPUShadingLanguageRI/SPIRV.html:
* WebGPUShadingLanguageRI/StandardLibrary.js:
(operator.bool):
(bool.operator):
(uchar.operator):
(ushort.operator):
(char.operator):
(short.operator):
(uint.operator):
(int.operator):
(half.operator):
(float.operator):
(uchar2.operator):
(uchar3.operator):
(uchar4.operator):
(ushort2.operator):
(ushort3.operator):
(ushort4.operator):
(uint2.operator):
(uint3.operator):
(uint4.operator):
(char2.operator):
(char3.operator):
(char4.operator):
(short2.operator):
(short3.operator):
(short4.operator):
(int2.operator):
(int3.operator):
(int4.operator):
(half2.operator):
(half3.operator):
(half4.operator):
(float2.operator):
(float3.operator):
(float4.operator):
(half2x2.operator):
(half2x3.operator):
(half2x4.operator):
(half3x2.operator):
(half3x3.operator):
(half3x4.operator):
(half4x2.operator):
(half4x3.operator):
(half4x4.operator):
(float2x2.operator):
(float2x3.operator):
(float2x4.operator):
(float3x2.operator):
(float3x3.operator):
(float3x4.operator):
(float4x2.operator):
(float4x3.operator):
(float4x4.operator):
(operator.bool2):
(operator.bool3):
(operator.bool4):
(uint.operator.length):
(operator.uchar2):
(operator.uchar3):
(operator.uchar4):
(operator.ushort2):
(operator.ushort3):
(operator.ushort4):
(operator.uint2):
(operator.uint3):
(operator.uint4):
(operator.char2):
(operator.char3):
(operator.char4):
(operator.short2):
(operator.short3):
(operator.short4):
(operator.int2):
(operator.int3):
(operator.int4):
(operator.half2):
(operator.half3):
(operator.half4):
(operator.float2):
(operator.float3):
(operator.float4):
(bool2.operator):
(bool3.operator):
(bool4.operator):
(allVectorTypeNames):
* WebGPUShadingLanguageRI/SwizzleOp.js: Removed.
* WebGPUShadingLanguageRI/SynthesizeDefaultConstructorOperator.js:
(synthesizeDefaultConstructorOperator.FindAllTypes.prototype.visitMatrixType):
(synthesizeDefaultConstructorOperator.FindAllTypes):
(synthesizeDefaultConstructorOperator):
* WebGPUShadingLanguageRI/SynthesizeOperatorBool.js: Removed.
* WebGPUShadingLanguageRI/Test.html:
* WebGPUShadingLanguageRI/Test.js:
(makeHalf):
(checkHalf):
* WebGPUShadingLanguageRI/Visitor.js:
(Visitor.prototype.visitMatrixType):
(Visitor):
* WebGPUShadingLanguageRI/index.html:

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

13 months agoLayout Test svg/animations/animate-end-attribute-numeric-precision.html is flaky
tsavell@apple.com [Wed, 29 Aug 2018 17:56:29 +0000 (17:56 +0000)]
Layout Test svg/animations/animate-end-attribute-numeric-precision.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=189087

Unreviewed test gardening.

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

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

13 months agoTeach webkitpy how to check leaks and treat leaks as test failures
simon.fraser@apple.com [Wed, 29 Aug 2018 17:51:32 +0000 (17:51 +0000)]
Teach webkitpy how to check leaks and treat leaks as test failures
https://bugs.webkit.org/show_bug.cgi?id=189067

Reviewed by Darin Adler.

Tools:

Add a new "--world-leaks" argument to run-webkit-tests. When enabled, DRT/WTR are launched
with a --world-leaks argument (which is renamed in this patch for consistency). This enables the
behavior added in r235408, namely that they check for leaked documents after each test, and at
the end of one (if --run-singly) or a set of tests run in a single DRT/WTR instance handle the
"#CHECK FOR WORLD LEAKS" command to get still-live documents.

LayoutTestRunner in webkitpy now has the notion of doing "post-tests work", called via _finished_test_group(),
and here it sends the "#CHECK FOR WORLD LEAKS" command to the runner and parses the resulting output block.
If this results block includes leaks, we convert an existing TestResult into a LEAK failure
in TestRunResults.change_result_to_failure(). Leaks are then added to the ouput JSON for display in results.html

Unit tests are updated with some leak examples.

* DumpRenderTree/mac/DumpRenderTree.mm:
(initializeGlobalsFromCommandLineOptions):
* Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
(ParsedJSONResultsTest):
* Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
(LayoutTestRunner._annotate_results_with_additional_failures):
(LayoutTestRunner._handle_finished_test_group):
(Worker.handle):
(Worker._run_test):
(Worker._do_post_tests_work):
(Worker._finished_test_group):
(Worker._run_test_in_another_thread):
* Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
(JSONLayoutResultsGenerator):
* Scripts/webkitpy/layout_tests/models/test_expectations.py:
(TestExpectationParser):
(TestExpectations):
* Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
(Base.get_basic_tests):
* Scripts/webkitpy/layout_tests/models/test_failures.py:
(determine_result_type):
(FailureLeak):
(FailureLeak.__init__):
(FailureLeak.message):
(FailureDocumentLeak):
(FailureDocumentLeak.__init__):
(FailureDocumentLeak.message):
* Scripts/webkitpy/layout_tests/models/test_results.py:
(TestResult.convert_to_failure):
* Scripts/webkitpy/layout_tests/models/test_run_results.py:
(TestRunResults.change_result_to_failure):
(_interpret_test_failures):
(summarize_results):
* Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:
(get_result):
(run_results):
(summarized_results):
* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args):
* Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
(parse_args):
(RunTest.test_check_for_world_leaks):
* Scripts/webkitpy/port/driver.py:
(DriverPostTestOutput):
(DriverPostTestOutput.__init__):
(Driver.do_post_tests_work):
(Driver._parse_world_leaks_output):
(Driver.cmd_line):
(DriverProxy.do_post_tests_work):
* Scripts/webkitpy/port/test.py:
(unit_test_list):
* WebKitTestRunner/Options.cpp:
(WTR::OptionsHandler::OptionsHandler):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::checkForWorldLeaks):

LayoutTests:

Put some fake leaks in full_results.json, and update results.html to show a table
of leaks when results are expanded.

* fast/harness/full_results.json:
* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

13 months agoMissed adding expctations to ios for webkit.org/b/188985
tsavell@apple.com [Wed, 29 Aug 2018 17:50:28 +0000 (17:50 +0000)]
Missed adding expctations to ios for webkit.org/b/188985
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

* platform/ios-wk2/TestExpectations:

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

13 months agoUnreviewed, rolling out r235432 and r235436.
commit-queue@webkit.org [Wed, 29 Aug 2018 17:14:49 +0000 (17:14 +0000)]
Unreviewed, rolling out r235432 and r235436.
https://bugs.webkit.org/show_bug.cgi?id=189086

Is a Swift source breaking change. (Requested by keith_miller
on #webkit).

Reverted changesets:

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235432

"Add nullablity attributes to JSValue"
https://bugs.webkit.org/show_bug.cgi?id=189047
https://trac.webkit.org/changeset/235436

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

13 months agoVersioning.
kocsen_chung@apple.com [Wed, 29 Aug 2018 16:30:58 +0000 (16:30 +0000)]
Versioning.

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

13 months agoRemove empty directories from from svn.webkit.org repository
ddkilzer@apple.com [Wed, 29 Aug 2018 16:25:15 +0000 (16:25 +0000)]
Remove empty directories from from svn.webkit.org repository
<https://webkit.org/b/189081>

Source/ThirdParty/ANGLE:

* src/angle.xcodeproj: Removed.
* src/common/third_party/numerics: Removed.

Source/ThirdParty/libwebrtc:

* Source/webrtc/base: Removed.
* Source/webrtc/media/devices: Removed.
* Source/webrtc/modules/audio_conference_mixer: Removed.
* Source/webrtc/modules/remote_bitrate_estimator/include/mock: Removed.
* Source/webrtc/system_wrappers/test: Removed.
* Source/webrtc/test/testsupport/mac: Removed.
* Source/webrtc/voice_engine: Removed.

Source/WebCore:

* Modules/proximity: Removed.

Source/WebInspectorUI:

* WebInspectorUI.esproj: Removed.

Tools:

* DumpRenderTree/TestNetscapePlugIn/unix: Removed.
* WebKitTestRunner/UIScriptContext: Removed.

LayoutTests:

* css3/filters/backdrop/script-tests: Removed.
* css3/filters/script-tests: Removed.
* indieui: Removed.
* legacy-animation-engine/fullscreen: Removed.
* platform/gtk/editing/pasteboard/script-tests: Removed.
* platform/gtk/resources: Removed.
* platform/ios-wk2/fast/backgrounds: Removed.
* platform/ios-wk2/fast/block/margin-collapse/block-inside-inline: Removed.
* platform/ios-wk2/fast/block/positioning/auto/vertical-lr: Removed.
* platform/ios-wk2/fast/body-propagation/background-color: Removed.
* platform/ios-wk2/fast/body-propagation/background-image: Removed.
* platform/ios-wk2/fast/borders: Removed.
* platform/ios-wk2/fast/box-shadow: Removed.
* platform/ios-wk2/fast/box-sizing: Removed.
* platform/ios-wk2/fast/canvas: Removed.
* platform/ios-wk2/fast/compact: Removed.
* platform/ios-wk2/fast/css/counters: Removed.
* platform/ios-wk2/fast/css/namespaces: Removed.
* platform/ios-wk2/fast/css3-text: Removed.
* platform/ios-wk2/fast/doctypes: Removed.
* platform/ios-wk2/fast/dom/Element: Removed.
* platform/ios-wk2/fast/dom/HTMLDocument: Removed.
* platform/ios-wk2/fast/dom/HTMLElement: Removed.
* platform/ios-wk2/fast/dom/HTMLHeadElement: Removed.
* platform/ios-wk2/fast/dom/HTMLImageElement: Removed.
* platform/ios-wk2/fast/dom/HTMLInputElement: Removed.
* platform/ios-wk2/fast/dom/HTMLLinkElement: Removed.
* platform/ios-wk2/fast/dom/HTMLMeterElement: Removed.
* platform/ios-wk2/fast/dom/HTMLObjectElement: Removed.
* platform/ios-wk2/fast/dom/HTMLProgressElement: Removed.
* platform/ios-wk2/fast/dom/HTMLTableColElement: Removed.
* platform/ios-wk2/fast/dom/HTMLTableElement: Removed.
* platform/ios-wk2/fast/dom/Range: Removed.
* platform/ios-wk2/fast/dom/Window: Removed.
* platform/ios-wk2/fast/events/touch: Removed.
* platform/ios-wk2/fast/fast-mobile-scrolling: Removed.
* platform/ios-wk2/fast/forms/color: Removed.
* platform/ios-wk2/fast/forms/datalist: Removed.
* platform/ios-wk2/fast/forms/file: Removed.
* platform/ios-wk2/fast/forms/number: Removed.
* platform/ios-wk2/fast/forms/range: Removed.
* platform/ios-wk2/fast/forms/select: Removed.
* platform/ios-wk2/fast/gradients: Removed.
* platform/ios-wk2/fast/inspector-support: Removed.
* platform/ios-wk2/fast/line-grid: Removed.
* platform/ios-wk2/fast/multicol/span: Removed.
* platform/ios-wk2/fast/multicol/vertical-lr: Removed.
* platform/ios-wk2/fast/preloader: Removed.
* platform/ios-wk2/fast/reflections: Removed.
* platform/ios-wk2/fast/regions/auto-size: Removed.
* platform/ios-wk2/fast/replaced/vertical-lr: Removed.
* platform/ios-wk2/fast/replaced/vertical-rl: Removed.
* platform/ios-wk2/fast/sub-pixel: Removed.
* platform/ios-wk2/fast/text/firstline: Removed.
* platform/ios-wk2/fast/text/shaping: Removed.
* platform/ios-wk2/fast/tokenizer: Removed.
* platform/ios-wk2/scrolling: Removed.
* platform/ios/fast/viewport: Removed.
* platform/ios/ios/fast/events/touch/script-tests: Removed.
* platform/ios/ios/fast/html: Removed.
* platform/ios/ios/scrolling: Removed.
* platform/mac-sierra-wk2/js: Removed.
* platform/mac-sierra/http/tests/ssl: Removed.
* platform/mac-wk2/http/tests/plugins: Removed.
* platform/mac-wk2/js: Removed.
* platform/mac-wk2/tiled-drawing: Removed.
* platform/mac/accessibility/resources: Removed.
* platform/mac/accessibility/select-text: Removed.
* platform/mac/editing/attributed-string: Removed.
* platform/mac/editing/dictionary-lookup: Removed.
* platform/mac/editing/input/resources: Removed.
* platform/mac/editing/selection/script-tests: Removed.
* platform/mac/fast/canvas/resources: Removed.
* platform/mac/fast/forms/script-tests: Removed.
* platform/mac/fast/ruby/resources: Removed.
* platform/mac/fast/scrolling/resources: Removed.
* platform/mac/http/tests/usercontentfilter: Removed.
* platform/mac/platform/mac/accessibility: Removed.
* platform/mac/platform/mac/editing: Removed.
* platform/win-xp: Removed.
* platform/win/editing/exeCommand: Removed.
* platform/win/platform/win/accessibility: Removed.
* platform/win/sputnik: Removed.
* platform/wk2/js: Removed.
* platform/wk2/storage: Removed.
* proximity: Removed.
* vibration: Removed.

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

13 months ago[GTK][WPE] Add JSCOnly Release bot for Linux ARMv7 Thumb2 SoftFP
commit-queue@webkit.org [Wed, 29 Aug 2018 15:07:26 +0000 (15:07 +0000)]
[GTK][WPE] Add JSCOnly Release bot for Linux ARMv7 Thumb2 SoftFP
https://bugs.webkit.org/show_bug.cgi?id=189077

Patch by Pablo Saavedra <psaavedra@igalia.com> on 2018-08-29
Reviewed by Michael Catanzaro.

Deployed new bot for WPE Release in Linux ARMv7 Thumb2 SoftFP
This bot (jsconly-linux-igalia-bot-5) will run the 'JSCOnly
Linux ARMv7 Thumb2 SoftFP Release' buildjob.

* BuildSlaveSupport/build.webkit.org-config/config.json:
* BuildSlaveSupport/build.webkit.org-config/steps_unittest.py:

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

13 months ago[LFC][Floating] Introduce FloatBox, a FloatAvoider subclass.
zalan@apple.com [Wed, 29 Aug 2018 14:49:35 +0000 (14:49 +0000)]
[LFC][Floating] Introduce FloatBox, a FloatAvoider subclass.
https://bugs.webkit.org/show_bug.cgi?id=189074

Reviewed by Antti Koivisto.

FloatBox is a float avoider and a float positioned box as well.
This is in preparation for the float avoidance feature where formatting context root boxes avoid existing floats.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* layout/displaytree/DisplayBox.h:
* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::FloatAvoider):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::setVerticalConstraint):
(WebCore::Layout::FloatAvoider::horizontalPositionCandidate):
(WebCore::Layout::FloatAvoider::verticalPositionCandidate):
(WebCore::Layout::FloatAvoider::resetPosition):
(WebCore::Layout::FloatAvoider::rectInContainingBlock const):
(WebCore::Layout::FloatAvoider::initializePosition): Deleted.
(WebCore::Layout::FloatAvoider::isLeftAligned const): Deleted.
(WebCore::Layout::FloatAvoider::rect const): Deleted.
(WebCore::Layout::FloatAvoider::resetHorizontalConstraints): Deleted.
(WebCore::Layout::FloatAvoider::initialVerticalPosition const): Deleted.
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::rect const):
(WebCore::Layout::FloatAvoider::isLeftAligned const):
(WebCore::Layout::FloatAvoider::initialVerticalPosition const):
(WebCore::Layout::FloatAvoider::floatingState const):
(WebCore::Layout::FloatAvoider::layoutBox const):
(WebCore::Layout::FloatAvoider::displayBox const):
* layout/floats/FloatBox.cpp: Copied from Source/WebCore/layout/floats/FloatAvoider.h.
(WebCore::Layout::FloatBox::FloatBox):
(WebCore::Layout::FloatBox::horizontalPositionCandidate):
(WebCore::Layout::FloatBox::verticalPositionCandidate):
(WebCore::Layout::FloatBox::initialVerticalPosition const):
* layout/floats/FloatBox.h: Copied from Source/WebCore/layout/floats/FloatAvoider.h.
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::floatingPosition const):

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

13 months ago[IntersectionObserver] Implement intersection logic for the same-document implicit...
ajuma@chromium.org [Wed, 29 Aug 2018 12:36:15 +0000 (12:36 +0000)]
[IntersectionObserver]  Implement intersection logic for the same-document implicit root case
https://bugs.webkit.org/show_bug.cgi?id=189055

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests.

* web-platform-tests/intersection-observer/display-none-expected.txt:
* web-platform-tests/intersection-observer/inline-client-rect-expected.txt:
* web-platform-tests/intersection-observer/multiple-targets-expected.txt:
* web-platform-tests/intersection-observer/multiple-thresholds-expected.txt:
* web-platform-tests/intersection-observer/observer-without-js-reference-expected.txt:
* web-platform-tests/intersection-observer/root-margin-expected.txt:
* web-platform-tests/intersection-observer/same-document-no-root-expected.txt:
* web-platform-tests/intersection-observer/same-document-zero-size-target-expected.txt:
* web-platform-tests/intersection-observer/shadow-content-expected.txt:
* web-platform-tests/intersection-observer/text-target-expected.txt:
* web-platform-tests/intersection-observer/zero-area-element-hidden-expected.txt:

Source/WebCore:

Extend the intersection logic to handle computing the intersection of the target and the
viewport, for the case where the target is in the main frame.

Tested by existing tests in imported/w3c/web-platform-tests/intersection-observer.

* dom/Document.cpp:
(WebCore::computeIntersectionRects):
(WebCore::Document::updateIntersectionObservations):

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

13 months agoChanges to slot children should trigger slotchange
rniwa@webkit.org [Wed, 29 Aug 2018 05:31:57 +0000 (05:31 +0000)]
Changes to slot children should trigger slotchange
https://bugs.webkit.org/show_bug.cgi?id=169718
<rdar://problem/43317496>

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaselined the test now that relevant test cases pass.

* web-platform-tests/shadow-dom/slotchange-expected.txt:

Source/WebCore:

Fix the bug that slotchange event is not fired when a slot's fallback content is updated now that slotchange event
is more formally specified.

This particular behavior corresponds to step 7.5. of the concept *to insert a node* where it says:
"[I]f parent’s root is a shadow root, and parent is a slot whose assigned nodes is the empty list, then run signal
a slot change for parent."

See https://dom.spec.whatwg.org/#concept-node-insert

Tests: fast/shadow-dom/slotchange-in-fallback.html
       imported/w3c/web-platform-tests/shadow-dom/slotchange.html

* dom/Element.cpp:
(WebCore::Element::childrenChanged): Updated the comment.
* dom/ShadowRoot.cpp:
(WebCore::ShadowRoot::addSlotElementByName): Added an assertion.
(WebCore::ShadowRoot::slotFallbackDidChange): Added.
* dom/ShadowRoot.h:
* dom/SlotAssignment.cpp:
(WebCore::SlotAssignment::slotFallbackDidChange): Added. When the assigned nodes is empty, we enqueue a slotchange.
Because assignedNodesForSlot invokes assignSlots, this can be O(n) but we don't expect mutating slot's fallback
contents and shadow host's children in turn to be a common scenario so this shouldn't be an issue in practice.
* dom/SlotAssignment.h:
* html/HTMLSlotElement.cpp:
(WebCore::HTMLSlotElement::insertedIntoAncestor): Be explicit about auto* being used here.
(WebCore::HTMLSlotElement::childrenChanged): Added. Invokes slotFallbackDidChange whenver child node is muated.
* html/HTMLSlotElement.h:

LayoutTests:

Added a W3C style testharness.js test for firing slotchange event for the fallback content change
since web-platform-tests/shadow-dom/slotchange.html doesn't have adequate set of tests.

Chrome and Firefox pass all test cases. WebKit used to fail all test cases before this patch.

* fast/shadow-dom/slotchange-in-fallback-expected.txt: Added.
* fast/shadow-dom/slotchange-in-fallback.html: Added.

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

13 months agoCheck for null renderer in canBeScrolledIntoView
don.olmstead@sony.com [Wed, 29 Aug 2018 05:05:23 +0000 (05:05 +0000)]
Check for null renderer in canBeScrolledIntoView
https://bugs.webkit.org/show_bug.cgi?id=188935

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/spatial-navigation/snav-display-contents-crash.html

* page/SpatialNavigation.cpp:
(WebCore::canBeScrolledIntoView):

LayoutTests:

* fast/spatial-navigation/snav-display-contents-crash-expected.txt: Added.
* fast/spatial-navigation/snav-display-contents-crash.html: Added.

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

13 months agoIDBDatabase should not return true to hasPendingActivity after being stopped
youenn@apple.com [Wed, 29 Aug 2018 04:52:45 +0000 (04:52 +0000)]
IDBDatabase should not return true to hasPendingActivity after being stopped
https://bugs.webkit.org/show_bug.cgi?id=189073

Reviewed by Darin Adler.

There is a chance that IDBDatabase::hasPendingActivity returns true.
The case that might happen is when stop() is called but there are still some active/being committed transactions.
In that case, hasPendingActivity will return true until these transactions get finalized.
While these transactions will probably be finalized at some point, it delays GC for no good reason.
And we might want in a follow-up patch to assert that ActiveDOMObject are GC-able whenever their context is stopped.
For that purpose, make sure hasPendingActivity returns false when context is stopped.

* Modules/indexeddb/IDBDatabase.cpp:
(WebCore::IDBDatabase::hasPendingActivity const):

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

13 months ago[libwebrtc] Remove references to Source/webrtc/modules/audio_coding/codecs/isac/main...
ddkilzer@apple.com [Wed, 29 Aug 2018 04:06:53 +0000 (04:06 +0000)]
[libwebrtc] Remove references to Source/webrtc/modules/audio_coding/codecs/isac/main/source/fft.h

Found by tidy-Xcode-project-file script (see Bug 188754).

* libwebrtc.xcodeproj/project.pbxproj:
(Source/webrtc/modules/audio_coding/codecs/isac/main/source/fft.h):
Remove references to this file since it doesn't exist.

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

13 months ago[CMake] Use CMake's FindFreetype
don.olmstead@sony.com [Wed, 29 Aug 2018 03:58:32 +0000 (03:58 +0000)]
[CMake] Use CMake's FindFreetype
https://bugs.webkit.org/show_bug.cgi?id=189071

Reviewed by Michael Catanzaro.

.:

Use the builtin CMake functionality for finding Freetype.

* Source/cmake/FindFreetype2.cmake: Removed.
* Source/cmake/OptionsGTK.cmake:
* Source/cmake/OptionsWPE.cmake:

Source/WebCore:

No new tests. No change in behavior.

* platform/FreeType.cmake:

Source/WebKit:

* PlatformWPE.cmake:

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

13 months agoWebKitMediaSession should be GC collectable when its document is being stopped
youenn@apple.com [Wed, 29 Aug 2018 02:37:08 +0000 (02:37 +0000)]
WebKitMediaSession should be GC collectable when its document is being stopped
https://bugs.webkit.org/show_bug.cgi?id=189016
<rdar://problem/43804904>

Unreviewed.
Increasing number of GC and checks to unflake tests on bots.

* http/tests/IndexedDB/collect-IDB-objects.https.html:
* http/tests/media/clearkey/collect-webkit-media-session.html:

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

13 months agoconsole.log() shows (anonymous function) instead of the passed string when a certain...
drousso@apple.com [Wed, 29 Aug 2018 01:36:36 +0000 (01:36 +0000)]
console.log() shows (anonymous function) instead of the passed string when a certain format is used
https://bugs.webkit.org/show_bug.cgi?id=188946
<rdar://problem/43756428>

Reviewed by Brian Burg.

Source/WebInspectorUI:

Stack trace URLs are much more likely to follow the following format:

    <protocol>://<path>:<line>:<column>

Modify the test regexp to always require that a protocol exists and to check that there are
no ":" inside the protocol or path. Additionally, stack traces usually have more than one
frame, so return false if there isn't more than one line.

* UserInterface/Models/StackTrace.js:
(WI.StackTrace.isLikelyStackTrace):

LayoutTests:

* inspector/console/js-isLikelyStackTrace-expected.txt:
* inspector/console/js-isLikelyStackTrace.html:

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

13 months agoWeb Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
drousso@apple.com [Wed, 29 Aug 2018 00:06:40 +0000 (00:06 +0000)]
Web Inspector: REGRESSION: CanvasSidebarPanel is empty for imported recordings
https://bugs.webkit.org/show_bug.cgi?id=189061

Reviewed by Brian Burg.

When recordings are imported, they don't have an associated `WI.Canvas`, meaning that the
`WI.Recording` is never added to the canvas' `WI.RecordingCollection`. Previously, the
canvas sidebar relied upon the `ItemAdded` event to update the recording `WI.ScopeBar`.
Since the imported recording isn't ever added to the collection, this is never fired.

This patch moves the function call that updates the `WI.ScopeBar` to a more universal path,
ensuring that no matter how a `WI.Recording` is set for the sidebar, it will be shown.

* UserInterface/Views/CanvasSidebarPanel.js:
(WI.CanvasSidebarPanel.prototype.set recording):
(WI.CanvasSidebarPanel.prototype._recordingAdded):
(WI.CanvasSidebarPanel.prototype._updateRecordingScopeBar):

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

13 months agoFix bit-rotted Interpreter::dumpRegisters() and move it to the VMInspector.
mark.lam@apple.com [Tue, 28 Aug 2018 23:43:59 +0000 (23:43 +0000)]
Fix bit-rotted Interpreter::dumpRegisters() and move it to the VMInspector.
https://bugs.webkit.org/show_bug.cgi?id=189059
<rdar://problem/40335354>

Reviewed by Saam Barati.

1. Moved Interpreter::dumpRegisters() to VMInspector::dumpRegisters().
2. Added $vm.dumpRegisters().

    Usage: $vm.dumpRegisters(N) // dump the registers of the Nth CallFrame.
    Usage: $vm.dumpRegisters() // dump the registers of the current CallFrame.

   Note: Currently, $vm.dumpRegisters() only dump registers in the physical frame.
   It will treat inlined frames content as registers in the bounding physical frame.

   Here's an example of such a dump on a DFG frame:

        Register frame:

        -----------------------------------------------------------------------------
                    use            |   address  |                value
        -----------------------------------------------------------------------------
        [r 12 arguments[  7]]      | 0x7ffeefbfd330 | 0xa                Undefined
        [r 11 arguments[  6]]      | 0x7ffeefbfd328 | 0x10bbb3e80        Object: 0x10bbb3e80 with butterfly 0x0 (Structure 0x10bbf20d0:[Object, {}, NonArray, Proto:0x10bbb4000]), StructureID: 76
        [r 10 arguments[  5]]      | 0x7ffeefbfd320 | 0xa                Undefined
        [r  9 arguments[  4]]      | 0x7ffeefbfd318 | 0xa                Undefined
        [r  8 arguments[  3]]      | 0x7ffeefbfd310 | 0xa                Undefined
        [r  7 arguments[  2]]      | 0x7ffeefbfd308 | 0xffff0000000a5eaa Int32: 679594
        [r  6 arguments[  1]]      | 0x7ffeefbfd300 | 0x10bbd00f0        Object: 0x10bbd00f0 with butterfly 0x8000f8248 (Structure 0x10bba4700:[Function, {name:100, prototype:101, length:102, Symbol.species:103, isArray:104}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 160
        [r  5           this]      | 0x7ffeefbfd2f8 | 0x10bbe0000        Object: 0x10bbe0000 with butterfly 0x8000d8808 (Structure 0x10bb35340:[global, {parseInt:100, parseFloat:101, Object:102, Function:103, Array:104, RegExp:105, RangeError:106, TypeError:107, PrivateSymbol.Object:108, PrivateSymbol.Array:109, ArrayBuffer:110, String:111, Symbol:112, Number:113, Boolean:114, Error:115, Map:116, Set:117, Promise:118, eval:119, Reflect:121, $vm:122, WebAssembly:123, debug:124, describe:125, describeArray:126, print:127, printErr:128, quit:129, gc:130, fullGC:131, edenGC:132, forceGCSlowPaths:133, gcHeapSize:134, addressOf:135, version:136, run:137, runString:138, load:139, loadString:140, readFile:141, read:142, checkSyntax:143, sleepSeconds:144, jscStack:145, readline:146, preciseTime:147, neverInlineFunction:148, noInline:149, noDFG:150, noFTL:151, numberOfDFGCompiles:153, jscOptions:154, optimizeNextInvocation:155, reoptimizationRetryCount:156, transferArrayBuffer:157, failNextNewCodeBlock:158, OSRExit:159, isFinalTier:160, predictInt32:161, isInt32:162, isPureNaN:163, fiatInt52:164, effectful42:165, makeMasquerader:166, hasCustomProperties:167, createGlobalObject:168, dumpTypesForAllVariables:169, drainMicrotasks:170, getRandomSeed:171, setRandomSeed:172, isRope:173, callerSourceOrigin:174, is32BitPlatform:175, loadModule:176, checkModuleSyntax:177, platformSupportsSamplingProfiler:178, generateHeapSnapshot:179, resetSuperSamplerState:180, ensureArrayStorage:181, startSamplingProfiler:182, samplingProfilerStackTraces:183, maxArguments:184, asyncTestStart:185, asyncTestPassed:186, WebAssemblyMemoryMode:187, console:188, $:189, $262:190, waitForReport:191, heapCapacity:192, flashHeapAccess:193, disableRichSourceInfo:194, mallocInALoop:195, totalCompileTime:196, Proxy:197, uneval:198, WScript:199, failWithMessage:200, triggerAssertFalse:201, isNaN:202, isFinite:203, escape:204, unescape:205, decodeURI:206, decodeURIComponent:207, encodeURI:208, encodeURIComponent:209, EvalError:210, ReferenceError:211, SyntaxError:212, URIError:213, JSON:214, Math:215, Int8Array:216, PrivateSymbol.Int8Array:217, Int16Array:218, PrivateSymbol.Int16Array:219, Int32Array:220, PrivateSymbol.Int32Array:221, Uint8Array:222, PrivateSymbol.Uint8Array:223, Uint8ClampedArray:224, PrivateSymbol.Uint8ClampedArray:225, Uint16Array:226, PrivateSymbol.Uint16Array:227, Uint32Array:228, PrivateSymbol.Uint32Array:229, Float32Array:230, PrivateSymbol.Float32Array:231, Float64Array:232, PrivateSymbol.Float64Array:233, DataView:234, Date:235, WeakMap:236, WeakSet:237, Intl:120, desc:238}, NonArray, Proto:0x10bbb4000, UncacheableDictionary, Leaf]), StructureID: 474
        -----------------------------------------------------------------------------
        [ArgumentCount]            | 0x7ffeefbfd2f0 | 7
        [ReturnVPC]                | 0x7ffeefbfd2f0 | 164 (line 57)
        [Callee]                   | 0x7ffeefbfd2e8 | 0x10bb68db0        Object: 0x10bb68db0 with butterfly 0x0 (Structure 0x10bbf1c00:[Function, {}, NonArray, Proto:0x10bbd0000, Shady leaf]), StructureID: 65
        [CodeBlock]                | 0x7ffeefbfd2e0 | 0x10bb2f8e0        __callRandomFunction#DmVXnv:[0x10bb2f8e0->0x10bbfd1e0, LLIntFunctionCall, 253]
        [ReturnPC]                 | 0x7ffeefbfd2d8 | 0x10064d14c
        [CallerFrame]              | 0x7ffeefbfd2d0 | 0x7ffeefbfd380
        -----------------------------------------------------------------------------
        [r -1  CalleeSaveReg]      | 0x7ffeefbfd2c8 | 0xffff000000000002 Int32: 2
        [r -2  CalleeSaveReg]      | 0x7ffeefbfd2c0 | 0xffff000000000000 Int32: 0
        [r -3  CalleeSaveReg]      | 0x7ffeefbfd2b8 | 0x10baf1608
        [r -4               ]      | 0x7ffeefbfd2b0 | 0x10bbcc000        Object: 0x10bbcc000 with butterfly 0x0 (Structure 0x10bbf1960:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), StructureID: 59
        [r -5               ]      | 0x7ffeefbfd2a8 | 0x10bbcc000        Object: 0x10bbcc000 with butterfly 0x0 (Structure 0x10bbf1960:[JSGlobalLexicalEnvironment, {}, NonArray, Leaf]), StructureID: 59
        [r -6               ]      | 0x7ffeefbfd2a0 | 0xa                Undefined
        -----------------------------------------------------------------------------
        [r -7]                     | 0x7ffeefbfd298 | 0x10bb6fdc0        String (atomic) (identifier): length, StructureID: 4
        [r -8]                     | 0x7ffeefbfd290 | 0x10bbb7ec0        Object: 0x10bbb7ec0 with butterfly 0x8000e0008 (Structure 0x10bbf2ae0:[Array, {}, ArrayWithContiguous, Proto:0x10bbc8080]), StructureID: 99
        [r -9]                     | 0x7ffeefbfd288 | 0x10bbc33f0        Object: 0x10bbc33f0 with butterfly 0x8000fdda8 (Structure 0x10bbf1dc0:[Function, {name:100, length:101}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 69
        [r-10]                     | 0x7ffeefbfd280 | 0xffff000000000004 Int32: 4
        [r-11]                     | 0x7ffeefbfd278 | 0x10bbb4290        Object: 0x10bbb4290 with butterfly 0x8000e8408 (Structure 0x10bb74850:[DollarVM, {abort:100, crash:101, breakpoint:102, dfgTrue:103, ftlTrue:104, cpuMfence:105, cpuRdtsc:106, cpuCpuid:107, cpuPause:108, cpuClflush:109, llintTrue:110, jitTrue:111, noInline:112, gc:113, edenGC:114, callFrame:115, codeBlockFor:116, codeBlockForFrame:117, dumpSourceFor:118, dumpBytecodeFor:119, dataLog:120, print:121, dumpCallFrame:122, dumpStack:123, dumpRegisters:124, dumpCell:125, indexingMode:126, inlineCapacity:127, value:128, getpid:129, createProxy:130, createRuntimeArray:131, createImpureGetter:132, createCustomGetterObject:133, createDOMJITNodeObject:134, createDOMJITGetterObject:135, createDOMJITGetterComplexObject:136, createDOMJITFunctionObject:137, createDOMJITCheckSubClassObject:138, createDOMJITGetterBaseJSObject:139, createBuiltin:140, getPrivateProperty:141, setImpureGetterDelegate:142, Root:143, Element:144, getElement:145, SimpleObject:146, getHiddenValue:147, setHiddenValue:148, shadowChickenFunctionsOnStack:149, setGlobalConstRedeclarationShouldNotThrow:150, findTypeForExpression:151, returnTypeFor:152, flattenDictionaryObject:153, dumpBasicBlockExecutionRanges:154, hasBasicBlockExecuted:155, basicBlockExecutionCount:156, enableDebuggerModeWhenIdle:158, disableDebuggerModeWhenIdle:159, globalObjectCount:160, globalObjectForObject:161, getGetterSetter:162, loadGetterFromGetterSetter:163, createCustomTestGetterSetter:164, deltaBetweenButterflies:165, totalGCTime:166}, NonArray, Proto:0x10bbb4000, Dictionary, Leaf]), StructureID: 306
        [r-12]                     | 0x7ffeefbfd270 | 0x100000001
        [r-13]                     | 0x7ffeefbfd268 | 0x10bbc33f0        Object: 0x10bbc33f0 with butterfly 0x8000fdda8 (Structure 0x10bbf1dc0:[Function, {name:100, length:101}, NonArray, Proto:0x10bbd0000, Leaf]), StructureID: 69
        [r-14]                     | 0x7ffeefbfd260 | 0x0
        [r-15]                     | 0x7ffeefbfd258 | 0x10064d14c
        [r-16]                     | 0x7ffeefbfd250 | 0x7ffeefbfd2d0
        [r-17]                     | 0x7ffeefbfd248 | 0x67ec87ee177      INVALID
        [r-18]                     | 0x7ffeefbfd240 | 0x7ffeefbfd250
        -----------------------------------------------------------------------------

3. Removed dumpCallFrame() from the jsc shell.  We have the following tools that
   we can use in its place:

    $vm.dumpCallFrame()
    $vm.dumpBytecodeFor()
    $vm.dumpRegisters()     // Just added in this patch.

4. Also fixed a bug in BytecodeDumper: it should only access
   CallLinkInfo::haveLastSeenCallee() only if CallLinkInfo::isDirect() is false.

* bytecode/BytecodeDumper.cpp:
(JSC::BytecodeDumper<Block>::printCallOp):
* interpreter/Interpreter.cpp:
(JSC::Interpreter::dumpCallFrame): Deleted.
(JSC::DumpReturnVirtualPCFunctor::DumpReturnVirtualPCFunctor): Deleted.
(JSC::DumpReturnVirtualPCFunctor::operator() const): Deleted.
(JSC::Interpreter::dumpRegisters): Deleted.
* interpreter/Interpreter.h:
* jsc.cpp:
(GlobalObject::finishCreation):
(functionDumpCallFrame): Deleted.
* tools/JSDollarVM.cpp:
(JSC::functionDumpRegisters):
(JSC::JSDollarVM::finishCreation):
* tools/VMInspector.cpp:
(JSC::VMInspector::dumpRegisters):
* tools/VMInspector.h:

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

13 months agoEdditing test expectations from webkit.org/b/188985.
tsavell@apple.com [Tue, 28 Aug 2018 23:40:05 +0000 (23:40 +0000)]
Edditing test expectations from webkit.org/b/188985.
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

* TestExpectations:
* platform/mac-wk2/TestExpectations:

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

13 months agoWork towards: [iOS] Consolidate the implementations of readString, stringForType...
wenson_hsieh@apple.com [Tue, 28 Aug 2018 23:28:19 +0000 (23:28 +0000)]
Work towards: [iOS] Consolidate the implementations of readString, stringForType, and readURL in PlatformPasteboardIOS.mm
https://bugs.webkit.org/show_bug.cgi?id=189054

Reviewed by Andy Estes.

Source/WebCore:

Remove the pasteboard type argument from PlatformPasteboard::readURL(). Currently, we only ever pass it
"public.url" anyways; for reading other types of strings, readString() already exists, which takes an arbitrary
pasteboard type.

* platform/PasteboardStrategy.h:
* platform/PlatformPasteboard.h:
* platform/ios/PasteboardIOS.mm:
(WebCore::Pasteboard::readPasteboardWebContentDataForType):
(WebCore::Pasteboard::readPlatformValueAsString):
* platform/ios/PlatformPasteboardIOS.mm:
(WebCore::PlatformPasteboard::readURL):

Source/WebKit:

Remove the pasteboard type argument from readURLFromPasteboard.

* UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:
(WebKit::WebPasteboardProxy::readURLFromPasteboard):
* UIProcess/WebPasteboardProxy.h:
* UIProcess/WebPasteboardProxy.messages.in:
* WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:
(WebKit::WebPlatformStrategies::readURLFromPasteboard):
* WebProcess/WebCoreSupport/WebPlatformStrategies.h:

Source/WebKitLegacy/mac:

Remove the pasteboard type argument from readURLFromPasteboard.

* WebCoreSupport/WebPlatformStrategies.h:
* WebCoreSupport/WebPlatformStrategies.mm:
(WebPlatformStrategies::readURLFromPasteboard):

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

13 months agoWeb Inspector: Search bar is too narrow in some localizations
drousso@apple.com [Tue, 28 Aug 2018 23:26:58 +0000 (23:26 +0000)]
Web Inspector: Search bar is too narrow in some localizations
https://bugs.webkit.org/show_bug.cgi?id=189060
<rdar://problem/43006369>

Reviewed by Brian Burg.

* UserInterface/Views/Toolbar.css:
(.toolbar .search-bar):

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

13 months agoLayout Test imported/w3c/web-platform-tests/service-workers/cache-storage/window...
david_fenton@apple.com [Tue, 28 Aug 2018 23:20:20 +0000 (23:20 +0000)]
Layout Test imported/w3c/web-platform-tests/service-workers/cache-storage/window/cache-storage-match.https.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187935

Unreviewed test gardening.

* platform/mac-wk2/TestExpectations:

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

13 months agolldb-webkit: KeyError thrown for OptionSet
dbates@webkit.org [Tue, 28 Aug 2018 23:04:30 +0000 (23:04 +0000)]
lldb-webkit: KeyError thrown for OptionSet
https://bugs.webkit.org/show_bug.cgi?id=189062

Reviewed by Simon Fraser.

For some reason lldb(1) may not retrieve the enumerator names for an enum value
when it calls update() on the synthetic children provider. If this occurs then
bail out as we cannot compute what enumerators are in the set.

* lldb/lldb_webkit.py:
(WTFOptionSetProvider.update):

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

13 months agoRemove assertion introduced in r235413
achristensen@apple.com [Tue, 28 Aug 2018 22:25:38 +0000 (22:25 +0000)]
Remove assertion introduced in r235413
https://bugs.webkit.org/show_bug.cgi?id=188701

* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
r235413 did not change behavior. The assertion was invalid.

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

13 months agoMove PMurHash.{cpp,h} into 'src' folder to match path on disk
ddkilzer@apple.com [Tue, 28 Aug 2018 22:13:27 +0000 (22:13 +0000)]
Move PMurHash.{cpp,h} into 'src' folder to match path on disk

* ANGLE.xcodeproj/project.pbxproj:
(src/common/third_party/smhasher/src): Add folder and move
PMurHash.{cpp,h} into it.  This makes tidy-Xcode-project-file
run smoothly when updating the ANGLE project.

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

13 months agoRemove references to "APIAttachmentCocoa.h" in WebKit.xcodeproj
wenson_hsieh@apple.com [Tue, 28 Aug 2018 22:05:20 +0000 (22:05 +0000)]
Remove references to "APIAttachmentCocoa.h" in WebKit.xcodeproj
Follow-up to https://bugs.webkit.org/show_bug.cgi?id=188933

Rubber-stamped by David Kilzer.

This header was not removed from the Xcode project file after being deleted.

* WebKit.xcodeproj/project.pbxproj:

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

13 months agoMoving test expectations for webkit.org/b/188985 from mac-wk2 to General test expecta...
tsavell@apple.com [Tue, 28 Aug 2018 21:30:46 +0000 (21:30 +0000)]
Moving test expectations for webkit.org/b/188985 from mac-wk2 to General test expectations due to failing on iOS.
https://bugs.webkit.org/show_bug.cgi?id=188985

Unreviewed test gardening.

* TestExpectations:
* platform/mac-wk2/TestExpectations:

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

13 months agoAdd error information to help debug test failure in WKNavigation.ProcessCrashDuringCa...
sihui_liu@apple.com [Tue, 28 Aug 2018 21:26:22 +0000 (21:26 +0000)]
Add error information to help debug test failure in WKNavigation.ProcessCrashDuringCallback
https://bugs.webkit.org/show_bug.cgi?id=189037

Reviewed by Chris Dumez.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getMainResourceDataWithCompletionHandler:]):
(-[WKWebView _getWebArchiveDataWithCompletionHandler:]):
(-[WKWebView _getContentsAsStringWithCompletionHandler:]):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WebContentProcessDidTerminate.mm:
(TEST):

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

13 months agoFix incorrect use of `sourceTree = "<group>";` for built products and frameworks...
ddkilzer@apple.com [Tue, 28 Aug 2018 21:02:34 +0000 (21:02 +0000)]
Fix incorrect use of `sourceTree = "<group>";` for built products and frameworks in Xcode projects

Found by tidy-Xcode-project-file script (see Bug 188754).

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
(IOKit.framework): Use `sourceTree = "<absolute>";` to match
other frameworks in the project.
* MobileMiniBrowser/MobileMiniBrowser.xcodeproj/project.pbxproj:
(WebKit.framework): Use `sourceTree = BUILT_PRODUCTS_DIR;` for
built product instead of relative build directory path.
* jsc-cli/jsc-cli.xcodeproj/project.pbxproj:
(JavaScriptCore.framework): Ditto.
* lldb/lldbWebKitTester/lldbWebKitTester.xcodeproj/project.pbxproj:
(libWTF.a): Ditto.

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

13 months agoMediaDevices should be collectable as soon as its document is stopped
youenn@apple.com [Tue, 28 Aug 2018 20:53:17 +0000 (20:53 +0000)]
MediaDevices should be collectable as soon as its document is stopped
https://bugs.webkit.org/show_bug.cgi?id=189021

Reviewed by Eric Carlson.

Source/WebCore:

Introduce ActiveDOMObject::isContextStopped to check whether the context is stopped.
Use this check in MediaDevices::hasPendingActivity so that it returns false as soon as active dom objects are stopped.

Test: http/tests/media/collect-media-devices.https.html

* Modules/mediastream/MediaDevices.cpp:
(WebCore::MediaDevices::hasPendingActivity const):
* dom/ActiveDOMObject.cpp:
(WebCore::ActiveDOMObject::hasPendingActivity const):
(WebCore::ActiveDOMObject::isContextStopped const):
* dom/ActiveDOMObject.h:

LayoutTests:

* http/tests/media/media-stream/collect-media-devices.https-expected.txt: Added.
* http/tests/media/media-stream/collect-media-devices.https.html: Added.
* http/tests/media/media-stream/resources/mymediadevicesframe.htm: Added.

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

13 months ago[Curl] Fix issue that extra cookie is added when redirect happens.
Basuke.Suzuki@sony.com [Tue, 28 Aug 2018 20:50:19 +0000 (20:50 +0000)]
[Curl] Fix issue that extra cookie is added when redirect happens.
https://bugs.webkit.org/show_bug.cgi?id=187874

Reviewed by Alex Christensen.

Source/WebCore:

When initial request has cookie set and redirect happens, it add extra Cookie header to that
abd request was broken. Just stop modifying the original request by passing a value.

Test: http/tests/cookies/multiple-redirect-and-set-cookie.php

* platform/network/ResourceHandle.h:
* platform/network/curl/ResourceHandleCurl.cpp:
(WebCore::ResourceHandle::createCurlRequest):

Source/WebKit:

When initial request has cookie set and redirect happens, it add extra Cookie header to that
abd request was broken. Just stop modifying the original request by passing a value.

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::createCurlRequest):
(WebKit::NetworkDataTaskCurl::willPerformHTTPRedirection):
(WebKit::NetworkDataTaskCurl::restartWithCredential):
* NetworkProcess/curl/NetworkDataTaskCurl.h:

LayoutTests:

* http/tests/cookies/multiple-redirect-and-set-cookie-expected.txt: Added.
* http/tests/cookies/multiple-redirect-and-set-cookie.php: Added.

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

13 months agoAdd nullablity attributes to JSValue
keith_miller@apple.com [Tue, 28 Aug 2018 20:00:35 +0000 (20:00 +0000)]
Add nullablity attributes to JSValue
https://bugs.webkit.org/show_bug.cgi?id=189047

Reviewed by Dan Bernstein.

Switch to using NS_ASSUME_NONNULL_BEGIN/END.

* API/JSValue.h:

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

13 months ago[macOS] Color wells should appear rounded and textured
akeerthi@apple.com [Tue, 28 Aug 2018 18:56:37 +0000 (18:56 +0000)]
[macOS] Color wells should appear rounded and textured
https://bugs.webkit.org/show_bug.cgi?id=189039

Reviewed by Tim Horton.

Source/WebCore:

Color wells should have a rounded and textured appearance on macOS. We can use
NSBezelStyleTexturedSquare to achieve this appearance.

Also updated the user-agent stylesheet to match the system appearance.

Rebaselined existing test: fast/forms/color/input-appearance-color.html

* css/html.css:
(input[type="color"]::-webkit-color-swatch-wrapper):
(input[type="color"]::-webkit-color-swatch):
* platform/mac/ThemeMac.mm:
(WebCore::setUpButtonCell):
* rendering/RenderThemeMac.h: Build fix.

Source/WebKit:

* UIProcess/mac/WebColorPickerMac.mm: Build fix.

LayoutTests:

Rebaseline tests to match new color-well appearance.

* platform/mac/fast/forms/color/input-appearance-color-expected.png:
* platform/mac/fast/forms/color/input-appearance-color-expected.txt:

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

13 months agoFix 32-bit Mac build.
achristensen@apple.com [Tue, 28 Aug 2018 18:37:46 +0000 (18:37 +0000)]
Fix 32-bit Mac build.

* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm:

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

13 months agoREGRESSION (r235391): [iOS] TestWebKitAPI.WebKit.RestoreSessionStateWithoutNavigation...
achristensen@apple.com [Tue, 28 Aug 2018 18:29:13 +0000 (18:29 +0000)]
REGRESSION (r235391): [iOS] TestWebKitAPI.WebKit.RestoreSessionStateWithoutNavigation is timing out
https://bugs.webkit.org/show_bug.cgi?id=189050

Reviewed by Tim Horton.

* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm:
This test wasn't run on iOS before.  Let's re-introduce the WK_HAVE_C_SPI guard.

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

13 months agoAdd nullablity attributes to JSValue
keith_miller@apple.com [Tue, 28 Aug 2018 18:11:23 +0000 (18:11 +0000)]
Add nullablity attributes to JSValue
https://bugs.webkit.org/show_bug.cgi?id=189047

Reviewed by Geoffrey Garen.

* API/JSValue.h:

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

13 months ago[iOS] WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging encounters an excepti...
wenson_hsieh@apple.com [Tue, 28 Aug 2018 18:04:54 +0000 (18:04 +0000)]
[iOS] WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging encounters an exception on iOS simulator
https://bugs.webkit.org/show_bug.cgi?id=189049

Reviewed by Tim Horton.

Wrap an NSURL in a RetainPtr to prevent it from being freed prematurely. It seems this broke when I changed the
load handler from an Objective-C block that captured `folderURL` to a C++ lambda that didn't retain `folderURL`.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(simulateFolderDragWithURL):

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

13 months agoReenable -Wexit-time-destructors -and Wglobal-constructors in libwebrtc
youenn@apple.com [Tue, 28 Aug 2018 18:00:45 +0000 (18:00 +0000)]
Reenable -Wexit-time-destructors -and Wglobal-constructors in libwebrtc
https://bugs.webkit.org/show_bug.cgi?id=189036

Reviewed by Geoffrey Garen.

Renable these compilation warnings and introduce rtc::NeverDestroyed as helper.

* Configurations/Base.xcconfig:
* Source/webrtc/modules/audio_processing/agc2/rnn_vad/spectral_features_internal.cc:
* Source/webrtc/modules/congestion_controller/bbr/bbr_network_controller.cc:
* Source/webrtc/modules/congestion_controller/goog_cc/goog_cc_network_control.cc:
* Source/webrtc/pc/peerconnection.cc:
* Source/webrtc/rtc_base/flags.h:
* Source/webrtc/rtc_base/logging.cc:
* Source/webrtc/rtc_base/never_destroyed.h: Added.
(rtc::NeverDestroyed::NeverDestroyed):
(rtc::NeverDestroyed::operator T&):
(rtc::NeverDestroyed::get):
(rtc::NeverDestroyed::operator const T& const):
(rtc::NeverDestroyed::get const):
(rtc::NeverDestroyed::storagePointer const):
(rtc::makeNeverDestroyed):
* Source/webrtc/rtc_base/virtualsocketserver.cc:
* Source/webrtc/sdk/objc/Framework/Classes/PeerConnection/RTCVideoCodec.mm:
* Source/webrtc/system_wrappers/source/clock.cc:
* Source/webrtc/system_wrappers/source/runtime_enabled_features_default.cc:
* libwebrtc.xcodeproj/project.pbxproj:

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

13 months agoWebKitMediaSession should be GC collectable when its document is being stopped
youenn@apple.com [Tue, 28 Aug 2018 18:00:00 +0000 (18:00 +0000)]
WebKitMediaSession should be GC collectable when its document is being stopped
https://bugs.webkit.org/show_bug.cgi?id=189016

Reviewed by Eric Carlson.

Source/WebCore:

Make sure WebKitMediaSession is  collectable after its document is stopped.
This is done by nullifying m_session when calling close.
This way hasPendingActivity() returns false when stop() is called.

Test: http/tests/media/clearkey/collect-webkit-media-session.html

* Modules/encryptedmedia/legacy/WebKitMediaKeySession.cpp:
(WebCore::WebKitMediaKeySession::WebKitMediaKeySession):
(WebCore::WebKitMediaKeySession::close):
* Modules/encryptedmedia/legacy/WebKitMediaKeySession.h:

LayoutTests:

* http/tests/media/clearkey/collect-webkit-media-session-expected.txt: Added.
* http/tests/media/clearkey/collect-webkit-media-session.html: Added.
* http/tests/media/clearkey/resources/mywebkitmediasessionframe.htm: Added.

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

13 months ago[IntersectionObserver] Fix build after r235424
ajuma@chromium.org [Tue, 28 Aug 2018 17:53:15 +0000 (17:53 +0000)]
[IntersectionObserver] Fix build after r235424
https://bugs.webkit.org/show_bug.cgi?id=189051

Rubber-stamped by Simon Fraser.

Fix unused variable warning by using the variable.

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

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

13 months ago[Datalist] Pressing enter without a selected option shouldn't change the input
akeerthi@apple.com [Tue, 28 Aug 2018 17:02:56 +0000 (17:02 +0000)]
[Datalist] Pressing enter without a selected option shouldn't change the input
https://bugs.webkit.org/show_bug.cgi?id=189010

Reviewed by Tim Horton.

Source/WebKit:

Currently, the value of an input field gets cleared if there is no selected
datalist suggestion when the enter key is pressed. The correct behavior is to
leave the value of the input as-is.

The incorrect behavior is a consequence of the fact that an empty string is
returned by [WKDataListSuggestionsView currentSelectedString] if there is no
selection. To fix the behavior, the method now returns an std::optional instead
of an empty string. If std::nullopt is returned, we do not make any modification
to the value of the input. This ensures that we can still change the value of
an input field to an empty string in the case that an empty string is part of
the suggestions.

Augmented test: fast/forms/datalist/datalist-textinput-keydown.html

* UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
(WebKit::WebDataListSuggestionsDropdownMac::selectOption):
(-[WKDataListSuggestionCell drawRect:]): Quick fix. The mouseover color was incorrect.
(-[WKDataListSuggestionsView currentSelectedString]):

LayoutTests:

Augmented test to verify that pressing enter when there is no selected datalist
suggestion does not change the value of the input field.

* fast/forms/datalist/datalist-textinput-keydown-expected.txt:
* fast/forms/datalist/datalist-textinput-keydown.html:

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

13 months ago[iOS] Support inputmode=none
akeerthi@apple.com [Tue, 28 Aug 2018 16:34:25 +0000 (16:34 +0000)]
[iOS] Support inputmode=none
https://bugs.webkit.org/show_bug.cgi?id=188896

Reviewed by Tim Horton.

LayoutTests/imported/w3c:

* web-platform-tests/html/dom/reflection-misc-expected.txt: Rebaseline.

Source/WebCore:

Updated InputMode.cpp to ensure that "none" is recognized as a valid value for the
inputmode attribute. This keyword is useful for content that renders its own
keyboard control.

Spec: https://html.spec.whatwg.org/multipage/interaction.html#input-modalities%3A-the-inputmode-attribute

Test: fast/forms/ios/inputmode-none.html

* html/InputMode.cpp:
(WebCore::inputModeForAttributeValue):
(WebCore::stringForInputMode):
(WebCore::InputModeNames::none):
* html/InputMode.h:

Source/WebKit:

inputmode=none is used by content that renders its own keyboard control.
Consequently, we should not display the virtual keyboard when a user interacts
with an element that has the inputmode attribute set to the "none" value.

In order to achieve this behavior, we return a UIView with a bounds of CGRectZero
as the inputView of the WKContentView when inputmode=none is present. Furthermore,
we do not provide an accessory view in this case.

Updated the logic that zooms and scrolls to a control when it gains focus, as that
behavior currently relies on an accessory view being present.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _displayFormNodeInputView]):
(-[WKContentView inputView]):
(-[WKContentView requiresAccessoryView]):
(-[WKContentView textInputTraits]):

LayoutTests:

Added new test to verify that the system keyboard does not show for inputs with
inputmode=none. Updated existing inputmode tests to reflect the addition of the
"none" value.

* fast/forms/inputmode-attribute-contenteditable-expected.txt:
* fast/forms/inputmode-attribute-contenteditable.html:
* fast/forms/inputmode-attribute-input-expected.txt:
* fast/forms/inputmode-attribute-input.html:
* fast/forms/inputmode-attribute-textarea-expected.txt:
* fast/forms/inputmode-attribute-textarea.html:
* fast/forms/ios/inputmode-none-expected.txt: Added.
* fast/forms/ios/inputmode-none.html: Added.
* resources/ui-helper.js:
(window.UIHelper.activateFormControl):
(window.UIHelper.inputViewBounds):

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

13 months agoMore results.html cleanup
simon.fraser@apple.com [Tue, 28 Aug 2018 15:51:55 +0000 (15:51 +0000)]
More results.html cleanup
https://bugs.webkit.org/show_bug.cgi?id=189038

Reviewed by Zalan Bujtas.

Use a map of table-id to SectionBuilderClass to drive the table builder class selection,
rather than hardcoding the builder class; this will allow for SectionBuilders to stay alive
longer in future, so they can be used to build the expanded state of each row.

Refactor the code that generates the expand link and test name, to de-duplicate some HTML strings,
and let SectionBuilders control whether their rows are expandable and test names linkifyable.

Put a "data-test-name" attribute on each row so we can easily map from HTML elements to
TestResults in future.

The test result change is a progression; there is nothing to show for a test with missing results,
so the row should not be expandable.

* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

13 months ago[IntersectionObserver] Schedule intersection observation updates
ajuma@chromium.org [Tue, 28 Aug 2018 15:45:32 +0000 (15:45 +0000)]
[IntersectionObserver] Schedule intersection observation updates
https://bugs.webkit.org/show_bug.cgi?id=189007

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Rebaseline tests that now pass.

* web-platform-tests/intersection-observer/bounding-box-expected.txt:
* web-platform-tests/intersection-observer/containing-block-expected.txt:
* web-platform-tests/intersection-observer/remove-element-expected.txt:
* web-platform-tests/intersection-observer/same-document-root-expected.txt:
* web-platform-tests/intersection-observer/unclipped-root-expected.txt:

Source/WebCore:

Schedule intersection observation updates in the following situations:
1) A new observation target is added.
2) FrameView::viewportContentsChanged -- this covers changes to layout and
   to scroll positions for same-document observation. Scheduling for
   cross-document observation will be handled in a future patch.
3) Style is resolved without triggering layout -- this handles updates that
   were deferred because of a pending style recalculation.

Tested by existing tests in imported/w3c/web-platform-tests/intersection-observer.

* dom/Document.cpp:
(WebCore::Document::resolveStyle):
(WebCore::Document::updateIntersectionObservations):
(WebCore::Document::scheduleIntersectionObservationUpdate):
* dom/Document.h:
* page/FrameView.cpp:
(WebCore::FrameView::viewportContentsChanged):
* page/IntersectionObserver.cpp:
(WebCore::IntersectionObserver::observe):

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

13 months ago[LFC][Floating] Remove redundant FloatAvoider functions.
zalan@apple.com [Tue, 28 Aug 2018 15:01:37 +0000 (15:01 +0000)]
[LFC][Floating] Remove redundant FloatAvoider functions.
https://bugs.webkit.org/show_bug.cgi?id=189035

Reviewed by Antti Koivisto.

and move some code from FloatContext to FloatAvoider.

* layout/floats/FloatAvoider.cpp:
(WebCore::Layout::FloatAvoider::initializePosition):
(WebCore::Layout::FloatAvoider::rect const):
(WebCore::Layout::FloatAvoider::setVerticalConstraint):
(WebCore::Layout::FloatAvoider::setHorizontalConstraints):
(WebCore::Layout::FloatAvoider::resetHorizontalConstraint):
(WebCore::Layout::FloatAvoider::initialVerticalPosition const):
(WebCore::Layout::FloatAvoider::initialHorizontalPosition const):
(WebCore::Layout::FloatAvoider::rectInContainingBlock const):
(WebCore::Layout::FloatAvoider::setLeft): Deleted.
(WebCore::Layout::FloatAvoider::setTopLeft): Deleted.
(WebCore::Layout::FloatAvoider::resetVertically): Deleted.
(WebCore::Layout::FloatAvoider::resetHorizontally): Deleted.
(WebCore::Layout::FloatAvoider::topLeftInContainingBlock const): Deleted.
* layout/floats/FloatAvoider.h:
(WebCore::Layout::FloatAvoider::top const): Deleted.
(WebCore::Layout::FloatAvoider::left const): Deleted.
(WebCore::Layout::FloatAvoider::marginTop const): Deleted.
(WebCore::Layout::FloatAvoider::marginLeft const): Deleted.
(WebCore::Layout::FloatAvoider::marginBottom const): Deleted.
(WebCore::Layout::FloatAvoider::marginRight const): Deleted.
(WebCore::Layout::FloatAvoider::rectWithMargin const): Deleted.
(WebCore::Layout::FloatAvoider::setTop): Deleted.
* layout/floats/FloatingContext.cpp:
(WebCore::Layout::FloatingContext::positionForFloat const):
(WebCore::Layout::FloatingContext::floatingPosition const):
(WebCore::Layout::FloatingPair::horizontalConstraints const):
(WebCore::Layout::FloatingPair::horiztonalPosition const): Deleted.

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

13 months agoRevert changes to RealtimeMediaSource.cpp made in r235086
eric.carlson@apple.com [Tue, 28 Aug 2018 13:29:36 +0000 (13:29 +0000)]
Revert changes to RealtimeMediaSource.cpp made in r235086
https://bugs.webkit.org/show_bug.cgi?id=189046
<rdar://problem/43794875>

Unreviewed, reverting an accidental change.

* platform/mediastream/RealtimeMediaSource.cpp:
(WebCore::RealtimeMediaSource::supportsSizeAndFrameRate):

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

13 months agoFix gcc compilation warnings after r235230
commit-queue@webkit.org [Tue, 28 Aug 2018 07:49:14 +0000 (07:49 +0000)]
Fix gcc compilation warnings after r235230
https://bugs.webkit.org/show_bug.cgi?id=188981

Patch by Alejandro G. Castro <alex@igalia.com> on 2018-08-28
Reviewed by Eric Carlson.

Replace the pragma clang with pragma GCC, it is understood by
clang and gcc.

* Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
* platform/mediastream/RealtimeIncomingAudioSource.h:
* platform/mediastream/RealtimeIncomingVideoSource.h:
* platform/mediastream/RealtimeOutgoingAudioSource.h:
* platform/mediastream/RealtimeOutgoingVideoSource.h:
* platform/mediastream/libwebrtc/LibWebRTCAudioModule.h:
* platform/mediastream/libwebrtc/LibWebRTCProvider.cpp:
* platform/mediastream/libwebrtc/LibWebRTCProvider.h:
* testing/MockLibWebRTCPeerConnection.h:

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

13 months ago[WebAssembly] Parse wasm modules in a streaming fashion
yusukesuzuki@slowstart.org [Tue, 28 Aug 2018 06:38:29 +0000 (06:38 +0000)]
[WebAssembly] Parse wasm modules in a streaming fashion
https://bugs.webkit.org/show_bug.cgi?id=188943

Reviewed by Mark Lam.

JSTests:

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

* wasm/function-tests/invalid-duplicate-export.js:
* wasm/function-tests/memory-alignment.js:
(const.op.of.WASM.opcodes):
* wasm/function-tests/memory-section-and-import.js:
* wasm/function-tests/void-argument-type-should-be-a-validation-error.js:
* wasm/js-api/Module-compile.js:
(async.testPromiseAPI):
* wasm/js-api/element.js:
(assert.throws.new.WebAssembly.Module.builder.WebAssembly):
(assert.throws):
* wasm/js-api/global-error.js:
(assert.throws.new.WebAssembly.Module.bin):
(assert.throws):
* wasm/js-api/table.js:
(new.WebAssembly.Module):
(assert.throws):
(assertBadTableImport):
* wasm/js-api/test_Data.js:
(DataSectionWithoutMemory):
* wasm/js-api/test_Start.js:
(InvalidStartFunctionIndex):
* wasm/js-api/test_basic_api.js:
(const.c.in.constructorProperties.switch):
* wasm/js-api/version.js:
* wasm/stress/nameSection.wasm: Added.
* wasm/stress/streaming-basic.js: Added.
(check):

Source/JavaScriptCore:

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

* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* tools/JSDollarVM.cpp:
(WTF::WasmStreamingParser::WasmStreamingParser):
(WTF::WasmStreamingParser::create):
(WTF::WasmStreamingParser::createStructure):
(WTF::WasmStreamingParser::streamingParser):
(WTF::WasmStreamingParser::finishCreation):
(WTF::functionWasmStreamingParserAddBytes):
(WTF::functionWasmStreamingParserFinalize):
(JSC::functionCreateWasmStreamingParser):
(JSC::JSDollarVM::finishCreation):
The $vm Wasm::StreamingParser object is introduced for testing purpose. Added new stress test uses
this interface to test streaming parser in the JSC shell.

* wasm/WasmBBQPlan.cpp:
(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::parseAndValidateModule):
(JSC::Wasm::BBQPlan::prepare):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):
(JSC::Wasm::BBQPlan::work):
* wasm/WasmBBQPlan.h:
BBQPlan has m_source, but once ModuleInformation is parsed, it is no longer necessary.
In subsequent patches, we will remove this, and stream the data into the BBQPlan.

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

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

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

* wasm/WasmModuleParser.h:
(): Deleted.
* wasm/WasmNameSection.h:
(JSC::Wasm::NameSection::NameSection):
(JSC::Wasm::NameSection::create):
(JSC::Wasm::NameSection::setHash):
Hash calculation is deferred since all the source is not available in streaming parsing.

* wasm/WasmNameSectionParser.cpp:
(JSC::Wasm::NameSectionParser::parse):
* wasm/WasmNameSectionParser.h:
Use Ref<NameSection>.

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

* wasm/WasmParser.h:
(JSC::Wasm::Parser::source const):
(JSC::Wasm::Parser::length const):
(JSC::Wasm::Parser::offset const):
(JSC::Wasm::Parser::fail const):
(JSC::Wasm::makeI32InitExpr):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::Plan):
Wasm::Plan should not have all the source apriori. Streamed data will be pumped from the provider.

* wasm/WasmPlan.h:
* wasm/WasmSectionParser.cpp: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.cpp.
SectionParser is extracted from ModuleParser. And it is used by both the old (currently working)
ModuleParser and the new StreamingParser.

(JSC::Wasm::SectionParser::parseType):
(JSC::Wasm::SectionParser::parseImport):
(JSC::Wasm::SectionParser::parseFunction):
(JSC::Wasm::SectionParser::parseResizableLimits):
(JSC::Wasm::SectionParser::parseTableHelper):
(JSC::Wasm::SectionParser::parseTable):
(JSC::Wasm::SectionParser::parseMemoryHelper):
(JSC::Wasm::SectionParser::parseMemory):
(JSC::Wasm::SectionParser::parseGlobal):
(JSC::Wasm::SectionParser::parseExport):
(JSC::Wasm::SectionParser::parseStart):
(JSC::Wasm::SectionParser::parseElement):
(JSC::Wasm::SectionParser::parseCode):
(JSC::Wasm::SectionParser::parseInitExpr):
(JSC::Wasm::SectionParser::parseGlobalType):
(JSC::Wasm::SectionParser::parseData):
(JSC::Wasm::SectionParser::parseCustom):
* wasm/WasmSectionParser.h: Copied from Source/JavaScriptCore/wasm/WasmModuleParser.h.
* wasm/WasmStreamingParser.cpp: Added.
(JSC::Wasm::parseUInt7):
(JSC::Wasm::StreamingParser::fail):
(JSC::Wasm::StreamingParser::StreamingParser):
(JSC::Wasm::StreamingParser::parseModuleHeader):
(JSC::Wasm::StreamingParser::parseSectionID):
(JSC::Wasm::StreamingParser::parseSectionSize):
(JSC::Wasm::StreamingParser::parseCodeSectionSize):
Code section in Wasm binary is specially handled compared with the other sections since it includes
a bunch of functions. StreamingParser extracts each function in a streaming fashion and enable
streaming validation / compilation of Wasm functions.

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

* wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::source const): Deleted.
All the source should not be held.

* wasm/js/JSWebAssemblyModule.h:
* wasm/js/WebAssemblyPrototype.cpp:
(JSC::webAssemblyValidateFunc):

Source/WTF:

Add maxByteLength function to get the maximum size for T.

* wtf/LEBDecoder.h:
(WTF::LEBDecoder::maxByteLength):
(WTF::LEBDecoder::decodeUInt):
(WTF::LEBDecoder::decodeInt):

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

13 months agoFix exception throwing code so that topCallFrame and topEntryFrame stay true to their...
mark.lam@apple.com [Tue, 28 Aug 2018 05:01:05 +0000 (05:01 +0000)]
Fix exception throwing code so that topCallFrame and topEntryFrame stay true to their names.
https://bugs.webkit.org/show_bug.cgi?id=188577
<rdar://problem/42985684>

Reviewed by Saam Barati.

JSTests:

* stress/regress-188577.js: Added.

Source/JavaScriptCore:

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

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

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

2. NativeCallFrameTracerWithRestore is now obsolete.

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

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

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

   This obsoletes the UnwindStart flag.

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* debugger/Debugger.cpp:
(JSC::Debugger::pauseIfNeeded):
* interpreter/CallFrame.cpp:
(JSC::CallFrame::callerFrame const):
(JSC::CallFrame::unsafeCallerFrame const):
(JSC::CallFrame::convertToStackOverflowFrame):
(JSC::CallFrame::callerFrame): Deleted.
(JSC::CallFrame::unsafeCallerFrame): Deleted.
* interpreter/CallFrame.h:
(JSC::ExecState::iterate):
* interpreter/CallFrameInlines.h: Added.
(JSC::CallFrame::isStackOverflowFrame const):
(JSC::CallFrame::isWasmFrame const):
* interpreter/EntryFrame.h: Added.
(JSC::EntryFrame::vmEntryRecordOffset):
(JSC::EntryFrame::calleeSaveRegistersBufferOffset):
* interpreter/FrameTracers.h:
(JSC::NativeCallFrameTracerWithRestore::NativeCallFrameTracerWithRestore): Deleted.
(JSC::NativeCallFrameTracerWithRestore::~NativeCallFrameTracerWithRestore): Deleted.
* interpreter/Interpreter.cpp:
(JSC::Interpreter::unwind):
* interpreter/Interpreter.h:
* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::StackVisitor):
* interpreter/StackVisitor.h:
(JSC::StackVisitor::visit):
(JSC::StackVisitor::topEntryFrameIsEmpty const):
* interpreter/VMEntryRecord.h:
(JSC::VMEntryRecord::callee const):
(JSC::EntryFrame::vmEntryRecordOffset): Deleted.
(JSC::EntryFrame::calleeSaveRegistersBufferOffset): Deleted.
* jit/AssemblyHelpers.h:
* jit/JITExceptions.cpp:
(JSC::genericUnwind):
* jit/JITExceptions.h:
* jit/JITOperations.cpp:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* runtime/CallData.cpp:
* runtime/CommonSlowPaths.cpp:
(JSC::throwArityCheckStackOverflowError):
(JSC::SLOW_PATH_DECL):
* runtime/CommonSlowPathsExceptions.cpp: Removed.
* runtime/CommonSlowPathsExceptions.h: Removed.
* runtime/Completion.cpp:
(JSC::evaluateWithScopeExtension):
* runtime/JSGeneratorFunction.h:
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::stackOverflowFrameCallee const):
* runtime/VM.cpp:
(JSC::VM::throwException):
* runtime/VM.h:
* runtime/VMInlines.h:
(JSC::VM::topJSCallFrame const):

LayoutTests:

* http/tests/misc/large-js-program-expected.txt:

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

13 months ago[Curl] Enable Proxy Authentication on WebKit.
Basuke.Suzuki@sony.com [Tue, 28 Aug 2018 00:43:44 +0000 (00:43 +0000)]
[Curl] Enable Proxy Authentication on WebKit.
https://bugs.webkit.org/show_bug.cgi?id=188998

Reviewed by Alex Christensen.

Add support for proxy authentication to curl backend running on WebKit.
This is follow up implementation of legacy implementation:
- https://bugs.webkit.org/show_bug.cgi?id=185266

* NetworkProcess/curl/NetworkDataTaskCurl.cpp:
(WebKit::NetworkDataTaskCurl::curlDidReceiveResponse):
(WebKit::NetworkDataTaskCurl::tryProxyAuthentication):
* NetworkProcess/curl/NetworkDataTaskCurl.h:
* NetworkProcess/curl/NetworkProcessCurl.cpp:
* PlatformWin.cmake:

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

13 months agoWebGL 2 conformance: framebuffer-test
justin_fan@apple.com [Tue, 28 Aug 2018 00:37:49 +0000 (00:37 +0000)]
WebGL 2 conformance: framebuffer-test
https://bugs.webkit.org/show_bug.cgi?id=188812

Reviewed by Jon Lee.

Source/WebCore:

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

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

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::blitFramebuffer):
(WebCore::WebGL2RenderingContext::framebufferTextureLayer):
(WebCore::validateDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter):
(WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters):
(WebCore::WebGL2RenderingContext::validateFramebufferTarget):
(WebCore::WebGL2RenderingContext::validateNonDefaultFramebufferAttachment):
(WebCore::WebGL2RenderingContext::getParameter):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGLFramebuffer.cpp:
(WebCore::WebGLFramebuffer::isBound const):
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::initializeNewContext):
(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase):
(WebCore::WebGLRenderingContextBase::bindFramebuffer):
(WebCore::WebGLRenderingContextBase::checkFramebufferStatus):
(WebCore::WebGLRenderingContextBase::deleteFramebuffer):
(WebCore::WebGLRenderingContextBase::framebufferRenderbuffer):
(WebCore::WebGLRenderingContextBase::framebufferTexture2D):
* html/canvas/WebGLRenderingContextBase.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::blitFramebuffer):
* platform/mac/PlatformScreenMac.mm:
(WebCore::gpuIDForDisplayMask):

LayoutTests:

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

* TestExpectations: Unskipping webgl/2.0.0/conformance2/renderbuffers/framebuffer-test.html.

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

13 months agoNull pointer deref in WidthIterator
mmaxfield@apple.com [Tue, 28 Aug 2018 00:37:17 +0000 (00:37 +0000)]
Null pointer deref in WidthIterator
https://bugs.webkit.org/show_bug.cgi?id=188993

Reviewed by Brent Fulgham.

Source/WebCore:

Test: fast/text/rtl-justification.html

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

* platform/graphics/WidthIterator.cpp:
(WebCore::WidthIterator::advanceInternal):

LayoutTests:

* fast/text/rtl-justification-expected.html: Added.
* fast/text/rtl-justification.html: Added.

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

13 months ago[ MacOS iOS ] Layout Test storage/indexeddb/modern/opendatabase-after-storage-crash...
sihui_liu@apple.com [Tue, 28 Aug 2018 00:35:26 +0000 (00:35 +0000)]
[ MacOS iOS ] Layout Test storage/indexeddb/modern/opendatabase-after-storage-crash.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=187648
<rdar://problem/42405935>

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

Reviewed by Ryosuke Niwa.

* platform/wk2/TestExpectations:
* storage/indexeddb/modern/opendatabase-after-storage-crash.html:

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

13 months ago[Attachment Support] Remove WebCore::AttachmentDisplayOptions and friends
wenson_hsieh@apple.com [Tue, 28 Aug 2018 00:28:50 +0000 (00:28 +0000)]
[Attachment Support] Remove WebCore::AttachmentDisplayOptions and friends
https://bugs.webkit.org/show_bug.cgi?id=189004

Reviewed by Dan Bernstein.

Source/WebCore:

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

* WebCore.xcodeproj/project.pbxproj:
* editing/Editor.cpp:
(WebCore::Editor::insertAttachment):
* editing/Editor.h:
* html/AttachmentTypes.h: Removed.
* html/HTMLAttachmentElement.h:

Source/WebKit:

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

* Scripts/webkit/messages.py:
* Shared/WebCoreArgumentCoders.cpp:
* UIProcess/API/APIAttachment.cpp:
(API::Attachment::setDisplayOptions): Deleted.
* UIProcess/API/APIAttachment.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _insertAttachmentWithFilename:contentType:data:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:completion:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:

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

* UIProcess/API/Cocoa/_WKAttachment.h:

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

* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachmentDisplayOptions coreDisplayOptions]): Deleted.
(-[_WKAttachment setDisplayOptions:completion:]): Deleted.
* UIProcess/API/Cocoa/_WKAttachmentInternal.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::insertAttachment):
(WebKit::WebPageProxy::setAttachmentDisplayOptions): Deleted.
* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::setAttachmentDisplayOptions): Deleted.
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

Move off of deprecated attachment insertion SPI.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(-[TestWKWebView synchronouslyInsertAttachmentWithFileWrapper:contentType:]):
(-[TestWKWebView synchronouslyInsertAttachmentWithFilename:contentType:data:]):
(-[_WKAttachment synchronouslySetDisplayOptions:error:]): Deleted.

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

13 months agoNetworkLoad::didReceiveResponse should pass its completion handler to its client
achristensen@apple.com [Tue, 28 Aug 2018 00:26:41 +0000 (00:26 +0000)]
NetworkLoad::didReceiveResponse should pass its completion handler to its client
https://bugs.webkit.org/show_bug.cgi?id=188701

Reviewed by Michael Catanzaro.

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

* NetworkProcess/Downloads/PendingDownload.cpp:
(WebKit::PendingDownload::didReceiveResponse):
* NetworkProcess/Downloads/PendingDownload.h:
* NetworkProcess/NetworkCORSPreflightChecker.cpp:
(WebKit::NetworkCORSPreflightChecker::didReceiveResponse):
(WebKit::NetworkCORSPreflightChecker::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/NetworkCORSPreflightChecker.h:
* NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::didReceiveResponse):
* NetworkProcess/NetworkDataTask.h:
* NetworkProcess/NetworkLoad.cpp:
(WebKit::NetworkLoad::~NetworkLoad):
(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::didReceiveResponse):
(WebKit::NetworkLoad::notifyDidReceiveResponse):
(WebKit::NetworkLoad::continueDidReceiveResponse): Deleted.
(WebKit::NetworkLoad::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/NetworkLoad.h:
* NetworkProcess/NetworkLoadClient.h:
* NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::~NetworkResourceLoader):
(WebKit::NetworkResourceLoader::didReceiveResponse):
(WebKit::NetworkResourceLoader::didFinishWithRedirectResponse):
(WebKit::NetworkResourceLoader::continueDidReceiveResponse):
* NetworkProcess/NetworkResourceLoader.h:
* NetworkProcess/PingLoad.cpp:
(WebKit::PingLoad::didReceiveResponse):
(WebKit::PingLoad::didReceiveResponseNetworkSession): Deleted.
* NetworkProcess/PingLoad.h:
* NetworkProcess/PreconnectTask.cpp:
(WebKit::PreconnectTask::didReceiveResponse):
* NetworkProcess/PreconnectTask.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
* NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
* NetworkProcess/capture/NetworkDataTaskReplay.cpp:
(WebKit::NetworkCapture::NetworkDataTaskReplay::didReceiveResponse):

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

13 months agoUnreviewed build fix -- disable LTO for production builds
krollin@apple.com [Tue, 28 Aug 2018 00:07:07 +0000 (00:07 +0000)]
Unreviewed build fix -- disable LTO for production builds

* Configurations/Base.xcconfig:

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

13 months ago[macOS] Block CoreServices in sandbox.
pvollan@apple.com [Mon, 27 Aug 2018 23:47:40 +0000 (23:47 +0000)]
[macOS] Block CoreServices in sandbox.
https://bugs.webkit.org/show_bug.cgi?id=189005
<rdar://problem/35369091>

Reviewed by Brent Fulgham.

The sandbox for the WebContent process should block CoreServices.

* WebProcess/com.apple.WebProcess.sb.in:

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

13 months agoVarious IndexDB tests abandon documents
youenn@apple.com [Mon, 27 Aug 2018 23:41:11 +0000 (23:41 +0000)]
Various IndexDB tests abandon documents
https://bugs.webkit.org/show_bug.cgi?id=188728
<rdar://problem/43651095>

Reviewed by Alex Christensen.

Source/WebCore:

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

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

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

* Modules/indexeddb/IDBIndex.cpp:
(WebCore::IDBIndex::hasPendingActivity const):
* Modules/indexeddb/IDBObjectStore.cpp:
(WebCore::IDBObjectStore::hasPendingActivity const):
* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::hasPendingActivity const):
(WebCore::IDBRequest::enqueueEvent):
* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::notifyDidAbort):
In case the context is stopped, IDBTransaction should not ask IDBRequest to fire an event.

LayoutTests:

* http/tests/IndexedDB/collect-IDB-objects.https-expected.txt: Added.
* http/tests/IndexedDB/collect-IDB-objects.https.html: Added.
* http/tests/IndexedDB/resources/myidbframe.htm: Added.
* http/tests/IndexedDB/resources/support.js: Added.

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

13 months ago[LayoutTests] results.html shows "no expected results" for text diff failures
simon.fraser@apple.com [Mon, 27 Aug 2018 23:31:18 +0000 (23:31 +0000)]
[LayoutTests] results.html shows "no expected results" for text diff failures
https://bugs.webkit.org/show_bug.cgi?id=188927

Reviewed by Alexey Proskuryakov.

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

Fix by clarifying the types of "missing".

* fast/harness/full_results.json:
* fast/harness/results-expected.txt:
* fast/harness/results.html:

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

13 months agoTeach WebKitTestRunner and DumpRenderTree about detecting world leaks
simon.fraser@apple.com [Mon, 27 Aug 2018 23:31:15 +0000 (23:31 +0000)]
Teach WebKitTestRunner and DumpRenderTree about detecting world leaks
https://bugs.webkit.org/show_bug.cgi?id=188994

Reviewed by Tim Horton.
Source/WebCore:

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

* dom/Document.h:

Source/WebKit:

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

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

DumpRenderTree stubs out the command, returning an empty block.

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

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

Future patches will hook up webkitpy reporting for leaked documents.

* WebProcess/InjectedBundle/API/c/WKBundle.cpp:
(WKBundleGetLiveDocumentURLs):
(WKBundleClearPageCache):
(WKBundleClearMemoryCache):
* WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:
(WKBundlePagePostTask):
* WebProcess/InjectedBundle/API/c/WKBundlePage.h:
* WebProcess/InjectedBundle/API/c/WKBundlePrivate.h:
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::liveDocumentURLs):
* WebProcess/InjectedBundle/InjectedBundle.h:

Tools:

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

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

DumpRenderTree stubs out the command, returning an empty block.

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

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

Future patches will hook up webkitpy reporting for leaked documents.

* DumpRenderTree/mac/DumpRenderTree.mm:
(initializeGlobalsFromCommandLineOptions):
(handleControlCommand):
(runTestingServerLoop):
* DumpRenderTree/win/DumpRenderTree.cpp:
(handleControlCommand):
(main):
* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::postGCTask):
(WTR::InjectedBundle::reportLiveDocuments):
(WTR::InjectedBundle::didReceiveMessageToPage):
* WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* WebKitTestRunner/Options.cpp:
(WTR::handleOptionCheckForWorldLeaks):
(WTR::OptionsHandler::OptionsHandler):
* WebKitTestRunner/Options.h:
* WebKitTestRunner/TestController.cpp:
(WTR::AsyncTask::run):
(WTR::AsyncTask::currentTask):
(WTR::TestController::initialize):
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::updateLiveDocumentsAfterTest):
(WTR::TestController::checkForWorldLeaks):
(WTR::TestController::findAndDumpWorldLeaks):
(WTR::TestController::willDestroyWebView):
(WTR::parseInputLine):
(WTR::TestController::waitForCompletion):
(WTR::TestController::handleControlCommand):
(WTR::TestController::runTestingServerLoop):
(WTR::TestController::run):
(WTR::TestController::didReceiveLiveDocumentsList):
(WTR::TestController::didReceiveMessageFromInjectedBundle):
* WebKitTestRunner/TestController.h:
(WTR::AsyncTask::AsyncTask):
(WTR::AsyncTask::taskComplete):
(WTR::TestController::AbandonedDocumentInfo::AbandonedDocumentInfo):
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::invoke):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):

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

13 months agoFix plug-ins after r235398
achristensen@apple.com [Mon, 27 Aug 2018 23:29:42 +0000 (23:29 +0000)]
Fix plug-ins after r235398
https://bugs.webkit.org/show_bug.cgi?id=188997

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

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

13 months agoTeach Web Inspector how to complete keywords for -apple-pay-button-style and -apple...
aestes@apple.com [Mon, 27 Aug 2018 22:25:26 +0000 (22:25 +0000)]
Teach Web Inspector how to complete keywords for -apple-pay-button-style and -apple-pay-button-type
https://bugs.webkit.org/show_bug.cgi?id=189001

Reviewed by Devin Rousso.

* UserInterface/Models/CSSKeywordCompletions.js:

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

13 months agoFix API test after r235398
achristensen@apple.com [Mon, 27 Aug 2018 22:23:03 +0000 (22:23 +0000)]
Fix API test after r235398
https://bugs.webkit.org/show_bug.cgi?id=188997

* TestWebKitAPI/Tests/WebKit/ShouldKeepCurrentBackForwardListItemInList.cpp:
(TestWebKitAPI::setPageLoaderClient):
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
willGoToBackForwardListItem is unused and unsupported.  Removing its check.

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

13 months agoPartial revert of r235376
dbates@webkit.org [Mon, 27 Aug 2018 22:19:52 +0000 (22:19 +0000)]
Partial revert of r235376
https://bugs.webkit.org/show_bug.cgi?id=189011

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

    lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSetProvider_simple
    lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple

Will investigate offline.

* lldb/lldbWebKitTester/main.cpp:
(testSummaryProviders):
* lldb/lldb_webkit_unittest.py:
(TestSummaryProviders.serial_test_WTFHashSet_tablesize_and_size):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_empty): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSetProvider_empty): Deleted.
(TestSummaryProviders.serial_test_WTFOptionSetProvider_simple): Deleted.

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

13 months agoConsolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
akeerthi@apple.com [Mon, 27 Aug 2018 21:48:13 +0000 (21:48 +0000)]
Consolidate ENABLE_INPUT_TYPE_COLOR and ENABLE_INPUT_TYPE_COLOR_POPOVER
https://bugs.webkit.org/show_bug.cgi?id=188931

Reviewed by Wenson Hsieh.

.:

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

PerformanceTests:

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

Source/JavaScriptCore:

* Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebCore:

* Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebCore/PAL:

* Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WebKit:

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

* Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::showColorPicker):
(WebKit::WebPageProxy::closeOverlayedViews):
* UIProcess/mac/WebColorPickerMac.mm:
(WebKit::WebColorPickerMac::WebColorPickerMac):
(WebKit::WebColorPickerMac::showColorPicker):

Source/WebKitLegacy/mac:

* Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Source/WTF:

* wtf/FeatureDefines.h: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

Tools:

* TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Removed ENABLE_INPUT_TYPE_COLOR_POPOVER.

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

13 months agoAdd Justin Fan to list of WebKit contributors
justin_fan@apple.com [Mon, 27 Aug 2018 21:36:45 +0000 (21:36 +0000)]
Add Justin Fan to list of WebKit contributors
https://bugs.webkit.org/show_bug.cgi?id=184431

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

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

13 months agoWeb Inspector: when scrolling a virtualized TreeOutline, only update the DOM periodically
drousso@apple.com [Mon, 27 Aug 2018 21:27:58 +0000 (21:27 +0000)]
Web Inspector: when scrolling a virtualized TreeOutline, only update the DOM periodically
https://bugs.webkit.org/show_bug.cgi?id=188960

Reviewed by Brian Burg.

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

* UserInterface/Views/TreeOutline.js:
(WI.TreeOutline):
(WI.TreeOutline.prototype.registerScrollVirtualizer):
(WI.TreeOutline.prototype.updateVirtualizedElements):
(WI.TreeOutline.prototype._calculateVirtualizedValues): Added.

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

13 months agoPass webPageID and webFrameID to NetworkLoad for speculative loads
achristensen@apple.com [Mon, 27 Aug 2018 21:11:47 +0000 (21:11 +0000)]
Pass webPageID and webFrameID to NetworkLoad for speculative loads
https://bugs.webkit.org/show_bug.cgi?id=188682

Reviewed by Youenn Fablet.

This also removes an authentication shortcut I introduced in r234941

* NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
(WebKit::NetworkCache::SpeculativeLoad::didReceiveResponse):
* Shared/Authentication/AuthenticationManager.cpp:
(WebKit::AuthenticationManager::didReceiveAuthenticationChallenge):

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

13 months agoConvert timeout values in WebKitTestRunner to WTF::Seconds
simon.fraser@apple.com [Mon, 27 Aug 2018 21:11:22 +0000 (21:11 +0000)]
Convert timeout values in WebKitTestRunner to WTF::Seconds
https://bugs.webkit.org/show_bug.cgi?id=188987

Reviewed by Ryosuke Niwa.

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

Also do some #pragma once, and initializer cleanup.

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::beginTesting):
(WTR::InjectedBundle::InjectedBundle): Deleted.
* WebKitTestRunner/InjectedBundle/InjectedBundle.h:
* WebKitTestRunner/InjectedBundle/TestRunner.h:
(WTR::TestRunner::timeout):
(WTR::TestRunner::setCustomTimeout):
* WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
* WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:
(WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
* WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:
(WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::TestController):
(WTR::parseInputLine):
(WTR::TestController::runTest):
(WTR::TestController::runUntil):
(WTR::TestController::didReceiveMessageFromInjectedBundle):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::shortTimeout const):
(WTR::TestInvocation::createTestSettingsDictionary):
* WebKitTestRunner/TestInvocation.h:
* WebKitTestRunner/TestOptions.h:
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformRunUntil):
* WebKitTestRunner/gtk/TestControllerGtk.cpp:
(WTR::TestController::platformRunUntil):
* WebKitTestRunner/wpe/TestControllerWPE.cpp:
(WTR::TestController::platformRunUntil):

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

13 months agoRemove most of LoaderClient
achristensen@apple.com [Mon, 27 Aug 2018 21:00:25 +0000 (21:00 +0000)]
Remove most of LoaderClient
https://bugs.webkit.org/show_bug.cgi?id=188997

Reviewed by Tim Horton.

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

* UIProcess/API/APILoaderClient.h:
(API::LoaderClient::~LoaderClient):
(API::LoaderClient::didFailProvisionalLoadWithErrorForFrame):
(API::LoaderClient::didFailLoadWithErrorForFrame):
(API::LoaderClient::didFirstVisuallyNonEmptyLayoutForFrame):
(API::LoaderClient::didReachLayoutMilestone):
(API::LoaderClient::shouldKeepCurrentBackForwardListItemInList):
(API::LoaderClient::didCommitLoadForFrame): Deleted.
(API::LoaderClient::didFinishDocumentLoadForFrame): Deleted.
(API::LoaderClient::didSameDocumentNavigationForFrame): Deleted.
(API::LoaderClient::didReceiveTitleForFrame): Deleted.
(API::LoaderClient::didFirstLayoutForFrame): Deleted.
(API::LoaderClient::didDisplayInsecureContentForFrame): Deleted.
(API::LoaderClient::didRunInsecureContentForFrame): Deleted.
(API::LoaderClient::didDetectXSSForFrame): Deleted.
(API::LoaderClient::didReceiveAuthenticationChallengeInFrame): Deleted.
(API::LoaderClient::didStartProgress): Deleted.
(API::LoaderClient::didChangeProgress): Deleted.
(API::LoaderClient::didFinishProgress): Deleted.
(API::LoaderClient::processDidBecomeUnresponsive): Deleted.
(API::LoaderClient::processDidBecomeResponsive): Deleted.
(API::LoaderClient::processDidCrash): Deleted.
(API::LoaderClient::didChangeBackForwardList): Deleted.
(API::LoaderClient::willGoToBackForwardListItem): Deleted.
(API::LoaderClient::didNavigateWithNavigationData): Deleted.
(API::LoaderClient::didPerformClientRedirect): Deleted.
(API::LoaderClient::didPerformServerRedirect): Deleted.
(API::LoaderClient::didUpdateHistoryTitle): Deleted.
(API::LoaderClient::navigationGestureDidBegin): Deleted.
(API::LoaderClient::navigationGestureWillEnd): Deleted.
(API::LoaderClient::navigationGestureDidEnd): Deleted.
(API::LoaderClient::pluginLoadPolicy): Deleted.
(API::LoaderClient::didFailToInitializePlugin): Deleted.
(API::LoaderClient::didBlockInsecurePluginVersion): Deleted.
(API::LoaderClient::webGLLoadPolicy const): Deleted.
(API::LoaderClient::resolveWebGLLoadPolicy const): Deleted.
(API::LoaderClient::didStartLoadForQuickLookDocumentInMainFrame): Deleted.
(API::LoaderClient::didFinishLoadForQuickLookDocumentInMainFrame): Deleted.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageLoaderClient):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::didChangeBackForwardList):
(WebKit::WebPageProxy::willGoToBackForwardListItem):
(WebKit::WebPageProxy::didStartProgress):
(WebKit::WebPageProxy::didChangeProgress):
(WebKit::WebPageProxy::didFinishProgress):
(WebKit::WebPageProxy::didCommitLoadForFrame):
(WebKit::WebPageProxy::didFinishDocumentLoadForFrame):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::didReceiveTitleForFrame):
(WebKit::WebPageProxy::didFirstLayoutForFrame):
(WebKit::WebPageProxy::didDisplayInsecureContentForFrame):
(WebKit::WebPageProxy::didRunInsecureContentForFrame):
(WebKit::WebPageProxy::didDetectXSSForFrame):
(WebKit::WebPageProxy::didNavigateWithNavigationData):
(WebKit::WebPageProxy::didPerformClientRedirect):
(WebKit::WebPageProxy::didPerformServerRedirect):
(WebKit::WebPageProxy::didUpdateHistoryTitle):
(WebKit::WebPageProxy::webGLPolicyForURL):
(WebKit::WebPageProxy::resolveWebGLPolicyForURL):
(WebKit::WebPageProxy::processDidBecomeUnresponsive):
(WebKit::WebPageProxy::processDidBecomeResponsive):
(WebKit::WebPageProxy::dispatchProcessDidTerminate):
(WebKit::WebPageProxy::didReceiveAuthenticationChallengeProxy):
(WebKit::WebPageProxy::navigationGestureDidBegin):
(WebKit::WebPageProxy::navigationGestureWillEnd):
(WebKit::WebPageProxy::navigationGestureDidEnd):
* UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::didStartLoadForQuickLookDocumentInMainFrame):
(WebKit::WebPageProxy::didFinishLoadForQuickLookDocumentInMainFrame):

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

13 months agoREGRESSION(r234985/r234989) WKPageLoadHTMLString with a 16-bit String has the wrong...
achristensen@apple.com [Mon, 27 Aug 2018 20:58:07 +0000 (20:58 +0000)]
REGRESSION(r234985/r234989) WKPageLoadHTMLString with a 16-bit String has the wrong encoding
https://bugs.webkit.org/show_bug.cgi?id=189002

Reviewed by Tim Horton.

Source/WebKit:

* UIProcess/API/C/WKPage.cpp:
(encodingOf):

Tools:

* TestWebKitAPI/Tests/WebKit/WillLoad.cpp:
(TestWebKitAPI::TEST_F):

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

13 months agoImprove the showAllDocuments logging
simon.fraser@apple.com [Mon, 27 Aug 2018 20:31:58 +0000 (20:31 +0000)]
Improve the showAllDocuments logging
https://bugs.webkit.org/show_bug.cgi?id=188990

Reviewed by Tim Horton.

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

Sample output:

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

* page/mac/PageMac.mm:
(WebCore::Page::platformInitialize):

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

13 months ago[Cocoa] Exception (fileType 'dyn.agq8u' is not a valid UTI) raised when dragging...
wenson_hsieh@apple.com [Mon, 27 Aug 2018 20:14:21 +0000 (20:14 +0000)]
[Cocoa] Exception (fileType 'dyn.agq8u' is not a valid UTI) raised when dragging an attachment whose file wrapper is a directory
https://bugs.webkit.org/show_bug.cgi?id=188903
<rdar://problem/43702993>

Reviewed by Tim Horton.

Source/WebCore:

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

Tests:  WKAttachmentTests.InsertFolderAndFileWithUnknownExtension
        WKAttachmentTests.DropFolderAsAttachmentAndMoveByDragging
        WKAttachmentTests.ChangeAttachmentDataAndFileInformation

* editing/Editor.cpp:
(WebCore::Editor::insertAttachment):
* editing/Editor.h:
* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::WebContentReader::readFilePaths):

When creating an attachment by dropping or pasting a file backed by a file path, handle the cases where…
(1)     the dropped path is a directory, by setting the UTI to "public.directory". This allows us to show a
        folder icon for the dropped attachment element on macOS.
(2)     the dropped path is a file whose UTI is unknown, by defaulting to "public.data".

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

* html/HTMLAttachmentElement.cpp:
(WebCore::HTMLAttachmentElement::updateAttributes):

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

* html/HTMLAttachmentElement.h:

Source/WebKit:

Fixes the bug by supporting NSFileWrappers of type directory, as well as NSFileWrappers with file that do not
map to concrete type identifiers. Among other things, this patch ensures that:
-       Inserting a directory file wrapper (or using -setFileWrapper:…: to change an existing _WKAttachment's
        file wrapper to a directory) does not cause the attachment element to show "0 bytes" as the subtitle.
-       In the above scenario, we also won't end up with a missing "type" attribute for the attachment element,
        as well as a corresponding API::Attachment::contentType() that's an empty string.
-       Dropping or pasting attachments backed by paths on disk also doesn't trigger these problems, if the path
        is a directory or of unknown file type.

Changes are verified by 2 new API tests.

* UIProcess/API/APIAttachment.cpp:
(API::Attachment::updateAttributes):
(API::Attachment::fileSizeForDisplay const):
* UIProcess/API/APIAttachment.h:
* UIProcess/API/Cocoa/APIAttachmentCocoa.mm:
(API::Attachment::setFileWrapperAndUpdateContentType):

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

(API::Attachment::fileSizeForDisplay const):

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

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _insertAttachmentWithFileWrapper:contentType:options:completion:]):

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

* UIProcess/API/Cocoa/_WKAttachment.mm:
(-[_WKAttachment setFileWrapper:contentType:completion:]):

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

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

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

(WebKit::WebPageProxy::updateAttachmentAttributes):

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

* UIProcess/WebPageProxy.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::insertAttachment):
(WebKit::WebPage::updateAttachmentAttributes):

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

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

Tools:

Add two API tests and adjust existing WKAttachment API tests. The new tests exercise the following scenarios, in
both iOS and macOS:
•       Dropping a folder as an attachment element, and then moving that attachment element in the document by
        dragging and dropping.
•       Using WKWebView SPI to insert a folder and a file with an unknown extension, and then using more
        _WKAttachment SPI to swap the attachments' backing file wrappers.

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(runTestWithTemporaryFolder):

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

(simulateFolderDragWithURL):

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

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

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

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

* TestWebKitAPI/cocoa/DragAndDropSimulator.h:

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

* TestWebKitAPI/ios/DragAndDropSimulatorIOS.mm:
(-[DragAndDropSimulator clearExternalDragInformation]):
* TestWebKitAPI/mac/DragAndDropSimulatorMac.mm:
(-[DragAndDropSimulator clearExternalDragInformation]):

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

13 months agoTranslate 4 tests using WKPageLoaderClient to ObjC
achristensen@apple.com [Mon, 27 Aug 2018 19:38:07 +0000 (19:38 +0000)]
Translate 4 tests using WKPageLoaderClient to ObjC
https://bugs.webkit.org/show_bug.cgi?id=188827

Reviewed by Tim Horton.

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

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem_Bundle.cpp: Removed.
* TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimer.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp.
(-[ResponsivenessTimerDelegate webView:didFinishNavigation:]):
(-[ResponsivenessTimerDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimerDoesntFireEarly.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp.
(-[ResponsivenessDelegate webView:didFinishNavigation:]):
(-[ResponsivenessDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didReceiveMessageFromInjectedBundle): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setInjectedBundleClient): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp.
(-[SessionStateDelegate webView:didFinishNavigation:]):
(-[SessionStateDelegate _webView:backForwardListItemAdded:removed:]):
(TestWebKitAPI::createSessionStateData):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didChangeBackForwardListForPage): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/ShouldGoToBackForwardListItem.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp.
(-[BackForwardClient webView:didFinishNavigation:]):
(-[BackForwardClient _webView:willGoToBackForwardListItem:inPageCache:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

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

13 months ago[Payment Request] Update payment-request web platform tests
aestes@apple.com [Mon, 27 Aug 2018 19:30:35 +0000 (19:30 +0000)]
[Payment Request] Update payment-request web platform tests
https://bugs.webkit.org/show_bug.cgi?id=188985

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/payment-request/META.yml: Added.
* web-platform-tests/payment-request/OWNERS: Removed.
* web-platform-tests/payment-request/PaymentAddress/attributes-and-toJSON-method-manual.https.html:
* web-platform-tests/payment-request/PaymentAddress/w3c-import.log:
* web-platform-tests/payment-request/PaymentItem/type_member.https-expected.txt: Added.
* web-platform-tests/payment-request/PaymentItem/type_member.https.html: Added.
* web-platform-tests/payment-request/PaymentItem/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https-expected.txt: Added.
* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodDetails-attribute.https.html: Added.
* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodName-attribute.https-expected.txt: Added.
* web-platform-tests/payment-request/PaymentMethodChangeEvent/methodName-attribute.https.html: Added.
* web-platform-tests/payment-request/PaymentMethodChangeEvent/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
* web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-error-member-manual.https.html: Added.
* web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-payer-member-manual.https.html: Added.
* web-platform-tests/payment-request/PaymentValidationErrors/retry-shows-shippingAddress-member-manual.https.html: Added.
* web-platform-tests/payment-request/PaymentValidationErrors/w3c-import.log: Copied from LayoutTests/imported/w3c/web-platform-tests/payment-request/PaymentAddress/w3c-import.log.
* web-platform-tests/payment-request/algorithms-manual.https.html:
* web-platform-tests/payment-request/allowpaymentrequest/w3c-import.log:
* web-platform-tests/payment-request/change-shipping-option-manual.https.html:
* web-platform-tests/payment-request/change-shipping-option-select-last-manual.https.html: Added.
* web-platform-tests/payment-request/idlharness.https.window-expected.txt: Added.
* web-platform-tests/payment-request/idlharness.https.window.html: Added.
* web-platform-tests/payment-request/idlharness.https.window.js: Added.
(idlArray.catch):
* web-platform-tests/payment-request/interfaces.https-expected.txt: Removed.
* web-platform-tests/payment-request/interfaces.https.html: Removed.
* web-platform-tests/payment-request/onpaymentmenthodchange-attribute.https-expected.txt: Added.
* web-platform-tests/payment-request/onpaymentmenthodchange-attribute.https.html: Added.
* web-platform-tests/payment-request/payment-request-abort-method-manual.https-expected.txt: Removed.
* web-platform-tests/payment-request/payment-request-abort-method.https-expected.txt: Added.
* web-platform-tests/payment-request/payment-request-abort-method.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-abort-method-manual.https.html.
* web-platform-tests/payment-request/payment-request-canmakepayment-method.https-expected.txt: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https-expected.txt.
* web-platform-tests/payment-request/payment-request-canmakepayment-method.https.html: Renamed from LayoutTests/imported/w3c/web-platform-tests/payment-request/payment-request-canmakepayment-method-manual.https.html.
* web-platform-tests/payment-request/payment-request-insecure.http-expected.txt: Added.
* web-platform-tests/payment-request/payment-request-insecure.http.html: Added.
* web-platform-tests/payment-request/payment-request-not-exposed.https.worker-expected.txt: Added.
* web-platform-tests/payment-request/payment-request-not-exposed.https.worker.html: Added.
* web-platform-tests/payment-request/payment-request-not-exposed.https.worker.js: Added.
(test):
* web-platform-tests/payment-request/payment-request-show-method.https.html:
* web-platform-tests/payment-request/payment-response/complete-method-manual.https.html:
* web-platform-tests/payment-request/payment-response/helpers.js:
(async.getPaymentResponse):
* web-platform-tests/payment-request/payment-response/methodName-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.https-expected.txt: Added.
* web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.https.html: Added.
* web-platform-tests/payment-request/payment-response/onpayerdetailchange-attribute.manual.https.html: Added.
* web-platform-tests/payment-request/payment-response/payerEmail-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/payerName-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/payerPhone-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/rejects_if_not_active-manual.https.html: Added.
* web-platform-tests/payment-request/payment-response/requestId-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/retry-method-manual.https.html: Added.
* web-platform-tests/payment-request/payment-response/shippingAddress-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/shippingOption-attribute-manual.https.html:
* web-platform-tests/payment-request/payment-response/w3c-import.log:
* web-platform-tests/payment-request/resources/w3c-import.log:
* web-platform-tests/payment-request/shipping-address-changed-manual.https.html:
* web-platform-tests/payment-request/show-method-optional-promise-rejects-manual.https.html: Added.
* web-platform-tests/payment-request/show-method-optional-promise-resolves-manual.https.html: Added.
* web-platform-tests/payment-request/show-method-postmessage-iframe.html: Added.
* web-platform-tests/payment-request/show-method-postmessage-manual.https.html: Added.
* web-platform-tests/payment-request/updateWith-method-pmi-handling-manual.https.html:
* web-platform-tests/payment-request/user-abort-algorithm-manual.https.html:
* web-platform-tests/payment-request/user-accepts-payment-request-algo-manual.https.html:
* web-platform-tests/payment-request/w3c-import.log:

LayoutTests:

* platform/mac-wk2/TestExpectations:

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

13 months agoWeb Inspector: provide autocompletion for event breakpoints
drousso@apple.com [Mon, 27 Aug 2018 18:49:42 +0000 (18:49 +0000)]
Web Inspector: provide autocompletion for event breakpoints
https://bugs.webkit.org/show_bug.cgi?id=188717

Reviewed by Brian Burg.

Source/JavaScriptCore:

* inspector/protocol/DOM.json:
Add `getSupportedEventNames` command.

Source/WebCore:

Test: inspector/dom/getSupportedEventNames.html

* inspector/agents/InspectorDOMAgent.h:
* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::getSupportedEventNames): Added.

Source/WebInspectorUI:

* UserInterface/Controllers/DOMTreeManager.js:
(WI.DOMTreeManager):
(WI.DOMTreeManager.prototype.getSupportedEventNames): Added.

* UserInterface/Views/EventBreakpointPopover.js:
(WI.EventBreakpointPopover):
(WI.EventBreakpointPopover.prototype.show):
(WI.EventBreakpointPopover.prototype.dismiss): Added.
(WI.EventBreakpointPopover.prototype.completionSuggestionsClickedCompletion): Added.
(WI.EventBreakpointPopover.prototype._presentOverTargetElement):
(WI.EventBreakpointPopover.prototype._showSuggestionsView): Added.

LayoutTests:

* inspector/dom/getSupportedEventNames-expected.txt: Added.
* inspector/dom/getSupportedEventNames.html: Added.

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

13 months ago[Cocoa] "video.html" appears at the top level of the TestWebKitAPI Xcode project
wenson_hsieh@apple.com [Mon, 27 Aug 2018 18:47:01 +0000 (18:47 +0000)]
[Cocoa] "video.html" appears at the top level of the TestWebKitAPI Xcode project
https://bugs.webkit.org/show_bug.cgi?id=188989

Reviewed by Andy Estes.

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

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:

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

13 months agoAvoid an exception in the interactive interpreter
commit-queue@webkit.org [Mon, 27 Aug 2018 18:22:50 +0000 (18:22 +0000)]
Avoid an exception in the interactive interpreter
https://bugs.webkit.org/show_bug.cgi?id=188991

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

* WebGPUShadingLanguageRI/index.html: Corrects a typo in the name of a
local variable

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

13 months agoAllow new vector types to work with the interactive interpreter
commit-queue@webkit.org [Mon, 27 Aug 2018 18:22:06 +0000 (18:22 +0000)]
Allow new vector types to work with the interactive interpreter
https://bugs.webkit.org/show_bug.cgi?id=188988

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

* WebGPUShadingLanguageRI/FlattenedStructOffsetGatherer.js:
(FlattenedStructOffsetGatherer.prototype.visitTypeRef): Do not
unncessarily visit the type arguments of a TypeRef, as by this point
there are none that are relevant.
* WebGPUShadingLanguageRI/Intrinsics.js:
(Intrinsics): Treat VectorType as a primitive type.

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

13 months agoFix internal builds after r235368
achristensen@apple.com [Mon, 27 Aug 2018 17:54:04 +0000 (17:54 +0000)]
Fix internal builds after r235368

* UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:
At least the ios macros need an introductory version.

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

13 months agoUpdate WPT tools to 87329a1
youenn@apple.com [Mon, 27 Aug 2018 17:38:38 +0000 (17:38 +0000)]
Update WPT tools to 87329a1
https://bugs.webkit.org/show_bug.cgi?id=188766

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

* resources/config.json:
* web-platform-tests/fetch/cross-origin-resource-policy/fetch.any.js:
Fixing test that was including testharness.js twice once explictly and once with WPT test template.
* web-platform-tests/infrastructure: Refreshed.
* web-platform-tests/infrastructure/testdriver/bless.html: Added.
* web-platform-tests/tools: Refreshed

LayoutTests:

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

* http/wpt/service-workers/cors-preflight-star.any-serviceworker-expected.txt: Renamed from LayoutTests/http/wpt/service-workers/cors-preflight-star.any.serviceworker-expected.txt.
* http/wpt/service-workers/cors-preflight-star.any-serviceworker.html: Renamed from LayoutTests/http/wpt/service-workers/cors-preflight-star.any.serviceworker.html.

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

13 months agoBuild system support for LTO
krollin@apple.com [Mon, 27 Aug 2018 17:16:17 +0000 (17:16 +0000)]
Build system support for LTO
https://bugs.webkit.org/show_bug.cgi?id=187785
<rdar://problem/42353132>

Reviewed by Dan Bernstein.

.:

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

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

- When using `make` from the command line, include
  WK_LTO_MODE={none,thin,full}. For example, `make WK_LTO_MODE=full
  release`. As when specifying debug/release, the LTO configuration
  information is written to the WebKitBuild directory and is used as
  the default on the next build if a new setting is not specified.

- When using `build-webkit`, include --lto-mode={none,thin,full} on
  the command line. For example, `build-webkit --lto-mode=full ...`.

- When using Xcode, create a configuration file called
  LocalOverrides.xcconfig at the root level of your WebKit checkout
  directory. Include within it a line that says:

    WK_LTO_MODE={none,thin,full}

  For example:

    WK_LTO_MODE=full

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

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

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

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

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

Source/bmalloc:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/ThirdParty/ANGLE:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/ThirdParty/libwebrtc:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WebCore:

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

No new tests -- no new WebKit functionality.

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WebCore/PAL:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WebInspectorUI:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WebKit:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WebKitLegacy/mac:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/WTF:

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

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Tools:

Add tools/scripts support for controlling LTO builds.

* Scripts/build-webkit: Add --lto-mode={none,thin,full}.
* Scripts/set-webkit-configuration: Add support for saving LTO
configuration to WebKitBuild/LTO.
* Scripts/webkitdirs.pm: Add support for reading configuration from
WebKitBuild/LTO and providing it to xcodebuild.
(determineLTOMode):
(ltoMode):
(XcodeOptions):

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

13 months ago[iOS] Make color of spelling dots match UIKit
dbates@webkit.org [Mon, 27 Aug 2018 17:10:55 +0000 (17:10 +0000)]
[iOS] Make color of spelling dots match UIKit
https://bugs.webkit.org/show_bug.cgi?id=188861

Reviewed by Simon Fraser.

* rendering/RenderThemeCocoa.h:
* rendering/RenderThemeCocoa.mm:
(WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Modified to call colorForMarkerLineStyle()
for the color to use for the line style.
(WebCore::colorForStyle): Deleted.
* rendering/RenderThemeIOS.h:
* rendering/RenderThemeIOS.mm:
(WebCore::RenderThemeIOS::colorForMarkerLineStyle): Added.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::colorForMarkerLineStyle): Added.

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

13 months agoRemove extern variable and simplify state initialization in TextCheckerMac.mm
dbates@webkit.org [Mon, 27 Aug 2018 17:09:20 +0000 (17:09 +0000)]
Remove extern variable and simplify state initialization in TextCheckerMac.mm
https://bugs.webkit.org/show_bug.cgi?id=188820

Reviewed by Simon Fraser.

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

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

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

13 months agoSpelling dots do not scale with page on iOS; share spelling dot painting code between...
dbates@webkit.org [Mon, 27 Aug 2018 17:06:09 +0000 (17:06 +0000)]
Spelling dots do not scale with page on iOS; share spelling dot painting code between Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=188828
<rdar://problem/15966403>

Reviewed by Simon Fraser.

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

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

* Resources/DictationPhraseWithAlternativesDot.png: Removed.
* Resources/DictationPhraseWithAlternativesDot@2x.png: Removed.
* Resources/SpellingDot.png: Removed.
* Resources/SpellingDot@2x.png: Removed.
* Resources/SpellingDot@3x.png: Removed.
* WebCore.xcodeproj/project.pbxproj:
* page/Page.cpp:
(WebCore::Page::setDeviceScaleFactor):
* platform/graphics/GraphicsContext.h:
* platform/graphics/cairo/GraphicsContextCairo.cpp:
(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.
* platform/graphics/cocoa/GraphicsContextCocoa.mm:
(WebCore::GraphicsContext::drawLineForDocumentMarker):
(WebCore::findImage): Deleted.
(WebCore::createDotPattern): Deleted.
(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.
* platform/graphics/win/GraphicsContextCGWin.cpp:
(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.
* platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::updateDocumentMarkerResources): Deleted.
* platform/ios/wak/WKGraphics.mm:
(WKRectFill): Incorporated the logic from _FillRectUsingOperation().
(_FillRectUsingOperation): Deleted; moved the logic into WKRectFill() since WKRectFill()
is now the only caller of this function.
(WKRectFillUsingOperation): Deleted.
(imageResourcePath): Deleted.
(WKGraphicsCreateImageFromBundleWithName): Deleted.
(WKDrawPatternBitmap): Deleted.
(WKReleasePatternBitmap): Deleted.
(WKSetPattern): Deleted.
* platform/ios/wak/WKGraphicsInternal.h: Removed.
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintPlatformDocumentMarker):
* rendering/RenderThemeCocoa.h: Add headers RenderText.h and GraphicsContextCG.h. Fix some style nits while I am here;
substitute #import for #include and remove some unnecessary headers TranslateTransformOperation.h, RenderStyle.h, and
RenderElement.h.
* rendering/RenderThemeCocoa.mm:
(WebCore::colorForStyle):
(WebCore::RenderThemeCocoa::drawLineForDocumentMarker): Moved from RenderThemeMac. I renamed
the local variable ctx to context and fixed a type in a comment while moving this code.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::colorForStyle): Deleted; moved to class RenderThemeCocoa.
(WebCore::RenderThemeMac::drawLineForDocumentMarker): Deleted; moved to class RenderThemeCocoa.

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

13 months agoWeb Inspector: REGRESSION: virtualized TreeOutline is empty when filtering
drousso@apple.com [Mon, 27 Aug 2018 16:59:39 +0000 (16:59 +0000)]
Web Inspector: REGRESSION: virtualized TreeOutline is empty when filtering
https://bugs.webkit.org/show_bug.cgi?id=188959

Reviewed by Brian Burg.

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

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

13 months agolldb-webkit: Pretty-print OptionSet
dbates@webkit.org [Mon, 27 Aug 2018 16:59:32 +0000 (16:59 +0000)]
lldb-webkit: Pretty-print OptionSet
https://bugs.webkit.org/show_bug.cgi?id=188936

Reviewed by Simon Fraser.

Add LLDB formatters to pretty-print an OptionSet.

* lldb/lldbWebKitTester/main.cpp:
(testSummaryProviders):
* lldb/lldb_webkit.py:
(__lldb_init_module):
(__lldb_init_module.lldb_webkit):
(WTFOptionSet_SummaryProvider):
(WTFOptionSetProvider):
(WTFOptionSetProvider.__init__):
(WTFOptionSetProvider.has_children):
(WTFOptionSetProvider.num_children):
(WTFOptionSetProvider.get_child_index):
(WTFOptionSetProvider.get_child_at_index):
(WTFOptionSetProvider.update):
* lldb/lldb_webkit_unittest.py:
(TestSummaryProviders.serial_test_WTFHashSet_tablesize_and_size):
(TestSummaryProviders):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_empty):
(TestSummaryProviders.serial_test_WTFOptionSet_SummaryProvider_simple):
(TestSummaryProviders.serial_test_WTFOptionSetProvider_empty):
(TestSummaryProviders.serial_test_WTFOptionSetProvider_simple):

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

13 months ago[Attachment Support] [WK2] Images copied from Mail message view paste with the wrong...
wenson_hsieh@apple.com [Mon, 27 Aug 2018 16:45:24 +0000 (16:45 +0000)]
[Attachment Support] [WK2] Images copied from Mail message view paste with the wrong file name in compose
https://bugs.webkit.org/show_bug.cgi?id=188957
<rdar://problem/43737715>

Reviewed by Darin Adler.

Source/WebCore:

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

Test: WKAttachmentTests.PasteWebArchiveContainingImages

* editing/cocoa/WebContentReaderCocoa.mm:
(WebCore::replaceRichContentWithAttachments):

Tools:

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

* TestWebKitAPI/Tests/WebKitCocoa/WKAttachmentTests.mm:
(testGIFFileURL):
(testGIFData):
(TestWebKitAPI::TEST):

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

13 months agoDon't launch network process in WebCookieManagerProxy::setHTTPCookieAcceptPolicy
sihui_liu@apple.com [Mon, 27 Aug 2018 16:43:23 +0000 (16:43 +0000)]
Don't launch network process in WebCookieManagerProxy::setHTTPCookieAcceptPolicy
https://bugs.webkit.org/show_bug.cgi?id=188906
<rdar://problem/42875795>

Reviewed by Ryosuke Niwa.

Add callback in early return.

* UIProcess/WebCookieManagerProxy.cpp:
(WebKit::WebCookieManagerProxy::setHTTPCookieAcceptPolicy):

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

13 months ago[GTK][JSC] Add warn_unused_result attribute to some APIs
commit-queue@webkit.org [Mon, 27 Aug 2018 16:39:11 +0000 (16:39 +0000)]
[GTK][JSC] Add warn_unused_result attribute to some APIs
https://bugs.webkit.org/show_bug.cgi?id=188983

Patch by Patrick Griffis <pgriffis@igalia.com> on 2018-08-27
Reviewed by Michael Catanzaro.

* API/glib/JSCValue.h:

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

13 months agoUnreviewed, rolling out r235367.
achristensen@apple.com [Mon, 27 Aug 2018 16:34:11 +0000 (16:34 +0000)]
Unreviewed, rolling out r235367.

Broke iOS build.

Reverted changeset:

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

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

13 months agoFix GTK build.
achristensen@apple.com [Mon, 27 Aug 2018 16:27:31 +0000 (16:27 +0000)]
Fix GTK build.

* TestWebKitAPI/CMakeLists.txt:

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

13 months agoFix iOS build.
achristensen@apple.com [Mon, 27 Aug 2018 16:25:10 +0000 (16:25 +0000)]
Fix iOS build.

* TestWebKitAPI/PlatformWebView.h:

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

13 months agoTransition WKBrowsingContextController from WKPageLoaderClient to WKPageNavigationClient
achristensen@apple.com [Mon, 27 Aug 2018 16:16:10 +0000 (16:16 +0000)]
Transition WKBrowsingContextController from WKPageLoaderClient to WKPageNavigationClient
https://bugs.webkit.org/show_bug.cgi?id=188942

Reviewed by Andy Estes.

* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(didStartProvisionalNavigation):
(didReceiveServerRedirectForProvisionalNavigation):
(didFailProvisionalNavigation):
(didCommitNavigation):
(didFinishNavigation):
(didFailNavigation):
(canAuthenticateAgainstProtectionSpace):
(didReceiveAuthenticationChallenge):
(setUpPageLoaderClient):
(-[WKBrowsingContextController setLoadDelegate:]):
(didStartProvisionalLoadForFrame): Deleted.
(didReceiveServerRedirectForProvisionalLoadForFrame): Deleted.
(didFailProvisionalLoadWithErrorForFrame): Deleted.
(didCommitLoadForFrame): Deleted.
(didFinishLoadForFrame): Deleted.
(didFailLoadWithErrorForFrame): Deleted.
(canAuthenticateAgainstProtectionSpaceInFrame): Deleted.
(didReceiveAuthenticationChallengeInFrame): Deleted.
(didStartProgress): Deleted.
(didChangeProgress): Deleted.
(didFinishProgress): Deleted.
(didChangeBackForwardList): Deleted.
* UIProcess/API/Cocoa/WKBrowsingContextLoadDelegate.h:

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

13 months agoTranslate 4 tests using WKPageLoaderClient to ObjC
achristensen@apple.com [Mon, 27 Aug 2018 16:08:17 +0000 (16:08 +0000)]
Translate 4 tests using WKPageLoaderClient to ObjC
https://bugs.webkit.org/show_bug.cgi?id=188827

Reviewed by Tim Horton.

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

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp: Removed.
* TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem_Bundle.cpp: Removed.
* TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimer.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimer.cpp.
(-[ResponsivenessTimerDelegate webView:didFinishNavigation:]):
(-[ResponsivenessTimerDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/ResponsivenessTimerDoesntFireEarly.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ResponsivenessTimerDoesntFireEarly.cpp.
(-[ResponsivenessDelegate webView:didFinishNavigation:]):
(-[ResponsivenessDelegate _webViewWebProcessDidBecomeUnresponsive:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didReceiveMessageFromInjectedBundle): Deleted.
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::processDidBecomeUnresponsive): Deleted.
(TestWebKitAPI::setInjectedBundleClient): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/RestoreSessionStateWithoutNavigation.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/RestoreSessionStateWithoutNavigation.cpp.
(-[SessionStateDelegate webView:didFinishNavigation:]):
(-[SessionStateDelegate _webView:backForwardListItemAdded:removed:]):
(TestWebKitAPI::createSessionStateData):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::didChangeBackForwardListForPage): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.
* TestWebKitAPI/Tests/WebKitCocoa/ShouldGoToBackForwardListItem.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit/ShouldGoToBackForwardListItem.cpp.
(-[BackForwardClient webView:didFinishNavigation:]):
(-[BackForwardClient _webView:willGoToBackForwardListItem:inPageCache:]):
(TestWebKitAPI::TEST):
(TestWebKitAPI::didFinishLoadForFrame): Deleted.
(TestWebKitAPI::willGoToBackForwardListItem): Deleted.
(TestWebKitAPI::setPageLoaderClient): Deleted.

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

13 months ago[Cocoa] Adapt more WebKit code to be ARC-compatible
darin@apple.com [Mon, 27 Aug 2018 15:51:24 +0000 (15:51 +0000)]
[Cocoa] Adapt more WebKit code to be ARC-compatible
https://bugs.webkit.org/show_bug.cgi?id=188955

Reviewed by Anders Carlsson.

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

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::initializeCocoaOverrides): Add some __bridge casts.

* Shared/API/Cocoa/WKRemoteObjectCoder.mm: Use HashSet<CFTypeRef> instead of
HashSet<Class> since Class ia an ARC-managed type and WTF hash tables can't
currently handle those as key types.
(-[WKRemoteObjectDecoder decodeValueOfObjCType:at:]): Changed types and added casts
to adapt to the above.
(decodeObjectFromObjectStream): Ditto.
(checkIfClassIsAllowed): Ditto.
(decodeInvocationArguments): Ditto.
(decodeObject): Ditto.
(-[WKRemoteObjectDecoder decodeObjectOfClasses:forKey:]): Ditto.
(-[WKRemoteObjectDecoder allowedClasses]): Ditto.
* Shared/API/Cocoa/_WKRemoteObjectInterface.mm:
(propertyListClasses): Ditto.
(initializeMethod): Ditto.
(-[_WKRemoteObjectInterface debugDescription]): Ditto.
(classesForSelectorArgument): Ditto.
(-[_WKRemoteObjectInterface classesForSelector:argumentIndex:ofReply:]): Ditto.
(-[_WKRemoteObjectInterface setClasses:forSelector:argumentIndex:ofReply:]): Ditto.
(-[_WKRemoteObjectInterface _allowedArgumentClassesForSelector:]): Ditto.
(-[_WKRemoteObjectInterface _allowedArgumentClassesForReplyBlockOfSelector:]): Ditto.
* Shared/API/Cocoa/_WKRemoteObjectInterfaceInternal.h: Ditto.

* Shared/API/c/cf/WKStringCF.mm:
(WKStringCreateWithCFString): Use CFRetain instead of -[NSObject retain]. Also use
a __bridge cast.
* Shared/API/c/cf/WKURLCF.mm:
(WKURLCreateWithCFURL): Ditto.

* Shared/Cocoa/APIObject.mm:
(API::Object::ref): Added a __bridge cast.
(API::Object::deref): Ditto.
(API::allocateWKObject): Use class_createInstance instead of NSAllocateObject.
(API::Object::wrap): Use a __bridge cast.
(API::Object::unwrap): Ditto.

* Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.h: Use CFTypeRef for layers
or views in the RelatedLayerMap since we don't want the items retained, and can't
use __unsafe_uretained because the header is used in non-Objective-C contexts.
* Shared/RemoteLayerTree/RemoteLayerTreePropertyApplier.mm:
(WebKit::RemoteLayerTreePropertyApplier::applyProperties): Added __bridge casts,
needed because of the above change.

* UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(WebKit::browsingContextControllerMap): Use __unsafe_unretained.

* UIProcess/API/Cocoa/WKConnection.mm:
(didReceiveMessage): Use a __bridge cast.

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

* UIProcess/API/Cocoa/WKHTTPCookieStore.mm: Use CFTypeRef for the key to the _observers
HashMap since the WTF collections can't yet handle ARC types for keys.
(-[WKHTTPCookieStore addObserver:]): Added __bridge cast for compatibility with the above.
(-[WKHTTPCookieStore removeObserver:]): Ditto.

* UIProcess/API/Cocoa/WKProcessGroup.mm:
(setUpConnectionClient): Added a __bridge cast.
(setUpHistoryClient): Ditto.

* UIProcess/API/Cocoa/WKViewPrivate.h: Added a declaration of the
-[WKView _shouldLoadIconWithParameters:completionHandler:] method. This peculiar idiom
should be removed, but I didn't bother doing that since the entire WKView class is already
deprecated and so will eventually be removed.

* UIProcess/API/Cocoa/WKWebView.mm: Use __unsafe_unretained for the keys in the page to
view map.
(accessibilityEventsEnabledChangedCallback): Use a __bridge cast.
(-[WKWebView _certificateChain]): Ditto.
(-[WKWebView certificateChain]): Ditto.

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

* UIProcess/Cocoa/NavigationState.mm:
(WebKit::NavigationState::NavigationClient::webCryptoMasterKey): Use the overload
of API::Data::createWithoutCopying that knows how to work with an NSData rather than
re-implementing it here.
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess): Ditto. Also removed unneeded
use of RetainPtr.

* UIProcess/Cocoa/WebViewImpl.h: Use NSObject * as the result type of
immediateActionAnimationControllerForHitTestResult. Our techniques for defining such
functions in headers while remaining compatible with non-Objective-C will still work
fine given how we use this, and converting to and from void* rather than NSObject *
would be difficult to do correctly under ARC.

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

* UIProcess/PageClient.h: Use NSObject * as the result type, as above.

* UIProcess/RemoteLayerTree/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::updateLayerTree): Use __bridge casts to be compatible
with the changes to the RelatedLayerMap types.
(WebKit::recursivelyMapIOSurfaceBackingStore): Use __bridge cast.

* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::immediateActionAnimationControllerForHitTestResult):
Use NSObject * as the result type, as above.
* Source/WebKit/UIProcess/WebPageProxy.h: Ditto.

* UIProcess/mac/PageClientImplMac.h: Use NSObject * as the result type, as above.
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::immediateActionAnimationControllerForHitTestResult):
Ditto.
(WebKit::PageClientImpl::refView): Use __bridge cast.
(WebKit::PageClientImpl::derefView): Ditto.

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

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

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

* WebProcess/InjectedBundle/API/mac/WKDOMInternals.h: Use __unsafe_unretained
for the value types in DOM caches.
* WebProcess/InjectedBundle/API/mac/WKDOMInternals.mm:
(WebKit::toWKDOMNode): Updated for the above.
(WebKit::toWKDOMRange): Ditto.

* WebProcess/Plugins/Netscape/mac/NetscapePluginMac.mm:
(WebKit::NetscapePlugin::platformPreInitialize): Rewrote the class_replaceMethod
call to sidestep the rules about not using @selector(release) under ARC.
(WebKit::NetscapePlugin::updatePluginLayer): Use __bridge casts.

* WebProcess/Plugins/PDF/PDFPlugin.mm: Added an include of
WebAccessibilityObjectWrapperMac.h, without which this code doesn't compile
under ARC.

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

* WebProcess/cocoa/WebProcessCocoa.mm: Added an include of
WebAccessibilityObjectWrapperIOS/Mac.h, without which this code doesn't compile
under ARC.

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