Timeline



Apr 30, 2017:

10:02 PM Changeset in webkit [216004] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

9:58 PM Changeset in webkit [216003] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.20

Tag Safari-604.1.20.

5:44 PM Changeset in webkit [216002] by Chris Dumez
  • 18 edits
    6 deletes in trunk/Source

Drop support for legacy ClientRect / ClientRectList
https://bugs.webkit.org/show_bug.cgi?id=171418

Reviewed by Sam Weinig.

Source/WebCore:

Drop support for legacy ClientRect / ClientRectList types now we use
DOMRect everywhere.

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/ClientRect.cpp: Removed.
  • dom/ClientRect.h: Removed.
  • dom/ClientRect.idl: Removed.
  • dom/ClientRectList.cpp: Removed.
  • dom/ClientRectList.h: Removed.
  • dom/ClientRectList.idl: Removed.
  • dom/DOMAllInOne.cpp:
  • dom/Element.cpp:
  • html/HTMLMediaElement.cpp:
  • html/track/VTTRegion.cpp:
  • page/DragController.cpp:

Source/WebInspectorUI:

Drop ClientRectList-related code.

  • UserInterface/Models/NativeFunctionParameters.js:

Source/WebKit2:

GTK build fix.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRect.cpp:

(WebKit::kit):
(WebKit::core):
(WebKit::wrapClientRect):
(webkit_dom_client_rect_constructed):

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectList.cpp:

(ClientRectList::create):
(ClientRectList::items):
(ClientRectList::ClientRectList):

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectListPrivate.h:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMClientRectPrivate.h:
  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:

(webkit_dom_element_get_bounding_client_rect):
(webkit_dom_element_get_client_rects):

5:15 PM Changeset in webkit [216001] by Alan Bujtas
  • 5 edits
    2 adds in trunk

Initialize a new layout state while bailing out of simple line layout only when needed.
https://bugs.webkit.org/show_bug.cgi?id=171481
<rdar://problem/31906382>

Source/WebCore:

'-webkit-border-fit: lines' requires inline box tree.
We normally bail out of simple line layout early when we see this property.
When this property is dynamically set and we already have a simple line layout context,
RenderBlockFlow::ensureLineBoxes() takes care of the switch by calling layoutLineBoxes().
This patch makes sure that we create the layout state for this (forced)line layout only when
we don't yet have one.

Reviewed by Antti Koivisto.

Test: fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::PaginatedLayoutStateMaintainer::PaginatedLayoutStateMaintainer):
(WebCore::PaginatedLayoutStateMaintainer::~PaginatedLayoutStateMaintainer):
(WebCore::RenderBlockFlow::ensureLineBoxes):

  • rendering/RenderView.cpp:

(WebCore::RenderView::pushLayoutStateForPaginationIfNeeded):
(WebCore::RenderView::pushLayoutStateForPagination): Deleted.

  • rendering/RenderView.h:

LayoutTests:

Reviewed by Antti Koivisto.

  • fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout-expected.txt: Added.
  • fast/multicol/simple-line-layout-switch-to-normal-layout-while-inside-layout.html: Added.
4:39 PM Changeset in webkit [216000] by mitz@apple.com
  • 2 edits in trunk/Tools

[Cocoa] Have check-webkit-style advise against use of [get…Class() alloc]
https://bugs.webkit.org/show_bug.cgi?id=171486

Reviewed by Sam Weinig.

  • Scripts/webkitpy/style/checkers/cpp.py:

(check_soft_link_class_alloc): Added. Looks for [get…Class() alloc] and suggests

alloc…Instance() instead.

(check_style): Invoke new check.

2:24 PM Changeset in webkit [215999] by jmarcell@apple.com
  • 2 edits in tags/Safari-604.1.19.1/Source/WebCore

Cherry-pick r215990. rdar://problem/31906525

2:23 PM Changeset in webkit [215998] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.1.19.1/Source

Versioning.

2:19 PM Changeset in webkit [215997] by beidson@apple.com
  • 4 edits in trunk

More fixing after r215991
https://bugs.webkit.org/show_bug.cgi?id=171483

Source/WebKit2:

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::syncAllCookies):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

2:14 PM Changeset in webkit [215996] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.19.1

New tag.

2:04 PM Changeset in webkit [215995] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Tried to fix the iOS build after r215992

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:
1:55 PM Changeset in webkit [215994] by beidson@apple.com
  • 4 edits in trunk/Source

Fix r215991
https://bugs.webkit.org/show_bug.cgi?id=171483

Unreviewed.

Source/WebCore:

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::syncAllCookies):

1:53 PM Changeset in webkit [215993] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Tried to fix the iOS build after r215992

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebAVPlayerLayerView_pictureInPicturePlayerLayerView):
(WebVideoFullscreenInterfaceAVKit::setupFullscreen):

1:47 PM Changeset in webkit [215992] by mitz@apple.com
  • 13 edits in trunk/Source

[Cocoa] Replaces uses of [get…() alloc] with alloc…Instance()
https://bugs.webkit.org/show_bug.cgi?id=171485

Reviewed by Geoffrey Garen.

Source/WebCore:

  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:

(WebCore::CDMSessionAVContentKeySession::contentKeySession):

  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:

(WebCore::MediaPlaybackTargetPickerMac::devicePicker):

  • platform/ios/ValidationBubbleIOS.mm:

(-[WebValidationBubbleTapRecognizer initWithPopoverController:]):
(WebCore::ValidationBubble::ValidationBubble):

  • platform/ios/WebVideoFullscreenControllerAVKit.mm:

(WebVideoFullscreenControllerContext::setUpFullscreen):

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebAVPlayerLayerView_pictureInPicturePlayerLayerView):
(WebVideoFullscreenInterfaceAVKit::setupFullscreen):

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:

(-[WebVideoFullscreenInterfaceMacObjC setUpPIPForVideoView:withFrame:inWindow:]):

  • platform/network/ios/PreviewConverter.mm:

(WebCore::PreviewConverter::PreviewConverter):

  • rendering/RenderThemeIOS.mm:

(WebCore::iconForAttachment):

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebUITextIndicatorData initWithImage:textIndicatorData:scale:]):
(-[WebUITextIndicatorData initWithImage:scale:]):

Source/WebKit2:

  • Platform/mac/MenuUtilities.mm:

(WebKit::menuItemForTelephoneNumber):
(WebKit::menuForTelephoneNumber):

1:24 PM Changeset in webkit [215991] by beidson@apple.com
  • 23 edits in trunk

Updates to _WKWebsiteDataStoreConfiguration cookie storage location SPI.
<rdar://problem/31906397> and https://bugs.webkit.org/show_bug.cgi?id=171483

Reviewed by Geoff Garen (and kind of Andy Estes).
Source/WebCore:

No new tests (Covered by API test).

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

Updates include:
-Taking a file path as the config argument instead of a directory.
-Proper sandbox extension handling.
-Proper and thorough API test.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::syncAllCookies):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::syncAllCookies):

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • Shared/WebsiteDataStoreParameters.cpp:

(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h:
  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _syncNetworkProcessCookies]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration _cookieStoragePath]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStoragePath:]):
(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]): Deleted.
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::syncNetworkProcessCookies):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedCookieStoragePath):
(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

12:52 PM Changeset in webkit [215990] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

<rdar://problem/31906525> WebCore-7604.1.19 has failed to build

  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard setItemsUsingRegistrationInfoLists:]): Resolved type ambiguity

by using allocUIItemProviderInstance() instead of [getUIItemProviderClass() alloc].

11:12 AM Changeset in webkit [215989] by jdiggs@igalia.com
  • 8 edits
    2 adds in trunk

[ATK] Implement support for aria-autocomplete
https://bugs.webkit.org/show_bug.cgi?id=171167

Reviewed by Chris Fleizach.

Source/WebCore:

Expose ATK_STATE_SUPPORTS_AUTOCOMPLETION in the state set, and the value
of aria-autocomplete as an object attribute, for elements which indicate
they support autocompletion.

Test: accessibility/gtk/aria-autocomplete.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsARIAAutoComplete):
(WebCore::AccessibilityObject::ariaAutoCompleteValue):

  • accessibility/AccessibilityObject.h:
  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):
(setAtkStateSetFromCoreObject):

  • html/HTMLAttributeNames.in:

Tools:

Add "AXSupportsAutoCompletion" attribute so the presence of
ATK_STATE_SUPPORTS_AUTOCOMPLETION can be tested.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

  • accessibility/gtk/aria-autocomplete-expected.txt: Added.
  • accessibility/gtk/aria-autocomplete.html: Added.
11:11 AM Changeset in webkit [215988] by jdiggs@igalia.com
  • 14 edits
    2 adds in trunk

[ATK] ARIA treegrid role should be exposed as ATK_ROLE_TREE_TABLE; not ATK_ROLE_TABLE
https://bugs.webkit.org/show_bug.cgi?id=171170

Reviewed by Chris Fleizach.

Source/WebCore:

AccessibilityTable::roleValue() was returning GridRole for both grid and treegrid.
Change this so that GridRole is returned for grid and TreeGridRole is returned for
treegrid. Add TreeGridRole to, or call isTable() in, methods where the behavior
should be the same as GridRole.

Test: accessibility/gtk/interface-table.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::selectedChildren):

  • accessibility/AccessibilityTable.cpp:

(WebCore::AccessibilityTable::roleValue):

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):
(getInterfaceMaskFromObject):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityTableAncestor]):
(-[WebAccessibilityObjectWrapper _accessibilityTraitsFromAncestors]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):

Tools:

Add "AXInterfaceTable" attribute to test which elements implement AtkTable.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

Add interface-table.html to verify that all roles which have tabular functionality
implement AtkTable. Update other tests to reflect that the ARIA treegrid role maps
to our internal TreeGridRole AccessibilityRole.

  • accessibility/gtk/interface-table-cell-expected.txt: Updated.
  • accessibility/gtk/interface-table-expected.txt: Added.
  • accessibility/gtk/interface-table.html: Added.
  • accessibility/roles-computedRoleString.html: Updated.
  • platform/gtk/accessibility/aria-selected-expected.txt: Updated.
  • platform/gtk/accessibility/roles-exposed-expected.txt: Updated.
  • platform/mac/accessibility/roles-computedRoleString-expected.txt: Updated.
11:11 AM Changeset in webkit [215987] by rniwa@webkit.org
  • 28 edits in trunk/Websites/perf.webkit.org

Add the support for scheduling a A/B testing with a patch.
https://bugs.webkit.org/show_bug.cgi?id=171209

Reviewed by Chris Dumez.

Added the support for creating a custom test group with a patch applied.

First, each repository in a repository group has a boolean indicating whether a given repository can have
a patch applied or not. When any configuration in a test group contains a patch, we create build requests
without a test specified in order to "build" those patches. These build requests have negative order numbers
to differentiate them from regular build requests. We can't simply build ones with patches since there could
be differences in SDK, build options, etc... when patches are applied.

The JSON format for commit sets returned by /api/build-requests have been changed from using an array of
commit IDs to an array of dictionaries indicate commit and acceptsPatch boolean. /api/update-triggerable now
uses a dictionary with two keys: repository and acceptsPatch to specify a set of repositories associated with
a repository group, and /privileged-api-create-test-group uses a dictionary with two keys: revision and patch
instead of a revision string to specify commit sets.

Furthermore, the syncing script's configuration have been updated to use a dictionary of repository names to
an options dictionary instead of an array of repositories names. For now, the only supported option is
acceptsPatch but will be extended when we add the support for rolling back system components.
e.g. {"WebKit": {acceptsPatch: true}, "macOS": {}} instead of ["WebKit", "macOS"]

On the UI side, InstantFileUploader has been changed to accept only one file by default, and added a new method
allowMultipleFiles() to allow multiple files to be selected for custom roots. Also replaced the input element
with type=file by a button with a custom label to show labels such as "Apply a patch" or "Add a new root"
instead of the generic label like "choose a file".

  • init-database.sql: Added trigrepo_accepts_patch to triggerable_repositories to indicate whether a given

repository can have a patch applied or not. Made request_test optional in build_requests for when a build
request is created to build patches. Such a build request have a negative request_order. Updated the related
constraints accordingly.

  • public/admin/triggerables.php: Added the support for updating whether a given repository can have a patch

applied in each repository group. Only show the repositories in the repository group for this purpose since
there is no way to accept a patch on a repository without it being a part of the group.
(generate_repository_form): Now takes the markup for checkboxes instead of generating one itself.
(generate_repository_checkboxes): Now takes an array of repositories to generate checkboxes. The checkbox is
shown when the repository ID exists as a key in this array, and is checked when its value is true. The new
capability to skip repositories not in the array is used to hide repositories not associated with the group
in the list of checkboxes to indicate a repository accepts a patch.

  • public/api/update-triggerable.php:

(main): Now updates the description and acceptsRoots states of each repository group, and sets acceptsPatch
boolean for each repository in the group if set in the update.
(validate_repository_groups): Use a reference to $repository_groups in order to set repository_id_list, which
contains an array of repository IDs to find the existing repository group that matches the set via
RepositoryGroupFinder's find_by_repositories. Also added a various validations for acceptsRoots, a dictionary
specifying repository and acceptsPatch.

  • public/include/build-requests-fetcher.php:

(BuildRequestsFetcher::fetch_commits_for_set_if_needed): Instead of returning an array of commit IDs as
"commits", it now returns an array of dictionaries with "commit" and "patch" keys specifying the commit ID
and the patch file's ID respectively as "revisionItems".
(BuildRequestsFetcher::add_uploaded_file): Added. Extracted from fetch_commits_for_set_if_needed. Used to
add either a patch file or a custom root file in the list of uploaded files in the result.

  • public/include/manifest-generator.php:

(fetch_triggerables): Each element in repository group's "repositories" field is now an array of dictionaries
with "repository" and "acceptsPatch" as keys.

  • public/include/repository-group-finder.php:

(RepositoryGroupFinder::construct): Added a map for boolean indicating whether a given repository group
allows a patch on a repository. Used in /privileged-api/create-test-group.
(RepositoryGroupFinder::accepts_patch): Added.
(RepositoryGroupFinder::populate_map): Build up the map for acceptsPatch boolean per repository per group.

  • public/privileged-api/create-test-group.php:

(main): Fixed a bug that we were not explicitly checking for a duplicate test group name (with a test). Create
build requests to "build" patches if there is any patch file specified.
(commit_sets_from_revision_sets): Updated to take a dictionary with "revision" and "patch" as keys to specify
a revision and a patch if any instead of just a revision string for each repository. Also validate that each
repository is allowed to have a patch once the repository group has been found for the set of repositories.
(ensure_commit_sets):

  • public/v3/components/custom-analysis-task-configurator.js:

(CustomAnalysisTaskConfigurator): Added _patchUploaders as an instance variable, which is a dictionary of
configuration names to a map of InstantFileUploader's used to upload a patch. Also renamed _fileUploaders to
_customRootUploaders for clarity.
(CustomAnalysisTaskConfigurator.prototype.setCommitSets):
(CustomAnalysisTaskConfigurator.prototype.didConstructShadowTree.createRootUploader): Added.
(CustomAnalysisTaskConfigurator.prototype.didConstructShadowTree):
(CustomAnalysisTaskConfigurator.prototype._ensurePatchUploader): Added. Creates an instant file uploader for
patches. We only allow a single patch per repository.
(CustomAnalysisTaskConfigurator.prototype._computeCommitSet): Include a patch in the commit set as needed.
(CustomAnalysisTaskConfigurator.prototype._buildRevisionTable): Show the patch file uploader for repositories
which can have patches in the current repository group.
(CustomAnalysisTaskConfigurator.cssTemplate): Show borders between every rows instead of just between tbody's
now that each row can have a patch file uploader.

  • public/v3/components/instant-file-uploader.js:

(InstantFileUploader): Added _fileInput and _allowMultipleFiles as instance variables. We now show a button
in the UI instead of an input with type=file. _fileInput is a hidden input with type=file used inside a click
event of the button to let the user pick a file.
(InstantFileUploader.prototype.allowMultipleFiles): Added. Allows this instance to accept multiple files.
(InstantFileUploader.prototype.didConstructShadowTree): Synthetically click on the hidden input element when
the newly added button element is clicked to open the browser's file picker.
(InstantFileUploader.prototype.render): Hide the button to add a file if this instance can only select one file
and there is already some file being uploaded in this instance.
(InstantFileUploader.htmlTemplate): Replaced the input element with type=file with a button. Its label comes
from the default slot content.

  • public/v3/models/build-request.js:

(BuildRequest): Made the test optional.
(BuildRequest.prototype.isBuild): Returns true if this is a build request for building a patch.
(BuildRequest.prototype.isTest): Returns true if this is a build request for running tests.
(BuildRequest.constructBuildRequestsFromData): Create each commit log here instead of relying on CommitSet's
constructor to construct its commit logs. Also updated per the replacement of an array of commit IDs by
an array of dictionaries with commit and patch properties.

  • public/v3/models/commit-set.js:

(CommitSet): Made _repositoryToCommitMap a real Map object. Also added _repositoryToPatchMap. Also got rid of
the code to instantiate commit logs since that's now done in BuildRequest.constructBuildRequestsFromData.
(CommitSet.prototype.commitForRepository):
(CommitSet.prototype.revisionForRepository):
(CommitSet.prototype.patchForRepository): Added.
(CommitSet.prototype.latestCommitTime): Modernized the code.
(CommitSet.prototype.equals): Modernized the code. Also added the check for patches.
(MeasurementCommitSet): Updated per the change to make _repositoryToCommitMap a real Map.
(CustomCommitSet.prototype.setRevisionForRepository):
(CustomCommitSet.prototype.equals): Added the check for patches.
(CustomCommitSet.prototype.revisionForRepository):
(CustomCommitSet.prototype.patchForRepository): Added.

  • public/v3/models/manifest.js:

(Manifest._didFetchManifest): Updated per the replacement of an array of commit IDs by an array of dictionaries
with commit and patch properties.

  • public/v3/models/repository.js:

(Repository.prototype.ownerId): Renamed from owner for clarity.

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

(TestGroup): Modernized the code by using LazilyEvaluatedFunction. Removed _requestsAreInOrder since it's not
necessary anymore with LazilyEvaluatedFunction.
(TestGroup.prototype.addBuildRequest):
(TestGroup.prototype.test): Use the last build request's test since the first few requests could be requests to
build patches.
(TestGroup.prototype.platform): Ditto.
(TestGroup.prototype._lastRequest): Added.
(TestGroup.prototype._orderedBuildRequests): Added.
(TestGroup.prototype.repetitionCount): Only count the build requests for testing (skipping any requests to
build patches).
(TestGroup.prototype.requestedCommitSets): Simply call _computeRequestedCommitSetsLazily.
(TestGroup.prototype._computeRequestedCommitSets): Extracted from requestedCommitSets.
(TestGroup.prototype.requestsForCommitSet):
(TestGroup.prototype.labelForCommitSet): Rewritten. Just compute the label here instead of relying on
_commitSetToLabel since requestedSets is always of the length two at the moment.
(TestGroup._revisionSetsFromCommitSets): Specify both the revision and the patch in the revision set.

  • public/v3/models/triggerable.js:

(TriggerableRepositoryGroup): Added _patchAcceptingSet as an instance variable. Use
sortByNamePreferringOnesWithURL to sort repositories instead of simple sortByName.
(TriggerableRepositoryGroup.prototype.accepts): Added checks for the custom roots and patches.
(TriggerableRepositoryGroup.prototype.acceptsPatchForRepository): Added.

  • server-tests/api-build-requests-tests.js: Updated the test cases per the replacement of an array of commit

IDs by an array of dictionaries with commit and patch properties.

  • server-tests/api-manifest-tests.js: Updated the test case per the name of Repository's owner to ownerId.
  • server-tests/api-update-triggerable.js: Updated the test case per the name of Repository's owner to ownerId,

and added a test case for updating whether a given repository group allows custom roots as well as patches
on repositories via /api/update-triggerable.
(.updateWithOSXRepositoryGroup): Updated the sample syncing script configuration per the format change.
(.refetchManifest): Added.

  • server-tests/privileged-api-create-test-group-tests.js: Updated per the syncing script configuration format

change. Also added a test for creating a test group with a duplicate name, which is expected to fail with
DuplicateTestGroupName, and creating a test group with a patch both when it's allowed and when it's not allowed
in the matching repository group.
(.addTriggerableAndCreateTask): Updated per the format change.

  • server-tests/resources/mock-data.js:

(MockData.addEmptyTriggerable): Added a metric and its configuration to make it appear in the manifest file.
The new test case in api-update-triggerable.js requires this.
(MockData.mockTestSyncConfigWithSingleBuilder): Updated per the syncing script configuration format change.
(MockData.mockTestSyncConfigWithTwoBuilders): Ditto.

  • server-tests/tools-buildbot-triggerable-tests.js: Removed the useless assertions about test configurations,

and added assertions about custom roots and patches in the test case for updateTriggerables.

  • tools/js/buildbot-syncer.js:

(BuildbotSyncer._parseRepositoryGroup): Made each assertion explicitly refer to the specific repository group
to make it more user friendly. Now each repository group uses a dictionary of repository names to its options
in the syncing script configurations. When parsed, we insert it as an array of dictionaries with repository ID
and acceptsPatch boolean specified separately since this is the format /api/update-triggerable expects.

  • tools/js/buildbot-triggerable.js:

(BuildbotTriggerable.prototype.updateTriggerable):

  • unit-tests/build-request-tests.js:

(sampleBuildRequestData): Updated per the commit sets format change in /api/build-requests.

  • unit-tests/buildbot-syncer-tests.js: Updated the existing tests per various format changes and added a couple

of new test cases for the syncing script's configuration validation.
(sampleiOSConfig):
(smallConfiguration):
(createSampleBuildRequest):

  • unit-tests/resources/mock-v3-models.js:

(MockModels.inject): Updated per the repository group format change.

  • unit-tests/test-groups-tests.js:

(sampleTestGroup): Updated per the commit sets format change in /api/build-requests.

7:51 AM Changeset in webkit [215986] by gskachkov@gmail.com
  • 5 edits
    1 add in trunk

Initialize functions too early in an eval
https://bugs.webkit.org/show_bug.cgi?id=161099

Reviewed by Saam Barati.

JSTests:

  • stress/eval-func-decl-with-let-const-class.js: Added.

Source/JavaScriptCore:

Current patch allow to fix problem with scope in function that is
declared within eval. Before scope was set inside Interpretator.cpp and it
was scope where eval is executed, but in this case function would not
see let/const variables and classes declated in eval.
This patch devide declaration and binding in two operation, first just declare
variable with function name, and second bind variable to function with correct
scope

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):

  • bytecompiler/BytecodeGenerator.h:
  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):

2:56 AM Changeset in webkit [215985] by jdiggs@igalia.com
  • 6 edits
    2 adds in trunk

[ATK] Emit object:state-changed:busy event when aria-busy value changes
https://bugs.webkit.org/show_bug.cgi?id=171181

Reviewed by Chris Fleizach.

Source/WebCore:

Emit object:state-changed:busy for AXElementBusyChanged notifications.

Test: accessibility/gtk/aria-busy-changed-notification.html

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

Tools:

Add handler for AXElementBusyChanged notifications.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:

LayoutTests:

New test. Also update the expectations for menu-list-unfocused-notifications.html
because the addition of the handler for AXElementBusyChanged results in that
notification being output in the test results.

  • accessibility/gtk/aria-busy-changed-notification-expected.txt: Added.
  • accessibility/gtk/aria-busy-changed-notification.html: Added.
  • accessibility/gtk/menu-list-unfocused-notifications-expected.txt: Updated.
1:06 AM Changeset in webkit [215984] by gskachkov@gmail.com
  • 49 edits
    13 adds in trunk

[ES6]. Implement Annex B.3.3 function hoisting rules for eval
https://bugs.webkit.org/show_bug.cgi?id=163208

Reviewed by Saam Barati.

JSTests:

  • stress/eval-func-decl-block-scoping-reassign.js: Added.

(assert):
(throw.new.Error.f):
(throw.new.Error):

  • stress/eval-func-decl-block-with-remove.js: Added.

(assert):
(foo.boo):
(foo):

  • stress/eval-func-decl-block-with-var-and-remove.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(joo):
(koo):

  • stress/eval-func-decl-block-with-var-sinthesize.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(hoo):
(joo):
(koo):

  • stress/eval-func-decl-in-block-scope-and-bind-to-top-eval-scope.js: Added.
  • stress/eval-func-decl-in-eval-within-block-with-let.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(goo):

  • stress/eval-func-decl-in-eval-within-with-scope.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(boo.let.val2):
(boo.let.val3):

  • stress/eval-func-decl-in-frozen-global.js: Added.

(assert):
(assertThrow):
(throw.new.Error):
(Object.freeze):

  • stress/eval-func-decl-in-global-of-eval.js: Added.

(assert):
(assertThrow):
(bar):
(baz):
(foobar):

  • stress/eval-func-decl-in-global.js: Added.

(assert):
(assertThrow):

  • stress/eval-func-decl-in-if.js: Added.

(assert):

  • stress/eval-func-decl-within-eval-with-reassign-to-var.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(foobar):
(hoo):
(joo):
(koo):
(loo):

  • stress/eval-func-decl-within-eval-without-reassign-to-let.js: Added.

(assert):
(assertThrow):
(foo):
(boo):
(goo):

  • stress/variable-under-tdz-eval-tricky.js:

(assert):

  • test262.yaml:

Source/JavaScriptCore:

Current patch implements Annex B.3.3 that is related to
hoisting of function declaration in eval.
https://tc39.github.io/ecma262/#sec-web-compat-evaldeclarationinstantiation
Function declaration in eval should create variable with
function name in function scope where eval is invoked
or bind to variable if it declared outside of the eval.
If variable is created it can be removed by 'delete a;' command.
If eval is invoke in block scope that contains let/const
variable with the same name as function declaration
we do not bind. This patch leads to the following behavior:

function foo() {

{

print(boo); undefined
eval('{ function boo() {}}');
print(boo);
function boo() {}

}
print(boo); function boo() {}

}

function foobar() {

{

let boo = 10;
print(boo); 10;
eval('{ function boo() {}}');
print(boo);
10;

}
print(boo) 10

}

function bar() {

{

var boo = 10;
print(boo); 10
eval('{ function boo() {} }');
print(boo);
function boo() {}

}
print(boo); function boo() {}

}

function bas() {

{

let boo = 10;
eval(' { function boo() {} } ');
print(boo); 10

}
print(boo); Reference Error

}

Current implementation relies on already implemented
'hoist function in sloppy mode' feature, with small changes.
In short it works in following way: during hoisting of function
with name S in eval, we are looking for first scope that
contains space for variable with name S and if this scope
has var type we bind function there

To implement this feature was added bytecode ops:
op_resolve_scope_for_hoisting_func_decl_in_eval - get variable scope
or return undefined if variable can't be binded there.

There is a corner case, hoist function in eval within catch block,
that is not covered by this patch, and will be fixed in
https://bugs.webkit.org/show_bug.cgi?id=168184

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::dumpBytecode):

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finalizeLLIntInlineCaches):

  • bytecode/EvalCodeBlock.h:

(JSC::EvalCodeBlock::functionHoistingCandidate):
(JSC::EvalCodeBlock::numFunctionHoistingCandidates):

  • bytecode/UnlinkedEvalCodeBlock.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::hoistSloppyModeFunctionIfNecessary):
(JSC::BytecodeGenerator::emitResolveScopeForHoistingFuncDeclInEval):

  • bytecompiler/BytecodeGenerator.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasIdentifier):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileResolveScopeForHoistingFuncDeclInEval):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileResolveScopeForHoistingFuncDeclInEval):

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_resolve_scope_for_hoisting_func_decl_in_eval):

  • llint/LowLevelInterpreter.asm:
  • parser/Parser.cpp:

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

  • parser/Parser.h:

(JSC::Scope::getSloppyModeHoistedFunctions):
(JSC::Parser::declareFunction):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • runtime/EvalExecutable.h:

(JSC::EvalExecutable::numFunctionHoistingCandidates):
(JSC::EvalExecutable::numTopLevelFunctionDecls):
(JSC::EvalExecutable::numberOfFunctionDecls): Deleted.

  • runtime/JSScope.cpp:

(JSC::JSScope::resolve):
(JSC::JSScope::resolveScopeForHoistingFuncDeclInEval):

  • runtime/JSScope.h:

LayoutTests:

  • inspector/runtime/evaluate-CommandLineAPI-expected.txt:
  • inspector/runtime/evaluate-CommandLineAPI.html:
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
12:21 AM Changeset in webkit [215983] by beidson@apple.com
  • 4 edits in trunk/Source/WebKit2

Regression (r215941) Unexpected logging causes perf tests to fail.
<rdar://problem/31907269> and https://bugs.webkit.org/show_bug.cgi?id=171482

Reviewed by Alexey Proskuryakov.

  • Shared/mac/SandboxExtensionMac.mm:

(WebKit::resolveAndCreateReadWriteDirectoryForSandboxExtension):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::networkingCachesDirectory):
(WebKit::WebProcessPool::webContentCachesDirectory):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary): Only resolve the cookie storage directory

if a custom one has been set.

Apr 29, 2017:

10:02 PM Changeset in webkit [215982] by aakash_jain@apple.com
  • 8 edits in trunk/Tools

Use PEP8 style guide for raising exceptions in webkitpy.
https://bugs.webkit.org/show_bug.cgi?id=171439

Reviewed by Daniel Bates.

As per https://www.python.org/dev/peps/pep-0008/
"When raising an exception in Python 2, use raise ValueError('message')
instead of the older form raise ValueError, 'message'"

  • Scripts/webkitpy/common/net/irc/ircbot.py: Using new style for raising exceptions.
  • Scripts/webkitpy/common/thread/messagepump.py: Same.
  • Scripts/webkitpy/tool/bot/queueengine.py: Same.
  • Scripts/webkitpy/tool/commands/queues.py: Same.
  • Scripts/webkitpy/tool/commands/stepsequence.py: Same.
  • Scripts/webkitpy/tool/multicommandtool.py: Same.
  • Scripts/webkitpy/tool/steps/abstractstep.py: Same.
8:32 PM Changeset in webkit [215981] by commit-queue@webkit.org
  • 9 edits
    3 adds in trunk

Zero out PerformanceResourceTiming properties for cached cross-origin responses without Timing-Allow-Origin
https://bugs.webkit.org/show_bug.cgi?id=171394

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-04-29
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

WebKit doesn't create multiple PerformanceResourceTiming entries for
loads that use the same CachedResource. However for revalidation
requests, which may happen for cached entries, we will send new
network requests. These tests cover whether revalidation requests
include timing data or not.

  • web-platform-tests/resource-timing/resources/rt-revalidation-response.py: Added.
  • web-platform-tests/resource-timing/rt-cors-expected.txt:
  • web-platform-tests/resource-timing/rt-cors.js:
  • web-platform-tests/resource-timing/rt-cors.worker-expected.txt:
  • web-platform-tests/resource-timing/rt-revalidate-requests-expected.txt: Added.
  • web-platform-tests/resource-timing/rt-revalidate-requests.html: Added.

Source/WebCore:

  • loader/ResourceTiming.cpp:

(WebCore::ResourceTiming::fromCache):
(WebCore::ResourceTiming::ResourceTiming):

  • loader/ResourceTiming.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
Include the timing-allow-origin check for cached responses.
Also, avoid including an extra entry for an ongoing cached resource
load, since when that load completes it should be reported.

8:30 PM Changeset in webkit [215980] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Readd assertion removed accidentally in r215955
https://bugs.webkit.org/show_bug.cgi?id=171466

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-29
Reviewed by Eric Carlson.

Source/WebCore:

Unreviewed.

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSourceMac::orientationChanged): Improved FIXME after review.

Source/WebKit2:

  • WebProcess/WebPage/WebBackForwardListProxy.cpp:

(WebKit::WebBackForwardListProxy::addItemFromUIProcess):

8:28 PM Changeset in webkit [215979] by aestes@apple.com
  • 7 edits in trunk/Source

[macOS] Picture-in-picture should be disabled in WebPlaybackControlsManager during external media playback
https://bugs.webkit.org/show_bug.cgi?id=171468
<rdar://problem/31900349>

Reviewed by Eric Carlson.

Source/WebCore:

  • platform/mac/WebPlaybackControlsManager.h: Declared canTogglePictureInPicture as a

readwrite property.

  • platform/mac/WebPlaybackControlsManager.mm: Synthesize canTogglePictureInPicture.

(-[WebPlaybackControlsManager canTogglePictureInPicture]): Deleted.

  • platform/mac/WebPlaybackSessionInterfaceMac.h:
  • platform/mac/WebPlaybackSessionInterfaceMac.mm:

(WebCore::WebPlaybackSessionInterfaceMac::externalPlaybackChanged): Called
-[WebPlaybackControlsManager setCanTogglePictureInPicture:].

Source/WebKit2:

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateMediaTouchBar): Set canTogglePictureInPicture to YES by default
on WebPlaybackControlsManager.

8:06 PM Changeset in webkit [215978] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix tests broken by r215964.

Fix copy-paste error that caused the wrong paint phase to get passed to the fire writeLayerRenderers()
call, causing extra renderer dumping.

Also remove unused default arguments.

  • rendering/RenderTreeAsText.cpp:

(WebCore::writeLayerRenderers):
(WebCore::writeLayers):

2:25 PM Changeset in webkit [215977] by gskachkov@gmail.com
  • 5 edits in trunk

Deep nesting is leading to ReferenceError for hoisted function
https://bugs.webkit.org/show_bug.cgi?id=171456

Reviewed by Yusuke Suzuki.

Current patch fix error that appears during hoisting of the function
in block scope. Error happens only when exist some deep scope that lead
to increase scope stack, after which list of the hosted candidates do not
copied to updated scope stack.

Source/JavaScriptCore:

  • parser/Parser.h:

(JSC::Scope::Scope):

LayoutTests:

  • js/function-declaration-statement-expected.txt:
  • js/script-tests/function-declaration-statement.js:

(deepNesting.foo):
(deepNesting):
(deepNestingForFunctionDeclaration.foo):
(deepNestingForFunctionDeclaration):
(eval.deepNestingInEval.foo):
(eval.deepNestingInEval):
(eval.deepNestingForFunctionDeclarationInEval.foo):
(eval.deepNestingForFunctionDeclarationInEval):

2:16 PM Changeset in webkit [215976] by Alan Bujtas
  • 3 edits
    2 adds in trunk

iBooks text can overlap, sometimes columns are shifted splitting words.
https://bugs.webkit.org/show_bug.cgi?id=171472
<rdar://problem/31096037>

Reviewed by Antti Koivisto.

Source/WebCore:

Instead of just checking if the glyph is taller than the line, we need to ensure that both the
ascent and the descent have enough space (this is for -webkit-line-box-contain: glyph).

Test: fast/text/simple-line-layout-glyph-overflows-line.html

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForText): compute the available space for the ascent/descent
and check them against the ceil-ed(see FontCascade::floatWidthForSimpleText) glyph min/max y.

LayoutTests:

  • fast/text/simple-line-layout-glyph-overflows-line-expected.html: Added.
  • fast/text/simple-line-layout-glyph-overflows-line.html: Added.
11:55 AM Changeset in webkit [215975] by n_wang@apple.com
  • 7 edits in trunk/Source/WebCore

AX: Improve performance of addChildren()/childrenChanged()
https://bugs.webkit.org/show_bug.cgi?id=171443

Reviewed by Chris Fleizach.

There's a lot of unnecessary work happening when childrenChanged() is being called.
Some of the improvements here:

  1. When childrenChanged() is being called on some element, we are marking its parent chain dirty. However, in the addChild() method we are then clearing each child of that 'dirty' parent, eventually making the entire tree dirty. Added a m_subTreeDirty flag and using the needsToUpdateChildren() check to make sure we are only clearing the right chain without updating the unchanged siblings.
  2. In the addChild() method we are calling accessibilityIsIgnored() on each child and that might lead to going up the parent chain again to get necessary information. Since we are already traversing the tree from top to bottom to add children, added a struct to store the information and pass it to the child so to avoid unnecessary traversal.
  3. Reduced the amount work of ARIA text controls perform when updating its parents in childrenChanged() so that we don't update a big portion of the tree while typing.

No new tests since this didn't change any functionality.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::AccessibilityNodeObject):
(WebCore::AccessibilityNodeObject::childrenChanged):
(WebCore::AccessibilityNodeObject::insertChild):
(WebCore::AccessibilityNodeObject::addChildren):
(WebCore::AccessibilityNodeObject::isDescendantOfBarrenParent):

  • accessibility/AccessibilityNodeObject.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::AccessibilityObject):
(WebCore::AccessibilityObject::defaultObjectInclusion):
(WebCore::AccessibilityObject::setIsIgnoredFromParentDataForChild):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityIsIgnoredFromParentData::AccessibilityIsIgnoredFromParentData):
(WebCore::AccessibilityIsIgnoredFromParentData::isNull):
(WebCore::AccessibilityObject::setNeedsToUpdateSubTree):
(WebCore::AccessibilityObject::needsToUpdateChildren):
(WebCore::AccessibilityObject::setIsIgnoredFromParentData):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::updateChildrenIfNecessary):
(WebCore::AccessibilityRenderObject::addChildren):

  • accessibility/AccessibilityRenderObject.h:

(WebCore::AccessibilityRenderObject::setRenderObject):
(WebCore::AccessibilityRenderObject::needsToUpdateChildren): Deleted.

11:33 AM Changeset in webkit [215974] by mitz@apple.com
  • 2 edits in trunk/Source/ThirdParty/libwebrtc

[Xcode] libwebrtc SRCROOT includes examples
https://bugs.webkit.org/show_bug.cgi?id=171478

Reviewed by Tim Horton.

  • Configurations/Base.xcconfig: Exclude the Source/webrtc/examples subdirectory from installsrc. Its contents are not used for building any of the targets in the project.
11:03 AM Changeset in webkit [215973] by Yusuke Suzuki
  • 25 edits
    1 copy
    3 moves
    2 adds in trunk/Source

Move WebCore CPUTime to WTF and implement it in all the platforms
https://bugs.webkit.org/show_bug.cgi?id=171477

Reviewed by Chris Dumez.

Source/WebCore:

Move CPUTime to WTF. And rename getCPUTime to CPUTime::get().

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • page/ChromeClient.h:
  • page/PerformanceMonitor.cpp:

(WebCore::PerformanceMonitor::PerformanceMonitor):
(WebCore::PerformanceMonitor::measurePostLoadCPUUsage):
(WebCore::PerformanceMonitor::measurePostBackgroundingCPUUsage):
(WebCore::PerformanceMonitor::measureCPUUsageInActivityState):

  • page/PerformanceMonitor.h:
  • platform/CPUMonitor.cpp:

(WebCore::CPUMonitor::setCPULimit):
(WebCore::CPUMonitor::timerFired):

  • platform/CPUMonitor.h:

Source/WebKit2:

We now hold Seconds in CPUTime instead of int64_t. It finally sends
Seconds through WebKit2 IPC. We do not need to specialize ArgumentCoder
for Seconds since Seconds just holds double.

  • UIProcess/PerActivityStateCPUUsageSampler.cpp:

(WebKit::PerActivityStateCPUUsageSampler::PerActivityStateCPUUsageSampler):
(WebKit::PerActivityStateCPUUsageSampler::reportWebContentCPUTime):
(WebKit::PerActivityStateCPUUsageSampler::loggingTimerFired):

  • UIProcess/PerActivityStateCPUUsageSampler.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::reportWebContentCPUTime):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessPool.messages.in:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::reportProcessCPUTime):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Source/WTF:

We move WebCore::CPUTime to WTF::CPUTime since it is useful even in JSC
and it does not depend on any external libraries.
And we additionally implement WTF::CPUTime in all the platforms: Windows and Unix.

In CPUTime, instead of holding int64_t, we hold MonotonicTime and Seconds.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/CPUTime.cpp: Copied from Source/WebCore/platform/CPUTime.cpp.

(WTF::CPUTime::percentageCPUUsageSince):

  • wtf/CPUTime.h: Renamed from Source/WebCore/platform/CPUTime.h.
  • wtf/PlatformEfl.cmake:
  • wtf/PlatformGTK.cmake:
  • wtf/PlatformJSCOnly.cmake:
  • wtf/PlatformMac.cmake:
  • wtf/PlatformWin.cmake:
  • wtf/cocoa/CPUTimeCocoa.mm: Renamed from Source/WebCore/platform/cocoa/CPUTimeCocoa.mm.

(WTF::timeValueToMicroseconds):
(WTF::CPUTime::get):

  • wtf/unix/CPUTimeUnix.cpp: Renamed from Source/WebCore/platform/CPUTime.cpp.

(WTF::timevalToSeconds):
(WTF::CPUTime::get):

  • wtf/win/CPUTimeWin.cpp: Added.

(WTF::fileTimeToSeconds):
(WTF::CPUTime::get):

9:32 AM Changeset in webkit [215972] by Yusuke Suzuki
  • 5 edits in trunk/Source/JavaScriptCore

[JSC] LabelScopePtr is not necessary
https://bugs.webkit.org/show_bug.cgi?id=171474

Reviewed by Geoffrey Garen.

Originally, LabelScopePtr is introduced because LabelScopes uses Vector<> instead of SegmentedVector<>.
LabelScopePtr holds the pointer to the vector owner and index instead of the pointer to LabelScope directly
since Vector<> can relocate LocalScopes inside it.
The reason why LabelScopes use Vector instead is that there is code copying this vector. SegmentedVector<>
prohibits copying since it is so costly. So, we used Vector<> here instead of SegmentedVector<>.

But the latest code does not have copying code for LabelScopes. Thus, we can take the same design to Label and
RegisterID. Just use SegmentedVector<> and Ref<>/RefPtr<>. This patch removes LabelScopePtr since it is no
longer necessary. And use SegmentedVector for LabelScopes.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::reclaim):
(JSC::BytecodeGenerator::reclaimFreeRegisters):
(JSC::BytecodeGenerator::newLabelScope):
(JSC::BytecodeGenerator::newLabel):
(JSC::BytecodeGenerator::pushFinallyControlFlowScope):
(JSC::BytecodeGenerator::breakTarget):
(JSC::BytecodeGenerator::continueTarget):
(JSC::BytecodeGenerator::emitEnumeration):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/LabelScope.h:

(JSC::LabelScope::LabelScope):
(JSC::LabelScope::breakTarget):
(JSC::LabelScope::continueTarget):
(JSC::LabelScope::type):
(JSC::LabelScope::name):
(JSC::LabelScope::scopeDepth):
(JSC::LabelScope::ref):
(JSC::LabelScope::deref):
(JSC::LabelScope::refCount):
(JSC::LabelScopePtr::LabelScopePtr): Deleted.
(JSC::LabelScopePtr::operator=): Deleted.
(JSC::LabelScopePtr::~LabelScopePtr): Deleted.
(JSC::LabelScopePtr::operator!): Deleted.
(JSC::LabelScopePtr::operator*): Deleted.
(JSC::LabelScopePtr::operator->): Deleted.
(JSC::LabelScopePtr::null): Deleted.

  • bytecompiler/NodesCodegen.cpp:

(JSC::DoWhileNode::emitBytecode):
(JSC::WhileNode::emitBytecode):
(JSC::ForNode::emitBytecode):
(JSC::ForInNode::emitBytecode):
(JSC::ContinueNode::trivialTarget):
(JSC::ContinueNode::emitBytecode):
(JSC::BreakNode::trivialTarget):
(JSC::BreakNode::emitBytecode):
(JSC::SwitchNode::emitBytecode):
(JSC::LabelNode::emitBytecode):

Apr 28, 2017:

11:17 PM Changeset in webkit [215971] by pvollan@apple.com
  • 3 edits
    2 adds in trunk

Crash under WebCore::AccessibilityRenderObject::handleAriaExpandedChanged().
https://bugs.webkit.org/show_bug.cgi?id=171427
Source/WebCore:

rdar://problem/31863417

Reviewed by Brent Fulgham.

The AccessibilityRenderObject object might delete itself in handleAriaExpandedChanged() under the call
to the parentObject() method. This will cause a crash when accessing the object later in this method.
Protect the current object while executing arbitrary event code.

Test: accessibility/accessibility-crash-setattribute.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::handleAriaExpandedChanged):

LayoutTests:

Reviewed by Brent Fulgham.

  • accessibility/accessibility-crash-setattribute-expected.txt: Added.
  • accessibility/accessibility-crash-setattribute.html: Added.
9:57 PM Changeset in webkit [215970] by Wenson Hsieh
  • 2 edits in trunk/LayoutTests

Unreviewed test gardening (Mac WK1)

Mark a LayoutTest as PASS on Mac WK1. This test is currently skipped globally,
but was meant to be enabled for WK1 on Mac. Followup to r213897.

  • platform/mac-wk1/TestExpectations:
8:55 PM Changeset in webkit [215969] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Diagnostic logging of navigations is too verbose
https://bugs.webkit.org/show_bug.cgi?id=171455
<rdar://problem/31543815>

Reviewed by Andreas Kling.

Diagnostic logging of navigation is too verbose. We log things that are not actually user
navigations (e.g. speculative loads, bookmark icon fetches, ...). To address the issue,
we now only log *observable* loads. We do so by only logging if the page is visible or
if it becomes visible.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadWithDocumentLoader):
(WebCore::logNavigation): Deleted.

  • page/Page.cpp:

(WebCore::Page::setIsVisibleInternal):
(WebCore::Page::logNavigation):
(WebCore::Page::mainFrameLoadStarted):

  • page/Page.h:
7:07 PM Changeset in webkit [215968] by jdiggs@igalia.com
  • 18 edits in trunk

AX: ARIA "region" role which lacks an accessible name should not be treated as a landmark
https://bugs.webkit.org/show_bug.cgi?id=171180

Reviewed by Chris Fleizach.

Source/WebCore:

Remove mapping of LandmarkRegionRole for regions which lack an accessible name.
Doing so had a side effect of causing a number of DPub ARIA roles to stop being
mapped as ARIA landmarks. This is due to our internal role mappings, namely
treating the DPub ARIA landmark roles as if they were regions. Because DPub's
landmarks do not subclass region, and do not have the same name-from-author
requirement as region, create a new LandmarkDocRegionRole AccessibilityRole and
map DPub ARIA's generic landmarks to it.

No new tests because we already have sufficient coverage. Several existing
tests were given additional test cases to cover named and unnamed regions,
and test expectations updated accordingly.

  • accessibility/AccessibilityNodeObject.cpp:

(WebCore::AccessibilityNodeObject::determineAriaRoleAttribute):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::accessibleNameDerivesFromContent):
(WebCore::AccessibilityObject::isLandmark):
(WebCore::initializeRoleMap):
(WebCore::AccessibilityObject::computedRoleString):

  • accessibility/AccessibilityObject.h:
  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper _accessibilityIsLandmarkRole:]):
(-[WebAccessibilityObjectWrapper determineIsAccessibilityElement]):

  • accessibility/mac/WebAccessibilityObjectWrapperBase.mm:

(-[WebAccessibilityObjectWrapperBase ariaLandmarkRoleDescription]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):

LayoutTests:

Add new test cases to several tests so that we have coverage for both named and
unnamed regions, which now have different mappings. In aria-namefrom-author.html,
the region role was replaced with the table role because the test requires elements
which have mapped ARIA roles and lack an author-provided name. A region which lacks
an author-provided name is no longer mapped as an ARIA role as per the spec. Table
was introduced in ARIA 1.1 and serves the same purpose with respect to what is
being tested.

  • accessibility/aria-namefrom-author.html:
  • accessibility/gtk/xml-roles-exposed-expected.txt:
  • accessibility/gtk/xml-roles-exposed.html:
  • accessibility/mac/aria-grouping-roles.html:
  • accessibility/roles-computedRoleString.html:
  • accessibility/roles-exposed.html:
  • platform/gtk/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
6:55 PM Changeset in webkit [215967] by Simon Fraser
  • 4 edits in trunk

Add system trace points for Document::updateTouchEventRegions()
https://bugs.webkit.org/show_bug.cgi?id=171470
rdar://problem/31901239

Reviewed by Tim Horton.

Add trace markers for updateTouchEventRegions.

Source/WTF:

  • wtf/SystemTracing.h:

Tools:

  • Tracing/SystemTracePoints.plist:
6:19 PM Changeset in webkit [215966] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

LayoutTests/js/dom/Promise-static-all/race.html are flakey - Unhandled Promise Rejection messages
https://bugs.webkit.org/show_bug.cgi?id=171445

Unreviewed test gardening.

  • js/dom/Promise-static-all.html:

Fix an accidentally commented out line.

6:06 PM Changeset in webkit [215965] by Jonathan Bedard
  • 7 edits in trunk/Tools

webkitpy: Add apple_additions to webkitpy to insert Internal tools
https://bugs.webkit.org/show_bug.cgi?id=170461
<rdar://problem/31433077>

Reviewed by Daniel Bates.

Allow a package to be pulled in by run-webkit-tests which provides an interface to
run layout tests on an iOS device. If this package is not available, throw an
exception when attempting to run layout tests on an iOS device.

  • Scripts/webkitpy/port/config.py:

(apple_additions): Import apple_additions package.

  • Scripts/webkitpy/port/device.py:

(Device.install_dylibs): Pass a directory with all the frameworks and dylibs to be
installed on a device.
(Device.prepare_for_testing): Pass a list of ports to forward from the device to the
host, the bundle id of the app to be used for testing and a path to the layout test
directory to be mounted on the device.
(Device.finished_testing):

  • Scripts/webkitpy/port/factory.py:

(platform_options): Add apple_additions platform options if apple_additions exists.

  • Scripts/webkitpy/port/ios.py:

(IOSPort.setup_test_run): Install dylibs and frameworks on the device, pass ports
to forward, the bundle ID of the testing app and the layout tests directory to
each device.

  • Scripts/webkitpy/port/ios_device.py:

(IOSDevicePort):
(IOSDevicePort.default_child_processes): Query apple_additions for the number of child
processes to be run.
(IOSDevicePort.using_multiple_devices): Always assume multiple devices are used. When
a single device is used, it is still accessed through an array.
(IOSDevicePort._device_for_worker_number_map): Query apple_additions for the device
for worker number map.
(IOSDevicePort._driver_class): Query apple_additions for the test driver.
(IOSDevicePort.determine_full_port_name): Use class variable over hard-coded string.
(IOSDevicePort.check_for_leaks): No implementation for iOSDevicePort.
(IOSDevicePort.look_for_new_crash_logs): Ditto.
(IOSDevicePort.look_for_new_samples): Ditto.
(IOSDevicePort.sample_process): Ditto.
(IOSDevicePort._build_driver_flags): Use class variable over hard-coded string.
(IOSDevicePort._create_devices): Check that devices are available for testing and check
that we have enough devices for each child process.
(IOSDevicePort.clean_up_test_run): Have apple_additions preform any needed clean up.

  • Scripts/webkitpy/port/ios_device_unittest.py:

(IOSDeviceTest.test_operating_system):
(IOSDeviceTest.test_spindump): Override method from DarwinTest.
(IOSDeviceTest.test_sample_process): Ditto.
(IOSDeviceTest.test_sample_process_exception): Ditto.

5:48 PM Changeset in webkit [215964] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Enhance showLayerTree() to show fragments
https://bugs.webkit.org/show_bug.cgi?id=171469

Reviewed by Zalan Bujtas.

Have showLayerTree() dump fragments, like:

normal flow list(1)

layer 0x11c1879c0 at (0,0) size 700x1858 backgroundClip at (0,0) size 2120x779 clip at (0,0) size 2120x779

fragment 0: bounds in layer at (0,0) size 700x1858 fragment bounds at (0,0) size 700x779
fragment 1: bounds in layer at (710,-779) size 700x1858 fragment bounds at (710,0) size 700x779
fragment 2: bounds in layer at (1420,-1558) size 700x1858 fragment bounds at (1420,0) size 700x300

RenderMultiColumnFlowThread 0x11f1f3340 at (0,0) size 700x1858

We want these to show before the child renderers, so factor that code into writeLayerRenderers().

Overloading of write() for layers doesn't help anyone, so call it writeLayer() for searchability.

  • rendering/RenderLayer.cpp:

(WebCore::showLayerTree):

  • rendering/RenderLayer.h:
  • rendering/RenderTreeAsText.cpp:

(WebCore::writeLayer):
(WebCore::writeLayerRenderers):
(WebCore::writeLayers):

  • rendering/RenderTreeAsText.h:
5:48 PM Changeset in webkit [215963] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Modernize RenderTreeAsText code
https://bugs.webkit.org/show_bug.cgi?id=171458

Reviewed by Zalan Bujtas.

Use modern loops. More references to render objects and layers.

  • rendering/RenderTreeAsText.cpp:

(WebCore::write):
(WebCore::writeRenderNamedFlowThreads):
(WebCore::writeLayers):
(WebCore::writeSelection):
(WebCore::externalRepresentation):

5:44 PM Changeset in webkit [215962] by Wenson Hsieh
  • 9 edits in trunk

Fix and re-enable data interaction unit tests
https://bugs.webkit.org/show_bug.cgi?id=171446
<rdar://problem/31820646>

Reviewed by Tim Horton.

Source/WebCore:

Three small tweaks to get all data interaction tests passing again (changes detailed below).
Fixes a failing unit test: DataInteractionTests.RespectsExternalSourceFidelityRankings.

  • page/mac/DragControllerMac.mm:

When dropping in a plain text editable area, don't consider kUTTypeText to be a UTI supported by the destination.
This is because doing so would cause rich text UTIs, such as kUTTypeHTML, to match, so that the plain text area
would report HTML as a preferred UTI type to load when dropping rich content over it. What we want to check for
conformance here is really kUTTypePlainText.

(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod):

  • platform/Pasteboard.h:
  • platform/ios/PasteboardIOS.mm:

The default Pasteboard constructor no longer makes a sync call to the UI process to get the change count.
Instead, we introduce a new constructor that takes and sets the change count. This default constructor was used
from three places: Pasteboard::createForCopyAndPaste, Pasteboard::createPrivate and StaticPasteboard::create.

The first two call sites have been refactored to first fetch the change count from the UI process and then pass
it in to the constructor.

(WebCore::changeCountForPasteboard):
(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::createForCopyAndPaste):
(WebCore::Pasteboard::createPrivate):
(WebCore::Pasteboard::readString):
(WebCore::Pasteboard::types):

  • platform/mac/DragDataMac.mm:

(WebCore::typeIsAppropriateForSupportedTypes):
(WebCore::DragData::updatePreferredTypeIdentifiers):

Remove the two-pass heuristic. Instead, we should follow this policy: "select the highest fidelity UTI that
conforms to one of the destination's supported types".

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::Pasteboard):

Tools:

Enables all DataInteractionTests, and adjusts file upload tests to no longer write to a temporary file before
registering with the UIItemProvider, and instead just register data directly via
-registerDataRepresentationForTypeIdentifier:visibility:loadHandler:.

  • TestWebKitAPI/Tests/ios/DataInteractionTests.mm:

(TestWebKitAPI::TEST):
(temporaryURLForDataInteractionFileLoad): Deleted.
(cleanUpDataInteractionTemporaryPath): Deleted.
(-[UIItemProvider registerFileRepresentationForTypeIdentifier:withData:filename:]): Deleted.

  • TestWebKitAPI/ios/DataInteractionSimulator.h:
  • TestWebKitAPI/ios/DataInteractionSimulator.mm:
5:34 PM Changeset in webkit [215961] by beidson@apple.com
  • 20 edits in trunk

Teach the DatabaseProcess to be fully SessionID aware
https://bugs.webkit.org/show_bug.cgi?id=171451

Reviewed by Geoffrey Garen.
Source/WebKit2:

SessionIDs were already at the periphery of IDB and the DatabaseProcess.
Getting a separate IDBServer per SessionID is a pretty straightforward improvement.

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::idbServer):
(WebKit::DatabaseProcess::initializeWebsiteDataStore):
(WebKit::DatabaseProcess::fetchWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteData):
(WebKit::DatabaseProcess::deleteWebsiteDataForOrigins):
(WebKit::DatabaseProcess::indexedDatabaseOrigins):
(WebKit::DatabaseProcess::initializeDatabaseProcess): Deleted.
(WebKit::DatabaseProcess::ensureIndexedDatabaseRelativePathExists): Deleted.
(WebKit::DatabaseProcess::absoluteIndexedDatabasePathFromDatabaseRelativePath): Deleted.

  • DatabaseProcess/DatabaseProcess.h:

(WebKit::DatabaseProcess::indexedDatabaseDirectory): Deleted.

  • DatabaseProcess/DatabaseProcess.messages.in:
  • DatabaseProcess/DatabaseToWebProcessConnection.cpp:

(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):

  • DatabaseProcess/DatabaseToWebProcessConnection.h:
  • DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::create):
(WebKit::WebIDBConnectionToClient::WebIDBConnectionToClient):
(WebKit::WebIDBConnectionToClient::disconnectedFromWebProcess):
(WebKit::WebIDBConnectionToClient::deleteDatabase):
(WebKit::WebIDBConnectionToClient::openDatabase):
(WebKit::WebIDBConnectionToClient::abortTransaction):
(WebKit::WebIDBConnectionToClient::commitTransaction):
(WebKit::WebIDBConnectionToClient::didFinishHandlingVersionChangeTransaction):
(WebKit::WebIDBConnectionToClient::createObjectStore):
(WebKit::WebIDBConnectionToClient::deleteObjectStore):
(WebKit::WebIDBConnectionToClient::renameObjectStore):
(WebKit::WebIDBConnectionToClient::clearObjectStore):
(WebKit::WebIDBConnectionToClient::createIndex):
(WebKit::WebIDBConnectionToClient::deleteIndex):
(WebKit::WebIDBConnectionToClient::renameIndex):
(WebKit::WebIDBConnectionToClient::putOrAdd):
(WebKit::WebIDBConnectionToClient::getRecord):
(WebKit::WebIDBConnectionToClient::getAllRecords):
(WebKit::WebIDBConnectionToClient::getCount):
(WebKit::WebIDBConnectionToClient::deleteRecord):
(WebKit::WebIDBConnectionToClient::openCursor):
(WebKit::WebIDBConnectionToClient::iterateCursor):
(WebKit::WebIDBConnectionToClient::establishTransaction):
(WebKit::WebIDBConnectionToClient::databaseConnectionPendingClose):
(WebKit::WebIDBConnectionToClient::databaseConnectionClosed):
(WebKit::WebIDBConnectionToClient::abortOpenAndUpgradeNeeded):
(WebKit::WebIDBConnectionToClient::didFireVersionChangeEvent):
(WebKit::WebIDBConnectionToClient::openDBRequestCancelled):
(WebKit::WebIDBConnectionToClient::confirmDidCloseFromServer):
(WebKit::WebIDBConnectionToClient::getAllDatabaseNames):

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:
  • Shared/Databases/DatabaseProcessCreationParameters.cpp:

(WebKit::DatabaseProcessCreationParameters::encode):
(WebKit::DatabaseProcessCreationParameters::decode):

  • Shared/Databases/DatabaseProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureDatabaseProcess):
(WebKit::WebProcessPool::resolvePathsForSandboxExtensions):
(WebKit::WebProcessPool::pageAddedToProcess):

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

(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::databaseProcessParameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedIndexedDatabaseDirectory):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::create):
(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
  • WebProcess/Databases/WebToDatabaseProcessConnection.cpp:

(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:
5:20 PM Changeset in webkit [215960] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marked media/track/track-in-band-style.html as flaky timeout.
https://bugs.webkit.org/show_bug.cgi?id=171465

Unreviewed test gardening.

Patch by Matt Lewis <Matt Lewis> on 2017-04-28

  • platform/mac/TestExpectations:
5:17 PM Changeset in webkit [215959] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.1.19.0.1/Source

Versioning.

5:10 PM Changeset in webkit [215958] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.19.0.1

New tag.

4:34 PM Changeset in webkit [215957] by dino@apple.com
  • 3 edits
    2 adds in trunk

App crashing: Dispatch queue: com.apple.root.user-interactive-qos / vBoxConvolve / WebCore::FEGaussianBlur::platformApplySoftware()
https://bugs.webkit.org/show_bug.cgi?id=171461
<rdar://problem/30534722>

Reviewed by Eric Carlson.

Source/WebCore:

We're getting reports of crashes in this function, caused by null or empty data being
passed to vImage. Guard against this, in a way that will ASSERT in debug builds if
anyone comes across it.

Test: css3/filters/blur-various-radii.html

  • platform/graphics/filters/FEGaussianBlur.cpp:

(WebCore::accelerateBoxBlur): Return early if things don't look good.

LayoutTests:

Test a bunch of blurs a frame at a time.

  • css3/filters/blur-various-radii-expected.html: Added.
  • css3/filters/blur-various-radii.html: Added.
4:28 PM Changeset in webkit [215956] by Chris Dumez
  • 22 edits in trunk

Stop using legacy ClientRect / ClientRectList in Internals
https://bugs.webkit.org/show_bug.cgi?id=171412

Reviewed by Simon Fraser.

Source/WebCore:

Stop using legacy ClientRect / ClientRectList in Internals amd use the
newer DOMRect instead.

  • dom/DOMRect.idl:
  • page/Page.cpp:

(WebCore::Page::nonFastScrollableRects):
(WebCore::Page::touchEventRectsForEvent):
(WebCore::Page::passiveTouchEventListenerRects):

  • page/Page.h:
  • testing/Internals.cpp:

(WebCore::Internals::absoluteCaretBounds):
(WebCore::Internals::boundingBox):
(WebCore::Internals::inspectorHighlightRects):
(WebCore::Internals::layoutViewportRect):
(WebCore::Internals::visualViewportRect):
(WebCore::Internals::touchEventRectsForEvent):
(WebCore::Internals::passiveTouchEventListenerRects):
(WebCore::Internals::nonFastScrollableRects):
(WebCore::Internals::selectionBounds):

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

Rebaseline existing tests as DOMRect has more properties than ClientRect.

  • fast/visual-viewport/nonzoomed-rects-expected.txt:
  • fast/visual-viewport/rtl-nonzoomed-rects-expected.txt:
  • fast/visual-viewport/rtl-zoomed-rects-expected.txt:
  • fast/visual-viewport/rubberbanding-viewport-rects-expected.txt:
  • fast/visual-viewport/rubberbanding-viewport-rects-extended-background-expected.txt:
  • fast/visual-viewport/rubberbanding-viewport-rects-header-footer-expected.txt:
  • fast/visual-viewport/zoomed-fixed-expected.txt:
  • fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt:
  • fast/visual-viewport/zoomed-rects-expected.txt:
  • inspector/dom/hideHighlight-expected.txt:
  • inspector/dom/highlightQuad-expected.txt:
  • inspector/dom/highlightRect-expected.txt:
4:26 PM Changeset in webkit [215955] by commit-queue@webkit.org
  • 37 edits
    1 add in trunk/Source

getUserMedia video streams should follow device orientation
https://bugs.webkit.org/show_bug.cgi?id=171284

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-28
Reviewed by Eric Carlson.

Source/WebCore:

Only really affects AVVideoCaptureSource on iOS. Manually testing the following cases:

  • Mac: no change of behavior
  • iOS: page loaded in portrait, video is portrait. page loaded in landscape, video is landscape
  • iOS: changing the device orientation makes the video samples to be moved to landscape/portrait.
  • Same tests as above with peer connection.

Making Document having an OrientationNotifier that AVVideoCaptureSources get registered to.
Making AVVideoCaptureSource an OrientationNotifier::Observer so that it can changes width/height if needed.

Refactoring to specialize CaptureFactory in VideoCaptureFactory and AudioCaptureFactory.
Refactoring to return a CaptureSourceOrError instead of passing an out parameter plus returning a RefPtr.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::allow):

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::orientationChanged):

  • dom/Document.h:
  • page/Frame.cpp:

(WebCore::Frame::orientationChanged):

  • platform/OrientationNotifer.h: Copied from Source/WebKit2/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h.

(WebCore::OrientationNotifier::Observer::setNotifier):
(WebCore::OrientationNotifier::Observer::~Observer):
(WebCore::OrientationNotifier::orientationChanged):
(WebCore::OrientationNotifier::addObserver):
(WebCore::OrientationNotifier::removeObserver):

  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::monitorOrientation):

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/RealtimeMediaSource.h:

(WebCore::CaptureSourceOrError::CaptureSourceOrError):
(WebCore::CaptureSourceOrError::operator bool):
(WebCore::CaptureSourceOrError::source):

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::setAudioFactory):
(WebCore::RealtimeMediaSourceCenter::unsetAudioFactory):
(WebCore::RealtimeMediaSourceCenter::setVideoFactory):
(WebCore::RealtimeMediaSourceCenter::unsetVideoFactory):

  • platform/mediastream/RealtimeMediaSourceCenter.h:

(WebCore::RealtimeMediaSourceCenter::defaultAudioFactory):
(WebCore::RealtimeMediaSourceCenter::defaultVideoFactory):
(WebCore::RealtimeMediaSourceCenter::audioFactory):
(WebCore::RealtimeMediaSourceCenter::videoFactory):

  • platform/mediastream/mac/AVAudioCaptureSource.h:
  • platform/mediastream/mac/AVAudioCaptureSource.mm:

(WebCore::AVAudioCaptureSource::create):
(WebCore::AVAudioCaptureSource::factory):

  • platform/mediastream/mac/AVVideoCaptureSource.h:
  • platform/mediastream/mac/AVVideoCaptureSource.mm:

(WebCore::AVVideoCaptureSource::create):
(WebCore::AVVideoCaptureSource::factory):
(WebCore::AVVideoCaptureSource::monitorOrientation):
(WebCore::AVVideoCaptureSource::orientationChanged):
(WebCore::AVVideoCaptureSource::processNewFrame):

  • platform/mediastream/mac/CoreAudioCaptureSource.cpp:

(WebCore::CoreAudioCaptureSource::create):
(WebCore::CoreAudioCaptureSource::factory):

  • platform/mediastream/mac/CoreAudioCaptureSource.h:
  • platform/mediastream/mac/MockRealtimeAudioSourceMac.mm:

(WebCore::MockRealtimeAudioSource::create):

  • platform/mediastream/mac/MockRealtimeVideoSourceMac.h:
  • platform/mediastream/mac/MockRealtimeVideoSourceMac.mm:

(WebCore::MockRealtimeVideoSource::create):
(WebCore::MockRealtimeVideoSourceMac::orientationChanged):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.cpp:

(WebCore::RealtimeMediaSourceCenterMac::createMediaStream):
(WebCore::RealtimeMediaSourceCenterMac::bestSourcesForTypeAndConstraints):
(WebCore::RealtimeMediaSourceCenterMac::defaultAudioFactory):
(WebCore::RealtimeMediaSourceCenterMac::defaultVideoFactory):

  • platform/mediastream/mac/RealtimeMediaSourceCenterMac.h:
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:

(WebCore::RealtimeMediaSourceCenterOwr::createMediaStream):

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h:
  • platform/mock/MockRealtimeAudioSource.cpp:

(WebCore::MockRealtimeAudioSource::create):
(WebCore::MockRealtimeAudioSource::factory):

  • platform/mock/MockRealtimeAudioSource.h:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::validateRequestConstraints):
(WebCore::MockRealtimeMediaSourceCenter::createMediaStream):
(WebCore::MockRealtimeMediaSourceCenter::defaultAudioFactory):
(WebCore::MockRealtimeMediaSourceCenter::defaultVideoFactory):

  • platform/mock/MockRealtimeMediaSourceCenter.h:
  • platform/mock/MockRealtimeVideoSource.cpp:

(WebCore::MockRealtimeVideoSource::create):
(WebCore::MockRealtimeVideoSource::factory):

  • platform/mock/MockRealtimeVideoSource.h:

Source/WebKit2:

Refactoring to specialize CaptureFactory in VideoCaptureFactory and AudioCaptureFactory.
Refactoring to return a CaptureSourceOrError instead of passing an out parameter in addition to returning a RefPtr.

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:

(WebKit::UserMediaCaptureManagerProxy::createMediaSourceForCaptureDeviceWithConstraints):

  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
  • UIProcess/Cocoa/UserMediaCaptureManagerProxy.messages.in:
  • WebProcess/cocoa/UserMediaCaptureManager.cpp:

(WebKit::UserMediaCaptureManager::createCaptureSource):
(WebKit::UserMediaCaptureManager::createMediaSourceForCaptureDeviceWithConstraints): Deleted.

  • WebProcess/cocoa/UserMediaCaptureManager.h:
3:41 PM Changeset in webkit [215954] by Chris Dumez
  • 12 edits in trunk/Source/WebKit2

[iOS] We should not take a background assertion for the UIProcess when app is MobileMail
https://bugs.webkit.org/show_bug.cgi?id=171435
<rdar://problem/31132330>

Reviewed by Geoffrey Garen.

Add SPI to disable taking on background process assertions in the UIProcess.
This is useful for MobileMail.

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration shouldTakeUIBackgroundAssertion]):
(-[_WKProcessPoolConfiguration setShouldTakeUIBackgroundAssertion:]):

  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::NetworkProcessProxy):

  • UIProcess/ProcessAssertion.h:

(WebKit::ProcessAssertion::setClient):

  • UIProcess/ProcessThrottler.cpp:

(WebKit::ProcessThrottler::ProcessThrottler):
(WebKit::m_shouldTakeUIBackgroundAssertion):
(WebKit::ProcessThrottler::didConnectToProcess):

  • UIProcess/ProcessThrottler.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::WebProcessProxy):

3:39 PM Changeset in webkit [215953] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Unreviewed attempt to fix iOS build after r215943.

  • Configurations/Base.xcconfig:
3:37 PM Changeset in webkit [215952] by commit-queue@webkit.org
  • 16 edits in trunk/Source/WebCore

Unify how BitmapImage handles the availability of a decoded for large and animated images
https://bugs.webkit.org/show_bug.cgi?id=171410

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-04-28
Reviewed by Simon Fraser.

Rename some functions which are related to animation frame availability.
Make BitmapImage call ImageObserver::imageFrameAvailable() whenever a
frame is available regardless it is for an animated or for a large image.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::isVisibleInViewport):

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::autoplayPermitted):
(WebCore::isMainContentForPurposesOfAutoplay):

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImageObserver::imageFrameAvailable):
(WebCore::CachedImage::imageFrameAvailable):
(WebCore::CachedImage::usesImageContainerSize): Deleted.
(WebCore::CachedImage::imageHasRelativeWidth): Deleted.
(WebCore::CachedImage::imageHasRelativeHeight): Deleted.
(WebCore::CachedImage::CachedImageObserver::animationAdvanced): Deleted.
(WebCore::CachedImage::animationAdvanced): Deleted.

  • loader/cache/CachedImage.h:
  • loader/cache/CachedImageClient.h:

(WebCore::CachedImageClient::imageFrameAvailable):
(WebCore::CachedImageClient::newImageAnimationFrameAvailable): Deleted.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::internalAdvanceAnimation):
(WebCore::BitmapImage::imageFrameAvailableAtIndex):
(WebCore::BitmapImage::newFrameNativeImageAvailableAtIndex): Deleted.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/Image.h:

(WebCore::Image::imageFrameAvailableAtIndex):
(WebCore::Image::newFrameNativeImageAvailableAtIndex): Deleted.

  • platform/graphics/ImageFrameCache.cpp:

(WebCore::ImageFrameCache::cacheAsyncFrameNativeImageAtIndex):

  • platform/graphics/ImageObserver.h:
  • platform/graphics/ImageTypes.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::RenderElement):
(WebCore::RenderElement::shouldRepaintInVisibleRect):
(WebCore::RenderElement::imageFrameAvailable):
(WebCore::RenderElement::repaintForPausedImageAnimationsIfNeeded):
(WebCore::shouldRepaintForImageAnimation): Deleted.
(WebCore::RenderElement::newImageAnimationFrameAvailable): Deleted.

  • rendering/RenderElement.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::updateVisibleViewportRect):

  • svg/graphics/SVGImageClients.h:
3:33 PM Changeset in webkit [215951] by commit-queue@webkit.org
  • 4 edits in trunk

ARGUMENT BAD: time, time >= 0
https://bugs.webkit.org/show_bug.cgi?id=164336
rdar://problem/29314891

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-04-28
Reviewed by Eric Carlson.

Source/WebCore:

Handle invalid duration and current time when calculating remaining time.

Test media/modern-media-controls/pip-support/pip-support-click.html now works without a workaround
in media/modern-media-controls/pip-support/pip-support-enabled.html

  • platform/mac/WebVideoFullscreenHUDWindowController.mm:

(-[WebVideoFullscreenHUDWindowController remainingTimeText]):

LayoutTests:

Remove workaround that affected other tests.

  • media/modern-media-controls/pip-support/pip-support-click.html:
3:10 PM Changeset in webkit [215950] by Jonathan Bedard
  • 2 edits in trunk/Tools

Unreviewed follow-up to r214705.

shut.copytree will fail if given a file as an argument instead of a directory.

  • Scripts/webkitpy/common/system/filesystem.py:

(FileSystem.copy_to_base_host): Use copytree when source is a directory and copyfile
when source is a file.
(FileSystem.copy_from_base_host): Ditto.

2:45 PM Changeset in webkit [215949] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

Add WebCore::protocolIsJavaScript(StringView)
https://bugs.webkit.org/show_bug.cgi?id=171396

Reviewed by Alex Christensen.

Add an overload of WebCore::protocolIsJavaScript() that takes a StringView to
avoid the need for a caller to allocate a new String object when converting
from a StringView to a String. We are not using this functionality at the moment,
but we will in the patch for <https://bugs.webkit.org/show_bug.cgi?id=170925>.

No functionality has changed. So, no new tests.

  • platform/URL.cpp: Remove an outdated comment about protocolIs(StringView, const char*).

This overload was removed in r212508.
(WebCore::protocolIsInternal): Added.
(WebCore::protocolIs): Implemented in terms of WebCore::protocolIsInternal().
(WebCore::URL::protocolIs): Ditto.
(WebCore::protocolIsJavaScript): Added; overload that takes a StringView.
(WebCore::mimeTypeFromDataURL): Modified to use WebCore::protocolIsInternal().

  • platform/URL.h:
2:44 PM Changeset in webkit [215948] by aestes@apple.com
  • 19 edits in trunk/Source

[macOS] WebPlaybackControlsManager needs to know when the selected text or audio track changes
https://bugs.webkit.org/show_bug.cgi?id=171434
<rdar://problem/31887922>

Reviewed by Eric Carlson.

Source/WebCore:

  • dom/GenericEventQueue.cpp:

(WebCore::GenericEventQueue::hasPendingEventsOfType): Added to check if a pending event
exists of a certain type.

  • dom/GenericEventQueue.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setSelectedTextTrack): Even if no track modes change, fire a
change event when the track to select is off or automatic so that
WebPlaybackSessionModelMediaElement detects the change.

  • html/track/TrackListBase.cpp:

(TrackListBase::isChangeEventScheduled): Returns true if m_asyncEventQueue has a pending
change event.

  • html/track/TrackListBase.h:
  • platform/cocoa/WebPlaybackSessionModel.h:

(WebCore::WebPlaybackSessionModelClient::audioMediaSelectionIndexChanged):
(WebCore::WebPlaybackSessionModelClient::legibleMediaSelectionIndexChanged):

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

(WebCore::WebPlaybackSessionModelMediaElement::setMediaElement): Registered/unregistered for
the change event on the audio and text tracks.
(WebCore::WebPlaybackSessionModelMediaElement::updateForEventName): Called
updateMediaSelectionIndices() when the change event fires.
(WebCore::WebPlaybackSessionModelMediaElement::updateMediaSelectionOptions): Renamed from
updateLegibleOptions().
(WebCore::WebPlaybackSessionModelMediaElement::updateMediaSelectionIndices): Called
audioMediaSelectionIndexChanged() and legibleMediaSelectionIndexChanged() on m_clients with
the updated indices.
(WebCore::WebPlaybackSessionModelMediaElement::legibleMediaSelectedIndex): Fixed a bug
where selectedIndex would never be set to offIndex if offIndex is 0 (which it usually is).
(WebCore::WebPlaybackSessionModelMediaElement::updateLegibleOptions): Renamed to
updateMediaSelectionOptions().

  • platform/mac/WebPlaybackControlsManager.h:
  • platform/mac/WebPlaybackControlsManager.mm:

(-[WebPlaybackControlsManager setAudioMediaSelectionIndex:]): Set
_currentAudioTouchBarMediaSelectionOption to the object at selectedIndex and manually
triggered a KVO notification. We can't call -setCurrentAudioTouchBarMediaSelectionOption:
here since that will send a message back to the Web process.
(-[WebPlaybackControlsManager setLegibleMediaSelectionIndex:]): Ditto for
_currentLegibleTouchBarMediaSelectionOption.

  • platform/mac/WebPlaybackSessionInterfaceMac.h:
  • platform/mac/WebPlaybackSessionInterfaceMac.mm:

(WebCore::WebPlaybackSessionInterfaceMac::audioMediaSelectionIndexChanged): Called
-[WebPlaybackControlsManager setAudioMediaSelectionIndex:].
(WebCore::WebPlaybackSessionInterfaceMac::legibleMediaSelectionIndexChanged): Called
-[WebPlaybackControlsManager setLegibleMediaSelectionIndex:].

Source/WebKit2:

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

(WebKit::WebPlaybackSessionModelContext::setAudioMediaSelectionIndex): Set
m_audioMediaSelectedIndex and notified clients.
(WebKit::WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex): Ditto for
m_legibleMediaSelectedIndex.
(WebKit::WebPlaybackSessionManagerProxy::setAudioMediaSelectionIndex): Called
WebPlaybackSessionModelContext::setAudioMediaSelectionIndex().
(WebKit::WebPlaybackSessionManagerProxy::setLegibleMediaSelectionIndex): Called
WebPlaybackSessionModelContext::setLegibleMediaSelectionIndex().

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

(WebKit::WebPlaybackSessionInterfaceContext::audioMediaSelectionIndexChanged): Called
WebPlaybackSessionManager:: audioMediaSelectionIndexChanged().
(WebKit::WebPlaybackSessionInterfaceContext::legibleMediaSelectionIndexChanged): Called
WebPlaybackSessionManager::legibleMediaSelectionIndexChanged().
(WebKit::WebPlaybackSessionManager::audioMediaSelectionIndexChanged): Sent
WebPlaybackSessionManagerProxy::SetAudioMediaSelectionIndex().
(WebKit::WebPlaybackSessionManager::legibleMediaSelectionIndexChanged): Sent
WebPlaybackSessionManagerProxy::SetLegibleMediaSelectionIndex().

2:22 PM Changeset in webkit [215947] by dbates@webkit.org
  • 4 edits in trunk/Source/WTF

Add StringView::toExistingAtomicString()
https://bugs.webkit.org/show_bug.cgi?id=171405

Reviewed by Andreas Kling.

Similar to the reasons for JSString::toExistingAtomicString() we should expose a way to
convert a StringView to an existing atomic string. Looking up an atomic string is more
efficient that creating one, which requires a lookup and memory allocation.

We are not making use of StringView::toExistingAtomicString() now, but will in the patch
for <https://bugs.webkit.org/show_bug.cgi?id=170925>.

  • wtf/text/AtomicStringImpl.cpp:

(WTF::AtomicStringImpl::lookUp): Modified to take a const LChar*/UChar*.
(WTF::AtomicStringImpl::lookUpInternal): Renamed to AtomicStringImpl::lookup() to avoid
an extra function call.

  • wtf/text/AtomicStringImpl.h:
  • wtf/text/StringView.h:

(WTF::StringView::toExistingAtomicString): Added.

2:16 PM Changeset in webkit [215946] by Chris Dumez
  • 9 edits
    1 copy
    2 adds in trunk

Range.getClientRects() / getBoundingClientRect() should return DOMRect types
https://bugs.webkit.org/show_bug.cgi?id=171393

Reviewed by Simon Fraser.

Source/WebCore:

Range.getClientRects() / getBoundingClientRect() should return DOMRect types:

Test: fast/dom/Range/getBoundingClientRect-getClientRects-return-type.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/DOMRect.cpp: Copied from Source/WebCore/dom/DOMRect.h.

(WebCore::createDOMRectVector):

  • dom/DOMRect.h:
  • dom/Element.cpp:

(WebCore::Element::getClientRects):

  • dom/Range.cpp:

(WebCore::Range::getClientRects):
(WebCore::Range::getBoundingClientRect):

  • dom/Range.h:
  • dom/Range.idl:

LayoutTests:

Add layout test coverage.

  • fast/dom/Range/getBoundingClientRect-getClientRects-return-type-expected.txt: Added.
  • fast/dom/Range/getBoundingClientRect-getClientRects-return-type.html: Added.
2:02 PM Changeset in webkit [215945] by Chris Dumez
  • 8 edits
    1 delete in trunk

Tweak window.open features argument tokenizer to match HTML standard and Edge
https://bugs.webkit.org/show_bug.cgi?id=170548

Reviewed by Geoffrey Garen.

LayoutTests/imported/w3c:

  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener-expected.txt:

Rebaseline test now that more checks are passing. The remaining failures are because the test currently expects "noopener=0" / "noopener=false" to activate
the 'noopener' feature. The test matches the specification which currently says that if the 'noopener' key is present, then the 'noopener' feature should be
activated, no matter its value. However, I am intentionally not making this change yet because:

  • This behavior would be inconsistent with other Window features
  • There is upstream discussion on this (https://github.com/whatwg/html/issues/2600) and the current feedback is that the specification should likely change to treat 'noopener' more consistently with other features.

I will follow-up once the specification / test settles.

  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html:

Re-sync test from upstream after https://github.com/w3c/web-platform-tests/pull/5715.

Source/WebCore:

Update window.open() features argument tokenizer to match HTML standard:

Also update window.open() to return null instead of the window when
the 'noopener' feature is activated, as per:

No new tests, rebaselined existing test.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::createWindow):
Update window.open() to return null instead of the window when
the 'noopener' feature is activated, as per:

  • page/WindowFeatures.cpp:

(WebCore::isSeparator):
Treat all ASCII spaces as feature separators, as per:

This has the effect of adding U+000C (FormFeed) as a separator.

(WebCore::processFeaturesString):
Align tokenizing code with the specification:

In particular, the following changes were made:

  • After the key, skip to first '=', but don't skip past a ',' or a non-separator. The "or a non-separator" part is new in the spec (step 3.6.1) and is now implemented.
  • After looking for the '=', only treat what follows as a value if the current character is a separator. This is as per step 7 in the spec.

These changes now cause us to parse 'foo noopener=1' as ('foo', ), ('noopener', '1').

1:57 PM Changeset in webkit [215944] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Implement ondevicechange
https://bugs.webkit.org/show_bug.cgi?id=169872

Unreviewed, remove some dead code accidentally committed in r215929.

  • platform/mediastream/CaptureDeviceManager.cpp:
1:52 PM Changeset in webkit [215943] by Chris Dumez
  • 8 edits in trunk

Update DOMTokenList.replace() to match the latest DOM specification
https://bugs.webkit.org/show_bug.cgi?id=171388

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Re-sync web-platform-test after:

This adds test coverage for the behavior change in this patch.

  • web-platform-tests/dom/nodes/Element-classlist.html:

Source/WebCore:

Update DOMTokenList.replace() to match the latest DOM specification after:

The latest spec text is at:

The behavior change in this patch causes (a, b, c).replace(a, c) to return
(c, b) instead of (b, c). This new behavior is aligned with Firefox as well.

No new tests, updated existing test.

  • html/DOMTokenList.cpp:

(WebCore::DOMTokenList::replace):

Source/WTF:

Add Vector::findMatching() API which takes in a lambda function for convenience.
Add optional startIndex parameter to Vector::removeFirstMatching() / removeAllMatching()
to remove items only after given index.

  • wtf/Vector.h:

(WTF::minCapacity>::findMatching):
(WTF::minCapacity>::find):
(WTF::minCapacity>::removeFirstMatching):
(WTF::minCapacity>::removeAllMatching):

Tools:

Add API test coverage for new Vector API.

  • TestWebKitAPI/Tests/WTF/Vector.cpp:

(TestWebKitAPI::TEST):

1:50 PM Changeset in webkit [215942] by Jonathan Bedard
  • 3 edits in trunk/Tools

WebKitTestRunner/DumpRenderTree prevent device from sleeping
https://bugs.webkit.org/show_bug.cgi?id=170731

Reviewed by Alex Christensen.

While running layout tests on a device, the device should not be put asleep.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(dumpRenderTree): Disable idle timer.

  • WebKitTestRunner/ios/TestControllerIOS.mm:

(WTR::TestController::platformInitialize): Ditto.

1:48 PM Changeset in webkit [215941] by beidson@apple.com
  • 34 edits
    2 copies in trunk

Start of support for multiple WebsiteDataStore/SessionIDs per process
https://bugs.webkit.org/show_bug.cgi?id=171422

Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by API tests.

  • platform/network/NetworkStorageSession.h:
  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::ensureSession):

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

  • CMakeLists.txt:
  • WebKit2.xcodeproj/project.pbxproj:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::addWebsiteDataStore):
(WebKit::NetworkProcess::destroySession):
(WebKit::NetworkProcess::destroyPrivateBrowsingSession): Deleted.

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • NetworkProcess/RemoteNetworkingContext.h:
  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • NetworkProcess/soup/RemoteNetworkingContextSoup.cpp:

(WebKit::RemoteNetworkingContext::ensureWebsiteDataStoreSession):

  • Shared/WebsiteDataStoreParameters.cpp: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.

(WebKit::WebsiteDataStoreParameters::WebsiteDataStoreParameters):
(WebKit::WebsiteDataStoreParameters::encode):
(WebKit::WebsiteDataStoreParameters::decode):

  • Shared/WebsiteDataStoreParameters.h: Copied from Source/WebKit2/WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h.
  • UIProcess/API/APIWebsiteDataStore.cpp:

(API::WebsiteDataStore::defaultDataStore):
(API::WebsiteDataStore::createLegacy):
(API::WebsiteDataStore::WebsiteDataStore):
(API::WebsiteDataStore::create): Deleted.

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/gtk/WebKitWebsiteDataManager.cpp:

(webkitWebsiteDataManagerCreate):
(webkitWebsiteDataManagerGetDataStore):

  • UIProcess/WebPageProxy.cpp:

(WebKit::m_weakPtrFactory):

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

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::setAnyPageGroupMightHavePrivateBrowsingEnabled):
(WebKit::WebProcessPool::pageAddedToProcess):
(WebKit::WebProcessPool::pageRemovedFromProcess):

  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::create):
(WebKit::WebsiteDataStore::WebsiteDataStore):
(WebKit::WebsiteDataStore::~WebsiteDataStore):
(WebKit::WebsiteDataStore::resolveDirectoriesIfNecessary):
(WebKit::WebsiteDataStore::parameters):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.h:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):
(WebKit::WebFrameNetworkingContext::storageSession):

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:

(WebKit::WebFrameNetworkingContext::ensureWebsiteDataStoreSession):

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::addWebsiteDataStore):
(WebKit::WebProcess::destroySession):
(WebKit::WebProcess::destroyPrivateBrowsingSession): Deleted.

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

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

1:43 PM Changeset in webkit [215940] by Chris Dumez
  • 5 edits in trunk

URLSearchParams should be reflective
https://bugs.webkit.org/show_bug.cgi?id=171345

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Merge https://github.com/w3c/web-platform-tests/pull/5736 to gain test
coverage.

  • web-platform-tests/url/urlsearchparams-constructor-expected.txt:
  • web-platform-tests/url/urlsearchparams-constructor.html:

Source/WebCore:

There was a bug in our implementation of [1] where we would replace
'+' with 0x20 *after* URL-decoding the string, instead of *before*.
This was causing us to replace URL-encoded '+' characters with 0x20.

[1] https://url.spec.whatwg.org/#concept-urlencoded-parser

No new tests, updated existing test.

  • platform/URLParser.cpp:
1:42 PM Changeset in webkit [215939] by commit-queue@webkit.org
  • 25 edits in trunk

Adding a runtime flag specific to MediaDevices
https://bugs.webkit.org/show_bug.cgi?id=171433

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-28
Reviewed by Geoffrey Garen.

Source/WebCore:

Covered by existing tests.

Adding a preference for MediaDevices.
Setting media devices runtime flag to false by default.
Setting peer connection and media stream flags to true by default.
Activating mediaDevices and getUserMedia Navigator properties based on media devices flag.

  • Modules/mediastream/NavigatorMediaDevices.idl:
  • Modules/mediastream/NavigatorUserMedia.idl:
  • page/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):

  • page/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::mediaDevicesEnabled):
(WebCore::RuntimeEnabledFeatures::setMediaDevicesEnabled):

Source/WebKit/mac:

Adding a preference for MediaDevices.
Setting media devices runtime flag to false by default.
Setting peer connection and media stream flags to true by default.

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences mediaDevicesEnabled]):
(-[WebPreferences setMediaDevicesEnabled:]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Adding a preference for MediaDevices.
Setting media devices runtime flag to false by default.
Setting peer connection and media stream flags to true by default.
Sending microphone sandbox extension based on media devices and not media stream flag.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetMediaDevicesEnabled):
(WKPreferencesGetMediaDevicesEnabled):

  • UIProcess/API/C/WKPreferencesRef.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • UIProcess/UserMediaPermissionRequestManagerProxy.cpp:

(WebKit::UserMediaPermissionRequestManagerProxy::requestUserMediaPermissionForFrame):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Updating WTR and DRT as peer connection and media stream runtime flags are enabled by default.
Setting media devices runtime flag to true for WTR and DRT.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(enableExperimentalFeatures):
(resetWebPreferencesToConsistentValues):

  • TestWebKitAPI/Tests/WebKit2/EnumerateMediaDevices.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/WebKit2/UserMedia.cpp:

(TestWebKitAPI::TEST):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setMediaDevicesEnabled):
(WTR::TestRunner::setMediaStreamEnabled): Deleted.
(WTR::TestRunner::setPeerConnectionEnabled): Deleted.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

1:13 PM Changeset in webkit [215938] by Joseph Pecoraro
  • 3 edits in trunk/LayoutTests

LayoutTests/js/dom/Promise-static-all/race.html are flakey - Unhandled Promise Rejection messages
https://bugs.webkit.org/show_bug.cgi?id=171445

Reviewed by Saam Barati.

  • js/dom/Promise-static-all.html:
  • js/dom/Promise-static-race.html:

Silence the console messages for unhandled rejections in this test.
There are unhandled rejections and messages sometimes appear
depending on the order of events on the page. The messages are not
important for this test so just mute them.

12:53 PM Changeset in webkit [215937] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip imported/w3c/web-platform-tests/html/semantics/tabular-data/processing-model-1/span-limits.html in Debug builds

This test is slow.

12:50 PM Changeset in webkit [215936] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171094

Unreviewed test gardening.

12:46 PM Changeset in webkit [215935] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Implement ondevicechange
https://bugs.webkit.org/show_bug.cgi?id=169872

Unreviewed, fix test crash.

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::RealtimeMediaSourceCenter::addDevicesChangedObserver): "nextToken" must be static.

12:08 PM Changeset in webkit [215934] by dino@apple.com
  • 4 edits
    1 add in trunk

[WebGPU] Label MTLCommandQueues with a prefix for internal telemetry
https://bugs.webkit.org/show_bug.cgi?id=171441
<rdar://problem/31826915>

Reviewed by Tim Horton.

Source/WebCore:

Prefix any label that is set by the WebGPU API so that
our telemetry can identify the use. Don't expose that
prefix to the API though.

New API Test: GPUCommandQueue

  • platform/graphics/cocoa/GPUCommandQueueMetal.mm:

(WebCore::GPUCommandQueue::GPUCommandQueue):
(WebCore::GPUCommandQueue::label):
(WebCore::GPUCommandQueue::setLabel):

Tools:

Add an API test for GPUCommandQueue, exercising creation
and setting the label.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebCore/mac/GPUCommandQueue.mm: Added.

(TestWebKitAPI::TEST_F):

11:39 AM Changeset in webkit [215933] by Ryan Haddad
  • 2 edits in trunk/LayoutTests/imported/w3c

Rebaseline imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html after r215916.

Unreviewed test gardening.

  • web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl-expected.txt:
11:17 AM Changeset in webkit [215932] by jdiggs@igalia.com
  • 7 edits
    2 adds in trunk

[ATK] aria-modal="true" should be exposed via ATK_STATE_MODAL
https://bugs.webkit.org/show_bug.cgi?id=171188

Reviewed by Chris Fleizach.

Source/WebCore:

Include ATK_STATE_MODAL in the AtkObject's state set if the accessible
element's node is the current ARIA modal node.

Test: accessibility/gtk/aria-modal-state-exposed.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isAriaModalNode):

  • accessibility/AccessibilityObject.h:
  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(setAtkStateSetFromCoreObject):

Tools:

Add "AXModal" attribute string so that we can test the state's exposure.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

  • accessibility/gtk/aria-modal-state-exposed-expected.txt: Added.
  • accessibility/gtk/aria-modal-state-exposed.html: Added.
10:52 AM Changeset in webkit [215931] by Ryan Haddad
  • 5 edits in trunk/LayoutTests

Rebaselining test after r215916.
https://bugs.webkit.org/show_bug.cgi?id=171438

Unreviewed test gardening.

Patch by Matt Lewis <Matt Lewis> on 2017-04-28

  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
  • platform/mac-elcapitan/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-wk1/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
10:51 AM Changeset in webkit [215930] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Revert instrumentation from https://bugs.webkit.org/show_bug.cgi?id=170086 that is no longer needed.
https://bugs.webkit.org/show_bug.cgi?id=170094

Reviewed by JF Bastien and Keith Miller.

  • heap/Heap.cpp:

(JSC::Heap::resumeThePeriphery):

10:22 AM Changeset in webkit [215929] by eric.carlson@apple.com
  • 25 edits
    2 adds in trunk

Implement ondevicechange
https://bugs.webkit.org/show_bug.cgi?id=169872
<rdar://problem/28945035>

Reviewed by Jer Noble.

Source/WebCore:

Test: fast/mediastream/device-change-event.html

  • Modules/mediastream/MediaDevices.cpp:

(WebCore::MediaDevices::MediaDevices): Register for devicechange callbacks.
(WebCore::MediaDevices::~MediaDevices): Unregister.
(WebCore::MediaDevices::scheduledEventTimerFired):

  • Modules/mediastream/MediaDevices.h:
  • Modules/mediastream/MediaDevices.idl:
  • Modules/mediastream/MediaDevicesEnumerationRequest.cpp:

(WebCore::MediaDevicesEnumerationRequest::setDeviceInfo): Remove unnecessary instance variables.

  • Modules/mediastream/MediaDevicesEnumerationRequest.h:
  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::start): Remove m_idHashSalt, it isn't used. RealtimeMediaSourceCenter
now has the method to hash ids and group IDs.
(WebCore::hashString): Deleted.
(WebCore::MediaDevicesRequest::hashID): Deleted.

  • Modules/mediastream/MediaDevicesRequest.h:
  • dom/Document.h:

(WebCore::Document::setDeviceIDHashSalt):
(WebCore::Document::deviceIDHashSalt):

  • dom/EventNames.h: Add devicechange.
  • dom/EventTargetFactory.in: Add MediaDevices.
  • html/HTMLAttributeNames.in: Add ondevicechange.
  • platform/mediastream/CaptureDeviceManager.cpp:

(WebCore::CaptureDeviceManager::captureDeviceFromPersistentID): Renamed from captureDeviceFromDeviceID
and changed to return a std::optional<CaptureDevice>.
(WebCore::CaptureDeviceManager::captureDeviceFromDeviceID): Deleted.

  • platform/mediastream/RealtimeMediaSourceCenter.cpp:

(WebCore::addStringToSHA): New, add string bytes to SHA1. Moved from MediaDevicesRequest
so we can use for in testing.
(WebCore::RealtimeMediaSourceCenter::hashStringWithSalt): Generate hash for a string with a
salt. Moved from MediaDevicesRequest so we can use for in testing.
(WebCore::RealtimeMediaSourceCenter::captureDeviceWithUniqueID): Find a CaptureDevice given
a unique ID and the process hash salt.
(WebCore::RealtimeMediaSourceCenter::setDeviceEnabled): Enable/disable a device. Used for
layout tests only.
(WebCore::RealtimeMediaSourceCenter::addDevicesChangedObserver): Add a devices changed listener.
(WebCore::RealtimeMediaSourceCenter::removeDevicesChangedObserver): Remove a listener.
(WebCore::RealtimeMediaSourceCenter::captureDevicesChanged): Notify listeners.

  • platform/mediastream/RealtimeMediaSourceCenter.h:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:

(WebCore::AVCaptureDeviceManager::addDevicesChangedObserver): Update for change to captureDeviceFromDeviceID.

  • platform/mock/MockRealtimeMediaSource.cpp:

(WebCore::MockRealtimeMediaSource::audioDevices): All devices are enabled by default.
(WebCore::MockRealtimeMediaSource::videoDevices): Ditto.

  • platform/mock/MockRealtimeMediaSourceCenter.cpp:

(WebCore::MockRealtimeMediaSourceCenter::createMediaStream): Drive-by cleanup: use the vector
of devices instead of making assumptions about the number.
(WebCore::MockRealtimeMediaSourceCenter::getMediaStreamDevices): Only include enabled devices.
(WebCore::MockRealtimeMediaSourceCenter::setDeviceEnabled): Enable or disable a device.

  • platform/mock/MockRealtimeMediaSourceCenter.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaDeviceState): Enable or disable a mock capture device.

  • testing/Internals.h:
  • testing/Internals.idl:

LayoutTests:

  • fast/mediastream/device-change-event-expected.txt: Added.
  • fast/mediastream/device-change-event.html: Added.
10:16 AM Changeset in webkit [215928] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix memory corruption issue after r215883.
https://bugs.webkit.org/show_bug.cgi?id=171365

Reviewed by Brady Eidson.

This fixes a crash when starting WebKit2.

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
Initialize m_platformCookieStorage with the default constructor of RetainPtr,
then call NetworkStorageSession::cookieStorage which checks m_platformCookieStorage
for null. It was checking uninitialized memory when we had m_platformCookieStorage
in the initializer list.

10:08 AM Changeset in webkit [215927] by jdiggs@igalia.com
  • 4 edits
    2 adds in trunk

AX: Implement aria-value support for focusable separators
https://bugs.webkit.org/show_bug.cgi?id=171169

Reviewed by Chris Fleizach.

Source/WebCore:

Add SplitterRole to the roles which support range value and are considered a range
control, as long as the SplitterRole element is focusable. Also replace ATK's role-
based check with a call to supportsRangeValue() when determining if the AtkValue
interface should be implemented.

Test: accessibility/separator-values.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::isRangeControl):
(WebCore::AccessibilityObject::supportsRangeValue):

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(getInterfaceMaskFromObject):

LayoutTests:

  • accessibility/separator-values-expected.txt: Added.
  • accessibility/separator-values.html: Added.
9:28 AM Changeset in webkit [215926] by jdiggs@igalia.com
  • 5 edits
    2 adds in trunk

[ATK] GridCellRole should implement AtkTableCell (regression?)
https://bugs.webkit.org/show_bug.cgi?id=171179

Reviewed by Chris Fleizach.

Source/WebCore:

Add GridCellRole to the group of roles which should implement AtkTableCell.

Test: accessibility/gtk/interface-table-cell.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(getInterfaceMaskFromObject):

Tools:

Add new "AXInterfaceTableCell" attribute so that we can test whether or
not there is an implementation of AtkTableCell (i.e. without risking false
negatives from bugs in the interface's implementation).

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::boolAttributeValue):

LayoutTests:

  • accessibility/gtk/interface-table-cell-expected.txt: Added.
  • accessibility/gtk/interface-table-cell.html: Added.
8:59 AM Changeset in webkit [215925] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.1.19/Source/WebCore

Cherry-pick r215917. rdar://problem/31878197

4:53 AM Changeset in webkit [215924] by magomez@igalia.com
  • 16 edits in trunk

REGRESSION(r215211): [GTK] Several webgl related tests are failing
https://bugs.webkit.org/show_bug.cgi?id=170730

Reviewed by Said Abou-Hallawa.

Source/WebCore:

There is a wrong situation in the image decoders where the complete data has been assigned
to them but the size of the image hasn't been decoded yet. This is causing rendering
issues in webgl when decoding the images used as textures. To fix this, we refactor how the
encoded data status is stored to avoid that situation: the status is handled completely
by ImageDecoder.h, and it's the one forcing the decode of the size when data gets assigned
to the decoders.

Covered by existent tests.

  • platform/image-decoders/ImageDecoder.h:

(WebCore::ImageDecoder::isAllDataReceived):
(WebCore::ImageDecoder::setData):
(WebCore::ImageDecoder::encodedDataStatus):
(WebCore::ImageDecoder::isSizeAvailable):
(WebCore::ImageDecoder::setSize):
(WebCore::ImageDecoder::setFailed):
(WebCore::ImageDecoder::failed):

  • platform/image-decoders/bmp/BMPImageDecoder.cpp:

(WebCore::BMPImageDecoder::frameBufferAtIndex):
(WebCore::BMPImageDecoder::decode):
(WebCore::BMPImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/bmp/BMPImageDecoder.h:
  • platform/image-decoders/gif/GIFImageDecoder.cpp:

(WebCore::GIFImageDecoder::frameCount):
(WebCore::GIFImageDecoder::frameBufferAtIndex):
(WebCore::GIFImageDecoder::decode):
(WebCore::GIFImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/gif/GIFImageDecoder.h:
  • platform/image-decoders/ico/ICOImageDecoder.cpp:

(WebCore::ICOImageDecoder::setData):
(WebCore::ICOImageDecoder::frameCount):
(WebCore::ICOImageDecoder::frameBufferAtIndex):
(WebCore::ICOImageDecoder::setDataForPNGDecoderAtIndex):
(WebCore::ICOImageDecoder::decode):
(WebCore::ICOImageDecoder::decodeAtIndex):
(WebCore::ICOImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/ico/ICOImageDecoder.h:
  • platform/image-decoders/jpeg/JPEGImageDecoder.cpp:

(WebCore::JPEGImageDecoder::frameBufferAtIndex):
(WebCore::JPEGImageDecoder::decode):
(WebCore::JPEGImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/jpeg/JPEGImageDecoder.h:
  • platform/image-decoders/png/PNGImageDecoder.cpp:

(WebCore::PNGImageDecoder::frameBufferAtIndex):
(WebCore::PNGImageDecoder::decode):
(WebCore::PNGImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/png/PNGImageDecoder.h:
  • platform/image-decoders/webp/WEBPImageDecoder.cpp:

(WebCore::WEBPImageDecoder::frameBufferAtIndex):
(WebCore::WEBPImageDecoder::decode):
(WebCore::WEBPImageDecoder::encodedDataStatus): Deleted.

  • platform/image-decoders/webp/WEBPImageDecoder.h:

LayoutTests:

Adjust test expectations for the tests that were failing. They must pass now.

  • platform/gtk/TestExpectations:
12:04 AM Changeset in webkit [215923] by beidson@apple.com
  • 8 edits in trunk/Source/WebKit2

Teach WebProcessPool to track a map of SessionIDs to WebPageProxys to manage their lifetime
https://bugs.webkit.org/show_bug.cgi?id=171408

Reviewed by Alex Christensen.

  • UIProcess/API/APIPageConfiguration.cpp:

(API::PageConfiguration::sessionID):

  • UIProcess/API/APIPageConfiguration.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcess):
(WebKit::WebPageProxy::close):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::pageAddedToProcess):
(WebKit::WebProcessPool::pageRemovedFromProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::createWebPage):
(WebKit::WebProcessProxy::addExistingWebPage):
(WebKit::WebProcessProxy::removeWebPage):

  • UIProcess/WebProcessProxy.h:

Apr 27, 2017:

11:30 PM Changeset in webkit [215922] by Carlos Garcia Campos
  • 42 edits
    2 moves in trunk

Move UUID from WebCore/platform to WTF
https://bugs.webkit.org/show_bug.cgi?id=171372

Reviewed by Michael Catanzaro.

Source/WebCore:

UUID only contains createCanonicalUUIDString() that is platform independent and doesn't depend on anything from
WebCore, only from WTF.

  • CMakeLists.txt:
  • Modules/encryptedmedia/legacy/LegacyCDMSessionClearKey.cpp:
  • Modules/mediacontrols/MediaControlsHost.cpp:
  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/webaudio/MediaStreamAudioSource.cpp:
  • Modules/webdatabase/DatabaseTracker.cpp:
  • WebCore.order:
  • WebCore.xcodeproj/project.pbxproj:
  • editing/mac/EditorMac.mm:
  • fileapi/BlobURL.cpp:
  • loader/appcache/ApplicationCacheHost.cpp:
  • loader/appcache/ApplicationCacheStorage.cpp:
  • platform/URL.cpp:
  • platform/glib/FileSystemGlib.cpp:
  • platform/graphics/avfoundation/cf/CDMSessionAVFoundationCF.cpp:
  • platform/graphics/avfoundation/objc/CDMSessionAVContentKeySession.mm:
  • platform/graphics/avfoundation/objc/CDMSessionAVFoundationObjC.mm:
  • platform/graphics/avfoundation/objc/CDMSessionAVStreamSession.mm:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
  • platform/mediastream/CaptureDeviceManager.cpp:
  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/MediaStreamTrackPrivate.cpp:
  • platform/mediastream/RealtimeMediaSource.cpp:
  • platform/mediastream/mac/AVCaptureDeviceManager.mm:
  • platform/mediastream/mac/AVMediaCaptureSource.mm:
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp:
  • platform/mock/MockRealtimeAudioSource.cpp:
  • platform/mock/MockRealtimeMediaSourceCenter.cpp:
  • platform/mock/MockRealtimeVideoSource.cpp:
  • testing/MockCDMFactory.cpp:

Source/WebKit2:

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::handleForWebPageProxy):
(WebKit::WebAutomationSession::handleForWebFrameID):

  • UIProcess/gtk/WaylandCompositor.cpp:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::createUUID):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::openWithNativeApplication):

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/UUID.cpp: Renamed from Source/WebCore/platform/UUID.cpp.
  • wtf/UUID.h: Renamed from Source/WebCore/platform/UUID.h.

Tools:

  • WebKitTestRunner/TestController.cpp:
11:00 PM Changeset in webkit [215921] by commit-queue@webkit.org
  • 6 edits in trunk

[INTL] Implement the caseFirst option for Intl.Collator
https://bugs.webkit.org/show_bug.cgi?id=158188

Patch by Andy VanWagoner <thetalecrafter@gmail.com> on 2017-04-27
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Implements the caseFirst option and unicode locale extension.
The caseFirst option explicitly determines whether upper or lower case comes first.

  • runtime/IntlCollator.cpp:

(JSC::sortLocaleData): Added kf data.
(JSC::searchLocaleData): Added kf data.
(JSC::IntlCollator::initializeCollator): Set caseFirst option.
(JSC::IntlCollator::createCollator): Set new attributes on ICU collator.
(JSC::IntlCollator::caseFirstString): Added.
(JSC::IntlCollator::resolvedOptions): Added caseFirst property.

  • runtime/IntlCollator.h:

LayoutTests:

Updates the Intl.Collator tests to check caseFirst support.
The caseFirst option or unicode locale extension lets the user explicitly
set if lower or upper case characters should be first in order.

  • js/intl-collator-expected.txt:
  • js/script-tests/intl-collator.js:

(testCollator):

10:20 PM Changeset in webkit [215920] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add new GTK+ icons for different Script Timeline Views (Events and Call Trees)
https://bugs.webkit.org/show_bug.cgi?id=155077

Patch by Fujii Hironori <Fujii Hironori> on 2017-04-27
Reviewed by Joseph Pecoraro.

  • UserInterface/Images/gtk/CallTrees.svg: Added.
  • UserInterface/Images/gtk/Events.svg: Added.
  • UserInterface/Views/PathComponentIcons.css:

(body:not(.mac-platform, .windows-platform) .heap-snapshot-record .icon,):
(body:not(.mac-platform, .windows-platform) .events-icon .icon,): Deleted.

9:15 PM Changeset in webkit [215919] by mark.lam@apple.com
  • 8 edits
    1 add in trunk

Fix some RELEASE_ASSERT failures caused by OutOfMemoryErrors.
https://bugs.webkit.org/show_bug.cgi?id=171404
<rdar://problem/31876178>

Reviewed by Saam Barati.

JSTests:

  • stress/js-fixed-array-out-of-memory.js: Added.

Source/JavaScriptCore:

  1. Added some tryAllocate() functions in JSCellInlines.h.
  2. Consolidated the implementations of allocateCell() template functions into a single tryAllocateCellHelper() to reduce redundancy and eliminate needing to copy-paste for variations of allocateCell and tryAllocateCell.
  3. Changed JSFixedArray::createFromArray() and constructEmptyArray() to check for allocation failure and throw an OutOfMemoryError. It was already possible to throw errors from these functions for other reasons. So, their clients are already ready to handle OOMEs.
  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • runtime/JSCInlines.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::tryAllocateCellHelper):
(JSC::allocateCell):
(JSC::tryAllocateCell):

  • runtime/JSFixedArray.h:

(JSC::JSFixedArray::createFromArray):
(JSC::JSFixedArray::tryCreate):
(JSC::JSFixedArray::create): Deleted.

  • runtime/JSGlobalObject.h:

(JSC::constructEmptyArray):

9:05 PM Changeset in webkit [215918] by achristensen@apple.com
  • 5 edits in trunk/Source/WebCore

Make navigation policy checking more robust
https://bugs.webkit.org/show_bug.cgi?id=171409
<rdar://problem/31489248>

Reviewed by Geoffrey Garen.

No change in behavior. Just added a protectedThis to a lambda and made the functions non-copyable.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest):

  • loader/PolicyCallback.cpp:

(WebCore::PolicyCallback::set):
(WebCore::PolicyCallback::clear): Deleted.

  • loader/PolicyCallback.h:
  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::cancelCheck):
(WebCore::PolicyChecker::stopCheck):
(WebCore::PolicyChecker::continueAfterNavigationPolicy):
(WebCore::PolicyChecker::continueAfterNewWindowPolicy):
(WebCore::PolicyChecker::continueAfterContentPolicy):

9:01 PM Changeset in webkit [215917] by Wenson Hsieh
  • 7 edits in trunk/Source/WebCore

Data interaction should not load pasteboard content before performing the data operation
https://bugs.webkit.org/show_bug.cgi?id=171414
<rdar://problem/31878197>

Reviewed by Tim Horton.

When interacting with a link, we should not try to fetch pasteboard contents for the URL UTI type before
performing the data operation. Teaches DragController to know whether it is allowed to load data from the
dragging pasteboard, and uses this information in DragController::dragOperation to determine whether to use
DragData::containsURLTypeIdentifier or DragData::containsURL.

  • page/DragController.cpp:

(WebCore::DragController::DragController):
(WebCore::DragController::performDragOperation):

  • page/DragController.h:

(WebCore::DragController::canLoadDataFromDraggingPasteboard):

  • page/mac/DragControllerMac.mm:

(WebCore::DragController::dragOperation):

  • platform/DragData.h:
  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard _preLoadedDataConformingToType:forItemProviderAtIndex:]):

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::containsURLTypeIdentifier):

8:33 PM Changeset in webkit [215916] by Joseph Pecoraro
  • 106 edits
    1 copy
    21 adds in trunk

Support for promise rejection events (unhandledrejection)
https://bugs.webkit.org/show_bug.cgi?id=150358
<rdar://problem/28441651>

Reviewed by Saam Barati.

Patch by Joseph Pecoraro and Yusuke Suzuki.

LayoutTests/imported/w3c:

  • web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_bits-expected.txt:
  • web-platform-tests/WebCryptoAPI/derive_bits_keys/test_ecdh_keys-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_pause_noautoplay-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/event_play_noautoplay-expected.txt:
  • web-platform-tests/html/semantics/embedded-content/media-elements/paused_true_during_pause-expected.txt:
  • web-platform-tests/html/syntax/parsing/html5lib_innerHTML_adoption01-expected.txt:
  • web-platform-tests/html/webappapis/scripting/events/body-exposed-window-event-handlers-expected.txt:
  • web-platform-tests/streams/piping/close-propagation-forward-expected.txt:
  • web-platform-tests/streams/piping/error-propagation-backward-expected.txt:
  • web-platform-tests/streams/piping/error-propagation-forward-expected.txt:
  • web-platform-tests/streams/piping/flow-control-expected.txt:
  • web-platform-tests/streams/piping/general-expected.txt:
  • web-platform-tests/user-timing/measure_exceptions_navigation_timing-expected.txt:

Rebaseline expectations to include unhandled promise rejection messages.
Also change how the test harness reports success or failure to use the values
immediately on completion and then allow a run loop cycle before completing
the test to gather the output.

  • web-platform-tests/resource-timing/rt-resource-errors.html:

This is our own WPT test yet to be uploaded, so update the test to prevent
an unexpected unhandled rejection.

Source/JavaScriptCore:

Implement support for promise.PromiseIsHandled? and the
HostPromiseRejectionTracker hook for HTML to track promise rejections:
https://tc39.github.io/ecma262/#sec-host-promise-rejection-tracker
https://html.spec.whatwg.org/multipage/webappapis.html#unhandled-promise-rejections

  • builtins/BuiltinNames.h:

New private symbols.

  • builtins/PromiseOperations.js:

(globalPrivate.newHandledRejectedPromise):
Utility to create a rejected promise with PromiseIsHandled? to true.

(globalPrivate.rejectPromise):
(globalPrivate.initializePromise):

  • builtins/PromisePrototype.js:

(then):
Implement standard behavior of PromiseIsHandled? and the host hook.

  • runtime/JSPromise.cpp:

(JSC::JSPromise::isHandled):

  • runtime/JSPromise.h:

C++ accessors for the PromiseIsHandled? state.

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • bytecode/BytecodeIntrinsicRegistry.h:

Expose private values for the Reject / Handle enum values in built-ins.

  • jsc.cpp:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::promiseResolveFunction):
Add a new GlobalObjectMethodTable hook matching the promise rejection hook.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncHostPromiseRejectionTracker):

  • runtime/JSGlobalObjectFunctions.h:

Plumb the builtin hook through to the optional GlobalObjectMethodTable hook.

  • inspector/InjectedScriptSource.js:

(InjectedScript.prototype.createFakeValueDescriptor):
Silence possible rejected promises created internally via Web Inspector.

Source/WebCore:

Implement support for the onunhandledrejection and rejectionhandled events.
They dispatch a new PromiseRejectionEvent using the ES6 HostPromiseRejectionTracker hook:
https://tc39.github.io/ecma262/#sec-host-promise-rejection-tracker
https://html.spec.whatwg.org/multipage/webappapis.html#unhandled-promise-rejections

This is currently implemented only for Documents and not yet Web Workers.

Tests: js/dom/unhandled-promise-rejection-basic.html

js/dom/unhandled-promise-rejection-bindings-type-error.html
js/dom/unhandled-promise-rejection-console-no-report.html
js/dom/unhandled-promise-rejection-console-report.html
js/dom/unhandled-promise-rejection-handle-during-event.html
js/dom/unhandled-promise-rejection-handle-in-handler.html
js/dom/unhandled-promise-rejection-handle.html
js/dom/unhandled-promise-rejection-order.html

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/DOMAllInOne.cpp:

New files.

  • bindings/scripts/CodeGenerator.pm:

(IsPromiseType):

  • bindings/scripts/CodeGeneratorJS.pm:

(AddToIncludesForIDLType):
(GetBaseIDLType):
Binding support for Promise<T> attributes.

  • bindings/js/JSDOMConvert.h:
  • bindings/js/JSDOMConvertPromise.h: Copied from Source/JavaScriptCore/runtime/JSPromise.h.

(WebCore::Converter<IDLPromise<T>>::convert):
(WebCore::JSConverter<IDLPromise<T>>::convert):
Promise<T> binding conversion is currently unimplemented, which only means
web developers creating their own PromiseRejectionEvent will not get
autowrapping of values assigned to promise in event initialization.
Engine generated events will have expected behavior.

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::promiseRejectionTracker):

  • bindings/js/JSDOMWindowBase.h:
  • bindings/js/JSWorkerGlobalScopeBase.cpp:

Implement HostPromiseRejectionTracker hook for Document but not Worker.
Passes through to the ScriptExecutionContext's tracker.

  • bindings/js/JSMainThreadExecState.cpp:

(WebCore::JSMainThreadExecState::didLeaveScriptContext):

  • bindings/js/JSMainThreadExecState.h:

(WebCore::JSMainThreadExecState::~JSMainThreadExecState):
When completing script execution and performing microtasks notify
about rejected promises. Technically this should go inside of
performing a microtask checkpoint, except lacking EventLoop
concepts we use ScriptExecutionState.

  • dom/EventNames.h:
  • dom/EventNames.in:
  • dom/PromiseRejectionEvent.cpp: Added.

(WebCore::PromiseRejectionEvent::PromiseRejectionEvent):
(WebCore::PromiseRejectionEvent::~PromiseRejectionEvent):

  • dom/PromiseRejectionEvent.h: Added.
  • dom/PromiseRejectionEvent.idl: Added.

New PromiseRejectionEvent event interface.

  • dom/GlobalEventHandlers.idl:

New onunhandledrejection and onrejectionhandled.

  • dom/RejectedPromiseTracker.cpp: Added.

(WebCore::RejectedPromise::RejectedPromise):
(WebCore::RejectedPromise::globalObject):
(WebCore::RejectedPromise::promise):
(WebCore::UnhandledPromise::UnhandledPromise):
(WebCore::UnhandledPromise::callStack):
(WebCore::RejectedPromiseTracker::RejectedPromiseTracker):
(WebCore::RejectedPromiseTracker::~RejectedPromiseTracker):
(WebCore::createScriptCallStackFromReason):
(WebCore::RejectedPromiseTracker::promiseRejected):
(WebCore::RejectedPromiseTracker::promiseHandled):
(WebCore::RejectedPromiseTracker::processQueueSoon):
(WebCore::RejectedPromiseTracker::reportUnhandledRejections):
(WebCore::RejectedPromiseTracker::reportRejectionHandled):

  • dom/RejectedPromiseTracker.h: Added.

Track and report rejected promises. The promises are tracked weakly
allowing them to be collected before they are reported. When reporting
we dispatch PromiseRejectionEvent events, and if the default is not
prevented we log a message to the console.

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::reportUnhandledPromiseRejection):
(WebCore::ScriptExecutionContext::ensureRejectedPromiseTrackerSlow):

  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::ensureRejectedPromiseTracker):
Each ScriptExecutionContext can own a rejected promise tracker.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::pauseInternal):
https://html.spec.whatwg.org/multipage/embedded-content.html#internal-pause-steps
Internal pause steps say to timeupdate, pause, and rejecting pending play promises
should all happen in a queued task. Here the first two actions are already scheduled
on tasks, but rejecting play promises was not being done in a task, so this makes
that change.

  • Modules/streams/ReadableStream.js:

(pipeThrough):

  • Modules/streams/ReadableStreamInternals.js:

(readableStreamReaderGenericInitialize):
(readableStreamError):
(readableStreamReaderGenericRelease):
Satisfy parts of the Streams specification which state to set the
PromiseIsHandled? internal state of promises created internally
by the Streams APIs. This prevents some internal promises from
appearing as unhandled promise rejections.

LayoutTests:

  • js/dom/unhandled-promise-rejection-basic-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-basic.html: Added.
  • js/dom/unhandled-promise-rejection-bindings-type-error-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-bindings-type-error.html: Added.
  • js/dom/unhandled-promise-rejection-console-no-report-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-console-no-report.html: Added.
  • js/dom/unhandled-promise-rejection-console-report-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-console-report.html: Added.
  • js/dom/unhandled-promise-rejection-handle-during-event-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-handle-during-event.html: Added.
  • js/dom/unhandled-promise-rejection-handle-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-handle-in-handler-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-handle-in-handler.html: Added.
  • js/dom/unhandled-promise-rejection-handle.html: Added.
  • js/dom/unhandled-promise-rejection-order-expected.txt: Added.
  • js/dom/unhandled-promise-rejection-order.html: Added.

New tests specific to the onunhandledrejection and onrejectionhandled events.

  • resources/testharnessreport.js:

(self.testRunner.add_completion_callback.sanitize):
(self.testRunner.add_completion_callback):
Report results immediately and then finish the test after a turn. This way
if the test ends with a pass, but may get unhandled rejections after
completing which should not make the test appear as if it failed. Some tests
have unhandled promise rejections but are expected to pass. Likewise some
tests perform cleanup in their own completion callbacks, which happen after
this initial completion callback, and we want to report results after all
the work is done as it may eliminate non-deterministic debug test output.

Mark some tests as flakey that have sometimes have unhandled promise rejections.
These tests are all various imported tests that use the testharness.

  • fast/mediastream/MediaStream-MediaElement-setObject-null-expected.txt:
  • http/tests/security/video-cross-origin-caching-expected.txt:
  • inspector/debugger/break-on-exception-throw-in-promise-expected.txt:
  • inspector/debugger/break-on-uncaught-exception-throw-in-promise-expected.txt:
  • inspector/worker/resources-in-worker-expected.txt:
  • js/dom/dom-static-property-for-in-iteration-expected.txt:
  • js/dom/global-constructors-attributes-dedicated-worker-expected.txt:
  • js/promises-tests/promises-tests-2-2-6-expected.txt:
  • platform/mac/inspector/model/remote-object-expected.txt:
  • webrtc/libwebrtc/release-while-creating-offer-expected.txt:
  • webrtc/libwebrtc/release-while-setting-local-description-expected.txt:

Update tests with unhandled promise rejection messages.

  • media/W3C/audio/events/event_pause_manual.html:
  • media/audio-playback-restriction-play-expected.txt:
  • media/audio-playback-restriction-play.html:
  • media/click-volume-bar-not-pausing.html:
  • media/remote-control-command-is-user-gesture-expected.txt:
  • media/remote-control-command-is-user-gesture.html:
  • media/track/track-mode.html:
  • media/video-autoplay-allowed-but-fullscreen-required.html:
  • media/video-display-none-crash.html:
  • media/video-main-content-deny-display-none.html:
  • media/video-main-content-deny-not-in-dom.html:
  • media/video-main-content-deny-not-visible.html:
  • media/video-main-content-deny-obscured.html:
  • media/video-main-content-deny-too-small.html:
  • media/video-multiple-concurrent-playback-expected.txt:
  • media/video-play-audio-require-user-gesture-expected.txt:
  • media/video-play-audio-require-user-gesture.html:
  • media/video-play-pause-events-expected.txt:
  • media/video-play-pause-events.html:
  • media/video-play-pause-exception-expected.txt:
  • media/video-play-pause-exception.html:
  • media/video-play-require-user-gesture-expected.txt:
  • media/video-play-require-user-gesture.html:
  • media/video-preload-expected.txt:
  • media/video-preload.html:
  • media/video-test.js:

(handlePromise.handle):
Snuff many possible unhandled promise rejections in media via media.play().

  • streams/reference-implementation/pipe-to-expected.txt:
  • streams/reference-implementation/pipe-to-options-expected.txt:
  • streams/reference-implementation/readable-stream-templated-expected.txt:
  • streams/reference-implementation/writable-stream-abort-expected.txt:
  • streams/reference-implementation/writable-stream-expected.txt:

These stream tests are out of date and produce unhandled rejections.

  • streams/shadowing-Promise.html:

Update non-imported tests to prevent unhandled rejection messages.

7:07 PM Changeset in webkit [215915] by Nikita Vasilyev
  • 2 edits
    1 delete in trunk/Source/WebInspectorUI

Web Inspector: Remove unused ToggleControlToolbarItem.js
https://bugs.webkit.org/show_bug.cgi?id=171401

Reviewed by Joseph Pecoraro.

  • UserInterface/Main.html:
  • UserInterface/Views/ToggleControlToolbarItem.js: Removed.
6:53 PM Changeset in webkit [215914] by Chris Dumez
  • 39 edits
    2 adds in trunk

Align colspan/rowspan limits with the latest HTML specification
https://bugs.webkit.org/show_bug.cgi?id=171322

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Re-sync some web-platform-tests from upstream to gain test coverage and
rebaseline.

  • resources/import-expectations.json:
  • web-platform-tests/html/dom/elements-tabular.js:
  • web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • web-platform-tests/html/dom/reflection-tabular-expected.txt:
  • web-platform-tests/html/dom/reflection.js:

(ReflectionTests.typeMap.string_appeared_here.toString):
(ReflectionTests.typeMap.string_appeared_here.valueOf):
(ReflectionTests.reflects):

  • web-platform-tests/html/semantics/tabular-data/attributes-common-to-td-and-th-elements/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/processing-model-1/span-limits-expected.txt: Added.
  • web-platform-tests/html/semantics/tabular-data/processing-model-1/span-limits.html: Added.
  • web-platform-tests/html/semantics/tabular-data/processing-model-1/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-caption-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-table-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-tbody-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-tfoot-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-thead-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/the-tr-element/w3c-import.log:
  • web-platform-tests/html/semantics/tabular-data/w3c-import.log:

Source/WebCore:

Align colspan/rowspan limits with the latest HTML specification after:

The following changes were made:

  • Our rowspan limit was raised from 8190 to 65534
  • A colspan limit of 1000 was introduced. Blink has UseCounter data showing that colspans over 1000 are extremely rare and Gecko has data showing that when we get a colspan greater than 1000, it is usually a bug. Therefore, this change should be fine.
  • The limits are now properly reflected via the IDL attributes instead of lying to the Web about the colspan / rowspan we are using internally.

Test: imported/w3c/web-platform-tests/html/semantics/tabular-data/processing-model-1/span-limits.html

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::colSpan):
(WebCore::HTMLTableCellElement::rowSpan):
(WebCore::HTMLTableCellElement::rowSpanForBindings):
(WebCore::HTMLTableCellElement::setColSpan):

  • html/HTMLTableCellElement.h:
  • html/HTMLTableCellElement.idl:
  • html/parser/HTMLParserIdioms.cpp:

(WebCore::parseHTMLIntegerInternal):
(WebCore::parseHTMLInteger):
(WebCore::parseHTMLNonNegativeInteger):
(WebCore::parseValidHTMLNonNegativeIntegerInternal):
(WebCore::parseHTTPRefreshInternal):

  • html/parser/HTMLParserIdioms.h:

(WebCore::parseHTMLInteger):
(WebCore::parseHTMLNonNegativeInteger):

(WebCore::clampHTMLNonNegativeIntegerToRange):
Add utility function to implement:

Source/WebKit/mac:

ObjC bindings build fix.

  • DOM/DOMHTMLTableCellElement.mm:

(-[DOMHTMLTableCellElement colSpan]):
(-[DOMHTMLTableCellElement setColSpan:]):

Source/WebKit2:

GTK build fix.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMHTMLTableCellElement.cpp:

(webkit_dom_html_table_cell_element_get_col_span):
(webkit_dom_html_table_cell_element_set_col_span):

LayoutTests:

Rebaseline a couple of rowspan tests now that our max limit has changed.

  • fast/table/giantRowspan2-expected.txt:
  • platform/ios/fast/table/giantRowspan-expected.txt:
  • platform/ios/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/mac/fast/table/giantRowspan-expected.txt:
6:32 PM Changeset in webkit [215913] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark fast/mediacapturefromelement/CanvasCaptureMediaStream-2d-events.html as a flaky failure.
https://bugs.webkit.org/show_bug.cgi?id=170835

Unreviewed test gardening.

Patch by Matt Lewis <Matt Lewis> on 2017-04-27

6:23 PM Changeset in webkit [215912] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Mark imported/blink/paint/deprecatedpaintlayer/non-self-painting-layer-overrides-visibility.html as a flaky crash.
https://bugs.webkit.org/show_bug.cgi?id=171406

Unreviewed test gardening.

Patch by Matt Lewis <Matt Lewis> on 2017-04-27

  • platform/mac/TestExpectations:
5:57 PM Changeset in webkit [215911] by msaboff@apple.com
  • 2 edits in trunk/PerformanceTests

Add back tests inadvertently deleted in r205032.

Rubber stamped by Geoffrey Garen.

  • MallocBench/run-malloc-benchmarks:
5:54 PM Changeset in webkit [215910] by Wenson Hsieh
  • 5 edits in trunk/Source

WKUIDelegatePrivate needs a hook to vend data used to initialize item providers for data interaction
https://bugs.webkit.org/show_bug.cgi?id=171386
<rdar://problem/31557237>

Reviewed by Beth Dakin.

Source/WebCore:

Teach WebItemProviderPasteboard to remember what WebItemProviderRegistrationInfoList it was initialized with
when beginning a drag. This information is cleared out the next time the list of item providers is set to
something different, which happens when the data interaction session concludes.

  • platform/ios/WebItemProviderPasteboard.h:
  • platform/ios/WebItemProviderPasteboard.mm:

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard setItemsUsingRegistrationInfoLists:]):
(-[WebItemProviderPasteboard registrationInfoAtIndex:]):
(-[WebItemProviderPasteboard itemProviderAtIndex:]):

Source/WebKit2:

Add a new WKUIDelegate hook, _webView:adjustedDataInteractionItemProvidersForItemProvider:representingObjects:additionalData:.

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
5:37 PM Changeset in webkit [215909] by msaboff@apple.com
  • 5 edits in trunk/Source/bmalloc

bmalloc scavenger should know what page classes are allocating
https://bugs.webkit.org/show_bug.cgi?id=171384

Reviewed by Geoffrey Garen.

This change replaces m_isAllocatingPages with a per page class flag to track which page
classes are currently allocating. When scavenging, we skip page classes that are actively
allocating and come back to them on a subsequent pass. This reduces the amount of time it
takes for scavenger to free up pages as well as the total time it takes to handle all
page classes.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::concurrentScavenge):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeSmallPages):
(bmalloc::Heap::scavengeLargeObjects):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::deallocateLarge):

  • bmalloc/Heap.h:

(bmalloc::Heap::takeRequestedScavengerThreadQOSClass): Deleted.

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::deallocateSmallPage):

  • bmalloc/bmalloc.h:

(bmalloc::api::scavenge):

4:52 PM Changeset in webkit [215908] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

B3::FoldPathConstants does not consider the fall through case for Switch
https://bugs.webkit.org/show_bug.cgi?id=171390

Reviewed by Filip Pizlo.

foldPathConstants was not taking into account a Switch's default
case when it tried to constant propagate the switch's operand value.
e.g, we incorrectly transformed this code:

`
x = argumentGPR0;
switch (x) {
case 10: return 20;

case 0:
default: return x == 0;
}
`

into:
`
x = argumentGPR0;
switch (x) {
case 10: return 20;

case 0:
default: return 1;
}
`

Because we didn't take into account the default case, we incorrectly
optimized the code as if case 0's block was only reachable if x is
equal to zero. This is obviously not true, since it's the same block
as the default case.

This fix ensures that we can run the WebAssembly Tanks demo even when
we set webAssemblyBBQOptimizationLevel=2.

  • b3/B3FoldPathConstants.cpp:
  • b3/B3SwitchValue.cpp:

(JSC::B3::SwitchValue::fallThrough):
(JSC::B3::SwitchValue::removeCase): Deleted.

  • b3/B3SwitchValue.h:
  • b3/testb3.cpp:

(JSC::B3::testCallFunctionWithHellaArguments):
(JSC::B3::testSwitchSameCaseAsDefault):
(JSC::B3::testWasmBoundsCheck):
(JSC::B3::run):

4:48 PM Changeset in webkit [215907] by beidson@apple.com
  • 9 edits
    1 add in trunk/Source

Refactor SessionID to support multiple non-ephemeral (persistent) sessions.
https://bugs.webkit.org/show_bug.cgi?id=171367

Reviewed by Andy Estes.

Source/WebCore:

This is also a nice general cleanup of SessionID, including privatizing the "arbitrary number" constructor
and moving encode/decode into the class.

No new tests (Refactor, no behavior change yet).

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • page/SessionID.cpp: Added.

(WebCore::SessionID::generatePersistentSessionID):
(WebCore::SessionID::generateEphemeralSessionID):
(WebCore::SessionID::enableGenerationProtection):

  • page/SessionID.h:

(WebCore::SessionID::SessionID):
(WebCore::SessionID::emptySessionID):
(WebCore::SessionID::hashTableDeletedValue):
(WebCore::SessionID::defaultSessionID):
(WebCore::SessionID::legacyPrivateSessionID):
(WebCore::SessionID::isValid):
(WebCore::SessionID::isEphemeral):
(WebCore::SessionID::encode):
(WebCore::SessionID::decode):
(WTF::HashTraits<WebCore::SessionID>::constructDeletedValue):
(WTF::HashTraits<WebCore::SessionID>::isDeletedValue):

Source/WebKit2:

  • Shared/ChildProcess.cpp:

(WebKit::ChildProcess::initialize): Child processes should never be generating new SessionIDs,

so enable generation protection.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<SessionID>::encode): Deleted.
(IPC::ArgumentCoder<SessionID>::decode): Deleted.

  • Shared/WebCoreArgumentCoders.h:
  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::createNonPersistent):
(WebKit::generateNonPersistentSessionID): Deleted.

4:44 PM Changeset in webkit [215906] by BJ Burg
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: inherit system layout direction by default
https://bugs.webkit.org/show_bug.cgi?id=171402
<rdar://problem/30753626>

Reviewed by Joseph Pecoraro.

Web Inspector's layout direction should follow the system layout direction
by default now that most RTL bugs seem to be fixed. We are ready for more
feedback.

  • UserInterface/Base/Main.js:
  • UserInterface/Base/Setting.js:

Rename the existing "layout-direction" setting so that the new default
value is set properly even for people who have overridden the layout
direction while the setting was exposed to everyone.

  • UserInterface/Views/GeneralSettingsView.js:

(WebInspector.GeneralSettingsView.prototype.initialLayout):
(WebInspector.GeneralSettingsView.prototype.layout):
(WebInspector.GeneralSettingsView):
Make the layout direction override setting only visible when DebugUI
is turned on. This remains only for engineers to quickly check layout bugs.

  • UserInterface/Views/SettingsView.js:

(WebInspector.SettingsView.prototype.addGroupWithCustomSetting):
(WebInspector.SettingsView.prototype.addCustomSetting): Deleted.
Refactor the convenience method to return both the group and the
custom setting. This allows us to toggle .hidden on the entire
row for the Layout Direction setting (label and editor).

  • Localizations/en.lproj/localizedStrings.js:

Unlocalize the setting strings since they are only shown in engineering builds now.

4:36 PM Changeset in webkit [215905] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

Attempt to fix a PLT regression on Mac
<rdar://problem/31826998>

Unreviewed.

Disable passing the TypeIdentifierHint to CGImageSourceCreateIncremental()
on Mac for now.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoder::ImageDecoder):

4:24 PM Changeset in webkit [215904] by dbates@webkit.org
  • 7 edits in trunk/Source/WebCore

Rename callerDOMWindow()/CallerDocument to incumbentDOMWindow()/IncumbentDocument
https://bugs.webkit.org/show_bug.cgi?id=171145

Reviewed by Saam Barati.

Standardize on the terminology "incumbent" to refer to "most-recently-entered author
function or script on the stack, or the author function or script that originally
scheduled the currently-running callback" (1).

[1] <https://html.spec.whatwg.org/multipage/webappapis.html#realms-settings-objects-global-objects> (27 April 2017)

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::incumbentDOMWindow):
(WebCore::callerDOMWindow): Deleted.

  • bindings/js/JSDOMWindowBase.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallWith):

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

(WebCore::jsTestObjPrototypeFunctionWithCallerDocumentArgumentCaller):
(WebCore::jsTestObjPrototypeFunctionWithCallerWindowArgumentCaller):

  • bindings/scripts/test/TestObj.idl:
  • page/DOMWindow.idl:
4:12 PM Changeset in webkit [215903] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: fix alignment of "truncated call stack" message
https://bugs.webkit.org/show_bug.cgi?id=170477

Reviewed by Devin Rousso.

  • UserInterface/Views/ThreadTreeElement.css:

(.tree-outline > .item.thread + ol > .item.truncated-call-frames):
(body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
(body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames):
(.tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
(body[dir=ltr] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):
(body[dir=rtl] .tree-outline > .item.thread + ol > .item.truncated-call-frames .icon):

4:09 PM Changeset in webkit [215902] by BJ Burg
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: RTL: layout issues in Open Resource Dialog
https://bugs.webkit.org/show_bug.cgi?id=170551

Reviewed by Matt Baker.

We need to flip the cancel and search icons, and flip padding
in the tree outline that contains search results.

I am still not happy with the title/subtitle ordering
(i.e., the domain vs the resource name), but this issue will
be solved primarily in the navigation sidebar first and then
adjusted for Open Resource Dialog if those changes are not
sufficient.

  • UserInterface/Views/OpenResourceDialog.css:

(.open-resource-dialog > .field):
(body[dir=ltr] .open-resource-dialog > .field):
(body[dir=rtl] .open-resource-dialog > .field):
(.open-resource-dialog > .field::before):
(body[dir=ltr] .open-resource-dialog > .field::before):
(body[dir=rtl] .open-resource-dialog > .field::before):
(.open-resource-dialog > .field > input):
(body[dir=ltr] .open-resource-dialog > .field > input):
(body[dir=rtl] .open-resource-dialog > .field > input):
(.open-resource-dialog > .field > img):
(body[dir=ltr] .open-resource-dialog > .field > img):
(body[dir=rtl] .open-resource-dialog > .field > img):
(.open-resource-dialog > .tree-outline .item):
(body[dir=ltr] .open-resource-dialog > .tree-outline .item):
(body[dir=rtl] .open-resource-dialog > .tree-outline .item):

3:58 PM Changeset in webkit [215901] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebCore

LayoutTest webrtc/datachannel/datachannel-event.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=171092
<rdar://problem/31748066>

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-27
Reviewed by Eric Carlson.

Covered by manual testing on iterating on the crashing tests.
With the patch, they appear to no longer crash.

The current RTCPeerConnection/RTCController was expecting that peer connections would be stopped before the controller.
This assumption is sometimes wrong.
Adding clean-up on both sides so that if controller goes away, it notifies its peer connections that they are unregistered.

  • Modules/mediastream/RTCController.cpp:

(WebCore::RTCController::~RTCController):

  • Modules/mediastream/RTCController.h:
  • Modules/mediastream/RTCPeerConnection.cpp:

(WebCore::RTCPeerConnection::create):
(WebCore::RTCPeerConnection::~RTCPeerConnection):
(WebCore::RTCPeerConnection::doStop):
(WebCore::RTCPeerConnection::registerToController):
(WebCore::RTCPeerConnection::unregisterFromController):
(WebCore::RTCPeerConnection::rtcController): Deleted.

  • Modules/mediastream/RTCPeerConnection.h:
3:57 PM Changeset in webkit [215900] by commit-queue@webkit.org
  • 13 edits in trunk/Source

REGRESSION(r213764): Async decoding of animated images is disabled for ImageDocument
https://bugs.webkit.org/show_bug.cgi?id=170333

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-04-27
Reviewed by Simon Fraser.

Source/WebCore:

The way the image drawing settings are transfered from the Settings to
BitmapImage is problematic. The drawing settings are retrieved from the
CachedImageObserver which store them in the constructor only if the
CachedImage as a loader. In the case of ImageDocument, there isn't loader
set in CachedImage so the settings of ImageDocument are not set. Also
the CachedImage can be used after loading by another document which may
have a different drawing settings.

The fix is to make BitmapImage reads the drawing settings every time it
is drawn as a foreground or background image in a RenderElement.

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawImage):

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::CachedImageObserver::CachedImageObserver):

  • loader/cache/CachedImage.h:
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::setDrawingSettings):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::shouldUseAsyncDecodingForLargeImages): I was
trying to disable the async image decoding temporarily but this way will
even prevent testing it until it is enabled. Disable it through WK1 and
WK2 preferences.
(WebCore::BitmapImage::shouldUseAsyncDecodingForAnimatedImages):
(WebCore::BitmapImage::advanceAnimation):

  • platform/graphics/BitmapImage.h:
  • platform/graphics/ImageObserver.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

Source/WebKit/mac:

Disbale the async decoding for large images for now.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Disbale the async decoding for large images for now.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

3:45 PM Changeset in webkit [215899] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][macOS] Allow multi-touch related iokit-get-properties
https://bugs.webkit.org/show_bug.cgi?id=171355
<rdar://problem/31851928>

Reviewed by Alexey Proskuryakov.

During testing I've noticed Sandbox Violations being generated during some 'Force Touch' track pad use.
The sandbox should allow these IOKit properties to be accessed.

  • WebProcess/com.apple.WebProcess.sb.in:
3:39 PM Changeset in webkit [215898] by keith_miller@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

WebAssembly: Don't tier up the same function twice
https://bugs.webkit.org/show_bug.cgi?id=171397

Reviewed by Filip Pizlo.

Because we don't CAS the tier up count on function entry/loop backedge and we use the least significant to indicate whether or not tier up has already started we could see the following:

Threads A and B are running count in memory is (0):

A: load tier up count (0)
B: load tier up count (0)
A: decrement count to -2 and see we need to check for tier up (0)
A: store -2 to count (-2)
A: exchangeOr(1) to tier up count (-1)
B: decrement count to -2 and see we need to check for tier up (-1)
B: store -2 to count (-2)
B: exchangeOr(1) to tier up count (-1)

This would cause us to tier up the same function twice, which we would rather avoid.

  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::emitTierUpCheck):

  • wasm/WasmTierUpCount.h:

(JSC::Wasm::TierUpCount::TierUpCount):
(JSC::Wasm::TierUpCount::loopDecrement):
(JSC::Wasm::TierUpCount::functionEntryDecrement):
(JSC::Wasm::TierUpCount::shouldStartTierUp):

3:37 PM Changeset in webkit [215897] by achristensen@apple.com
  • 10 edits in trunk

Add stub SPI for setting cookie storage path on _WKWebsiteDataStoreConfiguration
https://bugs.webkit.org/show_bug.cgi?id=171399

Reviewed by Brady Eidson.

Source/WebKit2:

This SPI isn't hooked up yet, but it has a test that will need to be updated once it works.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm:

(-[WKWebsiteDataStore _initWithConfiguration:]):

  • UIProcess/API/Cocoa/_WKDraggableElementInfo.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStoreConfiguration.mm:

(-[_WKWebsiteDataStoreConfiguration _cookieStorageDirectory]):
(-[_WKWebsiteDataStoreConfiguration _setCookieStorageDirectory:]):

  • UIProcess/WebsiteData/WebsiteDataStore.h:

(WebKit::WebsiteDataStore::resolvedCookieStorageDirectory):

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WebsiteDataStoreCustomPaths.mm:

(TEST):

3:37 PM Changeset in webkit [215896] by keith_miller@apple.com
  • 14 edits in trunk/Source/JavaScriptCore

REGRESSION (r215843): ASSERTION FAILED: !m_completionTasks[0].first in JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast(JSC::VM &)
https://bugs.webkit.org/show_bug.cgi?id=171380

Reviewed by JF Bastien.

This patch fixes the association of VMs to Wasm::Plans. For validation
we want all the completion tasks to be associate with a VM. For BBQ,
we want the main task to not be associated with any VM.

  • jsc.cpp:

(functionTestWasmModuleFunctions):

  • wasm/WasmBBQPlan.cpp:

(JSC::Wasm::BBQPlan::BBQPlan):

  • wasm/WasmBBQPlan.h:
  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::CodeBlock):
(JSC::Wasm::CodeBlock::compileAsync):

  • wasm/WasmCodeBlock.h:

(JSC::Wasm::CodeBlock::create):

  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):
(JSC::Wasm::Module::getOrCreateCodeBlock):
(JSC::Wasm::Module::compileSync):
(JSC::Wasm::Module::compileAsync):

  • wasm/WasmModule.h:
  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::OMGPlan):
(JSC::Wasm::runOMGPlanForIndex):

  • wasm/WasmOMGPlan.h:
  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):
(JSC::Wasm::Plan::runCompletionTasks):
(JSC::Wasm::Plan::addCompletionTask):
(JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast):

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::dontFinalize):

  • wasm/js/WebAssemblyInstanceConstructor.cpp:

(JSC::constructJSWebAssemblyInstance):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyValidateFunc):

2:52 PM Changeset in webkit [215895] by Ryan Haddad
  • 1 edit
    1 add in trunk/LayoutTests

Add missing expected file for fast/inline/simple-line-layout-16bit-content.html.
https://bugs.webkit.org/show_bug.cgi?id=171379

Unreviewed test gardening.

  • fast/inline/simple-line-layout-16bit-content-expected-mismatch.html: Added.
2:29 PM Changeset in webkit [215894] by ddkilzer@apple.com
  • 17 edits in trunk

Enhance shouldBe()/shouldNotBe() to accept anonymous function arguments
<https://webkit.org/b/171362>
<rdar://problem/31867686>

Reviewed by Joseph Pecoraro.

JSTests:

  • stress/resources/standalone-pre.js:

(shouldBe):
(shouldNotThrow):
(shouldThrow):

  • Update shouldBe() to accept anonymous function arguments. (The shouldNotBe() function was never copied over.)
  • Also fix shouldThrow()/shouldNotThrow() to accept anonymous function arguments (which were missed in r202609 for Bug 159232).

LayoutTests:

This change makes it possible to pass either the first or second
argument (or both) as anonymous functions into shouldBe() and
shouldNotBe() to make it easy to capture local variables when
writing tests. This is similar to the change in r202609 for Bug
159232 for shouldThrow() and shouldNotThrow().

Note that shouldBe()/shouldNotBe() from the following files were
NOT updated since they were imported from other projects and did
share the full WebKit history of resources/js-test-pre.js:

http/tests/webgl/1.0.2/resources/webgl_test_files/resources/js-test-pre.js
js/mozilla/resources/js-test-pre.js
webgl/1.0.2/resources/webgl_test_files/resources/js-test-pre.js
webgl/1.0.3/resources/webgl_test_files/resources/js-test-pre.js

However, these files WERE brought up-to-date with the ability to
pass anonymous functions into shouldBe()/shouldNotBe() for this
bug, and shouldThrow()/shouldNotThrow() which should have
originally been fixed with Bug 159232:

http/tests/resources/js-test-pre.js
resources/standalone-pre.js

  • css3/scroll-snap/resources/iframe-content.html: Drive-by fix

to debug message for copy-paste error. Found by searching
LayoutTests directory for "expects string arguments".

  • fast/canvas/webgl/array-unit-tests-expected.txt: Update test

results.

  • fast/canvas/webgl/array-unit-tests.html: Fix warning by making

second argument to shouldBe() a string.

  • fast/css/script-tests/image-set-parsing.js:

(testImageSetRule): Remove comment by changing second argument
to shouldBe() into an anonymous function.

  • http/tests/resources/js-test-pre.js:

(evalAndLog):
(evalAndLogResult):
(shouldBe):
(shouldNotBe):
(shouldEvaluateTo):

  • Made a full copy of resources/js-test-pre.js to bring this up to speed. Needs a checker written for it to keep them in sync.
  • http/tests/security/xssAuditor/block-does-not-leak-location-expected.txt:
  • http/tests/security/xssAuditor/block-does-not-leak-referrer-expected.txt:
  • Update line numbers after updating http/tests/resources/js-test-pre.js.
  • js/function-declarations-in-switch-statement-expected.txt:
  • Update results after fixing warnings.
  • js/script-tests/function-declarations-in-switch-statement.js:
  • Fix warnings by passing in strings to shouldBe().
  • js/script-tests/stack-unwinding.js:
  • Update results after fixing warnings.
  • js/stack-unwinding-expected.txt:
  • Fix warnings by passing in strings to shouldBe().
  • resources/js-test-pre.js:

(shouldBe):
(shouldNotBe):

  • resources/js-test.js:

(shouldBe):
(shouldNotBe):

  • Update shouldBe()/shouldNotBe() to accept anonymous function arguments.
  • resources/standalone-pre.js:

(shouldBe):
(shouldNotBe):
(shouldNotThrow):
(shouldThrow):

  • Update shouldBe()/shouldNotBe() to accept anonymous function arguments.
  • Also fix shouldThrow()/shouldNotThrow() to accept anonymous function arguments (which were missed in r202609 for Bug 159232).
2:17 PM Changeset in webkit [215893] by Wenson Hsieh
  • 2 edits in trunk/Source/WebCore

Performing data interaction with plain text into a contenteditable does not insert any content
https://bugs.webkit.org/show_bug.cgi?id=171381

Reviewed by Tim Horton.

Attempt to read plain-text-conformant UTI types as kUTTypePlainText before reading them as kUTTypeText.
This allows WebItemProviderPasteboard to properly materialize an NSString in -valuesForPasteboardType:
inItemSet: using a pre-loaded NSData blob.

This scenario is covered by DataInteractionTests.ExternalSourceUTF8PlainTextOnly, but DataInteractionTests
are temporarily disabled due to incompatibilities with the current internal SDK.

  • platform/ios/PasteboardIOS.mm:

(WebCore::readPasteboardWebContentDataForType):

2:00 PM Changeset in webkit [215892] by Chris Dumez
  • 26 edits
    7 adds
    5 deletes in trunk

Element.getBoundingClientRect() / getClientRects() should return a DOMRect types
https://bugs.webkit.org/show_bug.cgi?id=171226

Reviewed by Simon Fraser.

LayoutTests/imported/w3c:

Add baseline for web-platform-tests that is now passing and unskipped.

  • web-platform-tests/cssom-view/cssom-getBoundingClientRect-002-expected.txt: Added.

Source/WebCore:

Element.getBoundingClientRect() / getClientRects() should return a DOMRect types
as per:

DOMRect is compatible with ClientRect, which we used to return so the risk should
be low.

Tests: fast/css/DOMRect-attributes-prototype.html

fast/css/DOMRect-serialization.html
fast/dom/Element/getClientRects-return-type.html

  • dom/ClientRectList.cpp:

(WebCore::ClientRectList::ClientRectList):

  • dom/ClientRectList.h:

(WebCore::ClientRectList::create):

  • dom/DOMRect.h:

(WebCore::DOMRect::create):

  • dom/DOMRectReadOnly.h:
  • dom/Element.cpp:

(WebCore::toDOMRectVector):
(WebCore::Element::getClientRects):
(WebCore::Element::getBoundingClientRect):

  • dom/Element.h:
  • dom/Element.idl:
  • html/track/VTTRegion.cpp:

(WebCore::VTTRegion::displayLastTextTrackCueBox):

Source/WebKit2:

GTK build fix.

  • WebProcess/InjectedBundle/API/gtk/DOM/WebKitDOMElement.cpp:

(toClientRect):
(webkit_dom_element_get_bounding_client_rect):
(webkit_dom_element_get_client_rects):

LayoutTests:

Update existing tests to reflect behavior change.

  • TestExpectations:
  • css3/flexbox/align-absolute-child-expected.txt:
  • fast/css/ClientRect-attributes-prototype-expected.txt: Removed.
  • fast/css/ClientRect-attributes-prototype.html: Removed.
  • fast/css/ClientRect-serialization-expected.txt: Removed.
  • fast/css/ClientRect-serialization.html: Removed.
  • fast/css/DOMRect-attributes-prototype-expected.txt: Added.
  • fast/css/DOMRect-attributes-prototype.html: Added.
  • fast/css/DOMRect-serialization-expected.txt: Added.
  • fast/css/DOMRect-serialization.html: Added.
  • fast/dom/Element/getClientRects-return-type-expected.txt: Added.
  • fast/dom/Element/getClientRects-return-type.html: Added.
  • fast/dom/collection-iterators-expected.txt:
  • fast/dom/collection-iterators.html:
  • fast/visual-viewport/zoomed-fixed-expected.txt:
  • fast/visual-viewport/zoomed-fixed-header-and-footer-expected.txt:
  • fast/zooming/client-rect-in-fixed-zoomed-expected.txt:
  • fast/zooming/client-rect-in-fixed-zoomed.html:
  • js/resources/JSON-stringify.js:
1:58 PM Changeset in webkit [215891] by sbarati@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Restore some caching functionality that got accidentally removed when doing Wasm PIC patches
https://bugs.webkit.org/show_bug.cgi?id=171382

Reviewed by Keith Miller.

When I created Wasm::CodeBlock, I accidentally removed caching
the creation of JSWebAssemblyCodeBlocks. This patch restores it.
It's worth keeping JSWebAssemblyModule's JSWebAssemblyCodeBlock
cache because creating a JSWebAssemblyCodeBlock does non trivial
work by creating the various IC call stubs.

  • wasm/js/JSWebAssemblyCodeBlock.h:

(JSC::JSWebAssemblyCodeBlock::codeBlock):

  • wasm/js/JSWebAssemblyInstance.cpp:

(JSC::JSWebAssemblyInstance::finalizeCreation):
(JSC::JSWebAssemblyInstance::create):

  • wasm/js/JSWebAssemblyModule.h:
1:47 PM Changeset in webkit [215890] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/modern-media-controls/fullscreen-button/fullscreen-button.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171391

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:20 PM Changeset in webkit [215889] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/contentSecurityPolicy/source-list-parsing-05.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171389

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
1:14 PM Changeset in webkit [215888] by Ryan Haddad
  • 2 edits in trunk/Tools

Disable flaky API test WKWebView.SetOverrideContentSecurityPolicyWithEmptyStringForPageWithCSP.
https://bugs.webkit.org/show_bug.cgi?id=167914

Unreviewed test gardening.

  • TestWebKitAPI/Tests/WebKit2Cocoa/OverrideContentSecurityPolicy.mm:

(TEST):

1:14 PM Changeset in webkit [215887] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/xmlhttprequest/workers/methods.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=170181

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
12:38 PM Changeset in webkit [215886] by jdiggs@igalia.com
  • 10 edits in trunk

AX: Expose elements with the ARIA "feed" role
https://bugs.webkit.org/show_bug.cgi?id=171184

Reviewed by Chris Fleizach.

Source/WebCore:

Map elements with the "feed" role to the internal ApplicationGroupRole
AccessibilityRole. This prevents them from being unexpectedly pruned from
the accessibility tree, and causes them to be exposed with ATK_ROLE_PANEL
in WebKitGtk and AXGroup in Safari.

No new tests needed. Instead, add the "feed" role to roles-exposed.html,
xml-roles-exposed.html, and roles-computedRoleString.html.

  • accessibility/AccessibilityObject.cpp:

(WebCore::initializeRoleMap):

LayoutTests:

Add "feed" role to roles-exposed.html, xml-roles-exposed.html, and
roles-computedRoleString.html. Update expectations accordingly.

  • accessibility/gtk/xml-roles-exposed-expected.txt:
  • accessibility/gtk/xml-roles-exposed.html:
  • accessibility/roles-computedRoleString.html:
  • accessibility/roles-exposed.html:
  • platform/gtk/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-computedRoleString-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
12:24 PM Changeset in webkit [215885] by mark.lam@apple.com
  • 21 edits
    5 adds in trunk/Source/JavaScriptCore

Audit and fix incorrect uses of JSArray::tryCreateForInitializationPrivate().
https://bugs.webkit.org/show_bug.cgi?id=171344
<rdar://problem/31352667>

Reviewed by Filip Pizlo.

JSArray::tryCreateForInitializationPrivate() should only be used in performance
critical paths, and should always be used with care because it creates an
uninitialized object that needs to be initialized by its client before the object
can be released into the system. Before the object is fully initialized:

  1. the client should not re-enter the VM to execute JS code, and
  2. GC should not run.

This is because until the object is fully initialized, it is an inconsistent
state that the GC and JS code will not be happy about.

In this patch, we do the following:

  1. Renamed JSArray::tryCreateForInitializationPrivate() to JSArray::tryCreateUninitializedRestricted() because "private" is a bit ambiguous and can be confused with APIs that are called freely within WebKit but are not meant for clients of WebKit. In this case, we intend for use of this API to be restricted to only a few carefully considered and crafted cases.
  1. Introduce the ObjectInitializationScope RAII object which covers the period when the uninitialized object is created and gets initialized.

ObjectInitializationScope will asserts that either the object is created
fully initialized (in the case where the object structure is not an "original"
structure) or if created uninitialized, is fully initialized at the end of
the scope.

If the object is created uninitialized, the ObjectInitializationScope also
ensures that we do not GC nor re-enter the VM to execute JS code. This is
achieved by enabling DisallowGC and DisallowVMReentry scopes.

tryCreateUninitializedRestricted() and initializeIndex() now requires an
ObjectInitializationScope instance. The ObjectInitializationScope replaces
the VM& argument because it can be used to pass the VM& itself. This is a
small optimization that makes passing the ObjectInitializationScope free even
on release builds.

  1. Factored a DisallowScope out of DisallowGC, and make DisallowGC extend it. Introduce a DisallowVMReentry class that extends DisallowScope.
  1. Fixed a bug found by the ObjectInitializationScope. The bug is that there are scenarios where the structure passed to tryCreateUninitializedRestricted() that may not be an "original" structure. As a result, initializeIndex() would end up allocating new structures, and therefore trigger a GC.

The fix is to detect that the structure passed to tryCreateUninitializedRestricted()
is not an "original" one, and pre-initialize the array with 0s.

This bug was detected by existing tests. Hence, no new test needed.

  1. Replaced all inappropriate uses of tryCreateUninitializedRestricted() with tryCreate(). Inappropriate uses here means code that is not in performance critical paths.

Similarly, replaced accompanying uses of initializeIndex() with putDirectIndex().

This patch is performance neutral (according to the JSC command line benchmarks).

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOperations.cpp:
  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • heap/DeferGC.cpp:
  • heap/DeferGC.h:

(JSC::DisallowGC::DisallowGC):
(JSC::DisallowGC::initialize):
(JSC::DisallowGC::scopeReentryCount):
(JSC::DisallowGC::setScopeReentryCount):
(JSC::DisallowGC::~DisallowGC): Deleted.
(JSC::DisallowGC::isGCDisallowedOnCurrentThread): Deleted.

  • heap/GCDeferralContextInlines.h:

(JSC::GCDeferralContext::~GCDeferralContext):

  • heap/Heap.cpp:

(JSC::Heap::collectIfNecessaryOrDefer):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoPrivateFuncConcatMemcpy):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createWithInlineFrame):
(JSC::ClonedArguments::createByCopyingFrom):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/DisallowScope.h: Added.

(JSC::DisallowScope::DisallowScope):
(JSC::DisallowScope::~DisallowScope):
(JSC::DisallowScope::isInEffectOnCurrentThread):
(JSC::DisallowScope::enable):
(JSC::DisallowScope::enterScope):
(JSC::DisallowScope::exitScope):

  • runtime/DisallowVMReentry.cpp: Added.
  • runtime/DisallowVMReentry.h: Added.

(JSC::DisallowVMReentry::DisallowVMReentry):
(JSC::DisallowVMReentry::initialize):
(JSC::DisallowVMReentry::scopeReentryCount):
(JSC::DisallowVMReentry::setScopeReentryCount):

  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/JSArray.cpp:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::JSArray::fastSlice):
(JSC::JSArray::tryCreateForInitializationPrivate): Deleted.

  • runtime/JSArray.h:

(JSC::JSArray::tryCreateUninitializedRestricted):
(JSC::JSArray::tryCreate):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):
(JSC::JSArray::tryCreateForInitializationPrivate): Deleted.
(JSC::createArrayButterfly): Deleted.

  • runtime/JSCellInlines.h:

(JSC::allocateCell):

  • runtime/JSObject.h:

(JSC::JSObject::initializeIndex):
(JSC::JSObject::initializeIndexWithoutBarrier):

  • runtime/ObjectInitializationScope.cpp: Added.

(JSC::ObjectInitializationScope::ObjectInitializationScope):
(JSC::ObjectInitializationScope::~ObjectInitializationScope):
(JSC::ObjectInitializationScope::notifyAllocated):
(JSC::ObjectInitializationScope::verifyPropertiesAreInitialized):

  • runtime/ObjectInitializationScope.h: Added.

(JSC::ObjectInitializationScope::ObjectInitializationScope):
(JSC::ObjectInitializationScope::vm):
(JSC::ObjectInitializationScope::notifyAllocated):

  • runtime/Operations.h:

(JSC::isScribbledValue):
(JSC::scribble):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):

  • runtime/VMEntryScope.cpp:

(JSC::VMEntryScope::VMEntryScope):

12:08 PM Changeset in webkit [215884] by mmaxfield@apple.com
  • 5 edits in trunk/LayoutTests

REGRESSION(r214572): Update fast/text/variations/advances.html to understand normalized variation widths
https://bugs.webkit.org/show_bug.cgi?id=171356
<rdar://problem/28670085>

Reviewed by Dean Jackson.

Unspecified 'wdth' axis values are being normalized because the font is a GX font. However, this
font assumes no normalization, which means one of the comparisons in the test is bogus.

  • fast/text/variations/advances-expected.txt:
  • fast/text/variations/advances.html:
  • platform/ios/TestExpectations:
  • platform/mac/TestExpectations:
11:40 AM Changeset in webkit [215883] by beidson@apple.com
  • 9 edits in trunk/Source

Update NetworkStorageSession to support multiple persistent sessions and explicitly set cookie storages.
https://bugs.webkit.org/show_bug.cgi?id=171365

Reviewed by Andy Estes.

Source/WebCore:

No new tests (No testable behavior change yet).

  • platform/network/NetworkStorageSession.cpp:

(WebCore::NetworkStorageSession::destroySession):

  • platform/network/NetworkStorageSession.h:
  • platform/network/NetworkStorageSessionStub.cpp:

(WebCore::NetworkStorageSession::ensurePrivateBrowsingSession):
(WebCore::NetworkStorageSession::ensureSession):

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::createCFStorageSessionForIdentifier):
(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::switchToNewTestingSession):
(WebCore::NetworkStorageSession::defaultStorageSession):
(WebCore::NetworkStorageSession::ensurePrivateBrowsingSession):
(WebCore::NetworkStorageSession::ensureSession):
(WebCore::NetworkStorageSession::cookieStorage):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::ensureSession):

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa):

11:11 AM Changeset in webkit [215882] by Antti Koivisto
  • 2 edits in trunk/LayoutTests

Skip css3/viewport-percentage-lengths/vh-auto-size.html on WK1.

Looks like use of auto-sizing leaves state behind in DRT.

  • platform/mac-wk1/TestExpectations:
10:59 AM Changeset in webkit [215881] by BJ Burg
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: fix tooltip wording for Reload button
https://bugs.webkit.org/show_bug.cgi?id=171073
<rdar://problem/31378524>

Reviewed by Joseph Pecoraro.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):

10:39 AM Changeset in webkit [215880] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark media/modern-media-controls/buttons-container/buttons-container-buttons-property.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=167371

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:32 AM Changeset in webkit [215879] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark webgl/1.0.2/conformance/glsl/misc/shader-with-reserved-words.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=170877

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
10:11 AM Changeset in webkit [215878] by Alan Bujtas
  • 4 edits
    1 delete in trunk

Use text-shadow to visualize simple line layout coverage.
https://bugs.webkit.org/show_bug.cgi?id=171379

Reviewed by Antti Koivisto.

Source/WebCore:

It's more subtle (for everyday use).

  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::paintDebugBorders): Deleted.

LayoutTests:

  • fast/inline/simple-line-layout-16bit-content-expected-mismatch.html: Added.
  • fast/inline/simple-line-layout-16bit-content-expected.html: Removed.
  • fast/inline/simple-line-layout-16bit-content.html:
10:04 AM Changeset in webkit [215877] by jdiggs@igalia.com
  • 6 edits in trunk

[ATK] ARIA alertdialogs should be exposed with ROLE_DIALOG
https://bugs.webkit.org/show_bug.cgi?id=171187

Reviewed by Chris Fleizach.

Source/WebCore:

Map ApplicationAlertDialogRole to ATK_ROLE_DIALOG. While ATK_ROLE_ALERT is
appropriate as far as ATK is concerned, the Core Accessibility API Mappings
map ARIA's alertdialog role to ATK_ROLE_DIALOG. We should be consistent
with the spec. The fact that this is an alert dialog can still be obtained
via the AtkObject attributes.

No new tests needed. Update the expectations for roles-exposed.html,
xml-roles-exposed.html, and aria-mappings.html to reflect the change.

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

LayoutTests:

  • accessibility/aria-mappings-expected.txt: Updated.
  • accessibility/gtk/xml-roles-exposed-expected.txt: Updated.
  • platform/gtk/accessibility/roles-exposed-expected.txt: Updated.
10:02 AM Changeset in webkit [215876] by matthew_hanson@apple.com
  • 2 edits in tags/Safari-604.1.19/Source/WebCore

Cherry-pick r215870. rdar://problem/31845349

9:55 AM Changeset in webkit [215875] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Make fast/text/complex-small-caps-non-bmp-capitalize.html more robust
https://bugs.webkit.org/show_bug.cgi?id=171366
<rdar://problem/30060323>

Reviewed by Alex Christensen.

This test needs a font which supports Deseret but doesn't support small caps.
Geneva is a better choice for such a font.

  • fast/text/complex-small-caps-non-bmp-capitalize-expected.html:
  • fast/text/complex-small-caps-non-bmp-capitalize.html:
9:51 AM Changeset in webkit [215874] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Repeated layouts in Mail due to viewport units being used with auto-sizing
https://bugs.webkit.org/show_bug.cgi?id=171371
<rdar://problem/28780084>

Reviewed by Zalan Bujtas.

Source/WebCore:

Test: css3/viewport-percentage-lengths/vh-auto-size.html

Auto-sizing code would adjust the size of the view in the beginning of layout(). This would
end up invalidating style for elements that use vh units and we would perform main layout
with unclean style. This would result in endless layout loops and hit assert on debug.

  • page/FrameView.cpp:

(WebCore::FrameView::availableContentSizeChanged):

Ensure we heve clean style after resize if we are in pre-layout.

LayoutTests:

  • css3/viewport-percentage-lengths/vh-auto-size-expected.html: Added.
  • css3/viewport-percentage-lengths/vh-auto-size.html: Added.
9:47 AM Changeset in webkit [215873] by jdiggs@igalia.com
  • 1 edit
    1 move
    2 adds
    1 delete in trunk/LayoutTests

AX: Inconsistent exposure of ARIA "button" role with non-false value of aria-haspopup
https://bugs.webkit.org/show_bug.cgi?id=171204

Reviewed by Chris Fleizach.

It turns out that this bug was fixed as a side effect of the changes made
to fix WebKitGtk bug 171164 (r215821). But we didn't realize it due to the
lack of an existing layout test covering the mappings for other platforms.
The test created for the WebKitGtk port was modified and moved to the shared
tests. Shared expectations are based on the Mac's mappings.

  • accessibility/button-with-aria-haspopup-role-expected.txt: Added.
  • accessibility/button-with-aria-haspopup-role.html: Renamed from LayoutTests/accessibility/gtk/button-with-aria-haspopup-is-not-a-combobox.html.
  • accessibility/gtk/button-with-aria-haspopup-is-not-a-combobox-expected.txt: Removed.
  • platform/gtk/accessibility/button-with-aria-haspopup-role-expected.txt: Added.
9:42 AM Changeset in webkit [215872] by achristensen@apple.com
  • 30 edits in trunk/Source

Modernize Frame.h
https://bugs.webkit.org/show_bug.cgi?id=171357

Reviewed by Andy Estes.

Source/WebCore:

Frame.h has several std::unique_ptrs that are created in the constructor, never null,
and destroyed in the destructor. This is what WTF::UniqueRef is for, and using UniqueRef
allows us to not check for null values because a UniqueRef can never be null.
An interesting case was the EventHandler, which we explicitly set to nullptr in the destructor
of MainFrame, a subclass of Frame. We added this in r199181 to fix a crash tested by
fast/events/wheel-event-destroys-frame.html and this improved lifetime also does not crash
or assert in that test.

Using UniqueRef also requires const correctness, which this patch adds when necessary.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::dispatchTouchEvent):

  • editing/DeleteSelectionCommand.cpp:

(WebCore::DeleteSelectionCommand::calculateTypingStyleAfterDelete):

  • editing/Editor.cpp:

(WebCore::Editor::isSelectTrailingWhitespaceEnabled):
(WebCore::Editor::computeAndSetTypingStyle):

  • editing/Editor.h:
  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::contains):
(WebCore::FrameSelection::copyTypingStyle):

  • editing/FrameSelection.h:

(WebCore::FrameSelection::setTypingStyle):

  • loader/EmptyClients.cpp:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::clear):

  • page/EditorClient.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::hitTestResultAtPoint):

  • page/EventHandler.h:
  • page/Frame.cpp:

(WebCore::Frame::Frame):
(WebCore::Frame::setView):
(WebCore::Frame::injectUserScripts):

  • page/Frame.h:

(WebCore::Frame::editor):
(WebCore::Frame::eventHandler):
(WebCore::Frame::selection):
(WebCore::Frame::animation):
(WebCore::Frame::script):
(WebCore::Frame::eventHandlerPtr): Deleted.

  • page/MainFrame.cpp:

(WebCore::MainFrame::~MainFrame):

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleContextMenuEvent):

  • replay/UserInputBridge.h:

Source/WebKit/mac:

  • WebCoreSupport/WebEditorClient.h:
  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::isSelectTrailingWhitespaceEnabled):

Source/WebKit/win:

  • WebCoreSupport/WebEditorClient.cpp:

(WebEditorClient::isSelectTrailingWhitespaceEnabled):

  • WebCoreSupport/WebEditorClient.h:

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::isSelectTrailingWhitespaceEnabled):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::handleContextMenuEvent):
(WebKit::WebPage::isSelectTrailingWhitespaceEnabled):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::selectWithGesture):
(WebKit::WebPage::selectPositionAtPoint):
(WebKit::WebPage::selectPositionAtBoundaryWithDirection):
(WebKit::WebPage::rangeForGranularityAtPoint):
(WebKit::WebPage::selectTextWithGranularityAtPoint):
(WebKit::WebPage::updateSelectionWithExtentPointAndBoundary):
(WebKit::WebPage::updateSelectionWithExtentPoint):

9:03 AM Changeset in webkit [215871] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/local/blob/send-hybrid-blob-using-open-panel.html as flaky.
https://bugs.webkit.org/show_bug.cgi?id=171353

Unreviewed test gardening.

  • platform/ios-wk2/TestExpectations:
8:56 AM Changeset in webkit [215870] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the macOS build.

  • platform/mac/WebPlaybackControlsManager.h:
8:53 AM Changeset in webkit [215869] by commit-queue@webkit.org
  • 2 edits
    6 adds
    14 deletes in trunk/Source/WebInspectorUI

[GTK] Web Inspector: Add new GTK+ icons for instrument icons
https://bugs.webkit.org/show_bug.cgi?id=153892
<rdar://problem/24510460>

Patch by Fujii Hironori <Fujii Hironori> on 2017-04-27
Reviewed by Joseph Pecoraro.

Add more free icons from art-libre symbolic and removed some
unused ones for the Web Inspector in GTK+.

  • UserInterface/Images/gtk/Colors.png: Removed.
  • UserInterface/Images/gtk/Colors@2x.png: Removed.
  • UserInterface/Images/gtk/ColorsLarge.png: Removed.
  • UserInterface/Images/gtk/ColorsLarge@2x.png: Removed.
  • UserInterface/Images/gtk/Frames.png: Removed.
  • UserInterface/Images/gtk/Frames@2x.png: Removed.
  • UserInterface/Images/gtk/HeapAllocationsInstrument.svg: Added.
  • UserInterface/Images/gtk/LayoutInstrument.svg: Added.
  • UserInterface/Images/gtk/MemoryInstrument.svg: Added.
  • UserInterface/Images/gtk/Network.png: Removed.
  • UserInterface/Images/gtk/Network@2x.png: Removed.
  • UserInterface/Images/gtk/NetworkInstrument.svg: Added.
  • UserInterface/Images/gtk/NetworkLarge.png: Removed.
  • UserInterface/Images/gtk/NetworkLarge@2x.png: Removed.
  • UserInterface/Images/gtk/RenderingFramesInstrument.svg: Added.
  • UserInterface/Images/gtk/Script.png: Removed.
  • UserInterface/Images/gtk/Script@2x.png: Removed.
  • UserInterface/Images/gtk/ScriptLarge.png: Removed.
  • UserInterface/Images/gtk/ScriptLarge@2x.png: Removed.
  • UserInterface/Images/gtk/ScriptsInstrument.svg: Added.
  • UserInterface/Views/TimelineIcons.css:

(body:not(.mac-platform, .windows-platform) .network-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .network-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .layout-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .layout-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .script-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .script-icon.large .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .rendering-frame-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .memory-icon .icon): Deleted.
(body:not(.mac-platform, .windows-platform) .heap-allocations-icon .icon): Deleted.

8:52 AM Changeset in webkit [215868] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

[GTK] Web Inspector: gtk/NavigationItemCurleyBraces.svg is licensed under NonCommercial CC
https://bugs.webkit.org/show_bug.cgi?id=170902

Patch by Fujii Hironori <Fujii Hironori> on 2017-04-27
Reviewed by Michael Catanzaro.

  • UserInterface/Images/gtk/NavigationItemCurleyBraces.svg:

Replaced with new one created by me.

8:39 AM Changeset in webkit [215867] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

[GTK] Web Inspector: some SVG images are specified 'currentColor' incorrectly
https://bugs.webkit.org/show_bug.cgi?id=170977

Patch by Fujii Hironori <Fujii Hironori> on 2017-04-27
Reviewed by Michael Catanzaro.

The keyword 'currentColor' is specifed manually in Bug 150602.
But, some SVG images are specified incorrectly.

  • UserInterface/Images/gtk/NavigationItemTypes.svg: Do not stroke

with currentColor, but fill.

  • UserInterface/Images/gtk/UpDownArrows.svg: Ditto.
8:31 AM Changeset in webkit [215866] by Wenson Hsieh
  • 3 edits in trunk/Source/WebKit/mac

[WK1] Tweak the data interaction SPI to indicate whether or not a data interaction was handled
https://bugs.webkit.org/show_bug.cgi?id=171369
<rdar://problem/31858853>

Reviewed by Dan Bernstein.

Introduce a new SPI hook intended to replace performDataInteraction:client:global:operation: that
returns whether or not the data interaction was handled. Due to the difference only in return type
and some staging constraints, this version is prefixed with "_tryTo".

  • WebView/WebView.mm:

(-[WebView _tryToPerformDataInteraction:client:global:operation:]):

  • WebView/WebViewPrivate.h:
8:28 AM Changeset in webkit [215865] by jmarcell@apple.com
  • 7 edits in trunk/Source

Versioning.

8:11 AM Changeset in webkit [215864] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.19

Tag Safari-604.1.19.

8:01 AM Changeset in webkit [215863] by commit-queue@webkit.org
  • 6 edits
    1 add in trunk/LayoutTests

Fix some tests from platform-tests/cssom-view/cssom-view/
https://bugs.webkit.org/show_bug.cgi?id=171228

Patch by Frederic Wang <fwang@igalia.com> on 2017-04-27
Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

Fixes for some tests are imported from the web-platform-test repository.
Expectations are updated accordingly.

  • web-platform-tests/cssom-view/cssom-view/media-query-list-interface-expected.txt: Added.
  • web-platform-tests/cssom-view/cssom-view/media-query-list-interface.xht:
  • web-platform-tests/cssom-view/cssom-view/window-interface-expected.txt:
  • web-platform-tests/cssom-view/cssom-view/window-interface.xht:

LayoutTests:

5:28 AM Changeset in webkit [215862] by Carlos Garcia Campos
  • 9 edits
    2 adds in trunk/Source

[GTK] Remote inspector should support inspecting targets with previous version of backend commands
https://bugs.webkit.org/show_bug.cgi?id=171267

Reviewed by Michael Catanzaro.

Source/JavaScriptCore:

Rename GetTargetList DBus method as SetupInspectorClient since this method is actually called only once by
client right after connecting to the server. The method now receives the client backend commands hash as
argument and returns the contents of the backend commands file in case the hash doesn't match with the local
version.

  • PlatformGTK.cmake: Add RemoteInspectorUtils to compilation.
  • inspector/remote/glib/RemoteInspectorServer.cpp:

(Inspector::RemoteInspectorServer::setupInspectorClient):

  • inspector/remote/glib/RemoteInspectorServer.h:
  • inspector/remote/glib/RemoteInspectorUtils.cpp: Added.

(Inspector::backendCommands):
(Inspector::backendCommandsHash):

  • inspector/remote/glib/RemoteInspectorUtils.h: Added.

Source/WebInspectorUI:

Allow to use data URLs for script-src.

  • UserInterface/Main.html:

Source/WebKit2:

There's a FIXME for this in the code. The remote inspector proxy allows to pass a backend commands URL when
inspecting a target. That URL, if not empty, is used as Protocol/InspectorBackendCommands.js in the inspector
code instead of the local copy. We are currently assuming that both ends use the same version of that file.

  • UIProcess/glib/RemoteInspectorClient.cpp:

(WebKit::RemoteInspectorProxy::load): Pass RemoteInspectorClient::backendCommandsURL() to load().
(WebKit::RemoteInspectorClient::setupConnection): Get the local backend commands hash and pass it to
SetupInspectorClient method. Extract the server backend commands from the result and call setBackendCommands().
(WebKit::RemoteInspectorClient::setBackendCommands): Create a data URL for the server backend commands file
conents if needed.

  • UIProcess/glib/RemoteInspectorClient.h:

(WebKit::RemoteInspectorClient::backendCommandsURL):

4:02 AM Changeset in webkit [215861] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Text gets cut off when bailing out of simple line layout with widows.
https://bugs.webkit.org/show_bug.cgi?id=171370
<rdar://problem/31563414>

Reviewed by Antti Koivisto.

Source/WebCore:

Normal line layout requires an extra layout to handle widows. See RenderBlockFlow::relayoutToAvoidWidows.

Test: fast/multicol/simple-line-layout-widows-when-switching-over-to-normal-line-layout.html

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::ensureLineBoxes):

LayoutTests:

  • fast/multicol/simple-line-layout-widows-when-switching-over-to-normal-line-layout-expected.html: Added.
  • fast/multicol/simple-line-layout-widows-when-switching-over-to-normal-line-layout.html: Added.
1:59 AM Changeset in webkit [215860] by Yusuke Suzuki
  • 3 edits
    1 add in trunk

[JSC] Handle PhantomSpread in LoadVarargs as the same to the others
https://bugs.webkit.org/show_bug.cgi?id=171262

Reviewed by Saam Barati.

JSTests:

  • stress/spread-outer-create-rest.js: Added.

(assert):
(foo):
(bar):
(baz):

Source/JavaScriptCore:

This is follow-up patch after r215720. In that patch, accidentally
we did not apply the same change to LoadVarargs in argument elimination
phase. This patch just does the same rewriting to handle PhantomSpread
correctly.

  • dfg/DFGArgumentsEliminationPhase.cpp:
1:06 AM Changeset in webkit [215859] by graouts@webkit.org
  • 2 edits in trunk/Source/WebCore

Use the correct modern-media-controls
https://bugs.webkit.org/show_bug.cgi?id=171358

Reviewed by Antoine Quint.

  • WebCore.xcodeproj/project.pbxproj:

Apr 26, 2017:

11:21 PM Changeset in webkit [215858] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Reverted r215774.

It was not doing what it was intended to do and was inappropriate for WebCore.

  • WebCore.xcodeproj/project.pbxproj:
10:55 PM Changeset in webkit [215857] by sbarati@apple.com
  • 2 edits in trunk/Tools

Add some more testing modes for Wasm tests now that we have tier up
https://bugs.webkit.org/show_bug.cgi?id=171360

Reviewed by Keith Miller.

Lets enable the FTL on all Wasm tests. Let's also run each
test with and without CJIT.

  • Scripts/run-jsc-stress-tests:
10:45 PM Changeset in webkit [215856] by Chris Dumez
  • 2 edits
    1 delete in trunk/LayoutTests

Unreviewed, remove unnecessary expected result in platform/ios-wk2

  • platform/ios-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt: Removed.
  • platform/ios/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
10:12 PM Changeset in webkit [215855] by commit-queue@webkit.org
  • 6 edits in trunk

Web Inspector: Uint8ClampedArray should be treated like an array, not an object
https://bugs.webkit.org/show_bug.cgi?id=171364
<rdar://problem/10873037>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2017-04-26
Reviewed by Sam Weinig.

Source/JavaScriptCore:

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::subtype):
Treat Uint8ClampedArray (like other Typed Arrays) as an array.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/remote-object.html:
  • platform/mac/inspector/model/remote-object-expected.txt:

Test a Uint8ClampedArray is treated like an array.

8:38 PM Changeset in webkit [215854] by sbarati@apple.com
  • 14 edits
    1 add in trunk

Print Wasm function index in stack trace
https://bugs.webkit.org/show_bug.cgi?id=171349

Reviewed by JF Bastien.

JSTests:

  • wasm/function-tests/stack-trace.js: Added.

(import.Builder.from.string_appeared_here.assert):
(let.imp):

  • wasm/function-tests/trap-after-cross-instance-call.js:

(wasmFrameCountFromError):

  • wasm/function-tests/trap-load-2.js:

(wasmFrameCountFromError):

  • wasm/function-tests/trap-load.js:

(wasmFrameCountFromError):

Source/JavaScriptCore:

This patch prints a Callee's index in the function index
space in Error.stack.

This will lead to stack traces that have lines of text like:
wasm function index: 4@[wasm code]

We don't ascribe indices to everything in wasm. Specifically, the
Wasm->JS call stub callee does not get a name, and neither does
the JS -> Wasm entrypoint.

  • interpreter/Interpreter.cpp:

(JSC::GetStackTraceFunctor::operator()):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::functionName):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::Frame::wasmFunctionIndex):

  • runtime/StackFrame.cpp:

(JSC::StackFrame::functionName):

  • runtime/StackFrame.h:

(JSC::StackFrame::StackFrame):
(JSC::StackFrame::wasm):
(JSC::StackFrame::hasBytecodeOffset):
(JSC::StackFrame::bytecodeOffset):

  • wasm/WasmBBQPlanInlines.h:

(JSC::Wasm::BBQPlan::initializeCallees):

  • wasm/WasmCallee.cpp:

(JSC::Wasm::Callee::Callee):

  • wasm/WasmCallee.h:

(JSC::Wasm::Callee::create):
(JSC::Wasm::Callee::index):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

7:57 PM Changeset in webkit [215853] by keith_miller@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

Follow up to r215843
https://bugs.webkit.org/show_bug.cgi?id=171361

Reviewed by Saam Barati.

This patch fixes some style comments Saam didn't get a chance to
request before I landed: https://bugs.webkit.org/show_bug.cgi?id=170134.

It renames Wasm::CodeBlock::m_wasmEntrypoints to
m_wasmIndirectCallEntrypoints, as well as fixes some copyrights and
indentation.

  • wasm/WasmBBQPlan.cpp:
  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::CodeBlock):

  • wasm/WasmCodeBlock.h:

(JSC::Wasm::CodeBlock::wasmEntrypointLoadLocationFromFunctionIndexSpace):

  • wasm/WasmOMGPlan.cpp:

(JSC::Wasm::OMGPlan::work):

  • wasm/WasmTierUpCount.h:

(JSC::Wasm::TierUpCount::TierUpCount):
(JSC::Wasm::TierUpCount::loopDecrement):
(JSC::Wasm::TierUpCount::functionEntryDecrement):
(JSC::Wasm::TierUpCount::shouldStartTierUp):
(JSC::Wasm::TierUpCount::count):

7:28 PM Changeset in webkit [215852] by sbarati@apple.com
  • 10 edits
    2 adds in trunk

ASSERTION FAILED: inIndex != notFound in JSC::invalidParameterInSourceAppender()
https://bugs.webkit.org/show_bug.cgi?id=170924
<rdar://problem/31721052>

Reviewed by Mark Lam.

JSTests:

  • stress/error-message-for-function-base-not-found.js: Added.

(assert):
(throw.new.Error):

  • stress/error-messages-for-in-operator-should-not-crash.js: Added.

(catch):

LayoutTests/imported/w3c:

  • web-platform-tests/css-timing-1/cubic-bezier-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/frames-timing-functions-output-expected.txt:
  • web-platform-tests/css-timing-1/step-timing-functions-output-expected.txt:

Source/JavaScriptCore:

The error message handler for "in" was searching for the literal
string "in". However, our parser incorrectly allows escaped characters
to be part of keywords. So this is parsed as "in" in JSC: "i\u006E".
It should not be parsed that way. I opened https://bugs.webkit.org/show_bug.cgi?id=171310
to address this issue.

Regardless, the error message handlers should handle unexpected text gracefully.
All functions that try to augment error messages with the goal of
providing a more textual context for the error message should use
the original error message instead of crashing when they detect
unexpected text.

This patch also changes the already buggy code that tries to find
the base of a function call. That could would fail for code like this:
"zoo.bar("/abc\)*/");". See https://bugs.webkit.org/show_bug.cgi?id=146304
It would think that the base is "z". However, the algorithm that tries
to find the base can often tell when it fails, and when it does, it should
happily return the approximate text error message instead of thinking
that the base is "z".

  • runtime/ExceptionHelpers.cpp:

(JSC::functionCallBase):
(JSC::notAFunctionSourceAppender):
(JSC::invalidParameterInSourceAppender):

LayoutTests:

  • js/let-syntax-expected.txt:
6:26 PM Changeset in webkit [215851] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

Attempt to fix a PLT regression.
<rdar://problem/31826998>

Unreviewed.

Disable passing the TypeIdentifierHint to CGImageSourceCreateIncremental()
on iOS for now.

  • platform/graphics/cg/ImageDecoderCG.cpp:

(WebCore::ImageDecoder::ImageDecoder):

6:17 PM Changeset in webkit [215850] by jdiggs@igalia.com
  • 3 edits
    2 adds in trunk

[ATK] ARIA buttons which have a popup should be ATK_ROLE_PUSH_BUTTON; not ATK_ROLE_COMBO_BOX
https://bugs.webkit.org/show_bug.cgi?id=171182

Reviewed by Chris Fleizach.

Source/WebCore:

Test: accessibility/gtk/button-with-aria-haspopup-is-not-a-combobox.html

WebCore Accessibility assigns PopUpButtonRole to collapsed select elements,
which the ATK code correctly maps to ATK_ROLE_COMBO_BOX. It turns out that
WebCore Accessibility also maps the ARIA button role to PopUpButtonRole if
it also has aria-haspopup. Add a check to atkRole() so that the latter case
is mapped to ATK_ROLE_PUSH_BUTTON.

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

LayoutTests:

  • accessibility/gtk/button-with-aria-haspopup-is-not-a-combobox-expected.txt: Added.
  • accessibility/gtk/button-with-aria-haspopup-is-not-a-combobox.html: Added.
6:03 PM Changeset in webkit [215849] by timothy_horton@apple.com
  • 7 edits
    2 adds in trunk

Should not drag x-apple-data-detectors links
https://bugs.webkit.org/show_bug.cgi?id=171352
<rdar://problem/31309081>

Reviewed by Beth Dakin.

Test: fast/events/do-not-drag-and-drop-data-detectors-link.html

These links are only meaningful in the context of the original document,
so they should not be draggable.

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::dataDetectorURLProtocol):
(WebCore::DataDetection::isDataDetectorURL):

  • page/DragController.cpp:

(WebCore::isDraggableLink):
Disallow dragging of <a href="x-apple-data-detectors://..."> links.

  • fast/events/do-not-drag-and-drop-data-detectors-link-expected.txt: Added.
  • fast/events/do-not-drag-and-drop-data-detectors-link.html: Added.
6:01 PM Changeset in webkit [215848] by timothy_horton@apple.com
  • 8 edits
    2 deletes in trunk

Revert accidentally smushed commit.

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::dataDetectorURLProtocol): Deleted.
(WebCore::DataDetection::isDataDetectorURL): Deleted.

  • page/DragController.cpp:

(WebCore::isDraggableLink):

  • platform/mac/DragImageMac.mm:

(WebCore::createDragImageForLink):

  • TestExpectations:
  • fast/events/do-not-drag-and-drop-data-detectors-link-expected.txt: Removed.
  • fast/events/do-not-drag-and-drop-data-detectors-link.html: Removed.
  • platform/mac/TestExpectations:
5:53 PM Changeset in webkit [215847] by timothy_horton@apple.com
  • 8 edits
    2 adds in trunk

Should not drag x-apple-data-detectors links
https://bugs.webkit.org/show_bug.cgi?id=171352
<rdar://problem/31309081>

Reviewed by Beth Dakin.

Test: fast/events/do-not-drag-and-drop-data-detectors-link.html

These links are only meaningful in the context of the original document,
so they should not be draggable.

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::dataDetectorURLProtocol):
(WebCore::DataDetection::isDataDetectorURL):

  • page/DragController.cpp:

(WebCore::isDraggableLink):
Disallow dragging of <a href="x-apple-data-detectors://..."> links.

  • fast/events/do-not-drag-and-drop-data-detectors-link-expected.txt: Added.
  • fast/events/do-not-drag-and-drop-data-detectors-link.html: Added.
5:15 PM Changeset in webkit [215846] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

JSC EWS Patch Relevance skips few JSC scripts
https://bugs.webkit.org/show_bug.cgi?id=171351

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/tool/steps/checkpatchrelevance.py:

(CheckPatchRelevance): Added few jsc related scripts.

5:12 PM Changeset in webkit [215845] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r215686): ASSERTION FAILED: data seen with webarchive/loading tests
https://bugs.webkit.org/show_bug.cgi?id=171340

Reviewed by Brady Eidson.

This fixes a flaky assertion in webarchive/loading/missing-data.html

  • platform/cf/SharedBufferCF.cpp:

(WebCore::SharedBuffer::append):
If there's no CFDataRef, there's no need to append data.
This happens sometimes.

5:10 PM Changeset in webkit [215844] by jmarcell@apple.com
  • 7 edits in tags/Safari-604.1.18.1/Source

Versioning.

4:55 PM Changeset in webkit [215843] by keith_miller@apple.com
  • 34 edits
    6 copies
    1 move
    4 adds in trunk

WebAssembly: Implement tier up
https://bugs.webkit.org/show_bug.cgi?id=170134

Reviewed by Filip Pizlo.

JSTests:

  • wasm/function-tests/trap-after-cross-instance-call.js:
  • wasm/tier-up/js-to-wasm.js: Added.

(async.test):

  • wasm/tier-up/wasm-to-wasm.js: Added.

(async.test):

Source/JavaScriptCore:

This patch implements tier up for wasm functions. Unlike with JS
code, wasm code needs to be able to tier up concurrently with the
running code. Since JS code is synchronous we can always link on
the running thread, wasm, however, can run the same code on more
than one thread. In order to make patching work correctly, we need
to ensure that all patches of callsites are aligned. On ARM we get
this for free since every call is a near call. On X86 we ensure
that the 32-bit relative offset is 32-bit aligned.

This patch also modifies how Wasm::Plan works. Now Plan is a
abstract super class and there are two subclasses, which
correspond to the different tiers of our wasm engine. The first,
Build Bytecode Quickly (BBQ) tier, roughly does what the old plan
code did before. The new tier, Optimized Machine code Generation
(OMG), can be called at any point by BBQ code and compiles exactly
one function. Once an OMGPlan finishes it will link it's code
internally then reset the instruction cache of all running wasm
threads, via, a ThreadMessage. Once the instruction caches have
been reset all the other functions will be patched to call the new
code.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::ensureCacheLineSpace):

  • assembler/CodeLocation.h:

(JSC::CodeLocationThreadSafeNearCall::CodeLocationThreadSafeNearCall):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::threadSafePatchableNearCall):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::threadSafeNearCall):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::threadSafePatchableNearCall):

  • b3/air/AirEmitShuffle.cpp:

(JSC::B3::Air::ShufflePair::inst):
(JSC::B3::Air::ShufflePair::opcode): Deleted.

  • b3/air/AirEmitShuffle.h:
  • jsc.cpp:

(functionTestWasmModuleFunctions):

  • runtime/JSLock.cpp:

(JSC::JSLock::didAcquireLock):

  • runtime/Options.h:
  • wasm/WasmB3IRGenerator.cpp:

(JSC::Wasm::B3IRGenerator::materializeWasmContext):
(JSC::Wasm::B3IRGenerator::B3IRGenerator):
(JSC::Wasm::B3IRGenerator::constant):
(JSC::Wasm::B3IRGenerator::emitTierUpCheck):
(JSC::Wasm::B3IRGenerator::addLoop):
(JSC::Wasm::B3IRGenerator::addTopLevel):
(JSC::Wasm::B3IRGenerator::addBlock):
(JSC::Wasm::createJSToWasmWrapper):
(JSC::Wasm::parseAndCompile):

  • wasm/WasmB3IRGenerator.h:
  • wasm/WasmBBQPlan.cpp: Copied from Source/JavaScriptCore/wasm/WasmPlan.cpp.

(JSC::Wasm::BBQPlan::BBQPlan):
(JSC::Wasm::BBQPlan::stateString):
(JSC::Wasm::BBQPlan::moveToState):
(JSC::Wasm::BBQPlan::parseAndValidateModule):
(JSC::Wasm::BBQPlan::prepare):
(JSC::Wasm::BBQPlan::ThreadCountHolder::ThreadCountHolder):
(JSC::Wasm::BBQPlan::ThreadCountHolder::~ThreadCountHolder):
(JSC::Wasm::BBQPlan::compileFunctions):
(JSC::Wasm::BBQPlan::complete):
(JSC::Wasm::BBQPlan::work):

  • wasm/WasmBBQPlan.h: Copied from Source/JavaScriptCore/wasm/WasmPlan.h.
  • wasm/WasmBBQPlanInlines.h: Copied from Source/JavaScriptCore/wasm/WasmPlanInlines.h.

(JSC::Wasm::BBQPlan::initializeCallees):

  • wasm/WasmBinding.cpp:

(JSC::Wasm::wasmToWasm):

  • wasm/WasmCallee.h:

(JSC::Wasm::Callee::entrypoint):

  • wasm/WasmCodeBlock.cpp:

(JSC::Wasm::CodeBlock::CodeBlock):

  • wasm/WasmCodeBlock.h:

(JSC::Wasm::CodeBlock::jsEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::wasmEntrypointLoadLocationFromFunctionIndexSpace):
(JSC::Wasm::CodeBlock::tierUpCount):
(JSC::Wasm::CodeBlock::mode):

  • wasm/WasmFormat.h:

(JSC::Wasm::CallableFunction::CallableFunction):
(JSC::Wasm::CallableFunction::offsetOfWasmEntrypointLoadLocation):

  • wasm/WasmMachineThreads.cpp: Copied from Source/JavaScriptCore/wasm/WasmPlanInlines.h.

(JSC::Wasm::wasmThreads):
(JSC::Wasm::startTrackingCurrentThread):
(JSC::Wasm::resetInstructionCacheOnAllThreads):

  • wasm/WasmMachineThreads.h: Copied from Source/JavaScriptCore/wasm/WasmCallee.h.
  • wasm/WasmModule.cpp:

(JSC::Wasm::makeValidationResult):
(JSC::Wasm::makeValidationCallback):
(JSC::Wasm::Module::validateSync):
(JSC::Wasm::Module::validateAsync):

  • wasm/WasmModule.h:

(JSC::Wasm::Module::codeBlockFor):

  • wasm/WasmOMGPlan.cpp: Added.

(JSC::Wasm::OMGPlan::OMGPlan):
(JSC::Wasm::OMGPlan::work):
(JSC::Wasm::runOMGPlanForIndex):

  • wasm/WasmOMGPlan.h: Copied from Source/JavaScriptCore/wasm/WasmPlanInlines.h.
  • wasm/WasmPlan.cpp:

(JSC::Wasm::Plan::Plan):
(JSC::Wasm::Plan::runCompletionTasks):
(JSC::Wasm::Plan::addCompletionTask):
(JSC::Wasm::Plan::waitForCompletion):
(JSC::Wasm::Plan::tryRemoveVMAndCancelIfLast):
(JSC::Wasm::Plan::fail):
(JSC::Wasm::Plan::stateString): Deleted.
(JSC::Wasm::Plan::moveToState): Deleted.
(JSC::Wasm::Plan::parseAndValidateModule): Deleted.
(JSC::Wasm::Plan::prepare): Deleted.
(JSC::Wasm::Plan::ThreadCountHolder::ThreadCountHolder): Deleted.
(JSC::Wasm::Plan::ThreadCountHolder::~ThreadCountHolder): Deleted.
(JSC::Wasm::Plan::compileFunctions): Deleted.
(JSC::Wasm::Plan::complete): Deleted.

  • wasm/WasmPlan.h:

(JSC::Wasm::Plan::exports): Deleted.
(JSC::Wasm::Plan::internalFunctionCount): Deleted.
(JSC::Wasm::Plan::takeModuleInformation): Deleted.
(JSC::Wasm::Plan::takeCallLinkInfos): Deleted.
(JSC::Wasm::Plan::takeWasmToWasmExitStubs): Deleted.
(JSC::Wasm::Plan::hasWork): Deleted.
(JSC::Wasm::Plan::hasBeenPrepared): Deleted.

  • wasm/WasmTierUpCount.h: Renamed from Source/JavaScriptCore/wasm/WasmPlanInlines.h.

(JSC::Wasm::TierUpCount::TierUpCount):
(JSC::Wasm::TierUpCount::loopDecrement):
(JSC::Wasm::TierUpCount::functionEntryDecrement):
(JSC::Wasm::TierUpCount::shouldStartTierUp):
(JSC::Wasm::TierUpCount::count):

  • wasm/WasmWorklist.cpp:
  • wasm/WasmWorklist.h:

(JSC::Wasm::Worklist::nextTicket):

  • wasm/js/JSWebAssemblyCodeBlock.cpp:
  • wasm/js/JSWebAssemblyCodeBlock.h:

(JSC::JSWebAssemblyCodeBlock::wasmEntrypointLoadLocationFromFunctionIndexSpace):
(JSC::JSWebAssemblyCodeBlock::wasmToJsCallStubForImport):
(JSC::JSWebAssemblyCodeBlock::wasmEntrypointCalleeFromFunctionIndexSpace): Deleted.

  • wasm/js/JSWebAssemblyTable.cpp:

(JSC::JSWebAssemblyTable::setFunction):

  • wasm/js/WebAssemblyFunction.cpp:

(JSC::WebAssemblyFunction::create):
(JSC::WebAssemblyFunction::WebAssemblyFunction):

  • wasm/js/WebAssemblyFunction.h:

(JSC::WebAssemblyFunction::signatureIndex):
(JSC::WebAssemblyFunction::wasmEntrypointLoadLocation):
(JSC::WebAssemblyFunction::callableFunction):
(JSC::WebAssemblyFunction::offsetOfWasmEntrypointLoadLocation):
(JSC::WebAssemblyFunction::wasmEntrypoint): Deleted.
(JSC::WebAssemblyFunction::offsetOfWasmEntrypoint): Deleted.

  • wasm/js/WebAssemblyModuleRecord.cpp:

(JSC::WebAssemblyModuleRecord::link):
(JSC::WebAssemblyModuleRecord::evaluate):

  • wasm/js/WebAssemblyPrototype.cpp:

(JSC::webAssemblyValidateFunc):

  • wasm/js/WebAssemblyWrapperFunction.cpp:

(JSC::WebAssemblyWrapperFunction::WebAssemblyWrapperFunction):
(JSC::WebAssemblyWrapperFunction::create):

  • wasm/js/WebAssemblyWrapperFunction.h:

(JSC::WebAssemblyWrapperFunction::signatureIndex):
(JSC::WebAssemblyWrapperFunction::wasmEntrypointLoadLocation):
(JSC::WebAssemblyWrapperFunction::callableFunction):
(JSC::WebAssemblyWrapperFunction::wasmEntrypoint): Deleted.

4:52 PM Changeset in webkit [215842] by Ryan Haddad
  • 4 edits in trunk

Unreviewed, rolling out r215814.

The LayoutTest for this change is failing on ios-simulator and
is flaky on macOS.

Reverted changeset:

"Response.blob() does not set the content-type based on the
header value."
https://bugs.webkit.org/show_bug.cgi?id=170849
http://trac.webkit.org/changeset/215814

4:48 PM Changeset in webkit [215841] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Test importer should delete obsolete files based on w3c-import.log
https://bugs.webkit.org/show_bug.cgi?id=171348

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

  • Scripts/webkitpy/w3c/test_importer.py:

(TestImporter.do_import): Removing dangling -expected.txt files in regular import mode.
(TestImporter.remove_deleted_files): Fixing according w3c-import.log current format.

  • Scripts/webkitpy/w3c/test_importer_unittest.py:

(test_remove_obsolete_content):

4:33 PM Changeset in webkit [215840] by Wenson Hsieh
  • 21 edits in trunk/Source

WebItemProviderPasteboard should not synchronously load provided data
https://bugs.webkit.org/show_bug.cgi?id=171341
<rdar://problem/31614010>

Reviewed by Tim Horton.

Source/WebCore:

Refactors WebItemProviderPasteboard to not require asynchronously loading item provider data. To accomplish this,
we ensure that before performing data interaction, the UTI type that the data operation target should consume is
propagated to the UI process prior to the web process receiving the signal from the UI process to begin the
data operation itself. This information is sent via WebPlatformStrategies::updatePreferredTypeIdentifiers, a new
pasteboard helper function.

  • page/DragController.cpp:

(WebCore::DragController::DragController):
(WebCore::dragIsHandledByDocument):
(WebCore::DragController::performDragOperation):
(WebCore::DragController::dragEnteredOrUpdated):
(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod):
(WebCore::DragController::tryDocumentDrag):

Give DragHandlingMethod a richer representation of what type of action will be performed. DragController::
updatePreferredTypeIdentifiersForDragHandlingMethod uses this to determine what kinds of UTIs are acceptable for
the current drop session.

  • page/DragController.h:

(WebCore::DragController::documentIsHandlingNonDefaultDrag):

  • page/mac/DragControllerMac.mm:

(WebCore::DragController::updatePreferredTypeIdentifiersForDragHandlingMethod):

Updates the data interaction pasteboard's list of preferred type identifiers it should load upon data operation.

  • platform/DragData.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/ios/AbstractPasteboard.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::updatePreferredTypeIdentifiers):

  • platform/ios/WebItemProviderPasteboard.mm:

Introduce _preferredTypeIdentifiers, which -doAfterLoadingProvidedContentIntoFileURLs: uses as a hint when
determining which UTI to load for an item provider. In the absence of preferred type identifiers, the default
behavior is to use the highest fidelity type adhering to "public.content".

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard updatePreferredTypeIdentifiers:]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

Remove calls to -createObjectOfClass: and -copyDataRepresentation:. Instead, rely solely on the loaded file URL
to read and initialize data and objects from the pasteboard.

(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:]):
(-[WebItemProviderPasteboard _tryToCreateObjectOfClass:usingProvider:]): Deleted.

  • platform/mac/DragDataMac.mm:

(WebCore::DragData::updatePreferredTypeIdentifiers):

Source/WebKit/mac:

Adds client-layer plumbing for updatePreferredTypeIdentifiers. See WebCore ChangeLog for more details.

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::updatePreferredTypeIdentifiers):

Source/WebKit2:

Adds plumbing for updatePreferredTypeIdentifiers through the WebPasteboardProxy. This allows the web process to
signal to the UI process what UTIs the current drop target should accept and load. See WebCore ChangeLog for more
details.

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::updatePreferredTypeIdentifiers):

  • UIProcess/WebPasteboardProxy.h:
  • UIProcess/WebPasteboardProxy.messages.in:
  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::updatePreferredTypeIdentifiers):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
4:33 PM Changeset in webkit [215839] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Re-baseline inspector/dom/getAccessibilityPropertiesForNode.html after r215821
https://bugs.webkit.org/show_bug.cgi?id=171346

Unreviewed test gardening.

Patch by Matt Lewis <Matt Lewis> on 2017-04-26

  • inspector/dom/getAccessibilityPropertiesForNode-expected.txt:
4:28 PM Changeset in webkit [215838] by Jonathan Bedard
  • 2 edits in trunk/Tools

REGRESSION (r213926): We're sometimes trying to start WebKitTestRunner without proper DYLD variables
<rdar://problem/31816459>

Unreviewed infrastructure fix.

Some of our iOS Simulator bots are slow and will register crashes due to an incorrect
DYLD_FRAMEWORK_PATH when installing an app.

  • Scripts/webkitpy/port/ios.py:

(IOSPort.setup_test_run): Pass DYLD_FRAMEWORK_PATH to app on install.

4:26 PM Changeset in webkit [215837] by jdiggs@igalia.com
  • 11 edits
    4 adds in trunk

[ATK] Elements with a defined, non-false value for aria-current should expose ATK_STATE_ACTIVE
https://bugs.webkit.org/show_bug.cgi?id=171163

Reviewed by Chris Fleizach.

Source/WebCore:

Add ATK_STATE_ACTIVE to the state set of elements which have a valid, non-false
value for aria-current, expose the value of via the "current" AtkObject attribute,
and emit state-change notifications when the value of aria-current changes from
non-false to false, or vice versa.

Tests: accessibility/gtk/aria-current-changed-notification.html

accessibility/gtk/aria-current.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::handleAttributeChanged):

  • accessibility/AXObjectCache.h:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsARIACurrent):
(WebCore::AccessibilityObject::ariaCurrentValue):

  • accessibility/AccessibilityObject.h:
  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::postPlatformNotification):

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):
(setAtkStateSetFromCoreObject):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]): Moved code returning
string value for aria-current into AccessibilityObject:ariaCurrentValue().

Tools:

Add support for state-change notifications for ATK_STATE_ACTIVE.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp:

LayoutTests:

  • accessibility/gtk/aria-current-changed-notification-expected.txt: Added.
  • accessibility/gtk/aria-current-changed-notification.html: Added.
  • accessibility/gtk/aria-current-expected.txt: Added.
  • accessibility/gtk/aria-current.html: Added.
4:11 PM Changeset in webkit [215836] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Unauthenticated CORS preflight requests should not use client certificates
https://bugs.webkit.org/show_bug.cgi?id=171298

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

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSessionCocoa::NetworkSessionCocoa): Ensuring that session dedicated to requests that do not want to use credentials do not look for client credentials.

4:09 PM Changeset in webkit [215835] by Wenson Hsieh
  • 5 edits in trunk/Source/WebCore

WebItemProviderPasteboard should fetch preloaded assets from disk when possible
https://bugs.webkit.org/show_bug.cgi?id=171320
<rdar://problem/31614010>

Reviewed by Tim Horton.

Adds a mechanism to WebItemProviderPasteboard to remember the temporary file URLs of assets it has loaded using
doAfterLoadingProvidedContentIntoFileURLs:. When retrieving data from the pasteboard, we then see if we can
first fetch serialized data straight from disk instead of having to go through the item provider in both
-dataForPasteboardType:inItemSet: and -valuesForPasteboardType:inItemSet:.

See below annotations for more detail.

  • platform/ios/AbstractPasteboard.h:
  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::filenamesForDataInteraction):

  • platform/ios/WebItemProviderPasteboard.h:
  • platform/ios/WebItemProviderPasteboard.mm:

Introduces _typeToFileURLMaps, an array of dictionaries. A dictionary at the ith index of this array represents
a mapping of UTIs to loaded temo file URLs for the ith UIItemProvider in the _itemProviders array. Before data
interaction is performed, all entries in this array will be empty.

(-[WebItemProviderPasteboard init]):
(-[WebItemProviderPasteboard setItemProviders:]):
(-[WebItemProviderPasteboard _preLoadedDataConformingToType:forItemProviderAtIndex:]):
(-[WebItemProviderPasteboard dataForPasteboardType:inItemSet:]):
(-[WebItemProviderPasteboard valuesForPasteboardType:inItemSet:]):

Consult any loaded assets on disk before hitting UIItemProviders via the new
-_preLoadedDataConformingToType:forItemProviderAtIndex: helper method.

(-[WebItemProviderPasteboard _tryToCreateObjectOfClass:usingProvider:]):
(-[WebItemProviderPasteboard fileURLsForDataInteraction]):

Traverse _typeToFileURLMaps to collect all file URLs.

(-[WebItemProviderPasteboard doAfterLoadingProvidedContentIntoFileURLs:]):

Refactored to populate and set _typeToFileURLMaps when loading completes, rather than an array of file URLs.

(-[WebItemProviderPasteboard _tryToCreateAndAppendObjectOfClass:toArray:usingProvider:]): Deleted.
(-[WebItemProviderPasteboard filenamesForDataInteraction]): Deleted.

Correct an erroneously named method (replaces filenames with fileURLs).

3:36 PM Changeset in webkit [215834] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

The current page is given a muted state when starting a media stream on iOS.
https://bugs.webkit.org/show_bug.cgi?id=171290
<rdar://problem/31821427>

Reviewed by Jer Noble.

  • UIProcess/UserMediaProcessManager.cpp:

(WebKit::UserMediaProcessManager::willEnableMediaStreamInPage): Don't mute the current
page on iOS either, that will prevent the new media stream from playing.

3:04 PM Changeset in webkit [215833] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

LayoutTest webrtc/datachannel/bufferedAmountLowThreshold.html is a flaky failure
https://bugs.webkit.org/show_bug.cgi?id=170701

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-26
Reviewed by Eric Carlson.

  • platform/mac-wk1/TestExpectations: Removing flaky expectation.
  • webrtc/datachannel/bufferedAmountLowThreshold-expected.txt:
  • webrtc/datachannel/bufferedAmountLowThreshold.html:
3:01 PM Changeset in webkit [215832] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

LayoutTest webrtc/datachannel/basic.html is a flaky crash
https://bugs.webkit.org/show_bug.cgi?id=170154
<rdar://problem/31288423>

Patch by Youenn Fablet <youenn@apple.com> on 2017-04-26
Reviewed by Geoffrey Garen.

Before the patch, we are setting the channel handler client to null and then unregistering from observer to
libwebrtc data channel. Since this happens in two different threads, there might be a timing issue.

Removing this risk by first unregistering (done synchronously on the other thread), before setting client to null.
Made some clean-up related refactoring.

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::create):
(WebCore::RTCDataChannel::close):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.cpp:

(WebCore::LibWebRTCDataChannelHandler::setClient):
(WebCore::LibWebRTCDataChannelHandler::close):

  • Modules/mediastream/libwebrtc/LibWebRTCDataChannelHandler.h:
  • platform/mediastream/RTCDataChannelHandler.h:
  • platform/mock/RTCDataChannelHandlerMock.cpp:

(WebCore::RTCDataChannelHandlerMock::setClient):

  • platform/mock/RTCDataChannelHandlerMock.h:
2:40 PM Changeset in webkit [215831] by commit-queue@webkit.org
  • 9 edits in trunk/Source

Make user script injection more robust
https://bugs.webkit.org/show_bug.cgi?id=171339
<rdar://problem/30643691>

Patch by Alex Christensen <achristensen@webkit.org> on 2017-04-26
Reviewed by Geoffrey Garen.

Source/WebCore:

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

(WebCore::Frame::injectUserScripts):

  • page/UserContentController.cpp:

(WebCore::UserContentController::forEachUserScript):
(WebCore::UserContentController::forEachUserStyleSheet):
(WebCore::UserContentController::forEachUserMessageHandler):

  • page/UserContentController.h:
  • page/UserContentProvider.h:

Source/WebKit2:

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::forEachUserScript):
(WebKit::WebUserContentController::forEachUserStyleSheet):
(WebKit::WebUserContentController::forEachUserMessageHandler):

  • WebProcess/UserContent/WebUserContentController.h:
1:52 PM Changeset in webkit [215830] by Alan Bujtas
  • 6 edits in trunk/Source

RTL: recent searches popover is displayed in incorrect location
https://bugs.webkit.org/show_bug.cgi?id=171338
<rdar://problem/31377807>

Reviewed by Dean Jackson.

Source/WebCore:

Compute the absolute coordinates for the popup the same way we do for the select dropdown.

  • rendering/RenderSearchField.cpp:

(WebCore::RenderSearchField::showPopup):

Source/WebKit/mac:

Add RTL support for the pop-under branch.

  • WebCoreSupport/PopupMenuMac.mm:

(PopupMenuMac::show):

Source/WebKit2:

Add RTL support for the pop-under branch.

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::showPopupMenu):

1:35 PM Changeset in webkit [215829] by commit-queue@webkit.org
  • 4 edits
    6 adds in trunk

Restrict WebKit image formats to a known whitelist
https://bugs.webkit.org/show_bug.cgi?id=170700

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2017-04-26
Reviewed by Tim Horton.

Source/WebCore:

If the image format is not supported, the load should be canceled and the
image is marked a broken image.

Test: fast/images/image-formats-support.html

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::addIncrementalDataBuffer):
(WebCore::CachedImage::setImageDataBuffer):
(WebCore::CachedImage::finishLoading):

  • loader/cache/CachedImage.h:

LayoutTests:

  • fast/images/image-formats-support-expected.txt: Added.
  • fast/images/image-formats-support.html: Added.
  • fast/images/resources/100x100-red-psd-renamed.png: Added.
  • fast/images/resources/100x100-red-tga-renamed.png: Added.
  • fast/images/resources/100x100-red.psd: Added.
  • fast/images/resources/100x100-red.tga: Added.
1:24 PM Changeset in webkit [215828] by jmarcell@apple.com
  • 2 edits in tags/Safari-604.1.18.1/Source/WebCore

Cherry-pick 674c09519f93fe01f4a54b4b987b72cf3e13f62c.

1:23 PM Changeset in webkit [215827] by jmarcell@apple.com
  • 2 edits in tags/Safari-604.1.18.1/Source/WebCore

Cherry-pick be0489fa24a2bb4c3ba95d5fc98cbbe72a5108a4.

1:23 PM Changeset in webkit [215826] by jmarcell@apple.com
  • 2 edits in tags/Safari-604.1.18.1/Source/WebKit2

Cherry-pick 6259a37cc6ee5e811df5a2d8c043ef0c9a2929bd
358c01809a1fefdd4606930f09b5acc8b8a007ed. rdar://problem/31827095

1:23 PM Changeset in webkit [215825] by jmarcell@apple.com
  • 8 edits
    4 adds in tags/Safari-604.1.18.1

Cherry-pick 9000840c460a566350f3532112bb13e684062b6f. rdar://problem/31634990

1:23 PM Changeset in webkit [215824] by Jonathan Bedard
  • 3 edits in trunk/Tools

webkitpy: Teardown iOS Simulators on exit if managed Simulators are still running
https://bugs.webkit.org/show_bug.cgi?id=171293

Reviewed by Aakash Jain.

We should make an effort to teardown simulators which we booted even when an exception is
thrown while booting. Make some IOSSimulatorPort functions into static methods and register
one of these functions to be run at exit to ensure any devices webkitpy is managing gets
torn down.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager._set_up_run): Rely on exit handlers to teardown, not exceptions.

  • Scripts/webkitpy/port/ios_simulator.py:

(IOSSimulatorPort._teardown_managed_simulators): Function run on exit which will kill all
iOS simulators and teardown and managed devices.
(IOSSimulatorPort._create_simulators): Register teardown function.
(IOSSimulatorPort.clean_up_test_run): Move device teardown to _teardown_managed_simulators.
(IOSSimulatorPort._remove_device): Deleted.

1:09 PM Changeset in webkit [215823] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Mark swipe/main-frame-pinning-requirement.html as a flaky failure on mac-wk2.
https://bugs.webkit.org/show_bug.cgi?id=170484

Patch by Matt Lewis <Matt Lewis> on 2017-04-26
Reviewed by Alexey Proskuryakov.

  • platform/mac-wk2/TestExpectations:
12:38 PM Changeset in webkit [215822] by Chris Dumez
  • 17 edits
    1 copy
    2 moves
    57 adds
    1 delete in trunk/LayoutTests

Re-sync html/browsers/the-window-object web-platform-tests from upstream
https://bugs.webkit.org/show_bug.cgi?id=171313

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • resources/import-expectations.json:
  • web-platform-tests/common/PrefixedPostMessage.js: Added.

(PrefixedMessage):
(PrefixedMessage.prototype.url):
(PrefixedMessage.prototype.onMessage):
(PrefixedMessageTest):
(PrefixedMessageResource):
(PrefixedMessageResource.prototype.postToOpener):

  • web-platform-tests/html/browsers/the-window-object/accessing-other-browsing-contexts/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/non_automated/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-innerwidth-innerheight.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-screenx-screeny.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-top-left.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-negative-width-height.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-height.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerheight.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-innerwidth.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-left.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screenx.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-screeny.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-top.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-non-integer-width.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-innerheight-innerwidth.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-noopener.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-screenx-screeny.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-top-left.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height-expected.txt: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/open-features-tokenization-width-height.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/message-opener.html: Added.
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/resources/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/apis-for-creating-and-navigating-browsing-contexts-by-name/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/non-automated/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/garbage-collection-and-browsing-contexts/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/named-access-on-the-window-object/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/security-window/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/support/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/w3c-import.log:
  • web-platform-tests/html/browsers/the-window-object/window-indexed-properties-expected.txt:
  • web-platform-tests/html/browsers/the-window-object/window-indexed-properties-strict.html:
  • web-platform-tests/html/browsers/the-window-object/window-indexed-properties.html:

LayoutTests:

  • tests-options.json:
12:30 PM Changeset in webkit [215821] by jdiggs@igalia.com
  • 9 edits
    2 adds in trunk

[ATK] Implement support for new ARIA 1.1 values of aria-haspopup
https://bugs.webkit.org/show_bug.cgi?id=171164

Reviewed by Chris Fleizach.

Source/WebCore:

In ARIA 1.1, aria-haspopup's value type changed from true/false to a token.
Values: true, false (default, unless it's a combobox), dialog, grid, listbox
(default for combobox), menu, and tree. Any value of aria-haspopup that is
not included in the list of allowed values, including an empty string, must
be treated as if the value false had been provided.

Add AccessibilityObject::ariaPopupValue() to validate the value, handle implicit
values, and give platform assistive technologies a means to access that value.

If there is a valid, non-false value of aria-haspopup, include ATK_STATE_HAS_POPUP
in the AtkStateSet. Lastly, expose the value (rather than true/false) via the "haspop"
AtkObject attribute.

Test: accessibility/gtk/aria-haspopup.html

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::ariaPopupValue):
(WebCore::AccessibilityObject::supportsARIAHasPopup):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::ariaHasPopup):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetAttributes):
(setAtkStateSetFromCoreObject):

Tools:

hasPopup() should return whether or not ATK_STATE_HAS_POPUP is in the
AtkStateSet; not what is found in the AtkObject's attributes.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::hasPopup):

LayoutTests:

In addition to the new test, update xml-roles-exposed.html's expectations
because the implicit value of aria-haspopup for the combobox role is now
listbox, and that value should be exposed via an AtkObject attribute.

  • accessibility/gtk/aria-haspopup-expected.txt: Added.
  • accessibility/gtk/aria-haspopup.html: Added.
  • accessibility/gtk/xml-roles-exposed-expected.txt:
12:03 PM Changeset in webkit [215820] by Simon Fraser
  • 5 edits in trunk/LayoutTests

http/tests/frame-throttling tests failing on iOS
https://bugs.webkit.org/show_bug.cgi?id=171314
rdar://problem/31691134

Reviewed by Chris Dumez.

The tests use UIHelper.activateAt(), which in DumpRenderTree dispatches mouse events via EventSender, and in iOS WK2 uses
UIScriptController to dispatch touch events. The former just use standard hit testing, which works fine.
The latter go via Frame::qualifyingNodeAtViewportLocation(), which calls ancestorRespondingToClickEvents()
and does area hit testing, and this fails to find anything clickable inside the <iframe>s.

Fix by putting a div with an onlick handler inside the iframes, and adjusting the click
locations.

  • http/tests/frame-throttling/raf-throttle-in-cross-origin-subframe.html:
  • http/tests/frame-throttling/resources/requestAnimationFrame-frame.html:
  • http/tests/frame-throttling/resources/timer-throttling-frame.html:
  • http/tests/frame-throttling/timer-throttle-in-cross-origin-subframe.html:
12:01 PM Changeset in webkit [215819] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix CMake build.

  • PlatformMac.cmake:
11:46 AM Changeset in webkit [215818] by keith_miller@apple.com
  • 3 edits in trunk/Source/WTF

LocklessBag needs a destructor
https://bugs.webkit.org/show_bug.cgi?id=171334

Reviewed by Mark Lam.

Currently, if the bag is destructed any remaining nodes in the bag will
be leaked.

  • wtf/LocklessBag.h:

(WTF::LocklessBag::consumeAll):
(WTF::LocklessBag::~LocklessBag):

  • wtf/threads/Signals.cpp:

(WTF::jscSignalHandler):
(WTF::installSignalHandler):

11:28 AM Changeset in webkit [215817] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

[ARM] Enable GCC visibility
https://bugs.webkit.org/show_bug.cgi?id=171296

Patch by Don Olmstead <don.olmstead@am.sony.com> on 2017-04-26
Reviewed by Michael Catanzaro.

  • wtf/Platform.h:
11:22 AM Changeset in webkit [215816] by Antti Koivisto
  • 12 edits in trunk/Source

Enable expired-only reload policy on Mac and iOS
https://bugs.webkit.org/show_bug.cgi?id=171264
<rdar://problem/31807637>

Reviewed by Andreas Kling.

Source/WebCore:

Limit the behavior to http and data URLs (where we explicitly know about expiration).

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::setCSSStyleSheet):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::subresourceCachePolicy):

Pass the URL so we can test for protocol.

  • loader/FrameLoader.h:
  • loader/NavigationAction.cpp:

(WebCore::navigationType):

Test for reload navigation type correctly.

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::load):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::determineRevalidationPolicy):
(WebCore::CachedResourceLoader::cachePolicy):

  • loader/cache/CachedResourceLoader.h:

Source/WebKit2:

Enable the reload policy where only expired subresources are revalidated on Mac and iOS.
The behavor is enabled in Safari and for other clients based on SDK version check.

  • UIProcess/API/C/WKPage.cpp:

(WKPageReload):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView reload]):

  • UIProcess/Cocoa/VersionChecks.h:
11:17 AM Changeset in webkit [215815] by jmarcell@apple.com
  • 1 copy in tags/Safari-604.1.18.1

New tag.

11:14 AM Changeset in webkit [215814] by commit-queue@webkit.org
  • 4 edits in trunk

Response.blob() does not set the content-type based on the header value.
https://bugs.webkit.org/show_bug.cgi?id=170849

Patch by WebKit Contributor <webkitcontrib@gmail.com> on 2017-04-26
Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/response/response-consume-expected.txt:

Source/WebCore:

The Fetch API specification requires setting the blob contentType
using the Content-Type header value, if present. Previously the
FetchResponse class only called updateContentType() when first
created even though all the headers were not available. Call
updateContentType() again after the headers are populated.

This change allows WebKit to pass the "Consume response's body: from
fetch to blob" case in the WPT response-consume.html test.

Test: http://w3c-test.org/fetch/api/response/response-consume.html

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::BodyLoader::didReceiveResponse): Modified to
call FetchBodyOwner::updateContentType() after filling m_headers.

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

Removing Flaky timeout expectation for swipe/main-frame-pinning-requirement.html.
https://bugs.webkit.org/show_bug.cgi?id=161887

Patch by Matt Lewis <Matt Lewis> on 2017-04-26
Reviewed by Tim Horton.

  • platform/mac-wk2/TestExpectations:
11:03 AM Changeset in webkit [215812] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

Try to fix the macOS Sierra build.

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:
10:51 AM Changeset in webkit [215811] by aestes@apple.com
  • 16 edits in trunk/Source

[macOS] Add picture-in-picture support to WebPlaybackControlsManager
https://bugs.webkit.org/show_bug.cgi?id=171328
<rdar://problem/29875010>

Reviewed by Jer Noble.

Source/WebCore:

  • platform/cocoa/WebPlaybackSessionModel.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.h:
  • platform/cocoa/WebPlaybackSessionModelMediaElement.mm:

(WebCore::WebPlaybackSessionModelMediaElement::togglePictureInPicture): If the media element
is currently in PiP fullscreen mode, exit fullscreen. Otherwise, enter PiP fullscreen mode.

  • platform/mac/WebPlaybackControlsManager.h:
  • platform/mac/WebPlaybackControlsManager.mm:

(-[WebPlaybackControlsManager canTogglePictureInPicture]): Added. Returns YES if
-allowsPictureInPicturePlayback returns YES.
(-[WebPlaybackControlsManager togglePictureInPicture]): Added. Calls
WebPlaybackSessionModel::togglePictureInPicture().

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:

(WebCore::WebVideoFullscreenInterfaceMac::enterFullscreen): Added a call to
-[WebPlaybackControlsManager setPictureInPictureActive:YES].
(WebCore::WebVideoFullscreenInterfaceMac::exitFullscreen): Added a call to
-[WebPlaybackControlsManager setPictureInPictureActive:NO].
(WebCore::WebVideoFullscreenInterfaceMac::exitFullscreenWithoutAnimationToMode): Ditto.

  • platform/spi/cocoa/AVKitSPI.h: Declared new SPI on AVTouchBarPlaybackControlsControlling.

Source/WebKit2:

  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
  • UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:

(WebKit::WebPlaybackSessionModelContext::togglePictureInPicture): Added. Calls
WebPlaybackSessionManagerProxy::togglePictureAndPicture().
(WebKit::WebPlaybackSessionManagerProxy::togglePictureInPicture): Added. Sends
TogglePictureInPicture to WebPlaybackSessionManager.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateMediaTouchBar): Called
-[WebPlaybackControlsManager setAllowsPictureInPicturePlayback:YES] if
WebPreferences::allowsPictureInPictureMediaPlayback() is true.

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

(WebKit::WebPlaybackSessionManager::togglePictureInPicture): Added. Sets a
UserGestureIndicator and calls WebPlaybackSessionModel::togglePictureInPicture().

10:41 AM Changeset in webkit [215810] by caitp@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] fix RETURN_IF_EXCEPTION() placement in ownPropertyKeys()
https://bugs.webkit.org/show_bug.cgi?id=171330

Reviewed by Mark Lam.

Ensure RETURN_IF_EXCEPTION() following invokation of the
filterPropertyIfNeeded() lambda.

  • runtime/ObjectConstructor.cpp:

(JSC::ownPropertyKeys):

10:34 AM Changeset in webkit [215809] by dino@apple.com
  • 8 edits
    2 adds in trunk

[Color] Make gradients work with ExtendedColors
https://bugs.webkit.org/show_bug.cgi?id=171315
<rdar://problems/31830177>

Reviewed by Antoine Quint.

Source/WebCore:

Allow gradients to hold Color objects, and thus
handle ExtendedColor. Implement the backend for
CoreGraphics.

Test: css3/color/gradients.html

  • platform/graphics/Gradient.cpp:

(WebCore::Gradient::addColorStop): Just copy the Color now.
(WebCore::compareStops): Handle rename of stop to offset.
(WebCore::Gradient::hasAlpha): Use Color's helper.

  • platform/graphics/Gradient.h:

(WebCore::Gradient::ColorStop::ColorStop): Rename stop
to offset, and store a Color rather than four floating
point values.

  • platform/graphics/cairo/GradientCairo.cpp:

(WebCore::Gradient::platformGradient):

  • platform/graphics/cg/GradientCG.cpp:

(WebCore::Gradient::platformGradient): Use the CG method
that can handle CGColorRefs with ColorSpace values, and
pass the Extended sRGB space which should be no change for
all existing gradients but also handle ColorSpaces like
Display P3.

  • platform/graphics/win/GradientDirect2D.cpp:

(WebCore::Gradient::generateGradient):

  • svg/SVGGradientElement.cpp:

(WebCore::SVGGradientElement::buildStops):

LayoutTests:

Test for gradients using the color() syntax. Unfortunately,
due to rounding errors, we can't use a ref test for some
transparent colors, so comment them out for the moment.
These can be re-enabled when we can specify a tolerance
value for image comparison in the testing framework.

  • css3/color/gradients-expected.html: Added.
  • css3/color/gradients.html: Added.
10:22 AM Changeset in webkit [215808] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

WebKit calls AppKit NSCell API from a background queue
https://bugs.webkit.org/show_bug.cgi?id=171318
<rdar://problem/31798317>

Reviewed by Anders Carlsson.

  • UIProcess/mac/ServicesController.mm:

(WebKit::ServicesController::refreshExistingServices):
Synchronously bounce to the main thread to do non-thread-safe NSCell related work.

10:08 AM Changeset in webkit [215807] by achristensen@apple.com
  • 6 edits
    1 move in trunk

Encoded filename should be decoded for WKContentExtension.identifier
https://bugs.webkit.org/show_bug.cgi?id=171316

Reviewed by Andy Estes.

Source/WebCore:

  • platform/FileSystem.h:

Source/WebKit2:

  • UIProcess/API/APIContentExtensionStore.cpp:

(API::createExtension):
(API::ContentExtensionStore::lookupContentExtension):
(API::ContentExtensionStore::getAvailableContentExtensionIdentifiers):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/WKContentExtensionStore.mm: Copied from Tools/TestWebKitAPI/Tests/WebKit2Cocoa/WKUserContentExtensionStore.mm.

(TEST_F):

  • TestWebKitAPI/Tests/WebKit2Cocoa/WKUserContentExtensionStore.mm: Removed.
9:54 AM Changeset in webkit [215806] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix typo in RenderFrameBase
https://bugs.webkit.org/show_bug.cgi?id=171324

Patch by Frederic Wang <fwang@igalia.com> on 2017-04-26
Reviewed by Zalan Bujtas.

No new tests, behavior unchanged.

  • rendering/RenderFrameBase.cpp:

(WebCore::RenderFrameBase::layoutWithFlattening):
(WebCore::RenderFrameBase::performLayoutWithFlattening):
(WebCore::RenderFrameBase::peformLayoutWithFlattening): Deleted.

  • rendering/RenderFrameBase.h:
9:34 AM Changeset in webkit [215805] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Forced page break on :after triggers infinite loop in column balancing
https://bugs.webkit.org/show_bug.cgi?id=171309
rdar://problem/26285884

Reviewed by David Hyatt.

Source/WebCore:

Stop trying to balance the columns when the forced page breaks >= the number of
columns even when this number is 1. Content will always overflow to the next page.
see https://chromium.googlesource.com/chromium/src/+/fbbebf38cefb2712c912581eccb046ef363ec84e%5E%21/#F2

Test: fast/multicol/infinite-loop-when-forced-break.html

  • rendering/RenderMultiColumnSet.cpp:

(WebCore::RenderMultiColumnSet::calculateBalancedHeight):

LayoutTests:

  • fast/multicol/infinite-loop-when-forced-break-expected.txt: Added.
  • fast/multicol/infinite-loop-when-forced-break.html: Added.
9:24 AM Changeset in webkit [215804] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

Attempt to fix a PLT regression.

Unreviewed.

Disable async decoding for large images till the flickering bug wk170640
is fixed.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::shouldUseAsyncDecodingForLargeImages):

9:13 AM Changeset in webkit [215803] by Ryan Haddad
  • 4 edits
    6 deletes in trunk

Unreviewed, rolling out r215767.

The LayoutTest for this change is a flaky failure.

Reverted changeset:

"Restrict WebKit image formats to a known whitelist"
https://bugs.webkit.org/show_bug.cgi?id=170700
http://trac.webkit.org/changeset/215767

8:58 AM Changeset in webkit [215802] by hyatt@apple.com
  • 4 edits in trunk/Source/WebCore

Improve wavy underline rendering
https://bugs.webkit.org/show_bug.cgi?id=171281

Reviewed by Sam Weinig.

Change wavy underline rendering to use font size instead of stroke
thickness as a way to tune it. Cut the extra offset from 2 to 1.
Change the parameters to make the line flatter and to make the proportion
of the wave that renders underneath a glyph the same.

  • rendering/TextDecorationPainter.cpp:

(WebCore::strokeWavyTextDecoration):
(WebCore::TextDecorationPainter::paintTextDecoration):

  • style/InlineTextBoxStyle.cpp:

(WebCore::getWavyStrokeParameters):
(WebCore::visualOverflowForDecorations):

  • style/InlineTextBoxStyle.h:

(WebCore::wavyOffsetFromDecoration):

8:55 AM Changeset in webkit [215801] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

Move mediaCaptureEnabled from WKWebViewConfiguration to WKPreferences
https://bugs.webkit.org/show_bug.cgi?id=171294

Patch by Andrew Gold <agold@apple.com> on 2017-04-26
Reviewed by Eric Carlson.

Since we now want the ability to toggle this setting dynamically, I have
moved it from WKWebViewConfiguration to WKPreferences.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _mediaStreamEnabled]):
(-[WKPreferences _setMediaStreamEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]): No longer set mediaStream enabled from
the configuration.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _mediaStreamEnabled]): Deleted.
(-[WKWebViewConfiguration _setMediaStreamEnabled:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
8:34 AM Changeset in webkit [215800] by svillar@igalia.com
  • 8 edits in trunk

[css-grid] Remove most of the usage of SizingOperation
https://bugs.webkit.org/show_bug.cgi?id=171225

Reviewed by Darin Adler.

Source/WebCore:

SizingOperation was added as a way to modify the behaviour of the track sizing algorithm
with the specifics for intrinsic size computations. The problem is that although intrinsic
size computation does imply indefinite sizes, the opposite is not always true. For example,
a grid container with height:auto would compute the row sizes with an indefinite size but is
not part of the intrinsic size (preferred widths) computation.

That's why it was wrongly used in some parts of the current code, in most of the cases is
more than enough to check whether the available space is indefinite or not. In order to do
that we have to keep both available sizes (height & width) around all the time to properly
support orthogonal flows.

This change does not imply any change in behaviour.

  • rendering/GridTrackSizingAlgorithm.cpp:

(WebCore::GridTrackSizingAlgorithm::setAvailableSpace):
(WebCore::GridTrackSizingAlgorithm::computeTrackBasedSize):
(WebCore::GridTrackSizingAlgorithm::initialBaseSize):
(WebCore::GridTrackSizingAlgorithm::initialGrowthLimit):
(WebCore::GridTrackSizingAlgorithm::sizeTrackToFitNonSpanningItem):
(WebCore::GridTrackSizingAlgorithm::increaseSizesToAccommodateSpanningItems):
(WebCore::GridTrackSizingAlgorithm::assumedRowsSizeForOrthogonalChild):
(WebCore::GridTrackSizingAlgorithm::gridAreaBreadthForChild):
(WebCore::GridTrackSizingAlgorithm::gridTrackSize):
(WebCore::IndefiniteSizeStrategy::findUsedFlexFraction):
(WebCore::IndefiniteSizeStrategy::recomputeUsedFlexFractionIfNeeded):
(WebCore::GridTrackSizingAlgorithm::initializeTrackSizes):
(WebCore::GridTrackSizingAlgorithm::setup):
(WebCore::GridTrackSizingAlgorithm::reset):

  • rendering/GridTrackSizingAlgorithm.h:

(WebCore::GridTrackSizingAlgorithmStrategy::availableSpace):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::availableSpaceForGutters):
(WebCore::RenderGrid::computeTrackBasedLogicalHeight):
(WebCore::RenderGrid::computeTrackSizesForDefiniteSize):
(WebCore::RenderGrid::layoutBlock):
(WebCore::RenderGrid::gridGap):
(WebCore::RenderGrid::guttersSize):
(WebCore::RenderGrid::computeIntrinsicLogicalWidths):
(WebCore::RenderGrid::computeTrackSizesForIndefiniteSize):
(WebCore::RenderGrid::computeAutoRepeatTracksCount):
(WebCore::RenderGrid::placeItemsOnGrid):
(WebCore::RenderGrid::trackSizesForComputedStyle):
(WebCore::RenderGrid::applyStretchAlignmentToTracksIfNeeded):
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
(WebCore::RenderGrid::populateGridPositionsForDirection):
(WebCore::RenderGrid::columnAxisOffsetForChild):
(WebCore::RenderGrid::rowAxisOffsetForChild):
(WebCore::RenderGrid::gridGapForDirection): Deleted.

  • rendering/RenderGrid.h:

LayoutTests:

Added a new test case which was working correctly but that was not properly tested before.

  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows-expected.txt:
  • fast/css-grid-layout/grid-track-sizing-with-percentages-and-orthogonal-flows.html:
7:56 AM Changeset in webkit [215799] by caitp@igalia.com
  • 5 edits in trunk

[JSC] Object.keys() must discard property names with no PropertyDescriptor
https://bugs.webkit.org/show_bug.cgi?id=171291

Reviewed by Yusuke Suzuki.

JSTests:

  • es6/Proxy_ownKeys_duplicates.js:
  • stress/proxy-own-keys.js:

(let.handler.getOwnPropertyDescriptor):
(let.handler.ownKeys):

Source/JavaScriptCore:

Proxy objects can produce an arbitrary list of property names from the
"ownKeys" trap, however the Object.keys() algorithm is required to
discard names which do not have a PropertyDescriptor. This also
applies to other uses of the EnumerableOwnProperties() algorithm
(https://tc39.github.io/ecma262/#sec-enumerableownproperties)

Related to https://bugs.chromium.org/p/v8/issues/detail?id=6290

  • runtime/ObjectConstructor.cpp:

(JSC::ownPropertyKeys):

6:34 AM Changeset in webkit [215798] by Yusuke Suzuki
  • 3 edits in trunk/Source/WTF

sendMessageScoped's signal handler calls LocklessBag::consumeAll, which causes heap deallocation in signal handler and leads deadlock
https://bugs.webkit.org/show_bug.cgi?id=171319

Reviewed by Keith Miller.

In sendMessageScoped, we call LocklessBag<SignalHandler>::consumeAll thread->threadMessages().consumeAll().
In LocklessBag::consumeAll, we call delete on Nodes.
The problem is that this is called under the context of signal handler. Thus, when calling this, the original
thread may hold the lock in bmalloc. In that case, this delete call attempts to lock the heap lock recursively,
and causes deadlock.

Instead, this patch transfers the LocklessBag's Node to the sender thread. And the sender thread deletes it instead.

  • wtf/LocklessBag.h:

(WTF::LocklessBag::consumeAllWithNode):

  • wtf/ThreadMessage.cpp:

(WTF::ThreadMessageData::ThreadMessageData):
(WTF::sendMessageScoped):

1:50 AM Changeset in webkit [215797] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove Document::*FrameElementsShouldIgnoreScrolling
https://bugs.webkit.org/show_bug.cgi?id=171271

Patch by Frederic Wang <fwang@igalia.com> on 2017-04-26
Reviewed by Chris Dumez.

setFrameElementsShouldIgnoreScrolling and frameElementsShouldIgnoreScrolling were
introduced bug 23072 in order to work around a bug in the Dictionary application.
However, this was removed in bug 132095 and hence the functions are no longer necessary.

No new tests.

  • dom/Document.h:

(WebCore::Document::setFrameElementsShouldIgnoreScrolling): Deleted.
(WebCore::Document::frameElementsShouldIgnoreScrolling): Deleted.

  • html/HTMLFrameElementBase.cpp:

(WebCore::HTMLFrameElementBase::parseAttribute):

12:40 AM Changeset in webkit [215796] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[GCrypt] CryptoKeyRSA: implement create(), keySizeInBits(), buildAlgorithm(), exportData()
https://bugs.webkit.org/show_bug.cgi?id=171213

Reviewed by Michael Catanzaro.

CryptoKeyRSA::create() validates the specified key type along with the
provided data. If everything is OK, it then proceeds to build the key
of the appropriate type through an s-expression that is constructed with
the necessary data. We don't currently support creating private keys
with any additional prime information (apart from p and q).

CryptoKeyRSA::keySizeInBits() calls the helper getRSAModulusLength()
function that find the modulus MPI in the key s-expression and returns
the modulus data length in bits.

CryptoKeyRSA::buildAlgorithm() returns KeyAlgorithm that's constructed
from the appropriate name, this key's modulus length, and this key's
public exponent data. It also specifies the hash if there is such a
restriction for this key.

CryptoKeyRSA::exportData() returns a properly-constructed
CryptoKeyDataRSAComponents object. The public modulus and exponent are
used in case the key is public. If the key is private, the secret
exponent and the p and q prime numbers are retrieved in MPI format.
They're then used to calculate the dp, dq and qi parameters that are
exported in the JWK format. Note that libgcrypt internally switches
the p and q prime numbers such that p < q, but the Web Crypto
specification and the dependant RFCs expect that q < p. We address
this by simply switching the roles of the two primes and follow the
usual q < p assumption when exporting the primes and computing the
dependant exponents and coefficients.

No new tests -- existing ones cover this but don't work yet due to missing
RSA-related CryptoAlgorithm implementations.

  • crypto/gcrypt/CryptoKeyRSAGCrypt.cpp:

(WebCore::getRSAModulusLength):
(WebCore::getParameterMPIData):
(WebCore::getRSAKeyParameter):
(WebCore::CryptoKeyRSA::create):
(WebCore::CryptoKeyRSA::keySizeInBits):
(WebCore::CryptoKeyRSA::buildAlgorithm):
(WebCore::CryptoKeyRSA::exportData):

Note: See TracTimeline for information about the timeline view.