WebKit-https.git
20 months ago[python] Replace print operator with print() function for python3 compatibility
annulen@yandex.ru [Fri, 8 Dec 2017 21:56:09 +0000 (21:56 +0000)]
[python] Replace print operator with print() function for python3 compatibility
https://bugs.webkit.org/show_bug.cgi?id=180592

Reviewed by Michael Catanzaro.

PerformanceTests:

* JSBench/harness.py:

Source/JavaScriptCore:

* Scripts/generateYarrUnicodePropertyTables.py:
(openOrExit):
(verifyUCDFilesExist):
(Aliases.parsePropertyAliasesFile):
(Aliases.parsePropertyValueAliasesFile):
* Scripts/make-js-file-arrays.py:
(main):
* generate-bytecode-files:

Source/WebCore/PAL:

* AVFoundationSupport.py:

Tools:

* BuildSlaveSupport/wait-for-SVN-server.py:
(getLatestSVNRevision):
(waitForSVNRevision):
* Scripts/download-latest-github-release.py:
(find_latest_release):
(main):
* Scripts/update-wasm-gcc-torture.py:
(update_lkgr):
(untar_torture):
(list_js_files):
(waterfall_known_failures):
* Scripts/update-webkit-wincairo-libs.py:
* Scripts/webkitpy/benchmark_runner/benchmark_runner.py:
(BenchmarkRunner.show_results):
* Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:
(SimpleHTTPServerDriver.fetch_result):
* Scripts/webkitpy/benchmark_runner/run_benchmark.py:
(list_benchmark_plans):
* Scripts/webkitpy/bindings/main.py:
(BindingsTests.generate_from_idl):
(BindingsTests.generate_supplemental_dependency):
(BindingsTests.detect_changes):
(BindingsTests.run_tests):
(BindingsTests.main):
* Scripts/webkitpy/codegen/main.py:
(BuiltinsGeneratorTests.generate_from_js_builtins):
(BuiltinsGeneratorTests.detect_changes):
(BuiltinsGeneratorTests.single_builtin_test):
(BuiltinsGeneratorTests.run_test):
(BuiltinsGeneratorTests.run_tests):
(BuiltinsGeneratorTests.main):
* Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
(MockBugzilla.fetch_attachment):
* Scripts/webkitpy/common/net/buildbot/buildbot.py:
(Builder._fetch_revision_to_build_map):
* Scripts/webkitpy/common/system/crashlogs.py:
(CrashLogs._find_newest_log_win):
* Scripts/webkitpy/common/system/outputcapture_unittest.py:
(OutputCaptureTest.test_output_capture_scope):
* Scripts/webkitpy/common/system/profiler.py:
(GooglePProf.profile_after_exit):
(Perf.profile_after_exit):
* Scripts/webkitpy/common/system/user.py:
(User.prompt_with_multiple_lists):
(User.prompt_with_list):
(User._warn_if_application_is_xcode):
(User.edit_changelog):
* Scripts/webkitpy/inspector/main.py:
(InspectorGeneratorTests.generate_from_json):
(InspectorGeneratorTests.detect_changes):
(InspectorGeneratorTests.run_tests):
(InspectorGeneratorTests.main):
* Scripts/webkitpy/layout_tests/controllers/manager.py:
(Manager._print_expectation_line_for_test):
(Manager._print_expectations_for_subset):
(Manager._print_expectations_for_subset.if):
* Scripts/webkitpy/layout_tests/servers/run_webkit_httpd.py:
(run_server):
* Scripts/webkitpy/port/config_standalone.py:
(main):
* Scripts/webkitpy/port/darwin_testcase.py:
(DarwinTest.test_spindump.logging_run_command):
(DarwinTest.test_sample_process.logging_run_command):
* Scripts/webkitpy/port/ios.py:
(IOSPort.clean_up_test_run):
* Scripts/webkitpy/port/ios_device_unittest.py:
(IOSDeviceTest.test_spindump.logging_run_command):
(IOSDeviceTest.test_sample_process.logging_run_command):
* Scripts/webkitpy/port/ios_simulator_unittest.py:
(IOSSimulatorTest.test_xcrun.throwing_run_command):
* Scripts/webkitpy/port/leakdetector_unittest.py:
(test_count_total_bytes_and_unique_leaks.mock_run_script):
* Scripts/webkitpy/port/mac_unittest.py:
(MacTest.test_xcrun.throwing_run_command):
* Scripts/webkitpy/style/checkers/contributors.py:
(ContributorsChecker.check):
* Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
(AbstractLocalServerCommand.execute):
* Scripts/webkitpy/tool/commands/adduserstogroups.py:
(AddUsersToGroups.execute):
* Scripts/webkitpy/tool/commands/analyzechangelog.py:
(AnalyzeChangeLog._generate_jsons):
(AnalyzeChangeLog.execute):
(ChangeLogAnalyzer._set_filename):
(ChangeLogAnalyzer.analyze):
* Scripts/webkitpy/tool/commands/bugfortest.py:
(BugForTest.execute):
* Scripts/webkitpy/tool/commands/bugsearch.py:
(execute):
* Scripts/webkitpy/tool/commands/findusers.py:
(FindUsers.execute):
* Scripts/webkitpy/tool/commands/gardenomatic.py:
(GardenOMatic.execute):
* Scripts/webkitpy/tool/commands/rebaseline.py:
(RebaselineTest.execute):
* Scripts/webkitpy/tool/commands/rebaselineserver.py:
(RebaselineServer._prepare_config):
* Scripts/webkitpy/tool/commands/setupgitclone.py:
(SetupGitClone.execute):
(SetupGitClone._get_username_and_email):
* Scripts/webkitpy/tool/commands/suggestnominations.py:
(SuggestNominations._print_nominations):
(SuggestNominations._print_counts):
* Scripts/webkitpy/tool/commands/upload.py:
(CommitMessageForCurrentDiff.execute):
(CreateBug.prompt_for_bug_title_and_comment):
* Scripts/webkitpy/tool/multicommandtool.py:
(HelpCommand.execute):
* Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
(TestGardeningHTTPRequestHandler._serve_text):
(TestGardeningHTTPRequestHandler._serve_json):
* Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py:
(AddSvnMimetypeForPng.run):
* Scripts/webkitpy/tool/steps/suggestreviewers.py:
(SuggestReviewers.run):
* Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.update_tests_options):
* Scripts/webkitpy/webdriver_tests/webdriver_test_runner_selenium.py:
(WebDriverTestRunnerSelenium.run):
* TestResultServer/model/jsonresults_unittest.py:
* gtk/ycm_extra_conf.py:
(FlagsForFile):
* lldb/lldb_webkit.py:
(btjs):

LayoutTests:

* html5lib/generate-test-wrappers.py:
(_remove_stale_tests):
* http/tests/websocket/tests/hybi/bad-handshake-crash_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-connection-header_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-cr_wsh.py:
(web_socket_do_extra_handshake):
* http/tests/websocket/tests/hybi/handshake-fail-by-no-upgrade-header_wsh.py:
(web_socket_do_extra_handshake):

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

20 months agoNeed to unpoison native function pointers for CLoop.
mark.lam@apple.com [Fri, 8 Dec 2017 21:38:02 +0000 (21:38 +0000)]
Need to unpoison native function pointers for CLoop.
https://bugs.webkit.org/show_bug.cgi?id=180601
<rdar://problem/35942028>

Reviewed by JF Bastien.

* llint/LowLevelInterpreter64.asm:

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

20 months agoMove Logger from PAL to WTF so it can be used outside of WebCore
eric.carlson@apple.com [Fri, 8 Dec 2017 20:33:53 +0000 (20:33 +0000)]
Move Logger from PAL to WTF so it can be used outside of WebCore
https://bugs.webkit.org/show_bug.cgi?id=180561

Reviewed by Alex Christensen.

Source/WebCore:

No new tests, existing API test updated.

* Modules/mediastream/PeerConnectionBackend.h:
* Modules/mediastream/RTCPeerConnection.h:
* Modules/mediastream/libwebrtc/LibWebRTCMediaEndpoint.h:
(PAL::LogArgument<webrtc::RTCStats>::toString): Deleted.
* dom/Document.cpp:
* dom/Document.h:
* html/HTMLMediaElement.cpp:
(PAL::LogArgument<WebCore::URL>::toString): Deleted.
* html/HTMLMediaElement.h:
* html/HTMLMediaElementEnums.h:
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::ReadyState>::toString): Deleted.
(PAL::LogArgument<WebCore::HTMLMediaElementEnums::NetworkState>::toString): Deleted.
* html/MediaElementSession.cpp:
(WebCore::MediaElementSession::logger const):
* html/MediaElementSession.h:
* html/track/DataCue.h:
(PAL::LogArgument<WebCore::DataCue>::toString): Deleted.
* html/track/TextTrackCue.h:
(PAL::LogArgument<WebCore::TextTrackCue>::toString): Deleted.
* html/track/TextTrackCueGeneric.h:
(PAL::LogArgument<WebCore::TextTrackCueGeneric>::toString): Deleted.
* html/track/TrackBase.cpp:
(WebCore::nullLogger):
(WebCore::TrackBase::TrackBase):
* html/track/TrackBase.h:
* html/track/VTTCue.h:
(PAL::LogArgument<WebCore::VTTCue>::toString): Deleted.
* platform/graphics/InbandTextTrackPrivate.h:
* platform/graphics/InbandTextTrackPrivateClient.h:
(PAL::LogArgument<WebCore::GenericCueData>::toString): Deleted.
* platform/graphics/MediaPlayer.cpp:
(WebCore::nullLogger):
(WebCore::MediaPlayer::mediaPlayerLogger):
* platform/graphics/MediaPlayer.h:
(WTF::LogArgument<MediaTime>::toString):
(PAL::LogArgument<WTF::MediaTime>::toString): Deleted.
* platform/graphics/MediaPlayerEnums.h:
(PAL::LogArgument<WebCore::MediaPlayerEnums::ReadyState>::toString): Deleted.
(PAL::LogArgument<WebCore::MediaPlayerEnums::NetworkState>::toString): Deleted.
* platform/graphics/TrackPrivateBase.cpp:
(WebCore::TrackPrivateBase::setLogger):
* platform/graphics/TrackPrivateBase.h:
* platform/graphics/avfoundation/AVTrackPrivateAVFObjCImpl.mm:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:
* platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):
* platform/mediastream/RTCIceConnectionState.h:
(PAL::LogArgument<WebCore::RTCIceConnectionState>::toString): Deleted.
* platform/mediastream/RTCIceGatheringState.h:
(PAL::LogArgument<WebCore::RTCIceGatheringState>::toString): Deleted.
* platform/mediastream/RTCPeerConnectionState.h:
(PAL::LogArgument<WebCore::RTCPeerConnectionState>::toString): Deleted.
* platform/mediastream/RTCSignalingState.h:
(PAL::LogArgument<WebCore::RTCSignalingState>::toString): Deleted.
* platform/mediastream/mac/AudioTrackPrivateMediaStreamCocoa.cpp:

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj:
* pal/Logger.h: Removed.
* pal/LoggerHelper.h: Removed.

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/Logger.h: Copied from Source/WebCore/PAL/pal/Logger.h.
(PAL::LogArgument::toString): Deleted.
(PAL::Logger::create): Deleted.
(PAL::Logger::logAlways const): Deleted.
(PAL::Logger::error const): Deleted.
(PAL::Logger::warning const): Deleted.
(PAL::Logger::info const): Deleted.
(PAL::Logger::debug const): Deleted.
(PAL::Logger::willLog const): Deleted.
(PAL::Logger::enabled const): Deleted.
(PAL::Logger::setEnabled): Deleted.
(PAL::Logger::LogSiteIdentifier::LogSiteIdentifier): Deleted.
(PAL::Logger::addObserver): Deleted.
(PAL::Logger::removeObserver): Deleted.
(PAL::Logger::Logger): Deleted.
(PAL::Logger::log): Deleted.
(PAL::Logger::observers): Deleted.
(PAL::LogArgument<Logger::LogSiteIdentifier>::toString): Deleted.
* wtf/LoggerHelper.h: Copied from Source/WebCore/PAL/pal/LoggerHelper.h.

Tools:

* TestWebKitAPI/Tests/WebCore/Logging.cpp:
(TestWebKitAPI::TEST_F):

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

20 months agoYARR: JIT RegExps with greedy parenthesized sub patterns
msaboff@apple.com [Fri, 8 Dec 2017 20:32:42 +0000 (20:32 +0000)]
YARR: JIT RegExps with greedy parenthesized sub patterns
https://bugs.webkit.org/show_bug.cgi?id=180538

Reviewed by JF Bastien.

This patch adds JIT support for regular expressions containing greedy counted
parenthesis.  An example expression that couldn't be JIT'ed before is /q(a|b)*q/.

Just like in the interpreter, expressions with nested parenthetical subpatterns
require saving the results of previous matches of the parentheses contents along
with any associated state.  This saved state is needed in the case that we need
to backtrack.  This state is called ParenContext within the code space allocated
for this ParenContext is managed using a simple block allocator within the JIT'ed
code.  The raw space managed by this allocator is passed into the JIT'ed function.

Since this fixed sized space may be exceeded, this patch adds a fallback mechanism.
If the JIT'ed code exhausts all its ParenContext space, it returns a new error
JSRegExpJITCodeFailure.  The caller will then bytecompile and interpret the
expression.

Due to increased register usage by the parenthesis handling code, the use of
registers by the JIT engine was restructured, with registers used for Unicode
pattern matching replaced with constants.

Reworked some of the context structures that are used across the interpreter
and JIT implementations to make them a little more uniform and to handle the
needs of JIT'ing the new parentheses forms.

To help with development and debugging of this code, compiled patterns dumping
code was enhanced.  Also added the ability to also dump interpreter ByteCodes.

* runtime/RegExp.cpp:
(JSC::byteCodeCompilePattern):
(JSC::RegExp::byteCodeCompileIfNecessary):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):
* runtime/RegExp.h:
* runtime/RegExpInlines.h:
(JSC::RegExp::matchInline):
* testRegExp.cpp:
(parseRegExpLine):
(runFromFiles):
* yarr/Yarr.h:
* yarr/YarrInterpreter.cpp:
(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::dumpDisjunction):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::ParenContextSizes::ParenContextSizes):
(JSC::Yarr::YarrGenerator::ParenContextSizes::numSubpatterns):
(JSC::Yarr::YarrGenerator::ParenContextSizes::frameSlots):
(JSC::Yarr::YarrGenerator::ParenContext::sizeFor):
(JSC::Yarr::YarrGenerator::ParenContext::nextOffset):
(JSC::Yarr::YarrGenerator::ParenContext::beginOffset):
(JSC::Yarr::YarrGenerator::ParenContext::matchAmountOffset):
(JSC::Yarr::YarrGenerator::ParenContext::subpatternOffset):
(JSC::Yarr::YarrGenerator::ParenContext::savedFrameOffset):
(JSC::Yarr::YarrGenerator::initParenContextFreeList):
(JSC::Yarr::YarrGenerator::allocatePatternContext):
(JSC::Yarr::YarrGenerator::freePatternContext):
(JSC::Yarr::YarrGenerator::savePatternContext):
(JSC::Yarr::YarrGenerator::restorePatternContext):
(JSC::Yarr::YarrGenerator::tryReadUnicodeCharImpl):
(JSC::Yarr::YarrGenerator::storeToFrame):
(JSC::Yarr::YarrGenerator::generateJITFailReturn):
(JSC::Yarr::YarrGenerator::clearMatches):
(JSC::Yarr::YarrGenerator::generate):
(JSC::Yarr::YarrGenerator::backtrack):
(JSC::Yarr::YarrGenerator::opCompileParenthesesSubpattern):
(JSC::Yarr::YarrGenerator::generateEnter):
(JSC::Yarr::YarrGenerator::generateReturn):
(JSC::Yarr::YarrGenerator::YarrGenerator):
(JSC::Yarr::YarrGenerator::compile):
* yarr/YarrJIT.h:
(JSC::Yarr::YarrCodeBlock::execute):
* yarr/YarrPattern.cpp:
(JSC::Yarr::indentForNestingLevel):
(JSC::Yarr::dumpUChar32):
(JSC::Yarr::dumpCharacterClass):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::YarrPattern::dumpPattern):
* yarr/YarrPattern.h:
(JSC::Yarr::PatternTerm::containsAnyCaptures):
(JSC::Yarr::BackTrackInfoParenthesesOnce::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::beginIndex):
(JSC::Yarr::BackTrackInfoParentheses::returnAddressIndex):
(JSC::Yarr::BackTrackInfoParentheses::matchAmountIndex):
(JSC::Yarr::BackTrackInfoParentheses::patternContextHeadIndex):
(JSC::Yarr::BackTrackInfoAlternative::offsetIndex): Deleted.

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

20 months agoModernize APIWebsiteDataStore.h and WebProcessPool.h
achristensen@apple.com [Fri, 8 Dec 2017 20:32:20 +0000 (20:32 +0000)]
Modernize APIWebsiteDataStore.h and WebProcessPool.h
https://bugs.webkit.org/show_bug.cgi?id=180588

Reviewed by Chris Dumez.

pragma once, Ref instead of RefPtr, initializer list in header instead of literals in constructor.

* UIProcess/API/APIWebsiteDataStore.h:
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::WebProcessPool):
* UIProcess/WebProcessPool.h:

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

20 months agoWeb Inspector: CRASH at InspectorConsoleAgent::enable when iterating mutable list...
commit-queue@webkit.org [Fri, 8 Dec 2017 20:21:27 +0000 (20:21 +0000)]
Web Inspector: CRASH at InspectorConsoleAgent::enable when iterating mutable list of buffered console messages
https://bugs.webkit.org/show_bug.cgi?id=180590
<rdar://problem/35882767>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-08
Reviewed by Mark Lam.

* inspector/agents/InspectorConsoleAgent.cpp:
(Inspector::InspectorConsoleAgent::enable):
Swap the messages to a Vector that won't change during iteration.

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

20 months agoRemove pthread_once in favor of dispatch_once
utatane.tea@gmail.com [Fri, 8 Dec 2017 20:16:54 +0000 (20:16 +0000)]
Remove pthread_once in favor of dispatch_once
https://bugs.webkit.org/show_bug.cgi?id=180591

Reviewed by Saam Barati.

Source/WebCore:

No behavior change.

* platform/mac/WebCoreNSURLExtras.mm:
(WebCore::allCharactersInIDNScriptWhiteList):
(WebCore::readIDNScriptWhiteList): Deleted.

Source/WebKit:

* PluginProcess/mac/PluginProcessMac.mm:
(WebKit::shouldCallRealDebugger):
(WebKit::initShouldCallRealDebugger): Deleted.

Source/WebKitLegacy/mac:

* Misc/WebKitErrors.m:
(+[NSError _registerWebKitErrors]):
(registerErrors): Deleted.
* Storage/WebStorageManager.mm:
(+[WebStorageManager _storageDirectoryPath]):
(initializeLocalStoragePath): Deleted.

Source/WTF:

Fix the comment.

* wtf/Threading.h:
(WTF::Thread::current):

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

20 months agoProcessPoolConfiguration::copy() fails to copy the service worker path
cdumez@apple.com [Fri, 8 Dec 2017 20:07:30 +0000 (20:07 +0000)]
ProcessPoolConfiguration::copy() fails to copy the service worker path
https://bugs.webkit.org/show_bug.cgi?id=180595

Reviewed by Brady Eidson.

* UIProcess/API/APIProcessPoolConfiguration.cpp:
(API::ProcessPoolConfiguration::copy):

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

20 months agoDifferent WebKitTestRunner instances should use different service worker registration...
cdumez@apple.com [Fri, 8 Dec 2017 19:36:32 +0000 (19:36 +0000)]
Different WebKitTestRunner instances should use different service worker registrations databases
https://bugs.webkit.org/show_bug.cgi?id=180589

Reviewed by Brady Eidson.

Source/WebKit:

* UIProcess/API/C/WKContextConfigurationRef.cpp:
(WKContextConfigurationCopyServiceWorkerDatabaseDirectory):
(WKContextConfigurationSetServiceWorkerDatabaseDirectory):
* UIProcess/API/C/WKContextConfigurationRef.h:

Tools:

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::generateContextConfiguration const):

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

20 months agoImprove error handling in RegistrationDatabase
cdumez@apple.com [Fri, 8 Dec 2017 19:01:04 +0000 (19:01 +0000)]
Improve error handling in RegistrationDatabase
https://bugs.webkit.org/show_bug.cgi?id=180587

Reviewed by Brady Eidson.

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::doPushChanges):

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

20 months ago[WTF][Linux][GTK] Fix a minor bug in generic/WorkQueue when WorkQueue is immediately...
utatane.tea@gmail.com [Fri, 8 Dec 2017 18:37:08 +0000 (18:37 +0000)]
[WTF][Linux][GTK] Fix a minor bug in generic/WorkQueue when WorkQueue is immediately destroyed
https://bugs.webkit.org/show_bug.cgi?id=180586

Reviewed by Darin Adler.

If WorkQueue is created and destroyed immediately, RunLoop::stop can be called
befire calling RunLoop::run(). At that time WorkQueue thread is not stopped.

This patch dispatches a task stopping its own RunLoop to ensure stop is done.
We also clean up WorkQueue implementation not to include unnecessary fields,
lock, condition, and thread.

* wtf/WorkQueue.h:
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):

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

20 months agoYARR: Coalesce constructed character classes
msaboff@apple.com [Fri, 8 Dec 2017 18:27:18 +0000 (18:27 +0000)]
YARR: Coalesce constructed character classes
https://bugs.webkit.org/show_bug.cgi?id=180537

Reviewed by JF Bastien.

When adding characters or character ranges to a character class being constructed,
we now coalesce adjacent characters and character ranges.  When we create a
character class after construction is complete, we do a final coalescing pass
across the character list and ranges to catch any remaining coalescing
opportunities.

Added an optimization for character classes that will match any character.
This is somewhat common in code created before the /s (dotAll) flag was added
to the engine.

* yarr/YarrInterpreter.cpp:
(JSC::Yarr::Interpreter::checkCharacterClass):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::generateCharacterClassOnce):
(JSC::Yarr::YarrGenerator::generateCharacterClassFixed):
(JSC::Yarr::YarrGenerator::generateCharacterClassGreedy):
(JSC::Yarr::YarrGenerator::backtrackCharacterClassNonGreedy):
* yarr/YarrPattern.cpp:
(JSC::Yarr::CharacterClassConstructor::CharacterClassConstructor):
(JSC::Yarr::CharacterClassConstructor::reset):
(JSC::Yarr::CharacterClassConstructor::charClass):
(JSC::Yarr::CharacterClassConstructor::addSorted):
(JSC::Yarr::CharacterClassConstructor::addSortedRange):
(JSC::Yarr::CharacterClassConstructor::mergeRangesFrom):
(JSC::Yarr::CharacterClassConstructor::coalesceTables):
(JSC::Yarr::CharacterClassConstructor::anyCharacter):
(JSC::Yarr::YarrPatternConstructor::atomCharacterClassEnd):
(JSC::Yarr::PatternTerm::dump):
(JSC::Yarr::anycharCreate):
* yarr/YarrPattern.h:
(JSC::Yarr::CharacterClass::CharacterClass):

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

20 months agoPass std::optional<WebsitePolicies> instead of WebsitePolicies
achristensen@apple.com [Fri, 8 Dec 2017 18:05:21 +0000 (18:05 +0000)]
Pass std::optional<WebsitePolicies> instead of WebsitePolicies
https://bugs.webkit.org/show_bug.cgi?id=180563

Reviewed by Andy Estes.

WebsitePolicies are only passed along when a decidePolicyForNavigationAction SPI completion handler
is called with a valid _WKWebsitePolicies object.  In other cases, we don't have one.  Rather than
making WebsitePolicies have a default value for everything that won't change policies, pass
a std::optional<WebsitePolicies> which indicates better when we don't have new policies.

No change in behavior, but this will enable me to add things to WebsitePolicies that have no default value.

* Shared/WebsitePolicies.h:
Make WebsitePolicies a class with public members because the IPC code generators don't understand std::optional<struct type>
* UIProcess/API/C/WKAPICast.h:
* UIProcess/Cocoa/NavigationState.mm:
(WebKit::tryAppLink):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
* UIProcess/WebFrameListenerProxy.cpp:
(WebKit::WebFrameListenerProxy::receivedPolicyDecision):
* UIProcess/WebFrameListenerProxy.h:
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::use):
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::receivedPolicyDecision):
* UIProcess/WebFrameProxy.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::didReceivePolicyDecision):
* WebProcess/WebPage/WebFrame.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::didReceivePolicyDecision):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

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

20 months ago[WTF] Remove remaining use of Mutex
utatane.tea@gmail.com [Fri, 8 Dec 2017 17:48:31 +0000 (17:48 +0000)]
[WTF] Remove remaining use of Mutex
https://bugs.webkit.org/show_bug.cgi?id=180579

Reviewed by Alex Christensen.

Source/WebKit:

Remove unused "BinarySemaphore.h".

* Platform/IPC/win/ConnectionWin.cpp:

Source/WTF:

Mutex should be only used in low-level Locking and Threading.
Other ones should use WTF::Lock and WTF::Condition instead.
This patch replaces WTF::Mutex with WTF::Lock in WTF if it
is not related to threading or locking implementation.

And we also use WTF::Lock and WTF::Condition in WTF::BinarySemaphore.

* wtf/RunLoop.cpp:
(WTF::RunLoop::performWork):
(WTF::RunLoop::dispatch):
* wtf/RunLoop.h:
* wtf/WorkQueue.cpp:
* wtf/WorkQueue.h:
* wtf/threads/BinarySemaphore.cpp:
(WTF::BinarySemaphore::signal):
(WTF::BinarySemaphore::wait):
(WTF::BinarySemaphore::BinarySemaphore): Deleted.
(WTF::BinarySemaphore::~BinarySemaphore): Deleted.
* wtf/threads/BinarySemaphore.h:
* wtf/win/WorkQueueWin.cpp:
(WTF::WorkQueue::registerHandle):
(WTF::WorkQueue::unregisterAndCloseHandle):
(WTF::WorkQueue::dispatch):
(WTF::WorkQueue::timerCallback):
(WTF::WorkQueue::dispatchAfter):
(WTF::TimerContext::TimerContext): Deleted.

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

20 months agoSimplify and streamline some Color-related code to prepare for some Color/ExtendedCol...
darin@apple.com [Fri, 8 Dec 2017 17:26:58 +0000 (17:26 +0000)]
Simplify and streamline some Color-related code to prepare for some Color/ExtendedColor work
https://bugs.webkit.org/show_bug.cgi?id=180569

Reviewed by Sam Weinig.

* accessibility/AccessibilityNodeObject.cpp:
(WebCore::AccessibilityNodeObject::colorValue const): Use valueAsColor instead of
having custom code here to parse the color string.

* css/CSSGradientValue.cpp:
(WebCore::interpolate): Deleted.
(WebCore::CSSGradientValue::computeStops): Call blend instead of interpolate. The only
difference is that the interpolate function truncated when converting from floating point
to integer, and the blend function rounds instead.

* css/StyleResolver.cpp:
(WebCore::StyleResolver::colorFromPrimitiveValue const): Removed unneeded special case
for identifier of 0, since StyleColor::colorFromKeyword already handles that correctly.
Also got rid of unneded local variable "state".

* html/ColorInputType.cpp:
(WebCore::isValidSimpleColor): Rewrote to take a StringView instead of a String and
to stay with a single loop since this does not need the extra efficiency of a separate
8-bit and 16-bit character version. Renamed to more closely match what the specification
calls this algorithm.
(WebCore::parseSimpleColorValue): Added. To be used instead of relying on the behavior of
the Color constructor that takes a String, so we can remove that later.
(WebCore::ColorInputType::sanitizeValue const): Updated for name change.
(WebCore::ColorInputType::valueAsColor const): Use parseSimpleColorValue instead of the
Color constructor that takes a string.
(WebCore::ColorInputType::typeMismatchFor const): Updated for name change.
(WebCore::ColorInputType::selectColor): Updated to take a StringView instead of a Color.
Note that this function is used for testing only.

* html/ColorInputType.h: Marked everything final instead of override. Updated the
selectColor function to take a StringView instead of a Color.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::selectColor): Take a StringView instead of a Color.
* html/HTMLInputElement.h: Ditto.

* html/InputType.cpp:
(WebCore::InputType::selectColor): Take a StringView instead of a Color.
* html/InputType.h: Ditto.

* testing/Internals.cpp:
(WebCore::Internals::selectColorInColorChooser): Pass the string directly instead of
constructing a Color with it.
(WebCore::Internals::setViewBaseBackgroundColor): Instead of pasring the passed in string
with the Color constructor, implemented the two names that are actually used with this
function in tests: "transparent" and "white".

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

20 months agoRemove some unused code from WebKitLegacy
darin@apple.com [Fri, 8 Dec 2017 17:26:27 +0000 (17:26 +0000)]
Remove some unused code from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=180567

Reviewed by Anders Carlsson.

* Misc/WebKitNSStringExtras.h: Researched which of these functions are used in
macOS (back a few versions) and iOS and removed unused
_web_drawAtPoint:font:textColor:allowingFontSmoothing:,
_web_drawDoubledAtPoint:withTopColor:bottomColor:font:,
_web_stringByStrippingReturnCharacters, _webkit_hasCaseInsensitiveSubstring:,
_webkit_stringByCollapsingNonPrintingCharacters,
_webkit_stringByCollapsingWhitespaceCharacters,
_web_stringWithData:textEncodingName:, and
_webkit_localStorageDirectoryWithBundleIdentifier:.

* Misc/WebKitNSStringExtras.mm: Made WebKitLocalCacheDefaultsKey private to
this source file.
(canUseFastRenderer): Made this faster by not calling u_charDirection for
Latin-1 characters, and also added special cases for U_DIR_NON_SPACING_MARK
and U_BOUNDARY_NEUTRAL, which should not prevent use of the fast renderer.
(-[NSString _web_drawAtPoint:font:textColor:allowingFontSmoothing:]): Deleted.
(-[NSString _web_drawAtPoint:font:textColor:]): Removed unneeded code to
handle font smoothing options.
(-[NSString _web_drawDoubledAtPoint:withTopColor:bottomColor:font:]): Deleted.
(-[NSString _web_stringByAbbreviatingWithTildeInPath]): Moved comment here
from header and made it a little clearer.
(-[NSString _web_stringByStrippingReturnCharacters]): Deleted.
(-[NSString _webkit_hasCaseInsensitiveSubstring:]): Deleted.
(-[NSString _webkit_stringByCollapsingNonPrintingCharacters]): Deleted.
(-[NSString _webkit_stringByCollapsingWhitespaceCharacters]): Deleted.
(+[NSString _web_stringWithData:textEncodingName:]): Deleted.
(+[NSString _webkit_localCacheDirectoryWithBundleIdentifier:]): Streamlined
implementation a bit and used whole words instead of abbreviations.
(+[NSString _webkit_localStorageDirectoryWithBundleIdentifier:]): Deleted.

* Misc/WebNSFileManagerExtras.mm:
(-[NSFileManager _webkit_pathWithUniqueFilenameForPath:]): Use the
filenameByFixingIllegalCharacters function from WebCore directly instead of
indirectly through the method _webkit_filenameByFixingIllegalCharacters.

* Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView URLWithCString:]): Rewrote to use simple
string replacements instead of _web_stringByStrippingReturnCharacters
and to use NSString methods instead of CFString functions.

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

20 months ago[GTK] Rebaseline tables/mozilla/bugs/bug32205-5.html.
Ms2ger@igalia.com [Fri, 8 Dec 2017 16:45:51 +0000 (16:45 +0000)]
[GTK] Rebaseline tables/mozilla/bugs/bug32205-5.html.
https://bugs.webkit.org/show_bug.cgi?id=169010

Unreviewed test gardening.

The numbers changed by a few pixels in r213149.

* platform/gtk/TestExpectations:
* platform/gtk/tables/mozilla/bugs/bug32205-5-expected.txt:

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

20 months ago[WinCairo][Ninja] Incremental build failure of WTF
commit-queue@webkit.org [Fri, 8 Dec 2017 16:31:47 +0000 (16:31 +0000)]
[WinCairo][Ninja] Incremental build failure of WTF
https://bugs.webkit.org/show_bug.cgi?id=180521

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-08
Reviewed by Konstantin Tokarev.

WTF included its forwarding headers in Windows ports. The
directory DerivedSources/ForwardingHeaders shouldn't be a include
path for WTF.

* Source/cmake/OptionsWin.cmake:
Removed DerivedSources/ForwardingHeaders and DerivedSources from include paths.

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

20 months ago[GTK] WebInspectorProxyClient needs a virtual destructor
mcatanzaro@igalia.com [Fri, 8 Dec 2017 16:28:48 +0000 (16:28 +0000)]
[GTK] WebInspectorProxyClient needs a virtual destructor
https://bugs.webkit.org/show_bug.cgi?id=180533

Reviewed by Carlos Garcia Campos.

Otherwise the derived class portion of the object, WebKitInspectorClient, is not destroyed.

* UIProcess/gtk/WebInspectorProxyClient.h:

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

20 months agoUnreviewed, fix wrong letter case in #import HTMLIframeElement.h
annulen@yandex.ru [Fri, 8 Dec 2017 15:00:27 +0000 (15:00 +0000)]
Unreviewed, fix wrong letter case in #import HTMLIframeElement.h

* editing/cocoa/WebContentReaderCocoa.mm:

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

20 months agoTools/ImageDiff/cg/PlatformImageCG.cpp doesn't need to include <wtf/MathExtras.h>
commit-queue@webkit.org [Fri, 8 Dec 2017 14:00:16 +0000 (14:00 +0000)]
Tools/ImageDiff/cg/PlatformImageCG.cpp doesn't need to include <wtf/MathExtras.h>
https://bugs.webkit.org/show_bug.cgi?id=180578

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-08
Reviewed by Konstantin Tokarev.

* ImageDiff/cg/PlatformImageCG.cpp: Removed unnecessary #include <wtf/MathExtras.h>.

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

20 months agoUnreviewed WPE build fix after r225671.
zandobersek@gmail.com [Fri, 8 Dec 2017 13:07:41 +0000 (13:07 +0000)]
Unreviewed WPE build fix after r225671.

* WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:
Include the ActivateFonts.h header to have a usable
WTR::installFakeHelvetica() function declaration.

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

20 months agoUse StaticLock and Lock instead of Mutex in Windows WebKitLegacy
utatane.tea@gmail.com [Fri, 8 Dec 2017 12:09:31 +0000 (12:09 +0000)]
Use StaticLock and Lock instead of Mutex in Windows WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=180572

Reviewed by Mark Lam.

Source/WebKitLegacy/win:

Use StaticLock and drop DEPRECATED_DEFINE_STATIC_LOCAL.
Also we use Lock instead of Mutex.

* WebKitQuartzCoreAdditions/CAD3DRenderer.cpp:
(WKQCA::CAD3DRenderer::swapChain):
(WKQCA::CAD3DRenderer::renderAndPresent):
(WKQCA::CAD3DRenderer::renderToImage):
(WKQCA::CAD3DRenderer::setDeviceIsLost):
(WKQCA::CAD3DRenderer::renderInternal):
* WebKitQuartzCoreAdditions/CAD3DRenderer.h:
* WebKitQuartzCoreAdditions/CAView.cpp:
(WKQCA::CAView::Handle::create):
Return Ref<Handle> instead of RefPtr<>.

(WKQCA::CAView::Handle::lock):
(WKQCA::CAView::Handle::view const):
(WKQCA::CAView::Handle::clear):
(WKQCA::views):
(WKQCA::viewsNeedingUpdate):
(WKQCA::CAView::releaseAllD3DResources):
(WKQCA::CAView::CAView):
(WKQCA::CAView::~CAView):
(WKQCA::CAView::setLayer):
(WKQCA::CAView::update):
(WKQCA::CAView::drawToWindow):
(WKQCA::CAView::drawToWindowInternal):
(WKQCA::CAView::drawToImage):
(WKQCA::CAView::willDraw):
(WKQCA::CAView::drawIntoDC):
(WKQCA::CAView::setShouldInvertColors):
(WKQCA::CAView::scheduleNextDraw):
(WKQCA::CAView::displayLinkReachedCAMediaTime):
(WKQCA::CAView::contextDidChange):
(WKQCA::CAView::updateSoon):
(WKQCA::CAView::updateViewsNow):
(WKQCA::CAView::d3dDevice9):
(WKQCA::CAView::Handle::mutex): Deleted.
(WKQCA::globalStateMutex): Deleted.
(): Deleted.
* WebKitQuartzCoreAdditions/CAView.h:

Source/WTF:

Remove DEPRECATED_DEFINE_STATIC_LOCAL since it's no longer used.

* wtf/StdLibExtras.h:

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

20 months agoUnreviewed GTK+ and WPE build fix.
zandobersek@gmail.com [Fri, 8 Dec 2017 07:47:18 +0000 (07:47 +0000)]
Unreviewed GTK+ and WPE build fix.

Add TestRunner::installFakeHelvetica(), WTR::installFakeHelvetica()
and WTF::uninstallFakeHelvetica() definitions, filling out the
declarations added in r225641. This fills up missing symbols in the
WKTR's InjectedBundle library, unbreaking layout tests for both
configurations.

* WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
(WTR::installFakeHelvetica):
(WTR::uninstallFakeHelvetica):
* WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
(WTR::TestRunner::inspectorTestStubURL):
(WTR::TestRunner::installFakeHelvetica):
* WebKitTestRunner/InjectedBundle/wpe/ActivateFontsWPE.cpp:
(WTR::installFakeHelvetica):
(WTR::uninstallFakeHelvetica):
* WebKitTestRunner/InjectedBundle/wpe/TestRunnerWPE.cpp:
(WTR::TestRunner::installFakeHelvetica):

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

20 months agoiOS: Many AMP pages hit a release assertion inside Document::updateStyleIfNeeded
rniwa@webkit.org [Fri, 8 Dec 2017 04:50:48 +0000 (04:50 +0000)]
iOS: Many AMP pages hit a release assertion inside Document::updateStyleIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=180550

Reviewed by Simon Fraser.

Add a test for r225647.

* fast/frames/flattening/non-flattening-frame-inside-flattening-iframe-crash-expected.txt: Added.
* fast/frames/flattening/non-flattening-frame-inside-flattening-iframe-crash.html: Added.

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

20 months agoIgnore deprecation warnings.
jberlin@webkit.org [Fri, 8 Dec 2017 04:22:47 +0000 (04:22 +0000)]
Ignore deprecation warnings.

* WebView/WebHTMLView.mm:
(-[NSWindow _web_borderView]):
(-[WebHTMLView _setAsideSubviews]):
* WebView/WebView.mm:
(-[WebView encodeWithCoder:]):

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

20 months ago[Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
commit-queue@webkit.org [Fri, 8 Dec 2017 03:03:19 +0000 (03:03 +0000)]
[Win] [64-bit] Resolve Microsoft warning C4319 on BitVector.cpp
https://bugs.webkit.org/show_bug.cgi?id=180490

Patch by Basuke Suzuki <Basuke.Suzuki@sony.com> on 2017-12-07
Reviewed by Alex Christensen.

bitsInPointer() returns unsigned which is smaller than size_t.
"~"(negate) operator is applied before extending its size which result filled with zero.
This may be potentially a bug if numBits is greater than max value of unsigned long
(which is not practical).

* wtf/BitVector.cpp:
(WTF::BitVector::OutOfLineBits::create):

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

20 months agoUse WTF::RecursiveLockAdapter instead of using pthread_mutex_t with recursive lock...
utatane.tea@gmail.com [Fri, 8 Dec 2017 03:02:26 +0000 (03:02 +0000)]
Use WTF::RecursiveLockAdapter instead of using pthread_mutex_t with recursive lock option
https://bugs.webkit.org/show_bug.cgi?id=180449

Reviewed by Mark Lam.

Use WTF::RecursiveLockAdapter<StaticLock> instead. We can remove pthread_mutex_xxx,
pthread_once and FontLocker wrapper.

* platform/graphics/FontCache.cpp:
(WebCore::FontCache::getCachedFontPlatformData):
(WebCore::FontCache::fontForPlatformData):
(WebCore::FontCache::purgeInactiveFontData):
(WebCore::FontCache::inactiveFontCount):
(initFontCacheLockOnce): Deleted.
(FontLocker::FontLocker): Deleted.
(FontLocker::~FontLocker): Deleted.

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

20 months ago[WinCairo] Fix ResourceError handling in ArgumentCoder for wincairo webkit
commit-queue@webkit.org [Fri, 8 Dec 2017 03:00:42 +0000 (03:00 +0000)]
[WinCairo] Fix ResourceError handling in ArgumentCoder for wincairo webkit
https://bugs.webkit.org/show_bug.cgi?id=180483

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

* Shared/curl/WebCoreArgumentCodersCurl.cpp:
(IPC::ArgumentCoder<ResourceError>::encodePlatformData):
(IPC::ArgumentCoder<ResourceError>::decodePlatformData):

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

20 months agoStartFetch should take a ServiceWorkerIdentifier
commit-queue@webkit.org [Fri, 8 Dec 2017 02:33:36 +0000 (02:33 +0000)]
StartFetch should take a ServiceWorkerIdentifier
https://bugs.webkit.org/show_bug.cgi?id=180478

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-07
Reviewed by Brady Eidson.

Before the patch, StartFetch was taking an optional ServiceWorkerIdentifier.
Now that every navigation fetch is querying its matching registration, it can no longer be optional.

In the case there is a problem in running the service worker at start fetch time,
answer to the WebProcess to go to network so that the request does not get stalled.

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
* StorageProcess/ServiceWorker/WebSWServerConnection.h:
* StorageProcess/ServiceWorker/WebSWServerConnection.messages.in:
* WebProcess/Storage/WebSWClientConnection.cpp:
(WebKit::WebSWClientConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.cpp:
(WebKit::WebSWContextManagerConnection::startFetch):
* WebProcess/Storage/WebSWContextManagerConnection.h:
* WebProcess/Storage/WebSWContextManagerConnection.messages.in:

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

20 months agoModify our dollar VM clflush intrinsic to aid in some perf testing
sbarati@apple.com [Fri, 8 Dec 2017 02:08:03 +0000 (02:08 +0000)]
Modify our dollar VM clflush intrinsic to aid in some perf testing
https://bugs.webkit.org/show_bug.cgi?id=180559

Reviewed by Mark Lam.

* tools/JSDollarVM.cpp:
(JSC::functionCpuClflush):
(JSC::functionDeltaBetweenButterflies):
(JSC::JSDollarVM::finishCreation):

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

20 months agoSimplify log channel configuration UI
eric.carlson@apple.com [Fri, 8 Dec 2017 01:53:31 +0000 (01:53 +0000)]
Simplify log channel configuration UI
https://bugs.webkit.org/show_bug.cgi?id=180527
<rdar://problem/35908382>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Console.json:

Source/WebCore:

No new tests, updated existing test.

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/LoggingChannel.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):

LayoutTests:

* inspector/console/webcore-logging.html: Updated test for new results.

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

20 months agoUse StaticLock instead of NeverDestroyed<Lock>
utatane.tea@gmail.com [Fri, 8 Dec 2017 01:31:10 +0000 (01:31 +0000)]
Use StaticLock instead of NeverDestroyed<Lock>
https://bugs.webkit.org/show_bug.cgi?id=180507

Reviewed by Saam Barati.

Source/WebCore:

StaticLock can be used instead of using NeverDestroyed<Lock>.

No behavior change.

* Modules/webdatabase/Database.cpp:
(WebCore::Database::performOpenAndVerify):
* Modules/webdatabase/DatabaseTracker.cpp:
(WebCore::DatabaseTracker::openDatabaseMutex):
(WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskWillBeScheduled):
(WebCore::DatabaseTracker::emptyDatabaseFilesRemovalTaskDidFinish):
(WebCore::DatabaseTracker::scheduleNotifyDatabaseChanged):
(WebCore::DatabaseTracker::scheduleForNotification):
(WebCore::DatabaseTracker::notifyDatabasesChanged):
(WebCore::notificationMutex): Deleted.
* Modules/webdatabase/DatabaseTracker.h:
* platform/URL.cpp:
(WebCore::registerDefaultPortForProtocolForTesting):
(WebCore::clearDefaultPortForProtocolMapForTesting):
(WebCore::defaultPortForProtocol):
(WebCore::defaultPortForProtocolMapForTestingLock): Deleted.
* platform/graphics/MediaPlayer.cpp:
(WebCore::buildMediaEnginesVector):
(WebCore::installedMediaEngines):
(WebCore::MediaPlayer::resetMediaEngines):
(WebCore::mediaEngineVectorLock): Deleted.
* platform/ios/QuickLook.mm:
(WebCore::removeQLPreviewConverterForURL):
(WebCore::addQLPreviewConverterWithFileForURL):
(WebCore::qlPreviewConverterDictionaryMutex): Deleted.
* platform/ios/WebSQLiteDatabaseTrackerClient.mm:
(+[WebDatabaseTransactionBackgroundTaskController startBackgroundTask]):
(+[WebDatabaseTransactionBackgroundTaskController endBackgroundTask]):
(transactionBackgroundTaskIdentifierLock): Deleted.
* platform/network/curl/CurlContext.cpp:
(WebCore::CurlShareHandle::lockCallback):
(WebCore::CurlShareHandle::unlockCallback):
(WebCore::CurlShareHandle::mutexFor):
* platform/network/curl/CurlContext.h:

Source/WebKitLegacy/ios:

* WebCoreSupport/WebFixedPositionContent.mm:
(-[WebFixedPositionContent scrollOrZoomChanged:]):
(-[WebFixedPositionContent overflowScrollPositionForLayer:changedTo:]):
(-[WebFixedPositionContent setViewportConstrainedLayers:stickyContainerMap:]):
(-[WebFixedPositionContent hasFixedOrStickyPositionLayers]):
(WebFixedPositionContentDataLock): Deleted.

Source/WebKitLegacy/win:

* WebLocalizableStrings.cpp:
(findCachedString):
(cacheString):
(mainBundleLocStrings): Deleted.
(frameworkLocStringsMutex): Deleted.

Tools:

* DumpRenderTree/JavaScriptThreading.cpp:
(javaScriptThreads):
(runJavaScriptThread):
(startJavaScriptThreads):
(stopJavaScriptThreads):
(javaScriptThreadsMutex): Deleted.

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

20 months agoRead registrations in from disk.
beidson@apple.com [Fri, 8 Dec 2017 01:27:00 +0000 (01:27 +0000)]
Read registrations in from disk.
https://bugs.webkit.org/show_bug.cgi?id=180543

Reviewed by Andy Estes.

No new tests (Not testable quite yet)

On launch, read through the database.

Set up enough objects in the SWServer necessary to cause fetches and postMessages to
go to a worker that has never run before.

* workers/service/ServiceWorkerContextData.cpp:
(WebCore::ServiceWorkerContextData::isolatedCopy const):
* workers/service/ServiceWorkerContextData.h:
(WebCore::ServiceWorkerContextData::encode const):
(WebCore::ServiceWorkerContextData::decode):

* workers/service/ServiceWorkerRegistrationKey.cpp:
(WebCore::ServiceWorkerRegistrationKey::toDatabaseKey const):
(WebCore::ServiceWorkerRegistrationKey::fromDatabaseKey):
* workers/service/ServiceWorkerRegistrationKey.h:

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::stringToUpdateViaCache):
(WebCore::stringToWorkerType):
(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):
(WebCore::RegistrationDatabase::addRegistrationToStore):
* workers/service/server/RegistrationDatabase.h:

* workers/service/server/RegistrationStore.cpp:
(WebCore::RegistrationStore::RegistrationStore):
(WebCore::RegistrationStore::addRegistrationFromDatabase):
* workers/service/server/RegistrationStore.h:

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::updateWorker):
(WebCore::SWServer::tryInstallContextData):
(WebCore::SWServer::installContextData):
(WebCore::generateServiceWorkerIdentifier): Deleted.
* workers/service/server/SWServer.h:

* workers/service/server/SWServerRegistration.h:

* workers/service/server/SWServerWorker.cpp:
(WebCore::SWServerWorker::contextData const):

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

20 months agoUse WTF Locking primitives in WebThread and drop pthread_xxx use
utatane.tea@gmail.com [Fri, 8 Dec 2017 01:26:27 +0000 (01:26 +0000)]
Use WTF Locking primitives in WebThread and drop pthread_xxx use
https://bugs.webkit.org/show_bug.cgi?id=180445

Reviewed by Saam Barati.

Source/WebCore:

We remove use of pthread locking primitives from WebThread implementation,
and use WTF Lock and Condition instead.

No behavior change.

* platform/ios/wak/WebCoreThread.mm:
(HandleDelegateSource):
(SendDelegateMessage):
(WebThreadRunOnMainThread):
(WebThreadAdoptAndRelease):
(WebCoreObjCDeallocOnWebThreadImpl):
(WebCoreObjCDeallocWithWebThreadLockImpl):
(HandleWebThreadReleaseSource):
(_WebThreadAutoLock):
(WebRunLoopLockInternal):
(CurrentThreadContext):
Use WTF::ThreadSpecific.

(StartWebThread):
(_WebThreadLock):
Remove `shouldTry` parameter since it is always `false`. We clean up code based on `shouldTry = false`,
and rename it from _WebTryThreadLock to _WebThreadLock since it does not try now.

(_WebThreadLockFromAnyThread):
(WebThreadUnlockFromAnyThread):
(_WebThreadUnlock):
(lockWebCoreReleaseLock): Deleted.
(unlockWebCoreReleaseLock): Deleted.
(WebTimedConditionLock): Deleted.
(_WebTryThreadLock): Deleted.

Source/WTF:

Add initializer form to fill struct with zero if struct does not have any default initializers.

* wtf/ThreadSpecific.h:
(WTF::ThreadSpecific::Data::Data):

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

20 months agoApply poisoning to some native code pointers.
mark.lam@apple.com [Fri, 8 Dec 2017 01:22:06 +0000 (01:22 +0000)]
Apply poisoning to some native code pointers.
https://bugs.webkit.org/show_bug.cgi?id=180541
<rdar://problem/35916875>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Renamed g_classInfoPoison to g_globalDataPoison.
Renamed g_masmPoison to g_jitCodePoison.
Introduced g_nativeCodePoison.
Applied g_nativeCodePoison to poisoning some native code pointers.

Introduced non-random Int32 poison values (in JSCPoison.h) for use with pointers
to malloc allocated data structures (where needed).

* API/JSCallbackFunction.h:
(JSC::JSCallbackFunction::functionCallback):
* JavaScriptCore.xcodeproj/project.pbxproj:
* jit/ThunkGenerators.cpp:
(JSC::nativeForGenerator):
* llint/LowLevelInterpreter64.asm:
* runtime/CustomGetterSetter.h:
(JSC::CustomGetterSetter::getter const):
(JSC::CustomGetterSetter::setter const):
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::getCallData):
(JSC::InternalFunction::getConstructData):
* runtime/InternalFunction.h:
(JSC::InternalFunction::nativeFunctionFor):
* runtime/JSCPoison.h: Added.
* runtime/JSCPoisonedPtr.cpp:
(JSC::initializePoison):
* runtime/JSCPoisonedPtr.h:
* runtime/Lookup.h:
* runtime/NativeExecutable.cpp:
(JSC::NativeExecutable::hashFor const):
* runtime/NativeExecutable.h:
* runtime/Structure.cpp:
(JSC::StructureTransitionTable::setSingleTransition):
* runtime/StructureTransitionTable.h:
(JSC::StructureTransitionTable::StructureTransitionTable):
(JSC::StructureTransitionTable::isUsingSingleSlot const):
(JSC::StructureTransitionTable::map const):
(JSC::StructureTransitionTable::weakImpl const):
(JSC::StructureTransitionTable::setMap):

Source/WTF:

Ensure that the resultant poisoned bits still looks like a pointer in that its
bottom bits are 0, just like the alignment bits of a pointer.  This allows the
client to use the bottom bits of the poisoned bits as flag bits just like the
client was previously able to do with pointer values.

Note: we only ensure that the bottom alignment bits of the generated poison
value is 0.  We're not masking out the poisoned bits.  This means that the bottom
bits of the poisoned bits will only be null if the original pointer is aligned.
Hence, if the client applies the poison to an unaligned pointer, we do not lose
any information on the low bits.

Also removed 2 wrong assertions in PoisonedImpl's constructors.  We were
asserting that Poisoned will never be used with a null value, but that's invalid.
We do want to allow a null value so that we don't have to constantly do null
checks in the clients.  This was uncovered by some layout tests.

* wtf/Poisoned.cpp:
(WTF::makePoison):
* wtf/Poisoned.h:
(WTF::PoisonedImpl::PoisonedImpl):

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

20 months agoWe need to grab the JSLock in InjectedBundle::createWebDataFromUint8Array
sbarati@apple.com [Fri, 8 Dec 2017 01:12:18 +0000 (01:12 +0000)]
We need to grab the JSLock in InjectedBundle::createWebDataFromUint8Array
https://bugs.webkit.org/show_bug.cgi?id=180492

Reviewed by Alex Christensen.

InjectedBundle::createWebDataFromUint8Array calls into WebCore APIs that allocate
out of the JS heap. It's only legal to allocate out of the JS heap when holding the JS lock.

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

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

20 months agoFix API test after r225645.
achristensen@apple.com [Fri, 8 Dec 2017 00:59:02 +0000 (00:59 +0000)]
Fix API test after r225645.
https://bugs.webkit.org/show_bug.cgi?id=180544

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithDocumentLoader):
The API test WebKitLegacy.FragmentNavigation started failing after r225645.
It does call the completion handler with ignore to cancel fragment navigation.
To make this work and increase compatibility, only synchronously continue with
fragment navigations if we haven't received a synchronous answer to the
decidePolicyForNavigationAction callback.

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

20 months agoWebAssembly: sending module to iframe fails
gskachkov@gmail.com [Fri, 8 Dec 2017 00:56:18 +0000 (00:56 +0000)]
WebAssembly: sending module to iframe fails
https://bugs.webkit.org/show_bug.cgi?id=179263

Reviewed by JF Bastien.

Source/WebCore:

Allow use WebAssembly.Module as input parameters for postMessage
in window and iframe object.

Tests: wasm/iframe-postmessage.html
       wasm/window-postmessage.html

* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::dumpIfTerminal):
* bindings/js/SerializedScriptValue.h:
* page/DOMWindow.cpp:
(WebCore::DOMWindow::postMessage):

LayoutTests:

* platform/ios-simulator/TestExpectations:
* platform/win/TestExpectations:
* resources/wasm-builder.js: Renamed from LayoutTests/workers/wasm-resources/builder.js.
* wasm/iframe-parent-postmessage-expected.txt: Added.
* wasm/iframe-parent-postmessage.html: Added.
* wasm/iframe-postmessage-expected.txt: Added.
* wasm/iframe-postmessage.html: Added.
* wasm/resources/frame-parent.html: Added.
* wasm/resources/frame.html: Added.
* wasm/resources/load_wasm.js: Added.
(createWasmModule):
* wasm/window-postmessage-expected.txt: Added.
* wasm/window-postmessage.html: Added.
* workers/wasm-mem-post-message.html:

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

20 months agoPropagate WebKit2Logging channels to the Web Process
simon.fraser@apple.com [Fri, 8 Dec 2017 00:54:51 +0000 (00:54 +0000)]
Propagate WebKit2Logging channels to the Web Process
https://bugs.webkit.org/show_bug.cgi?id=180517

Reviewed by Tim Horton.

If you set WebKit2Logging, you want those channels active in both the UI process and
the web process, but without tricky 'defaults' gyrations, setting them in the web process
was hard.

Instead, send them through to the process via WebProcessCreationParameters, as we do
for WebCoreLogging channels.

* Platform/LogInitialization.h:
* Platform/Logging.cpp:
(WebKit::initializeLogChannelsIfNecessary):
* Shared/WebProcessCreationParameters.cpp:
(WebKit::WebProcessCreationParameters::encode const):
(WebKit::WebProcessCreationParameters::decode):
* Shared/WebProcessCreationParameters.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::platformInitializeWebProcess):
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::platformInitializeWebProcess):

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

20 months agoWeb Inspector: Fix style in remote inspector classes
commit-queue@webkit.org [Fri, 8 Dec 2017 00:22:55 +0000 (00:22 +0000)]
Web Inspector: Fix style in remote inspector classes
https://bugs.webkit.org/show_bug.cgi?id=180545

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-12-07
Reviewed by Youenn Fablet.

Source/JavaScriptCore:

* inspector/remote/RemoteControllableTarget.h:
* inspector/remote/RemoteInspectionTarget.h:
* runtime/JSGlobalObjectDebuggable.h:

Source/WebCore:

* page/PageDebuggable.h:
* workers/service/context/ServiceWorkerDebuggable.h:

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

20 months agoSkipped imported/w3c/web-platform-tests/XMLHttpRequest/event-upload-progress-crossori...
jlewis3@apple.com [Fri, 8 Dec 2017 00:19:17 +0000 (00:19 +0000)]
Skipped imported/w3c/web-platform-tests/XMLHttpRequest/event-upload-progress-crossorigin.htm on macOS WK1
https://bugs.webkit.org/show_bug.cgi?id=180554
https://bugs.webkit.org/show_bug.cgi?id=180553

Unreviewed test gardening.

* platform/mac-wk1/TestExpectations:

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

20 months agoUse fastAlignedFree to free aligned memory.
pvollan@apple.com [Fri, 8 Dec 2017 00:18:00 +0000 (00:18 +0000)]
Use fastAlignedFree to free aligned memory.
https://bugs.webkit.org/show_bug.cgi?id=180540

Reviewed by Saam Barati.

* heap/IsoAlignedMemoryAllocator.cpp:
(JSC::IsoAlignedMemoryAllocator::~IsoAlignedMemoryAllocator):

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

20 months agoAdd logging for EditorState in RemoteLayerTree transactions
simon.fraser@apple.com [Fri, 8 Dec 2017 00:15:29 +0000 (00:15 +0000)]
Add logging for EditorState in RemoteLayerTree transactions
https://bugs.webkit.org/show_bug.cgi?id=180515

Reviewed by Wenson Hsieh.

Make EditorState TextStream-able, and dump it in layer tree transactions.

* Shared/EditorState.cpp:
(WebKit::operator<<):
* Shared/EditorState.h:
* Shared/RemoteLayerTree/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::description const):

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

20 months agoMove security origin filtering for getMatchedCSSRules out of StyleResolver
antti@apple.com [Thu, 7 Dec 2017 23:58:39 +0000 (23:58 +0000)]
Move security origin filtering for getMatchedCSSRules out of StyleResolver
https://bugs.webkit.org/show_bug.cgi?id=180468

Reviewed by Zalan Bujtas.

The non-standard getMatchedCSSRules API should not return rules from stylesheets in different security origins.
To implement this we currently have lots of invasive code in StyleResolver, RuleSets and ElementRuleCollector
basically passing around a bit. This also makes RuleSets document specific blocking optimizations.

This patches replaces the mechanism with a bit in StyleRule which is much simpler.

* css/DocumentRuleSets.cpp:
(WebCore::makeRuleSet):
* css/ElementRuleCollector.cpp:
(WebCore::ElementRuleCollector::collectMatchingRulesForList):
* css/ElementRuleCollector.h:
(WebCore::ElementRuleCollector::setPseudoStyleRequest):
(WebCore::ElementRuleCollector::setSameOriginOnly): Deleted.
* css/RuleFeature.cpp:
(WebCore::RuleFeatureSet::collectFeatures):
* css/RuleFeature.h:
(WebCore::RuleFeature::RuleFeature):
* css/RuleSet.cpp:
(WebCore::RuleData::RuleData):
(WebCore::RuleSet::addRule):
(WebCore::RuleSet::addChildRules):
(WebCore::RuleSet::addRulesFromSheet):
(WebCore::RuleSet::addStyleRule):
* css/RuleSet.h:
(WebCore::RuleData::linkMatchType const):
(WebCore::RuleData::hasDocumentSecurityOrigin const): Deleted.
* css/StyleResolver.cpp:
(WebCore::StyleResolver::pseudoStyleRulesForElement):
* css/StyleResolver.h:
* css/StyleRule.cpp:
(WebCore::StyleRule::StyleRule):
(WebCore::StyleRule::createForSplitting):
(WebCore::StyleRule::splitIntoMultipleRulesWithMaximumSelectorComponentCount const):
(WebCore::StyleRule::create): Deleted.
* css/StyleRule.h:
(WebCore::StyleRuleBase::StyleRuleBase):
(WebCore::StyleRuleBase::hasDocumentSecurityOrigin const):

    Add a bit.

* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):

    Include hasDocumentSecurityOrigin bit to parser context. This means that a stylesheet data structures
    can't be shared between a contexts where this differs. This likely very rare in practice.

(WebCore::operator==):
* css/parser/CSSParserImpl.cpp:
(WebCore::CSSParserImpl::consumeStyleRule):
* css/parser/CSSParserMode.h:
(WebCore::CSSParserContextHash::hash):
* editing/EditingStyle.cpp:
(WebCore::EditingStyle::mergeStyleFromRules):
* page/DOMWindow.cpp:
(WebCore::DOMWindow::getMatchedCSSRules const):

    Filter out rules from different security origin after getting them from style resolver.

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

20 months agoAX: Document::existingAXObjectCache() should always return the existing AXObjectCache.
zalan@apple.com [Thu, 7 Dec 2017 23:55:42 +0000 (23:55 +0000)]
AX: Document::existingAXObjectCache() should always return the existing AXObjectCache.
https://bugs.webkit.org/show_bug.cgi?id=180548
<rdar://problem/35917755>

Reviewed by Chris Fleizach.

Currently the AX cache becomes unreachable through Document::existingAXObjectCache soon after the render tree is destroyed.
From this point, the Node objects can't deregister themselves from the AX cache anymore. In some cases, it's
redundant/not advised to notify the cache about certain changes when the document is being destroyed, but the
callsites should make that decision.

Covered by existing tests.

* dom/Document.cpp:
(WebCore::Document::existingAXObjectCacheSlow const):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::takeChildInternal):

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

20 months agoFix erroneous ASSERT in DocumentThreadableLoader::didFail
commit-queue@webkit.org [Thu, 7 Dec 2017 23:30:33 +0000 (23:30 +0000)]
Fix erroneous ASSERT in DocumentThreadableLoader::didFail
https://bugs.webkit.org/show_bug.cgi?id=180549

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-07
Reviewed by Alex Christensen.

* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didFail): ASSERT was checking whether the optional was null.
This could never be the case since we move the value of the optional, not the optional itself.
Ensure that the optional value is null so that we are sure request is being loaded and make the optional null just after that.

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

20 months agoiOS: Many AMP pages crash inside Document::updateStyleIfNeeded
rniwa@webkit.org [Thu, 7 Dec 2017 23:25:04 +0000 (23:25 +0000)]
iOS: Many AMP pages crash inside Document::updateStyleIfNeeded
https://bugs.webkit.org/show_bug.cgi?id=180550
<rdar://problem/35410390>

Reviewed by Zalan Bujtas.

The crash was caused when updatign the layout of an non-flattened frame inside a flattened frame.
In those cases, isInChildFrameWithFrameFlattening is false on the inner frame.

No new tests for now.

* dom/NoEventDispatchAssertion.h:
* rendering/RenderFrameBase.cpp:
(WebCore::RenderFrameBase::performLayoutWithFlattening): Disable the assertion temporarily here.
In theory, we should be able to remove the check for isInChildFrameWithFrameFlattening but we err
on the safer side for now.

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

20 months agoCacheStorage Cache should not remove any disk entry when clearing its memory represen...
commit-queue@webkit.org [Thu, 7 Dec 2017 23:17:56 +0000 (23:17 +0000)]
CacheStorage Cache should not remove any disk entry when clearing its memory representation
https://bugs.webkit.org/show_bug.cgi?id=180546

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-07
Reviewed by Brady Eidson.

* NetworkProcess/cache/CacheStorageEngineCache.cpp:
(WebKit::CacheStorage::Cache::clearMemoryRepresentation):

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

20 months agoAlways synchronously continue with fragment navigations
achristensen@apple.com [Thu, 7 Dec 2017 21:59:48 +0000 (21:59 +0000)]
Always synchronously continue with fragment navigations
https://bugs.webkit.org/show_bug.cgi?id=180544
<rdar://problem/34815986> and <rdar://problem/35126690>

Reviewed by Geoffrey Garen.

Source/WebCore:

Test: http/tests/dom/document-fragment.html

When a decidePolicyForNavigationAction completionHandler is called asynchronously,
the document's URL has not changed yet when JavaScript execution continues.  This causes
significant web incompatibility because all browsers change the document's URL immediately
during fragment navigations.  In order to make WebKit applications more web compatible,
we now immediately continue to have the state consistent.  To keep compatibility with any
WebView, UIWebView, or WKWebView applications that use these delegate callbacks to update
state, we still call decidePolicyForNavigationAction.  This would break a theoretical app
that would cancel fragment navigations, but it fixes apps that continue fragment navigations
asynchronously.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadWithDocumentLoader):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm:
(-[DecidePolicyForNavigationActionFragmentDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):
Add a test that verifies that decidePolicyForNavigationAction is called for fragment navigations.

LayoutTests:

* http/tests/dom/document-fragment-expected.txt: Added.
* http/tests/dom/document-fragment.html: Added.
Add a test that verifies that the fragment of the document is set immediately during a fragment navigation,
even if decidePolicyForNavigationAction is called asynchronously.  Also verify the order of various events
associated with the navigation.

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

20 months agoActivate IDB and WebSockets in service workers
commit-queue@webkit.org [Thu, 7 Dec 2017 21:46:11 +0000 (21:46 +0000)]
Activate IDB and WebSockets in service workers
https://bugs.webkit.org/show_bug.cgi?id=180534

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-07
Reviewed by Brady Eidson.

LayoutTests/imported/w3c:

* web-platform-tests/service-workers/service-worker/websocket-in-service-worker.https-expected.txt:

Source/WebCore:

Tests: http/tests/workers/service/serviceworker-idb.https.html
       http/tests/workers/service/serviceworker-websocket.https.html

Using the dummy document used for loading to also fuel IDB and WebSocket.

* workers/service/context/ServiceWorkerThread.cpp:
(WebCore::ServiceWorkerThread::ServiceWorkerThread):
* workers/service/context/ServiceWorkerThread.h:
* workers/service/context/ServiceWorkerThreadProxy.cpp:
(WebCore::idbConnectionProxy):
(WebCore::ServiceWorkerThreadProxy::ServiceWorkerThreadProxy):

LayoutTests:

* http/tests/workers/service/resources/serviceworker-idb-worker.js: Added.
* http/tests/workers/service/resources/serviceworker-websocket-worker.js: Added.
* http/tests/workers/service/serviceworker-idb.https-expected.txt: Added.
* http/tests/workers/service/serviceworker-idb.https.html: Added.
* http/tests/workers/service/serviceworker-websocket.https-expected.txt: Added.
* http/tests/workers/service/serviceworker-websocket.https.html: Added.

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

20 months agoUnreviewed, rolling out r225634.
jlewis3@apple.com [Thu, 7 Dec 2017 21:28:19 +0000 (21:28 +0000)]
Unreviewed, rolling out r225634.

This caused layout tests to time out.

Reverted changeset:

"Simplify log channel configuration UI"
https://bugs.webkit.org/show_bug.cgi?id=180527
https://trac.webkit.org/changeset/225634

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

20 months ago[EME] Support the 'encrypted' event for FPS encrypted streams
jer.noble@apple.com [Thu, 7 Dec 2017 21:04:21 +0000 (21:04 +0000)]
[EME] Support the 'encrypted' event for FPS encrypted streams
https://bugs.webkit.org/show_bug.cgi?id=180480

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/encrypted-media/fps-encrypted-event.html

Pass initData and initDataType up to HTMLMediaElement from SourceBufferPrivateAVFObjC.

Drive-by fix: initialize the initData and initDataType values of MediaEncryptedEvent from
values in its initializer struct.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
(WebCore::HTMLMediaElement::mediaPlayerInitializationDataEncountered):
* html/MediaEncryptedEvent.cpp:
(WebCore::MediaEncryptedEvent::MediaEncryptedEvent):
(WebCore::MediaEncryptedEvent::initDataType): Deleted.
(WebCore::MediaEncryptedEvent::initData): Deleted.
* html/MediaEncryptedEvent.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::cdmInstanceAttached):
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didProvideContentKeyRequestInitializationDataForTrackID):

LayoutTests:

* platform/mac/TestExpectations:
* platform/mac/media/encrypted-media/content/fps-cbcs.mp4: Added.
* platform/mac/media/encrypted-media/fps-encrypted-event-expected.txt: Added.
* platform/mac/media/encrypted-media/fps-encrypted-event.html: Added.

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

20 months ago[Cocoa] Add SPI to disallow user-installed fonts
mmaxfield@apple.com [Thu, 7 Dec 2017 20:29:03 +0000 (20:29 +0000)]
[Cocoa] Add SPI to disallow user-installed fonts
https://bugs.webkit.org/show_bug.cgi?id=180062
<rdar://problem/35042408>

Reviewed by Simon Fraser.

Source/WebCore:

This hooks up a WK2 preference, ShouldDisallowUserInstalledFonts, to our font selection
code. This preference works by specifying an attribute to our font selection code which
will prohibit user-installed fonts from ever being selected. This works both to disallow
newly installed fonts, as well as disallowing user-installed fonts which "shadow" (or
have the same name as) existing fonts, so that the existing font is selected instead.

The goal of this setting is to decrease the fingerprinting surface area which trackers
can use to identify users on the open Web.

Tests: fast/text/user-installed-font.html
       fast/text/user-installed-fonts/disable.html
       fast/text/user-installed-fonts/shadow-disable.html
       fast/text/user-installed-fonts/shadow-family-disable.html
       fast/text/user-installed-fonts/shadow-family.html
       fast/text/user-installed-fonts/shadow-postscript-disable.html
       fast/text/user-installed-fonts/shadow-postscript-family-disable.html
       fast/text/user-installed-fonts/shadow-postscript-family.html
       fast/text/user-installed-fonts/shadow-postscript.html
       fast/text/user-installed-fonts/shadow.html

* css/CSSFontFaceSet.cpp:
(WebCore::CSSFontFaceSet::ensureLocalFontFacesForFamilyRegistered):
* css/StyleResolver.cpp:
(WebCore::StyleResolver::initializeFontStyle):
* page/Settings.yaml:
* platform/graphics/FontCache.h:
* platform/graphics/FontDescription.cpp:
(WebCore::FontDescription::FontDescription):
* platform/graphics/FontDescription.h:
(WebCore::FontDescription::mayRepresentUserInstalledFont const):
(WebCore::FontDescription::setMayRepresentUserInstalledFont):
(WebCore::FontDescription::operator== const):
* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::FontDatabase::singleton):
(WebCore::FontDatabase::singletonAllowingUserInstalledFonts):
(WebCore::FontDatabase::singletonDisallowingUserInstalledFonts):
(WebCore::FontDatabase::collectionForFamily):
(WebCore::FontDatabase::fontForPostScriptName):
(WebCore::FontDatabase::FontDatabase):
(WebCore::FontCache::getFontSelectionCapabilitiesInFamily):
(WebCore::platformFontLookupWithFamily):
(WebCore::invalidateFontCache):
(WebCore::fontWithFamily):
* style/StyleResolveForDocument.cpp:
(WebCore::Style::resolveForDocument):
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::setShouldDisallowUserInstalledFonts):
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebCore/PAL:

* pal/spi/cocoa/CoreTextSPI.h:

Source/WebKit:

* Shared/WebPreferences.yaml:
* UIProcess/API/C/WKPreferences.cpp:
(WKPreferencesSetShouldDisallowUserInstalledFonts):
(WKPreferencesGetShouldDisallowUserInstalledFonts):
* UIProcess/API/C/WKPreferencesRefPrivate.h:
* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _shouldDisallowUserInstalledFonts]):
(-[WKPreferences _setShouldDisallowUserInstalledFonts:]):
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:

Tools:

* WebKitTestRunner/InjectedBundle/ActivateFonts.h:
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
(WTR::InjectedBundlePage::resetAfterTest):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:
(WTR::resourcesDirectoryURL):
(WTR::activateFonts):
(WTR::installFakeHelvetica):
(WTR::uninstallFakeHelvetica):
* WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:
(WTR::TestRunner::installFakeHelvetica):
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/fonts/FakeHelvetica-Helvetica-400.ttf: Added.
* WebKitTestRunner/fonts/FakeHelvetica-Helvetica-500.ttf: Added.
* WebKitTestRunner/fonts/FakeHelvetica-Helvetica2-400.ttf: Added.
* WebKitTestRunner/fonts/FakeHelvetica-Helvetica2-500.ttf: Added.

LayoutTests:

* fast/text/user-installed-font-expected.html: Added.
* fast/text/user-installed-font.html: Added.
* fast/text/user-installed-fonts/disable-expected-mismatch.html: Added.
* fast/text/user-installed-fonts/disable.html: Added.
* fast/text/user-installed-fonts/shadow-disable-expected-mismatch.html: Added.
* fast/text/user-installed-fonts/shadow-disable.html: Added.
* fast/text/user-installed-fonts/shadow-expected.html: Added.
* fast/text/user-installed-fonts/shadow-family-disable-expected-mismatch.html: Added.
* fast/text/user-installed-fonts/shadow-family-disable.html: Added.
* fast/text/user-installed-fonts/shadow-family-expected.html: Added.
* fast/text/user-installed-fonts/shadow-family.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-disable-expected-mismatch.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-disable.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-expected.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-family-disable-expected-mismatch.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-family-disable.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-family-expected.html: Added.
* fast/text/user-installed-fonts/shadow-postscript-family.html: Added.
* fast/text/user-installed-fonts/shadow-postscript.html: Added.
* fast/text/user-installed-fonts/shadow.html: Added.
* platform/gtk/TestExpectations:
* platform/ios-wk1/TestExpectations:
* platform/ios/TestExpectations:
* platform/mac-wk1/TestExpectations:
* platform/mac/TestExpectations:
* platform/win/TestExpectations:
* platform/wpe/TestExpectations:

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

20 months agoMove all tests under http/tests/loading/resourceLoadStatistics/ to http/tests/resourc...
wilander@apple.com [Thu, 7 Dec 2017 20:09:27 +0000 (20:09 +0000)]
Move all tests under http/tests/loading/resourceLoadStatistics/ to http/tests/resourceLoadStatistics/ and remove expected failures
https://bugs.webkit.org/show_bug.cgi?id=180502
<rdar://problem/35891216>

Reviewed by Brent Fulgham.

This change moves all tests under http/tests/loading/resourceLoadStatistics/ to http/tests/resourceLoadStatistics/
and removes expected failures.
The one exception is the full removal of
http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-network-process-crash.html
which never seems to have worked properly. Follow-up work for this is tracked in <rdar://problem/35887722>.

* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Removed.
* http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html: Removed.
* http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store.html: Removed.
* http/tests/loading/resourceLoadStatistics/grandfathering-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/grandfathering.html: Removed.
* http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-network-process-crash-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-network-process-crash.html: Removed.
    This test is not being added back under http/tests/resourceLoadStatistics/ since it doesn't seem to work.
    Follow-up work for this is tracked in <rdar://problem/35887722>.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/prune-statistics-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/prune-statistics.html: Removed.
* http/tests/loading/resourceLoadStatistics/telemetry-generation-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/telemetry-generation.html: Removed.
* http/tests/loading/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction.html: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-expected.txt: Removed.
* http/tests/loading/resourceLoadStatistics/user-interaction-reported-after-website-data-removal.html: Removed.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-mixed-statistics.html.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-sub-frame-under-top-frame-origins.html.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-under-top-frame-origins.html.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-non-prevalent-based-on-subresource-unique-redirects-to.html.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-mixed-statistics.html.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-sub-frame-under-top-frame-origins.html.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-under-top-frame-origins.html.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to-expected.txt.
* http/tests/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/classify-as-prevalent-based-on-subresource-unique-redirects-to.html.
* http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-expected.txt.
* http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour-expected.txt.
* http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store-one-hour.html.
* http/tests/resourceLoadStatistics/clear-in-memory-and-persistent-store.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/clear-in-memory-and-persistent-store.html.
* http/tests/resourceLoadStatistics/grandfathering-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/grandfathering-expected.txt.
* http/tests/resourceLoadStatistics/grandfathering.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/grandfathering.html.
* http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/non-prevalent-resource-with-user-interaction.html.
* http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/non-prevalent-resource-without-user-interaction.html.
* http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion-expected.txt.
* http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-deletion.html.
* http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout-expected.txt.
* http/tests/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-and-unpartitioned-cookie-with-partitioning-timeout.html.
* http/tests/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/partitioned-cookies-with-and-without-user-interaction.html.
* http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout-expected.txt.
* http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction-timeout.html.
* http/tests/resourceLoadStatistics/prevalent-resource-with-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-with-user-interaction.html.
* http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/prevalent-resource-without-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prevalent-resource-without-user-interaction.html.
* http/tests/resourceLoadStatistics/prune-statistics-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prune-statistics-expected.txt.
* http/tests/resourceLoadStatistics/prune-statistics.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/prune-statistics.html.
* http/tests/resourceLoadStatistics/resources/get-cookies.php:
* http/tests/resourceLoadStatistics/telemetry-generation-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/telemetry-generation-expected.txt.
* http/tests/resourceLoadStatistics/telemetry-generation.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/telemetry-generation.html.
* http/tests/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction-expected.txt.
* http/tests/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/third-party-cookie-with-and-without-user-interaction.html.
* http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame-expected.txt.
* http/tests/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-in-cross-origin-sub-frame.html.
* http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time-expected.txt.
* http/tests/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-only-reported-once-within-short-period-of-time.html.
* http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-expected.txt: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-reported-after-website-data-removal-expected.txt.
* http/tests/resourceLoadStatistics/user-interaction-reported-after-website-data-removal.html: Copied from LayoutTests/http/tests/loading/resourceLoadStatistics/user-interaction-reported-after-website-data-removal.html.
* platform/ios/TestExpectations:
    Removed 'loading' directory from path and made sure no tests are expected to fail.
    Skipped tests that rely on UIHelper.activateAt() since it doesn't produce a user
    gesture that ITP captures on iOS.
* platform/mac-wk2/TestExpectations:
    Removed 'loading' directory from path and made sure no tests are expected to fail.
* platform/wk2/TestExpectations:
    Removed 'loading' directory from path and made sure no tests are expected to fail.

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

20 months ago[Web App Manifest] Support display-mode media feature
commit-queue@webkit.org [Thu, 7 Dec 2017 20:04:37 +0000 (20:04 +0000)]
[Web App Manifest] Support display-mode media feature
https://bugs.webkit.org/show_bug.cgi?id=180376
rdar://problem/35837993

Patch by David Quesada <david_quesada@apple.com> on 2017-12-07
Reviewed by Geoffrey Garen.

Source/WebCore:

Tests: applicationmanifest/display-mode-subframe.html
       applicationmanifest/display-mode.html

* Modules/applicationmanifest/ApplicationManifest.h:
(WebCore::ApplicationManifest::encode const):
(WebCore::ApplicationManifest::decode):
* Modules/applicationmanifest/ApplicationManifestParser.cpp:
(WebCore::ApplicationManifestParser::parseManifest):
(WebCore::ApplicationManifestParser::parseDisplay):
* Modules/applicationmanifest/ApplicationManifestParser.h:
    Add a 'display' property to ApplicationManifest and have ApplicationManifestParser
    populate it by parsing the 'display' property from the raw manifest.

* css/CSSValueKeywords.in:
* css/MediaFeatureNames.h:
* css/MediaQueryEvaluator.cpp:
(WebCore::displayModeEvaluate):
    To evaluate whether a display-mode query matches, compare the parameter to the
    display mode of the manifest applied to the main frame. If there is no manifest,
    use the fallback display mode 'browser' - the spec mandates that display-mode
    must be exposed even if there is no applied manifest.
* css/MediaQueryExpression.cpp:
(WebCore::featureWithValidIdent):
(WebCore::isFeatureValidWithoutValue):

Source/WebKit:

* UIProcess/API/Cocoa/_WKApplicationManifest.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.mm:
(-[_WKApplicationManifest initWithCoder:]):
(-[_WKApplicationManifest encodeWithCoder:]):
(-[_WKApplicationManifest displayMode]):

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/ApplicationManifestParser.cpp:
(WebCore::operator<<):
(ApplicationManifestParserTest::testDisplay):
(TEST_F):
    Add unit tests for the parsing of the 'display' manifest property.

* TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WebKitCocoa/display-mode.html: Added.
    Update API tests to include _WKApplicationManifest.displayMode.

* WebKitTestRunner/TestController.cpp:
(WTR::parseStringTestHeaderValueAsRelativePath):
(WTR::updateTestOptionsFromTestHeader):
* WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::hasSameInitializationOptions const):
* WebKitTestRunner/cocoa/TestControllerCocoa.mm:
(WTR::TestController::platformCreateWebView):
    Teach WKTR to look for and apply an app manifest. A new <!--webkit-test-runner-->
    directive 'applicationManifest' can specify a path (relative to the test file itself)
    to a JSON app manifest to be applied to the web view before running the test.

LayoutTests:

* applicationmanifest/display-mode-expected.txt: Added.
* applicationmanifest/display-mode-subframe-expected.txt: Added.
* applicationmanifest/display-mode-subframe.html: Added.
* applicationmanifest/display-mode.html: Added.
* applicationmanifest/resources/display-mode-subframe-1.html: Added.
* applicationmanifest/resources/standalone.manifest: Added.

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

20 months agoCreating a second AVPlayerItemVideoOutput causes flakey failures
jer.noble@apple.com [Thu, 7 Dec 2017 19:56:25 +0000 (19:56 +0000)]
Creating a second AVPlayerItemVideoOutput causes flakey failures
https://bugs.webkit.org/show_bug.cgi?id=177119
<rdar://problem/34507977>

Reviewed by Dean Jackson.

Source/WebCore:

Rather than having two concurrent AVPlayerItemVideoOutputs when painting to OpenGL,
use only one, but with the OpenGL compatibility flags enabled, for both 3D and 2D
canvas painting.

Of course, once this is fixed, the test breaks again because VideoTextureCopierCV is
stomping on top of some WebGL state set by the test. Rather than expand the
VideoTextureCopierCV's GraphicsStateSaver, use a totally separate (but shared) GL context to
implement the texture copy, so that its own state will not affect the state of the WebGL
context.

This necessitates adding a new createShared() factory for GraphicsContext3D. Since this is only
used on Cocoa platforms (for now), make it platform specific, and modify the other implementations
only so far as to throw assertions if somehow a shared context pointer is passed into their
constructors.

Drive-by fixes:

- These changes exposed some test failures, which were off-by-1-or-2 errors in the color
output of videos painted into WebGL contexts. The Y' parameter needs to be scaled by 16/255
for video-range conversions and the CbCr vales by 128/255 (rather than just 0.5). Make the
color transforms a full 4x4 matrix and do the scaling in the matrix rather than tracked by a
separate uniform.

- There was a slight error in WebCoreDecompressionSession that could cause seeks to never
complete because incoming frames would be skipped if their startTime was in the past
(rather than their startTime + duration being in the past).

- The matrix name comparison should use CFEqual rather than pointer equality to test.

- iOS currently has a bug where the red and green color channels will be reversed when
uploading BGRA pixel formatted data to a texture; work around this bug for now.

* platform/graphics/GraphicsContext3D.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::destroyContextVideoRenderer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::hasAvailableVideoFrame const):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastPixelBuffer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::videoOutputHasAvailableFrame):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateLastImage):
(WebCore::MediaPlayerPrivateAVFoundationObjC::paintWithVideoOutput):
(WebCore::MediaPlayerPrivateAVFoundationObjC::copyVideoTextureToPlatformTexture):
(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
(WebCore::MediaPlayerPrivateAVFoundationObjC::waitForVideoOutputMediaDataWillChange):
* platform/graphics/cairo/GraphicsContext3DCairo.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/cocoa/GraphicsContext3DCocoa.mm:
(WebCore::GraphicsContext3D::createShared):
(WebCore::GraphicsContext3D::GraphicsContext3D):
* platform/graphics/cv/VideoTextureCopierCV.cpp:
(WebCore::VideoTextureCopierCV::VideoTextureCopierCV):
(WebCore::VideoTextureCopierCV::~VideoTextureCopierCV):
(WebCore::transferFunctionFromString):
(WebCore::YCbCrToRGBMatrixForRangeAndTransferFunction):
(WebCore::VideoTextureCopierCV::initializeUVContextObjects):
(WebCore::VideoTextureCopierCV::copyImageToPlatformTexture):
(WebCore::VideoTextureCopierCV::copyVideoTextureToPlatformTexture):
* platform/graphics/cv/VideoTextureCopierCV.h:
(WebCore::VideoTextureCopierCV::context):
* platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):

LayoutTests:

* platform/mac/TestExpectations:

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

20 months ago[EME] Support generateRequest() in CDMFairPlayStreaming
jer.noble@apple.com [Thu, 7 Dec 2017 19:46:53 +0000 (19:46 +0000)]
[EME] Support generateRequest() in CDMFairPlayStreaming
https://bugs.webkit.org/show_bug.cgi?id=179752

Reviewed by Eric Carlson.

Source/WebCore:

Tests: platform/mac/media/encrypted-media/fps-createSession.html
       platform/mac/media/encrypted-media/fps-generateRequest.html

Add support for generating license requests from initialization data in
CDMFairPlayStreaming. To do so, add explicit checks for FairPlay Steraming requirements:
reqests will fail if no server certificate exists, and will fail if no content key id exists
in the initialization data.

* platform/graphics/avfoundation/CDMFairPlayStreaming.cpp:
(WebCore::CDMPrivateFairPlayStreaming::extractKeyIDsSinf):
(WebCore::CDMPrivateFairPlayStreaming::sanitizeSinf):
(WebCore::CDMFactory::platformRegisterFactories):
* platform/graphics/avfoundation/CDMFairPlayStreaming.h:
* platform/graphics/avfoundation/objc/CDMInstanceFairPlayStreamingAVFObjC.mm:
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::requestLicense):
(WebCore::CDMInstanceFairPlayStreamingAVFObjC::didProvideRequest):

LayoutTests:

* platform/mac/TestExpectations:
* platform/mac/media/encrypted-media/fps-createSession-expected.txt: Added.
* platform/mac/media/encrypted-media/fps-createSession.html: Added.
* platform/mac/media/encrypted-media/fps-generateRequest-expected.txt: Added.
* platform/mac/media/encrypted-media/fps-generateRequest.html: Added.

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

20 months agoAdd WebRTC watchlist rule, update MediaStream rule
eric.carlson@apple.com [Thu, 7 Dec 2017 19:41:35 +0000 (19:41 +0000)]
Add WebRTC watchlist rule, update MediaStream rule
https://bugs.webkit.org/show_bug.cgi?id=180536
<rdar://problem/35914066>

Reviewed by Youenn Fablet.

* Scripts/webkitpy/common/config/watchlist:

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

20 months ago[EME] Possible deadlock when aborting a SourceBufferPrivateAVFObjC append operation
jer.noble@apple.com [Thu, 7 Dec 2017 19:25:35 +0000 (19:25 +0000)]
[EME] Possible deadlock when aborting a SourceBufferPrivateAVFObjC append operation
https://bugs.webkit.org/show_bug.cgi?id=180486

Reviewed by Eric Carlson.

It's possible that an abort() operation which is blocked on the ongoing appendBuffer()
operation completing will deadlock forever, with either the willProvideContentKeyRequest
or didProvideContentKeyRequest callbacks blocking waiting to be run on the main thread
(which is itself blocked waiting for the append operation to complete).

To break this deadlock, add a new abortSemaphore which is signaled in the abort() method
and have the willProvide... and didProvide... methods block both on their own semaphores
as well as the abortSemaphore, allowing them to break out even if their main thread calls
never get a chance to execute.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
(WebCore::SourceBufferPrivateAVFObjC::SourceBufferPrivateAVFObjC):
(WebCore::SourceBufferPrivateAVFObjC::abort):

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

20 months agoSimplify log channel configuration UI
eric.carlson@apple.com [Thu, 7 Dec 2017 19:06:17 +0000 (19:06 +0000)]
Simplify log channel configuration UI
https://bugs.webkit.org/show_bug.cgi?id=180527
<rdar://problem/35908382>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

* inspector/protocol/Console.json:

Source/WebCore:

No new tests -- no change in functionality.

* inspector/agents/WebConsoleAgent.cpp:
(WebCore::WebConsoleAgent::getLoggingChannels):
(WebCore::channelConfigurationForString):

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Models/LoggingChannel.js:
* UserInterface/Views/SettingsTabContentView.js:
(WI.SettingsTabContentView.prototype._createGeneralSettingsView):

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

20 months agoServiceWorker Inspector: Use the SW's scope url for the remote inspection target...
joepeck@webkit.org [Thu, 7 Dec 2017 18:54:42 +0000 (18:54 +0000)]
ServiceWorker Inspector: Use the SW's scope url for the remote inspection target metadata
https://bugs.webkit.org/show_bug.cgi?id=180519

Reviewed by Youenn Fablet.

* workers/service/context/ServiceWorkerDebuggable.cpp:
(WebCore::ServiceWorkerDebuggable::ServiceWorkerDebuggable):
* workers/service/context/ServiceWorkerDebuggable.h:
Switch to the scope URL for the remote inspector target info.

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

20 months ago[Re-landing r225620] Refactoring: Rename ScrambledPtr to Poisoned.
mark.lam@apple.com [Thu, 7 Dec 2017 18:49:51 +0000 (18:49 +0000)]
[Re-landing r225620] Refactoring: Rename ScrambledPtr to Poisoned.
https://bugs.webkit.org/show_bug.cgi?id=180514

Reviewed by Saam Barati and JF Bastien.

Re-landing r225620 with speculative build fix for GCC 7.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSObjectRef.cpp:
(classInfoPrivate):
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::value const):
(JSC::FunctionPtr::executableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr::poisonedPtr const):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::MacroAssemblerCodePtr::scrambledPtr const): Deleted.
* b3/B3LowerMacros.cpp:
* b3/testb3.cpp:
(JSC::B3::testInterpreter):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter64.asm:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCPoisonedPtr.cpp: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp.
(JSC::initializePoison):
(JSC::initializeScrambledPtrKeys): Deleted.
* runtime/JSCPoisonedPtr.h: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.h.
* runtime/JSCScrambledPtr.cpp: Removed.
* runtime/JSCScrambledPtr.h: Removed.
* runtime/JSDestructibleObject.h:
(JSC::JSDestructibleObject::classInfo const):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::classInfo const):
* runtime/Structure.h:
* runtime/VM.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
(WTF::makePoison):
(WTF::makeScrambledPtrKey): Deleted.
* wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
(WTF::PoisonedImpl::PoisonedImpl):
(WTF::PoisonedImpl::assertIsPoisoned const):
(WTF::PoisonedImpl::assertIsNotPoisoned const):
(WTF::PoisonedImpl::unpoisoned const):
(WTF::PoisonedImpl::operator-> const):
(WTF::PoisonedImpl::bits const):
(WTF::PoisonedImpl::operator! const):
(WTF::PoisonedImpl::operator bool const):
(WTF::PoisonedImpl::operator== const):
(WTF::PoisonedImpl::operator==):
(WTF::PoisonedImpl::operator=):
(WTF::PoisonedImpl::poison):
(WTF::PoisonedImpl::unpoison):
(WTF::ScrambledPtr::ScrambledPtr): Deleted.
(WTF::ScrambledPtr::assertIsScrambled const): Deleted.
(WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
(WTF::ScrambledPtr::descrambled const): Deleted.
(WTF::ScrambledPtr::operator-> const): Deleted.
(WTF::ScrambledPtr::bits const): Deleted.
(WTF::ScrambledPtr::operator! const): Deleted.
(WTF::ScrambledPtr::operator bool const): Deleted.
(WTF::ScrambledPtr::operator== const): Deleted.
(WTF::ScrambledPtr::operator==): Deleted.
(WTF::ScrambledPtr::operator=): Deleted.
(WTF::ScrambledPtr::scramble): Deleted.
(WTF::ScrambledPtr::descramble): Deleted.
* wtf/ScrambledPtr.cpp: Removed.
* wtf/ScrambledPtr.h: Removed.

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

20 months agoUnreviewed Windows build fix.
pvollan@apple.com [Thu, 7 Dec 2017 18:15:32 +0000 (18:15 +0000)]
Unreviewed Windows build fix.

* PlatformWin.cmake:

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

20 months agoUnreviewed, rolling out r224931.
ryanhaddad@apple.com [Thu, 7 Dec 2017 17:13:04 +0000 (17:13 +0000)]
Unreviewed, rolling out r224931.

This test is no longer in the tree.

Reverted changeset:

"imported/w3c/web-platform-tests/2dcontext/the-canvas-
state/canvas_state_restore_001.htm is an ImageOnlyFailure"
https://bugs.webkit.org/show_bug.cgi?id=179786
https://trac.webkit.org/changeset/224931

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

20 months agoUnreviewed, rolling out r225620
mcatanzaro@igalia.com [Thu, 7 Dec 2017 16:32:42 +0000 (16:32 +0000)]
Unreviewed, rolling out r225620
https://bugs.webkit.org/show_bug.cgi?id=180514
<rdar://problem/35901694>

It broke the build with GCC 7, and I don't know how to fix it.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSObjectRef.cpp:
(classInfoPrivate):
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::value const):
(JSC::FunctionPtr::executableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr::scrambledPtr const):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::MacroAssemblerCodePtr::poisonedPtr const): Deleted.
* b3/B3LowerMacros.cpp:
* b3/testb3.cpp:
(JSC::B3::testInterpreter):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter64.asm:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCScrambledPtr.cpp: Renamed from Source/JavaScriptCore/runtime/JSCPoisonedPtr.cpp.
(JSC::initializeScrambledPtrKeys):
* runtime/JSCScrambledPtr.h: Renamed from Source/JavaScriptCore/runtime/JSCPoisonedPtr.h.
* runtime/JSDestructibleObject.h:
(JSC::JSDestructibleObject::classInfo const):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::classInfo const):
* runtime/Structure.h:
* runtime/VM.h:

Source/WTF:

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Poisoned.h: Removed.
* wtf/ScrambledPtr.cpp: Renamed from Source/WTF/wtf/Poisoned.cpp.
(WTF::makeScrambledPtrKey):
* wtf/ScrambledPtr.h: Added.
(WTF::ScrambledPtr::ScrambledPtr):
(WTF::ScrambledPtr::assertIsScrambled const):
(WTF::ScrambledPtr::assertIsNotScrambled const):
(WTF::ScrambledPtr::descrambled const):
(WTF::ScrambledPtr::operator-> const):
(WTF::ScrambledPtr::bits const):
(WTF::ScrambledPtr::operator! const):
(WTF::ScrambledPtr::operator bool const):
(WTF::ScrambledPtr::operator== const):
(WTF::ScrambledPtr::operator==):
(WTF::ScrambledPtr::operator=):
(WTF::ScrambledPtr::scramble):
(WTF::ScrambledPtr::descramble):

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

20 months agoUnreviewed build fix after r225622.
cdumez@apple.com [Thu, 7 Dec 2017 16:11:13 +0000 (16:11 +0000)]
Unreviewed build fix after r225622.

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):

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

20 months ago[WPE][GTK] Freeze WebKit version in user agent
mcatanzaro@igalia.com [Thu, 7 Dec 2017 15:59:29 +0000 (15:59 +0000)]
[WPE][GTK] Freeze WebKit version in user agent
https://bugs.webkit.org/show_bug.cgi?id=180475

Reviewed by Carlos Garcia Campos.

.:

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

Source/WebCore:

Apple has frozen the WebKit version in its user agent, so we should too, at the same point.

* platform/glib/UserAgentGLib.cpp:
(WebCore::versionForUAString):

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

20 months agoUpdate imported/w3c/web-platform-tests/css/css-pseudo-4/marker-font-properties.html...
Ms2ger@igalia.com [Thu, 7 Dec 2017 15:36:37 +0000 (15:36 +0000)]
Update imported/w3c/web-platform-tests/css/css-pseudo-4/marker-font-properties.html from upstream.
https://bugs.webkit.org/show_bug.cgi?id=177362

Unreviewed test gardening.

LayoutTests/imported/w3c:

* web-platform-tests/css/css-pseudo-4/marker-font-properties-expected.html:
* web-platform-tests/css/css-pseudo-4/marker-font-properties.html:

LayoutTests:

This makes it pass on GTK and WPE (at least locally).

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

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

20 months ago[GTK] Enable imported/w3c/web-platform-tests/html/semantics/embedded-content/media...
Ms2ger@igalia.com [Thu, 7 Dec 2017 13:27:53 +0000 (13:27 +0000)]
[GTK] Enable imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/track/track-element/track-api-texttracks.html.
https://bugs.webkit.org/show_bug.cgi?id=168799

Unreviewed test gardening.

It hasn't failed in half a year (last failure was on r216594). I don't know
what fixed it, but there doesn't seem to be a reason to keep the flaky
annotation.

* platform/gtk/TestExpectations:

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

20 months ago[css-grid] Remove duplicated tests that are now present in WPT
rego@igalia.com [Thu, 7 Dec 2017 11:54:36 +0000 (11:54 +0000)]
[css-grid] Remove duplicated tests that are now present in WPT
https://bugs.webkit.org/show_bug.cgi?id=180511

Reviewed by Youenn Fablet.

These tests have been moved to WPT upstream repository in the following
Blink commits:
- https://chromium-review.googlesource.com/c/chromium/src/+/674931
- https://chromium-review.googlesource.com/c/chromium/src/+/730707

As we have just updated the WPT imported tests in r225561,
we can get rid now of the duplicates.

* fast/css-grid-layout/absolute-positioning-definite-sizes-expected.txt: Removed.
* fast/css-grid-layout/absolute-positioning-definite-sizes.html: Removed.
* fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt: Removed.
* fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html: Removed.
* fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt: Removed.
* fast/css-grid-layout/absolute-positioning-grid-container-parent.html: Removed.
* fast/css-grid-layout/fit-content-columns-expected.html: Removed.
* fast/css-grid-layout/fit-content-columns.html: Removed.
* fast/css-grid-layout/fit-content-rows-expected.html: Removed.
* fast/css-grid-layout/fit-content-rows.html: Removed.
* fast/css-grid-layout/grid-change-fit-content-argument-expected.txt: Removed.
* fast/css-grid-layout/grid-change-fit-content-argument.html: Removed.
* fast/css-grid-layout/grid-positioned-children-writing-modes-expected.html: Removed.
* fast/css-grid-layout/grid-positioned-children-writing-modes.html: Removed.
* fast/css-grid-layout/grid-positioned-item-dynamic-change-expected.html: Removed.
* fast/css-grid-layout/grid-positioned-item-dynamic-change.html: Removed.
* fast/css-grid-layout/grid-positioned-items-background-expected.html: Removed.
* fast/css-grid-layout/grid-positioned-items-background-rtl-expected.html: Removed.
* fast/css-grid-layout/grid-positioned-items-background-rtl.html: Removed.
* fast/css-grid-layout/grid-positioned-items-background.html: Removed.
* fast/css-grid-layout/grid-positioned-items-content-alignment-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-content-alignment-rtl-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-content-alignment-rtl.html: Removed.
* fast/css-grid-layout/grid-positioned-items-content-alignment.html: Removed.
* fast/css-grid-layout/grid-positioned-items-gaps-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-gaps-rtl-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-gaps-rtl.html: Removed.
* fast/css-grid-layout/grid-positioned-items-gaps.html: Removed.
* fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html: Removed.
* fast/css-grid-layout/grid-positioned-items-implicit-grid.html: Removed.
* fast/css-grid-layout/grid-positioned-items-padding-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-padding.html: Removed.
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html: Removed.
* fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track-expected.txt: Removed.
* fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track.html: Removed.
* fast/css-grid-layout/grid-sizing-positioned-items-expected.txt: Removed.
* fast/css-grid-layout/grid-sizing-positioned-items.html: Removed.
* fast/css-grid-layout/positioned-grid-items-should-not-create-implicit-tracks-expected.txt: Removed.
* fast/css-grid-layout/positioned-grid-items-should-not-create-implicit-tracks.html: Removed.
* fast/css-grid-layout/positioned-grid-items-should-not-take-up-space-expected.txt: Removed.
* fast/css-grid-layout/positioned-grid-items-should-not-take-up-space.html: Removed.

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

20 months ago[WPE][GTK] Update user agent quirk version strings
mcatanzaro@igalia.com [Thu, 7 Dec 2017 09:32:53 +0000 (09:32 +0000)]
[WPE][GTK] Update user agent quirk version strings
https://bugs.webkit.org/show_bug.cgi?id=180474

Reviewed by Carlos Garcia Campos.

* platform/UserAgentQuirks.cpp:
(WebCore::UserAgentQuirks::stringForQuirk):
* platform/glib/UserAgentGLib.cpp:
(WebCore::platformVersionForUAString):

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

20 months agoWe should be able to recover after a Service Worker process crash
cdumez@apple.com [Thu, 7 Dec 2017 07:37:50 +0000 (07:37 +0000)]
We should be able to recover after a Service Worker process crash
https://bugs.webkit.org/show_bug.cgi?id=180477

Reviewed by Brady Eidson and Youenn Fablet.

Source/WebCore:

Test: http/tests/workers/service/postmessage-after-sw-process-crash.https.html

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::serverToContextConnectionCreated):
Once the connection with the context process is established, process "run service worker"
requests that ocurred while establishing the connection.

(WebCore::SWServer::runServiceWorkerIfNecessary):
Take in a lambda function that gets called after the "run service worker" request
is processed. We used to assert that we had a connection to the context process.
We now wait for the connection to be established to process the request, thus
making the operation asynchronous.

(WebCore::SWServer::runServiceWorker):
Split some logic out of runServiceWorkerIfNecessary() to reuse in serverToContextConnectionCreated().

(WebCore::SWServer::markAllWorkersAsTerminated):
Add method to mark all service workers as terminated. This is called when the Service
Worker process crashes.

* workers/service/server/SWServer.h:

Source/WebKit:

* StorageProcess/ServiceWorker/WebSWServerConnection.cpp:
(WebKit::WebSWServerConnection::startFetch):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromClient):
(WebKit::WebSWServerConnection::postMessageToServiceWorkerFromServiceWorker):
Update calls to SWServer::runServiceWorkerIfNecessary() that that it is asynchronous
and takes in a lambda.

* StorageProcess/ServiceWorker/WebSWServerConnection.h:
(WebKit::WebSWServerConnection::ipcConnection const):
Add getter for the underlying IPC connection.

* StorageProcess/StorageProcess.cpp:
(WebKit::StorageProcess::didClose):
(WebKit::StorageProcess::connectionToContextProcessWasClosed):
Move some code to connectionToContextProcessWasClosed() to avoid duplication.
Also, relaunch the Service Worker process if it has exited but we still
have SWServer connections to regular Web Processes.

(WebKit::StorageProcess::needsServerToContextConnection const):
Utility function to determine if we still need the service worker process.
The current rule is that we need the service worker (aka "context") process
if we still have SWServer connections to regular Web Processes.

* StorageProcess/StorageProcess.h:

* StorageProcess/StorageToWebProcessConnection.cpp:
(WebKit::StorageToWebProcessConnection::didClose):
If didClose() is called for the connection to the service worker context,
let the StorageProcess know so that it can clear its state and relaunch
the process if necessary.

* UIProcess/API/C/WKContext.cpp:
(WKContextTerminateServiceWorkerProcess):
* UIProcess/API/C/WKContextPrivate.h:
* UIProcess/API/Cocoa/WKProcessPool.mm:
(-[WKProcessPool _terminateServiceWorkerProcess]):
* UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
Add SPI to terminate the service worker process.

* UIProcess/WebProcessPool.cpp:
(WebKit::m_serviceWorkerProcessTerminationTimer):
(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::disconnectProcess):
(WebKit::WebProcessPool::terminateServiceWorkerProcess):
* UIProcess/WebProcessPool.h:
We used to shutdown the ServiceWorker process right away as soon as the last regular
WebProcess was gone. We now give it a grace period of 5 seconds in case a new
WebProcess gets launched shortly after.

Tools:

Add testRunner API to terminate the Service Worker process.

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::terminateServiceWorkerProcess):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::terminateServiceWorkerProcess):
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

LayoutTests:

Add layout test coverage.

* http/tests/workers/service/postmessage-after-sw-process-crash.https-expected.txt: Added.
* http/tests/workers/service/postmessage-after-sw-process-crash.https.html: Added.
* http/tests/workers/service/resources/postmessage-after-sw-process-crash.js: Added.

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

20 months agoUnreviewed. Fix iOS (and maybe other platform) build
sbarati@apple.com [Thu, 7 Dec 2017 06:47:16 +0000 (06:47 +0000)]
Unreviewed. Fix iOS (and maybe other platform) build

* workers/service/server/RegistrationDatabase.cpp:
(WebCore::RegistrationDatabase::openSQLiteDatabase):

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

20 months agoRefactoring: Rename ScrambledPtr to Poisoned.
mark.lam@apple.com [Thu, 7 Dec 2017 06:10:06 +0000 (06:10 +0000)]
Refactoring: Rename ScrambledPtr to Poisoned.
https://bugs.webkit.org/show_bug.cgi?id=180514

Reviewed by Saam Barati.

Source/JavaScriptCore:

* API/JSCallbackObject.h:
* API/JSObjectRef.cpp:
(classInfoPrivate):
* JavaScriptCore.xcodeproj/project.pbxproj:
* Sources.txt:
* assembler/MacroAssemblerCodeRef.h:
(JSC::FunctionPtr::FunctionPtr):
(JSC::FunctionPtr::value const):
(JSC::FunctionPtr::executableAddress const):
(JSC::ReturnAddressPtr::ReturnAddressPtr):
(JSC::ReturnAddressPtr::value const):
(JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr):
(JSC::MacroAssemblerCodePtr::createFromExecutableAddress):
(JSC::MacroAssemblerCodePtr::poisonedPtr const):
(JSC::MacroAssemblerCodePtr:: const):
(JSC::MacroAssemblerCodePtr::operator! const):
(JSC::MacroAssemblerCodePtr::operator== const):
(JSC::MacroAssemblerCodePtr::emptyValue):
(JSC::MacroAssemblerCodePtr::deletedValue):
(JSC::MacroAssemblerCodePtr::scrambledPtr const): Deleted.
* b3/B3LowerMacros.cpp:
* b3/testb3.cpp:
(JSC::B3::testInterpreter):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileCheckSubClass):
(JSC::DFG::SpeculativeJIT::compileNewStringObject):
(JSC::DFG::SpeculativeJIT::emitSwitchIntJump):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileNewStringObject):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckSubClass):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::emitAllocateDestructibleObject):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::loadArgumentWithSpecificClass):
* jit/ThunkGenerators.cpp:
(JSC::virtualThunkFor):
(JSC::boundThisNoArgsFunctionCallGenerator):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::handleHostCall):
(JSC::LLInt::setUpCall):
* llint/LowLevelInterpreter64.asm:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSCPoisonedPtr.cpp: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.cpp.
(JSC::initializePoison):
(JSC::initializeScrambledPtrKeys): Deleted.
* runtime/JSCPoisonedPtr.h: Copied from Source/JavaScriptCore/runtime/JSCScrambledPtr.h.
* runtime/JSCScrambledPtr.cpp: Removed.
* runtime/JSCScrambledPtr.h: Removed.
* runtime/JSDestructibleObject.h:
(JSC::JSDestructibleObject::classInfo const):
* runtime/JSSegmentedVariableObject.h:
(JSC::JSSegmentedVariableObject::classInfo const):
* runtime/Structure.h:
* runtime/VM.h:

Source/WTF:

We're switching our nomenclature to "poisoning" instead of "scrambling" pointers.
This allows us to use shorter names.

This patch is almost purely refactoring, except for one change: the PoisonedImpl
template class (previously ScrambledPtr) has been modified to allow usage of
a constexpr uint32_t poison value (see Int32Poisoned) in addition to a runtime
determined uintptr_t poison value (see Poisoned).

* WTF.xcodeproj/project.pbxproj:
* wtf/CMakeLists.txt:
* wtf/Poisoned.cpp: Copied from Source/WTF/wtf/ScrambledPtr.cpp.
(WTF::makePoison):
(WTF::makeScrambledPtrKey): Deleted.
* wtf/Poisoned.h: Copied from Source/WTF/wtf/ScrambledPtr.h.
(WTF::PoisonedImpl::PoisonedImpl):
(WTF::PoisonedImpl::assertIsPoisoned const):
(WTF::PoisonedImpl::assertIsNotPoisoned const):
(WTF::PoisonedImpl::unpoisoned const):
(WTF::PoisonedImpl::operator-> const):
(WTF::PoisonedImpl::bits const):
(WTF::PoisonedImpl::operator! const):
(WTF::PoisonedImpl::operator bool const):
(WTF::PoisonedImpl::operator== const):
(WTF::PoisonedImpl::operator==):
(WTF::PoisonedImpl::operator=):
(WTF::PoisonedImpl::poison):
(WTF::PoisonedImpl::unpoison):
(WTF::ScrambledPtr::ScrambledPtr): Deleted.
(WTF::ScrambledPtr::assertIsScrambled const): Deleted.
(WTF::ScrambledPtr::assertIsNotScrambled const): Deleted.
(WTF::ScrambledPtr::descrambled const): Deleted.
(WTF::ScrambledPtr::operator-> const): Deleted.
(WTF::ScrambledPtr::bits const): Deleted.
(WTF::ScrambledPtr::operator! const): Deleted.
(WTF::ScrambledPtr::operator bool const): Deleted.
(WTF::ScrambledPtr::operator== const): Deleted.
(WTF::ScrambledPtr::operator==): Deleted.
(WTF::ScrambledPtr::operator=): Deleted.
(WTF::ScrambledPtr::scramble): Deleted.
(WTF::ScrambledPtr::descramble): Deleted.
* wtf/ScrambledPtr.cpp: Removed.
* wtf/ScrambledPtr.h: Removed.

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

20 months agoModernize some aspects of text codecs, eliminate WebKit use of strcasecmp
darin@apple.com [Thu, 7 Dec 2017 04:06:53 +0000 (04:06 +0000)]
Modernize some aspects of text codecs, eliminate WebKit use of strcasecmp
https://bugs.webkit.org/show_bug.cgi?id=180009

Reviewed by Alex Christensen.

Source/JavaScriptCore:

* bytecode/ArrayProfile.cpp: Removed include of StringExtras.h.
* bytecode/CodeBlock.cpp: Ditto.
* bytecode/ExecutionCounter.cpp: Ditto.
* runtime/ConfigFile.cpp: Ditto.
* runtime/DatePrototype.cpp: Ditto.
* runtime/IndexingType.cpp: Ditto.
* runtime/JSCJSValue.cpp: Ditto.
* runtime/JSDateMath.cpp: Ditto.
* runtime/JSGlobalObjectFunctions.cpp: Ditto.
* runtime/Options.cpp: Ditto.
(JSC::parse): Use equalLettersIgnoringASCIICase instead of strcasecmp.

Source/WebCore:

* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::consumeAsStream): Update to use size since the result of
encode is now Vector rather than CString. And for the new UnencodableHandling.
(WebCore::FetchBody::consumeText): Removed now-unneeded type cast. Ditto.
(WebCore::FetchBody::bodyAsFormData const): Ditto.
(WebCore::FetchBody::take): Pass result of encode directly to SharedBuffer::create.

* Modules/websockets/WebSocketDeflater.cpp: Removed include of StringExtras.h.
* bridge/IdentifierRep.h: Ditto.
* bridge/c/c_instance.cpp: Ditto.

* fileapi/BlobBuilder.cpp:
(WebCore::BlobBuilder::append): Updated for CString to Vector change and
for UnencodableHandling.

* html/parser/HTMLMetaCharsetParser.cpp:
(WebCore::HTMLMetaCharsetParser::checkForMetaCharset): Call the decode function
with all the arguments since there is only one decode function now.

* inspector/agents/InspectorDOMAgent.cpp:
(WebCore::computeContentSecurityPolicySHA256Hash): Updated for CString to Vector
change and for UnencodableHandling.

* loader/ResourceCryptographicDigest.cpp:
(WebCore::cryptographicDigestForBytes): Changed argument type to const void*.
* loader/ResourceCryptographicDigest.h: Ditto.

* loader/TextResourceDecoder.cpp:
(WebCore::TextResourceDecoder::TextResourceDecoder): Moved initialization of data
members to class definition.
(WebCore::TextResourceDecoder::create): Moved function body here from the header.
(WebCore::TextResourceDecoder::setEncoding): Use equalLettersIgnoringASCIICase.
(WebCore::TextResourceDecoder::shouldAutoDetect const): Updated for name change
to m_parentFrameAutoDetectedEncoding, which obviates a comment.
(WebCore::TextResourceDecoder::flush): Ditto.
* loader/TextResourceDecoder.h: Moved initialization here from constructor.
Moved function bodies out of the class. Renamed m_hintEncoding to
m_parentFrameAutoDetectedEncoding since that is a more accurate description.

* loader/appcache/ApplicationCacheStorage.cpp: Removed include of StringExtras.h.
* page/FrameTree.cpp: Ditto.
* page/PageSerializer.cpp: Ditto.
(WebCore::PageSerializer::serializeFrame): Pass result of encode directly to
StringBuffer::create and update for UnencodableHandling.
(WebCore::PageSerializer::serializeCSSStyleSheet): Ditto.
* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::findHashOfContentInPolicies const): Ditto.

* platform/FileHandle.cpp: Removed include of StringExtras.h.

* platform/SharedBuffer.cpp:
(WebCore::SharedBuffer::create): Added an overload that takes Vector<uint8_t>.
* platform/SharedBuffer.h: Ditto.

* platform/URLParser.cpp:
(WebCore::URLParser::encodeQuery): Updated since encode returns a Vector instead
of a CString now and for UnencodableHandling.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): Ditto.

* platform/graphics/ca/PlatformCALayer.cpp: Removed include of StringExtras.h.

* platform/network/curl/ResourceHandleCurlDelegate.cpp:
(WebCore::ResourceHandleCurlDelegate::handleDataURL): Updated for Vector instead
of CString.

* platform/network/FormData.cpp:
(WebCore::FormData::create): Added new overload, and simplified some existing ones.
(WebCore::normalizeStringData): Changed return type to Vector<uint8_t> and updated
for UnencodableHandling.
(WebCore::FormData::appendMultiPartStringValue): Updated for change in type of
result of normalizeStringData.
* platform/network/FormData.h: Updated for the above and updated comments.

* platform/network/FormDataBuilder.cpp: Made this a namespace instead of a class.
(WebCore::FormDataBuilder::append): Added an overload for Vector<uint8_t>.
(WebCore::FormDataBuilder::appendQuoted): Renamed from appendQuotedString and
changed the argument type.
(WebCore::FormDataBuilder::appendFormURLEncoded): Moved logic up from the
encodeStringAsFormData function into a new separate helper.
(WebCore::FormDataBuilder::addFilenameToMultiPartHeader): Updated for change to
UnencodableHandling.
(WebCore::FormDataBuilder::beginMultiPartHeader): Changed argument type.
(WebCore::FormDataBuilder::addKeyValuePairAsFormData): Ditto.
(WebCore::FormDataBuilder::encodeStringAsFormData): Updated to call helper.
* platform/network/FormDataBuilder.h: Updated for the above.

* platform/text/DecodeEscapeSequences.h: Use Vector<uint8_t> instead of
Vector<char>, also updated the code that calls encode for the new return type
and updated for change to UnencodableHandler.

* platform/text/TextCodec.cpp:
(WebCore::TextCodec::getUnencodableReplacement): Updated since we are using
std::array now, so the out argument is easier to understand, also updated for
change to UnencodablaHandler.
* platform/text/TextCodec.h: Use std::array for the UnencodableReplacementArray
type, removed the overload of decode so there is only one decode function.

* platform/text/TextCodecICU.cpp:
(WebCore::ICUConverterWrapper::~ICUConverterWrapper): Deleted.
Not needed any more since we use ICUConverterPtr instead now.
(WebCore::cachedConverterICU): Deleted.
(WebCore::TextCodecICU::create): Deleted. Callers just use make_unique
directly now.
(WebCore::TextCodecICU::registerCodecs): Rewrote to use lambdas instead
of functions with void* pointers.
(WebCore::TextCodecICU::TextCodecICU): Moved initializers into the header.
(WebCore::TextCodecICU::~TextCodecICU): Moved the body of releaseICUConverter
in here. Also greatly simplified it now that ICUConverterPtr handles closing
it as needed.
(WebCore::TextCodecICU::releaseICUConverter const): Deleted.
(WebCore::TextCodecICU::createICUConverter const): Rewrote to simplfy now that
we can use ICUConverterPtr.
(WebCore::ErrorCallbackSetter::ErrorCallbackSetter): Take a reference instead
of a pointer.
(WebCore::ErrorCallbackSetter::~ErrorCallbackSetter): Ditto.
(WebCore::TextCodecICU::decode): Use equalLettersIgnoringASCIICase instead of
strcasecmp.
(WebCore::TextCodecICU::encode): Return a Vector instead of a CString.
Take a StringView instead of a pointer and length. Simplified
the backslash-as-currency-symbol code by using String::replace.
* platform/text/TextCodecICU.h: Updated for above. Fixed indentation.
Added a new ICUConverterPtr typedef that uses std::unique_ptr to close the
converter; combined with move semantics it simplifies things so we don't have
to be so careful about calling ucnv_close.

* platform/text/TextCodecLatin1.cpp: Renamed the Latin-1 to Unicode table from
"table" to latin1ConversionTable.
(WebCore::TextCodecLatin1::registerCodecs): Use a lambda.
(WebCore::encodeComplexWindowsLatin1): Return a Vector instad of CString.
Also use StringView::codePoints instead of our own U16_NEXT.
(WebCore::TextCodecLatin1::encode): More of the same.
* platform/text/TextCodecLatin1.h: Updated for the above.

* platform/text/TextCodecReplacement.cpp:
(WebCore::TextCodecReplacement::create): Deleted.
(WebCore::TextCodecReplacement::TextCodecReplacement): Deleted.
(WebCore::TextCodecReplacement::registerCodecs): Use a lambda.
* platform/text/TextCodecReplacement.h: Updated for the above.

* platform/text/TextCodecUTF16.cpp:
(WebCore::newStreamingTextDecoderUTF16LE): Deleted.
(WebCore::newStreamingTextDecoderUTF16BE): Deleted.
(WebCore::TextCodecUTF16::registerCodecs): Use lambdas.
(WebCore::TextCodecUTF16::encode): Return a Vector.
* platform/text/TextCodecUTF16.h: Updated for the above.

* platform/text/TextCodecUTF8.cpp:
(WebCore::TextCodecUTF8::registerCodecs): Use a lambda.
(WebCore::TextCodecUTF8::encode): Return a Vector.
* platform/text/TextCodecUTF8.h: Updated for the above.

* platform/text/TextCodecUserDefined.cpp:
(WebCore::newStreamingTextDecoderUserDefined): Deleted.
(WebCore::TextCodecUserDefined::registerCodecs): Use a lambda.
(WebCore::encodeComplexUserDefined): Return a Vector.
(WebCore::TextCodecUserDefined::encode): Ditto.
* platform/text/TextCodecUserDefined.h: Updated for the above.

* platform/text/TextEncoding.cpp: Changed TextCodecMap to just hold a
WTF::Function instead of holding a function and an additional data pointer.
(WebCore::TextEncoding::TextEncoding): Use equalLettersIgnoringASCIICase
instead of a special isReplacementEncoding function.
(WebCore::TextEncoding::encode const): Return a Vector instead of a CString.
Pass StringView instead of a pointer and length.
* platform/text/TextEncoding.h: Updated for the above.

* platform/text/TextEncodingRegistry.cpp:
(WebCore::addToTextCodecMap): Removed the additionalData pointer and used
WTFMove since NewTextCodecFunction is now a WTF::Function rather than a C
function pointer.
(WebCore::isReplacementEncoding): Deleted.
(WebCore::newTextCodec): Use find instead of get now that the fucntions in
the map are WTF::Function and can't be copied.
(WebCore::dumpTextEncodingNameMap): Deleted.
* platform/text/TextEncodingRegistry.h: Updated for the above.

* platform/text/win/TextCodecWin.cpp:
(WebCore::TextCodecWin::encode): Updated comment.

* xml/XMLHttpRequest.cpp:
(WebCore::XMLHttpRequest::send): Updated for change to UnencodableHandling.

* xml/XSLTUnicodeSort.cpp: Removed include of StringExtras.h.
* xml/parser/XMLDocumentParser.cpp: Ditto.
* xml/parser/XMLDocumentParserLibxml2.cpp: Ditto.

Source/WebCore/PAL:

* PAL.xcodeproj/project.pbxproj: Added UnencodableHandling.h.
* pal/text/UnencodableHandling.h: Moved the UnencodableHandling enumeration
here from TextCodec.h and changed it to an enum class.

Source/WebKit:

* WebProcess/Plugins/Netscape/NetscapeBrowserFuncs.cpp:
(WebKit::initializeProtectionSpace): Use equalLettersIgnoringASCIICase instead
of strcasecmp.

Source/WebKitLegacy/mac:

* History/HistoryPropertyList.mm: Removed include of StringExtras.h.

* Plugins/WebBaseNetscapePluginView.mm:
(WebKit::getAuthenticationInfo): Use equalLettersIgnoringASCIICase instead
of strcasecmp.

* WebView/WebPreferences.mm:
(contains): Ditto. Also made this a template so it's easier to call on an array.
(cacheModelForMainBundle): Take advantage of the above to make it cleaner.

Source/WTF:

* wtf/Assertions.cpp: Removed include of StringExtras.h.
(WTFLogChannelByName): Use equalIgnoringASCIICase instead of strcasecmp.
* wtf/DateMath.cpp: Removed include of StringExtras.h.
* wtf/MD5.cpp: Ditto. Also removed include of CString.h.
* wtf/SHA1.cpp: Ditto.

* wtf/StringExtras.h:
(strncasecmp): Deleted.
(strcasecmp): Deleted.

* wtf/StringPrintStream.cpp: Removed include of StringExtras.h.
* wtf/text/Base64.cpp: Ditto.

* wtf/text/LineEnding.cpp:
(WTF::normalizeLineEndingsToLF): Replaced old more general purpose function with
this. Changed argument type to vector and used an rvalue reference and return value.
Also fixed some small logic errors.
(WTF::normalizeLineEndingsToCRLF): Ditto.
(WTF::normalizeLineEndingsToNative): Updated for above changes.
* wtf/text/LineEnding.h: Updated for above changes.

* wtf/text/StringCommon.h:
(WTF::equalIgnoringASCIICase): Added overload for const char*.
(WTF::equalLettersIgnoringASCIICase): Ditto.

* wtf/text/TextStream.cpp: Removed include of StringExtras.h.
* wtf/text/WTFString.cpp: Ditto.
* wtf/unicode/icu/CollatorICU.cpp: Ditto.

Tools:

* DumpRenderTree/cg/PixelDumpSupportCG.cpp: Removed include of StringExtras.h.

* TestWebKitAPI/CMakeLists.txt: Added LineEnding.cpp.
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
* TestWebKitAPI/Tests/WTF/LineEnding.cpp: Added. Has tests for the LineEnding
functions rewritten in this patch.

* TestWebKitAPI/Tests/WebCore/TextCodec.cpp: Updated test now that the decode
function doesn't have defaults for as many arguments any more. Also changed so
that the tests log the fact that the decode function returns an error and updated
expected results to expect all the errors.

* WebKitTestRunner/cg/TestInvocationCG.cpp: Ditto.

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

20 months ago[WTF] Remove XXXLockBase since constexpr constructor can initialize static variables...
utatane.tea@gmail.com [Thu, 7 Dec 2017 03:52:09 +0000 (03:52 +0000)]
[WTF] Remove XXXLockBase since constexpr constructor can initialize static variables without calling global constructors
https://bugs.webkit.org/show_bug.cgi?id=180495

Reviewed by Mark Lam.

Very nice feature of C++11 is that constexpr constructor can initialize static global variables
without calling global constructors. We do not need to have XXXLockBase with derived XXXLock
class since StaticXXXLock can have constructors as long as it is constexpr.
We remove bunch of these classes, and set `XXXLock() = default;` explicitly for readability.
C++11's default constructor is constexpr as long as its member's default constructor / default
initializer is constexpr.

* wtf/Condition.h:
(WTF::ConditionBase::construct): Deleted.
(WTF::ConditionBase::waitUntil): Deleted.
(WTF::ConditionBase::waitFor): Deleted.
(WTF::ConditionBase::wait): Deleted.
(WTF::ConditionBase::notifyOne): Deleted.
(WTF::ConditionBase::notifyAll): Deleted.
(WTF::Condition::Condition): Deleted.
* wtf/CountingLock.h:
(WTF::CountingLock::CountingLock): Deleted.
(WTF::CountingLock::~CountingLock): Deleted.
* wtf/Lock.cpp:
(WTF::Lock::lockSlow):
(WTF::Lock::unlockSlow):
(WTF::Lock::unlockFairlySlow):
(WTF::Lock::safepointSlow):
(WTF::LockBase::lockSlow): Deleted.
(WTF::LockBase::unlockSlow): Deleted.
(WTF::LockBase::unlockFairlySlow): Deleted.
(WTF::LockBase::safepointSlow): Deleted.
* wtf/Lock.h:
(WTF::LockBase::construct): Deleted.
(WTF::LockBase::lock): Deleted.
(WTF::LockBase::tryLock): Deleted.
(WTF::LockBase::try_lock): Deleted.
(WTF::LockBase::unlock): Deleted.
(WTF::LockBase::unlockFairly): Deleted.
(WTF::LockBase::safepoint): Deleted.
(WTF::LockBase::isHeld const): Deleted.
(WTF::LockBase::isLocked const): Deleted.
(WTF::LockBase::isFullyReset const): Deleted.
(WTF::Lock::Lock): Deleted.
* wtf/ReadWriteLock.cpp:
(WTF::ReadWriteLock::readLock):
(WTF::ReadWriteLock::readUnlock):
(WTF::ReadWriteLock::writeLock):
(WTF::ReadWriteLock::writeUnlock):
(WTF::ReadWriteLockBase::construct): Deleted.
(WTF::ReadWriteLockBase::readLock): Deleted.
(WTF::ReadWriteLockBase::readUnlock): Deleted.
(WTF::ReadWriteLockBase::writeLock): Deleted.
(WTF::ReadWriteLockBase::writeUnlock): Deleted.
* wtf/ReadWriteLock.h:
(WTF::ReadWriteLock::read):
(WTF::ReadWriteLock::write):
(WTF::ReadWriteLockBase::ReadLock::tryLock): Deleted.
(WTF::ReadWriteLockBase::ReadLock::lock): Deleted.
(WTF::ReadWriteLockBase::ReadLock::unlock): Deleted.
(WTF::ReadWriteLockBase::WriteLock::tryLock): Deleted.
(WTF::ReadWriteLockBase::WriteLock::lock): Deleted.
(WTF::ReadWriteLockBase::WriteLock::unlock): Deleted.
(WTF::ReadWriteLockBase::read): Deleted.
(WTF::ReadWriteLockBase::write): Deleted.
(WTF::ReadWriteLock::ReadWriteLock): Deleted.
* wtf/RecursiveLockAdapter.h:
(WTF::RecursiveLockAdapter::RecursiveLockAdapter): Deleted.
* wtf/WordLock.cpp:
(WTF::WordLock::lockSlow):
(WTF::WordLock::unlockSlow):
(WTF::WordLockBase::lockSlow): Deleted.
(WTF::WordLockBase::unlockSlow): Deleted.
* wtf/WordLock.h:
(WTF::WordLockBase::lock): Deleted.
(WTF::WordLockBase::unlock): Deleted.
(WTF::WordLockBase::isHeld const): Deleted.
(WTF::WordLockBase::isLocked const): Deleted.
(WTF::WordLockBase::isFullyReset const): Deleted.
(WTF::WordLock::WordLock): Deleted.
* wtf/WorkQueue.cpp:

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

20 months agoSupport the decoding="sync/async" syntax for image async attribute
commit-queue@webkit.org [Thu, 7 Dec 2017 03:36:03 +0000 (03:36 +0000)]
Support the decoding="sync/async" syntax for image async attribute
https://bugs.webkit.org/show_bug.cgi?id=179432

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-12-06
Reviewed by Darin Adler.

Source/WebCore:

Support the HTMLElementImage decoding attribute to allow controlling the
decoding of an image as per:
        https://github.com/whatwg/html/pull/3221
        https://whatpr.org/html/3221/images.html#decoding-images

Tests: fast/images/decode-decoding-attribute-async-large-image.html
       fast/images/decoding-attribute-async-small-image.html
       fast/images/decoding-attribute-dynamic-async-small-image.html
       fast/images/decoding-attribute-sync-large-image.html

* html/HTMLAttributeNames.in:
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::decodingMode const):
* html/HTMLImageElement.h:
* html/HTMLImageElement.idl:
* platform/graphics/BitmapImage.cpp:
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::internalStartAnimation):
(WebCore::BitmapImage::advanceAnimation):
(WebCore::BitmapImage::internalAdvanceAnimation):
* platform/graphics/DecodingOptions.h:
(WebCore::DecodingOptions::DecodingOptions):
(WebCore::DecodingOptions::isAuto const):
(WebCore::DecodingOptions::isAsynchronousCompatibleWith const):
(WebCore::DecodingOptions::isNone const): Deleted.
* platform/graphics/ImageDecoder.h:
* platform/graphics/ImageFrame.cpp:
(WebCore::ImageFrame::clearImage):
* platform/graphics/ImageSource.cpp:
(WebCore::ImageSource::frameAtIndexCacheIfNeeded):
* platform/graphics/avfoundation/objc/ImageDecoderAVFObjC.h:
* platform/graphics/cg/ImageDecoderCG.h:
* platform/graphics/win/ImageDecoderDirect2D.h:
* platform/image-decoders/ScalableImageDecoder.h:
* rendering/RenderBoxModelObject.cpp:
(WebCore::RenderBoxModelObject::decodingModeForImageDraw const):
The element attributes and the document settings should be checked before
checking our heuristics. And since the "decoding" attribute is per an image
and isLargeImageAsyncDecodingEnabledForTesting() is a global setting, the
decoding attribute should be checked first.

LayoutTests:

* fast/images/async-attribute-with-small-image-expected.html: Removed.
* fast/images/async-attribute-with-small-image.html: Removed.
* fast/images/decode-decoding-attribute-async-large-image-expected.html: Added.
* fast/images/decode-decoding-attribute-async-large-image.html: Added.
* fast/images/decoding-attribute-async-small-image-expected.html: Added.
* fast/images/decoding-attribute-async-small-image.html: Added.
* fast/images/decoding-attribute-dynamic-async-small-image-expected.html: Added.
* fast/images/decoding-attribute-dynamic-async-small-image.html: Added.
* fast/images/decoding-attribute-sync-large-image-expected.html: Added.
* fast/images/decoding-attribute-sync-large-image.html: Added.

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

20 months ago[Web App Manifest] Add SPI for applying a manifest to a top-level browsing context
commit-queue@webkit.org [Thu, 7 Dec 2017 03:30:08 +0000 (03:30 +0000)]
[Web App Manifest] Add SPI for applying a manifest to a top-level browsing context
https://bugs.webkit.org/show_bug.cgi?id=180368
rdar://problem/34748067

Patch by David Quesada <david_quesada@apple.com> on 2017-12-06
Reviewed by Geoffrey Garen.

Source/WebCore:

Support applying a manifest to a top-level browsing context by adding a manifest
property on PageConfiguration to be stored on MainFrame instances created from the
configuration.

No new tests, no change in behavior.

* page/MainFrame.cpp:
(WebCore::MainFrame::MainFrame):
* page/MainFrame.h:
* page/PageConfiguration.h:

Source/WebKit:

Add a new property WKWebViewConfiguration._applicationManifest to specify manifest
to apply to application contexts (aka. top-level browsing contexts, i.e. web views).
The manifest is ultimately stored on the MainFrame of the Pages created from the
web view configuration.

No new tests, no change in behavior.

* Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
* Shared/WebPageCreationParameters.h:
* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::copy const):
(API::PageConfiguration::applicationManifest const):
(API::PageConfiguration::setApplicationManifest):
* UIProcess/API/APIPageConfiguration.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _initializeWithConfiguration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _applicationManifest]):
(-[WKWebViewConfiguration _setApplicationManifest:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* UIProcess/API/Cocoa/_WKApplicationManifestInternal.h:
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::m_cpuLimit):

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

20 months agoAX: Layout test imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests1...
commit-queue@webkit.org [Thu, 7 Dec 2017 03:23:51 +0000 (03:23 +0000)]
AX: Layout test imported/w3c/web-platform-tests/html/syntax/parsing/html5lib_tests1.html flaky crash
https://bugs.webkit.org/show_bug.cgi?id=173540
<rdar://problem/35386393>

Unreviewed test gardening.

r225613 fixed the flaky crash.

Patch by Fujii Hironori <Hironori.Fujii@sony.com> on 2017-12-06

* platform/gtk/TestExpectations: Unmarked the test case.

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

20 months agoRemove nodes from AXObjectCache when the associated subframe document is getting...
zalan@apple.com [Thu, 7 Dec 2017 00:55:01 +0000 (00:55 +0000)]
Remove nodes from AXObjectCache when the associated subframe document is getting destroyed.
https://bugs.webkit.org/show_bug.cgi?id=180503
<rdar://problem/35891328

Reviewed by Chris Fleizach.

While AXObjectCache lives on the mainframe's document, it caches nodes from every subframe document.
When a node is being destroyed, we deregister it from the AX cache through the Node's destructor.
Soon after the document is detached from the frame/frame is detached from the frame tree, this codepath
is no longer available (no access to the AXObjectCache object) and from this point we are unable to deregister
nodes associated with the current document.
In AXObjectCache::prepareForDocumentDestruction(), we preemptively remove all the cached nodes associated
with the about-to-be-destroyed document.

Covered by existing tests.

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::remove):
(WebCore::filterForRemoval):
(WebCore::AXObjectCache::prepareForDocumentDestruction): Collecting the nodes and removing them later is
not the most performant way but in order to have a single code path for the de-registration (AXObjectCache::remove)
I think it's worth going down the slower path -which should not really be that slower anyway since those
lists tend to stay small.
(WebCore::AXObjectCache::clearTextMarkerNodesInUse): Deleted.
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::removeNodeForUse):
(WebCore::AXObjectCache::remove):
* dom/Document.cpp:
(WebCore::Document::prepareForDestruction):
* dom/Node.cpp:
(WebCore::Node::willBeDeletedFrom):
(WebCore::Node::moveNodeToNewDocument):

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

20 months agoAdjusted expectations for inspector/worker/resources-in-worker.html.
jlewis3@apple.com [Thu, 7 Dec 2017 00:49:11 +0000 (00:49 +0000)]
Adjusted expectations for inspector/worker/resources-in-worker.html.
https://bugs.webkit.org/show_bug.cgi?id=168091

Unreviewed test gardening.

* platform/mac/TestExpectations:

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

20 months agoExclude another leak callstack.
ap@apple.com [Thu, 7 Dec 2017 00:43:29 +0000 (00:43 +0000)]
Exclude another leak callstack.

* Scripts/webkitpy/port/leakdetector.py: (LeakDetector._callstacks_to_exclude_from_leaks):

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

20 months agoStart writing ServiceWorker registrations to disk.
beidson@apple.com [Thu, 7 Dec 2017 00:41:14 +0000 (00:41 +0000)]
Start writing ServiceWorker registrations to disk.
https://bugs.webkit.org/show_bug.cgi?id=180488

Reviewed by Chris Dumez.

No new tests (No observable behavior change).

As registrations changes occurs, we now write them to disk.
We don't re-read them in yet.

* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:

* workers/service/ServiceWorkerRegistrationData.cpp:
(WebCore::ServiceWorkerRegistrationData::isolatedCopy const):
* workers/service/ServiceWorkerRegistrationData.h:
(WebCore::ServiceWorkerRegistrationData::encode const):
(WebCore::ServiceWorkerRegistrationData::decode):

* workers/service/ServiceWorkerRegistrationKey.cpp:
(WebCore::ServiceWorkerRegistrationKey::toDatabaseKey const):
* workers/service/ServiceWorkerRegistrationKey.h:

* workers/service/server/RegistrationDatabase.cpp: Added.
(WebCore::v1RecordsTableSchema):
(WebCore::v1RecordsTableSchemaAlternate):
(WebCore::databaseFilename):
(WebCore::RegistrationDatabase::RegistrationDatabase):
(WebCore::RegistrationDatabase::~RegistrationDatabase):
(WebCore::RegistrationDatabase::openSQLiteDatabase):
(WebCore::RegistrationDatabase::ensureValidRecordsTable):
(WebCore::updateViaCacheToString):
(WebCore::workerTypeToString):
(WebCore::RegistrationDatabase::pushChanges):
(WebCore::RegistrationDatabase::doPushChanges):
(WebCore::RegistrationDatabase::importRecords):
(WebCore::RegistrationDatabase::databaseFailedToOpen):
(WebCore::RegistrationDatabase::databaseOpenedAndRecordsImported):
* workers/service/server/RegistrationDatabase.h: Copied from Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp.
(WebCore::RegistrationDatabase::isClosed const):

* workers/service/server/RegistrationStore.cpp: Added.
(WebCore::RegistrationStore::RegistrationStore):
(WebCore::RegistrationStore::~RegistrationStore):
(WebCore::RegistrationStore::scheduleDatabasePushIfNecessary):
(WebCore::RegistrationStore::pushChangesToDatabase):
(WebCore::RegistrationStore::updateRegistration):
(WebCore::RegistrationStore::removeRegistration):
(WebCore::RegistrationStore::databaseFailedToOpen):
(WebCore::RegistrationStore::databaseOpenedAndRecordsImported):
* workers/service/server/RegistrationStore.h: Copied from Source/WebCore/workers/service/ServiceWorkerRegistrationData.cpp.

* workers/service/server/SWServer.cpp:
(WebCore::SWServer::removeRegistration):
(WebCore::SWServer::SWServer):
(WebCore::SWServer::updateWorker):
(WebCore::SWServer::installContextData):
* workers/service/server/SWServer.h:

* workers/service/server/SWServerRegistration.cpp:
(WebCore::SWServerRegistration::data const):
* workers/service/server/SWServerRegistration.h:
(WebCore::SWServerRegistration::setLastUpdateTime):

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

20 months agoVersioning.
jmarcell@apple.com [Thu, 7 Dec 2017 00:37:10 +0000 (00:37 +0000)]
Versioning.

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

20 months ago-[WKWebViewConfiguration copyWithZone] doesn't copy _groupIdentifier
jeffm@apple.com [Thu, 7 Dec 2017 00:18:47 +0000 (00:18 +0000)]
-[WKWebViewConfiguration copyWithZone] doesn't copy _groupIdentifier
https://bugs.webkit.org/show_bug.cgi?id=180504

Reviewed by Geoffrey Garen.

Source/WebKit:

* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration copyWithZone:]):
Copy _groupIdentifier.

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/WKWebViewConfiguration.mm:
Add a test to verify that the _groupIdentifier is copied.

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

20 months agoWeb Inspector: Canvas: spurious warnings shown for commands that changed pixel contents
webkit@devinrousso.com [Thu, 7 Dec 2017 00:02:55 +0000 (00:02 +0000)]
Web Inspector: Canvas: spurious warnings shown for commands that changed pixel contents
https://bugs.webkit.org/show_bug.cgi?id=180505
<rdar://problem/35891651>

Reviewed by Brian Burg.

* UserInterface/Models/RecordingAction.js:
(WI.RecordingAction.prototype.apply.getContent):
(WI.RecordingAction.prototype.apply):

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

20 months agoMark webgl/1.0.2/conformance/textures/gl-teximage.html as failing again.
ryanhaddad@apple.com [Wed, 6 Dec 2017 23:30:46 +0000 (23:30 +0000)]
Mark webgl/1.0.2/conformance/textures/gl-teximage.html as failing again.

Unreviewed test gardening.

* platform/ios/TestExpectations:

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

20 months agoWeb Inspector: Style Redesign: filtering removes header if one rule has no match...
webkit@devinrousso.com [Wed, 6 Dec 2017 23:04:31 +0000 (23:04 +0000)]
Web Inspector: Style Redesign: filtering removes header if one rule has no match even if others do
https://bugs.webkit.org/show_bug.cgi?id=180467

Reviewed by Timothy Hatcher.

* UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:
(WI.SpreadsheetRulesStyleDetailsPanel.prototype.applyFilter):
(WI.SpreadsheetRulesStyleDetailsPanel.prototype._handleSectionFilterApplied):

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

20 months agoUnreviewed, fix build after r225577.
cdumez@apple.com [Wed, 6 Dec 2017 23:02:40 +0000 (23:02 +0000)]
Unreviewed, fix build after r225577.

* bindings/js/JSDOMGlobalObject.cpp:

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

20 months ago[Web App Manifest] Add SPI for fetching the manifest
commit-queue@webkit.org [Wed, 6 Dec 2017 22:26:32 +0000 (22:26 +0000)]
[Web App Manifest] Add SPI for fetching the manifest
https://bugs.webkit.org/show_bug.cgi?id=180294
rdar://problem/34747968

Patch by David Quesada <david_quesada@apple.com> on 2017-12-06
Reviewed by Geoffrey Garen.

Source/WebCore:

Test: applicationmanifest/developer-warnings.html

* Modules/applicationmanifest/ApplicationManifest.h:
(WebCore::ApplicationManifest::encode const):
(WebCore::ApplicationManifest::decode):
* Modules/applicationmanifest/ApplicationManifestParser.cpp:
(WebCore::ApplicationManifestParser::logManifestPropertyNotAString):
(WebCore::ApplicationManifestParser::logManifestPropertyInvalidURL):
    Drive-by wording changes. Since the warning is prefixed with "parsing
    application manifest:", remove a redundant use of "application manifest".

Source/WebKit:

Add a new method -[WKWebView _getApplicationManifestWithCompletionHandler:] to request
the manifest associated with the current page.

* Shared/API/APIObject.h:
* Shared/Cocoa/APIObject.mm:
(API::Object::newObject):
* UIProcess/API/APIApplicationManifest.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
    Add a new API object type for application manifests.
* UIProcess/API/C/WKPage.cpp:
(WKPageGetApplicationManifest_b):
    Add a C version of this SPI for WebKitTestRunner.
* UIProcess/API/C/WKPagePrivate.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _getApplicationManifestWithCompletionHandler:]):
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/API/Cocoa/_WKApplicationManifest.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
* UIProcess/API/Cocoa/_WKApplicationManifest.mm: Added.
(-[_WKApplicationManifest initWithCoder:]):
(-[_WKApplicationManifest encodeWithCoder:]):
(+[_WKApplicationManifest applicationManifestFromJSON:manifestURL:documentURL:]):
(-[_WKApplicationManifest _apiObject]):
(nullableNSString):
(-[_WKApplicationManifest name]):
(-[_WKApplicationManifest shortName]):
(-[_WKApplicationManifest applicationDescription]):
(-[_WKApplicationManifest scope]):
(-[_WKApplicationManifest startURL]):
* UIProcess/API/Cocoa/_WKApplicationManifestInternal.h: Copied from Source/WebCore/Modules/applicationmanifest/ApplicationManifest.h.
(API::wrapper):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::applicationManifestCallback):
(WebKit::WebPageProxy::getApplicationManifest):
* UIProcess/WebPageProxy.h:
* UIProcess/WebPageProxy.messages.in:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:
(WebKit::WebFrameLoaderClient::finishedLoadingApplicationManifest):
* WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::getApplicationManifest):
(WebKit::WebPage::didFinishLoadingApplicationManifest):
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/WebPage.messages.in:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKitCocoa/ApplicationManifest.mm: Added.
    Added two API tests for _WKApplicationManifest:
    - Testing _WKApplicationManifest's conformance to NSCoding.
    - Testing -[WKWebView _getApplicationManifestWithCompletionHandler:], verifying the
      values of the resulting _WKApplicationManifest.
(TestWebKitAPI::TEST):

* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
    Added a new testRunner method getApplicationManifestThen(), used by the LayoutTests
    to request the document load its associated manifest. The layout tests formerly called
    an unimplemented function getManifestThen(), but I added 'Application' to somewhat
    differentiate this from the app cache manifest.

* WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
(WTR::InjectedBundle::didReceiveMessageToPage):
* WebKitTestRunner/InjectedBundle/TestRunner.cpp:
(WTR::TestRunner::getApplicationManifestThen):
(WTR::TestRunner::didGetApplicationManifest):
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/TestInvocation.cpp:
(WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):

LayoutTests:

* TestExpectations:
    Skip the app manifest-related layout tests for now while the feature is still disabled.
    Also moved the expectations disabling the manifest-src layout tests (which now pass
    when the feature is enabled) to the same location in the file.
* applicationmanifest/developer-warnings-expected.txt: Added.
* applicationmanifest/developer-warnings.html: Added.
* applicationmanifest/multiple-links-expected.txt: Added.
* applicationmanifest/multiple-links.html: Added.
    Add a layout test to verify only the first manifest link is loaded when there
    are multiple on the page.
* applicationmanifest/resources/developer-warnings.manifest: Added.
    Add a layout test to verify that warnings generated while parsing the manifest are
    logged to the console.
* http/tests/security/contentSecurityPolicy/manifest-src-allowed.html:
    Replaced calls to getManifestThen() with getApplicationManifestThen().
* http/tests/security/contentSecurityPolicy/manifest-src-blocked-expected.txt:
    Updated the expected console message to reflect the current wording for CSP violations.
* http/tests/security/contentSecurityPolicy/manifest-src-blocked.html:
    Replaced calls to getManifestThen() with getApplicationManifestThen().
* http/tests/security/contentSecurityPolicy/manifest.test/manifest.json:
    Removed a trailing newline that was causing JSON parsing to fail.

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

20 months agoThe WebProcess should use the NSRunLoop runloop type.
pvollan@apple.com [Wed, 6 Dec 2017 22:24:30 +0000 (22:24 +0000)]
The WebProcess should use the NSRunLoop runloop type.
https://bugs.webkit.org/show_bug.cgi?id=179804
<rdar://problem/14012823>

Reviewed by Brent Fulgham.

Source/WebCore:

No new tests.

* platform/mac/EventLoopMac.mm:
(WebCore::EventLoop::cycle):

Source/WebKit:

* Platform/IPC/mac/ConnectionMac.mm:
(IPC::AccessibilityProcessSuspendedNotification):
* Shared/ChildProcess.h:
* Shared/mac/ChildProcessMac.mm:
(WebKit::ChildProcess::launchServicesCheckIn):
* UIProcess/Launcher/mac/ProcessLauncherMac.mm:
(WebKit::shouldLeakBoost):
* WebProcess/EntryPoint/mac/XPCService/WebContentService/Info-OSX.plist:
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeProcess):

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

20 months agoPrefer ids and classes over tag names in selector filter
antti@apple.com [Wed, 6 Dec 2017 22:24:06 +0000 (22:24 +0000)]
Prefer ids and classes over tag names in selector filter
https://bugs.webkit.org/show_bug.cgi?id=180433
<rdar://problem/35859103>

Reviewed by Zalan Bujtas.

There are only four slots in the filter and currently we just pick whatever identifiers we find traversing the selector
from right to left. More specific selector types are on average more valuable (id > class > tag) so we should prefer them.

This appears to be 4-5% StyleBench progression.

* css/RuleSet.cpp:
(WebCore::RuleData::RuleData):
* css/SelectorFilter.cpp:
(WebCore::collectSimpleSelectorHash):
(WebCore::collectSelectorHashes):

    This function collects all hashes from the selector.

(WebCore::chooseSelectorHashesForFilter):

    This function chooses the most valuable hashes to use with the filter.

(WebCore::SelectorFilter::collectHashes):

    Factor into two separate steps.

(WebCore::collectDescendantSelectorIdentifierHashes): Deleted.
(WebCore::SelectorFilter::collectIdentifierHashes): Deleted.
* css/SelectorFilter.h:
(WebCore::SelectorFilter::fastRejectSelector const):

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

20 months agoWeb Inspector: Details section headers overlap Classes container in the Computed...
mattbaker@apple.com [Wed, 6 Dec 2017 22:21:09 +0000 (22:21 +0000)]
Web Inspector: Details section headers overlap Classes container in the Computed Styles panel
https://bugs.webkit.org/show_bug.cgi?id=180380

Reviewed by Timothy Hatcher.

* UserInterface/Views/CSSStyleDetailsSidebarPanel.css:
(.sidebar > .panel.details.css-style > .content ~ :matches(.options-container, .class-list-container)):

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

20 months ago[EME] Make CDMInstance& parameter passed through MediaPlayer non-const
jer.noble@apple.com [Wed, 6 Dec 2017 21:53:09 +0000 (21:53 +0000)]
[EME] Make CDMInstance& parameter passed through MediaPlayer non-const
https://bugs.webkit.org/show_bug.cgi?id=180484

Reviewed by Jon Lee.

One can only call const methods on const references, and the obvious intent
of these methods is for the callee to call non-const methods on the parameters.

* Modules/encryptedmedia/MediaKeys.h:
(WebCore::MediaKeys::cdmInstance):
* platform/graphics/MediaPlayer.cpp:
(WebCore::MediaPlayer::cdmInstanceAttached):
(WebCore::MediaPlayer::cdmInstanceDetached):
(WebCore::MediaPlayer::attemptToDecryptWithInstance):
* platform/graphics/MediaPlayer.h:
* platform/graphics/MediaPlayerPrivate.h:
(WebCore::MediaPlayerPrivateInterface::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateInterface::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateInterface::attemptToDecryptWithInstance):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceAttached):
(WebCore::MediaPlayerPrivateGStreamerBase::cdmInstanceDetached):
(WebCore::MediaPlayerPrivateGStreamerBase::attemptToDecryptWithInstance):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:
(WebCore::MediaPlayerPrivateGStreamerMSE::attemptToDecryptWithInstance):
* platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.h:

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

20 months agoImport WPT workers test suite
commit-queue@webkit.org [Wed, 6 Dec 2017 21:34:25 +0000 (21:34 +0000)]
Import WPT workers test suite
https://bugs.webkit.org/show_bug.cgi?id=180464

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-06
Reviewed by Chris Dumez.

LayoutTests/imported/w3c:

* resources/import-expectations.json:
* resources/resource-files.json:
* workers: Added.

LayoutTests:

* TestExpectations: skip some timing out tests or testing shared workers.

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

20 months agoAX: [iOS] Post accessibility notification when a web process changes its suspended...
n_wang@apple.com [Wed, 6 Dec 2017 21:02:30 +0000 (21:02 +0000)]
AX: [iOS] Post accessibility notification when a web process changes its suspended state
https://bugs.webkit.org/show_bug.cgi?id=180458
<rdar://problem/35869115>

Reviewed by Chris Dumez.

Post accessibility notification with the pid information when a web process
becomes suspended or resumes running.

* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::actualPrepareToSuspend):
(WebKit::WebProcess::processDidResume):
* WebProcess/WebProcess.h:
* WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::WebProcess::accessibilityProcessSuspendedNotification):

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

20 months agoPreflight should bypass service worker
commit-queue@webkit.org [Wed, 6 Dec 2017 20:51:59 +0000 (20:51 +0000)]
Preflight should bypass service worker
https://bugs.webkit.org/show_bug.cgi?id=180463

Patch by Youenn Fablet <youenn@apple.com> on 2017-12-06
Reviewed by Alex Christensen.

Source/WebCore:

Covered by updated test.

* loader/CrossOriginPreflightChecker.cpp:
(WebCore::CrossOriginPreflightChecker::startPreflight): Ensure service worker is not used.
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didFail): Tighten check and clear resource proactively to not hit loadRequest ASSERT.

LayoutTests:

* http/tests/workers/service/resources/service-worker-crossorigin-fetch.js: Removed.
* http/tests/workers/service/resources/service-worker-crossorigin-fetch-worker.js:
(event.event.request.url.endsWith):
* http/tests/workers/service/resources/service-worker-crossorigin-fetch.js:
(async.test):
* http/tests/workers/service/service-worker-crossorigin-fetch-expected.txt:
* http/tests/workers/service/service-worker-crossorigin-fetch.html:

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

20 months agoUnreviewed build fix, removed unused lambda capture.
ryanhaddad@apple.com [Wed, 6 Dec 2017 20:42:29 +0000 (20:42 +0000)]
Unreviewed build fix, removed unused lambda capture.

* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):

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

20 months agoUpdate TestExpectations for http/tests/workers/service/registration-task-queue-schedu...
ryanhaddad@apple.com [Wed, 6 Dec 2017 20:37:50 +0000 (20:37 +0000)]
Update TestExpectations for http/tests/workers/service/registration-task-queue-scheduling-1.html.
https://bugs.webkit.org/show_bug.cgi?id=179342

Unreviewed test gardening.

* TestExpectations:
* platform/mac/TestExpectations:

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