Timeline
Jul 26, 2019:
- 9:55 PM Changeset in webkit [247888] by
-
- 8 edits1 add in trunk
[JSC] Potential GC fix for JSPropertyNameEnumerator
https://bugs.webkit.org/show_bug.cgi?id=200151
Reviewed by Mark Lam.
JSTests:
- stress/for-in-stress.js: Added.
(keys):
Source/JavaScriptCore:
We have been seeing some JSPropertyNameEnumerator::visitChildren crashes for a long time. The crash frequency itself is not high, but it has existed for a long time.
The crash happens when visiting m_propertyNames. It is also possible that this crash is caused by random corruption somewhere, but JSPropertyNameEnumerator
has some tricky (and potentially dangerous) implementations anyway.
- JSPropertyNameEnumerator have Vector<WriteBarrier<JSString>> and it is extended in finishCreation with a lock. We should use Auxiliary memory for this use case. And we should set this memory in the constructor so that we do not extend it in finishCreation, and we do not need a lock.
- JSPropertyNameEnumerator gets StructureID before allocating JSPropertyNameEnumerator. This is potentially dangerous because the conservative scan cannot find the Structure* since we could only have StructureID. Since allocation code happens after StructureID is retrieved, it is possible that the allocation causes GC and Structure* is collected.
In this patch, we align JSPropertyNameEnumerator implementation to the modern one to avoid using Vector<WriteBarrier<JSString>>. And we can make JSPropertyNameEnumerator
a non-destructible cell. Since JSCell's destructor is one of the cause of various issues, we should avoid it if we can.
No behavior change. This patch adds a test stressing JSPropertyNameEnumerator.
- dfg/DFGOperations.cpp:
- runtime/CommonSlowPaths.cpp:
(JSC::SLOW_PATH_DECL):
- runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::create):
(JSC::JSPropertyNameEnumerator::JSPropertyNameEnumerator):
(JSC::JSPropertyNameEnumerator::finishCreation):
(JSC::JSPropertyNameEnumerator::visitChildren):
(JSC::JSPropertyNameEnumerator::destroy): Deleted.
- runtime/JSPropertyNameEnumerator.h:
- runtime/VM.cpp:
(JSC::VM::emptyPropertyNameEnumeratorSlow):
- runtime/VM.h:
(JSC::VM::emptyPropertyNameEnumerator):
- 7:18 PM Changeset in webkit [247887] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed. Remove invalid assertion after r247878.
We were essentially asserting all UnnamedType* were
unique. But my patch made this no longer the case by
design to make things faster.
- Modules/webgpu/WHLSL/Metal/WHLSLTypeNamer.cpp:
(WebCore::WHLSL::Metal::TypeNamer::insert):
- 5:43 PM Changeset in webkit [247886] by
-
- 16 edits in trunk/Source
Add crash diagnostics for debugging unexpected zapped cells.
https://bugs.webkit.org/show_bug.cgi?id=200149
<rdar://problem/53570112>
Reviewed by Yusuke Suzuki, Saam Barati, and Michael Saboff.
Source/JavaScriptCore:
Add a check for zapped cells in SlotVisitor::appendToMarkStack() and
SlotVisitor::visitChildren(). If a zapped cell is detected, we will crash with
some diagnostic info.
To facilitate this, we've made the following changes:
- Changed FreeCell to preserve the 1st 8 bytes. This is fine to do because all cells are at least 16 bytes long.
- Changed HeapCell::zap() to only zap the structureID. Leave the rest of the cell header info intact (including the cell JSType).
- Changed HeapCell::zap() to record the reason for zapping the cell. We stash the reason immediately after the first 8 bytes. This is the same location as FreeCell::scrambledNext. However, since a cell is not expected to be zapped and on the free list at the same time, it is also fine to do this.
- Added a few utility functions to MarkedBlock for checking if a cell points into the block.
- Added VMInspector and JSDollarVM utilities to dump in-use subspace hashes.
- Added some comments to document the hashes of known subspaces.
- heap/FreeList.h:
(JSC::FreeCell::offsetOfScrambledNext):
- heap/HeapCell.h:
(JSC::HeapCell::zap):
(JSC::HeapCell::isZapped const):
- heap/MarkedBlock.cpp:
(JSC::MarkedBlock::Handle::stopAllocating):
- heap/MarkedBlock.h:
(JSC::MarkedBlock::Handle::start const):
(JSC::MarkedBlock::Handle::end const):
(JSC::MarkedBlock::Handle::contains const):
- heap/MarkedBlockInlines.h:
(JSC::MarkedBlock::Handle::specializedSweep):
- heap/MarkedSpace.h:
(JSC::MarkedSpace::forEachSubspace):
- heap/SlotVisitor.cpp:
(JSC::SlotVisitor::appendToMarkStack):
(JSC::SlotVisitor::visitChildren):
(JSC::SlotVisitor::reportZappedCellAndCrash):
- heap/SlotVisitor.h:
- jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitAllocateWithNonNullAllocator):
- runtime/VM.cpp:
(JSC::VM::VM):
- tools/JSDollarVM.cpp:
(JSC::functionDumpSubspaceHashes):
(JSC::JSDollarVM::finishCreation):
- tools/VMInspector.cpp:
(JSC::VMInspector::dumpSubspaceHashes):
- tools/VMInspector.h:
Source/WebCore:
No new tests because this is a feature for debugging crashes. It has been tested
manually by modifying the code to force a crash at the point of interest.
Added some comments to document the hashes of known subspaces.
- bindings/js/WebCoreJSClientData.cpp:
(WebCore::JSVMClientData::JSVMClientData):
- 5:03 PM Changeset in webkit [247885] by
-
- 6 edits in trunk
NavigationSOAuthorizationSession should check the active URL of the responding page after waking up from waiting
https://bugs.webkit.org/show_bug.cgi?id=200150
<rdar://problem/53280170>
Reviewed by Brent Fulgham.
Source/WebKit:
NavigationSOAuthorizationSession should check the active URL of the responding page after waking up from waiting
as the page might have already changed the location.
- UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.h:
- UIProcess/Cocoa/SOAuthorization/NavigationSOAuthorizationSession.mm:
(WebKit::NavigationSOAuthorizationSession::shouldStartInternal):
(WebKit::NavigationSOAuthorizationSession::webViewDidMoveToWindow):
(WebKit::NavigationSOAuthorizationSession::pageActiveURLDidChangeDuringWaiting const):
- UIProcess/Cocoa/SOAuthorization/SubFrameSOAuthorizationSession.mm:
(WebKit::SubFrameSOAuthorizationSession::abortInternal):
Tools:
- TestWebKitAPI/Tests/WebKitCocoa/TestSOAuthorization.mm:
(TestWebKitAPI::TEST):
- 4:58 PM Changeset in webkit [247884] by
-
- 2 edits in trunk/Tools
Follow-up fix: results.webkit.org: Suite results shouldn't be the landing page
https://bugs.webkit.org/show_bug.cgi?id=200090
Unreviewed follow-up fix.
- resultsdbpy/resultsdbpy/view/view_routes.py:
(ViewRoutes.init): Keep /search endpoint for existing links
- 4:48 PM Changeset in webkit [247883] by
-
- 2 edits in trunk/Source/WebKitLegacy/win
[Win] Remove unused methods from WebPluginInfoProvider
https://bugs.webkit.org/show_bug.cgi?id=200178
Reviewed by Brent Fulgham.
These methods are guarded with PLATFORM(MAC) and have no definitions.
Also remove unused friend declaration.
- WebCoreSupport/WebPluginInfoProvider.h:
- 4:39 PM Changeset in webkit [247882] by
-
- 1 copy in tags/Safari-608.1.39
Tag Safari-608.1.39.
- 4:38 PM Changeset in webkit [247881] by
-
- 3 edits6 adds in trunk
Moving right by word boundary right before an object element followed by a br element hangs
https://bugs.webkit.org/show_bug.cgi?id=200144
Reviewed by Simon Fraser.
Source/WebCore:
The bug was caused by an infinite loop inside wordBreakIteratorForMinOffsetBoundary when it's trying to
find the previous word boundary at the beginning of a word after the object element and the br element.
In this case, previousBox is at the br element after the object element in the preceding line, and
logicallyPreviousBox ends up returning the same inline box (that of the br element), causing a hang.
Here's how. In logicallyPreviousBox, previousRootInlineBoxCandidatePosition returns a legacy position
immediately after the object element. The root inline box for this position (previousRoot) is the one
that contains the object element and the br element. However, when previousTextOrLineBreakBox is called
on this root inline box, "box" argument of the function is set to nullptr, and as a result, the function
finds and returns the same inline box of the br element that was passed to logicallyPreviousBox.
Fixed the bug by passing the starting inline box to previousRootInlineBoxCandidatePosition when its
root inline box is the previous root inline box (previousRoot). Also applied the same fix to
logicallyNextBox even though we don't have a reproduction for that case for now (RTL test case is
unaffected by nextRootInlineBoxCandidatePosition).
Tests: editing/selection/move-by-word-visually-across-object-element-1.html
editing/selection/move-by-word-visually-across-object-element-2.html
editing/selection/move-by-word-visually-across-object-element-3.html
- editing/VisibleUnits.cpp:
(WebCore::logicallyPreviousBox): Fixed the bug.
(WebCore::logicallyNextBox): Ditto.
LayoutTests:
Added regression tests. The second test case involes non-word characters "%)" which are skipped like whitespaces
for the purposes of moving right or left by word granularity. The third test case involves RTL text.
- editing/selection/move-by-word-visually-across-object-element-1-expected.txt: Added.
- editing/selection/move-by-word-visually-across-object-element-1.html: Added.
- editing/selection/move-by-word-visually-across-object-element-2-expected.txt: Added.
- editing/selection/move-by-word-visually-across-object-element-2.html: Added.
- editing/selection/move-by-word-visually-across-object-element-3-expected.txt: Added.
- editing/selection/move-by-word-visually-across-object-element-3.html: Added.
- 3:53 PM Changeset in webkit [247880] by
-
- 3 edits2 adds in trunk
Do not fire readystatechange events at documents about to get replaced by javascript URLs.
<rdar://problem/51665406> and https://bugs.webkit.org/show_bug.cgi?id=198786
Reviewed by Ryosuke Niwa.
Source/WebCore:
Test: http/tests/dom/ready-state-on-javascript-replace.html
We were firing too many readystatechange events, more than other browsers.
Our behavior on this test with this patch now matches Chrome.
(There was even an ancient FIXME alluding to this referencing a spec issue, and that issues has long been resolvedv)
- loader/FrameLoader.cpp:
(WebCore::FrameLoader::stopLoading):
LayoutTests:
- http/tests/dom/ready-state-on-javascript-replace-expected.txt: Added.
- http/tests/dom/ready-state-on-javascript-replace.html: Added.
- 2:27 PM Changeset in webkit [247879] by
-
- 2 edits in trunk/Source/WebCore
[iPadOS] wix.com cannot select a template to edit or view
https://bugs.webkit.org/show_bug.cgi?id=200174
<rdar://problem/53281296>
Reviewed by Simon Fraser.
Opt out of simulated mouse event sending for template selection on wix.com.
When wix.com receives a simulated mouse event during the touch events, it calls preventDefault() which prevents us from running the hover heuristics -> no click.
- page/Quirks.cpp:
(WebCore::Quirks::shouldDispatchSimulatedMouseEvents const):
- 2:26 PM Changeset in webkit [247878] by
-
- 47 edits in trunk/Source/WebCore
[WHLSL] UnnamedType should be reference counted
https://bugs.webkit.org/show_bug.cgi?id=200098
Reviewed by Dean Jackson.
This patch makes UnnamedType reference counted. The motivation for doing this
is I measured how many times we were cloning UnnamedTypes, and I found we were
doing it ~433,000 times in some of Justin's demos. This is hugely wasteful,
given that an UnnamedType is immutable in the sense that once the type is
resolved, it will never change. So instead of repeatedly cloning the same
type, and having Expression point to a UniqueRef of UnnamedType, we should
instead make UnnamedType reference counted, and have expressions point to a
potentially shared UnnamedType.
Doing this is hugely beneficial to WHLSL compile times. On Justin's demos,
these are the results I'm getting:
hello-triangle: neutral
hello-cube: 55% faster
compute-blur: 35% faster
textured-cube: 49% faster
- Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
(WebCore::WHLSL::AST::ArrayReferenceType::ArrayReferenceType):
(WebCore::WHLSL::AST::ArrayReferenceType::create):
- Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
(WebCore::WHLSL::AST::ArrayType::ArrayType):
(WebCore::WHLSL::AST::ArrayType::create):
- Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
(WebCore::WHLSL::AST::EnumerationDefinition::EnumerationDefinition):
- Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
(WebCore::WHLSL::AST::Expression::setType):
(WebCore::WHLSL::AST::Expression::copyTypeTo const):
- Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
(WebCore::WHLSL::AST::FloatLiteral::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.cpp:
(WebCore::WHLSL::AST::FloatLiteralType::FloatLiteralType):
(WebCore::WHLSL::AST::FloatLiteralType::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLFloatLiteralType.h:
- Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
(WebCore::WHLSL::AST::FunctionDeclaration::FunctionDeclaration):
- Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
(WebCore::WHLSL::AST::IntegerLiteral::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::IntegerLiteralType::IntegerLiteralType):
(WebCore::WHLSL::AST::IntegerLiteralType::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteralType.h:
- Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
(WebCore::WHLSL::AST::NullLiteral::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
(WebCore::WHLSL::AST::PointerType::PointerType):
(WebCore::WHLSL::AST::PointerType::create):
- Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
(WebCore::WHLSL::AST::ReadModifyWriteExpression::ReadModifyWriteExpression):
- Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
(WebCore::WHLSL::AST::ReferenceType::ReferenceType):
- Modules/webgpu/WHLSL/AST/WHLSLResolvableType.h:
(WebCore::WHLSL::AST::ResolvableType::resolve):
- Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
(WebCore::WHLSL::AST::StructureElement::StructureElement):
- Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.cpp:
(WebCore::WHLSL::AST::clone):
- Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h:
- Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
(WebCore::WHLSL::AST::TypeDefinition::TypeDefinition):
- Modules/webgpu/WHLSL/AST/WHLSLTypeReference.cpp:
(WebCore::WHLSL::AST::TypeReference::wrap):
- Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
(WebCore::WHLSL::AST::TypeReference::create):
(WebCore::WHLSL::AST::TypeReference::cloneTypeReference const): Deleted.
- Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
- Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
(WebCore::WHLSL::AST::UnsignedIntegerLiteral::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.cpp:
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::UnsignedIntegerLiteralType):
(WebCore::WHLSL::AST::UnsignedIntegerLiteralType::clone const):
- Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteralType.h:
- Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
- Modules/webgpu/WHLSL/Metal/WHLSLNativeFunctionWriter.cpp:
(WebCore::WHLSL::Metal::vectorInnerType):
- Modules/webgpu/WHLSL/Metal/WHLSLNativeTypeWriter.cpp:
(WebCore::WHLSL::Metal::writeNativeType):
- Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
- Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::DuplicateFunctionKey::hash const):
- Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::checkOperatorOverload):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::Checker::assignConcreteType):
(WebCore::WHLSL::Checker::assignType):
(WebCore::WHLSL::Checker::forwardType):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::getUnnamedType):
(WebCore::WHLSL::argumentTypeForAndOverload):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::isBoolType):
- Modules/webgpu/WHLSL/WHLSLInferTypes.cpp:
(WebCore::WHLSL::matchAndCommit):
(WebCore::WHLSL::commit):
(WebCore::WHLSL::inferTypesForTypeArguments):
(WebCore::WHLSL::inferTypesForCallImpl):
- Modules/webgpu/WHLSL/WHLSLInferTypes.h:
- Modules/webgpu/WHLSL/WHLSLIntrinsics.cpp:
(WebCore::WHLSL::Intrinsics::addVector):
(WebCore::WHLSL::Intrinsics::addMatrix):
(WebCore::WHLSL::Intrinsics::addTexture):
- Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseEnumerationDefinition):
(WebCore::WHLSL::Parser::parseVariableDeclaration):
(WebCore::WHLSL::Parser::parseVariableDeclarations):
- Modules/webgpu/WHLSL/WHLSLParser.h:
- Modules/webgpu/WHLSL/WHLSLPreserveVariableLifetimes.cpp:
(WebCore::WHLSL::PreserveLifetimes::PreserveLifetimes):
(WebCore::WHLSL::PreserveLifetimes::makeStructVariableReference):
(WebCore::WHLSL::PreserveLifetimes::assignVariableIntoStruct):
(WebCore::WHLSL::preserveVariableLifetimes):
- Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::wrapAnderCallArgument):
(WebCore::WHLSL::anderCallArgument):
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
(WebCore::WHLSL::PropertyResolver::simplifyRightValue):
(WebCore::WHLSL::LeftValueSimplifier::finishVisiting):
- Modules/webgpu/WHLSL/WHLSLResolveOverloadImpl.cpp:
(WebCore::WHLSL::conversionCost):
- Modules/webgpu/WHLSL/WHLSLResolvingType.h:
(WebCore::WHLSL::ResolvingType::ResolvingType):
(WebCore::WHLSL::ResolvingType::getUnnamedType):
(WebCore::WHLSL::ResolvingType::visit):
- Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
- Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
- Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
- Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
- Modules/webgpu/WHLSL/WHLSLVisitor.cpp:
(WebCore::WHLSL::Visitor::visit):
- 2:23 PM Changeset in webkit [247877] by
-
- 4 edits in trunk/Tools
results.webkit.org: Add switch to filter results by expectation
https://bugs.webkit.org/show_bug.cgi?id=200134
Rubber-stamped by Aakash Jain.
Users of the results database should be able to easily differentiate tests which are expected
to fail verse tests which are unexpectedly failing.
- resultsdbpy/resultsdbpy/view/static/js/timeline.js:
(Timeline.render): Respect the willFilterExpected variable.
(LegendLabel): Generates html for label in the legend.
(Legend): Add switch for filter results.
- resultsdbpy/resultsdbpy/view/templates/search.html: GIve Legend callback to re-render timelines.
- resultsdbpy/resultsdbpy/view/templates/suite_results.html:
- 2:08 PM Changeset in webkit [247876] by
-
- 2 edits in trunk/Source/WebKit
Crashes under XPCServiceMain() / mach_msg_trap() due to sandboxing
https://bugs.webkit.org/show_bug.cgi?id=200173
<rdar://problem/53594973>
Reviewed by Per Arne Vollan.
Allow a few more syscalls as they appear to be needed by mach_msg_trap().
- WebProcess/com.apple.WebProcess.sb.in:
- 1:52 PM Changeset in webkit [247875] by
-
- 2 edits in trunk/Source/WebKit
[iOS] REGRESSION: Keyboard dismisses and reappears when typing 2FA pin on appleid.apple.com
https://bugs.webkit.org/show_bug.cgi?id=200171
<rdar://problem/50245251>
Reviewed by Wenson Hsieh.
Take out an InputViewUpdateDeferrer token (if we don't already have one) to temporarily defer
tearing down the input view (keyboard) before bluring the previously focused element as part
of switching between focused elements. This avoid a noticeable flash caused by UIKit animating
out and animating in the keyboard should the newly focused element require the keyboard. We
only take out the InputViewUpdateDeferrer until we fall off the end of _elementDidFocus: (or
bail early). Once we fall of the end UIKit will update input view UI.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _elementDidFocus:userIsInteracting:blurPreviousNode:activityStateChanges:userObject:]):
- 1:46 PM Changeset in webkit [247874] by
-
- 3 edits in trunk/Source/WebCore
[curl] Heap corruption in ~CurlResponse
https://bugs.webkit.org/show_bug.cgi?id=198320
Patch by Takashi Komori <Takashi.Komori@sony.com> on 2019-07-26
Reviewed by Fujii Hironori.
Stop sharing object which was reffered by two threads to fix crash bug.
No tests needed, no functionality changes.
- platform/network/curl/CurlRequest.cpp:
(WebCore::CurlRequest::start):
(WebCore::CurlRequest::invokeDidReceiveResponseForFile):
- platform/network/curl/CurlRequest.h:
- 1:34 PM Changeset in webkit [247873] by
-
- 4 edits in trunk/Source/WebCore
slides.google.com: opening speaker notes while presenting causes a fatal error in the web app on iPad
https://bugs.webkit.org/show_bug.cgi?id=199933
<rdar://problem/53034345>
Reviewed by Darin Adler.
docs.google.com might sometimes try to window.open an about URL that not about:blank or about:srcdoc.
In that case, WebKit is opening a window but is considering that the window is cross origin with its opener.
This breaks docs.google.com as they want to access the website.
Add a site-specific hack so as to treat all about URLs being opened through window.open as about:blank.
Manually tested on docs.google.com website.
- page/DOMWindow.cpp:
(WebCore::DOMWindow::createWindow):
(WebCore::DOMWindow::open):
- page/Quirks.cpp:
(WebCore::Quirks::needsYouTubeOverflowScrollQuirk const):
(WebCore::Quirks::shouldOpenAsAboutBlank const):
- page/Quirks.h:
- 12:34 PM Changeset in webkit [247872] by
-
- 2 edits in trunk/Source/WebKit
Avoid WebContent process SIGKILL when using kevent()
https://bugs.webkit.org/show_bug.cgi?id=200170
<rdar://problem/51559921>
Reviewed by Per Arne Vollan.
Avoid WebContent process SIGKILL when using kevent() by updated its sandboxing profile.
- WebProcess/com.apple.WebProcess.sb.in:
- 12:22 PM Changeset in webkit [247871] by
-
- 4 edits in trunk/Tools
[ews-build] Use update-webkit script in Style EWS
https://bugs.webkit.org/show_bug.cgi?id=193196
Reviewed by Jonathan Bedard.
- BuildSlaveSupport/ews-build/factories.py:
(StyleFactory): Updated to use CheckOutSource step as well.
- BuildSlaveSupport/ews-build/steps.py: Added build-step to UpdateWorkingDirectory.
- BuildSlaveSupport/ews-build/steps_unittest.py: Added unit-tests.
- 12:19 PM Changeset in webkit [247870] by
-
- 3 edits in trunk/Tools
results.webkit.org: Support buildbot 0.8 CI links
https://bugs.webkit.org/show_bug.cgi?id=200146
Reviewed by Aakash Jain.
- resultsdbpy/resultsdbpy/model/ci_context.py:
(BuildbotEightURLFactory): Buildbot 0.8 link factory.
(BuildbotEightURLFactory.init):
(BuildbotEightURLFactory.url):
- resultsdbpy/resultsdbpy/model/ci_context_unittest.py:
(URLFactoryTest.test_old_builder_url):
(URLFactoryTest):
(URLFactoryTest.test_old_worker_url):
- 12:17 PM Changeset in webkit [247869] by
-
- 4 edits in trunk/Tools
results.webkit.org: Suite results shouldn't be the landing page
https://bugs.webkit.org/show_bug.cgi?id=200090
Reviewed by Aakash Jain.
- resultsdbpy/resultsdbpy/view/templates/suite_results.html: Remove search bar.
- resultsdbpy/resultsdbpy/view/view_routes.py:
(ViewRoutes.init): Make search the landing page instead of suite results.
- resultsdbpy/resultsdbpy/view/view_routes_unittest.py:
(WebSiteUnittest.test_main):
- 11:27 AM Changeset in webkit [247868] by
-
- 17 edits2 moves in trunk
[iOS] WebPage::TouchEventSync() & WebPage::GetPositionInformation() sync IPC causes UIProcess hangs
https://bugs.webkit.org/show_bug.cgi?id=200138
<rdar://problem/52698157>
Reviewed by Geoffrey Garen.
Source/WebKit:
Revert most of r247822 and use an alternative approach to address hangs. In this patch, the proposal
is to add a SendSyncOption::ForceDispatchWhenDestinationIsWaitingForUnboundedSyncReply flag on the
WebPage::TouchEventSync() & WebPage::GetPositionInformation() sendSync() calls in the UIProcess.
Those will cause this IPCs to get dispatched right away in the WebContent process, even if the
WebContent process is itself currently stuck on unbounded (i.e. potentially slow) synchronous IPC
(JS alerts / prompts & sync XHR). Because re-entering WebCore on sync IPC is generally unsafe, this
patch also updates the WebPage::getPositionInformation() & WebPage::touchEventSync() to return early
(i.e. cancelled) if they get called while the WebContent process is stuck on a slow sendSync.
This approach should address the UIProcess hangs caused by the WebPage::TouchEventSync() and
WebPage::GetPositionInformation() sync IPC messages when the WebContent process is busy on a slow XHR
or a JS prompt / alert. It should be safe because we do not re-enter WebCore. The only drawback is that
those IPCs will be cancelled (early return with default value) when the WebContent process is busy.
However, I am being told that this is likely acceptable in practice.
- Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::sendMessage):
(IPC::Connection::sendSyncMessage):
(IPC::Connection::dispatchMessage):
- Platform/IPC/Connection.h:
(IPC::UnboundedSynchronousIPCScope::UnboundedSynchronousIPCScope):
(IPC::UnboundedSynchronousIPCScope::~UnboundedSynchronousIPCScope):
(IPC::UnboundedSynchronousIPCScope::hasOngoingUnboundedSyncIPC):
- Platform/IPC/Decoder.cpp:
(IPC::Decoder::shouldDispatchMessageWhenWaitingForSyncReply const):
- Platform/IPC/Decoder.h:
- Platform/IPC/Encoder.cpp:
(IPC::Encoder::shouldDispatchMessageWhenWaitingForSyncReply const):
(IPC::Encoder::setShouldDispatchMessageWhenWaitingForSyncReply):
(IPC::Encoder::wrapForTesting):
- Platform/IPC/Encoder.h:
- Platform/IPC/MessageFlags.h:
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::handleTouchEventSynchronously):
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView ensurePositionInformationIsUpToDate:]):
- WebProcess/Network/WebLoaderStrategy.cpp:
(WebKit::WebLoaderStrategy::loadResourceSynchronously):
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::layerVolatilityTimerFired):
(WebKit::WebPage::markLayersVolatile):
(WebKit::WebPage::cancelMarkLayersVolatile):
(WebKit::WebPage::touchEventSync):
(WebKit::WebPage::didCompletePageTransition):
(WebKit::WebPage::updatePreferences):
(WebKit::WebPage::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sendSyncWithDelayedReply):
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):
LayoutTests:
Update existing layout test accordingly.
- fast/misc/{testProcessIncomingSyncMessagesWhenWaitingForUnboundedReply-expected.txt: Renamed from LayoutTests/fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply-expected.txt.
- fast/misc/{testProcessIncomingSyncMessagesWhenWaitingForUnboundedReply.html: Renamed from LayoutTests/fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html.
- 11:25 AM Changeset in webkit [247867] by
-
- 3 edits in trunk/Source/WebInspectorUI
Web Inspector: AXI: Audit: Typo of "some" as "somee"
https://bugs.webkit.org/show_bug.cgi?id=200166
Patch by Greg Doolittle <gr3g@apple.com> on 2019-07-26
Reviewed by Devin Rousso.
- Localizations/en.lproj/localizedStrings.js:
- UserInterface/Controllers/AuditManager.js:
(WI.AuditManager.prototype._addDefaultTests):
(WI.AuditManager):
- 11:22 AM Changeset in webkit [247866] by
-
- 22 edits in trunk
Unable to tap/double tap to open files/folders in Google Drive in Safari
https://bugs.webkit.org/show_bug.cgi?id=200096
<rdar://problem/52748552>
Reviewed by Wenson Hsieh.
Source/WebKit:
This patch reverts to the original double-tap-for-double-click implementation (see r244775 and r246347 for more information).
- Shared/WebPageCreationParameters.cpp:
(WebKit::WebPageCreationParameters::encode const):
(WebKit::WebPageCreationParameters::decode):
- Shared/WebPageCreationParameters.h:
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::creationParameters):
- UIProcess/WebPageProxy.h:
- UIProcess/ios/PageClientImplIOS.h:
- UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::doubleTapForDoubleClickDelay): Deleted.
(WebKit::PageClientImpl::doubleTapForDoubleClickRadius): Deleted.
- UIProcess/ios/WKContentViewInteraction.h:
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]): Do not recognize the single and double gestures the same time.
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView _doubleTapRecognizedForDoubleClick:]):
(-[WKContentView _didStartProvisionalLoadForMainFrame]):
(-[WKContentView _ensureNonBlockingDoubleTapGestureRecognizer]): Deleted.
(-[WKContentView _doubleTapForDoubleClickDelay]): Deleted.
(-[WKContentView _doubleTapForDoubleClickRadius]): Deleted.
- UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::handleDoubleTapForDoubleClickAtPoint):
- WebProcess/WebPage/WebPage.cpp:
- WebProcess/WebPage/WebPage.h:
- WebProcess/WebPage/WebPage.messages.in:
- WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::handleDoubleTapForDoubleClickAtPoint):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::handlePotentialDoubleTapForDoubleClickAtPoint): Deleted.
LayoutTests:
- Rebaseline (progression).
- Payment request tests activate elements by tapping on them at a high speed, triggering double clicks instead. Let's slow them down a bit.
- fast/events/touch/ios/double-tap-for-double-click3-expected.txt:
- http/tests/adClickAttribution/anchor-tag-attributes-validation.html:
- http/tests/resources/payment-request.js:
(activateThen):
- resources/ui-helper.js:
(window.UIHelper.activateElementAtHumanSpeed.return.new.Promise):
(window.UIHelper.activateElementAtHumanSpeed):
- tests-options.json:
- 10:58 AM Changeset in webkit [247865] by
-
- 2 edits in trunk/Websites/perf.webkit.org
Fix a bug that cannot update builder password on builders administrative page.
https://bugs.webkit.org/show_bug.cgi?id=200154
Reviewed by Ryosuke Niwa.
'builders' administrative page should be able to update password for a builder.
- public/admin/builders.php: Should be able to update builder password.
- 10:18 AM Changeset in webkit [247864] by
-
- 3 edits in trunk/Source/WebKit
AX: web process should load correct bundle path for MACCATALYST
https://bugs.webkit.org/show_bug.cgi?id=200122
Patch by Eric Liang <ericliang@apple.com> on 2019-07-26
Reviewed by Brent Fulgham.
Added the path to accessibility bundle for Mac Catalyst.
Added sandbox profile to read accessibility settings.
- WebProcess/cocoa/WebProcessCocoa.mm:
(WebKit::registerWithAccessibility):
- WebProcess/com.apple.WebProcess.sb.in:
- 9:08 AM Changeset in webkit [247863] by
-
- 2 edits in trunk/Tools
Follow-up fix: results.webkit.org: Color should be the worst result, count should include all results
https://bugs.webkit.org/show_bug.cgi?id=200127
Unreviewed follow-up fix.
- resultsdbpy/resultsdbpy/view/static/js/timeline.js:
(Dot.toString): Use self instead of this in render callback.
- 2:00 AM Changeset in webkit [247862] by
-
- 4 edits in trunk/Source
REGRESSION(r246496): [GTK] Tapping the web view scrolls up a bit
https://bugs.webkit.org/show_bug.cgi?id=200084
Patch by Alexander Mikhaylenko <exalm7659@gmail.com> on 2019-07-26
Reviewed by Carlos Garcia Campos.
gdk_event_get_scroll_direction() returns false, but also sets direction to GDK_SCROLL_UP if
the direction was GDK_SCROLL_SMOOTH. Relying on zero deltas in this case is not correct, because
they can also be zero with GDK_SCROLL_SMOOTH. In this case, set the direction manually to avoid
that.
See https://gitlab.gnome.org/GNOME/gtk/issues/2048
Source/WebCore:
- platform/gtk/PlatformWheelEventGtk.cpp:
(WebCore::PlatformWheelEvent::PlatformWheelEvent):
Source/WebKit:
- Shared/gtk/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebWheelEvent):
- 1:52 AM Changeset in webkit [247861] by
-
- 2 edits in trunk/Source/WebKit
[WPE] Support disk cache dumping like GTK
https://bugs.webkit.org/show_bug.cgi?id=200157
Patch by Loïc Yhuel <loic.yhuel@softathome.com> on 2019-07-26
Reviewed by Carlos Garcia Campos.
Creating or touching "dump" would create the dump.json.
- NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::Cache):
- 12:29 AM Changeset in webkit [247860] by
-
- 16 edits4 adds in trunk
Make storing cross-origin top-level prefetches in HTTP cache optional
https://bugs.webkit.org/show_bug.cgi?id=199499
Patch by Rob Buis <rbuis@igalia.com> on 2019-07-26
Reviewed by Youenn Fablet.
Source/WebCore:
Add Internals API for adding an event listener to prefetch load.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
- bindings/js/JSEventListener.h:
- dom/EventTarget.h:
(WebCore::EventTarget::addEventListener):
- dom/Node.h:
- html/HTMLLinkElement.h:
- testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebKit:
Currently when we navigate we check if there is a cross-origin top-level
prefetch we can use for the navigation. The current solution uses the
HTTP cache as a way to store the prefetch and to immediately use it for
the navigation load. However this solution fails in case the prefetch is
not cacheable.
Instead of this, simulate a HTTP Cache entry to process the load and
afterwards try to store the navigation load into the HTTP cache, where
normal store decisions will be applied.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::retrieveCacheEntryInternal):
- NetworkProcess/NetworkResourceLoader.h:
LayoutTests:
Remove unneeded Cache-Control headers and verify that Cache-Control
effects whether the navigation gets stored in the disk cache or not.
- http/tests/cache/resources/prefetched-main-resource-iframe.php:
- http/tests/cache/resources/prefetched-main-resource.php:
- http/wpt/prefetch/link-prefetch-skip-disk-cache-expected.txt: Added.
- http/wpt/prefetch/link-prefetch-skip-disk-cache.html: Added.
- http/wpt/prefetch/resources/main-resource-skip-disk-cache.py: Added.
(main):
- http/wpt/prefetch/resources/navigate-skip-disk-cache.html: Added.
- platform/mac-wk1/TestExpectations:
- platform/win/TestExpectations:
- 12:24 AM Changeset in webkit [247859] by
-
- 11 edits in branches/safari-608.1-branch/Source
Cherry-pick r247755. rdar://problem/53575424
AX: CrashTracer: com.apple.WebKit.WebContent at WebKit: WebKit::WebSpeechSynthesisClient::speak
https://bugs.webkit.org/show_bug.cgi?id=199988
Reviewed by Per Arne Vollan.
Source/WebCore:
Implement the reset state to cancel current speech jobs.
- Modules/speech/SpeechSynthesis.cpp: (WebCore::SpeechSynthesis::startSpeakingImmediately): (WebCore::SpeechSynthesis::cancel):
- platform/PlatformSpeechSynthesizer.h:
- platform/ios/PlatformSpeechSynthesizerIOS.mm: (WebCore::PlatformSpeechSynthesizer::resetState):
- platform/mac/PlatformSpeechSynthesizerMac.mm: (WebCore::PlatformSpeechSynthesizer::resetState):
Source/WebKit:
Improvements to WebSpeechSynthesis to avoid crashing and improve correctness.
- Reset and cancel speech jobs on page close or reload (otherwise the synthesizer keeps talking after your page is gone)
- Have a separate speech finish callback mechanism, use the start speaking callback when the synthesizer tells us.
- Move an assert on utterance state to only apply when we use the in process synthesizer.
- UIProcess/Cocoa/WebPageProxyCocoa.mm: (WebKit::WebPageProxy::didStartSpeaking):
- UIProcess/WebPageProxy.cpp: (WebKit::WebPageProxy::reload): (WebKit::WebPageProxy::resetState): (WebKit::WebPageProxy::resetSpeechSynthesizer): (WebKit::WebPageProxy::speechSynthesisSetFinishedCallback): (WebKit::WebPageProxy::speechSynthesisSpeak):
- UIProcess/WebPageProxy.h:
- UIProcess/WebPageProxy.messages.in:
- WebProcess/WebCoreSupport/WebSpeechSynthesisClient.cpp: (WebKit::WebSpeechSynthesisClient::speak):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247755 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:24 AM Changeset in webkit [247858] by
-
- 2 edits in branches/safari-608.1-branch/Source/WebCore
Cherry-pick r247734. rdar://problem/53575398
Fix crashes in ScrollingStateNode::insertChild()
https://bugs.webkit.org/show_bug.cgi?id=200023
rdar://problem/53265378
Reviewed by Darin Adler.
Crash data suggest that ScrollingStateNode::insertChild() can be passed an index that
is larger than the size of the vector, causing crashes.
Fix defensively by falling back to append() if the passed index is equal to or larger
than the size of the children vector.
- page/scrolling/ScrollingStateNode.cpp: (WebCore::ScrollingStateNode::insertChild):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247734 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 12:24 AM Changeset in webkit [247857] by
-
- 7 edits1 add in branches/safari-608.1-branch
Cherry-pick r247702. rdar://problem/53575418
[iOS] [WK1] UIWebView always jumps to the top left corner when scrolling to reveal the selection
https://bugs.webkit.org/show_bug.cgi?id=200013
<rdar://problem/52526901>
Reviewed by Simon Fraser.
Source/WebCore:
After <https://trac.webkit.org/r244141>, we no longer attempt to scroll to reveal the text selection in
UIWebView after changing the selection, due to how we use the legacy document view rect in legacy WebKit when
computing the visual viewport. This causes the viewRect in RenderLayer::scrollRectToVisible to be the same size
as the content size, which then causes us to always scroll to the origin when revealing the selection.
To make selection revealing work again in legacy WebKit, conditionally restore the old behavior of using the
unobscured content rect as the view rect, only in the case where scrolling is delegated and the platform widget
is present.
Test: WebKitLegacy.ScrollToRevealSelection
- page/FrameView.cpp: (WebCore::FrameView::viewRectExpandedByContentInsets const): (WebCore::FrameView::visualViewportRectExpandedByContentInsets const): Deleted.
Additionally rename visualViewportRectExpandedByContentInsets to viewRectExpandedByContentInsets, to reflect the
fact that this may either be the visual viewport rect or unobscured content rect.
- page/FrameView.h:
- rendering/RenderLayer.cpp: (WebCore::RenderLayer::scrollRectToVisible):
Tools:
Add a new API test to verify that inserting text in UIWebView causes the document to scroll.
- TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- TestWebKitAPI/Tests/WebKitLegacy/ios/ScrollToRevealSelection.mm: Added. (-[LegacyLoadingDelegate webViewDidFinishLoad:]): (-[LegacyLoadingDelegate waitForDidFinishLoad]):
- TestWebKitAPI/ios/UIKitSPI.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247702 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Jul 25, 2019:
- 11:53 PM Changeset in webkit [247856] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed build fix in NetworkDataTaskSoup.
- NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::authenticateCallback):
Fix incorrect use of the dereferencing operator introduced in r247831.
- 11:15 PM Changeset in webkit [247855] by
-
- 2 edits in trunk/Source/WebKitLegacy/win
[Win][WK1] The inspected webview window is misplaced after changing Web Inspector frontend window height
https://bugs.webkit.org/show_bug.cgi?id=200152
Reviewed by Brent Fulgham.
In WebInspectorFrontendClient::setAttachedWindowHeight, the size
of m_inspectedWebViewHwnd was changed to the whole host window
size. But, it's too tall because MiniBrowser's host window has a
toolbar. The toolbar height should be taken into account.
Change to the height of m_inspectedWebViewHwnd to the sum of
inspected WebView and inspector frontend WebView heights.
- WebCoreSupport/WebInspectorClient.cpp:
(WebInspectorFrontendClient::setAttachedWindowHeight):
- 9:58 PM Changeset in webkit [247854] by
-
- 3 edits in trunk/Source/JavaScriptCore
[JSC] Use unalignedLoad for JSRopeString fiber accesses
https://bugs.webkit.org/show_bug.cgi?id=200148
Reviewed by Mark Lam.
JSRopeString always have some subsequent bytes that can be accessible because MarkedBlock has Footer.
We use WTF::unalignedLoad to get fibers. And it will be converted to one load CPU instruction.
- heap/MarkedBlock.h:
- runtime/JSString.h:
- 7:38 PM Changeset in webkit [247853] by
-
- 2 edits in trunk/Source/WebKit
Unreviewed, build fix after r247851
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
Reverts an unnecessary change.
- 6:43 PM Changeset in webkit [247852] by
-
- 2 edits in trunk/Source/WebKit
[GTK] Indistinguishable overloaded callback function inspectorViewDestroyed if RemoteWebInspectorProxyGtk.cpp and WebInspectorProxyGtk.cpp are in a unified build bundle
https://bugs.webkit.org/show_bug.cgi?id=200123
Patch by Fujii Hironori <fujii.hironori@gmail.com> on 2019-07-25
Reviewed by Carlos Garcia Campos.
- UIProcess/gtk/RemoteWebInspectorProxyGtk.cpp:
(WebKit::remoteInspectorViewDestroyed): Added.
(WebKit::RemoteWebInspectorProxy::platformCreateFrontendPageAndWindow):
(WebKit::inspectorViewDestroyed): Deleted.
Renamed inspectorViewDestroyed to remoteInspectorViewDestroyed.
- 6:26 PM Changeset in webkit [247851] by
-
- 6 edits in trunk
WebPageProxy::receivedPolicyDecision should check navigation ID before clear pendingAPIRequest
https://bugs.webkit.org/show_bug.cgi?id=200108
<rdar://problem/53521238>
Reviewed by Chris Dumez.
Source/WebKit:
Assuming there are two loads happening one after another. There is an issue when clients save
the first decisionHandler and then call WKNavigationActionPolicyCancel for it right after the
second decisionHandler received, -[WKWebView URL] could return a null string even though it is
loading the second one.
To solve that, this patch pairs a navigationID with the pendingAPIRequestURL such that
WebPageProxy::receivedPolicyDecision could clear the pendingAPIRequestURL only if
the passed navigation ID matches the current one.
- UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::reset):
(WebKit::PageLoadState::activeURL):
(WebKit::PageLoadState::estimatedProgress):
(WebKit::PageLoadState::pendingAPIRequestURL const):
(WebKit::PageLoadState::pendingAPIRequest const):
(WebKit::PageLoadState::setPendingAPIRequest):
(WebKit::PageLoadState::clearPendingAPIRequest):
(WebKit::PageLoadState::isLoading):
(WebKit::PageLoadState::setPendingAPIRequestURL): Deleted.
(WebKit::PageLoadState::clearPendingAPIRequestURL): Deleted.
- UIProcess/PageLoadState.h:
(WebKit::PageLoadState::setPendingAPIRequest):
(WebKit::PageLoadState::setPendingAPIRequestURL): Deleted.
- UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::launchProcessForReload):
(WebKit::WebPageProxy::loadRequestWithNavigationShared):
(WebKit::WebPageProxy::loadFile):
(WebKit::WebPageProxy::loadDataWithNavigationShared):
(WebKit::WebPageProxy::loadAlternateHTML):
(WebKit::WebPageProxy::loadWebArchiveData):
(WebKit::WebPageProxy::reload):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::receivedPolicyDecision):
(WebKit::WebPageProxy::continueNavigationInNewProcess):
(WebKit::WebPageProxy::didStartProvisionalLoadForFrameShared):
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
Tools:
Added an API test.
- TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm:
(-[DecidePolicyForNavigationActionController webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):
- 6:03 PM Changeset in webkit [247850] by
-
- 2 edits in trunk/Tools
results.webkit.org: Color should be the worst result, count should include all results
https://bugs.webkit.org/show_bug.cgi?id=200127
Rubber-stamped by Aakash Jain.
- resultsdbpy/resultsdbpy/view/static/js/timeline.js:
(Dot.prototype.toString): Do not differentiate the count based on the prevailing failure type.
- 5:44 PM Changeset in webkit [247849] by
-
- 5 edits in branches/safari-608.1-branch
Cherry-pick r247692. rdar://problem/53519923
Disable MediaRecorder for legacy WebKit
https://bugs.webkit.org/show_bug.cgi?id=200001
<rdar://problem/53400030>
Reviewed by Eric Carlson.
Source/WebKitLegacy/mac:
Disable MediaRecorder by default in legacy WebKit.
Add SPI to set/get this preference.
- WebView/WebPreferences.mm: (+[WebPreferences initialize]): (-[WebPreferences _mediaRecorderEnabled]): (-[WebPreferences _setMediaRecorderEnabled:]):
- WebView/WebPreferencesPrivate.h:
Tools:
Enable MediaRecorder for testing purposes.
- DumpRenderTree/mac/DumpRenderTree.mm: (createWebViewAndOffscreenWindow):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247692 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 5:44 PM Changeset in webkit [247848] by
-
- 2 edits in branches/safari-608.1-branch/Source/WebCore
Cherry-pick r247620. rdar://problem/53519933
Crash under WebPage::boundaryEventOccurred
https://bugs.webkit.org/show_bug.cgi?id=199907
Reviewed by Chris Fleizach.
Add null pointer checks.
No new tests, since I have not been able to reproduce this in a test.
- Modules/speech/SpeechSynthesis.cpp: (WebCore::SpeechSynthesis::didStartSpeaking): (WebCore::SpeechSynthesis::didFinishSpeaking): (WebCore::SpeechSynthesis::didPauseSpeaking): (WebCore::SpeechSynthesis::didResumeSpeaking): (WebCore::SpeechSynthesis::speakingErrorOccurred): (WebCore::SpeechSynthesis::boundaryEventOccurred):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@247620 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- 5:41 PM Changeset in webkit [247847] by
-
- 7 edits in branches/safari-608.1-branch/Source
Versioning.
- 5:40 PM Changeset in webkit [247846] by
-
- 4 edits in trunk/Source/WebCore
Subpixel fringes around TextIndicator snapshots at non-integral scale factors
https://bugs.webkit.org/show_bug.cgi?id=200145
Reviewed by Simon Fraser.
- page/FrameSnapshotting.cpp:
(WebCore::snapshotFrameRectWithClip):
- page/FrameSnapshotting.h:
- page/TextIndicator.cpp:
(WebCore::snapshotOptionsForTextIndicatorOptions):
Round the scale factor up, and snappily enclose the clip rects.
TextIndicator doesn't require the use of the precise scale factor that
the page is painted at, but we want it to be sharp, so we overshoot!
- 4:55 PM Changeset in webkit [247845] by
-
- 5 edits in trunk
Legacy numeric literals should not permit separators or BigInt
https://bugs.webkit.org/show_bug.cgi?id=199984
Reviewed by Keith Miller.
JSTests:
- stress/big-int-literals.js:
- stress/numeric-literal-separators.js:
Source/JavaScriptCore:
- parser/Lexer.cpp:
(JSC::Lexer<T>::parseOctal):
(JSC::Lexer<T>::parseDecimal):
- 4:15 PM Changeset in webkit [247844] by
-
- 2 edits in trunk/Source/JavaScriptCore
Unreviewed, build fix due to C++17's std::invoke_result_t
https://bugs.webkit.org/show_bug.cgi?id=200139
Use std::result_of for now until all the supported environments implement it.
- heap/IsoSubspace.h:
- 3:51 PM Changeset in webkit [247843] by
-
- 9 edits in trunk/Source/JavaScriptCore
[JSC] Ensure PackedCellPtr only takes non-large-allocation pointers
https://bugs.webkit.org/show_bug.cgi?id=200139
Reviewed by Mark Lam.
PackedCellPtr will compact a pointer by leveraging the fact that JSCell pointers are 16byte aligned.
But this fact only holds when the JSCell is not large allocation. Currently, we are using PackedCellPtr
only for the cell types which meets the above requirement. But we would like to ensure that statically.
In this patch, we add additional static/runtime assertions to ensure this invariant. We accept a cell
type of either (1) it is "final" annotated and sizeof(T) is <= MarkedSpace::largeCutoff or (2) it
is allocated from IsoSubspace.
This patch does not change any behaviors. It just adds extra static/runtime assertions.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::subspaceFor):
- bytecode/CodeBlockJettisoningWatchpoint.h:
- bytecode/LLIntPrototypeLoadAdaptiveStructureWatchpoint.h:
- dfg/DFGAdaptiveStructureWatchpoint.h:
- heap/IsoSubspace.h:
- heap/PackedCellPtr.h:
(JSC::PackedCellPtr::PackedCellPtr):
- runtime/FunctionRareData.h:
(JSC::FunctionRareData::createAllocationProfileClearingWatchpoint):
- runtime/ObjectToStringAdaptiveStructureWatchpoint.h:
- 3:25 PM Changeset in webkit [247842] by
-
- 3 edits5 deletes in trunk
Unreviewed, rolling out r247806.
https://bugs.webkit.org/show_bug.cgi?id=200141
It is regressing PLT (Requested by youenn on #webkit).
Reverted changeset:
"Disable speculative loading if cache is not to be used for
the load"
https://bugs.webkit.org/show_bug.cgi?id=199644
https://trac.webkit.org/changeset/247806
- 3:02 PM Changeset in webkit [247841] by
-
- 28 edits1 copy in trunk/Source/WebCore
Use IWICBitmap (rather than ID2D1Bitmap) for NativeImagePtr on FTW
https://bugs.webkit.org/show_bug.cgi?id=200093
Reviewed by Dean Jackson.
Source/WebCore:
When I wrote the original Direct2D code, I did not realize that the backing memory for the
ID2D1Bitmap was inaccessible since it is effectively a representation of GPU memory. There
is no API to access or modify the pixels.
Instead, MSDN documentation indicates that we should be using IWICBitmap objects, which are
converted to ID2D1Bitmap objects when things are ready to be rendered.
This makes it possible to use the TextureMapper backend to do efficient compositing and tile
drawing, since the data backing the bitmap can now be accessed and manipulated, allowing us
to support filters and other effects.
- PlatformFTW.cmake:
- platform/MIMETypeRegistry.cpp:
(WebCore::supportedImageMIMETypesForEncoding):
- platform/graphics/ANGLEWebKitBridge.h:
- platform/graphics/GraphicsContext.h:
- platform/graphics/ImageBuffer.h:
- platform/graphics/NativeImage.h:
- platform/graphics/OpenGLShims.h:
- platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::paintRenderingResultsToCanvas):
- platform/graphics/opengl/GraphicsContext3DOpenGLES.cpp:
(WebCore::GraphicsContext3D::GraphicsContext3D):
(WebCore::GraphicsContext3D::platformLayer const):
- platform/graphics/texmap/BitmapTexture.cpp:
(WebCore::BitmapTexture::updateContents):
- platform/graphics/texmap/BitmapTextureGL.cpp:
(WebCore::BitmapTextureGL::updateContents):
- platform/graphics/texmap/GraphicsContext3DTextureMapper.cpp:
(WebCore::GraphicsContext3D::~GraphicsContext3D):
- platform/graphics/win/GraphicsContextDirect2D.cpp:
(WebCore::GraphicsContext::GraphicsContext):
(WebCore::GraphicsContext::platformInit):
(WebCore::GraphicsContextPlatformPrivate::setAlpha):
(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawDeviceBitmap):
(WebCore::GraphicsContext::releaseWindowsContext):
(WebCore::GraphicsContextPlatformPrivate::GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::~GraphicsContextPlatformPrivate):
(WebCore::GraphicsContextPlatformPrivate::beginDraw):
(WebCore::GraphicsContextPlatformPrivate::endDraw):
(WebCore::GraphicsContext::drawPattern):
(WebCore::GraphicsContext::clipPath):
- platform/graphics/win/GraphicsContextPlatformPrivateDirect2D.h:
- platform/graphics/win/ImageBufferDataDirect2D.cpp:
(WebCore::ImageBufferData::getData const):
(WebCore::ImageBufferData::putData):
- platform/graphics/win/ImageBufferDataDirect2D.h:
(): Deleted.
- platform/graphics/win/ImageBufferDirect2D.cpp:
(WebCore::ImageBuffer::createCompatibleBuffer):
(WebCore::ImageBuffer::ImageBuffer):
(WebCore::createCroppedImageIfNecessary):
(WebCore::createBitmapImageAfterScalingIfNeeded):
(WebCore::ImageBuffer::copyImage const):
(WebCore::ImageBuffer::sinkIntoNativeImage):
(WebCore::ImageBuffer::copyNativeImage const):
(WebCore::ImageBuffer::draw):
- platform/graphics/win/ImageDecoderDirect2D.cpp:
(WebCore::ImageDecoderDirect2D::createFrameImageAtIndex):
- platform/graphics/win/ImageDirect2D.cpp:
(WebCore::BitmapImage::drawFrameMatchingSourceSize):
- platform/graphics/win/NativeImageDirect2D.cpp:
(WebCore::imagingFactory):
(WebCore::nativeImageSize):
(WebCore::nativeImageHasAlpha):
(WebCore::nativeImageSinglePixelSolidColor):
(WebCore::drawNativeImage):
(WebCore::clearNativeImageSubimages):
- platform/graphics/win/PathDirect2D.cpp:
(WebCore::Path::strokeContains const):
- platform/graphics/win/PatternDirect2D.cpp:
(WebCore::Pattern::createPlatformPattern const):
- platform/win/PasteboardWin.cpp:
(WebCore::Pasteboard::read):
- rendering/RenderElement.cpp:
(WebCore::RenderElement::shouldRespectImageOrientation const):
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::adjustTiledBackingCoverage):
- svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::nativeImage):
Source/WebCore/PAL:
- pal/PlatformFTW.cmake:
- 2:18 PM Changeset in webkit [247840] by
-
- 6 edits in trunk/Source/WebCore
REGRESSION (r243637): Some web fonts fail to load on Google docs
https://bugs.webkit.org/show_bug.cgi?id=200106
Reviewed by Geoffrey Garen.
Prior to r243637, WebKit threw an exception if the font family name didn't parse as a CSS identifier in the setter
offamilyIDL attribute of FontFace interface because WebKit implemented the old spec faithfully unlike Chrome
and Firefox which basically treated it as a string and didn't throw any exception. [1]
To account for this browser behavior difference, Google docs implemented a workaround for Safari which is to wrap
some identifiers in font family names with quotation marks:docs-Amatic SCas'docs-Amatic SC'and
docs-Playfair Displayasdocs-'Playfair Display'. Unfortunately, this in turn causes the latest Safari to
not match these font face family with those that appear in stylesheet since we no longer parse it as a CSS identifier.
This patch adds a site specific quirk for Google docs to undo this workaround by stripping away single quotation marks.
[1] See https://github.com/w3c/csswg-drafts/issues/3776 for the context.
- css/FontFace.cpp:
(WebCore::FontFace::create):
(WebCore::FontFace::setFamily):
- css/FontFace.h:
- css/FontFace.idl:
- page/Quirks.cpp:
(WebCore::Quirks::shouldStripQuotationMarkInFontFaceSetFamily const):
- page/Quirks.h:
- 2:12 PM Changeset in webkit [247839] by
-
- 12 edits2 adds in trunk
[iOS WK2] A top fixed bar can flicker when scrolling with the keyboard up
https://bugs.webkit.org/show_bug.cgi?id=200105
rdar://problem/52871975
Reviewed by Wenson Hsieh.
Source/WebCore:
ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport
from the current scroll position and scrollableAreaSize(). This doesn't know anything about
the impact of keyboards on the visual viewport, so it computes a too-large visual viewport
when the keyboard is up, triggering incorrect manipulations of the layout viewport. This
leads to the top bar flashing to position 0 when it should be hidden off the top.
Fix by feeding into the scrolling tree the height of the visual viewport which takes
FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/
ScrollingTreeFrameScrollingNode.
Test: scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html
- page/FrameView.h:
- page/scrolling/AsyncScrollingCoordinator.cpp:
(WebCore::AsyncScrollingCoordinator::setFrameScrollingNodeState):
- page/scrolling/ScrollingStateFrameScrollingNode.cpp:
(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setPropertyChangedBitsAfterReattach):
(WebCore::ScrollingStateFrameScrollingNode::setOverrideVisualViewportSize):
(WebCore::ScrollingStateFrameScrollingNode::dumpProperties const):
- page/scrolling/ScrollingStateFrameScrollingNode.h:
- page/scrolling/ScrollingTree.cpp:
(WebCore::ScrollingTree::commitTreeState): LOG_WITH_STREAM() doesn't evaluate scrollingTreeAsText()
every time.
- page/scrolling/ScrollingTreeFrameScrollingNode.cpp:
(WebCore::ScrollingTreeFrameScrollingNode::commitStateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition const):
(WebCore::ScrollingTreeFrameScrollingNode::dumpProperties const):
- page/scrolling/ScrollingTreeFrameScrollingNode.h:
Source/WebKit:
ScrollingTreeFrameScrollingNode::layoutViewportForScrollPosition() computes a visual viewport
from the current scroll position and scrollableAreaSize(). This doesn't know anything about
the impact of keyboards on the visual viewport, so it computes a too-large visual viewport
when the keyboard is up, triggering incorrect manipulations of the layout viewport. This
leads to the top bar flashing to position 0 when it should be hidden off the top.
Fix by feeding into the scrolling tree the height of the visual viewport which takes
FrameView::visualViewportOverrideRect() into account. This is stored on ScrollingStateFrameScrollingNode/
ScrollingTreeFrameScrollingNode.
- Shared/RemoteLayerTree/RemoteScrollingCoordinatorTransaction.cpp:
(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
LayoutTests:
- resources/ui-helper.js:
(window.UIHelper.ensureStablePresentationUpdate.return.new.Promise):
(window.UIHelper.ensureStablePresentationUpdate):
- scrollingcoordinator/ios/fixed-scrolling-with-keyboard-expected.txt: Added.
- scrollingcoordinator/ios/fixed-scrolling-with-keyboard.html: Added.
- 1:55 PM Changeset in webkit [247838] by
-
- 2 edits in trunk/Source/WebKit
WebKit/UIProcess/ios/WKContentViewInteraction.mm: error: implementing deprecated method contextMenuInteractionWillPresent
https://bugs.webkit.org/show_bug.cgi?id=200136
<rdar://problem/53547698>
Reviewed by Wenson Hsieh.
Ignore deprecation warnings for these UIContextMenuInteraction delegates.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView contextMenuInteractionWillPresent:]):
(-[WKContentView contextMenuInteraction:willCommitWithAnimator:]):
(-[WKContentView contextMenuInteractionDidEnd:]):
- 1:53 PM Changeset in webkit [247837] by
-
- 30 edits in trunk/Source
Add helper for ignoring deprecated implementation warnings
https://bugs.webkit.org/show_bug.cgi?id=200135
Reviewed by Wenson Hsieh.
Add ALLOW_DEPRECATED_IMPLEMENTATIONS_BEGIN/END macro which
is IGNORE_WARNINGS_BEGIN("deprecated-implementations")
Source/WebCore:
- accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
(-[WebAccessibilityObjectWrapper accessibilityIsAttributeSettable:]):
(-[WebAccessibilityObjectWrapper accessibilityPerformAction:]):
(-[WebAccessibilityObjectWrapper accessibilitySetValue:forAttribute:]):
(-[WebAccessibilityObjectWrapper accessibilityActionDescription:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):
(-[WebAccessibilityObjectWrapper IGNORE_WARNINGS_END]): Deleted.
- platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(-[WebAVStreamDataParserListener streamDataParserWillProvideContentKeyRequestInitializationData:forTrackID:]):
(-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]):
- platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveAuthenticationChallenge:]):
(-[WebCoreResourceHandleAsOperationQueueDelegate connection:canAuthenticateAgainstProtectionSpace:]):
Source/WebKit:
- UIProcess/API/Cocoa/LegacyBundleForClass.mm:
- UIProcess/API/Cocoa/WKBrowsingContextController.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
- UIProcess/API/Cocoa/WKBrowsingContextGroup.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
- UIProcess/API/Cocoa/WKConnection.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
- UIProcess/API/Cocoa/WKPreviewElementInfo.mm:
- UIProcess/API/Cocoa/WKProcessGroup.mm:
(IGNORE_WARNINGS_BEGIN): Deleted.
- UIProcess/API/Cocoa/WKTypeRefWrapper.mm:
- UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKWebView draggedImage:endedAt:operation:]):
(-[WKWebView accessibilityAttributeValue:]):
(-[WKWebView accessibilityAttributeValue:forParameter:]):
(-[WKWebView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKWebView IGNORE_WARNINGS_END]): Deleted.
- UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKWebViewConfiguration _setWebsiteDataStore:]):
(-[WKWebViewConfiguration IGNORE_WARNINGS_END]): Deleted.
- UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:
- UIProcess/API/mac/WKView.mm:
(-[WKView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKView draggedImage:endedAt:operation:]):
(-[WKView accessibilityAttributeValue:]):
(-[WKView accessibilityAttributeValue:forParameter:]):
(-[WKView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKView IGNORE_WARNINGS_END]): Deleted.
- UIProcess/WKImagePreviewViewController.mm:
(-[WKImagePreviewViewController ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKImagePreviewViewController IGNORE_WARNINGS_END]): Deleted.
- UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]):
- UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel popoverControllerDidDismissPopover:]):
- UIProcess/ios/forms/WKFormPopover.mm:
(-[WKRotatingPopover popoverControllerDidDismissPopover:]):
- WebProcess/Plugins/PDF/PDFPlugin.mm:
(-[WKPDFPluginAccessibilityObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:]):
(-[WKPDFPluginAccessibilityObject accessibilityAttributeValue:forParameter:]):
(-[WKPDFPluginAccessibilityObject accessibilityPerformAction:]):
(-[WKPDFPluginAccessibilityObject accessibilityIsAttributeSettable:]):
(-[WKPDFPluginAccessibilityObject accessibilitySetValue:forAttribute:]):
(-[WKPDFPluginAccessibilityObject IGNORE_WARNINGS_END]): Deleted.
- WebProcess/WebPage/mac/WKAccessibilityWebPageObjectMac.mm:
(-[WKAccessibilityWebPageObject ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WKAccessibilityWebPageObject accessibilityIsAttributeSettable:]):
(-[WKAccessibilityWebPageObject accessibilitySetValue:forAttribute:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:]):
(-[WKAccessibilityWebPageObject accessibilityAttributeValue:forParameter:]):
(-[WKAccessibilityWebPageObject IGNORE_WARNINGS_END]): Deleted.
Source/WebKitLegacy/mac:
- Misc/WebDownload.mm:
(-[WebDownload initWithRequest:delegate:]):
- Misc/WebIconDatabase.mm:
- Plugins/WebBaseNetscapePluginView.mm:
(-[WebBaseNetscapePluginView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebBaseNetscapePluginView IGNORE_WARNINGS_END]): Deleted.
- WebView/WebDynamicScrollBarsView.mm:
(-[WebDynamicScrollBarsView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebDynamicScrollBarsView IGNORE_WARNINGS_END]): Deleted.
- WebView/WebHTMLView.mm:
(-[WebHTMLView draggingSourceOperationMaskForLocal:]):
(-[WebHTMLView draggedImage:endedAt:operation:]):
(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):
(-[WebHTMLView accessibilityAttributeValue:]):
(-[WebHTMLView ALLOW_DEPRECATED_IMPLEMENTATIONS_END]):
(-[WebHTMLView characterIndexForPoint:]):
(-[WebHTMLView firstRectForCharacterRange:]):
(-[WebHTMLView attributedSubstringFromRange:]):
(-[WebHTMLView setMarkedText:selectedRange:]):
(-[WebHTMLView doCommandBySelector:]):
(-[WebHTMLView insertText:]):
(-[WebHTMLView IGNORE_WARNINGS_END]): Deleted.
Source/WTF:
- wtf/Compiler.h:
- 1:21 PM Changeset in webkit [247836] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed. Speculative build fix for tvOS of missing include.
- Modules/webgpu/WHLSL/WHLSLLexer.h:
- 12:52 PM Changeset in webkit [247835] by
-
- 2 edits in trunk/Source/WebCore
Unreviewed, fix -Wunused-parameter warning
- testing/Internals.cpp:
(WebCore::Internals::privatePlayerVolume):
- 12:42 PM Changeset in webkit [247834] by
-
- 101 edits2 adds in trunk/Source/WebCore
[WHLSL] Add descriptive error messages
https://bugs.webkit.org/show_bug.cgi?id=195682
<rdar://problem/50746322>
Reviewed by Myles C. Maxfield.
This patch adds error messages to the WHLSL compiler. I'm taking a first pass
at having decent error messages everywhere we set an error. However, we will
probably refine these messages to be more accurate and descriptive over time.
Passes that can fail no longer return a boolean. Instead, they return Expected<void, Error>.
From Error, we can generate a descriptive error message. Visitor::setError now
requires an Error as an argument. So anywhere in Visitor that might fail is
now required to provide an error message.
In a follow-up to this, we should actually make our checkFail tests test that
they get the expected error message: https://bugs.webkit.org/show_bug.cgi?id=200049
- Modules/webgpu/WHLSL/AST/WHLSLArrayReferenceType.h:
- Modules/webgpu/WHLSL/AST/WHLSLArrayType.h:
- Modules/webgpu/WHLSL/AST/WHLSLAssignmentExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLBaseFunctionAttribute.h:
- Modules/webgpu/WHLSL/AST/WHLSLBaseSemantic.h:
- Modules/webgpu/WHLSL/AST/WHLSLBlock.h:
- Modules/webgpu/WHLSL/AST/WHLSLBooleanLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLBreak.h:
- Modules/webgpu/WHLSL/AST/WHLSLBuiltInSemantic.h:
- Modules/webgpu/WHLSL/AST/WHLSLCallExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLCommaExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLContinue.h:
- Modules/webgpu/WHLSL/AST/WHLSLDereferenceExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLDoWhileLoop.h:
- Modules/webgpu/WHLSL/AST/WHLSLDotExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLEffectfulExpressionStatement.h:
- Modules/webgpu/WHLSL/AST/WHLSLEnumerationDefinition.h:
- Modules/webgpu/WHLSL/AST/WHLSLEnumerationMember.h:
- Modules/webgpu/WHLSL/AST/WHLSLEnumerationMemberLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLFallthrough.h:
- Modules/webgpu/WHLSL/AST/WHLSLFloatLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLForLoop.h:
- Modules/webgpu/WHLSL/AST/WHLSLFunctionDeclaration.h:
- Modules/webgpu/WHLSL/AST/WHLSLGlobalVariableReference.h:
- Modules/webgpu/WHLSL/AST/WHLSLIfStatement.h:
- Modules/webgpu/WHLSL/AST/WHLSLIndexExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLIntegerLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLLogicalExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLLogicalNotExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLMakeArrayReferenceExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLMakePointerExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLNamedType.h:
- Modules/webgpu/WHLSL/AST/WHLSLNativeTypeDeclaration.h:
- Modules/webgpu/WHLSL/AST/WHLSLNullLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLPointerType.h:
- Modules/webgpu/WHLSL/AST/WHLSLPropertyAccessExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLQualifier.h:
- Modules/webgpu/WHLSL/AST/WHLSLReadModifyWriteExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLReferenceType.h:
- Modules/webgpu/WHLSL/AST/WHLSLResourceSemantic.h:
- Modules/webgpu/WHLSL/AST/WHLSLReturn.h:
- Modules/webgpu/WHLSL/AST/WHLSLSpecializationConstantSemantic.h:
- Modules/webgpu/WHLSL/AST/WHLSLStageInOutSemantic.h:
- Modules/webgpu/WHLSL/AST/WHLSLStatement.h:
- Modules/webgpu/WHLSL/AST/WHLSLStatementList.h:
- Modules/webgpu/WHLSL/AST/WHLSLStructureDefinition.h:
- Modules/webgpu/WHLSL/AST/WHLSLStructureElement.h:
- Modules/webgpu/WHLSL/AST/WHLSLSwitchCase.h:
- Modules/webgpu/WHLSL/AST/WHLSLSwitchStatement.h:
- Modules/webgpu/WHLSL/AST/WHLSLTernaryExpression.h:
- Modules/webgpu/WHLSL/AST/WHLSLTypeArgument.h:
- Modules/webgpu/WHLSL/AST/WHLSLTypeDefinition.h:
- Modules/webgpu/WHLSL/AST/WHLSLTypeReference.h:
- Modules/webgpu/WHLSL/AST/WHLSLUnnamedType.h:
- Modules/webgpu/WHLSL/AST/WHLSLUnsignedIntegerLiteral.h:
- Modules/webgpu/WHLSL/AST/WHLSLVariableDeclaration.h:
- Modules/webgpu/WHLSL/AST/WHLSLVariableDeclarationsStatement.h:
- Modules/webgpu/WHLSL/AST/WHLSLVariableReference.h:
- Modules/webgpu/WHLSL/AST/WHLSLWhileLoop.h:
- Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.cpp:
(WebCore::WHLSL::AutoInitialize::visit):
(WebCore::WHLSL::autoInitializeVariables):
- Modules/webgpu/WHLSL/WHLSLAutoInitializeVariables.h:
- Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.cpp:
(WebCore::WHLSL::checkDuplicateFunctions):
- Modules/webgpu/WHLSL/WHLSLCheckDuplicateFunctions.h:
- Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.cpp:
(WebCore::WHLSL::TextureReferencesChecker::visit):
(WebCore::WHLSL::checkTextureReferences):
- Modules/webgpu/WHLSL/WHLSLCheckTextureReferences.h:
- Modules/webgpu/WHLSL/WHLSLChecker.cpp:
(WebCore::WHLSL::resolveWithOperatorAnderIndexer):
(WebCore::WHLSL::resolveWithOperatorLength):
(WebCore::WHLSL::resolveWithReferenceComparator):
(WebCore::WHLSL::resolveByInstantiation):
(WebCore::WHLSL::resolveFunction):
(WebCore::WHLSL::checkSemantics):
(WebCore::WHLSL::Checker::assignTypes):
(WebCore::WHLSL::Checker::visit):
(WebCore::WHLSL::Checker::recurseAndGetInfo):
(WebCore::WHLSL::Checker::getInfo):
(WebCore::WHLSL::Checker::finishVisiting):
(WebCore::WHLSL::Checker::recurseAndRequireBoolType):
(WebCore::WHLSL::check):
- Modules/webgpu/WHLSL/WHLSLChecker.h:
- Modules/webgpu/WHLSL/WHLSLCodeLocation.h: Added.
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::CodeLocation::startOffset const):
(WebCore::WHLSL::CodeLocation::endOffset const):
(WebCore::WHLSL::CodeLocation::operator== const):
(WebCore::WHLSL::CodeLocation::operator!= const):
(WebCore::WHLSL::CodeLocation::operator bool const):
- Modules/webgpu/WHLSL/WHLSLComputeDimensions.cpp:
(WebCore::WHLSL::computeDimensions):
- Modules/webgpu/WHLSL/WHLSLError.h: Added.
(WebCore::WHLSL::Error::Error):
(WebCore::WHLSL::Error::codeLocation const):
(WebCore::WHLSL::Error::message const):
- Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.cpp:
(WebCore::WHLSL::checkFunctionStages):
- Modules/webgpu/WHLSL/WHLSLFunctionStageChecker.h:
- Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.cpp:
(WebCore::WHLSL::Gatherer::reset):
(WebCore::WHLSL::Gatherer::visit):
(WebCore::WHLSL::gatherEntryPointItems):
- Modules/webgpu/WHLSL/WHLSLGatherEntryPointItems.h:
- Modules/webgpu/WHLSL/WHLSLLexer.cpp:
(WebCore::WHLSL::Lexer::lineAndColumnNumberFromOffset):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::Lexer::lineNumberFromOffset): Deleted.
- Modules/webgpu/WHLSL/WHLSLLexer.h:
(WebCore::WHLSL::CodeLocation::CodeLocation):
(WebCore::WHLSL::Lexer::errorString):
(WebCore::WHLSL::AST::CodeLocation::CodeLocation): Deleted.
(WebCore::WHLSL::AST::CodeLocation::startOffset const): Deleted.
(WebCore::WHLSL::AST::CodeLocation::endOffset const): Deleted.
- Modules/webgpu/WHLSL/WHLSLNameResolver.cpp:
(WebCore::WHLSL::NameResolver::~NameResolver):
(WebCore::WHLSL::NameResolver::visit):
(WebCore::WHLSL::resolveNamesInTypes):
(WebCore::WHLSL::resolveTypeNamesInFunctions):
- Modules/webgpu/WHLSL/WHLSLNameResolver.h:
- Modules/webgpu/WHLSL/WHLSLParser.cpp:
(WebCore::WHLSL::Parser::parse):
(WebCore::WHLSL::intLiteralToInt):
(WebCore::WHLSL::uintLiteralToUint):
(WebCore::WHLSL::floatLiteralToFloat):
(WebCore::WHLSL::recognizeSimpleUnsignedInteger):
(WebCore::WHLSL::Parser::parseTypeArgument):
(WebCore::WHLSL::Parser::parseType):
(WebCore::WHLSL::Parser::parseForLoop):
(WebCore::WHLSL::Parser::parseWhileLoop):
(WebCore::WHLSL::Parser::parseEffectfulExpression):
(WebCore::WHLSL::Parser::parseLimitedSuffixOperator):
(WebCore::WHLSL::Parser::parseSuffixOperator):
(WebCore::WHLSL::Parser::parseExpression):
(WebCore::WHLSL::Parser::completeTernaryConditional):
(WebCore::WHLSL::Parser::completeAssignment):
(WebCore::WHLSL::Parser::completePossibleLogicalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleRelationalBinaryOperation):
(WebCore::WHLSL::Parser::completePossibleShift):
(WebCore::WHLSL::Parser::completePossibleAdd):
(WebCore::WHLSL::Parser::completePossibleMultiply):
(WebCore::WHLSL::Parser::parsePossiblePrefix):
(WebCore::WHLSL::Parser::parseCallExpression):
- Modules/webgpu/WHLSL/WHLSLParser.h:
(WebCore::WHLSL::Parser::Error::Error): Deleted.
(WebCore::WHLSL::Parser::Error::dump const): Deleted.
- Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
- Modules/webgpu/WHLSL/WHLSLPrepare.h:
- Modules/webgpu/WHLSL/WHLSLPropertyResolver.cpp:
(WebCore::WHLSL::setterCall):
(WebCore::WHLSL::getterCall):
(WebCore::WHLSL::modify):
(WebCore::WHLSL::PropertyResolver::visit):
- Modules/webgpu/WHLSL/WHLSLRecursionChecker.cpp:
(WebCore::WHLSL::checkRecursion):
- Modules/webgpu/WHLSL/WHLSLRecursionChecker.h:
- Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.cpp:
(WebCore::WHLSL::checkRecursiveTypes):
- Modules/webgpu/WHLSL/WHLSLRecursiveTypeChecker.h:
- Modules/webgpu/WHLSL/WHLSLStandardLibraryUtilities.cpp:
(WebCore::WHLSL::includeStandardLibrary):
- Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.cpp:
(WebCore::WHLSL::checkStatementBehavior):
- Modules/webgpu/WHLSL/WHLSLStatementBehaviorChecker.h:
- Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.cpp:
(WebCore::WHLSL::synthesizeArrayOperatorLength):
- Modules/webgpu/WHLSL/WHLSLSynthesizeArrayOperatorLength.h:
- Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.cpp:
(WebCore::WHLSL::synthesizeConstructors):
- Modules/webgpu/WHLSL/WHLSLSynthesizeConstructors.h:
- Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.cpp:
(WebCore::WHLSL::synthesizeEnumerationFunctions):
- Modules/webgpu/WHLSL/WHLSLSynthesizeEnumerationFunctions.h:
- Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.cpp:
(WebCore::WHLSL::synthesizeStructureAccessors):
- Modules/webgpu/WHLSL/WHLSLSynthesizeStructureAccessors.h:
- Modules/webgpu/WHLSL/WHLSLVisitor.h:
(WebCore::WHLSL::Visitor::hasError const):
(WebCore::WHLSL::Visitor::expectedError):
(WebCore::WHLSL::Visitor::checkErrorAndVisit):
(WebCore::WHLSL::Visitor::setError):
(WebCore::WHLSL::Visitor::error const): Deleted.
(): Deleted.
- WebCore.xcodeproj/project.pbxproj:
- platform/graphics/gpu/cocoa/GPUComputePipelineMetal.mm:
(WebCore::trySetFunctions):
- 11:52 AM Changeset in webkit [247833] by
-
- 3 edits in trunk/LayoutTests
rdar://53551736 (Layout Test editing/pasteboard/paste-and-sanitize.html is a Flaky Failure on iOS 13).
Unreviewed Test Gardening.
- platform/ios-12/TestExpectations: Test is passing on iOS 12
- platform/ios/TestExpectations: Marking test as flaky on iOS 13
- 11:28 AM Changeset in webkit [247832] by
-
- 16 edits in trunk/Source/JavaScriptCore
[JSC] Make visitChildren implementation more idiomatic
https://bugs.webkit.org/show_bug.cgi?id=200121
Reviewed by Mark Lam.
This patch makes visitChildren implementations more idiomatic: cast, assert, and calling Base::visitChildren.
While this does not find interesting issues, it is still nice to have consistent implementations.
StructureChain::visitChildren missed Base::visitChildren, but it does not have much effect since StructureChain
is immortal cell.
- bytecode/ExecutableToCodeBlockEdge.cpp:
(JSC::ExecutableToCodeBlockEdge::visitChildren):
- runtime/AbstractModuleRecord.cpp:
(JSC::AbstractModuleRecord::visitChildren):
- runtime/FunctionRareData.cpp:
(JSC::FunctionRareData::visitChildren):
- runtime/JSArrayBufferView.cpp:
(JSC::JSArrayBufferView::visitChildren):
- runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren):
- runtime/JSImmutableButterfly.cpp:
(JSC::JSImmutableButterfly::visitChildren):
- runtime/JSModuleEnvironment.cpp:
(JSC::JSModuleEnvironment::visitChildren):
- runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::visitChildren):
- runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::visitChildren):
- runtime/JSString.cpp:
(JSC::JSString::visitChildren):
- runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayValueMap::visitChildren):
- runtime/StructureChain.cpp:
(JSC::StructureChain::visitChildren):
- runtime/SymbolTable.cpp:
(JSC::SymbolTable::visitChildren):
- tools/JSDollarVM.cpp:
(JSC::Root::visitChildren):
(JSC::ImpureGetter::visitChildren):
- wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::visitChildren):
- 11:17 AM Changeset in webkit [247831] by
-
- 17 edits in trunk/Source/WebKit
Make NetworkSession no longer RefCounted
https://bugs.webkit.org/show_bug.cgi?id=200020
This allows to have a simpler memory management model where
NetworkSession cannot live once removed from the network process session map.
This requires some additional null checks, especially in NetworkDataTask.
Reviewed by Carlos Garcia Campos.
- NetworkProcess/curl/NetworkSessionCurl.h:
- NetworkProcess/soup/NetworkSessionSoup.h:
- NetworkProcess/NetworkDataTask.cpp:
(WebKit::NetworkDataTask::NetworkDataTask):
- NetworkProcess/NetworkDataTask.h:
- NetworkProcess/NetworkDataTaskBlob.cpp:
(WebKit::NetworkDataTaskBlob::~NetworkDataTaskBlob):
(WebKit::NetworkDataTaskBlob::download):
- NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::lowMemoryHandler):
(WebKit::NetworkProcess::setSession):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::setResourceLoadStatisticsEnabled):
(WebKit::NetworkProcess::deleteWebsiteDataForRegistrableDomains):
- NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::networkSessions):
- NetworkProcess/NetworkSession.cpp:
(WebKit::NetworkSession::create):
- NetworkProcess/NetworkSession.h:
- NetworkProcess/NetworkSocketChannel.cpp:
(WebKit::NetworkSocketChannel::NetworkSocketChannel):
(WebKit::NetworkSocketChannel::~NetworkSocketChannel):
- NetworkProcess/NetworkSocketChannel.h:
- NetworkProcess/cocoa/NetworkDataTaskCocoa.h:
- NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:
(WebKit::NetworkDataTaskCocoa::applySniffingPoliciesAndBindRequestToInferfaceIfNeeded):
(WebKit::computeIsAlwaysOnLoggingAllowed):
(WebKit::NetworkDataTaskCocoa::NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::~NetworkDataTaskCocoa):
(WebKit::NetworkDataTaskCocoa::resume):
(WebKit::NetworkDataTaskCocoa::isAlwaysOnLoggingAllowed const):
- NetworkProcess/cocoa/NetworkSessionCocoa.h:
- NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(-[WKNetworkSessionDelegate initWithNetworkSession:withCredentials:]):
(WebKit::NetworkSessionCocoa::create):
(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):
- NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::createRequest):
(WebKit::NetworkDataTaskSoup::clearRequest):
(WebKit::NetworkDataTaskSoup::cancel):
(WebKit::NetworkDataTaskSoup::authenticateCallback):
(WebKit::NetworkDataTaskSoup::authenticate):
(WebKit::NetworkDataTaskSoup::continueAuthenticate):
- 11:16 AM Changeset in webkit [247830] by
-
- 3 edits in trunk/Tools
[Timeline]: Make timeline header width automatic, instead of fixed width
https://bugs.webkit.org/show_bug.cgi?id=200059
Patch by Zhifei Fang <zhifei_fang@apple.com> on 2019-07-25
Reviewed by Jonathan Bedard.
- resultsdbpy/resultsdbpy/view/static/css/timeline.css:
(.dot.crash):
(.timeline>.header): Deleted.
- resultsdbpy/resultsdbpy/view/static/library/css/webkit.css:
(.timeline>.content):
(.timeline>.header):
- 11:14 AM Changeset in webkit [247829] by
-
- 2 edits in trunk/Source/WebCore
[WHLSL] Add optional logging for phase timings
https://bugs.webkit.org/show_bug.cgi?id=200099
Reviewed by Dean Jackson.
As we're doing WHLSL compiler speedup work, it helps to be able to
log phase times. I think a few of us have written such patches locally.
In this patch, I'm adding a way to easily switch this logging on and
off by flipping a "constexpr bool" and rebuilding.
- Modules/webgpu/WHLSL/WHLSLPrepare.cpp:
(WebCore::WHLSL::logPhaseTimes):
(WebCore::WHLSL::PhaseTimer::PhaseTimer):
(WebCore::WHLSL::PhaseTimer::~PhaseTimer):
(WebCore::WHLSL::prepareShared):
(WebCore::WHLSL::prepare):
- 11:09 AM Changeset in webkit [247828] by
-
- 8 edits in trunk/Source
Avoid some unnecessary HashMap copies
https://bugs.webkit.org/show_bug.cgi?id=200129
Reviewed by Youenn Fablet.
Source/WebCore:
- workers/service/server/SWServer.cpp:
(WebCore::SWServer::addRegistrationFromStore):
Source/WebKit:
- NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::didClose):
- UIProcess/AuxiliaryProcessProxy.cpp:
(WebKit::AuxiliaryProcessProxy::connect):
- UIProcess/Launcher/ProcessLauncher.cpp:
(WebKit::ProcessLauncher::ProcessLauncher):
- UIProcess/Launcher/ProcessLauncher.h:
(WebKit::ProcessLauncher::create):
- WebProcess/Plugins/WebPluginInfoProvider.cpp:
(WebKit::WebPluginInfoProvider::setPluginLoadClientPolicy):
- 11:04 AM Changeset in webkit [247827] by
-
- 3 edits in trunk/Source/WebCore
[WPE] Draw other button types
https://bugs.webkit.org/show_bug.cgi?id=199377
Patch by Joshua Watt <JPEW.hacker@gmail.com> on 2019-07-25
Reviewed by Michael Catanzaro.
There are other button types that should be drawn with the default style
besides just push buttons.
- platform/wpe/ThemeWPE.cpp:
(WebCore::ThemeWPE::paint):
(WebCore::ThemeWPE::paintButton):
- platform/wpe/ThemeWPE.h:
- 10:56 AM Changeset in webkit [247826] by
-
- 3 edits2 adds in trunk
REGRESSION (r244995): Assertion failure when addEventListener to an SVGElement which has an. instance in shadow tree
https://bugs.webkit.org/show_bug.cgi?id=200083
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2019-07-25
Reviewed by Ryosuke Niwa.
Source/WebCore:
When adding an event listener to an SVGElement, the same event listener
has to be add to all the instances of SVGElement in the shadow tree. See
SVGElement::addEventListener().
In r244995, an assertion was added to ensure if the event listener is
attached to an event target, the new event target has be the same as the
attached one. This assertion isn't correct for the event targets which
were copied from the targetElement sub tree of an SVGUseElement to the
shadow tree.
Test: svg/custom/add-event-listener-shadow-tree-element.html
- bindings/js/JSLazyEventListener.cpp:
(WebCore::isCloneInShadowTreeOfSVGUseElement):
(WebCore::JSLazyEventListener::checkValidityForEventTarget):
LayoutTests:
- svg/custom/add-event-listener-shadow-tree-element-expected.txt: Added.
- svg/custom/add-event-listener-shadow-tree-element.html: Added.
- 10:55 AM Changeset in webkit [247825] by
-
- 16 edits4 deletes in trunk
Unreviewed, rolling out r247821.
Caused two crashing Layout Tests
Reverted changeset:
"Make storing cross-origin top-level prefetches in HTTP cache
optional"
https://bugs.webkit.org/show_bug.cgi?id=199499
https://trac.webkit.org/changeset/247821
- 10:23 AM Changeset in webkit [247824] by
-
- 1 edit2 adds in trunk/LayoutTests
Adding iOS-specific expectations for fast/text-indicator/text-indicator-with-low-contrast-text.html.
https://bugs.webkit.org/show_bug.cgi?id=200064
Unreviewed Test Gardening.
- platform/ios/fast/text-indicator/text-indicator-with-low-contrast-text-expected.txt: Added.
- 9:07 AM Changeset in webkit [247823] by
-
- 3 edits in trunk/Source/WebKit
Unreviewed, fix -Wredundant-move warning spam after r247672
https://bugs.webkit.org/show_bug.cgi?id=199967
<rdar://problem/53351435>
- Platform/IPC/ArgumentCoders.cpp:
(IPC::decodeStringText):
- Platform/IPC/ArgumentCoders.h:
- 8:42 AM Changeset in webkit [247822] by
-
- 20 edits2 adds in trunk
Avoid UI Process hangs when the WebContent process is showing JS prompts / alerts
https://bugs.webkit.org/show_bug.cgi?id=200107
<rdar://problem/53034592>
Reviewed by Geoffrey Garen.
Source/WebCore:
Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply.
Test: fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html
- page/ChromeClient.h:
- testing/Internals.cpp:
(WebCore::Internals::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebKit:
- Platform/IPC/Connection.cpp:
(IPC::Connection::SyncMessageState::incrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount):
(IPC::Connection::SyncMessageState::decrementProcessIncomingSyncMessagesWhenWaitingForSyncReplyCount):
(IPC::Connection::SyncMessageState::processIncomingMessage):
(IPC::Connection::sendSyncMessage):
- Platform/IPC/Connection.h:
Add support for new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag
to allow processing incoming sync messages while sending a particular sync IPC. This is the
default behavior in all processes except in the WebContent process, where we try to avoid
re-entering to prevent bugs. This flag allows the WebContent process to change its default
behavior for some specific IPCs, where we know it is safe to re-enter and where it benefits
performance to re-renter.
- NetworkProcess/NetworkConnectionToWebProcess.cpp:
(WebKit::NetworkConnectionToWebProcess::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- NetworkProcess/NetworkConnectionToWebProcess.h:
- NetworkProcess/NetworkConnectionToWebProcess.messages.in:
- UIProcess/Network/NetworkProcessProxy.cpp:
(WebKit::NetworkProcessProxy::didReceiveSyncMessage):
(WebKit::NetworkProcessProxy::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- UIProcess/Network/NetworkProcessProxy.h:
- UIProcess/Network/NetworkProcessProxy.messages.in:
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- WebProcess/WebCoreSupport/WebChromeClient.h:
- WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::testProcessIncomingSyncMessagesWhenWaitingForSyncReply):
- WebProcess/WebPage/WebPage.h:
(WebKit::WebPage::sendSyncWithDelayedReply):
- WebProcess/WebPage/WebPage.messages.in:
SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply
Add testing infrastructure for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply
flag.
- WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::runJavaScriptAlert):
(WebKit::WebChromeClient::runJavaScriptConfirm):
(WebKit::WebChromeClient::runJavaScriptPrompt):
Use new SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply flag when sending
the synchronous IPC for JS alerts / prompt / confirm. This allows the WebProcess to process
incoming synchronous IPC for other processes (in particular the UIProcess) while it is blocked
on those synchronous IPCs. It is safe to re-enter the WebContent process on these sync IPCs
since they are triggered by JS and we return to JS right after. This should avoid UIProcess
hangs when the UIProcess is sending a sync IPC to the WebContent process, which is itself
stuck on the sync IPC to show a JS alert.
LayoutTests:
Add layout test coverage for SendSyncOption::ProcessIncomingSyncMessagesWhenWaitingForSyncReply.
Without the flag on the sendSync from the WebContent process of the
NetworkConnectionToWebProcess::TestProcessIncomingSyncMessagesWhenWaitingForSyncReply IPC, the
test would hang. This is because the WebContent process sends a sync IPC to the network process,
which in turns sends one to the UIProcess, which itself sends one back to the WebContent process.
This would attempt to re-enter the WebContent process which is currently sending a sync IPC, which
is not allowed by default.
- fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply-expected.txt: Added.
- fast/misc/testProcessIncomingSyncMessagesWhenWaitingForSyncReply.html: Added.
- 8:37 AM Changeset in webkit [247821] by
-
- 16 edits4 adds in trunk
Make storing cross-origin top-level prefetches in HTTP cache optional
https://bugs.webkit.org/show_bug.cgi?id=199499
Patch by Rob Buis <rbuis@igalia.com> on 2019-07-25
Reviewed by Youenn Fablet.
Source/WebCore:
Add Internals API for adding an event listener to prefetch load.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
- bindings/js/JSEventListener.h:
- dom/EventTarget.h:
(WebCore::EventTarget::addEventListener):
- dom/Node.h:
- html/HTMLLinkElement.h:
- testing/Internals.cpp:
(WebCore::Internals::addPrefetchLoadEventListener):
- testing/Internals.h:
- testing/Internals.idl:
Source/WebKit:
Currently when we navigate we check if there is a cross-origin top-level
prefetch we can use for the navigation. The current solution uses the
HTTP cache as a way to store the prefetch and to immediately use it for
the navigation load. However this solution fails in case the prefetch is
not cacheable.
Instead of this, simulate a HTTP Cache entry to process the load and
afterwards try to store the navigation load into the HTTP cache, where
normal store decisions will be applied.
Test: http/wpt/prefetch/link-prefetch-skip-disk-cache.html
- NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::retrieveCacheEntry):
(WebKit::NetworkResourceLoader::retrieveCacheEntryInternal):
- NetworkProcess/NetworkResourceLoader.h:
LayoutTests:
Remove unneeded Cache-Control headers and verify that Cache-Control
effects whether the navigation gets stored in the disk cache or not.
- http/tests/cache/resources/prefetched-main-resource-iframe.php:
- http/tests/cache/resources/prefetched-main-resource.php:
- http/wpt/prefetch/link-prefetch-skip-disk-cache-expected.txt: Added.
- http/wpt/prefetch/link-prefetch-skip-disk-cache.html: Added.
- http/wpt/prefetch/resources/main-resource-skip-disk-cache.py: Added.
(main):
- http/wpt/prefetch/resources/navigate-skip-disk-cache.html: Added.
- platform/mac-wk1/TestExpectations:
- platform/win/TestExpectations:
- 8:35 AM Changeset in webkit [247820] by
-
- 17 edits in trunk
Unreviewed, rolling out r247817.
Broke 14 http/tests/paymentrequest/ tests. on iOS
Reverted changeset:
"Unable to tap/double tap to open files/folders in Google
Drive in Safari"
https://bugs.webkit.org/show_bug.cgi?id=200096
https://trac.webkit.org/changeset/247817
- 12:50 AM Changeset in webkit [247819] by
-
- 13 edits1 add in trunk
[ESNext] Implement nullish coalescing
https://bugs.webkit.org/show_bug.cgi?id=200072
Reviewed by Darin Adler.
JSTests:
- stress/nullish-coalescing.js: Added.
Source/JavaScriptCore:
Implement the nullish coalescing proposal, which has now reached Stage 3 at TC39.
This introduces a ?? operator which:
acts like but checks for nullishness instead of truthiness has a precedence lower than (or any other binary operator) must be disambiguated with parentheses when combined with or && - bytecompiler/NodesCodegen.cpp:
(JSC::CoalesceNode::emitBytecode): Added.
Bytecode must use OpIsUndefinedOrNull and not OpNeqNull because of document.all.
- parser/ASTBuilder.h:
(JSC::ASTBuilder::makeBinaryNode):
- parser/Lexer.cpp:
(JSC::Lexer<T>::lexWithoutClearingLineTerminator):
- parser/NodeConstructors.h:
(JSC::CoalesceNode::CoalesceNode): Added.
- parser/Nodes.h:
Introduce new token and AST node.
- parser/Parser.cpp:
(JSC::Parser<LexerType>::parseBinaryExpression):
Implement early error.
- parser/ParserTokens.h:
Since this patch needs to shift the value of every binary operator token anyway,
let's only bother to increment their LSBs when we actually have a precedence conflict.
- parser/ResultType.h:
(JSC::ResultType::definitelyIsNull const): Added.
(JSC::ResultType::mightBeUndefinedOrNull const): Added.
(JSC::ResultType::forCoalesce): Added.
We can do better than forLogicalOp here; let's be as accurate as possible.
- runtime/Options.h:
Add runtime feature flag.
Tools:
- Scripts/run-jsc-stress-tests: