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

Timeline



Sep 4, 2016:

11:49 PM Changeset in webkit [205428] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

http/tests/fetch/clone-response-body.html uses an incorrect URL
https://bugs.webkit.org/show_bug.cgi?id=161382

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-04
Reviewed by Darin Adler.

  • http/tests/fetch/clone-response-body.html: Fixing url, increasing delay to ensure non-flakiness.

Adding assertions to ensure load is successful.

11:41 PM Changeset in webkit [205427] by Joseph Pecoraro
  • 4 edits in trunk/Source

Remove unnecessary RetainPtr.

Review comments on earlier change.

Source/WebKit/mac:

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _defaultAnimationController]):

Source/WebKit2:

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _defaultAnimationController]):

10:02 PM Changeset in webkit [205426] by Joseph Pecoraro
  • 32 edits in trunk/Source/WebInspectorUI

Web Inspector: Enable and enforce some recommended and stylistic ESLint rules
https://bugs.webkit.org/show_bug.cgi?id=161567

Reviewed by Brian Burg.

  • .eslintrc:
  • UserInterface/Base/EventListener.js:
  • UserInterface/Base/EventListenerSet.js:
  • UserInterface/Base/MIMETypeUtilities.js:
  • UserInterface/Base/Main.js:
  • UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
  • UserInterface/Controllers/DOMTreeManager.js:
  • UserInterface/Controllers/TimelineManager.js:
  • UserInterface/Models/CSSKeywordCompletions.js:
  • UserInterface/Models/DOMNode.js:
  • UserInterface/Models/DOMNodeStyles.js:
  • UserInterface/Models/Frame.js:
  • UserInterface/Models/Geometry.js:
  • UserInterface/Models/ProfileNode.js:
  • UserInterface/Models/RenderingFrameTimelineRecord.js:
  • UserInterface/Models/SourceCodeLocation.js:
  • UserInterface/Protocol/RemoteObject.js:
  • UserInterface/Views/ApplicationCacheFrameContentView.js:
  • UserInterface/Views/ContextMenu.js:
  • UserInterface/Views/DOMTreeContentView.js:
  • UserInterface/Views/DOMTreeElement.js:
  • UserInterface/Views/DataGrid.js:
  • UserInterface/Views/GeneralTreeElement.js:
  • UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
  • UserInterface/Views/LogContentView.js:
  • UserInterface/Views/OpenResourceDialog.js:
  • UserInterface/Views/StyleDetailsPanel.js:
  • UserInterface/Views/VisualStyleDetailsPanel.js:
  • UserInterface/Views/VisualStyleKeywordPicker.js:
  • UserInterface/Views/VisualStylePropertyEditor.js:
  • UserInterface/Workers/Formatter/FormatterWorker.js:
10:02 PM Changeset in webkit [205425] by Joseph Pecoraro
  • 65 edits in trunk/Source/WebInspectorUI

Web Inspector: Run ESLint over UserInterface/Views
https://bugs.webkit.org/show_bug.cgi?id=161564

Reviewed by Brian Burg.

  • .eslintrc:
  • UserInterface/Views/BoxModelDetailsSectionRow.js:
  • UserInterface/Views/ButtonNavigationItem.js:
  • UserInterface/Views/CSSStyleDeclarationSection.js:
  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:
  • UserInterface/Views/CodeMirrorAdditions.js:
  • UserInterface/Views/CodeMirrorEditor.js:
  • UserInterface/Views/CodeMirrorFormatters.js:
  • UserInterface/Views/ColorWheel.js:
  • UserInterface/Views/ComputedStyleDetailsPanel.js:
  • UserInterface/Views/ConsoleMessageView.js:
  • UserInterface/Views/ContentViewContainer.js:
  • UserInterface/Views/CookieStorageContentView.js:
  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
  • UserInterface/Views/DOMStorageContentView.js:
  • UserInterface/Views/DOMTreeElement.js:
  • UserInterface/Views/DOMTreeOutline.js:
  • UserInterface/Views/DashboardContainerView.js:
  • UserInterface/Views/DataGrid.js:
  • UserInterface/Views/DataGridNode.js:
  • UserInterface/Views/DebuggerSidebarPanel.js:
  • UserInterface/Views/DefaultDashboardView.js:
  • UserInterface/Views/FontResourceContentView.js:
  • UserInterface/Views/FormattedValue.js:
  • UserInterface/Views/GradientEditor.js:
  • UserInterface/Views/GradientSlider.js:
  • UserInterface/Views/HeapSnapshotContentView.js:
  • UserInterface/Views/HeapSnapshotDataGridTree.js:
  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:
  • UserInterface/Views/HoverMenu.js:
  • UserInterface/Views/LogContentView.js:
  • UserInterface/Views/MemoryTimelineOverviewGraph.js:
  • UserInterface/Views/MemoryTimelineView.js:
  • UserInterface/Views/NavigationSidebarPanel.js:
  • UserInterface/Views/NetworkTimelineOverviewGraph.js:
  • UserInterface/Views/NewTabContentView.js:
  • UserInterface/Views/ObjectPreviewView.js:
  • UserInterface/Views/ObjectTreeBaseTreeElement.js:
  • UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
  • UserInterface/Views/OverviewTimelineView.js:
  • UserInterface/Views/Popover.js:
  • UserInterface/Views/ProbeSetDetailsSection.js:
  • UserInterface/Views/ProfileDataGridNode.js:
  • UserInterface/Views/ProfileDataGridTree.js:
  • UserInterface/Views/ProfileView.js:
  • UserInterface/Views/ResourceSidebarPanel.js:
  • UserInterface/Views/RulesStyleDetailsPanel.js:
  • UserInterface/Views/ScopeRadioButtonNavigationItem.js:
  • UserInterface/Views/ScriptClusterTimelineView.js:
  • UserInterface/Views/ScriptDetailsTimelineView.js:
  • UserInterface/Views/ScriptProfileTimelineView.js:
  • UserInterface/Views/StackedLineChart.js:
  • UserInterface/Views/StorageSidebarPanel.js:
  • UserInterface/Views/TabBrowser.js:
  • UserInterface/Views/TextEditor.js:
  • UserInterface/Views/TimelineDataGridNode.js:
  • UserInterface/Views/TimelineOverview.js:
  • UserInterface/Views/TimelineRecordFrame.js:
  • UserInterface/Views/TimelineRecordingContentView.js:
  • UserInterface/Views/TimelineTabContentView.js:
  • UserInterface/Views/TreeOutline.js:
  • UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
  • UserInterface/Views/VisualStylePropertyEditor.js:
  • UserInterface/Views/VisualStyleSelectorSection.js:
10:01 PM Changeset in webkit [205424] by Joseph Pecoraro
  • 50 edits in trunk/Source/WebInspectorUI

Web Inspector: Update ESLint rules and run it over most of UserInterface
https://bugs.webkit.org/show_bug.cgi?id=161561

Reviewed by Brian Burg.

  • .eslintrc:

Updated ESLint rules.

  • UserInterface/Base/InspectorFrontendHostStub.js:
  • UserInterface/Base/Main.js:
  • UserInterface/Base/Object.js:
  • UserInterface/Base/Platform.js:
  • UserInterface/Base/Setting.js:
  • UserInterface/Controllers/CSSStyleManager.js:
  • UserInterface/Controllers/CodeMirrorCompletionController.js:
  • UserInterface/Controllers/CodeMirrorTextKillController.js:
  • UserInterface/Controllers/DebuggerManager.js:
  • UserInterface/Controllers/DragToAdjustController.js:
  • UserInterface/Controllers/ReplayManager.js:
  • UserInterface/Controllers/SourceMapManager.js:
  • UserInterface/Controllers/TimelineManager.js:
  • UserInterface/Controllers/TypeTokenAnnotator.js:
  • UserInterface/Controllers/VisualStyleCompletionsController.js:
  • UserInterface/Debug/Bootstrap.js:
  • UserInterface/Debug/UncaughtExceptionReporter.js:
  • UserInterface/Models/CSSRule.js:
  • UserInterface/Models/CallingContextTree.js:
  • UserInterface/Models/CallingContextTreeNode.js:
  • UserInterface/Models/ConsoleCommandResultMessage.js:
  • UserInterface/Models/CookieStorageObject.js:
  • UserInterface/Models/Frame.js:
  • UserInterface/Models/Geometry.js:
  • UserInterface/Models/IssueMessage.js:
  • UserInterface/Models/LayoutTimelineRecord.js:
  • UserInterface/Models/MemoryTimeline.js:
  • UserInterface/Models/NativeFunctionParameters.js:
  • UserInterface/Models/ProfileNode.js:
  • UserInterface/Models/RenderingFrameTimelineRecord.js:
  • UserInterface/Models/Resource.js:
  • UserInterface/Models/ScriptSyntaxTree.js:
  • UserInterface/Models/ScriptTimelineRecord.js:
  • UserInterface/Models/StackTrace.js:
  • UserInterface/Models/TypeSet.js:
  • UserInterface/Models/WrappedPromise.js:
  • UserInterface/Protocol/InspectorBackend.js:
  • UserInterface/Protocol/InspectorFrontendAPI.js:
  • UserInterface/Protocol/RemoteObject.js:
  • UserInterface/Protocol/ScriptProfilerObserver.js:
  • UserInterface/Test/FrontendTestHarness.js:
  • UserInterface/Test/InspectorProtocol.js:
  • UserInterface/Test/ProtocolTestHarness.js:
  • UserInterface/Test/Test.js:
  • UserInterface/Test/TestHarness.js:
  • UserInterface/Test/TestSuite.js:
  • UserInterface/Workers/Formatter/EsprimaFormatter.js:
  • UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:
8:14 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
8:13 PM Changeset in webkit [205423] by Michael Catanzaro
  • 5 edits
    1 add in trunk/LayoutTests

Miscellaneous unreviewed GTK test gardening

  • platform/gtk/TestExpectations:
  • platform/gtk/accessibility/math-multiscript-attributes-expected.txt:
  • platform/gtk/css1/box_properties/float_on_text_elements-expected.txt:
  • platform/gtk/editing/pasteboard/image-in-iframe-expected.txt: Added.
  • platform/gtk/editing/pasteboard/onpaste-text-html-expected.txt:
8:11 PM Changeset in webkit [205422] by weinig@apple.com
  • 29 edits in trunk/Source/WebCore

Remove the CREATE_DOM_WRAPPER macro
https://bugs.webkit.org/show_bug.cgi?id=161580

Reviewed by Dan Bernstein.

The CREATE_DOM_WRAPPER has irritated me for too long! Replace it
with direct calls to createWrapper<ImplementationType>, which has
been upgraded to not require specifying both the implementation type
and the wrapper type by way of the new JSDOMWrapperConverterTraits
struct which provides mapping from ImplementationType -> JSWrapper.
createWrapper<ImplementationType> has also been upgraded to have a
specialization for when the object being passed in needs to be casted.

  • bindings/js/JSAnimationTimelineCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSBlobCustom.cpp:

(WebCore::toJSNewlyCreated):
(WebCore::constructJSBlob):

  • bindings/js/JSCSSRuleCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSCSSValueCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSDataCueCustom.cpp:

(WebCore::constructJSDataCue):

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::createNewDocumentWrapper):

  • bindings/js/JSDocumentFragmentCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSElementCustom.cpp:

(WebCore::createNewElementWrapper):

  • bindings/js/JSEventCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSFileCustom.cpp:

(WebCore::constructJSFile):

  • bindings/js/JSHTMLCollectionCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSIDBCursorCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSNodeCustom.cpp:

(WebCore::createWrapperInline):

  • bindings/js/JSNodeListCustom.cpp:

(WebCore::createWrapper):

  • bindings/js/JSPerformanceEntryCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSSVGPathSegCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSStyleSheetCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSTextCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSTextTrackCueCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSWebGLRenderingContextBaseCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSXMLDocumentCustom.cpp:

(WebCore::toJSNewlyCreated):

  • dom/make_names.pl:

(printWrapperFunctions):
(printWrapperFactoryCppFile):
Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.

  • bindings/js/JSWorkerGlobalScopeBase.h:

Add #include of JSDOMWrapper.h to allow generated subclasses to use
JSDOMWrapperConverterTraits.

  • bindings/js/JSDOMBinding.h:

(WebCore::castDOMObjectForWrapperCreation): Deleted.
Remove CREATE_DOM_WRAPPER and castDOMObjectForWrapperCreation and
specialize createWrapper.

  • bindings/js/JSDOMWrapper.h:

Forward declare JSDOMWrapperConverterTraits.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
Add specialization of JSDOMWrapperConverterTraits for each header.

(GenerateImplementation):
(GenerateConstructorDefinition):
Replace CREATE_DOM_WRAPPER with direct calls to createWrapper.

11:50 AM Changeset in webkit [205421] by Antti Koivisto
  • 13 edits in trunk/Source/WebCore

Remove Style::PendingResources
https://bugs.webkit.org/show_bug.cgi?id=161574

Reviewed by Andreas Kling.

RenderStyle contains all the information needed to initialize resource loads. There is no need for this side structure.

  • css/CSSFilterImageValue.cpp:

(WebCore::CSSFilterImageValue::loadSubimages):

Load external SVG resources along with any image resources.

  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::styleImage):
(WebCore::CSSToStyleMap::mapFillImage):
(WebCore::CSSToStyleMap::mapNinePieceImage):

  • css/CSSToStyleMap.h:
  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertStyleImage):
(WebCore::StyleBuilderConverter::convertShapeValue):

  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueCursor):
(WebCore::StyleBuilderCustom::applyValueContent):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::State::clear):
(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::createFilterOperations):
(WebCore::StyleResolver::loadPendingResources):
(WebCore::StyleResolver::State::ensurePendingResources): Deleted.
(WebCore::StyleResolver::styleCachedImageFromValue): Deleted.
(WebCore::StyleResolver::styleGeneratedImageFromValue): Deleted.

  • css/StyleResolver.h:

(WebCore::StyleResolver::State::takePendingResources): Deleted.

  • platform/graphics/filters/FilterOperation.cpp:

(WebCore::ReferenceFilterOperation::loadExternalDocumentIfNeeded):
(WebCore::ReferenceFilterOperation::getOrCreateCachedSVGDocumentReference): Deleted.

  • platform/graphics/filters/FilterOperation.h:

(WebCore::ReferenceFilterOperation::cachedSVGDocumentReference):

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::StyleCachedImage):

  • style/StylePendingResources.cpp:

(WebCore::Style::loadPendingResources):

Trigger resource loads by checking pending resources in RenderStyle unconditionally. Keeping track of them
separately wasn't necessary or a meaningful optimization.

(WebCore::Style::loadPendingImages): Deleted.
(WebCore::Style::loadPendingSVGFilters): Deleted.

  • style/StylePendingResources.h:
11:11 AM Changeset in webkit [205420] by mitz@apple.com
  • 5 edits in trunk/Source/WebKit2

[Cocoa] Wrapping XPC service execution in os_activity is no longer needed
https://bugs.webkit.org/show_bug.cgi?id=161577

Reviewed by Sam Weinig.

Removed code that created an os_activity around the execution of the XPC service
code, because this workaround is no longer needed.

  • DatabaseProcess/EntryPoint/mac/XPCService/DatabaseServiceEntryPoint.mm:

(DatabaseServiceInitializer):

  • NetworkProcess/EntryPoint/mac/XPCService/NetworkServiceEntryPoint.mm:

(NetworkServiceInitializer):

  • PluginProcess/EntryPoint/mac/XPCService/PluginServiceEntryPoint.mm:

(PluginServiceInitializer):

  • WebProcess/EntryPoint/mac/XPCService/WebContentServiceEntryPoint.mm:

(WebContentServiceInitializer):

6:42 AM Changeset in webkit [205419] by Antti Koivisto
  • 19 edits in trunk/Source/WebCore

Reverse ownership relation of StyleCachedImage and CSSImageValue
https://bugs.webkit.org/show_bug.cgi?id=161447

Reviewed by Andreas Kling.

Currently StyleCachedImage (which represents an image in RenderStyle) has a weak ref to the
underlying CSSImageValue/CSSImageSetValue which actually owns it. This is awkwards especially since
StyleGeneratedImage, the other StyleImage subclass has reversed relationship where it refs
the underlying CSSImageGeneratorValue.

This patch makes StyleCachedImage similar to StyleGeneratedImage. StyleCachedImage now refs the
underlying CSSImageValue/CSSImageSetValue. CSSImageValues no longer need to know about StyleCachedImage.
Instead they reference CachedImages (memory cache objects) directly. StyleCachedImage instances are now
conceptually unique to RenderStyle instances. Actual resources are shared as before by sharing CachedImages.

  • css/CSSCursorImageValue.cpp:

(WebCore::CSSCursorImageValue::loadImage):
(WebCore::CSSCursorImageValue::cachedImage):
(WebCore::CSSCursorImageValue::styleImage): Deleted.

  • css/CSSCursorImageValue.h:
  • css/CSSImageGeneratorValue.cpp:

(WebCore::CSSImageGeneratorValue::cachedImageForCSSValue):

  • css/CSSImageSetValue.cpp:

(WebCore::CSSImageSetValue::~CSSImageSetValue):
(WebCore::CSSImageSetValue::loadBestFitImage):
(WebCore::CSSImageSetValue::traverseSubresources):
(WebCore::CSSImageSetValue::styleImage): Deleted.

  • css/CSSImageSetValue.h:
  • css/CSSImageValue.cpp:

(WebCore::CSSImageValue::CSSImageValue):
(WebCore::CSSImageValue::~CSSImageValue):
(WebCore::CSSImageValue::isPending):
(WebCore::CSSImageValue::loadImage):
(WebCore::CSSImageValue::traverseSubresources):
(WebCore::CSSImageValue::knownToBeOpaque):
(WebCore::CSSImageValue::styleImage): Deleted.

  • css/CSSImageValue.h:
  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyValueContent):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleImage):
(WebCore::StyleResolver::styleCachedImageFromValue):
(WebCore::StyleResolver::styleGeneratedImageFromValue):
(WebCore::StyleResolver::cachedOrPendingFromValue): Deleted.
(WebCore::StyleResolver::generatedOrPendingFromValue): Deleted.
(WebCore::StyleResolver::setOrPendingFromValue): Deleted.
(WebCore::StyleResolver::cursorOrPendingFromValue): Deleted.

  • css/StyleResolver.h:
  • editing/TextIterator.cpp:

(WebCore::fullyClipsContents):

  • page/PageSerializer.cpp:

(WebCore::PageSerializer::retrieveResourcesForProperties):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::imagesIdentical):

Compare data equality instead of pointer equality for StyleImages (since StyleImages are no longer shared).

(WebCore::layerImagesIdentical): Deleted.

  • rendering/style/StyleCachedImage.cpp:

(WebCore::StyleCachedImage::StyleCachedImage):
(WebCore::StyleCachedImage::~StyleCachedImage):
(WebCore::StyleCachedImage::cachedImage):
(WebCore::StyleCachedImage::cssValue):
(WebCore::StyleCachedImage::canRender):
(WebCore::StyleCachedImage::isPending):
(WebCore::StyleCachedImage::isLoaded):
(WebCore::StyleCachedImage::errorOccurred):
(WebCore::StyleCachedImage::imageSize):
(WebCore::StyleCachedImage::imageHasRelativeWidth):
(WebCore::StyleCachedImage::imageHasRelativeHeight):
(WebCore::StyleCachedImage::computeIntrinsicDimensions):
(WebCore::StyleCachedImage::usesImageContainerSize):
(WebCore::StyleCachedImage::setContainerSizeForRenderer):
(WebCore::StyleCachedImage::addClient):
(WebCore::StyleCachedImage::removeClient):
(WebCore::StyleCachedImage::image):
(WebCore::StyleCachedImage::knownToBeOpaque):
(WebCore::StyleCachedImage::setCachedImage): Deleted.

  • rendering/style/StyleCachedImage.h:
12:10 AM Changeset in webkit [205418] by commit-queue@webkit.org
  • 16 edits
    1 move
    3 adds
    5 deletes in trunk

Unreviewed, rolling out r205415.
https://bugs.webkit.org/show_bug.cgi?id=161573

Many bots see inspector test failures, rolling out now and
investigating later. (Requested by brrian on #webkit).

Reverted changeset:

"Web Inspector: unify Main.html and Test.html sources and
generate different copies with the preprocessor"
https://bugs.webkit.org/show_bug.cgi?id=161212
http://trac.webkit.org/changeset/205415

Sep 3, 2016:

10:45 PM Changeset in webkit [205417] by Wenson Hsieh
  • 16 edits
    1 add in trunk

Media controls behave strangely when videos mute from within a playing handler
https://bugs.webkit.org/show_bug.cgi?id=161559
<rdar://problem/28018438>

Reviewed by Darin Adler.

Source/WebCore:

Defer showing media controls until after the media element has fired its onplaying handler. This handles cases
where videos that autoplay may initially meet the criteria for main content, but once the video begins to play,
the page may change the media in some way (e.g. muting) that makes the video no longer main content. This causes
media controls to flicker in and out.

These changes are covered by existing unit tests, which have been refactored to check media controller state
after all autoplaying videos have begun playing. Also adds an additional unit test.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::notifyAboutPlaying):
(WebCore::HTMLMediaElement::hasEverNotifiedAboutPlaying):

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canShowControlsManager):

Tools:

Accounts for changes when determining whether or not to show media controls for autoplaying videos that have not
begun playing yet. Rather than check for a controlled media element upon page load, we force tests to wait until
all autoplaying videos have actually begun playing. This extends to tests that involve interaction, such as
clicking or scrolling.

  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(-[VideoControlsManagerTestWebView callJavascriptFunction:]):
(-[VideoControlsManagerTestWebView expectControlsManager:afterReceivingMessage:]):
(-[VideoControlsManagerTestWebView performAfterReceivingMessage:action:]):
(-[VideoControlsManagerTestWebView waitForPageToLoadWithAutoplayingVideos:]):
(TestWebKitAPI::TEST):
(-[VideoControlsManagerTestWebView loadTestPageNamed:andExpectControlsManager:afterReceivingMessage:]): Deleted.

  • TestWebKitAPI/Tests/WebKit2Cocoa/autoplaying-video-with-audio.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-hides-controls-after-seek-to-end.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-playing-scroll-away.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-autoplaying-click-to-pause.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-autoplaying-scroll-to-video.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-paused-video-hides-controls.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-playing-muted-video-hides-controls.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-playing-video-keeps-controls.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-with-audio-autoplay.html:
10:09 PM Changeset in webkit [205416] by rniwa@webkit.org
  • 20 edits in trunk

Update the semantics of defined-ness of custom elements per spec changes
https://bugs.webkit.org/show_bug.cgi?id=161570

Reviewed by Darin Adler.

Source/WebCore:

This patch adds the notion of a custom element that failed to construct or upgrade so that :defined
doesn't apply to such an element. We also set the defined flag inside the HTMLElement constructor in
the case of synchronous construction instead of waiting for the custom element constructor to finish.
https://dom.spec.whatwg.org/#concept-create-element

Conceptually, there are four distinct states for an element:

  1. The element is a built-in element
  2. The element is a custom element yet to be defined (an upgrade candidate).
  3. The element is a well-defined custom element (constructed or upgraded).
  4. The element has failed to construct or upgrade as a custom element (because the custom element

constructor threw an exception or returned an unexpected object).

In the latest DOM/HTML specifications, these states are called as 1. "uncustomized", 2. "undefined",

  1. "custom", and 4. "failed": https://dom.spec.whatwg.org/#concept-element-defined

This patch refactors Node flags to introduce these distinct states as the following:

  1. Neither IsCustomElement nor IsEditingTextOrUnresolvedCustomElementFlag is set.
  2. IsCustomElement and IsEditingTextOrUnresolvedCustomElementFlag are set.

isCustomElementUpgradeCandidate() and isUndefinedCustomElement() return true.

  1. IsCustomElement is set and IsEditingTextOrUnresolvedCustomElementFlag is unset.

isDefinedCustomElement() returns true.

  1. IsCustomElement is unset and IsEditingTextOrUnresolvedCustomElementFlag is set.

isFailedCustomElement() and isUndefinedCustomElement() return true.

Per a spec change, this patch also makes :defined applied to a synchronously constructed custom element
immediately after super() call in the constructor. When the constructor throws an exception or fails to
return the right element, the HTML parser marks the fallback element with setIsUndefinedCustomElement.

Tests: fast/custom-elements/defined-pseudo-class.html

fast/custom-elements/defined-rule.html
fast/custom-elements/upgrading/Node-cloneNode.html

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::constructElement): Don't set :defined flag here since that's done
in the HTMLElement constructor now.
(WebCore::JSCustomElementInterface::upgradeElement): Mark the element as failed-to-upgrade as needed.

  • bindings/js/JSElementCustom.cpp:

(WebCore::toJSNewlyCreated):

  • bindings/js/JSHTMLElementCustom.cpp:

(WebCore::constructJSHTMLElement):

  • css/SelectorCheckerTestFunctions.h:

(WebCore::isDefinedElement):

  • dom/CustomElementReactionQueue.cpp:

(WebCore::CustomElementReactionQueue::enqueueElementUpgradeIfDefined): Enqueue custom element reactions
only if the element is well defined (successfully constructed or upgraded).
(WebCore::CustomElementReactionQueue::enqueueConnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueDisconnectedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAdoptedCallbackIfNeeded): Ditto.
(WebCore::CustomElementReactionQueue::enqueueAttributeChangedCallbackIfNeeded): Ditto.

  • dom/CustomElementRegistry.cpp:

(WebCore::enqueueUpgradeInShadowIncludingTreeOrder):

  • dom/Document.cpp:

(WebCore::createUpgradeCandidateElement):
(WebCore::createFallbackHTMLElement):

  • dom/Element.cpp:

(WebCore::Element::attributeChanged):
(WebCore::Element::didMoveToNewDocument):
(WebCore::Element::insertedInto):
(WebCore::Element::removedFrom):
(WebCore::Element::setCustomElementIsResolved): Deleted.
(WebCore::Element::setIsDefinedCustomElement): Renamed from setCustomElementIsResolved.
(WebCore::Element::setIsFailedCustomElement): Added.
(WebCore::Element::setIsCustomElementUpgradeCandidate): Added.
(WebCore::Element::customElementInterface):

  • dom/Element.h:
  • dom/Node.h:

(WebCore::Node::setIsCustomElement): Deleted.
(WebCore::Node::isUndefinedCustomElement): Renamed from isUnresolvedCustomElement.
(WebCore::Node::setIsUnresolvedCustomElement): Deleted.
(WebCore::Node::isCustomElementUpgradeCandidate): Added.
(WebCore::Node::isDefinedCustomElement): Renamed from isCustomElement.
(WebCore::Node::isFailedCustomElement): Added.

  • dom/make_names.pl:

(printWrapperFactoryCppFile): Use the HTMLElement wrapper on upgrade candidates. When a custom element
failed to upgrade, the HTMLElement constructor would have created the wrapper so we never run this code.

  • html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface):

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Mark the HTMLUnknownElement created when
the custom element constructor failed to run successfully as a failed custom element so that :define
wouldn't apply to this element.

LayoutTests:

Added a new test cases to defined-pseudo-class.html, defined-rule.html, and Node-cloneNode.html
and rebaselined the tests.

  • fast/custom-elements/defined-pseudo-class-expected.txt:
  • fast/custom-elements/defined-pseudo-class.html:

(MyElement): Made matchInsideConstructor an instance variable so that there won't be inter-test dependency.
Added test cases for :defined not being not applying to a failed-to-upgrade custom element. Finally, updated
test expectation to reflect the fact :defined now applies inside custom element constructors immediately after
super() call.

  • fast/custom-elements/defined-rule.html: Added a test case for :defined not applying to a failed-to-upgrade

custom element. Also adjusted the height of the last box so that the green box is still 100px by 100px.

  • fast/custom-elements/upgrading/Node-cloneNode-expected.txt:
  • fast/custom-elements/upgrading/Node-cloneNode.html: Added a test to make sure we don't try to upgrade

a custom element for the second time when the first attempt resulted in the constructor throwing an exception.

9:34 PM Changeset in webkit [205415] by BJ Burg
  • 16 edits
    1 copy
    1 move
    4 adds
    3 deletes in trunk

Web Inspector: unify Main.html and Test.html sources and generate different copies with the preprocessor
https://bugs.webkit.org/show_bug.cgi?id=161212
<rdar://problem/28017961>

Reviewed by Joseph Pecoraro.

.:

Rearrange some CMake rules so most Inspector UI work is done in WebInspectorUI.

  • Source/CMakeLists.txt: Add 'WebInspectorUI' subdirectory.
  • Source/PlatformEfl.cmake:
  • Move the rule to copy InspectorBackendCommands.js into WebInspectorUI/CMakeLists.txt.
  • Add a FIXME to use the cross-port list of Inspector resources instead of copying everything.
  • Add new dependency so generated WebInspectorUI files are made by web-inspector-resources.
  • Copy over generated files Main.html and Test.html.
  • Source/PlatformWin.cmake:
  • Add a FIXME to use the cross-port list of Inspector resources instead of copying everything.
  • Add new dependency so generated WebInspectorUI files are made by web-inspector-resources.
  • Copy over generated files Main.html and Test.html.
  • Source/cmake/WebKitFS.cmake:
  • Set up WEBINSPECTORUI_DIR and use it.
  • Move directory creation commands here from JavaScriptCore.
  • Source/cmake/WebKitMacros.cmake:

Add a helper to turn a CMake list into a space-delimited string of elements.

Source/JavaScriptCore:

  • CMakeLists.txt: Remove some unnecessary MAKE_DIRECTORY commands.

Source/WebInspectorUI:

Add a Derived Sources build phase to WebInspectorUI project. Generate
Test.html and Main.html from a combined Inspector.html.in which has preprocessor
macros to include/exclude files not needed by all main resource versions.

Similarly, start generating these Inspector files in WebInspectorUI/CMakeLists.txt.
Move platform-specific bundling commands into PlatformGTK.cmake.

  • CMakeLists.txt: Added.

Set up a list of common frontend resources that specific ports can extend, such as
with their own port-specific image resources. This list is the input to port-specific
packaging/bundling scripts. Eventually, minification and concatenation should happen
independently of the specific port by constructing the list of resources dynamically.

To ensure resources are always generated in WebInspectorUI and accessible from WebKit2,
add a dummy target that is always out of date and depends on generated files, causing
them to be built.

Also create a macro to run the preprocessor over Inspector.html.in using various
preprocessor macro definitions. These are customizable by ports to control the
appearance of ENGINEERING_BUILD, which guards resources not meant for shipping builds.

  • Configurations/WebInspectorUIFramework.xcconfig:

We need to use preprocessor.pm from WebCore. On Mac, this is a private header.
Teach xcodebuild how to compute WEBCORE_PRIVATE_HEADERS_DIR. This is copied
from WebKit2's configuration files.

  • PlatformGTK.cmake: Added.

Add GTK image resources to the resource list. Generate GResource catalog and embedded
C file into DerivedSources. WebKit2 will copy over this file and compile it.

  • Scripts/combine-resources.pl:

(concatenateFiles):
Remove the --strip option as this patch removes the only use of it.

  • DerivedSources.make: Added.

Generate Test.html and Main.html from the new combined Inspector.html.in.
The 'preprocess_main_resource' rule was copied from WebCore's DerivedSources.make.

  • Scripts/cssmin.py: Removed.
  • Scripts/jsmin.py: Removed.

These scripts are copied from JavaScriptCore but nobody uses these copies. Remove them.

  • Scripts/copy-user-interface-resources-dryrun.rb: Do some cleanup.
  • Stage scripts from SRCROOT into the tmpdir so dryrun doesn't require a previous build to process WebInspectorUI resources.
  • Run DerivedSources.make before copying/processing resources.
  • Add some environment variables for new phase and group by script affected.
  • Add a comment to clarify what this script is simulating.
  • Scripts/copy-user-interface-resources.pl:
  • Use Main.html and Test.html from DerivedSources/ instead of SRCROOT.
  • Copy over Main.html and Test.html manually if not combining resources.
  • Remove the command to strip files from Debug/ for production. This is now redundant with ENGINEERING_BUILD guards in Inspector.html.in.
  • Use jsmin.py from JavaScriptCore instead of the local copy.
  • Wrap all multi-argument 'system' invocations so they are readable.
  • Scripts/generate-webinspectorui-derived-sources: Added.

Added boilerplate script to run DerivedSources.make for Mac port.

  • Scripts/preprocess-main-resource.pl: Added.

Trivially invoke the preprocessor on $0 using the given defines.

  • UserInterface/Inspector.html.in: Renamed from Source/WebInspectorUI/UserInterface/Main.html.
  • UserInterface/Test.html: Removed.

Combine Test.html and Main.html into Inspector.html.in. Add these guards:

  • INCLUDE_TEST_RESOURCES: for resources excluded from Main.html.
  • INCLUDE_UI_RESOURCES: for resources excluded from model tests.
  • ENGINEERING_BUILD: for resources not to be shipped (Debug/ directory).
  • WebInspectorUI.xcodeproj/project.pbxproj:
  • Add new aggregate target 'Derived Sources' to project 'WebInspectorUI'.
  • Add dependency on 'Derived Sources' to WebInspectorUI.framework.
  • Remove unused copies of jsmin.py and cssmin.py.

Source/WebKit2:

Rearrange CMake rules so that most Inspector UI work is done in WebInspectorUI.

  • PlatformGTK.cmake:
  • Move the list of Inspector resources into WebInspectorUI/CMakeLists.txt.
  • Move generation of InspectorGResourceBundle into WebInspectorUI.
  • Copy over InspectorGResourceBundle.c into WebKit2's Derived Sources before compiling.
5:38 PM Changeset in webkit [205414] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Change Cmd-D from kill line to selecting next occurrence
https://bugs.webkit.org/show_bug.cgi?id=161514

Patch by Devin Rousso <Devin Rousso> on 2016-09-03
Reviewed by Brian Burg.

  • UserInterface/Controllers/CodeMirrorTextKillController.js:

(WebInspector.CodeMirrorTextKillController):
(WebInspector.CodeMirrorTextKillController.prototype._handleTextChange):
Remove Cmd-D mapping.

  • UserInterface/External/CodeMirror/sublime.js:
  • UserInterface/Main.html:

Add Sublime Text keybinding support.

  • UserInterface/Views/CodeMirrorAdditions.js:

Use Sublime text selectNextOccurrence for Cmd-D instead of deleteLine.

5:27 PM Changeset in webkit [205413] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add keyboard shortcut for switching to last used dock configuration
https://bugs.webkit.org/show_bug.cgi?id=110328

Patch by Devin Rousso <Devin Rousso> on 2016-09-03
Reviewed by Brian Burg.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
(WebInspector.updateDockedState):
(WebInspector._togglePreviousDockConfiguration):
Added variable for saving the previous dock state, which is used by the new Cmd+Shift+D
shortcut to toggle the docked state between the current and previous states.

(WebInspector._undock):
(WebInspector._dockBottom):
(WebInspector._dockRight):
(WebInspector._updateDockNavigationItems):
(WebInspector._dockedResizerMouseDown):
(WebInspector._dockedResizerMouseDown.dockedResizerDrag):
Make use of new WebInspector.DockConfiguration instead of hardcoded strings.

(WebInspector.DockConfiguration):
Create enum for different WebInspector dock modes:

  • Right
  • Bottom
  • Undocked
5:24 PM Changeset in webkit [205412] by Wenson Hsieh
  • 26 edits
    6 adds in trunk

Refactor the heuristic for showing media controls to take all media sessions into account
https://bugs.webkit.org/show_bug.cgi?id=161503
<rdar://problem/28033783>

Reviewed by Darin Adler.

Source/WebCore:

Currently, when selecting a media session to show playback controls for, we grab the first media session that
passes our heuristic. Using this method, we are unable to take additional factors into account, such as whether
another media session's element is scrolled in view, or if another media session has been interacted with more
recently. To address this, we make the following changes:

  1. Consider the list of all MediaElementSessions.
  1. Select only the MediaElementSessions capable of showing media controls and sort the list by a special

heuristic that takes visibility and time of last user interaction into account. The first element on
this list is the strongest candidate for main content.

  1. If this strongest candidate is visible in the viewport, or it is playing with audio, we return this

as the chosen candidate. Otherwise, we return this session only if no other non-candidate video could be
confused as the main content (i.e. the non-candidate video is not only visible in the viewport, but also
large enough to be considered main content).

Using this new method of determining the video to show controls for, we retain previous behavior for pages with
a single video. On pages with multiple videos, the above logic ensures that if the current controlled video is
paused, scrolled out of view, and then a new video is scrolled into view, we will either hide media controls to
avoid confusion if that video could be confused for main content (using the mechanism in step 3), or we
hook up the media controls to the new video if it satisfies main content (using the mechanism in step 2).

This patch also adds 6 new TestWebKitAPI unit tests.

  • html/HTMLMediaElement.cpp:

(WebCore::mediaElementSessionInfoForSession):
(WebCore::preferMediaControlsForCandidateSessionOverOtherCandidateSession):
(WebCore::mediaSessionMayBeConfusedWithMainContent):
(WebCore::bestMediaSessionForShowingPlaybackControlsManager):
(WebCore::HTMLMediaElement::didAttachRenderers):
(WebCore::HTMLMediaElement::layoutSizeChanged):
(WebCore::HTMLMediaElement::isVisibleInViewportChanged):
(WebCore::HTMLMediaElement::resetPlaybackSessionState):
(WebCore::HTMLMediaElement::isVisibleInViewport):
(WebCore::HTMLMediaElement::updatePlaybackControlsManager):

  • html/HTMLMediaElement.h:
  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::removeBehaviorRestriction):
(WebCore::MediaElementSession::canShowControlsManager):
(WebCore::MediaElementSession::isLargeEnoughForMainContent):
(WebCore::MediaElementSession::mostRecentUserInteractionTime):
(WebCore::MediaElementSession::wantsToObserveViewportVisibilityForMediaControls):
(WebCore::MediaElementSession::wantsToObserveViewportVisibilityForAutoplay):
(WebCore::MediaElementSession::resetPlaybackSessionState):
(WebCore::MediaElementSession::canControlControlsManager): Deleted.

  • html/MediaElementSession.h:
  • platform/audio/PlatformMediaSession.h:

(WebCore::PlatformMediaSession::resetPlaybackSessionState):
(WebCore::PlatformMediaSession::canControlControlsManager): Deleted.

  • platform/audio/PlatformMediaSessionManager.cpp:

(WebCore::PlatformMediaSessionManager::currentSessionsMatching):
(WebCore::PlatformMediaSessionManager::currentSessionMatching): Deleted.

  • platform/audio/PlatformMediaSessionManager.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.mm:

(WebPlaybackSessionModelMediaElement::setMediaElement):

Source/WebKit2:

Adds an SPI testing hook for sending the element ID of the currently controlled video element from the web
process to the UI process. See VideoControlsManager.mm in Tools/TestWebKitAPI/ for usage.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _requestControlledElementID]):
(-[WKWebView _handleControlledElementIDResponse:]):
(-[WKWebView _hasActiveVideoForControlsManager]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:

(WebKit::WebPlaybackSessionManagerProxy::handleControlledElementIDResponse):
(WebKit::WebPlaybackSessionManagerProxy::requestControlledElementID):

  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::requestControlledElementID):
(WebKit::WebPageProxy::handleControlledElementIDResponse):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::handleControlledElementIDResponse):

  • WebProcess/cocoa/WebPlaybackSessionManager.h:
  • WebProcess/cocoa/WebPlaybackSessionManager.messages.in:
  • WebProcess/cocoa/WebPlaybackSessionManager.mm:

(WebKit::WebPlaybackSessionManager::handleControlledElementIDRequest):

Tools:

Adds new unit tests verifying the behavior of media playback controls when scrolling another video into view.
Please see the WebCore ChangeLog for more details about this change. Also refactors existing
VideoControlsManager tests by folding duplicated setup and testing logic into helper methods to make the unit
tests more readable.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/VideoControlsManager.mm:

(-[MessageHandler initWithMessage:handler:]):
(-[MessageHandler userContentController:didReceiveScriptMessage:]):
(-[VideoControlsManagerTestWebView performAfterLoading:]):
(-[VideoControlsManagerTestWebView loadTestPageNamed:]):
(-[VideoControlsManagerTestWebView loadTestPageNamed:andExpectControlsManager:afterReceivingMessage:]):
(-[VideoControlsManagerTestWebView performAfterReceivingMessage:action:]):
(-[VideoControlsManagerTestWebView controlledElementID]):
(-[VideoControlsManagerTestWebView _handleControlledElementIDResponse:]):
(TestWebKitAPI::setUpWebViewForTestingVideoControlsManager):
(TestWebKitAPI::TEST):
(-[MediaPlaybackMessageHandler initWithWKWebView:finalMessageString:]): Deleted.
(-[MediaPlaybackMessageHandler userContentController:didReceiveScriptMessage:]): Deleted.
(-[OnLoadMessageHandler initWithWKWebView:handler:]): Deleted.
(-[OnLoadMessageHandler userContentController:didReceiveScriptMessage:]): Deleted.
(-[WKWebView performAfterLoading:]): Deleted.

  • TestWebKitAPI/Tests/WebKit2Cocoa/large-video-playing-scroll-away.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-autoplaying-click-to-pause.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-autoplaying-scroll-to-video.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-paused-video-hides-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-playing-muted-video-hides-controls.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/large-videos-playing-video-keeps-controls.html: Added.
4:34 PM Changeset in webkit [205411] by Darin Adler
  • 33 edits
    2 adds in trunk/Source

Streamline DOMImplementation, and move it to our new DOM exception system
https://bugs.webkit.org/show_bug.cgi?id=161295

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj: Added new headers to project.
  • bindings/js/JSDOMBinding.h:

(WebCore::toJS): Added an overload for ExceptionOr<>; this handles the
exception case here so it doesn't need to be handled in generated code
for the binding. Implemented here so that ExceptionOr.h does not know
about bindings. But since this is a template, it will only compile when
instantiated and there is no need to include ExceptionOr.h and indirectly
the Variant.h header in this header.
(WebCore::toJSNewlyCreated): Ditto.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallbackImplementation): Refer to JSC::Exception with explicit
namespace to avoid ambiguity with WebCore::Exception.

  • dom/DOMImplementation.cpp:

(WebCore::DOMImplementation::createDocumentType): Changed to return
ExceptionOr.
(WebCore::createXMLDocument): Added. Helper used in createDocument.
(WebCore::DOMImplementation::getInterface): Deleted. This was unused.
(WebCore::DOMImplementation::createDocument): Changed to return
ExceptionOr.
(WebCore::DOMImplementation::createCSSStyleSheet): Removed the unused
ExceptionCode out argument.
(WebCore::isValidXMLMIMETypeChar): Deleted. Moved to MIMETypeRegistry.
(WebCore::DOMImplementation::isXMLMIMEType): Ditto.
(WebCore::DOMImplementation::isTextMIMEType): Ditto.

  • dom/DOMImplementation.h: Changed functions as described above to

return ExceptionOr values. Also removed unused getInterface function,
and isXMLMIMEType and isTextMIMEType, which both moved to the
MIMETypeRegistry class alongside all the other similar MIME type
functions.

  • dom/DOMImplementation.idl: Reorganized this to match the IDL files

in the specifications a little better. Also removed [RaisesException]
since that is only needed for the old legacy ExceptionCode& style.

  • dom/Document.cpp:

(WebCore::Document::setXMLVersion): Removed call to the
DOMImplementation::hasFeature function since the values passed in
unconditionally result in the return value "true". This is left over
either from specification language, or from an ancient version of this
code that worked in a "no XML supported" mode.
(WebCore::Document::setXMLStandalone): Ditto.

  • dom/Document.h: Removed the ExceptionCode& out argument from setXMLStandalone.
  • dom/Document.idl: Removed [SetterRaisesException] from xmlStandalone.
  • dom/Exception.h: Added.
  • dom/ExceptionOr.h: Added.
  • html/HTMLTemplateElement.cpp: Removed unneeded include of DOMImplementation.h.
  • inspector/InspectorPageAgent.cpp:

(WebCore::createXHRTextDecoder): Use isXMLMIMEType in its new location in
MIMETypeRegistry.

  • inspector/NetworkResourcesData.cpp:

(WebCore::createOtherResourceTextDecoder): Ditto.

  • loader/FrameLoader.cpp: Removed unneeded include of DOMImplementation.h.
  • loader/TextResourceDecoder.cpp:

(WebCore::TextResourceDecoder::determineContentType): Use isXMLMIMEType in its
new location in MIMETypeRegistry.

  • platform/MIMETypeRegistry.cpp:

(WebCore::MIMETypeRegistry::isTextMIMEType): Added. Moved here from
DOMImplementation.
(WebCore::isValidXMLMIMETypeChar): Ditto.
(WebCore::MIMETypeRegistry::isXMLMIMEType): Ditto.

  • platform/MIMETypeRegistry.h: Added isXMLMIMEType and isTextMIMEType.

Made isUnsupportedTextMIMEType private.

  • svg/SVGElement.cpp:

(WebCore::SVGElement::isSupported): Deleted. This function was never called.

  • svg/SVGElement.h: Updated for the above change.
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::responseIsXML): Use isXMLMIMEType in its new
location in MIMETypeRegistry.

  • xml/parser/XMLDocumentParserLibxml2.cpp:

(WebCore::XMLDocumentParser::startDocument): Updated since setXMLStandalone
no longer can raise an exception.

Source/WebKit/mac:

  • DOM/DOMDOMImplementation.mm:

(unwrap): Added. Use this instead of the IMPL macro.
(-[DOMImplementation dealloc]): Updated to use unwrap.
(-[DOMImplementation hasFeature:version:]): Ditto.
(-[DOMImplementation createDocumentType:publicId:systemId:]): Updated to work with
ExceptionOr.
(-[DOMImplementation createDocument:qualifiedName:doctype:]): Ditto.
(-[DOMImplementation createCSSStyleSheet:media:]): Removed exception logic since
this function can no longer raise an exception.
(-[DOMImplementation createHTMLDocument:]): Updated to use unwrap.
(-[DOMImplementation hasFeature::]): Changed to call the non-deprecated version
rather than duplicating its implementation. Also moved into the category as defined
in the header.
(-[DOMImplementation createDocumentType:::]): Ditto.
(-[DOMImplementation createDocument:::]): Ditto.
(-[DOMImplementation createCSSStyleSheet::]): Ditto.

  • DOM/DOMDocument.mm: Removed unneeded include of DOMImplementation.h.

(-[DOMDocument setXmlStandalone:]): Updated since setXMLStandalone no longer can
raise an exception.

  • WebView/WebFrame.mm:

(-[WebFrame _canProvideDocumentSource]): Updated to use isTextMIMEType in its new
location in MIMETypeRegistry instead of in DOMImplementation.

Source/WebKit/win:

  • WebFrame.cpp:

(WebFrame::canProvideDocumentSource): Updated to use isXMLMIMEType in its new
location in MIMETypeRegistry instead of in DOMImplementation.

Source/WebKit2:

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::isDisplayingMarkupDocument): Use isXMLMIMEType in its
new location in MIMETypeRegistry rather than in DOMImplementation.
(WebKit::WebFrameProxy::isDisplayingPDFDocument): Removed unneeded redundant
check for empty string, already done by MIMETypeRegistry.

4:25 PM Changeset in webkit [205410] by rniwa@webkit.org
  • 7 edits in trunk

Unbreak customElements.whenDefined after r205383 with a crash fix
https://bugs.webkit.org/show_bug.cgi?id=161562

Reviewed by Darin Adler.

Source/WebCore:

The crash was caused by DeferredWrapper::contextDestroyed not calling ContextDestructionObserver::contextDestroyed.

This caused m_scriptExecutionContext to not being set to nullptr when the Document was destroyed before DOMWindow
during a single GC sweeping, and resulted in a use-after-free in ContextDestructionObserver's destructor.

Fixed the crash and reverted r205383.

Tests: fast/custom-elements/CustomElementRegistry.html

  • bindings/js/JSCustomElementRegistryCustom.cpp:

(WebCore::whenDefinedPromise):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::DeferredWrapper::contextDestroyed): Fixed the crash.

  • dom/CustomElementRegistry.cpp:

(WebCore::CustomElementRegistry::addElementDefinition):

  • dom/CustomElementRegistry.h:

(WebCore::CustomElementRegistry::promiseMap):

LayoutTests:

Revert r205383 now that all test cases pass.

  • fast/custom-elements/CustomElementRegistry-expected.txt:
3:50 PM Changeset in webkit [205409] by Chris Dumez
  • 6 edits in trunk

Align cross-Origin Object.getOwnPropertyNames() with the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=161457

Reviewed by Darin Adler.

Source/WebCore:

Align cross-Origin Object.getOwnPropertyNames() with the HTML specification:

We should list cross origin properties.

Firefox complies with the specification. However, WebKit was returning an
empty array and logs a security error message.

No new tests, updated existing test.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::addCrossOriginPropertyNames):
(WebCore::JSDOMWindow::getOwnPropertyNames):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::addCrossOriginPropertyNames):
(WebCore::JSLocation::getOwnPropertyNames):

LayoutTests:

Add test coverage.

  • http/tests/security/cross-frame-access-enumeration-expected.txt:
  • http/tests/security/cross-frame-access-enumeration.html:
2:32 PM Changeset in webkit [205408] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

Constructors of MathML renderers should only accept MathMLPresentationElement-derived classes
https://bugs.webkit.org/show_bug.cgi?id=161378

Patch by Frédéric Wang <fwang@igalia.com> on 2016-09-03
Reviewed by Darin Adler.

We update constructors of RenderMathMLBlock, to only accept MathMLPresentationElement
instances as a parameter. Similarly, we make the constructor of RenderMathMLToken only
accept MathMLTokenElement instances.

No new tests, behavior is unchanged.

  • rendering/mathml/RenderMathMLBlock.cpp:

(WebCore::RenderMathMLBlock::RenderMathMLBlock):

  • rendering/mathml/RenderMathMLBlock.h:
  • rendering/mathml/RenderMathMLToken.cpp:

(WebCore::RenderMathMLToken::RenderMathMLToken):

  • rendering/mathml/RenderMathMLToken.h:
12:58 PM Changeset in webkit [205407] by bweinstein@apple.com
  • 12 edits in trunk/Source

Source/WebCore:
Consult with the FrameLoaderClient about whether or not content extensions should be enabled when loading this URL.
https://bugs.webkit.org/show_bug.cgi?id=161441

Reviewed by Darin Adler.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource): If content extensions aren't already disabled, consult with the
FrameLoaderClient about whether or not we should use content extensions for this URL.

  • loader/FrameLoaderClient.h: Add the FrameLoaderClient call to determine if we should use content extensions for a given

URL...

  • loader/EmptyClients.h: ... And add a stub implementation.

Source/WebKit/mac:
Implement a stub version of FrameLoaderClient::shouldUseContentExtensionsForURL.
https://bugs.webkit.org/show_bug.cgi?id=16144

Reviewed by Darin Adler.

  • WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:
Implement WebFrameLoaderClient::shouldUseContentExtensionsForURL and consult the InjectedBundlePageLoaderClient.
https://bugs.webkit.org/show_bug.cgi?id=161441

Reviewed by Darin Adler.

WebFrameLoaderClient::shouldUseContentExtensionsForURL only consults the injected bundle, because we don't want to
defer the loading of every main resource to consult with the UI Process about whether or not we should use content
extensions for the load.

  • WebProcess/InjectedBundle/API/c/WKBundlePageLoaderClient.h: Bump the latest version to WKBundlePageLoaderClientV9 and

add WKBundlePageShouldUseContentExtensionsForURLCallback.

  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.cpp:

(WebKit::InjectedBundlePageLoaderClient::shouldUseContentExtensionsForURL): Ask the client if we should use content
extensions for this URL.

  • WebProcess/InjectedBundle/InjectedBundlePageLoaderClient.h:
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::shouldUseContentExtensionsForURL): Only consult with the injected bundle about whether
or not we should use content extensions for this URL.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.h:
8:21 AM Changeset in webkit [205406] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Silence -Wparentheses warning triggered by r205266

Unreviewed

  • platform/URL.cpp:

(WebCore::URL::URL):

7:52 AM Changeset in webkit [205405] by commit-queue@webkit.org
  • 12 edits in trunk/Source

Use ASCIILiteral in some more places
https://bugs.webkit.org/show_bug.cgi?id=161557

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-03
Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/TypeSet.h:

(JSC::StructureShape::setConstructorName):

Source/WebCore:

  • Modules/indexeddb/IDBDatabaseException.cpp:

(WebCore::IDBDatabaseException::getErrorName):
(WebCore::IDBDatabaseException::getErrorDescription):

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::binaryType):

  • css/FontFace.cpp:

(WebCore::FontFace::stretch):
(WebCore::FontFace::unicodeRange):
(WebCore::FontFace::featureSettings):

  • html/canvas/WebGLRenderingContextBase.cpp:
  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::initiatorFor):

  • loader/FormSubmission.cpp:

(WebCore::FormSubmission::Attributes::parseEncodingType):

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::toRawString):

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::CGImageToDataURL):
(WebCore::ImageBuffer::toDataURL):
(WebCore::ImageDataToDataURL):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::filenameExtension):

7:44 AM Changeset in webkit [205404] by Chris Dumez
  • 5 edits in trunk

Object.preventExtensions(window) should throw a TypeError
https://bugs.webkit.org/show_bug.cgi?id=161554

Reviewed by Darin Adler.

Source/WebCore:

Object.preventExtensions(window) should throw a TypeError.

PreventExtensions should return false for Window:

EcmaScript says that Object.preventExtensions() should throw a TypeError
if PreventExtension returns false:

No new tests, updated existing test.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::preventExtensions):

LayoutTests:

  • http/tests/security/preventExtensions-window-location-expected.txt:
  • http/tests/security/preventExtensions-window-location.html:
7:42 AM Changeset in webkit [205403] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebKit2

Web Inspector: Move WebKit2 WebInspector files to #pragma once
https://bugs.webkit.org/show_bug.cgi?id=161550

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-03
Reviewed by Darin Adler.

  • UIProcess/InspectorServer/WebInspectorServer.h:
  • UIProcess/WebInspectorProxy.h:
  • UIProcess/gtk/WebInspectorClientGtk.h:
  • WebProcess/WebCoreSupport/WebInspectorClient.h:
  • WebProcess/WebPage/WebInspector.h:
  • WebProcess/WebPage/WebInspectorFrontendAPIDispatcher.h:
  • WebProcess/WebPage/WebInspectorUI.h:
7:40 AM Changeset in webkit [205402] by commit-queue@webkit.org
  • 7 edits in trunk

Web Inspector: Address ESLint undefined variable errors
https://bugs.webkit.org/show_bug.cgi?id=161563

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-03
Reviewed by Darin Adler.

Source/WebInspectorUI:

  • UserInterface/Controllers/CSSStyleManager.js:

(WebInspector.CSSStyleManager.protocolMediaSourceToEnum):

  • UserInterface/Models/IssueMessage.js:

(WebInspector.IssueMessage):

  • UserInterface/Protocol/InspectorBackend.js:

LayoutTests:

  • inspector/protocol/inspector-backend-invocation-return-value-expected.txt:
  • inspector/protocol/inspector-backend-invocation-return-value.html:
7:38 AM Changeset in webkit [205401] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Address ESLint undefined variable errors in UserInterface/Views
https://bugs.webkit.org/show_bug.cgi?id=161565

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-09-03
Reviewed by Darin Adler.

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype.columnWidthsMap):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.textEditorGutterContextMenu):

  • UserInterface/Views/TextContentView.js:

(WebInspector.TextContentView.prototype._togglePrettyPrint):

7:09 AM Changeset in webkit [205400] by Chris Dumez
  • 10 edits
    15 adds in trunk

Align meta element http-equiv="refresh" parsing with the HTML specification
https://bugs.webkit.org/show_bug.cgi?id=161543

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Import corresponding test from W3C.

  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing-expected.txt: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/;url=foo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/dir.headers: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/foo'bar: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/refresh.sub.html: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/ufoo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urfoo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/url foo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/urlfoo: Added.
  • web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/support/x;url=foo: Added.

Source/WebCore:

Align meta element http-equiv="refresh" parsing with the HTML specification:

Tests: imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html

  • dom/Document.cpp:

(WebCore::Document::processHttpEquiv):

  • html/parser/HTMLParserIdioms.cpp:

(WebCore::parseHTTPRefreshInternal):
(WebCore::parseMetaHTTPEquivRefresh):

  • html/parser/HTMLParserIdioms.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::receivedFirstData):

  • platform/network/HTTPParsers.cpp:

(WebCore::skipWhiteSpace):
(WebCore::skipEquals):
(WebCore::parseHTTPRefresh):
(WebCore::parseXSSProtectionHeader):
(WebCore::skipValue): Deleted.

  • platform/network/HTTPParsers.h:

LayoutTests:

Update layout test to only use HTML spaces in http-equiv="refresh"
content value.

  • http/tests/misc/refresh-meta-with-newline.html:
2:44 AM Changeset in webkit [205399] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk

run-webkit-tests should detect w3c test resource files
https://bugs.webkit.org/show_bug.cgi?id=161307

Patch by Youenn Fablet <youenn@apple.com> on 2016-09-03
Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

  • resources/resource-files.json: Added.

Tools:

  • Scripts/webkitpy/port/base.py:

(Port.init): Adding self._w3c_resource_files to store the list of resource files.
(Port.potential_test_names_from_expected_file):
(Port._real_tests):
(Port.is_w3c_resource_file): Computing whether a file is a resource file based on imported/w3c/resources/resource-files.json.
(Port._is_test_file): Updated to call Port.is_w3c_resource_file. _is_test_file is no longer static.
(Port): Deleted.

  • Scripts/webkitpy/port/base_unittest.py:

(PortTest.test_additional_platform_directory):
(PortTest.test_find_no_paths_specified):
(PortTest.test_is_test_file): Updated to use non-static version of _is_test_file.
(PortTest.test_is_w3c_resource_file): Adding tests.

LayoutTests:

12:40 AM Changeset in webkit [205398] by mmaxfield@apple.com
  • 7 edits
    6 deletes in trunk/LayoutTests

[Cocoa] Distinguish between paint advances and base advances
https://bugs.webkit.org/show_bug.cgi?id=160892

Unreviewed.

Update test results.

  • platform/mac-elcapitan/css2.1/t051202-c26-psudo-nest-00-c-expected.png: Removed.
  • platform/mac-elcapitan/css2.1/t051202-c26-psudo-nest-00-c-expected.txt: Removed.
  • platform/mac-elcapitan/css2.1/t1508-c527-font-00-b-expected.png: Removed.
  • platform/mac-elcapitan/css2.1/t1508-c527-font-00-b-expected.txt: Removed.
  • platform/mac-elcapitan/fast/inline/absolute-positioned-inline-in-centred-block-expected.png: Removed.
  • platform/mac-elcapitan/fast/inline/absolute-positioned-inline-in-centred-block-expected.txt: Removed.
  • platform/mac/css2.1/t051202-c26-psudo-nest-00-c-expected.png:
  • platform/mac/css2.1/t051202-c26-psudo-nest-00-c-expected.txt:
  • platform/mac/css2.1/t1508-c527-font-00-b-expected.png:
  • platform/mac/css2.1/t1508-c527-font-00-b-expected.txt:
  • platform/mac/fast/inline/absolute-positioned-inline-in-centred-block-expected.png:
  • platform/mac/fast/inline/absolute-positioned-inline-in-centred-block-expected.txt:
Note: See TracTimeline for information about the timeline view.