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

Timeline



Sep 10, 2017:

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

[GStreamer] Drop libgcrypt initialization in webkit_media_clear_key_decrypt_init()
https://bugs.webkit.org/show_bug.cgi?id=176656

Reviewed by Michael Catanzaro.

  • platform/graphics/gstreamer/eme/WebKitClearKeyDecryptorGStreamer.cpp:

(webkit_media_clear_key_decrypt_init): Don't re-initialize libgcrypt here
since that's already done in the WebProcess main(), and the calls here
only result in libgcrypt writing out 'Oops' warnings on stderr.

11:23 PM Changeset in webkit [221849] by mark.lam@apple.com
  • 72 edits in trunk/Source

Fix all ExceptionScope verification failures in JavaScriptCore.
https://bugs.webkit.org/show_bug.cgi?id=176662
<rdar://problem/34352085>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

  1. Introduced EXCEPTION_ASSERT macros so that we can enable exception scope verification for release builds too (though this requires manually setting ENABLE_EXCEPTION_SCOPE_VERIFICATION to 1 in Platform.h).

This is useful because it allows us to run the tests more quickly to check
if any regressions have occurred. Debug builds run so much slower and not
good for a quick turn around. Debug builds are necessary though to get
trace information without inlining by the C++ compiler. This is necessary to
diagnose where the missing exception check is.

  1. Repurposed the JSC_dumpSimulatedThrows=true options to capture and dump the last simulated throw when an exception scope verification fails.

Previously, this option dumps the stack trace on all simulated throws. That
turned out to not be very useful, and slows down the debugging process.
Instead, the new implementation captures the stack trace and only dumps it
if we have a verification failure.

  1. Fixed missing exception checks and book-keeping needed to allow the JSC tests to pass with JSC_validateExceptionChecks=true.
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::OSRExit::executeOSRExit):

  • dfg/DFGOperations.cpp:
  • interpreter/Interpreter.cpp:

(JSC::eval):
(JSC::loadVarargs):
(JSC::Interpreter::unwind):
(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::prepareForRepeatCall):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • jit/JITOperations.cpp:

(JSC::getByVal):

  • jsc.cpp:

(WTF::CustomGetter::customGetterAcessor):
(GlobalObject::moduleLoaderImportModule):
(GlobalObject::moduleLoaderResolve):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):
(JSC::LLInt::setUpCall):

  • parser/Parser.h:

(JSC::Parser::popScopeInternal):

  • runtime/AbstractModuleRecord.cpp:

(JSC::AbstractModuleRecord::hostResolveImportedModule):
(JSC::AbstractModuleRecord::resolveImport):
(JSC::AbstractModuleRecord::resolveExportImpl):
(JSC::getExportedNames):
(JSC::AbstractModuleRecord::getModuleNamespace):

  • runtime/ArrayPrototype.cpp:

(JSC::getProperty):
(JSC::unshift):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
(JSC::concatAppendOne):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
(JSC::arrayProtoPrivateFuncAppendMemcpy):

  • runtime/CatchScope.h:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/DatePrototype.cpp:

(JSC::dateProtoFuncSetTime):
(JSC::setNewValueFromTimeArgs):

  • runtime/DirectArguments.h:

(JSC::DirectArguments::length const):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/ExceptionFuzz.cpp:

(JSC::doExceptionFuzzing):

  • runtime/ExceptionScope.h:

(JSC::ExceptionScope::needExceptionCheck):
(JSC::ExceptionScope::assertNoException):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::defineOwnProperty):

  • runtime/HashMapImpl.h:

(JSC::HashMapImpl::rehash):

  • runtime/IntlDateTimeFormat.cpp:

(JSC::IntlDateTimeFormat::formatToParts):

  • runtime/JSArray.cpp:

(JSC::JSArray::defineOwnProperty):
(JSC::JSArray::put):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::putToPrimitive):
(JSC::JSValue::putToPrimitiveByIndex):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toIndex const):
(JSC::JSValue::get const):
(JSC::JSValue::getPropertySlot const):
(JSC::JSValue::equalSlowCaseInline):

  • runtime/JSGenericTypedArrayViewConstructorInlines.h:

(JSC::constructGenericTypedArrayViewFromIterator):
(JSC::constructGenericTypedArrayViewWithArguments):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::set):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::put):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::decode):
(JSC::globalFuncEval):
(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):
(JSC::globalFuncImportModule):

  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::then):

  • runtime/JSInternalPromiseDeferred.cpp:

(JSC::JSInternalPromiseDeferred::create):

  • runtime/JSJob.cpp:

(JSC::JSJobMicrotask::run):

  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::getOwnPropertySlot):
(JSC::JSModuleEnvironment::put):
(JSC::JSModuleEnvironment::deleteProperty):

  • runtime/JSModuleLoader.cpp:

(JSC::JSModuleLoader::provide):
(JSC::JSModuleLoader::loadAndEvaluateModule):
(JSC::JSModuleLoader::loadModule):
(JSC::JSModuleLoader::linkAndEvaluateModule):
(JSC::JSModuleLoader::requestImportModule):

  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::link):
(JSC::JSModuleRecord::instantiateDeclarations):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::stringify):
(JSC::Stringifier::toJSON):
(JSC::JSONProtoFuncParse):

  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):
(JSC::ordinarySetSlow):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::ordinaryToPrimitive const):
(JSC::JSObject::toPrimitive const):
(JSC::JSObject::hasInstance):
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::toNumber const):
(JSC::JSObject::defineOwnIndexedProperty):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage):
(JSC::JSObject::putDirectIndexBeyondVectorLengthWithArrayStorage):
(JSC::validateAndApplyPropertyDescriptor):
(JSC::JSObject::defineOwnNonIndexProperty):
(JSC::JSObject::getGenericPropertyNames):

  • runtime/JSObject.h:

(JSC::JSObject::get const):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::getPropertySlot const):
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
(JSC::JSObject::putInlineForJSObject):

  • runtime/JSPromiseConstructor.cpp:

(JSC::constructPromise):

  • runtime/JSPromiseDeferred.cpp:

(JSC::JSPromiseDeferred::create):

  • runtime/JSScope.cpp:

(JSC::abstractAccess):
(JSC::JSScope::resolve):
(JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):
(JSC::JSScope::abstractResolve):

  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::tryJSONPParse):
(JSC::LiteralParser<CharType>::parse):

  • runtime/Lookup.h:

(JSC::putEntry):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncToString):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorSetPrototypeOf):
(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::objectConstructorAssign):
(JSC::objectConstructorValues):
(JSC::toPropertyDescriptor):
(JSC::objectConstructorDefineProperty):
(JSC::defineProperties):
(JSC::objectConstructorDefineProperties):
(JSC::ownPropertyKeys):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncToLocaleString):
(JSC::objectProtoFuncToString):

  • runtime/Options.h:
  • runtime/ParseInt.h:

(JSC::toStringView):

  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::performPut):

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectDefineProperty):

  • runtime/RegExpConstructor.cpp:

(JSC::toFlags):
(JSC::regExpCreate):
(JSC::constructRegExp):

  • runtime/RegExpObject.cpp:

(JSC::collectMatches):

  • runtime/RegExpObjectInlines.h:

(JSC::RegExpObject::execInline):
(JSC::RegExpObject::matchInline):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncTestFast):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncMatchFast):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoFuncSplitFast):

  • runtime/ScriptExecutable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::prepareForExecutionImpl):

  • runtime/SetConstructor.cpp:

(JSC::constructSet):

  • runtime/ThrowScope.cpp:

(JSC::ThrowScope::simulateThrow):

  • runtime/VM.cpp:

(JSC::VM::verifyExceptionCheckNeedIsSatisfied):

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

(JSC::protoFuncWeakMapSet):

  • runtime/WeakSetPrototype.cpp:

(JSC::protoFuncWeakSetAdd):

  • wasm/js/WebAssemblyModuleConstructor.cpp:

(JSC::WebAssemblyModuleConstructor::createModule):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::reject):
(JSC::webAssemblyCompileFunc):
(JSC::resolve):
(JSC::webAssemblyInstantiateFunc):

Source/WebCore:

No new tests because this is covered by existing tests with the JSC_validateExceptionChecks=true enabled.

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::tryToConstructCustomElement):

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::whenDefinedPromise):

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMMapLike.cpp:

(WebCore::createBackingMap):

  • bindings/js/JSDOMPromiseDeferred.cpp:

(WebCore::DeferredPromise::callFunction):
(WebCore::DeferredPromise::reject):

  • bindings/js/JSDOMPromiseDeferred.h:

(WebCore::callPromiseFunction):

11:16 PM Changeset in webkit [221848] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.18

Merge r221847 - REGRESSION: [GTK] Generated HTML API documentation is missing descriptions
https://bugs.webkit.org/show_bug.cgi?id=176667

Reviewed by Michael Catanzaro.

Source/WebKit:

Fix several typos in API documentation.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_class_init):

  • UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:

Tools:

This is happening since we moved the implementation files to glib dirs. The generate-gtkdoc script assumes that
header and implementation files are always in the same directory. To reduce the input we pass to gtk-doc we
ignore cpp files for which there isn't a public header. The code to do this check doesn't consider cpp files in
a different directory than the header file. It also assumes that header and cpp files have the same filename
except for the extension, which is true in all cases but WebKitWebView that we have two files WebKitWebView.cpp
and WebKitWebViewGtk.cpp.

  • gtk/generate-gtkdoc:

(files_to_ignore): Check also cpp files with the Gtk suffix.
(files_to_ignore.add_file_if_exists): Check if a file with the given name exists in any of the source dirs.

11:14 PM Changeset in webkit [221847] by Carlos Garcia Campos
  • 7 edits in trunk

REGRESSION: [GTK] Generated HTML API documentation is missing descriptions
https://bugs.webkit.org/show_bug.cgi?id=176667

Reviewed by Michael Catanzaro.

Source/WebKit:

Fix several typos in API documentation.

  • UIProcess/API/glib/WebKitSettings.cpp:

(webkit_settings_class_init):

  • UIProcess/API/glib/WebKitWebView.cpp:

(webkit_web_view_class_init):

  • UIProcess/API/glib/WebKitWebsiteDataManager.cpp:
  • UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:

Tools:

This is happening since we moved the implementation files to glib dirs. The generate-gtkdoc script assumes that
header and implementation files are always in the same directory. To reduce the input we pass to gtk-doc we
ignore cpp files for which there isn't a public header. The code to do this check doesn't consider cpp files in
a different directory than the header file. It also assumes that header and cpp files have the same filename
except for the extension, which is true in all cases but WebKitWebView that we have two files WebKitWebView.cpp
and WebKitWebViewGtk.cpp.

  • gtk/generate-gtkdoc:

(files_to_ignore): Check also cpp files with the Gtk suffix.
(files_to_ignore.add_file_if_exists): Check if a file with the given name exists in any of the source dirs.

10:59 PM Changeset in webkit [221846] by jmarcell@apple.com
  • 1 copy in branches/safari-604.2-branch

New Branch.

10:50 PM Changeset in webkit [221845] by fred.wang@free.fr
  • 2 edits in trunk/Source/WebCore

Make RenderLayerCompositor always use isRootLayer()
https://bugs.webkit.org/show_bug.cgi?id=176591

Patch by Frederic Wang <fwang@igalia.coml> on 2017-09-10
Reviewed by Darin Adler.

RenderLayerCompositor contains a few comparisons of the form &layer == m_renderView.layer().
This patch replaces them with "layer.isRootLayer()" which simply verifies that "layer" is
associated to the one (and only one) RenderView of the RenderLayerCompositor. It makes things
more readable and more consistent with the rest of the file.

No new tests, behavior unchanged.

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::repaintInCompositedAncestor):
(WebCore::RenderLayerCompositor::needsFixedRootBackgroundLayer const):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):

9:49 PM Changeset in webkit [221844] by Matt Baker
  • 6 edits
    19 adds in trunk/Source/WebInspectorUI

Web Inspector: change style of RecordingNavigationSidebarPanel
https://bugs.webkit.org/show_bug.cgi?id=175451
<rdar://problem/34040769>

Reviewed by Devin Rousso.

This patch adds UI polish to the Canvas recording navigation sidebar:

  • New icons for Canvas2D operations
  • Removed extraneous colors: zebra striping, frame element background color
  • Visual action color changed to match details sidebar "changed" color
  • Make tree item indent a convenient multiple of the base indent
  • Move RecordingActionTreeElement styles to a separate file
  • UserInterface/Images/Clip.svg: Added.
  • UserInterface/Images/Composite.svg: Added.
  • UserInterface/Images/Fill.svg: Added.
  • UserInterface/Images/LineStyle.svg: Added.
  • UserInterface/Images/Palette.svg: Added.
  • UserInterface/Images/PathArc.svg: Added.
  • UserInterface/Images/PathCurve.svg: Added.
  • UserInterface/Images/PathEllipse.svg: Added.
  • UserInterface/Images/PathLineTo.svg: Added.
  • UserInterface/Images/PathMoveTo.svg: Added.
  • UserInterface/Images/PathRect.svg: Added.
  • UserInterface/Images/Pixels.svg: Added.
  • UserInterface/Images/PointInPath.svg: Added.
  • UserInterface/Images/PointInStroke.svg: Added.
  • UserInterface/Images/Shadow.svg: Added.
  • UserInterface/Images/Stroke.svg: Added.
  • UserInterface/Images/Text.svg: Added.
  • UserInterface/Images/Transform.svg: Added.

New icons for Canvas2D operations.

  • UserInterface/Main.html:

New file.

  • UserInterface/Views/GeneralTreeElement.js:

(WI.GeneralTreeElement.prototype.customTitleTooltip):
(WI.GeneralTreeElement.prototype._updateTitleTooltip):
Allow derived classes to supply a custom tooltip, when
simply getting the title element text is insufficient.

  • UserInterface/Views/RecordingActionTreeElement.css: Added.

(.item.action.initial-state > .icon):
(.tree-outline:not(:focus, .force-focus) .item.action:not(.initial-state, .parent, .invalid) > .icon):
(.item.action:not(.initial-state)::before):
(body[dir=ltr] .item.action::before):
(body[dir=rtl] .item.action::before):
(.tree-outline:matches(:focus, .force-focus) .item.action.selected:not(.initial-state, .invalid) > .icon):
(body:not(.window-inactive, .window-docked-inactive) :matches(:focus, .force-focus) .item.action.selected > .titles .parameter.swizzled,):
(.tree-outline[data-indent="1"] .item.action::before,):
(.tree-outline[data-indent="3"] .item.action::before):
(.tree-outline[data-indent="4"] .item.action::before):
(.tree-outline[data-indent="5"] .item.action::before):
(.tree-outline[data-indent="6"] .item.action::before):
(.tree-outline[data-indent="7"] .item.action::before):
(body[dir=ltr] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(body[dir=rtl] .tree-outline:not(.hide-disclosure-buttons) .item.action:not(.initial-state, .parent) > .icon):
(.item.action.visual:not(.selected, .invalid)):
(.item.action.attribute > .titles .parameters::before):
(.item.action:not(.attribute) > .titles .parameters::before):
(.item.action:not(.attribute) > .titles .parameters::after):
(.item.action > .titles .parameter:not(:last-child)::after):
(.item.action:not(.selected) > .titles .parameter.swizzled):
(.item.action.composite > .icon):
(.item.action.fill > .icon):
(.item.action.image > .icon):
(.item.action.line-style > .icon):
(.item.action.shadow > .icon):
(.item.action.stroke > .icon):
(.item.action.style > .icon):
(.item.action.text > .icon):
(.item.action.transform > .icon):
(.item.action.arc > .icon):
(.item.action.clip > .icon):
(.item.action.curve > .icon):
(.item.action.ellipse > .icon):
(.item.action.line-to > .icon):
(.item.action.move-to > .icon):
(.item.action.point-in-path > .icon):
(.item.action.point-in-stroke > .icon):
(.item.action.rect > .icon):
(.item.action.restore > .icon):
(.item.action.save > .icon):
(.item.action.invalid > .icon):

  • UserInterface/Views/RecordingActionTreeElement.js:

(WI.RecordingActionTreeElement):
(WI.RecordingActionTreeElement._generateDOM.createParameterElement):
(WI.RecordingActionTreeElement._generateDOM):
(WI.RecordingActionTreeElement._getClassNames):
Broke out into its own helper, to simplify _generateDOM which had
too many responsibilities.

(WI.RecordingActionTreeElement._classNameForAction.classNameForActionName):
(WI.RecordingActionTreeElement._classNameForAction):
Get an icon for the action "type". Actions are grouped by similar
operations. For example, lineCap, lineDash, lineJoin, lineWidth, and
miterLimit are assigned the icon LineStyle.svg.

(WI.RecordingActionTreeElement.prototype.customTitleTooltip):

  • UserInterface/Views/RecordingNavigationSidebarPanel.css:

(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.folder-icon > .icon):
(.sidebar > .panel.navigation.recording > .content > .tree-outline:not(:empty)): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action, .selected).expanded): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content > .tree-outline .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="2"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="3"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="4"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="5"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="6"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline[data-indent="7"] .item.action:not(.initial-state)::before): Deleted.
(.sidebar > .panel.navigation.recording > .content .action > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.function > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.getter > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .tree-outline:matches(:focus, .force-focus) .action.attribute.getter.selected > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.boolean > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.number > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.object > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.attribute.string > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content > .tree-outline > .item.parent:not(.action) > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action:matches(.invalid, .missing) > .icon): Deleted.
(body[dir=ltr] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
(body[dir=rtl] .sidebar > .panel.navigation.recording > .content .action:not(.initial-state) > .icon): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.visual:not(.selected, .invalid)): Deleted.
(.sidebar > .panel.navigation.recording > .content .action:not(.selected, .initial-state) > .titles .parameter.swizzled): Deleted.
(.sidebar > .panel.navigation.recording > .content .action.invalid:not(.selected, .initial-state) > .titles :matches(.name, .parameter.invalid)): Deleted.

  • UserInterface/Views/RecordingNavigationSidebarPanel.js:
9:18 PM Changeset in webkit [221843] by tpopela@redhat.com
  • 1 edit
    2 adds in trunk/LayoutTests

[GTK] DOM operations could behave unexpectedly with certain fonts or font sizes
https://bugs.webkit.org/show_bug.cgi?id=149703

Reviewed by Michael Catanzaro.

Before r221670 (FreeType rebase) this test case would fail due to
bug in FreeType where it was providing wrong font extents for specific
fonts and sizes. Before the rebase the selection was incorrectly
restored on the end of the first line. Adding this new test to catch
any possible regression in the FreeType.

  • fast/dom/Document/CaretRangeFromPoint/restore-selection-from-point-expected.txt: Added.
  • fast/dom/Document/CaretRangeFromPoint/restore-selection-from-point.html: Added.
6:05 PM Changeset in webkit [221842] by mmaxfield@apple.com
  • 18 edits
    6 copies in trunk/Tools

WSL should support while loops
https://bugs.webkit.org/show_bug.cgi?id=176581

Reviewed by Filip Pizlo.

There are a few interesting pieces to this patch:

  1. Because the evaluator is just a node-based descent through the tree, the implementation of break

and continue are just "throw".

  1. The ReturnChecker now has to return a three-state enum because of nested blocks. The outer block

cares about if the inner block has "break" as opposed to it having no returns nor breaks/continues.

  1. ReturnChecker will treat "while (true)" the same as { }, but will not descend deeper for things

like "while (3 == 3)".

  1. This patch also adds a few more boolean conditional functions like operator<().
  2. I added another pass which makes sure there are no bare break/return keywords outside of loops.
  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Break.js: Copied from Tools/WebGPUShadingLanguageRI/CheckUnreachableCode.js.

(Break):
(Break.prototype.get origin):
(Break.prototype.toString):

  • WebGPUShadingLanguageRI/CheckLoops.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.

(checkLoops):

  • WebGPUShadingLanguageRI/CheckReturns.js:

(checkReturns):

  • WebGPUShadingLanguageRI/CheckUnreachableCode.js:

(checkUnreachableCode):

  • WebGPUShadingLanguageRI/Checker.js:
  • WebGPUShadingLanguageRI/Continue.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.

(Continue):
(Continue.prototype.get origin):
(Continue.prototype.toString):

  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitWhileLoop):
(Evaluator.prototype.visitBreak):
(Evaluator.prototype.visitContinue):

  • WebGPUShadingLanguageRI/Intrinsics.js:

(Intrinsics):

  • WebGPUShadingLanguageRI/Lexer.js:

(Lexer.prototype.next):
(Lexer):

  • WebGPUShadingLanguageRI/LoopChecker.js: Copied from Tools/WebGPUShadingLanguageRI/ReturnChecker.js.

(LoopChecker):
(LoopChecker.prototype.visitFuncDef):
(LoopChecker.prototype.visitWhileLoop):
(LoopChecker.prototype.visitBreak):
(LoopChecker.prototype.visitContinue):

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitWhileLoop):

  • WebGPUShadingLanguageRI/Node.js:

(Node.prototype.visit):

  • WebGPUShadingLanguageRI/Parse.js:

(parsePossibleRelationalInequality):
(parseBreak):
(parseContinue):
(parseWhile):

  • WebGPUShadingLanguageRI/Prepare.js:

(prepare):

  • WebGPUShadingLanguageRI/ReturnChecker.js:

(ReturnChecker):
(ReturnChecker.prototype.visitFuncDef):
(ReturnChecker.prototype.visitBlock):
(ReturnChecker.prototype.visitIfStatement):
(ReturnChecker.prototype.visitWhileLoop):
(ReturnChecker.prototype.visitReturn):
(ReturnChecker.prototype.visitBreak):
(ReturnChecker.prototype.visitContinue):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitContinue):
(Rewriter.prototype.visitBreak):
(Rewriter.prototype.visitWhileLoop):
(Rewriter):

  • WebGPUShadingLanguageRI/StandardLibraryPrologue.js:
  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(TEST_returnIf):
(TEST_simpleWhile):

  • WebGPUShadingLanguageRI/UnreachableCodeChecker.js:

(UnreachableCodeChecker):
(UnreachableCodeChecker.prototype.visitBlock):

  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitWhileLoop):
(Visitor.prototype.visitContinue):
(Visitor.prototype.visitBreak):

  • WebGPUShadingLanguageRI/WhileLoop.js: Copied from Tools/WebGPUShadingLanguageRI/CheckReturns.js.

(WhileLoop):
(WhileLoop.prototype.get origin):
(WhileLoop.prototype.get conditional):
(WhileLoop.prototype.get body):
(WhileLoop.prototype.toString):

5:59 PM Changeset in webkit [221841] by commit-queue@webkit.org
  • 4 edits
    6 adds
    4 deletes in trunk/PerformanceTests

Speedometer: Reduce duplication in react-redux test
https://bugs.webkit.org/show_bug.cgi?id=176227

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

Updating react-scripts to a modern version avoids an issue where the generated bundle included the same Object.assign
polyfill multiple times.

  • Speedometer/resources/todomvc/architecture-examples/react-redux/dist/*: Update dist per build instructions.
  • Speedometer/resources/todomvc/architecture-examples/react-redux/package-lock.json: Update dependencies.
  • Speedometer/resources/todomvc/architecture-examples/react-redux/package.json: Update dependencies.
4:34 PM Changeset in webkit [221840] by Jon Davis
  • 3 edits in trunk/Websites/browserbench.org

Minor design changes for browserbench.org landing page
https://bugs.webkit.org/show_bug.cgi?id=176612

Reviewed by Darin Adler.

  • index.html:
  • resources/main.css: Shrink the logos and arrange them into a grid.

(main):
(.benchmarks):
(.benchmarks a):
(.benchmark):
(.benchmark:hover):
(.benchmark img):
(#ares-6-logo): Deleted.
(#motionmark-logo): Deleted.
(#speedometer-logo): Deleted.
(#jetstream-logo): Deleted.

3:56 PM Changeset in webkit [221839] by weinig@apple.com
  • 22 edits in trunk

Finish off the FormData implementation
https://bugs.webkit.org/show_bug.cgi?id=176659

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/XMLHttpRequest/FormData-append-expected.txt:
  • web-platform-tests/XMLHttpRequest/formdata-delete-expected.txt:
  • web-platform-tests/XMLHttpRequest/formdata-foreach-expected.txt:
  • web-platform-tests/XMLHttpRequest/formdata-get-expected.txt:
  • web-platform-tests/XMLHttpRequest/formdata-has-expected.txt:
  • web-platform-tests/XMLHttpRequest/formdata-set-expected.txt:
  • web-platform-tests/XMLHttpRequest/interfaces-expected.txt:


Update results.

Source/WebCore:

  • fileapi/Blob.cpp:
  • fileapi/Blob.h:
  • fileapi/File.cpp:
  • fileapi/File.h:

Add constructors / create functions for making File objects
from an existing Blob or File with an override name.

  • html/DOMFormData.cpp:
  • html/DOMFormData.h:

Add missing operations and iterator implementation
and bring append up to spec by no ignoring empty names.

  • html/DOMFormData.idl:

Bring IDL up to spec. Leave its exposure to just the window for
now, as FormData currently depends on the Document/Page for replace
file generation and therefore cannot operate in a worker.

  • html/FormDataList.cpp:
  • html/FormDataList.h:

Changes FormDataList::Item to a String key and Variant<RefPtr<File>, String>
data, matching spec concepts more cleanly. Normalization / encoding has also
been made lazy, and now does not happen until creating a FormData from the
FormDataList.

Since we now store Files, rather than Blobs, we follow the spec's 'create an
entry' algorithm to convert Blobs into Files with the same backing bytes. This
was previously done as part of FormData::appendKeyValuePairItems.

  • html/HTMLKeygenElement.cpp:

(WebCore::HTMLKeygenElement::appendFormData):

Remove unnecessary conversion to utf8, the data is base64 encoded, allowing
us to remove an overload of appendData that took a CString.

  • inspector/InspectorNetworkAgent.cpp:

(WebCore::buildObjectForResourceRequest):

Update for new signature of FormData::flatten() which now
returns a Vector, rather than takes one in.

  • platform/network/FormData.h:
  • platform/network/FormData.cpp:

(WebCore::FormData::FormData):
(WebCore::FormData::create):
(WebCore::FormData::createMultiPart):

Cleanup redundancy by using auto.


(WebCore::FormData::appendKeyValuePairItems):

Updated to handle new FormDataList item format (e.g. pairs of key / data) allowing
us to remove two-by-two iteration. Some complexity was removed around Blobs, as
FormDataList now always creates File.

Since FormDataList no longer eagerly encodes / normalizes the keys and string data
values, we now perform those operations here.


(WebCore::FormData::expandDataStore):
(WebCore::appendBlobResolved):
(WebCore::FormData::resolveBlobReferences):
(WebCore::FormData::generateFiles):
(WebCore::FormData::hasGeneratedFiles const):
(WebCore::FormData::hasOwnedGeneratedFiles const):
(WebCore::FormData::removeGeneratedFilesIfNeeded):

Adopt auto and modern for-in loops.

(WebCore::FormData::flatten const):
(WebCore::FormData::flattenToString const):

Update flatten to return a Vector, rather than take it in.

3:17 PM Changeset in webkit [221838] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Refactor Document::updateTitleElement to use traits instead of function pointers
https://bugs.webkit.org/show_bug.cgi?id=176671

Reviewed by Sam Weinig.

This template implementation seems slightly more readable and
also likely to be slightly more efficient. Also takes a suggestion
from Antti of factoring out the "select a new title element" into a
function, which is a natural thing to do in this version.

  • dom/Document.cpp:

(WebCore::TitleTraits<HTMLTitleElement>::isInEligibleLocation): Added.
(WebCore::TitleTraits<HTMLTitleElement>::findTitleElement): Added.
(WebCore::TitleTraits<SVGTitleElement>::isInEligibleLocation): Added.
(WebCore::TitleTraits<SVGTitleElement>::findTitleElement): Added.
(WebCore::selectNewTitleElement): Added.
(WebCore::findHTMLTitle): Deleted.
(WebCore::isHTMLTitle): Deleted.
(WebCore::isHTMLTitleEligible): Deleted.
(WebCore::findSVGTitle): Deleted.
(WebCore::isSVGTitle): Deleted.
(WebCore::isSVGTitleEligible): Deleted.
(WebCore::Document::updateTitleElement): Call selectNewTitleElement
instead of having the logic here.

2:49 PM Changeset in webkit [221837] by fpizlo@apple.com
  • 27 edits
    2 adds
    3 deletes in trunk/Tools

WSL overload resolution should not be cascading
https://bugs.webkit.org/show_bug.cgi?id=176333

Reviewed by Myles Maxfield.

This removes the cascading nature of overload resolution that WSL used to have, and replaces it with
something C++-like. If there are multiple overload candidates that match the callsite, then we resolve
them against each other. Anytime a function cannot be resolved onto another function, it is removed,
since this means that this function is in some way more general than the other one, and we are just
looking for the most specific function.

If this process ends with only one function being selected, then we succeed, else we fail.

Also changed the syntax for defining generic casts to:

operator<T> Thingy<T>(things)

Also fixed parsing of cast expressions. It's now possible to say a cast expression in WSL.

The removal of cascading causes some problems. For example, the following two operators in our standard
library are ambiguous for bool(bool):

operator<T> T(T)
operator<T:Equatable> bool(T)

I think that what we really want is to say that the following operators are restricted to the standard
library:

operator<T> T()
operator<T> T(T)

It should not be possible to ever overload these.

These changes are mostly tested by existing tests and the changes in the standard library, which has to
be parsed for every test.

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/ArrayRefType.js:

(ArrayRefType.prototype.unifyImpl):

  • WebGPUShadingLanguageRI/CallExpression.js:

(CallExpression):
(CallExpression.prototype.get isCast):
(CallExpression.prototype.get returnType):
(CallExpression.prototype.resolve):
(CallExpression.prototype.becomeCast):
(CallExpression.prototype.setCastData):
(CallExpression.prototype.toString):

  • WebGPUShadingLanguageRI/Checker.js:
  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitLogicalNot):

  • WebGPUShadingLanguageRI/Func.js:

(Func.prototype.get returnTypeForOverloadResolution):

  • WebGPUShadingLanguageRI/FuncDef.js:

(FuncDef):

  • WebGPUShadingLanguageRI/FuncInstantiator.js:

(FuncInstantiator.prototype.getUnique.FindTypeVariable.prototype.visitTypeVariable):
(FuncInstantiator.prototype.getUnique.FindTypeVariable):
(FuncInstantiator.prototype.getUnique.InstantiationSubstitution.prototype.visitCallExpression):
(FuncInstantiator.prototype.getUnique.InstantiationSubstitution):

  • WebGPUShadingLanguageRI/FunctionLikeBlock.js:

(FunctionLikeBlock.prototype.toString):
(FunctionLikeBlock):

  • WebGPUShadingLanguageRI/InferTypesForCall.js: Added.

(inferTypesForCall):

  • WebGPUShadingLanguageRI/Inline.js:

(resolveInlinedFunction):

  • WebGPUShadingLanguageRI/Lexer.js:

(Lexer):
(Lexer.prototype.next):

  • WebGPUShadingLanguageRI/NameContext.js:

(NameContext):
(NameContext.prototype.mapFor):
(NameContext.prototype.add):
(NameContext.prototype.get let):
(NameContext.prototype.Symbol.iterator):
(NameContext.get currentStatement): Deleted.

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitProgram):
(NameResolver.prototype.determinePossibleOverloads):
(NameResolver.prototype.visitProtocolFuncDecl):
(NameResolver.prototype.visitCallExpression):
(NameResolver):

  • WebGPUShadingLanguageRI/NativeFunc.js:

(NativeFunc):

  • WebGPUShadingLanguageRI/Node.js:

(Node.prototype.visit):

  • WebGPUShadingLanguageRI/Parse.js:

(parsePossiblePrefix):
(parseFuncDecl):
(parseNativeFunc):
(parseNative):
(parsePreferredFuncDef):
(parse):

  • WebGPUShadingLanguageRI/Prepare.js:

(prepare):

  • WebGPUShadingLanguageRI/Program.js:

(Program.prototype.resolveFuncOverload): Deleted.
(Program.prototype.get nameContext): Deleted.

  • WebGPUShadingLanguageRI/ProtocolDecl.js:

(ProtocolDecl.prototype.inherits):
(ProtocolDecl.prototype.hasHeir):

  • WebGPUShadingLanguageRI/PtrType.js:

(PtrType.prototype.unifyImpl):

  • WebGPUShadingLanguageRI/ResolveOverloadImpl.js:

(resolveOverloadImpl):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitProtocolFuncDecl):
(Rewriter.prototype.processDerivedCallData):
(Rewriter.prototype.visitCastExpression): Deleted.

  • WebGPUShadingLanguageRI/StandardLibrary.js: Added.

(preferred.operator.T.T):
(operator.T.Equatable.bool):

  • WebGPUShadingLanguageRI/StandardLibraryEpilogue.js: Removed.
  • WebGPUShadingLanguageRI/StandardLibraryPrologue.js: Removed.
  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(doLex):
(checkUInt):
(checkBool):

  • WebGPUShadingLanguageRI/TypeRef.js:

(TypeRef.prototype.toString):
(TypeRef):

  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitCallExpression):
(Visitor.prototype.visitCastExpression): Deleted.

12:04 PM WebKitGTK/2.18.x edited by Adrian Perez de Castro
(diff)
12:00 PM Changeset in webkit [221836] by fpizlo@apple.com
  • 15 edits
    2 adds in trunk

Error should compute .stack and friends lazily
https://bugs.webkit.org/show_bug.cgi?id=176645

Reviewed by Saam Barati.
JSTests:

  • ChakraCore.yaml: Skip test that was testing non-standard behavior of these fields.
  • microbenchmarks/new-error.js: Added.
  • microbenchmarks/throw.js: Added.

Source/JavaScriptCore:


Building the string portion of the stack trace after we walk the stack accounts for most of
the cost of computing the .stack property. So, this patch makes ErrorInstance hold onto the
Vector<StackFrame> so that it can build the string only once it's really needed.

This is an enormous speed-up for programs that allocate and throw exceptions.

It's a 5.6x speed-up for "new Error()" with a stack that is 4 functions deep.

It's a 2.2x speed-up for throwing and catching an Error.

It's a 1.17x speed-up for the WSL test suite (which throws a lot).

It's a significant speed-up on many of our existing try-catch microbenchmarks. For example,
delta-blue-try-catch is 1.16x faster.

  • interpreter/Interpreter.cpp:

(JSC::GetStackTraceFunctor::GetStackTraceFunctor):
(JSC::GetStackTraceFunctor::operator() const):
(JSC::Interpreter::getStackTrace):

  • interpreter/Interpreter.h:
  • runtime/Error.cpp:

(JSC::getStackTrace):
(JSC::getBytecodeOffset):
(JSC::addErrorInfo):
(JSC::addErrorInfoAndGetBytecodeOffset): Deleted.

  • runtime/Error.h:
  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::ErrorInstance):
(JSC::ErrorInstance::finishCreation):
(JSC::ErrorInstance::materializeErrorInfoIfNeeded):
(JSC::ErrorInstance::visitChildren):
(JSC::ErrorInstance::getOwnPropertySlot):
(JSC::ErrorInstance::getOwnNonIndexPropertyNames):
(JSC::ErrorInstance::defineOwnProperty):
(JSC::ErrorInstance::put):
(JSC::ErrorInstance::deleteProperty):

  • runtime/ErrorInstance.h:
  • runtime/Exception.cpp:

(JSC::Exception::visitChildren):
(JSC::Exception::finishCreation):

  • runtime/Exception.h:
  • runtime/StackFrame.cpp:

(JSC::StackFrame::visitChildren):

  • runtime/StackFrame.h:

(JSC::StackFrame::StackFrame):

11:55 AM Changeset in webkit [221835] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Fix double resolve assertion in FontFaceSet seen while running tests
https://bugs.webkit.org/show_bug.cgi?id=176525

Reviewed by Brent Fulgham.

  • css/FontFaceSet.cpp:

(WebCore::FontFaceSet::FontFaceSet): Only resolve the promise if the CSSFontFaceSet
is already loaded. Otherwise, we will resolve it later when it calls completedLoading.

9:36 AM Changeset in webkit [221834] by beidson@apple.com
  • 12 edits in trunk

Try to avoid creating the default WKWebsiteDataStore until its actually needed.
<rdar://problem/33164453> and https://bugs.webkit.org/show_bug.cgi?id=176551

Reviewed by Tim Horton.

Source/WebKit:

  • UIProcess/API/APIHTTPCookieStore.cpp:

(API::HTTPCookieStore::cookies):
(API::HTTPCookieStore::setCookie):
(API::HTTPCookieStore::deleteCookie):

  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::defaultDataStore):
(API::WebsiteDataStore::defaultDataStoreExists):

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/C/WKContext.cpp:

(WKContextGetWebsiteDataStore):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(+[WKWebsiteDataStore _defaultDataStoreExists]):

  • UIProcess/API/Cocoa/WKWebsiteDataStorePrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::m_hiddenPageThrottlingTimer):
(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::ensureStorageProcessAndWebsiteDataStore):
(WebKit::WebProcessPool::warmInitialProcess):
(WebKit::WebProcessPool::createNewWebProcessRespectingProcessCountLimit):
(WebKit::WebProcessPool::createWebPage):
(WebKit::WebProcessPool::pageAddedToProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::isAssociatedProcessPool const):

Tools:

  • TestWebKitAPI/Tests/WebKitCocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

2:54 AM Changeset in webkit [221833] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Improve Ctrl+W and Ctrl+Q shortcuts in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=176619

Reviewed by Carlos Garcia Campos.

There are two different problems here. First, Ctrl+W is closing the entire window. That made
sense when I implemented the shortcut a couple years ago, but now MiniBrowser supports tabs
and it should really close only one single tab. Fix that.

Next, the keyboard shortcuts are not using webkit_web_view_try_close() and so are bypassing
onbeforeunload handlers, which are respected when closing with the mouse. Fix that too.

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowTryCloseCurrentWebView):
(browserWindowTryClose):
(browser_window_init):

Sep 9, 2017:

5:21 PM Changeset in webkit [221832] by mark.lam@apple.com
  • 39 edits
    1 copy in trunk

[Re-landing] Use JIT probes for DFG OSR exit.
https://bugs.webkit.org/show_bug.cgi?id=175144
<rdar://problem/33437050>

Not reviewed. Original patch reviewed by Saam Barati.

JSTests:

Disable these tests for debug builds because they run too slow with the new OSR exit.

  • stress/op_mod-ConstVar.js:
  • stress/op_mod-VarConst.js:
  • stress/op_mod-VarVar.js:

Source/JavaScriptCore:

Relanding r221774.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/MacroAssembler.cpp:

(JSC::stdFunctionCallback):

  • assembler/MacroAssemblerPrinter.cpp:

(JSC::Printer::printCallback):

  • assembler/ProbeContext.h:

(JSC::Probe::CPUState::gpr const):
(JSC::Probe::CPUState::spr const):
(JSC::Probe::Context::Context):
(JSC::Probe::Context::arg):
(JSC::Probe::Context::gpr):
(JSC::Probe::Context::spr):
(JSC::Probe::Context::fpr):
(JSC::Probe::Context::gprName):
(JSC::Probe::Context::sprName):
(JSC::Probe::Context::fprName):
(JSC::Probe::Context::gpr const):
(JSC::Probe::Context::spr const):
(JSC::Probe::Context::fpr const):
(JSC::Probe::Context::pc):
(JSC::Probe::Context::fp):
(JSC::Probe::Context::sp):
(JSC::Probe:: const): Deleted.

  • assembler/ProbeFrame.h: Copied from Source/JavaScriptCore/assembler/ProbeFrame.h.
  • assembler/ProbeStack.cpp:

(JSC::Probe::Page::Page):

  • assembler/ProbeStack.h:

(JSC::Probe::Page::get):
(JSC::Probe::Page::set):
(JSC::Probe::Page::physicalAddressFor):
(JSC::Probe::Stack::lowWatermark):
(JSC::Probe::Stack::get):
(JSC::Probe::Stack::set):

  • bytecode/ArithProfile.cpp:
  • bytecode/ArithProfile.h:
  • bytecode/ArrayProfile.h:

(JSC::ArrayProfile::observeArrayMode):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::updateOSRExitCounterAndCheckIfNeedToReoptimize):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addressOfOSRExitCounter): Deleted.

  • bytecode/ExecutionCounter.h:

(JSC::ExecutionCounter::hasCrossedThreshold const):
(JSC::ExecutionCounter::setNewThresholdForOSRExit):

  • bytecode/MethodOfGettingAValueProfile.cpp:

(JSC::MethodOfGettingAValueProfile::reportValue):

  • bytecode/MethodOfGettingAValueProfile.h:
  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGJITCode.cpp:

(JSC::DFG::JITCode::findPC): Deleted.

  • dfg/DFGJITCode.h:
  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::linkOSRExits):
(JSC::DFG::JITCompiler::link):

  • dfg/DFGOSRExit.cpp:

(JSC::DFG::jsValueFor):
(JSC::DFG::restoreCalleeSavesFor):
(JSC::DFG::saveCalleeSavesFor):
(JSC::DFG::restoreCalleeSavesFromVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::copyCalleeSavesToVMEntryFrameCalleeSavesBuffer):
(JSC::DFG::saveOrCopyCalleeSavesFor):
(JSC::DFG::createDirectArgumentsDuringExit):
(JSC::DFG::createClonedArgumentsDuringExit):
(JSC::DFG::OSRExit::OSRExit):
(JSC::DFG::emitRestoreArguments):
(JSC::DFG::OSRExit::executeOSRExit):
(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::adjustAndJumpToTarget):
(JSC::DFG::printOSRExit):
(JSC::DFG::OSRExit::setPatchableCodeOffset): Deleted.
(JSC::DFG::OSRExit::getPatchableCodeOffsetAsJump const): Deleted.
(JSC::DFG::OSRExit::codeLocationForRepatch const): Deleted.
(JSC::DFG::OSRExit::correctJump): Deleted.
(JSC::DFG::OSRExit::emitRestoreArguments): Deleted.
(JSC::DFG::OSRExit::compileOSRExit): Deleted.
(JSC::DFG::OSRExit::compileExit): Deleted.
(JSC::DFG::OSRExit::debugOperationPrintSpeculationFailure): Deleted.

  • dfg/DFGOSRExit.h:

(JSC::DFG::OSRExitState::OSRExitState):
(JSC::DFG::OSRExit::considerAddingAsFrequentExitSite):

  • dfg/DFGOSRExitCompilerCommon.cpp:
  • dfg/DFGOSRExitCompilerCommon.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGThunks.cpp:

(JSC::DFG::osrExitThunkGenerator):
(JSC::DFG::osrExitGenerationThunkGenerator): Deleted.

  • dfg/DFGThunks.h:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::debugCall): Deleted.

  • jit/AssemblyHelpers.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • profiler/ProfilerOSRExit.h:

(JSC::Profiler::OSRExit::incCount):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:
  • runtime/VM.h:
3:54 PM Changeset in webkit [221831] by dino@apple.com
  • 4 edits
    2 adds in trunk

gl.detachShader breaks shader program
https://bugs.webkit.org/show_bug.cgi?id=137689
<rdar://problem/34025056>

Reviewed by Sam Weinig.

Source/WebCore:

It should be possible to compile shaders, attach them to a program,
link the program, detach the shaders, delete the shaders, and then
ask for the uniform and attribute locations. That is, once you've
linked, the shaders can be thrown away.

We were using the attached shaders to look up uniform locations, so
we now keep around a separate map that remembers what shaders were
attached when the program links.

This fixes the bug, but the whole area is still a bit messy. For one,
we're keeping around all the shader information even after it is
no longer used.
See https://bugs.webkit.org/show_bug.cgi?id=98204

Test: fast/canvas/webgl/detachShader-before-accessing-uniform.html

  • platform/graphics/GraphicsContext3D.h: Add another map to remember

what shaders were used when a program was linked.

  • platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:

(WebCore::GraphicsContext3D::mappedSymbolInShaderSourceMap): New helper
to look up a name in our source maps.
(WebCore::GraphicsContext3D::mappedSymbolName): Use the helper, and look
at linked shaders if there are no attached shaders.
(WebCore::GraphicsContext3D::originalSymbolInShaderSourceMap): Does the
reverse of the above.
(WebCore::GraphicsContext3D::originalSymbolName):
(WebCore::GraphicsContext3D::linkProgram): Add to the new map.
(WebCore::GraphicsContext3D::deleteProgram): Delete the program from
our shader entries.

LayoutTests:

Test that detaches and deletes shaders after linking, but before
asking for uniform locations.

  • fast/canvas/webgl/detachShader-before-accessing-uniform-expected.txt: Added.
  • fast/canvas/webgl/detachShader-before-accessing-uniform.html: Added.
3:35 PM Changeset in webkit [221830] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm as flaky.
https://bugs.webkit.org/show_bug.cgi?id=176661

Unreviewed test gardening.

  • platform/win/TestExpectations:
3:07 PM Changeset in webkit [221829] by fpizlo@apple.com
  • 13 edits
    1 add in trunk/Tools

Add "if" statements to WSL
https://bugs.webkit.org/show_bug.cgi?id=176294

Patch by Myles C. Maxfield <mmaxfield@apple.com> on 2017-09-07
Reviewed by Filip Pizlo.

Rolling back in after skipping Test.js on debug.

Fairly straightforward implementation. ReturnChecker only returns true iff there is an else block,
and both the if body and the else body recursively return true.

In order to accept both syntaxes:
if (foo)

bar;

... and ...
if (foo) {

bar;

}
This patch lets parseStatement() call parseBlock(). This means that the following is valid:
int x = 7;
if (foo) {

int x = 8;
x is 8 here!

}
x is 7 here!

This production means that these blocks don't require "if" statements, so you can just have:
int foo() {

int x = 7;
{

int x = 8;
x is 8 here!

}
x is 7 here!

}

However, this patch doesn't touch the following use-case:
if (int x = bar()) {

use x here

}

  • WebGPUShadingLanguageRI/All.js:
  • WebGPUShadingLanguageRI/Checker.js:
  • WebGPUShadingLanguageRI/Evaluator.js:

(Evaluator.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/IfStatement.js: Copied from Tools/WebGPUShadingLanguageRI/TypeDef.js.

(IfStatement):
(IfStatement.prototype.get origin):
(IfStatement.prototype.get conditional):
(IfStatement.prototype.get body):
(IfStatement.prototype.get elseBody):
(IfStatement.prototype.toString):

  • WebGPUShadingLanguageRI/NameResolver.js:

(NameResolver.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/Parse.js:

(parseTypeParameters):
(parseIfStatement):
(parseStatement):

  • WebGPUShadingLanguageRI/ReturnChecker.js:

(ReturnChecker.prototype.visitIfStatement):

  • WebGPUShadingLanguageRI/Rewriter.js:

(Rewriter.prototype.visitIfStatement):
(Rewriter):

  • WebGPUShadingLanguageRI/Test.html:
  • WebGPUShadingLanguageRI/Test.js:

(TEST_variableShadowing):
(TEST_ifStatement):
(TEST_ifElseStatement):
(TEST_ifElseIfStatement):
(TEST_ifElseIfElseStatement):
(TEST_returnIf):
(TEST_protocolMonoPolySigDoublePolyDefExplicit): Deleted.

  • WebGPUShadingLanguageRI/TypeDef.js:

(TypeDef.prototype.toString):
(TypeDef):

  • WebGPUShadingLanguageRI/Visitor.js:

(Visitor.prototype.visitIfStatement):

2:35 PM Changeset in webkit [221828] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark svg/animations/animations-paused-in-background-page-iframe.html as a flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=176660

Unreviewed test gardening.

  • platform/win/TestExpectations:
12:26 PM Changeset in webkit [221827] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Unreviewed, fix typo forwad -> forward

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowUpdateNavigationActions):
(backForwardlistChanged):
(browserWindowSwitchTab):
(backForwadlistChanged): Deleted.

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

Skip web platform tests on Windows since many of them are very slow.
https://bugs.webkit.org/show_bug.cgi?id=176657

Unreviewed test gardening.

  • platform/win/TestExpectations:
9:58 AM Changeset in webkit [221825] by Ryan Haddad
  • 4 edits in trunk/Tools

Unreviewed, rolling out r221801.

This change introduced a webkitpy test failure.

Reverted changeset:

"bisect-builds doesn't work due to missing requests module"
https://bugs.webkit.org/show_bug.cgi?id=175709
http://trac.webkit.org/changeset/221801

9:56 AM Changeset in webkit [221824] by Ryan Haddad
  • 12 edits
    1 delete in trunk/Tools

Unreviewed, rolling out r221776.

This change caused wsl-tests.yaml/Test.js to time out on Debug
JSC bots.

Reverted changeset:

"Add "if" statements to WSL"
https://bugs.webkit.org/show_bug.cgi?id=176294
http://trac.webkit.org/changeset/221776

9:54 AM Changeset in webkit [221823] by Ryan Haddad
  • 35 edits
    1 delete in trunk/Source/JavaScriptCore

Unreviewed, rolling out r221774.

This change introduced three debug JSC test timeouts.

Reverted changeset:

"Use JIT probes for DFG OSR exit."
https://bugs.webkit.org/show_bug.cgi?id=175144
http://trac.webkit.org/changeset/221774

9:21 AM Changeset in webkit [221822] by mark.lam@apple.com
  • 191 edits in trunk/Source

Avoid duplicate computations of ExecState::vm().
https://bugs.webkit.org/show_bug.cgi?id=176647

Reviewed by Saam Barati.

Source/JavaScriptCore:

Because while computing ExecState::vm() is cheap, it is not free.

This patch also:

  1. gets rids of some convenience methods in CallFrame that implicitly does a ExecState::vm() computation. This minimizes the chance of us accidentally computing ExecState::vm() more than necessary.
  2. passes vm (when available) to methodTable().
  3. passes vm (when available) to JSLockHolder.
  • API/JSBase.cpp:

(JSCheckScriptSyntax):
(JSGarbageCollect):
(JSReportExtraMemoryCost):
(JSSynchronousGarbageCollectForDebugging):
(JSSynchronousEdenCollectForDebugging):

  • API/JSCallbackConstructor.h:

(JSC::JSCallbackConstructor::create):

  • API/JSCallbackObject.h:

(JSC::JSCallbackObject::create):

  • API/JSContext.mm:

(-[JSContext setException:]):

  • API/JSContextRef.cpp:

(JSContextGetGlobalObject):
(JSContextCreateBacktrace):

  • API/JSManagedValue.mm:

(-[JSManagedValue value]):

  • API/JSObjectRef.cpp:

(JSObjectMake):
(JSObjectMakeFunctionWithCallback):
(JSObjectMakeConstructor):
(JSObjectMakeFunction):
(JSObjectSetPrototype):
(JSObjectHasProperty):
(JSObjectGetProperty):
(JSObjectSetProperty):
(JSObjectSetPropertyAtIndex):
(JSObjectDeleteProperty):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):
(JSObjectIsFunction):
(JSObjectCallAsFunction):
(JSObjectCallAsConstructor):
(JSObjectCopyPropertyNames):
(JSPropertyNameAccumulatorAddName):

  • API/JSScriptRef.cpp:
  • API/JSTypedArray.cpp:

(JSValueGetTypedArrayType):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayBuffer):
(JSObjectMakeArrayBufferWithBytesNoCopy):
(JSObjectGetArrayBufferBytesPtr):

  • API/JSWeakObjectMapRefPrivate.cpp:
  • API/JSWrapperMap.mm:

(constructorHasInstance):
(makeWrapper):

  • API/ObjCCallbackFunction.mm:

(objCCallbackFunctionForInvocation):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::jettison):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::addConstant):
(JSC::CodeBlock::replaceConstant):

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFromLLInt):
(JSC::PutByIdStatus::computeFor):

  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::ArrayBufferViewWatchpointAdaptor::add):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::globalThisObjectFor):

  • dfg/DFGOperations.cpp:
  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileFTLOSRExit):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationMaterializeObjectInOSR):

  • heap/GCAssertions.h:
  • inspector/InjectedScriptHost.cpp:

(Inspector::InjectedScriptHost::wrapper):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::subtype):
(Inspector::constructInternalProperty):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSJavaScriptCallFrame.cpp:

(Inspector::valueForScopeLocation):
(Inspector::JSJavaScriptCallFrame::scopeDescriptions):
(Inspector::toJS):

  • inspector/ScriptCallStackFactory.cpp:

(Inspector::extractSourceInformationFromException):
(Inspector::createScriptArguments):

  • interpreter/CachedCall.h:

(JSC::CachedCall::CachedCall):

  • interpreter/CallFrame.h:

(JSC::ExecState::atomicStringTable const): Deleted.
(JSC::ExecState::propertyNames const): Deleted.
(JSC::ExecState::emptyList const): Deleted.
(JSC::ExecState::interpreter): Deleted.
(JSC::ExecState::heap): Deleted.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::executeProgram):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeModuleProgram):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JITOperations.cpp:
  • jit/JITWorklist.cpp:

(JSC::JITWorklist::compileNow):

  • jsc.cpp:

(WTF::RuntimeArray::create):
(WTF::RuntimeArray::getOwnPropertySlot):
(WTF::DOMJITGetter::DOMJITAttribute::slowCall):
(WTF::DOMJITFunctionObject::unsafeFunction):
(WTF::DOMJITCheckSubClassObject::unsafeFunction):
(GlobalObject::moduleLoaderFetch):
(functionDumpCallFrame):
(functionCreateRoot):
(functionGetElement):
(functionSetElementRoot):
(functionCreateSimpleObject):
(functionSetHiddenValue):
(functionCreateProxy):
(functionCreateImpureGetter):
(functionCreateCustomGetterObject):
(functionCreateDOMJITNodeObject):
(functionCreateDOMJITGetterObject):
(functionCreateDOMJITGetterComplexObject):
(functionCreateDOMJITFunctionObject):
(functionCreateDOMJITCheckSubClassObject):
(functionGCAndSweep):
(functionFullGC):
(functionEdenGC):
(functionHeapSize):
(functionShadowChickenFunctionsOnStack):
(functionSetGlobalConstRedeclarationShouldNotThrow):
(functionJSCOptions):
(functionFailNextNewCodeBlock):
(functionMakeMasquerader):
(functionDumpTypesForAllVariables):
(functionFindTypeForExpression):
(functionReturnTypeFor):
(functionDumpBasicBlockExecutionRanges):
(functionBasicBlockExecutionCount):
(functionDrainMicrotasks):
(functionGenerateHeapSnapshot):
(functionEnsureArrayStorage):
(functionStartSamplingProfiler):
(runInteractive):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • parser/ModuleAnalyzer.cpp:

(JSC::ModuleAnalyzer::ModuleAnalyzer):

  • profiler/ProfilerBytecode.cpp:

(JSC::Profiler::Bytecode::toJS const):

  • profiler/ProfilerBytecodeSequence.cpp:

(JSC::Profiler::BytecodeSequence::addSequenceProperties const):

  • profiler/ProfilerBytecodes.cpp:

(JSC::Profiler::Bytecodes::toJS const):

  • profiler/ProfilerCompilation.cpp:

(JSC::Profiler::Compilation::toJS const):

  • profiler/ProfilerCompiledBytecode.cpp:

(JSC::Profiler::CompiledBytecode::toJS const):

  • profiler/ProfilerDatabase.cpp:

(JSC::Profiler::Database::toJS const):

  • profiler/ProfilerEvent.cpp:

(JSC::Profiler::Event::toJS const):

  • profiler/ProfilerOSRExit.cpp:

(JSC::Profiler::OSRExit::toJS const):

  • profiler/ProfilerOrigin.cpp:

(JSC::Profiler::Origin::toJS const):

  • profiler/ProfilerProfiledBytecodes.cpp:

(JSC::Profiler::ProfiledBytecodes::toJS const):

  • runtime/AbstractModuleRecord.cpp:

(JSC::identifierToJSValue):
(JSC::AbstractModuleRecord::resolveExportImpl):
(JSC::getExportedNames):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):

  • runtime/BooleanConstructor.cpp:

(JSC::constructBooleanFromImmediateBoolean):

  • runtime/CallData.cpp:

(JSC::call):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::tryCachePutToScopeGlobal):
(JSC::CommonSlowPaths::tryCacheGetFromScopeGlobal):

  • runtime/Completion.cpp:

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

  • runtime/ConstructData.cpp:

(JSC::construct):

  • runtime/DatePrototype.cpp:

(JSC::dateProtoFuncToJSON):

  • runtime/DirectArguments.h:

(JSC::DirectArguments::length const):

  • runtime/DirectEvalExecutable.cpp:

(JSC::DirectEvalExecutable::create):

  • runtime/ErrorPrototype.cpp:

(JSC::errorProtoFuncToString):

  • runtime/ExceptionHelpers.cpp:

(JSC::createUndefinedVariableError):
(JSC::errorDescriptionForValue):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunction):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertyNames):

  • runtime/IdentifierInlines.h:

(JSC::Identifier::add):

  • runtime/IndirectEvalExecutable.cpp:

(JSC::IndirectEvalExecutable::create):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createSubclassStructureSlow):

  • runtime/JSArray.cpp:

(JSC::JSArray::getOwnPropertySlot):
(JSC::JSArray::put):
(JSC::JSArray::deleteProperty):
(JSC::JSArray::getOwnNonIndexPropertyNames):
(JSC::JSArray::isIteratorProtocolFastAndNonObservable):

  • runtime/JSArray.h:

(JSC::JSArray::shiftCountForShift):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpForBacktrace const):

  • runtime/JSDataView.cpp:

(JSC::JSDataView::getOwnPropertySlot):
(JSC::JSDataView::deleteProperty):
(JSC::JSDataView::getOwnNonIndexPropertyNames):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnPropertySlot):
(JSC::JSFunction::deleteProperty):
(JSC::JSFunction::reifyName):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • runtime/JSInternalPromise.cpp:

(JSC::JSInternalPromise::then):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::deleteProperty):

  • runtime/JSMap.cpp:

(JSC::JSMap::isIteratorProtocolFastAndNonObservable):

  • runtime/JSMapIterator.h:

(JSC::JSMapIterator::advanceIter):

  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::getOwnNonIndexPropertyNames):

  • runtime/JSModuleLoader.cpp:

(JSC::printableModuleKey):
(JSC::JSModuleLoader::provide):
(JSC::JSModuleLoader::loadAndEvaluateModule):
(JSC::JSModuleLoader::loadModule):
(JSC::JSModuleLoader::linkAndEvaluateModule):
(JSC::JSModuleLoader::requestImportModule):

  • runtime/JSModuleNamespaceObject.h:
  • runtime/JSModuleRecord.cpp:

(JSC::JSModuleRecord::evaluate):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Stringifier):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):

  • runtime/JSObject.cpp:

(JSC::JSObject::calculatedClassName):
(JSC::JSObject::putByIndex):
(JSC::JSObject::ordinaryToPrimitive const):
(JSC::JSObject::toPrimitive const):
(JSC::JSObject::hasInstance):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putDirectIndexSlowOrBeyondVectorLength):
(JSC::getCustomGetterSetterFunctionForGetterSetter):
(JSC::JSObject::getOwnPropertyDescriptor):
(JSC::JSObject::getMethod):

  • runtime/JSObject.h:

(JSC::JSObject::createRawObject):
(JSC::JSFinalObject::create):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::canPerformFastPutInline):
(JSC::JSObject::putInlineForJSObject):
(JSC::JSObject::hasOwnProperty const):

  • runtime/JSScope.cpp:

(JSC::isUnscopable):
(JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):

  • runtime/JSSet.cpp:

(JSC::JSSet::isIteratorProtocolFastAndNonObservable):

  • runtime/JSSetIterator.h:

(JSC::JSSetIterator::advanceIter):

  • runtime/JSString.cpp:

(JSC::JSString::getStringPropertyDescriptor):

  • runtime/JSString.h:

(JSC::JSString::getStringPropertySlot):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/ModuleProgramExecutable.cpp:

(JSC::ModuleProgramExecutable::create):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncToLocaleString):

  • runtime/ProgramExecutable.h:
  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::getOwnPropertySlot):
(JSC::RegExpObject::deleteProperty):
(JSC::RegExpObject::getOwnNonIndexPropertyNames):
(JSC::RegExpObject::getPropertyNames):
(JSC::RegExpObject::getGenericPropertyNames):
(JSC::RegExpObject::put):

  • runtime/ScopedArguments.h:

(JSC::ScopedArguments::length const):

  • runtime/StrictEvalActivation.h:

(JSC::StrictEvalActivation::create):

  • runtime/StringObject.cpp:

(JSC::isStringOwnProperty):
(JSC::StringObject::deleteProperty):
(JSC::StringObject::getOwnNonIndexPropertyNames):

  • tools/JSDollarVMPrototype.cpp:

(JSC::JSDollarVMPrototype::gc):
(JSC::JSDollarVMPrototype::edenGC):

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::evaluate):

Source/WebCore:

No new tests because this is only a refactoring patch. There is no
significant behavior change.

  • Modules/mediastream/SDPProcessor.cpp:

(WebCore::SDPProcessor::callScript const):

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
(WebCore::JSCustomElementInterface::invokeCallback):

  • bindings/js/JSDOMConvertRecord.h:
  • bindings/js/JSDOMMapLike.h:

(WebCore::forwardSizeToMapLike):
(WebCore::forwardEntriesToMapLike):
(WebCore::forwardKeysToMapLike):
(WebCore::forwardValuesToMapLike):
(WebCore::forwardGetToMapLike):
(WebCore::forwardHasToMapLike):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::jsDOMWindowGetOwnPropertySlotRestrictedAccess):
(WebCore::addCrossOriginWindowOwnPropertyNames):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::reportMemoryForDocumentIfFrameless):

  • bindings/js/JSErrorHandler.cpp:

(WebCore::JSErrorHandler::handleEvent):

  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::getOwnPropertySlotCommon):
(WebCore::putCommon):
(WebCore::addCrossOriginLocationPropertyNames):
(WebCore::addCrossOriginLocationOwnPropertyNames):
(WebCore::JSLocation::defineOwnProperty):
(WebCore::JSLocationPrototype::put):
(WebCore::JSLocationPrototype::defineOwnProperty):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSInterfaceName.cpp:

(WebCore::setJSInterfaceNameConstructor):

  • bindings/scripts/test/JS/JSMapLike.cpp:

(WebCore::setJSMapLikeConstructor):

  • bindings/scripts/test/JS/JSReadOnlyMapLike.cpp:

(WebCore::setJSReadOnlyMapLikeConstructor):

  • bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:

(WebCore::setJSTestActiveDOMObjectConstructor):

  • bindings/scripts/test/JS/JSTestCEReactions.cpp:

(WebCore::setJSTestCEReactionsConstructor):

  • bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:

(WebCore::setJSTestCEReactionsStringifierConstructor):

  • bindings/scripts/test/JS/JSTestCallTracer.cpp:

(WebCore::setJSTestCallTracerConstructor):

  • bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:

(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:

(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):

  • bindings/scripts/test/JS/JSTestDOMJIT.cpp:

(WebCore::setJSTestDOMJITConstructor):

  • bindings/scripts/test/JS/JSTestEnabledBySetting.cpp:

(WebCore::setJSTestEnabledBySettingConstructor):

  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:

(WebCore::setJSTestEventConstructorConstructor):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::setJSTestEventTargetConstructor):

  • bindings/scripts/test/JS/JSTestException.cpp:

(WebCore::setJSTestExceptionConstructor):

  • bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:

(WebCore::setJSTestGenerateIsReachableConstructor):

  • bindings/scripts/test/JS/JSTestGlobalObject.cpp:

(WebCore::setJSTestGlobalObjectConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterNoIdentifier.cpp:

(WebCore::setJSTestIndexedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterThrowingException.cpp:

(WebCore::setJSTestIndexedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestIndexedSetterWithIdentifier.cpp:

(WebCore::setJSTestIndexedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::setJSTestInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:

(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):

  • bindings/scripts/test/JS/JSTestIterable.cpp:

(WebCore::setJSTestIterableConstructor):

  • bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:

(WebCore::setJSTestJSBuiltinConstructorConstructor):

  • bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:

(WebCore::setJSTestMediaQueryListListenerConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterNoIdentifier.cpp:

(WebCore::setJSTestNamedAndIndexedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterThrowingException.cpp:

(WebCore::setJSTestNamedAndIndexedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedAndIndexedSetterWithIdentifier.cpp:

(WebCore::setJSTestNamedAndIndexedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedConstructor.cpp:

(WebCore::setJSTestNamedConstructorConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterNoIdentifier.cpp:

(WebCore::setJSTestNamedDeleterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterThrowingException.cpp:

(WebCore::setJSTestNamedDeleterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIdentifier.cpp:

(WebCore::setJSTestNamedDeleterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedDeleterWithIndexedGetter.cpp:

(WebCore::setJSTestNamedDeleterWithIndexedGetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterCallWith.cpp:

(WebCore::setJSTestNamedGetterCallWithConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterNoIdentifier.cpp:

(WebCore::setJSTestNamedGetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedGetterWithIdentifier.cpp:

(WebCore::setJSTestNamedGetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterNoIdentifier.cpp:

(WebCore::setJSTestNamedSetterNoIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterThrowingException.cpp:

(WebCore::setJSTestNamedSetterThrowingExceptionConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIdentifier.cpp:

(WebCore::setJSTestNamedSetterWithIdentifierConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetter.cpp:

(WebCore::setJSTestNamedSetterWithIndexedGetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithIndexedGetterAndSetter.cpp:

(WebCore::setJSTestNamedSetterWithIndexedGetterAndSetterConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithOverrideBuiltins.cpp:

(WebCore::setJSTestNamedSetterWithOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgableProperties.cpp:

(WebCore::setJSTestNamedSetterWithUnforgablePropertiesConstructor):

  • bindings/scripts/test/JS/JSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltins.cpp:

(WebCore::setJSTestNamedSetterWithUnforgablePropertiesAndOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestNode.cpp:

(WebCore::setJSTestNodeConstructor):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::setJSTestObjConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:

(WebCore::setJSTestOverloadedConstructorsConstructor):

  • bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:

(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):

  • bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:

(WebCore::setJSTestOverrideBuiltinsConstructor):

  • bindings/scripts/test/JS/JSTestPluginInterface.cpp:

(WebCore::setJSTestPluginInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestPromiseRejectionEvent.cpp:

(WebCore::setJSTestPromiseRejectionEventConstructor):

  • bindings/scripts/test/JS/JSTestSerialization.cpp:

(WebCore::setJSTestSerializationConstructor):

  • bindings/scripts/test/JS/JSTestSerializationIndirectInheritance.cpp:

(WebCore::setJSTestSerializationIndirectInheritanceConstructor):

  • bindings/scripts/test/JS/JSTestSerializationInherit.cpp:

(WebCore::setJSTestSerializationInheritConstructor):

  • bindings/scripts/test/JS/JSTestSerializationInheritFinal.cpp:

(WebCore::setJSTestSerializationInheritFinalConstructor):

  • bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:

(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):

  • bindings/scripts/test/JS/JSTestStringifier.cpp:

(WebCore::setJSTestStringifierConstructor):

  • bindings/scripts/test/JS/JSTestStringifierAnonymousOperation.cpp:

(WebCore::setJSTestStringifierAnonymousOperationConstructor):

  • bindings/scripts/test/JS/JSTestStringifierNamedOperation.cpp:

(WebCore::setJSTestStringifierNamedOperationConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationImplementedAs.cpp:

(WebCore::setJSTestStringifierOperationImplementedAsConstructor):

  • bindings/scripts/test/JS/JSTestStringifierOperationNamedToString.cpp:

(WebCore::setJSTestStringifierOperationNamedToStringConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadOnlyAttribute.cpp:

(WebCore::setJSTestStringifierReadOnlyAttributeConstructor):

  • bindings/scripts/test/JS/JSTestStringifierReadWriteAttribute.cpp:

(WebCore::setJSTestStringifierReadWriteAttributeConstructor):

  • bindings/scripts/test/JS/JSTestTypedefs.cpp:

(WebCore::setJSTestTypedefsConstructor):

  • bridge/NP_jsobject.cpp:

(_NPN_SetProperty):
(_NPN_RemoveProperty):
(_NPN_Enumerate):

  • bridge/c/c_instance.cpp:

(JSC::Bindings::CRuntimeMethod::create):

  • bridge/objc/WebScriptObject.mm:

(-[WebScriptObject setValue:forKey:]):
(-[WebScriptObject removeWebScriptKey:]):
(-[WebScriptObject setWebScriptValueAtIndex:value:]):

  • bridge/objc/objc_instance.mm:

(ObjCRuntimeMethod::create):

  • bridge/objc/objc_runtime.h:

(JSC::Bindings::ObjcFallbackObjectImp::create):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertyNames):
(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::put):

  • bridge/runtime_array.h:

(JSC::RuntimeArray::create):

  • bridge/runtime_method.cpp:

(JSC::RuntimeMethod::getOwnPropertySlot):

  • bridge/runtime_method.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::setControllerJSProperty):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):

  • testing/Internals.cpp:

(WebCore::Internals::cloneArrayBuffer):

Source/WebKit:

  • WebProcess/Plugins/Netscape/JSNPMethod.h:

(WebKit::JSNPMethod::create):

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::setProperty):
(WebKit::NPJSObject::removeProperty):
(WebKit::NPJSObject::enumerate):

Source/WebKitLegacy/mac:

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::invokeDefault):
(WebKit::NetscapePluginInstanceProxy::construct):
(WebKit::NetscapePluginInstanceProxy::setProperty):
(WebKit::NetscapePluginInstanceProxy::removeProperty):
(WebKit::NetscapePluginInstanceProxy::enumerate):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyRuntimeMethod::create):

9:15 AM Changeset in webkit [221821] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/canvas-remote-read-remote-video-allowed-with-credentials.html as a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=176653

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:55 AM Changeset in webkit [221820] by pvollan@apple.com
  • 2 edits in trunk/LayoutTests

Mark web platform tests as slow on Windows.

Unreviewed test gardening.

  • platform/win/TestExpectations:
8:31 AM Changeset in webkit [221819] by Michael Catanzaro
  • 2 edits in trunk/Tools

MiniBrowser closes tab instead of window on close signal
https://bugs.webkit.org/show_bug.cgi?id=176587

Reviewed by Carlos Garcia Campos.

This has been broken since we added support for multiple tabs. We need to run try_close for
every open tab, not just the current one. If there are no onbeforeonload handlers then all
tabs will close; if there are some, then they'll be respected, but the remaining tabs will
be closed.

Note that we cannot simply iterate through the tabs of the GtkNotebook, as we'd be deleting
tabs as we go, so save all the tabs into a separate list and then try to close each in turn.

  • MiniBrowser/gtk/BrowserWindow.c:

(browserWindowTryClose):
(browserWindowDeleteEvent):

8:28 AM Changeset in webkit [221818] by zandobersek@gmail.com
  • 4 edits in trunk/LayoutTests

Unreviewed GTK+ gardening.

Added failure expectation for the HTTP test introduced in r221633,
and updated baselines for the editing/execCommand/print.html test.

  • platform/gtk/TestExpectations:
  • platform/gtk/editing/execCommand/print-expected.png:
  • platform/gtk/editing/execCommand/print-expected.txt:
8:02 AM Changeset in webkit [221817] by zandobersek@gmail.com
  • 2 edits in trunk/LayoutTests

Unreviewed GTK+ gardening. Adding ImageOnlyFailure expectations
for reference tests failing after Freetype changes in r221670
and r221724.

  • platform/gtk/TestExpectations:
5:42 AM Changeset in webkit [221816] by zandobersek@gmail.com
  • 5 edits in trunk/Source/WebCore

[EME] MediaKeySession: handle MediaKeys association through a WeakPtr
https://bugs.webkit.org/show_bug.cgi?id=176584

Reviewed by Xabier Rodriguez-Calvar.

Don't keep a raw pointer to the originating MediaKeys object in
MediaKeySession that gets nulled out once MediaKeys is destroyed.
Instead, make MediaKeys a WeakPtrFactory and use a WeakPtr<MediaKeys>
object to maintain the association between MediaKeySession and
MediaKeys.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::create):
(WebCore::MediaKeySession::MediaKeySession):
(WebCore::MediaKeySession::detachKeys): Deleted.

  • Modules/encryptedmedia/MediaKeySession.h:
  • Modules/encryptedmedia/MediaKeys.cpp:

(WebCore::MediaKeys::MediaKeys):
(WebCore::MediaKeys::createSession):
(WebCore::MediaKeys::~MediaKeys): Deleted.

  • Modules/encryptedmedia/MediaKeys.h:
5:38 AM Changeset in webkit [221815] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

[GStreamer] Missing GRefPtr adoptions in MediaPlayerPrivateGStreamerBase, PlaybackPipeline
https://bugs.webkit.org/show_bug.cgi?id=176646

Reviewed by Carlos Garcia Campos.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::registerWebKitGStreamerElements): Adopt the return value
of gst_element_factory_find(), which is transferred in full.

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

(WebCore::PlaybackPipeline::flush): Adopt the return values
of gst_element_get_static_pad() and gst_pad_get_peer(), both being
transferred in full.

5:29 AM Changeset in webkit [221814] by zandobersek@gmail.com
  • 2 edits in trunk/Tools

Unreviewed WPE build fix.

  • TestWebKitAPI/PlatformWPE.cmake:

Link WebCore archives into the TestWebCore binary as a group.

2:35 AM Changeset in webkit [221813] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use RenderLayerBacking::renderer() when possible
https://bugs.webkit.org/show_bug.cgi?id=176585

The private member renderer() is a shorthand for m_owningLayer.renderer(). This patch uses
it in RenderLayerBacking when possible.

Patch by Frederic Wang <fwang@igalia.com> on 2017-09-09
Reviewed by Carlos Garcia Campos.

No new tests, behavior not changed.

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::setContentsNeedDisplay):
(WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):

12:46 AM Changeset in webkit [221812] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebDriver

Merge r221808 - WebDriver: ensure we close all windows handles when closing the session
https://bugs.webkit.org/show_bug.cgi?id=176508

Reviewed by Brian Burg.

The spec says that when closing the session all top level browsing contexts should be closed. We are currently
checking if we have an active top level browsing context and then we try to close it before trying with the
rest. It can happen that we are in an inconsistent state, for example if the current top level browsing context
has been closed by JavaScript or another action and the user didn't switch to another one before closing the
session. In such case, closing the session will fail with NoSuchwindow and any other window open will not be
closed. It's safer to always ask for all window handles and close them, which is what the spec says too.

  • Session.cpp:

(WebDriver::firstWindowHandleInResult): Helper class to get the first window handle in the result array.
(WebDriver::Session::closeAllToplevelBrowsingContexts): Use firstWindowHandleInResult().
(WebDriver::Session::close): Close the current top level browsing context and get all window handles to close
them all if needed.

12:45 AM Changeset in webkit [221811] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r221677 - Missing break in URLParser
https://bugs.webkit.org/show_bug.cgi?id=176357

Reviewed by Darin Adler.

Add a missing break so the currently set state is not overwritten
after the block. Found by Coverity scan.

  • platform/URLParser.cpp:

(WebCore::URLParser::parse):

12:44 AM Changeset in webkit [221810] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/WebCore

Merge r221742 - [ARM] Building FELightningNEON.cpp fails due to missing {Point,Spot}LightSource declarations
https://bugs.webkit.org/show_bug.cgi?id=176531

Reviewed by Žan Doberšek.

The m_lightSource member is a Ref<LightSource>, and its get() method returns
a reference, therefore the casts have to be done to the corresponding reference
types.

  • platform/graphics/cpu/arm/filters/FELightingNEON.h:

(WebCore::FELighting::platformApplyNeon): Adjust casts and member accesses accordingly.

12:42 AM Changeset in webkit [221809] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.18/Source/bmalloc

Merge r221588 - Unreviewed build fix for Clang with libc++

Fixes a build failure when building with Clang, -stdlib=libc++, and gigacage
support enabled, which resulted in "stderr" being undefined.

  • bmalloc/Gigacage.cpp: Add missing <ctsdio> include to pull the definition.
12:14 AM Changeset in webkit [221808] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebDriver

WebDriver: ensure we close all windows handles when closing the session
https://bugs.webkit.org/show_bug.cgi?id=176508

Reviewed by Brian Burg.

The spec says that when closing the session all top level browsing contexts should be closed. We are currently
checking if we have an active top level browsing context and then we try to close it before trying with the
rest. It can happen that we are in an inconsistent state, for example if the current top level browsing context
has been closed by JavaScript or another action and the user didn't switch to another one before closing the
session. In such case, closing the session will fail with NoSuchwindow and any other window open will not be
closed. It's safer to always ask for all window handles and close them, which is what the spec says too.

  • Session.cpp:

(WebDriver::firstWindowHandleInResult): Helper class to get the first window handle in the result array.
(WebDriver::Session::closeAllToplevelBrowsingContexts): Use firstWindowHandleInResult().
(WebDriver::Session::close): Close the current top level browsing context and get all window handles to close
them all if needed.

Note: See TracTimeline for information about the timeline view.