⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Timeline



Jul 31, 2017:

11:42 PM Changeset in webkit [220090] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Use LazyNeverDestroyed instead of DEFINE_GLOBAL for MediaFeatureNames
https://bugs.webkit.org/show_bug.cgi?id=175008

Patch by Fujii Hironori <Fujii Hironori> on 2017-07-31
Reviewed by Alex Christensen.

No new tests because no behavior change.

Stop using DEFINE_GLOBAL hack in favor of LazyNeverDestroyed.

  • css/MediaFeatureNames.cpp:

(WebCore::MediaFeatureNames::init): Do not include
<wtf/StaticConstructors.h>. Use LazyNeverDestroyed instead of
DEFINE_GLOBAL. Call LazyNeverDestroyed::construct instead of
placement new.

  • css/MediaFeatureNames.h: Use LazyNeverDestroyed.
  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::evaluate const): Dereference with ->.

11:40 PM Changeset in webkit [220089] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Use LazyNeverDestroyed instead of DEFINE_GLOBAL for QualifiedName
https://bugs.webkit.org/show_bug.cgi?id=175010

Patch by Fujii Hironori <Fujii Hironori> on 2017-07-31
Reviewed by Alex Christensen.

No new tests because no behavior change.

Stop using DEFINE_GLOBAL hack in favor of LazyNeverDestroyed.

  • dom/DOMAllInOne.cpp: Remove the warning. Include QualifiedName.cpp.
  • dom/QualifiedName.cpp:

(WebCore::QualifiedName::init): Call LazyNeverDestroyed::construct
instead of placement new.

  • dom/QualifiedName.h: Use LazyNeverDestroyed.
11:37 PM Changeset in webkit [220088] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Remove some obsolete expected failures blamed on the threaded compositor.
https://bugs.webkit.org/show_bug.cgi?id=174982

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-07-31
Reviewed by Sergio Villar Senin.

  • platform/gtk/TestExpectations:
10:28 PM Changeset in webkit [220087] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

Fix JSCOnly ARM buildbots after r220047
https://bugs.webkit.org/show_bug.cgi?id=174993

Reviewed by Saam Barati.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(BuildAndRemoteJSCTestsFactory.init):

5:39 PM Changeset in webkit [220086] by commit-queue@webkit.org
  • 3 edits in trunk/PerformanceTests

Speedometer 2.0: Remove <base> from Angular 4 test
https://bugs.webkit.org/show_bug.cgi?id=175004

Patch by Mathias Bynens <mathias@qiwi.be> on 2017-07-31
Reviewed by Ryosuke Niwa.

  • Speedometer/resources/todomvc/architecture-examples/angular/dist/index.html: Remove <base>.
  • Speedometer/resources/todomvc/architecture-examples/angular/src/index.html: Remove <base>.
5:39 PM Changeset in webkit [220085] by mrajca@apple.com
  • 6 edits in trunk/Source/WebCore

Support quirk for letting media autoplay if the user interacted with at least one media element.
https://bugs.webkit.org/show_bug.cgi?id=175005
<rdar://problem/33476038>

Reviewed by Eric Carlson.

If the user has interacted with at least one media element, let other media elements auto-play
as a quirk.

  • dom/Document.cpp:

(WebCore::Document::updateIsPlayingMedia):

  • dom/Document.h:

(WebCore::Document::noteUserInteractionWithMediaElement):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture):

  • html/MediaElementSession.cpp:

(WebCore::needsDocumentLevelMediaUserGestureQuirk):
(WebCore::MediaElementSession::playbackPermitted const):

  • page/MediaProducer.h:
5:18 PM Changeset in webkit [220084] by n_wang@apple.com
  • 2 edits in trunk/Source/WebCore

AX: CFEqual is failing on text markers with exact same data
https://bugs.webkit.org/show_bug.cgi?id=175002
<rdar://problem/33636985>

Reviewed by Chris Fleizach.

We should zero the memory of the TextMarkerData instance so that it
can be tested for byte-equivalence.

Made sure this change won't break any of the existing tests.

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::textMarkerDataForVisiblePosition):
(WebCore::AXObjectCache::textMarkerDataForFirstPositionInTextControl):

4:55 PM Changeset in webkit [220083] by jmarcell@apple.com
  • 7 edits in branches/safari-604-branch/Source

Versioning.

4:45 PM Changeset in webkit [220082] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.35

Tag Safari-604.1.35.

4:30 PM Changeset in webkit [220081] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Added some UNLIKELYs to operationOptimize().
https://bugs.webkit.org/show_bug.cgi?id=174976

Reviewed by JF Bastien.

  • jit/JITOperations.cpp:
4:30 PM Changeset in webkit [220080] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix. Fixed a typo. task.id() isn't a thing in this function.

  • public/v3/models/test-group.js:

(TestGroup.createWithCustomConfiguration):

3:59 PM Changeset in webkit [220079] by mark.lam@apple.com
  • 2 edits in trunk/Source/bmalloc

Fixed some comment typos.

Not reviewed.

  • bmalloc/PerProcess.h:
3:47 PM Changeset in webkit [220078] by keith_miller@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Make more things LLInt constexprs
https://bugs.webkit.org/show_bug.cgi?id=174994

Reviewed by Saam Barati.

This patch makes more const values in the LLInt constexprs.
It also deletes all of the no longer necessary static_asserts in
LLIntData.cpp. Finally, it fixes a typo in parser.rb.

  • interpreter/ShadowChicken.h:

(JSC::ShadowChicken::Packet::tailMarker):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • offlineasm/generate_offset_extractor.rb:
  • offlineasm/parser.rb:
3:34 PM Changeset in webkit [220077] by mrajca@apple.com
  • 3 edits in trunk/Source/WebCore

Propagate user gesture tokens when script elements are loaded.
https://bugs.webkit.org/show_bug.cgi?id=174959

Reviewed by Eric Carlson.

Propagate user gesture tokens when script elements are loaded (i.e. between the time an
element is created and its onload handler is invoked).

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::ScriptElement):
(WebCore::ScriptElement::dispatchLoadEventRespectingUserGestureIndicator):
(WebCore::ScriptElement::executeScriptAndDispatchEvent):
(WebCore::ScriptElement::executePendingScript):

  • dom/ScriptElement.h:
2:45 PM Changeset in webkit [220076] by jiewen_tan@apple.com
  • 2 edits
    3 adds in trunk/LayoutTests

Unreviewed, test gardening

  • platform/mac-highsierra/TestExpectations:
  • platform/mac-highsierra/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_long_empty.https-expected.txt: Added.
  • platform/mac-highsierra/imported/w3c/web-platform-tests/WebCryptoAPI/derive_bits_keys/test_pbkdf2_short_empty.https-expected.txt: Added.
2:43 PM Changeset in webkit [220075] by Matt Lewis
  • 2 edits in trunk/LayoutTests

Skipped http/tests/media/video-play-stall.html.
https://bugs.webkit.org/show_bug.cgi?id=174988

Unreviewed test gardening.

2:26 PM Changeset in webkit [220074] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit

WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction() may not be able to
determine page that initiated navigation
https://bugs.webkit.org/show_bug.cgi?id=174531

Remove a comment from WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction()
about determining the originating page independently from the originating frame. There
does not seem to be much value to fixing this. We can always revisit this issue if we
discover a strong motivating example. See <https://bugs.webkit.org/show_bug.cgi?id=174531#c1>
for more details.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

1:31 PM Changeset in webkit [220073] by Matt Lewis
  • 12 edits
    2 deletes in trunk

Unreviewed, rolling out r220048.

This revision caused multiple crashes in fast/images. See
webkit.org/b/174990

Reverted changeset:

"RenderImageResourceStyleImage::image() should return the
nullImage() if the image is not available"
https://bugs.webkit.org/show_bug.cgi?id=174874
http://trac.webkit.org/changeset/220048

11:36 AM Changeset in webkit [220072] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Do not mark all web-platform tests as slow, as this increases time spent on layout tests.
Only mark individual web-platform tests as slow.

Unreviewed test gardening.

  • platform/win/TestExpectations:
11:05 AM Changeset in webkit [220071] by commit-queue@webkit.org
  • 17 edits
    1 delete in trunk/Source

Remove unnecessary exceptions from storage code
https://bugs.webkit.org/show_bug.cgi?id=174572

Patch by Sam Weinig <sam@webkit.org> on 2017-07-31
Reviewed by Chris Dumez.

Source/WebCore:

Remove checks for canAccessStorage() and the exceptions they would cause.
These were used for Storage in ephemeral sessions, but they are now supported.
Add checks for a null frame to functions that can mutate the storage, as the
frame is needed for that, and it retains our existing behavior for disconnected
frames. By removing these checks / exceptions, we can fully generate Storage.idl.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSStorageCustom.cpp: Removed.

Remove JSStorageCustom.cpp

  • loader/EmptyClients.cpp:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::sessionStorage):
(WebCore::DOMWindow::localStorage):

  • storage/StorageArea.h:

Remove canAccessStorage.

  • storage/Storage.cpp:

(WebCore::Storage::length):
(WebCore::Storage::key):
(WebCore::Storage::getItem):
(WebCore::Storage::setItem):
(WebCore::Storage::removeItem):
(WebCore::Storage::clear):
(WebCore::Storage::contains):
(WebCore::Storage::isSupportedPropertyName):
(WebCore::Storage::supportedPropertyNames):

  • storage/Storage.h:
  • storage/Storage.idl:

Remove canAccessStorage checks and corresponding exceptions. Add supportedPropertyNames
to allow the removal of the [CustomGetOwnPropertyNames].

Source/WebKit:

  • WebProcess/Storage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::canAccessStorage): Deleted.

  • WebProcess/Storage/StorageAreaImpl.h:
  • WebProcess/Storage/StorageNamespaceImpl.cpp:

Remove canAccessStorage. It is no longer called.

Source/WebKitLegacy:

  • Storage/StorageAreaImpl.cpp:

(WebKit::StorageAreaImpl::canAccessStorage): Deleted.

  • Storage/StorageAreaImpl.h:

Remove canAccessStorage. It is no longer called.

10:42 AM Changeset in webkit [220070] by Yusuke Suzuki
  • 2 edits in trunk/JSTests

Unreviewed, update test262 results for optional catch binding

  • test262.yaml:
9:32 AM Changeset in webkit [220069] by Matt Lewis
  • 40 edits
    1 copy
    1 add in trunk/Source

Unreviewed, rolling out r220060.

This broke our internal builds. Contact reviewer of patch for
more information.

Reverted changeset:

"Merge WTFThreadData to Thread::current"
https://bugs.webkit.org/show_bug.cgi?id=174716
http://trac.webkit.org/changeset/220060

9:15 AM Changeset in webkit [220068] by Yusuke Suzuki
  • 9 edits
    2 adds in trunk

[JSC] Support optional catch binding
https://bugs.webkit.org/show_bug.cgi?id=174981

Reviewed by Saam Barati.

JSTests:

  • stress/optional-catch-binding-syntax.js: Added.

(testSyntax):
(testSyntaxError):
(catch.catch):

  • stress/optional-catch-binding.js: Added.

(shouldBe):
(throwException):

Source/JavaScriptCore:

This patch implements optional catch binding proposal[1], which is now stage 3.
This proposal adds a new catch brace with no error value binding.

`

try {

...

} catch {

...

}

`

Sometimes we do not need to get error value actually. For example, the function returns
boolean which means whether the function succeeds.

`
function parse(result) -> bool
{

try {

parseInner(result);

} catch {

return false;

}
return true;

}
`

In the above case, we are not interested in the actual error value. Without this syntax,
we always need to introduce a binding for an error value that is just ignored.

[1]: https://michaelficarra.github.io/optional-catch-binding-proposal/

  • bytecompiler/NodesCodegen.cpp:

(JSC::TryNode::emitBytecode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseTryStatement):

LayoutTests:

Rebaseline existing tests.

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
  • sputnik/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4-expected.txt:
  • sputnik/Conformance/12_Statement/12.14_The_try_Statement/S12.14_A16_T4.html:
8:13 AM Changeset in webkit [220067] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Many web-platform tests are slow on Windows.

Unreviewed test gardening, mark web-platform tests as slow.

  • platform/win/TestExpectations:
7:37 AM Changeset in webkit [220066] by jmarcell@apple.com
  • 12 edits
    2 adds in branches/safari-604-branch

Cherry-pick r220048. rdar://problem/33619591

7:37 AM Changeset in webkit [220065] by jmarcell@apple.com
  • 3 edits
    2 adds in branches/safari-604-branch

Cherry-pick r220042. rdar://problem/33619586

7:37 AM Changeset in webkit [220064] by jmarcell@apple.com
  • 5 edits in branches/safari-604-branch

Cherry-pick r220033. rdar://problem/33619596

7:37 AM Changeset in webkit [220063] by jmarcell@apple.com
  • 4 edits
    1 add in branches/safari-604-branch

Cherry-pick r220012. rdar://problem/33619526

7:37 AM Changeset in webkit [220062] by jmarcell@apple.com
  • 15 edits in branches/safari-604-branch/Source/WebKit

Cherry-pick r220011. rdar://problem/33619596

7:37 AM Changeset in webkit [220061] by jmarcell@apple.com
  • 7 edits
    4 adds in branches/safari-604-branch

Cherry-pick r220009. rdar://problem/33619585

5:59 AM WebKitGTK edited by Adrian Perez de Castro
Update links to WebKitGTK/StableRelease (diff)
5:53 AM WebKitGTKStableReleases edited by Adrian Perez de Castro
Point to WebKitGTK/StableRelease (diff)
5:52 AM WebKitGTK/StableRelease edited by Adrian Perez de Castro
Import contents from WebKitGTKStableReleases (diff)
4:23 AM Changeset in webkit [220060] by Yusuke Suzuki
  • 40 edits
    2 deletes in trunk/Source

Merge WTFThreadData to Thread::current
https://bugs.webkit.org/show_bug.cgi?id=174716

Reviewed by Sam Weinig.

Source/JavaScriptCore:

Use Thread::current() instead.

  • API/JSContext.mm:

(+[JSContext currentContext]):
(+[JSContext currentThis]):
(+[JSContext currentCallee]):
(+[JSContext currentArguments]):
(-[JSContext beginCallbackWithData:calleeValue:thisValue:argumentCount:arguments:]):
(-[JSContext endCallbackWithData:]):

  • heap/Heap.cpp:

(JSC::Heap::requestCollection):

  • runtime/Completion.cpp:

(JSC::checkSyntax):
(JSC::checkModuleSyntax):
(JSC::evaluate):
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
(JSC::linkAndEvaluateModule):
(JSC::importModule):

  • runtime/Identifier.cpp:

(JSC::Identifier::checkCurrentAtomicStringTable):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):
(JSC::JSLock::willReleaseLock):
(JSC::JSLock::dropAllLocks):
(JSC::JSLock::grabAllLocks):

  • runtime/JSLock.h:
  • runtime/VM.cpp:

(JSC::VM::VM):
(JSC::VM::updateStackLimits):
(JSC::VM::committedStackByteCount):

  • runtime/VM.h:

(JSC::VM::isSafeToRecurse const):

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

  • runtime/VMInlines.h:

(JSC::VM::ensureStackCapacityFor):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::isSafeToRecurse const):

Source/WebCore:

Use Thread::current() instead.

  • fileapi/AsyncFileStream.cpp:
  • platform/ThreadGlobalData.cpp:

(WebCore::ThreadGlobalData::ThreadGlobalData):

  • platform/graphics/cocoa/WebCoreDecompressionSession.h:
  • platform/ios/wak/WebCoreThread.mm:

(StartWebThread):

  • workers/WorkerThread.cpp:

(WebCore::WorkerThread::workerThread):

Source/WTF:

We placed thread specific data in WTFThreadData previously. But now, we have a new good place
to put thread specific data: WTF::Thread. Before this patch, WTFThreadData and WTF::Thread
sometimes have the completely same fields (m_stack etc.) due to initialization order limitations.
This patch merges WTFThreadData to WTF::Thread. We apply WTFThreadData's initialization style
to WTF::Thread. So, WTF::Thread's holder now uses fast TLS for darwin environment. Thus,
Thread::current() access is now accelerated. And WTF::Thread::current() can be accessed even
before calling WTF::initializeThreading.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/LockAlgorithm.h:
  • wtf/LockAlgorithmInlines.h:
  • wtf/MainThread.h:
  • wtf/ParkingLot.cpp:
  • wtf/StackStats.cpp:

(WTF::StackStats::PerThreadStats::PerThreadStats):
(WTF::StackStats::CheckPoint::CheckPoint):
(WTF::StackStats::CheckPoint::~CheckPoint):
(WTF::StackStats::probe):
(WTF::StackStats::LayoutCheckPoint::LayoutCheckPoint):

  • wtf/ThreadHolder.cpp:

(WTF::ThreadHolder::initializeCurrent):

  • wtf/ThreadHolder.h:

(WTF::ThreadHolder::ThreadHolder):
(WTF::ThreadHolder::currentMayBeNull):
(WTF::ThreadHolder::current):

  • wtf/ThreadHolderPthreads.cpp:

(WTF::ThreadHolder::initialize):
(WTF::ThreadHolder::destruct):
(WTF::ThreadHolder::current): Deleted.

  • wtf/ThreadHolderWin.cpp:

(WTF::ThreadHolder::currentDying):
(WTF::ThreadHolder::initialize):
(WTF::ThreadHolder::current): Deleted.

  • wtf/Threading.cpp:

(WTF::Thread::initializeInThread):
(WTF::Thread::entryPoint):
(WTF::Thread::didExit):
(WTF::initializeThreading):
(WTF::Thread::currentMayBeNull): Deleted.

  • wtf/Threading.h:

(WTF::Thread::atomicStringTable):
(WTF::Thread::setCurrentAtomicStringTable):
(WTF::Thread::stackStats):
(WTF::Thread::savedStackPointerAtVMEntry):
(WTF::Thread::setSavedStackPointerAtVMEntry):
(WTF::Thread::savedLastStackTop):
(WTF::Thread::setSavedLastStackTop):
(WTF::Thread::current):

  • wtf/ThreadingPrimitives.h:
  • wtf/ThreadingPthreads.cpp:

(WTF::Thread::createCurrentThread):
(WTF::Thread::current): Deleted.

  • wtf/ThreadingWin.cpp:

(WTF::Thread::createCurrentThread):
(WTF::Thread::current): Deleted.

  • wtf/WTFThreadData.cpp: Removed.
  • wtf/WTFThreadData.h: Removed.
  • wtf/text/AtomicString.cpp:
  • wtf/text/AtomicStringImpl.cpp:

(WTF::stringTable):

  • wtf/text/AtomicStringTable.cpp:

(WTF::AtomicStringTable::create):

  • wtf/text/AtomicStringTable.h:
4:16 AM WebKitGTK/StableRelease edited by Adrian Perez de Castro
(diff)
4:13 AM WebKitGTK/StableRelease edited by Adrian Perez de Castro
Add missing links to stable release info pages (2.12.x, 2.14.x, and 2.16.x) (diff)
4:09 AM Changeset in webkit [220059] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Layout test fast/css/image-set-unprefixed.html is failing
https://bugs.webkit.org/show_bug.cgi?id=163975

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-07-31
Reviewed by Žan Doberšek.

Remove obsolete expectation for image-set-unprefixed.html.

It appears to have started passing with the test change in r209543.

  • platform/gtk/TestExpectations:
2:14 AM Changeset in webkit [220058] by calvaris@igalia.com
  • 6 edits in trunk/Source

Created a bool pretty printer at WTF for debugging purposes
https://bugs.webkit.org/show_bug.cgi?id=174893

Reviewed by Darin Adler.

Source/WebCore:

Use WTF::boolPrettyPrinter in debugging messages.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::supportsKeySystem):

  • platform/graphics/gstreamer/mse/MediaPlayerPrivateGStreamerMSE.cpp:

(WebCore::MediaPlayerPrivateGStreamerMSE::seek):

Source/WTF:

  • wtf/PrintStream.cpp:

(WTF::printInternal): The overload taking bool uses boolForPrinting

  • wtf/PrintStream.h:

(WTF::boolForPrinting): Converts a bool in "true" or "false".

2:07 AM Changeset in webkit [220057] by commit-queue@webkit.org
  • 3 edits
    1 add in trunk/LayoutTests

[GTK] Layout Tests fast/dom/{Element,Range}/getClientRects.html are failing
https://bugs.webkit.org/show_bug.cgi?id=141700

Patch by Ms2ger <Ms2ger@igalia.com> on 2017-07-31
Reviewed by Sam Weinig.

Add gtk-specific expectations for getClientRects tests.

Since these expectations depend on text metrics, it is unsurprising that they
are platform-dependent.

  • platform/gtk/TestExpectations:
  • platform/gtk/fast/dom/Element/getClientRects-expected.txt: Added.
  • platform/gtk/fast/dom/Range/getClientRects-expected.txt:
1:20 AM Changeset in webkit [220056] by bshafiei@apple.com
  • 7 edits in trunk/Source

Versioning.

1:18 AM Changeset in webkit [220055] by bshafiei@apple.com
  • 1 copy in tags/Safari-605.1.1

Tag Safari-605.1.1.

Jul 30, 2017:

11:59 PM Changeset in webkit [220054] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Suppress the -Wextra compiler warning when building with GCC 6.3.0,
explicitly initializing the RefCounted<> base class in the
FetchHeaders(const FetchHeaders&) constructor.

Note that while that's the signature of the copy constructor for the FetchHeaders
class, the base RefCounted<> class is not copyable, so the default RefCounted<>
constructor is used, but the FetchHeaders resources are normally copied into the
new object from the one that's passed in.

  • Modules/fetch/FetchHeaders.h:

(WebCore::FetchHeaders::FetchHeaders):

9:57 PM Changeset in webkit [220053] by Yusuke Suzuki
  • 20 edits in trunk

[WTF] Introduce Private Symbols
https://bugs.webkit.org/show_bug.cgi?id=174935

Reviewed by Darin Adler.

Source/JavaScriptCore:

Use SymbolImpl::isPrivate().

  • builtins/BuiltinNames.cpp:
  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::isPrivateName): Deleted.

  • builtins/BuiltinUtils.h:
  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::lookup):

  • runtime/CommonIdentifiers.cpp:

(JSC::CommonIdentifiers::isPrivateName): Deleted.

  • runtime/CommonIdentifiers.h:
  • runtime/ExceptionHelpers.cpp:

(JSC::createUndefinedVariableError):

  • runtime/Identifier.h:

(JSC::Identifier::isPrivateName):

  • runtime/IdentifierInlines.h:

(JSC::identifierToSafePublicJSValue):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorAssign):
(JSC::defineProperties):
(JSC::setIntegrityLevel):
(JSC::testIntegrityLevel):
(JSC::ownPropertyKeys):

  • runtime/PrivateName.h:

(JSC::PrivateName::PrivateName):

  • runtime/PropertyName.h:

(JSC::PropertyName::isPrivateName):

  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performDefineOwnProperty):

Source/WTF:

Upcoming proposal of class fields[1] requires private fields.
The simple way to implement it is adding a property with a private symbol.
Currently, we have private symbols for internal properties. They are usual
Symbols managed by the hash table. So basically private symbols are statically
created in BuiltinNames. However this new proposal encourages users to create
such private symbols more and more.

So, this patch introduces notion of "Private" into WTF SymbolImpl. This patch
adds PrivateSymbolImpl. This is SymbolImpl with "Private" flag. We do not need
to look up the symbol from the hash table to check whether the given symbol
is a private one.

[1]: https://github.com/tc39/proposal-class-fields

  • wtf/text/StringImpl.h:
  • wtf/text/SymbolImpl.cpp:

(WTF::PrivateSymbolImpl::create):
(WTF::PrivateSymbolImpl::createNullSymbol):

  • wtf/text/SymbolImpl.h:

(WTF::SymbolImpl::isPrivate):
(WTF::SymbolImpl::StaticSymbolImpl::StaticSymbolImpl):
(WTF::SymbolImpl::SymbolImpl):
(WTF::PrivateSymbolImpl::PrivateSymbolImpl):

Tools:

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::TEST):

2:44 PM Changeset in webkit [220052] by Darin Adler
  • 23 edits in trunk

Remove code in HTMLObjectElement attribute parsing that forces style resolution and layout
https://bugs.webkit.org/show_bug.cgi?id=130653

Reviewed by Antti Koivisto.

Source/WebCore:

Also fixes a bug where load events are delivered prematurely in some cases
when an object, embed, frame, or iframe element is still loading.

  • dom/Document.cpp:

(WebCore::Document::loadEventDelayTimerFired): Added a call to
FrameLoader::checkLoadComplete. Goes along with the change to
FrameLoader::checkLoadCompleteForThisFrame, which now respects the
isDelayingLoadEvent flag.

  • html/HTMLAppletElement.cpp:

(WebCore::HTMLAppletElement::HTMLAppletElement): Removed the createdByParser argument,
no longer needed by the base class.
(WebCore::HTMLAppletElement::create): Added call to finishCreating, which is now part of
the process of creating any object in a class derived from HTMLPlugInImageElement.
(WebCore::HTMLAppletElement::updateWidget): Rearranged logic so setNeedsWidgetUpdate
is only called when it's becoming false; avoids a false/true/false round trip that can
cause trouble.

  • html/HTMLAppletElement.h: Updated for the above.
  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::HTMLEmbedElement): Removed the createdByParser argument,
no longer needed by the base class.
(WebCore::HTMLEmbedElement::create): Added call to finishCreating, which is now part of
the process of creating any object in a class derived from HTMLPlugInImageElement.
(WebCore::HTMLEmbedElement::parseAttribute): Changed srcAttr to call
updateImageLoaderWithNewURLSoon to do the image loading logic.
(WebCore::HTMLEmbedElement::updateWidget): Rearranged logic so setNeedsWidgetUpdate
is only called when it's becoming false; avoids a false/true/false round trip that can
cause trouble.

  • html/HTMLEmbedElement.h: Updated for the above.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setReadyState): Call setShouldDelayLoadEvent(false) when
transitioning to HAVE_CURRENT_DATA (or beyond), even if we have already fired a loadeddata
event in the past. This matches what the HTML specification calls for, but only if you
read it carefully. Without this change, and with the more complete implementation of
load event delay below, one of the regression tests hangs because are permanently stuck
dealying load events. Also added a FIXME about other code that likely has a similar
problem; the symptom is likely to be subtle and minor, though.

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::HTMLObjectElement): Removed the createdByParser argument,
no longer needed by the base class.
(WebCore::HTMLObjectElement::create): Added call to finishCreating, which is now part of
the process of creating any object in a class derived from HTMLPlugInImageElement.
(WebCore::HTMLObjectElement::parseAttribute): Changed dataAttr to use
updateImageLoaderWithNewURLSoon. Explicitly call scheduleUpdateForAfterStyleResolution
since just calling invalidateStyleAndRenderersForSubtree alone is no longer sufficient.
(WebCore::HTMLObjectElement::updateWidget): Rearranged logic so setNeedsWidgetUpdate
is only called when it's becoming false; avoids a false/true/false round trip that can
cause trouble.
(WebCore::HTMLObjectElement::childrenChanged): Added calls to the new
scheduleUpdateForAfterStyleResolution since invalidating style is no longer sufficient.
(WebCore::HTMLObjectElement::renderFallbackContent): Remove the call to
updateStyleIfNeeded. This is the main change that the title of this bug refers to.

  • html/HTMLObjectElement.h: Updated for the above. Also removed the

clearUseFallbackContent function because it's clearer to set the data member in
line at the single call site in HTMLObjectElement::parseAttribute.

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement): Removed the createdByParser
argument; no need to set an m_needsWidgetUpdate flag differently for parser cases now.
(WebCore::HTMLPlugInImageElement::finshCreating): Added. To be called after creating
an element to do work that can't be done in a constructor.
(WebCore::HTMLPlugInImageElement::didRecalcStyle): Added. Calls the new
scheduleUpdateForAfterStyleResolution function.
(WebCore::HTMLPlugInImageElement::didAttachRenderers): Moved all the logic from this
function into scheduleUpdateForAfterStyleResolution. Also added a call through to the base
class; cleans things up, even though it's just an assertion.
(WebCore::HTMLPlugInImageElement::willDetachRenderers): Removed the call to
setNeedsWidgetUpdate(true) here; no longer needed because the new logic already
does the right thing in this case.
(WebCore::HTMLPlugInImageElement::updateWidgetIfNecessary): Deleted. Now handled by
updateAfterStyleResolution instead.
(WebCore::HTMLPlugInImageElement::finishParsingChildren): Deleted. Handling updates
after parsing all the children now comes naturally out of the new implementation.
(WebCore::HTMLPlugInImageElement::scheduleUpdateForAfterStyleResolution): Added.
Schedules a call to updateAfterStyleResolution when needed, and equally importantly,
increments the load event delay count to make sure that loads that are part of that
update can participate in decision about whether it's time for the load event.
(WebCore::HTMLPlugInImageElement::updateAfterStyleResolution): Added.
Combines updateWidgetIfNecessary and startLoadingImage, and also deals with the new
m_needsImageReload boolean in cases where no actual loading is done.
(WebCore::HTMLPlugInImageElement::didMoveToNewDocument): Update load event delay
count when moving an element that is in the middle of loading. This lets the
updateAfterStyleResolution function do the right thing even when the element is
moved without leaving anything stuck in a strange state.
(WebCore::HTMLPlugInImageElement::prepareForDocumentSuspension): Call the new
scheduleUpdateForAfterStyleResolution since invalidating style is no longer sufficient.
(WebCore::HTMLPlugInImageElement::startLoadingImage): Deleted. Now handled by
updateAfterStyleResolution instead.
(WebCore::HTMLPlugInImageElement::updateImageLoaderWithNewURLSoon): Added. Does all
the right things for when an image URL is changed; for use by the concrete derived classes.

  • html/HTMLPlugInImageElement.h: Updated for above changes. Also made m_imageLoader

private rather than protected, and added the two new boolean data members.

  • html/HTMLTagNames.in: Removed unneeded constructorNeedsCreatedByParser flags for

applet, embed, and object.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::isLoadingInAPISense): Return true if the document is
delaying a load event.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::checkLoadCompleteForThisFrame): Don't do any work if
isDelayingLoadEvent is true; otherwise this function can have a side effect of
triggering the load event.
(WebCore::FrameLoader::detachFromParent): Schedule a checkLoadComplete here, too, not
just a checkCompleted. This is relevant if the frame we are detaching was delaying
a load event because it no longer will be and so the load might be complete.

Tools:

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::didFinishLoadForFrame): Omit now-unneeded "shouldDump" argument
when calling frameDidChangeLocation.
(WTR::InjectedBundlePage::frameDidChangeLocation): Removed "shouldDump" argument. This was
causing WebKitTestRunner to not dump anything in cases where DumpRenderTree will dump, and
thus causing mysterious failures of a couple of tests. There are two remaining issues:
1) WebKitTestRunner won't run its dump code if there is no "page", and there is no such
consideration in DumpRenderTree and 2) Both DumpRenderTree and WebKitTestRunner share the
same logic flaw that causes "top loading frame" to get set to one of the subframes in
tests where the following sequence occurs: test calls waitUntilDone, main frame finishes
loading, subframe starts loading. It would be good to clean that up some day, but for now
this patch makes the two work identically rather than changing both.

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Updated for change above.

LayoutTests:

  • fast/text/international/embed-bidi-style-in-isolate-crash.html: Removed onerror attribute

in the audio element in this test. The error event does fire during the test, which causes
the test to fail. Before, the test was prematurely exiting before the load failed, preventing
the test from failing, but also meaning we didn't finish running the test.

  • imported/blink/fast/dom/Window/open-window-features-fuzz.html: Use waitUntilDone and

notifyDone to prevent the test from exiting prematurely. Use a URL that won't trigger loading
outside the web browser; the URL is not what mattered to this test. Before, the test was
prematurely exiting before the test ran. Note also, that I don't think this is testing
much effectively; not sure we are getting any benefit from this test since before it was
not really running to completion anyway.

  • media/event-queue-crash-expected.txt: Updated expectations to expect syntax error. Before

there was a race and often the test exited before the syntax error could be logged.

  • platform/mac/TestExpectations: Removed flakiness expectation from the

media/event-queue-crash.html test. What made it flaky was a race with the load event,
and that race should be fixed by the change to FrameLoader::checkLoadCompleteForThisFrame.
The same race existed on all platforms, not just Mac, so this flakiness expectation should
be in the main TextExpectations file if anywhere. But I believe it is not needed at all.
For media/modern-media-controls/media-documents/background-color-and-centering.html,
added image failure expectation because under modern WebKit on Mac the image now captures
the upper left hand corner of the controls overlay. Still seems to pass on iOS and the bug
this was created for was iOS-specific, so should be OK for now.

  • webarchive/loading/video-in-webarchive-expected.txt: Updated. The old result shows evidence

of a premature load event, fixed by the change to FrameLoader::checkLoadCompleteForThisFrame.

2:35 PM Changeset in webkit [220051] by Wenson Hsieh
  • 2 edits in trunk/Tools

[WK2] Replace RetainPtr<> with auto when adopting allocated ObjC objects in DataInteractionTests
https://bugs.webkit.org/show_bug.cgi?id=174963

Reviewed by Darin Adler.

Replaces several uses of RetainPtr<>s with auto. Some test cases in this file use auto, while other test cases declare using
RetainPtr<>. This patch changes them to all use auto.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):

1:27 PM Changeset in webkit [220050] by weinig@apple.com
  • 33 edits
    3 deletes in trunk

[WebIDL] Remove JS builtin bindings for FetchRequest, DOMWindowFetch and WorkerGlobalScopeFetch
https://bugs.webkit.org/show_bug.cgi?id=174974

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/basic/mode-same-origin.any-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-about.any-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
  • web-platform-tests/fetch/api/cors/cors-cookies.any-expected.txt:
  • web-platform-tests/fetch/api/policies/referrer-origin-when-cross-origin-expected.txt:
  • web-platform-tests/fetch/api/request/request-bad-port-expected.txt:

Update results to have the correct line number for exceptions reported in the console.

Source/WebCore:

  • CMakeLists.txt:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • Modules/fetch/DOMWindowFetch.js: Removed.
  • Modules/fetch/FetchRequest.js: Removed.
  • Modules/fetch/WorkerGlobalScopeFetch.js: Removed.

Remove builtin files.

  • Modules/fetch/DOMWindowFetch.cpp:

(WebCore::DOMWindowFetch::fetch):

  • Modules/fetch/DOMWindowFetch.h:
  • Modules/fetch/DOMWindowFetch.idl:
  • Modules/fetch/WorkerGlobalScopeFetch.cpp:

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h:
  • Modules/fetch/WorkerGlobalScopeFetch.idl:

Remove builtin and instead create FetchRequest in the implementation.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::extract):

  • Modules/fetch/FetchBody.h:
  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::extractBody):

  • Modules/fetch/FetchBodyOwner.h:
  • Modules/fetch/FetchResponse.cpp:
  • Modules/fetch/FetchResponse.h:

Rename FetchBody::BindingDataType to FetchBody::Init to match its IDL naming.

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::appendToHeaderMap):
(WebCore::fillHeaderMap):
(WebCore::FetchHeaders::create):
(WebCore::FetchHeaders::fill):

  • Modules/fetch/FetchHeaders.h:

Add helpers to implement the fill algorithm for various input types.
Leave the existing fill for now, as it is still used by the FetchResponse
builtin, but will eventually be removed.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::initializeOptions):
(WebCore::FetchRequest::initializeWith):
(WebCore::FetchRequest::setBody):
(WebCore::FetchRequest::create):
(WebCore::FetchRequest::setBodyFromInputRequest): Deleted.

  • Modules/fetch/FetchRequest.h:

Migrate builtin code to the implementation. This is 1-to-1 re-implementation,
so I did not attempt to fix any conformance issues. That will come in follow up.

  • Modules/fetch/FetchRequest.idl:

Replace builtins with an IDL constructor.

  • Modules/fetch/FetchRequestInit.h:
  • Modules/fetch/FetchRequestInit.idl:

Add missing headers and body to FetchRequestInit.

LayoutTests:

  • http/tests/inspector/network/fetch-network-data-expected.txt:

Update results to have the correct line number for exceptions reported in the console.

10:36 AM Changeset in webkit [220049] by beidson@apple.com
  • 8 edits
    2 copies
    2 adds in trunk

Add URLSchemeHandler API tests that verify the lack of URLSchemeTask object leaks.
https://bugs.webkit.org/show_bug.cgi?id=174958

Reviewed by Darin Adler.

Source/WebKit:

  • UIProcess/API/APIURLSchemeTask.h:
  • UIProcess/API/C/WKTestingSupport.cpp:

(WKGetAPIURLSchemeTaskInstanceCount):
(WKGetWebURLSchemeTaskInstanceCount):

  • UIProcess/API/C/WKTestingSupport.h:
  • UIProcess/WebURLSchemeTask.h:
  • WebKit.xcodeproj/project.pbxproj:

Source/WTF:

This patch adds a new template class "InstanceCounted<T>".

For each specialization, "InstanceCounted" will keep track of the total number of
instances in existence.

This makes explicate leak checking in API tests possible.

Since this adds some runtime and storage overhead the code that actually does anything
is only compiled in debug builds.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/InstanceCounted.h: Added.

(WTF::InstanceCounted::InstanceCounted):
(WTF::InstanceCounted::instanceCount):
(WTF::InstanceCounted::~InstanceCounted):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKURLSchemeHandler-leaks.mm: Added.

(-[LeakSchemeHandler webView:startURLSchemeTask:]):
(-[LeakSchemeHandler webView:stopURLSchemeTask:]):
(runUntilTasksInFlight):
(TEST):

12:38 AM Changeset in webkit [220048] by commit-queue@webkit.org
  • 12 edits
    2 adds in trunk

RenderImageResourceStyleImage::image() should return the nullImage() if the image is not available
https://bugs.webkit.org/show_bug.cgi?id=174874
<rdar://problem/33530130>

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

Source/WebCore:

If an <img> element has image content data for a none cached image, e.g.
-webkit-named-image, RenderImageResourceStyleImage will be created and
attached to the RenderImage. RenderImageResourceStyleImage::m_cachedImage
will be set to null because the m_styleImage->isCachedImage() is false in
this case. When ImageLoader finishes loading the url of the src attribute,
RenderImageResource::setCachedImage() will be called to set m_cachedImage.

A crash will happen when the RenderImage is destroyed. Destroying the
RenderImage calls RenderImageResourceStyleImage::shutdown() which checks
m_cachedImage and finds it not null, so it calls RenderImageResourceStyleImage::image()
which ends up calling CSSNamedImageValue::image() which returns a null pointer
because the size is empty. RenderImageResourceStyleImage::shutdown() calls
image()->stopAnimation() without checking the return value of image().

Like the base class virtual method RenderImageResource::image(),
RenderImageResourceStyleImage::image() should return the nullImage() if
the image is not available.

Test: fast/images/image-element-image-content-data.html

  • css/CSSCrossfadeValue.cpp:
  • css/CSSFilterImageValue.cpp:
  • page/EventHandler.cpp:
  • page/PageSerializer.cpp:
  • rendering/RenderElement.cpp:
  • rendering/RenderImageResource.cpp:
  • rendering/RenderImageResourceStyleImage.cpp:

(WebCore::RenderImageResourceStyleImage::initialize):

(WebCore::RenderImageResourceStyleImage::shutdown): Revert back the changes
of r208511 in this function. Add a call to image()->stopAnimation() without
checking the return of image() since it will return the nullImage() if
the image not available. There is no need to check m_cachedImage before
calling image() because image() does not check or access m_cachedImage.

(WebCore::RenderImageResourceStyleImage::image): The base class method
RenderImageResource::image() returns the nullImage() if the image not
available. This is because CachedImage::imageForRenderer() returns
the nullImage() if the image is not available; see CachedImage.h. We should
do the same for the derived class for consistency.

  • rendering/style/ContentData.cpp:
  • rendering/style/StyleCachedImage.cpp:
  • style/StylePendingResources.cpp:

LayoutTests:

  • fast/images/image-element-image-content-data-expected.txt: Added.
  • fast/images/image-element-image-content-data.html: Added.
Note: See TracTimeline for information about the timeline view.