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

Timeline



Apr 6, 2016:

10:19 PM Changeset in webkit [199150] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

REGRESSION (r188591): thingiverse.com direct messaging UI is not rendered properly
​https://bugs.webkit.org/show_bug.cgi?id=156241
<rdar://problem/25262213>

Reviewed by Simon Fraser.

Source/WebCore:

When creating a CoreText font with a size of 0, the CoreText docs say that it will
interpret this as a missing argument, and create a font of size 12 instead. However,
this doesn't cause a problem (at least on this particular website) because we will
use CGFontGetGlyphAdvancesForStyle(), which gets scaled by the supplied font
size (which is 0). However, if you turn on text-rendering: optimizeLegibility, we
will use CTFontGetAdvancesForGlyphs() instead, which does not scale by the font size.
The solution is to detect this case, and force the advance to 0.

Test: fast/text/zero-sized-fonts.html

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformWidthForGlyph):

LayoutTests:

  • fast/text/zero-sized-fonts-expected.txt: Added.
  • fast/text/zero-sized-fonts.html: Added.
9:59 PM Changeset in webkit [199149] by mmaxfield@apple.com
  • 7 edits in trunk/Source/WebCore

Rename MidpointState to WhitespaceCollapsingState
​https://bugs.webkit.org/show_bug.cgi?id=156304

Reviewed by David Hyatt.

MidpointState has nothing to do with midpoints.

An individual midpoint is now known as a "whitespace collapsing transition."

No new tests because there is no behavior change.

  • platform/text/BidiResolver.h:

(WebCore::WhitespaceCollapsingState::reset): (See addMidpoint() below.)
Previously, we were using operator= to destroy old Iterators when their
storage inside the Vector was reused. Now that we are elliminating
m_numMidpoints, we can push destruction earlier to this reset() function.
Because the same amount of destruction happens in both cases, this doesn't
add additional work. (Vector can destroy its contents without shrinking
its storage overcommitment.)
(WebCore::WhitespaceCollapsingState::startIgnoringSpaces):
(WebCore::WhitespaceCollapsingState::stopIgnoringSpaces):
(WebCore::WhitespaceCollapsingState::ensureLineBoxInsideIgnoredSpaces):
(WebCore::WhitespaceCollapsingState::decrementTransitionAt):
(WebCore::WhitespaceCollapsingState::thresholds): Make the return value
const. The only clients of this function which needed mutation were
migrated to using decrementTransitionAt().
(WebCore::WhitespaceCollapsingState::numTransitions):
(WebCore::WhitespaceCollapsingState::currentTransition):
(WebCore::WhitespaceCollapsingState::setCurrentTransition):
(WebCore::WhitespaceCollapsingState::incrementCurrentTransition):
(WebCore::WhitespaceCollapsingState::decrementNumTransitions):
(WebCore::WhitespaceCollapsingState::betweenTransitions):
(WebCore::BidiResolverBase::whitespaceCollapsingState):
(WebCore::Subclass>::setWhitespaceCollapsingTransitionForIsolatedRun):
(WebCore::Subclass>::whitespaceCollapsingTransitionForIsolatedRun):
(WebCore::MidpointState::MidpointState): Deleted.
(WebCore::MidpointState::reset): Deleted.
(WebCore::MidpointState::startIgnoringSpaces): Deleted.
(WebCore::MidpointState::stopIgnoringSpaces): Deleted.
(WebCore::MidpointState::ensureLineBoxInsideIgnoredSpaces): Deleted.
(WebCore::MidpointState::midpoints): Deleted.
(WebCore::MidpointState::numMidpoints): Deleted.
(WebCore::MidpointState::currentMidpoint): Deleted.
(WebCore::MidpointState::setCurrentMidpoint): Deleted.
(WebCore::MidpointState::incrementCurrentMidpoint): Deleted.
(WebCore::MidpointState::decrementNumMidpoints): Deleted.
(WebCore::MidpointState::betweenMidpoints): Deleted.
(WebCore::MidpointState::addMidpoint): Deleted. This code has been around for 13
years (since r3672) where it was using QMemArray. That class doesn't have an
append() class, so it was implemented inside this function. Luckily, Vector
already overcommits its allocation, so we can elliminate m_numMidpoints entirely.
(WebCore::BidiResolverBase::midpointState): Deleted.
(WebCore::Subclass>::setMidpointForIsolatedRun): Deleted.
(WebCore::Subclass>::midpointForIsolatedRun): Deleted.

  • rendering/InlineIterator.h:

(WebCore::addPlaceholderRunForIsolatedInline):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::appendRunsForObject):
(WebCore::setUpResolverToResumeInIsolate):
(WebCore::constructBidiRunsForSegment):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::BreakingContext):
(WebCore::BreakingContext::handleBR):
(WebCore::BreakingContext::handleOutOfFlowPositioned):
(WebCore::shouldSkipWhitespaceAfterStartObject):
(WebCore::BreakingContext::handleEmptyInline):
(WebCore::BreakingContext::handleReplaced):
(WebCore::ensureCharacterGetsLineBox):
(WebCore::BreakingContext::handleText):
(WebCore::checkWhitespaceCollapsingTransitions):
(WebCore::BreakingContext::handleEndOfLine):
(WebCore::checkMidpoints): Deleted.

  • rendering/line/TrailingObjects.cpp:

(WebCore::TrailingObjects::updateWhitespaceCollapsingTransitionsForTrailingBoxes):
(WebCore::TrailingObjects::updateMidpointsForTrailingBoxes): Deleted.

  • rendering/line/TrailingObjects.h:

(WebCore::TrailingObjects::appendBoxIfNeeded):

9:33 PM Changeset in webkit [199148] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] UInt32ToNumber should be NodeMustGenerate
​https://bugs.webkit.org/show_bug.cgi?id=156329

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-04-06
Reviewed by Filip Pizlo.

It exits on negative numbers on the integer path.

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNodeType.h:
9:11 PM Changeset in webkit [199147] by ChangSeok Oh
  • 2 edits in trunk/Tools

Unreviewed, Update my primary email address and expertise.

  • Scripts/webkitpy/common/config/contributors.json:
8:57 PM Changeset in webkit [199146] by jonlee@apple.com
  • 3 edits in trunk/Tools

Update the Animometer patch and plan files
​https://bugs.webkit.org/show_bug.cgi?id=156263

Reviewed by Ryosuke Niwa.

Measure the latest set of tests by updating the plan revision to r199134.

  • Scripts/webkitpy/benchmark_runner/data/patches/Animometer.patch: Update to run the master suite only.
  • Scripts/webkitpy/benchmark_runner/data/plans/animometer.plan: Update to use the release page instead

of the developer page.

8:33 PM Changeset in webkit [199145] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

2016-04-04 Geoffrey Garen <​ggaren@apple.com>

Unreviewed, rolling out r199016.
​https://bugs.webkit.org/show_bug.cgi?id=156140

"Perf bots are down, so I can't re-land this right now."

Reverted changeset:

CopiedBlock should be 16kB
​https://bugs.webkit.org/show_bug.cgi?id=156168
​http://trac.webkit.org/changeset/199016

8:17 PM Changeset in webkit [199144] by mark.lam@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

String.prototype.match() should be calling internal function RegExpCreate.
​https://bugs.webkit.org/show_bug.cgi?id=156318

Reviewed by Filip Pizlo.

RegExpCreate is not the same as the RegExp constructor. The current implementation
invokes new @RegExp which calls the constructor. This results in failures in
es6/Proxy_internal_get_calls_String.prototype.match.js, and
es6/Proxy_internal_get_calls_String.prototype.search.js due to observable side
effects.

This patch fixes this by factoring out the part of the RegExp constructor that
makes the RegExpCreate function, and changing String's match and search to call
RegExpCreate instead in accordance with the ES6 spec.

  • builtins/StringPrototype.js:

(match):
(search):

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

(JSC::JSGlobalObject::init):

  • runtime/RegExpConstructor.cpp:

(JSC::toFlags):
(JSC::regExpCreate):
(JSC::constructRegExp):
(JSC::esSpecRegExpCreate):
(JSC::constructWithRegExpConstructor):

  • runtime/RegExpConstructor.h:

(JSC::isRegExp):

8:06 PM WebKitGTK/2.10.x edited by jdiggs@igalia.com
Create 2.10.10 section and add accessibility crasher bug (diff)
8:03 PM WebKitGTK/2.12.x edited by jdiggs@igalia.com
(diff)
7:09 PM Changeset in webkit [199143] by Matt Baker
  • 8 edits
    5 adds in trunk

Web Inspector: Improve filtering in OpenResourceDialog
​https://bugs.webkit.org/show_bug.cgi?id=155324
<rdar://problem/25094504>

Source/WebInspectorUI:

Reviewed by Joseph Pecoraro and Timothy Hatcher.

  • UserInterface/Base/Utilities.js:

(value):
Added String methods isLowerCase, isUpperCase, removeWhitespace.

  • UserInterface/Controllers/ResourceQueryController.js: Added.

(WebInspector.ResourceQueryController):
(WebInspector.ResourceQueryController.prototype.addResource):
(WebInspector.ResourceQueryController.prototype.removeResource):
Add and remove the resources to be queried.

(WebInspector.ResourceQueryController.prototype.reset):
Reset controller state. Current just clears resources.

(WebInspector.ResourceQueryController.prototype.executeQuery):
Executes a query against the list of resources and returns a list of
QueryResult objects, with at most one result per resource, ordered by
descending rank.

The query string is stripped of whitespace characters and lowercased
before use. Prior to running the query, resources undergo a one-time
pre-processing step to locate special characters.

(WebInspector.ResourceQueryController.prototype._findQueryMatches.pushMatch):
(WebInspector.ResourceQueryController.prototype._findQueryMatches.matchNextSpecialCharacter):
(WebInspector.ResourceQueryController.prototype._findQueryMatches.backtrack):
(WebInspector.ResourceQueryController.prototype._findQueryMatches):
Returns a list of query matches for a single resource, along with metadata
which is used to rank the matches. The algorithm attempts to match the
entire query, first comparing each query character against "special" characters
in the resource (commonly used filename separators, the first character,
and camel-case word boundaries).

If there are remaining query characters after exhausting special characters,
regular characters are matched starting from the last matched special
character. Failing that, the algorithm attempts to find a match by backtracking.
To backtrack, the last match is discarded and the query position decremented.
If a special match is now the last match, matching starts again from the
next character in the filename after the match. If a normal match is now
the last match, keep discarding until a special match is found or no matches
remain. The query fails if no matches remain. For example, consider:

Query: "abcd"
Filename: "AxBcdCx"

The capital A, B, and C are all special characters, and are successfully
matched with the first three query characters. Having exhausted the special
characters the "d" at the end of the query is compared with the "x" at
the end of the filename, and fails to match. Backtracking then kicks in.
The last match, "C", is discarded and the search position in the query
decremented. The search resumes after the next to last match, "B", and now
matches the non-special characters "cd", yielding the following: "A Bcd ".

(WebInspector.ResourceQueryController.prototype._findSpecialCharacterIndices):
Pre-processing step for resources. Locates the positions of special
characters in the resource filename. Special characters are defined as:

  1. The first character
  2. Common filename separators, and the character immediately following.
  3. A capital letter that follows a lowercase character.
  • UserInterface/Models/ResourceQueryMatch.js: Added.

Helper class used internally by the controller and QueryResult classes.
(WebInspector.ResourceQueryMatch):
(WebInspector.ResourceQueryMatch.prototype.get type):
(WebInspector.ResourceQueryMatch.prototype.get index):
(WebInspector.ResourceQueryMatch.prototype.get queryIndex):

  • UserInterface/Models/ResourceQueryResult.js: Added.

Holds a resource that matched the executed query.
(WebInspector.ResourceQueryResult):
(WebInspector.ResourceQueryResult.prototype.get resource):
(WebInspector.ResourceQueryResult.prototype.get rank):
Ranking relative to other results returned by the query. Used by
the ResourceQueryController to sort results.

(WebInspector.ResourceQueryResult.prototype.get matchingTextRanges):
Get TextRanges for matching substrings in the resource display name.

(WebInspector.ResourceQueryResult.prototype._calculateRank):
Calculate the rank of the result. Matches are scored based on the type
of match (Special vs. Normal), the location of the match within the filename
(matches closer to the beginning are scored higher), and whether the match
is adjacent to the previous match.

Values assigned to each ranking criteria are somewhat arbitrary, and may
be fine-tuned over time to produce better results.

(WebInspector.ResourceQueryResult.prototype._createMatchingTextRanges):
(WebInspector.ResourceQueryResult.prototype.test_createMatchesMask):
Test API for visualizing matches. For a result returned from the query
"abce", run against a filename "abcde", the mask is "a c e".

  • UserInterface/Main.html:
  • UserInterface/Test.html:

New files.

  • UserInterface/Views/Dialog.js:

(WebInspector.Dialog.prototype.dismiss):
(WebInspector.Dialog.prototype.didDismissDialog):
Add hook for subclasses to perform actions after on dialog dismissal.

  • UserInterface/Views/OpenResourceDialog.js:

(WebInspector.OpenResourceDialog):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createHighlightedTitleFragment):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
Add tree elements for each QueryResult returned by the last query, creating
titles with contiguous matching query characters wrapped in highlight spans.

(WebInspector.OpenResourceDialog.prototype.didDismissDialog):
Clear resources from the ResourceQueryController.
(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
Add resources to the ResourceQueryController.
(WebInspector.OpenResourceDialog.prototype._updateFilter):
Execute the filter text as a resource query.

  • UserInterface/Views/TreeOutline.css:

(.tree-outline.large .item .titles): Deleted.
Line height too small, hid the bottom border of highlighted matches in
tree element title spans. Removing the style had no negative visual impact
on the Quick Open or Timelines tree outlines (the only "large" trees).

LayoutTests:

Reviewed by Joseph Pecoraro.

Add test coverage for ResourceQueryController.

  • inspector/unit-tests/resource-query-controller-expected.txt: Added.
  • inspector/unit-tests/resource-query-controller.html: Added.
7:07 PM Changeset in webkit [199142] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebCore

Remove duplicated parsePortFromStringPosition()
​https://bugs.webkit.org/show_bug.cgi?id=156289

Reviewed by Simon Fraser.

Same parsePortFromStringPosition() functions have been defined in both URLUtils.h and HTMLAnchorElement.cpp.
Remove duplicated one in HTMLAnchorElement.cpp.

No new tests, no behavior change.

  • html/HTMLAnchorElement.cpp:

(WebCore::parsePortFromStringPosition): Deleted.

7:05 PM Changeset in webkit [199141] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, uncomment accidentally commented line in test.

  • tests/stress/array-concat-spread-object.js:
7:02 PM Changeset in webkit [199140] by fpizlo@apple.com
  • 9 edits
    2 adds in trunk/Source

JSC should have a simple way of gathering IC statistics
​https://bugs.webkit.org/show_bug.cgi?id=156317

Reviewed by Benjamin Poulain.
Source/JavaScriptCore:

This adds a cheap, runtime-enabled way of gathering statistics about why we take the slow
paths for inline caches. This is complementary to our existing bytecode profiler. Eventually
we may want to combine the two things.

This is not a slow-down on anything because we only do extra work on IC slow paths and if
it's disabled it's just a load-and-branch to skip the stats gathering code.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • jit/ICStats.cpp: Added.
  • jit/ICStats.h: Added.
  • jit/JITOperations.cpp:
  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::inherits):
(JSC::JSValue::classInfoOrNull):
(JSC::JSValue::toThis):

  • runtime/Options.h:

Source/WTF:


Make it easier to do relative sleeping on a condition. Previously you could do this using
std::chrono. I now believe that std::chrono is just a bad decision, and I always want to
use doubles instead. This makes it easier to do the right thing and use doubles.

  • wtf/Condition.h:

(WTF::ConditionBase::waitUntilMonotonicClockSeconds):
(WTF::ConditionBase::waitForSeconds):

6:59 PM Changeset in webkit [199139] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.27/Source/WTF

Merged r199133. rdar://problem/25587476

6:58 PM Changeset in webkit [199138] by bshafiei@apple.com
  • 6 edits in tags/Safari-602.1.27/Source

Merged r199130. rdar://problem/25587476

6:56 PM Changeset in webkit [199137] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

6:54 PM Changeset in webkit [199136] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.27

New tag.

6:50 PM Changeset in webkit [199135] by sbarati@apple.com
  • 4 edits in trunk

jsc-layout-tests.yaml/js/script-tests/regress-141098.js failing on Yosemite Debug after r198989
​https://bugs.webkit.org/show_bug.cgi?id=156187

Reviewed by Keith Miller.

Tools:

  • Scripts/run-jsc-stress-tests:

LayoutTests:

  • js/script-tests/regress-141098.js:
6:47 PM Changeset in webkit [199134] by jonlee@apple.com
  • 4 edits
    2 moves
    2 adds in trunk/PerformanceTests

Update master benchmark with SVG test
​https://bugs.webkit.org/show_bug.cgi?id=156273

Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.

Switch masks tests for SVG path test.

  • Animometer/resources/debug-runner/tests.js: Move mask test here.
  • Animometer/resources/runner/tests.js: Add SVG test here.
  • Animometer/tests/dom/particles.html: Renamed from PerformanceTests/Animometer/tests/master/particles.html.
  • Animometer/tests/dom/resources/dom-particles.js: Renamed from PerformanceTests/Animometer/tests/master/resources/dom-particles.js.
  • Animometer/tests/master/resources/particles.js: Add minPosition for bounds checking. Prevents particle from being

partially obscured.

  • Animometer/tests/master/resources/svg-particles.js: Added.

(Particle): The particle is either a path object or a rect using a path as a clip. The
same path is used either way. For each particle create a linear gradient with a random
rotation.
(SVGParticlesStage): Look in #shapes to see how many different kinds of paths are available.
This makes the test more generic in case other shapes need to be tested.

  • Animometer/tests/master/svg-particles.html: Added. Have two defs, one that houses each

particle's gradient, and one that holds the shape templates.

6:46 PM Changeset in webkit [199133] by Simon Fraser
  • 2 edits in trunk/Source/WTF

Fix Windows build by converting clampToInteger() into a template that only
takes integral types.

  • wtf/MathExtras.h:

(clampToInteger):

6:45 PM WebKitGTK/Gardening/Calendar edited by Michael Catanzaro
(diff)
6:44 PM Changeset in webkit [199132] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

32-bit JSC stress/multi-put-by-offset-multiple-transitions.js failing
​https://bugs.webkit.org/show_bug.cgi?id=156292

Reviewed by Benjamin Poulain.

Make sure that we stash the callsite index before calling operationReallocateStorageAndFinishPut.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generate):

6:42 PM Changeset in webkit [199131] by Michael Catanzaro
  • 91 edits
    2 adds in trunk/LayoutTests

[GTK] Belatedly rebaseline several test expectations after r196244

Unreviewed

  • platform/gtk/css3/unicode-bidi-isolate-basic-expected.txt:
  • platform/gtk/fast/block/positioning/auto/vertical-rl/007-expected.txt:
  • platform/gtk/fast/block/positioning/vertical-rl/fixed-positioning-expected.txt:
  • platform/gtk/fast/borders/border-antialiasing-expected.txt:
  • platform/gtk/fast/clip/001-expected.txt:
  • platform/gtk/fast/clip/013-expected.txt:
  • platform/gtk/fast/clip/014-expected.txt:
  • platform/gtk/fast/clip/016-expected.txt:
  • platform/gtk/fast/clip/outline-overflowClip-expected.txt:
  • platform/gtk/fast/css/clip-zooming-expected.txt:
  • platform/gtk/fast/forms/validation-message-appearance-expected.txt:
  • platform/gtk/fast/line-grid/line-grid-inside-columns-expected.txt:
  • platform/gtk/fast/line-grid/line-grid-into-columns-expected.txt:
  • platform/gtk/fast/lists/scrolled-marker-paint-expected.txt:
  • platform/gtk/fast/multicol/client-rects-expected.txt:
  • platform/gtk/fast/multicol/column-break-with-balancing-expected.txt:
  • platform/gtk/fast/multicol/column-rules-expected.txt:
  • platform/gtk/fast/multicol/column-rules-stacking-expected.txt:
  • platform/gtk/fast/multicol/columns-shorthand-parsing-expected.txt:
  • platform/gtk/fast/multicol/float-paginate-complex-expected.txt:
  • platform/gtk/fast/multicol/float-paginate-empty-lines-expected.txt:
  • platform/gtk/fast/multicol/float-paginate-expected.txt:
  • platform/gtk/fast/multicol/layers-in-multicol-expected.txt:
  • platform/gtk/fast/multicol/layers-split-across-columns-expected.txt:
  • platform/gtk/fast/multicol/max-height-columns-block-expected.txt:
  • platform/gtk/fast/multicol/nested-columns-expected.txt:
  • platform/gtk/fast/multicol/newmulticol/client-rects-expected.txt:
  • platform/gtk/fast/multicol/overflow-across-columns-expected.txt:
  • platform/gtk/fast/multicol/overflow-across-columns-percent-height-expected.txt:
  • platform/gtk/fast/multicol/overflow-unsplittable-expected.txt:
  • platform/gtk/fast/multicol/paginate-block-replaced-expected.txt:
  • platform/gtk/fast/multicol/pagination/BottomToTop-bt-expected.txt:
  • platform/gtk/fast/multicol/pagination/BottomToTop-lr-expected.txt:
  • platform/gtk/fast/multicol/pagination/BottomToTop-rl-expected.txt:
  • platform/gtk/fast/multicol/pagination/BottomToTop-tb-expected.txt:
  • platform/gtk/fast/multicol/pagination/LeftToRight-bt-expected.txt:
  • platform/gtk/fast/multicol/pagination/LeftToRight-rl-expected.txt:
  • platform/gtk/fast/multicol/pagination/LeftToRight-tb-expected.txt:
  • platform/gtk/fast/multicol/pagination/RightToLeft-bt-expected.txt:
  • platform/gtk/fast/multicol/pagination/RightToLeft-lr-expected.txt:
  • platform/gtk/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt:
  • platform/gtk/fast/multicol/pagination/RightToLeft-rl-expected.txt:
  • platform/gtk/fast/multicol/pagination/RightToLeft-tb-expected.txt:
  • platform/gtk/fast/multicol/pagination/TopToBottom-bt-expected.txt:
  • platform/gtk/fast/multicol/pagination/TopToBottom-lr-expected.txt:
  • platform/gtk/fast/multicol/pagination/TopToBottom-rl-expected.txt:
  • platform/gtk/fast/multicol/positive-leading-expected.txt:
  • platform/gtk/fast/multicol/scrolling-column-rules-expected.txt:
  • platform/gtk/fast/multicol/span/anonymous-style-inheritance-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-immediate-child-complex-splitting-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-immediate-child-property-removal-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-immediate-columns-child-removal-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-nested-columns-child-dynamic-expected.txt:
  • platform/gtk/fast/multicol/span/span-as-nested-columns-child-expected.txt:
  • platform/gtk/fast/multicol/span/span-margin-collapsing-expected.txt:
  • platform/gtk/fast/multicol/table-vertical-align-expected.txt:
  • platform/gtk/fast/multicol/tall-image-behavior-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/column-break-with-balancing-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/column-rules-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/float-multicol-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/float-paginate-complex-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/float-paginate-expected.txt:
  • platform/gtk/fast/multicol/vertical-lr/nested-columns-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/column-rules-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/float-multicol-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/float-paginate-complex-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/float-paginate-expected.txt:
  • platform/gtk/fast/multicol/vertical-rl/nested-columns-expected.txt:
  • platform/gtk/fast/overflow/clip-rects-fixed-ancestor-expected.txt:
  • platform/gtk/fast/overflow/float-in-relpositioned-expected.txt:
  • platform/gtk/fast/overflow/overflow-auto-position-absolute-expected.txt:
  • platform/gtk/fast/overflow/overflow-rtl-expected.txt:
  • platform/gtk/fast/overflow/paged-x-div-expected.txt:
  • platform/gtk/fast/overflow/paged-x-div-with-column-gap-expected.txt:
  • platform/gtk/fast/overflow/paged-x-on-root-expected.txt:
  • platform/gtk/fast/overflow/paged-x-with-column-gap-expected.txt:
  • platform/gtk/fast/overflow/paged-y-div-expected.txt:
  • platform/gtk/fast/overflow/scroll-nested-positioned-layer-in-overflow-expected.txt:
  • platform/gtk/fast/regions/repaint/region-painting-via-layout-expected.txt:
  • platform/gtk/fast/repaint/box-shadow-h-expected.txt:
  • platform/gtk/fast/repaint/box-shadow-v-expected.txt:
  • platform/gtk/fast/repaint/layer-outline-expected.txt:
  • platform/gtk/fast/repaint/layer-outline-horizontal-expected.txt:
  • platform/gtk/fast/table/edge-offsets-expected.txt:
  • platform/gtk/fast/transforms/overflow-with-transform-expected.txt:
  • platform/gtk/fast/transforms/rotated-transform-affects-scrolling-1-expected.txt: Added.
  • platform/gtk/fast/transforms/rotated-transform-affects-scrolling-2-expected.txt: Added.
  • platform/gtk/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
  • platform/gtk/scrollbars/scrollbars-on-positioned-content-expected.txt:
  • platform/gtk/svg/custom/getscreenctm-in-scrollable-div-area-nested-expected.txt:
  • platform/gtk/svg/custom/image-rescale-clip-expected.txt:
6:20 PM Changeset in webkit [199130] by Simon Fraser
  • 6 edits in trunk/Source

Page tiles are missing when graphics acceleration is unavailable
​https://bugs.webkit.org/show_bug.cgi?id=156325
Source/WebCore:

rdar://problem/25587476

Reviewed by Tim Horton.

When graphics acceleration is unavailable on Mac (e.g. in a VM or when running from
the recovery partition), page contents were missing. This is because
IOSurfaceGetPropertyMaximum(kIOSurfaceWidth) and IOSurfaceGetPropertyMaximum(kIOSurfaceHeight)
returned INT_MAX, causing us to compute a tile size of 0x0.

Fix by changing IOSurface::maximumSize() to report a value between 1K x 1K and 32K x 32K.

Rename kGiantTileSize to better describe its purpose.

Add correct clamping in IOSurface::maximumSize().

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::tileSize):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/cocoa/IOSurface.mm:

(IOSurface::maximumSize):

Source/WTF:

Reviewed by Tim Horton.

Add clampToInteger(size_t).

  • wtf/MathExtras.h:

(clampToInteger):

6:11 PM Changeset in webkit [199129] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

JSC test stress/arrowfunction-lexical-bind-superproperty.js failing
​https://bugs.webkit.org/show_bug.cgi?id=156309

Reviewed by Saam Barati.

Just be honest about the fact that the ArgumentCount and Callee parts of inline callframe runtime
meta-data can be read at any time.

We only have to say this for the inline callframe forms of ArgumentCount and Callee because we don't
sink any part of the machine prologue. This change just prevents us from sinking the pseudoprologue
of inlined varargs or closure calls.

Shockingly, this is not a regression on anything.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

5:50 PM Changeset in webkit [199128] by keith_miller@apple.com
  • 42 edits
    5 adds in trunk

[ES6] Add support for Symbol.isConcatSpreadable.
​https://bugs.webkit.org/show_bug.cgi?id=155351

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch adds support for Symbol.isConcatSpreadable. In order to do so it was necessary to move the
Array.prototype.concat function to JS. A number of different optimizations were needed to make such the move to
a builtin performant. First, four new DFG intrinsics were added.

1) IsArrayObject (I would have called it IsArray but we use the same name for an IndexingType): an intrinsic of

the Array.isArray function.

2) IsJSArray: checks the first child is a JSArray object.
3) IsArrayConstructor: checks the first child is an instance of ArrayConstructor.
4) CallObjectConstructor: an intrinsic of the Object constructor.

IsActualObject, IsJSArray, and CallObjectConstructor can all be converted into constants in the abstract interpreter if
we are able to prove that the first child is an Array or for ToObject an Object.

In order to further improve the perfomance we also now cover more indexing types in our fast path memcpy
code. Before we would only memcpy Arrays if they had the same indexing type and did not have Array storage and
were not undecided. Now the memcpy code covers the following additional two cases: One array is undecided and
the other is a non-array storage and the case where one array is Int32 and the other is contiguous (we map this
into a contiguous array).

This patch also adds a new fast path for concat with more than one array argument by using memcpy to append
values onto the result array. This works roughly the same as the two array fast path using the same methodology
to decide if we can memcpy the other butterfly into the result butterfly.

Two new debugging tools are also added to the jsc cli. One is a version of the print function with a private
name so it can be used for debugging builtins. The other is dumpDataLog, which takes a JSValue and runs our
dataLog function on it.

Finally, this patch add a new constructor to JSValueRegsTemporary that allows it to reuse the the registers of a
JSValueOperand if the operand's use count is one.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/ArrayPrototype.js:

(concatSlowPath):
(concat):

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileIsJSArray):
(JSC::DFG::SpeculativeJIT::compileIsArrayObject):
(JSC::DFG::SpeculativeJIT::compileIsArrayConstructor):
(JSC::DFG::SpeculativeJIT::compileCallObjectConstructor):

  • 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::compileCallObjectConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileIsArrayObject):
(JSC::FTL::DFG::LowerDFGToB3::compileIsJSArray):
(JSC::FTL::DFG::LowerDFGToB3::compileIsArrayConstructor):
(JSC::FTL::DFG::LowerDFGToB3::isArray):

  • jit/JITOperations.h:
  • jsc.cpp:

(WTF::RuntimeArray::createStructure):
(GlobalObject::finishCreation):
(functionDebug):
(functionDataLogValue):

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayConstructor.h:

(JSC::isArrayConstructor):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):
(JSC::arrayProtoPrivateFuncIsJSArray):
(JSC::moveElements):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
(JSC::arrayProtoPrivateFuncAppendMemcpy):
(JSC::arrayProtoFuncConcat): Deleted.

  • runtime/ArrayPrototype.h:

(JSC::ArrayPrototype::createStructure):

  • runtime/CommonIdentifiers.h:
  • runtime/Intrinsic.h:
  • runtime/JSArray.cpp:

(JSC::JSArray::appendMemcpy):
(JSC::JSArray::fastConcatWith): Deleted.

  • runtime/JSArray.h:

(JSC::JSArray::createStructure):
(JSC::JSArray::fastConcatType): Deleted.

  • runtime/JSArrayInlines.h: Added.

(JSC::JSArray::memCopyWithIndexingType):
(JSC::JSArray::canFastCopy):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSType.h:
  • runtime/ObjectConstructor.h:

(JSC::constructObject):

  • tests/es6.yaml:
  • tests/stress/array-concat-spread-object.js: Added.

(arrayEq):

  • tests/stress/array-concat-spread-proxy-exception-check.js: Added.

(arrayEq):

  • tests/stress/array-concat-spread-proxy.js: Added.

(arrayEq):

  • tests/stress/array-concat-with-slow-indexingtypes.js: Added.

(arrayEq):

  • tests/stress/array-species-config-array-constructor.js:

Source/WebCore:

Makes runtime arrays have the new ArrayType

  • bridge/runtime_array.h:

(JSC::RuntimeArray::createStructure):

LayoutTests:

Fix tests for Symbol.isConcatSpreadable on the Symbol object.

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/dom/array-prototype-properties-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
5:40 PM Changeset in webkit [199127] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r199070.
​https://bugs.webkit.org/show_bug.cgi?id=156324

"It didn't fix the timeout" (Requested by saamyjoon on
#webkit).

Reverted changeset:

"jsc-layout-tests.yaml/js/script-tests/regress-141098.js
failing on Yosemite Debug after r198989"
​https://bugs.webkit.org/show_bug.cgi?id=156187
​http://trac.webkit.org/changeset/199070

5:14 PM Changeset in webkit [199126] by eric.carlson@apple.com
  • 6 edits in trunk/Source/WebCore

[iOS Simulator WK1] Crash in MediaPlayer::setPrivateBrowsingMode()
​https://bugs.webkit.org/show_bug.cgi?id=155721
<rdar://problem/18590481>

Speculative fix for a crash that appears to happen when the media engine is destroyed
during a callback.

Reviewed by Dean Jackson.

No new tests, this prevents existing tests from crashing.

  • html/HTMLMediaElement.cpp:

(WebCore::actionName): Log MediaEngineUpdated.
(WebCore::HTMLMediaElement::scheduleDelayedAction): Support MediaEngineUpdated.
(WebCore::HTMLMediaElement::pendingActionTimerFired): Ditto. Clear m_pendingActionFlags.
(WebCore::HTMLMediaElement::mediaEngineWasUpdated): New.
(WebCore::HTMLMediaElement::mediaPlayerEngineUpdated): Move guts to mediaEngineWasUpdated and

call it on a timer so we can't change the media engine in the middle of a callback from
MediaPlayer or the media engine.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaElementEnums.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::~MediaPlayer): Assert if new flag m_initializingMediaEngine is set to

catch HTMLMediaElement destroying the media engine during a callback.

(WebCore::MediaPlayer::loadWithNextMediaEngine): Set/clear m_initializingMediaEngine.

  • platform/graphics/MediaPlayer.h:
5:13 PM Changeset in webkit [199125] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling in r199016.
​https://bugs.webkit.org/show_bug.cgi?id=156140

It might work this time without regression because 16kB aligned requests
now take the allocation fast path.

Restored changeset:

CopiedBlock should be 16kB
​https://bugs.webkit.org/show_bug.cgi?id=156168
​http://trac.webkit.org/changeset/199016

4:22 PM Changeset in webkit [199124] by rniwa@webkit.org
  • 1 edit in trunk/Websites/perf.webkit.org/tools/sync-buildbot.js

Add the executable bit on tools/sync-buildbot.js as supposed to be done in the previous commit

4:19 PM Changeset in webkit [199123] by rniwa@webkit.org
  • 15 edits
    5 adds in trunk/Websites/perf.webkit.org

New buildbot syncing scripts that supports multiple builders and slaves
​https://bugs.webkit.org/show_bug.cgi?id=156269

Reviewed by Chris Dumez.

Add sync-buildbot.js that supports scheduling A/B testing jobs on multiple builders and slaves.
The old python script (sync-with-buildbot.py) could only support a single builder and slave
for each platform, test pair.

The main logic is implemented in BuildbotTriggerable.syncOnce. Various helper methods are added
throughout the codebase and tests have been refactored.

BuildbotSyncer has been updated to support multiple platform, test pairs. It's now responsible
for syncing everything on each builder (on a buildbot).

Added more unit tests for BuildbotSyncer and server tests for BuildbotTriggerable, and refactored
test helpers and mocks as needed.

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

(BuildRequest.prototype.status): Added.
(BuildRequest.prototype.isScheduled): Added.

  • public/v3/models/metric.js:

(Metric.prototype.fullName): Added.

  • public/v3/models/platform.js:

(Platform): Added the map based on platform name.
(Platform.findByName): Added.

  • public/v3/models/test.js:

(Test.topLevelTests):
(Test.findByPath): Added. Finds a test based on an array of test names; e.g. ['A', 'B'] would
find the test whose name is "B" which has a parent test named "A".
(Test.prototype.fullName): Added.

  • server-tests/api-build-requests-tests.js:

(addMockData): Moved to resources/mock-data.js.
(addAnotherMockTestGroup): Ditto.

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

(MockData.resetV3Models): Added.
(MockData.addMockData): Moved from api-build-requests-tests.js.
(MockData.addAnotherMockTestGroup): Ditto.
(MockData.mockTestSyncConfigWithSingleBuilder): Added.
(MockData.mockTestSyncConfigWithTwoBuilders): Added.
(MockData.pendingBuild): Added.
(MockData.runningBuild): Added.
(MockData.finishedBuild): Added.

  • server-tests/resources/test-server.js:

(TestServer):
(TestServer.prototype.remoteAPI):
(TestServer.prototype._ensureTestDatabase): Don't fail even if the test database doesn't exit.
(TestServer.prototype._startApache): Create a RemoteAPI instance to access the test sever.
(TestServer.prototype._waitForPid): Increase the timeout.
(TestServer.prototype.inject): Replace global.RemoteAPI during the test and restore it afterwards.

  • server-tests/tools-buildbot-triggerable-tests.js: Added. Tests BuildbotTriggerable.syncOnce.

(MockLogger): Added.
(MockLogger.prototype.log): Added.
(MockLogger.prototype.error): Added.

  • tools/detect-changes.js:

(parseArgument): Moved to js/parse-arguments.js.

  • tools/js/buildbot-syncer.js:

(BuildbotBuildEntry):
(BuildbotBuildEntry.prototype.syncer): Added.
(BuildbotBuildEntry.prototype.buildRequestStatusIfUpdateIsNeeded): Added. Returns a new status
for a build request (of the matching build request ID) if it needs to be updated in the server.
(BuildbotSyncer): This class
(BuildbotSyncer.prototype.addTestConfiguration): Added.
(BuildbotSyncer.prototype.testConfigurations): Returns the list of test configurations.
(BuildbotSyncer.prototype.matchesConfiguration): Returns true iff the request can be scheduled on
this builder.
(BuildbotSyncer.prototype.scheduleRequest): Added. Schedules a new job on buildbot for a request.
(BuildbotSyncer.prototype.scheduleFirstRequestInGroupIfAvailable): Added. Schedules a new job for
the specified build request on the first slave that's available.
(BuildbotSyncer.prototype.pullBuildbot): Return a list of BuildbotBuildEntry instead of an object.
Also store it on an instance variable so that scheduleFirstRequestInGroupIfAvailable could use it.
(BuildbotSyncer.prototype._pullRecentBuilds):
(BuildbotSyncer.prototype.pathForPendingBuildsJSON): Renamed from urlForPendingBuildsJSON and now
only returns the path instead of the full URL since RemoteAPI takes a path, not full URL.
(BuildbotSyncer.prototype.pathForBuildJSON): Ditto from pathForBuildJSON.
(BuildbotSyncer.prototype.pathForForceBuild): Added.
(BuildbotSyncer.prototype.url): Use RemoteAPI's url method instead of manually constructing URL.
(BuildbotSyncer.prototype.urlForBuildNumber): Ditto.
(BuildbotSyncer.prototype._propertiesForBuildRequest): Now that each syncer can have multiple test
configurations associated with it, find the one matching for this request.
(BuildbotSyncer._loadConfig): Create a syncer per builder and add all test configurations to it.
(BuildbotSyncer._validateAndMergeConfig): Added the support for 'SlaveList', which is a list of
slave names present on this builder.

  • tools/js/buildbot-triggerable.js: Added.

(BuildbotTriggerable): Added.
(BuildbotTriggerable.prototype.name): Added.
(BuildbotTriggerable.prototype.syncOnce): Added. The main logic for the syncing script. It pulls
existing build requests from the perf dashboard, pulls buildbot for pending and running/completed
builds on each builder (represented by each syncer), schedules build requests on buildbot if there
is any builder/slave available, and updates the status of build requests in the database.
(BuildbotTriggerable.prototype._validateRequests): Added.
(BuildbotTriggerable.prototype._pullBuildbotOnAllSyncers): Added.
(BuildbotTriggerable.prototype._scheduleNextRequestInGroupIfSlaveIsAvailable): Added.
(BuildbotTriggerable._testGroupMapForBuildRequests): Added.

  • tools/js/database.js:
  • tools/js/parse-arguments.js: Added. Extracted out of tools/detect-changes.js.

(parseArguments):

  • tools/js/remote.js:

(RemoteAPI): Now optionally takes the server configuration.
(RemoteAPI.prototype.url): Added.
(RemoteAPI.prototype.getJSON): Removed the code for specifying request content.
(RemoteAPI.prototype.getJSONWithStatus): Ditto.
(RemoteAPI.prototype.postJSON): Added.
(RemoteAPI.prototype.postFormUrlencodedData): Added.
(RemoteAPI.prototype.sendHttpRequest): Fixed the code to specify auth.

  • tools/js/v3-models.js: Don't include RemoteAPI here as they require a configuration for each host.
  • tools/sync-buildbot.js: Added.

(main): Added. Parse the arguments and start the loop.
(syncLoop): Added.

  • unit-tests/buildbot-syncer-tests.js: Added tests for pullBuildbot, scheduleRequest, as well as

scheduleFirstRequestInGroupIfAvailable. Refactored helper functions as needed.
(sampleiOSConfig):
(smallConfiguration): Added.
(smallPendingBuild): Added.
(smallInProgressBuild): Added.
(smallFinishedBuild): Added.
(createSampleBuildRequest): Create a unique build request for each platform.
(samplePendingBuild): Optionally specify build time and slave name.
(sampleInProgressBuild): Optionally specify slave name.
(sampleFinishedBuild): Ditto.

  • unit-tests/resources/mock-remote-api.js:

(assert.notReached.assert.notReached):
(MockRemoteAPI.url): Added.
(MockRemoteAPI.postFormUrlencodedData): Added.
(MockRemoteAPI._addRequest): Extracted from getJSONWithStatus.
(MockRemoteAPI.waitForRequest): Extracted from inject. For tools-buildbot-triggerable-tests.js, we
need to instantiate a RemoteAPI for buildbot without replacing global.RemoteAPI.
(MockRemoteAPI.inject):
(MockRemoteAPI.reset): Added.

3:51 PM Changeset in webkit [199122] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Update es6.yaml to expect es6/Proxy_internal_get_calls_RegExp_constructor.js to pass.
​https://bugs.webkit.org/show_bug.cgi?id=156314

Reviewed by Saam Barati.

  • tests/es6.yaml:
3:44 PM Changeset in webkit [199121] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r199116. rdar://problem/25468815

3:25 PM Changeset in webkit [199120] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Modern IDB: Make sure SQLite backing store records have a INTEGER PRIMARY KEY column.
​https://bugs.webkit.org/show_bug.cgi?id=156264

Reviewed by Alex Christensen.

No new tests (No testable change in behavior yet, current tests pass).

  • Modules/indexeddb/IDBKeyData.cpp:

(WebCore::IDBKeyData::encode): Fix the key name for backwards compatibility.
(WebCore::IDBKeyData::decode): Ditto.

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::v3RecordsTableSchema): Added v3 Records schema that includes a primary key column.
(WebCore::IDBServer::v3RecordsTableSchemaAlternate):
(WebCore::IDBServer::createOrMigrateRecordsTableIfNecessary): Upgrade to v3 instead of v2.
(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):

3:22 PM Changeset in webkit [199119] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Avoid using an unengaged Optional<FloatRect> when positioning the tiled scrolling indicator
​https://bugs.webkit.org/show_bug.cgi?id=156313

Reviewed by Tim Horton.

Fixes an assertion seen when running the WebKit2.AutoLayoutIntegration API test.

  • page/FrameView.cpp:

(WebCore::FrameView::setViewExposedRect):

2:51 PM Changeset in webkit [199118] by achristensen@apple.com
  • 8 edits
    1 add in trunk

Compile WebKitTestRunner with CMake on Mac
​https://bugs.webkit.org/show_bug.cgi?id=156310

Reviewed by Daniel Bates.

Source/WebKit2:

  • PlatformMac.cmake:

Tools:

  • CMakeLists.txt:
  • WebKitTestRunner/CMakeLists.txt:
  • WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
  • WebKitTestRunner/PlatformEfl.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformMac.cmake: Added.
2:48 PM Changeset in webkit [199117] by weinig@apple.com
  • 3 edits in trunk/Source/WebCore

Fix windows build.

  • DerivedSources.cpp:
  • css/CSSAllInOne.cpp:
2:21 PM Changeset in webkit [199116] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

CRASH in AudioDestinationNode::render()
​https://bugs.webkit.org/show_bug.cgi?id=156308
<rdar://problem/25468815>

Reviewed by Eric Carlson.

AudioDestinationNode::render() will crash when passed in a zero-length frame count. Rather than get into
this bad state, ASSERT() and bail out early in this case.

Also, address the situation in AudioDestinationIOS::render which can cause this 0-frame count to occur.

  • Modules/webaudio/AudioDestinationNode.cpp:

(WebCore::AudioDestinationNode::render):

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::render):

1:52 PM Changeset in webkit [199115] by ggaren@apple.com
  • 4 edits in trunk/Source/bmalloc

bmalloc: handle aligned allocations on the fast path
​https://bugs.webkit.org/show_bug.cgi?id=156302

Reviewed by Michael Saboff.

This helps keep the JavaScriptCore GC on the fast path, and it also
helps avoid fragmentation on our website stress test:

nimlang 209,584kB 198,076kB 1.06x smaller

  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::allocate): Because we arrange for power-of-two size
classes to allocate at power-of-two alignments, we can allocate any
small aligned request on the small path.

  • bmalloc/Chunk.h:

(bmalloc::Chunk::bytes):
(bmalloc::Chunk::lines):
(bmalloc::Chunk::pages):
(bmalloc::Chunk::boundaryTags):
(bmalloc::Chunk::objectType): Moved some code around to provide better
API.

(bmalloc::Chunk::Chunk): Moved this code to VMHeap.

(bmalloc::Chunk::offset):
(bmalloc::Chunk::object): Use our new bytes() helper function.

  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::allocateChunk): Moved code here from Chunk.

(bmalloc::VMHeap::allocateSmallChunk): Ensure that power-of-two page
sizes always begin allocation at the same alignment. Power-of-two object
sizes always request power-of-two page sizes (since that's the least
wasteful option), so if we also ensure that power-of-two page sizes get
power-of-two alignment, then everything is aligned for all small objects.

1:41 PM Changeset in webkit [199114] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Videos are always autoplaying.
​https://bugs.webkit.org/show_bug.cgi?id=156284

Reviewed by Alex Christensen.

Videos are autoplaying because the MediaFoundation implementation always starts playback
after the load method has been called. When the load method has been called, we should
only start buffering data, not automatically start the playback. This has been fixed by
implementing the prepareToPlay method, and calling this instead of the play method.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::load):
(WebCore::MediaPlayerPrivateMediaFoundation::prepareToPlay):
(WebCore::MediaPlayerPrivateMediaFoundation::play):
(WebCore::MediaPlayerPrivateMediaFoundation::networkState):
(WebCore::MediaPlayerPrivateMediaFoundation::startSession):
(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::updateReadyState):
(WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet):
(WebCore::MediaPlayerPrivateMediaFoundation::onBufferingStarted):
(WebCore::MediaPlayerPrivateMediaFoundation::onBufferingStopped):
(WebCore::MediaPlayerPrivateMediaFoundation::onSessionEnded):
(WebCore::MediaPlayerPrivateMediaFoundation::Direct3DPresenter::updateDestRect):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
1:03 PM Changeset in webkit [199113] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Add ASSERT_WITH_SECURITY_IMPLICATION when a float box is referenced by multiple RootInlineBoxes.
​https://bugs.webkit.org/show_bug.cgi?id=156297
<rdar://problem/25580844>

Reviewed by Brent Fulgham.

See ​http://trac.webkit.org/changeset/199101

No change in functionality.

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::appendFloatingObjectToLastLine):
(WebCore::RenderBlockFlow::reattachCleanLineFloats):
(WebCore::RenderBlockFlow::determineStartPosition):

12:54 PM Changeset in webkit [199112] by weinig@apple.com
  • 15 edits
    3 moves in trunk

window.CSS should be a constructor with static functions
<rdar://problem/25580516>
​https://bugs.webkit.org/show_bug.cgi?id=156294

Reviewed by Chris Dumez.

Source/WebCore:

Rename DOMWindowCSS to DOMCSSNamespace to avoid name collisions, DOMWindow prefixed
classes cause collisions in JSDOMWindow.

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

Update for renames.

  • css/DOMCSSNamespace.cpp: Copied from Source/WebCore/css/DOMWindowCSS.cpp.

(WebCore::valueWithoutImportant):
(WebCore::DOMCSSNamespace::supports):
(WebCore::DOMWindowCSS::create): Deleted.
(WebCore::DOMWindowCSS::supports): Deleted.

  • css/DOMCSSNamespace.h: Copied from Source/WebCore/css/DOMWindowCSS.h.

(WebCore::DOMWindowCSS::DOMWindowCSS): Deleted.
Rename DOMWindowCSS to DOMCSSNamespace and turn functions into static functions.

  • css/DOMCSSNamespace.idl: Copied from Source/WebCore/css/DOMWindowCSS.idl.

Remove NoInterfaceObject, to inject a constructor, and turn functions into
static functions matching spec.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::css): Deleted.

  • page/DOMWindow.h:
  • page/DOMWindow.idl:

Remove CSS property. Constructor will be implicitly added.

LayoutTests:

  • platform/efl/js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:

Update for new CSS constructor property.

12:22 PM Changeset in webkit [199111] by Simon Fraser
  • 24 edits in trunk/Source

Rename exposedRect to viewExposedRect and propagate it as Optional<> through WK2
​https://bugs.webkit.org/show_bug.cgi?id=156274

Reviewed by NOBODY (OOPS!).

DrawingArea and FrameView have an "exposedRect" property that is used by applications
on Mac, like Mail, that embed web views inside scroll views. However, this name is very
similar to the "exposedContentRect" that is used on iOS to denote the part of the view
whose pixels are visible, including through blurring overlaid UI.

To disambiguate these two, rename the Mac "exposedRect" to "viewExposedRect" to
emphasize that it's a rect that takes into account clipping in the native view
hierarchy.

Also make this rect Optional<> through the DrawingArea, removing comparisons against
FloatRect::infiniteRect().

Do some other minor renaming in VisibleContentRectUpdateInfo.

Source/WebCore:

  • page/FrameView.cpp:

(WebCore::FrameView::setViewExposedRect): This now takes an Optional<> because WebViewImpl::updateViewExposedRect()
can clear it.

  • page/FrameView.h:
  • page/PageOverlayController.cpp:

(WebCore::PageOverlayController::didChangeViewExposedRect):
(WebCore::PageOverlayController::didChangeExposedRect): Deleted.

  • page/PageOverlayController.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::computeTileCoverage):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::flushPendingLayerChanges):

Source/WebKit2:

  • Shared/VisibleContentRectUpdateInfo.cpp: Rename "exposedRect" and "unobscuredRect" to

have "Content" in the names.
(WebKit::VisibleContentRectUpdateInfo::encode):
(WebKit::VisibleContentRectUpdateInfo::decode):

  • Shared/VisibleContentRectUpdateInfo.h:

(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
(WebKit::VisibleContentRectUpdateInfo::exposedContentRect):
(WebKit::VisibleContentRectUpdateInfo::unobscuredContentRect):
(WebKit::operator==):
(WebKit::VisibleContentRectUpdateInfo::exposedRect): Deleted.
(WebKit::VisibleContentRectUpdateInfo::unobscuredRect): Deleted.

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::updateViewExposedRect):

  • UIProcess/DrawingAreaProxy.cpp:

(WebKit::DrawingAreaProxy::DrawingAreaProxy):
(WebKit::DrawingAreaProxy::setViewExposedRect):
(WebKit::DrawingAreaProxy::viewExposedRectChangedTimerFired):
(WebKit::DrawingAreaProxy::setExposedRect): Deleted.
(WebKit::DrawingAreaProxy::exposedRectChangedTimerFired): Deleted.

  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::viewExposedRect):
(WebKit::DrawingAreaProxy::exposedRect): Deleted.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::exposedContentRect):
(WebKit::WebPageProxy::unobscuredContentRect):

  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.h:
  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::setViewExposedRect):
(WebKit::RemoteLayerTreeDrawingAreaProxy::indicatorLocation):
(WebKit::RemoteLayerTreeDrawingAreaProxy::updateDebugIndicator):
(WebKit::RemoteLayerTreeDrawingAreaProxy::scaledExposedRect): Deleted.
(WebKit::RemoteLayerTreeDrawingAreaProxy::setExposedRect): Deleted. This was only used
to position the indicator, and confusingly used either exposedContentRect() or viewExposedRect()
depending on platform.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):

  • WebProcess/WebPage/DrawingArea.h:
  • WebProcess/WebPage/DrawingArea.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::updateVisibleContentRects):

  • WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
  • WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:

(WebKit::RemoteLayerTreeDrawingArea::setViewExposedRect):
(WebKit::RemoteLayerTreeDrawingArea::updateScrolledExposedRect):
(WebKit::RemoteLayerTreeDrawingArea::flushLayers):
(WebKit::RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea): Deleted.
(WebKit::RemoteLayerTreeDrawingArea::setExposedRect): Deleted.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::flushLayers):
(WebKit::TiledCoreAnimationDrawingArea::setViewExposedRect):
(WebKit::TiledCoreAnimationDrawingArea::updateScrolledExposedRect):
(WebKit::TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea): Deleted.
(WebKit::TiledCoreAnimationDrawingArea::setExposedRect): Deleted.

12:13 PM Changeset in webkit [199110] by jdiggs@igalia.com
  • 11 edits in trunk

REGRESSION(r195463): [GTK] accessibility/roles-computedRoleString.html and accessibility/roles-exposed.html failing
​https://bugs.webkit.org/show_bug.cgi?id=153696

Reviewed by Chris Fleizach.

Source/WebCore:

The failures were due to always mapping style format groups to GroupRole, even for
RenderInline objects. The fix is to expose inline style format groups as InlineRole,
add handling of GroupRole style groups to the ATK code, and InlineRole style groups
to the Mac code.

No new tests because we have sufficient coverage. Updated roles-computedRoleString.html
to reflect new exposure.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::determineAccessibilityRole):

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(atkRole):

  • accessibility/mac/AccessibilityObjectMac.mm:

(WebCore::AccessibilityObject::accessibilityPlatformIncludesObject):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

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

LayoutTests:

Now that RenderInline style format groups are exposed as InlineRole, there is
no longer a corresponding computed role for ins, samp, and var elements. Updated
the roles-computedRoleString.html test and expectations accordingly. Also added
the now-correct results for Gtk for both of the previously-failing tests.

  • accessibility/roles-computedRoleString-expected.txt: Updated.
  • accessibility/roles-computedRoleString.html: Updated.
  • platform/gtk/TestExpectations: Unskip the two tests which are now passing.
  • platform/gtk/accessibility/roles-computedRoleString-expected.txt: Updated.
  • platform/gtk/accessibility/roles-exposed-expected.txt: Updated.
12:07 PM Changeset in webkit [199109] by achristensen@apple.com
  • 6 edits in trunk

Fix CMake DumpRenderTree
​https://bugs.webkit.org/show_bug.cgi?id=156305

Reviewed by Daniel Bates.

.:

  • Source/cmake/OptionsMac.cmake:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKit/mac:

  • WebKitPrefix.h:
11:49 AM Changeset in webkit [199108] by commit-queue@webkit.org
  • 39 edits
    1 delete in trunk/Source/JavaScriptCore

Unreviewed, rolling out r199104.
​https://bugs.webkit.org/show_bug.cgi?id=156301

Still breaks internal builds (Requested by keith_miller on
#webkit).

Reverted changeset:

"We should support the ability to do a non-effectful getById"
​https://bugs.webkit.org/show_bug.cgi?id=156116
​http://trac.webkit.org/changeset/199104

11:39 AM Changeset in webkit [199107] by Simon Fraser
  • 4 edits in trunk

Implement operator== and operator!= for Optional<>
​https://bugs.webkit.org/show_bug.cgi?id=156266

Reviewed by Anders Carlsson.
Source/WTF:

Implement non-member operator== and operator!= variants for Optional<>.

  • wtf/Optional.h:

(WTF::operator==):
(WTF::operator!=):

Tools:

  • TestWebKitAPI/Tests/WTF/Optional.cpp:

(TestWebKitAPI::TEST):

11:26 AM Changeset in webkit [199106] by keith_miller@apple.com
  • 6 edits in trunk

RegExp constructor should use Symbol.match and other properties
​https://bugs.webkit.org/show_bug.cgi?id=155873

Reviewed by Michael Saboff.

Source/JavaScriptCore:

This patch updates the behavior of the RegExp constructor. Now the constructor
should get the Symbol.match property and check if it exists to decide if something
should be constructed like a regexp object.

  • runtime/RegExpConstructor.cpp:

(JSC::toFlags):
(JSC::constructRegExp):
(JSC::constructWithRegExpConstructor):
(JSC::callRegExpConstructor):

  • runtime/RegExpConstructor.h:
  • tests/stress/regexp-constructor.js: Added.

(assert):
(throw.new.Error.get let):
(throw.new.Error.):
(throw.new.Error.get re):

LayoutTests:

Fix test for new behavior.

  • fast/regex/constructor-expected.txt:
  • fast/regex/script-tests/constructor.js:
10:44 AM Changeset in webkit [199105] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

CRASH in -[WebCoreNSURLSession taskCompleted:]
​https://bugs.webkit.org/show_bug.cgi?id=156290

Reviewed by Eric Carlson.

Fixes currently flakily crashing http/tests/media tests.

Protect against -taskCompleted: being called multiple times by only calling
-taskCompleted: if the task's state is not yet NSURLSessionTaskStateCompleted.
Additionally, make sure to clear the task's session pointer when removing it
from _dataTasks, as this ensures a task that outlives its session does not
keep a pointer to a dealloc'd object.

  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession taskCompleted:]):
(-[WebCoreNSURLSessionDataTask _resource:loadFinishedWithError:]):

10:36 AM Changeset in webkit [199104] by keith_miller@apple.com
  • 39 edits
    1 add in trunk/Source/JavaScriptCore

We should support the ability to do a non-effectful getById
​https://bugs.webkit.org/show_bug.cgi?id=156116

Reviewed by Benjamin Poulain.

Currently, there is no way in JS to do a non-effectful getById. A non-effectful getById is
useful because it enables us to take different code paths based on values that we would
otherwise not be able to have knowledge of. This patch adds this new feature called
try_get_by_id that will attempt to do as much of a get_by_id as possible without performing
an effectful behavior. Thus, try_get_by_id will return the value if the slot is a value, the
GetterSetter object if the slot is a normal accessor (not a CustomGetterSetter) and
undefined if the slot is unset. If the slot is proxied or any other cases then the result
is null. In theory, if we ever wanted to check for null we could add a sentinal object to
the global object that indicates we could not get the result.

In order to implement this feature we add a new enum GetByIdKind that indicates what to do
for accessor properties in PolymorphicAccess. If the GetByIdKind is pure then we treat the
get_by_id the same way we would for load and return the value at the appropriate offset.
Additionally, in order to make sure the we can properly compare the GetterSetter object
with === GetterSetters are now JSObjects. This comes at the cost of eight extra bytes on the
GetterSetter object but it vastly simplifies the patch. Additionally, the extra bytes are
likely to have little to no impact on memory usage as normal accessors are generally rare.

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createDefaultConstructor):
(JSC::BuiltinExecutables::createBuiltinExecutable):
(JSC::createBuiltinExecutable):
(JSC::BuiltinExecutables::createExecutable):
(JSC::createExecutableInternal): Deleted.

  • builtins/BuiltinExecutables.h:
  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::tryGet):
(JSC::AccessCase::generate):
(WTF::printInternal):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessCase::isGet): Deleted.
(JSC::AccessCase::isPut): Deleted.
(JSC::AccessCase::isIn): Deleted.

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

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

(JSC::BytecodeGenerator::emitTryGetById):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emit_intrinsic_tryGetById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::getById):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITGetByIdGenerator::JITGetByIdGenerator):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITInlines.h:

(JSC::JIT::callOperation):

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

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id):

  • jit/Repatch.cpp:

(JSC::repatchByIdSelfAccess):
(JSC::appropriateOptimizingGetByIdFunction):
(JSC::appropriateGenericGetByIdFunction):
(JSC::tryCacheGetByID):
(JSC::repatchGetByID):
(JSC::resetGetByID):

  • jit/Repatch.h:
  • jsc.cpp:

(GlobalObject::finishCreation):
(functionGetGetterSetter):
(functionCreateBuiltin):

  • llint/LLIntData.cpp:

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

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/GetterSetter.cpp:
  • runtime/GetterSetter.h:
  • runtime/JSType.h:
  • runtime/PropertySlot.cpp:

(JSC::PropertySlot::getPureResult):

  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::getOwnPropertySlotCommon):

  • tests/stress/try-get-by-id.js: Added.

(tryGetByIdText):
(getCaller.obj.1.throw.new.Error.let.func):
(getCaller.obj.1.throw.new.Error):
(throw.new.Error.get let):
(throw.new.Error.):
(throw.new.Error.let.get createBuiltin):
(get let):
(let.get createBuiltin):
(let.func):
(get let.func):
(get throw):

10:33 AM Changeset in webkit [199103] by Chris Dumez
  • 2 edits
    9 adds in trunk/Source/WebCore

[IDL] Extend support for [EnabledAtRuntime] attributes / operations to all global objects, not just Window
​https://bugs.webkit.org/show_bug.cgi?id=156291

Reviewed by Alex Christensen.

Extend support for [EnabledAtRuntime] attributes / operations to all
global objects, not just Window. This is needed by the Fetch API which
is enabled at runtime and exposed on both Window and WorkerGlobalScope.

  • bindings/scripts/CodeGeneratorJS.pm:

(IsDOMGlobalObject):
(OperationShouldBeOnInstance):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateImplementation):

  • bindings/scripts/test/GObject/WebKitDOMTestGlobalObject.cpp: Added.

(WebKit::kit):
(WebKit::core):
(WebKit::wrapTestGlobalObject):
(webkit_dom_test_global_object_finalize):
(webkit_dom_test_global_object_set_property):
(webkit_dom_test_global_object_get_property):
(webkit_dom_test_global_object_constructor):
(webkit_dom_test_global_object_class_init):
(webkit_dom_test_global_object_init):
(webkit_dom_test_global_object_regular_operation):
(webkit_dom_test_global_object_enabled_at_runtime_operation):
(webkit_dom_test_global_object_get_regular_attribute):
(webkit_dom_test_global_object_set_regular_attribute):
(webkit_dom_test_global_object_get_enabled_at_runtime_attribute):
(webkit_dom_test_global_object_set_enabled_at_runtime_attribute):

  • bindings/scripts/test/GObject/WebKitDOMTestGlobalObject.h: Added.
  • bindings/scripts/test/GObject/WebKitDOMTestGlobalObjectPrivate.h: Added.
  • bindings/scripts/test/JS/JSTestGlobalObject.cpp: Added.

(WebCore::JSTestGlobalObjectConstructor::prototypeForStructure):
(WebCore::JSTestGlobalObjectConstructor::initializeProperties):
(WebCore::JSTestGlobalObjectPrototype::getOwnPropertySlot):
(WebCore::JSTestGlobalObject::JSTestGlobalObject):
(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::JSTestGlobalObject::destroy):
(WebCore::JSTestGlobalObject::getOwnPropertySlot):
(WebCore::jsTestGlobalObjectRegularAttribute):
(WebCore::jsTestGlobalObjectEnabledAtRuntimeAttribute):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectRegularAttribute):
(WebCore::setJSTestGlobalObjectEnabledAtRuntimeAttribute):
(WebCore::JSTestGlobalObject::getConstructor):
(WebCore::jsTestGlobalObjectInstanceFunctionRegularOperation):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation1):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation2):
(WebCore::jsTestGlobalObjectInstanceFunctionEnabledAtRuntimeOperation):
(WebCore::JSTestGlobalObjectOwner::isReachableFromOpaqueRoots):
(WebCore::JSTestGlobalObjectOwner::finalize):
(WebCore::toJSNewlyCreated):
(WebCore::toJS):
(WebCore::JSTestGlobalObject::toWrapped):

  • bindings/scripts/test/JS/JSTestGlobalObject.h: Added.

(WebCore::JSTestGlobalObject::create):
(WebCore::JSTestGlobalObject::createStructure):
(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::wrapperOwner):
(WebCore::wrapperKey):
(WebCore::toJS):
(WebCore::JSTestGlobalObjectPrototype::create):
(WebCore::JSTestGlobalObjectPrototype::createStructure):
(WebCore::JSTestGlobalObjectPrototype::JSTestGlobalObjectPrototype):

  • bindings/scripts/test/ObjC/DOMTestGlobalObject.h: Added.
  • bindings/scripts/test/ObjC/DOMTestGlobalObject.mm: Added.

(-[DOMTestGlobalObject dealloc]):
(-[DOMTestGlobalObject regularAttribute]):
(-[DOMTestGlobalObject setRegularAttribute:]):
(-[DOMTestGlobalObject enabledAtRuntimeAttribute]):
(-[DOMTestGlobalObject setEnabledAtRuntimeAttribute:]):
(-[DOMTestGlobalObject regularOperation:]):
(-[DOMTestGlobalObject enabledAtRuntimeOperation:]):
(core):
(kit):

  • bindings/scripts/test/ObjC/DOMTestGlobalObjectInternal.h: Added.
  • bindings/scripts/test/TestGlobalObject.idl: Added.
9:38 AM Changeset in webkit [199102] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Update IndexedDB feature status to the much more correct "In Development"

Reviewed by Tim Hatcher.

  • features.json:
8:56 AM Changeset in webkit [199101] by Alan Bujtas
  • 4 edits
    2 adds in trunk

ASSERTION FAILED: !floatingObject->originatingLine() in WebCore::RenderBlockFlow::linkToEndLineIfNeeded
​https://bugs.webkit.org/show_bug.cgi?id=153001

Reviewed by Dan Bernstein.

  1. Float boxes are always attached to the line where we see them first.
  2. Float box can only be attached to one line.
  3. RenderBlockFlow can perform partial layout on dirty lines only.

In certain cases, the last dirty line can "pull up" float boxes from the first clean line.
It simply means that due to some layout changes on previous lines now we see those floats on this last dirty line first.
If after placing the float we still find it on the same position, the line below is still considered clean.
Source/WebCore:

Remove the float box from its original line if the line above already placed it.

Test: fast/block/float/float-moves-between-lines.html

  • rendering/RenderBlockFlow.h:
  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::reattachCleanLineFloats):
(WebCore::RenderBlockFlow::linkToEndLineIfNeeded):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange): Deleted.

LayoutTests:

Remove the float box from its original line if the line above already placed it.

  • fast/block/float/float-moves-between-lines-expected.txt: Added.
  • fast/block/float/float-moves-between-lines.html: Added.
8:44 AM Changeset in webkit [199100] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

[GTK] [l10n] Updated Italian translation of WebKitGTK+
​https://bugs.webkit.org/show_bug.cgi?id=156283

Patch by Milo Casagrande <​milo@milo.name> on 2016-04-06
Rubber-stamped by Michael Catanzaro.

  • it.po:
5:26 AM Changeset in webkit [199099] by Antti Koivisto
  • 6 edits in trunk

REGRESSION(r196629): Messages text size only changes for sending text, conversation text size does not change
​https://bugs.webkit.org/show_bug.cgi?id=156287
<rdar://problem/24264756>

Reviewed by Andreas Kling.

Source/WebCore:

  • css/RuleFeature.cpp:

(WebCore::RuleFeatureSet::recursivelyCollectFeaturesFromSelector):
(WebCore::makeAttributeSelectorKey):

Include attribute value to the key. Otherwise we may deduplicate selectors that are not indentical.

(WebCore::RuleFeatureSet::collectFeatures):
(WebCore::RuleFeatureSet::add):

Use HashMap::ensure().

  • css/RuleFeature.h:

LayoutTests:

  • fast/css/style-invalidation-attribute-change-descendants-expected.txt:
  • fast/css/style-invalidation-attribute-change-descendants.html:
3:21 AM Changeset in webkit [199098] by Manuel Rego Casasnovas
  • 11 edits
    2 adds in trunk

[css-grid] Fix positioned children in RTL
​https://bugs.webkit.org/show_bug.cgi?id=156162

Reviewed by Sergio Villar Senin.

Source/WebCore:

This patch fixes a problem affecting the items without
a static inline position (i.e. "left" and/or "right" properties
are not "auto"). In this particular case we need to compute
the "offset" from the left, so we need a specific condition
and computation.

Let's use an example to understand what it's fixing:
<div style="display: grid; grid-template-columns: 100px 50px; width: 300px;

position: relative; direction: rtl;">

<div style="position: absolute; left: 0; grid-column: 1 / 2;">item</div>

</div>

In this case the item has to be placed in the first column
(the one on the right as we're in RTL).
For this we need to calculate the offset from the left, which is 200px:
150px (alignment offset) + 50px (offset from line 3 to 2).

Test: fast/css-grid-layout/grid-positioned-items-background-rtl.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

LayoutTests:

Added more RTL cases for the positioned tests.

  • fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
  • fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
  • fast/css-grid-layout/grid-positioned-items-background-rtl-expected.html: Added.
  • fast/css-grid-layout/grid-positioned-items-background-rtl.html: Added.
  • fast/css-grid-layout/grid-positioned-items-padding-expected.txt:
  • fast/css-grid-layout/grid-positioned-items-padding.html:
  • fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track-expected.txt:
  • fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track.html:
  • fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
  • fast/css-grid-layout/grid-sizing-positioned-items.html:
2:27 AM Changeset in webkit [199097] by Antti Koivisto
  • 7 edits in trunk

ComposedTreeIterator may crash when first child of shadow root is a comment node
​https://bugs.webkit.org/show_bug.cgi?id=156281

Reviewed by Andreas Kling.

Source/WebCore:

It should not use plain firstChild() and assume it is Element or Text.

  • dom/ComposedTreeIterator.cpp:

(WebCore::ComposedTreeIterator::Context::Context):

Add FirstChildTag to various iterator constructors to make clear that they search for the first child.

(WebCore::ComposedTreeIterator::ComposedTreeIterator):
(WebCore::ComposedTreeIterator::traverseShadowRoot):

Fix by using ElementAndTextDescendantIterator to find the first child.

  • dom/ComposedTreeIterator.h:

(WebCore::ComposedTreeIterator::operator*):
(WebCore::ComposedTreeDescendantAdapter::ComposedTreeDescendantAdapter):
(WebCore::ComposedTreeDescendantAdapter::begin):
(WebCore::ComposedTreeDescendantAdapter::end):
(WebCore::ComposedTreeDescendantAdapter::at):
(WebCore::ComposedTreeChildAdapter::Iterator::Iterator):

  • dom/ElementAndTextDescendantIterator.h:

(WebCore::ElementAndTextDescendantIterator::operator++):
(WebCore::ElementAndTextDescendantIterator::ElementAndTextDescendantIterator):
(WebCore::ElementAndTextDescendantIteratorAdapter::begin):
(WebCore::ElementAndTextDescendantIteratorAdapter::end):

LayoutTests:

  • fast/shadow-dom/composed-tree-shadow-subtree-expected.txt:
  • fast/shadow-dom/composed-tree-shadow-subtree.html:

Apr 5, 2016:

11:10 PM Changeset in webkit [199096] by Chris Dumez
  • 5 edits in trunk/Source

Add support for [EnabledAtRuntime] operations on DOMWindow
​https://bugs.webkit.org/show_bug.cgi?id=156272

Reviewed by Alex Christensen.

Source/JavaScriptCore:

Add identifier for 'fetch' so it can be used from the generated
bindings.

  • runtime/CommonIdentifiers.h:

Source/WebCore:

Add support for [EnabledAtRuntime] operations on DOMWindow by omitting
such operations from the static table and add them at run-time in
JSDOMWindow::finishCreation() if the corresponding feature is enabled.

This was needed for window.fetch() for which a hack was temporarily
landed in r199081. This patch drops this hack now that the generated
bindings do the right thing.

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::scriptExecutionContext):
Drop hack landed in r199081.

  • bindings/scripts/CodeGeneratorJS.pm:

(OperationShouldBeOnInstance):
(GeneratePropertiesHashTable):
(GenerateImplementation):
Add support for [EnabledAtRuntime] operations on DOMWindow.

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

Web Inspector: Do not create CodeMirror color/gradient markers in JavaScript resources
​https://bugs.webkit.org/show_bug.cgi?id=156278
<rdar://problem/25570404>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-05
Reviewed by Timothy Hatcher.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._hasStyleSheetContents):
(WebInspector.SourceCodeTextEditor.prototype._updateEditableMarkers):
Only spend the time to create style markers for style sheet contents.

10:31 PM Changeset in webkit [199094] by achristensen@apple.com
  • 17 edits in trunk

Make CMake-generated binaries on Mac able to run
​https://bugs.webkit.org/show_bug.cgi?id=156268

Reviewed by Daniel Bates.

.:

  • Source/cmake/OptionsMac.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Source/WebKit:

  • CMakeLists.txt:

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Tools:

  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/PlatformMac.cmake:
  • DumpRenderTree/PlatformWin.cmake:
  • TestWebKitAPI/PlatformMac.cmake:
9:46 PM Changeset in webkit [199093] by fpizlo@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

Improve some other cases of context-sensitive inlining
​https://bugs.webkit.org/show_bug.cgi?id=156277

Reviewed by Benjamin Poulain.

This implements some improvements for inlining:

  • We no longer do guarded inlining when the profiling doesn't come from a stub. Doing so would have been risky, and according to benchmarks, it wasn't common enough to matter. I think it's better to err on the side of not inlining.


  • The jneq_ptr pattern for variadic calls no longer breaks the basic block. Not breaking the block increases the chances of the parser seeing the callee constant. While inlining doesn't require a callee constant, sometimes it makes a difference. Note that we were previously breaking the block for no reason at all: if the boundary after jneq_ptr is a jump target from some other jump, then the parser will automatically break the block for us. There is no reason to add any block breaking ourselves since we implement jneq_ptr by ignoring the affirmative jump destination and inserting a check and falling through.


  • get_by_id handling now tries to apply some common sense to its status object. In particular, if the source is a NewObject and there was no interfering operation that could clobber the structure, then we know which case of a polymorphic GetByIdStatus we would take. This arises in some constructor patterns.


Long term, we should address all of these cases comprehensively by having a late inliner. The inliner
being part of the bytecode parser means that there is a lot of complexity in the parser and it
prevents us from inlining upon learning new information from static analysis. But for now, I think
it's fine to experiment with one-off hacks, if only to learn what the possibilities are.

This is a 14% speed-up on Octane/raytrace.

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::dump):

  • bytecode/CallLinkStatus.h:

(JSC::CallLinkStatus::couldTakeSlowPath):
(JSC::CallLinkStatus::setCouldTakeSlowPath):
(JSC::CallLinkStatus::variants):
(JSC::CallLinkStatus::size):
(JSC::CallLinkStatus::at):

  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::makesCalls):
(JSC::GetByIdStatus::filter):
(JSC::GetByIdStatus::dump):

  • bytecode/GetByIdStatus.h:

(JSC::GetByIdStatus::wasSeenInJIT):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::refineStatically):
(JSC::DFG::ByteCodeParser::handleVarargsCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::handleGetById):
(JSC::DFG::ByteCodeParser::parseBlock):

  • runtime/Options.h:
8:55 PM Changeset in webkit [199092] by sbarati@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

JSC SamplingProfiler: Use a thread + sleep loop instead of WTF::WorkQueue for taking samples
​https://bugs.webkit.org/show_bug.cgi?id=154017

Reviewed by Geoffrey Garen.

By moving to an explicitly created seperate thread + sample-then-sleep
loop, we can remove a lot of the crufty code around WorkQueue.
We're also getting sample rates that are much closer to what we're
asking the OS for. When the sampling handler was built off of WorkQueue,
we'd often get sample rates much higher than the 1ms we asked for. On Kraken,
we would average about 1.7ms sample rates, even though we'd ask for a 1ms rate.
Now, on Kraken, we're getting about 1.2ms rates. Because we're getting
higher rates, this patch is a performance regression. It's slower because
we're sampling more frequently.

Before this patch, the sampling profiler had the following overhead:

  • 10% on Kraken
  • 12% on octane
  • 15% on AsmBench

With this patch, the sampling profiler has the following overhead:

  • 16% on Kraken
  • 17% on Octane
  • 30% on AsmBench

Comparatively, this new patch has the following overhead over the old sampling profiler:

  • 5% on Kraken
  • 3.5% on Octane
  • 13% slower on AsmBench
  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::InspectorScriptProfilerAgent::trackingComplete):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler):
(JSC::SamplingProfiler::~SamplingProfiler):
(JSC::SamplingProfiler::createThreadIfNecessary):
(JSC::SamplingProfiler::timerLoop):
(JSC::SamplingProfiler::takeSample):
(JSC::tryGetBytecodeIndex):
(JSC::SamplingProfiler::shutdown):
(JSC::SamplingProfiler::start):
(JSC::SamplingProfiler::pause):
(JSC::SamplingProfiler::noticeCurrentThreadAsJSCExecutionThread):
(JSC::SamplingProfiler::noticeJSLockAcquisition):
(JSC::SamplingProfiler::noticeVMEntry):
(JSC::SamplingProfiler::clearData):
(JSC::SamplingProfiler::stop): Deleted.
(JSC::SamplingProfiler::dispatchIfNecessary): Deleted.
(JSC::SamplingProfiler::dispatchFunction): Deleted.

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::setTimingInterval):
(JSC::SamplingProfiler::setStopWatch):

  • runtime/VM.cpp:

(JSC::VM::VM):

8:23 PM Changeset in webkit [199091] by BJ Burg
  • 8 edits in trunk/Source/WebKit2

Web Automation: add support for getting, deleting, and adding cookies
​https://bugs.webkit.org/show_bug.cgi?id=156090
<rdar://problem/25477678>

Reviewed by Timothy Hatcher.

Add protocol commands for manipulating cookies with respect to a given page.
Implement all but the addSingleCookie command, which needs a new WebCore API.

  • UIProcess/Automation/Automation.json:

Copy the Page domain Cookie object. Add new commands.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::getAllCookies):
(WebKit::buildObjectForCookie): Copied from InspectorPageAgent.
(WebKit::buildArrayForCookies): Copied from InspectorPageAgent.
(WebKit::WebAutomationSession::didGetCookiesForFrame):
(WebKit::WebAutomationSession::deleteSingleCookie):
(WebKit::WebAutomationSession::didDeleteCookie):
(WebKit::WebAutomationSession::addSingleCookie): Added a stub for now.
(WebKit::WebAutomationSession::deleteAllCookies):
This command can use the WebCookieManager supplement directly instead of
proxying through AutomationSession. It doesn't block until the delete is
performed like the other methods do, but this shouldn't be a problem.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::getCookiesForFrame):
(WebKit::WebAutomationSessionProxy::deleteCookie):

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:
6:37 PM Changeset in webkit [199090] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Fix Range requests when not using the NetworkCache with NetworkSession
​https://bugs.webkit.org/show_bug.cgi?id=156036
rdar://problem/25334939

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-04-05
Reviewed by Sam Weinig.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:willCacheResponse:completionHandler:]):
Don't cache any responses with Content-Range headers to work around rdar://problem/20001985.
This is similar to the workaround in shouldCacheResponse in WebCoreNSURLSession.mm
(WebKit::NetworkSession::NetworkSession):
If we are using the NetworkCache, then don't use CFNetwork's cache.

6:36 PM Changeset in webkit [199089] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fixed CSS Shapes entry on the WebKit Feature Status page.
​https://bugs.webkit.org/show_bug.cgi?id=156262

Patch by Jon Davis <​jond@ingenesis.net> on 2016-04-05
Reviewed by Timothy Hatcher.

  • features.json:
6:31 PM Changeset in webkit [199088] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Correct applicationWillTerminate logic for ResourceLoadStatistics
​https://bugs.webkit.org/show_bug.cgi?id=156249
<rdar://problem/25179611>

Reviewed by Andy Estes.

The applicationWillTerminate handling for ResourceLoadStatistics incorrectly
assumes that a ResourceLoadStatistics object will always be present.

  1. The termination handling for 'dataStoresWithStorageManagers' should be calling 'applicationWillTerminate' on any ResourceLoadStatistics objects attached to the dataStore.
  2. platformInitialize should null-check before attempting to dispatch.
  3. platformDestroy should null check before attempting to dispatch.
  • UIProcess/WebsiteData/Cocoa/WebsiteDataStoreCocoa.mm:

(WebKit::WebsiteDataStore::platformInitialize):
(WebKit::WebsiteDataStore::platformDestroy): Invoke 'applicationWillTerminate' on
m_resourceLoadStatistics if present.

6:18 PM Changeset in webkit [199087] by Chris Dumez
  • 5 edits
    11 adds in trunk

MessageEvent.source window is incorrect once window has been reified
​https://bugs.webkit.org/show_bug.cgi?id=156227
<rdar://problem/25545831>

Reviewed by Mark Lam.

Source/WebCore:

MessageEvent.source window was incorrect once window had been reified.

If the Window had not been reified, we kept constructing new
postMessage() functions when calling window.postMessage(). We used to
pass activeDOMWindow(execState) as source Window to
DOMWindow::postMessage(). activeDOMWindow() uses
exec->lexicalGlobalObject() which did the right thing because we
used to construct a new postMessage() function in the caller's context.

However, after reification, due to the way JSDOMWindow::getOwnPropertySlot()
was implemented, we would stop constructing new postMessage() functions
when calling window.postMessage(). As a result, the source window would
become incorrect because exec->lexicalGlobalObject() would return the
target Window instead.

In this patch, the following is done:

  1. Stop constructing a new function every time in the same origin case for postMessage, blur, focus and close. This was inefficient and lead to incorrect behavior:
    • The behavior would differ depending if the Window is reified or not
    • It would be impossible to delete those operations, which is incompatible with the specification and other browsers (tested Firefox and Chrome).
  2. Use callerDOMWindow(execState) instead of activeDOMWindow(execState) as source Window in JSDOMWindow::handlePostMessage(). callerDOMWindow() is a new utility function that returns the caller's Window object.

Tests: fast/dom/Window/delete-operations.html

fast/dom/Window/messageevent-source-postmessage-reified.html
fast/dom/Window/messageevent-source-postmessage.html
fast/dom/Window/messageevent-source-postmessage2.html
fast/dom/Window/window-postmessage-clone-frames.html
fast/dom/Window/post-message-crash2.html

  • bindings/js/JSDOMBinding.cpp:

(WebCore::GetCallerCodeBlockFunctor::operator()):
(WebCore::GetCallerCodeBlockFunctor::codeBlock):
(WebCore::callerDOMWindow):

  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::handlePostMessage):

LayoutTests:

Add tests that cover using MessageEvent.source Window for messaging
using postMessage(). There are 2 versions of the test, one where the
main window is reified and one where it is not. The test that has a
reified main window was failing because this fix.

  • fast/dom/Window/delete-operations-expected.txt: Added.
  • fast/dom/Window/delete-operations.html: Added.

Make sure that operations on Window are indeed deletable. Previously,
it would be impossible to delete postMessage, blur, focus and close.

  • fast/dom/Window/messageevent-source-postmessage-expected.txt: Added.
  • fast/dom/Window/messageevent-source-postmessage-reified-expected.txt: Added.
  • fast/dom/Window/messageevent-source-postmessage-reified.html: Added.
  • fast/dom/Window/messageevent-source-postmessage.html: Added.
  • fast/dom/Window/messageevent-source-postmessage2.html: Added.
  • fast/dom/Window/resources/messageevent-source-postmessage-frame.html: Added.
  • fast/dom/Window/post-message-crash2-expected.txt: Added.
  • fast/dom/Window/post-message-crash2.html: Added.
6:17 PM Changeset in webkit [199086] by mmaxfield@apple.com
  • 2 edits
    4 adds in trunk/LayoutTests

Test listbox clipping to contents rect
​https://bugs.webkit.org/show_bug.cgi?id=156265

Reviewed by Simon Fraser.

These tests create some <select><option></option></select>s with padding.
These list boxes use the zapfino "f" character (because it draws wildly
far outside of its layout box) to create a case where text inside the list
box would naturally intersect with the padding. This overflow should be
clipped so that the padding is undisturbed.

  • fast/forms/listbox-padding-clip-expected.html: Added.
  • fast/forms/listbox-padding-clip-overlay-expected.html: Added.
  • fast/forms/listbox-padding-clip-overlay.html: Added.
  • fast/forms/listbox-padding-clip.html: Added.
  • platform/ios-simulator/TestExpectations: Skip on iOS
4:56 PM Changeset in webkit [199085] by timothy@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Make the Timelines sidebar wider

​https://bugs.webkit.org/show_bug.cgi?id=156257
rdar://problem/25564218

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineOverview.css:

(.timeline-overview): Added. Set define --timeline-sidebar-width.
(.timeline-overview > .navigation-bar.timelines): Use --timeline-sidebar-width.
(.timeline-overview > .tree-outline.timelines): Ditto.
(.timeline-overview > .scroll-container): Ditto.
(.timeline-overview > .timeline-ruler): Ditto.
(.timeline-overview > .graphs-container): Ditto.

4:50 PM Changeset in webkit [199084] by Ryan Haddad
  • 40 edits
    1 delete in trunk/Source/JavaScriptCore

Unreviewed, rolling out r199073.
​https://bugs.webkit.org/show_bug.cgi?id=156261

This change broke internal Mac builds (Requested by ryanhaddad
on #webkit).

Reverted changeset:

"We should support the ability to do a non-effectful getById"
​https://bugs.webkit.org/show_bug.cgi?id=156116
​http://trac.webkit.org/changeset/199073

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-04-05

4:33 PM Changeset in webkit [199083] by Beth Dakin
  • 5 edits in trunk/Source

Make requestCandidatesForSelection available on any EditorClient
​https://bugs.webkit.org/show_bug.cgi?id=156253
-and corresponding-
rdar://problem/24661147

Reviewed by Dean Jackson.

Source/WebCore:

  • loader/EmptyClients.h:
  • page/EditorClient.h:

(WebCore::EditorClient::requestCandidatesForSelection):

Source/WebKit/mac:

  • WebCoreSupport/WebEditorClient.h:
4:20 PM Changeset in webkit [199082] by timothy@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Command-Option-R opens Inspector details sidebar or Responsive Design Mode, should only do one

​https://bugs.webkit.org/show_bug.cgi?id=156258
rdar://problem/25483871

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded): Change shortcuts to Command-Option-0 and Command-Shift-0.

4:20 PM Changeset in webkit [199081] by achristensen@apple.com
  • 28 edits in trunk

[Fetch API] Add a runtime flag to fetch API and related constructs
​https://bugs.webkit.org/show_bug.cgi?id=156113

Patch by Youenn Fablet <​youenn.fablet@crf.canon.fr> on 2016-04-05
Reviewed by Alex Christensen.

Source/JavaScriptCore:

Add a fetch API runtime flag based on preferences.
Disable fetch API by default.

  • runtime/CommonIdentifiers.h:

Source/WebCore:

Marking all Fetch interfaces EnabledAtRuntime=FetchAPI.
Adding FetchAPI runtime flag setter and getter.
In case, fetch API is disabled, ensure Window.prototype.fetch returns undefined.

  • Modules/fetch/DOMWindowFetch.idl:
  • Modules/fetch/FetchBody.idl:
  • Modules/fetch/FetchHeaders.idl:
  • Modules/fetch/FetchRequest.idl:
  • Modules/fetch/FetchResponse.idl:
  • Modules/fetch/WorkerGlobalScopeFetch.idl:
  • bindings/generic/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::webGL2Enabled):
(WebCore::RuntimeEnabledFeatures::setFetchAPIEnabled):
(WebCore::RuntimeEnabledFeatures::fetchAPIEnabled):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::finishCreation):

Source/WebKit/mac:

Add a fetch API runtime flag based on preferences.
Disable fetch API by default.

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

(+[WebPreferences initialize]):
(-[WebPreferences setCustomElementsEnabled:]):
(-[WebPreferences fetchAPIEnabled]):
(-[WebPreferences setFetchAPIEnabled:]):

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

(-[WebView _preferencesChanged:]):
(-[WebView preferencesIdentifier]):
(-[WebView setUIDelegate:]):

Source/WebKit2:

Add a fetch API runtime flag based on preferences.
Disable fetch API by default.

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

(WKPreferencesGetCustomElementsEnabled):
(WKPreferencesSetFetchAPIEnabled):
(WKPreferencesGetFetchAPIEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

  • DumpRenderTree/TestRunner.h:
  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setWebGL2Enabled):
(WTR::TestRunner::setFetchAPIEnabled):
(WTR::TestRunner::setAllowUniversalAccessFromFileURLs):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
3:57 PM Changeset in webkit [199080] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop some more.

  • runtime/RegExpInlines.h:

(JSC::RegExp::hasCodeFor):
(JSC::RegExp::hasMatchOnlyCodeFor):

3:55 PM Changeset in webkit [199079] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix cloop.

  • jit/CCallHelpers.cpp:
3:55 PM Changeset in webkit [199078] by beidson@apple.com
  • 11 edits in trunk/Source/WebCore

Modern IDB: Get blob URLs/files all the way to the IDB backing store.
​https://bugs.webkit.org/show_bug.cgi?id=156248

Reviewed by Alex Christensen.

No new tests (No change in behavior).

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::putOrAddOnServer):

  • Modules/indexeddb/IDBValue.cpp:

(WebCore::IDBValue::IDBValue):
(WebCore::IDBValue::isolatedCopy):

  • Modules/indexeddb/IDBValue.h:

(WebCore::IDBValue::blobURLs):
(WebCore::IDBValue::blobFilePaths):
(WebCore::IDBValue::encode):
(WebCore::IDBValue::decode):

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::addRecord):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::addRecord):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):

3:32 PM Changeset in webkit [199077] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Should not allow selecting no Timelines when editing in Timeline tab
​https://bugs.webkit.org/show_bug.cgi?id=156223
<rdar://problem/25552221>

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype._startEditingInstruments):
Register EnabledDidChange event handler for all tree elements.

(WebInspector.TimelineOverview.prototype._stopEditingInstruments):
Unregister event handler for enabled tree elements. The rest are removed
from the tree outline once editing has completed.

(WebInspector.TimelineOverview.prototype._timelineTreeElementEnabledDidChange):
Enable "Done" button if at least one timeline is enabled.

  • UserInterface/Views/TimelineTreeElement.js:

Dispatch a new event, EnabledDidChange, when the checkbox state changes.

(WebInspector.TimelineTreeElement.prototype._showCheckbox):
(WebInspector.TimelineTreeElement.prototype._clickHandler):
(WebInspector.TimelineTreeElement.prototype._dispatchEnabledDidChangeEvent):
(WebInspector.TimelineTreeElement):

3:17 PM Changeset in webkit [199076] by fpizlo@apple.com
  • 64 edits
    8 adds in trunk

JSC should use a shadow stack version of CHICKEN so that debuggers have the option of retrieving tail-deleted frames
​https://bugs.webkit.org/show_bug.cgi?id=155598

Reviewed by Saam Barati.
PerformanceTests/SunSpider:

  • shadow-chicken.yaml: Added.

Source/JavaScriptCore:


JSC is the first JSVM to have proper tail calls. This means that error.stack and the
debugger will appear to "delete" strict mode stack frames, if the call that this frame made
was in tail position. This is exactly what functional programmers expect - they don't want
the VM to waste resources on tail-deleted frames to ensure that it's legal to loop forever
using tail calls. It's also something that non-functional programmers fear. It's not clear
that tail-deleted frames would actually degrade the debugging experience, but the fear is
real, so it's worthwhile to do something about it.

It turns out that there is at least one tail call implementation that doesn't suffer from
this problem. It implements proper tail calls in the sense that you won't run out of memory
by tail-looping. It also has the power to show you tail-deleted frames in a backtrace, so
long as you haven't yet run out of memory. It's called CHICKEN Scheme, and it's one of my
favorite hacks:

​http://www.more-magic.net/posts/internals-gc.html

CHICKEN does many awesome things. The intuition from CHICKEN that we use here is a simple
one: what if a tail call still kept the tail-deleted frame, and the GC actually deleted that
frame only once we proved that there was insufficient memory to keep it around.

CHICKEN does this by reshaping the C stack with longjmp/setjmp. We can't do that because we
can have arbitrary native code, and that native code does not have relocatable stack frames.

But we can do something almost like CHICKEN on a shadow stack. It's a common trick to have a
VM maintain two stacks - the actual execution stack plus a shadow stack that has some extra
information. The shadow stack can be reshaped, moved, etc, since the VM tightly controls its
layout. The main stack can then continue to obey ABI rules.

This patch implements a mechanism for being able to display stack traces that include
tail-deleted frames. It uses a shadow stack that behaves like a CHICKEN stack: it has all
frames all the time, though we will collect the tail-deleted ones if the stack gets too big.
This new mechanism is called ShadowChicken, obviously: it's CHICKEN on a shadow stack.

ShadowChicken is always on, but individual CodeBlocks may make their own choices about
whether to opt into it. They will do that at bytecompile time based on the debugger mode on
their global object.

When no CodeBlock opts in, there is no overhead, since ShadowChicken ends up doing nothing
in that case. Well, except when exceptions are thrown. Then it might do some work, but it's
minor.

When all CodeBlocks opt in, there is about 6% overhead. That's too much overhead to enable
this all the time, but it's low enough to justify enabling in the Inspector. It's currently
enabled on all CodeBlocks only when you use an Option. Otherwise it will auto-enable if the
debugger is on.

Note that ShadowChicken attempts to gracefully handle the presence of stack frames that have
no logging. This is essential since we *can* have debugging enabled in one GlobalObject and
disabled in another. Also, some frames don't do ShadowChicken because they just haven't been
hacked to do it yet. Native frames fall into this category, as do the VM entry frames.

This doesn't yet wire ShadowChicken into DebuggerCallFrame. That will take more work. It
just makes a ShadowChicken stack walk function available to jsc. It's used from the
shadow-chicken tests.

  • API/JSContextRef.cpp:

(BacktraceFunctor::BacktraceFunctor):
(BacktraceFunctor::operator()):
(JSContextCreateBacktrace):

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::RecursionCheckFunctor::RecursionCheckFunctor):
(JSC::RecursionCheckFunctor::operator()):
(JSC::CodeBlock::noticeIncomingCall):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitEnter):
(JSC::BytecodeGenerator::emitCallInTailPosition):
(JSC::BytecodeGenerator::emitCallVarargsInTailPosition):
(JSC::BytecodeGenerator::emitCallVarargs):
(JSC::BytecodeGenerator::emitLogShadowChickenPrologueIfNecessary):
(JSC::BytecodeGenerator::emitLogShadowChickenTailIfNecessary):
(JSC::BytecodeGenerator::emitCallDefineProperty):

  • bytecompiler/BytecodeGenerator.h:
  • debugger/DebuggerCallFrame.cpp:

(JSC::LineAndColumnFunctor::operator()):
(JSC::LineAndColumnFunctor::column):
(JSC::FindCallerMidStackFunctor::FindCallerMidStackFunctor):
(JSC::FindCallerMidStackFunctor::operator()):
(JSC::DebuggerCallFrame::DebuggerCallFrame):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLAbstractHeapRepository.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileSetRegExpObjectLastIndex):
(JSC::FTL::DFG::LowerDFGToB3::compileLogShadowChickenPrologue):
(JSC::FTL::DFG::LowerDFGToB3::compileLogShadowChickenTail):
(JSC::FTL::DFG::LowerDFGToB3::didOverflowStack):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::setupShadowChickenPacket):
(JSC::FTL::DFG::LowerDFGToB3::boolify):

  • heap/Heap.cpp:

(JSC::Heap::markRoots):
(JSC::Heap::visitSamplingProfiler):
(JSC::Heap::visitShadowChicken):
(JSC::Heap::traceCodeBlocksAndJITStubRoutines):
(JSC::Heap::collectImpl):

  • heap/Heap.h:
  • inspector/ScriptCallStackFactory.cpp:

(Inspector::CreateScriptCallStackFunctor::CreateScriptCallStackFunctor):
(Inspector::CreateScriptCallStackFunctor::operator()):
(Inspector::createScriptCallStack):

  • interpreter/CallFrame.h:

(JSC::ExecState::iterate):

  • interpreter/Interpreter.cpp:

(JSC::DumpRegisterFunctor::DumpRegisterFunctor):
(JSC::DumpRegisterFunctor::operator()):
(JSC::GetStackTraceFunctor::GetStackTraceFunctor):
(JSC::GetStackTraceFunctor::operator()):
(JSC::Interpreter::getStackTrace):
(JSC::GetCatchHandlerFunctor::handler):
(JSC::GetCatchHandlerFunctor::operator()):
(JSC::notifyDebuggerOfUnwinding):
(JSC::UnwindFunctor::UnwindFunctor):
(JSC::UnwindFunctor::operator()):
(JSC::UnwindFunctor::copyCalleeSavesToVMCalleeSavesBuffer):

  • interpreter/ShadowChicken.cpp: Added.

(JSC::ShadowChicken::Packet::dump):
(JSC::ShadowChicken::Frame::dump):
(JSC::ShadowChicken::ShadowChicken):
(JSC::ShadowChicken::~ShadowChicken):
(JSC::ShadowChicken::log):
(JSC::ShadowChicken::update):
(JSC::ShadowChicken::visitChildren):
(JSC::ShadowChicken::reset):
(JSC::ShadowChicken::dump):
(JSC::ShadowChicken::functionsOnStack):

  • interpreter/ShadowChicken.h: Added.

(JSC::ShadowChicken::Packet::Packet):
(JSC::ShadowChicken::Packet::tailMarker):
(JSC::ShadowChicken::Packet::throwMarker):
(JSC::ShadowChicken::Packet::prologue):
(JSC::ShadowChicken::Packet::tail):
(JSC::ShadowChicken::Packet::throwPacket):
(JSC::ShadowChicken::Packet::operator bool):
(JSC::ShadowChicken::Packet::isPrologue):
(JSC::ShadowChicken::Packet::isTail):
(JSC::ShadowChicken::Packet::isThrow):
(JSC::ShadowChicken::Frame::Frame):
(JSC::ShadowChicken::Frame::operator==):
(JSC::ShadowChicken::Frame::operator!=):
(JSC::ShadowChicken::log):
(JSC::ShadowChicken::logSize):
(JSC::ShadowChicken::addressOfLogCursor):
(JSC::ShadowChicken::logEnd):

  • interpreter/ShadowChickenInlines.h: Added.

(JSC::ShadowChicken::iterate):

  • interpreter/StackVisitor.h:

(JSC::StackVisitor::Frame::callee):
(JSC::StackVisitor::Frame::codeBlock):
(JSC::StackVisitor::Frame::bytecodeOffset):
(JSC::StackVisitor::Frame::inlineCallFrame):
(JSC::StackVisitor::Frame::isJSFrame):
(JSC::StackVisitor::Frame::isInlinedFrame):
(JSC::StackVisitor::visit):

  • jit/CCallHelpers.cpp: Added.

(JSC::CCallHelpers::logShadowChickenProloguePacket):
(JSC::CCallHelpers::logShadowChickenTailPacket):
(JSC::CCallHelpers::setupShadowChickenPacket):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::prepareForTailCallSlow):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_resume):
(JSC::JIT::emit_op_log_shadow_chicken_prologue):
(JSC::JIT::emit_op_log_shadow_chicken_tail):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jsc.cpp:

(GlobalObject::finishCreation):
(FunctionJSCStackFunctor::FunctionJSCStackFunctor):
(FunctionJSCStackFunctor::operator()):
(functionClearSamplingFlags):
(functionShadowChickenFunctionsOnStack):
(functionReadline):

  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::llint_throw_stack_overflow_error):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • profiler/ProfileGenerator.cpp:

(JSC::AddParentForConsoleStartFunctor::foundParent):
(JSC::AddParentForConsoleStartFunctor::operator()):

  • runtime/Error.cpp:

(JSC::FindFirstCallerFrameWithCodeblockFunctor::FindFirstCallerFrameWithCodeblockFunctor):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator()):
(JSC::addErrorInfoAndGetBytecodeOffset):

  • runtime/JSFunction.cpp:

(JSC::RetrieveArgumentsFunctor::result):
(JSC::RetrieveArgumentsFunctor::operator()):
(JSC::retrieveArguments):
(JSC::RetrieveCallerFunctionFunctor::result):
(JSC::RetrieveCallerFunctionFunctor::operator()):
(JSC::retrieveCallerFunction):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::GlobalFuncProtoGetterFunctor::result):
(JSC::GlobalFuncProtoGetterFunctor::operator()):
(JSC::globalFuncProtoGetter):
(JSC::GlobalFuncProtoSetterFunctor::allowsAccess):
(JSC::GlobalFuncProtoSetterFunctor::operator()):

  • runtime/NullSetterFunction.cpp:

(JSC::GetCallerStrictnessFunctor::GetCallerStrictnessFunctor):
(JSC::GetCallerStrictnessFunctor::operator()):
(JSC::GetCallerStrictnessFunctor::callerIsStrict):
(JSC::callerIsStrict):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructorGetPrototypeOfFunctor::result):
(JSC::ObjectConstructorGetPrototypeOfFunctor::operator()):
(JSC::objectConstructorGetPrototypeOf):

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

(JSC::VM::VM):
(JSC::SetEnabledProfilerFunctor::operator()):

  • runtime/VM.h:

(JSC::VM::shouldBuilderPCToCodeOriginMapping):
(JSC::VM::bytecodeIntrinsicRegistry):
(JSC::VM::shadowChicken):

  • tests/stress/resources/shadow-chicken-support.js: Added.

(describeFunction):
(describeArray):
(expectStack):
(initialize):

  • tests/stress/shadow-chicken-disabled.js: Added.

(test1.foo):
(test1.bar):
(test1.baz):
(test1):
(test2.foo):
(test2.bar):
(test2.baz):
(test2):
(test3.foo):
(test3.bar):
(test3.baz):
(test3):

  • tests/stress/shadow-chicken-enabled.js: Added.

(test1.foo):
(test1.bar):
(test1.baz):
(test1):
(test2.foo):
(test2.bar):
(test2.baz):
(test2):
(test3.bob):
(test3.thingy):
(test3.foo):
(test3.bar):
(test3.baz):
(test3):
(test4.bob):
(test4.thingy):
(test4.foo):
(test4.bar):
(test4.baz):
(test4):
(test5.foo):
(test5):

  • tools/JSDollarVMPrototype.cpp:

(JSC::CallerFrameJITTypeFunctor::CallerFrameJITTypeFunctor):
(JSC::CallerFrameJITTypeFunctor::operator()):
(JSC::CallerFrameJITTypeFunctor::jitType):
(JSC::functionLLintTrue):
(JSC::CellAddressCheckFunctor::CellAddressCheckFunctor):
(JSC::CellAddressCheckFunctor::operator()):
(JSC::JSDollarVMPrototype::isValidCell):
(JSC::JSDollarVMPrototype::isValidCodeBlock):
(JSC::JSDollarVMPrototype::codeBlockForFrame):
(JSC::PrintFrameFunctor::PrintFrameFunctor):
(JSC::PrintFrameFunctor::operator()):
(JSC::printCallFrame):

Source/WebCore:

Fixed some uses of the stack walking functor to obey the new lambda-friendly API, which
requires that operator() is const.

No new tests because no change in behavior.

  • bindings/js/JSXMLHttpRequestCustom.cpp:

(WebCore::SendFunctor::column):
(WebCore::SendFunctor::url):
(WebCore::SendFunctor::operator()):
(WebCore::JSXMLHttpRequest::send):

  • testing/Internals.cpp:

(WebCore::GetCallerCodeBlockFunctor::GetCallerCodeBlockFunctor):
(WebCore::GetCallerCodeBlockFunctor::operator()):
(WebCore::GetCallerCodeBlockFunctor::codeBlock):
(WebCore::Internals::parserMetaData):

3:13 PM Changeset in webkit [199075] by fpizlo@apple.com
  • 52 edits
    17 adds in trunk

Source/JavaScriptCore:
DFG and FTL should constant-fold RegExpExec, RegExpTest, and StringReplace
​https://bugs.webkit.org/show_bug.cgi?id=155270

Reviewed by Saam Barati.

This enables constant-folding of RegExpExec, RegExpTest, and StringReplace.

It's now possible to run Yarr on the JIT threads. Since previous work on constant-folding
strings gave the DFG an API for reasoning about JSString constants in terms of
JIT-thread-local WTF::Strings, it's now super easy to just pass strings to Yarr and build IR
based on the results.

But RegExpExec is hard: the folded version still must allocate a RegExpMatchesArray. We must
use the same Structure that the code would have used or else we'll pollute the program's
inline caches. Also, RegExpMatchesArray.h|cpp will allocate the array and its named
properties in one go - we don't want to lose that optimization. So, this patch enables
MaterializeNewObject to allocate objects or arrays with any number of indexed or named
properties. Previously it could only handle objects (but not arrays) and named properties
(but not indexed ones).

This also adds a few minor things for setting the RegExpConstructor cached result.

This is about a 2x speed-up on microbenchmarks when we fold a match success and about a
8x speed-up when we fold a match failure. It's a 10% speed-up on Octane/regexp.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGInsertionSet.cpp:

(JSC::DFG::InsertionSet::insertSlow):
(JSC::DFG::InsertionSet::execute):

  • dfg/DFGInsertionSet.h:

(JSC::DFG::InsertionSet::insertCheck):

  • dfg/DFGLazyJSValue.cpp:

(JSC::DFG::LazyJSValue::tryGetString):

  • dfg/DFGMayExit.cpp:

(JSC::DFG::mayExit):

  • dfg/DFGNode.h:

(JSC::DFG::StackAccessData::flushedAt):
(JSC::DFG::OpInfo::OpInfo): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:
  • dfg/DFGObjectMaterializationData.cpp:

(JSC::DFG::ObjectMaterializationData::dump):
(JSC::DFG::PhantomPropertyValue::dump): Deleted.
(JSC::DFG::ObjectMaterializationData::oneWaySimilarityScore): Deleted.
(JSC::DFG::ObjectMaterializationData::similarityScore): Deleted.

  • dfg/DFGObjectMaterializationData.h:

(JSC::DFG::PhantomPropertyValue::PhantomPropertyValue): Deleted.
(JSC::DFG::PhantomPropertyValue::operator==): Deleted.

  • dfg/DFGOpInfo.h: Added.

(JSC::DFG::OpInfo::OpInfo):

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGPromotedHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGPromotedHeapLocation.h:
  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::~SpeculativeJIT):
(JSC::DFG::SpeculativeJIT::emitAllocateRawObject):
(JSC::DFG::SpeculativeJIT::emitGetLength):
(JSC::DFG::SpeculativeJIT::compileLazyJSConstant):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):
(JSC::DFG::SpeculativeJIT::compileRecordRegExpCachedResult):
(JSC::DFG::SpeculativeJIT::emitAllocateJSArray): Deleted.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::emitAllocateDestructibleObject):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::StrengthReductionPhase):
(JSC::DFG::StrengthReductionPhase::handleNode):
(JSC::DFG::StrengthReductionPhase::handleCommutativity):
(JSC::DFG::StrengthReductionPhase::executeInsertionSet):

  • dfg/DFGValidate.cpp:

(JSC::DFG::Validate::validate):
(JSC::DFG::Validate::validateCPS):

  • ftl/FTLAbstractHeapRepository.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileSetRegExpObjectLastIndex):
(JSC::FTL::DFG::LowerDFGToB3::compileRecordRegExpCachedResult):
(JSC::FTL::DFG::LowerDFGToB3::didOverflowStack):
(JSC::FTL::DFG::LowerDFGToB3::storageForTransition):
(JSC::FTL::DFG::LowerDFGToB3::initializeArrayElements):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::isNotCellOrMisc):
(JSC::FTL::DFG::LowerDFGToB3::unboxDouble):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationPopulateObjectInOSR):
(JSC::FTL::operationNewObjectWithButterfly): Deleted.

  • ftl/FTLOperations.h:
  • inspector/ContentSearchUtilities.cpp:
  • runtime/JSObject.h:

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

  • runtime/RegExp.cpp:

(JSC::RegExp::compile):
(JSC::RegExp::match):
(JSC::RegExp::matchConcurrently):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):

  • runtime/RegExp.h:
  • runtime/RegExpCachedResult.h:

(JSC::RegExpCachedResult::offsetOfLastRegExp):
(JSC::RegExpCachedResult::offsetOfLastInput):
(JSC::RegExpCachedResult::offsetOfResult):
(JSC::RegExpCachedResult::offsetOfReified):

  • runtime/RegExpConstructor.h:

(JSC::RegExpConstructor::offsetOfCachedResult):

  • runtime/RegExpInlines.h:

(JSC::RegExp::hasCodeFor):
(JSC::RegExp::compileIfNecessary):
(JSC::RegExp::matchInline):
(JSC::RegExp::hasMatchOnlyCodeFor):
(JSC::RegExp::compileIfNecessaryMatchOnly):

  • runtime/RegExpObjectInlines.h:

(JSC::RegExpObject::execInline):

  • runtime/StringPrototype.cpp:

(JSC::substituteBackreferencesSlow):
(JSC::substituteBackreferencesInline):
(JSC::substituteBackreferences):
(JSC::StringRange::StringRange):

  • runtime/StringPrototype.h:
  • runtime/VM.h:
  • tests/stress/simple-regexp-exec-folding-fail.js: Added.

(foo):

  • tests/stress/simple-regexp-exec-folding.js: Added.

(foo):

  • tests/stress/simple-regexp-test-folding-fail.js: Added.

(foo):

  • tests/stress/simple-regexp-test-folding.js: Added.

(foo):

  • yarr/RegularExpression.cpp:
  • yarr/Yarr.h:
  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::interpret):
(JSC::Yarr::ByteCompiler::ByteCompiler):
(JSC::Yarr::ByteCompiler::compile):
(JSC::Yarr::ByteCompiler::checkInput):
(JSC::Yarr::byteCompile):
(JSC::Yarr::interpret):

  • yarr/YarrInterpreter.h:

(JSC::Yarr::BytecodePattern::BytecodePattern):

Source/WTF:
DFG and FTL should constant-fold RegExpExec
​https://bugs.webkit.org/show_bug.cgi?id=155270

Reviewed by Saam Barati.

Make executeInsertions() return the amount by which the vector increased in size. This is a
convenient feature that I use in DFG::InsertionSet.

  • wtf/Insertion.h:

(WTF::executeInsertions):

LayoutTests:
DFG and FTL should constant-fold RegExpExec
​https://bugs.webkit.org/show_bug.cgi?id=155270

Reviewed by Saam Barati.

  • js/regress/script-tests/simple-regexp-exec-folding-fail.js: Added.
  • js/regress/script-tests/simple-regexp-exec-folding.js: Added.
  • js/regress/script-tests/simple-regexp-test-folding-fail.js: Added.
  • js/regress/script-tests/simple-regexp-test-folding.js: Added.
  • js/regress/simple-regexp-exec-folding-expected.txt: Added.
  • js/regress/simple-regexp-exec-folding-fail-expected.txt: Added.
  • js/regress/simple-regexp-exec-folding-fail.html: Added.
  • js/regress/simple-regexp-exec-folding.html: Added.
  • js/regress/simple-regexp-test-folding-expected.txt: Added.
  • js/regress/simple-regexp-test-folding-fail-expected.txt: Added.
  • js/regress/simple-regexp-test-folding-fail.html: Added.
  • js/regress/simple-regexp-test-folding.html: Added.
3:12 PM Changeset in webkit [199074] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Make the @webkit link on the front page link to the feed
​https://bugs.webkit.org/show_bug.cgi?id=156244

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/widgets/twitter.php:
2:36 PM Changeset in webkit [199073] by keith_miller@apple.com
  • 40 edits
    1 add in trunk/Source/JavaScriptCore

We should support the ability to do a non-effectful getById
​https://bugs.webkit.org/show_bug.cgi?id=156116

Reviewed by Benjamin Poulain.

Currently, there is no way in JS to do a non-effectful getById. A non-effectful getById is
useful because it enables us to take different code paths based on values that we would
otherwise not be able to have knowledge of. This patch adds this new feature called
try_get_by_id that will attempt to do as much of a get_by_id as possible without performing
an effectful behavior. Thus, try_get_by_id will return the value if the slot is a value, the
GetterSetter object if the slot is a normal accessor (not a CustomGetterSetter) and
undefined if the slot is unset. If the slot is proxied or any other cases then the result
is null. In theory, if we ever wanted to check for null we could add a sentinal object to
the global object that indicates we could not get the result.

In order to implement this feature we add a new enum GetByIdKind that indicates what to do
for accessor properties in PolymorphicAccess. If the GetByIdKind is pure then we treat the
get_by_id the same way we would for load and return the value at the appropriate offset.
Additionally, in order to make sure the we can properly compare the GetterSetter object
with === GetterSetters are now JSObjects. This comes at the cost of eight extra bytes on the
GetterSetter object but it vastly simplifies the patch. Additionally, the extra bytes are
likely to have little to no impact on memory usage as normal accessors are generally rare.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createDefaultConstructor):
(JSC::BuiltinExecutables::createBuiltinExecutable):
(JSC::createBuiltinExecutable):
(JSC::BuiltinExecutables::createExecutable):
(JSC::createExecutableInternal): Deleted.

  • builtins/BuiltinExecutables.h:
  • bytecode/BytecodeIntrinsicRegistry.h:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::tryGet):
(JSC::AccessCase::generate):
(WTF::printInternal):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessCase::isGet): Deleted.
(JSC::AccessCase::isPut): Deleted.
(JSC::AccessCase::isIn): Deleted.

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

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

(JSC::BytecodeGenerator::emitTryGetById):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::BytecodeIntrinsicNode::emit_intrinsic_tryGetById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedGetById):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::getById):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITInlineCacheGenerator.cpp:

(JSC::JITGetByIdGenerator::JITGetByIdGenerator):

  • jit/JITInlineCacheGenerator.h:
  • jit/JITInlines.h:

(JSC::JIT::callOperation):

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

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitGetByValWithCachedId):
(JSC::JIT::emit_op_try_get_by_id):
(JSC::JIT::emitSlow_op_try_get_by_id):
(JSC::JIT::emit_op_get_by_id):

  • jit/Repatch.cpp:

(JSC::repatchByIdSelfAccess):
(JSC::appropriateOptimizingGetByIdFunction):
(JSC::appropriateGenericGetByIdFunction):
(JSC::tryCacheGetByID):
(JSC::repatchGetByID):
(JSC::resetGetByID):

  • jit/Repatch.h:
  • jsc.cpp:

(GlobalObject::finishCreation):
(functionGetGetterSetter):
(functionCreateBuiltin):

  • llint/LLIntData.cpp:

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

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/GetterSetter.cpp:
  • runtime/GetterSetter.h:
  • runtime/JSType.h:
  • runtime/PropertySlot.cpp:

(JSC::PropertySlot::getPureResult):

  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::getOwnPropertySlotCommon):

  • tests/stress/try-get-by-id.js: Added.

(tryGetByIdText):
(getCaller.obj.1.throw.new.Error.let.func):
(getCaller.obj.1.throw.new.Error):
(throw.new.Error.get let):
(throw.new.Error.):
(throw.new.Error.let.get createBuiltin):
(get let):
(let.get createBuiltin):
(let.func):
(get let.func):
(get throw):

2:27 PM Changeset in webkit [199072] by beidson@apple.com
  • 25 edits in trunk/Source

Modern IDB: Replace use of SerializedScriptValue with IDBValue.
​https://bugs.webkit.org/show_bug.cgi?id=156242

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No change in behavior).

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::putOrAddOnServer):

  • Modules/indexeddb/IDBValue.cpp:

(WebCore::IDBValue::IDBValue):
(WebCore::IDBValue::isolatedCopy):

  • Modules/indexeddb/IDBValue.h:

(WebCore::IDBValue::data):
(WebCore::IDBValue::encode):
(WebCore::IDBValue::decode):

  • Modules/indexeddb/client/IDBConnectionToServer.cpp:

(WebCore::IDBClient::IDBConnectionToServer::putOrAdd):

  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/IDBConnectionToServerDelegate.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::putOrAdd):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::putOrAdd):
(WebCore::IDBServer::UniqueIDBDatabase::performPutOrAdd):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.cpp:

(WebCore::IDBServer::UniqueIDBDatabaseTransaction::putOrAdd):

  • Modules/indexeddb/server/UniqueIDBDatabaseTransaction.h:
  • Modules/indexeddb/shared/InProcessIDBServer.cpp:

(WebCore::InProcessIDBServer::putOrAdd):

  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/CrossThreadCopier.cpp:

(WebCore::IDBValue>::copy):

  • platform/CrossThreadCopier.h:
  • platform/ThreadSafeDataBuffer.h:

(WebCore::ThreadSafeDataBuffer::encode):
(WebCore::ThreadSafeDataBuffer::decode):

Source/WebKit2:

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::putOrAdd):

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.h:
  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::putOrAdd):

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.h:
1:24 PM Changeset in webkit [199071] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Avoid context save/restore in GraphicsContext::drawNativeImage
​https://bugs.webkit.org/show_bug.cgi?id=156173

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2016-04-05
Reviewed by Simon Fraser.

CG save/restore is a costly operation. Try to avoid it, if possible, in
GraphicsContext::drawNativeImage. If no clipping is involved, don't save/
save/restore the GraphicsContext.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawNativeImage):

  • platform/graphics/cg/GraphicsContextCG.h:

(WebCore::CGContextStateSaver::didSave):

  • platform/spi/cg/CoreGraphicsSPI.h:
1:05 PM Changeset in webkit [199070] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

jsc-layout-tests.yaml/js/script-tests/regress-141098.js failing on Yosemite Debug after r198989
​https://bugs.webkit.org/show_bug.cgi?id=156187

Reviewed by Filip Pizlo.

This is a speculative fix. Lets see if the prevents the timeout.

  • parser/Parser.cpp:

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

12:58 PM Changeset in webkit [199069] by fpizlo@apple.com
  • 15 edits
    5 adds in trunk

PolymorphicAccess should have a MegamorphicLoad case
​https://bugs.webkit.org/show_bug.cgi?id=156182

Reviewed by Geoffrey Garen and Keith Miller.

Source/JavaScriptCore:

This introduces a new case to PolymorphicAccess called MegamorphicLoad. This inlines the lookup in
the PropertyTable. It's cheaper than switching on a huge number of cases and it's cheaper than
calling into C++ to do the same job - particularly since inlining the lookup into an access means
that we can precompute the hash code.

When writing the inline code for the hashtable lookup, I found that our hashing algorithm was not
optimal. It used a double-hashing method for reducing collision pathologies. This is great for
improving the performance of some worst-case scenarios. But this misses the point of a hashtable: we
want to optimize the average-case performance. When optimizing for average-case, we can choose to
either focus on maximizing the likelihood of the fast case happening, or to minimize the cost of the
worst-case, or to minimize the cost of the fast case. Even a very basic hashtable will achieve a high
probability of hitting the fast case. So, doing work to reduce the likelihood of a worst-case
pathology only makes sense if it also preserves the good performance of the fast case, or reduces the
likelihood of the worst-case by so much that it's a win for the average case even with a slow-down in
the fast case.

I don't believe, based on looking at how the double-hashing is implemented, that it's possible that
this preserves the good performance of the fast case. It requires at least one more value to be live
around the loop, and dramatically increases the register pressure at key points inside the loop. The
biggest offender is the doubleHash() method itself. There is no getting around how bad this is: if
the compiler live-range-splits that method to death to avoid degrading register pressure elsewhere
then we will pay a steep price anytime we take the second iteration around the loop; but if the
compiler doesn't split around the call then the hashtable lookup fast path will be full of spills on
some architectures (I performed biological register allocation and found that I needed 9 registers
for complete lookup, while x86-64 has only 6 callee-saves; OTOH ARM64 has 10 callee-saves so it might
be better off).

Hence, this patch changes the hashtable lookup to use simple linear probing. This was not a slow-down
on anything, and it made MegamorphicLoad much more sensible since it is less likely to have to spill.

There are some other small changes in this patch, like rationalizing the IC's choice between giving
up after a repatch (i.e. never trying again) and just pretending that nothing happened (so we can
try to repatch again in the future). It looked like the code in Repatch.cpp was set up to be able to
choose between those options, but we weren't fully taking advantage of it because the
regenerateWithCase() method just returned null for any failure, and didn't say whether it was the
sort of failure that renders the inline cache unrepatchable (like memory allocation failure). Now
this is all made explicit. I wanted to make sure this change happened in this patch since the
MegamorphicLoad code automagically generates a MegamorphicLoad case by coalescing other cases. Since
this is intended to avoid blowing out the cache and making it unrepatchable, I wanted to make sure
that the rules for giving up were something that made sense to me.

This is a big win on microbenchmarks. It's neutral on traditional JS benchmarks. It's a slight
speed-up for page loading, because many real websites like to have megamorphic property accesses.

  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessGenerationResult::dump):
(JSC::AccessGenerationState::addWatchpoint):
(JSC::AccessCase::get):
(JSC::AccessCase::megamorphicLoad):
(JSC::AccessCase::replace):
(JSC::AccessCase::guardedByStructureCheck):
(JSC::AccessCase::couldStillSucceed):
(JSC::AccessCase::canBeReplacedByMegamorphicLoad):
(JSC::AccessCase::canReplace):
(JSC::AccessCase::generateWithGuard):
(JSC::AccessCase::generate):
(JSC::PolymorphicAccess::PolymorphicAccess):
(JSC::PolymorphicAccess::~PolymorphicAccess):
(JSC::PolymorphicAccess::regenerateWithCases):
(JSC::PolymorphicAccess::regenerateWithCase):
(WTF::printInternal):

  • bytecode/PolymorphicAccess.h:

(JSC::AccessCase::isGet):
(JSC::AccessCase::isPut):
(JSC::AccessCase::isIn):
(JSC::AccessGenerationResult::AccessGenerationResult):
(JSC::AccessGenerationResult::operator==):
(JSC::AccessGenerationResult::operator!=):
(JSC::AccessGenerationResult::operator bool):
(JSC::AccessGenerationResult::kind):
(JSC::AccessGenerationResult::code):
(JSC::AccessGenerationResult::madeNoChanges):
(JSC::AccessGenerationResult::gaveUp):
(JSC::AccessGenerationResult::generatedNewCode):
(JSC::PolymorphicAccess::isEmpty):
(JSC::AccessGenerationState::AccessGenerationState):

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::aboutToDie):
(JSC::StructureStubInfo::addAccessCase):

  • bytecode/StructureStubInfo.h:
  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):
(JSC::AssemblyHelpers::loadProperty):
(JSC::emitRandomThunkImpl):
(JSC::AssemblyHelpers::emitRandomThunk):
(JSC::AssemblyHelpers::emitLoadStructure):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::loadValue):
(JSC::AssemblyHelpers::moveValueRegs):
(JSC::AssemblyHelpers::argumentsStart):
(JSC::AssemblyHelpers::emitStoreStructureWithTypeInfo):
(JSC::AssemblyHelpers::emitLoadStructure): Deleted.

  • jit/GPRInfo.cpp:

(JSC::JSValueRegs::dump):

  • jit/GPRInfo.h:

(JSC::JSValueRegs::uses):

  • jit/Repatch.cpp:

(JSC::replaceWithJump):
(JSC::tryCacheGetByID):
(JSC::tryCachePutByID):
(JSC::tryRepatchIn):

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):

  • runtime/Options.h:
  • runtime/PropertyMapHashTable.h:

(JSC::PropertyTable::begin):
(JSC::PropertyTable::find):
(JSC::PropertyTable::get):

  • runtime/Structure.h:

LayoutTests:

  • js/regress/megamorphic-load-expected.txt: Added.
  • js/regress/megamorphic-load.html: Added.
  • js/regress/script-tests/megamorphic-load.js: Added.
  • js/regress/string-repeat-not-resolving-no-inline-expected.txt: Added.
  • js/regress/string-repeat-not-resolving-no-inline.html: Added.
12:40 PM Changeset in webkit [199068] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Add a "notifyutil" callback for dumping the RenderLayer tree, and move the registration to Page code
​https://bugs.webkit.org/show_bug.cgi?id=156224

Reviewed by Zalan Bujtas.

Make it possible to run:

notifyutil -p com.apple.WebKit.showLayerTree

on the command line and have it dump out layer trees for all live documents, in
debug builds.

Move callback registration from RenderObject's constructor to Page.

  • page/mac/PageMac.mm:

(WebCore::Page::platformInitialize):

  • rendering/RenderObject.cpp:

(WebCore::printLayerTreeForLiveDocuments):
(WebCore::RenderObject::RenderObject): Deleted.

  • rendering/RenderObject.h:
12:38 PM Changeset in webkit [199067] by matthew_hanson@apple.com
  • 3 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r199042. rdar://problem/25533763

12:38 PM Changeset in webkit [199066] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r198035. rdar://problem/25467558

12:29 PM Changeset in webkit [199065] by keith_miller@apple.com
  • 2 edits in trunk/Tools

Make Keith a reviewer!
​https://bugs.webkit.org/show_bug.cgi?id=156246

Reviewed by Mark Lam.

  • Scripts/webkitpy/common/config/contributors.json:
10:53 AM Changeset in webkit [199064] by Antti Koivisto
  • 2 edits in trunk/LayoutTests

Un-marking plugins/focus.html as flaky on mac

It hasn't flaked after ​https://trac.webkit.org/r199054

  • platform/mac/TestExpectations:
10:51 AM Changeset in webkit [199063] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore/platform/gtk/po

Updated Brazilian Portuguese translation
​https://bugs.webkit.org/show_bug.cgi?id=156236

Patch by Rafael Fontenelle <​rafaelff@gnome.org> on 2016-04-05
Rubber-stamped by Michael Catanzaro.

  • pt_BR.po:
9:54 AM Changeset in webkit [199062] by commit-queue@webkit.org
  • 18 edits
    6 adds in trunk

[WebGL2] Turn the ENABLE_WEBGL2 flag on
​https://bugs.webkit.org/show_bug.cgi?id=156061
<rdar://problem/25463193>

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Alex Christensen.

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:
  • runtime/CommonIdentifiers.h:

Define the conditionalized classes WebGL2RenderingContext and WebGLVertexArrayObject.

Source/WebCore:

Conditionalize the definition of the WebGL2RenderingContext and WebGLVertexArrayObject globals
based on the new WebGL2 runtime flag we introduced in ​https://webkit.org/b/156166.

Turning the ENABLE_WEBGL2 flag on caused a host of build errors which we fix here. A non-obvious
error was in code generated from the html/canvas/WebGL2RenderingContext.idl file which was solved
by updating the getBufferSubData() method to the current signature as of the March 29 Editor's
Draft of the WebGL 2 Specification (​https://www.khronos.org/registry/webgl/specs/latest/2.0/).
Missing JSC headers in WebGL2RenderingContext.cpp also caused some linking errors in Release builds.

Tests: webgl/webgl-vertex-array-object-defined.html

webgl/webgl2-rendering-context-defined.html
webgl/webgl2-rendering-context-obtain.html

  • Configurations/FeatureDefines.xcconfig:
  • bindings/js/JSWebGL2RenderingContextCustom.cpp:

(WebCore::JSWebGL2RenderingContext::getInternalformatParameter):
(WebCore::JSWebGL2RenderingContext::getQueryParameter):
(WebCore::JSWebGL2RenderingContext::getSamplerParameter):
(WebCore::JSWebGL2RenderingContext::getSyncParameter):
(WebCore::JSWebGL2RenderingContext::getIndexedParameter):
(WebCore::JSWebGL2RenderingContext::getActiveUniformBlockParameter):
(WebCore::JSWebGL2RenderingContext::getActiveUniformBlockName):

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::is3dType):

  • html/canvas/WebGL2RenderingContext.cpp:

(WebCore::WebGL2RenderingContext::getBufferSubData): Deleted.

  • html/canvas/WebGL2RenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::create):

  • html/canvas/WebGLVertexArrayObject.idl:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

LayoutTests:

  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:

The WebGL2RenderingContext and WebGLVertexArrayObject classes are now defined
so expectations for this test which lists the configuration of global constructors
needed to be updated.

  • webgl/webgl-vertex-array-object-defined-expected.txt: Added.
  • webgl/webgl-vertex-array-object-defined.html: Added.

Test checking that WebGLVertexArrayObject is defined.

  • webgl/webgl2-rendering-context-defined-expected.txt: Added.
  • webgl/webgl2-rendering-context-defined.html: Added.

Test checking that WebGL2RenderingContext is defined.

  • webgl/webgl2-rendering-context-obtain-expected.txt: Added.
  • webgl/webgl2-rendering-context-obtain.html: Added.

Test checking that asking for a "webgl2" context returns a WebGL2RenderingContext.

9:50 AM Changeset in webkit [199061] by Chris Dumez
  • 4 edits
    3 adds in trunk

We sometimes fail to remove outdated entry from the disk cache after revalidation and when the resource is no longer cacheable
​https://bugs.webkit.org/show_bug.cgi?id=156048
<rdar://problem/25514480>

Reviewed by Antti Koivisto.

Source/WebKit2:

We would sometimes fail to remove outdated entry from the disk cache
after revalidation and when the resource is no longer cacheable. This
was due to Storage::removeFromPendingWriteOperations() only removing
the first pending write operation with a given key instead of actually
removing all of the operations with this key.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::removeFromPendingWriteOperations):

  • NetworkProcess/cache/NetworkCacheStorage.h:

LayoutTests:

Add test coverage for the bug.

  • http/tests/cache/disk-cache/disk-cache-remove-several-pending-writes-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-remove-several-pending-writes.html: Added.
  • http/tests/cache/disk-cache/resources/json.php: Added.
9:45 AM Changeset in webkit [199060] by Antti Koivisto
  • 3 edits
    2 adds in trunk

Shadow DOM: :host() From The First Shadow Context Should Not Style All Shadow Context
​https://bugs.webkit.org/show_bug.cgi?id=156235
<rdar://problem/24668206>

Reviewed by Andreas Kling.

Source/WebCore:

Test: fast/shadow-dom/host-style-sharing.html

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::resolve):
(WebCore::Style::SharingResolver::canShareStyleWithElement):

Disallow style sharing for shadow hosts affected by :host pseudo class rules.

LayoutTests:

  • fast/shadow-dom/host-style-sharing-expected.html: Added.
  • fast/shadow-dom/host-style-sharing.html: Added.
9:22 AM Changeset in webkit [199059] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Speculative build fix after r199043

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::wireFormatVersion):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):

  • bindings/js/SerializedScriptValue.h:

(WebCore::SerializedScriptValue::data):
(WebCore::SerializedScriptValue::hasBlobURLs):
(WebCore::SerializedScriptValue::createFromWireBytes):
Initializer lists weren't the problem. Missing precompiler macros was.

9:15 AM Changeset in webkit [199058] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Speculative build fix after r199043

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
Explicitly call constructor instead of using an initializer list.

8:48 AM Changeset in webkit [199057] by calvaris@igalia.com
  • 3 edits in trunk/Source/WebCore

Unreviewed build fix with GSTREAMER_GL active.

Caused by r198655.

(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp: Changed return type.
8:04 AM Changeset in webkit [199056] by Antti Koivisto
  • 10 edits in trunk/Source/WebCore

Render tree teardown should be iterative
​https://bugs.webkit.org/show_bug.cgi?id=156233

Reviewed by Andreas Kling.

  • dom/ContainerNode.cpp:

(WebCore::destroyRenderTreeIfNeeded):
(WebCore::ContainerNode::takeAllChildrenFrom):

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

  • dom/Element.cpp:

(WebCore::disconnectPseudoElement):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::prepareForDocumentSuspension):

  • mathml/MathMLSelectElement.cpp:

(WebCore::MathMLSelectElement::updateSelectedChild):

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateElementRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::updateBeforeOrAfterPseudoElement):
(WebCore::RenderTreeUpdater::tearDownRenderers):

Tear down render tree using ComposedTreeIterator for traversal.

(WebCore::RenderTreeUpdater::tearDownRenderer):

  • style/RenderTreeUpdater.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::ensurePlaceholderStyle):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::resetStyleForNonRenderedDescendants):
(WebCore::Style::affectsRenderedSubtree):
(WebCore::Style::SelectorFilterPusher::SelectorFilterPusher): Deleted.
(WebCore::Style::SelectorFilterPusher::push): Deleted.
(WebCore::Style::SelectorFilterPusher::~SelectorFilterPusher): Deleted.

Unused class.

(WebCore::Style::detachTextRenderer): Deleted.
(WebCore::Style::detachChildren): Deleted.
(WebCore::Style::detachShadowRoot): Deleted.
(WebCore::Style::detachSlotAssignees): Deleted.
(WebCore::Style::detachRenderTree): Deleted.

Remove the old recursive code.

  • style/StyleTreeResolver.h:
5:54 AM WebKitGTK/2.4.x edited by tpopela@redhat.com
(diff)
4:36 AM WebKitGTK/2.4.x edited by tpopela@redhat.com
(diff)
4:22 AM Changeset in webkit [199055] by commit-queue@webkit.org
  • 20 edits in trunk

[WebGL2] Allow enabling WebGL2 with a runtime flag
​https://bugs.webkit.org/show_bug.cgi?id=156166
<rdar://problem/25526929>

Source/WebCore:

Added new runtime flags for WebGL2.

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Dean Jackson.

  • bindings/generic/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setWebGL2Enabled):
(WebCore::RuntimeEnabledFeatures::webGL2Enabled):

Source/WebKit/mac:

Set the WebGL2 runtime flag based on preferences, disabled by default.

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Dean Jackson.

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

(+[WebPreferences initialize]):
(-[WebPreferences webGL2Enabled]):
(-[WebPreferences setWebGL2Enabled:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Set the WebGL2 runtime flag based on preferences, disabled by default.

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Dean Jackson.

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

(WKPreferencesSetWebGL2Enabled):
(WKPreferencesGetWebGL2Enabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

Removed the manual overrides of ENABLE_WEBGL2.

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Dean Jackson.

  • wtf/FeatureDefines.h:

Tools:

Always enable WebGL2 during testing.

Patch by Antoine Quint <Antoine Quint> on 2016-04-05
Reviewed by Dean Jackson.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setWebGL2Enabled):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
3:29 AM Changeset in webkit [199054] by Antti Koivisto
  • 25 edits
    1 delete in trunk

Use RenderTreeUpdater for text node mutations
​https://bugs.webkit.org/show_bug.cgi?id=156107

Reviewed by Andreas Kling.

Source/WebCore:

Use the new mechanism for updating render tree after text node content changes.

  • dom/CharacterData.cpp:

(WebCore::CharacterData::parserAppendData):
(WebCore::CharacterData::setDataAndUpdate):

  • dom/Text.cpp:

(WebCore::Text::createWithLengthLimit):
(WebCore::Text::updateRendererAfterContentChange):

Update using RenderTreeUpdater.

(WebCore::Text::formatForDebugger):

  • dom/Text.h:

(WebCore::Text::Text):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::resetStyleForNonRenderedDescendants):
(WebCore::Style::TreeResolver::resolveElement):
(WebCore::Style::elementImplicitVisibility):
(WebCore::Style::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded): Deleted.
(WebCore::Style::textRendererIsNeeded): Deleted.
(WebCore::Style::createTextRendererIfNeeded): Deleted.
(WebCore::Style::attachTextRenderer): Deleted.
(WebCore::Style::detachTextRenderer): Deleted.
(WebCore::Style::updateTextRendererAfterContentChange): Deleted.
(WebCore::Style::resolveTextNode): Deleted.

Kill the old code paths.

  • style/StyleTreeResolver.h:

LayoutTests:

Mostly just revert non-rendered whitespace related changes from the earlier patches.

  • editing/style/remove-underline-from-stylesheet-expected.txt:
  • editing/style/typing-style-003-expected.txt:
  • platform/ios-simulator/editing/style/typing-style-003-expected.txt: Removed.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.txt:
  • platform/mac/editing/inserting/editable-html-element-expected.txt:
  • platform/mac/editing/inserting/editing-empty-divs-expected.txt:
  • platform/mac/editing/inserting/insert-at-end-02-expected.txt:
  • platform/mac/editing/pasteboard/4989774-expected.txt:
  • platform/mac/editing/selection/4983858-expected.txt:
12:04 AM Changeset in webkit [199053] by Hunseop Jeong
  • 3 edits in trunk/Source/WebCore

[Curl][Soup] Fix the build after r199039
​https://bugs.webkit.org/show_bug.cgi?id=156229

Reviewed by Žan Doberšek.

  • platform/network/curl/SocketStreamHandle.h:

(WebCore::SocketStreamHandle::create):

  • platform/network/soup/SocketStreamHandle.h:

(WebCore::SocketStreamHandle::create):

Apr 4, 2016:

11:30 PM Changeset in webkit [199052] by zandobersek@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

Add missing EABI_32BIT_DUMMY_ARG arguments for some callOperation(J_JITOperation_EGReoJ, ...) overloads
​https://bugs.webkit.org/show_bug.cgi?id=156161

Reviewed by Yusuke Suzuki.

r197641 added a couple of callOperation(J_JITOperation_EGReoJ, ...) overloads
that handle arguments split into the tag and the payload. The two were split
between the last argument register and the stack on 32-bit ARM EABI systems,
causing incorrect behavior.

Adding EABI_32BIT_DUMMY_ARG pushes the tag and payload together onto the
stack, removing the issue.

  • dfg/DFGSpeculativeJIT.h:

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

11:18 PM Changeset in webkit [199051] by bshafiei@apple.com
  • 3 edits in tags/Safari-602.1.26.0.2/Source/WebCore

Merged r198854. rdar://problem/25489003

11:17 PM Changeset in webkit [199050] by bshafiei@apple.com
  • 13 edits in tags/Safari-602.1.26.0.2/Source/WebCore

Merged r198850. rdar://problem/25489003

11:16 PM Changeset in webkit [199049] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.26.0.2/Source

Versioning.

11:15 PM Changeset in webkit [199048] by zandobersek@gmail.com
  • 4 edits
    2 adds in trunk/Source/WebKit2

[ThreadedCompositor] Move CompositingRunLoop class into a separate file
​https://bugs.webkit.org/show_bug.cgi?id=156170

Reviewed by Michael Catanzaro.

Move the CompositingRunLoop class from the ThreadedCompositor.cpp file
into its own implementation file, with the class declaration placed
into the accompanying header file. This follows the general rule of
keeping different class implementations in separate files.

No change in behavior, just refactoring.

  • PlatformGTK.cmake:
  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.cpp: Added.

(WebKit::CompositingRunLoop::CompositingRunLoop):
(WebKit::CompositingRunLoop::callOnCompositingRunLoop):
(WebKit::CompositingRunLoop::setUpdateTimer):
(WebKit::CompositingRunLoop::stopUpdateTimer):
(WebKit::CompositingRunLoop::updateTimerFired):

  • Shared/CoordinatedGraphics/threadedcompositor/CompositingRunLoop.h: Added.

(WebKit::CompositingRunLoop::runLoop):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::CompositingRunLoop::CompositingRunLoop): Deleted.
(WebKit::CompositingRunLoop::callOnCompositingRunLoop): Deleted.
(WebKit::CompositingRunLoop::setUpdateTimer): Deleted.
(WebKit::CompositingRunLoop::stopUpdateTimer): Deleted.
(WebKit::CompositingRunLoop::runLoop): Deleted.
(WebKit::CompositingRunLoop::updateTimerFired): Deleted.

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
11:14 PM Changeset in webkit [199047] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.26.0.2

New tag.

11:13 PM Changeset in webkit [199046] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebCore

Guard showGraphicsLayerTree() with ENABLE(TREE_DEBUGGING)
​https://bugs.webkit.org/show_bug.cgi?id=156157

Reviewed by Simon Fraser.

Mimic r181166 and guard the showGraphicsLayerTree() function with
ENABLE(TREE_DEBUGGING) guards, instead of !defined(NDEBUG). This
would enable invoking the function in release builds when the
ENABLE_TREE_DEBUGGING option is enabled, not limiting the function
to only debug builds.

  • platform/graphics/GraphicsLayer.cpp:
  • platform/graphics/GraphicsLayer.h:
11:11 PM Changeset in webkit [199045] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[TexMap] Improve viewport array access in TextureMapperGL::bindDefaultSurface()
​https://bugs.webkit.org/show_bug.cgi?id=156159

Reviewed by Antonio Gomes.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::bindDefaultSurface): Create a reference to the
viewport array in the TextureMapperGLData object. Inline the IntSize constructor
for the object that's passed to createProjectionMatrix(), and use the reference
to access all four elements of the array as necessary.

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

[TexMap] resolveOverlaps() should be passed-in the first Region parameter via a reference
​https://bugs.webkit.org/show_bug.cgi?id=156158

Reviewed by Antonio Gomes.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::resolveOverlaps): Don't copy the Region object that's passed through
the first parameter by accepting a reference to the object instead. This does
modify the passed-in object, but these modifications don't have any effect on
any state via the call sites in TextureMapperLayer::computeOverlapRegions().

10:47 PM Changeset in webkit [199043] by beidson@apple.com
  • 26 edits
    2 copies in trunk/Source

Modern IDB: Dump blobs to disk before storing them in an object store.
​https://bugs.webkit.org/show_bug.cgi?id=156068
Source/WebCore:

Reviewed by Alex Christensen.

No new tests (Under development, no observable change in behavior yet).

  • WebCore.xcodeproj/project.pbxproj:
  • CMakeLists.txt:
  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::putOrAddOnServer):

  • Modules/indexeddb/IDBValue.cpp: Copied from Source/WebCore/platform/ScopeGuard.h.

(WebCore::IDBValue::IDBValue):

  • Modules/indexeddb/IDBValue.h: Copied from Source/WebCore/platform/ScopeGuard.h.
  • Modules/indexeddb/client/IDBConnectionToServer.cpp:

(WebCore::IDBClient::IDBConnectionToServer::putOrAdd):

  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/TransactionOperation.h:
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::SerializedScriptValue):
(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):
(WebCore::SerializedScriptValue::addBlobURL): Deleted.

  • bindings/js/SerializedScriptValue.h:
  • platform/FileSystem.cpp:

(WebCore::appendFileContentsToFileHandle):

  • platform/FileSystem.h:
  • platform/ScopeGuard.h:
  • platform/network/BlobRegistry.h:
  • platform/network/BlobRegistryImpl.cpp:

(WebCore::blobUtilityQueue):
(WebCore::BlobRegistryImpl::writeBlobsToTemporaryFiles):

  • platform/network/BlobRegistryImpl.h:

Source/WebKit2:

Reviewed by Alex Christensen.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):

  • NetworkProcess/FileAPI/NetworkBlobRegistry.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in:
  • WebProcess/FileAPI/BlobRegistryProxy.cpp:

(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):

  • WebProcess/FileAPI/BlobRegistryProxy.h:
  • WebProcess/Network/NetworkProcessConnection.cpp:

(WebKit::NetworkProcessConnection::didClose):
(WebKit::NetworkProcessConnection::writeBlobsToTemporaryFiles):
(WebKit::NetworkProcessConnection::didWriteBlobsToTemporaryFiles):

  • WebProcess/Network/NetworkProcessConnection.h:
  • WebProcess/Network/NetworkProcessConnection.messages.in:
10:39 PM Changeset in webkit [199042] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Crash when playing <video> after playing Web Audio
​https://bugs.webkit.org/show_bug.cgi?id=156185
<rdar://problem/10177005>

Reviewed by Eric Carlson.

Off-by-one error in AudioDestinationIOS::render. The ivars m_firstSpareFrame and m_lastSpareFrame imply that
the sample range is inclusive, i.e. [m_firstSpareFrame .. m_lastSpareFrame], but the length of the range was
being calculated as if m_lastSpareFrame was exclusive; when the two were equal, the length was calculated as
0, rather than 1. This was caught by an ASSERT (and would have been caught by a downstream ASSERT had that one
not been present).

Fix the off-by-one by treating them as inclusive/exclusive--similar to C++ iterators--and renaming them to reflect
this: [m_startSpareFrame .. m_endSpareFrame). This corrects the "length" math which caused the crash.

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::render):

  • platform/audio/ios/AudioDestinationIOS.h:
10:20 PM Changeset in webkit [199041] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Uncaught Exception: Error: Can't make a ContentView for an unknown representedObject (ApplicationCacheManifest)
​https://bugs.webkit.org/show_bug.cgi?id=156139
<rdar://problem/25511926>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-04
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.createFromRepresentedObject):
Improve the error message to get the name of the represented object.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._isTreeElementWithoutRepresentedObject):
Treat ApplicationCacheManifestTreeElement like other Host elements. Nothing to save/show.

  • UserInterface/Views/ApplicationCacheManifestTreeElement.js:

(WebInspector.ApplicationCacheManifestTreeElement):

  • UserInterface/Views/DatabaseHostTreeElement.js:

(WebInspector.DatabaseHostTreeElement):

  • UserInterface/Views/IndexedDatabaseHostTreeElement.js:

(WebInspector.IndexedDatabaseHostTreeElement):
Auto-expand these folders, as they are not useful when collapsed.

9:22 PM Changeset in webkit [199040] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit2

[iOS] Allow clients in the bundle to know whether a field was focused by user interaction
​https://bugs.webkit.org/show_bug.cgi?id=156118

Patch by Chelsea Pugh <​cpugh@apple.com> on 2016-04-04
Reviewed by Dan Bernstein.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInFormDelegatePrivate.h: Add delegate method that takes userIsInteracting bool so that bundle clients get this information.
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm: Call API with userIsInteracting property if delegate implements it, otherwise call existing API if

userIsInteracting is true, as we previously did in WebKit::WebPage::elementDidFocus. Move FIXME from WebKit::WebPage::elementDidFocus to here, since we are checking userIsInteracting.

  • WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:

(API::InjectedBundle::FormClient::willBeginInputSession): Add userIsInteracting bool to arguments so we can use it for call to the new API as well as preserving behavior of the old API.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::elementDidFocus): Remove check if user is interacting and call willBeginInputSession unconditionally. Move FIXME to where we check
userIsInteracting. Pass m_userIsInteracting to willBeginInputSession so we can use it there.

9:12 PM Changeset in webkit [199039] by Brent Fulgham
  • 4 edits in trunk/Source/WebCore

Block plaintext WebSocket requests to domains under HSTS.
​https://bugs.webkit.org/show_bug.cgi?id=156049
<rdar://problem/13820000>

Patch by John Wilander <​wilander@apple.com> on 2016-04-04
Reviewed by Brent Fulgham.

No new tests because the way TLS is setup for layout tests doesn't allow the server to set HSTS for 127.0.0.1 nor localhost. This is tracked in <rdar://problem/25467825>.

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::connect):

  • Now sends usesEphemeralSession to SocketStreamHandle::create.
  • platform/network/cf/SocketStreamHandle.h:

(WebCore::SocketStreamHandle::create):

  • Added parameter usesEphemeralSession which it passes on to the SocketStreamHandle constructor.
  • platform/network/cf/SocketStreamHandleCFNet.cpp:

(WebCore::SocketStreamHandle::SocketStreamHandle):

  • Now blocks plaintext WebSocket connections for domains under HSTS if not in an ephemeral session.
9:04 PM Changeset in webkit [199038] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Make FrameView's exposedRect an Optional<>
​https://bugs.webkit.org/show_bug.cgi?id=156189

Reviewed by Tim Horton.

Instead of testing against isInfinite(), make FrameView::exposedRect() and the
member variable an Optional<FloatRect>.

  • page/FrameView.cpp:

(WebCore::FrameView::setExposedRect):

  • page/FrameView.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::computeTileCoverage):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::flushPendingLayerChanges):

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

Don't crash when rendering form controls with Display List Drawing enabled
​https://bugs.webkit.org/show_bug.cgi?id=156122

Reviewed by Sam Weinig.

Don't attempt to paint form controls if display-list drawing is enabled, since
doing so attempts to get at a CGContextRef that doens't exist.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::paint):

8:54 PM Changeset in webkit [199036] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[win] run-webkit-tests failed to launch DumpRenderTree
​https://bugs.webkit.org/show_bug.cgi?id=156150

Patch by Bill Ming <​mbbill@gmail.com> on 2016-04-04
Reviewed by Alex Christensen.

  • Tools/Scripts/webkitpy/port/base.py:
8:52 PM Changeset in webkit [199035] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Avoid copying ModuleLoaderObject.js to resources bundle
​https://bugs.webkit.org/show_bug.cgi?id=156188
<rdar://problem/25534383>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-04
Reviewed by Alexey Proskuryakov.

8:50 PM Changeset in webkit [199034] by Alan Bujtas
  • 35 edits in trunk

CSS Triangles Rendering Regression affecting CSS Ribbons.
​https://bugs.webkit.org/show_bug.cgi?id=156121

Reviewed by Simon Fraser.

Source/WebCore:

We use floored border width values for painting (see BorderEdge).
However border-box sizing is based on rounded border values. This mismatch could result in a 2 device pixel
gap when both top and bottom (or left and right) borders are present.

This patch applies flooring on the computed border width value.

It matches FireFox (44.0.2) behaviour (both by inspecting box-sizing visually and through getComputedStyle() values on border-width).

Covered by existing tests.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertLineWidth):

LayoutTests:

Rebeaseline to match current behaviour.

  • fast/inline/hidpi-inline-text-decoration-with-subpixel-value-expected.html:
  • platform/mac/css1/units/length_units-expected.txt:
  • platform/mac/fast/css/bidi-override-in-anonymous-block-expected.txt:
  • platform/mac/fast/multicol/span/anonymous-style-inheritance-expected.txt:
  • platform/mac/fast/repaint/repaint-during-scroll-with-zoom-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-initial-value-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-with-three-values-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-with-two-values-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-top-left-radius-values-003-expected.txt:
  • platform/mac/media/video-zoom-expected.txt:
  • platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/mac/svg/zoom/page/zoom-background-image-tiled-expected.txt:
  • platform/mac/svg/zoom/page/zoom-background-images-expected.txt:
  • platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt:
  • platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt:
  • platform/mac/svg/zoom/page/zoom-svg-float-border-padding-expected.txt:
  • platform/mac/svg/zoom/page/zoom-svg-through-object-with-auto-size-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug1055-2-expected.txt:
5:19 PM Changeset in webkit [199033] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

Unreviewed GTK build fix after r199020

  • UIProcess/API/gtk/WebKitUserContentManager.cpp:

(webkit_user_content_manager_register_script_message_handler):
(webkit_user_content_manager_unregister_script_message_handler):

5:14 PM Changeset in webkit [199032] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

2016-04-04 Geoffrey Garen <​ggaren@apple.com>

Unreviewed, rolling out r199016.
​https://bugs.webkit.org/show_bug.cgi?id=156140

"Regressed Octane and Kraken on the perf bots."

Reverted changeset:

CopiedBlock should be 16kB
​https://bugs.webkit.org/show_bug.cgi?id=156168
​http://trac.webkit.org/changeset/199016

5:12 PM Changeset in webkit [199031] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception in CSS with string "constructor" (WebInspector.Color.fromString())
​https://bugs.webkit.org/show_bug.cgi?id=156183
<rdar://problem/25539279>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-04
Reviewed by Brian Burg.

  • UserInterface/Models/Color.js:

(WebInspector.Color.fromString):
Fix the uncaught exception issue. Only look at own properties of
our keyword map to avoid values like "toString" and "constructor".

  • UserInterface/Debug/UncaughtExceptionReporter.js:

(handleError):
(handleUncaughtException):
(handleUncaughtExceptionRecord):
Generalize uncaught exception handler error sheet to get
exception records from both uncaught exceptions (window.onerror)
and general Runtime Error objects (TypeError, etc).

  • UserInterface/Base/Utilities.js:

(window.promiseLogError.window.promiseLogError):
Add a fallback log exception helper.

  • UserInterface/Controllers/AnalyzerManager.js:

(WebInspector.AnalyzerManager.prototype.getAnalyzerMessagesForSourceCode):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor):
Add catch handlers to Promises to log exceptions.

4:17 PM Changeset in webkit [199030] by d_russell@apple.com
  • 31 edits
    8 adds
    6 deletes in trunk

AX: new lines in content editable elements don't notify accessibility
​https://bugs.webkit.org/show_bug.cgi?id=153361

Reviewed by Ryosuke Niwa.

Relocate accessibility edit notification logic into higher level logic.
Typing notifications relocated into TypingCommand.
Cut & Paste notifications relocated into Editor.
Undo relocated into EditCommandComposition.

Tests: accessibility/mac/value-change/value-change-user-info-contenteditable.html

accessibility/mac/value-change/value-change-user-info-textarea.html
accessibility/mac/value-change/value-change-user-info-textfield.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:

(WebCore::AccessibilityReplacedText::AccessibilityReplacedText):
(WebCore::AccessibilityReplacedText::postTextStateChangeNotification):
(WebCore::AXObjectCache::postTextStateChangeNotification):
(WebCore::AXObjectCache::postTextReplacementNotification):

  • accessibility/AXObjectCache.h:

(WebCore::VisiblePositionIndexRange::isNull):
(WebCore::AccessibilityReplacedText::AccessibilityReplacedText):
(WebCore::AccessibilityReplacedText::replacedRange):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::listMarkerTextForNodeAndPosition):
(WebCore::AccessibilityObject::stringForVisiblePositionRange):

  • accessibility/AccessibilityObject.h:

(WebCore::VisiblePositionRange::VisiblePositionRange):

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):

  • editing/AppendNodeCommand.cpp:

(WebCore::AppendNodeCommand::doApply): Deleted.
(WebCore::AppendNodeCommand::doUnapply): Deleted.

  • editing/CompositeEditCommand.cpp:

(WebCore::AccessibilityUndoReplacedText::indexForVisiblePosition):
(WebCore::AccessibilityUndoReplacedText::confgureTextToBeDeletedByUnapplyIndexesWithEditCommandEndingSelection):
(WebCore::AccessibilityUndoReplacedText::confgureTextToBeDeletedByUnapplyStartIndexWithEditCommandStartingSelection):
(WebCore::AccessibilityUndoReplacedText::setTextInsertedByUnapplyRange):
(WebCore::AccessibilityUndoReplacedText::captureTextToBeDeletedByUnapply):
(WebCore::AccessibilityUndoReplacedText::captureTextToBeDeletedByReapply):
(WebCore::stringForVisiblePositionIndexRange):
(WebCore::AccessibilityUndoReplacedText::textInsertedByUnapply):
(WebCore::AccessibilityUndoReplacedText::textInsertedByReapply):
(WebCore::postTextStateChangeNotification):
(WebCore::AccessibilityUndoReplacedText::postTextStateChangeNotificationForUnapply):
(WebCore::AccessibilityUndoReplacedText::postTextStateChangeNotificationForReapply):
(WebCore::EditCommandComposition::EditCommandComposition):
(WebCore::EditCommandComposition::unapply):
(WebCore::EditCommandComposition::reapply):
(WebCore::EditCommandComposition::setStartingSelection):
(WebCore::EditCommandComposition::setEndingSelection):
(WebCore::EditCommandComposition::setTextInsertedByUnapplyRange):
(WebCore::CompositeEditCommand::removeNode):
(WebCore::CompositeEditCommand::replaceTextInNode):
(WebCore::deleteSelectionEditingActionForEditingAction):
(WebCore::CompositeEditCommand::deleteSelection):
(WebCore::CompositeEditCommand::applyStyle): Deleted.
(WebCore::CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren): Deleted.
(WebCore::CompositeEditCommand::inputText): Deleted.

  • editing/CompositeEditCommand.h:

(WebCore::AccessibilityUndoReplacedText::AccessibilityUndoReplacedText):

  • editing/DeleteFromTextNodeCommand.cpp:

(WebCore::DeleteFromTextNodeCommand::doApply): Deleted.
(WebCore::DeleteFromTextNodeCommand::getNodesInCommand): Deleted.

  • editing/DeleteFromTextNodeCommand.h:
  • editing/DictationCommand.cpp:

(WebCore::DictationCommand::doApply):

  • editing/EditCommand.cpp:

(WebCore::EditCommand::postTextStateChangeNotification):
(WebCore::SimpleEditCommand::SimpleEditCommand): Deleted.
(WebCore::SimpleEditCommand::doReapply): Deleted.
(WebCore::SimpleEditCommand::addNodeAndDescendants): Deleted.

  • editing/EditCommand.h:
  • editing/EditingAllInOne.cpp:
  • editing/Editor.cpp:

(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::appliedEditing):
(WebCore::Editor::unappliedEditing):
(WebCore::Editor::postTextStateChangeNotificationForCut):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::changeSelectionAfterCommand):
(WebCore::dispatchEditableContentChangedEvents): Deleted.
(WebCore::Editor::addTextToKillRing): Deleted.

  • editing/Editor.h:
  • editing/InsertIntoTextNodeCommand.cpp:

(WebCore::InsertIntoTextNodeCommand::doApply): Deleted.
(WebCore::InsertIntoTextNodeCommand::getNodesInCommand): Deleted.

  • editing/InsertNodeBeforeCommand.cpp:

(WebCore::InsertNodeBeforeCommand::doApply): Deleted.
(WebCore::InsertNodeBeforeCommand::doUnapply): Deleted.
(WebCore::InsertNodeBeforeCommand::getNodesInCommand): Deleted.

  • editing/RemoveNodeCommand.cpp:

(WebCore::RemoveNodeCommand::RemoveNodeCommand):

  • editing/RemoveNodeCommand.h:

(WebCore::RemoveNodeCommand::create):

  • editing/ReplaceDeleteFromTextNodeCommand.cpp: Removed.
  • editing/ReplaceDeleteFromTextNodeCommand.h: Removed.
  • editing/ReplaceInsertIntoTextNodeCommand.cpp: Removed.
  • editing/ReplaceInsertIntoTextNodeCommand.h: Removed.
  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
(WebCore::ReplaceSelectionCommand::performTrivialReplace):

  • editing/ReplaceSelectionCommand.h:

(WebCore::ReplaceSelectionCommand::visibleSelectionForInsertedText):

  • editing/TextInsertionBaseCommand.cpp:

(WebCore::TextInsertionBaseCommand::TextInsertionBaseCommand):

  • editing/TextInsertionBaseCommand.h:
  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::TypingCommand):
(WebCore::TypingCommand::insertText):
(WebCore::TypingCommand::insertLineBreak):
(WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
(WebCore::TypingCommand::insertParagraphSeparator):
(WebCore::TypingCommand::postTextStateChangeNotificationForDeletion):
(WebCore::TypingCommand::doApply):
(WebCore::TypingCommand::insertTextAndNotifyAccessibility):
(WebCore::TypingCommand::insertLineBreakAndNotifyAccessibility):
(WebCore::TypingCommand::insertParagraphSeparatorAndNotifyAccessibility):
(WebCore::TypingCommand::insertParagraphSeparatorInQuotedContentAndNotifyAccessibility):
(WebCore::TypingCommand::deleteKeyPressed):
(WebCore::TypingCommand::forwardDeleteKeyPressed):

  • editing/TypingCommand.h:
3:54 PM Changeset in webkit [199029] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

prepare-ChangeLog set endl incorrectly.
​https://bugs.webkit.org/show_bug.cgi?id=156151

Patch by Bill Ming <​mbbill@gmail.com> on 2016-04-04
Reviewed by Alex Christensen.

  • Tools/Scripts/prepare-ChangeLog:
3:47 PM Changeset in webkit [199028] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

CMake build fix.

  • PlatformMac.cmake:
3:28 PM Changeset in webkit [199027] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit2

Tapping on tabs in webpages caused WK crash at WebKit: WebKit::WebFrame::didReceivePolicyDecision
​https://bugs.webkit.org/show_bug.cgi?id=156119
<rdar://problem/20732167>

Reviewed by Andy Estes.

Protect the m_frame so that it is present for completion handlers.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

3:17 PM Changeset in webkit [199026] by d_russell@apple.com
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json

Unreviewed: Add Doug Russell as a commiter.

  • Scripts/webkitpy/common/config/contributors.json:
3:12 PM Changeset in webkit [199025] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC][x86] Fix an assertion in MacroAssembler::branch8()
​https://bugs.webkit.org/show_bug.cgi?id=156181

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-04-04
Reviewed by Geoffrey Garen.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::branch8):
The test was wrong because valid negative numbers have ones
in the top bits.

I replaced the assertion to be explicit about the valid range.

3:10 PM Changeset in webkit [199024] by dino@apple.com
  • 9 edits
    2 adds in trunk

Add color-gamut media query support
​https://bugs.webkit.org/show_bug.cgi?id=155994
<rdar://problem/23282326>

Reviewed by Darin Adler.

Source/WebCore:

Add the new CSS media query: color-gamut
​https://drafts.csswg.org/mediaqueries-4/#color-gamut

This ultimately calls into screenSupportsExtendedColor,
which has only been implemented on iOS at the moment.
All displays will match the "srgb" keyword, but only
iOS devices with an extended color screen will
match against "p3" (e.g. the iPad Pro 9.7").
Nothing will match against "rec2020".

Test: fast/media/mq-color-gamut.html

  • css/CSSValueKeywords.in: Add "p3" and "rec2020".
  • css/MediaFeatureNames.h: Add "color-gamut"
  • css/MediaQueryEvaluator.cpp:

(WebCore::color_gamutMediaFeatureEval): Call
screenSupportsExtendedColor to see if we're srgb or p3.

  • css/MediaQueryExp.cpp:

(WebCore::featureWithCSSValueID):

  • platform/efl/PlatformScreenEfl.cpp: Add empty implementation.

(WebCore::screenSupportsExtendedColor):

  • platform/gtk/PlatformScreenGtk.cpp: Ditto.

(WebCore::screenSupportsExtendedColor):

  • platform/win/PlatformScreenWin.cpp: Ditto.

(WebCore::screenSupportsExtendedColor):

LayoutTests:

New test for color-gamut.

  • fast/media/mq-color-gamut-expected.html: Added.
  • fast/media/mq-color-gamut.html: Added.
2:22 PM Changeset in webkit [199023] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Update feature status on anchor download attribute.

  • features.json:
2:18 PM Changeset in webkit [199022] by Beth Dakin
  • 20 edits in trunk/Source

Add some logic to decide when a video can control the videoControlsManager
​https://bugs.webkit.org/show_bug.cgi?id=156089
-and corresponding-
rdar://problem/23833752

Reviewed by Eric Carlson and Tim Horton.

Source/WebCore:

With this patch, a video can take over the videoControlsManager if all of
these conditions are met:
-Playback is permitted
-The video has a renderer
-The video is 400x300 or larger
AND
-The video has both audio and video

If those criteria are not met the video will still be allowed to take over
the videoControlsManager if:
-Playback is permitted
-The video has a renderer
-The video started playing because of a user gesture.

If multiple videos meet this criteria, then the video that most recently
started playing will take over the videoControlsManager.

We might consider more restrictions in the future, but this seems like a good
place to start.

Move all decisions about the videoControlsManager to updatePlayState()
instead of playInternal().

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal):

If the video will play after updatePlayState, then invoke
setUpVideoControlsManager() if canControlControlsManager() is true. If the
video will not be playing after updatePlayState, then check to see if
endedPlayback() is true. If it is, then invoke clearVideoControlsManager().
(WebCore::HTMLMediaElement::updatePlayState):

The logic for the heuristic is here:

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canControlControlsManager):

  • html/MediaElementSession.h:

New ChromeClient function clearVideoControlsManager().

  • page/ChromeClient.h:

Source/WebKit2:

The biggest change in WebKit2 is to push all of the logic for the
videoControlsManager into WebCore. With this change, WebCore will invoke
setUpVideoControlsManager() when there is a video to control the manager, and
it will call clearVideoControlsManager() when there is not.

Add clearVideoControlsManager().

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

(WebKit::WebVideoFullscreenManagerProxy::clearVideoControlsManager):

Re-name isPlayingMediaDidChange() to videoControlsManagerDidChange(). This
ties the logic to the lifetime of the videoControlsManager instead of
figuring it out in the UIProcess based on the media state.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::videoControlsManagerDidChange):
(WebKit::WebViewImpl::isPlayingMediaDidChange): Deleted.

  • UIProcess/PageClient.h:

Also change isPlayingVideoWithAudio() into hasActiveVideoForControlsManager()
Again, this ties the logic to the lifetime of the videoControlsManager
instead of figuring it out in the UIProcess based on the media state.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange):
(WebKit::WebPageProxy::videoControlsManagerDidChange):
(WebKit::WebPageProxy::hasActiveVideoForControlsManager):
(WebKit::WebPageProxy::isPlayingVideoWithAudio): Deleted.

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

(WebKit::PageClientImpl::videoControlsManagerDidChange):
(WebKit::PageClientImpl::isPlayingMediaDidChange): Deleted.

New WebChromeClient function clearVideoControlsManager().

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::clearVideoControlsManager):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Do the work to clear the videoControlsManager.

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

(WebKit::WebVideoFullscreenManager::clearVideoControlsManager):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):

2:09 PM Changeset in webkit [199021] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r198955): com.apple.WebKit.Networking.Development crashed in WebKit::NetworkLoad::setPendingDownloadID + 11
​https://bugs.webkit.org/show_bug.cgi?id=156177
<rdar://problem/25508037>

Reviewed by Alex Christensen.

We do not currently create a NetworkDataTask when we encounter a BLOB URL when building with
NETWORK_SESSION enabled. This causes us to crash when the download system attempts to work
with a BLOB URL.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::setPendingDownloadID): Add null check for m_task.
(WebKit::NetworkLoad::setPendingDownload): Ditto.

2:03 PM Changeset in webkit [199020] by weinig@apple.com
  • 30 edits in trunk

Add SPI to allow install script message handlers in isolated worlds
​https://bugs.webkit.org/show_bug.cgi?id=156153

Reviewed by Anders Carlsson.

Source/WebCore:

Added API Test: WKUserContentController.ScriptMessageHandlerBasicPostIsolatedWorld

  • Changes the signature of the method in UserContentProvider to get UserMessageHandlerDescriptors to match that of UserScripts and UserStyleSheets.
  • Removes the need for UserMessageHandlerDescriptor::Client by making UserMessageHandlerDescriptor directly subclassable.
  • Changes invalidation model of UserMessageHandlersNamespace to be more direct by allowing it to register for invalidation notifications, rather than always checking if handler has been removed on each invocation.
  • loader/EmptyClients.cpp:

Update for new signature.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
Switch to using forEachUserMessageHandler.

(WebCore::DOMWindow::webkitNamespace):
Pass the UserContentProvider to the namespace on creation, so the UserMessageHandlersNamespace
can use it to register to listen for UserMessageHandler changes.

  • page/UserContentController.h:
  • page/UserContentController.cpp:

(WebCore::UserContentController::forEachUserStyleSheet):
(WebCore::UserContentController::forEachUserMessageHandler):
(WebCore::UserContentController::addUserScript):
(WebCore::UserContentController::removeUserStyleSheets):
(WebCore::UserContentController::removeAllUserContent):
(WebCore::UserContentController::addUserMessageHandlerDescriptor): Deleted.
(WebCore::UserContentController::removeUserMessageHandlerDescriptor): Deleted.
(WebCore::UserContentController::addUserContentExtension): Deleted.
(WebCore::UserContentController::removeUserContentExtension): Deleted.
(WebCore::UserContentController::removeAllUserContentExtensions): Deleted.
Removed unused functions, all the UserMessageHandler and UserContentExtension ones. UserContentController
is only used for Legacy WebKit where those features are not exposed.

  • page/UserContentProvider.h:
  • page/UserContentProvider.cpp:

(WebCore::UserContentProvider::registerForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::unregisterForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::invalidateAllRegisteredUserMessageHandlerInvalidationClients):
(WebCore::UserContentProviderInvalidationClient::~UserContentProviderInvalidationClient):
Update signature for UserMessageHandlerDescriptor access to match UserScript and UserStyleSheet.
Adds explicit invalidation for UserMessageHandlers.

  • page/UserMessageHandler.cpp:

(WebCore::UserMessageHandler::UserMessageHandler):
(WebCore::UserMessageHandler::postMessage):
(WebCore::UserMessageHandler::name): Deleted.
(WebCore::UserMessageHandler::world): Deleted.

  • page/UserMessageHandler.h:

(WebCore::UserMessageHandler::descriptor):
(WebCore::UserMessageHandler::invalidateDescriptor):

  • page/UserMessageHandlerDescriptor.cpp:

(WebCore::UserMessageHandlerDescriptor::UserMessageHandlerDescriptor):
(WebCore::UserMessageHandlerDescriptor::~UserMessageHandlerDescriptor):
(WebCore::UserMessageHandlerDescriptor::name):
(WebCore::UserMessageHandlerDescriptor::world):

  • page/UserMessageHandlerDescriptor.h:

(WebCore::UserMessageHandlerDescriptor::Client::~Client): Deleted.
(WebCore::UserMessageHandlerDescriptor::create): Deleted.
(WebCore::UserMessageHandlerDescriptor::client): Deleted.
(WebCore::UserMessageHandlerDescriptor::invalidateClient): Deleted.
Simplify by removing the Client. Now, when the UserMessageHandlerDescriptor is no longer
active, it gets nulled out in the UserMessageHandler.

  • page/UserMessageHandlersNamespace.cpp:

(WebCore::UserMessageHandlersNamespace::UserMessageHandlersNamespace):
(WebCore::UserMessageHandlersNamespace::~UserMessageHandlersNamespace):
(WebCore::UserMessageHandlersNamespace::didInvalidate):
(WebCore::UserMessageHandlersNamespace::handler):

  • page/UserMessageHandlersNamespace.h:

Change the logic to listen for invalidations of the UserMessageHandlerDescriptor map. When it
is invalidated, re-build the map of cached UserMessageHandlers from the UserContentProvider,
and invalidate any remaining UserMessageHandlers that no longer exist in the UserContentProvider.

  • page/WebKitNamespace.cpp:

(WebCore::WebKitNamespace::WebKitNamespace):

  • page/WebKitNamespace.h:

(WebCore::WebKitNamespace::create):
Pass through the UserContentProvider.

Source/WebKit2:

  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/WebUserContentControllerDataTypes.cpp:

(WebKit::WebScriptMessageHandlerData::encode):
(WebKit::WebScriptMessageHandlerData::decode):

  • Shared/WebUserContentControllerDataTypes.h:

Add WebKit::WebScriptMessageHandlerData, matching WebKit::WebUserScriptData and
WebKit::WebUserStyleSheetData.

  • UIProcess/API/Cocoa/WKUserContentController.mm:

(-[WKUserContentController addScriptMessageHandler:name:]):
(-[WKUserContentController removeScriptMessageHandlerForName:]):
(-[WKUserContentController _removeAllUserStyleSheetsAssociatedWithUserContentWorld:]):
(-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]):
(-[WKUserContentController _removeScriptMessageHandlerForName:userContentWorld:]):
(-[WKUserContentController _removeAllScriptMessageHandlersAssociatedWithUserContentWorld:]):

  • UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:

Add SPI for adding and removing ScriptMessageHandlers associated with a world.

  • UIProcess/UserContent/WebScriptMessageHandler.cpp:

(WebKit::WebScriptMessageHandler::create):
(WebKit::WebScriptMessageHandler::WebScriptMessageHandler):
(WebKit::WebScriptMessageHandlerHandle::encode): Deleted.
(WebKit::WebScriptMessageHandlerHandle::decode): Deleted.

  • UIProcess/UserContent/WebScriptMessageHandler.h:

(WebKit::WebScriptMessageHandler::identifier):
(WebKit::WebScriptMessageHandler::name):
(WebKit::WebScriptMessageHandler::userContentWorld):
(WebKit::WebScriptMessageHandler::client):
(WebKit::WebScriptMessageHandler::handle): Deleted.
Add the world and move the data object to WebUserContentControllerDataTypes.h

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:

Update for worlds, matching UserScript/UserStyleSheet model.

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserMessageHandlerDescriptorProxy::WebUserMessageHandlerDescriptorProxy):
Change to inherit directly from WebCore::UserMessageHandlerDescriptor.

(WebKit::WebUserContentController::addUserScriptMessageHandlers):
(WebKit::WebUserContentController::removeUserScriptMessageHandler):
(WebKit::WebUserContentController::removeAllUserScriptMessageHandlers):
(WebKit::WebUserContentController::addUserScriptMessageHandlerInternal):
(WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
Add support for worlds, matching UserScript/UserStyleSheet model.

(WebKit::WebUserContentController::addUserStyleSheets):
Add missing call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages()

(WebKit::WebUserContentController::removeAllUserStyleSheets):
Switch to only calling invalidateInjectedStyleSheetCacheInAllFramesInAllPages() once
after the loop and only if any stylesheets were removed.

(WebKit::WebUserContentController::addUserStyleSheetInternal):
Remove call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages(), make
callers call it. This allows us to avoid calling it repeatedly in removeAllUserStyleSheets().

(WebKit::WebUserContentController::addUserStyleSheet):
Call invalidateInjectedStyleSheetCacheInAllFramesInAllPages() explicitly since it
is no longer called in addUserStyleSheetInternal().

(WebKit::WebUserContentController::forEachUserMessageHandler):
Implement by iterating the m_userMessageHandlers map.

  • WebProcess/UserContent/WebUserContentController.messages.in:

Update for worlds, matching UserScript/UserStyleSheet model.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:

Add new test, WKUserContentController.ScriptMessageHandlerBasicPostIsolatedWorld

1:45 PM Changeset in webkit [199019] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping crashing test fast/loader/opaque-base-url.html on Debug
​https://bugs.webkit.org/show_bug.cgi?id=156179

Unreviewed test gardening.

1:16 PM Changeset in webkit [199018] by jiewen_tan@apple.com
  • 3 edits in trunk/Tools

Build fix for r198956.

Unreviewed.

  • TestWebKitAPI/Tests/WebKit2Cocoa/LoadInvalidURLRequest.mm:

(-[LoadInvalidURLNavigationActionDelegate webView:didFailProvisionalNavigation:withError:]):

  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm:

(-[LoadInvalidURLWebFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):

1:01 PM Changeset in webkit [199017] by Chris Dumez
  • 10 edits
    2 adds in trunk

Regression(r196145): Crash in getOwnPropertyDescriptor on ​http://www.history.com/shows/vikings
​https://bugs.webkit.org/show_bug.cgi?id=156136
<rdar://problem/25410767>

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Add a few more identifiers for using in the generated bindings.

  • runtime/CommonIdentifiers.h:

Source/WebCore:

The page was crashing when doing the following:
Object.getOwnPropertyDescriptor(window, "indexedDB")

getOwnPropertyDescriptor() expected getDirect() to return a CustomGetterSetter for
CustomAccessors but it was not the case for window.indexedDB. The reason was that
window.indexedDB was a special property, which is not part of the static table but
returned by GetOwnPropertySlot() if IndexedDB feature is enabled. This weirdness
was due to our bindings generator not having proper support for [EnabledAtRuntime]
properties on Window.

This patch adds support for [EnabledAtRuntime] properties on Window by omitting
these properties from the static property table and then setting them at runtime
in JSDOMWindow::finishCreation() if the corresponding feature is enabled.
window.indexedDB now looks like a regular property when IndexedDB is enabled
and getOwnPropertyDescriptor() works as expected for this property.

Test: storage/indexeddb/indexeddb-getownpropertyDescriptor.html

  • Modules/indexeddb/DOMWindowIndexedDatabase.cpp:

(WebCore::DOMWindowIndexedDatabase::indexedDB):

  • Modules/indexeddb/DOMWindowIndexedDatabase.h:

The generated bindings pass DOMWindow by reference instead of pointer so update
the implementation accordingly.

  • Modules/indexeddb/DOMWindowIndexedDatabase.idl:

Add 'indexedDB' and 'webkitIndexedDB' properties and mark them as
[EnabledAtRuntime]. Now that the bindings generator correctly handles
[EnabledAtRuntime] properties on the Window, there is no need to
custom-handle them in JSDOMWindowCustom.

  • bindings/js/JSDOMWindowCustom.cpp:

Drop custom handling for 'indexedDB' and 'webkitIndexedDB' properties
in getOwnPropertySlot(). The generated bindings code now makes sure to
only set those properties on the Window if IndexedDB is enabled so we
can let the regular code path look up those properties.

  • bindings/scripts/CodeGeneratorJS.pm:

(GetJSCAttributesForAttribute):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateImplementation):
Add support for [EnabledAtRuntime] properties on DOMWindow. For such
properties, we do the following:

  1. Omit them from the static property table
  2. In JSDOMWindow::finishCreation(), dynamically add those properties at runtime if the corresponding feature is enabled.

Note that this works for constructors as well.

  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::assertIDBFactory):
Pass Window by reference instead of pointer.

LayoutTests:

Add a layout test to confirm that calling Object.getOwnPropertyDescriptor(window, "indexedDB")
does not crash and works as expected.

  • storage/indexeddb/indexeddb-getownpropertyDescriptor-expected.txt: Added.
  • storage/indexeddb/indexeddb-getownpropertyDescriptor.html: Added.
12:41 PM Changeset in webkit [199016] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

CopiedBlock should be 16kB
​https://bugs.webkit.org/show_bug.cgi?id=156168

Reviewed by Mark Lam.

MarkedBlock is 16kB, and bmalloc's largest fast-path allocation is 16kB,
and the largest page size on Apple devices is 16kB -- so this change
should improve sharing and recycling and keep us on the fast path more.

32kB is also super aggro. At 16kB, we support allocations up to 8kB,
which covers 99.3% of allocations on facebook.com. The 32kB block size
only covered an additional 0.2% of allocations.

  • heap/CopiedBlock.h:
12:41 PM Changeset in webkit [199015] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Addressing post-review feedback on r198970
​https://bugs.webkit.org/show_bug.cgi?id=156123

Unreviewed.

  • platform/text/BidiResolver.h:

(WebCore::BidiCharacterRun::~BidiCharacterRun):

12:39 PM Changeset in webkit [199014] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[SVG -> OTF Converter] Crash when trying to re-convert a previously-failed font conversion
​https://bugs.webkit.org/show_bug.cgi?id=156175
<rdar://problem/25130547>

Reviewed by David Kilzer.

m_externalSVGFontElement points inside the document owned by m_externalSVGDocument.
However, when the m_externalSVGDocument is destroyed (due to a failed conversion),
we weren't resetting m_externalSVGFontElement. Then, when trying to re-convert, we
were using the fact that m_externalSVGFontElement is non-null to mean it's valid.

Test: fast/text/svg-font-invalid-glyph-path-failure.html (Under GuardMalloc)

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

11:35 AM Changeset in webkit [199013] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking plugins/focus.html as flaky on mac
​https://bugs.webkit.org/show_bug.cgi?id=156174

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:30 AM Changeset in webkit [199012] by andersca@apple.com
  • 4 edits in trunk/Source/WebCore

Properly generate static functions that return Promises
​https://bugs.webkit.org/show_bug.cgi?id=156169

Reviewed by Sam Weinig.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateReturnParameters):

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

(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithException):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):

  • bindings/scripts/test/TestObj.idl:
11:20 AM Changeset in webkit [199011] by jh718.park@samsung.com
  • 4 edits in trunk/Source

[EFL] Fix build break since r198800
​https://bugs.webkit.org/show_bug.cgi?id=156011

Reviewed by Alex Christensen.

Source/WebCore:

  • PlatformEfl.cmake: Remove temorary statement which was applied to avoid build failure of Efl port.

Source/WebKit2:

  • CMakeLists.txt: Currently circular dependency state exists between WebCoreDerivedSources and WebCore targets.

By adding -Wl,--start-group -Wl,--end-group linker option, we can resolve this problem.
In case there is no such circular dependency, this linker option does nothing.

11:02 AM Changeset in webkit [199010] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/scrolling/rtl-scrollbars-animation-property.html for Windows

Unreviewed test gardening

  • platform/win/fast/scrolling/rtl-scrollbars-animation-property-expected.txt:
10:44 AM Changeset in webkit [199009] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[win] prepare-ChangeLog should treat windows path differently.
​https://bugs.webkit.org/show_bug.cgi?id=156120

Patch by Bill Ming <​mbbill@gmail.com> on 2016-04-04
Reviewed by Brent Fulgham.

  • Scripts/prepare-ChangeLog:
10:40 AM Changeset in webkit [199008] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Re-disable event dispatch assertions in RenderTreeUpdater::updateRenderTree
​https://bugs.webkit.org/show_bug.cgi?id=156172

Some ruby tests on iOS hit these.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

9:12 AM Changeset in webkit [199007] by commit-queue@webkit.org
  • 35 edits in trunk

REGRESSION(r198492): [GTK] The WEB_RTC flag was not correctly added in some situations
​https://bugs.webkit.org/show_bug.cgi?id=156164

Patch by Alejandro G. Castro <​alex@igalia.com> on 2016-04-04
Reviewed by Philippe Normand.

.:

Remove double space in the error message when openwebrtc is not present.

  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Replace WEBRTC with WEB_RTC, in the idls add the new option
UsePointersEvenForNonNullableObjectArguments to fix compilation.

  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCRtpReceiver.cpp:
  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpSender.cpp:
  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderReceiverBase.h:
  • Modules/mediastream/RTCSessionDescription.cpp:
  • Modules/mediastream/RTCSessionDescription.h:
  • Modules/mediastream/RTCStatsReport.cpp:
  • Modules/mediastream/RTCStatsResponse.cpp:
  • Modules/mediastream/RTCTrackEvent.cpp:
  • Modules/mediastream/RTCTrackEvent.h:
  • Modules/mediastream/SDPProcessor.cpp:
  • Modules/mediastream/SDPProcessor.h:
  • bindings/generic/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):

  • bindings/generic/RuntimeEnabledFeatures.h:
  • bindings/js/WebCoreJSBuiltinInternals.cpp:

(WebCore::JSBuiltinInternalFunctions::JSBuiltinInternalFunctions):
(WebCore::JSBuiltinInternalFunctions::visit):
(WebCore::JSBuiltinInternalFunctions::initialize):

  • bindings/js/WebCoreJSBuiltinInternals.h:
  • bindings/js/WebCoreJSBuiltins.h:

(WebCore::JSBuiltinFunctions::JSBuiltinFunctions):

  • platform/mediastream/RTCSessionDescriptionDescriptor.cpp:
  • platform/mediastream/RTCSessionDescriptionDescriptor.h:
  • platform/mediastream/RTCSessionDescriptionRequest.h:
  • platform/mediastream/RTCStatsRequest.h:
  • platform/mediastream/RTCStatsResponseBase.h:
  • platform/mediastream/RTCVoidRequest.h:
  • platform/mediastream/SDPProcessorScriptResource.cpp:
  • platform/mediastream/SDPProcessorScriptResource.h:
  • platform/mock/TimerEventBasedMock.h:

Tools:

Enable the new WEB_RTC option by default for Gtk+.

  • Scripts/webkitperl/FeatureList.pm:
8:46 AM Changeset in webkit [199006] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[GTK] Added missing inspector files under UserInterface/Proxies.
​https://bugs.webkit.org/show_bug.cgi?id=156165

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-04-04
Reviewed by Michael Catanzaro.

  • PlatformGTK.cmake:
8:29 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
8:27 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
8:10 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:30 AM Changeset in webkit [199005] by commit-queue@webkit.org
  • 26 edits in trunk/Source

REGRESSION(r198792): [GTK] Inspector crashes in Inspector::Protocol::getEnumConstantValue since r198792
​https://bugs.webkit.org/show_bug.cgi?id=155745
<rdar://problem/25289456>

Patch by Carlos Garcia Campos <​cgarcia@igalia.com> on 2016-04-04
Reviewed by Brian Burg.

Source/JavaScriptCore:

The problem is that we are generating the Inspector::Protocol::getEnumConstantValue() method and the
enum_constant_values array for every framework that has enum values. So, in case of GTK port we have two
implementations, one for the inspector in JavaScriptCore and another one for Web Automation in WebKit2, but when
using the inspector in WebKit2 we always end up using the one in WebKit2. Since the enum_constant_values array
is smaller in WebKit2 than the one in JavaScriptCore, we crash every time we receive an enum value higher than
the array size. We need to disambiguate the getEnumConstantValue() generated and used for every framework, so we
can use a specific namespace for the enum conversion methods.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::breakpointActionTypeForString): Use Inspector::Protocol::InspectorHelpers.

  • inspector/scripts/codegen/cpp_generator.py:

(CppGenerator.helpers_namespace): Return the namespace name that should be used for the helper methods.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain): Use
CppGenerator.helpers_namespace() to use the right namespace when using getEnumConstantValue().
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command): Ditto.

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:

(CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event): Ditto.

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator.generate_output): Move declaration of getEnumConstantValue to a helper function.
(_generate_enum_constant_value_conversion_methods): Do not emit any code if there aren't enums and ensure all
conversion methods are declared inside the helpers namespace.
(_generate_builder_setter_for_member): Use CppGenerator.helpers_namespace() to use the right namespace when
using getEnumConstantValue().
(_generate_unchecked_setter_for_member): Ditto.
(_generate_declarations_for_enum_conversion_methods): Return a list instead of a string so that we can return an
empty list in case of not emitting any code. The caller will use extend() that has no effect when an empty list
is passed.

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator.generate_output): Use the new helper function to generate both the enum
mapping and conversion methods inside the helpers namespace.
(CppProtocolTypesImplementationGenerator._generate_enum_mapping): Return a list instead of a string so that we
can return an empty list in case of not emitting any code.
(CppProtocolTypesImplementationGenerator._generate_enum_mapping_and_conversion_methods): Ensure we only emit
code when there are enum values, and it's generated inside the helpers namespace.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Source/WebCore:

Use Inspector::Protocol::AutomationEnums namespace for getEnumConstantValue().

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::addRecordToTimeline):

Source/WebKit2:

Use Inspector::Protocol::AutomationEnums namespace for getEnumConstantValue().

  • UIProcess/Automation/WebAutomationSession.cpp:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithName):
(WebKit::WebAutomationSessionProxy::resolveParentFrame):
(WebKit::WebAutomationSessionProxy::computeElementLayout):

7:20 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:12 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:10 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
6:40 AM Changeset in webkit [199004] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Avoid double traversal in RenderTreeUpdater for slot roots
​https://bugs.webkit.org/show_bug.cgi?id=156110

Reviewed by Andreas Kling.

  • style/RenderTreeUpdater.cpp:

(WebCore::hasDisplayContents):
(WebCore::findRenderingRoot):
(WebCore::findRenderingRoots):
(WebCore::RenderTreeUpdater::commit):

If there are multiple roots that are slots we may end up updating the same rendering root multiple times.
Fix by deduplicating the roots.

(WebCore::RenderTreeUpdater::updateRenderTree):

Some cleanups.

5:58 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:56 AM Changeset in webkit [199003] by Antti Koivisto
  • 17 edits
    1 add in trunk/Source/WebCore

Enable assertions against DOM mutations in RenderTreeUpdater
​https://bugs.webkit.org/show_bug.cgi?id=156156

Reviewed by Andreas Kling.

Ensure we don't mutate DOM or dispatch events during render tree updates.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/ContainerNode.cpp:
  • dom/ContainerNode.h:

(WebCore::NoEventDispatchAssertion::NoEventDispatchAssertion): Deleted.
(WebCore::NoEventDispatchAssertion::~NoEventDispatchAssertion): Deleted.
(WebCore::NoEventDispatchAssertion::isEventDispatchForbidden): Deleted.

Move NoEventDispatchAssertion to a header of its own.

  • dom/NoEventDispatchAssertion.h: Added.

(WebCore::NoEventDispatchAssertion::NoEventDispatchAssertion):
(WebCore::NoEventDispatchAssertion::~NoEventDispatchAssertion):
(WebCore::NoEventDispatchAssertion::isEventDispatchForbidden):
(WebCore::NoEventDispatchAssertion::dropTemporarily):
(WebCore::NoEventDispatchAssertion::restoreDropped):

Add a way to disable event assertions temporarily.

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

Temporary SVG font document may get constructed during render tree update. These can't run scripts or generally
affect anything outside the font document as it does not have a frame. Disable event assertions temporarily.

Tested by svg/W3C-SVG-1.1/fonts-elem-07-b.svg

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

Enable assertions.

5:53 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:51 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
rotate gardnening logs by year (diff)
5:49 AM WebKitGTK/Gardening/Calendar/2015Logs created by clopez@igalia.com
5:47 AM WebKitGTK/Gardening/Calendar/2014Logs created by clopez@igalia.com
3:26 AM Changeset in webkit [199002] by commit-queue@webkit.org
  • 8 edits
    5 deletes in trunk/Source/WebKit2

Fix WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX after r196500
​https://bugs.webkit.org/show_bug.cgi?id=156060

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Darin Adler.

Commit r196500 was a bit too eager in removing the
platformGetLaunchOptions() callsites as non-mac platform still use
that in debug builds to attach debugging tools to spawned
subprocesses (eg. gdbserver).

Instead of reinstating them and relying on each subprocess type to
implement its own platformGetLaunchOptions() version (all alike),
avoid duplication and check the *_PROCESS_CMD_PREFIX environment
variables in a single place, ChildProcessProxy::getLaunchOptions().

Doing so also improves consistency in *_PROCESS_CMD_PREFIX support:
only WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX worked with
both the GTK and EFL ports while PLUGIN_PROCESS_CMD_PREFIX only
worked for EFL and there was no corresponding
DATABASE_PROCESS_CMD_PREFIX implementation.

  • UIProcess/ChildProcessProxy.cpp:

(WebKit::ChildProcessProxy::getLaunchOptions): Check the
appropriate *_PROCESS_CMD_PREFIX environment variable.

  • UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:

(WebKit::PluginProcessProxy::platformGetLaunchOptions): Drop
check for PLUGIN_PROCESS_COMMAND_PREFIX, now handled by
ChildProcessProxy::getLaunchOptions().

  • UIProcess/Databases/DatabaseProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessProxy.h: Drop platformGetLaunchOptions()

prototypes.

  • UIProcess/Network/soup/NetworkProcessProxySoup.cpp:
  • UIProcess/Databases/efl/DatabaseProcessProxyEfl.cpp:
  • UIProcess/Databases/gtk/DatabaseProcessProxyGtk.cpp:
  • UIProcess/efl/WebProcessProxyEfl.cpp:
  • UIProcess/gtk/WebProcessProxyGtk.cpp: Removed, they only contained

platformGetLaunchOptions() implementations.

  • PlatformEfl.cmake:
  • PlatformGTK.cmake: Drop removed files.
3:26 AM Changeset in webkit [199001] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[TexMap] Trim redundant guards
​https://bugs.webkit.org/show_bug.cgi?id=155927

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Žan Doberšek.

  • platform/graphics/GraphicsContext3DPrivate.cpp: Drop some redundant

checks in preprocessor guards.

3:21 AM Changeset in webkit [199000] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Rely on PlatformLayer to choose the TextureMapperPlatformLayer impl
​https://bugs.webkit.org/show_bug.cgi?id=155926

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Žan Doberšek.

Use PlatformLayer to replace a bunch of subtly different #ifdef
scattered over the codebase to choose between TextureMapperPlatformLayer
and TextureMapperPlatformLayerProxyProvider.

  • platform/graphics/GraphicsContext3DPrivate.h:
  • platform/graphics/cairo/ImageBufferDataCairo.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: Use

PlatformLayer.h an inherit from PlatformLayer instead of choosing the
right implementation every time.

  • platform/graphics/texmap/TextureMapperPlatformLayer.h: Add

TEXTURE_MAPPER guards to make it unconditionally usable.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h: Add

COORDINATED_GRAPHICS_THREADED guards to make it unconditionally
usable.

1:51 AM Changeset in webkit [198999] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed ARM buildfix after r198981.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::roundTowardZeroDouble):

1:25 AM Changeset in webkit [198998] by fred.wang@free.fr
  • 14 edits in trunk

Refactor RenderMathMLRow layout functions to avoid using flexbox
​https://bugs.webkit.org/show_bug.cgi?id=153208

Patch by Frederic Wang <​fwang@igalia.com> on 2016-04-04
Reviewed by Martin Robinson.

Source/WebCore:

This is the first patch to rewrite MathML layout without relying on
flexboxes or anonymous renderers.
We have done some temporary changes to allow overriding of
layoutBlock and to implement paintChildren, but this will be remove in a
follow-up patch. We also implement firstLineBaseline,
computePreferredLogicalWidths and layoutBlock of RenderMathMLRow without
using any flexbox functions. We adjust a bit the MathML CSS to take into
account these changes. Finally, we delete the unused helper function to
create anonymous RenderMathMLRow.

  • css/mathml.css:

(ms, mtext, mi, mn, mo, annotation, mtd): Prevent linebreaking inside token elements and table cells, otherwise this cause test failures with the new implementation of RenderMathMLRow.
(math, mrow, mfenced, merror, mphantom, mstyle, menclose): Deleted. We no longer rely on flexbox for baseline alignment of RenderMathMLRow.

  • rendering/RenderFlexibleBox.h: Allow overrider of the LayoutBlock for the moment.
  • rendering/RenderObject.h:

(WebCore::RenderObject::isRenderMathMLMenclose): Add helper function.

  • rendering/mathml/RenderMathMLMenclose.h: ditto.
  • rendering/mathml/RenderMathMLBlock.h:

(WebCore::ascentForChild): Add helper function to easily compute the ascent of a child.

  • rendering/mathml/RenderMathMLRow.cpp: Reimplement the class without using the flexbox layout.

(WebCore::RenderMathMLRow::firstLineBaseline): Implement the function to determine the baseline.
(WebCore::RenderMathMLRow::computeLineVerticalStretch): Add a function that browses non-stretchy children to determine the desired vertical stretch metrics.
(WebCore::RenderMathMLRow::computePreferredLogicalWidths): Implement the function to determine the preferred widths of the RenderMathMLRow.
(WebCore::RenderMathMLRow::layoutRowItems): Helper function that layouts children (stretching vertical operators if needed), calculate the exact logical width and position children.
(WebCore::RenderMathMLRow::layoutBlock): Implement the function to do the actual layout, which essentially calls layoutRowItems.
(WebCore::RenderMathMLRow::paintChildren): Temporarily implement this function, which just calls paintChild on each child.
(WebCore::RenderMathMLRow::createAnonymousWithParentRenderer): Deleted. We actually don't create anonymous RenderMathMLRow at the moment.
(WebCore::RenderMathMLRow::layout): Deleted.

  • rendering/mathml/RenderMathMLRow.h: Update declarations of functions.

LayoutTests:

Apply some small adjustments to MathML tests after the refactoring of RenderMathMLRow.

  • TestExpectations: Skip fractions-positions reftest for now. The small difference will be fixed after refactoring completely RenderMathMLFraction. We also ignore a test for margin/padding on MathML renderers.
  • platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png: Update reference to take into account small changes in stretch size.

The intended test behavior (reading variants and construction from the MATH table) is preserved.

  • platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: ditto.
  • platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png: ditto.
  • platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt: ditto.
12:53 AM Changeset in webkit [198997] by Chris Fleizach
  • 7 edits in trunk/Source/WebCore

AX: Consolidate radio button group member code with that in HTMLElement derivatives
​https://bugs.webkit.org/show_bug.cgi?id=155696
<rdar://problem/25260379>

Reviewed by Darin Adler.

Behavior covered by existing tests.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers):

  • dom/CheckedRadioButtons.cpp:

(WebCore::RadioButtonGroup::isValid):
(WebCore::RadioButtonGroup::members):
(WebCore::RadioButtonGroup::setCheckedButton):
(WebCore::CheckedRadioButtons::addButton):
(WebCore::CheckedRadioButtons::groupMembers):
(WebCore::CheckedRadioButtons::updateCheckedState):

  • dom/CheckedRadioButtons.h:
  • dom/Range.h:

(WebCore::documentOrderComparator):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::isInRequiredRadioButtonGroup):
(WebCore::HTMLInputElement::radioButtonGroup):
(WebCore::HTMLInputElement::checkedRadioButtonForGroup):

  • html/HTMLInputElement.h:
12:42 AM Changeset in webkit [198996] by Hunseop Jeong
  • 10 edits
    2 adds in trunk/LayoutTests

[EFL] Unreviewed EFL Gardening on 4th Apr.

Rebaseline some unexpected failures.

  • platform/efl/editing/execCommand/5481523-expected.txt: Rebaseline after r195740
  • platform/efl/fast/css/layerZOrderCrash-expected.txt: Rebaseline after r195740
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-center-expected.txt: Rebaseline after r187380
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-right-expected.txt: Rebaseline after r187380
  • platform/efl/fast/css/word-space-extra-expected.txt: Rebaseline after r192660
  • platform/efl/fast/table/click-near-anonymous-table-expected.txt: Rebaseline after r195740
  • platform/efl/fast/text/svg-font-face-with-kerning-expected.txt: Added. Rebaseline after r182620
  • platform/efl/fast/text/textIteratorNilRenderer-expected.txt: Rebaseline after r195740
  • platform/efl/fast/text/trak-optimizeLegibility-expected.txt: Added. Rebaseline after r191623
  • platform/efl/fast/transforms/bounding-rect-zoom-expected.txt: Rebaseline after r191623
  • platform/efl/svg/wicd/test-rightsizing-b-expected.txt: Rebaseline after r182620

Apr 3, 2016:

10:26 PM Changeset in webkit [198995] by ggaren@apple.com
  • 13 edits in trunk/Source/bmalloc

bmalloc: segregate small and large objects again, and allocate more objects on the small path
​https://bugs.webkit.org/show_bug.cgi?id=156152

Reviewed by Sam Weinig.

Microbenchmark data suggested that it was a good idea for small and large
objects to share memory. But r198675 did not improve memory use in
full browser benchmarks.

This patch reverts to segregating small and large objects -- but without
going back to doubled VM usage -- in order to capture a few benefits:

(*) Small pages fragment the large heap. Separating them out saves a lot
of memory in our worst case fragmentation recording:

nimlang 276,076kB 209,636kB 1.32x smaller

(*) Small objects are common enough that even their slow paths benefit
from simpler code:

Execution Time:

...
facebook 234ms 216ms 1.08x faster
reddit 114ms 108ms
1.06x faster
flickr 118ms 111ms 1.06x faster
theverge 146ms 140ms
1.04x faster
...
<arithmetic mean> 107ms 102ms 1.04x faster

(*) We can use less metadata:

Memory at End:

...
list_allocate 460kB 384kB 1.2x smaller
tree_allocate 492kB 424kB
1.16x smaller
tree_churn 480kB 404kB 1.19x smaller
fragment 532kB 452kB
1.18x smaller
fragment_iterate 712kB 588kB 1.21x smaller
medium 15,152kB 11,796kB
1.28x smaller
big 15,044kB 10,976kB 1.37x smaller
...
<arithmetic mean> 7,724kB 7,190kB
1.07x smaller

This patch also takes advantage of our support for varying the page size
at runtime by allocating more objects on the small object path:

medium 178ms 150ms 1.19x faster

Some microbenchmarks report memory use increases from this change -- like
they reported memory use decreases from r198675 -- but I'm ignoring them
for now because I expect our full browser memory benchmarks to confirm
that this patch is fine.

  • bmalloc/BumpAllocator.h:

(bmalloc::BumpAllocator::BumpAllocator): Use a full unsigned because we
can allocate objects larger than 16kB - 1, and a full unsigned does not
make BumpAllocator any larger on 64bit systems.

  • bmalloc/Chunk.h:

(bmalloc::Chunk::begin):
(bmalloc::Chunk::end):
(bmalloc::Chunk::size):
(bmalloc::Chunk::objectType): Store ObjectType in the Chunk, since it only
varies by Chunk now, and not from page to page within a Chunk. Also,
union together small and large object metadata, since we will only use
one or the other. This saves memory.

(bmalloc::Chunk::Chunk): Conditionalize initialization based on object
type, since only one kind of metadata or the other can be used at runtime.

(bmalloc::Object::Object):
(bmalloc::Object::begin):
(bmalloc::SmallPage::end): Deleted.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::initializeLineMetadata): Save a little space, since we
know that lines are only 256 bytes long.

(bmalloc::Heap::initializePageMetadata): Store a dynamic page size for
each size class. We used to use only one page size (the system page size)
but that limited our ability to allocate objects larger than 1kB on the
small object path. Now we can handle any object size we want by storing
objects of that size in a custom page size.

(bmalloc::Heap::concurrentScavenge):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeSmallPages): Revert to our old linked list
strategy for storing small pages.

(bmalloc::Heap::splitAndAllocate): Object type is per Chunk now.

(bmalloc::Heap::allocateLarge): Don't nuke the small page list when
allocating a large object because the two don't share memory anymore.

(bmalloc::Heap::allocateSmallPage): Revert to our old linked list
strategy for storing small pages.

(bmalloc::Heap::deallocateSmallLine): Don't return early in the case
where this is the first free object in the page. In the case of large-ish
objects, the first free object might also be the last free object,
since there's one object per page.

(bmalloc::Heap::allocateSmallBumpRangesByMetadata): Split out some helper
lambdas to make this code clearer.

(bmalloc::Heap::allocateSmallBumpRangesByObject): Added a fast scan
for objects larger than the line size. When multiple objects fit in
a single line, it's an optimization to scan a line at a time. But when
it's one object per line, or one object per 64 lines, it's better just
to scan an object at a time.

  • bmalloc/Heap.h:

(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::derefSmallLine): Match the changes above.

  • bmalloc/LineMetadata.h: We weren't using all those bits.
  • bmalloc/List.h:

(bmalloc::List::remove): Put a removed Node fully back into the default
(empty) state it was in before it entered the list. This change is not
observable, but it makes things clearer when you're debugging.

  • bmalloc/Object.h:

(bmalloc::Object::Object):
(bmalloc::Object::chunk):
(bmalloc::Object::offset):
(bmalloc::Object::operator+):
(bmalloc::Object::operator<=): Added some helpers for iterating by object.

  • bmalloc/ObjectType.cpp:

(bmalloc::objectType): Updated for API change.

  • bmalloc/Sizes.h:

(bmalloc::Sizes::maskObjectSize):
(bmalloc::Sizes::objectSize):
(bmalloc::Sizes::pageSize): Support more page sizes.

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage):
(bmalloc::SmallPage::objectType): Deleted.
(bmalloc::SmallPage::setObjectType): Deleted.
(bmalloc::SmallPage::smallPageCount): Deleted.
(bmalloc::SmallPage::setSmallPageCount): Deleted. Object type is per
Chunk now, and we can infer page count from size class.

  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::allocateChunk):
(bmalloc::VMHeap::allocateSmallChunk):

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateSmallPage):
(bmalloc::VMHeap::deallocateSmallPage):
(bmalloc::VMHeap::allocateLargeObject): Support our old behavior of
storing free pages in linked lists.

4:01 PM Changeset in webkit [198994] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Remove unneeded UsePointersEvenForNonNullableObjectArguments in WebKitCSSMatrix.idl
​https://bugs.webkit.org/show_bug.cgi?id=156142

Reviewed by Sam Weinig.

  • css/WebKitCSSMatrix.idl: Removed UsePointersEvenForNonNullableObjectArguments.

It was having no effect, I think because there were no non-nullable object arguments.

3:00 PM Changeset in webkit [198993] by clopez@igalia.com
  • 83 edits
    65 adds in trunk/LayoutTests

[GTK] Unreviewed GTK gardening.

Rebaseline many SVG tests after r197814 and mark new reported failures.

  • platform/gtk/TestExpectations:
  • platform/gtk/svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-01-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-01-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-03-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-felem-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-felem-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1-SE/interact-pointer-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/interact-pointer-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-control-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-control-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-marker-07-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-marker-07-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-17-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-17-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-20-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-20-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-pres-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-pres-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-09-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-09-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tref-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tref-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tspan-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tspan-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/animate-elem-24-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/filters-light-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/filters-light-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-06-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-07-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-08-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-align-08-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-align-08-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-fonts-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-fonts-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-01-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-04-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt: Added.
  • platform/gtk/svg/batik/text/textEffect-expected.png:
  • platform/gtk/svg/batik/text/textEffect-expected.txt: Added.
  • platform/gtk/svg/batik/text/textEffect3-expected.png:
  • platform/gtk/svg/batik/text/textEffect3-expected.txt: Added.
  • platform/gtk/svg/batik/text/textPosition2-expected.png:
  • platform/gtk/svg/batik/text/textPosition2-expected.txt:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.png:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.txt:
  • platform/gtk/svg/custom/glyph-selection-non-bmp-expected.png:
  • platform/gtk/svg/custom/glyph-selection-non-bmp-expected.txt:
  • platform/gtk/svg/custom/glyph-setting-d-attribute-expected.txt: Added.
  • platform/gtk/svg/custom/glyph-transformation-with-hkern-expected.png:
  • platform/gtk/svg/custom/glyph-transformation-with-hkern-expected.txt: Added.
  • platform/gtk/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.png:
  • platform/gtk/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-in-text-controls-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-no-latin-glyph-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-segmented-expected.png:
  • platform/gtk/svg/custom/svg-fonts-segmented-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-with-no-element-reference-expected.png:
  • platform/gtk/svg/custom/svg-fonts-with-no-element-reference-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-without-missing-glyph-expected.png:
  • platform/gtk/svg/custom/svg-fonts-without-missing-glyph-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-word-spacing-expected.png:
  • platform/gtk/svg/custom/svg-fonts-word-spacing-expected.txt:
  • platform/gtk/svg/foreignObject/text-tref-02-b-expected.png:
  • platform/gtk/svg/foreignObject/text-tref-02-b-expected.txt: Added.
  • platform/gtk/svg/text/text-overflow-ellipsis-svgfont-expected.png:
  • platform/gtk/svg/text/text-overflow-ellipsis-svgfont-expected.txt:
  • platform/gtk/svg/text/text-text-05-t-expected.png:
  • platform/gtk/svg/text/text-text-05-t-expected.txt: Added.
  • platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png:
  • platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt: Added.
  • platform/gtk/svg/wicd/test-rightsizing-b-expected.png:
  • platform/gtk/svg/wicd/test-rightsizing-b-expected.txt:
3:00 PM Changeset in webkit [198992] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Tighten ComposedTreeAncestorIterator to return Elements
​https://bugs.webkit.org/show_bug.cgi?id=150324

Reviewed by Andreas Kling.

Only other thing it could credibly return was Document. We can exclude it from the composed tree and avoid some casting.

  • dom/ComposedTreeAncestorIterator.h:

(WebCore::ComposedTreeAncestorIterator::operator*):
(WebCore::ComposedTreeAncestorIterator::operator->):
(WebCore::ComposedTreeAncestorIterator::operator==):
(WebCore::ComposedTreeAncestorIterator::operator!=):
(WebCore::ComposedTreeAncestorIterator::operator++):
(WebCore::ComposedTreeAncestorIterator::get):
(WebCore::ComposedTreeAncestorIterator::ComposedTreeAncestorIterator):
(WebCore::ComposedTreeAncestorIterator::traverseParent):
(WebCore::ComposedTreeAncestorAdapter::begin):
(WebCore::ComposedTreeAncestorAdapter::end):
(WebCore::ComposedTreeAncestorAdapter::first):

  • dom/Element.cpp:

(WebCore::Element::resolveComputedStyle):

  • dom/Node.cpp:

(WebCore::Node::updateAncestorsForStyleRecalc):
(WebCore::Node::setNeedsStyleRecalc):

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::isChildAllowed):
(WebCore::RenderNamedFlowThread::dispatchRegionOversetChangeEventIfNeeded):

  • style/RenderTreeUpdater.cpp:

(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):

2:19 PM Changeset in webkit [198991] by ddkilzer@apple.com
  • 1 edit in branches/safari-601.1.46-branch/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm

Fix build by moving elementRectInWindow() to where it is used.

1:19 PM Changeset in webkit [198990] by Antti Koivisto
  • 7 edits
    2 adds in trunk

Shadow DOM: Slot style is not computed
​https://bugs.webkit.org/show_bug.cgi?id=156144

Reviewed by Darin Adler.

Source/WebCore:

We don’t currently compute style for active slots. While slots have have implicit display:contents and don’t create
boxes themselves the style should still inherit to slotted children.

Basically

<slot style=“color:red”></slot>

should work as expected.

The implementation falls out from the new style resolve architecture and this patch mostly just removes the special
case code that prevented this from working.

Test: fast/shadow-dom/css-scoping-shadow-slot-style.html

  • html/HTMLSlotElement.h:

(WebCore::hasImplicitDisplayContents):

Move to a shared location.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::updateRenderTree):

Remove the special case code. What remains is a display:contents test for rendererless elements.

(WebCore::RenderTreeUpdater::updateElementRenderer):

Don't create renderers for (implicit) display:contents.

(WebCore::hasDisplayContents): Deleted.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::detachRenderTree):
(WebCore::Style::affectsRenderedSubtree):

Factor into a function.

(WebCore::Style::TreeResolver::resolveElement):

Remove the special case code.

(WebCore::Style::TreeResolver::resolveComposedTree):

Always resolve slots as we don't currently save their style.

LayoutTests:

  • fast/shadow-dom/css-scoping-shadow-slot-style-expected.html: Added.
  • fast/shadow-dom/css-scoping-shadow-slot-style.html: Added.
12:45 PM Changeset in webkit [198989] by sbarati@apple.com
  • 19 edits
    1 add in trunk

Implement Annex B.3.3 function hoisting rules for function code
​https://bugs.webkit.org/show_bug.cgi?id=155672

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

The spec states that functions declared inside a function
inside a block scope are subject to the rules of Annex B.3.3:
​https://tc39.github.io/ecma262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics

The rule states that functions declared in such blocks should
be local bindings of the block. If declaring the function's name
as a "var" in the function would not lead to a syntax error (i.e,
if we don't have a let/const/class variable with the same name)
and if we don't have a parameter with the same name, then we
implictly also declare the funcion name as a "var". When evaluating
the block statement we bind the hoisted "var" to be the value
of the local function binding.

There is one more thing we do for web compatibility. We allow
function declarations inside if/else statements that aren't
blocks. For such statements, we transform the code as if the
function were declared inside a block statement. For example:
function foo() { if (cond) function baz() { } }
is transformed into:
function foo() { if (cond) { function baz() { } } }

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::initializeBlockScopedFunctions):

  • bytecompiler/BytecodeGenerator.h:
  • parser/Nodes.cpp:

(JSC::ScopeNode::ScopeNode):
(JSC::ProgramNode::ProgramNode):
(JSC::ModuleProgramNode::ModuleProgramNode):
(JSC::EvalNode::EvalNode):
(JSC::FunctionNode::FunctionNode):

  • parser/Nodes.h:

(JSC::ScopeNode::hasCapturedVariables):
(JSC::ScopeNode::captures):
(JSC::ScopeNode::hasSloppyModeHoistedFunction):
(JSC::ScopeNode::varDeclarations):
(JSC::ProgramNode::startColumn):
(JSC::ProgramNode::endColumn):
(JSC::EvalNode::startColumn):
(JSC::EvalNode::endColumn):
(JSC::ModuleProgramNode::startColumn):
(JSC::ModuleProgramNode::endColumn):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::didFinishParsing):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseIfStatement):

  • parser/Parser.h:

(JSC::Scope::declareVariable):
(JSC::Scope::declareFunction):
(JSC::Scope::addSloppyModeHoistableFunctionCandidate):
(JSC::Scope::appendFunction):
(JSC::Scope::declareParameter):
(JSC::Scope::mergeInnerArrowFunctionFeatures):
(JSC::Scope::getSloppyModeHoistedFunctions):
(JSC::Scope::getCapturedVars):
(JSC::ScopeRef::containingScope):
(JSC::ScopeRef::operator==):
(JSC::ScopeRef::operator!=):
(JSC::Parser::declareFunction):
(JSC::Parser::hasDeclaredVariable):
(JSC::Parser::isFunctionMetadataNode):
(JSC::Parser::DepthManager::DepthManager):
(JSC::Parser<LexerType>::parse):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironmentEntry::isImported):
(JSC::VariableEnvironmentEntry::isImportedNamespace):
(JSC::VariableEnvironmentEntry::isFunction):
(JSC::VariableEnvironmentEntry::isParameter):
(JSC::VariableEnvironmentEntry::isSloppyModeHoistingCandidate):
(JSC::VariableEnvironmentEntry::setIsCaptured):
(JSC::VariableEnvironmentEntry::setIsConst):
(JSC::VariableEnvironmentEntry::setIsImported):
(JSC::VariableEnvironmentEntry::setIsImportedNamespace):
(JSC::VariableEnvironmentEntry::setIsFunction):
(JSC::VariableEnvironmentEntry::setIsParameter):
(JSC::VariableEnvironmentEntry::setIsSloppyModeHoistingCandidate):
(JSC::VariableEnvironmentEntry::clearIsVar):

  • runtime/CodeCache.h:

(JSC::SourceCodeValue::SourceCodeValue):

  • runtime/JSScope.cpp:
  • runtime/JSScope.h:
  • tests/es6.yaml:
  • tests/stress/sloppy-mode-function-hoisting.js: Added.

(assert):
(test):
(falsey):
(truthy):
(test.):
(test.a):
(test.f):
(test.let.funcs.f):
(test.catch.f):
(test.foo):
(test.bar):
(test.switch.case.0):
(test.else.f):
(test.b):
(test.c):
(test.d):
(test.e):
(test.g):
(test.h):
(test.i):
(test.j):
(test.k):
(test.l):
(test.m):
(test.n):
(test.o):
(test.p):
(test.q):
(test.r):
(test.s):
(test.t):
(test.u):
(test.v):
(test.w):
(test.x):
(test.y):
(test.z):
(foo):
(bar):
(falsey.bar):
(baz):
(falsey.baz):

LayoutTests:

  • js/kde/func-decl-expected.txt:
  • js/kde/script-tests/func-decl.js:
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:

(valid):
(onlyValidGlobally):
(onlyInvalidGlobally):
(invalid):

12:38 PM Changeset in webkit [198988] by mitz@apple.com
  • 2 edits in trunk/Tools

Use the correct value for the first nightly build with frameworks built for OS X 10.11.

  • Scripts/bisect-builds:

(makeNightlyList):

12:14 PM Changeset in webkit [198987] by mitz@apple.com
  • 2 edits in trunk/Tools

Made bisect-builds work again.

Rubber-stamped by Sam Weinig.

  • Scripts/bisect-builds:

Changed to use HTTPS to access nightly.webkit.org, and added a minimum revision for OS X 10.11.

11:56 AM Changeset in webkit [198986] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebCore

REGRESSION (r198653, r198864): http/tests/contentdispositionattachmentsandbox/referer-header-stripped*.html tests crashing due to unavailable SPI
<​http://webkit.org/b/156145>

Reviewed by Tim Horton.

Covered by existing tests under GuardMalloc:

http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-always.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-default.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-never.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-no-referrer-when-downgrade.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-no-referrer.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-origin.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-unsafe-url.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped.html

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::isDataDetectorLink):
(WebCore::DataDetection::shouldCancelDefaultAction):

  • Restore iOS 9.x code.

(WebCore::DataDetection::detectContentInRange):

  • Guard new SPI with version macros.
  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
  • Guard new SPI with version macros.
9:50 AM Changeset in webkit [198985] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, turn ES6 for-in loop test success
​https://bugs.webkit.org/show_bug.cgi?id=155451

  • tests/es6.yaml:
3:56 AM Changeset in webkit [198984] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. Bump GTK+ versions numbers.

  • Source/cmake/OptionsGTK.cmake:
3:50 AM Changeset in webkit [198983] by Carlos Garcia Campos
  • 9 edits in trunk/Source/WebCore

Replace all RenderTheme::popupInternalPadding methods with a single one returning a LengthBox
​https://bugs.webkit.org/show_bug.cgi?id=156098

Reviewed by Darin Adler.

The caller always wants all padding sides, so we can simplify both the caller and the implementations by using a
single method. It's also more efficient for the GTK+ port that creates and destroys the same style contexts on
every call.

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::adjustInnerStyle):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::popupInternalPaddingBox):
(WebCore::RenderTheme::popupInternalPaddingLeft): Deleted.
(WebCore::RenderTheme::popupInternalPaddingRight): Deleted.
(WebCore::RenderTheme::popupInternalPaddingTop): Deleted.
(WebCore::RenderTheme::popupInternalPaddingBottom): Deleted.

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::popupInternalPaddingBox):
(WebCore::getComboBoxMetrics): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingLeft): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingRight): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingTop): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingBottom): Deleted.

  • rendering/RenderThemeGtk.h:
  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::popupInternalPaddingBox):
(WebCore::RenderThemeIOS::popupInternalPaddingRight): Deleted.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::popupInternalPaddingBox):
(WebCore::RenderThemeMac::popupInternalPaddingLeft): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingRight): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingTop): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingBottom): Deleted.

2:56 AM Changeset in webkit [198982] by ddkilzer@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

REGRESSION (r198859): fast/scrolling/rtl-scrollbars-animation-property.html fails on non-Mac platforms
<​http://webkit.org/b/155962>

Unreviewed; land platform-specific test results.

  • platform/gtk/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
  • platform/ios-simulator/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
  • platform/win/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
1:37 AM Changeset in webkit [198981] by Yusuke Suzuki
  • 37 edits
    9 adds in trunk

[JSC] Add truncate operation (rounding to zero)
​https://bugs.webkit.org/show_bug.cgi?id=156072

Reviewed by Saam Barati.

Source/JavaScriptCore:

Add TruncIntrinsic for Math.trunc. DFG handles it as ArithTrunc.
In DFG, ArithTrunc behaves similar to ArithRound, ArithCeil, and ArithFloor.
ArithTrunc rounds the value towards zero.

And we rewrite @toInteger to use @trunc instead of @abs, @floor, negation and branch.
This is completely the same to what we do in JSValue::toInteger.

Since DFG recognize it, DFG can convert ArithTrunc to Identity if the given argument is Int32.
This is useful because almost all the argument is Int32 in @toLength -> @toInteger -> @trunc case.
In such cases, we can eliminate trunc() call.

As a bonus, to speed up Math.trunc operation, we use x86 SSE round and frintz in ARM64 for ArithRound.
In DFG, we emit these instructions. In FTL, we use Patchpoint to emit these instructions to avoid adding a new B3 IR.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::roundTowardZeroDouble):
(JSC::MacroAssemblerARM64::roundTowardZeroFloat):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::roundTowardZeroDouble):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::roundTowardZeroDouble):

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::roundTowardZeroDouble):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::roundTowardZeroDouble):
(JSC::MacroAssemblerX86Common::roundTowardZeroFloat):

  • builtins/GlobalObject.js:

(toInteger):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::roundShouldSpeculateInt32):

  • dfg/DFGNode.h:

(JSC::DFG::Node::arithNodeFlags):
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasArithRoundingMode):

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithRounding):

  • dfg/DFGSpeculativeJIT.h:
  • 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::compileArithTrunc):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::doubleTrunc):

  • ftl/FTLOutput.h:
  • jit/ThunkGenerators.cpp:

(JSC::truncThunkGenerator):

  • jit/ThunkGenerators.h:
  • runtime/CommonIdentifiers.h:
  • runtime/Intrinsic.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

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

(JSC::thunkGeneratorForIntrinsic):

  • tests/stress/math-rounding-infinity.js:

(testTrunc):

  • tests/stress/math-rounding-nan.js:

(testTrunc):

  • tests/stress/math-rounding-negative-zero.js:

(testTrunc):

  • tests/stress/math-trunc-arith-rounding-mode.js: Added.

(firstCareAboutZeroSecondDoesNot):
(firstDoNotCareAboutZeroSecondDoes):
(warmup):
(verifyNegativeZeroIsPreserved):

  • tests/stress/math-trunc-basics.js: Added.

(mathTruncOnIntegers):
(mathTruncOnDoubles):
(mathTruncOnBooleans):
(uselessMathTrunc):
(mathTruncWithOverflow):
(mathTruncConsumedAsDouble):
(mathTruncDoesNotCareAboutMinusZero):
(mathTruncNoArguments):
(mathTruncTooManyArguments):
(testMathTruncOnConstants):
(mathTruncStructTransition):
(Math.trunc):

  • tests/stress/math-trunc-should-be-truncate.js: Added.

(mathTrunc):

LayoutTests:

  • js/regress/many-foreach-calls-expected.txt: Added.
  • js/regress/many-foreach-calls.html: Added.
  • js/regress/math-trunc-expected.txt: Added.
  • js/regress/math-trunc.html: Added.
  • js/regress/script-tests/many-foreach-calls.js: Added.

forEach calls @toInteger. It includes @trunc now.
(i.array.forEach):

  • js/regress/script-tests/math-trunc.js: Added.

Call Math.trunc repeatedly.
(mathTruncInt):
(mathTruncDouble):
(mathTruncMixed):
(mathTruncDoubleDoesNotCareNegativeZero):

12:59 AM Changeset in webkit [198980] by gskachkov@gmail.com
  • 18 edits in trunk/Source/JavaScriptCore

[ES6] Class syntax. Access to new.target inside of the eval should not lead to SyntaxError
​https://bugs.webkit.org/show_bug.cgi?id=155545

Reviewed by Saam Barati.

Current patch allow to invoke new.target in eval if this eval is executed within function,
otherwise this will lead to Syntax error

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::getSlow):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::evalContextType):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::evalContextType):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluate):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • parser/Parser.cpp:

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

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::setEvalContextType):
(JSC::Scope::evalContextType):
(JSC::parse):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getModuleProgramCodeBlock):

  • runtime/CodeCache.h:
  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::EvalExecutable::create):
(JSC::EvalExecutable::EvalExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
(JSC::FunctionExecutable::FunctionExecutable):

  • runtime/Executable.h:

(JSC::ScriptExecutable::evalContextType):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createEvalCodeBlock):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • tests/stress/arrowfunction-lexical-bind-newtarget.js:
  • tests/stress/new-target.js:

Apr 2, 2016:

6:55 PM Changeset in webkit [198979] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r198976.
​https://bugs.webkit.org/show_bug.cgi?id=156140

"Causes js/regress/array-nonarray-polymorhpic-access.html to
crash." (Requested by ddkilzer on #webkit).

Reverted changeset:

"[JSC] Initialize SSA's live values at tail lazily"
​https://bugs.webkit.org/show_bug.cgi?id=156126
​http://trac.webkit.org/changeset/198976

6:22 PM Changeset in webkit [198978] by gskachkov@gmail.com
  • 3 edits in trunk/LayoutTests

[ES6] Arrow function syntax. Add missed test for using 'with' and 'this' in arrow function.
​https://bugs.webkit.org/show_bug.cgi?id=156059

Reviewed by Saam Barati.

Added test case that cover using 'with' with lexically bound 'this' in arrow function, this case was not
covered by tests for arrow function.

  • js/arrowfunction-lexical-bind-this-expected.txt:
  • js/script-tests/arrowfunction-lexical-bind-this.js:
3:04 PM Changeset in webkit [198977] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r198933): Web Inspector and inspected page hang in local builds
​https://bugs.webkit.org/show_bug.cgi?id=156138
<rdar://problem/25507724>

Reviewed by Alexey Proskuryakov.

Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process
read-only filesystem access and mach lookup capability to various Security framework files
and SecurityServer, respectively.

  • DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
2:16 PM Changeset in webkit [198976] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Initialize SSA's live values at tail lazily
​https://bugs.webkit.org/show_bug.cgi?id=156126

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-04-02
Reviewed by Mark Lam.

Setting up the clean state early looks harmless but it is
actually quite expensive.

The problem is AbstractValue is gigantic, you really want
to minimize how much you touch that memory.

By removing the initialization, most blocks only
get 2 or 3 accesses. Once to setup the value, and a few
queries for merging the current block with the successors.

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::endBasicBlock):
(JSC::DFG::setLiveValues): Deleted.
(JSC::DFG::InPlaceAbstractState::initialize): Deleted.

2:14 PM Changeset in webkit [198975] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Add an option to avoid disassembling baseline code for the JSC Profiler
​https://bugs.webkit.org/show_bug.cgi?id=156127

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-04-02
Reviewed by Mark Lam.

The profiler run out of memory on big programs if you dump
the baseline disassembly.

  • jit/JIT.cpp:

(JSC::JIT::privateCompile):

  • runtime/Options.h:
1:01 PM Changeset in webkit [198974] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Cleanup DataDetection.mm a little bit
​https://bugs.webkit.org/show_bug.cgi?id=156128

Patch by Sam Weinig <​sam@webkit.org> on 2016-04-02
Reviewed by Dan Bernstein.

  • html/HTMLAttributeNames.in:

Add x-apple-data-detectors, x-apple-data-detectors-type, x-apple-data-detectors-result

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::requiresExtendedContext):
(WebCore::DataDetection::dataDetectorIdentifier):
(WebCore::DataDetection::shouldCancelDefaultAction):
(WebCore::removeResultLinksFromAnchor):
(WebCore::searchForLinkRemovingExistingDDLinks):
Use new generated qualified name attributes, switch to using fastGetAttribute and
equalIgnoringASCIICase, and fix the position of some *s.

(WebCore::dataDetectorStringForPath):
Fix some *s and switch to using StringBuilder.

(WebCore::buildQuery):
Fix some *s.

(WebCore::DataDetection::detectContentInRange):
Use new generated qualified name attributes.

12:34 PM Changeset in webkit [198973] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Another attempt to fix the Apple Internal Yosemite and El Capitan builds following
<​http://trac.webkit.org/changeset/198933> (​https://bugs.webkit.org/show_bug.cgi?id=155455)

Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process
access to the passed user's cache directory and passed user's temporary directory so that
the Security framework can verify the code signature of the app that launched it when the
Database process is itself code signed.

  • DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
9:34 AM Changeset in webkit [198972] by mitz@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

jsc binary embedded in relocatable JavaScriptCore.framework links against system JavaScriptCore.framework
​https://bugs.webkit.org/show_bug.cgi?id=156134
<rdar://problem/25443824>

Reviewed by Mark Lam.

  • Configurations/JSC.xcconfig: Define WK_RELOCATABLE_FRAMEWORKS_LDFLAGS when building relocatable frameworks to include a -dyld_env option setting DYLD_FRAMEWORK_PATH to point to the directory containing JavaScript.framework, and add WK_RELOCATABLE_FRAMEWORKS_LDFLAGS to OTHER_LDFLAGS.
1:59 AM Changeset in webkit [198971] by ddkilzer@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r198963): css3/filters/backdrop/dynamic-backdrop-filter-change.html frequently fails
<​http://webkit.org/b/149319>

Unreviewed attempt to fix layout test.

  • css3/filters/backdrop/dynamic-backdrop-filter-change.html:

Use testRunner.notifyDone() after testRunner.waitUntilDone().

12:01 AM Changeset in webkit [198970] by mmaxfield@apple.com
  • 9 edits in trunk/Source/WebCore

Migrate BidiRunList and BidiRun to automatic memory management
​https://bugs.webkit.org/show_bug.cgi?id=156123

Reviewed by Simon Fraser.

BidiRunList, BidiRun, and BidiCharacterRun have all been doing manual
"new"s and "delete"s for years. This patch migrates those classes to
using std::unique_ptr.

No new tests because there is no behavior change.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawBidiText):

  • platform/text/BidiResolver.h:

(WebCore::BidiCharacterRun::BidiCharacterRun):
(WebCore::BidiCharacterRun::next):
(WebCore::BidiCharacterRun::takeNext):
(WebCore::BidiCharacterRun::setNext):
(WebCore::Subclass>::appendRunInternal):

  • platform/text/BidiRunList.h:

(WebCore::BidiRunList::BidiRunList):
(WebCore::BidiRunList::firstRun):
(WebCore::BidiRunList<Run>::appendRun):
(WebCore::BidiRunList<Run>::prependRun):
(WebCore::BidiRunList<Run>::moveRunToEnd):
(WebCore::BidiRunList<Run>::moveRunToBeginning):
(WebCore::BidiRunList<Run>::replaceRunWithRuns):
(WebCore::BidiRunList<Run>::clear):
(WebCore::BidiRunList<Run>::reverseRuns):
(WebCore::BidiRunList<Run>::clearWithoutDestroyingRuns): Deleted.
(WebCore::BidiRunList<Run>::deleteRuns): Deleted.

  • rendering/BidiRun.cpp:

(WebCore::BidiRun::takeNext):

  • rendering/BidiRun.h:

(WebCore::BidiRun::next):
(WebCore::BidiRun::takeNext):

  • rendering/InlineIterator.h:

(WebCore::addPlaceholderRunForIsolatedInline):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::createRun):
(WebCore::RenderBlockFlow::handleTrailingSpaces):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::skipLeadingWhitespace):

Apr 1, 2016:

11:38 PM MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
10:41 PM Changeset in webkit [198969] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed follow-up to r198968. Remove debug statements.

  • Scripts/remove-console-asserts.pl:

(removeConsoleAssertsInFile):

10:23 PM Changeset in webkit [198968] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove console.asserts from Worker code in optimized builds
​https://bugs.webkit.org/show_bug.cgi?id=156124
<rdar://problem/25505031>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-01
Reviewed by Timothy Hatcher.

  • Scripts/copy-user-interface-resources.pl:

Remove console asserts on the Worker results directory.

  • Scripts/remove-console-asserts.pl:

(removeConsoleAssertsInFile):
(removeConsoleAssertsInDirectory):
Refactor into functions for a file and a file for
recursing through directories.

8:21 PM Changeset in webkit [198967] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Attempt to fix the Apple Internal Yosemite and El Capitan builds following
<​http://trac.webkit.org/changeset/198933> (​https://bugs.webkit.org/show_bug.cgi?id=155455)
<rdar://problem/25502181>

Only check the code signature of the client app if the "user-directory-suffix" sandbox
initialization parameter will not be used. This parameter is only used/passed as an
initialization parameter if the client app is not sandboxed, which seems sufficient
criterion to determine whether it is safe to honor it.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::initializeSandbox):

7:30 PM Changeset in webkit [198966] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.26.0.1/Source

Versioning.

7:28 PM Changeset in webkit [198965] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.26.0.1

New tag.

6:48 PM Changeset in webkit [198964] by jiewen_tan@apple.com
  • 3 edits
    1 move in trunk/Tools

Build fix for r198956.

Unreviewed.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLChange.mm.

(-[ProvisionalURLNotChangeController webView:didFinishNavigation:]):
(-[ProvisionalURLNotChangeController webView:didFailProvisionalNavigation:withError:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:

(-[LoadInvalidSchemeDelegate browsingContextController:didFailProvisionalLoadWithError:]):
(TestWebKitAPI::TEST):

5:19 PM Changeset in webkit [198963] by Simon Fraser
  • 3 edits
    2 adds in trunk

Backdrop Filter should repaint when changed via script
​https://bugs.webkit.org/show_bug.cgi?id=149319
rdar://problem/22749892

Reviewed by Tim Horton.

Source/WebCore:

When backdrop filters change, we need to trigger a recomposite, just as we do
for filters. It's ok to re-use ContextSensitivePropertyFilter because
adjustStyleDifference() does the right thing.

Test: css3/filters/backdrop/dynamic-backdrop-filter-change.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayerRepaint):

LayoutTests:

  • css3/filters/backdrop/dynamic-backdrop-filter-change-expected.html: Added.
  • css3/filters/backdrop/dynamic-backdrop-filter-change.html: Added.
5:09 PM Changeset in webkit [198962] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

5:08 PM Changeset in webkit [198961] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

4:52 PM Changeset in webkit [198960] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.125

New tag.

4:51 PM Changeset in webkit [198959] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.6.14

New tag.

4:25 PM Changeset in webkit [198958] by Alan Bujtas
  • 3 edits
    2 adds in trunk

putImageData leaves visible artifacts on retina display
​https://bugs.webkit.org/show_bug.cgi?id=156039
<rdar://problem/25482243>

Reviewed by Simon Fraser.

Inflate the repaint rect to cover anti-aliasing bits.

Source/WebCore:

Test: fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind.html

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::didDraw):

LayoutTests:

  • fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind-expected.html: Added.
  • fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind.html: Added.
2:44 PM Changeset in webkit [198957] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source/WebCore

Roll out r198035 via r198903. rdar://problem/25467558

2:40 PM Changeset in webkit [198956] by jiewen_tan@apple.com
  • 9 edits
    3 adds in trunk

WebKit should dispatchDidFailProvisionalLoad while loading invalid URLs
​https://bugs.webkit.org/show_bug.cgi?id=155995
<rdar://problem/14967004>

Reviewed by Andy Estes.

Source/WebCore:

Added API Tests.

If a loading request contains an invalid URL, DocumentLoader will now dispatch
cannotShowURLError to the clients.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource):

Source/WebKit2:

Ensure that alternative HTML string will not be loaded back to back for
failing provisional loads.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::didFinishLoadForFrame):

  • UIProcess/WebPageProxy.h:

Tools:

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

(-[LoadAlternateHTMLStringFromProvisionalLoadErrorController webView:didFailProvisionalNavigation:withError:]):
(-[LoadAlternateHTMLStringFromProvisionalLoadErrorController webView:didStartProvisionalNavigation:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/LoadInvalidURLRequest.mm: Added.

(literalURL):
(-[LoadInvalidURLNavigationActionDelegate webView:didCommitNavigation:]):
(-[LoadInvalidURLNavigationActionDelegate webView:didFailProvisionalNavigation:withError:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.html: Added.
  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm: Added.

(-[LoadInvalidURLWebFrameLoadDelegate webView:didCommitLoadForFrame:]):
(-[LoadInvalidURLWebFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
(TestWebKitAPI::TEST):

2:10 PM Changeset in webkit [198955] by Brent Fulgham
  • 23 edits
    9 adds in trunk

Confirm <a download> satisfies specification criteria
​https://bugs.webkit.org/show_bug.cgi?id=156057

Reviewed by Andy Estes.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:

(WKBundleNavigationActionGetHasDownloadAttribute): Added.

  • WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:

(WebKit::InjectedBundleNavigationAction::hasDownloadAttribute): Added.

Tools:

Revise WebKitTestRunner:
(1) Provide a download client delegate.
(2) Teach WKTR to wait to finish a test until a download finishes.
(3) Allow WKTR to notify the current TestRunner that it can finish.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage): Update to recognize a new
message "NotifyDownloadDone".

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::decidePolicyForNavigationAction): Handle 'download'
attribute case.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::waitUntilDownload): Added.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

(WTR::TestRunner::shouldFinishAfterDownload): Added.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createWebViewWithOptions): Set up the download client.
(WTR::TestController::downloadDidStart): Added.
(WTR::TestController::decideDestinationWithSuggestedFilename): Added.
(WTR::TestController::downloadDidFinish): Added.
(WTR::TestController::downloadDidFail): Added.
(WTR::TestController::downloadDidCancel): Added.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::notifyDownloadDone): Added.

  • WebKitTestRunner/TestInvocation.h:

LayoutTests:

Import <a download> tests from the Blink project.

Based on a Blink change (patch by <​asanka@chromium.org>):
<​https://src.chromium.org/viewvc/blink?revision=172767&view=revision>

  • TestExpectations: Mark two expected failures with the new tests.
  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt: Updated for

expected output (blob URL currently not working).

  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt: Ditto.
  • http/tests/security/anchor-download-allow-blob-expected.txt: Added.
  • http/tests/security/anchor-download-allow-blob.html: Added.
  • http/tests/security/anchor-download-allow-data-expected.txt: Added.
  • http/tests/security/anchor-download-allow-data.html: Added.
  • http/tests/security/anchor-download-allow-sameorigin-expected.txt: Added.
  • http/tests/security/anchor-download-allow-sameorigin.html: Added.
  • http/tests/security/anchor-download-block-crossorigin-expected.txt: Added.
  • http/tests/security/anchor-download-block-crossorigin.html: Added.
  • http/tests/security/resources/attachment.php: Added.
  • platform/ios-simulator-wk1/TestExpectations: Disable download tests until WK1 support

is implemented.

  • platform/ios-simulator-wk2/TestExpectations: Disable download tests until

NETWORK_SESSION support exists.

  • platform/mac/TestExpectations: Reactivate the HTMLAnchorElement tests.
  • platform/mac-wk1/TestExpectations: Disable download tests until WK1 support

is implemented.

1:58 PM Changeset in webkit [198954] by Ryan Haddad
  • 4 edits in trunk/LayoutTests

Rebaseline tests added with r198951
​https://bugs.webkit.org/show_bug.cgi?id=156092

Unreviewed test gardening.

  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src-expected.txt:
12:20 PM Changeset in webkit [198953] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC][x86] Add the 3 operands form of floating point substraction
​https://bugs.webkit.org/show_bug.cgi?id=156095

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-04-01
Reviewed by Geoffrey Garen.

Same old, same old. Add the AVX form of subsd and subss.

Unfortunately, we cannot benefit from the 3 register form
in B3 yet because the Air script does not support CPU flags yet.
That can be fixed later.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::subDouble):
(JSC::MacroAssemblerX86Common::subFloat):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::vsubsd_rr):
(JSC::X86Assembler::subsd_mr):
(JSC::X86Assembler::vsubsd_mr):
(JSC::X86Assembler::vsubss_rr):
(JSC::X86Assembler::subss_mr):
(JSC::X86Assembler::vsubss_mr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • b3/air/AirOpcode.opcodes:
12:15 PM Changeset in webkit [198952] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Reset CSS spacing rules on the <math> element.
​https://bugs.webkit.org/show_bug.cgi?id=155433

Patch by Frederic Wang <​fwang@igalia.com> on 2016-04-01
Reviewed by Brent Fulgham.

Source/WebCore:

Test: mathml/presentation/css-spacing.html

When the authors has changed some CSS spacing rules on a page, they are currently inherited on MathML too, potentially causing broken math rendering.
For example, this caused a bug in Firefox on Wikipedia in the past. Hence we align on Gecko and just reset the CSS spacing rules by default. We also import Mozilla's test.

  • css/mathml.css:

(math): Set line-height, word-spacing and letter-spacing to normal.

LayoutTests:

We import a test from Mozilla to ensure that CSS spacing rules line-height, word-spacing and letter-spacing are by default reset to normal on the <math> element.

  • mathml/presentation/css-spacing-expected.html: Added.
  • mathml/presentation/css-spacing.html: Added.
11:40 AM Changeset in webkit [198951] by dbates@webkit.org
  • 6 edits
    6 adds in trunk

CSP: child-src violations reported as frame-src violation
​https://bugs.webkit.org/show_bug.cgi?id=156092
<rdar://problem/25478509>

Reviewed by Andy Estes.

Source/WebCore:

Tests: http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src.html

http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src.html
http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src.html

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowChildFrameFromSource): Determine the name of the effective violation
directive from the name of the violated directive. If the name of the violated directive is "frame-src"
then use that name for the name of the effective violated directive. Otherwise, use "child-src" for the
name of the effective violated directive. A byproduct of this decision is that we report child-src as the
effective violated directive when a frame load was blocked by the default-src directive. This seems reasonable
because directive frame-src is deprecated in Content Security Policy Level 2. The child-src directive is
its replacement.

LayoutTests:

  • TestExpectations: Mark the newly added tests as PASS so that we run them.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked-expected.txt: Substitute "child-src" for "frame-src" in the

expected console warning.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src.html: Added.
11:22 AM Changeset in webkit [198950] by dbates@webkit.org
  • 2 edits in trunk

Fix up ChangeLog entries for r198936 (​https://bugs.webkit.org/show_bug.cgi?id=156079) to reference
the update bug title that reflects that r198936 fixes the regression caused by r196012.

11:15 AM Changeset in webkit [198949] by adachan@apple.com
  • 2 edits in trunk/LayoutTests

Add a way to reset the eventTrigger in ControlsTest in LayoutTests/media/controls/controls-test-helpers.js
​https://bugs.webkit.org/show_bug.cgi?id=154616

Reviewed by Dean Jackson.

  • media/controls/controls-test-helpers.js:

(ControlsTest.prototype.resetEventTrigger):

10:55 AM Changeset in webkit [198948] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

CMake build fix.

  • PlatformMac.cmake:
9:45 AM Changeset in webkit [198947] by commit-queue@webkit.org
  • 19 edits
    1 copy
    1 add in trunk

Compile DumpRenderTree with CMake on Mac
​https://bugs.webkit.org/show_bug.cgi?id=156088

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-04-01
Reviewed by Brent Fulgham.

Source/WebCore:

  • PlatformMac.cmake:
  • platform/mock/mediasource/MockBox.cpp:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKit/mac:

  • Misc/WebKit.h:

Alphabetize headers.

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • UIProcess/API/Cocoa/WebKitLegacy.h: Added.

Tools:

  • CMakeLists.txt:
  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/DefaultPolicyDelegate.m:

(-[DefaultPolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):

  • DumpRenderTree/DumpRenderTreeFileDraggingSource.m:
  • DumpRenderTree/PlatformMac.cmake: Added.
  • DumpRenderTree/PlatformWin.cmake:
  • DumpRenderTree/mac/AppleScriptController.m:

(convertAEDescToObject):

  • DumpRenderTree/mac/DumpRenderTreeMain.mm:
  • DumpRenderTree/mac/LayoutTestHelper.m:
9:18 AM Changeset in webkit [198946] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking three media controls tests as flaky on El Capitan
​https://bugs.webkit.org/show_bug.cgi?id=156112

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:49 AM WebKitGTK/2.12.x edited by berto@igalia.com
(diff)
3:36 AM Changeset in webkit [198945] by berto@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Missing PATH_MAX definition
​https://bugs.webkit.org/show_bug.cgi?id=156102

Reviewed by Yusuke Suzuki.

Not all systems define PATH_MAX, so add a fallback value that is
long enough.

  • jsc.cpp:
3:21 AM Changeset in webkit [198944] by jh718.park@samsung.com
  • 2 edits
    1 add in trunk/LayoutTests

Unreviewed EFL gardening about new RTL scrollbar testcase
This testcase has been added in r198859.

  • platform/efl/TestExpectations:
  • platform/efl/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
2:54 AM Changeset in webkit [198943] by Antti Koivisto
  • 41 edits
    5 adds in trunk

Separate render tree updating from style resolve
​https://bugs.webkit.org/show_bug.cgi?id=155298

Reviewed by Andreas Kling.

Source/WebCore:

This patch splits computing document style and applying the results into two distinct steps:

Style::TreeResolver::resolve()

|
| Style::Update
V

RenderTreeUpdater::commit()

Style::TreeResolver::resolve() returns a Style::Update object that contains all the changes to be made
for the whole composed tree. RenderTreeUpdater then applies the changes updating, building or tearing
down portions of the render tree as needed.

Style::Update consists of a map that contains new style for each newly resolved element along with some
metadata. A separate map contains text nodes that require reconstruction. It also tracks change roots so
RenderTreeUpdater needs to traverse the changed subtrees only.

The patch eliminates the recursive render tree build code path replacing it with iterative functions.

This will enable future optimizations. For example we won't need to commit to immediate rendering
changes simply because some script or internal function requires up-to-date style.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::State::State):
(WebCore::StyleResolver::styleForElement):

  • css/StyleResolver.h:

(WebCore::StyleResolver::setOverrideDocumentElementStyle):
(WebCore::StyleResolver::State::State):

Root element style is needed for resolving other elements. Add a way to provide it without looking
into active document style.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):

Resolve the document style and commit it immediately (for now).

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

  • dom/Document.h:

(WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet):
(WebCore::Document::inStyleRecalc):
(WebCore::Document::inRenderTreeUpdate):

  • dom/Element.cpp:

(WebCore::Element::setChildIndex):

Setting the unique bit is now done by style relations update code.

  • dom/Node.cpp:

(WebCore::Node::setNeedsStyleRecalc):

Prevent spurious style invalidation during render tree updating.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

Capturing body element color for color:-webkit-text is now done by TreeResolver.

  • rendering/RenderElement.h:

(WebCore::RenderElement::setAnimatableStyle): Deleted.

No longer used.

  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::nextSiblingRenderer):

Skip over non-rendered slot elements.

  • style/RenderTreeUpdater.cpp: Added.

(WebCore::RenderTreeUpdater::Parent::Parent):
(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::hasDisplayContents):
(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):

Call updateRenderTree for each change root.

(WebCore::shouldCreateRenderer):
(WebCore::RenderTreeUpdater::updateRenderTree):

Iteratively traverse the composed tree starting for a change root.
Apply the changes calling updateElementRenderer and updateTextRenderer as needed.
Enter subtrees that haves changes to apply.

(WebCore::RenderTreeUpdater::renderTreePosition):

We may not create renderers for all elements (<slot> or more generally display:contents) that
have rendered descendants. Search the parent stack to find the valid position.

(WebCore::RenderTreeUpdater::pushParent):
(WebCore::RenderTreeUpdater::popParent):
(WebCore::RenderTreeUpdater::popParentsToDepth):

Maintain parent stack.

(WebCore::pseudoStyleCacheIsInvalid):
(WebCore::RenderTreeUpdater::updateElementRenderer):

Create, delete or update the renderer.

(WebCore::moveToFlowThreadIfNeeded):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::textRendererIsNeeded):
(WebCore::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):

This is moved from TreeResolver.

(WebCore::needsPseudoElement):
(WebCore::RenderTreeUpdater::updateBeforeOrAfterPseudoElement):

Pseudo elements are handled entirely during render tree construction. Compute their style and
create or delete them as needed.

  • style/RenderTreeUpdater.h: Added.

(WebCore::RenderTreeUpdater::parent):

  • style/StyleRelations.cpp:

(WebCore::Style::commitRelationsToRenderStyle):
(WebCore::Style::commitRelations):

Commit to Style::Update instead of the document if needed.

(WebCore::Style::commitRelationsToDocument): Deleted.

  • style/StyleRelations.h:
  • style/StyleSharingResolver.cpp:

(WebCore::Style::elementHasDirectionAuto):
(WebCore::Style::SharingResolver::resolve):

Fetch the shareable style from Style::Update instead of the active document style.

(WebCore::Style::SharingResolver::findSibling):
(WebCore::Style::SharingResolver::canShareStyleWithElement):

  • style/StyleSharingResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::Parent::Parent):

No need for render tree position anymore.

(WebCore::Style::TreeResolver::popScope):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):
(WebCore::Style::createTextRendererIfNeeded):
(WebCore::Style::updateTextRendererAfterContentChange):
(WebCore::Style::resetStyleForNonRenderedDescendants):
(WebCore::Style::detachChildren):
(WebCore::Style::detachSlotAssignees):
(WebCore::Style::detachRenderTree):
(WebCore::Style::TreeResolver::resolveElement):

Just resolve the style and return it, no more applying or entering render tree construction code paths.

(WebCore::Style::resolveTextNode):
(WebCore::Style::elementImplicitVisibility):
(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):
(WebCore::Style::TreeResolver::popParentsToDepth):
(WebCore::Style::shouldResolvePseudoElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

Add style changes to Style::Update.

(WebCore::Style::TreeResolver::resolve):

Return Style::Update object if non-empty.

(WebCore::Style::postResolutionCallbackQueue):
(WebCore::Style::shouldCreateRenderer): Deleted.
(WebCore::Style::moveToFlowThreadIfNeeded): Deleted.
(WebCore::Style::TreeResolver::createRenderer): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForChildren): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForShadowRoot): Deleted.
(WebCore::Style::beforeOrAfterPseudoElement): Deleted.
(WebCore::Style::setBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::clearBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::needsPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeRecursively): Deleted.
(WebCore::Style::pseudoStyleCacheIsInvalid): Deleted.
(WebCore::Style::TreeResolver::resolveBeforeOrAfterPseudoElement): Deleted.

Remove the recursive render tree building code path.

  • style/StyleTreeResolver.h:

(WebCore::Style::TreeResolver::scope):

  • style/StyleUpdate.cpp: Added.

(WebCore::Style::Update::Update):
(WebCore::Style::Update::elementUpdate):
(WebCore::Style::Update::textUpdate):
(WebCore::Style::Update::elementStyle):
(WebCore::Style::Update::addElement):
(WebCore::Style::Update::addText):
(WebCore::Style::Update::addPossibleRoot):

  • style/StyleUpdate.h: Added.

(WebCore::Style::Update::roots):
(WebCore::Style::Update::document):

  • svg/SVGElement.h:

(WebCore::SVGElement::updateRelativeLengthsInformation):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::willRecalcStyle):
(WebCore::SVGUseElement::willAttachRenderers): Deleted.

Switvh willAttachRenderers to willRecalcStyle as the former is now called too late.

  • svg/SVGUseElement.h:

LayoutTests:

Skip mathml/presentation/menclose-notation-attribute-change-value.html. It will be fixed by upcoming MathML refactoring.

  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-resize-expected.txt:

This is a progression.

  • editing/mac/spelling/autocorrection-contraction-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-after-paste-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-expected.txt:
  • editing/mac/spelling/autocorrection-simple-expected.txt:
  • editing/style/remove-underline-from-stylesheet-expected.txt:
  • editing/style/typing-style-003-expected.txt:

Non-rendered whitespace related changes.

  • platform/ios-simulator/TestExpectations:

Skip fast/regions/position-writing-modes-in-variable-width-regions.html on iOS. Similar tests are mostly already skipped.

  • platform/ios-simulator/editing/style/typing-style-003-expected.txt: Added.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.txt:
  • platform/mac/editing/inserting/editable-html-element-expected.txt:
  • platform/mac/editing/inserting/editing-empty-divs-expected.txt:
  • platform/mac/editing/inserting/insert-at-end-02-expected.txt:
  • platform/mac/editing/pasteboard/4989774-expected.txt:
  • platform/mac/editing/selection/4983858-expected.txt:

Non-rendered whitespace related changes.

1:06 AM WebKitNightlyElCapWorkaround edited by Manuel Rego Casasnovas
run-safari was not working after the workaround, explained how to run … (diff)
12:23 AM WebKitGTK/2.12.x edited by berto@igalia.com
(diff)

Mar 31, 2016:

11:31 PM Changeset in webkit [198942] by Chris Fleizach
  • 15 edits
    4 adds in trunk

AX: <attachment> element not accessible
​https://bugs.webkit.org/show_bug.cgi?id=156045

Reviewed by Joanmarie Diggs.

Source/WebCore:

Make this element accessible by exposing title, subtitle, action, progress to accessibility.

Test: accessibility/attachment-element.html

  • accessibility/AXObjectCache.cpp:

(WebCore::createFromRenderer):

  • accessibility/AccessibilityAttachment.cpp: Added.

(WebCore::AccessibilityAttachment::AccessibilityAttachment):
(WebCore::AccessibilityAttachment::create):
(WebCore::AccessibilityAttachment::hasProgress):
(WebCore::AccessibilityAttachment::valueForRange):
(WebCore::AccessibilityAttachment::attachmentElement):
(WebCore::AccessibilityAttachment::roleDescription):
(WebCore::AccessibilityAttachment::computeAccessibilityIsIgnored):
(WebCore::AccessibilityAttachment::accessibilityText):
(WebCore::AccessibilityAttachment::accessibilityDescription):

  • accessibility/AccessibilityAttachment.h: Added.
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasHighlighting):
(WebCore::AccessibilityObject::roleDescription):
(WebCore::AccessibilityObject::supportsRangeValue):
(WebCore::AccessibilityObject::supportsARIASetSize):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::isAttachmentElement):
(WebCore::AccessibilityObject::isHeading):
(WebCore::AccessibilityObject::isLink):
(WebCore::AccessibilityObject::isImage):
(WebCore::AccessibilityObject::isRadioButton):
(WebCore::AccessibilityObject::isListBox):
(WebCore::AccessibilityObject::isListBoxOption):
(WebCore::AccessibilityObject::isAttachment):
(WebCore::AccessibilityObject::isMediaTimeline):
(WebCore::AccessibilityObject::isMenuRelated):
(WebCore::AccessibilityObject::isMenu):

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityValue]):

LayoutTests:

  • accessibility/attachment-element-expected.txt: Added.
  • accessibility/attachment-element.html: Added.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
10:34 PM Changeset in webkit [198941] by n_wang@apple.com
  • 4 edits
    2 adds in trunk

AX: AX hit-testing does not work on WebKit video playback buttons
​https://bugs.webkit.org/show_bug.cgi?id=156084

Reviewed by Darin Adler.

Source/WebCore:

Use the element at point instead of the shadow host for hit testing on video tags.

Test: accessibility/mac/video-tag-hit-test.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::elementAccessibilityHitTest):
(WebCore::shouldUseShadowHostForHitTesting):
(WebCore::AccessibilityRenderObject::accessibilityHitTest):

LayoutTests:

  • accessibility/mac/video-tag-hit-test-expected.txt: Added.
  • accessibility/mac/video-tag-hit-test.html: Added.
9:54 PM Changeset in webkit [198940] by ap@apple.com
  • 3 edits in trunk/Source/WebCore

Page overlay tests sometimes crash under MockPageOverlayClient::uninstallAllOverlays()
​https://bugs.webkit.org/show_bug.cgi?id=156080
rdar://problem/24922183

Reviewed by Alex Christensen.

Make MockPageOverlayClient::m_overlays reference the overlays. There is no reference
cycle because they are all removed between test page loads.

  • testing/MockPageOverlayClient.cpp:

(WebCore::MockPageOverlayClient::uninstallAllOverlays):
(WebCore::MockPageOverlayClient::pageOverlayDestroyed):

  • testing/MockPageOverlayClient.h:
9:52 PM Changeset in webkit [198939] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebKit2

Unreviewed EFL build fix caused by r198929.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::layerVolatilityTimerFired): Need to use type casting in WEBPAGE_LOG_ALWAYS_ERROR() log.

8:23 PM Changeset in webkit [198938] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

​https://bugs.webkit.org/show_bug.cgi?id=156094
[Win] TestWebCore target build sometimes fail.

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-31
Reviewed by Alex Christensen.

  • Tools/TestWebKitAPI/PlatformWin.cmake:
8:15 PM Changeset in webkit [198937] by Jon Davis
  • 2 edits
    1 add in trunk/Websites/webkit.org

Show tweets by @webkit in the Twitter tile on webkit.org
​https://bugs.webkit.org/show_bug.cgi?id=156093

Reviewed by Timothy Hatcher.

  • wp-content/plugins/tweet-listener.php: Added.
  • wp-content/themes/webkit/widgets/twitter.php:
6:54 PM Changeset in webkit [198936] by dbates@webkit.org
  • 10 edits
    8 adds in trunk

REGRESSION (r197724): <object>/<embed> with no URL does not match source *
​https://bugs.webkit.org/show_bug.cgi?id=156079
<rdar://problem/25470805>

Reviewed by Brent Fulgham.

Source/WebCore:

Fixes an issue where HTML object and embed elements that are not associated with a URL are
allowed to load when object-src/default-src contains source *. More generally, we allow
such elements to load so long as object-src/default-src is not 'none' per section object-src
of the Content Security Policy Level 3 spec., <​http://w3c.github.io/webappsec-csp> (Editor's Draft, 29 February 2016).

Tests: http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-default-src-star.html

http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-star.html
http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-default-src-star.html
http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-star.html

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowObjectFromSource): Modified to call violatedDirectiveInAnyPolicy() passing
ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone::Yes.

  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::checkSource): Modified to take argument of type ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone (defaults to false)
and pass it through to ContentSecurityPolicySourceListDirective.
(WebCore::checkFrameAncestors): Explicitly pass ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone::No
to avoid URL from having the compiler implicitly convert it to a String and selecting override ContentSecurityPolicySourceListDirective::allows(const String&),
which will lead to incorrect results. We will look to make this code less error prone in <​https://bugs.webkit.org/show_bug.cgi?id=156086>.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForObjectSource): Modified to take argument of type
ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone and pass it through.

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::parse): Set instance variable m_isNone to true so that we can differentiate
a source list with value 'none' from a source list that lists one or more sources or non-none keywords.

  • page/csp/ContentSecurityPolicySourceList.h:

(WebCore::ContentSecurityPolicySourceList::isNone): Added.

  • page/csp/ContentSecurityPolicySourceListDirective.cpp:

(WebCore::ContentSecurityPolicySourceListDirective::allows): Modified to take argument of type ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone
and updated code to return true for an empty URL only if this argument is ContentSecurityPolicySourceListDirective::ShouldAllowEmptyURLIfSourceListIsNotNone::Yes and
the source list does not have value 'none'.

  • page/csp/ContentSecurityPolicySourceListDirective.h:

LayoutTests:

Add tests to ensure that HTML object and embed elements are allowed by source *.

  • platform/ios-simulator/TestExpectations: Skip added tests as plugins are not supported on iOS.
  • http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-default-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-default-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-with-no-url-allowed-by-star.html: Added.
  • http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-default-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-default-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-with-no-url-allowed-by-star.html: Added.
6:48 PM Changeset in webkit [198935] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] CFA's valuesAtHead should be a list, not a map
​https://bugs.webkit.org/show_bug.cgi?id=156087

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-31
Reviewed by Mark Lam.

One more step toward moving to the Air-style of liveness analysis:

Make DFG's valuesAtHead a list of Node*-AbstractValue.
This patch alone is already a speedup because our many CFAs
spend an unreasonable amount of time updating at block boundaries.

  • dfg/DFGBasicBlock.h:
  • dfg/DFGCFAPhase.cpp:

(JSC::DFG::CFAPhase::performBlockCFA):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::setLiveValues):
(JSC::DFG::InPlaceAbstractState::merge):

  • dfg/DFGNode.h:

(JSC::DFG::nodeValuePairComparator):
(JSC::DFG::nodeValuePairListDump):

6:40 PM Changeset in webkit [198934] by Gyuyoung Kim
  • 2 edits in trunk/Tools

[EFL] Bump EFL version to 1.17.0
​https://bugs.webkit.org/show_bug.cgi?id=153008

Reviewed by Michael Catanzaro.

Original author is Csaba Osztrogonác <Csaba Osztrogonác>

  • efl/jhbuild.modules:
6:12 PM Changeset in webkit [198933] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r194660): Navigating to HTTPS sites may fail with error
​https://bugs.webkit.org/show_bug.cgi?id=155455
<rdar://problem/24308793>

Reviewed by Alexey Proskuryakov.

Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses
a cache directory that it does not have permission to use.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed
bundle identifier/code signing identifier.
(WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory
suffix. Verify that the client identifier matches the code signed bundled identifier/code
signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast
instead of a C-style cast when casting an OSStatus to a long.
(WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess().

5:24 PM Changeset in webkit [198932] by sbarati@apple.com
  • 12 edits in trunk/Source

Revert rewrite const as var workaround
​https://bugs.webkit.org/show_bug.cgi?id=155393

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • parser/Parser.h:

(JSC::Parser::next):
(JSC::Parser::nextExpectIdentifier):

  • runtime/VM.h:

(JSC::VM::setShouldRewriteConstAsVar): Deleted.
(JSC::VM::shouldRewriteConstAsVar): Deleted.

Source/WebCore:

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::commonVM):

  • page/Settings.cpp:
  • page/Settings.h:

(WebCore::Settings::shouldUseHighResolutionTimers):
(WebCore::Settings::backgroundShouldExtendBeyondPage):
(WebCore::Settings::shouldRewriteConstAsVar): Deleted.
(WebCore::Settings::setShouldRewriteConstAsVar): Deleted.

Source/WebKit2:

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

4:59 PM Changeset in webkit [198931] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Unreviewed, rolling out r196854.

We do not need those assertions anymore as it seems
<rdar://problem/24457478> is fixed

Reverted changeset:

"Land release assertions to help track down a possible
HTMLCollection lifetime bug"
​https://bugs.webkit.org/show_bug.cgi?id=154490
​http://trac.webkit.org/changeset/196854

4:45 PM Changeset in webkit [198930] by dbates@webkit.org
  • 3 edits in trunk/Tools

run-webkit-tests fails to create user's cache directory when System Integrity Protection is enabled
​https://bugs.webkit.org/show_bug.cgi?id=156071
<rdar://problem/25467827>

Reviewed by Brent Fulgham.

Fixes an issue where run-webkit-tests will fail to create the suffixed user's cache directory
on non-Apple Internal machines with System Integrity Protection enabled because the OS only
honors the suffix, specified by the environment variable DIRHELPER_USER_DIR_SUFFIX, in
privileged processes. And python(1) does not have sufficient privileges. As a workaround for
systems that have System Integrity Protection enabled we compute the path to the suffixed
user's cache directory by hand.

Additionally, fix an issue where the user's cache directory created by run-webkit-test was
never deleted on cessation of the test run.

  • Scripts/webkitpy/port/driver.py:

(Driver._start): Actually store the path to the user's cache directory in self._driver_user_cache_directory
so that we can delete this directory on cessation of the test run.

  • Scripts/webkitpy/port/mac.py:

(MacPort):
(MacPort._path_to_user_cache_directory): Unset the environment variable DIRHELPER_USER_DIR_SUFFIX (if set),
query the OS for the path to the user's cache directory and concatenate this path with the
specified suffix.

4:33 PM Changeset in webkit [198929] by Chris Dumez
  • 8 edits in trunk/Source

[iOS] Both WebPage's volatility timer and WebProcess's processSuspensionCleanupTimer are trying to make surfaces volatile with very short interval
​https://bugs.webkit.org/show_bug.cgi?id=156065
<rdar://problem/25452004>

Reviewed by Simon Fraser.

Source/WebCore:

Export a symbol so it can be used from WebKit2.

  • page/Page.h:

Source/WebKit2:

Upon process suspension, both the WebPage's volatility timer and
WebProcess' processSuspensionCleanupTimer are trying to make surfaces
volatile with a very short interval. This is overly aggressive given
that this operation normally succeeds very quickly or does not (due
to underlying bugs).

This patch does the following:

  • Drop the WebProcess' processSuspensionCleanupTimer and have the WebProcess drive the WebPages' volatility timer instead.
  • Update the WebPages' volatility timer to do exponential back off.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::layerVolatilityTimerFired):
(WebKit::WebPage::markLayersVolatileImmediatelyIfPossible):
(WebKit::WebPage::markLayersVolatile):
(WebKit::WebPage::cancelMarkLayersVolatile):
(WebKit::WebPage::isAlwaysOnLoggingAllowed):
(WebKit::WebPage::setLayerTreeStateIsFrozen): Deleted.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::markLayersVolatile):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::applicationDidEnterBackground):
(WebKit::WebPage::applicationWillEnterForeground):
(WebKit::WebPage::applicationDidBecomeActive): Deleted.
(WebKit::adjustVelocityDataForBoundedScale): Deleted.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::actualPrepareToSuspend):
(WebKit::WebProcess::processWillSuspendImminently):
(WebKit::WebProcess::prepareToSuspend):
(WebKit::WebProcess::cancelPrepareToSuspend):
(WebKit::WebProcess::markAllLayersVolatile):
(WebKit::WebProcess::cancelMarkAllLayersVolatile):
(WebKit::WebProcess::setAllLayerTreeStatesFrozen):
(WebKit::WebProcess::processDidResume):
(WebKit::WebProcess::WebProcess): Deleted.

  • WebProcess/WebProcess.h:
4:07 PM Changeset in webkit [198928] by sbarati@apple.com
  • 5 edits in trunk

[ES6] Disallow var assignments in for-in loops
​https://bugs.webkit.org/show_bug.cgi?id=155451

Reviewed by Mark Lam.

Source/JavaScriptCore:

We're doing this in its own patch instead of the patch for ​https://bugs.webkit.org/show_bug.cgi?id=155384
because last time we made this change it broke some websites. Lets try making
it again because it's what the ES6 mandates. If it still breaks things we will
roll it out.

  • parser/Parser.cpp:

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

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
4:01 PM Changeset in webkit [198927] by sbarati@apple.com
  • 7 edits in trunk

parsing arrow function expressions slows down the parser by 8% lets recoup some loss
​https://bugs.webkit.org/show_bug.cgi?id=155988

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

We used to eagerly check if we're parsing an arrow function.
We did this inside parseAssignmentExpression(), and it was
very costly. The reason it was costly is that arrow functions
might start with an identifier. This means anytime we saw an
identifier we would have to do a lookahead, and then most likely
backtrack because more often than not, we wouldn't see "=>"
as the next token.

In this patch I implement a new approach. We just parse
the lhs of an assignment expression eagerly without doing any
lookahead. Retroactively, if we see that we might have started
with an arrow function, and we don't have a valid lhs or the
next token is a "=>", we try to parse as an arrow function.

Here are a few examples motivating why this is valid:

x => x
In this example:

  • "x" is a valid arrow function starting point.
  • "x" also happens to be a valid lhs
  • because we see "=>" as the next token, we parse as an arrow function and succeed.

(x) => x
In this example:

  • "(" is a valid arrow function starting point.
  • "(x)" also happens to be a valid lhs
  • because we see "=>" as the next token, we parse as an arrow function and succeed.

({x = 30}) => x;
In this example:

  • "(" is a valid arrow function starting point.
  • "({x = 30})" is NOT a valid lhs. Because of this, we try to parse it as an arrow function and succeed.

There is one interesting implementation detail where we might
parse something that is both a valid LHS but happens
to actually be the arrow function parameters. The valid LHS
parsing might declare such variables as "uses" which would cause
weird capture analysis. This patch also introduces a mechanism
to backtrack on used variable analysis.

This is a 3.5%-4.5% octane code load speedup.

  • parser/Lexer.h:

(JSC::Lexer::sawError):
(JSC::Lexer::setSawError):
(JSC::Lexer::getErrorMessage):
(JSC::Lexer::setErrorMessage):
(JSC::Lexer::sourceURL):
(JSC::Lexer::sourceMappingURL):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::isArrowFunctionParameters):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parsePrimaryExpression):

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::startSwitch):
(JSC::Scope::declareParameter):
(JSC::Scope::usedVariablesContains):
(JSC::Scope::useVariable):
(JSC::Scope::pushUsedVariableSet):
(JSC::Scope::currentUsedVariablesSize):
(JSC::Scope::revertToPreviousUsedVariables):
(JSC::Scope::setNeedsFullActivation):
(JSC::Scope::needsFullActivation):
(JSC::Scope::isArrowFunctionBoundary):
(JSC::Scope::setInnerArrowFunctionUsesEvalAndUseArgumentsIfNeeded):
(JSC::Scope::collectFreeVariables):
(JSC::Scope::fillParametersForSourceProviderCache):
(JSC::Scope::restoreFromSourceProviderCache):
(JSC::Scope::setIsModule):

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:

(catch):

3:54 PM Changeset in webkit [198926] by peavo@outlook.com
  • 11 edits in trunk/LayoutTests

[Win] Skip INTL related tests.
​https://bugs.webkit.org/show_bug.cgi?id=156074

Reviewed by Alex Christensen.

Temporarily skip failing INTL related tests, because AppleWin currently
does not have INTL enabled.

  • js/script-tests/array-toLocaleString.js:
  • js/script-tests/date-toLocaleString.js:
  • js/script-tests/intl-collator.js:
  • js/script-tests/intl-datetimeformat.js:
  • js/script-tests/intl-numberformat.js:
  • js/script-tests/intl.js:
  • js/script-tests/number-toLocaleString.js:
  • js/script-tests/string-toLocaleLowerCase.js:
  • js/script-tests/string-toLocaleUpperCase.js:
  • platform/win/TestExpectations:
3:50 PM Changeset in webkit [198925] by commit-queue@webkit.org
  • 5 edits in trunk

Web Inspector: ScriptSyntaxTree doesn't handle RestElement AST nodes
​https://bugs.webkit.org/show_bug.cgi?id=156085

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-31
Reviewed by Saam Barati.

Source/WebInspectorUI:

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration.gatherIdentifiers):
(WebInspector.ScriptSyntaxTree.prototype._gatherIdentifiersInDeclaration):
When searching for identifiers in Function parameters, pass
through the RestElement to its argument.

(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Create a ScriptSyntaxTree RestElement node.
Also, every case in recurse visits the current
node, so simplify the code!

LayoutTests:

  • inspector/model/parse-script-syntax-tree-expected.txt:
  • inspector/model/parse-script-syntax-tree.html:

Add a test for a RestElement.

3:43 PM Changeset in webkit [198924] by dbates@webkit.org
  • 4 edits
    2 adds in trunk

REGRESSION (r195605): ASSERTION FAILED: !NoEventDispatchAssertion::isEventDispatchForbidden()
when pressing the back button on a page with a focused subframe
​https://bugs.webkit.org/show_bug.cgi?id=156033
<rdar://problem/25446561>

Reviewed by Chris Dumez.

Source/WebCore:

Fixes an assertion failure when navigating back, by pressing the browser back button, to
the previous page from a page with a focused subframe.

Following r195605 (​https://bugs.webkit.org/show_bug.cgi?id=153449), the responsibility for
dispatching a DOM pagehide event moved from CachedFrame to PageCache and we now instantiate
a NoEventDispatchAssertion object to enforce the invariant that no additional DOM events are
dispatched as part of adding a page to the page cache. When adding a page with a focused
subframe to the page cache we focus its main frame, which implicitly defocuses the subframe
and dispatches a DOM blur event at it. Therefore an assertion failure occurs when dispatching
this DOM blur event (because a NoEventDispatchAssertion object was allocated on the stack).

Test: fast/history/back-from-page-with-focused-iframe.html

  • history/CachedFrame.cpp:

(WebCore::CachedFrame::CachedFrame): Move logic to focus the main frame from here...

  • history/PageCache.cpp:

(WebCore::PageCache::addIfCacheable): to here such that any DOM blur and focus events
are dispatched before instantiate the NoEventDispatchAssertion object and enter the page
cache.

LayoutTests:

Add a test to ensure that when navigating back from a page with a focused <iframe> f, a DOM
blur event is dispatched to f, a DOM focus event is dispatched at the main frame and that
an assertion failure does not occur (only applicable in a debug build).

  • fast/history/back-from-page-with-focused-iframe-expected.txt: Added.
  • fast/history/back-from-page-with-focused-iframe.html: Added.
3:42 PM Changeset in webkit [198923] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Simplify API of Test model by removing Test.setParentTest
​https://bugs.webkit.org/show_bug.cgi?id=156055

Reviewed by Joseph Pecoraro.

Removed Test.setParentTest. Keep track of the child-parent relationship using the static map instead.

Now each test only stores parent's id and uses the ID static map in Test.parentTest().

  • public/v3/models/manifest.js:

(Manifest._didFetchManifest.buildObjectsFromIdMap): Removed the code to create the map of child-parent
relationship and call setParentTest.

  • public/v3/models/test.js:

(Test): Updated a static map by the name of "childTestMap" to store itself. We should probably sort
child tests using some fixed criteria in the future instead of relying on the creation order but
preserve the old code's ordering for now.
(Test.prototype.parentTest): Look up the static map by the parent test's id.
(Test.prototype.onlyContainsSingleMetric):
(Test.prototype.setParentTest): Deleted.
(Test.prototype.childTests): Look up the child test map.

3:38 PM Changeset in webkit [198922] by dbates@webkit.org
  • 1 edit
    1 add in trunk

tool tip/alt. text appears when mouse is no longer hovering over link
​https://bugs.webkit.org/show_bug.cgi?id=24427
<rdar://problem/8045235>

Reviewed by Antonio Gomes.

Although the bug no longer reproduces, add a manual test that can be used to determine if a
tooltip for a hyperlink is shown when the cursor no longer hovers over it.

  • ManualTests/tooltip-when-mouse-not-directly-over-hyperlink.html: Added.
3:22 PM Changeset in webkit [198921] by matthew_hanson@apple.com
  • 4 edits
    5 deletes in branches/safari-601-branch

Roll out r191180. rdar://problem/25448882

2:55 PM Changeset in webkit [198920] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fix download links for desktops with small resolutions
​https://bugs.webkit.org/show_bug.cgi?id=156081

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/downloads.php:
2:52 PM Changeset in webkit [198919] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Fails to build in Linux / PowerPC due to different ucontext_t definition
​https://bugs.webkit.org/show_bug.cgi?id=156015

Reviewed by Michael Catanzaro.

PPC does not have mcontext_t in ucontext_t::uc_mcontext.
So we take the special way to retrieve mcontext_t in PPC.

  • heap/MachineStackMarker.cpp:

(pthreadSignalHandlerSuspendResume):

2:51 PM Changeset in webkit [198918] by BJ Burg
  • 2 edits in trunk/Source/WebKit2

Web Automation: the interaction queue in WebAutomationSession::performKeyInteractions doesn't work
​https://bugs.webkit.org/show_bug.cgi?id=156083

Reviewed by Timothy Hatcher.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::performKeyboardInteractions):
Use Vector::reserveCapacity instead of the size constructor since we use append.
Empty the interaction queue outside of loops so all interactions are performed once.

2:12 PM Changeset in webkit [198917] by Chris Dumez
  • 4 edits
    5 deletes in trunk

REGRESSION (r191180): Safari does not send Referer Header to iframe src in certain situations
​https://bugs.webkit.org/show_bug.cgi?id=155754
<rdar://problem/25296445>

Unreviewed, roll out r191180 as it breaks sites and needs to be reworked.

Source/WebCore:

  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::tagIdFor): Deleted.
(WebCore::TokenPreloadScanner::initiatorFor): Deleted.
(WebCore::TokenPreloadScanner::StartTagScanner::processAttribute): Deleted.
(WebCore::TokenPreloadScanner::StartTagScanner::resourceType): Deleted.

  • html/parser/HTMLPreloadScanner.h:

LayoutTests:

  • fast/preloader/frame-src-expected.txt: Removed.
  • fast/preloader/frame-src.html: Removed.
  • fast/preloader/resources/testFrame.html: Removed.
  • http/tests/loading/preload-no-store-frame-src-expected: Removed.
  • http/tests/loading/preload-no-store-frame-src.html: Removed.
2:05 PM Changeset in webkit [198916] by matthew_hanson@apple.com
  • 4 edits
    5 deletes in branches/safari-601.1.46-branch

Roll out r191180. rdar://problem/25449273

2:03 PM Changeset in webkit [198915] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit2

Web Automation: Add support for script timeouts to the evaluateJavaScriptFunction command

​https://bugs.webkit.org/show_bug.cgi?id=156052
rdar://problem/25457151

Address additional review comments.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Add semicolons and remove
and clearTimeout that wasn't needed.

1:52 PM Changeset in webkit [198914] by timothy@apple.com
  • 6 edits in trunk/Source/WebKit2

Web Automation: Navigation commands should not return until page loads or fails

​https://bugs.webkit.org/show_bug.cgi?id=156063
rdar://problem/25464373

Reviewed by Brian Burg.

  • UIProcess/Automation/Automation.json: Make navigation commands async.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::navigateBrowsingContext): Save callback and timeout previous.
(WebKit::WebAutomationSession::goBackInBrowsingContext): Ditto.
(WebKit::WebAutomationSession::goForwardInBrowsingContext): Ditto.
(WebKit::WebAutomationSession::reloadBrowsingContext): Ditto.
(WebKit::WebAutomationSession::navigationOccuredForPage): Added. Fire callback for page.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didFinishLoadForFrame): Call WebAutomationSession::navigationOccuredForPage.
(WebKit::WebPageProxy::didFailLoadForFrame): Ditto.
(WebKit::WebPageProxy::didSameDocumentNavigationForFrame): Ditto.

  • UIProcess/WebProcessPool.h: Added automationSession() getter.
1:52 PM Changeset in webkit [198913] by timothy@apple.com
  • 8 edits in trunk/Source/WebKit2

Web Automation: Add support for script timeouts to the evaluateJavaScriptFunction command

​https://bugs.webkit.org/show_bug.cgi?id=156052
rdar://problem/25457151

Reviewed by Brian Burg.

  • UIProcess/Automation/Automation.json: Added callbackTimeout to evaluateJavaScriptFunction.

Also made expectsImplicitCallbackArgument optional, since it is not required. Added JavaScriptTimeout error.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::evaluateJavaScriptFunction): Added callbackTimeout.

  • UIProcess/Automation/WebAutomationSession.h:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::evaluateJavaScriptCallback): Send JavaScriptTimeout error if the timeout fired.
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Added callbackTimeout.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.js:

(AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Set a timeout to fire if the
callback is not called, then return an error.

  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:

(EvaluateJavaScriptFunction): Added callbackTimeout parameter.

1:43 PM Changeset in webkit [198912] by eric.carlson@apple.com
  • 37 edits
    1 copy
    5 adds
    3 deletes in trunk/LayoutTests

Rebaseline media control tests when new media control appearances are finalized
​https://bugs.webkit.org/show_bug.cgi?id=142142

Reviewed by Brent Fulgham.

  • fullscreen/video-controls-override.html: Test height as an integer.
  • http/tests/media/hls/video-controls-live-stream.html: Start playback explicitly instead of using autoplay, and pause playback before dumping controls state to make the test results more deterministic.
  • media/audio-delete-while-slider-thumb-clicked.html: Make the <audio> element wide enough that it will always have a timeline scrubber. Trigger test on 'canplaythrough' instead of autoplay + 'playing' to simplify the test slightly.
  • media/nodesFromRect-shadowContent.html: Test for controls panel-background instead timeline-container because of changes to the controls structure.
  • platform/mac-mavericks/media/audio-controls-rendering-expected.png: Removed.
  • platform/mac-mavericks/media/audio-controls-rendering-expected.txt: Removed.
  • platform/mac-mavericks/media/video-volume-slider-expected.txt: Removed.
  • platform/mac-wk1/media/controls-styling-expected.txt: Removed.
  • platform/mac-yosemite/http/tests/media/hls/video-controls-live-stream-expected.txt: Added
  • platform/mac-yosemite/media: Added.
  • platform/mac-yosemite/media/controls-styling-expected.txt: Added.
  • platform/mac/TestExpectations: Unskip some tests.
  • platform/mac/accessibility/media-element-expected.txt: Update results.
  • platform/mac/fast/layers/video-layer-expected.png: Ditto.
  • platform/mac/fast/layers/video-layer-expected.txt: Ditto.
  • platform/mac/fullscreen/video-controls-override-expected.txt: Ditto.
  • platform/mac/http/tests/media/hls/video-controls-live-stream-expected.txt: Ditto.
  • platform/mac/media/audio-controls-rendering-expected.png: Ditto.
  • platform/mac/media/audio-controls-rendering-expected.txt: Ditto.
  • platform/mac/media/controls-after-reload-expected.png: Ditto.
  • platform/mac/media/controls-after-reload-expected.txt: Ditto.
  • platform/mac/media/controls-strict-expected.png: Ditto.
  • platform/mac/media/controls-strict-expected.txt: Ditto.
  • platform/mac/media/controls-styling-expected.png: Ditto.
  • platform/mac/media/controls-styling-expected.txt: Ditto.
  • platform/mac/media/controls-without-preload-expected.png: Ditto.
  • platform/mac/media/controls-without-preload-expected.txt: Ditto.
  • platform/mac/media/media-controls-clone-expected.png: Ditto.
  • platform/mac/media/media-controls-clone-expected.txt: Ditto.
  • platform/mac/media/media-document-audio-repaint-expected.png: Ditto.
  • platform/mac/media/video-controls-rendering-expected.png: Ditto.
  • platform/mac/media/video-controls-rendering-expected.txt: Ditto.
  • platform/mac/media/video-display-toggle-expected.png: Ditto.
  • platform/mac/media/video-display-toggle-expected.txt: Ditto.
  • platform/mac/media/video-empty-source-expected.png: Ditto.
  • platform/mac/media/video-empty-source-expected.txt: Ditto.
  • platform/mac/media/video-no-audio-expected.png: Ditto.
  • platform/mac/media/video-no-audio-expected.txt: Ditto.
  • platform/mac/media/video-volume-slider-expected.png: Ditto.
  • platform/mac/media/video-volume-slider-expected.txt: Ditto.
  • platform/mac/media/video-zoom-controls-expected.png: Ditto.
  • platform/mac/media/video-zoom-controls-expected.txt: Ditto.
1:39 PM Changeset in webkit [198911] by jiewen_tan@apple.com
  • 12 edits
    3 adds in trunk

WebKit should set Original URL of a download request correctly
​https://bugs.webkit.org/show_bug.cgi?id=155914
<rdar://problem/10473811>

Reviewed by Anders Carlsson.

Source/WebCore:

Added API tests.

Replace the old logic for identifying the Original URL of a download request
with a new method based on the logic from Document::firstPartyForCookies, which
does a much better job determining the URL a user actually visited.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::setOriginalURLForDownloadRequest):
(WebCore::originatingURLFromBackForwardList): Deleted.

Source/WebKit2:

  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::convertMainResourceLoadToDownload):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::didReceiveResponseNetworkSession):

  • NetworkProcess/NetworkLoad.h:
  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::findPendingDownloadLocation):

  • NetworkProcess/NetworkProcess.h:

Add logic to set the original URL of a download request when a main resource load
is converted to a download.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::download):

  • UIProcess/WebProcessPool.h:

Add logic to set the original URL of a download request during a context menu:
Download Linked File action.

Tools:

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

(-[DownloadRequestOriginalURLDelegate initWithExpectOriginalURL:]):
(-[DownloadRequestOriginalURLDelegate _downloadDidStart:]):
(-[DownloadRequestOriginalURLNavigationDelegate webView:decidePolicyForNavigationAction:decisionHandler:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/DownloadRequestOriginalURL.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/DownloadRequestOriginalURL2.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/DownloadRequestOriginalURLFrame.html: Added.
12:36 PM Changeset in webkit [198910] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Moving a few skipped tests from ios-simulator-wk2 to ios-simulator TestExpectations file.

Unreviewed test gardening.

These particular tests time out due to lack of touch event support, which applies
to both wk1 and wk2 ios-simulator testers.

  • platform/ios-simulator-wk2/TestExpectations:
  • platform/ios-simulator/TestExpectations:
12:25 PM Changeset in webkit [198909] by tonikitoo@webkit.org
  • 2 edits in trunk/Source/WebCore

eventMayStartDrag() does not check for shiftKey or isOverLink
​https://bugs.webkit.org/show_bug.cgi?id=155746

Reviewed by Darin Adler.

There is currently a mismatch between the logic that checks whether
an event can start a dragging action in EventHandler::handleMousePressEvent
and in EventHandler::eventMayStartDrag
Basically the former checks for event's count, type, button, target and modifier.
The later, on the other hand, only checks for event's button and count.

In order to sync them up again, as per the comment in the code,
patch factors out the logic in ::handleMousePressEvent into a helper function,
and ultimately reuses it in ::eventMayStartDrag.

No new tests for two reasons:

1) ::handleMousePressEvent will not have any behavior change. Code is factored out
into a helper.

2) The callees of ::eventMayStartDrag are currently WebPage::shouldDelayWindowOrderingEvent
and ::acceptsFirstMouse. Based on my understanding of [1], these methods
are called when there is a (say) browser window in background with some text selected,
and user starts to drag the selected content. Dragging happens without bringing the window
foreground. This is called "non-activating click".
Such behavior will not change with the patch.

[1] ​https://bugs.webkit.org/show_bug.cgi?id=55053 - "Implement non-activating clicks to allow dragging out of a background window"

  • page/EventHandler.cpp:

(WebCore::isSingleMouseDownOnLinkOrImage):
(WebCore::canMouseEventStartDragInternal):
(WebCore::EventHandler::handleMousePressEvent):
(WebCore::documentPointForWindowPoint): Moved up in the file to be used elsewhere.
(WebCore::EventHandler::eventMayStartDrag):

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

Marking inspector/console/heapSnapshot.html as a flaky timeout on Mac
​https://bugs.webkit.org/show_bug.cgi?id=156078

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:03 PM Changeset in webkit [198907] by Joseph Pecoraro
  • 9 edits in trunk/Source/WebKit2

Web Automation: Add Automation.screenshot
​https://bugs.webkit.org/show_bug.cgi?id=156073
<rdar://problem/25468646>

Reviewed by Timothy Hatcher and Brian Burg.

  • UIProcess/Automation/Automation.json:

Add Automation.screenshot which returns base64 encoded PNG data.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::screenshot):
(WebKit::WebAutomationSession::didTakeScreenshot):
(WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
Send a message to the WebPage to get an Image of the page
and handle the response.

  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::platformGetBase64EncodedPNGData):
Convert the bitmap data to a base64 encoded PNG.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::evaluateJavaScriptCallback):
(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithName):
(WebKit::WebAutomationSessionProxy::resolveParentFrame):
(WebKit::WebAutomationSessionProxy::computeElementLayout):
Use null string where possible for efficiency.

(WebKit::WebAutomationSessionProxy::takeScreenshot):
Take an image of the entire page and pass back to the UIProcess.

11:56 AM Changeset in webkit [198906] by timothy@apple.com
  • 2 edits in trunk/Source/WebKit2

Web Automation: Handle undefined when calling a function that has no result

​https://bugs.webkit.org/show_bug.cgi?id=156075
rdar://problem/25468907

Reviewed by Brian Burg.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(let.AutomationSessionProxy.prototype._jsonParse): Return undefined for empty string.
(let.AutomationSessionProxy.prototype._jsonStringify): Always return a string.

11:54 AM Changeset in webkit [198905] by benjamin@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

[JSC][x86] Add the indexed forms of floating point addition and multiplication
​https://bugs.webkit.org/show_bug.cgi?id=156058

Reviewed by Geoffrey Garen.

B3 supports lowering [base, index] addresses into
arbitrary instructions but we were not using that feature.

This patch adds the missing support for the lowering
of Add and Mul.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::addsd_mr):
(JSC::X86Assembler::vaddsd_mr):
(JSC::X86Assembler::addss_mr):
(JSC::X86Assembler::vaddss_mr):
(JSC::X86Assembler::mulsd_mr):
(JSC::X86Assembler::vmulsd_mr):
(JSC::X86Assembler::mulss_mr):
(JSC::X86Assembler::vmulss_mr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::appendBinOp):
Unlike the Addr form, we never need to transform a Tmp
into an Index for spilling.

Instead of duplicating all the code in MacroAssembler, I can
just have the lowering phase try using addresses for the first
argument when possible.

  • b3/air/AirOpcode.opcodes:
  • b3/air/testair.cpp:

(JSC::B3::Air::testX86VMULSDBaseNeedsRex):
(JSC::B3::Air::testX86VMULSDIndexNeedsRex):
(JSC::B3::Air::testX86VMULSDBaseIndexNeedRex):
(JSC::B3::Air::run):

11:50 AM Changeset in webkit [198904] by tonikitoo@webkit.org
  • 3 edits in trunk/Source/WebCore

SelectionController::positionForPlatform should ask EditingBehavior for platform specific behavior
​https://bugs.webkit.org/show_bug.cgi?id=41976

Reviewed by Darin Adler.

SSIA.

No new tests needed.

  • editing/EditingBehavior.h:

(WebCore::EditingBehavior::shouldAlwaysExtendSelectionFromExtentEndpoint):

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::positionForPlatform):

11:45 AM Changeset in webkit [198903] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r198035. rdar://problem/25467558

11:28 AM Changeset in webkit [198902] by sbarati@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

DFG JIT bug in typeof constant folding where the input to typeof is an object or function
​https://bugs.webkit.org/show_bug.cgi?id=156034
<rdar://problem/25446785>

Reviewed by Ryosuke Niwa.

AI would constant fold TypeOf to the string "object" if it saw that
its input type didn't expand past the types contained in the set
"SpecObject - SpecObjectOther". But, SpecObject contains SpecFunction.
And typeof of a function should return "function". This patch fixes
this bug by making sure we constant fold to object iff the type
doesn't expand past the set "SpecObject - SpecObjectOther - SpecFunction".

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • tests/stress/typeof-dfg-function-or-object.js: Added.

(assert):
(foo.else.o):
(foo):

11:24 AM Changeset in webkit [198901] by commit-queue@webkit.org
  • 14 edits in trunk/Source

mediaShouldUsePersistentCache() is redundant. Use Page::usesEphemeralSession() instead.
​https://bugs.webkit.org/show_bug.cgi?id=155924

Patch by Jeremy Jones <​jeremyj@apple.com> on 2016-03-31
Reviewed by Simon Fraser.

Source/WebCore:

No new tests because there is no behavior change.

Remove machinery for mediaShouldUsePersistentCache() adopt usesEphemeralSession().

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerShouldUsePersistentCache):

  • page/ChromeClient.h: remove mediaShouldUsePersistentCache()

Source/WebKit/mac:

Remove mediaShouldUsePersistentCache machinery as it is redundant.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::mediaShouldUsePersistentCache): Deleted.

Source/WebKit2:

Remove machinery for mediaShouldUsePersistentCache as it is redundant.

  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode): Deleted.
(WebKit::WebPageCreationParameters::decode): Deleted.

  • Shared/WebPageCreationParameters.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::mediaShouldUsePersistentCache): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_mediaShouldUsePersistentCache): Deleted.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::mediaShouldUsePersistentCache): Deleted.

11:23 AM Changeset in webkit [198900] by adachan@apple.com
  • 13 edits in trunk/Source

Add the new "toggle enhanced fullscreen" context menu item to the video context menu on supporting platforms.
​https://bugs.webkit.org/show_bug.cgi?id=156031

Reviewed by Eric Carlson.

Source/WebCore:

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::contextMenuItemSelected):
Handle the selection of the context menu item.
(WebCore::ContextMenuController::populate):
Add this menu item on Mac.
(WebCore::ContextMenuController::checkOrEnableIfNeeded):
Set the menu item's title depending on the current enhanced fullscreen state
and enable this menu item if supported.

  • platform/ContextMenuItem.h:

Define the new tag for this menu item.

  • platform/LocalizedStrings.cpp:

(WebCore::contextMenuItemTagEnterVideoEnhancedFullscreen):
(WebCore::contextMenuItemTagExitVideoEnhancedFullscreen):

  • platform/LocalizedStrings.h:
  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::mediaSupportsEnhancedFullscreen):
(WebCore::HitTestResult::mediaIsInEnhancedFullscreen):
(WebCore::HitTestResult::toggleEnhancedFullscreenForVideo):

  • rendering/HitTestResult.h:

Source/WebKit/mac:

  • WebView/WebHTMLView.mm:

(toAction):
(toTag):

  • WebView/WebUIDelegatePrivate.h:

Source/WebKit2:

  • Shared/API/c/WKContextMenuItemTypes.h:
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):

11:16 AM Changeset in webkit [198899] by Yusuke Suzuki
  • 5 edits in trunk/LayoutTests

Three js/regress/string-repeat-* are flaky timeouts on Mac
​https://bugs.webkit.org/show_bug.cgi?id=156062

Reviewed by Saam Barati.

Reduce the test cases to avoid timeouts.

  • js/regress/script-tests/string-repeat-resolving-no-inline.js:
  • js/regress/script-tests/string-repeat-resolving.js:
  • js/regress/script-tests/string-repeat-small-resolving.js:
  • platform/mac/TestExpectations:
9:48 AM Changeset in webkit [198898] by Alan Bujtas
  • 1 edit
    2 adds in trunk/LayoutTests

Add a -mismatch test case for r198785.
see webkit.org/b/155973

Unreviewed.

  • plugins/missing-plugin-placeholder-expected-mismatch.html: Added.
  • plugins/missing-plugin-placeholder.html: Added.
9:45 AM Changeset in webkit [198897] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Removed leftovers of ENABLE(INSPECTOR) and ENABLE(VIEWPORT).
​https://bugs.webkit.org/show_bug.cgi?id=156064

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-31
Reviewed by Csaba Osztrogonác.

This ifdef guards were removed in r178820 and r147714, respectively.

  • wtf/FeatureDefines.h:
9:39 AM Changeset in webkit [198896] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix after r198893.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::findPendingDownloadLocation): Pass
new argument to download method.

9:17 AM Changeset in webkit [198895] by n_wang@apple.com
  • 5 edits in trunk

AX: aria-hidden=false causes video fallback content to be exposed to AX API
​https://bugs.webkit.org/show_bug.cgi?id=149278

Reviewed by Chris Fleizach.

Source/WebCore:

The comment says when aria-hidden="false" and object is not rendered, we should
check each parent's aria-hidden status until we encounter a rendered object. So
added a check for the rendered parent in order to break out of the loop earlier.

Test case covered in modified accessibility/aria-hidden-negates-no-visibility.html

  • accessibility/AXObjectCache.cpp:

(WebCore::isNodeAriaVisible):

LayoutTests:

  • accessibility/aria-hidden-negates-no-visibility-expected.txt:
  • accessibility/aria-hidden-negates-no-visibility.html:
9:12 AM Changeset in webkit [198894] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Gardening: Build and logic fix after r198873.
​https://bugs.webkit.org/show_bug.cgi?id=156043

Not reviewed.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::addFloat):

  • 2 args were meant to be ordered differently in order to call the other addFloat. Instead, there was an infinite recursion bug. This is now fixed.
8:35 AM Changeset in webkit [198893] by Brent Fulgham
  • 37 edits in trunk

[WK2] Support download attribute feature
​https://bugs.webkit.org/show_bug.cgi?id=102914
<rdar://problem/13177492>

Reviewed by Darin Adler.

Source/WebCore:

Tested by imported/w3c/web-platform-tests/html/dom/interfaces.html

imported/w3c/web-platform-tests/html/dom/reflection-text.html

A first draft implementation of this feature.

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::handleClick): If the anchor has the 'download'
attribute, pass along the information to the rest of the load system.

  • loader/FrameLoadRequest.h:

(WebCore::FrameLoadRequest::FrameLoadRequest): Create new overload that
accepts a download attribute flag and a suggested filename.
(WebCore::FrameLoadRequest::hasDownloadAttribute): Added.
(WebCore::FrameLoadRequest::suggestedFilename): Added.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::urlSelected): Expand to accept the download attribute
flag and suggested filename.
(WebCore::FrameLoader::loadURL): Populate the NavigationAction with the new
download attribute flag and suggested filename.
(WebCore::FrameLoader::loadPostRequest): Ditto.

  • loader/FrameLoader.h:
  • loader/FrameLoaderTypes.h: Add new 'HasDownloadAttribute' enum.
  • loader/NavigationAction.cpp:

(WebCore::navigationType):
(WebCore::NavigationAction::NavigationAction): Update to accept new download
attribute flag and suggested filename.

  • loader/NavigationAction.h:

(WebCore::NavigationAction::hasDownloadAttribute): Added.
(WebCore::NavigationAction::suggestedFilename): Added.

  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNavigationPolicy): Pass more information to
'continueAfterNavigationPolicy'
(WebCore::PolicyChecker::continueAfterNavigationPolicy): Accept suggested
filename

  • loader/PolicyChecker.h:

Source/WebKit2:

A first draft implementation of this feature.

  • NetworkProcess/Downloads/Download.cpp:

(WebKit::Download::Download): Update to accept default filename.
(WebKit::Download::didStart): Send default filename in message.

  • NetworkProcess/Downloads/Download.h:
  • NetworkProcess/Downloads/DownloadManager.cpp:

(WebKit::DownloadManager::startDownload): Expect a default filename argument.

  • NetworkProcess/Downloads/DownloadManager.h:
  • NetworkProcess/NetworkConnectionToWebProcess.cpp:

(WebKit::NetworkConnectionToWebProcess::startDownload): Expect a default
filename argument.

  • NetworkProcess/NetworkConnectionToWebProcess.h:
  • NetworkProcess/NetworkConnectionToWebProcess.messages.in: Update messages to

expect a default filename argument.

  • Shared/NavigationActionData.cpp:

(WebKit::NavigationActionData::encode): Handle the download attribute flag and
the default filename.
(WebKit::NavigationActionData::decode): Ditto.

  • Shared/NavigationActionData.h:
  • UIProcess/API/APINavigationAction.h:
  • UIProcess/Downloads/DownloadProxy.cpp:

(WebKit::DownloadProxy::didStart): Expect a default filename argument.
(WebKit::DownloadProxy::decideDestinationWithSuggestedFilename): Use the suggested
filename if the client delegate does not override it.

  • UIProcess/Downloads/DownloadProxy.h:
  • UIProcess/Downloads/DownloadProxy.messages.in: Include a default filename value.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::receivedPolicyDecision): If the feature is enabled, and
the load was started with a download attribute, convert a "PolicyUse" decision
to "PolicyDownload".
(WebKit::WebPageProxy::decidePolicyForNavigationAction): Remember if the load
is happening due to a 'download' attribute link.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createWindow): Populate the navigationActionData object
with any download attribute and suggested filename.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction): Populate the
navigationActionData object with any download attribute and suggested filename.
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.
(WebKit::WebFrameLoaderClient::startDownload): Expect a suggested filename argument.

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::startDownload): Expect a suggested filename argument.

  • WebProcess/WebPage/WebFrame.h:

Source/WTF:

  • wtf/FeatureDefines.h: Turn the ENABLE_DOWNLOAD_ATTRIBUTE flag

on to see what happens.

LayoutTests:

  • imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt: Update for

<a download>.

  • imported/w3c/web-platform-tests/html/dom/reflection-text-expected.txt: Ditto.
  • js/dom/dom-static-property-for-in-iteration-expected.txt: Ditto.
  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/interfaces-expected.txt: Ditto.
7:57 AM Changeset in webkit [198892] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking three js/regress/string-repeat-* tests as flaky timeouts on Mac
​https://bugs.webkit.org/show_bug.cgi?id=156062

Unreviewed test gardening.

  • platform/mac/TestExpectations:
5:32 AM EnvironmentVariables edited by clopez@igalia.com
(diff)
5:20 AM MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
4:05 AM Changeset in webkit [198891] by youenn.fablet@crf.canon.fr
  • 21 edits
    1 add in trunk

[Fetch API] Add basic loading of resources for Workers
​https://bugs.webkit.org/show_bug.cgi?id=155886

Reviewed by Alex Christensen.

LayoutTests/imported/w3c:

Updating test expectations as new tests are passing.

  • web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-others-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt:

Source/WebCore:

Adding impplementation to WorkerGlobalScopeFetch::fetch similarly to DOMWindowFetch::fetch.
Refactored code in FetchResponse to share code between the two.

Updated WorkerThreadableLoader to cope with an ASSERT.
The ASSERT ensures that a DocumentThreadableLoader::create returns non null.
In our case, it might happen as all cross origin fetch requests are denied at the moment.
This leads to calling didFail in DocumentThreadableLoader::create call and DocumentThreadableLoader::create to return null.
Updated the ASSERT to ensures that either the load is finished or DocumentThreadableLoader::create does not return null.

Covered by rebased tests.

  • Modules/fetch/DOMWindowFetch.cpp:

(WebCore::DOMWindowFetch::fetch):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::startFetching):
(WebCore::FetchResponse::fetch):

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

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h:
  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFinishLoading):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailRedirectCheck):

  • loader/WorkerThreadableLoader.h:

LayoutTests:

Soup and Mac HTTP backends differ on Content-Length header handling.

  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt: Added.
3:31 AM Changeset in webkit [198890] by youenn.fablet@crf.canon.fr
  • 7 edits in trunk/Source/WebCore

[Fetch API] Move isDisturbed handling to FetchBodyOwner
​https://bugs.webkit.org/show_bug.cgi?id=155968

Reviewed by Darin Adler.

Moved isDisturbed handling in FetchBodyOwner.
This includes promise rejection in case of disturbed bodies.

No behavior change observable from user scripts.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::extractFromBody):
(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeArrayBuffer):
(WebCore::FetchBody::processIfEmptyOrDisturbed): Deleted.

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::isEmpty): Deleted.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::arrayBuffer):
(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::formData):
(WebCore::FetchBodyOwner::json):
(WebCore::FetchBodyOwner::text):

  • Modules/fetch/FetchBodyOwner.h:

(WebCore::FetchBodyOwner::isDisturbed):
(WebCore::FetchBodyOwner::setDisturbed):

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::create):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::clone):

1:31 AM Changeset in webkit [198889] by youenn.fablet@crf.canon.fr
  • 5 edits
    1 copy
    6 moves
    1 add in trunk

Remove forEach use from Fetch Headers builtin constructor
​https://bugs.webkit.org/show_bug.cgi?id=155967

Reviewed by Joseph Pecoraro.

Source/WebCore:

Tests: fetch/shadowing-forEach.html

streams/shadowing-Promise.html
streams/shadowing-defineProperty.html

  • Modules/fetch/FetchHeaders.idl: Adding fillFromJS private method.
  • Modules/fetch/FetchHeaders.js:

(initializeFetchHeaders): Using fillFromJS private method. Using
instanceof test to check whether parameter is Headers or subclass of it.

  • bindings/js/WebCoreBuiltinNames.h: Adding fillFromJS private symbol.

LayoutTests:

Renaming tests covering user scripts breaking some WebCore JS built ins.

  • fetch/header-constructor-subclass-expected.txt: Added.
  • fetch/header-constructor-subclass.html: Added.
  • fetch/shadowing-forEach-expected.txt: Renamed from LayoutTests/streams/builtin-overrides-expected.txt.
  • fetch/shadowing-forEach.html: Renamed from LayoutTests/fetch/builtin-overrides.html.
  • streams/shadowing-Promise-expected.txt: Renamed from LayoutTests/streams/streams-promises-expected.txt.
  • streams/shadowing-Promise.html: Renamed from LayoutTests/streams/streams-promises.html.
  • streams/shadowing-defineProperty-expected.txt: Renamed from LayoutTests/fetch/builtin-overrides-expected.txt.
  • streams/shadowing-defineProperty.html: Renamed from LayoutTests/streams/builtin-overrides.html.
1:26 AM Changeset in webkit [198888] by youenn.fablet@crf.canon.fr
  • 18 edits
    4 adds in trunk/LayoutTests

[Fetch API] Update web-platform-test fetch API tests
​https://bugs.webkit.org/show_bug.cgi?id=155969

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Resyncing tests and updated expectations.
New test web-platform-tests/fetch/api/request/request-cache.html is timing out.

  • web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob.js:

(checkFetchResponse):

  • web-platform-tests/fetch/api/headers/headers-basic.html:
  • web-platform-tests/fetch/api/request/request-cache-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-cache.html: Added.
  • web-platform-tests/fetch/api/request/request-consume-empty.html:
  • web-platform-tests/fetch/api/request/request-consume.html:
  • web-platform-tests/fetch/api/request/request-idl-expected.txt:
  • web-platform-tests/fetch/api/request/request-idl.html:
  • web-platform-tests/fetch/api/request/request-init-002-expected.txt:
  • web-platform-tests/fetch/api/request/request-init-002.html:
  • web-platform-tests/fetch/api/request/resources/cache.py: Added.

(main):

  • web-platform-tests/fetch/api/resources/utils.js:

(stringToArray):
(validateBufferFromString):
(validateStreamFromString):

  • web-platform-tests/fetch/api/response/response-clone.html:
  • web-platform-tests/fetch/api/response/response-consume-empty.html:
  • web-platform-tests/fetch/api/response/response-consume.html:
  • web-platform-tests/fetch/api/response/response-init-002.html:

LayoutTests:

  • TestExpectations: Marking imported/w3c/web-platform-tests/fetch/api/request/request-cache.html as timing out.

Mar 30, 2016:

11:18 PM Changeset in webkit [198887] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

CMake build fix.

  • PlatformMac.cmake:
11:08 PM Changeset in webkit [198886] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows build.

  • platform/text/LineEnding.cpp:

make the char's and uint8_t's compile.

11:00 PM Changeset in webkit [198885] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Speculative Yosemite fix after r198872.

  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::platformSimulateKeySequence):
Yosemite didn't like _Nullable.

10:49 PM Changeset in webkit [198884] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • platform/text/LineEnding.cpp:
10:44 PM Changeset in webkit [198883] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Fix GTK and Windows builds after r198869.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::blobIsOutOfDate):
(WebCore::addEncodedBlobItemToSoupMessageBody):

  • platform/text/LineEnding.cpp:
9:18 PM Changeset in webkit [198882] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

BuildRequest should have associated platform and test
​https://bugs.webkit.org/show_bug.cgi?id=156054

Reviewed by Joseph Pecoraro.

Added methods to retrieve the platform and the test associated with a build request with tests.

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

(BuildRequest):
(BuildRequest.prototype.platform): Added.
(BuildRequest.prototype.test): Added.

  • server-tests/api-build-requests-tests.js:
  • server-tests/api-manifest.js: Fixed a typo. This tests /api/manifest, not /api/build-requests.
  • unit-tests/buildbot-syncer-tests.js:

(.createSampleBuildRequest): Now takes Platform and Test objects to avoid hitting assertions in
BuildRequest's constructor.

8:56 PM Changeset in webkit [198881] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Need to expose makeAllShadowRootsOpen in WKWebProcessPlugInScriptWorld.
​https://bugs.webkit.org/show_bug.cgi?id=156046

Add an SPI makeAllShadowRootsOpen method in WKWebProcessPlugInScriptWorld.

Patch by Yongjun Zhang <​yongjun_zhang@apple.com> on 2016-03-30
Reviewed by Dan Bernstein.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInScriptWorld.mm:

(-[WKWebProcessPlugInScriptWorld makeAllShadowRootsOpen]):

8:43 PM Changeset in webkit [198880] by bshafiei@apple.com
  • 3 edits in tags/Safari-602.1.25.1/Source/WebCore

Merged r198875. rdar://problem/25424541

8:42 PM Changeset in webkit [198879] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.25.1/Source

Versioning.

8:39 PM Changeset in webkit [198878] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.25.1

New tag.

7:20 PM Changeset in webkit [198877] by bshafiei@apple.com
  • 3 edits in tags/Safari-602.1.26/Source/WebCore

Merged r198875. rdar://problem/25424541

7:13 PM Changeset in webkit [198876] by Dewei Zhu
  • 2 edits in trunk/Tools

Extend animometer timeout for slow CPUs.
​https://bugs.webkit.org/show_bug.cgi?id=156047

Reviewed by Ryosuke Niwa.

Extend animometer timeout to 30 minutes for slow device.

  • Scripts/webkitpy/benchmark_runner/data/plans/animometer.plan:
7:07 PM Changeset in webkit [198875] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

[iOS WK2] Avoid creating tiles that are too large for rendering
​https://bugs.webkit.org/show_bug.cgi?id=156050
rdar://problem/25424541

Reviewed by Darin Adler.

In the case of a WKWebView which is sized large enough to show an entire document
(for example, when enclosed inside a UIScrollView), we would create tiles that were
larger than CoreAnimation was willing to deal with.

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::tileSize): Take the device scale, and the max IOSurface size
into account when computing the max tile size.

  • platform/graphics/cocoa/IOSurface.mm:

(IOSurface::maximumSize): CoreAnimation imposes limits in addition to the size reported
by IOSurfaceGetPropertyMaximum(), namely an 8k cap, so mimic that here.
(IOSurface::ensurePlatformContext): Typo.

7:07 PM Changeset in webkit [198874] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Fixed typo in fast/css/viewport-vmin-border test.
​https://bugs.webkit.org/show_bug.cgi?id=156028

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-30
Reviewed by Darin Adler.

  • fast/css/viewport-vmin-border.html: Test should should say "vmin" instead of

"vmax".

  • fast/css/viewport-vmin-border-expected.txt: Adjust expectation.
7:05 PM Changeset in webkit [198873] by benjamin@webkit.org
  • 8 edits in trunk/Source/JavaScriptCore

[JSC][x86] Add the 3 operands forms of floating point addition and multiplication
​https://bugs.webkit.org/show_bug.cgi?id=156043

Reviewed by Geoffrey Garen.

When they are available, VADD and VMUL are better options to lower
floating point addition and multiplication.

In the simple cases when one of the operands is aliased to the destination,
those forms have the same size or 1 byte shorter depending on the registers.

In the more advanced cases, we gain nice advantages with the new forms:
-We can get rid of the MoveDouble in front the instruction when we cannot

alias.

-We can disable aliasing entirely in Air. That is useful for latency

since computing coalescing is not exactly cheap.

  • assembler/MacroAssemblerX86Common.cpp:
  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::and32):
(JSC::MacroAssemblerX86Common::mul32):
(JSC::MacroAssemblerX86Common::or32):
(JSC::MacroAssemblerX86Common::xor32):
(JSC::MacroAssemblerX86Common::branchAdd32):
The change in B3LowerToAir exposed a bug in the fake 3 operands
forms of those instructions. If the address is equal to
the destination, we were nuking the address.

For example,

Add32([%r11], %eax, %r11)

would generate:

move %eax, %r11
add32 [%r11], %r11

which crashes.

I updated codegen of those cases to support that case through

load32 [%r11], %r11
add32 %eax, %r11

The weird case were all arguments have the same registers
is handled too.

(JSC::MacroAssemblerX86Common::addDouble):
(JSC::MacroAssemblerX86Common::addFloat):
(JSC::MacroAssemblerX86Common::mulDouble):
(JSC::MacroAssemblerX86Common::mulFloat):
(JSC::MacroAssemblerX86Common::supportsFloatingPointRounding):
(JSC::MacroAssemblerX86Common::supportsAVX):
(JSC::MacroAssemblerX86Common::updateEax1EcxFlags):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::branchAdd64):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::vaddsd_rr):
(JSC::X86Assembler::vaddsd_mr):
(JSC::X86Assembler::vaddss_rr):
(JSC::X86Assembler::vaddss_mr):
(JSC::X86Assembler::vmulsd_rr):
(JSC::X86Assembler::vmulsd_mr):
(JSC::X86Assembler::vmulss_rr):
(JSC::X86Assembler::vmulss_mr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::appendBinOp):
Add the 3 operand forms so that we lower Add and Mul
to the best form directly.

I will change how we lower the fake 3 operands instructions
but the codegen should end up the same in most cases.
The new codegen is the load32 + op above.

  • b3/air/AirInstInlines.h:

(JSC::B3::Air::Inst::shouldTryAliasingDef):

  • b3/air/testair.cpp:

(JSC::B3::Air::testX86VMULSD):
(JSC::B3::Air::testX86VMULSDDestRex):
(JSC::B3::Air::testX86VMULSDOp1DestRex):
(JSC::B3::Air::testX86VMULSDOp2DestRex):
(JSC::B3::Air::testX86VMULSDOpsDestRex):
(JSC::B3::Air::testX86VMULSDAddr):
(JSC::B3::Air::testX86VMULSDAddrOpRexAddr):
(JSC::B3::Air::testX86VMULSDDestRexAddr):
(JSC::B3::Air::testX86VMULSDRegOpDestRexAddr):
(JSC::B3::Air::testX86VMULSDAddrOpDestRexAddr):
Make sure we have some coverage for AVX encoding of instructions.

7:03 PM Changeset in webkit [198872] by Joseph Pecoraro
  • 7 edits in trunk/Source

Web Automation: Add Automation.performKeyboardInteractions
​https://bugs.webkit.org/show_bug.cgi?id=155990
<rdar://problem/25426408>

Patch by Brian Burg <BJ Burg> on 2016-03-30
Reviewed by Timothy Hatcher.

Source/WebKit2:

Add a command that allows automation to simulate single
key strokes or insertion of an entire string, character
by character.

  • UIProcess/Automation/Automation.json: Add new command.

Add a large enumeration of all virtual keys that exist
on a US 109-key keyboard layout. Add an interaction object.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::performKeyboardInteractions):
Added. This method validates the incoming key interactions
from the protocol and makes a list of simulated interactions
to perform. If everything validates, then delegate the key
interaction simulations to platform-specific methods.

(WebKit::WebAutomationSession::platformSimulateKeyStroke):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
Add stubs for other platforms.

  • UIProcess/Automation/WebAutomationSession.h: Add new

protocol command handler and platform simulation methods.

  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::platformSimulateKeyStroke):
(WebKit::WebAutomationSession::platformSimulateKeySequence):
These methods implement keyboard simulation for AppKit, used
by the Mac port. In the keystroke case, figure out the AppKit
keyCode for the key as well as any key modifiers that should
be included with the key event. Keep track of sticky modifiers
and update the session state appropriately. In the key sequence
case, split the string into combining character sequences and
send a 'key up/down'. This is a weird way to send non-ASCII
text, so a better alternative should be explored in the future.

Source/WTF:

Add a missing NSEventType declaration.

  • wtf/mac/AppKitCompatibilityDeclarations.h:
6:36 PM Changeset in webkit [198871] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebCore

[EFL][CMake] WebKit include path has been added to system include path
​https://bugs.webkit.org/show_bug.cgi?id=156019

Reviewed by Darin Adler.

Fix wrong include path addition.

  • PlatformEfl.cmake:

Add ${WEBCORE_DIR}/platform/graphics/surfaces/egl to WebCore include directory path.

6:31 PM Changeset in webkit [198870] by jdiggs@igalia.com
  • 7 edits in trunk

AX: Update handling of SVG elements with presentational role
​https://bugs.webkit.org/show_bug.cgi?id=156042

Reviewed by Chris Fleizach.

Source/WebCore:

Because the new expected behavior is to treat SVG elements with a
presentational role just like we treat other host language elements
with a presentational role, delete AccessibilitySVGElement's
determineAriaRoleAttribute().

No new test files. The expectations for w3c-svg-presentational-role.html
were updated because the presentational elements which have global ARIA
attributes are now being included in the accessibility tree. In addition,
several new test cases were added to this layout test so that we have
coverage for more presentational elements which lack global ARIA attributes.

  • accessibility/AccessibilitySVGElement.cpp:

(WebCore::AccessibilitySVGElement::determineAriaRoleAttribute): Deleted.

  • accessibility/AccessibilitySVGElement.h:

LayoutTests:

The expectations needed to be updated to reflect the elements which are
now being included in the accessibility tree. Also added several new test
cases with presentational elements that lack global ARIA attributes.

  • accessibility/w3c-svg-presentational-role.html: Added several new test cases.
  • platform/gtk/accessibility/w3c-svg-presentational-role-expected.txt: Updated.
  • platform/mac/accessibility/w3c-svg-presentational-role-expected.txt: Updated
6:21 PM Changeset in webkit [198869] by beidson@apple.com
  • 29 edits in trunk/Source

Make BlobData use ThreadSafeSharedBuffer instead of RawData.
​https://bugs.webkit.org/show_bug.cgi?id=156041

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No change in behavior).

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::extractFromText):
(WebCore::blobFromArrayBuffer):

  • Modules/fetch/FetchBody.h:
  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:

(WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):

  • Modules/websockets/ThreadableWebSocketChannelClientWrapper.h:
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::didReceiveBinaryData):

  • Modules/websockets/WebSocket.h:
  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::processFrame):

  • Modules/websockets/WebSocketChannel.h:
  • Modules/websockets/WebSocketChannelClient.h:

(WebCore::WebSocketChannelClient::didReceiveBinaryData):

  • Modules/websockets/WorkerThreadableWebSocketChannel.cpp:

(WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):

  • Modules/websockets/WorkerThreadableWebSocketChannel.h:
  • fileapi/Blob.cpp:

(WebCore::Blob::Blob):

  • fileapi/Blob.h:

(WebCore::Blob::create):

  • fileapi/WebKitBlobBuilder.h:
  • platform/network/BlobData.cpp:

(WebCore::BlobData::BlobData):
(WebCore::BlobDataItem::length):
(WebCore::BlobData::appendData):
(WebCore::BlobData::setContentType): Deleted.

  • platform/network/BlobData.h:

(WebCore::BlobDataItem::type):
(WebCore::BlobDataItem::data):
(WebCore::BlobDataItem::file):
(WebCore::BlobDataItem::BlobDataItem):
(WebCore::BlobData::create):
(WebCore::RawData::create): Deleted.
(WebCore::RawData::data): Deleted.
(WebCore::RawData::length): Deleted.
(WebCore::RawData::RawData): Deleted.

  • platform/network/BlobPart.h:

(WebCore::BlobPart::BlobPart):
(WebCore::BlobPart::data):
(WebCore::BlobPart::moveData):

  • platform/network/BlobRegistryImpl.cpp:

(WebCore::BlobRegistryImpl::appendStorageItems):
(WebCore::BlobRegistryImpl::registerFileBlobURL):
(WebCore::BlobRegistryImpl::registerBlobURL):
(WebCore::BlobRegistryImpl::registerBlobURLForSlice):

  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::getSizeForNext):
(WebCore::BlobResourceHandle::readSync):
(WebCore::BlobResourceHandle::readDataSync):
(WebCore::BlobResourceHandle::readFileSync):
(WebCore::BlobResourceHandle::readAsync):
(WebCore::BlobResourceHandle::readDataAsync):
(WebCore::BlobResourceHandle::readFileAsync):

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

(WebCore::appendBlobResolved):

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::blobIsOutOfDate):
(WebCore::addEncodedBlobItemToSoupMessageBody):

  • platform/text/LineEnding.cpp:

(WebCore::normalizeToCROrLF):
(WebCore::normalizeLineEndingsToNative):
(WebCore::normalizeLineEndingsToCR): Deleted.
(WebCore::normalizeLineEndingsToLF): Deleted.

  • platform/text/LineEnding.h:
  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::responseBlob):

Source/WebKit2:

  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::filesInBlob):

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<BlobPart>::decode):

5:47 PM Changeset in webkit [198868] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Change some release asserts in CodeBlock linking into debug asserts
​https://bugs.webkit.org/show_bug.cgi?id=155500

Reviewed by Filip Pizlo.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):

5:40 PM Changeset in webkit [198867] by Joseph Pecoraro
  • 8 edits in trunk/Source

Remove unused ScriptProfiler.Samples.totalTime
​https://bugs.webkit.org/show_bug.cgi?id=156002

Reviewed by Saam Barati.

Source/JavaScriptCore:

  • inspector/agents/InspectorScriptProfilerAgent.cpp:

(Inspector::buildSamples):
(Inspector::InspectorScriptProfilerAgent::trackingComplete):

  • inspector/protocol/ScriptProfiler.json:

Remove totalTime.

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::SamplingProfiler): Deleted.

  • runtime/SamplingProfiler.h:

(JSC::SamplingProfiler::totalTime): Deleted.
Remove now unused m_totalTime.

Source/WebInspectorUI:

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype.scriptProfilerTrackingCompleted):

  • UserInterface/Models/CallingContextTree.js:

(WebInspector.CallingContextTree.prototype.get totalExecutionTime): Deleted.
(WebInspector.CallingContextTree.prototype.reset): Deleted.
(WebInspector.CallingContextTree.prototype.increaseExecutionTime): Deleted.
Remove unused totalExecutionTime.

5:38 PM Changeset in webkit [198866] by msaboff@apple.com
  • 5 edits in trunk

[ES6] Quantified unicode regular expressions do not work for counts greater than 1
​https://bugs.webkit.org/show_bug.cgi?id=156044

Reviewed by Mark Lam.

Source/JavaScriptCore:

Fixed incorrect indexing of non-BMP characters in fixed patterns. The old code
was indexing by character units, a single JS character, instead of code points
which is 2 JS characters.

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::matchDisjunction):

LayoutTests:

Added new test cases.

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
4:44 PM Changeset in webkit [198865] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Unreviewed, rolling out r198856.

Broke the tests on the Apple El Capitan Release WK2 (Tests)
bot. Further investigation needed.

Reverted changeset:

"REGRESSION (r194660): Navigating to HTTPS sites may fail with
error"
​https://bugs.webkit.org/show_bug.cgi?id=155455
​http://trac.webkit.org/changeset/198856

4:09 PM Changeset in webkit [198864] by enrica@apple.com
  • 4 edits in trunk/Source/WebCore

Add a style for Data Detectors links.
​https://bugs.webkit.org/show_bug.cgi?id=155996
rdar://problem/25343514

Reviewed by Sam Weinig.

Based on indication from the data detection engine,
we style some of the links differently.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
4:06 PM Changeset in webkit [198863] by matthew_hanson@apple.com
  • 5 edits
    1 copy in branches/safari-601.1.46-branch/Tools

Merge r194115. rdar://problem/25253479

4:06 PM Changeset in webkit [198862] by matthew_hanson@apple.com
  • 8 edits in branches/safari-601.1.46-branch/Tools

Merge r192375. rdar://problem/25253479

3:42 PM Changeset in webkit [198861] by matthew_hanson@apple.com
  • 5 edits
    1 add
    4 deletes in branches/safari-601-branch

Merge r198687. rdar://problem/25448871

3:34 PM Changeset in webkit [198860] by bshafiei@apple.com
  • 42 edits
    5 deletes in tags/Safari-602.1.26

Merged r198844. rdar://problem/25450997

3:19 PM Changeset in webkit [198859] by mmaxfield@apple.com
  • 11 edits
    2 adds in trunk

[OS X] [RTL Scrollbars] Overlay RTL scrollbars animate in from the wrong side
​https://bugs.webkit.org/show_bug.cgi?id=155962

Reviewed by Darin Adler.

Source/WebCore:

We can control the animation direction with the NSScrollerImp property
userInterfaceLayoutDirection.

This patch also adds an Internals function to set whether or not we
should mock the scrollbars. Not mocking the scrollbars is required
to use NSScrollerImps.

Test: fast/scrolling/rtl-scrollbars-animation-property.html

  • platform/ScrollableArea.h: Use nullptr instead of 0.

(WebCore::ScrollableArea::horizontalScrollbar):
(WebCore::ScrollableArea::verticalScrollbar):
(WebCore::ScrollableArea::tiledBacking):
(WebCore::ScrollableArea::layerForHorizontalScrollbar):
(WebCore::ScrollableArea::layerForVerticalScrollbar):
(WebCore::ScrollableArea::layerForScrolling):
(WebCore::ScrollableArea::layerForScrollCorner):
(WebCore::ScrollableArea::layerForOverhangAreas):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::updateScrollerStyle): Set the direction
of the new NSScrollerImps.

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

(WebCore::ScrollbarThemeMac::didCreateScrollerImp): Set the direction
of an NSScrollerImp.
(WebCore::ScrollbarThemeMac::registerScrollbar): Call
didCreateScrollerImp().
(WebCore::ScrollbarThemeMac::isLayoutDirectionRTL): Used for testing,
to tell if the scroller's direction is RTL.

  • platform/spi/mac/NSScrollerImpSPI.h:
  • rendering/RenderTreeAsText.cpp:

(WebCore::write):

  • testing/Internals.cpp:

(WebCore::Internals::setMockScrollbarsEnabled): Used for testing.

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

LayoutTests:

This test only prints the "RTL" token when running on certain OSes.

  • fast/scrolling/rtl-scrollbars-animation-property.html: Added.
  • platform/mac/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
3:06 PM Changeset in webkit [198858] by weinig@apple.com
  • 3 edits
    2 adds in trunk

-webkit-text-underline-position: under; does not work in ToT
​https://bugs.webkit.org/show_bug.cgi?id=156038

Reviewed by David Hyatt.

Source/WebCore:

Test: fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under-vs-alphabetic.html

  • style/InlineTextBoxStyle.cpp:

(WebCore::computeUnderlineOffset):
Only resolve the underline position when based on the InlineTextBox when it is specified as auto.

LayoutTests:

  • fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under-vs-alphabetic-expected-mismatch.html: Added.
  • fast/css3-text/css3-text-decoration/text-underline-position/text-underline-position-under-vs-alphabetic.html: Added.

Add mismatch test to show that -webkit-text-underline-position: under works.

3:05 PM Changeset in webkit [198857] by eric.carlson@apple.com
  • 2 edits in trunk/LayoutTests

Fix the media test added in r185402
​https://bugs.webkit.org/show_bug.cgi?id=156040

Reviewed by Simon Fraser.

  • media/video-transformed-by-javascript.html: Load a valid media file.
2:48 PM Changeset in webkit [198856] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r194660): Navigating to HTTPS sites may fail with error
​https://bugs.webkit.org/show_bug.cgi?id=155455
<rdar://problem/24308793>

Reviewed by Alexey Proskuryakov.

Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses
a cache directory that it does not have permission to use.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed
bundle identifier/code signing identifier.
(WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory
suffix. Verify that the client identifier matches the code signed bundled identifier/code
signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast
instead of a C-style cast when casting an OSStatus to a long.
(WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess().

1:47 PM Changeset in webkit [198855] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Make the $vm debugging tools available to builtins as @$vm.
​https://bugs.webkit.org/show_bug.cgi?id=156012

Reviewed by Saam Barati.

We also need some debugging tools for builtin development. The $vm object will
be made available to builtins as @$vm, which gives us, amongst many goodies,
@$vm.print() (which prints the toString() values of its args) and
@$vm.printValue() (which dataLogs its arg as a JSValue). @$vm will only be
available if we run with JSC_useDollarVM=true.

Also changed @$vm.print() to not automatically insert a space between the
printing of each of its args. This makes it clearer as to what will be printed
i.e. it will only print what is passed to it.

  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::BuiltinNames):
(JSC::BuiltinNames::dollarVMPublicName):
(JSC::BuiltinNames::dollarVMPrivateName):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • tools/JSDollarVMPrototype.cpp:

(JSC::functionPrint):

1:39 PM Changeset in webkit [198854] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Fix Windows EWS after r198766
​https://bugs.webkit.org/show_bug.cgi?id=156029

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-30
Reviewed by Brent Fulgham.

  • CMakeLists.txt:
  • PlatformWin.cmake:

Copy headers before compiling WebCoreDerivedSources, not just before compiling WebCore.

12:46 PM Changeset in webkit [198853] by rniwa@webkit.org
  • 7 edits in trunk/Websites/perf.webkit.org

BuildRequest should have a method to fetch all in-progress and pending requests for a triggerable
​https://bugs.webkit.org/show_bug.cgi?id=156008

Reviewed by Darin Adler.

Add a method to BuildRequest that fetches all pending and in-progress requests for a triggerable.

Now, new syncing scripts must be able to figure out the build slave the first build requests in
a given test group had used in order to schedule subsequent build requests in the test group.

For this purpose, /api/build-requests has been modified to return all build requests whose test
group had not finished yet. A test group is finished if all build requests in the test group had
finished (completed, failed, or canceled).

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

(BuildRequestFetcher::fetch_incomplete_requests_for_triggerable): Return all build requests in test
groups that have not been finished.

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

(BuildRequest):
(BuildRequest.prototype.testGroupId): Added.
(BuildRequest.prototype.isPending): Renamed from hasPending to fix a bad grammar.
(BuildRequest.fetchForTriggerable): Added.
(BuildRequest.constructBuildRequestsFromData): Extracted from _createModelsFromFetchedTestGroups in
TestGroup.

  • public/v3/models/manifest.js:

(Manifest.fetch): Use the full path from root so that it works in server tests.

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

(TestGroup.hasPending):
(TestGroup._createModelsFromFetchedTestGroups):

  • server-tests/api-build-requests-tests.js: Added tests to ensure all build requests for a test group

is present in the response returned by /api/build-requests iff any build request in the group had not
finished yet.
(.addMockData):
(.addAnotherMockTestGroup): Added.

  • unit-tests/test-groups-tests.js:
12:42 PM Changeset in webkit [198852] by beidson@apple.com
  • 3 edits in trunk/Source/WebCore

Random SerializedScriptValue cleanup.
​https://bugs.webkit.org/show_bug.cgi?id=156032

Rubberstamped by Tim Hatcher.

  • Remove two unused functions.
  • Make the class always be ThreadSafeRefCounted.
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::numberValue): Deleted.
(WebCore::SerializedScriptValue::undefinedValue): Deleted.

  • bindings/js/SerializedScriptValue.h:
12:36 PM Changeset in webkit [198851] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Calculate more accurate time per-sample instead of assuming 1ms
​https://bugs.webkit.org/show_bug.cgi?id=155961
<rdar://problem/25404505>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-30
Reviewed by Geoffrey Garen.

Give each sample a duration based on the best time bounds we have available.
Script Profiler Events give us time bounds for (nearly) all script evaluations.
The only evaluations that are missed are Inspector scripts.

The duration per-sample is computed per-event:

durationPerSample = (event.endTime - event.startTime) / numSamplesInTimeRange.

If a 10ms Script Event contains 5 samples, they would each get a 2ms duration.
If a 0.5ms Script Event contains 1 sample, it would get a 0.5ms duration.

We were seeing an average of 1.6-1.8ms per sample for events that had more
than 3 samples.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype.scriptProfilerTrackingCompleted):
Associate a time duration per sample. For each Script Event we compute
an average time for all the samples in the event and assign it to the sample.

  • UserInterface/Models/CallingContextTree.js:

(WebInspector.CallingContextTree.prototype.totalDurationInTimeRange):
(WebInspector.CallingContextTree.prototype.numberOfSamplesInTimeRange): Deleted.
Accumulate the duration by checking each sample. Number of samples
is now meaningless.

(WebInspector.CallingContextTree.prototype.updateTreeWithStackTrace):
(WebInspector.CCTNode):
(WebInspector.CCTNode.prototype.addTimestampAndExpressionLocation):
Give CCTNodes a list of durations and leafDurations that parallels
the timestamps and leafTimestamps lists of individual samples.

(WebInspector.CCTNode.prototype.filteredTimestampsAndDuration):
(WebInspector.CCTNode.prototype.filteredLeafTimestampsAndDuration):
(WebInspector.CCTNode.prototype.filteredTimestamps): Deleted.
(WebInspector.CCTNode.prototype.numberOfLeafTimestamps): Deleted.
Whenever we get a list of timestamps, also compute the duration
of those timestamps at the same time.

  • UserInterface/Views/ProfileDataGridNode.js:

(WebInspector.ProfileDataGridNode):
(WebInspector.ProfileDataGridNode.prototype._updateChildrenForModifiers):
(WebInspector.ProfileDataGridNode.prototype._recalculateData):

  • UserInterface/Views/ProfileDataGridTree.js:

(WebInspector.ProfileDataGridTree):
(WebInspector.ProfileDataGridTree.prototype.get totalSampleTime):
(WebInspector.ProfileDataGridTree.prototype._updateCurrentFocusDetails):
(WebInspector.ProfileDataGridTree.prototype.get sampleInterval): Deleted.
(WebInspector.ProfileDataGridTree.prototype.get numberOfSamples): Deleted.
Instead of computing total time from (samples * sampleInterval),
accumulate it by adding up the duration of each individual sample.
Update the Profile Data Grid nodes to use the new calculations.

12:36 PM Changeset in webkit [198850] by Brent Fulgham
  • 13 edits in trunk/Source/WebCore

Avoid WebCore-prefixed paths when building WebCore
​https://bugs.webkit.org/show_bug.cgi?id=156027

Reviewed by David Kilzer.

Replace instances of '#include <WebCore/XXXYYY.h>"' with the normal
'#include "XXXYYY.h"' for files inside WebCore.

  • config.h:
  • inspector/InspectorTimelineAgent.cpp:
  • page/ViewportConfiguration.cpp:
  • platform/audio/ios/AudioDestinationIOS.cpp:
  • platform/cocoa/WebVideoFullscreenModel.h:
  • platform/cocoa/WebVideoFullscreenModelVideoElement.h:
  • platform/graphics/Font.h:
  • platform/graphics/ca/cocoa/LayerFlushSchedulerMac.cpp:
  • platform/graphics/cg/ColorCG.cpp:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/mac/WebVideoFullscreenInterfaceMac.h:
  • platform/mock/MediaPlaybackTargetPickerMock.cpp:
12:10 PM Changeset in webkit [198849] by commit-queue@webkit.org
  • 5 edits
    1 copy
    1 add in trunk/Source/WebCore

Move the CG ImageDecoder class from ImageSourceCG.cpp to ImageDecoderCG.h and .cpp
​https://bugs.webkit.org/show_bug.cgi?id=155980

Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-03-30
Reviewed by Simon Fraser.

After this step, ImageSource.cpp and ImageSourceCG.cpp look very similar
so they can be merged in one file. All the redundant code in these two files
can be removed.

  • PlatformAppleWin.cmake:
  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/cg/ImageDecoderCG.cpp: Copied from Source/WebCore/platform/graphics/cg/ImageSourceCG.cpp.

(WebCore::createImageSourceOptions):
(WebCore::imageSourceOptions):
(WebCore::orientationFromProperties):
(WebCore::sharedBufferGetBytesAtPosition):
(WebCore::sharedBufferRelease):
(WebCore::ImageDecoder::ImageDecoder):
(WebCore::ImageDecoder::subsamplingLevelForScale):
(WebCore::ImageDecoder::bytesDecodedToDetermineProperties):
(WebCore::ImageDecoder::filenameExtension):
(WebCore::ImageDecoder::isSizeAvailable):
(WebCore::ImageDecoder::size):
(WebCore::ImageDecoder::frameCount):
(WebCore::ImageDecoder::repetitionCount):
(WebCore::ImageDecoder::hotSpot):
(WebCore::ImageDecoder::frameSizeAtIndex):
(WebCore::ImageDecoder::frameIsCompleteAtIndex):
(WebCore::ImageDecoder::orientationAtIndex):
(WebCore::ImageDecoder::frameDurationAtIndex):
(WebCore::ImageDecoder::allowSubsamplingOfFrameAtIndex):
(WebCore::ImageDecoder::frameHasAlphaAtIndex):
(WebCore::ImageDecoder::frameBytesAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):
(WebCore::ImageDecoder::setData):

  • platform/graphics/cg/ImageDecoderCG.h: Added.

(WebCore::ImageDecoder::create):

  • platform/graphics/cg/ImageSourceCG.cpp:

(WebCore::ImageDecoder::create): Deleted.
(WebCore::createImageSourceOptions): Deleted.
(WebCore::imageSourceOptions): Deleted.
(WebCore::orientationFromProperties): Deleted.
(WebCore::sharedBufferGetBytesAtPosition): Deleted.
(WebCore::sharedBufferRelease): Deleted.
(WebCore::ImageDecoder::ImageDecoder): Deleted.
(WebCore::ImageDecoder::subsamplingLevelForScale): Deleted.
(WebCore::ImageDecoder::bytesDecodedToDetermineProperties): Deleted.
(WebCore::ImageDecoder::filenameExtension): Deleted.
(WebCore::ImageDecoder::isSizeAvailable): Deleted.
(WebCore::ImageDecoder::size): Deleted.
(WebCore::ImageDecoder::frameCount): Deleted.
(WebCore::ImageDecoder::repetitionCount): Deleted.
(WebCore::ImageDecoder::hotSpot): Deleted.
(WebCore::ImageDecoder::frameSizeAtIndex): Deleted.
(WebCore::ImageDecoder::frameIsCompleteAtIndex): Deleted.
(WebCore::ImageDecoder::orientationAtIndex): Deleted.
(WebCore::ImageDecoder::frameDurationAtIndex): Deleted.
(WebCore::ImageDecoder::allowSubsamplingOfFrameAtIndex): Deleted.
(WebCore::ImageDecoder::frameHasAlphaAtIndex): Deleted.
(WebCore::ImageDecoder::frameBytesAtIndex): Deleted.
(WebCore::ImageDecoder::createFrameImageAtIndex): Deleted.
(WebCore::ImageDecoder::setData): Deleted.

11:31 AM Changeset in webkit [198848] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Video size is not always set.
​https://bugs.webkit.org/show_bug.cgi?id=156020

Reviewed by Darin Adler.

Getting the video display control object from the media session might fail the first time.
In case it fails, we should try again when setting the video size.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::setSize):
(WebCore::MediaPlayerPrivateMediaFoundation::getVideoDisplay):
(WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
11:24 AM Changeset in webkit [198847] by commit-queue@webkit.org
  • 38 edits
    5 deletes in trunk

Unreviewed, rolling out r198828.
​https://bugs.webkit.org/show_bug.cgi?id=156030

Confirming PLT regression (Requested by anttik on #webkit).

Reverted changeset:

"Separate render tree updating from style resolve"
​https://bugs.webkit.org/show_bug.cgi?id=155298
​http://trac.webkit.org/changeset/198828

11:08 AM Changeset in webkit [198846] by Jon Davis
  • 1 edit in trunk/Websites/webkit.org/wp-content/themes/webkit/style.css

Tweak styles for transparent, isolated image presentation for blog posts.

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/style.css:

(.tile .background-image.loaded):
(.tile .featured-image):
(.tag-transparent:not(.featured-tile) .featured-image):
(.tag-transparent:not(.featured-tile) .background-image.loaded):

11:03 AM Changeset in webkit [198845] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, buildfix.

  • bytecode/BytecodeIntrinsicRegistry.h:
10:55 AM Changeset in webkit [198844] by keith_miller@apple.com
  • 42 edits
    5 deletes in trunk

Unreviewed, rollout r198808. The patch causes crashes on 32-bit and appears to be a JSBench regression.

10:34 AM Changeset in webkit [198843] by mmaxfield@apple.com
  • 6 edits
    10 adds in trunk

[OS X] [RTL Scrollbars] List boxes should obey RTL scrollbars
​https://bugs.webkit.org/show_bug.cgi?id=155991

Reviewed by Darin Adler.

Source/WebCore:

List boxes were created before RenderLayers, and therefore don't share
the scollbar logic with them. Instead, they manage their own Scrollbars.
The placement logic needs to be updated to take RTL scrollbars into
account.

Tests: fast/scrolling/rtl-scrollbars-listbox-scroll.html

fast/scrolling/rtl-scrollbars-listbox-select-left.html
fast/scrolling/rtl-scrollbars-listbox-select-right.html
fast/scrolling/rtl-scrollbars-listbox-simple.html
fast/scrolling/rtl-scrollbars-listbox.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::contentBoxRect):

  • rendering/RenderBox.h:

(WebCore::RenderBox::contentBoxRect): Deleted.

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::itemBoundingBoxRect):
(WebCore::RenderListBox::paintScrollbar):
(WebCore::RenderListBox::paintItemBackground):
(WebCore::RenderListBox::isPointInOverflowControl):
(WebCore::RenderListBox::listIndexAtOffset):
(WebCore::RenderListBox::nodeAtPoint):
(WebCore::RenderListBox::controlClipRect):
(WebCore::RenderListBox::invalidateScrollbarRect):
(WebCore::RenderListBox::convertFromScrollbarToContainingView):
(WebCore::RenderListBox::convertFromContainingViewToScrollbar):
(WebCore::RenderListBox::scrolledToTop):
(WebCore::RenderListBox::scrolledToBottom):

LayoutTests:

As with the previous patches, mark new tests as failing on all OSes that
don't support RTL scrollbars.

  • TestExpectations:
  • fast/scrolling/rtl-scrollbars-listbox-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-scroll-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-scroll.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-select-left-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-select-left.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-select-right-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-select-right.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-simple-expected-mismatch.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox-simple.html: Added.
  • fast/scrolling/rtl-scrollbars-listbox.html: Added.
10:23 AM Changeset in webkit [198842] by dbates@webkit.org
  • 4 edits in trunk/Tools

run-webkit-tests must create parent directory of user's cache directory before running tests
​https://bugs.webkit.org/show_bug.cgi?id=156009
<rdar://problem/25442682>

Reviewed by Alexey Proskuryakov.

The script run-webkit-tests must create the parent directory of the user's cache directory
before running tests because a WebKit2 child process expects that this directory exists
when it starts.

The script run-webkit-tests influences the path chosen by a WebKit2 child process for the
user's temporary directory and user's cache directory via the environment variable
DIRHELPER_USER_DIR_SUFFIX. For the user's temporary directory, run-webkit-tests creates it
as part of setting up the test environment. But run-webkit-tests does not create the user's
cache directory. Therefore there is race between the time AppKit creates it and when the
launched WebContent and Network processes query for the path to the user's cache directory
such that the OS may return the empty string to the WebContent and Network processes if
queried for this directory before AppKit creates it.

  • Scripts/webkitpy/port/base.py:

(Port._path_to_user_cache_directory): Added. Base class implementation that returns the
empty string. We will override this method for the OS X port to return the path to the
user's cache directory with the specified suffix.
(Port.remove_cache_directory): Deleted.

  • Scripts/webkitpy/port/driver.py:

(Driver.init): Initialize self._driver_user_directory_suffix and self._driver_user_cache_directory
to the suffix to use for the user's temporary and cache directories and the path to the
user's cache directory, respectively.
(Driver._setup_environ_for_driver): Modified to set the environment variable DIRHELPER_USER_DIR_SUFFIX
to self._driver_user_directory_suffix.
(Driver._start): Compute the user directory suffix and the path to the user's cache
directory. Create the user's cache directory (if applicable).
(Driver.stop): Modified to remove directory self._driver_user_cache_directory (if applicable).

  • Scripts/webkitpy/port/mac.py:

(MacPort.user_cache_directory): Added. Overrides Port._path_to_user_cache_directory().
(MacPort.remove_cache_directory): Deleted.

9:50 AM Changeset in webkit [198841] by mmaxfield@apple.com
  • 18 edits in trunk/Source

Use references instead of pointers in scrollbar-related code
​https://bugs.webkit.org/show_bug.cgi?id=155998

Reviewed by Dean Jackson.

Source/WebCore:

Migrate pointers to references.

No new tests because there is no behavior change.

  • page/FrameView.cpp:

(WebCore::FrameView::invalidateScrollbarRect):
(WebCore::FrameView::setVisibleScrollerThumbRect):

  • page/FrameView.h:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::convertFromScrollbarToContainingView):
(WebCore::ScrollView::convertFromContainingViewToScrollbar):

  • platform/ScrollView.h:
  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::invalidateScrollbar):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::convertFromScrollbarToContainingView):
(WebCore::ScrollableArea::convertFromContainingViewToScrollbar):

  • platform/Scrollbar.cpp:

(WebCore::Scrollbar::invalidateRect):
(WebCore::Scrollbar::convertToContainingView):
(WebCore::Scrollbar::convertFromContainingView):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::convertFromScrollbarToContainingView):
(WebCore::RenderLayer::convertFromContainingViewToScrollbar):
(WebCore::RenderLayer::scrollbarOffset):
(WebCore::RenderLayer::invalidateScrollbarRect):

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

(WebCore::RenderLayerCompositor::destroyRootLayer):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::invalidateScrollbarRect):
(WebCore::RenderListBox::convertFromScrollbarToContainingView):
(WebCore::RenderListBox::convertFromContainingViewToScrollbar):

  • rendering/RenderListBox.h:
  • platform/win/PopupMenuWin.cpp:

(WebCore::RenderListBox::invalidateScrollbarRect):

  • platform/win/PopupMenuWin.h:

Source/WebKit2:

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.h:
  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::PDFPlugin::convertFromScrollbarToContainingView):
(WebKit::PDFPlugin::convertFromContainingViewToScrollbar):
(WebKit::PDFPlugin::invalidateScrollbarRect):

9:37 AM Changeset in webkit [198840] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

9:34 AM Changeset in webkit [198839] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.26

New tag.

9:34 AM Changeset in webkit [198838] by Yusuke Suzuki
  • 11 edits
    31 adds in trunk

[JSC] Implement String.prototype.repeat in builtins JS
​https://bugs.webkit.org/show_bug.cgi?id=155974

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch converts C++ String.prototype.repeat implementation into JS builtins.
|this| in strict mode is correctly inferred as String[1]. This fact encourages us
to write PrimitiveTypes.prototype.XXX methods in builtin JS.

LayoutTests/js/string-repeat.html already covers the tests for this change.

Note: String.prototype.repeat functionality is similar to Harmony's
String.prototype.{padStart, padEnd}. It's nice to port them to builtin JS in
the other patch.

The existing C++ code has the fast path for singleCharacterString repeating.
Since this use is important (e.g. generating N length spaces: ' '.repeat(N)),
we keep this fast path as @repeatCharacter().

The performance results show that, while the performance of the single character fast path
is neutral, other string repeating has significant speed up.
There are two reasons.

  1. Not resolving string rope.

We added several tests postfixed "not-resolving". In that tests, we do not touch the content
of the generated string. As a result, the generated rope is not resolved.

  1. O(log N) intermediate JSRopeStrings.

In the existing C++ implementation, we use JSString::RopeBuilder. We iterate N times and append
the given string to the builder.
In this case, the intermediate rope strings generated in JSString::RopeBuilder is O(N).
In JS builtin implementation, we only iterate log N times. As a result, the number of the
intermediate rope strings becomes O(log N).

[1]: ​http://trac.webkit.org/changeset/195938

  • builtins/StringPrototype.js:

(repeatSlowPath):
(repeat):

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncRepeatCharacter):
(JSC::StringPrototype::finishCreation): Deleted.
(JSC::stringProtoFuncRepeat): Deleted.

  • runtime/StringPrototype.h:
  • tests/stress/string-repeat-edge-cases.js: Added.

(shouldBe):
(let.object.toString):
(valueOf):
(shouldThrow):

LayoutTests:

Update the error messages.

  • js/regress/script-tests/string-repeat-not-resolving-fixed.js: Added.

(test):

  • js/regress/script-tests/string-repeat-not-resolving-no-inline.js: Added.

(test):

  • js/regress/script-tests/string-repeat-not-resolving.js: Added.

(test):

  • js/regress/script-tests/string-repeat-resolving-fixed.js: Added.

(test):

  • js/regress/script-tests/string-repeat-resolving-no-inline.js: Added.

(test):

  • js/regress/script-tests/string-repeat-resolving.js: Added.

(test):

  • js/regress/script-tests/string-repeat-single-not-resolving.js: Added.

(test):

  • js/regress/script-tests/string-repeat-single-resolving.js: Added.

(test):

  • js/regress/script-tests/string-repeat-small-not-resolving.js: Added.

(test):

  • js/regress/script-tests/string-repeat-small-resolving.js: Added.

(test):

  • js/regress/string-repeat-not-resolving-expected.txt: Added.
  • js/regress/string-repeat-not-resolving-fixed-expected.txt: Added.
  • js/regress/string-repeat-not-resolving-fixed.html: Added.
  • js/regress/string-repeat-not-resolving-noinline-expected.txt: Added.
  • js/regress/string-repeat-not-resolving-noinline.html: Added.
  • js/regress/string-repeat-not-resolving.html: Added.
  • js/regress/string-repeat-resolving-expected.txt: Added.
  • js/regress/string-repeat-resolving-fixed-expected.txt: Added.
  • js/regress/string-repeat-resolving-fixed.html: Added.
  • js/regress/string-repeat-resolving-no-inline-expected.txt: Added.
  • js/regress/string-repeat-resolving-no-inline.html: Added.
  • js/regress/string-repeat-resolving.html: Added.
  • js/regress/string-repeat-single-not-resolving-expected.txt: Added.
  • js/regress/string-repeat-single-not-resolving.html: Added.
  • js/regress/string-repeat-single-resolving-expected.txt: Added.
  • js/regress/string-repeat-single-resolving.html: Added.
  • js/regress/string-repeat-small-not-resolving-expected.txt: Added.
  • js/regress/string-repeat-small-not-resolving.html: Added.
  • js/regress/string-repeat-small-resolving-expected.txt: Added.
  • js/regress/string-repeat-small-resolving.html: Added.
  • js/script-tests/string-repeat.js:
  • js/string-repeat-expected.txt:
9:25 AM Changeset in webkit [198837] by Simon Fraser
  • 3 edits
    2 adds in trunk

Make animation events non-cancelable
​https://bugs.webkit.org/show_bug.cgi?id=78110

Reviewed by Dan Bates.

Source/WebCore:

Make the animation events non-cancelable.

Test: animations/animation-events-not-cancelable.html

  • dom/AnimationEvent.cpp:

(WebCore::AnimationEvent::AnimationEvent):

LayoutTests:

  • animations/animation-events-not-cancelable-expected.txt: Added.
  • animations/animation-events-not-cancelable.html: Added.
7:37 AM Changeset in webkit [198836] by Jon Davis
  • 1 edit in trunk/Websites/webkit.org/wp-content/themes/webkit/single.php

Update the Twitter URLs for Twitter handles in blog post bylines.

  • wp-content/themes/webkit/single.php:
6:58 AM Changeset in webkit [198835] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Mark svg zoom and pageoverlay tests to failure

Unreviewed EFL gardening.

  • platform/efl/TestExpectations: Assign new bugs to the failures.
6:32 AM MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
4:45 AM Changeset in webkit [198834] by Manuel Rego Casasnovas
  • 17 edits in trunk

[css-grid] Refactor positioned children code
​https://bugs.webkit.org/show_bug.cgi?id=155972

Reviewed by Sergio Villar Senin.

Source/WebCore:

This is a refactoring of RenderGrid::offsetAndBreadthForPositionedChild()
in order to calculate offset and breadth in a more clean way.
Hopefully making the code easier to follow.

Thanks to the refactoring, now positioned children in RTL
are working fine if they use the static inline position
(when "left" and "right" properties are both "auto").

The other case (not having a static inline position)
will be fixed in a separated patch.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

LayoutTests:

Added RTL cases for most of the positioned tests,
which are now passing with this patch.

Pending to add RTL tests when "left" and "right" are not "auto"
(the item doesn't use the static inline position),
but that will be done in the other patch.

  • fast/css-grid-layout/absolute-positioning-grid-container-containing-block-expected.txt:
  • fast/css-grid-layout/absolute-positioning-grid-container-containing-block.html:
  • fast/css-grid-layout/absolute-positioning-grid-container-parent-expected.txt:
  • fast/css-grid-layout/absolute-positioning-grid-container-parent.html:
  • fast/css-grid-layout/grid-positioned-items-background-expected.html:
  • fast/css-grid-layout/grid-positioned-items-background.html:

Fix test setting transparent background as it couldn't fail before.
Also using a different width, to have different values when we create the RTL version.

  • fast/css-grid-layout/grid-positioned-items-implicit-grid-expected.txt:
  • fast/css-grid-layout/grid-positioned-items-implicit-grid-line-expected.txt:
  • fast/css-grid-layout/grid-positioned-items-implicit-grid-line.html:
  • fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
  • fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line-expected.txt:
  • fast/css-grid-layout/grid-positioned-items-unknown-named-grid-line.html:
  • fast/css-grid-layout/grid-sizing-positioned-items-expected.txt:
  • fast/css-grid-layout/grid-sizing-positioned-items.html:
1:18 AM Changeset in webkit [198833] by youenn.fablet@crf.canon.fr
  • 72 edits in trunk/Source/WebCore

Binding generator should allow passing DOM objects parameters as references
​https://bugs.webkit.org/show_bug.cgi?id=155953

Reviewed by Alex Christensen.

Updating binding generator to pass DOM object parameters as references.
Introducing UsePointersEvenForNonNullableObjectArguments to disable that change.

Updating FetchRequest.idl and DOMWindowFetch.idl to pass parameters as references.

Updated other IDL interfaces to keep passing DOM object parameters as pointers.
This should not change the behavior for these interfaces.
UsePointersEvenForNonNullableObjectArguments should be progressively removed on those interfaces.

Binding generator tests covered by rebased binding tests.

  • Modules/encryptedmedia/MediaKeySession.idl:
  • Modules/encryptedmedia/MediaKeys.idl:
  • Modules/fetch/DOMWindowFetch.cpp:

(WebCore::DOMWindowFetch::fetch):

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

(WebCore::FetchRequest::create):

  • Modules/fetch/FetchRequest.h:
  • Modules/fetch/WorkerGlobalScopeFetch.cpp:

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h:
  • Modules/mediacontrols/MediaControlsHost.idl:
  • Modules/mediasource/MediaSource.idl:
  • Modules/mediasource/SourceBuffer.idl:
  • Modules/mediastream/MediaStream.idl:
  • Modules/speech/SpeechSynthesis.idl:
  • Modules/webaudio/AudioContext.idl:
  • Modules/webaudio/OscillatorNode.idl:
  • Modules/websockets/WebSocket.idl:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateParametersCheck):
(IsParameterPassedByReference):
(GenerateConstructorDefinition):

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

(WebCore::jsTestActiveDOMObjectPrototypeFunctionExcitingFunction):

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

(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):

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

(WebCore::jsTestObjPrototypeFunctionVoidMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionByteMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionOctetMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionLongMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionObjMethodWithArgs):
(WebCore::jsTestObjPrototypeFunctionMethodThatRequiresAllArgsAndThrows):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8):
(WebCore::jsTestObjPrototypeFunctionConvert1):
(WebCore::jsTestObjPrototypeFunctionStrictFunctionWithSequence):
(WebCore::jsTestObjPrototypeFunctionStrictFunctionWithArray):
(WebCore::jsTestObjPrototypeFunctionVariadicNodeMethod):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjPrototypeFunctionMethodWithOptionalEnumArgAndDefaultValue):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjPrototypeFunctionGetSVGDocument):
(WebCore::jsTestObjPrototypeFunctionStrictFunction):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1):

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

(WebCore::constructJSTestOverloadedConstructors1):
(WebCore::constructJSTestOverloadedConstructors3):

  • css/FontFaceSet.idl:
  • css/WebKitCSSMatrix.idl:
  • dom/CompositionEvent.idl:
  • dom/DataTransfer.idl:
  • dom/Document.idl:
  • dom/Element.idl:
  • dom/EventTarget.idl:
  • dom/KeyboardEvent.idl:
  • dom/MouseEvent.idl:
  • dom/MutationEvent.idl:
  • dom/MutationObserver.idl:
  • dom/NamedNodeMap.idl:
  • dom/Node.idl:
  • dom/Range.idl:
  • dom/TextEvent.idl:
  • dom/TouchEvent.idl:
  • dom/UIEvent.idl:
  • dom/WebKitNamedFlow.idl:
  • dom/WheelEvent.idl:
  • fileapi/FileReader.idl:
  • fileapi/FileReaderSync.idl:
  • html/DOMURL.idl:
  • html/HTMLElement.idl:
  • html/HTMLMediaElement.idl:
  • html/HTMLOptionsCollection.idl:
  • html/HTMLSelectElement.idl:
  • html/canvas/CanvasRenderingContext2D.idl:
  • html/canvas/DOMPath.idl:
  • html/canvas/OESVertexArrayObject.idl:
  • html/canvas/WebGLDebugShaders.idl:
  • html/canvas/WebGLRenderingContext.idl:
  • html/canvas/WebGLRenderingContextBase.idl:
  • html/track/TextTrack.idl:
  • inspector/InspectorFrontendHost.idl:
  • page/DOMSelection.idl:
  • storage/StorageEvent.idl:
  • svg/SVGGraphicsElement.idl:
  • svg/SVGLengthList.idl:
  • svg/SVGNumberList.idl:
  • svg/SVGPathSegList.idl:
  • svg/SVGPointList.idl:
  • svg/SVGSVGElement.idl:
  • svg/SVGTransformList.idl:
  • testing/Internals.idl:
  • xml/XMLSerializer.idl:
  • xml/XPathEvaluator.idl:
  • xml/XPathExpression.idl:
  • xml/XSLTProcessor.idl:
12:17 AM Changeset in webkit [198832] by benjamin@webkit.org
  • 16 edits
    1 copy
    1 add
    4 deletes in trunk/Source/JavaScriptCore

[JSC] Update udis86
​https://bugs.webkit.org/show_bug.cgi?id=156005

Reviewed by Geoffrey Garen.

  • CMakeLists.txt:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • disassembler/udis86/differences.txt:
  • disassembler/udis86/itab.py: Removed.
  • disassembler/udis86/optable.xml:
  • disassembler/udis86/ud_itab.py: Added.
  • disassembler/udis86/ud_opcode.py:
  • disassembler/udis86/ud_optable.py: Removed.
  • disassembler/udis86/udis86.c:
  • disassembler/udis86/udis86_decode.c:
  • disassembler/udis86/udis86_decode.h:
  • disassembler/udis86/udis86_extern.h:
  • disassembler/udis86/udis86_input.c: Removed.
  • disassembler/udis86/udis86_input.h: Removed.
  • disassembler/udis86/udis86_syn-att.c:
  • disassembler/udis86/udis86_syn.h:
  • disassembler/udis86/udis86_types.h:
  • disassembler/udis86/udis86_udint.h:
12:14 AM Changeset in webkit [198831] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Get rid of operationInitGlobalConst(), it is useless
​https://bugs.webkit.org/show_bug.cgi?id=156010

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-30
Reviewed by Geoffrey Garen.

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

Mar 29, 2016:

11:58 PM Changeset in webkit [198830] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix build break since r198800. Unreviewed.
​https://bugs.webkit.org/show_bug.cgi?id=156011

Currently libWebCoreDerivedSources.a cannot see the symbol located in WebCore Source files.
This patch let the library can see the symbols of WebCore Sources.

  • PlatformEfl.cmake:
11:42 PM Changeset in webkit [198829] by ggaren@apple.com
  • 4 edits in trunk/Source/bmalloc

bmalloc: support physical page sizes that don't match the virtual page size (take 2)
​https://bugs.webkit.org/show_bug.cgi?id=156003

Reviewed by Andreas Kling.

This is a memory savings on iOS devices where the virtual page size
is 16kB but the physical page size is 4kB.

Take 1 was a memory regression on 16kB virtual / 16kB physical systems
because it used a 4kB page size within a 16kB page size, allowing up to
4 different object types to mix within a physical page. Because objects
of the same type tend to deallocate at the same time, mixing objects of
different types made pages less likely to become completely empty.

(Take 1 also had a bug where it used a platform #ifdef that didn't exist.
Oops.)

Take 2 allocates units of SmallPages equal to the physical page size.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::initializeLineMetadata):
(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateXLarge):
(bmalloc::Heap::shrinkXLarge):

  • bmalloc/Heap.h: Use the physical page size for our VM operations because

we're only concerned with returning physical pages to the OS.

  • bmalloc/VMAllocate.h:

(bmalloc::vmPageSize):
(bmalloc::vmPageShift):
(bmalloc::vmSize):
(bmalloc::vmValidate):
(bmalloc::vmPageSizePhysical):
(bmalloc::vmValidatePhysical):
(bmalloc::tryVMAllocate):
(bmalloc::vmDeallocatePhysicalPages):
(bmalloc::vmAllocatePhysicalPages):
(bmalloc::vmDeallocatePhysicalPagesSloppy):
(bmalloc::vmAllocatePhysicalPagesSloppy): Use the physical page size.

11:00 PM Changeset in webkit [198828] by Antti Koivisto
  • 38 edits
    5 adds in trunk

Separate render tree updating from style resolve
​https://bugs.webkit.org/show_bug.cgi?id=155298

Reviewed by Andreas Kling.

Source/WebCore:

This patch splits computing document style and applying the results into two distinct steps:

Style::TreeResolver::resolve()

|
| Style::Update
V

RenderTreeUpdater::commit()

Style::TreeResolver::resolve() returns a Style::Update object that contains all the changes to be made
for the whole composed tree. RenderTreeUpdater then applies the changes updating, building or tearing
down portions of the render tree as needed.

Style::Update consists of a map that contains new style for each newly resolved element along with some
metadata. A separate map contains text nodes that require reconstruction. It also tracks change roots so
RenderTreeUpdater needs to traverse the changed subtrees only.

The patch eliminates the recursive render tree build code path replacing it with iterative functions.

This will enable future optimizations. For example we won't need to commit to immediate rendering
changes simply because some script or internal function requires up-to-date style.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::State::State):
(WebCore::StyleResolver::styleForElement):

  • css/StyleResolver.h:

(WebCore::StyleResolver::setOverrideDocumentElementStyle):
(WebCore::StyleResolver::State::State):

Root element style is needed for resolving other elements. Add a way to provide it without looking
into active document style.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):

Resolve the document style and commit it immediately (for now).

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

  • dom/Document.h:

(WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet):
(WebCore::Document::inStyleRecalc):
(WebCore::Document::inRenderTreeUpdate):

  • dom/Element.cpp:

(WebCore::Element::setChildIndex):

Setting the unique bit is now done by style relations update code.

  • dom/Node.cpp:

(WebCore::Node::setNeedsStyleRecalc):

Prevent spurious style invalidation during render tree updating.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

Capturing body element color for color:-webkit-text is now done by TreeResolver.

  • rendering/RenderElement.h:

(WebCore::RenderElement::setAnimatableStyle): Deleted.

No longer used.

  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::nextSiblingRenderer):

Skip over non-rendered slot elements.

  • style/RenderTreeUpdater.cpp: Added.

(WebCore::RenderTreeUpdater::Parent::Parent):
(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::hasDisplayContents):
(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):

Call updateRenderTree for each change root.

(WebCore::shouldCreateRenderer):
(WebCore::RenderTreeUpdater::updateRenderTree):

Iteratively traverse the composed tree starting for a change root.
Apply the changes calling updateElementRenderer and updateTextRenderer as needed.
Enter subtrees that haves changes to apply.

(WebCore::RenderTreeUpdater::renderTreePosition):

We may not create renderers for all elements (<slot> or more generally display:contents) that
have rendered descendants. Search the parent stack to find the valid position.

(WebCore::RenderTreeUpdater::pushParent):
(WebCore::RenderTreeUpdater::popParent):
(WebCore::RenderTreeUpdater::popParentsToDepth):

Maintain parent stack.

(WebCore::pseudoStyleCacheIsInvalid):
(WebCore::RenderTreeUpdater::updateElementRenderer):

Create, delete or update the renderer.

(WebCore::moveToFlowThreadIfNeeded):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::textRendererIsNeeded):
(WebCore::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):

This is moved from TreeResolver.

(WebCore::needsPseudoElement):
(WebCore::RenderTreeUpdater::updateBeforeOrAfterPseudoElement):

Pseudo elements are handled entirely during render tree construction. Compute their style and
create or delete them as needed.

  • style/RenderTreeUpdater.h: Added.

(WebCore::RenderTreeUpdater::parent):

  • style/StyleRelations.cpp:

(WebCore::Style::commitRelationsToRenderStyle):
(WebCore::Style::commitRelations):

Commit to Style::Update instead of the document if needed.

(WebCore::Style::commitRelationsToDocument): Deleted.

  • style/StyleRelations.h:
  • style/StyleSharingResolver.cpp:

(WebCore::Style::elementHasDirectionAuto):
(WebCore::Style::SharingResolver::resolve):

Fetch the shareable style from Style::Update instead of the active document style.

(WebCore::Style::SharingResolver::findSibling):
(WebCore::Style::SharingResolver::canShareStyleWithElement):

  • style/StyleSharingResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::Parent::Parent):

No need for render tree position anymore.

(WebCore::Style::TreeResolver::popScope):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):
(WebCore::Style::createTextRendererIfNeeded):
(WebCore::Style::updateTextRendererAfterContentChange):
(WebCore::Style::resetStyleForNonRenderedDescendants):
(WebCore::Style::detachChildren):
(WebCore::Style::detachSlotAssignees):
(WebCore::Style::detachRenderTree):
(WebCore::Style::TreeResolver::resolveElement):

Just resolve the style and return it, no more applying or entering render tree construction code paths.

(WebCore::Style::resolveTextNode):
(WebCore::Style::elementImplicitVisibility):
(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):
(WebCore::Style::TreeResolver::popParentsToDepth):
(WebCore::Style::shouldResolvePseudoElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

Add style changes to Style::Update.

(WebCore::Style::TreeResolver::resolve):

Return Style::Update object if non-empty.

(WebCore::Style::postResolutionCallbackQueue):
(WebCore::Style::shouldCreateRenderer): Deleted.
(WebCore::Style::moveToFlowThreadIfNeeded): Deleted.
(WebCore::Style::TreeResolver::createRenderer): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForChildren): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForShadowRoot): Deleted.
(WebCore::Style::beforeOrAfterPseudoElement): Deleted.
(WebCore::Style::setBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::clearBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::needsPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeRecursively): Deleted.
(WebCore::Style::pseudoStyleCacheIsInvalid): Deleted.
(WebCore::Style::TreeResolver::resolveBeforeOrAfterPseudoElement): Deleted.

Remove the recursive render tree building code path.

  • style/StyleTreeResolver.h:

(WebCore::Style::TreeResolver::scope):

  • style/StyleUpdate.cpp: Added.

(WebCore::Style::Update::Update):
(WebCore::Style::Update::elementUpdate):
(WebCore::Style::Update::textUpdate):
(WebCore::Style::Update::elementStyle):
(WebCore::Style::Update::addElement):
(WebCore::Style::Update::addText):
(WebCore::Style::Update::addPossibleRoot):

  • style/StyleUpdate.h: Added.

(WebCore::Style::Update::roots):
(WebCore::Style::Update::document):

  • svg/SVGElement.h:

(WebCore::SVGElement::updateRelativeLengthsInformation):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::willRecalcStyle):
(WebCore::SVGUseElement::willAttachRenderers): Deleted.

Switch willAttachRenderers to willRecalcStyle as the former is now called too late.

  • svg/SVGUseElement.h:

LayoutTests:

Skip mathml/presentation/menclose-notation-attribute-change-value.html. It will be fixed by upcoming MathML refactoring.

  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-resize-expected.txt:

This is a progression.

  • editing/mac/spelling/autocorrection-contraction-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-after-paste-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-expected.txt:
  • editing/mac/spelling/autocorrection-simple-expected.txt:
  • editing/style/remove-underline-from-stylesheet-expected.txt:
  • editing/style/typing-style-003-expected.txt:

Non-rendered whitespace related changes.

  • platform/ios-simulator/TestExpectations:

Skip fast/regions/position-writing-modes-in-variable-width-regions.html on iOS. Similar tests are mostly already skipped.

  • platform/ios-simulator/editing/style/typing-style-003-expected.txt: Added.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.txt:
  • platform/mac/editing/inserting/editable-html-element-expected.txt:
  • platform/mac/editing/inserting/editing-empty-divs-expected.txt:
  • platform/mac/editing/inserting/insert-at-end-02-expected.txt:
  • platform/mac/editing/pasteboard/4989774-expected.txt:
  • platform/mac/editing/selection/4983858-expected.txt:

Non-rendered whitespace related changes.

10:13 PM Changeset in webkit [198827] by commit-queue@webkit.org
  • 8 edits in trunk

[WTF] Removing a smart pointer from HashTable issues two stores to the same location
​https://bugs.webkit.org/show_bug.cgi?id=155676

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-29
Reviewed by Darin Adler.

Source/WTF:

While working on the hot loop of r198376, I noticed something
weird...
Every time we removed a smart pointer from the hash table,
the code generated was something like:

Load([bucket]) -> Tmp
Store(0 -> [bucket])
JumpIfZero(Tmp, ->End)
Call fastFree()
Store(-1 -> [bucket])
-> End:

The useless store before the branch is annoying, especially on ARM.

Here is what happens:

1) The destructor of the smart pointer swaps its internal value with nullptr.
2) Since the smart pointer is not a local in-register value, that nullptr

is stored in memory because it could be observable from fastFree().

3) The destructor destroy the value if not zero (or deref for RefPtr).

The "if-not-zero" may or may not be eliminated depending on what
is between getting the iterator and the call to remove().

4) fastFree() is called.
5) The deleted value is set in the bucket.

This patch adds custom deletion for those cases to avoid the useless
store. The useless null check is still eliminated when we are lucky.

I went this path instead of changing the destructor of RefPtr for two reasons:
-I need this to work in unique_ptr for JSC.
-Nulling the memory may have security advantages in the cases where we do not immediately

write over that memory again.

This patch removes 13kb out of x86_64 WebCore.

  • wtf/HashTable.h:

(WTF::HashTable::deleteBucket):
(WTF::KeyTraits>::removeIf):

  • wtf/HashTraits.h:

(WTF::HashTraits<RefPtr<P>>::customDeleteBucket):
(WTF::hashTraitsDeleteBucket):
(WTF::KeyValuePairHashTraits::customDeleteBucket):

  • wtf/text/AtomicStringHash.h:

(WTF::HashTraits<WTF::AtomicString>::isEmptyValue):
(WTF::HashTraits<WTF::AtomicString>::customDeleteBucket):

  • wtf/text/StringHash.h:

(WTF::HashTraits<String>::customDeleteBucket):

Tools:

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:
  • TestWebKitAPI/Tests/WTF/HashSet.cpp:
9:16 PM Changeset in webkit [198826] by rniwa@webkit.org
  • 8 edits in trunk/Websites/perf.webkit.org

Make dependency injection in unit tests more explicit
​https://bugs.webkit.org/show_bug.cgi?id=156006

Reviewed by Joseph Pecoraro.

Make the dependency injection of model objects in unit tests explicit so that server tests that create
"real" model objects won't create these mock objects. Now each test that uses mock model objects would call
MockModels.inject() to inject before / beforeEach and access each object using a property on MockModels
instead of them being implicitly defined on the global object.

Similarly, MockRemoteAPI now only replaces global.RemoteAPI during each test so that server tests can use
real RemoteAPI to access the test Apache server.

  • unit-tests/analysis-task-tests.js:
  • unit-tests/buildbot-syncer-tests.js:

(createSampleBuildRequest):

  • unit-tests/measurement-adaptor-tests.js:
  • unit-tests/measurement-set-tests.js:
  • unit-tests/resources/mock-remote-api.js:

(MockRemoteAPI.getJSONWithStatus):
(MockRemoteAPI.inject): Added. Override RemoteAPI on the global object during each test.

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

(MockModels.inject): Added. Create mock model objects before each test, and clear all static maps of
various v3 model classes (to remove all singleton objects for those model classes).

  • unit-tests/test-groups-tests.js:
8:34 PM Changeset in webkit [198825] by Jon Davis
  • 3 edits in trunk/Websites/webkit.org/wp-content

Unreviewed fixes for search errors on WebKit Nightly Archives page; fixed date display on WebKit Nightly page
​https://bugs.webkit.org/show_bug.cgi?id=155989

  • wp-content/plugins/sync-nightly-builds.php:
  • wp-content/themes/webkit/nightly.php:
  • wp-content/themes/webkit/scripts/searchbuilds.js:

(initsearch.displayError):

8:16 PM Changeset in webkit [198824] by rniwa@webkit.org
  • 8 edits in trunk/Websites/perf.webkit.org

BuildbotSyncer should be able to fetch JSON from buildbot
​https://bugs.webkit.org/show_bug.cgi?id=155921

Reviewed by Joseph Pecoraro.

Added BuildbotSyncer.pullBuildbot which fetches pending, in-progress, and finished builds from buildbot
with lots of unit tests as this has historically been a source of subtle bugs in the old script.

New implementation fixes a subtle bug in the old pythons script which overlooked the possibility that
the state of some builds may change between each HTTP request. In the old script, we fetched the list
of the pending builds, and requested -1, -2, etc... builds for N times. But between each request,
a pending build may start running or an in-progress build finish and shift the offset by one. The new
script avoids this problem by first requesting all pending builds, then all in-progress and finished
builds in a single HTTP request. The results are then merged so that entries for in-progress and
finished builds would override the entries for pending builds if they overlap.

Also renamed RemoteAPI.fetchJSON to RemoteAPI.getJSON to match v3 UI's RemoteAPI. This change makes
the class interchangeable between frontend (public/v3/remote.js) and backend (tools/js/remote.js).

  • server-tests/api-build-requests-tests.js:
  • server-tests/api-manifest.js:
  • tools/js/buildbot-syncer.js:

(BuildbotBuildEntry): Removed the unused argument "type". Store the syncer as an instance variable as
we'd need to query for the buildbot URL. Also fixed a bug that _isInProgress was true for finished
builds as 'currentStep' is always defined but null in those builds.
(BuildbotBuildEntry.prototype.buildNumber): Added.
(BuildbotBuildEntry.prototype.isPending): Added.
(BuildbotBuildEntry.prototype.hasFinished): Added.
(BuildbotSyncer.prototype.pullBuildbot): Added. Fetches pending builds first and then finished builds.
(BuildbotSyncer.prototype._pullRecentBuilds): Added. Fetches in-progress and finished builds.
(BuildbotSyncer.prototype.urlForPendingBuildsJSON): Added.
(BuildbotSyncer.prototype.urlForBuildJSON): Added.
(BuildbotSyncer.prototype.url): Added.
(BuildbotSyncer.prototype.urlForBuildNumber): Added.

  • tools/js/remote.js:

(RemoteAPI.prototype.getJSON): Renamed from fetchJSON.
(RemoteAPI.prototype.getJSONWithStatus): Renamed from fetchJSONWithStatus.

  • tools/js/v3-models.js: Load tools/js/remote.js instead of public/v3/remote.js inside node.
  • unit-tests/buildbot-syncer-tests.js: Added a lot of unit tests for BuildbotSyncer.pullBuildbot

(samplePendingBuild):
(sampleInProgressBuild): Added.
(sampleFinishedBuild): Added.

  • unit-tests/resources/mock-remote-api.js:

(global.RemoteAPI.getJSON): Use the same mock as getJSONWithStatus.

7:50 PM Changeset in webkit [198823] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION: Yosemite-only: com.apple.WebKit.Plugin.32.Development crashed in PluginProcessShim.dylib: WebKit::shimMachVMMap + 26
<​http://webkit.org/b/156000>
<rdar://problem/25272133>

Reviewed by Joseph Pecoraro.

  • PluginProcess/mac/PluginProcessShim.mm:

(WebKit::shimMachVMMap): Add SUPPRESS_ASAN attribute on
Yosemite.

7:36 PM Changeset in webkit [198822] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Fixed a property access error by removing the lamda function for updates

7:22 PM Changeset in webkit [198821] by ggaren@apple.com
  • 8 edits in trunk/Source/bmalloc

bmalloc: page size should be configurable at runtime
​https://bugs.webkit.org/show_bug.cgi?id=155993

Reviewed by Andreas Kling.

This is a memory win on 32bit iOS devices, since their page sizes are
4kB and not 16kB.

It's also a step toward supporting 64bit iOS devices that have a
16kB/4kB virtual/physical page size split.

  • bmalloc/Chunk.h: Align to largeAlignment since 2 * smallMax isn't

required by the boundary tag allocator.

(bmalloc::Chunk::page): Account for the slide when accessing a page.
Each SmallPage hashes 4kB of memory. When we want to allocate a region
of memory larger than 4kB, we store our metadata in the first SmallPage
in the region and we assign a slide to the remaining SmallPages, so
they forward to that first SmallPage when accessed.

NOTE: We could use a less flexible technique that just hashed by
vmPageSize() instead of 4kB at runtime, with no slide, but I think we'll
be able to use this slide technique to make even more page sizes
dynamically at runtime, which should save some memory and simplify
the allocator.

(bmalloc::SmallPage::begin): It's invalid to access a SmallPage with
a slide, since such SmallPages do not contain meaningful data.

(bmalloc::SmallPage::end): Account for smallPageCount when computing
the size of a page.

(bmalloc::Chunk::pageBegin): Deleted.
(bmalloc::Chunk::pageEnd): Deleted.
(bmalloc::Object::pageBegin): Deleted.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap): Cache vmPageSize because computing it might require
a syscall.

(bmalloc::Heap::initializeLineMetadata): Line metadata is a vector instead
of a 2D array because we don't know how much metadata we'll need until
we know the page size.

(bmalloc::Heap::scavengeSmallPage): Be sure to revert the slide when
deallocating a page. Otherwise, the next attempt to allocate the page
will slide when initializing it, sliding to nowhere.

(bmalloc::Heap::allocateSmallBumpRanges): Account for vector change to
line metadata.

(bmalloc::Heap::allocateSmallPage): Initialize slide and smallPageCount
since they aren't constant anymore.

(bmalloc::Heap::allocateLarge):
(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateXLarge):
(bmalloc::Heap::shrinkXLarge): Adopt dynamic page size.

  • bmalloc/Heap.h:
  • bmalloc/Sizes.h: smallPageSize is no longer equal to the VM page

size -- it's just the smallest VM page size we're interested in supporting.

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::slide):
(bmalloc::SmallPage::setSlide):
(bmalloc::SmallPage::smallPageCount):
(bmalloc::SmallPage::setSmallPageCount):
(bmalloc::SmallPage::ref):
(bmalloc::SmallPage::deref): Support slide and small page count as
dynamic values. This doesn't increase metadata size since sizeof(SmallPage)
rounds up to alignment anyway.

  • bmalloc/VMAllocate.h:

(bmalloc::vmPageSize):
(bmalloc::vmPageShift):
(bmalloc::vmSize):
(bmalloc::vmValidate):
(bmalloc::tryVMAllocate):
(bmalloc::vmDeallocatePhysicalPagesSloppy):
(bmalloc::vmAllocatePhysicalPagesSloppy): Treat page size as a variable.

  • bmalloc/Vector.h:

(bmalloc::Vector::initialCapacity):
(bmalloc::Vector<T>::insert):
(bmalloc::Vector<T>::grow):
(bmalloc::Vector<T>::shrink):
(bmalloc::Vector<T>::shrinkCapacity):
(bmalloc::Vector<T>::growCapacity): Treat page size as a variable.

7:18 PM Changeset in webkit [198820] by Jon Davis
  • 4 edits in trunk/Websites/webkit.org

Fixed a context error for Nightly Build sync plugin, tightens layout styles for abovetitle

7:02 PM Changeset in webkit [198819] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: VoiceOver not announcing the right header information for table on iOS
​https://bugs.webkit.org/show_bug.cgi?id=155907

Reviewed by Chris Fleizach.

Source/WebCore:

Make sure we consider the case where header elements size does not equal to
row size.

Test: accessibility/ios-simulator/table-row-column-headers.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper accessibilityHeaderElements]):

LayoutTests:

  • accessibility/ios-simulator/table-row-column-headers-expected.txt: Added.
  • accessibility/ios-simulator/table-row-column-headers.html: Added.
6:31 PM Changeset in webkit [198818] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

REGRESSION (r198782): CGImageSourceUpdateData() is called twice with the same data every time ImageSource::setData() is called
​https://bugs.webkit.org/show_bug.cgi?id=155997

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2016-03-29
Reviewed by Simon Fraser.

Remove a call to CGImageSourceUpdateData() which was mistakenly left in
ImageDecoder::setData() after ImageSource refactoring.

  • platform/graphics/cg/ImageSourceCG.cpp:

(WebCore::ImageDecoder::setData):

6:24 PM Changeset in webkit [198817] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebCore

REGRESSION(r198784) Shouldn't add platform-dependent code to ScrollableArea.h
​https://bugs.webkit.org/show_bug.cgi?id=155999

Rolling out the patch.

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::horizontalScrollbar):
(WebCore::ScrollableArea::verticalScrollbar):
(WebCore::ScrollableArea::tiledBacking):
(WebCore::ScrollableArea::layerForHorizontalScrollbar):
(WebCore::ScrollableArea::layerForVerticalScrollbar):
(WebCore::ScrollableArea::layerForScrolling):
(WebCore::ScrollableArea::layerForScrollCorner):
(WebCore::ScrollableArea::layerForOverhangAreas):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::updateScrollerStyle): Deleted.

  • platform/mac/ScrollableAreaMac.mm:

(WebCore::ScrollableArea::setScrollbarLayoutDirection): Deleted.

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::registerScrollbar): Deleted.

  • platform/spi/mac/NSScrollerImpSPI.h:
5:40 PM Changeset in webkit [198816] by Jon Davis
  • 5 edits
    6 adds in trunk/Websites/webkit.org

Add WebKit Nightly Archives, WebKit Nightly Start, and Downloads pages
​https://bugs.webkit.org/show_bug.cgi?id=155989

Reviewed by Timothy Hatcher.

  • wp-content/plugins/sync-nightly-builds.php: Added.
  • wp-content/themes/webkit/downloads.php: Added.
  • wp-content/themes/webkit/functions.php:
  • wp-content/themes/webkit/images/download.svg:
  • wp-content/themes/webkit/images/spinner.svg: Added.
  • wp-content/themes/webkit/nightly-archives.php: Added.
  • wp-content/themes/webkit/nightly-start.php: Added.
  • wp-content/themes/webkit/nightly.php:
  • wp-content/themes/webkit/scripts/searchbuilds.js: Added.

(initsearch.xhrPromise.):
(initsearch):
(initsearch.displayResults.addEntry):
(initsearch.displayResults):
(initsearch.displayError):
(initsearch.clearErrors):

  • wp-content/themes/webkit/style.css:

(input[type=text]):
(input[type=submit]):
(article .byline):
(article .abovetitle):

5:31 PM Changeset in webkit [198815] by dburkart@apple.com
  • 5 edits
    10 adds in trunk

Web Inspector: JS PrettyPrinting in do/while loops, "while" should be on the same line as "}" if there was a closing brace
​https://bugs.webkit.org/show_bug.cgi?id=117616
<rdar://problem/15796884>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

This patch fixes the formatting of do / while loops in the WebInspector CodeFormatter.

Before:

do {

"x"

}
while (0);

After:

do {

"x"

} while (0);

  • UserInterface/Views/CodeMirrorFormatters.js:

(shouldHaveSpaceBeforeToken):
If we encounter a while token and the last token was a closing brace, we *should* add a space if that closing
brace was closing a do block.

(removeLastNewline):
If we encounter a while token and the last token was a closing brace, we *should not* add a newline if that closing
brace closes a do block.

(modifyStateForTokenPre):
We should keep track of the last token that we encountered before entering into a block. We do this by setting
a lastContentBeforeBlock property on openBraceStartMarker / state objects.

In addition, this fixes a bug where we do not pop a state object off of openBraceStartMarkers if our indentCount
is 0. Without doing this, we cannot reliably determine whether or not our while token needs to be inline or not.

LayoutTests:

  • inspector/codemirror/prettyprinting-javascript-expected.txt:
  • inspector/codemirror/prettyprinting-javascript.html:
  • inspector/codemirror/resources/prettyprinting/javascript-tests/do-while-loop-expected.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/do-while-loop.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/do-while-within-if-expected.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/do-while-within-if.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/if-followed-by-while-expected.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/if-followed-by-while.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/if-while-within-do-while-expected.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/if-while-within-do-while.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/while-within-do-while-expected.js: Added.
  • inspector/codemirror/resources/prettyprinting/javascript-tests/while-within-do-while.js: Added.
5:26 PM Changeset in webkit [198814] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

5:24 PM Changeset in webkit [198813] by sbarati@apple.com
  • 30 edits in trunk

Fix typos in our error messages and remove some trailing periods
​https://bugs.webkit.org/show_bug.cgi?id=155985

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

  • runtime/ArrayConstructor.h:

(JSC::isArray):

  • runtime/ProxyConstructor.cpp:

(JSC::makeRevocableProxy):
(JSC::proxyRevocableConstructorThrowError):
(JSC::ProxyConstructor::finishCreation):
(JSC::constructProxyObject):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::finishCreation):
(JSC::performProxyGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):

  • runtime/Structure.cpp:

(JSC::Structure::preventExtensionsTransition):

  • tests/stress/proxy-basic.js:
  • tests/stress/proxy-construct.js:

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

  • tests/stress/proxy-define-own-property.js:

(assert):
(throw.new.Error):
(i.catch):
(assert.set get catch):

  • tests/stress/proxy-delete.js:

(assert):

  • tests/stress/proxy-get-own-property.js:

(assert):
(i.catch):
(set get let):

  • tests/stress/proxy-get-prototype-of.js:

(assert):
(assert.get let):
(assert.get catch):

  • tests/stress/proxy-has-property.js:

(assert):

  • tests/stress/proxy-is-array.js:

(test):

  • tests/stress/proxy-is-extensible.js:

(assert):

  • tests/stress/proxy-json.js:

(assert):
(test):

  • tests/stress/proxy-own-keys.js:

(assert):
(i.catch):

  • tests/stress/proxy-prevent-extensions.js:

(assert):

  • tests/stress/proxy-property-descriptor.js:
  • tests/stress/proxy-revoke.js:

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

  • tests/stress/proxy-set-prototype-of.js:

(assert.set let):
(assert.set catch):
(assert):
(set catch):

  • tests/stress/proxy-set.js:

(throw.new.Error.let.handler.set 45):
(throw.new.Error):

  • tests/stress/proxy-with-private-symbols.js:

(assert):

  • tests/stress/proxy-with-unbalanced-getter-setter.js:

(assert):

  • tests/stress/reflect-set-proxy-set.js:

(throw.new.Error.let.handler.set 45):
(throw.new.Error):

  • tests/stress/reflect-set-receiver-proxy-set.js:

(let.handler.set 45):
(catch):

  • tests/stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js:

(test):
(test.get let):

LayoutTests:

  • js/string-includes-expected.txt:
5:21 PM Changeset in webkit [198812] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.124

New Tag.

4:55 PM Changeset in webkit [198811] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows clean build.

  • CMakeLists.txt:

Make sure WebCoreDerivedSources is done building before building WebCore.

4:34 PM Changeset in webkit [198810] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

When moving focus from one select element to another (iPhone) the value is committed to the newly focused element.
​https://bugs.webkit.org/show_bug.cgi?id=155958
rdar://problem/22738524

Reviewed by Tim Horton.

We should not delay the call to endEditing until we receive
stopAssistingNode, because by then the assisted node might have already
changed. We need to call endEditing to commit potential changes every
time we tap. This way we can make sure the editing session on the select
element has been completed. This affects only single select elements on
iPhone, where the change to the actual DOM element is delayed until we
stop interacting with the element. On iPad or for multi-select elements,
the change to the DOM happens immediately.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _singleTapCommited:]):
(-[WKContentView _attemptClickAtLocation:]):
(-[WKContentView _stopAssistingNode]):

4:19 PM Changeset in webkit [198809] by ddkilzer@apple.com
  • 5 edits
    4 adds in trunk/Source/bmalloc

bmalloc: add logging for mmap() failures
<​http://webkit.org/b/155409>
<rdar://problem/24568515>

Reviewed by Saam Barati.

This patch causes additional logging to be generated on internal
iOS builds when mmap() fails. We are trying to track down an
issue where the WebContent process runs out of VM address space
before it is killed by jetsam.

  • CMakeLists.txt: Add Logging.cpp.
  • bmalloc.xcodeproj/project.pbxproj: Add new files.
  • bmalloc/BAssert.h:

(RELEASE_BASSERT_WITH_MESSAGE): Add macro.

  • bmalloc/Logging.cpp: Added.

(bmalloc::logVMFailure): Implementation.

  • bmalloc/Logging.h: Added.

(bmalloc::logVMFailure): Declaration.

  • bmalloc/VMAllocate.h:

(bmalloc::tryVMAllocate): Call logVMFailure() on mmap() failure.

  • bmalloc/darwin/BSoftLinking.h: Copied from Source/WebCore/platform/mac/SoftLinking.h.
3:57 PM Changeset in webkit [198808] by keith_miller@apple.com
  • 42 edits
    5 adds in trunk

[ES6] Add support for Symbol.isConcatSpreadable.
​https://bugs.webkit.org/show_bug.cgi?id=155351

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch adds support for Symbol.isConcatSpreadable. In order to do so it was necessary to move the
Array.prototype.concat function to JS. A number of different optimizations were needed to make such the move to
a builtin performant. First, four new DFG intrinsics were added.

1) IsArrayObject (I would have called it IsArray but we use the same name for an IndexingType): an intrinsic of

the Array.isArray function.

2) IsJSArray: checks the first child is a JSArray object.
3) IsArrayConstructor: checks the first child is an instance of ArrayConstructor.
4) CallObjectConstructor: an intrinsic of the Object constructor.

IsActualObject, IsJSArray, and CallObjectConstructor can all be converted into constants in the abstract interpreter if
we are able to prove that the first child is an Array or for ToObject an Object.

In order to further improve the perfomance we also now cover more indexing types in our fast path memcpy
code. Before we would only memcpy Arrays if they had the same indexing type and did not have Array storage and
were not undecided. Now the memcpy code covers the following additional two cases: One array is undecided and
the other is a non-array storage and the case where one array is Int32 and the other is contiguous (we map this
into a contiguous array).

This patch also adds a new fast path for concat with more than one array argument by using memcpy to append
values onto the result array. This works roughly the same as the two array fast path using the same methodology
to decide if we can memcpy the other butterfly into the result butterfly.

Two new debugging tools are also added to the jsc cli. One is a version of the print function with a private
name so it can be used for debugging builtins. The other is dumpDataLog, which takes a JSValue and runs our
dataLog function on it.

Finally, this patch add a new constructor to JSValueRegsTemporary that allows it to reuse the the registers of a
JSValueOperand if the operand's use count is one.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • builtins/ArrayPrototype.js:

(concatSlowPath):
(concat):

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCurrentBlock):
(JSC::DFG::SpeculativeJIT::compileIsJSArray):
(JSC::DFG::SpeculativeJIT::compileIsArrayObject):
(JSC::DFG::SpeculativeJIT::compileIsArrayConstructor):
(JSC::DFG::SpeculativeJIT::compileCallObjectConstructor):

  • 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::compileCallObjectConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileIsArrayObject):
(JSC::FTL::DFG::LowerDFGToB3::compileIsJSArray):
(JSC::FTL::DFG::LowerDFGToB3::compileIsArrayConstructor):
(JSC::FTL::DFG::LowerDFGToB3::isArray):

  • jit/JITOperations.h:
  • jsc.cpp:

(WTF::RuntimeArray::createStructure):
(GlobalObject::finishCreation):
(functionDebug):
(functionDataLogValue):

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::finishCreation):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayConstructor.h:

(JSC::isArrayConstructor):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):
(JSC::arrayProtoPrivateFuncIsJSArray):
(JSC::moveElements):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
(JSC::arrayProtoPrivateFuncAppendMemcpy):
(JSC::arrayProtoFuncConcat): Deleted.

  • runtime/ArrayPrototype.h:

(JSC::ArrayPrototype::createStructure):

  • runtime/CommonIdentifiers.h:
  • runtime/Intrinsic.h:
  • runtime/JSArray.cpp:

(JSC::JSArray::appendMemcpy):
(JSC::JSArray::fastConcatWith): Deleted.

  • runtime/JSArray.h:

(JSC::JSArray::createStructure):
(JSC::JSArray::fastConcatType): Deleted.

  • runtime/JSArrayInlines.h: Added.

(JSC::JSArray::memCopyWithIndexingType):
(JSC::JSArray::canFastCopy):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSType.h:
  • runtime/ObjectConstructor.h:

(JSC::constructObject):

  • tests/es6.yaml:
  • tests/stress/array-concat-spread-object.js: Added.

(arrayEq):

  • tests/stress/array-concat-spread-proxy-exception-check.js: Added.

(arrayEq):

  • tests/stress/array-concat-spread-proxy.js: Added.

(arrayEq):

  • tests/stress/array-concat-with-slow-indexingtypes.js: Added.

(arrayEq):

  • tests/stress/array-species-config-array-constructor.js:

Source/WebCore:

Makes runtime arrays have the new ArrayType

  • bridge/runtime_array.h:

(JSC::RuntimeArray::createStructure):

LayoutTests:

Fix tests for Symbol.isConcatSpreadable on the Symbol object.

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/dom/array-prototype-properties-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
3:23 PM Changeset in webkit [198807] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add machine-readable results for JSC stress tests
​https://bugs.webkit.org/show_bug.cgi?id=155771

Patch by Srinivasan Vijayaraghavan <​svijayaraghavan@apple.com> on 2016-03-29
Reviewed by Darin Adler and Dean Johnson

Add an option to output JSC stress test results to a user-specified file in JSON format.

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests): Add JSON output support
(readAllLines): Remove trailing newline from the end of each item

3:19 PM Changeset in webkit [198806] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: VoiceOver: Navigating Numbered Lists Causes Number to be announced On Each Line of List
​https://bugs.webkit.org/show_bug.cgi?id=155984

Reviewed by Chris Fleizach.

Source/WebCore:

We should limit the list marker text only to the first line of that list item.

Test: accessibility/mac/attributed-string-with-listitem-multiple-lines.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::listMarkerTextForNodeAndPosition):
(WebCore::AccessibilityObject::stringForRange):

LayoutTests:

  • accessibility/mac/attributed-string-with-listitem-multiple-lines-expected.txt: Added.
  • accessibility/mac/attributed-string-with-listitem-multiple-lines.html: Added.
3:17 PM Changeset in webkit [198805] by tonikitoo@webkit.org
  • 7 edits
    3 adds in trunk

Wheel events' latching state is not reset when appropriate
​https://bugs.webkit.org/show_bug.cgi?id=155746

Reviewed by Simon Fraser.

Source/WebCore:

When one performs a two fingers scroll (with trackpad),
it might either trigger a kinetic scroll movement (by
flickering with both fingers in a given direction) or perform
a static scroll movement (without the flicker animation).

In case of the first scenario (kinetic), the container being
scrolled is "latched" during the scroll animation and properly unlatched
once the scroll ends. See the call to 'shouldResetLatching' in EventHandlerMac.mm.
When transitioning from non-momentum to momentum scroll, the following events are seen:

  • 'phase PlatformWheelEventPhaseEnded' 'momentumPhase PlatformWheelEventPhaseNone' -> end of static scroll
  • 'phase PlatformWheelEventPhaseNone' 'momentumPhase PlatformWheelEventPhaseBegan' -> start of momentum scroll

On the second scenario (static scroll), when the scroll movement ends,
the latched state is not reset. This might actually cause scrolling elsewhere on the page to scroll
the previously latched container.
Note that, only specific wheel event below is fired when static scroll ends:

  • 'phase PlatformWheelEventPhaseEnded' 'momentumPhase PlatformWheelEventPhaseNone'

In order to fix this, patch installs a timer as soon as a non-momentum
wheel scroll event end fires. It works as follows:

  • If the timer fires, the latched state is reset, preventing scrolling getting stuck to

a previously latched scrollable.

  • If platform code starts sending momentum wheel scroll events before it times out, the timer is

stopped and the latched state remains untouched (this is a flick scroll case).

  • If a new wheel scroll gesture starts, the latched state is manually reset

and the timer stopped.

Note that given that latched state logic applies primarily to main frames,
the timer only gets manipulated for main frame objects.

Test: tiled-drawing/scrolling/scroll-iframe-latched-selects.html

  • page/EventHandler.cpp:

(WebCore::EventHandler::doOrScheduleClearLatchedStateIfNeeded):

  • page/EventHandler.h:
  • page/MainFrame.cpp:

(WebCore::MainFrame::MainFrame):
(WebCore::MainFrame::~MainFrame):

  • page/MainFrame.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::scrollableAreaForContainerNode):
(WebCore::latchedToFrameOrBody):
(WebCore::areWheelEventsTransitioningToMomentumScrolling):
(WebCore::areWheelEventsEndingNonMomentumScrolling):
(WebCore::EventHandler::doOrScheduleClearLatchedStateIfNeeded):

LayoutTests:

  • tiled-drawing/scrolling/resources/selects-iframe.html: Added.
  • tiled-drawing/scrolling/scroll-iframe-latched-selects.html: Added.
3:15 PM Changeset in webkit [198804] by achristensen@apple.com
  • 4 edits in trunk

Fix Windows build.

Source/WebCore:

  • CMakeLists.txt:

Tools:

  • TestWebKitAPI/PlatformWin.cmake:
3:11 PM Changeset in webkit [198803] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

We don't properly optimize TDZ checks when we declare a let variable without an initializer
​https://bugs.webkit.org/show_bug.cgi?id=150453

Reviewed by Mark Lam.

  • bytecompiler/NodesCodegen.cpp:

(JSC::EmptyLetExpression::emitBytecode):

2:49 PM Changeset in webkit [198802] by BJ Burg
  • 3 edits in trunk/Source/WebKit2

Unreviewed build fix after r198793.

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

The wasEventSynthesizedForAutomation method should only be available on Mac.

2:43 PM Changeset in webkit [198801] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Windows build fix.

  • CMakeLists.txt:

DerivedSources.cpp should be in WebCore_DERIVED_SOURCES because it depends on the derived sources.

2:17 PM Changeset in webkit [198800] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Fix Windows build after r198777

  • CMakeLists.txt:
  • PlatformEfl.cmake:

WebCore_DERIVED_SOURCES should not be in WebCore_SOURCES. If it's needed for EFL,
then keep it in the EFL-specific platform.

  • PlatformWin.cmake:

Make more derived sources in WebCore_DERIVED_SOURCES.

2:06 PM Changeset in webkit [198799] by BJ Burg
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix after r198792.

  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction):
We (still) can't use lightweight generics in Objective-C code.
Also, use RetainPtr instead of new, since this is not ARC code.

2:04 PM Changeset in webkit [198798] by sbarati@apple.com
  • 13 edits
    1 add in trunk/Source

Allow builtin JS functions to be intrinsics
​https://bugs.webkit.org/show_bug.cgi?id=155960

Reviewed by Mark Lam.

Source/JavaScriptCore:

Builtin functions can now be recognized as intrinsics inside
the DFG. This gives us the flexibility to either lower a builtin
as an intrinsic in the DFG or as a normal function call.
Because we may decide to not lower it as an intrinsic, the DFG
inliner could still inline the function call.

You can annotate a builtin function like so to make
it be recognized as an intrinsic.
`
[intrinsic=FooIntrinsic] function foo() { ... }
`
where FooIntrinsic is an enum value of the Intrinsic enum.

So in the future if we write RegExp.prototype.test as a builtin, we would do:
` RegExpPrototype.js
[intrinsic=RegExpTestIntrinsic] function test() { ... }
`

  • Scripts/builtins/builtins_generate_combined_implementation.py:

(BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):

  • Scripts/builtins/builtins_generate_separate_implementation.py:

(BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):

  • Scripts/builtins/builtins_generator.py:

(BuiltinsGenerator.generate_embedded_code_string_section_for_function):

  • Scripts/builtins/builtins_model.py:

(BuiltinObject.init):
(BuiltinFunction):
(BuiltinFunction.init):
(BuiltinFunction.fromString):
(BuiltinFunction.str):

  • Scripts/builtins/builtins_templates.py:
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::visitChildren):
(JSC::UnlinkedFunctionExecutable::link):

  • bytecode/UnlinkedFunctionExecutable.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::attemptToInlineCall):

  • runtime/Executable.cpp:

(JSC::ExecutableBase::clearCode):
(JSC::NativeExecutable::destroy):
(JSC::ScriptExecutable::ScriptExecutable):
(JSC::EvalExecutable::create):
(JSC::EvalExecutable::EvalExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
(JSC::FunctionExecutable::FunctionExecutable):
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::NativeExecutable::intrinsic): Deleted.

  • runtime/Executable.h:

(JSC::ExecutableBase::ExecutableBase):
(JSC::ExecutableBase::hasJITCodeFor):
(JSC::ExecutableBase::intrinsic):
(JSC::ExecutableBase::intrinsicFor):
(JSC::ScriptExecutable::finishCreation):

  • runtime/Intrinsic.h:

Source/WebCore:

  • ForwardingHeaders/runtime/Intrinsic.h: Added.
1:43 PM Changeset in webkit [198797] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix CMake build after r198792.

  • PlatformMac.cmake:
1:40 PM Changeset in webkit [198796] by timothy@apple.com
  • 2 edits in trunk/Tools

Update WebKit nightly to have a red needle to better match Safari

​https://bugs.webkit.org/show_bug.cgi?id=155983

Reviewed by Joseph Pecoraro.

  • WebKitLauncher/webkit.icns:
1:37 PM Changeset in webkit [198795] by commit-queue@webkit.org
  • 2 edits in trunk

Unreviewed, rolling out r198781.
​https://bugs.webkit.org/show_bug.cgi?id=155986

broke windows clean build (Requested by alexchristensen on
#webkit).

Reverted changeset:

"[Win] CMake seems to build all generated files every time"
​https://bugs.webkit.org/show_bug.cgi?id=155872
​http://trac.webkit.org/changeset/198781

1:36 PM Changeset in webkit [198794] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: ⌘E and ⌘G text searching does not work
​https://bugs.webkit.org/show_bug.cgi?id=155981
<rdar://problem/25418983>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-29
Reviewed by Timothy Hatcher.

Disable the unused find banner in the RecordingContentView's
ContentBrowser. This is a workaround for the background tab
thinking it is visible, but still useful since the find
banner wouldn't be used in the TimelineContentView anyways so
can avoid being created.

  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser):
Add a construction option to not create a FindBanner.

(WebInspector.ContentBrowser.prototype.handleFindEvent):
(WebInspector.ContentBrowser.prototype.shown):
(WebInspector.ContentBrowser.prototype.hidden):
(WebInspector.ContentBrowser.prototype._contentViewNumberOfSearchResultsDidChange):
(WebInspector.ContentBrowser.prototype._updateFindBanner):
Handle when we don't have a find banner.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
Do not create a FindBanner in the RecordingContentView.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
This global content browser can also avoid creating a FindBanner.

1:19 PM Changeset in webkit [198793] by BJ Burg
  • 5 edits in trunk/Source/WebKit2

Web Automation: Add SPI to tell whether an NSEvent was synthesized for automation
​https://bugs.webkit.org/show_bug.cgi?id=155963
<rdar://problem/25405747>

Reviewed by Timothy Hatcher.

Tag all NSEvents that were synthesized with an associated object before sending.
Do all associated object work below the API layer so we don't get into trouble
using things that may be guarded by WK_API_ENABLED.

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

(-[_WKAutomationSession wasEventSynthesizedForAutomation:]):
Forward to the wrapped session object.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::sendSynthesizedEventsToPage):
Tag outgoing NSEvents with the session identifier as an associated object.

(WebKit::WebAutomationSession::wasEventSynthesizedForAutomation):
Check an incoming NSEvent to see if its associated object is the session identifier.

1:19 PM Changeset in webkit [198792] by BJ Burg
  • 8 edits
    1 add in trunk/Source

Web Automation: implement Automation.performMouseInteraction
​https://bugs.webkit.org/show_bug.cgi?id=155606
<rdar://problem/25227576>

Source/WebKit2:

Reviewed by Timothy Hatcher.

This method implements common mouse interactions by synthesizing native events.
The creation and dispatching of simulated events is implemented separately per
application/window/event framework. This patch adds an implementation for ports
that use AppKit.

The event is created synthetically in a platform-specific way and delivered to
the platform's window in the UIProcess. The event goes through all the
layers of processing that a real mouse event could go through once it reaches
WebKit itself.

  • UIProcess/Automation/Automation.json: Add new enums and command.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::protocolModifierToWebEventModifier):
(WebKit::WebAutomationSession::performMouseInteraction): Added.
Clip the requested cursor position so that it stays within the selected window's
frame and doesn't wander off into other windows or applications. Fire it using
the platform-specific simulation method.

(WebKit::WebAutomationSession::platformSimulateMouseInteraction): Added.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Cocoa/WebAutomationSessionCocoa.mm:

(WebKit::WebAutomationSession::platformSimulateMouseInteraction): Added.
Convert Automation protocol values to AppKit values. Simulate and dispatch
one or more events depending on the desired interaction.

  • WebKit2Prefix.h: Include AppKitCompatibilityDeclarations.h so newer

NSEventTypes can be used.

Source/WTF:

Reviewed by Timothy Hatcher.

  • wtf/mac/AppKitCompatibilityDeclarations.h: Add missing some NSEventTypes.
1:12 PM Changeset in webkit [198791] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

JSC::Debugger cleanup after recent changes
​https://bugs.webkit.org/show_bug.cgi?id=155982

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-29
Reviewed by Mark Lam.

  • debugger/Debugger.cpp:

(JSC::Debugger::Debugger):
Initialize with breakpoints disabled. Web Inspector always informs
the backend if it should enable or disable breakpoints on startup.

(JSC::Debugger::setProfilingClient):
When using the Sampling profiler we do not need to recompile.

1:10 PM Changeset in webkit [198790] by sbarati@apple.com
  • 5 edits in trunk

"Can not" => "cannot" in String.prototype error messages
​https://bugs.webkit.org/show_bug.cgi?id=155895

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):

  • tests/stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js:

(test):
(test.get let):

LayoutTests:

  • js/string-includes-expected.txt:
12:51 PM Changeset in webkit [198789] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Adding timeout ios-simulator TestExpectations for perf/adding-radio-buttons.html
​https://bugs.webkit.org/show_bug.cgi?id=154055

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
12:40 PM Changeset in webkit [198788] by Jon Davis
  • 3 edits in trunk/Websites/webkit.org

Support images above the title on webkit.org posts
​https://bugs.webkit.org/show_bug.cgi?id=155979

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/functions.php:
  • wp-content/themes/webkit/single.php:
12:04 PM Changeset in webkit [198787] by mmaxfield@apple.com
  • 4 edits in trunk/Source/WebCore

[Cocoa] Rename ScrollbarPainter variables to ScrollerImp
​https://bugs.webkit.org/show_bug.cgi?id=155976

Reviewed by Simon Fraser.

This patch continues where r198078 left off. That patch renamed all the types,
however, there are some variables which were left as "scrollbarPainter". This
patch completes the transition to ScrollerImp.

No new tests because there is no behavior change.

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

(scrollerImpForScrollbar):
(-[WebScrollerImpPairDelegate scrollerImpPair:convertContentPoint:toScrollerImp:]):
(-[WebScrollbarPartAnimation startAnimation]):
(-[WebScrollbarPartAnimation setCurrentProgress:]):
(-[WebScrollerImpDelegate mouseLocationInScrollerForScrollerImp:]):
(-[WebScrollerImpDelegate scrollerImp:animateKnobAlphaTo:duration:]):
(-[WebScrollerImpDelegate scrollerImp:animateTrackAlphaTo:duration:]):
(-[WebScrollerImpDelegate scrollerImp:animateUIStateTransitionWithDuration:]):
(-[WebScrollerImpDelegate scrollerImp:animateExpansionTransitionWithDuration:]):
(WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::~ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::contentAreaWillPaint):
(WebCore::ScrollAnimatorMac::mouseEnteredContentArea):
(WebCore::ScrollAnimatorMac::mouseExitedContentArea):
(WebCore::ScrollAnimatorMac::mouseMovedInContentArea):
(WebCore::ScrollAnimatorMac::mouseEnteredScrollbar):
(WebCore::ScrollAnimatorMac::mouseExitedScrollbar):
(WebCore::ScrollAnimatorMac::mouseIsDownInScrollbar):
(WebCore::ScrollAnimatorMac::willStartLiveResize):
(WebCore::ScrollAnimatorMac::contentsResized):
(WebCore::ScrollAnimatorMac::willEndLiveResize):
(WebCore::ScrollAnimatorMac::contentAreaDidShow):
(WebCore::ScrollAnimatorMac::contentAreaDidHide):
(WebCore::ScrollAnimatorMac::didBeginScrollGesture):
(WebCore::ScrollAnimatorMac::didEndScrollGesture):
(WebCore::ScrollAnimatorMac::mayBeginScrollGesture):
(WebCore::ScrollAnimatorMac::lockOverlayScrollbarStateToHidden):
(WebCore::ScrollAnimatorMac::scrollbarsCanBeActive):
(WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveVerticalScrollbar):
(WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::invalidateScrollbarPartLayers):
(WebCore::ScrollAnimatorMac::verticalScrollbarLayerDidChange):
(WebCore::ScrollAnimatorMac::horizontalScrollbarLayerDidChange):
(WebCore::ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting):
(WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):
(WebCore::ScrollAnimatorMac::initialScrollbarPaintTimerFired):
(WebCore::ScrollAnimatorMac::sendContentAreaScrolled):
(scrollbarPainterForScrollbar): Deleted.

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::registerScrollbar):
(WebCore::ScrollbarThemeMac::scrollbarThickness):
(WebCore::scrollerImpPaint):
(WebCore::ScrollbarThemeMac::paint):
(WebCore::scrollbarPainterPaint): Deleted.

11:51 AM Changeset in webkit [198786] by commit-queue@webkit.org
  • 33 edits
    2 adds in trunk

Web Inspector: We should have a way to capture heap snapshots programatically.
​https://bugs.webkit.org/show_bug.cgi?id=154407
<rdar://problem/24726292>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-29
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Console.json:

Add a new Console.heapSnapshot event for when a heap snapshot is taken.

  • runtime/ConsolePrototype.cpp:

(JSC::ConsolePrototype::finishCreation):
(JSC::consoleProtoFuncProfile):
(JSC::consoleProtoFuncProfileEnd):
(JSC::consoleProtoFuncTakeHeapSnapshot):

  • runtime/ConsoleClient.h:

Add the console.takeHeapSnapshot method and dispatch to the ConsoleClient.

  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::takeHeapSnapshot):

  • inspector/JSGlobalObjectConsoleClient.h:

Have the InspectorConsoleAgent handle this.

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):

  • inspector/agents/InspectorConsoleAgent.cpp:

(Inspector::InspectorConsoleAgent::InspectorConsoleAgent):
(Inspector::InspectorConsoleAgent::takeHeapSnapshot):

  • inspector/agents/InspectorConsoleAgent.h:
  • inspector/agents/JSGlobalObjectConsoleAgent.cpp:

(Inspector::JSGlobalObjectConsoleAgent::JSGlobalObjectConsoleAgent):

  • inspector/agents/JSGlobalObjectConsoleAgent.h:

Give the ConsoleAgent a HeapAgent pointer so that it can have the HeapAgent
perform the snapshot building work like it normally does.

Source/WebCore:

Test: inspector/console/heapSnapshot.html

  • page/PageConsoleClient.cpp:

(WebCore::PageConsoleClient::takeHeapSnapshot):

  • page/PageConsoleClient.h:

Pass through to Inspector Instrumentation.

  • inspector/InspectorConsoleInstrumentation.h:

(WebCore::InspectorInstrumentation::takeHeapSnapshot):

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::takeHeapSnapshotImpl):

  • inspector/InspectorInstrumentation.h:

Pass through to InspectorConsoleAgent.

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):

  • inspector/PageConsoleAgent.cpp:

(WebCore::PageConsoleAgent::PageConsoleAgent):

  • inspector/PageConsoleAgent.h:
  • inspector/WebConsoleAgent.cpp:

(WebCore::WebConsoleAgent::WebConsoleAgent):

  • inspector/WebConsoleAgent.h:
  • workers/WorkerConsoleClient.cpp:

(WebCore::WorkerConsoleClient::takeHeapSnapshot):

  • workers/WorkerConsoleClient.h:

Provide a HeapAgent to the ConsoleAgent.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Protocol/ConsoleObserver.js:

(WebInspector.ConsoleObserver.prototype.heapSnapshot):
(WebInspector.ConsoleObserver):
Create a HeapSnapshot with an optional title and add to the timeline.

(WebInspector.HeapAllocationsTimelineDataGridNode):

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.displayNameForRecord):
Share code for snapshot display names which may now include a title.

  • UserInterface/Proxies/HeapSnapshotProxy.js:

(WebInspector.HeapSnapshotProxy):
(WebInspector.HeapSnapshotProxy.deserialize):
(WebInspector.HeapSnapshotProxy.prototype.get title):

  • UserInterface/Views/HeapAllocationsTimelineDataGridNode.js:
  • UserInterface/Workers/HeapSnapshot/HeapSnapshot.js:

(HeapSnapshot):
(HeapSnapshot.prototype.serialize):

  • UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js:

(HeapSnapshotWorker.prototype.createSnapshot):
Include an optional title in a HeapSnapshot.

LayoutTests:

  • inspector/console/heapSnapshot-expected.txt: Added.
  • inspector/console/heapSnapshot.html: Added.

Test that we get expected data and events after calling
console.takeHeapSnapshot when the inspector is open.

11:33 AM Changeset in webkit [198785] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

REGRESSION (r196813): Missing plug-in placeholder is missing
​https://bugs.webkit.org/show_bug.cgi?id=155973
<rdar://problem/25068392>

Reviewed by Andy Estes.

Show unavailable plugin indicator when UnavailablePluginIndicatorState (uninitialized, hidden, visible) is not set to hidden explicitly.
It matches pre-196813 behaviour.

Unable to test.

  • rendering/RenderEmbeddedObject.h:

(WebCore::RenderEmbeddedObject::showsUnavailablePluginIndicator):

10:16 AM Changeset in webkit [198784] by mmaxfield@apple.com
  • 6 edits in trunk/Source/WebCore

[OS X] [RTL Scrollbars] Overlay RTL scrollbars animate in from the wrong side
​https://bugs.webkit.org/show_bug.cgi?id=155962

Reviewed by Simon Fraser.

We can control the animation direction with the NSScrollerImp property
userInterfaceLayoutDirection.

Not testable.

  • platform/ScrollableArea.cpp:

(WebCore::ScrollableArea::setScrollbarLayoutDirection):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::horizontalScrollbar):
(WebCore::ScrollableArea::verticalScrollbar):
(WebCore::ScrollableArea::tiledBacking):
(WebCore::ScrollableArea::layerForHorizontalScrollbar):
(WebCore::ScrollableArea::layerForVerticalScrollbar):
(WebCore::ScrollableArea::layerForScrolling):
(WebCore::ScrollableArea::layerForScrollCorner):
(WebCore::ScrollableArea::layerForOverhangAreas):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::updateScrollerStyle):

  • platform/mac/ScrollableAreaMac.mm:

(WebCore::ScrollableArea::setScrollbarDirection):

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::ScrollbarThemeMac::registerScrollbar):

  • platform/spi/mac/NSScrollerImpSPI.h:
9:49 AM Changeset in webkit [198783] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Inline WebFullScreenVideoRootViewController.m
​https://bugs.webkit.org/show_bug.cgi?id=155971

Reviewed by Anders Carlsson.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(createFullScreenVideoRootViewControllerClass): Replaced with the code from

WebFullScreenVideoRootViewController.m.

9:18 AM Changeset in webkit [198782] by commit-queue@webkit.org
  • 14 edits in trunk/Source/WebCore

Create a CG ImageDecoder class instead of defining it as CGImageSourceRef
​https://bugs.webkit.org/show_bug.cgi?id=155422

Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-03-29
Reviewed by Simon Fraser.

Move the image CG decoding code from the class ImageSource out to a new
class named ImageDecoder. The purpose of this split is to unify the code
of the ImageSource for all platforms. This class should be a container
for the ImageDecoder. All the direct frame manipulation like querying the
frame metadata or creating a frame image should be the responsibility of
the ImageDecoder. The ImageSource will be responsible of the image frame
caching. When responding to a frame metadata query, for example. the
ImageSource checks its cache first. If an entry does not exist for the
requested frame, the ImageSource will cache the image and the metadata
of this frame. The ImageSource will respond at the end from the image
frame cache.

The plan after this patch is is the following:

-- Move the new class to separate files
-- Merge the ImageSource.cpp and ImageSourceCG.cpp. in one file
-- Move caching the FrameData from BitmapImage to ImageSource.

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::imageSizeForRenderer):
BitmapImage::sizeRespectingOrientation() does not take any argument now.
Fix the call to this function and delete the conditionally compiled code
since the code is the same for the two cases.

  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::updateSize):
(WebCore::BitmapImage::sizeRespectingOrientation):
(WebCore::BitmapImage::frameImageAtIndex):
(WebCore::BitmapImage::BitmapImage):
An image can have two sizes: size() and sizeRespectingOrientation(). The
sizeRespectingOrientation() is the transpose of size() iff the image
orientation has usesWidthAsHeight() is true. So there is no need for the
ImageOrientationDescription argument. So there is no need for the members
m_imageOrientation or m_shouldRespectImageOrientation. Also move
m_allowSubsampling and m_minimumSubsamplingLevel (which should be named
m_maximumSubsamplingLevel) to ImageSource instead.

(WebCore::BitmapImage::frameOrientationAtIndex): Replace DefaultImageOrientation
by ImageOrientation().

(WebCore::BitmapImage::dump): Move dumping the image metadata to the
ImageSource.

  • platform/graphics/BitmapImage.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/ImageOrientation.h:

(WebCore::ImageOrientation::ImageOrientation):
(WebCore::ImageOrientation::fromEXIFValue):
(WebCore::ImageOrientation::operator ImageOrientationEnum):
Add a casting operator to ImageOrientation so it can be dumped as enum
value. Also add a default constructor and make the other constructor be
explicit. All the rvalues DefaultImageOrientation should be replaced by
ImageOrientation().

  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::clear):
m_decoder is now a unique_ptr. To release it, assign it to nullptr.

(WebCore::ImageSource::ensureDecoderIsCreated): Ensure m_decoder is created.

(WebCore::ImageSource::setData): Call ensureDecoderIsCreated() before
actually setting the data.

(WebCore::ImageSource::isSizeAvailable): Use initialized();

(WebCore::ImageSource::size):
(WebCore::ImageSource::sizeRespectingOrientation):
(WebCore::ImageSource::frameSizeAtIndex):
These functions return the size of the image.

(WebCore::ImageSource::getHotSpot):
(WebCore::ImageSource::repetitionCount):
(WebCore::ImageSource::frameCount):
(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::orientationAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
(WebCore::ImageSource::frameIsCompleteAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
Check for initialized() instead of checking m_decoder.

(WebCore::ImageSource::dump): Dump the image metadata.

(WebCore::ImageSource::initialized): Deleted.

  • platform/graphics/ImageSource.h: The image decoder is now named

ImageDecoder for all platforms.

(WebCore::ImageSource::initialized): Moved to the header file.

(WebCore::ImageSource::setAllowSubsampling): Moved from BitmapImage.

  • platform/graphics/cairo/BitmapImageCairo.cpp:

(WebCore::BitmapImage::BitmapImage):
(WebCore::BitmapImage::determineMinimumSubsamplingLevel): Deleted.
Delete initializing m_minimumSubsamplingLevel and determineMinimumSubsamplingLevel()
since they are moved to ImageSource.

  • platform/graphics/cg/BitmapImageCG.cpp:

(WebCore::BitmapImage::BitmapImage):
(WebCore::BitmapImage::determineMinimumSubsamplingLevel): Deleted.
Delete members and methods which are now owned and calculated by ImageSource.

  • platform/graphics/cg/ImageSourceCG.cpp:

(WebCore::ImageDecoder::create): Returns a CG ImageDecoder object.

(WebCore::orientationFromProperties): Replace DefaultImageOrientation
by ImageOrientation().

(WebCore::ImageDecoder::ImageDecoder): Creates a native CG image decoder.

(WebCore::ImageDecoder::~ImageDecoder): Releases the native CG image decoder.

(WebCore::ImageDecoder::subsamplingLevelForScale): Moved from ImageSource.
A new argument named 'maximumSubsamplingLevel' is added to low filter the
return value.

(WebCore::ImageDecoder::bytesDecodedToDetermineProperties):
(WebCore::ImageDecoder::filenameExtension):
(WebCore::ImageDecoder::isSizeAvailable):
(WebCore::ImageDecoder::size):
(WebCore::ImageDecoder::frameCount):
(WebCore::ImageDecoder::repetitionCount):
(WebCore::ImageDecoder::hotSpot):
(WebCore::ImageDecoder::frameSizeAtIndex):
(WebCore::ImageDecoder::frameIsCompleteAtIndex):
(WebCore::ImageDecoder::orientationAtIndex):
(WebCore::ImageDecoder::frameDurationAtIndex):
(WebCore::ImageDecoder::allowSubsamplingOfFrameAtIndex):
(WebCore::ImageDecoder::frameHasAlphaAtIndex):
(WebCore::ImageDecoder::frameBytesAtIndex):
(WebCore::ImageDecoder::createFrameImageAtIndex):
(WebCore::ImageDecoder::setData):
The code of these function was moved from the functions of ImageSource.

(WebCore::ImageSource::ImageSource):
(WebCore::ImageSource::~ImageSource):
(WebCore::ImageSource::clear):
(WebCore::ImageSource::ensureDecoderIsCreated):
(WebCore::ImageSource::setData):
(WebCore::ImageSource::filenameExtension):
(WebCore::ImageSource::calculateMaximumSubsamplingLevel):
(WebCore::ImageSource::maximumSubsamplingLevel):
(WebCore::ImageSource::subsamplingLevelForScale):
(WebCore::ImageSource::isSizeAvailable):
(WebCore::ImageSource::allowSubsamplingOfFrameAtIndex):
(WebCore::ImageSource::frameSizeAtIndex):
(WebCore::ImageSource::orientationAtIndex):
(WebCore::ImageSource::size):
(WebCore::ImageSource::sizeRespectingOrientation):
(WebCore::ImageSource::getHotSpot):
(WebCore::ImageSource::bytesDecodedToDetermineProperties):
(WebCore::ImageSource::repetitionCount):
(WebCore::ImageSource::frameCount):
(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::frameIsCompleteAtIndex):
(WebCore::ImageSource::frameDurationAtIndex):
(WebCore::ImageSource::frameHasAlphaAtIndex):
(WebCore::ImageSource::frameBytesAtIndex):
Call m_decoder's function to do the real work.

(WebCore::ImageSource::dump): Dump the image metadata.

(WebCore::ImageSource::initialized): Deleted.

  • platform/image-decoders/ImageDecoder.cpp:

(WebCore::ImageDecoder::create):

  • platform/image-decoders/ImageDecoder.h:

Change the return of ImageDecoder::create() to be unique_ptr.

  • platform/mac/DragImageMac.mm:

(WebCore::createDragImageFromImage): Delete unneeded argument.

8:42 AM Changeset in webkit [198781] by Brent Fulgham
  • 2 edits in trunk

[Win] CMake seems to build all generated files every time
​https://bugs.webkit.org/show_bug.cgi?id=155872

Reviewed by Alex Christensen.

This seems to be caused by Visual Studio being unhappy receiving multiple output targets
for its custom build rules. If I limit the output to just the header file on Windows, the
dependency check seems to do the right thing.

  • Source/cmake/WebKitMacros.cmake:
8:40 AM Changeset in webkit [198780] by eric.carlson@apple.com
  • 5 edits in trunk

media/track/track-remove-track.html is flaky, crashing and failing
​https://bugs.webkit.org/show_bug.cgi?id=130971

Reviewed by Alexey Proskuryakov.
Source/WebCore:

Prevent HTMLMediaElement from being collected while it is creating media controls.
These changes prevent the test from crashing but they do not fix the flakiness,
which is caused by another bug. Fixing that is tracked by
​https://bugs.webkit.org/show_bug.cgi?id=155956.

  • html/HTMLMediaElement.cpp:

(WebCore::actionName): New, debugging-only helper function.
(WebCore::HTMLMediaElement::HTMLMediaElement): Initialize new variables.
(WebCore::HTMLMediaElement::scheduleDelayedAction): Log the flag names to make debugging easier.
(WebCore::HTMLMediaElement::scheduleNextSourceChild): Add logging.
(WebCore::HTMLMediaElement::updateActiveTextTrackCues): Update logging.
(WebCore::HTMLMediaElement::configureTextTrackGroup): Drive-by optimization: don't call

updateCaptionContainer here, call it before exiting configureTextTracks so we only call
it once instead of once per track group.

(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::ensureMediaControlsShadowRoot): New, wrapper around calling

ensureUserAgentShadowRoot so m_creatingControls can be set and cleared appropriately.

(WebCore::HTMLMediaElement::updateCaptionContainer): ensureUserAgentShadowRoot ->

ensureMediaControlsShadowRoot. Drive by optimization: set/test m_haveSetupCaptionContainer
so we only do this setup once.

(WebCore::HTMLMediaElement::configureTextTracks): Call updateCaptionContainer.
(WebCore::HTMLMediaElement::clearMediaPlayer): Log flag names.
(WebCore::HTMLMediaElement::hasPendingActivity): Return true when creating controls so GC

won't happen during controls setup.

(WebCore::HTMLMediaElement::updateTextTrackDisplay): ensureUserAgentShadowRoot ->

ensureMediaControlsShadowRoot.

(WebCore::HTMLMediaElement::createMediaControls): Ditto.
(WebCore::HTMLMediaElement::configureMediaControls): Ditto.
(WebCore::HTMLMediaElement::configureTextTrackDisplay): Ditto.

  • html/HTMLMediaElement.h:

LayoutTests:

  • platform/mac/TestExpectations: Mark crash as flaky only.
6:22 AM Changeset in webkit [198779] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Skip to test custom element test cases

Unreviewed EFL gardening.

Custom element is not supported by EFL yet. Additionally mark 4 security tests to timeout.

  • platform/efl/TestExpectations:
3:25 AM Changeset in webkit [198778] by Yusuke Suzuki
  • 6 edits
    1 add in trunk/Source

REGRESSION(r192914): 10% regression on Sunspider's date-format-tofte
​https://bugs.webkit.org/show_bug.cgi?id=155559

Reviewed by Saam Barati.

Source/JavaScriptCore:

The fast path of the eval function is the super hot path in date-format-tofte.
Any performance regression is not allowed here.
Before this patch, we allocated SourceCode in the fast path.
This allocation incurs 10% performance regression.

This patch removes this allocation in the fast path.
And change the key of the EvalCodeCache to EvalCodeCache::CacheKey.
It combines RefPtr<StringImpl> and isArrowFunctionContext.
Since EvalCodeCache does not cache any eval code evaluated under the strict mode,
it is unnecessary to include several options (ThisTDZMode, and DerivedContextType) in the cache map's key.
But isArrowFunctionContext is necessary since the sloppy mode arrow function exists.

To validate this change, we add a new test that evaluates the same code
under the non-arrow function context and the arrow function context.

After introducing CacheKey, we observed 1% regression compared to the RefPtr<StringImpl> keyed case.
This is because HashMap<RefPtr<T>, ...>::get(T*) is specially optimized; this path is inlined while the normal ::get() is not inlined.
To avoid this performance regression, we introduce HashMap::fastGet, that aggressively encourages inlining.
The relationship between fastGet() and get() is similar to fastAdd() and add().
After applying this change, the evaluation shows no performance regression in comparison with the RefPtr<StringImpl> keyed case.

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::CacheKey::CacheKey):
(JSC::EvalCodeCache::CacheKey::hash):
(JSC::EvalCodeCache::CacheKey::isEmptyValue):
(JSC::EvalCodeCache::CacheKey::operator==):
(JSC::EvalCodeCache::CacheKey::isHashTableDeletedValue):
(JSC::EvalCodeCache::CacheKey::Hash::hash):
(JSC::EvalCodeCache::CacheKey::Hash::equal):
(JSC::EvalCodeCache::tryGet):
(JSC::EvalCodeCache::getSlow):
(JSC::EvalCodeCache::isCacheable):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • tests/stress/eval-in-arrow-function.js: Added.

(shouldBe):
(i):

Source/WTF:

Add HashTable::inlineLookup and HashMap::fastGet.

  • wtf/HashMap.h:
  • wtf/HashTable.h:
2:13 AM Changeset in webkit [198777] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebCore

Unreviewed EFL build fix caused by r198773

  • CMakeLists.txt: Append WebCore_DERIVED_SOURCES to WebCore source list.
1:14 AM Changeset in webkit [198776] by commit-queue@webkit.org
  • 10 edits
    5 adds in trunk

Audit WebCore builtins for user overridable code
​https://bugs.webkit.org/show_bug.cgi?id=155923

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-29
Reviewed by Youenn Fablet.

Source/JavaScriptCore:

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

(JSC::ObjectConstructor::finishCreation):
Expose @Object.@defineProperty to built-ins.

Source/WebCore:

Tests: fetch/builtin-overrides.html

streams/builtin-overrides.html

  • Modules/fetch/FetchHeaders.js:

(initializeFetchHeaders):
Avoid using an Array.prototype.forEach that could be overriden.

  • Modules/streams/ByteLengthQueuingStrategy.js:

(initializeByteLengthQueuingStrategy):

  • Modules/streams/CountQueuingStrategy.js:

(initializeCountQueuingStrategy):
Use the private Object.defineProperty not one that could be overriden.

  • Modules/streams/ReadableStreamInternals.js:

(finishClosingReadableStream):
Fix style.

  • Modules/streams/WritableStream.js:

(write):
Fix error message to use the correct function name.

LayoutTests:

  • fetch/builtin-overrides-expected.txt: Added.
  • fetch/builtin-overrides.html: Added.
  • streams/builtin-overrides-expected.txt: Added.
  • streams/builtin-overrides.html: Added.
12:27 AM Changeset in webkit [198775] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Follow up to r198580.

Simplify the code even more as suggested by Darin.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::setViewNeedsDisplay):

Mar 28, 2016:

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

Web Inspector: Ensure maximum accuracy while profiling
​https://bugs.webkit.org/show_bug.cgi?id=155809
<rdar://problem/25325035>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-28
Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:

New strings.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager):
When starting the inspector, if it was previously closed while
breakpoints were temporarily disabled, restore the correct
breakpoints enabled state.

(WebInspector.DebuggerManager.prototype.set breakpointsEnabled):
Warn if we ever try to enable breakpoints during timeline recordings.

(WebInspector.DebuggerManager.prototype.get breakpointsDisabledTemporarily):
(WebInspector.DebuggerManager.prototype.startDisablingBreakpointsTemporarily):
(WebInspector.DebuggerManager.prototype.stopDisablingBreakpointsTemporarily):
Method to start/stop temporarily disabling breakpoints.

(WebInspector.DebuggerManager.prototype._breakpointDisabledStateDidChange):
(WebInspector.DebuggerManager.prototype._setBreakpoint):
When temporarily disabling breakpoints avoid the convenience behavior of
enabling all breakpoints when enabling or setting a single breakpoint.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype.startCapturing):
Emit a will start capturing event to do work before enabling instruments.

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger .timeline-recording-warning):
(.sidebar > .panel.navigation.debugger .timeline-recording-warning > a):
Styles for a warning section in the Debugger Sidebar when the Debugger
is temporarily disabled due to a Timeline recording.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingWillStart):
(WebInspector.DebuggerSidebarPanel.prototype._timelineRecordingStopped):
Modify the Debugger state and UI before and after a Timeline recording.

7:03 PM Changeset in webkit [198773] by achristensen@apple.com
  • 4 edits in trunk

Fix Mac Ninja build after r198766.

.:

  • Source/cmake/WebKitMacros.cmake:

WebCore_DERIVED_SOURCES are intentionally in a separate library to reduce linker line length.
This is now only specific to WebKit2_DERIVED_SOURCES, so I'm moving it there.

Source/WebKit2:

  • CMakeLists.txt:
6:27 PM Changeset in webkit [198772] by achristensen@apple.com
  • 2 edits in trunk

Fix Windows build after r198766.

  • Source/cmake/WebKitMacros.cmake:

Use the filename from the cpp so that WebCorePrefix.cpp and WebCoreDerivedSourcesPrefix.cpp
generate unique .pch files, even though they both include WebCorePrefix.h

6:06 PM Changeset in webkit [198771] by Alan Bujtas
  • 10 edits
    2 adds in trunk

Pixel turds when bordered div is resized on SMF forum software.
​https://bugs.webkit.org/show_bug.cgi?id=155957
<rdar://problem/25010646>

Reviewed by Simon Fraser.

Use unmodified, non-snapped bounding box rect when computing dirty rects.

Source/WebCore:

Test: fast/repaint/hidpi-box-with-subpixel-height-inflates.html

  • rendering/RenderBox.h:
  • rendering/RenderBoxModelObject.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getTrailingCorner):

  • rendering/RenderInline.h:
  • rendering/RenderLineBreak.cpp:

(WebCore::RenderLineBreak::borderBoundingBox): Deleted.

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

(WebCore::RenderView::setBestTruncatedAt):

LayoutTests:

  • fast/repaint/hidpi-box-with-subpixel-height-inflates-expected.txt: Added.
  • fast/repaint/hidpi-box-with-subpixel-height-inflates.html: Added.
5:59 PM Changeset in webkit [198770] by commit-queue@webkit.org
  • 2 edits
    3 adds in trunk/Source/JavaScriptCore

[JSC] ArithSub should not propagate "UsesAsOther"
​https://bugs.webkit.org/show_bug.cgi?id=155932

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-28
Reviewed by Mark Lam.

The node ArithSub was backpropagating UsesAsOther.
This causes any GetByVal on a Double Array to have an extra
hole check if it flows into an ArithSub.

The definition of ArithSub (12.8.4.1) has both operands go
through ToNumber(). ToNumber() on "undefined" always produces
NaN. It is safe to ignore the NaN marker from hole when
the DAG flows into ArithSub.

This patch also adds this change and test coverage to ArithAdd.
ArithAdd was not a problem in practice because it is only
generated before Fixup if both operands are known to be numerical.
The change to ArithAdd is there to protect us of the ArithSub-like
problems if we ever improve our support of arithmetic operators.

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

  • tests/stress/arith-add-on-double-array-with-holes.js: Added.

(let.testCase.of.testCases.eval.nonObservableHoleOnLhs):
(let.testCase.of.testCases.observableHoleOnLhs):
(let.testCase.of.testCases.nonObservableHoleOnRhs):
(let.testCase.of.testCases.observableHoleOnRhs):

  • tests/stress/arith-sub-on-double-array-with-holes.js: Added.

(let.testCase.of.testCases.eval.nonObservableHoleOnLhs):
(let.testCase.of.testCases.observableHoleOnLhs):
(let.testCase.of.testCases.nonObservableHoleOnRhs):
(let.testCase.of.testCases.observableHoleOnRhs):

  • tests/stress/value-add-on-double-array-with-holes.js: Added.

(let.testCase.of.testCases.eval.nonObservableHoleOnLhs):
(let.testCase.of.testCases.observableHoleOnLhs):
(let.testCase.of.testCases.nonObservableHoleOnRhs):
(let.testCase.of.testCases.observableHoleOnRhs):

5:58 PM Changeset in webkit [198769] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: Crash when AX trying to create element for an old auto fill element
​https://bugs.webkit.org/show_bug.cgi?id=155943

Reviewed by Joanmarie Diggs.

Source/WebCore:

When an auto-fill element is removed, the Node hangs around but the renderer is gone.
In those cases, we can't blindly add the result of getOrCreate to the children array.

Test: accessibility/auto-fill-crash.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::addTextFieldChildren):

LayoutTests:

  • accessibility/auto-fill-crash-expected.txt: Added.
  • accessibility/auto-fill-crash.html: Added.
5:42 PM Changeset in webkit [198768] by Chris Fleizach
  • 5 edits
    2 adds in trunk

AX: iOS: Can't navigate inside ContentEditable fields with voiceover enabled
​https://bugs.webkit.org/show_bug.cgi?id=155942

Reviewed by Joanmarie Diggs.

Source/WebCore:

The code to set the selected text range on a non-native text control (like a contenteditable) was either
wrong or broke at some point. It assumed that creating a Position with the contenteditable node with the right
offset would make a valid Position, but it almost never did.

Instead we can use this helper method to create a valid Position.

Test: accessibility/set-selected-text-range-contenteditable.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::setSelectedTextRange):

LayoutTests:

  • accessibility/set-selected-text-range-contenteditable-expected.txt: Added.
  • accessibility/set-selected-text-range-contenteditable.html: Added.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
5:36 PM Changeset in webkit [198767] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening on 29th Mar.

Mark svg text tests to failure. Besides remove duplicated a test.

  • platform/efl/TestExpectations:
5:19 PM Changeset in webkit [198766] by achristensen@apple.com
  • 10 edits
    1 copy in trunk

Fix Ninja build on Mac
​https://bugs.webkit.org/show_bug.cgi?id=151399

Reviewed by Darin Adler.

.:

  • Source/CMakeLists.txt:
  • Source/cmake/WebKitMacros.cmake:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:

This moves WebCoreDerivedSources to a separate static library to reduce linker command
line lengths when using ninja on mac. This also helps Windows builds, which sometimes
regenerate everything every time you build; now you'll be able to just build WebCore
and WebKit without all the WebCoreDerivedSources stuff.

Source/WebKit:

  • PlatformWin.cmake:
5:08 PM Changeset in webkit [198765] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

5:07 PM Changeset in webkit [198764] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.123

New Tag.

4:26 PM Changeset in webkit [198763] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Fix build on some stricter compilers by removing unnecessary WTFMove.
Opportunistically remove some unnecessary "WebCore::"s
Followup to r198762

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::keyPathAny):
(WebCore::IDBObjectStore::transaction):
(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::get):
(WebCore::IDBObjectStore::add):
(WebCore::IDBObjectStore::put):
(WebCore::IDBObjectStore::deleteFunction):
(WebCore::IDBObjectStore::clear):
(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::index):
(WebCore::IDBObjectStore::count):
(WebCore::IDBObjectStore::doCount):

3:49 PM Changeset in webkit [198762] by beidson@apple.com
  • 48 edits
    22 deletes in trunk/Source

Modern IDB: Remove abstract base classes for all IDB DOM classes.
​https://bugs.webkit.org/show_bug.cgi?id=155951

Reviewed by Alex Christensen.

Source/WebCore:

Refactor - No behavior change.

  • Modules/indexeddb/DOMWindowIndexedDatabase.cpp:

(WebCore::DOMWindowIndexedDatabase::indexedDB):

  • Modules/indexeddb/IDBAny.cpp:

(WebCore::IDBAny::IDBAny):
(WebCore::IDBAny::~IDBAny):
(WebCore::IDBAny::idbDatabase):
(WebCore::IDBAny::domStringList):
(WebCore::IDBAny::idbCursor):
(WebCore::IDBAny::idbCursorWithValue):
(WebCore::IDBAny::idbFactory):
(WebCore::IDBAny::idbIndex):
(WebCore::IDBAny::idbObjectStore):
(WebCore::IDBAny::idbTransaction):
(WebCore::IDBAny::scriptValue):
(WebCore::IDBAny::integer):
(WebCore::IDBAny::string):
(WebCore::IDBAny::keyPath):

  • Modules/indexeddb/IDBAny.h:

(WebCore::IDBAny::create):
(WebCore::IDBAny::createUndefined):
(WebCore::IDBAny::type):
(WebCore::IDBAny::~IDBAny): Deleted.
(WebCore::IDBAny::isLegacy): Deleted.

  • Modules/indexeddb/IDBCursor.cpp:

(WebCore::IDBCursor::create):
(WebCore::IDBCursor::IDBCursor):
(WebCore::IDBCursor::~IDBCursor):
(WebCore::IDBCursor::sourcesDeleted):
(WebCore::IDBCursor::effectiveObjectStore):
(WebCore::IDBCursor::transaction):
(WebCore::IDBCursor::direction):
(WebCore::IDBCursor::key):
(WebCore::IDBCursor::primaryKey):
(WebCore::IDBCursor::value):
(WebCore::IDBCursor::source):
(WebCore::IDBCursor::update):
(WebCore::IDBCursor::advance):
(WebCore::IDBCursor::continueFunction):
(WebCore::IDBCursor::uncheckedIterateCursor):
(WebCore::IDBCursor::deleteFunction):
(WebCore::IDBCursor::setGetResult):
(WebCore::IDBCursor::activeDOMObjectName):
(WebCore::IDBCursor::canSuspendForDocumentSuspension):
(WebCore::IDBCursor::hasPendingActivity):
(WebCore::IDBCursor::decrementOutstandingRequestCount):

  • Modules/indexeddb/IDBCursor.h:

(WebCore::IDBCursor::info):
(WebCore::IDBCursor::setRequest):
(WebCore::IDBCursor::clearRequest):
(WebCore::IDBCursor::request):
(WebCore::IDBCursor::isKeyCursor):
(WebCore::IDBCursor::~IDBCursor): Deleted.
(WebCore::IDBCursor::continueFunction): Deleted.
(WebCore::IDBCursor::isModernCursor): Deleted.
(WebCore::IDBCursor::hasPendingActivity): Deleted.

  • Modules/indexeddb/IDBCursorWithValue.cpp:

(WebCore::IDBCursorWithValue::create):
(WebCore::IDBCursorWithValue::IDBCursorWithValue):
(WebCore::IDBCursorWithValue::~IDBCursorWithValue):

  • Modules/indexeddb/IDBCursorWithValue.h:

(WebCore::IDBCursorWithValue::~IDBCursorWithValue): Deleted.

  • Modules/indexeddb/IDBDatabase.cpp:

(WebCore::IDBDatabase::create):
(WebCore::IDBDatabase::IDBDatabase):
(WebCore::IDBDatabase::~IDBDatabase):
(WebCore::IDBDatabase::hasPendingActivity):
(WebCore::IDBDatabase::name):
(WebCore::IDBDatabase::version):
(WebCore::IDBDatabase::objectStoreNames):
(WebCore::IDBDatabase::createObjectStore):
(WebCore::IDBDatabase::transaction):
(WebCore::IDBDatabase::deleteObjectStore):
(WebCore::IDBDatabase::close):
(WebCore::IDBDatabase::maybeCloseInServer):
(WebCore::IDBDatabase::activeDOMObjectName):
(WebCore::IDBDatabase::canSuspendForDocumentSuspension):
(WebCore::IDBDatabase::stop):
(WebCore::IDBDatabase::startVersionChangeTransaction):
(WebCore::IDBDatabase::didStartTransaction):
(WebCore::IDBDatabase::willCommitTransaction):
(WebCore::IDBDatabase::didCommitTransaction):
(WebCore::IDBDatabase::willAbortTransaction):
(WebCore::IDBDatabase::didAbortTransaction):
(WebCore::IDBDatabase::didCommitOrAbortTransaction):
(WebCore::IDBDatabase::fireVersionChangeEvent):
(WebCore::IDBDatabase::dispatchEvent):
(WebCore::IDBDatabase::didCreateIndexInfo):
(WebCore::IDBDatabase::didDeleteIndexInfo):

  • Modules/indexeddb/IDBDatabase.h:

(WebCore::IDBDatabase::info):
(WebCore::IDBDatabase::databaseConnectionIdentifier):
(WebCore::IDBDatabase::serverConnection):
(WebCore::IDBDatabase::isClosingOrClosed):
(WebCore::IDBDatabase::~IDBDatabase): Deleted.

  • Modules/indexeddb/IDBFactory.cpp:

(WebCore::shouldThrowSecurityException):
(WebCore::IDBFactory::create):
(WebCore::IDBFactory::IDBFactory):
(WebCore::IDBFactory::getDatabaseNames):
(WebCore::IDBFactory::open):
(WebCore::IDBFactory::openInternal):
(WebCore::IDBFactory::deleteDatabase):
(WebCore::IDBFactory::cmp):

  • Modules/indexeddb/IDBFactory.h:

(WebCore::IDBFactory::~IDBFactory): Deleted.

  • Modules/indexeddb/IDBIndex.cpp:

(WebCore::IDBIndex::IDBIndex):
(WebCore::IDBIndex::~IDBIndex):
(WebCore::IDBIndex::activeDOMObjectName):
(WebCore::IDBIndex::canSuspendForDocumentSuspension):
(WebCore::IDBIndex::hasPendingActivity):
(WebCore::IDBIndex::name):
(WebCore::IDBIndex::objectStore):
(WebCore::IDBIndex::keyPathAny):
(WebCore::IDBIndex::keyPath):
(WebCore::IDBIndex::unique):
(WebCore::IDBIndex::multiEntry):
(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::count):
(WebCore::IDBIndex::doCount):
(WebCore::IDBIndex::openKeyCursor):
(WebCore::IDBIndex::get):
(WebCore::IDBIndex::doGet):
(WebCore::IDBIndex::getKey):
(WebCore::IDBIndex::doGetKey):
(WebCore::IDBIndex::markAsDeleted):
(WebCore::IDBIndex::ref):
(WebCore::IDBIndex::deref):

  • Modules/indexeddb/IDBIndex.h:

(WebCore::IDBIndex::openCursor):
(WebCore::IDBIndex::openKeyCursor):
(WebCore::IDBIndex::info):
(WebCore::IDBIndex::modernObjectStore):
(WebCore::IDBIndex::isDeleted):
(WebCore::IDBIndex::~IDBIndex): Deleted.
(WebCore::IDBIndex::isModern): Deleted.

  • Modules/indexeddb/IDBObjectStore.cpp:

(WebCore::IDBObjectStore::create):
(WebCore::IDBObjectStore::IDBObjectStore):
(WebCore::IDBObjectStore::~IDBObjectStore):
(WebCore::IDBObjectStore::activeDOMObjectName):
(WebCore::IDBObjectStore::canSuspendForDocumentSuspension):
(WebCore::IDBObjectStore::hasPendingActivity):
(WebCore::IDBObjectStore::name):
(WebCore::IDBObjectStore::keyPathAny):
(WebCore::IDBObjectStore::keyPath):
(WebCore::IDBObjectStore::indexNames):
(WebCore::IDBObjectStore::transaction):
(WebCore::IDBObjectStore::autoIncrement):
(WebCore::IDBObjectStore::openCursor):
(WebCore::IDBObjectStore::get):
(WebCore::IDBObjectStore::add):
(WebCore::IDBObjectStore::put):
(WebCore::IDBObjectStore::putForCursorUpdate):
(WebCore::IDBObjectStore::putOrAdd):
(WebCore::IDBObjectStore::deleteFunction):
(WebCore::IDBObjectStore::doDelete):
(WebCore::IDBObjectStore::modernDelete):
(WebCore::IDBObjectStore::clear):
(WebCore::IDBObjectStore::createIndex):
(WebCore::IDBObjectStore::index):
(WebCore::IDBObjectStore::deleteIndex):
(WebCore::IDBObjectStore::count):
(WebCore::IDBObjectStore::doCount):
(WebCore::IDBObjectStore::markAsDeleted):
(WebCore::IDBObjectStore::rollbackInfoForVersionChangeAbort):
(WebCore::IDBObjectStore::visitReferencedIndexes):

  • Modules/indexeddb/IDBObjectStore.h:

(WebCore::IDBObjectStore::isDeleted):
(WebCore::IDBObjectStore::info):
(WebCore::IDBObjectStore::modernTransaction):
(WebCore::IDBObjectStore::~IDBObjectStore): Deleted.
(WebCore::IDBObjectStore::isModern): Deleted.

  • Modules/indexeddb/IDBOpenDBRequest.cpp:

(WebCore::IDBOpenDBRequest::createDeleteRequest):
(WebCore::IDBOpenDBRequest::createOpenRequest):
(WebCore::IDBOpenDBRequest::IDBOpenDBRequest):
(WebCore::IDBOpenDBRequest::~IDBOpenDBRequest):
(WebCore::IDBOpenDBRequest::onError):
(WebCore::IDBOpenDBRequest::versionChangeTransactionDidFinish):
(WebCore::IDBOpenDBRequest::fireSuccessAfterVersionChangeCommit):
(WebCore::IDBOpenDBRequest::fireErrorAfterVersionChangeCompletion):
(WebCore::IDBOpenDBRequest::dispatchEvent):
(WebCore::IDBOpenDBRequest::onSuccess):
(WebCore::IDBOpenDBRequest::onUpgradeNeeded):
(WebCore::IDBOpenDBRequest::onDeleteDatabaseSuccess):
(WebCore::IDBOpenDBRequest::requestCompleted):
(WebCore::IDBOpenDBRequest::requestBlocked):

  • Modules/indexeddb/IDBOpenDBRequest.h:

(WebCore::IDBOpenDBRequest::databaseIdentifier):
(WebCore::IDBOpenDBRequest::version):
(WebCore::IDBOpenDBRequest::~IDBOpenDBRequest): Deleted.

  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::create):
(WebCore::IDBRequest::createCount):
(WebCore::IDBRequest::createGet):
(WebCore::IDBRequest::IDBRequest):
(WebCore::IDBRequest::~IDBRequest):
(WebCore::IDBRequest::result):
(WebCore::IDBRequest::errorCode):
(WebCore::IDBRequest::error):
(WebCore::IDBRequest::source):
(WebCore::IDBRequest::setSource):
(WebCore::IDBRequest::setVersionChangeTransaction):
(WebCore::IDBRequest::transaction):
(WebCore::IDBRequest::readyState):
(WebCore::IDBRequest::sourceObjectStoreIdentifier):
(WebCore::IDBRequest::sourceIndexIdentifier):
(WebCore::IDBRequest::requestedIndexRecordType):
(WebCore::IDBRequest::eventTargetInterface):
(WebCore::IDBRequest::activeDOMObjectName):
(WebCore::IDBRequest::canSuspendForDocumentSuspension):
(WebCore::IDBRequest::hasPendingActivity):
(WebCore::IDBRequest::stop):
(WebCore::IDBRequest::enqueueEvent):
(WebCore::IDBRequest::dispatchEvent):
(WebCore::IDBRequest::uncaughtExceptionInEventHandler):
(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):
(WebCore::IDBRequest::setResultToUndefined):
(WebCore::IDBRequest::resultCursor):
(WebCore::IDBRequest::willIterateCursor):
(WebCore::IDBRequest::didOpenOrIterateCursor):
(WebCore::IDBRequest::requestCompleted):
(WebCore::IDBRequest::onError):
(WebCore::IDBRequest::onSuccess):

  • Modules/indexeddb/IDBRequest.h:

(WebCore::IDBRequest::resourceIdentifier):
(WebCore::IDBRequest::connection):
(WebCore::IDBRequest::modernResult):
(WebCore::IDBRequest::pendingCursor):
(WebCore::IDBRequest::requestType):
(WebCore::IDBRequest::isOpenDBRequest):
(WebCore::IDBRequest::~IDBRequest): Deleted.

  • Modules/indexeddb/IDBRequestCompletionEvent.cpp:

(WebCore::IDBRequestCompletionEvent::IDBRequestCompletionEvent):

  • Modules/indexeddb/IDBRequestCompletionEvent.h:

(WebCore::IDBRequestCompletionEvent::create):

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::create):
(WebCore::IDBTransaction::IDBTransaction):
(WebCore::IDBTransaction::~IDBTransaction):
(WebCore::IDBTransaction::mode):
(WebCore::IDBTransaction::db):
(WebCore::IDBTransaction::serverConnection):
(WebCore::IDBTransaction::error):
(WebCore::IDBTransaction::objectStore):
(WebCore::IDBTransaction::abortDueToFailedRequest):
(WebCore::IDBTransaction::transitionedToFinishing):
(WebCore::IDBTransaction::abort):
(WebCore::IDBTransaction::abortOnServerAndCancelRequests):
(WebCore::IDBTransaction::activeDOMObjectName):
(WebCore::IDBTransaction::canSuspendForDocumentSuspension):
(WebCore::IDBTransaction::hasPendingActivity):
(WebCore::IDBTransaction::stop):
(WebCore::IDBTransaction::isActive):
(WebCore::IDBTransaction::isFinishedOrFinishing):
(WebCore::IDBTransaction::addRequest):
(WebCore::IDBTransaction::removeRequest):
(WebCore::IDBTransaction::scheduleOperation):
(WebCore::IDBTransaction::scheduleOperationTimer):
(WebCore::IDBTransaction::operationTimerFired):
(WebCore::IDBTransaction::commit):
(WebCore::IDBTransaction::commitOnServer):
(WebCore::IDBTransaction::finishAbortOrCommit):
(WebCore::IDBTransaction::didStart):
(WebCore::IDBTransaction::notifyDidAbort):
(WebCore::IDBTransaction::didAbort):
(WebCore::IDBTransaction::didCommit):
(WebCore::IDBTransaction::fireOnComplete):
(WebCore::IDBTransaction::fireOnAbort):
(WebCore::IDBTransaction::enqueueEvent):
(WebCore::IDBTransaction::dispatchEvent):
(WebCore::IDBTransaction::createObjectStore):
(WebCore::IDBTransaction::createObjectStoreOnServer):
(WebCore::IDBTransaction::didCreateObjectStoreOnServer):
(WebCore::IDBTransaction::createIndex):
(WebCore::IDBTransaction::createIndexOnServer):
(WebCore::IDBTransaction::didCreateIndexOnServer):
(WebCore::IDBTransaction::requestOpenCursor):
(WebCore::IDBTransaction::doRequestOpenCursor):
(WebCore::IDBTransaction::openCursorOnServer):
(WebCore::IDBTransaction::didOpenCursorOnServer):
(WebCore::IDBTransaction::iterateCursor):
(WebCore::IDBTransaction::iterateCursorOnServer):
(WebCore::IDBTransaction::didIterateCursorOnServer):
(WebCore::IDBTransaction::requestGetRecord):
(WebCore::IDBTransaction::requestGetValue):
(WebCore::IDBTransaction::requestGetKey):
(WebCore::IDBTransaction::requestIndexRecord):
(WebCore::IDBTransaction::getRecordOnServer):
(WebCore::IDBTransaction::didGetRecordOnServer):
(WebCore::IDBTransaction::requestCount):
(WebCore::IDBTransaction::getCountOnServer):
(WebCore::IDBTransaction::didGetCountOnServer):
(WebCore::IDBTransaction::requestDeleteRecord):
(WebCore::IDBTransaction::deleteRecordOnServer):
(WebCore::IDBTransaction::didDeleteRecordOnServer):
(WebCore::IDBTransaction::requestClearObjectStore):
(WebCore::IDBTransaction::clearObjectStoreOnServer):
(WebCore::IDBTransaction::didClearObjectStoreOnServer):
(WebCore::IDBTransaction::requestPutOrAdd):
(WebCore::IDBTransaction::putOrAddOnServer):
(WebCore::IDBTransaction::didPutOrAddOnServer):
(WebCore::IDBTransaction::deleteObjectStore):
(WebCore::IDBTransaction::deleteObjectStoreOnServer):
(WebCore::IDBTransaction::didDeleteObjectStoreOnServer):
(WebCore::IDBTransaction::deleteIndex):
(WebCore::IDBTransaction::deleteIndexOnServer):
(WebCore::IDBTransaction::didDeleteIndexOnServer):
(WebCore::IDBTransaction::operationDidComplete):
(WebCore::IDBTransaction::establishOnServer):
(WebCore::IDBTransaction::activate):
(WebCore::IDBTransaction::deactivate):

  • Modules/indexeddb/IDBTransaction.h:

(WebCore::IDBTransaction::info):
(WebCore::IDBTransaction::database):
(WebCore::IDBTransaction::originalDatabaseInfo):
(WebCore::IDBTransaction::isVersionChange):
(WebCore::IDBTransaction::isReadOnly):
(WebCore::IDBTransaction::isFinished):
(WebCore::TransactionActivator::TransactionActivator):
(WebCore::TransactionActivator::~TransactionActivator):
(WebCore::IDBTransaction::~IDBTransaction): Deleted.

  • Modules/indexeddb/IDBVersionChangeEvent.cpp:

(WebCore::IDBVersionChangeEvent::IDBVersionChangeEvent):
(WebCore::IDBVersionChangeEvent::newVersion):
(WebCore::IDBVersionChangeEvent::eventInterface):
(WebCore::IDBVersionChangeEvent::create): Deleted.

  • Modules/indexeddb/IDBVersionChangeEvent.h:

(isType):

  • Modules/indexeddb/client/IDBAnyImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBAnyImpl.h: Removed.
  • Modules/indexeddb/client/IDBConnectionToServer.cpp:
  • Modules/indexeddb/client/IDBConnectionToServer.h:
  • Modules/indexeddb/client/IDBCursorImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBCursorImpl.h: Removed.
  • Modules/indexeddb/client/IDBCursorWithValueImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBCursorWithValueImpl.h: Removed.
  • Modules/indexeddb/client/IDBDatabaseImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBDatabaseImpl.h: Removed.
  • Modules/indexeddb/client/IDBFactoryImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBFactoryImpl.h: Removed.
  • Modules/indexeddb/client/IDBIndexImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBIndexImpl.h: Removed.
  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBObjectStoreImpl.h: Removed.
  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBOpenDBRequestImpl.h: Removed.
  • Modules/indexeddb/client/IDBRequestImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBRequestImpl.h: Removed.
  • Modules/indexeddb/client/IDBTransactionImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBTransactionImpl.h: Removed.
  • Modules/indexeddb/client/IDBVersionChangeEventImpl.cpp: Removed.
  • Modules/indexeddb/client/IDBVersionChangeEventImpl.h: Removed.
  • Modules/indexeddb/client/TransactionOperation.cpp:
  • Modules/indexeddb/client/TransactionOperation.h:
  • Modules/indexeddb/shared/IDBCursorInfo.cpp:

(WebCore::IDBCursorInfo::objectStoreCursor):
(WebCore::IDBCursorInfo::indexCursor):
(WebCore::IDBCursorInfo::IDBCursorInfo):

  • Modules/indexeddb/shared/IDBCursorInfo.h:
  • Modules/indexeddb/shared/IDBRequestData.cpp:

(WebCore::IDBRequestData::IDBRequestData):

  • Modules/indexeddb/shared/IDBRequestData.h:
  • Modules/indexeddb/shared/IDBResourceIdentifier.cpp:

(WebCore::IDBResourceIdentifier::IDBResourceIdentifier):

  • Modules/indexeddb/shared/IDBResourceIdentifier.h:
  • Modules/indexeddb/shared/IDBTransactionInfo.cpp:
  • Modules/indexeddb/shared/InProcessIDBServer.cpp:
  • Modules/indexeddb/shared/InProcessIDBServer.h:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSIDBCursorCustom.cpp:

(WebCore::JSIDBCursor::visitAdditionalChildren):

  • bindings/js/JSIDBCursorWithValueCustom.cpp:
  • bindings/js/JSIDBIndexCustom.cpp:

(WebCore::JSIDBIndex::visitAdditionalChildren):

  • bindings/js/JSIDBObjectStoreCustom.cpp:

(WebCore::JSIDBObjectStore::visitAdditionalChildren):

  • inspector/InspectorIndexedDBAgent.cpp:

Source/WebKit2:

  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:
3:41 PM Changeset in webkit [198761] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Tools

Upstream webkitdirs.pm from trunk.
rdar://problem/25253479

Rubber-stamped by Dean Johnson.

  • Scripts/webkitdirs.pm:
3:34 PM Changeset in webkit [198760] by BJ Burg
  • 5 edits in trunk/Source/WebKit2

Web Automation: add commands to move and resize a browsing context's window
​https://bugs.webkit.org/show_bug.cgi?id=155349
<rdar://problem/25104911>

Reviewed by Timothy Hatcher.

Parse the new origin or size and request the window to change to the
new frame. This calls through to PageUIClient::setWindowFrame().

  • UIProcess/Automation/Automation.json:

Add new enum values for protocol parsing error cases.
Add new commands.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::resizeWindowOfBrowsingContext):
(WebKit::WebAutomationSession::moveWindowOfBrowsingContext):
Added. Parse the incoming payload and bail if nothing would happen
or the values are not usable or out of range. Complain if a change
did not happen when the requested and actual size are different.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/WebPageProxy.h: Move setWindowFrame to be public.
3:34 PM Changeset in webkit [198759] by BJ Burg
  • 3 edits in trunk/Source/WebKit2

Web Automation: split protocol object BrowsingContext.windowFrame into two separate members
​https://bugs.webkit.org/show_bug.cgi?id=155952
<rdar://problem/25393597>

Reviewed by Timothy Hatcher.

Using the name 'windowFrame' causes conflicts with some Objective-C code.

  • UIProcess/Automation/Automation.json:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::buildBrowsingContextForPage):

2:37 PM Changeset in webkit [198758] by mmaxfield@apple.com
  • 4 edits
    12 adds in trunk

[RTL Scrollbars] Position:sticky can be positioned under vertical RTL scrollbar
​https://bugs.webkit.org/show_bug.cgi?id=155949

Reviewed by Simon Fraser.

Source/WebCore:

When performing sticky positioning logic, we were setting the clip rect's position
equal to the scrollPosition of the layer. This computation assumes that the top
left of the scroll position is the same as the top left of the clip rect. When
using RTL scrollbars, this is not true, so this code simply needs to be made aware
of the presence of an RTL scrollbar.

Tests: fast/scrolling/rtl-scrollbars-sticky-document-2.html

fast/scrolling/rtl-scrollbars-sticky-document.html
fast/scrolling/rtl-scrollbars-sticky-iframe-2.html
fast/scrolling/rtl-scrollbars-sticky-iframe.html
fast/scrolling/rtl-scrollbars-sticky-overflow-scroll-2.html
fast/scrolling/rtl-scrollbars-sticky-overflow-scroll.html

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::constrainingRectForStickyPosition):

LayoutTests:

  • platform/ios-simulator/TestExpectations:
  • fast/scrolling/rtl-scrollbars-sticky-document-2-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-document-2.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-document-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-document.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-iframe-2-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-iframe-2.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-iframe-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-iframe.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-overflow-scroll-2-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-overflow-scroll-2.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-overflow-scroll-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-sticky-overflow-scroll.html: Added.
1:59 PM Changeset in webkit [198757] by clopez@igalia.com
  • 3 edits in trunk/Source/WebKit2

[CMake] Unreviewed build fix after r198736.
​https://bugs.webkit.org/show_bug.cgi?id=155221

Unreviewed.

  • CMakeLists.txt: Fix typo, add WebAutomationSession.cpp and declare JavaScriptCore_SCRIPTS_DIR.
  • WebProcess/Automation/WebAutomationSessionProxy.h: Add missing include.
1:58 PM Changeset in webkit [198756] by tonikitoo@webkit.org
  • 3 edits in trunk/Source/WebCore

Rename PlatformWheelEvent::isEndGesture to isEndOfMomentumScroll.
​https://bugs.webkit.org/show_bug.cgi?id=155940

Reviewed by Simon Fraser.

No new tests needed.

The new name better reflects its purpose. Also it is a preparation to fix bug 155746.

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::shouldResetLatching):
(WebCore::PlatformWheelEvent::isEndOfMomentumScroll: Renamed; Formally isEndGesture.

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::gestureShouldBeginSnap):

1:32 PM Changeset in webkit [198755] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Use std::exchange for std::functions instead of WTFMove
​https://bugs.webkit.org/show_bug.cgi?id=155950
rdar://problem/25348817

Reviewed by Anders Carlsson.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::convertTaskToDownload):
(WebKit::NetworkLoad::setPendingDownloadID):
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
This makes the member variable nullptr when the value is moved so we don't use it again.

11:52 AM Changeset in webkit [198754] by BJ Burg
  • 5 edits in trunk/Source/WebKit2

Web Automation: report the browsing context's window frame (size and origin)
​https://bugs.webkit.org/show_bug.cgi?id=155323
<rdar://problem/25094089>

Reviewed by Timothy Hatcher.

To prepare for implementing resize and move commands, add a
windowFrame member to the browsing context protocol type.

  • UIProcess/Automation/Automation.json:

Add a frame Rect to BrowsingContext.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::handleForWebPageProxy):
(WebKit::WebAutomationSession::buildBrowsingContextForPage):
Extract the code to build a BrowsingContext object. Add
code to calculate and insert the page's window frame size.

(WebKit::WebAutomationSession::getBrowsingContexts):
(WebKit::WebAutomationSession::getBrowsingContext):
(WebKit::WebAutomationSession::createBrowsingContext):
(WebKit::WebAutomationSession::switchToBrowsingContext):
Refactoring as above.

  • UIProcess/Automation/WebAutomationSession.h:

Adjust signatures.

  • UIProcess/WebPageProxy.h: Make getWindowFrame public.
11:39 AM Changeset in webkit [198753] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Setup cloned continuation renderer properly.
​https://bugs.webkit.org/show_bug.cgi?id=155640

Reviewed by Simon Fraser.

Set the "renderer has outline ancestor" flag on the cloned inline renderer when
we split the original renderer for continuation.
It ensures that when the cloned part of the continuation requests repaint, we properly
invalidate the ancestor outline (if needed).

Source/WebCore:

Test: fast/inline/outline-with-continuation-assert.html

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::clone):

LayoutTests:

  • fast/inline/outline-with-continuation-assert-expected.txt: Added.
  • fast/inline/outline-with-continuation-assert.html: Added.
11:21 AM Changeset in webkit [198752] by BJ Burg
  • 18 edits in trunk/Source/JavaScriptCore

Web Inspector: protocol generator should generate C++ string-to-enum helper functions
​https://bugs.webkit.org/show_bug.cgi?id=155691
<rdar://problem/25258078>

Reviewed by Timothy Hatcher.

There's a lot of code throughout the Inspector agents and automation code
that needs to convert a raw string into a typed protocol enum. Generate
some helpers that do this conversion so clients can move over to using it.

These helpers are necessary for when we eventually switch to calling backend
dispatcher handlers with typed arguments instead of untyped JSON objects.

To correctly generate a conversion function for an anonymous enum, the
generator needs to be able to get the containing object type's declaration.
Since the model's Type object each have only one instance, there is a
one-to-one association between type and its declaration.

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator.generate_output):
(CppProtocolTypesHeaderGenerator._generate_forward_declarations):
Clean up this method to use methodcaller to sort types by raw name.

(_generate_declarations_for_enum_conversion_methods):
(_generate_declarations_for_enum_conversion_methods.return_type_with_export_macro):
(_generate_declarations_for_enum_conversion_methods.type_member_is_anonymous_enum_type):
Added. Generates a new section with an unfilled template and specializations of
the template for every named and anonymous enum in every domain. Guards for
domains wrap the forward declarations. This is added to the end of the header
file so that specializations for both types of enums are in the same place.

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator.generate_output):
(CppProtocolTypesImplementationGenerator._generate_enum_conversion_methods_for_domain):
(CppProtocolTypesImplementationGenerator._generate_enum_conversion_methods_for_domain.type_member_is_anonymous_enum_type):
(CppProtocolTypesImplementationGenerator._generate_enum_conversion_methods_for_domain.generate_conversion_method_body):
Added. Generate a static array of offsets into the enum constant value array.
Then, loop over this array of offsets and do string comparisons against the
provided string and enum constant values at the relevant offsets for this enum.

  • inspector/scripts/codegen/generator_templates.py:

(GeneratorTemplates): Update copyright year in generated files.

  • inspector/scripts/codegen/models.py:

(AliasedType.init):
(EnumType.init):
(EnumType.enum_values):
(EnumType.declaration):
(ArrayType.init):
(ArrayType.declaration):
(ObjectType.init):
(ObjectType.declaration):
(Protocol.resolve_types):
(Protocol.lookup_type_reference):
Pass the type declaration to Type constructors if available. If not,
fill in a placeholder name for the type in the constructor instead of caller.

Rebaseline all the things, mostly for copyright block changes.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
11:01 AM Changeset in webkit [198751] by Nikita Vasilyev
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Use font-variant-numeric: tabular-nums instead of -apple-system-monospaced-numbers
​https://bugs.webkit.org/show_bug.cgi?id=155826
<rdar://problem/25330631>

Reviewed by Myles C. Maxfield.

  • UserInterface/Views/CodeMirrorOverrides.css:

(.CodeMirror .CodeMirror-linenumber):

  • UserInterface/Views/DataGrid.css:

(.data-grid td):

  • UserInterface/Views/DefaultDashboardView.css:

(.toolbar .dashboard.default > .item):

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.object-tree-array-index .index-name):

10:49 AM Changeset in webkit [198750] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add font-variant-numeric to CSS autocompletions
​https://bugs.webkit.org/show_bug.cgi?id=155941
<rdar://problem/25381735>

Reviewed by Timothy Hatcher.

Also, remove -apple-system-monospaced-numbers.
font-variant-numeric: tabular-nuns should be used instead.

  • UserInterface/Models/CSSKeywordCompletions.js:
10:49 AM MathML/Early_2016_Refactoring created by fred.wang@free.fr
10:48 AM Changeset in webkit [198749] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking transitions/cancel-transition.html as flaky on ios-sim-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155948

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
10:47 AM Changeset in webkit [198748] by Matt Baker
  • 4 edits in trunk/Source/WebInspectorUI

REGRESSION (r195303): Web Inspector: Wrong indentation in the type coverage profiler popovers
​https://bugs.webkit.org/show_bug.cgi?id=155930
<rdar://problem/25377042>

Reviewed by Timothy Hatcher.

Increased specificity of TypeTreeView CSS selectors, and added new
overrides for rules made global by r195303, which don't apply to the
TypeTreeView's or its tree elements.

  • UserInterface/Views/TypeTreeElement.css:

(.item.type-tree-element):
(.item.type-tree-element > .titles):
(.item.type-tree-element > .disclosure-button):
(.item.type-tree-element.parent > .disclosure-button):
(.item.type-tree-element.parent.expanded > .disclosure-button):
(.item.type-tree-element > .icon):
(.item.type-tree-element.prototype):
(.item.type-tree-element.prototype:focus):
(.item.type-tree-element.prototype + ol):
(.type-tree-element): Deleted.
(.type-tree-element > .titles): Deleted.
(.type-tree-element > .disclosure-button): Deleted.
(.type-tree-element.parent > .disclosure-button): Deleted.
(.type-tree-element.parent.expanded > .disclosure-button): Deleted.
(.type-tree-element > .icon): Deleted.
(.type-tree-element.prototype): Deleted.
(.type-tree-element.prototype:focus): Deleted.
(.type-tree-element.prototype + ol): Deleted.

  • UserInterface/Views/TypeTreeView.css:

(.tree-outline.type li):

  • UserInterface/Views/TypeTreeView.js:

(WebInspector.TypeTreeView):
Use custom indentation.

10:46 AM Changeset in webkit [198747] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Large repaints while typing in the console tab
​https://bugs.webkit.org/show_bug.cgi?id=155627
<rdar://problem/25234875>

Reviewed by Timothy Hatcher.

Specify the height of flexbox elements to reduce repaint areas.

  • UserInterface/Views/Main.css:

(#navigation-sidebar):
(#content): z-index doesn't affect repaint areas once the height is set.
(#details-sidebar):

10:44 AM Changeset in webkit [198746] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking fast/loader/scroll-position-restored-on-back.html as flaky on ios-sim debug WK2
​https://bugs.webkit.org/show_bug.cgi?id=155947

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
10:17 AM Changeset in webkit [198745] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Inspector Memory Timeline sometimes encounters unstoppable rAF drawing
​https://bugs.webkit.org/show_bug.cgi?id=155906

Reviewed by Anders Carlsson.

It was possible to get Web Inspector into a state where repeated, expensive
requestAnimationFrame calls prevented user events from being handled, making it
unresponsive.

requestAnimationFrame uses callOnMainThread() to get a notification from the
CVDispayLink thread to the main thread, which is a -performSelectorOnMainThread...
Under the hood, this ends up as a CFRunLoopPerformBlock().

User events come in via Connection::enqueueIncomingMessage(), which uses RunLoop::main()::dispatch(),
which uses a CFRunLoopSource. Evidently, repeated calls to CFRunLoopPerformBlock() can prevent the
CFRunLoopSource from being handled.

Fix by moving requestAnimationFrame from callOnMainThread() to RunLoop::main()::dispatch().

  • platform/graphics/mac/DisplayRefreshMonitorMac.cpp:

(WebCore::DisplayRefreshMonitorMac::displayLinkFired):

10:15 AM Changeset in webkit [198744] by jdiggs@igalia.com
  • 2 edits in trunk/Tools

Add myself as reviewer

9:34 AM Changeset in webkit [198743] by BJ Burg
  • 2 edits in trunk/Source/WebKit2

Unreviewed, fix the build.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

InspectorProtocolObjects.h was renamed to AutomationProtocolObjects.h.

9:15 AM Changeset in webkit [198742] by jer.noble@apple.com
  • 1 edit
    1 add in trunk/LayoutTests

Unreviewed rebaselining; Different track IDs are selected in El Capitan.

  • platform/mac/media/track/video-track-alternate-groups-expected.txt: Added.
9:04 AM Changeset in webkit [198741] by Chris Dumez
  • 13 edits in trunk

Disk cache speculative validation requests do not have the 'Referer' HTTP header set
​https://bugs.webkit.org/show_bug.cgi?id=155890
<rdar://problem/25279962>

Reviewed by Antti Koivisto.

Source/WebCore:

Export a couple more symbols so we can use them from WebKit2.

  • platform/network/HTTPHeaderMap.h:
  • platform/network/ResourceRequestBase.h:

Source/WebKit2:

Disk cache speculative validation requests did not have the 'Referer'
HTTP header set. This was breaking some streaming sites (such as
twitch.tv).

We now store all the original request's HTTP headers in the disk cache
so we can re-use them for the speculative validation requests. When the
actual request comes later on, we also make sure that the HTTP headers
used in the speculative validation request match the ones from the
effective request. If they don't we don't use the speculatively
validated resource as the server may return a different resource in
such case.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):
Pass the effective ResourceRequest to the NetworkCacheSpeculativeLoadManager
so it can check that the speculative validation request's HTTP headers
match the effective request's headers.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):
(WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::PreloadedEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::revalidationRequest):
(WebKit::NetworkCache::SpeculativeLoadManager::PreloadedEntry::wasRevalidated):
We now have a member in PreloadedEntry to keep the request used for validation, if
speculative validation was done. This is so that we can compare its HTTP headers
with the ones of the effective request later on.

(WebKit::NetworkCache::dumpHTTPHeadersDiff):
Debug function that prints which HTTP headers did not match in the speculative
validation request and in the effective request.

(WebKit::NetworkCache::requestsHeadersMatch):
New utility function to check that the speculative validation request's HTTP
headers match the ones of the effective requests. Note that we allow for
headers related to validation to differ.

(WebKit::NetworkCache::SpeculativeLoadManager::canUsePreloadedEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::canUsePendingPreload):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieve):
Check that the speculative validation request's HTTP headers match the
ones of the effective request. If they don't then do not use the
speculatively validated resource.

(WebKit::NetworkCache::SpeculativeLoadManager::addPreloadedEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):
(WebKit::NetworkCache::SubresourcesEntry::encodeAsStorageRecord):
(WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):

  • Keep all the request's headers in SubresourceInfo instead of just the 'User-Agent' one.
  • Drop the custom copy constructor / assignment operator for SubresourceInfo that were making isolated copies on the members. We technically don't need to use SubresourceInfo objects in other threads than the main one. In SpeculativeLoadManager::preloadEntry(), we now make capture a SubresourceInfo* in the lambda to avoid calling the copy constructor. We also make sure that the object gets destroyed in the lambda function, which is executed in the main thread.

LayoutTests:

Update existing layout test to make sure that speculative validation
requests have their HTTP 'Referer' header set.

  • http/tests/cache/disk-cache/speculative-validation/validation-request-expected.txt:
  • http/tests/cache/disk-cache/speculative-validation/validation-request.html:
8:57 AM Changeset in webkit [198740] by timothy@apple.com
  • 8 edits in trunk/Source/WebKit2

Web Automation: Add Automation protocol commands to handle JavaScript dialogs

​https://bugs.webkit.org/show_bug.cgi?id=155888
rdar://problem/25360218

Reviewed by Brian Burg.

  • UIProcess/API/APIAutomationSessionClient.h:

(API::AutomationSessionClient::isShowingJavaScriptDialogOnPage): Added.
(API::AutomationSessionClient::dismissCurrentJavaScriptDialogOnPage): Added.
(API::AutomationSessionClient::acceptCurrentJavaScriptDialogOnPage): Added.
(API::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage): Added.
(API::AutomationSessionClient::setUserInputForCurrentJavaScriptPromptOnPage): Added.

  • UIProcess/API/Cocoa/_WKAutomationSessionDelegate.h:
  • UIProcess/Automation/Automation.json: Added new commands.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::isShowingJavaScriptDialog): Added.
(WebKit::WebAutomationSession::dismissCurrentJavaScriptDialog): Added.
(WebKit::WebAutomationSession::acceptCurrentJavaScriptDialog): Added.
(WebKit::WebAutomationSession::messageOfCurrentJavaScriptDialog): Added.
(WebKit::WebAutomationSession::setUserInputForCurrentJavaScriptPrompt): Added.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Cocoa/AutomationSessionClient.h:
  • UIProcess/Cocoa/AutomationSessionClient.mm:

(WebKit::AutomationSessionClient::AutomationSessionClient): Added.
(WebKit::AutomationSessionClient::isShowingJavaScriptDialogOnPage): Added.
(WebKit::AutomationSessionClient::dismissCurrentJavaScriptDialogOnPage): Added.
(WebKit::AutomationSessionClient::acceptCurrentJavaScriptDialogOnPage): Added.
(WebKit::AutomationSessionClient::messageOfCurrentJavaScriptDialogOnPage): Added.
(WebKit::AutomationSessionClient::setUserInputForCurrentJavaScriptPromptOnPage): Added.

8:57 AM Changeset in webkit [198739] by timothy@apple.com
  • 11 edits in trunk/Source

Web Automation: Add commands to compute layout of an element

​https://bugs.webkit.org/show_bug.cgi?id=155841
rdar://problem/25340075

Reviewed by Brian Burg.

Source/WebCore:

  • dom/Element.h: Mark scrollIntoViewIfNeeded() method as exported so WK2 can use it.
  • platform/ScrollView.h: Mark rootViewToContents(IntRect) method as exported so WK2 can use it.

Source/WebKit2:

  • UIProcess/Automation/Automation.json: Added computeElementLayout.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::computeElementLayout): Added.
(WebKit::WebAutomationSession::didComputeElementLayout): Added.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in:

(DidComputeElementLayout): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::computeElementLayout): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:

(ComputeElementLayout): Added.

8:57 AM Changeset in webkit [198738] by timothy@apple.com
  • 12 edits in trunk/Source

Web Automation: Add Automation protocol commands to resolve frames as handles

​https://bugs.webkit.org/show_bug.cgi?id=155650
rdar://problem/25242422

Reviewed by Brian Burg.

Source/WebCore:

  • page/DOMWindow.h: Marked focus() method as exported so WK2 can use them.
  • page/FrameTree.h: Marked scopedChild() methods as exported so WK2 can use them.

Source/WebKit2:

  • UIProcess/Automation/Automation.json:

Added resolveFrameHandle and resolveParentFrameHandle.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::webFrameProxyForHandle): Added.
(WebKit::WebAutomationSession::handleForWebFrameID): Added.
(WebKit::WebAutomationSession::handleForWebFrameProxy): Added.
(WebKit::WebAutomationSession::evaluateJavaScriptFunction): Use frame handles now.
(WebKit::WebAutomationSession::resolveChildFrameHandle): Added.
(WebKit::WebAutomationSession::didChildResolveFrame): Added.
(WebKit::WebAutomationSession::resolveParentFrameHandle): Added.
(WebKit::WebAutomationSession::didResolveParentFrame): Added.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in:

(DidResolveChildFrame): Added.
(DidResolveParentFrame): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::elementForNodeHandle): Added.
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal): Added.
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle): Added.
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithName): Added.
(WebKit::WebAutomationSessionProxy::resolveParentFrame): Added.
(WebKit::WebAutomationSessionProxy::focusFrame): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in:

(ResolveChildFrameWithOrdinal): Added.
(ResolveChildFrameWithNodeHandle): Added.
(ResolveChildFrameWithName): Added.
(ResolveParentFrame): Added.
(FocusFrame): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.js:

(AutomationSessionProxy.prototype.nodeForIdentifier): Added.
Public method that eats the exception thrown by the private method.

8:57 AM Changeset in webkit [198737] by timothy@apple.com
  • 9 edits in trunk/Source/WebKit2

Web Automation: Add Automation.evaluateJavaScriptFunction

​https://bugs.webkit.org/show_bug.cgi?id=155524
rdar://problem/25181888

Reviewed by Joseph Pecoraro.

  • UIProcess/Automation/Automation.json: Added evaluateJavaScriptFunction command.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::evaluateJavaScriptFunction): Added.
(WebKit::WebAutomationSession::didEvaluateJavaScriptFunction): Added.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in: Added didEvaluateJavaScriptFunction.
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::toJSArray): Added.
(WebKit::callPropertyFunction): Added.
(WebKit::evaluateJavaScriptCallback): Added.
(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame): Dispatch pending callbacks as errors.
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction): Added.
(WebKit::WebAutomationSessionProxy::didEvaluateJavaScriptFunction): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.h:
  • WebProcess/Automation/WebAutomationSessionProxy.js:

(AutomationSessionProxy): Added maps for node handles.
(AutomationSessionProxy.prototype.evaluateJavaScriptFunction): Added.
(AutomationSessionProxy.prototype._jsonParse): Added.
(AutomationSessionProxy.prototype._jsonStringify): Added.
(AutomationSessionProxy.prototype._reviveJSONValue): Added.
(AutomationSessionProxy.prototype._replaceJSONValue): Added.
(AutomationSessionProxy.prototype._createNodeHandle): Added.
(AutomationSessionProxy.prototype._nodeForIdentifier): Added.
(AutomationSessionProxy.prototype._identifierForNode): Added.

  • WebProcess/Automation/WebAutomationSessionProxy.messages.in: Added evaluateJavaScriptFunction.
8:56 AM Changeset in webkit [198736] by timothy@apple.com
  • 12 edits
    6 adds in trunk/Source/WebKit2

Add WebAutomationSessionProxy for WebProcess side automation tasks

​https://bugs.webkit.org/show_bug.cgi?id=155221
rdar://problem/25054868

Reviewed by Joseph Pecoraro.

  • CMakeLists.txt: Add build step to build-in WebAutomationSessionProxy.js.
  • DerivedSources.make: Ditto.
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::~WebAutomationSession):
(WebKit::WebAutomationSession::setProcessPool): Add / remove message receiver.

  • UIProcess/Automation/WebAutomationSession.h:
  • UIProcess/Automation/WebAutomationSession.messages.in: Added.

Test message to get things to build.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::removeMessageReceiver):
(WebKit::WebProcessPool::setAutomationSession):

  • UIProcess/WebProcessPool.h:
  • WebKit2.xcodeproj/project.pbxproj: Added new files.
  • WebProcess/Automation/WebAutomationSessionProxy.cpp: Added.

(WebKit::toJSString):
(WebKit::toJSValue):
(WebKit::WebAutomationSessionProxy::WebAutomationSessionProxy):
(WebKit::WebAutomationSessionProxy::~WebAutomationSessionProxy):
(WebKit::evaluate):
(WebKit::createUUID):
(WebKit::WebAutomationSessionProxy::scriptObjectForFrame):
(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
Create a script object per frame that is evaluated from WebAutomationSessionProxy.js.
Clear the script object when the window object is cleared.

  • WebProcess/Automation/WebAutomationSessionProxy.h: Added.

(WebKit::WebAutomationSessionProxy::test):
Added test message to let the messages files build.

  • WebProcess/Automation/WebAutomationSessionProxy.js: Added.
  • WebProcess/Automation/WebAutomationSessionProxy.messages.in: Added.
  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDidClearWindowObjectInWorld):
Call WebAutomationSessionProxy::didClearWindowObjectForFrame to clear the script object.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::ensureAutomationSessionProxy):
(WebKit::WebProcess::destroyAutomationSessionProxy):
Creates and destroys the WebAutomationSessionProxy when the UIProcess WebAutomationSession
is set or removed on the WebProcessPool.

  • WebProcess/WebProcess.h:

(WebKit::WebProcess::automationSessionProxy): Added.

  • WebProcess/WebProcess.messages.in: Added. Test message to get things to build.
8:23 AM Changeset in webkit [198735] by commit-queue@webkit.org
  • 15 edits in trunk/Source/WebCore

Remove USE(TEXTURE_MAPPER) guards inside TextureMapper sources.
​https://bugs.webkit.org/show_bug.cgi?id=155944

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-28
Reviewed by Michael Catanzaro.

After r196429 TextureMapper sources are built only in ports which actually
use TextureMapper, so USE(TEXTURE_MAPPER) guards in them are redundant now.

No new tests needed.

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:
  • platform/graphics/texmap/GraphicsLayerTextureMapper.h:
  • platform/graphics/texmap/TextureMapper.cpp:
  • platform/graphics/texmap/TextureMapper.h:
  • platform/graphics/texmap/TextureMapperBackingStore.cpp:
  • platform/graphics/texmap/TextureMapperBackingStore.h:
  • platform/graphics/texmap/TextureMapperFPSCounter.cpp:
  • platform/graphics/texmap/TextureMapperFPSCounter.h:
  • platform/graphics/texmap/TextureMapperLayer.cpp:
  • platform/graphics/texmap/TextureMapperLayer.h:
  • platform/graphics/texmap/TextureMapperTile.cpp:
  • platform/graphics/texmap/TextureMapperTile.h:
  • platform/graphics/texmap/TextureMapperTiledBackingStore.cpp:
  • platform/graphics/texmap/TextureMapperTiledBackingStore.h:
7:06 AM Changeset in webkit [198734] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Mark failing indexeddb tests to failure

Unreviewed EFL gardening.

Additionally a shadow dom test is marked to failure because shadow dom is not enabled on EFL port yet.

  • platform/efl/TestExpectations:
7:03 AM Changeset in webkit [198733] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Tried to fix the build after r198728.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::gestureEvent):

4:22 AM Changeset in webkit [198732] by Manuel Rego Casasnovas
  • 2 edits in trunk/Source/WebCore

[css-grid] Remove unneeded lines in offsetAndBreadthForPositionedChild()
​https://bugs.webkit.org/show_bug.cgi?id=155788

Reviewed by Sergio Villar Senin.

Just remove 2 lines/variables that were not needed at all in
RenderGrid::offsetAndBreadthForPositionedChild().

No new tests, no change of behavior.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

1:45 AM Changeset in webkit [198731] by Hunseop Jeong
  • 2 edits in trunk/LayoutTests

[EFL] Remove the more passed tests after r198728

Unreviewed EFL gardening.

  • platform/efl/TestExpectations:
1:02 AM Changeset in webkit [198730] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebKit2

Unreviewed GTK build fix for the threaded compositor feature after r198655.
Adjust the first parameter of ThreadSafeCoordinatedSurface::copyToTexture().

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.cpp:

(WebKit::ThreadSafeCoordinatedSurface::copyToTexture):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadSafeCoordinatedSurface.h:

Mar 27, 2016:

11:47 PM Changeset in webkit [198729] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Removed redundant #if conditions in ANGLEWebKitBridge.h
​https://bugs.webkit.org/show_bug.cgi?id=155880

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-27
Reviewed by Csaba Osztrogonác.

GTK, Efl, AppleWin, and WinCairo ports can be built only with cmake,
so condition !defined(BUILDING_WITH_CMAKE) implies
!PLATFORM(GTK) && !PLATFORM(EFL) && !PLATOFRM(WIN).

No new tests needed.

  • platform/graphics/ANGLEWebKitBridge.h:
10:59 PM Changeset in webkit [198728] by Hunseop Jeong
  • 7 edits in trunk

[EFL] REGRESSION(r188793): It made 200 layout tests and Bindings/event-target-wrapper.html performance test fail
PerformanceTests:

​https://bugs.webkit.org/show_bug.cgi?id=148470

Reviewed by Darin Adler.

  • Skipped: Unskip the Bindings/event-target-wrapper test.

Source/WebKit2:

​https://bugs.webkit.org/show_bug.cgi?id=148470

Reviewed by Darin Adler.

UI events are suppressed in webPage after r188793.
I revert the r136133 for passing the events to WebPage

  • WebProcess/WebPage/WebPage.cpp: Removed the codes which was uploaded at r136133.

(WebKit::WebPage::mouseEvent):
(WebKit::WebPage::wheelEvent):
(WebKit::WebPage::keyEvent):
(WebKit::WebPage::touchEvent):
(WebKit::WebPage::canHandleUserEvents): Deleted.

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

​https://bugs.webkit.org/show_bug.cgi?id=148470

Reviewed by Darin Adler.

  • platform/efl/TestExpectations: Unskip the passed tests.
10:07 PM Changeset in webkit [198727] by dbates@webkit.org
  • 2 edits in trunk

WebKit.xcworkspace "All Source" scheme always copies OS X WebKitSystemInterface libraries
​https://bugs.webkit.org/show_bug.cgi?id=155889

Reviewed by Alexey Proskuryakov.

Fixes an issue where building the "All Source" scheme in WebKit.xcworkspace would
always copy the OS X WebKitSystemInterface libraries regardless of the selected
base SDK. In particular, it would copy the OS X WebKitSystemInterface libraries
when building with SDK iphonesimulator. WebKit.xcworkspace should copy the SDK-
specific WebKitSystemInterface libraries.

  • WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:
7:31 PM Changeset in webkit [198726] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL][AX] Mark AX failing tests to failure

Unreveiwed EFL gardening.

  • platform/efl/TestExpectations:
7:32 AM Changeset in webkit [198725] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Mark rtl-scrollbar's tests to pass with incorrectly

Unreviewed EFL gardening.

  • platform/efl/TestExpectations: Though rtl scrollbar isn't supported by EFL yet, it has been passed.

Mar 26, 2016:

8:07 PM Changeset in webkit [198724] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Tried to fix the build.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _takeViewSnapshot]):

8:06 PM FeatureFlags edited by Dr Alex Gouaillard
(diff)
7:13 PM Changeset in webkit [198723] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

Tried to fix the build.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _takeViewSnapshot]):

6:05 PM Changeset in webkit [198722] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Mac CMake build fix.

  • PlatformMac.cmake:

Link with AVFoundation libraries.

5:59 PM Changeset in webkit [198721] by dino@apple.com
  • 1 edit in trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm

Fix the build by removing the #endif I left in on my last attempt.

  • UIProcess/API/Cocoa/WKWebView.mm:
5:44 PM Changeset in webkit [198720] by dino@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix build after my most recent commit.

  • UIProcess/API/Cocoa/WKWebView.mm:

(WebKit::bufferFormat): Delete the WebKitAdditions include.

4:50 PM Changeset in webkit [198719] by dino@apple.com
  • 10 edits in trunk/Source

Move extended color detection into Open Source
​https://bugs.webkit.org/show_bug.cgi?id=155909
<rdar://problem/25369754>

Reviewed by Anders Carlsson.

The code for detecting extended color displays
was hidden while the iPad Pro 9.7" was in development.
Now it is public, move the detection to Open Source.

While doing this, add a new method to PlatformScreen
so that we have a more obvious way to detect such
displays.

Source/WebCore:

  • platform/PlatformScreen.h: Add screenSupportsExtendedColor.
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(PlatformCALayerCocoa::commonInit): Set the backing
store format to the RGBA10XR if we're on an extended
display.

  • platform/ios/LegacyTileGridTile.mm:

(WebCore::LegacyTileGridTile::LegacyTileGridTile): Ditto.
(WebCore::setBackingStoreFormat): Deleted. Now set directly
in the constructor.

  • platform/ios/PlatformScreenIOS.mm:

(WebCore::screenDepthPerComponent): Cleanup.
(WebCore::screenSupportsExtendedColor): Implement the
iOS version of this using MobileGestalt.

  • platform/mac/PlatformScreenMac.mm:

(WebCore::displayFromWidget): Whitespace cleanup.
(WebCore::screenForWidget):
(WebCore::screenForWindow):
(WebCore::screenSupportsExtendedColor): Default implementation
returns false for all screens at the moment.

  • platform/spi/cocoa/QuartzCoreSPI.h: New constant.
  • platform/spi/ios/MobileGestaltSPI.h: Ditto.

Source/WebKit2:

  • Shared/mac/RemoteLayerBackingStore.mm:

(WebKit::bufferFormat): No need to use WebKitAdditions any
more.

1:07 PM Changeset in webkit [198718] by ggaren@apple.com
  • 7 edits in trunk/Source/bmalloc

2016-03-26 Geoffrey Garen <​ggaren@apple.com>

Unreviewed, rolling out r198702, r198704.

Caused a memory regression on PLUM.

Reverted changeset:

bmalloc: fix an ASSERT on iOS
​https://bugs.webkit.org/show_bug.cgi?id=155911
​http://trac.webkit.org/changeset/198704

bmalloc: support physical page sizes that don't match the virtual page size
​https://bugs.webkit.org/show_bug.cgi?id=155898
​http://trac.webkit.org/changeset/198702

11:37 AM Changeset in webkit [198717] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

[OS X] Layout sometimes flakily assumes overlay scrollbars when clicky-scroll-wheel-mouse is attached and system preference detects scrollbar mode
​https://bugs.webkit.org/show_bug.cgi?id=155912

Reviewed by Simon Fraser.

When the system preference is set to detect the scrollbar type (overlay or
always-on, and a clicky scroll wheel mouse is connected, AppKit
asynchronously tells all the NSScrollerImpPairs about the kind of scrollbar
it should be using. However, when this notification is delivered, it may
be in between FrameViews, which means we may not have any
NSScrollerImpPairs created to listen to the notification.

r198444 solved this by asking if we missed any update whenever we create
an NSScrollerImpPair. This works partially; however, there is a significant
amount of layout which occurs before we create the first ScrollAnimatorMac.
This layout will ask the ScrollbarThemeMac if overlay scrollbars are
enabled, and the results will be stale (because we haven't created any the
NSScrollerImpPairs yet).

Luckly, AppKit fires a notification when it discovers what kind of
scrollbars should be used. We can rely on this notification in the event
that we don't have any NSScrollerImpPairs created.

Covered (as best as possible) by existing RTL scrollbar tests. However,
the system preference that governs this is not currently testable.

  • platform/mac/ScrollbarThemeMac.mm:

(+[WebScrollbarPrefsObserver registerAsObserver]):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::ScrollAnimatorMac): Remove the old code.

5:53 AM Changeset in webkit [198716] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Remove duplicated tests in EFL TextExpectations.

Unreviewed EFL gardening.

  • platform/efl/TestExpectations: Clean up duplicated pathes.
12:31 AM Changeset in webkit [198715] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit2

Treat SHA-1-signed certificates as insecure by default.

Reviewed by Sam Weinig.

  • UIProcess/API/APIPageConfiguration.h: Initialize m_treatsSHA1SignedCertificatesAsInsecure to true.
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Initialize _treatsSHA1SignedCertificatesAsInsecure to YES.

12:08 AM Changeset in webkit [198714] by commit-queue@webkit.org
  • 5 edits in trunk/LayoutTests

ES6 Class syntax. Invoking method of parent class in constructor before super() lead to crash
​https://bugs.webkit.org/show_bug.cgi?id=152108

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-26
Reviewed by Ryosuke Niwa.

  • js/arrowfunction-superproperty-expected.txt:
  • js/script-tests/arrowfunction-superproperty.js:
  • js/script-tests/class-syntax-name.js:
  • js/script-tests/class-syntax-string-and-numeric-names.js:

Remove stale FIXMEs from LayoutTests where the bugs have been fixed.

Mar 25, 2016:

11:51 PM Changeset in webkit [198713] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Misc. JavaScriptCore built-ins cleanups
​https://bugs.webkit.org/show_bug.cgi?id=155920

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-25
Reviewed by Mark Lam.

  • builtins/RegExpPrototype.js:

(match):
No need for an else after an if that always returns.

  • builtins/TypedArrayConstructor.js:

(of):
Fix error message to use the correct function name.

(allocateInt8Array):
(allocateInt16Array):
(allocateInt32Array):
(allocateUint32Array):
(allocateUint16Array):
(allocateUint8Array):
(allocateUint8ClampedArray):
(allocateFloat32Array):
(allocateFloat64Array):
Cleanup style to be like all the other code.

  • tests/stress/typedarray-of.js:

Test the exception message.

10:36 PM Changeset in webkit [198712] by commit-queue@webkit.org
  • 2 edits in trunk/WebKitLibraries

Web Inspector: make at the root should not create a WebKitLibraries/--lvm directory
​https://bugs.webkit.org/show_bug.cgi?id=155918

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-25
Reviewed by Timothy Hatcher.

  • Makefile:

Remove no longer used --llvm option.

10:31 PM Changeset in webkit [198711] by commit-queue@webkit.org
  • 5 edits
    3 adds in trunk

Date.prototype.toLocaleDateString uses overridable Object.create
​https://bugs.webkit.org/show_bug.cgi?id=155917

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-25
Reviewed by Mark Lam.

Source/JavaScriptCore:

  • builtins/DatePrototype.js:

(toLocaleString.toDateTimeOptionsAnyAll):
(toLocaleDateString.toDateTimeOptionsDateDate):
(toLocaleTimeString.toDateTimeOptionsTimeTime):
Switch from @Object.create to @Object.@create to guarentee we are
using the built-in create method and not user defined code.

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

(JSC::ObjectConstructor::finishCreation):
Setup the @create private symbol.

LayoutTests:

  • js/regress-155917-expected.txt: Added.
  • js/regress-155917.html: Added.
  • js/script-tests/regress-155917.js: Added.

(Object.create):

9:37 PM Changeset in webkit [198710] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

9:35 PM Changeset in webkit [198709] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.6.13

New Tag.

8:47 PM Changeset in webkit [198708] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Put the x86 Assembler on a binary diet
​https://bugs.webkit.org/show_bug.cgi?id=155683

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-25
Reviewed by Darin Adler.

The MacroAssemblers are heavily inlined. This is unfortunately
important for baseline JIT where many branches can be eliminated
at compile time.

This inlining causes a lot of binary bloat. The phases
lowering to ASM are massively large.

This patch improves the situation a bit for x86 through
many small improvements:

-Every instruction starts with ensureSpace(). The slow

path realloc the buffer.
From that slow path, only fastRealloc() was a function
call. What is around does not need to be fast, I moved
the whole grow() function out of line for those cases.

-When testing multiple registers for REX requirements,

we had something like this:

byteRegRequiresRex(reg) regRequiresRex(index)
byteRegRequiresRex(rm)
regRequiresRex(base)

Those were producing multiple test-and-branch. Those branches
are effectively random so we don't have to care about individual
branches being predictable.

The new code effectively does:

byteRegRequiresRex(reg | rm)
regRequiresRex(index | base)

-Change "ModRmMode" to have the value we can OR directly

to the generated ModRm.
This is important because some ModRM code is so large
that is goes out of line;

-Finally, a big change on how we write to the AssemblerBuffer.

Previously, instructions were written byte by byte into
the assembler buffer of the MacroAssembler.

The problem with that is the compiler cannot prove that
the buffer pointer and the AssemblerBuffer are not pointing
to the same memory.

Because of that, before any write, all the local register
were pushed back to the AssemblerBuffer memory, then everything
was read back after the write to compute the next write.

I attempted to use the "restrict" keyword and wrapper types
to help Clang with that but nothing worked.

The current solution is to keep a local copy of the index
and the buffer pointer in the scope of each instruction.
That is done by AssemblerBuffer::LocalWriter.

Since LocalWriter only exists locally, it stays in
register and we don't have all the memory churn between
each byte writing. This also allows clang to combine
obvious cases since there are no longer observable side
effects between bytes.

This patch reduces the binary size by 66k. It is a small
speed-up on Sunspider.

  • assembler/AssemblerBuffer.h:

(JSC::AssemblerBuffer::ensureSpace):
(JSC::AssemblerBuffer::LocalWriter::LocalWriter):
(JSC::AssemblerBuffer::LocalWriter::~LocalWriter):
(JSC::AssemblerBuffer::LocalWriter::putByteUnchecked):
(JSC::AssemblerBuffer::LocalWriter::putShortUnchecked):
(JSC::AssemblerBuffer::LocalWriter::putIntUnchecked):
(JSC::AssemblerBuffer::LocalWriter::putInt64Unchecked):
(JSC::AssemblerBuffer::LocalWriter::putIntegralUnchecked):
(JSC::AssemblerBuffer::putIntegral):
(JSC::AssemblerBuffer::outOfLineGrow):

  • assembler/MacroAssemblerX86Common.h:
  • assembler/X86Assembler.h:

(JSC::X86Assembler::X86InstructionFormatter::byteRegRequiresRex):
(JSC::X86Assembler::X86InstructionFormatter::regRequiresRex):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::LocalBufferWriter):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::emitRex):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::emitRexW):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::emitRexIf):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::emitRexIfNeeded):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::putModRm):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::putModRmSib):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::registerModRM):
(JSC::X86Assembler::X86InstructionFormatter::LocalBufferWriter::memoryModRM):
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp_disp32): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp_disp8): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::twoByteOp): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::threeByteOp): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp64): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp64_disp32): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp64_disp8): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::twoByteOp64): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::oneByteOp8): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::twoByteOp8): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::emitRex): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::emitRexW): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::emitRexIf): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::emitRexIfNeeded): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::putModRm): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::putModRmSib): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::registerModRM): Deleted.
(JSC::X86Assembler::X86InstructionFormatter::memoryModRM): Deleted.

8:45 PM Changeset in webkit [198707] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Sometimes clearing focused nodes in ProfileView leaves a dangling call stack that can never be removed
​https://bugs.webkit.org/show_bug.cgi?id=155915

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-25
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ProfileDataGridTree.js:

(WebInspector.ProfileDataGridTree.prototype.addFocusNode):
(WebInspector.ProfileDataGridTree.prototype.rollbackFocusNode):
(WebInspector.ProfileDataGridTree.prototype.clearFocusNodes):
(WebInspector.ProfileDataGridTree.prototype._focusChanged):
(WebInspector.ProfileDataGridTree.prototype._saveFocusedNodeOriginalParent):
(WebInspector.ProfileDataGridTree.prototype._restoreFocusedNodeToOriginalParent):
Be a little more explicit about saving and resotring nodes.
When restoring, work around a DataGrid issue by temporarily
collapsing and expanding the part of the node we are being
reattached to. This is a cheap workaround for an otherwise
complex DataGrid / DataGridTree issue.

7:09 PM Changeset in webkit [198706] by Dewei Zhu
  • 2 edits in trunk/Tools

Dromaeo patch used by run-benchmark should not include an invalid address.
​https://bugs.webkit.org/show_bug.cgi?id=155910

Reviewed by Ryosuke Niwa.

Should not use invalid '​http://127.0.0.1/Icons/w3c_home' in the patched version of test.

  • Scripts/webkitpy/benchmark_runner/data/patches/Dromaeo.patch:
6:12 PM Changeset in webkit [198705] by sbarati@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

RegExp.prototype.test should be an intrinsic again
​https://bugs.webkit.org/show_bug.cgi?id=155861

Reviewed by Yusuke Suzuki.

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::finishCreation):

5:50 PM Changeset in webkit [198704] by ggaren@apple.com
  • 2 edits in trunk/Source/bmalloc

bmalloc: fix an ASSERT on iOS
​https://bugs.webkit.org/show_bug.cgi?id=155911

Reviewed by Gavin Barraclough.

  • bmalloc/VMAllocate.h:

(bmalloc::vmValidatePhysical): Call through to vmValidatePhysical because
the vmValidate function validates virtual sizes rather than physical
sizes.

5:21 PM Changeset in webkit [198703] by jer.noble@apple.com
  • 3 edits
    8 adds in trunk

[Mac] Audio tracks in alternate groups are not represented correctly as AudioTracks
​https://bugs.webkit.org/show_bug.cgi?id=155891
<rdar://problem/24841372>

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/track/video-track-alternate-groups.html

Previously, we created an AudioTrack for every AVPlayerItemTrack, and additionally, a
AudioTrack for every AVMediaSelectionOption that did not have an associated AVAssetTrack.
This caused a number of issues with various types of media, including media with fallback
tracks.

Now, we will create an AudioTrack for every AVMediaSelectionOption, and only create an
AudioTrack for every AVPlayerItem track if no AVMediaSelectionGroups (and thus no
AVMediaSeletionOptions) exist.

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

(WebCore::determineChangedTracksFromNewTracksAndOldItems):
(WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks):

LayoutTests:

  • media/content/audio-tracks-alternate-group-with-fallback.mp4: Added.
  • media/content/audio-tracks-no-alternate-group.mp4: Added.
  • media/content/audio-tracks-some-in-alternate-group.mp4: Added.
  • media/track/video-track-alternate-groups-expected.txt: Added.
  • media/track/video-track-alternate-groups.html: Added.
  • platform/mac-yosemite/media/track/video-track-alternate-groups-expected.txt: Added.
4:56 PM WebKitGTK/2.12.x edited by Michael Catanzaro
(diff)
4:46 PM Changeset in webkit [198702] by ggaren@apple.com
  • 7 edits in trunk/Source/bmalloc

bmalloc: support physical page sizes that don't match the virtual page size
​https://bugs.webkit.org/show_bug.cgi?id=155898

Reviewed by Gavin Barraclough.

This is a memory savings on iOS devices where the virtual page size
is 16kB but the physical page size is 4kB.

  • bmalloc/Chunk.h:

(bmalloc::Chunk::Chunk): smallPageSize is now unrelated to the OS's
page size -- it just reflects the optimal unit of memory to recycle
between small objects.

We only need to round up to largeAlignment because small objects allocate
as subsets of large objects now.

(bmalloc::Chunk::page):
(bmalloc::Object::pageBegin):
(bmalloc::Object::line): Adopt smallPageSize.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::initializeLineMetadata):
(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::allocateLarge): Adopt smallPageSize.

(bmalloc::Heap::splitAndAllocate):
(bmalloc::Heap::tryAllocateXLarge):
(bmalloc::Heap::shrinkXLarge): Adopt vmPageSizePhysical(). We want the
physical page size because that's the unit at which the hardware MMU
will recycle memory.

  • bmalloc/Sizes.h: Adopt smallPageSize.
  • bmalloc/VMAllocate.h:

(bmalloc::vmPageSizePhysical):
(bmalloc::vmPageSize): Distinguish between page size, which is the virtual
memory page size advertised by the OS, and physical page size, which the
true hardware page size.

(bmalloc::vmSize):
(bmalloc::vmValidate):
(bmalloc::vmValidatePhysical):
(bmalloc::tryVMAllocate):
(bmalloc::vmDeallocatePhysicalPages):
(bmalloc::vmAllocatePhysicalPages):
(bmalloc::vmDeallocatePhysicalPagesSloppy):
(bmalloc::vmAllocatePhysicalPagesSloppy): Adopt vmPageSize() and
vmPageSizePhyiscal().

  • bmalloc/Vector.h:

(bmalloc::Vector::initialCapacity):
(bmalloc::Vector<T>::shrink):
(bmalloc::Vector<T>::shrinkCapacity):
(bmalloc::Vector<T>::growCapacity): Adopt vmPageSize(). We'd prefer to
use vmPageSizePhysical() but mmap() doesn't support it.

  • bmalloc/XLargeMap.cpp: #include.
4:45 PM Changeset in webkit [198701] by Alan Bujtas
  • 7 edits in trunk/Source/WebCore

RenderImage::repaintOrMarkForLayout fails when the renderer is detached.
​https://bugs.webkit.org/show_bug.cgi?id=155885
<rdar://problem/25359164>

Reviewed by Simon Fraser.

Making containingBlockFor* functions standalone ensures that we don't
call them on an invalid object.

Covered by existing tests.

  • dom/Element.cpp:

(WebCore::layoutOverflowRectContainsAllDescendants):

  • rendering/LogicalSelectionOffsetCaches.h:

(WebCore::LogicalSelectionOffsetCaches::LogicalSelectionOffsetCaches):

  • rendering/RenderElement.cpp:

(WebCore::containingBlockForFixedPosition):
(WebCore::containingBlockForAbsolutePosition):
(WebCore::containingBlockForObjectInFlow):
(WebCore::RenderElement::containingBlockForFixedPosition): Deleted.
(WebCore::RenderElement::containingBlockForAbsolutePosition): Deleted.
(WebCore::isNonRenderBlockInline): Deleted.
(WebCore::RenderElement::containingBlockForObjectInFlow): Deleted.

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

(WebCore::RenderInline::styleWillChange):

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::containingBlock):

4:44 PM Changeset in webkit [198700] by ggaren@apple.com
  • 15 edits
    1 copy
    2 deletes in trunk/Source/bmalloc

2016-03-25 Geoffrey Garen <​ggaren@apple.com>

Unreviewed, rolling in r198679.

r198679 was just a rename. The regression was caused by r198675 and then
fixed in r198693.

Restored changeset:

"bmalloc: Renamed LargeChunk => Chunk"
​https://bugs.webkit.org/show_bug.cgi?id=155894
​http://trac.webkit.org/changeset/198679

4:27 PM Changeset in webkit [198699] by bshafiei@apple.com
  • 7 edits in tags/Safari-602.1.25.0.1

Merged r198698. rdar://problem/25352879

4:23 PM Changeset in webkit [198698] by mark.lam@apple.com
  • 7 edits in trunk

ES6's throwing of TypeErrors on access of RegExp.prototype flag properties breaks websites.
​https://bugs.webkit.org/show_bug.cgi?id=155904

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

There exists a JS library XRegExp (see ​http://xregexp.com) that extends the regexp
implementation. XRegExp does feature testing by comparing RegExp.prototype.sticky
to undefined. See:

Example 1. ​https://github.com/slevithan/xregexp/blob/28a2b033c5951477bed8c7c867ddf7e89c431cd4/tests/perf/index.html

...
} else if (knownVersion[version]) {

Hack around ES6 incompatibility in XRegExp versions prior to 3.0.0
if (parseInt(version, 10) < 3) {

delete RegExp.prototype.sticky;

}
...

Example 2. ​https://github.com/slevithan/xregexp/blob/d0e665d4068cec4d15919215b098b2373f1f12e9/tests/perf/versions/xregexp-all-v2.0.0.js

...
Check for flag y support (Firefox 3+)

hasNativeY = RegExp.prototype.sticky !== undef,

...

The ES6 spec states that we should throw a TypeError here because RegExp.prototype
is not a RegExp object, and the sticky getter is only allowed to be called on
RegExp objects. See ​https://tc39.github.io/ecma262/2016/#sec-get-regexp.prototype.sticky.
As a result, websites that uses XRegExp can break (e.g. some Atlassian tools).

As a workaround, we'll return undefined instead of throwing on access of these
flag properties that may be used for feature testing.

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):

LayoutTests:

  • ietestcenter/Javascript/TestCases/15.10.7.2-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.3-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.4-1.js:

(ES5Harness.registerTest.test):

  • updated these tests to not expect a TypeError due to the workaround.
  • js/pic/cached-named-property-getter.html:
  • updated this test to use the source property (which still throws a TypeError) instead of the ignoreCase property which no longer does.
4:15 PM Changeset in webkit [198697] by dino@apple.com
  • 6 edits in trunk/Source

Remove use of extern "C" to include QuartzCore files
​https://bugs.webkit.org/show_bug.cgi?id=155905
Source/WebCore:

<rdar://problem/25364798>

Reviewed by Anders Carlson.

We can avoid having to wrap constants in extern "C", since they
are mangled the same in both C and C++.

  • platform/graphics/ca/cocoa/PlatformCAFiltersCocoa.mm: Now that

QuartzCoreSPI.h has CABackdropLayer, remove the duplicate entry.

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm: Ditto.
  • platform/spi/cocoa/QuartzCoreSPI.h: Include the framework private

file. Repace EXTERN_C with "extern".

Source/WebKit2:

Reviewed by Anders Carlson.

We can avoid having to wrap constants in extern "C", since they
are mangled the same in both C and C++.

  • UIProcess/mac/RemoteLayerTreeHost.mm: Remove the

mention of CABackdropLayer.

4:06 PM Changeset in webkit [198696] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Add a compile time flag for using QTKit
​https://bugs.webkit.org/show_bug.cgi?id=155868

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-25
Reviewed by Daniel Bates.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
  • platform/graphics/mac/MediaTimeQTKit.h:
  • platform/graphics/mac/MediaTimeQTKit.mm:
  • platform/mac/WebVideoFullscreenController.mm:

(SOFT_LINK_CLASS):
(-[WebVideoFullscreenController setVideoElement:]):
(-[WebVideoFullscreenController updatePowerAssertions]):

4:04 PM Changeset in webkit [198695] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] fix divide-by-zero in String.prototype.padStart/padEnd
​https://bugs.webkit.org/show_bug.cgi?id=155903

Patch by Caitlin Potter <​caitp@igalia.com> on 2016-03-25
Reviewed by Filip Pizlo.

  • runtime/StringPrototype.cpp:

(JSC::padString):

3:55 PM Changeset in webkit [198694] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] materialize-past-butterfly-allocation.js time out in debug

  • tests/stress/materialize-past-butterfly-allocation.js:

The test times out on the debug bots. We suspect there is nothing
wrong, just overkill loops.

3:04 PM Changeset in webkit [198693] by ggaren@apple.com
  • 2 edits in trunk/Source/bmalloc

2016-03-25 Geoffrey Garen <​ggaren@apple.com>

Unreviewed, try to fix a crash seen on the bots.

  • bmalloc/Allocator.cpp: (bmalloc::Allocator::reallocate): We have to take the lock even if we're only reading our own data becuse LargeObject contains validation code that will read our neighbors' data as well.
3:01 PM Changeset in webkit [198692] by Beth Dakin
  • 7 edits in trunk/Source/WebCore

Autoscrolling from a drag selection does not work in full screen, or when the
window is against the screen edge
​https://bugs.webkit.org/show_bug.cgi?id=155858
-and corresponding-
rdar://problem/9338465

Reviewed by Simon Fraser.

WebKit2 has always had this bug. Since WebKit1 scrolling in handled largely
by AppKit, we did not have this bug because AppKit adjusts the autoscroll
amount whenever the window is at the edge of the screen and the user is
trying to autoscroll in that direction. This patch employs the same technique
in WebCore.

Instead of using EventHandler::lastKnownMousePosition() as the autoscroll
amount, use EventHandler::effectiveMousePositionForSelectionAutoscroll()
which will adjust the lastKnownMousePosition if the window is at the edge of
the screen.

  • page/AutoscrollController.cpp:

(WebCore::AutoscrollController::autoscrollTimerFired):

For most ports, effectiveMousePositionForSelectionAutoscroll() will just
return m_lastKnownMousePosition. We override it in EventHandlerMac to return
an adjusted amount.

  • page/EventHandler.cpp:

(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll):

  • page/EventHandler.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::autoscrollAdjustmentFactorForScreenBoundaries):
(WebCore::EventHandler::effectiveMousePositionForSelectionAutoscroll):

Make screenForDisplayID available as on PlatformScreen.h instead of just
being a static function in the implementation file.

  • platform/PlatformScreen.h:
  • platform/mac/PlatformScreenMac.mm:

(WebCore::screenForDisplayID):

2:55 PM Changeset in webkit [198691] by rniwa@webkit.org
  • 11 edits
    2 adds
    2 deletes in trunk/Websites/perf.webkit.org

Migrate admin-regenerate-manifest.js to mocha.js and test v3 UI code
​https://bugs.webkit.org/show_bug.cgi?id=155863

Reviewed by Joseph Pecoraro.

Replaced admin-regenerate-manifest.js by a new mocha.js tests using the new server testing capability
added in r198642 and tested v3 UI code (parsing manifest.json and creating models). Also removed
/admin/regenerate-manifest since it has been superseded by /api/manifest.

This patch also extracts manifest.js out of main.js so that it could be used and tested without the
DOM support in node.

  • public/admin/regenerate-manifest.php: Deleted.
  • public/include/db.php: Fixed a regression from r198642 since CONFIG_DIR now doesn't end with

a trailing backslash.

  • public/include/manifest.php:

(ManifestGenerator::bug_trackers): Avoid a warning message when there are no repositories.

  • public/v3/index.html:
  • public/v3/main.js:

(main):

  • public/v3/models/bug-tracker.js:

(BugTracker.prototype.newBugUrl): Added.
(BugTracker.prototype.repositories): Added.

  • public/v3/models/manifest.js: Added. Extracted from main.js.

(Manifest.fetch): Moved from main.js' fetchManifest.
(Manifest._didFetchManifest): Moved from main.js' didFetchManifest.

  • public/v3/models/platform.js:

(Platform.prototype.hasTest): Fixed the bug that "test" here was shadowing the function parameter of
the same name. This is tested by the newly added test cases.

  • server-tests/api-build-requests-tests.js:
  • server-tests/api-manifest.js: Added. Migrated test cases from tests/admin-regenerate-manifest.js

with additional assertions for v3 UI model objects.

  • server-tests/resources/test-server.js:

(TestServer.prototype.start):
(TestServer.prototype.testConfig): Renamed from _constructTestConfig now that this is a public API.
Also no longer takes dataDirectory as an argument since it's always the same.
(TestServer.prototype._ensureDataDirectory): Fixed a bug that we weren't making public/data.
(TestServer.prototype.cleanDataDirectory): Added. Remove all files inside public/data between tests.
(TestServer.prototype.inject): Added. Calls before, etc... because always calling before had an
unintended side effect of slowing down unit tests even through they don't need Postgres or Apache.

  • tests/admin-regenerate-manifest.js: Removed.
  • tools/js/database.js:
  • tools/js/v3-models.js:
1:57 PM Changeset in webkit [198690] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Clicking a result in Quick Open dialog dismisses the dialog, does nothing
​https://bugs.webkit.org/show_bug.cgi?id=155892
<rdar://problem/25361220>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/OpenResourceDialog.js:

(WebInspector.OpenResourceDialog):
Allow repeat selection so clicking a selected element makes a selection
and dismisses the dialog.

(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
Suppress select and deselect. Only user clicks should cause a selection event.

(WebInspector.OpenResourceDialog.prototype._handleBlurEvent):
Prevent the dialog from being dismissed before tree item selection occurs.

(WebInspector.OpenResourceDialog.prototype._treeSelectionDidChange):
Set the represented object (dialog result) and dismiss.

1:52 PM Changeset in webkit [198689] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking compositing/repaint/become-overlay-composited-layer.html as flaky on ios-sim-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155737

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
1:45 PM Changeset in webkit [198688] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Unreviewed, rolling out r198619.
​https://bugs.webkit.org/show_bug.cgi?id=155902

Switching to Console tab sometimes results in blank tab.
(Requested by JoePeck on #webkit).

Reverted changeset:

"Web Inspector: Large repaints while typing in the console
tab"
​https://bugs.webkit.org/show_bug.cgi?id=155627
​http://trac.webkit.org/changeset/198619

1:37 PM Changeset in webkit [198687] by beidson@apple.com
  • 5 edits
    1 add
    4 deletes in trunk

Soften push/replaceState frequency restrictions.
<rdar://problem/25228439> and ​https://bugs.webkit.org/show_bug.cgi?id=155901
.:

Rubber-stamped by Timothy Hatcher.

  • ManualTests/state-objects-time-limit.html: Added.

Source/WebCore:

Rubber-stamped by Timothy Hatcher.

Covered by existing LayoutTests and a new Manual Test.

  • page/History.cpp:

(WebCore::History::stateObjectAdded): Allow 100 state object operations every 30 seconds.

  • page/History.h:

LayoutTests:

Rubber-stamped by Timothy Hatcher.

  • fast/loader/stateobjects/pushstate-frequency-with-user-gesture-expected.txt: Removed.
  • fast/loader/stateobjects/pushstate-frequency-with-user-gesture.html: Removed.
  • fast/loader/stateobjects/replacestate-frequency-with-user-gesture-expected.txt: Removed.
  • fast/loader/stateobjects/replacestate-frequency-with-user-gesture.html: Removed.
1:30 PM Changeset in webkit [198686] by Ryan Haddad
  • 15 edits
    1 move
    1 add in trunk/Source/bmalloc

Unreviewed, rolling out r198679.

This change caused flaky LayoutTest crashes

Reverted changeset:

"bmalloc: Renamed LargeChunk => Chunk"
​https://bugs.webkit.org/show_bug.cgi?id=155894
​http://trac.webkit.org/changeset/198679

12:50 PM Changeset in webkit [198685] by matthew_hanson@apple.com
  • 3 edits
    2 adds in branches/safari-601.1.46-branch

Merge r197856. rdar://problem/25152411

12:32 PM Changeset in webkit [198684] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

Data Detection creates multiple links even when the detected content is within the same node.
​https://bugs.webkit.org/show_bug.cgi?id=155860
rdar://problem/25319579

Reviewed by Tim Horton.

If the detected content spans over multiple query fragments,
we need to check if consecutive fragments are all within the
same node. This way we can avoid creating multiple ranges and
consequntly more links.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

12:25 PM Changeset in webkit [198683] by hyatt@apple.com
  • 6 edits
    6 adds in trunk

Implement the allow-end value of the hanging-punctuation CSS property.
​https://bugs.webkit.org/show_bug.cgi?id=104996

Reviewed by Simon Fraser.

Source/WebCore:

Added new tests in fast/text.

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::constructLine):
Fix a bug where empty RenderInlines were incorrectly excluding their end borders if
they occurred at the end of a line. Needed to adequately test allow-end and empty
inline borders.

  • rendering/RenderText.cpp:

(WebCore::RenderText::isHangableStopOrComma):
Helper function that identifies the hangable stops and commas.

  • rendering/RenderText.h:

Add new isHangableStopOrComma function to RenderText.

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::lineBreak):
(WebCore::BreakingContext::lineWidth):
(WebCore::BreakingContext::atEnd):
(WebCore::BreakingContext::fitsOnLineOrHangsAtEnd):
(WebCore::BreakingContext::clearLineBreakIfFitsOnLine):
(WebCore::BreakingContext::commitLineBreakAtCurrentWidth):
(WebCore::BreakingContext::handleBR):
(WebCore::BreakingContext::handleEmptyInline):
(WebCore::BreakingContext::handleReplaced):
(WebCore::tryHyphenating):
(WebCore::BreakingContext::computeAdditionalBetweenWordsWidth):
(WebCore::BreakingContext::handleText):
(WebCore::BreakingContext::commitAndUpdateLineBreakIfNeeded):
Modified breaking rules to handle allow-end. The basic idea is to see if you can
fit without the comma and only hang if you do, and if nothing else gets added to the
line after the comma. This involves tracking a new state, m_hangsAtEnd, that can
be set/cleared while iterating over the objects that will end up on the line.

LayoutTests:

  • fast/text/hanging-punctuation-allow-end-basic-expected.html: Added.
  • fast/text/hanging-punctuation-allow-end-basic.html: Added.
  • fast/text/hanging-punctuation-allow-end-expected.html: Added.
  • fast/text/hanging-punctuation-allow-end-inlines-expected.html: Added.
  • fast/text/hanging-punctuation-allow-end-inlines.html: Added.
  • fast/text/hanging-punctuation-allow-end.html: Added.
11:44 AM Changeset in webkit [198682] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

Add WebKitSystemInterface for iOS 9.3
​https://bugs.webkit.org/show_bug.cgi?id=155893

Rubber-stamped by Alexey Proskuryakov.

Tools:

  • Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

  • libWebKitSystemInterfaceIOSDevice9.3.a: Added.
  • libWebKitSystemInterfaceIOSSimulator9.3.a: Added.
11:42 AM Changeset in webkit [198681] by dbates@webkit.org
  • 2 edits in trunk

REGRESSION (r197358): WebKitSystemInterface.h copied into directory named "--llvm"
​https://bugs.webkit.org/show_bug.cgi?id=155838

Reviewed by Alexey Proskuryakov.

Do not pass command line flag --llvm when calling script copy-webkitlibraries-to-product-directory
to avoid copying the WebKitSystemInterface libraries to an incorrect location. The --llvm flag was
removed from copy-webkitlibraries-to-product-directory in <​http://trac.webkit.org/changeset/197358>.

  • WebKit.xcworkspace/xcshareddata/xcschemes/All Source.xcscheme:
11:42 AM Changeset in webkit [198680] by ggaren@apple.com
  • 2 edits in trunk/Source/bmalloc

bmalloc: stress_aligned fails when allocating a zero-sized object with XLarge alignment
​https://bugs.webkit.org/show_bug.cgi?id=155896

Reviewed by Andreas Kling.

We normally filter zero-sized allocations into small allocations, but
a zero-sized allocation can sneak through if it requires sufficiently
large alignment.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::tryAllocateXLarge): Set a floor on allocation size to
catch zero-sized allocations.

11:32 AM Changeset in webkit [198679] by ggaren@apple.com
  • 15 edits
    1 move
    1 delete in trunk/Source/bmalloc

bmalloc: Renamed LargeChunk => Chunk
​https://bugs.webkit.org/show_bug.cgi?id=155894

Reviewed by Michael Saboff.

A Chunk can contain both small and large objects now.

  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::allocate):

  • bmalloc/BoundaryTag.h:

(bmalloc::BoundaryTag::isFree):

  • bmalloc/Chunk.h: Copied from Source/bmalloc/bmalloc/LargeChunk.h.

(bmalloc::Chunk::pages):
(bmalloc::Chunk::begin):
(bmalloc::Chunk::end):
(bmalloc::Chunk::Chunk):
(bmalloc::Chunk::get):
(bmalloc::Chunk::beginTag):
(bmalloc::Chunk::endTag):
(bmalloc::Chunk::offset):
(bmalloc::Chunk::object):
(bmalloc::Chunk::page):
(bmalloc::Chunk::line):
(bmalloc::SmallLine::begin):
(bmalloc::SmallPage::begin):
(bmalloc::SmallPage::end):
(bmalloc::Object::Object):
(bmalloc::Object::begin):
(bmalloc::LargeChunk::pages): Deleted.
(bmalloc::LargeChunk::begin): Deleted.
(bmalloc::LargeChunk::end): Deleted.
(bmalloc::LargeChunk::LargeChunk): Deleted.
(bmalloc::LargeChunk::get): Deleted.
(bmalloc::LargeChunk::beginTag): Deleted.
(bmalloc::LargeChunk::endTag): Deleted.
(bmalloc::LargeChunk::offset): Deleted.
(bmalloc::LargeChunk::object): Deleted.
(bmalloc::LargeChunk::page): Deleted.
(bmalloc::LargeChunk::line): Deleted.

  • bmalloc/Deallocator.cpp:
  • bmalloc/FreeList.cpp:
  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateLarge):

  • bmalloc/LargeChunk.h: Removed.
  • bmalloc/LargeObject.h:

(bmalloc::LargeObject::LargeObject):
(bmalloc::LargeObject::merge):
(bmalloc::LargeObject::split):

  • bmalloc/Object.h:

(bmalloc::Object::chunk):

  • bmalloc/ObjectType.cpp:
  • bmalloc/Sizes.h:
  • bmalloc/SmallAllocator.h: Removed.
  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::VMHeap):
(bmalloc::VMHeap::allocateChunk):
(bmalloc::VMHeap::allocateLargeChunk): Deleted.

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateLargeObject):
(bmalloc::VMHeap::deallocateLargeObject):

  • bmalloc/Zone.cpp:

(bmalloc::enumerator):

  • bmalloc/Zone.h:

(bmalloc::Zone::chunks):
(bmalloc::Zone::addChunk):
(bmalloc::Zone::largeChunks): Deleted.
(bmalloc::Zone::addLargeChunk): Deleted.

11:18 AM Changeset in webkit [198678] by BJ Burg
  • 30 edits in trunk/Source

Web Inspector: protocol generator should prefix C++ filenames with the protocol group
​https://bugs.webkit.org/show_bug.cgi?id=155859
<rdar://problem/25349859>

Reviewed by Alex Christensen and Joseph Pecoraro.

Source/JavaScriptCore:

Like for generated Objective-C files, we should use the 'protocol group' name
as the prefix for generated C++ files so that headers from different protocol
groups have unambiguous names.

  • inspector/scripts/codegen/cpp_generator.py:

(CppGenerator):
(CppGenerator.init):
(CppGenerator.protocol_name):
Make all C++ code generators extend the CppGenerator python class and use the
protocol_name() instance method. This matches a recent change to the ObjC generator.

  • inspector/scripts/codegen/cpp_generator_templates.py:

(CppGeneratorTemplates):
Drive-by cleanup to use #pragma once instead of header guards.

  • inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py:

(CppAlternateBackendDispatcherHeaderGenerator):
(CppAlternateBackendDispatcherHeaderGenerator.init):
(CppAlternateBackendDispatcherHeaderGenerator.output_filename):
(CppAlternateBackendDispatcherHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:

(CppBackendDispatcherHeaderGenerator):
(CppBackendDispatcherHeaderGenerator.init):
(CppBackendDispatcherHeaderGenerator.output_filename):
(CppBackendDispatcherHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator):
(CppBackendDispatcherImplementationGenerator.init):
(CppBackendDispatcherImplementationGenerator.output_filename):
(CppBackendDispatcherImplementationGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py:

(CppFrontendDispatcherHeaderGenerator):
(CppFrontendDispatcherHeaderGenerator.init):
(CppFrontendDispatcherHeaderGenerator.output_filename):
(CppFrontendDispatcherHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:

(CppFrontendDispatcherImplementationGenerator):
(CppFrontendDispatcherImplementationGenerator.init):
(CppFrontendDispatcherImplementationGenerator.output_filename):
(CppFrontendDispatcherImplementationGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator):
(CppProtocolTypesHeaderGenerator.init):
(CppProtocolTypesHeaderGenerator.output_filename):
(CppProtocolTypesHeaderGenerator.generate_output):

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator):
(CppProtocolTypesImplementationGenerator.init):
(CppProtocolTypesImplementationGenerator.output_filename):
(CppProtocolTypesImplementationGenerator.generate_output):
Use the protocol_name() instance method to compute generated protocol file names.

  • inspector/scripts/codegen/models.py:

Explicitly set the 'protocol_group' for the Inspector protocol.

Rebaseline generator test results.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Source/WebKit2:

Adjust header include and build system paths.

  • CMakeLists.txt:

Revert the workaround introduced in r198659 since this change fixes the
underlying issue.

  • DerivedSources.make:
  • UIProcess/Automation/WebAutomationSession.cpp:
  • UIProcess/Automation/WebAutomationSession.h:
  • WebKit2.xcodeproj/project.pbxproj:
11:14 AM Changeset in webkit [198677] by achristensen@apple.com
  • 6 edits in trunk/Source/WebCore

Revert most of r198673.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
  • platform/graphics/mac/MediaTimeQTKit.h:
  • platform/graphics/mac/MediaTimeQTKit.mm:
  • platform/mac/WebVideoFullscreenController.mm:
11:07 AM Changeset in webkit [198676] by keith_miller@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

putByIndexBeyondVectorLengthWithoutAttributes should not crash if it can't ensureLength
​https://bugs.webkit.org/show_bug.cgi?id=155730

Reviewed by Saam Barati.

This patch makes ensureLength return a boolean indicating if it was able to set the length.
ensureLength also no longer sets the butterfly to null if the allocation of the butterfly
fails. All of ensureLengths callers including putByIndexBeyondVectorLengthWithoutAttributes
have been adapted to throw an out of memory error if ensureLength fails.

  • runtime/JSArray.cpp:

(JSC::JSArray::setLength):
(JSC::JSArray::unshiftCountWithAnyIndexingType):

  • runtime/JSObject.cpp:

(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::ensureLengthSlow):

  • runtime/JSObject.h:

(JSC::JSObject::ensureLength):

11:07 AM Changeset in webkit [198675] by ggaren@apple.com
  • 19 edits
    2 deletes in trunk/Source/bmalloc

bmalloc: small and large objects should share memory
​https://bugs.webkit.org/show_bug.cgi?id=155866

Reviewed by Andreas Kling.

This patch cuts our VM footprint in half. (VM footprint usually doesn't
matter, but on iOS there's an artificial VM limit around 700MB, and if
you hit it you jetsam / crash.)

It's also a step toward honoring the hardware page size at runtime,
which will reduce memory usage on iOS.

This patch is a small improvement in peak memory usage because it allows
small and large objects to recycle each other's memory. The tradeoff is
that we require more metadata, which causes more memory usage after
shrinking down from peak memory usage. In the end, we have some memory
wins and some losses, and a small win in the mean on our standard memory
benchmarks.

  • bmalloc.xcodeproj/project.pbxproj: Removed SuperChunk.
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::reallocate): Adopt a new Heap API for shrinking
large objects because it's a little more complicated than it used to be.

Don't check for equality in the XLarge case because we don't do it in
other cases, and it's unlikely that we'll be called for no reason.

  • bmalloc/BumpAllocator.h:

(bmalloc::BumpAllocator::allocate): Don't ASSERT isSmall because that's
an old concept from when small and large objects were in distinct memory
regions.

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::deallocateSlowCase): Large objects are not
segregated anymore.

(bmalloc::Deallocator::deallocateLarge): Deleted.

  • bmalloc/Deallocator.h:

(bmalloc::Deallocator::deallocateFastCase): Don't ASSERT isSmall(). See
above.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeSmallPage):
(bmalloc::Heap::scavengeSmallPages): New helpers for returning cached
small pages to the large object heap.

(bmalloc::Heap::allocateSmallPage): Allocate small pages from the large
object heap. This is how we accomplish sharing.

(bmalloc::Heap::deallocateSmallLine): Handle large objects since we can
encounter them on this code path now.

(bmalloc::Heap::splitAndAllocate): Fixed a bug where we would sometimes
not split even though we could.

Allocating a large object also requires ref'ing its small line so that
we can alias memory between small and large objects.

(bmalloc::Heap::allocateLarge): Return cached small pages before
allocating a large object that would fit in a cached small page. This
allows some large allocations to reuse small object memory.

(bmalloc::Heap::shrinkLarge): New helper.

(bmalloc::Heap::deallocateLarge): Deleted.

  • bmalloc/Heap.h:
  • bmalloc/LargeChunk.h:

(bmalloc::LargeChunk::pageBegin):
(bmalloc::LargeChunk::pageEnd):
(bmalloc::LargeChunk::lines):
(bmalloc::LargeChunk::pages):
(bmalloc::LargeChunk::begin):
(bmalloc::LargeChunk::end):
(bmalloc::LargeChunk::LargeChunk):
(bmalloc::LargeChunk::get):
(bmalloc::LargeChunk::endTag):
(bmalloc::LargeChunk::offset):
(bmalloc::LargeChunk::object):
(bmalloc::LargeChunk::page):
(bmalloc::LargeChunk::line):
(bmalloc::SmallLine::begin):
(bmalloc::SmallLine::end):
(bmalloc::SmallPage::begin):
(bmalloc::SmallPage::end):
(bmalloc::Object::Object):
(bmalloc::Object::begin):
(bmalloc::Object::pageBegin):
(bmalloc::Object::line):
(bmalloc::Object::page): I merged all the SmallChunk metadata and code
into LargeChunk. Now we use a single class to track both small and large
metadata, so we can share memory between small and large objects.

I'm going to rename this class to Chunk in a follow-up patch.

  • bmalloc/Object.h:

(bmalloc::Object::chunk): Updated for LargeChunk transition.

  • bmalloc/ObjectType.cpp:

(bmalloc::objectType):

  • bmalloc/ObjectType.h:

(bmalloc::isXLarge):
(bmalloc::isSmall): Deleted. The difference between small and large
objects is now stored in metadata and is not a property of their
virtual address range.

  • bmalloc/SegregatedFreeList.h: One more entry because we cover all of

what used to be the super chunk in a large chunk now.

  • bmalloc/Sizes.h: Removed bit masking helpers because we don't use

address masks to distinguish small vs large object type anymore.

  • bmalloc/SmallChunk.h: Removed.
  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage): Store object type per page because any
given page can be used for large objects or small objects.

  • bmalloc/SuperChunk.h: Removed.
  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::VMHeap):
(bmalloc::VMHeap::allocateLargeChunk):
(bmalloc::VMHeap::allocateSmallChunk): Deleted.
(bmalloc::VMHeap::allocateSuperChunk): Deleted.

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateLargeObject):
(bmalloc::VMHeap::deallocateLargeObject):
(bmalloc::VMHeap::allocateSmallPage): Deleted.
(bmalloc::VMHeap::deallocateSmallPage): Deleted. Removed super chunk and
small chunk support.

  • bmalloc/Zone.cpp:

(bmalloc::enumerator):

  • bmalloc/Zone.h:

(bmalloc::Zone::largeChunks):
(bmalloc::Zone::addLargeChunk):
(bmalloc::Zone::superChunks): Deleted.
(bmalloc::Zone::addSuperChunk): Deleted. Removed super chunk and
small chunk support.

10:37 AM Changeset in webkit [198674] by commit-queue@webkit.org
  • 7 edits
    2 adds in trunk

[JSC] implement String.prototype.padStart() and String.prototype.padEnd() proposal
​https://bugs.webkit.org/show_bug.cgi?id=155795

Patch by Caitlin Potter <​caitp@igalia.com> on 2016-03-25
Reviewed by Darin Adler.

Source/JavaScriptCore:

Implements ECMAScript proposal ​http://tc39.github.io/proposal-string-pad-start-end/
Currently at Stage 3.

  • runtime/JSString.h:
  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::repeatCharacter):
(JSC::repeatStringPattern):
(JSC::padString):
(JSC::stringProtoFuncPadEnd):
(JSC::stringProtoFuncPadStart):

  • tests/es6.yaml:
  • tests/es6/String.prototype_methods_String.prototype.padEnd.js: Added.
  • tests/es6/String.prototype_methods_String.prototype.padStart.js: Added.

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
10:24 AM Changeset in webkit [198673] by achristensen@apple.com
  • 8 edits in trunk/Source

Add a compile time flag for using QTKit
​https://bugs.webkit.org/show_bug.cgi?id=155868

Reviewed by Dan Bates.

Source/WebCore:

  • platform/graphics/MediaPlayer.cpp:

(WebCore::buildMediaEnginesVector):

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
  • platform/graphics/mac/MediaTimeQTKit.h:
  • platform/graphics/mac/MediaTimeQTKit.mm:
  • platform/mac/WebVideoFullscreenController.mm:

Source/WTF:

  • wtf/Platform.h:
10:12 AM Changeset in webkit [198672] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove unused lambda capture after r196984.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
resourceResponse is not used in the lambda.

10:00 AM Changeset in webkit [198671] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix Mac CMake build.

  • PlatformMac.cmake:
9:25 AM Changeset in webkit [198670] by commit-queue@webkit.org
  • 2 edits in trunk

Detect correct number of processors on windows
​https://bugs.webkit.org/show_bug.cgi?id=155884

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-25
Reviewed by Alex Christensen.

  • Tools/Scripts/run-jsc-stress-tests:
9:14 AM Changeset in webkit [198669] by Brent Fulgham
  • 5 edits in trunk

[Win] Improve CMake build performance
​https://bugs.webkit.org/show_bug.cgi?id=155871
<rdar://problem/24747822>

Reviewed by Alex Christensen.

.:

Add a flag to the PROCESS_ALLINONE_FILE macro so that it does not remove
the files contained in the passed all-in-one file, since this breaks
dependency checking and generation of the derived sources from the IDL.
Instead, include the header files in the project so that all files get
generated.

  • Source/cmake/WebKitMacros: Updated for 'DerivedSources.cpp' use case.

Source/WebCore:

Treat DerivedSources.cpp as an 'All-in-one' file. Pass a flag to the
PROCESS_ALLINONE_FILE macro so that it does not remove the contents of
the file, since this breaks dependency checking and generation of the
sources from the IDL files. Instead, include the header files in the
project so that all files get generated.

  • CMakeLists.txt: Updated for 'DerivedSources.cpp'
  • DerivedSources.cpp: Add some generated files that were missing.
9:05 AM Changeset in webkit [198668] by dbates@webkit.org
  • 2 edits in trunk/Tools

Use webkitdirs::determineXcodeSDK() instead of webkitdirs::willUseIOSDeviceSDK()
in copy-webkitlibraries-to-product-directory
​https://bugs.webkit.org/show_bug.cgi?id=155869

Reviewed by Alexey Proskuryakov.

It is sufficient and more direct to call webkitdirs::determineXcodeSDK() instead of
webkitdirs::willUseIOSDeviceSDK() to process the --sdk/--device/--ios-simulator command
line argument.

  • Scripts/copy-webkitlibraries-to-product-directory:
8:23 AM Changeset in webkit [198667] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Scrolling/selection is broken in Quick Open dialog resource tree
​https://bugs.webkit.org/show_bug.cgi?id=155877
<rdar://problem/25356149>

Reviewed by Timothy Hatcher.

Dialog and tree outline now use "display: flex", causing the height of the
tree outline to be based on the height of the dialog. Overflow scrolling
in the tree outline now has the expected behavior.

  • UserInterface/Views/OpenResourceDialog.css:

(.open-resource-dialog):
(.open-resource-dialog > .tree-outline):

7:47 AM Changeset in webkit [198666] by commit-queue@webkit.org
  • 6 edits in trunk

Turned on ENABLE_REQUEST_ANIMATION_FRAME by default for any port.
​https://bugs.webkit.org/show_bug.cgi?id=155882

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-25
Reviewed by Michael Catanzaro.

It was already enabled in all trunk ports, and is required for
WebInspectorUI to work.

.:

  • Source/cmake/OptionsGTK.cmake: Removed duplication of default value.
  • Source/cmake/OptionsMac.cmake: Ditto.
  • Source/cmake/WebKitFeatures.cmake: Turned

ENABLE_REQUEST_ANIMATION_FRAME ON.

Tools:

  • Scripts/webkitperl/FeatureList.pm:
7:19 AM Changeset in webkit [198665] by youenn.fablet@crf.canon.fr
  • 32 edits
    12 adds in trunk

[Fetch API] Add basic loading of resources
​https://bugs.webkit.org/show_bug.cgi?id=155637

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebasing test expectations.
Updating scheme-blob.js to ensure generated test names are stable run after run.

  • web-platform-tests/fetch/api/basic/accept-header-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt:
  • web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-about-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob.js:

(checkFetchResponse): Deleted.
(checkKoUrl): Deleted.

  • web-platform-tests/fetch/api/basic/scheme-data-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
  • web-platform-tests/fetch/api/basic/stream-response-expected.txt:

Source/WebCore:

Adding support for basic fetch for Window (no support for Worker yet).
A FetchResponse object is created for every fetch task.
But it will only be exposed to JS at promise fulfillment time, i.e. once initial response headers are retrieved.

Updating Blob resource handle to add Content-Type and Content-Length header and notifying of error in case of erroneous HTTP method.

Fetch is limited to same origin requests currently due to some WPT tests that would timeout otherwise.

Tests: http/tests/fetch/closing-while-fetching.html

http/tests/fetch/get-response-body-while-loading.html

Also covered by rebased tests.

  • Modules/fetch/DOMWindowFetch.cpp: Creating a FetchResponse to start fetching.

(WebCore::DOMWindowFetch::fetch):

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

(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeArrayBuffer): Handling of body promises in case of data stored as a buffer.
(WebCore::FetchBody::consumeText): Passing the promise as a reference.
(WebCore::blobFromArrayBuffer): Helper routine.
(WebCore::FetchBody::fulfillTextPromise): Helper routine.
(WebCore::FetchBody::loadedAsArrayBuffer): Updated to handle storing of data as a buffer.
(WebCore::FetchBody::loadedAsText):
(WebCore::FetchBody::bodyForInternalRequest): Helper routine to generate the request body data to be sent as part of the fetch request.
(WebCore::FetchBody::extractFromText):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::loadingBody):
(WebCore::FetchBody::FetchBody):

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadBlob): Updated to cope with the change that FetchLoader::start does not return a boolean anymore
but will directly call failure callbacks.
(WebCore::FetchBodyOwner::loadedBlobAsText): Moving it closer to other blob loading routines.
(WebCore::FetchBodyOwner::finishBlobLoading):

  • Modules/fetch/FetchBodyOwner.h:

(WebCore::FetchBodyOwner::body):
(WebCore::FetchBodyOwner::loadedBlobAsArrayBuffer):

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::FetchHeaders::fill):
(WebCore::FetchHeaders::filterAndFill): Helper routine to fill headers from a HTTPHeaderMap after being filtered.

  • Modules/fetch/FetchHeaders.h:

(WebCore::FetchHeaders::internalHeaders):

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):
(WebCore::FetchLoader::didFailRedirectCheck):

  • Modules/fetch/FetchLoader.h:
  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::internalRequest): Routine used to create the ResourceRequest transmitted to ThreadableLoader.

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

(WebCore::FetchResponse::fetch): Start fetching by creating a FetchLoader based on passed request.
(WebCore::FetchResponse::BodyLoader::didSucceed): FetchLoader callback.
(WebCore::FetchResponse::BodyLoader::didFail): Ditto.
(WebCore::FetchResponse::BodyLoader::BodyLoader): Ditto.
(WebCore::FetchResponse::BodyLoader::didReceiveResponse): Ditto.
(WebCore::FetchResponse::BodyLoader::didFinishLoadingAsArrayBuffer): Ditto.
(WebCore::FetchResponse::BodyLoader::start): Starting fetch loader.
(WebCore::FetchResponse::BodyLoader::stop): Stopping fetch loader.
(WebCore::FetchResponse::stop): Stop loader if any.

  • Modules/fetch/FetchResponse.h:
  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::doStart: Notifying the loader with an error if verb is not GET.
(WebCore::BlobResourceHandle::notifyResponseOnSuccess): Adding support for Content-Type and Content-Lenth headers.
(WebCore::BlobResourceHandle::createAsync): Removing GET verb check.

LayoutTests:

  • TestExpectations: Removed flaky test expectations.
  • http/tests/fetch/closing-while-fetching-expected.txt: Added.
  • http/tests/fetch/closing-while-fetching.html: Added.
  • http/tests/fetch/get-response-body-while-loading-expected.txt: Added.
  • http/tests/fetch/get-response-body-while-loading.html: Added.
  • http/tests/resources/download-json-with-delay.php: Added.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt: Added.
7:08 AM Changeset in webkit [198664] by commit-queue@webkit.org
  • 1 edit
    2 deletes in trunk/Source/WebCore

Removed leftovers of WCHAR_UNICODE code path after r162782.
​https://bugs.webkit.org/show_bug.cgi?id=155881

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-25
Reviewed by Csaba Osztrogonác.

No new tests needed.

  • platform/text/TextEncodingDetectorNone.cpp: Removed.
  • platform/text/wchar/TextBreakIteratorWchar.cpp: Removed.
7:08 AM Changeset in webkit [198663] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening.

Mark new failing tests with existing or new bug.

  • platform/efl/TestExpectations:
2:42 AM Changeset in webkit [198662] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening.

Mark some blink imported tests to timeout, imageonlyfailure.
Besides some AX tests need to have new baseline, which have been tested since r197616.

  • platform/efl/TestExpectations:

Mar 24, 2016:

11:46 PM Changeset in webkit [198661] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening. Mark crash tests in proper category.

  • platform/efl/TestExpectations:
10:14 PM Changeset in webkit [198660] by commit-queue@webkit.org
  • 2 edits in trunk

Determine architecture for running jsc stress tests on windows
​https://bugs.webkit.org/show_bug.cgi?id=155840

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-24
Reviewed by Alex Christensen.

  • Tools/Scripts/run-jsc-stress-tests:
8:59 PM Changeset in webkit [198659] by achristensen@apple.com
  • 7 edits in trunk/Source

Fix Mac CMake build.

Source/JavaScriptCore:

  • PlatformMac.cmake:

Link to Security framework.

Source/WebCore:

  • PlatformMac.cmake:

Add new file and directory.

Source/WebKit2:

  • CMakeLists.txt:

Temporarily add DERIVED_SOURCES_JAVASCRIPTCORE_DIR after DERIVED_SOURCES_WEBCORE_DIR,
because both contain a unique header named InspectorBackendDispatchers.h and this include
order includes the correct one for WebKit2 first.

  • PlatformMac.cmake:

Add new files. Optionally link to AVFAudio.

7:24 PM Changeset in webkit [198658] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r198500.

Roll back in r197552 as it did not seem to cause a PLT
regression after all

Reverted changeset:

"Unreviewed, rolling out r197552."
​https://bugs.webkit.org/show_bug.cgi?id=154986
​http://trac.webkit.org/changeset/198500

7:14 PM Changeset in webkit [198657] by dbates@webkit.org
  • 17 edits
    3 adds in trunk

CSP: Move logic for reporting a violation from ContentSecurityPolicyDirectiveList to ContentSecurityPolicy
​https://bugs.webkit.org/show_bug.cgi?id=155842
<rdar://problem/25340377>
And
​https://bugs.webkit.org/show_bug.cgi?id=155133

Reviewed by Brent Fulgham.

Source/WebCore:

Towards associating source file, line-, and column- numbers (​https://bugs.webkit.org/show_bug.cgi?id=114317)
with a CSP console message we should move the logic for logging the console message/reporting the violation
from class ContentSecurityPolicyDirectiveList to class ContentSecurityPolicy so that it is closer to the
script execution context that can access such information.

The responsibilities of the class ContentSecurityPolicyDirectiveList have been reduced. It is responsible
for parsing a string representation of the Content Security Policy and providing functions to determine
the violated directive (if any) for a given source (e.g. URL). ContentSecurityPolicyDirectiveList no longer
takes responsibility logging a console message or sending a violation report (if applicable). Falling out
from this decrease in responsibility is the removal of enum ContentSecurityPolicyDirectiveList::ReportingStatus
and the need to pass a enumerator of this enum to each ContentSecurityPolicyDirectiveList to suppress
the sending of a violation report. The caller of ContentSecurityPolicyDirectiveList is responsible for
making this determination.

With the exception of a change to the error message for an inline event handler violation, there are no
other functional changes. When an inline event handler violation occurs we will emit either:

Refused to execute a script for an inline event handler because 'unsafe-inline' does not appear in the
script-src directive of the Content Security Policy.

Or:

Refused to execute a script for an inline event handler because 'unsafe-inline' appears in neither the
script-src directive nor the default-src directive of the Content Security Policy.

depending on whether the Content Security Policy contains a script-src directive or not.

  • CMakeLists.txt: Add files ContentSecurityPolicyDirective.cpp and ContentSecurityPolicyDirectiveNames.cpp.
  • WebCore.xcodeproj/project.pbxproj: Add files ContentSecurityPolicyDirective.cpp and ContentSecurityPolicyDirectiveNames.{cpp, h}.
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::consoleMessageForViolation): Moved from file ContentSecurityPolicyDirectiveList.cpp and
incorporates the functionality of ContentSecurityPolicyDirectiveList::reportViolation(). Modified
to take a reference to the violated directive (ContentSecurityPolicyDirective object) and removed
the boolean parameter violatesDefaultSrc as we can deduce this from the violated directive.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Modified to call ContentSecurityPolicyDirectiveList::violatedDirectiveForUnsafeEval().
(WebCore::ContentSecurityPolicy::foundHashOfContentInAllPolicies): Renamed; Formerly named allPoliciesAllowHashFromContent.
Modified to early return if either no algorithms are given or the specified content to hash is
the empty string.
(WebCore::ContentSecurityPolicy::allowJavaScriptURLs): Moved logic for reporting a violation from
ContentSecurityPolicyDirectiveList member function of the same name to here.
(WebCore::ContentSecurityPolicy::allowInlineEventHandlers): Moved logic for reporting a violation from
ContentSecurityPolicyDirectiveList member function of the same name to here. Additionally, changed the
error message text to better describe the reason for the violation.
(WebCore::ContentSecurityPolicy::allowScriptWithNonce): Ditto.
(WebCore::ContentSecurityPolicy::allowStyleWithNonce): Ditto.
(WebCore::ContentSecurityPolicy::allowInlineScript): Ditto.
(WebCore::ContentSecurityPolicy::allowInlineStyle): Ditto.
(WebCore::ContentSecurityPolicy::allowEval): Ditto.
(WebCore::ContentSecurityPolicy::allowFrameAncestors): Ditto.
(WebCore::ContentSecurityPolicy::allowPluginType): Ditto.
(WebCore::ContentSecurityPolicy::allowScriptFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowObjectFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildFrameFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildContextFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowImageFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowStyleFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFontFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowMediaFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowConnectToSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFormAction): Ditto.
(WebCore::ContentSecurityPolicy::allowBaseURI): Ditto.
(WebCore::ContentSecurityPolicy::reportViolation): Simplified signature by having it take a reference to
a ContentSecurityPolicyDirective object. Also split functionality into two variants: one variant takes a
pointer to a JSC::ExecState, one variant takes a source file, and line and column positions.
(WebCore::ContentSecurityPolicy::allPoliciesAllowHashFromContent): Deleted.
(WebCore::ContentSecurityPolicy::gatherReportURIs): Deleted.

  • page/csp/ContentSecurityPolicy.h:

(WebCore::ContentSecurityPolicy::violatedDirectiveInAnyPolicy): Formerly named allPoliciesAllow. Modified
to return the violated directive.
(WebCore::ContentSecurityPolicy::allPoliciesAllow): Deleted.

  • page/csp/ContentSecurityPolicyDirective.cpp: Added.
  • page/csp/ContentSecurityPolicyDirective.h: Added.

(WebCore::ContentSecurityPolicyDirective::ContentSecurityPolicyDirective): Modified to take a reference to the
directive list that contains this directive instead of pointer to a ContentSecurityPolicy object.
(WebCore::ContentSecurityPolicyDirective::name): Added.
(WebCore::ContentSecurityPolicyDirective::directiveList): Added.
(WebCore::ContentSecurityPolicyDirective::isDefaultSrc): Added.
(WebCore::ContentSecurityPolicyDirective::policy): Deleted.

  • page/csp/ContentSecurityPolicyDirectiveList.cpp: Remove unused header <wtf/Optional.h>. Also remove header wtf/text/StringBuilder.h

as the function that made use of it, consoleMessageForViolation, was moved to file ContentSecurityPolicy.cpp.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForUnsafeEval): Formerly named allowEval.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForUnsafeInlineScript): Formerly named allowInlineScript.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForUnsafeInlineStyle): Formerly named allowInlineStyle.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForScriptHash): Formerly named allowInlineScriptWithHash.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForStyleHash): Formerly named allowInlineStyleWithHash.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForScriptNonce): Formerly named allowScriptWithNonce.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForStyleNonce): Formerly named allowStyleWithNonce.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForBaseURI): Formerly named allowBaseURI.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForChildContext): Formerly named allowChildContextFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForConnectSource): Formerly named allowConnectToSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFont): Formerly named allowFontFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFormAction): Formerly named allowFormAction.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrame): Formerly named allowChildFrameFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForFrameAncestor): Formerly named allowFrameAncestors.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForImage): Formerly named allowImageFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForMedia): Formerly named allowMediaFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForObjectSource): Formerly named allowObjectFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForPluginType): Formerly named allowPluginType.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForScript): Formerly named allowScriptFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::violatedDirectiveForStyle): Formerly named allowStyleFromSource.
(WebCore::ContentSecurityPolicyDirectiveList::parse): Update code to make use of ContentSecurityPolicyDirectiveNames constants.
(WebCore::ContentSecurityPolicyDirectiveList::setCSPDirective): Pass |this| instead of the ContentSecurityPolicy object.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Update code to make use of ContentSecurityPolicyDirectiveNames constants.
(WebCore::isExperimentalDirectiveName): Deleted.
(WebCore::isCSPDirectiveName): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::reportViolation): Deleted.
(WebCore::consoleMessageForViolation): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowJavaScriptURLs): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineEventHandlers): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineScript): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineScriptWithHash): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowScriptWithNonce): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineStyle): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineStyleWithHash): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowStyleWithNonce): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowEval): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowPluginType): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowScriptFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowObjectFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildContextFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildFrameFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowImageFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowStyleFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowFontFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowMediaFromSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowConnectToSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowFormAction): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowBaseURI): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::allowFrameAncestors): Deleted.

  • page/csp/ContentSecurityPolicyDirectiveList.h:

(WebCore::ContentSecurityPolicyDirectiveList::defaultSrc): Added.
(WebCore::ContentSecurityPolicyDirectiveList::policy): Added. Also added FIXME comment to remove this function. This
function is only used by ContentSecurityPolicyMediaListDirective so that it can log a console message on a parsing error.
(WebCore::ContentSecurityPolicyDirectiveList::denyIfEnforcingPolicy): Deleted.

  • page/csp/ContentSecurityPolicyDirectiveNames.cpp: Added.
  • page/csp/ContentSecurityPolicyDirectiveNames.h: Added.
  • page/csp/ContentSecurityPolicyMediaListDirective.cpp:

(WebCore::ContentSecurityPolicyMediaListDirective::ContentSecurityPolicyMediaListDirective): Modified to take a reference to the
directive list that contains this directive instead of pointer to a ContentSecurityPolicy object.
(WebCore::ContentSecurityPolicyMediaListDirective::parse): Updated code to use ContentSecurityPolicyDirectiveList::policy() instead
of ContentSecurityPolicyDirective::policy() as the latter was removed. Ideally this class should not need to use the ContentSecurityPolicy
object to log a console message.

  • page/csp/ContentSecurityPolicyMediaListDirective.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::isExperimentalDirectiveName): Moved from file ContentSecurityPolicyDirectiveList.cpp because this function is only used
in this file.
(WebCore::isCSPDirectiveName): Ditto.
(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar): Update code to make use of ContentSecurityPolicyDirectiveNames constants.

  • page/csp/ContentSecurityPolicySourceListDirective.cpp:

(WebCore::ContentSecurityPolicySourceListDirective::ContentSecurityPolicySourceListDirective): Modified to take a reference to
the directive list that contains this directive instead of pointer to a ContentSecurityPolicy object.

  • page/csp/ContentSecurityPolicySourceListDirective.h:

LayoutTests:

Update expected results to reflect new error message text for an inline event handler violation.

  • http/tests/security/contentSecurityPolicy/inline-event-handler-blocked-after-injecting-meta-expected.txt:
  • http/tests/security/contentSecurityPolicy/inline-script-blocked-goofy-expected.txt:
  • http/tests/security/contentSecurityPolicy/script-src-none-inline-event-expected.txt:
7:03 PM Changeset in webkit [198656] by mmaxfield@apple.com
  • 7 edits in trunk/Source/WebCore

[OS X] Overflow:scroll scrollbars do not obey overlay/always-on system preference changes
​https://bugs.webkit.org/show_bug.cgi?id=155830

Reviewed by Simon Fraser.

When the scrollbar style changes, the available width of all ScrollableAreas change,
and therefore a relayout must occur.

Each ScrollableArea owns its own ScrollAnimator (if necessary). Upon creation, the
ScrollAnimator will start listening for changes to the system preference for
overlay / always-on scrollbars. When notified, the ScrollAnimator tells its owning
ScrollableArea that scrollbarStyleChanged().

For main-frame scrolling, FrameView overrides scrollbarStyleChanged and causes a
relayout. However, for overflow:scroll elements, no relayout is triggered. This
patch overrides availableContentSizeChanged() for RenderLayer (which is used for
overflow:scroll elements). This override triggers a relayout.

It also updates the mechanism in RenderBlock::recomputeLogicalWidth() to ensure that
a change in scrollbar size causes RenderBlockFlow::layoutBlock() to relayout its
children. This is appropriate because block child positioning is affected by
scrollbar size.

No new tests (for now). Presumably we could mock the message we receive when the
system preference is changed. However, I haven't implemented that yet.

  • rendering/RenderBlock.cpp: Rename setHasBorderOrPaddingLogicalWidthChanged().

(WebCore::RenderBlock::styleDidChange):
(WebCore::RenderBlock::recomputeLogicalWidth):

  • rendering/RenderBlock.h: Ditto.

(WebCore::RenderBlock::setShouldForceRelayoutChildren):
(WebCore::RenderBlock::shouldForceRelayoutChildren):

  • rendering/RenderElement.cpp: Ditto.

(WebCore::RenderElement::RenderElement):

  • rendering/RenderElement.h: Ditto.

(WebCore::RenderElement::setRenderBlockShouldForceRelayoutChildren):
(WebCore::RenderElement::renderBlockShouldForceRelayoutChildren):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::availableContentSizeChanged): Cause a relayout to occur.

  • rendering/RenderLayer.h:
6:13 PM Changeset in webkit [198655] by commit-queue@webkit.org
  • 75 edits in trunk/Source

Change NativeImagePtr for CG to be RetainPtr<CGImageRef>
​https://bugs.webkit.org/show_bug.cgi?id=155412

Patch by Said Abou-Hallawa <sabouhallawa@apple,com> on 2016-03-24
Reviewed by Darin Adler.

Source/WebCore:

Having NativeImagePtr as a raw pointer makes managing the life cycle of
the returned CGImageRef hard. A lot of work was done to ensure the CG
pointer is refcounted correctly. It was also not possible to move a
FrameData since calling the destructor was releasing the CGImageRef.

With this change, PassNativeImagePtr is not needed anymore. So all the
instance of PassNativeImagePtr can be replaced by NativeImagePtr.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::nativeImageForCurrentTime):

  • html/HTMLVideoElement.h: Replace PassNativeImagePtr with NativeImagePtr.
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawImage): Replace PassNativeImagePtr
with NativeImagePtr.

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::addImageToCache):

  • loader/cache/MemoryCache.h: Remove USE(CG) and CFRetain(image) since

this code can compile on all platforms. The image refcount will be
incremented when the image is assigned to FrameData.m_image in the
BitmapImage constructor.

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::synchronousNativeIconForPageURL):

  • loader/icon/IconDatabase.h:
  • loader/icon/IconDatabaseBase.h: Replace PassNativeImagePtr with NativeImagePtr.
  • platform/graphics/BitmapImage.cpp:

(WebCore::BitmapImage::haveFrameImageAtIndex):
(WebCore::BitmapImage::cacheFrame):
(WebCore::BitmapImage::ensureFrameIsCached):
(WebCore::BitmapImage::frameImageAtIndex):
(WebCore::BitmapImage::nativeImageForCurrentFrame):
(WebCore::BitmapImage::haveFrameAtIndex): Deleted.
(WebCore::BitmapImage::frameAtIndex): Deleted.
Replace PassNativeImagePtr with NativeImagePtr, m_frame with m_image and
*Frame* with *FrameImage*.

  • platform/graphics/BitmapImage.h:

(WebCore::FrameData::FrameData):
A BitmapImage can have one or more FrameData. A FrameData member can be
named for shortness as "frame", "m_frames", etc. A FrameData can have
zero or one NativeImagePtr. A NativeImagePtr can be named as "image",
"m_image", etc.

  • platform/graphics/GraphicsContext.h: Replace PassNativeImagePtr with

NativeImagePtr.

  • platform/graphics/GraphicsContext3D.h:
  • platform/graphics/Icon.h:

Change the members of type CGImageRef to be RetainPtr<CGImageRef>.

  • platform/graphics/Image.h:

(WebCore::Image::nativeImageForCurrentFrame):
(WebCore::Image::getNSImage):
(WebCore::Image::getTIFFRepresentation):
(WebCore::Image::getCGImageRef):
(WebCore::Image::getFirstCGImageRefOfSize):
(WebCore::Image::getCGImageArray):
(WebCore::Image::getGdkPixbuf):
(WebCore::Image::getEvasObject):

  • platform/graphics/ImageBuffer.h:
  • platform/graphics/ImageSource.cpp:

(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::createFrameAtIndex): Deleted.

  • platform/graphics/ImageSource.h:

Change 0 to nullptr, PassRefPtr to RefPtr and PassNativeImagePtr to
NativeImagePtr.

  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::nativeImageForCurrentTime):

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::nativeImageForCurrentTime):
Replace PassNativeImagePtr with NativeImagePtr.

  • platform/graphics/NativeImagePtr.h:

Make NativeImagePtr a smart pointer for CG. Get rid of PassNativeImagePtr
since NativeImagePtr is now a smart pointer on all platforms.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::nativeImageForCurrentTime):
Replace PassNativeImagePtr with NativeImagePtr.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::setContentsToImage):
Since Image::nativeImageForCurrentFrame() returns a RetainPtr, move it
to m_pendingContentsImage to remove the refcount churn.

  • platform/graphics/cairo/BitmapImageCairo.cpp:

(WebCore::BitmapImage::BitmapImage):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::checkForSolidColor):
(WebCore::FrameData::clear):
Replace m_frame with m_image and frame* with frameImage*.

  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::copyCairoImageSurface):

  • platform/graphics/cairo/CairoUtilities.h:

Replace PassRefPtr with RefPtr.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
Replace *Frame* with *FrameImage*.

  • platform/graphics/cairo/GraphicsContextCairo.cpp:

(WebCore::GraphicsContext::drawNativeImage):
Replace PassNativeImagePtr with NativeImagePtr.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::copyImage): Create a new NativeImagePtr so it can
be moved to the BitmapImage::create().
(WebCore::copySurfaceToImageAndAdjustRect):
(WebCore::getImageData):
(WebCore::ImageBuffer::getUnmultipliedImageData):
(WebCore::ImageBuffer::getPremultipliedImageData):
Replace PassRefPtr with RefPtr.

  • platform/graphics/cg/BitmapImageCG.cpp:

(WebCore::FrameData::clear): No need to call CGImageRelease(). Just assign
m_image to nullptr and CGImageRelease() will be called from the RetainPtr
destructor.

(WebCore::BitmapImage::BitmapImage):
(WebCore::BitmapImage::checkForSolidColor):
(WebCore::BitmapImage::getCGImageRef):
(WebCore::BitmapImage::getFirstCGImageRefOfSize):
(WebCore::BitmapImage::getCGImageArray):
(WebCore::BitmapImage::draw):
(WebCore::BitmapImage::copyUnscaledFrameImageAtIndex):
(WebCore::BitmapImage::copyUnscaledFrameAtIndex): Deleted.
Replace CGImageRef with RetainPtr<CGImageRef>. Replace *Frame* with
*FrameImage*.

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
(WebCore::GraphicsContext3D::paintToCanvas):
Use m_cgImage.get() instead of m_cgImage when calling CG functions.

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawNativeImage):
(WebCore::GraphicsContext::drawPattern):
Replace PassNativeImagePtr with NativeImagePtr. Get the raw CGImageRef
from the NativeImagePtr when calling the CG functions.

  • platform/graphics/cg/ImageBufferCG.cpp:

(WebCore::createBitmapImageAfterScalingIfNeeded): Move the image argument
when calling BitmapImage::create().

(WebCore::ImageBuffer::getUnmultipliedImageData):
(WebCore::ImageBuffer::getPremultipliedImageData):
Replace PassRefPtr with RefPtr.

  • platform/graphics/cg/ImageSourceCG.cpp:

(WebCore::ImageSource::createFrameImageAtIndex):
(WebCore::ImageSource::createFrameAtIndex): Deleted.
Rename the function and simplify the code since the local variable
and the return value are both smart pointers.

  • platform/graphics/displaylists/DisplayListItems.cpp:

(WebCore::DisplayList::DrawNativeImage::DrawNativeImage):
(WebCore::DisplayList::DrawNativeImage::apply):

  • platform/graphics/displaylists/DisplayListItems.h:

(WebCore::DisplayList::DrawNativeImage::create):

  • platform/graphics/displaylists/DisplayListRecorder.cpp:

(WebCore::DisplayList::Recorder::drawNativeImage):

  • platform/graphics/displaylists/DisplayListRecorder.h:

Replace PassNativeImagePtr with NativeImagePtr and use constant reference.

  • platform/graphics/efl/GraphicsContext3DEfl.cpp:

(WebCore::GraphicsContext3D::ImageExtractor::extractImage):
Call a function with its new name.

  • platform/graphics/efl/IconEfl.cpp:

(WebCore::Icon::createIconForFiles):

  • platform/graphics/gstreamer/ImageGStreamerCairo.cpp:

(ImageGStreamer::ImageGStreamer):

  • platform/graphics/gtk/IconGtk.cpp:

(WebCore::Icon::createIconForFiles):

  • platform/graphics/ios/IconIOS.mm:

(WebCore::Icon::Icon):
(WebCore::Icon::createIconForFiles):
(WebCore::Icon::createIconForImage):

  • platform/graphics/mac/IconMac.mm:

(WebCore::Icon::createIconForFiles):
Use smart pointers RetainPtr<CGImageRef> instead of raw pointers CGImageRef.
And change PassRefPtr to RefPtr and 0 to nullptr.

  • platform/graphics/mac/ImageMac.mm:

(WebCore::BitmapImage::getTIFFRepresentation): Get the raw pointer from the
returned smart pointer.

  • platform/graphics/texmap/coordinated/CoordinatedSurface.cpp:

(WebCore::CoordinatedSurface::create):

  • platform/graphics/texmap/coordinated/CoordinatedSurface.h:

Replace PassRefPtr with RefPtr.

  • platform/graphics/win/IconWin.cpp:

(WebCore::Icon::createIconForFiles): Change PassRefPtr to RefPtr.

  • platform/graphics/win/ImageCGWin.cpp:

(WebCore::BitmapImage::create): Replace PassRefPtr with RefPtr.
(WebCore::BitmapImage::drawFrameMatchingSourceSize): Call the function
with its new name and get the raw pointer from the returned smart pointer.

  • platform/graphics/win/ImageCairoWin.cpp:

(WebCore::BitmapImage::create): Replace PassRefPtr with ReftPtr and use
the move semantics for passing the argument to BitmapImage::create().
(WebCore::BitmapImage::drawFrameMatchingSourceSize): Call the function
with its new name.

  • platform/image-decoders/ImageDecoder.h:
  • platform/image-decoders/cairo/ImageDecoderCairo.cpp:

(WebCore::ImageFrame::asNewNativeImage):

  • platform/win/DragImageCGWin.cpp:

(WebCore::createDragImageFromImage):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImageForCurrentFrame):

  • svg/graphics/SVGImage.h:
  • svg/graphics/SVGImageForContainer.cpp:

(WebCore::SVGImageForContainer::nativeImageForCurrentFrame):

  • svg/graphics/SVGImageForContainer.h:

Replace PassNativeImagePtr with NativeImagePtr.

Source/WebKit/mac:

  • Misc/WebCache.mm:

(+[WebCache addImageToCache:forURL:forFrame:]):
WebCore::MemoryCache() is taking an rvalue NativeImagePtr. We need to create
NativeImagePtr from the image raw pointer when calling this function.

Source/WebKit/win:

  • Plugins/PluginView.h:
  • Plugins/PluginViewWin.cpp:

(WebCore::PluginView::snapshot):
Replace PassRefPtr with RefPtr.

Source/WebKit2:

  • Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp:

(WebKit::WebCoordinatedSurface::createWithSurface):
(WebKit::WebCoordinatedSurface::create):
(WebKit::WebCoordinatedSurface::WebCoordinatedSurface):
(WebKit::WebCoordinatedSurface::copyToTexture):

  • Shared/CoordinatedGraphics/WebCoordinatedSurface.h:
  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::create):
(WebKit::ShareableBitmap::createShareable):
(WebKit::ShareableBitmap::ShareableBitmap):

  • Shared/ShareableBitmap.h:

Replace PassRefPtr with RefPtr and use WTFMove() instead of RefPtr::release()
when passing the RefPtr.

  • Shared/cairo/ShareableBitmapCairo.cpp:

(WebKit::createSurfaceFromData):
(WebKit::ShareableBitmap::createCairoSurface):
Replace PassRefPtr with RefPtr.

(WebKit::ShareableBitmap::createImage):

  • Shared/cg/ShareableBitmapCG.cpp:

(WebKit::ShareableBitmap::createImage):
Replace PassRefPtr with RefPtr and use the move semantics when calling
BitmapImage::create().

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.cpp:

(WebKit::CoordinatedLayerTreeHost::createCoordinatedSurface):

  • WebProcess/WebPage/CoordinatedGraphics/CoordinatedLayerTreeHost.h:
  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.cpp:

(WebKit::ThreadedCoordinatedLayerTreeHost::createCoordinatedSurface):

  • WebProcess/WebPage/CoordinatedGraphics/ThreadedCoordinatedLayerTreeHost.h:

Replace PassRefPtr with RefPtr

5:52 PM Changeset in webkit [198654] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

Safari Crashes if audio.src is changed while connected to AudioAnalyserNode
​https://bugs.webkit.org/show_bug.cgi?id=153593
<rdar://problem/23648082>

Reviewed by Eric Carlson.

m_ringBuffer is accessed on the high-priority WebAudio thread after it has been cleared (a
null-deref). Protect against unsafe access on multiple threads of a non-refcounted object by
a simple try_lock.

Additionally, limit the use of variables in use by both the separate WebAudio thread method
(provideInput()) and AVAudioMix thread method (process()) where possible, and convert to
std::atomic<> where ivars must be acessed by both threads. m_writeCount is entirely superfluous,
as it is a synonym for the endTime returned by m_ringBuffer->getCurrentFrameBounds().

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::provideInput):
(WebCore::AudioSourceProviderAVFObjC::prepare):
(WebCore::AudioSourceProviderAVFObjC::unprepare):
(WebCore::AudioSourceProviderAVFObjC::process):

5:36 PM WebInspectorDebugging edited by Joseph Pecoraro
Added WebKitDebug prefix to log to system console. (diff)
5:31 PM WebInspectorDebugging edited by Joseph Pecoraro
Added new WebKitDebug prefix for local inspector debugging. (diff)
4:56 PM Changeset in webkit [198653] by enrica@apple.com
  • 8 edits in trunk/Source

Adopt new SPI from DataDetectorsCore to decide link behavior.
​https://bugs.webkit.org/show_bug.cgi?id=155780
rdar://problem/25303631

Reviewed by Sam Weinig.

Source/WebCore:

isDataDetectorLink and shouldCancelDefaultAction now
use the SPI provided by DataDetectorsCore to decide
what is the link behavior when the user taps on it.

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::detectItemAtPositionWithRange):
(WebCore::DataDetection::isDataDetectorLink):
(WebCore::DataDetection::requiresExtendedContext):
(WebCore::DataDetection::dataDetectorIdentifier):
(WebCore::DataDetection::shouldCancelDefaultAction):

  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
  • platform/spi/cocoa/DataDetectorsCoreSPI.h:

Source/WebKit2:

Changed use of data detection functions to take
a reference to Element instead of a pointer.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleTap):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::getPositionInformation):

4:18 PM Changeset in webkit [198652] by sbarati@apple.com
  • 6 edits
    4 adds in trunk

ES6: Implement IsRegExp function and use where needed in String.prototype.* methods
​https://bugs.webkit.org/show_bug.cgi?id=155854

Reviewed by Mark Lam.

Source/JavaScriptCore:

This patch is a straight forward implementation of IsRegExp
in the ES6 spec:
​https://tc39.github.io/ecma262/#sec-isregexp
We now use this IsRegExp function inside String.prototype.(startsWith | endsWith | includes)
as is dictated by the spec.

  • runtime/RegExpConstructor.h:

(JSC::RegExpConstructor::recordMatch):
(JSC::isRegExp):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringProtoFuncIncludes):

  • tests/es6.yaml:
  • tests/es6/well-known_symbols_Symbol.match_String.prototype.endsWith.js: Added.

(test):

  • tests/es6/well-known_symbols_Symbol.match_String.prototype.includes.js: Added.

(test):

  • tests/es6/well-known_symbols_Symbol.match_String.prototype.startsWith.js: Added.

(test):

  • tests/stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js: Added.

(assert):
(test):
(test.get let):
(get let):

LayoutTests:

  • js/string-includes-expected.txt:
4:16 PM Changeset in webkit [198651] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2] Disable network cache speculative validation by default
​https://bugs.webkit.org/show_bug.cgi?id=155857
<rdar://problem/25233210>

Reviewed by Alex Christensen.

Disable network cache speculative validation by default. Clients such
as Safari now use the API added in r198544 to enable if they want.

  • UIProcess/API/APIProcessPoolConfiguration.h:
4:09 PM Changeset in webkit [198650] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

DataDetection creates links that are longer than the actual result.
​https://bugs.webkit.org/show_bug.cgi?id=155850
rdar://problem/25280740

Reviewed by Anders Carlsson.

When a data detection result is composed of multiple fragments,
the range for the last fragment should take into account the end
offset of the query range structure, since there could be additional
content in that range that is not part of the result.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

4:01 PM Changeset in webkit [198649] by commit-queue@webkit.org
  • 32 edits
    3 deletes in trunk

Unreviewed, rolling out r198627.
​https://bugs.webkit.org/show_bug.cgi?id=155856

Caused use-after-free (Requested by ap on #webkit).

Reverted changeset:

"[Fetch API] Add basic loading of resources"
​https://bugs.webkit.org/show_bug.cgi?id=155637
​http://trac.webkit.org/changeset/198627

3:43 PM Changeset in webkit [198648] by sbarati@apple.com
  • 15 edits in trunk

Web Inspector: Separate Debugger enable state from the debugger breakpoints enabled state
​https://bugs.webkit.org/show_bug.cgi?id=152193
<rdar://problem/23867520>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

When all breakpoints are disabled, we can recompile all JS
code and remove the necessary debugging code that is emitted.
This allows for the code that is executing to be almost as fast
as it is with the debugger completely disabled. This is in preparation for:
​https://bugs.webkit.org/show_bug.cgi?id=155809
which will introduce a high fidelity profiler. That profiler
could be built off the principle that breakpoints are disabled
when we're performing a high fidelity profile. Doing so, for example,
allows the sampling profiler to better measure the real performance
of the JS of a particular application.

  • debugger/Debugger.cpp:

(JSC::Debugger::setBreakpointsActivated):
(JSC::Debugger::setPauseOnExceptionsState):

  • debugger/Debugger.h:
  • dfg/DFGGraph.cpp:

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

  • inspector/JSGlobalObjectScriptDebugServer.cpp:

(Inspector::JSGlobalObjectScriptDebugServer::attachDebugger):
(Inspector::JSGlobalObjectScriptDebugServer::detachDebugger):

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::InspectorDebuggerAgent::enable):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::newCodeBlockFor):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createProgramCodeBlock):
(JSC::JSGlobalObject::createEvalCodeBlock):
(JSC::JSGlobalObject::createModuleProgramCodeBlock):
(JSC::JSGlobalObject::queueMicrotask):
(JSC::JSGlobalObject::hasDebugger):
(JSC::JSGlobalObject::hasInteractiveDebugger):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::runtimeFlags):
(JSC::JSGlobalObject::hasDebugger): Deleted.

Source/WebCore:

No new tests because this is already tested by inspector tests.

  • inspector/PageScriptDebugServer.cpp:

(WebCore::PageScriptDebugServer::attachDebugger):
(WebCore::PageScriptDebugServer::detachDebugger):

LayoutTests:

  • inspector/script-profiler/event-type-API.html:
  • inspector/script-profiler/event-type-Microtask.html:
  • inspector/script-profiler/event-type-Other.html:
3:35 PM Changeset in webkit [198647] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Create private builtin helper advanceStringIndexUnicode() for use by RegExp builtins
​https://bugs.webkit.org/show_bug.cgi?id=155855

Reviewed by Mark Lam.

Moved advanceStringIndexUnicode() as a separate helper. Added it as a private builtin
to the GlobalObject like other private builtins.

  • builtins/RegExpPrototype.js:

(advanceStringIndexUnicode):
(match):
(match.advanceStringIndexUnicode): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

3:27 PM Changeset in webkit [198646] by jer.noble@apple.com
  • 7 edits in trunk/Source/WebCore

[MSE] Make calling HTMLMediaElement.buffered less expensive
​https://bugs.webkit.org/show_bug.cgi?id=155846

Reviewed by Eric Carlson.

The MSE specification requires a new TimeRanges object be returned when calling
HTMLMediaElement.buffered. Additionally, the requirements for generating the buffered time
ranges for MediaSource and its constituent SourceBuffers are specific and expensive. Rather
than perform all these steps each time HTMLMediaElement.buffered is queried, cache the final
result and only regenerate the cached value if the buffered ranges of the consituent
SourceBuffers has changed.

Also, make copying a PlatformTimeRanges more efficient by doing a straight vector-to-vector
copy of the PlatformTimeRange's data.

  • Modules/mediasource/MediaSource.cpp:

(WebCore::MediaSource::buffered):
(WebCore::MediaSource::regenerateActiveSourceBuffers):

  • Modules/mediasource/MediaSource.h:
  • Modules/mediasource/SourceBuffer.cpp:

(WebCore::SourceBuffer::removeCodedFrames):
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):

  • Modules/mediasource/SourceBuffer.h:
  • platform/graphics/PlatformTimeRanges.cpp:

(WebCore::PlatformTimeRanges::PlatformTimeRanges): Deleted.
(WebCore::PlatformTimeRanges::operator=): Deleted.
(WebCore::PlatformTimeRanges::copy): Deleted.

  • platform/graphics/PlatformTimeRanges.h:
3:20 PM Changeset in webkit [198645] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Reduce forced layouts
​https://bugs.webkit.org/show_bug.cgi?id=155852
<rdar://problem/25345197>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-24
Reviewed by Timothy Hatcher.

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype.layout):
(WebInspector.DataGrid.prototype._positionResizerElements):
(WebInspector.DataGrid.prototype._positionHeaderViews):
In loops, force layout once, calculate values, then set styles.

  • UserInterface/Views/RadioButtonNavigationItem.js:

(WebInspector.RadioButtonNavigationItem):
(WebInspector.RadioButtonNavigationItem.prototype.updateLayout):
Force layout once to calculate the min-width, then never again.

3:18 PM Changeset in webkit [198644] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Open Resource Dialog should not system beep when using Enter to select an item
​https://bugs.webkit.org/show_bug.cgi?id=155853

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-24
Reviewed by Timothy Hatcher.

  • UserInterface/Views/OpenResourceDialog.js:

(WebInspector.OpenResourceDialog.prototype._handleKeydownEvent):
Prevent default when handling Enter with a selected result.

3:14 PM Changeset in webkit [198643] by dbates@webkit.org
  • 3 edits in trunk/LayoutTests

Update expected results following <​http://trac.webkit.org/changeset/198591>
(​https://bugs.webkit.org/show_bug.cgi?id=155777)

  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt:
1:17 PM Changeset in webkit [198642] by rniwa@webkit.org
  • 10 edits
    6 adds in trunk/Websites/perf.webkit.org

Add mocha server tests for /api/build-requests
​https://bugs.webkit.org/show_bug.cgi?id=155831

Reviewed by Chris Dumez.

Added the new mocha.js based server-tests for /api/build-requests. The new harness automatically:

  • starts a new Apache instance
  • switches the database during testing via setting an environmental variable
  • backups and restores public/data directory during testing

As a result, developer no longer has to manually setup Apache, edit config.json manually to use
a testing database, or run /api/manifest.php to re-generate the manifest file after testing.

This patch also makes ID resolution optional on /api/build-requests so that v3 model based syncing
scripts can re-use the same code as the v3 UI to process the JSON. tools/sync-with-buildbot.py has
been modified to use this option (useLegacyIdResolution).

  • config.json: Added configurations for the test httpd server.
  • init-database.sql: Don't error when tables and types don't exist (when database is empty).
  • public/api/build-requests.php:

(main): Made the ID resolution optional with useLegacyIdResolution. Also removed "updates" from the
results JSON since it's never used.

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

(BuildRequestsFetcher::construct):
(BuildRequestsFetcher::fetch_roots_for_set_if_needed): Fixed the bug that we would include the same
commit multiple times for each root set.

  • public/include/db.php:

(config): If present, use ORG_WEBKIT_PERF_CONFIG_PATH instead of Websites/perf.webkit.org/config.json.

  • server-tests: Added.
  • server-tests/api-build-requests-tests.js: Added. Tests for /api/build-requests.

(.addMockData):

  • server-tests/resources: Added.
  • server-tests/resources/test-server.conf: Added. Apache configuration file for testing.
  • server-tests/resources/test-server.js: Added.

(TestSever): Added.
(TestSever.prototype.start): Added.
(TestSever.prototype.stop): Added.
(TestSever.prototype.remoteAPI): Added. Configures RemoteAPI to be used with the test sever.
(TestSever.prototype.database): Added. Returns Database configured to use the test database.
(TestSever.prototype._constructTestConfig): Creates config.json for testing. The file is generated by
_start and db.php's config() reads it from the environmental variable: ORG_WEBKIT_PERF_CONFIG_PATH.
(TestSever.prototype._ensureDataDirectory): Renames public/data to public/original-data if exists,
and creates a new empty public/data.
(TestSever.prototype._restoreDataDirectory): Deletes public/data and renames public/original-data
back to public/data.
(TestSever.prototype._ensureTestDatabase): Drops the test database if exists and creates a new one.
(TestSever.prototype.initDatabase): Run init-database.sql to start each test with a consistent state.
(TestSever.prototype._executePgsqlCommand): Executes a postgres command line tool such as psql.
(TestSever.prototype._determinePgsqlDirectory): Finds the directory that contains psql.
(TestSever.prototype._startApache): Starts an Apache instance for testing.
(TestSever.prototype._stopApache): Stops the Apache instance for testing.
(TestSever.prototype._waitForPid): Waits for the Apache pid file to appear or disappear.
(before): Start the test server at the beginning.
(beforeEach): Re-initialize all tables before each test.
(after): Stop the test server at the end.

  • tools/js/config.js:

(Config.prototype.path):
(Config.prototype.serverRoot): Added. The path to Websites/perf.webkit.org/public/.
(Config.prototype.pathFromRoot): Added. Resolves a path from Websites/perf.webkit.org.

  • tools/js/database.js:

(Database): Now optionally takes the database name to use a different database during testing.
(Database.prototype.connect):
(Database.prototype.query): Added.
(Database.prototype.insert): Added.
(tableToPrefixMap): Maps table name to its prefix. Used by Database.insert.

  • tools/js/remote.js: Added.

(RemoteAPI): Added. This is node.js equivalent of RemoteAPI in public/v3/remote.js.
(RemoteAPI.prototype.configure): Added.
(RemoteAPI.prototype.fetchJSON): Added.
(RemoteAPI.prototype.fetchJSONWithStatus): Added.
(RemoteAPI.prototype.sendHttpRequest): Added.

  • tools/sync-with-buildbot.py:

(main): Use useLegacyIdResolution as this script relies on the legacy behavior.

  • unit-tests/checkconfig.js: pg was never directly used in this test.
12:56 PM Changeset in webkit [198641] by Chris Dumez
  • 2 edits in trunk/Source/WTF

Fix iOS9 performance regression after r197572
​https://bugs.webkit.org/show_bug.cgi?id=155845
<rdar://problem/25144924>

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-24
Reviewed by Chris Dumez.

  • wtf/Platform.h:

Use CFURLConnection instead of NSURLConnection on internal iOS9 builds.

12:05 PM Changeset in webkit [198640] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit/mac

Fix some new PDFKit-related warnings
​https://bugs.webkit.org/show_bug.cgi?id=155847
<rdar://problem/25340312>

Reviewed by Anders Carlsson.

  • WebView/WebPDFView.mm:

(-[WebPDFView setViewState:]):

  • WebView/WebPreferences.mm:

(-[WebPreferences PDFDisplayMode]):
PDFDisplayMode is now a real enum.

11:56 AM Changeset in webkit [198639] by matthew_hanson@apple.com
  • 4 edits
    3 adds in branches/safari-601-branch

Merge r198592. rdar://problem/25332806

11:42 AM Changeset in webkit [198638] by commit-queue@webkit.org
  • 3 edits in trunk/Tools

Improve update-webkit-dependency script.
​https://bugs.webkit.org/show_bug.cgi?id=155576

Patch by Jeremy Zerfas <WebKit@JeremyZerfas.com> on 2016-03-24
Reviewed by Brent Fulgham.

  • Scripts/update-webkit-dependency:

-Updated script to also use ETags for helping to determine whether dependency is up to date.
-Updated script so it usually won't need to download the entire dependency each time it is

ran.

-Updated script to ensure zip file contains expected directories before trying to install.
-Added some more error checking and improved error messages.
(lastModifiedToUnixTime): Deleted.

  • Scripts/update-webkit-wincairo-libs:

-Corrected comment about what script does.

11:42 AM Changeset in webkit [198637] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION(r189129): <audio> elements do not have playback controls on iOS.
​https://bugs.webkit.org/show_bug.cgi?id=155808
<rdar://problem/23822457>

Reviewed by Eric Carlson.

Audio elements should never require fullscreen for playback.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::requiresFullscreenForVideoPlayback):

11:14 AM Changeset in webkit [198636] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge custom patch. rdar://problem/25152415.

11:14 AM Changeset in webkit [198635] by matthew_hanson@apple.com
  • 4 edits
    3 adds in branches/safari-601.1.46-branch

Merge r198592. rdar://problem/25271136

11:14 AM Changeset in webkit [198634] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r198157. rdar://problem/25271134

11:14 AM Changeset in webkit [198633] by matthew_hanson@apple.com
  • 8 edits
    8 adds in branches/safari-601.1.46-branch

Merge r195614. rdar://problem/24850429

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

Clean up cookie jar after r198195
​https://bugs.webkit.org/show_bug.cgi?id=155484

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-24
Reviewed by Tim Horton.

Get rid of a now unneeded macro.

  • loader/CookieJar.cpp:

(WebCore::storageSession):
(WebCore::cookies):
(WebCore::setCookies):
(WebCore::cookiesEnabled):
(WebCore::cookieRequestHeaderFieldValue):
(WebCore::getRawCookies):
(WebCore::deleteCookie):

10:54 AM Changeset in webkit [198631] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.25.0.1/Source

Versioning.

10:51 AM Changeset in webkit [198630] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.25.0.1

New tag.

10:07 AM Changeset in webkit [198629] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix null dereferencing in NetworkLoad::continueCanAuthenticateAgainstProtectionSpace
​https://bugs.webkit.org/show_bug.cgi?id=155799
rdar://25289012

Reviewed by Tim Horton.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):
Null-check all the things!

10:01 AM Changeset in webkit [198628] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix webkitpy tests after r198617
​https://bugs.webkit.org/show_bug.cgi?id=155827

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-24
Reviewed by Alex Christensen.

  • Scripts/webkitpy/tool/steps/confirmdiff.py:

(ConfirmDiff._show_pretty_diff):

9:53 AM Changeset in webkit [198627] by youenn.fablet@crf.canon.fr
  • 32 edits
    12 adds in trunk

[Fetch API] Add basic loading of resources
​https://bugs.webkit.org/show_bug.cgi?id=155637

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebasing test expectations.
Updating scheme-blob.js to ensure generated test names are stable run after run.

  • web-platform-tests/fetch/api/basic/accept-header-expected.txt:
  • web-platform-tests/fetch/api/basic/integrity-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt:
  • web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt:
  • web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/request-headers-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-about-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-blob.js:

(checkFetchResponse): Deleted.
(checkKoUrl): Deleted.

  • web-platform-tests/fetch/api/basic/scheme-data-expected.txt:
  • web-platform-tests/fetch/api/basic/scheme-others-expected.txt:
  • web-platform-tests/fetch/api/basic/stream-response-expected.txt:

Source/WebCore:

Adding support for basic fetch for Window (no support for Worker yet).
A FetchResponse object is created for every fetch task.
But it will only be exposed to JS at promise fulfillment time, i.e. once initial response headers are retrieved.

Updating Blob resource handle to add Content-Type and Content-Length header and notifying of error in case of erroneous HTTP method.

Fetch is limited to same origin requests currently due to some WPT tests that would timeout otherwise.

Tests: http/tests/fetch/closing-while-fetching.html

http/tests/fetch/get-response-body-while-loading.html

Also covered by rebased tests.

  • Modules/fetch/DOMWindowFetch.cpp: Creating a FetchResponse to start fetching.

(WebCore::DOMWindowFetch::fetch):

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

(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeArrayBuffer): Handling of body promises in case of data stored as a buffer.
(WebCore::FetchBody::consumeText): Passing the promise as a reference.
(WebCore::blobFromArrayBuffer): Helper routine.
(WebCore::FetchBody::fulfillTextPromise): Helper routine.
(WebCore::FetchBody::loadedAsArrayBuffer): Updated to handle storing of data as a buffer.
(WebCore::FetchBody::loadedAsText):
(WebCore::FetchBody::bodyForInternalRequest): Helper routine to generate the request body data to be sent as part of the fetch request.
(WebCore::FetchBody::extractFromText):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::loadingBody):
(WebCore::FetchBody::FetchBody):

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadBlob): Updated to cope with the change that FetchLoader::start does not return a boolean anymore
but will directly call failure callbacks.
(WebCore::FetchBodyOwner::loadedBlobAsText): Moving it closer to other blob loading routines.
(WebCore::FetchBodyOwner::finishBlobLoading):

  • Modules/fetch/FetchBodyOwner.h:

(WebCore::FetchBodyOwner::body):
(WebCore::FetchBodyOwner::loadedBlobAsArrayBuffer):

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::FetchHeaders::fill):
(WebCore::FetchHeaders::filterAndFill): Helper routine to fill headers from a HTTPHeaderMap after being filtered.

  • Modules/fetch/FetchHeaders.h:

(WebCore::FetchHeaders::internalHeaders):

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::start):
(WebCore::FetchLoader::didFailRedirectCheck):

  • Modules/fetch/FetchLoader.h:
  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::internalRequest): Routine used to create the ResourceRequest transmitted to ThreadableLoader.

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

(WebCore::FetchResponse::fetch): Start fetching by creating a FetchLoader based on passed request.
(WebCore::FetchResponse::BodyLoader::didSucceed): FetchLoader callback.
(WebCore::FetchResponse::BodyLoader::didFail): Ditto.
(WebCore::FetchResponse::BodyLoader::BodyLoader): Ditto.
(WebCore::FetchResponse::BodyLoader::didReceiveResponse): Ditto.
(WebCore::FetchResponse::BodyLoader::didFinishLoadingAsArrayBuffer): Ditto.
(WebCore::FetchResponse::BodyLoader::start): Starting fetch loader.
(WebCore::FetchResponse::BodyLoader::stop): Stopping fetch loader.
(WebCore::FetchResponse::stop): Stop loader if any.

  • Modules/fetch/FetchResponse.h:
  • platform/network/BlobResourceHandle.cpp:

(WebCore::BlobResourceHandle::doStart: Notifying the loader with an error if verb is not GET.
(WebCore::BlobResourceHandle::notifyResponseOnSuccess): Adding support for Content-Type and Content-Lenth headers.
(WebCore::BlobResourceHandle::createAsync): Removing GET verb check.

LayoutTests:

  • TestExpectations: Removed flaky test expectations.
  • http/tests/fetch/closing-while-fetching-expected.txt: Added.
  • http/tests/fetch/closing-while-fetching.html: Added.
  • http/tests/fetch/get-response-body-while-loading-expected.txt: Added.
  • http/tests/fetch/get-response-body-while-loading.html: Added.
  • http/tests/resources/download-json-with-delay.php: Added.
  • platform/gtk/imported/w3c/web-platform-tests/fetch/api/basic/request-headers-expected.txt: Added.
9:20 AM Changeset in webkit [198626] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Remove virtual inheritance from SVGTransformable.
<​https://webkit.org/b/155837>

Reviewed by Anders Carlsson.

Nothing else inherits SVGLocatable, so make the inheritance non-virtual.

  • svg/SVGTransformable.h:
9:13 AM Changeset in webkit [198625] by msaboff@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Add Proxy based tests for RegExp.prototype[@@match]
​https://bugs.webkit.org/show_bug.cgi?id=155807

Reviewed by Saam Barati.

Added new test that uses Proxy to verify RegExp.prototype[@@match] processing
conforms to the ES6 standard

Modified builtin RegExp.prototype[@@match] to be ES6 spec conformant.

Updated es6.yaml as Proxy_internal_get_calls_RegExp.prototype[Symbol.match].js now passes.

  • builtins/RegExpPrototype.js:

(match):

  • tests/es6.yaml: Updated.
  • tests/stress/regexp-match-proxy.js: Added.

(assert):
(let.getProxyNullExec.new.Proxy):
(let.getSetProxyNullExec.new.Proxy):
(get resetTracking):
(let.getSetProxyMatches_s.new.Proxy):
(set get getSetProxyNullExec):
(let.getSetProxyMatches_tx_Greedy.new.Proxy):
(set get getSetProxyMatches_s):
(let.getSetProxyMatchesUnicode_digit_nonGreedy.new.Proxy):
(set get getSetProxyMatches_tx_Greedy):

7:19 AM Changeset in webkit [198624] by msaboff@apple.com
  • 7 edits in trunk

[ES6] Greedy unicode RegExp's don't properly backtrack past non BMP characters
​https://bugs.webkit.org/show_bug.cgi?id=155829

Reviewed by Saam Barati.

Source/JavaScriptCore:

When we backup when matching part of a unicode pattern, we can't just backup one character.
Instead we need to save our start position before trying to match a character and
restore the position if the match fails. This was done in other places, but wasn't
done for all greedy types.

Fixed matchGlobal() to properly handle advancing past non BMP characters.

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::matchGlobal):

  • runtime/RegExpObjectInlines.h:

(JSC::RegExpObject::advanceStringUnicode):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::matchCharacterClass):
(JSC::Yarr::Interpreter::matchDisjunction):

LayoutTests:

Added new test cases.

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
6:27 AM Changeset in webkit [198623] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening.

Unskip passing tests, which have been passed a long time ago.
Failed to track correct revision on EFL buildbot.

  • platform/efl/TestExpectations:
3:36 AM Changeset in webkit [198622] by youenn.fablet@crf.canon.fr
  • 5 edits in trunk/Source/WebCore

Remove DeferredWrapper::resolve<Vector<unsigned char>>
​https://bugs.webkit.org/show_bug.cgi?id=154849

Reviewed by Darin Adler.

Adding fulfillPromiseWithArrayBuffer to resolve a promise with an ArrayBuffer.
If the ArrayBuffer is null, the promise is rejected with an OutOfMemory exception.

Not covered by tests since we would need to make tryCreate return null on failing allocation.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::processIfEmptyOrDisturbed):
(WebCore::FetchBody::loadedAsArrayBuffer):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::fulfillPromiseWithArrayBuffer):

  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredWrapper::resolve<JSC::JSValue>): Deleted.
(WebCore::DeferredWrapper::resolve): Deleted.

  • bindings/js/JSSubtleCryptoCustom.cpp:

(WebCore::JSSubtleCrypto::encrypt):
(WebCore::JSSubtleCrypto::decrypt):
(WebCore::JSSubtleCrypto::sign):
(WebCore::JSSubtleCrypto::digest):
(WebCore::JSSubtleCrypto::exportKey):
(WebCore::JSSubtleCrypto::wrapKey):

2:02 AM Changeset in webkit [198621] by commit-queue@webkit.org
  • 2 edits
    2 adds in trunk/Source/JavaScriptCore

[JSC] In some cases, the integer range optimization phase never converges
​https://bugs.webkit.org/show_bug.cgi?id=155828
rdar://problem/25155460

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-24
Reviewed by Filip Pizlo.

In certain conditions, the integer range optimization phase continuously
changes the representation of the same truth, preventing it from
converging to a stable state.

The bug starts by having the same ground truth incomming into a block
in different valid forms. For example, you can have x < 42 coming as:

1) x < 42
2) x < 41 + 1
3) x < 43 - 1

Having those 3 alone coming from predecessors would be okay, we would
just accumulate them. The problem is when you have a combination
of rule that filter out the previously obtained truth, then add a new
form of the same truth.

Let's use the test case as an example. We have two incoming blocks:

Block #1:

-i < 42
-i != 41

Block #2:

-i < 41
-i == 42 - 42 (i == 0 refining the rule above).

Let say that our conditions at head are now [i < 41, i < 42 - 1].

If we merge block #2:

-i < 42 and i < 41 -> i < 42
-i < 42 and i < 42 - 1 -> i < 42
-i != 41 and i < 41 -> i < 41
-i != 41 and i < 42 - 1 -> nothing

The new head is: [i < 41, i < 42]

If we merge block #1:

-i < 41 and i < 41 -> i < 41
-i < 41 and i < 42 -> i < 42
-i == 42 - 42 and i < 41 -> (i < 41 and i < 42 - 1)
-i == 42 - 42 and i < 42 -> i < 42

After filter, we are back to [i < 41, i < 42 - 1].

There are several variations of this idea where the same truth
rotate different forms with each merge().

One possible solution is to make filter() more aggressive
to avoid the better form occuring at merge(). I'll probably
do that at some point but that seems fragile since the same
problem could reappear if merge() is later improved.

For this patch, I went with a more generic solution after
merge(): if the generated form is equivalent to one that
previously existed at head, pick the existing form.

In the previous example, what happens is we only have
either [i < 41] or [i < 42 - 1] but never both simultaneously.

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:
  • tests/stress/integer-range-optimization-constant-representation-1.js: Added.
  • tests/stress/integer-range-optimization-constant-representation-2.js: Added.

Two variation. One timeout in release because of the additional flags.
The other is gets more type of run but only assert in debug.

1:10 AM Changeset in webkit [198620] by commit-queue@webkit.org
  • 13 edits in trunk/Source/WebInspectorUI

Web Inspector: Miscellaneous performance fixes in Timeline recording
​https://bugs.webkit.org/show_bug.cgi?id=155832

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-24
Reviewed by Timothy Hatcher.

  • UserInterface/Models/CallingContextTree.js:

(WebInspector.CCTNode.prototype.hasChildren):
No need to allocate an array with all of the properties, we can just
check if there is at least one property using a short circuit for..in.
Performance was always faster for empty, small, and large objects
in micro benchmarks.

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype.layout):
Avoid causing DOM layout when positioning resizers. They only need
a layout if we are resizing the DataGrid, or the initial layout.

  • UserInterface/Views/NavigationBar.js:

(WebInspector.NavigationBar):
(WebInspector.NavigationBar.prototype.needsLayout):
(WebInspector.NavigationBar.prototype.layout):
Avoid causing DOM layout every View layout. In fact, only do a
DOM layout when someone has triggered a needsLayout on this
navigation bar. A basic dirty layout (triggered by a parent)
should not have caused us to resize.

  • UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js:
  • UserInterface/Views/LayoutTimelineOverviewGraph.js:

(WebInspector.LayoutTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WebInspector.MemoryTimelineOverviewGraph.prototype.reset):
(WebInspector.MemoryTimelineOverviewGraph.prototype._updateLegend):

  • UserInterface/Views/NetworkTimelineOverviewGraph.js:
  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.js:

(WebInspector.RenderingFrameTimelineOverviewGraph.prototype.layout):

  • UserInterface/Views/ScriptTimelineOverviewGraph.js:

Avoid doing any work in non-visible graphs. This was very common
because the RenderingFrameTimelineOverviewGraph is never visible
when the other timeline graphs are, but was performing lots of work.

  • UserInterface/Views/MemoryCategoryView.js:

(WebInspector.MemoryCategoryView.prototype.clear):
(WebInspector.MemoryCategoryView.prototype._updateDetails):
(WebInspector.MemoryCategoryView):

  • UserInterface/Views/MemoryTimelineView.js:

(WebInspector.MemoryTimelineView.prototype.reset):
(WebInspector.MemoryTimelineView.prototype._updateUsageLegend):
(WebInspector.MemoryTimelineView.prototype._updateMaxComparisonLegend):
Cache values to avoid textContent calls even if the content did not change.
This reduces unnecessary work when the values wouldn't change.

  • UserInterface/Views/TimelineRecordBar.js:

(WebInspector.TimelineRecordBar.createCombinedBars):
(WebInspector.TimelineRecordBar.prototype.set records):
Revert to fast loop and as this code path is very hot and for..of iteration
was showing up in profiles. Remove assert which seems rather pointless but
showed up in profiles.

12:13 AM Changeset in webkit [198619] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Large repaints while typing in the console tab
​https://bugs.webkit.org/show_bug.cgi?id=155627
<rdar://problem/25234875>

Reviewed by Timothy Hatcher.

Use a position: absolute workaround to reduce large repaint areas caused by flexbox.

  • UserInterface/Views/LogContentView.css:

(body.selected-tab-console #content):
This selector must only affect the console tab as it breaks sidebars in other tabs.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
(WebInspector._tabBarItemSelected):

  • UserInterface/Views/TabBar.js:

(WebInspector.TabBar.prototype.set selectedTabBarItem):
Add "selected-tab-console" class to <body> when the console tab is selected.

Mar 23, 2016:

11:32 PM Changeset in webkit [198618] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline range selection changes with ProfileView should not cause navigation bar items to flicker
​https://bugs.webkit.org/show_bug.cgi?id=155834

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ProfileView.js:

(WebInspector.ProfileView.prototype._recreate):
The only reason our selection path components would change is if we
had focus nodes before and do not anymore.

10:16 PM Changeset in webkit [198617] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

webkit-patch failed to open pretty diff on Windows
​https://bugs.webkit.org/show_bug.cgi?id=155827

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-23
Reviewed by Alex Christensen.

  • Scripts/webkitpy/tool/steps/confirmdiff.py:

(ConfirmDiff._show_pretty_diff):

10:13 PM Changeset in webkit [198616] by commit-queue@webkit.org
  • 2 edits in trunk

Fixed ninja build path.
​https://bugs.webkit.org/show_bug.cgi?id=155796

Patch by Bill Ming <​mbbill@gmail.com> on 2016-03-23
Reviewed by Alex Christensen.

  • Tools/Scripts/build-webkit:
8:31 PM Changeset in webkit [198615] by rniwa@webkit.org
  • 1 edit
    1 delete in trunk/Websites/perf.webkit.org

Delete a file that was supposed to be removed in r198614 for real.

  • unit-tests/resources/v3-models.js: Removed.
8:25 PM Changeset in webkit [198614] by rniwa@webkit.org
  • 6 edits
    2 copies
    2 adds in trunk/Websites/perf.webkit.org

Add a model for parsing buildbot JSON with unit tests
​https://bugs.webkit.org/show_bug.cgi?id=155814

Reviewed by Joseph Pecoraro.

Added BuildbotSyncer and BuildbotBuildEntry classes to parse buildbot JSON files with unit tests.
They will be used in the new syncing scripts to improve A/B testing.

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

(BuildRequest):

  • tools/js/buildbot-syncer.js: Added.

(BuildbotBuildEntry): Added.
(BuildbotBuildEntry.prototype.slaveName): Added.
(BuildbotBuildEntry.prototype.buildRequestId): Added.
(BuildbotBuildEntry.prototype.isInProgress): Added.
(BuildbotSyncer): Added.
(BuildbotSyncer.prototype.testPath): Added.
(BuildbotSyncer.prototype.builderName): Added.
(BuildbotSyncer.prototype.platformName): Added.
(BuildbotSyncer.prototype.fetchPendingRequests): Added.
(BuildbotSyncer.prototype._propertiesForBuildRequest): Added.
(BuildbotSyncer.prototype._revisionSetFromRootSetWithExclusionList): Added.
(BuildbotSyncer._loadConfig): Added.
(BuildbotSyncer._validateAndMergeConfig): Added.
(BuildbotSyncer._validateAndMergeProperties): Added.

  • tools/js/v3-models.js: Copied from unit-tests/resources/v3-models.js.

(beforeEach): Deleted since this only defined inside mocha.

  • unit-tests/analysis-task-tests.js:
  • unit-tests/buildbot-syncer-tests.js: Added.

(sampleiOSConfig):
(createSampleBuildRequest):
(.smallConfiguration):

  • unit-tests/measurement-adaptor-tests.js:
  • unit-tests/measurement-set-tests.js:
  • unit-tests/resources/mock-v3-models.js: Renamed from unit-tests/resources/v3-models.js.

(beforeEach):

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

(sampleTestGroup):

7:41 PM Changeset in webkit [198613] by dbates@webkit.org
  • 3 edits in trunk/Source/WebCore

CSP: Simplify logic for checking policies
​https://bugs.webkit.org/show_bug.cgi?id=155817
<rdar://problem/25326546>

Reviewed by Zalan Bujtas.

Consolidate the various static template functions into a single function called ContentSecurityPolicy::allPoliciesAllow()
that tests whether a resource request when evaluated with respect to a directive (given as a ContentSecurityPolicyDirectiveList
pointer-to-member function) violates any of the CSPs that were delivered with the document.

No functionality changed. So, no new tests.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allPoliciesAllowHashFromContent): Formerly name isAllowedByAllWithHash. Made it
a member function so that we query for the document encoding instead of taking it as an argument. Modified
it to take a predicate function to pass it to allPoliciesAllow().
(WebCore::ContentSecurityPolicy::allowJavaScriptURLs): Modified to use ContentSecurityPolicy::allPoliciesAllow().
(WebCore::ContentSecurityPolicy::allowInlineEventHandlers): Ditto.
(WebCore::ContentSecurityPolicy::allowScriptWithNonce): Ditto.
(WebCore::ContentSecurityPolicy::allowStyleWithNonce): Ditto.
(WebCore::ContentSecurityPolicy::allowInlineScript): Modified to use ContentSecurityPolicy::allPoliciesAllow() and
ContentSecurityPolicy::allPoliciesAllowHashFromContent().
(WebCore::ContentSecurityPolicy::allowInlineStyle): Ditto.
(WebCore::ContentSecurityPolicy::allowEval): Modified to use ContentSecurityPolicy::allPoliciesAllow().
(WebCore::ContentSecurityPolicy::allowFrameAncestors): Ditto.
(WebCore::ContentSecurityPolicy::allowPluginType): Ditto.
(WebCore::ContentSecurityPolicy::allowScriptFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowObjectFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildFrameFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildContextFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowImageFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowStyleFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFontFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowMediaFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowConnectToSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFormAction): Ditto.
(WebCore::ContentSecurityPolicy::allowBaseURI): Ditto.
(WebCore::isAllowedByAllWithFrame): Deleted.
(WebCore::isAllowedByAll): Deleted.
(WebCore::isAllowedByAllWithState): Deleted.
(WebCore::isAllowedByAllWithContext): Deleted.
(WebCore::isAllowedByAllWithNonce): Deleted.
(WebCore::isAllowedByAllWithHash): Deleted.
(WebCore::isAllowedByAllWithHashFromContent): Deleted.
(WebCore::isAllowedByAllWithURL): Deleted.
(WebCore::ContentSecurityPolicy::documentEncoding): Deleted. Incorporated its functionality into ContentSecurityPolicy::allPoliciesAllowHashFromContent().
(WebCore::ContentSecurityPolicy::isActive): Deleted. This function has been unused since the removal of the CSP script
interface in <​http://trac.webkit.org/changeset/197142>.

  • page/csp/ContentSecurityPolicy.h:

(WebCore::ContentSecurityPolicy::allPoliciesAllow): Added. Returns whether the predicate function evaluates to true
for all CSP policies.

7:40 PM Changeset in webkit [198612] by jonlee@apple.com
  • 5 edits in trunk/PerformanceTests

Update focus and leaves tests
​https://bugs.webkit.org/show_bug.cgi?id=155825

Reviewed by Simon Fraser.

Particles would improperly disappear, before they were fully off stage. Update the calculation.

  • Animometer/tests/dom/resources/leaves.js:
  • Animometer/tests/master/resources/leaves.js:
  • Animometer/tests/master/focus.html: Update the center element styling.
  • Animometer/tests/master/resources/focus.js:

(FocusElement.Utilities.createClass): Give enough space in the container for each particle for the blur
to spread. It should be about 3x more space than the blur radius on each side.
(Stage.call.initialize): Ditto for the center element.

7:40 PM Changeset in webkit [198611] by jonlee@apple.com
  • 11 edits
    1 delete in trunk/PerformanceTests

Update support for other platforms
​https://bugs.webkit.org/show_bug.cgi?id=155824

Reviewed by Simon Fraser.

  • Animometer/resources/debug-runner/animometer.css: Remove extraneous media query. All of it should

be handled in the release stylesheet.

  • Animometer/resources/debug-runner/animometer.js: Add support for browsers that return an HTMLCollection

when retrieving radio elements with a name, instead of the selected value.

  • Animometer/resources/runner/animometer.css: Adjust the queries for devices of varying widths.

(.frame-container): Move overflow:hidden to #stage.

  • Animometer/tests/master/resources/stage.css: Consolidate into tests/resources/stage.css.
  • Animometer/tests/resources/stage.css:

(body): Remove overflow:hidden.
(#stage): Set overflow:hidden here.
(#center-text): Moved from master/resources/stage.css.

Update stylesheet hrefs.

  • Animometer/tests/master/canvas-stage.html:
  • Animometer/tests/master/focus.html:
  • Animometer/tests/master/leaves.html:
  • Animometer/tests/master/multiply.html:
  • Animometer/tests/master/particles.html:
  • Animometer/tests/master/text.html: Adjust text size to fit in the device screen.
7:08 PM Changeset in webkit [198610] by jonlee@apple.com
  • 7 edits in trunk/PerformanceTests

Make the benchmark require device to be in landscape orientation
​https://bugs.webkit.org/show_bug.cgi?id=155822
rdar://problem/25258650

Reviewed by Ryosuke Niwa.

Check that the device is in landscape orientation. If not, disable the button to start it,
and show a warning message.

  • Animometer/developer.html: Add a message about how the browser should be set up. Include a

warning message that appears if the orientation is incorrect on mobile devices.

  • Animometer/index.html: Ditto.
  • Animometer/resources/debug-runner/animometer.css: Migrate the .hidden rule into the release

stylesheet. Update the style to accommodate the new UI.

  • Animometer/resources/runner/animometer.css:
  • Animometer/resources/runner/animometer.js:

(window.benchmarkController.initialize): Add the orientation listener is needed.
(window.benchmarkController.addOrientationListenerIfNecessary): Only mobile devices need this. Check
to see for support of window.orientation.
(window.benchmarkController._orientationChanged): Toggle the warning based on whether we match the
landscape query. Set a state variable, which is needed for the debug harness. Call updateStartButtonState.
(window.benchmarkController.updateStartButtonState):

  • Animometer/resources/debug-runner/animometer.js: Change _updateStartButtonState to return

a boolean about whether at least one test is selected. That will be used in
benchmarkController.updateStartButtonState(). Move the load event listener to the release version.
(window.benchmarkController.updateStartButtonState): Override the release version, and also check
that at least one test is selected.

5:43 PM Changeset in webkit [198609] by jer.noble@apple.com
  • 2 edits
    2 adds in trunk

Media elements allowed to play without a user gesture, but requiring fullscreen playback, should not be allowed to autoplay.
​https://bugs.webkit.org/show_bug.cgi?id=155599

Reviewed by Darin Adler.

Test: media/video-autoplay-allowed-but-fullscreen-required.html

Entering fullscreen should always require a user gesture.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted):

5:42 PM Changeset in webkit [198608] by jer.noble@apple.com
  • 2 edits in trunk/Tools

[ios-sim] RequiresUserActionForPlaybackTest.DoesNotRequireUserActionForMediaPlayback and RequiresUserActionForVideoButNotAudioPlayback failing
​https://bugs.webkit.org/show_bug.cgi?id=155764

Reviewed by Eric Carlson.

Remove the requirement for media elements to have webkit-playsinline attributes on iOS.

  • TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:

(RequiresUserActionForPlaybackTest::SetUp):

5:13 PM Changeset in webkit [198607] by commit-queue@webkit.org
  • 3 edits
    2 deletes in trunk

Unreviewed, rolling out r198538.
​https://bugs.webkit.org/show_bug.cgi?id=155819

Broke two API tests on iOS simulator (Requested by ap on
#webkit).

Reverted changeset:

"Media elements allowed to play without a user gesture, but
requiring fullscreen playback, should not be allowed to
autoplay."
​https://bugs.webkit.org/show_bug.cgi?id=155599
​http://trac.webkit.org/changeset/198538

5:12 PM Changeset in webkit [198606] by ggaren@apple.com
  • 9 edits
    1 add in trunk/Source/bmalloc

bmalloc: Added an Object helper class
​https://bugs.webkit.org/show_bug.cgi?id=155818

Reviewed by Gavin Barraclough.

Object is an abstraction that breaks out a void* into its component
metadata pointers.

This is slightly faster than recomputing them, and it enables a future
patch in which Object will tell us whether it is small or large.

  • bmalloc.xcodeproj/project.pbxproj: Added to the project.
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::reallocate): Use Object to compute size.

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::processObjectLog):

  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateSmallPage):
(bmalloc::Heap::deallocateSmallLine):

  • bmalloc/Heap.h:

(bmalloc::Heap::derefSmallLine): Use Object to deallocate.

  • bmalloc/Object.h: Added.

(bmalloc::Object::Object):
(bmalloc::Object::chunk):
(bmalloc::Object::line):
(bmalloc::Object::page): Helper class to break out a void* into its
component metadata pointers.

  • bmalloc/SmallChunk.h:

(bmalloc::SmallChunk::SmallChunk): SmallPage::get doesn't exist anymore
so we use our new helper functions instead.

(bmalloc::SmallChunk::offset):
(bmalloc::SmallChunk::object):
(bmalloc::SmallChunk::page):
(bmalloc::SmallChunk::line):
(bmalloc::SmallLine::begin):
(bmalloc::SmallLine::end):
(bmalloc::SmallPage::begin): New helpers that operate on the data
stored in Object.

(bmalloc::SmallLine::get): Deleted.
(bmalloc::SmallPage::get): Deleted.

  • bmalloc/SmallLine.h:

(bmalloc::SmallLine::refCount): Added a default ref value for convenience.

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage):

4:47 PM Changeset in webkit [198605] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Allow clicking the Timeline in Editing Mode to toggle the checkbox
​https://bugs.webkit.org/show_bug.cgi?id=155815

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview.prototype._startEditingInstruments):
Remove unused variable.

  • UserInterface/Views/TimelineTreeElement.js:

(WebInspector.TimelineTreeElement.prototype.onattach):
(WebInspector.TimelineTreeElement.prototype._clickHandler):
Make clicking on the tree element toggle the checkbox.

4:47 PM Changeset in webkit [198604] by andersca@apple.com
  • 5 edits
    1 add in trunk

Crash when using KVO from within -[WebView initWithCoder:]
​https://bugs.webkit.org/show_bug.cgi?id=155816
rdar://problem/17073265

Reviewed by Dan Bernstein.

Source/WebKit/mac:

Get rid of the observationInfo getter and setter. It's not clear why they were added (in 2003),
and the methods on NSObject are good enough for us.

  • WebView/WebView.mm:

(-[WebView setObservationInfo:]): Deleted.
(-[WebView observationInfo]): Deleted.

  • WebView/WebViewData.h:

Tools:

Add test.

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

(-[EarlyKVOCrashResponder initWithWebView:]):
(-[EarlyKVOCrashResponder initWithCoder:]):
(-[EarlyKVOCrashResponder dealloc]):
(-[EarlyKVOCrashResponder encodeWithCoder:]):
(TestWebKitAPI::TEST):

4:42 PM Changeset in webkit [198603] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline Tab sometimes restores as blank
​https://bugs.webkit.org/show_bug.cgi?id=155811

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.prototype.restoreFromCookie):
When early bailing in restore, if there is no content view to restore,
then at least fallback to showing the Overview.

3:45 PM Changeset in webkit [198602] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Timeline Reset does not clear datagrids
​https://bugs.webkit.org/show_bug.cgi?id=155804

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WebInspector.HeapAllocationsTimelineView.prototype.shown):
(WebInspector.HeapAllocationsTimelineView.prototype.hidden):
(WebInspector.HeapAllocationsTimelineView.prototype.closed):
(WebInspector.HeapAllocationsTimelineView.prototype.reset):
Although we don't use the popover features of TimelineDataGrid,
be a good citizen and call methods on the datagrid.

  • UserInterface/Views/OverviewTimelineView.js:

(WebInspector.OverviewTimelineView.prototype.reset):
Clear the datagrid on reset.

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype.reset):
Clear the datagrid on reset.

3:45 PM Changeset in webkit [198601] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exceptions closing Timeline tab
​https://bugs.webkit.org/show_bug.cgi?id=155805

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-23
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ScriptClusterTimelineView.js:

(WebInspector.ScriptClusterTimelineView.prototype._scriptClusterViewCurrentContentViewDidChange):
Gracefully handle if there is no content view.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype.closed): Deleted.
Fix typo.

3:33 PM Changeset in webkit [198600] by commit-queue@webkit.org
  • 8 edits
    2 deletes in trunk

Unreviewed, rolling out r198582.
​https://bugs.webkit.org/show_bug.cgi?id=155812

"It broke debugging in the web inspector" (Requested by
saamyjoon on #webkit).

Reverted changeset:

"We should not disable inlining when the debugger is enabled"
​https://bugs.webkit.org/show_bug.cgi?id=155741
​http://trac.webkit.org/changeset/198582

3:27 PM Changeset in webkit [198599] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Change the paint count indicator to indicate whether a layer is opaque
​https://bugs.webkit.org/show_bug.cgi?id=155810

Reviewed by Tim Horton.

In non-opaque layers, give the paint count indicator a diagonal top left corner. Being
able to see layer opaqueness helps diagnose bugs.

Also use CGContextStateSaver, and move the indicator in by a pixel to overlap less
with the layer border.

  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator):

2:55 PM Changeset in webkit [198598] by rniwa@webkit.org
  • 6 edits
    1 add in trunk/Websites/perf.webkit.org

Add unit tests for test-group.js
​https://bugs.webkit.org/show_bug.cgi?id=155781

Reviewed by Joseph Pecoraro.

Added unit tests for test-group.js that would have caught regressions fixed in r198503.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype._renderAnnotations): Added a forgotten break statement.

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

(BuildRequest.prototype.setResult):
(BuildRequest):

  • public/v3/models/test-group.js:
  • unit-tests/measurement-set-tests.js: Use ./resources/v3-models.js to reduce the code duplication.
  • unit-tests/resources/v3-models.js: Import more stuff from v3 models.

(beforeEach):

  • unit-tests/test-groups-tests.js: Added. Added some unit tests for TestGroup.

(sampleTestGroup):
(.testGroupWithStatusList):

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

ASSERTION FAILED: y2 >= y1 in WebCore::RenderElement::drawLineForBoxSide
​https://bugs.webkit.org/show_bug.cgi?id=155791

Reviewed by Simon Fraser.

With certain combination of border rect and adjacent width, we could end up with an empty final rect.
This patch ensures that we don't try to paint this empty rect.

Source/WebCore:

Test: fast/borders/empty-outline-border-assert.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::drawLineForBoxSide):

LayoutTests:

  • fast/borders/empty-outline-border-assert-expected.txt: Added.
  • fast/borders/empty-outline-border-assert.html: Added.
2:29 PM Changeset in webkit [198596] by Lucas Forschler
  • 2 edits in trunk/Tools

Teach kill-old-processes about perl 5.18.

Reviewed by Alexey Proskuryakov

  • BuildSlaveSupport/kill-old-processes:

(main):

2:20 PM Changeset in webkit [198595] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Screen queries should query the exact screen, not a default
​https://bugs.webkit.org/show_bug.cgi?id=155806
<rdar://problem/25322916>

Reviewed by Simon Fraser.

Some of our media queries were using helper functions that
would query the capabilities of the deepest screen, rather
than the currently used screen. I changed them to use
the existing helper function (that works with WebKit 2)
and comment in some other helpers why a generic check is
ok.

Covered by the existing tests.

  • platform/mac/PlatformScreenMac.mm:

(WebCore::screenDepth): Use the helper function.
(WebCore::screenDepthPerComponent):
(WebCore::screenIsMonochrome): Move these and make a comment.
(WebCore::screenHasInvertedColors):

2:07 PM Changeset in webkit [198594] by ggaren@apple.com
  • 6 edits in trunk/Source/bmalloc

bmalloc: process the object log before asking for new memory
​https://bugs.webkit.org/show_bug.cgi?id=155801

Reviewed by Gavin Barraclough.

This is a step toward merging large and small objects: In future, if we
have large objects in the log, we need to process them right away to
avoid pushing up peak memory use.

But it also appears to be a speedup and memory use improvement now.

  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::allocate):
(bmalloc::Allocator::refillAllocatorSlowCase):
(bmalloc::Allocator::allocateLarge): Process the log before asking for
more memory.

  • bmalloc/Deallocator.cpp:

(bmalloc::Deallocator::processObjectLog):
(bmalloc::Deallocator::deallocateSlowCase):

  • bmalloc/Deallocator.h: Provide a public API for processing the object log.
  • bmalloc/Heap.cpp:

(bmalloc::Heap::allocateSmallPage): Pop fragmented pages from the front
instead of from the back. This resolves a regression on tree_churn
--parallel. Popping from the front gives us the oldest pages. The oldest
pages have had the most time to accumulate free lines. They are therefore
the least fragmented on average.

  • bmalloc/List.h:

(bmalloc::List::popFront):
(bmalloc::List::insertAfter): New API to pop from front.

2:06 PM Changeset in webkit [198593] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

MiniBrowser doesn't use accelerated drawing in WebKit2 windows if a WebKit1 window was opened first
​https://bugs.webkit.org/show_bug.cgi?id=141576
<rdar://problem/25304548>

Reviewed by Simon Fraser.

  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences init]):
Make the NSUserDefaults key prefix for debug preferences (the only ones read
from NSUserDefaults) "WebKitDebug" instead of just "WebKit" so that they
don't conflict with the names that WebKit1 registers default values for.

2:03 PM Changeset in webkit [198592] by msaboff@apple.com
  • 4 edits
    3 adds in trunk

JavaScriptCore ArrayPrototype::join shouldn't cache butterfly when it makes effectful calls
​https://bugs.webkit.org/show_bug.cgi?id=155776

Reviewed by Saam Barati.

Source/JavaScriptCore:

Array.join ends up calling toString, possibly on some object. Since these calls
could be effectful and could change the array itself, we can't hold the butterfly
pointer while making effectful calls. Changed the code to fall back to the general
case when an effectful toString() call might be made.

  • runtime/ArrayPrototype.cpp:

(JSC::join):

  • runtime/JSStringJoiner.h:

(JSC::JSStringJoiner::appendWithoutSideEffects): New helper that doesn't make effectful
toString() calls.
(JSC::JSStringJoiner::append): Built upon appendWithoutSideEffects.

LayoutTests:

New test.

  • js/regress-155776-expected.txt: Added.
  • js/regress-155776.html: Added.
  • js/script-tests/regress-155776.js: Added.

(fillBigArrayViaToString):
(Function.prototype.toString):

1:58 PM Changeset in webkit [198591] by dbates@webkit.org
  • 168 edits in trunk

CSP: Make violation console messages concise and consistent
​https://bugs.webkit.org/show_bug.cgi?id=155777
<rdar://problem/25304031>

Reviewed by Darin Adler.

Source/WebCore:

As a first step towards making the log messages that are emitted by the ContentSecurityPolicy object
concise and consistent with the language and formatting used in other WebKit console messages, including
other Content Security Policy messages, make the violation error messages concise and consistent.
Being concise and consistent will help make it straightforward for a person to understand the reason
for the violation by taking advantage of their familiarity with the language and formatting seen in
other WebKit console messages.

  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::consoleMessageForViolation): Added. Builds up a console message for violation.
(WebCore::ContentSecurityPolicyDirectiveList::allowJavaScriptURLs): Extract logic for logging a console message/reporting
a violation from ContentSecurityPolicyDirectiveList::checkInlineAndReportViolation() to here and make use of WebCore::consoleMessageForViolation()
to build the actual console message.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineEventHandlers): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineScript): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineStyle): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowEval): Extract logic for logging a console message/reporting
a violation from ContentSecurityPolicyDirectiveList::checkEvalAndReportViolation() to here and make use of WebCore::consoleMessageForViolation()
to build the actual console message.
(WebCore::ContentSecurityPolicyDirectiveList::allowPluginType): Extract logic for logging a console message/reporting
a violation from ContentSecurityPolicyDirectiveList::checkMediaTypeAndReportViolation() to here and make use of WebCore::consoleMessageForViolation()
to build the actual console message.
(WebCore::ContentSecurityPolicyDirectiveList::allowScriptFromSource): Extract logic for logging a console message/reporting
a violation from ContentSecurityPolicyDirectiveList::checkSourceAndReportViolation() to here and make use of WebCore::consoleMessageForViolation()
to build the actual console message.
(WebCore::ContentSecurityPolicyDirectiveList::allowObjectFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildContextFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildFrameFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowImageFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowStyleFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFontFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowMediaFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowConnectToSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFormAction): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowBaseURI): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFrameAncestors): Extract logic for logging a console message/reporting
a violation from ContentSecurityPolicyDirectiveList::checkFrameAncestorsAndReportViolation() to here and make use of WebCore::consoleMessageForViolation()
to build the actual console message.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Add FIXME comment to log that the frame-src directive is
deprecated. See <​https://bugs.webkit.org/show_bug.cgi?id=155773> for more details.
(WebCore::ContentSecurityPolicyDirectiveList::checkEvalAndReportViolation): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkMediaTypeAndReportViolation): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkInlineAndReportViolation): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkSourceAndReportViolation): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkFrameAncestorsAndReportViolation): Deleted.

  • page/csp/ContentSecurityPolicyDirectiveList.h:

LayoutTests:

Update expected results to reflect new violation message text.

  • fast/workers/worker-inherits-csp-blocks-xhr-expected.txt:
  • http/tests/contentextensions/block-cookies-in-csp-report-expected.txt:
  • http/tests/contentextensions/block-csp-report-expected.txt:
  • http/tests/contentextensions/hide-on-csp-report-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/base-uri-deny-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked-expected.txt:

...

  • http/tests/security/contentSecurityPolicy/xsl-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-img-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/xsl-unaffected-by-style-src-1-expected.txt:
  • http/tests/security/isolatedWorld/bypass-main-world-csp-for-xhr-expected.txt:
  • http/tests/security/isolatedWorld/image-load-should-not-bypass-main-world-csp-expected.txt:
  • media/csp-blocks-video-expected.txt:
1:08 PM Changeset in webkit [198590] by Matt Baker
  • 2 edits
    18 adds in trunk/Source/WebInspectorUI

Web Inspector: Quick Open dialog has fuzzy icons at 1x
​https://bugs.webkit.org/show_bug.cgi?id=155557
<rdar://problem/25200217>

Reviewed by Timothy Hatcher.

New resource icons (documents and clippings) for large tree items,
for use in the Quick Open dialog's tree outline.

  • UserInterface/Images/ClippingCSSLarge.png: Added.
  • UserInterface/Images/​ClippingCSSLarge@2x.png: Added.
  • UserInterface/Images/ClippingGenericLarge.png: Added.
  • UserInterface/Images/ClippingGenericLarge@2x.png: Added.
  • UserInterface/Images/ClippingJSLarge.png: Added.
  • UserInterface/Images/​ClippingJSLarge@2x.png: Added.
  • UserInterface/Images/DocumentCSSLarge.png: Added.
  • UserInterface/Images/​DocumentCSSLarge@2x.png: Added.
  • UserInterface/Images/DocumentFontLarge.png: Added.
  • UserInterface/Images/DocumentFontLarge@2x.png: Added.
  • UserInterface/Images/DocumentGenericLarge.png: Added.
  • UserInterface/Images/DocumentGenericLarge@2x.png: Added.
  • UserInterface/Images/DocumentImageLarge.png: Added.
  • UserInterface/Images/DocumentImageLarge@2x.png: Added.
  • UserInterface/Images/DocumentJSLarge.png: Added.
  • UserInterface/Images/​DocumentJSLarge@2x.png: Added.
  • UserInterface/Images/DocumentMarkupLarge.png: Added.
  • UserInterface/Images/DocumentMarkupLarge@2x.png: Added.

32px icons at 1x and 2x.

  • UserInterface/Views/ResourceIcons.css:

(.large .resource-icon .icon):
(.large .resource-icon.resource-type-document .icon):
(.large .resource-icon.resource-type-image .icon):
(.large .resource-icon.resource-type-font .icon):
(.large .resource-icon.resource-type-stylesheet .icon):
(.large .resource-icon.resource-type-script .icon):
(.large .anonymous-script-icon .icon):
(.large .source-map-resource.resource-icon .icon):
(.large .source-map-resource.resource-icon.resource-type-stylesheet .icon):
(.large .source-map-resource.resource-icon.resource-type-script .icon):
Large icon styles.

12:42 PM Changeset in webkit [198589] by keith_miller@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Array.prototype native functions' species constructors should work with proxies
​https://bugs.webkit.org/show_bug.cgi?id=155798

Reviewed by Mark Lam.

Before native the species constructors were checking if the this value was a JSArray.
Instead they should look check that the this value returns true on Array.isArray.

  • runtime/ArrayPrototype.cpp:

(JSC::speciesConstructArray):

  • tests/es6.yaml:
  • tests/stress/proxy-array-prototype-methods.js:
12:21 PM Changeset in webkit [198588] by Brent Fulgham
  • 4 edits
    2 adds in trunk

[WebGL] Non-power-of-two texture optimization
​https://bugs.webkit.org/show_bug.cgi?id=118409

Reviewed by Dean Jackson.

Source/WebCore:

Based on a patch by Przemyslaw Szymanski <​p.szymanski3@samsung.com>

This patch optimizes usage of handleNPOTTextures. We do not need to
iterate over each texture unit if no black textures were set. This
optimization provides a few more frames per seconds for certain
draw calls.

Tested by:
(1) Existing tests: webgl/resources/webgl_test_files/conformance/textures/texture-npot.html
(2) New test case: fast/canvas/webgl/texture-alternating-npot.html

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::compressedTexImage2D): Use new helper method.
(WebCore::WebGLRenderingContextBase::validateNPOTTextureLevel): Added.
(WebCore::WebGLRenderingContextBase::drawArrays): Only check texture completeness
if a black texture was used.
(WebCore::WebGLRenderingContextBase::drawElements): Ditto.
(WebCore::WebGLRenderingContextBase::texImage2DBase): Use new helper method.
(WebCore::WebGLRenderingContextBase::validateTexFunc): Ditto.
(WebCore::WebGLRenderingContextBase::checkTextureCompleteness): Return flag to indicate
if a black fallbacktexture was used.

  • html/canvas/WebGLRenderingContextBase.h:

LayoutTests:

  • fast/canvas/webgl/texture-alternating-npot-expected.txt: Added.
  • fast/canvas/webgl/texture-alternating-npot.html: Added.
11:00 AM Changeset in webkit [198587] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix for a new warning.

  • editing/VisibleSelection.cpp: (WebCore::makeSearchRange): Don't move when returning,

as that prevents copy elision.

9:48 AM Changeset in webkit [198586] by Keith Rollin
  • 2 edits in trunk/Tools

Unreviewed: add Keith Rollin to the committers list.

  • Scripts/webkitpy/common/config/contributors.json:
8:53 AM Changeset in webkit [198585] by timothy@apple.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: String double quoting in the console and elsewhere needs to escape backslash too

​https://bugs.webkit.org/show_bug.cgi?id=155752
rdar://problem/25293141

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Utilities.js:

(doubleQuotedString): Escape backslashes too.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createLinkifiedElementString): Ditto.

8:39 AM WebKitNightlyElCapWorkaround edited by timothy@apple.com
(diff)
8:36 AM WebKitNightlyElCapWorkaround edited by timothy@apple.com
Update to the latest workaround. (diff)
7:16 AM Changeset in webkit [198584] by Antti Koivisto
  • 5 edits in trunk/Source/WebCore

Share style by sharing RenderStyle substructures not the object itself
​https://bugs.webkit.org/show_bug.cgi?id=155787

Reviewed by Anreas Kling.

The current approach where we share RenderStyle objects between elements leads to lot of awkward and bug-prone code.
Most of the RenderStyle consists of shareable substructures. It is better to just share those.

With this patch we create shared styles with RenderStyle::clone(). Sharing is traced as state in Style::SharingResolver
instead of relying on RenderStyle equality to locate potential sharing cousins.

  • rendering/style/StyleRareNonInheritedData.cpp:

(WebCore::StyleRareNonInheritedData::operator==):

m_altText was missing from operator==
This was exposed by TreeResolver::resolveElement change, tested by fast/css/alt-inherit-initial.html

  • style/StyleSharingResolver.cpp:

(WebCore::Style::elementHasDirectionAuto):
(WebCore::Style::SharingResolver::resolve):

Save share results to a map.

(WebCore::Style::SharingResolver::findSibling):
(WebCore::Style::SharingResolver::locateCousinList):

Instead of traversing we can now just do a hash lookup to locate a candidate cousin list.
There is no need for recursion anymore, the map covers sharing beyond immediate siblings too.
Remove most tests here as they have been already covered when sharing occured.

(WebCore::Style::canShareStyleWithControl):

  • style/StyleSharingResolver.h:
  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::TreeResolver::resolveElement):

No need to do forced setting anymore just to support style sharing.

7:05 AM Changeset in webkit [198583] by Gyuyoung Kim
  • 23 edits in trunk/Source/WebCore

Reduce PassRefPtr uses in editing
​https://bugs.webkit.org/show_bug.cgi?id=155743

Reviewed by Darin Adler.

Use RefPtr<>&&, raw pointer, or reference in arugments instead of PassRefPtr.
Besides RefPtr is used if function may be able to return nullptr.

  • dom/Element.cpp:

(WebCore::Element::setOuterHTML):
(WebCore::Element::setInnerHTML):

  • dom/Range.cpp:

(WebCore::Range::createContextualFragment):

  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::setInnerHTML):

  • editing/CompositeEditCommand.cpp:

(WebCore::CompositeEditCommand::wrapContentsInDummySpan):

  • editing/CompositeEditCommand.h:
  • editing/DictationCommand.cpp:

(WebCore::DictationCommand::insertText):

  • editing/SplitTextNodeContainingElementCommand.cpp:

(WebCore::SplitTextNodeContainingElementCommand::doApply):

  • editing/TextInsertionBaseCommand.cpp:

(WebCore::TextInsertionBaseCommand::applyTextInsertionCommand):

  • editing/TextInsertionBaseCommand.h:
  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::deleteSelection):
(WebCore::TypingCommand::deleteKeyPressed):
(WebCore::TypingCommand::forwardDeleteKeyPressed):
(WebCore::TypingCommand::insertText):
(WebCore::TypingCommand::insertLineBreak):
(WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
(WebCore::TypingCommand::insertParagraphSeparator):
(WebCore::TypingCommand::lastTypingCommandIfStillOpenForTyping):
(WebCore::TypingCommand::closeTyping):
(WebCore::TypingCommand::ensureLastEditCommandHasCurrentSelectionIfOpenForMoreTyping):

  • editing/TypingCommand.h:
  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::firstRange):
(WebCore::makeSearchRange):

  • editing/VisibleSelection.h:
  • editing/WrapContentsInDummySpanCommand.cpp:

(WebCore::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):

  • editing/WrapContentsInDummySpanCommand.h:

(WebCore::WrapContentsInDummySpanCommand::create):

  • editing/atk/FrameSelectionAtk.cpp:

(WebCore::maybeEmitTextFocusChange):
(WebCore::FrameSelection::notifyAccessibilityForSelectionChange):

  • editing/htmlediting.cpp:

(WebCore::createOrderedListElement):
(WebCore::createUnorderedListElement):
(WebCore::createListItemElement):
(WebCore::createTabSpanElement):

  • editing/htmlediting.h:
  • editing/markup.cpp:

(WebCore::AttributeChange::AttributeChange):
(WebCore::ancestorToRetainStructureAndAppearanceForBlock):
(WebCore::styleFromMatchedRulesAndInlineDecl):
(WebCore::createFragmentForInnerOuterHTML):
(WebCore::createFragmentForTransformToFragment):
(WebCore::createContextualFragment):

  • editing/markup.h:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::insertAdjacentHTML):

  • xml/XSLTProcessor.cpp:

(WebCore::XSLTProcessor::transformToFragment):

2:15 AM Changeset in webkit [198582] by sbarati@apple.com
  • 8 edits
    2 adds in trunk

We should not disable inlining when the debugger is enabled
​https://bugs.webkit.org/show_bug.cgi?id=155741

Reviewed by Oliver Hunt.

Source/JavaScriptCore:

We can enable inlining when the debugger is enabled as long
as we make sure we still jettison the proper CodeBlocks when
a breakpoint is set. This means that for any optimized CodeBlock,
we must ask if any of its inlinees contain the breakpoint that
is being set. If any inlinees do contain the breakpoint, we must
jettison the machine code block that they are a part of.

  • debugger/Debugger.cpp:

(JSC::Debugger::toggleBreakpoint):
(JSC::Debugger::applyBreakpoints):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::setLocal):
(JSC::DFG::ByteCodeParser::flush):
(JSC::DFG::ByteCodeParser::flushForTerminal):
(JSC::DFG::ByteCodeParser::inliningCost):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::~Graph):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::hasDebuggerEnabled): Deleted.

  • dfg/DFGStackLayoutPhase.cpp:

(JSC::DFG::StackLayoutPhase::run):

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile):

LayoutTests:

  • inspector/debugger/breakpoint-with-inlining-expected.txt: Added.
  • inspector/debugger/breakpoint-with-inlining.html: Added.
2:11 AM Changeset in webkit [198581] by Yusuke Suzuki
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Allow undefined/null for Symbol.search and Symbol.match
​https://bugs.webkit.org/show_bug.cgi?id=155785

Reviewed by Saam Barati.

Undefined and null for Symbol.search and Symbol.match properties of the given RegExp (like) object are allowed.
When they are specified, we go to the fallback path; creating the RegExp with the given object and matching.

  • builtins/StringPrototype.js:

(match):
(search):

  • tests/stress/string-symbol-customization.js: Added.

(shouldBe):
(shouldThrow):

1:51 AM Changeset in webkit [198580] by Carlos Garcia Campos
  • 16 edits in trunk/Source

Use Region instead of IntRect in PageClient and WebPageProxy setViewNeedsDisplay method
​https://bugs.webkit.org/show_bug.cgi?id=155747

Reviewed by Darin Adler.

Source/WebCore:

Add helper function to make cairo region out of a WebCore::Region.

  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::toCairoRegion):

  • platform/graphics/cairo/CairoUtilities.h:

Source/WebKit2:

This way instead of calling setViewNeedsDisplay() for every
rectangle in the damage area, we can build a region and call
setViewNeedsDisplay() once. GTK+ has API to queue a redraw for a
given region, so we also avoid scheduling multiple redraws in GTK+
port.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::setViewNeedsDisplay): Convert the Region
into a cairo_region_t and use gtk_widget_queue_draw_region()
instyead of gtk_widget_queue_draw_area().

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::incorporateUpdate): Build a Region
with the damage rectangles and call
WebPageProxy::setViewNeedsDisplay() once.

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

(WebKit::WebPageProxy::setViewNeedsDisplay):

  • UIProcess/WebPageProxy.h:
  • UIProcess/efl/WebView.cpp:

(WebKit::WebView::setViewNeedsDisplay):

  • UIProcess/efl/WebView.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::setViewNeedsDisplay):

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

(WebKit::PageClientImpl::setViewNeedsDisplay):

1:21 AM Changeset in webkit [198579] by sbarati@apple.com
  • 2 edits in trunk/Source/WTF

SmallPtrSet leaks memory in its move assignment operator when !this->isSmall()
​https://bugs.webkit.org/show_bug.cgi?id=155701

Reviewed by Darin Adler.

  • wtf/SmallPtrSet.h:

(WTF::SmallPtrSet::SmallPtrSet):
(WTF::SmallPtrSet::operator=):

Mar 22, 2016:

10:46 PM Changeset in webkit [198578] by timothy_horton@apple.com
  • 6 edits in trunk/Source

Invoking a link preview on a complex link (e.g. an image) results in an empty TextIndicator
​https://bugs.webkit.org/show_bug.cgi?id=155779
<rdar://problem/22408793>

Reviewed by Simon Fraser.

  • page/FrameSnapshotting.cpp:

(WebCore::snapshotFrameRect):
(WebCore::snapshotFrameRectWithClip):

  • page/FrameSnapshotting.h:
  • page/TextIndicator.cpp:

(WebCore::takeSnapshot):
(WebCore::takeSnapshots):
(WebCore::initializeIndicator):
When snapshotting, clip to the indicated range's rects. This is important
to avoid painting into the margins in the non-selection-only painting case.
This didn't come up with normal selection-only painting because the text
didn't intersect the margin, and the background doesn't paint.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::dictionaryPopupInfoForRange):
(WebKit::WebPage::performImmediateActionHitTestAtLocation):
Use the TextIndicator mode where we give up on selection-only snapshotting
and just paint all content on Mac, similar to what we do for 3D Touch indicators.

9:29 PM Changeset in webkit [198577] by Darin Adler
  • 3 edits in trunk/LayoutTests

Tiny tweak to test I just landed.

  • http/tests/security/cross-origin-modal-dialog-base-expected.txt:

Fix expected result now that I fixed the less than sign.

  • http/tests/security/cross-origin-modal-dialog-base.html:
9:19 PM Changeset in webkit [198576] by Darin Adler
  • 2 edits in trunk

straighten quotes in ChangeLog

9:16 PM Changeset in webkit [198575] by Darin Adler
  • 4 edits
    4 adds in trunk

showModalDialog code runs with “first window” set to wrong window
​https://bugs.webkit.org/show_bug.cgi?id=155710

Source/WebCore:

Reviewed by Brent Fulgham.

Test: http/tests/security/cross-origin-modal-dialog-base.html

  • page/Chrome.cpp:

(WebCore::Chrome::runModal): Null out entryScope so that the "first window"
checks inside the modal dialog won't run in the context of the original window
that presented the dialog.

LayoutTests:

Test by John Wilander.

Reviewed by Brent Fulgham.

  • http/tests/security/cross-origin-modal-dialog-base-expected.txt: Added.
  • http/tests/security/cross-origin-modal-dialog-base.html: Added.
  • http/tests/security/resources/cross-origin-modal-dialog-base-1.html: Added.
  • http/tests/security/resources/cross-origin-modal-dialog-base-2.html: Added.
  • platform/wk2/TestExpectations: Skip test until we get better showModalDialog support.
8:28 PM Changeset in webkit [198574] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

userSpaceOnUse patterns are not stroked for empty object bounding box elements
​https://bugs.webkit.org/show_bug.cgi?id=109758

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2016-03-22
Reviewed by Brent Fulgham.
Source/WebCore:

Checking whether the patternUnits is objectBoundingBox needs to be done
after calling collectPatternAttributes(). Otherwise the default value
will be always checked which is 'objectBoundingBox'.

Tests: svg/custom/pattern-units-fill-stroke.svg

  • rendering/svg/RenderSVGResourcePattern.cpp:

(WebCore::RenderSVGResourcePattern::buildPattern):
(WebCore::RenderSVGResourcePattern::applyResource):

LayoutTests:

Ensure the SVG pattern is drawn correctly if it is used as a stroke for
empty objectBoundingBox elements.

  • svg/custom/pattern-units-fill-stroke-expected.svg: Added.
  • svg/custom/pattern-units-fill-stroke.svg: Added.
7:30 PM Changeset in webkit [198573] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Fix a typo.

  • config.json:
7:12 PM Changeset in webkit [198572] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] correctly handle indexed properties in Object.getOwnPropertyDescriptors
​https://bugs.webkit.org/show_bug.cgi?id=155563

Patch by Caitlin Potter <​caitp@igalia.com> on 2016-03-22
Reviewed by Saam Barati.

  • runtime/JSObject.h:

(JSC::JSObject::putOwnDataPropertyMayBeIndex):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptors):

6:39 PM Changeset in webkit [198571] by ggaren@apple.com
  • 11 edits in trunk/Source/bmalloc

bmalloc: use a log scale for large-ish size classes
​https://bugs.webkit.org/show_bug.cgi?id=155770

Reviewed by Michael Saboff.

At larger sizes, precise allocation sizes don't save much memory -- and
they can cost memory when objects of distinct size classes can't
allocate together.

This is a small savings up to our current allocation limits, and it may
enable changing those limits in the long term.

  • bmalloc/Algorithm.h:

(bmalloc::log2): We use this to compute large-ish size classes.

  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::Allocator): Iterate by size class instead of by
object size so we can change object size limits without breaking stuff.

(bmalloc::Allocator::scavenge): Ditto.

(bmalloc::Allocator::allocateLogSizeClass): New helper function for
allocating based on log size classes.

(bmalloc::Allocator::allocateSlowCase): Account for extra size class
possibilities.

  • bmalloc/Allocator.h:

(bmalloc::Allocator::allocateFastCase): We only handle up to 512b on
the fastest fast path now.

  • bmalloc/BumpAllocator.h:

(bmalloc::BumpAllocator::validate): Deleted. I noticed that this function
had been refactored not to do anything anymore.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::initializeLineMetadata): Iterate by size class. (See
Allocator::Allocator.)

  • bmalloc/Heap.h: Use the sizeClassCount constant instead of hard coding

things.

  • bmalloc/Sizes.h:

(bmalloc::Sizes::maskSizeClass):
(bmalloc::Sizes::maskObjectSize):
(bmalloc::Sizes::logSizeClass):
(bmalloc::Sizes::logObjectSize):
(bmalloc::Sizes::sizeClass):
(bmalloc::Sizes::objectSize): Separate size class calculation between
simple size classes that can be computed with a mask and are 8-byte-precise
and complex size classes that require more math and are less precise.

  • bmalloc/SmallLine.h:

(bmalloc::SmallLine::ref):

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage):
(bmalloc::SmallPage::ref):
(bmalloc::SmallPage::deref): Cleaned up some ASSERTs that triggered
while working on this patch.

  • bmalloc/Zone.cpp:

(bmalloc::statistics):
(bmalloc::zoneSize):
(bmalloc::Zone::Zone):
(bmalloc::size): Deleted. Renamed these symbols to work around an lldb
bug that makes it impossible to print out variables named 'size' -- which
can be a problem when working on malloc.

6:38 PM Changeset in webkit [198570] by sbarati@apple.com
  • 11 edits in trunk/Source/JavaScriptCore

We should FTL compile code when the debugger is enabled
​https://bugs.webkit.org/show_bug.cgi?id=155740

Reviewed by Oliver Hunt.

There was no fundamental reason why we didn't support debugging
with the FTL. It looks like this was just an oversight. We had
a Breakpoint node in the DFG that amounted to a nop. By removing
this node, we now support debugging in the FTL. Anytime a breakpoint
is set, we will jettison any DFG/FTL CodeBlocks that contain the breakpoint
that was set.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

6:19 PM Changeset in webkit [198569] by bshafiei@apple.com
  • 2 edits in tags/Safari-602.1.25/Source/WebKit2

Merged r198562. rdar://problem/25301027

5:58 PM Changeset in webkit [198568] by mmaxfield@apple.com
  • 9 edits in trunk/Source/WebCore

Use references instead of pointers for absolute positioning code
​https://bugs.webkit.org/show_bug.cgi?id=155775

Reviewed by Simon Fraser.

There are many pointers which will never be null in this code. This patch
migrates them to use references.

No new tests because there is no behavior change.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::marginBeforeEstimateForChild):
(WebCore::RenderBlockFlow::insertFloatingObject):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::constrainLogicalWidthInRegionByMinMax):
(WebCore::RenderBox::shrinkLogicalWidthToAvoidFloats):
(WebCore::RenderBox::computeLogicalWidthInRegion):
(WebCore::RenderBox::computeLogicalWidthInRegionUsing):
(WebCore::RenderBox::computeInlineDirectionMargins):
(WebCore::RenderBox::renderBoxRegionInfo):
(WebCore::RenderBox::computeLogicalHeight):
(WebCore::RenderBox::skipContainingBlockForPercentHeightCalculation):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalWidthUsing):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::RenderBox::availableLogicalHeightUsing):
(WebCore::RenderBox::computeBlockDirectionMargins):
(WebCore::RenderBox::computeAndSetBlockDirectionMargins):
(WebCore::RenderBox::containingBlockLogicalWidthForPositioned):
(WebCore::RenderBox::containingBlockLogicalHeightForPositioned):
(WebCore::computeInlineStaticDistance):
(WebCore::RenderBox::computePositionedLogicalWidth):
(WebCore::computeLogicalLeftPositionedOffset):
(WebCore::RenderBox::computePositionedLogicalWidthUsing):
(WebCore::computeBlockStaticDistance):
(WebCore::RenderBox::computePositionedLogicalHeight):
(WebCore::computeLogicalTopPositionedOffset):
(WebCore::RenderBox::computePositionedLogicalHeightUsing):
(WebCore::RenderBox::computePositionedLogicalWidthReplaced):
(WebCore::RenderBox::computePositionedLogicalHeightReplaced):
(WebCore::percentageLogicalHeightIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasDefiniteLogicalHeight):
(WebCore::RenderBox::hasUnsplittableScrollingOverflow):

  • rendering/RenderBox.h:
  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
(WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):
(WebCore::RenderFlexibleBox::applyStretchAlignmentToChild):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::minSizeForChild):
(WebCore::RenderGrid::computeMarginLogicalHeightForChild):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::updateLogicalWidth):

  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::layout):

5:49 PM Changeset in webkit [198567] by Jon Davis
  • 2 edits in trunk/Source/WebCore

Add Download Attribute to the Feature Status page
​https://bugs.webkit.org/show_bug.cgi?id=155772

Reviewed by Timothy Hatcher.

  • features.json:
5:47 PM Changeset in webkit [198566] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

CachedResource::MediaResource types shouldn't be blocked due to mixed-content.
​https://bugs.webkit.org/show_bug.cgi?id=155588
<rdar://problem/25177795>

Reviewed by Brent Fulgham.

Follow-up to address crashes caused by r198549. Rather than destroy MediaResourceLoader on a background thread,
migrate the Ref to the main thread before releasing.

  • platform/graphics/PlatformMediaResourceLoader.h:
  • platform/network/cocoa/WebCoreNSURLSession.mm:

(-[WebCoreNSURLSession dealloc]):

5:19 PM Changeset in webkit [198565] by keith_miller@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

REGRESSION(r197543): Use-after-free on storage/indexeddb/transaction-abort-private.html
​https://bugs.webkit.org/show_bug.cgi?id=155067

Reviewed by Filip Pizlo.

GCIncommingRefCountedSets need to be finalized before we start
destructing members of the Heap object. Previously, we would
clear all our ArrayBuffer objects when the GCIncommingRefCountedSet
holding them was destroyed. However, ArrayBuffers have a weak
reference to their wrappers. When we would attempt to destroy the
ArrayBuffer object we would end up accessing the WeakImpl for
the weak reference, which had already been freed as we destroyed
our weak block. The solution to this is to move the old
GCIncommingRefCountedSet destructor functionality to a new
function lastChanceToFinalize. This function is called when
we finalize our other objects on Heap destruction.

  • heap/GCIncomingRefCountedSet.h:
  • heap/GCIncomingRefCountedSetInlines.h:

(JSC::GCIncomingRefCountedSet<T>::lastChanceToFinalize):
(JSC::GCIncomingRefCountedSet<T>::~GCIncomingRefCountedSet): Deleted.

  • heap/Heap.cpp:

(JSC::Heap::lastChanceToFinalize):

5:19 PM WebKitNightlyElCapWorkaround edited by beidson@apple.com
(diff)
5:12 PM Changeset in webkit [198564] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Post-review test update after r198560
​https://bugs.webkit.org/show_bug.cgi?id=155533

Unreviewed.

  • fast/scrolling/rtl-scrollbars-positioning-expected.html:
  • fast/scrolling/rtl-scrollbars-positioning.html:
4:47 PM Changeset in webkit [198563] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Switching Timelines via Path Component does not work
​https://bugs.webkit.org/show_bug.cgi?id=155767
<rdar://problem/25298945>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-22
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._timelinePathComponentSelected):
(WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):

4:33 PM Changeset in webkit [198562] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix HTTPS on Mac using NSURLSession after r198457
​https://bugs.webkit.org/show_bug.cgi?id=155774
<rdar://problem/25301027>

Reviewed by Anders Carlsson.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSession::NetworkSession):
r198457 was intended to fix an issue on iOS and have no change in behavior on Mac.
It did have a subtle change in behavior, setting the source application bundle identifier
on iOS and was causing problems with HTTPS connections using NSURLSession, so this patch
reverts that change.

3:27 PM Changeset in webkit [198561] by commit-queue@webkit.org
  • 7 edits
    1 copy
    2 moves
    21 adds in trunk

Restrict WebSockets header parsing according to RFC6455 and RFC7230. Based on Lamarque V. Souza's original patch.
​https://bugs.webkit.org/show_bug.cgi?id=82714

Patch by John Wilander <​wilander@apple.com> on 2016-03-22
Reviewed by Brent Fulgham.

Source/WebCore:

Tests: http/tests/websocket/tests/hybi/error-event-ready-state-non-existent-url-with-server-responding-404.html

http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version.html
http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept.html
http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions.html
http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol.html
http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line.html
http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status.html
http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1.html

  • Modules/websockets/WebSocketHandshake.cpp:

(WebCore::WebSocketHandshake::httpURLForAuthenticationAndCookies):
(WebCore::headerHasValidHTTPVersion):

  • Check for HTTP version 1.1 and above.

(WebCore::WebSocketHandshake::readStatusLine):

  • Only allow ASCII characters in status line.
  • Only allow HTTP version 1.1 and above in status line.

(WebCore::WebSocketHandshake::readHTTPHeaders):

  • Only allow ASCII characters in values for new HTTP headers.

LayoutTests:

  • http/tests/websocket/tests/hybi/error-event-ready-state-expected.txt: Removed.
    • See comment below on the associated HTML file.
  • http/tests/websocket/tests/hybi/error-event-ready-state-non-existent-url-with-server-responding-404-expected.txt: Added.
  • http/tests/websocket/tests/hybi/error-event-ready-state-non-existent-url-with-server-responding-404.html: Added.
    • Uses PHP to respond with an HTTP 1.1 404. The old (now removed) test case failed once we restricted WebSockets to HTTP 1.1 and above because the test server responded with an HTTP 1.0 404 for non-existing files.
  • http/tests/websocket/tests/hybi/error-event-ready-state.html: Removed.
    • This test case was renamed "error-event-ready-state-non-existent-url-with-server-responding-404" to make it clear it now relies on a server responding with HTTP 1.1 404.
  • http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-invalid-http-version_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for lower than HTTP 1.1 versions.
  • http/tests/websocket/tests/hybi/handshake-fail-by-more-accept-header-expected.txt:
  • http/tests/websocket/tests/hybi/handshake-fail-by-more-extensions-header-expected.txt:
  • http/tests/websocket/tests/hybi/handshake-fail-by-more-protocol-header-expected.txt:
    • Updated to pass with lowercase 'must not' in the failure reason.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-accept_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for non-ASCII characters in new HTTP header Sec-WebSocket-Accept.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-extensions_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for non-ASCII characters in new HTTP header Sec-WebSocket-Extensions.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-header-value-sec-websocket-protocol_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for non-ASCII characters in new HTTP header Sec-WebSocket-Protocol.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-non-ascii-status-line_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for non-ASCII characters in HTTP status line.
  • http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status.html: Added.
  • http/tests/websocket/tests/hybi/handshake-fail-by-null-char-in-status_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for null character in the middle of the HTTP status line.
  • http/tests/websocket/tests/hybi/handshake-fail-by-prepended-null_wsh.py:

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • This test case was changed to prepend a null character to the actual status line. Previously it used a WebSockets frame with a prepended null before the status line. The Python WebSockets lib uses non-ASCII characters in that frame which meant the test case hit the non-ASCII check before the null check. It was confusing to me that the description and intent of the test was to run with a null in the status line, not in a frame before the status line. I believe the changed test case better reflects the intention of the test.
  • http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1-expected.txt: Added.
  • http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1.html: Added.
  • http/tests/websocket/tests/hybi/handshake-ok-with-http-version-beyond-1_1_wsh.py: Added.

(web_socket_do_extra_handshake):
(web_socket_transfer_data):

  • Test case for HTTP versions higher than 1.1.
  • http/tests/websocket/tests/hybi/resources/status-404-without-body.php: Added.
    • To use with the error-event-ready-state-non-existent-url-with-server-responding-404.html test described above.
3:15 PM Changeset in webkit [198560] by mmaxfield@apple.com
  • 9 edits
    2 adds in trunk

[RTL Scrollbars] Position: absolute divs are covered by vertical scrollbar
​https://bugs.webkit.org/show_bug.cgi?id=155533

Reviewed by Darin Adler.

Source/WebCore:

This patch changes the behavior of position: absolute elements when their
containing block has overflow: scroll in RTL scrollbar mode. Previously, we
were only adjusting the overflow calculation for such elements (but not
their position calculation). This patch updates the position calculation,
which automatically makes the overflow calculation work propertly, so the
old calculation is no longer necessary.

This patch also updates iframes to appropriately move their dirty rects
and their painting CTM by the scrollbar width when traversing frame
boundaries. This fixes all our existing RTL scrollbar RTL tests.

The RTL scrollbar tests are only marked as passing on certain OSes, so these
tests are transitioning from failing to passing in that other repository.

Test: fast/scrolling/rtl-scrollbars-positioning.html

fast/scrolling/rtl-scrollbars-overflow-elementFromPoint.html
fast/scrolling/rtl-scrollbars-overflow-position-absolute.html
fast/scrolling/rtl-scrollbars-iframe-offset.html
fast/scrolling/rtl-scrollbars-iframe-position-absolute.html
fast/scrolling/rtl-scrollbars-iframe-scrolled.html
fast/scrolling/rtl-scrollbars-iframe.html

  • platform/ScrollView.cpp:

(WebCore::ScrollView::paint):
(WebCore::ScrollView::locationOfContents):

  • platform/ScrollView.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::repaintLayerDirtyRects):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addOverflowFromPositionedObjects):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::computePositionedLogicalWidth):

  • rendering/RenderView.cpp:

(WebCore::RenderView::repaintViewRectangle):

LayoutTests:

  • TestExpectations:
  • fast/scrolling/rtl-scrollbars-positioning-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-positioning.html: Added.
3:14 PM Changeset in webkit [198559] by peavo@outlook.com
  • 16 edits
    1 delete in trunk

[Win] [64-bit] Remove MSVC 2013 FMA3 Bug Workaround
​https://bugs.webkit.org/show_bug.cgi?id=141499

Reviewed by Brent Fulgham.

As we have moved on to VS2015, this workaround is no longer needed.

Source/JavaScriptCore:

  • API/tests/testapi.c:

(main):

(wWinMain):

  • jsc.cpp:

(main):

  • testRegExp.cpp:

(main):

Source/WebKit/win:

  • WebKitDLL.cpp:

(DllMain):

Source/WTF:

  • wtf/PlatformWin.cmake:
  • wtf/win/WTFDLL.cpp: Removed.

Tools:

  • DumpRenderTree/cg/ImageDiffCG.cpp:

(main):

  • DumpRenderTree/win/DumpRenderTree.cpp:

(main):

  • DumpRenderTree/win/ImageDiffCairo.cpp:

(main):

  • MiniBrowser/win/Common.cpp:

(DllMain):

  • TestWebKitAPI/win/main.cpp:

(main):

  • win/DLLLauncher/DLLLauncherMain.cpp:

(wWinMain):

3:13 PM Changeset in webkit [198558] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/console/console-api.html as flaky on Mac
​https://bugs.webkit.org/show_bug.cgi?id=143719

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:05 PM Changeset in webkit [198557] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

Allow the use of custom styles and scripts for blog posts
​https://bugs.webkit.org/show_bug.cgi?id=155768

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/functions.php:
2:49 PM Changeset in webkit [198556] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Fixing a typo in the Mac TestExpectations file.

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:44 PM Changeset in webkit [198555] by timothy@apple.com
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Consider Automation script names as internal and hide them

​https://bugs.webkit.org/show_bug.cgi?id=155753
rdar://problem/25293310

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Utilities.js:

(isWebKitInternalScript): Renamed from isWebInspectorDebugScript.
Check for "Web" prefix and "" suffix.

  • UserInterface/Controllers/DebuggerManager.js:

(WebInspector.DebuggerManager):
(WebInspector.DebuggerManager.prototype.get knownNonResourceScripts):
(WebInspector.DebuggerManager.prototype.reset):
(WebInspector.DebuggerManager.prototype.debuggerDidPause):
(WebInspector.DebuggerManager.prototype.scriptDidParse):
(WebInspector.DebuggerManager.prototype._debugUIEnabledDidChange):
Renamed _inspectorDebugScripts to _internalWebKitScripts. And renamed
isWebInspectorDebugScript to isWebKitInternalScript.

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject.prototype.findFunctionSourceCodeLocation):
Renamed isWebInspectorDebugScript to isWebKitInternalScript.

2:42 PM Changeset in webkit [198554] by msaboff@apple.com
  • 20 edits
    2 adds in trunk

[ES6] Implement RegExp.prototype[@@match]
​https://bugs.webkit.org/show_bug.cgi?id=155711

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Implemented ES6 spec for String.prototype.match and RegExp.prototype[@@match].
Implemented both as builtins, with String.prototype.match calling
RegExp.prototype[@@match].

For performance reasons, RegExp.prototype[@@match] has a C++ fast path when
RegExp.prototype.exec has not been overridden. This fast path,
RegExpObject::matchGlobal, was taken from the prior StringPrototype::match.
It only handles global matches.

Added new test, stress/regexp-match.js.

Updated various tests for changes exception string and now passing ES6 behavior.

  • CMakeLists.txt:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:

Added builtins/RegExpPrototype.js and eliminated RegExpPrototype.lut.h.

  • builtins/RegExpPrototype.js: Added.

(match.advanceStringIndexUnicode): Helper.
(match): Implements RegExp.prototype[@@match].

  • builtins/StringPrototype.js:

(match): Implements String.prototype.match.

  • bytecode/BytecodeIntrinsicRegistry.cpp:

(JSC::BytecodeIntrinsicRegistry::BytecodeIntrinsicRegistry):
(JSC::BytecodeIntrinsicRegistry::lookup):

  • bytecode/BytecodeIntrinsicRegistry.h:
  • runtime/CommonIdentifiers.h:

Added Symbol.match and builtins @match and @exec.

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

(JSC::RegExpObject::matchGlobal): Added.
(JSC::RegExpObject::advanceStringUnicode): Added helper.

  • runtime/RegExpPrototype.cpp:
  • runtime/RegExpPrototype.h:

(JSC::RegExpPrototype::RegExpPrototype):
(JSC::RegExpPrototype::finishCreation):
(JSC::RegExpPrototype::visitChildren):
(JSC::regExpProtoFuncMatchPrivate):
(JSC::RegExpPrototype::getOwnPropertySlot): Deleted.
(JSC::RegExpPrototype::create):
Restructured to create properties explicitly due to having two names for native regExpProtoFuncExec.

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
Made match a builtin.
Removed unused declaration of stringProtoFuncSearch() since it was made a builtin.

  • tests/es6.yaml:
  • tests/stress/regexp-match.js: Added.

(shouldBe):
(shouldThrow):
(errorKey.toString):
(primitive.of.primitives.shouldThrow):
(testRegExpMatch):
(testMatch):
(testBoth):
(alwaysUnmatch):

LayoutTests:

Updated tests for exception string changes and added Symbol.match.

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/dom/string-prototype-properties-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • sputnik/Conformance/15_Native_Objects/15.5_String/15.5.4/15.5.4.10_String.prototype.match/S15.5.4.10_A1_T3-expected.txt:
2:31 PM Changeset in webkit [198553] by Antti Koivisto
  • 3 edits in trunk/Source/WebCore

Non-const DocumentRuleSets::features() does not check default style version
​https://bugs.webkit.org/show_bug.cgi?id=155766

Reviewed by Andreas Kling.

This may leave it out of date when the default stylesheet expands.

No test, don't know how to hit this with current codebase. With some further optimizations
it starts affecting some tests involving UA media control stylesheets.

  • css/DocumentRuleSets.h:

(WebCore::DocumentRuleSets::mutableFeatures):

Check the default style version number in non-const case too.

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

Web Inspector: REGRESSION: Shift + Click on record button should create a new recording
​https://bugs.webkit.org/show_bug.cgi?id=155763

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-22
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.prototype._recordButtonClicked):
Use the shiftKey from the DOM Event.

2:27 PM Changeset in webkit [198551] by dbates@webkit.org
  • 4 edits
    4 adds in trunk

CSP: Should only execute <script> or apply <style> if its hash appears in all policies
​https://bugs.webkit.org/show_bug.cgi?id=155709
<rdar://problem/25263368>

Reviewed by Darin Adler.

Source/WebCore:

Fixes an issue where a <script>/<style> was allowed to execute/be applied if its hash is listed
in at least one Content Security Policy (CSP) delivered with the page. We should only execute/apply
such a script/stylesheet if its hash is listed in all CSPs delivered with the page.

Tests: http/tests/security/contentSecurityPolicy/1.1/scripthash-multiple-policies.html

http/tests/security/contentSecurityPolicy/1.1/stylehash-multiple-policies.html

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::isAllowedByAllWithHash): Added. Checks if the specified hash is allowed by all policies.
(WebCore::isAllowedByAllWithHashFromContent): Modified to call WebCore::isAllowedByAllWithHash()
to determine if the <script>/<style> is allowed by all CSPs delivered with the page.

LayoutTests:

Add tests to ensure that we only execute/apply a <script>/<style> if its hash is listed in all CSPs
delivered with the page.

  • TestExpectations: Mark added tests as PASS so that we run them.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-multiple-policies-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-multiple-policies.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-multiple-policies-expected.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-multiple-policies.html: Added.
2:15 PM Changeset in webkit [198550] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Switching Away and Back to Timelines Tab may select a different Timeline
​https://bugs.webkit.org/show_bug.cgi?id=155742
<rdar://problem/25284330>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-22
Reviewed by Timothy Hatcher.

When switching to the Timeline tab, or switching recordings within the
the Timeline tab, the TimelineTabContentView does work to correctly
save/restore its view state.

When switching to the Timeline tab, the TimelineTabContentView correctly
restores the state of the tab, but when showing the RecordingContentView
the RecordingContentView restores its state from a stale cookie.

Since TimelineTabContentView already seems to handle correctly restoring
RecordingContentViews on its own. Removing the RecordingContentView's
implementation of save/restore made everything work as expected.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype.saveToCookie): Deleted.
(WebInspector.TimelineRecordingContentView.prototype.restoreFromCookie): Deleted.

1:56 PM Changeset in webkit [198549] by jer.noble@apple.com
  • 3 edits in trunk/Source/WebCore

CRASH in WebCore::MediaResourceLoader::requestResource + 698
​https://bugs.webkit.org/show_bug.cgi?id=155651
<rdar://problem/25130582>

Reviewed by Eric Carlson.

No new tests, fixes existing tests running under GuardMalloc.

Protect against the Document passed into MediaResourceLoader being destroyed during the MediaResourceLoader's lifetime.

  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::MediaResourceLoader):
(WebCore::MediaResourceLoader::contextDestroyed):
(WebCore::MediaResourceLoader::requestResource):
(WebCore::MediaResource::responseReceived):

  • loader/MediaResourceLoader.h:
1:29 PM Changeset in webkit [198548] by Matt Baker
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: remove the remaining TimelineSidebarPanel references
​https://bugs.webkit.org/show_bug.cgi?id=155765
<rdar://problem/25296980>

Reviewed by Timothy Hatcher.

Remove dead code from TimelineView and TimelineTabContentView.

  • UserInterface/Views/OverviewTimelineView.js:

(WebInspector.OverviewTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.OverviewTimelineView.prototype.showContentViewForTreeElement): Deleted.

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WebInspector.RenderingFrameTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.RenderingFrameTimelineView.prototype.showContentViewForTreeElement): Deleted.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WebInspector.ScriptDetailsTimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.ScriptDetailsTimelineView.prototype.showContentViewForTreeElement): Deleted.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView):

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView.prototype.canShowContentViewForTreeElement): Deleted.
(WebInspector.TimelineView.prototype.showContentViewForTreeElement): Deleted.

1:21 PM Changeset in webkit [198547] by Beth Dakin
  • 11 edits in trunk/Source

Advanced spell checking should be guarded behind
HAVE(ADVANCED_SPELL_CHECKING)
​https://bugs.webkit.org/show_bug.cgi?id=155738

Reviewed by Geoff Garen.

Source/WebCore:

  • config.h:

(WebCore::ScrollableArea::systemLanguageIsRTL):

  • platform/spi/mac/NSSpellCheckerSPI.h:

Source/WebKit/mac:

  • WebCoreSupport/WebEditorClient.mm:

(insertionPointFromCurrentSelection):
(WebEditorClient::checkTextOfParagraph):
(WebEditorClient::getGuessesForWord):
(WebEditorClient::requestCandidatesForSelection):
(WebEditorClient::handleRequestedCandidates):
(WebEditorClient::requestCheckingOfString):

  • WebKitPrefix.h:
  • WebView/WebHTMLView.mm:

(-[WebHTMLView insertText:]):

Source/WebKit2:

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::requestCandidatesForSelectionIfNeeded):
(WebKit::WebViewImpl::handleRequestedCandidates):
(WebKit::WebViewImpl::insertText):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):

  • config.h:
12:39 PM Changeset in webkit [198546] by ggaren@apple.com
  • 4 edits
    2 deletes in trunk/PerformanceTests

MallocBench: consolidate regression testing for aligned allocation
​https://bugs.webkit.org/show_bug.cgi?id=155762

Reviewed by Michael Saboff.

  • MallocBench/MallocBench.xcodeproj/project.pbxproj:
  • MallocBench/MallocBench/Benchmark.cpp:
  • MallocBench/MallocBench/memalign.cpp: Removed.
  • MallocBench/MallocBench/memalign.h: Removed. The stress_aligned test

covers this and much more.

  • MallocBench/MallocBench/stress_aligned.cpp:

(benchmark_stress_aligned): Include specific tests for extreme sizes
and alignments.

12:39 PM Changeset in webkit [198545] by ggaren@apple.com
  • 5 edits in trunk/Source/bmalloc

bmalloc: shrink largeMax
​https://bugs.webkit.org/show_bug.cgi?id=155759

Reviewed by Michael Saboff.

If a largeChunk contains N bytes and we allocate objects of size
N / 2 + 8 bytes, then we waste 50% of physical memory at peak.

This patch sets largeMax to N / 2, reducing maximum waste to 25%.

  • bmalloc/BoundaryTag.h:
  • bmalloc/LargeChunk.h:

(bmalloc::LargeChunk::LargeChunk):

  • bmalloc/SegregatedFreeList.cpp:

(bmalloc::SegregatedFreeList::SegregatedFreeList):
(bmalloc::SegregatedFreeList::insert): Honor largeMax vs largeObjectMax.

  • bmalloc/Sizes.h: Distinguish between the largest thing we can store

in a free list (largeObjectMax) and the largest thing we're willing to
allocate (largeMax).

12:21 PM Changeset in webkit [198544] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Add a setting to let the client toggle support for network cache speculative validation
​https://bugs.webkit.org/show_bug.cgi?id=155622
<rdar://problem/25233209>

Reviewed by Antti Koivisto.

Copy new m_diskCacheSpeculativeValidationEnabled member introduced
in r198470 in ProcessPoolConfiguration::copy().

  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

12:17 PM Changeset in webkit [198543] by n_wang@apple.com
  • 5 edits in trunk

AX: Change "dialog" role description to "web dialog" so users can distinguish from native alerts
​https://bugs.webkit.org/show_bug.cgi?id=154292

Reviewed by Chris Fleizach.

Source/WebCore:

Changed role descriptions for "dialog" and "alert dialog" roles as required.

No new tests needed.

  • English.lproj/Localizable.strings:

LayoutTests:

  • platform/mac-mavericks/accessibility/roles-exposed-expected.txt:
  • platform/mac/accessibility/roles-exposed-expected.txt:
12:12 PM Changeset in webkit [198542] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Add null check in CachedResourceLoader::determineRevalidationPolicy
​https://bugs.webkit.org/show_bug.cgi?id=155758
rdar://problem/25108408

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-22
Reviewed by Jer Noble.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::frame):
(WebCore::CachedResourceLoader::determineRevalidationPolicy):
Null-check frame() before dereferencing it.

12:09 PM FiveYearPlanFall2015 edited by Simon Fraser
(diff)
12:08 PM Changeset in webkit [198541] by dbates@webkit.org
  • 8 edits in trunk

CSP: Check inline event handlers on each run, not only the first
​https://bugs.webkit.org/show_bug.cgi?id=115700
<rdar://problem/24211159>

Reviewed by Andy Estes.

Source/WebCore:

Fixes an issue where an inline event handler would always be allowed to execute if it
executed at least once.

Currently we query whether the Content Security Policy (CSP) of the page permits inline event
handlers each time we register a new handler for an event. And a handler is registered exactly
once the first time the event associated with it is dispatched. Once a handler is registered
as a listener for an event E then we will always invoke the handler when event E is dispatched
regardless of whether the CSP of the page changes (say, as a result of programmatically inserting
a <meta http-equiv="Content-Security-Policy">). Instead we should always check the
CSP of the page whenever we are going to invoke an event handler.

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent): Check the CSP of the page and bail out if the
policy does not permit execution of an inline event handler.

  • bindings/js/JSEventListener.h:

(WebCore::JSEventListener::sourceURL): Added. Default implementation that returns an empty string.
(WebCore::JSEventListener::sourcePosition): Added. Default implementation that returns a default position.

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::JSLazyEventListener): Update code following instance variable
renaming in JSLazyEventListener.h.
(WebCore::JSLazyEventListener::initializeJSFunction): Ditto.

  • bindings/js/JSLazyEventListener.h: Override JSEventListener::sourceURL() and JSEventListener::sourcePosition().

Changed all mutable instance variables to immutable ones as we do not modify these variables
in any const member functions. Also renamed instance variable m_position to m_sourcePosition
to better describe that it represents the source code position where the event handler was defined.

LayoutTests:

Update expected result for test http/tests/security/contentSecurityPolicy/inline-event-handler-blocked-after-injecting-meta.html
and remove its entry from file LayoutTests/TestExpectations now that it passes.

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/inline-event-handler-blocked-after-injecting-meta-expected.txt:
11:53 AM FiveYearPlanFall2015 edited by Simon Fraser
(diff)
11:28 AM Changeset in webkit [198540] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping media/media-document-audio-repaint.html on El Capitan Debug WK2
​https://bugs.webkit.org/show_bug.cgi?id=155757

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:08 AM Changeset in webkit [198539] by bshafiei@apple.com
  • 3 edits
    1 copy in tags/Safari-602.1.25/Source/WebKit2

Roll out r198352. rdar://problem/25203492

11:03 AM Changeset in webkit [198538] by jer.noble@apple.com
  • 2 edits
    2 adds in trunk

Media elements allowed to play without a user gesture, but requiring fullscreen playback, should not be allowed to autoplay.
​https://bugs.webkit.org/show_bug.cgi?id=155599

Reviewed by Darin Adler.

Test: media/video-autoplay-allowed-but-fullscreen-required.html

Entering fullscreen should always require a user gesture.

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::playbackPermitted):

10:59 AM Changeset in webkit [198537] by Matt Baker
  • 11 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Timelines UI redesign: Provide a way to configure which instruments to use
​https://bugs.webkit.org/show_bug.cgi?id=153672
<rdar://problem/24417575>

Reviewed by Timothy Hatcher.

Adds UI for configuring a timeline recording's instrument list. TimelineManager
maintains the list of supported timeline types, and tracks the subset
of user-configured timelines which are used to create the instrument list
that is passed to new recordings.

  • Localizations/en.lproj/localizedStrings.js:

New strings for "Edit" Timelines button.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager):
Added setting for user-configured (enabled) timeline types.
Initialized to the default timeline types.

(WebInspector.TimelineManager.defaultTimelineTypes):
(WebInspector.TimelineManager.availableTimelineTypes):
Get the list of all supported timeline types, which is a superset
of the list of default timeline types.

(WebInspector.TimelineManager.prototype.get enabledTimelineTypes):
(WebInspector.TimelineManager.prototype.set enabledTimelineTypes):
List of user-configured timeline types, backed by a Setting.
(WebInspector.TimelineManager.prototype._loadNewRecording):
Create new recordings with the current user-configured instrument list.
(WebInspector.TimelineManager.defaultInstruments): Deleted.
Renamed defaultTimelineTypes.

  • UserInterface/Main.html:

New class, TimelineTreeElement.

  • UserInterface/Models/Instrument.js:

(WebInspector.Instrument.createForTimelineType):
Factory method for creating Instruments.

  • UserInterface/Models/TimelineRecording.js:

(WebInspector.TimelineRecording):
Replace fixed instrument list with TimelineManager's list.
(WebInspector.TimelineRecording.prototype.instrumentForTimeline):
Get the instrument in the recording for a given timeline.
(WebInspector.TimelineRecording.prototype.addInstrument):
(WebInspector.TimelineRecording.prototype.removeInstrument):
Drive-by syntax error fixes: Array.prototype.contains doesn't exist.

  • UserInterface/Views/TimelineOverview.css:

(.timeline-overview > .navigation-bar.timelines):
(.navigation-bar.timelines .item.button.toggle-edit-instruments:not(.disabled):matches(:focus, .activate.activated, .radio.selected)):
(.navigation-bar.timelines .item.button.toggle-edit-instruments:not(.disabled):active:matches(:focus, .activate.activated, .radio.selected)):
(.navigation-bar.timelines .item.button.toggle-edit-instruments.disabled):
(.navigation-bar.timelines .toggle-edit-instruments:not(.disabled):active):
(.timeline-overview > .tree-outline.timelines):
(.timeline-overview.edit-instruments > .tree-outline.timelines):
(.timeline-overview.edit-instruments > .tree-outline.timelines .item.selected):
(.timeline-overview > .tree-outline.timelines input[type=checkbox].status-button):
(.timeline-overview.frames > :matches(.tree-outline.timelines, .navigation-bar.timelines)):
(.timeline-overview > .tree-outline.timelines::before): Deleted.
(.timeline-overview.frames > .tree-outline.timelines): Deleted.
Styles for the "Edit" navigation bar above the timelines tree outline,
and tree element styles for showing checkboxes and hiding the current
selection while in edit mode.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview):
Create "Edit" button and navigation bar and add event handlers for
capturing events, so that timeline editing can be closed and
disabled when capturing begins.

(WebInspector.TimelineOverview.prototype.set selectedTimeline):
Prevent timeline selection while in edit mode.
(WebInspector.TimelineOverview.prototype.get editingInstruments):
(WebInspector.TimelineOverview.prototype.set viewMode):
Prevent view mode change while in edit mode.

(WebInspector.TimelineOverview.prototype._instrumentAdded):
Create a TimelineTreeElement, and insert into the tree outline and graph
container in sorted order instead of appending timeline elements.

(WebInspector.TimelineOverview.prototype._toggleEditingInstruments):
Handler for Edit button click event.
(WebInspector.TimelineOverview.prototype._editingInstrumentsDidChange):
Update UI in response to editing mode change: toggle CSS, enable/disable
the timeline ruler and wheel/gesture events, and update Edit button appearance.

(WebInspector.TimelineOverview.prototype._updateEditInstrumentsButton):
Update label text and button state.
(WebInspector.TimelineOverview.prototype._updateWheelAndGestureHandlers):
Add/remove event handlers based on editing state.

(WebInspector.TimelineOverview.prototype._startEditingInstruments):
Enable edit mode UI. Placeholder elements are added for timelines that
aren't included in the recording, and all tree elements have checkboxes
for toggling their associated timelines.

(WebInspector.TimelineOverview.prototype._stopEditingInstruments):
Disable edit mode UI. Unchecked instruments are first removed from the
recording, then placeholder tree elements are removed, and their instruments
added, as needed. TimelineManager's list of user-configured timeline types
is then updated.

(WebInspector.TimelineOverview.prototype._capturingStarted):
(WebInspector.TimelineOverview.prototype._capturingStopped):
Enable/disable the Edit button. Quit editing mode when capturing starts.
(WebInspector.TimelineOverview.prototype._compareTimelineTreeElements):
Special sorting for the timelines tree outline. The sort order is:

  1. Instruments that are in the recording, except Rendering Frames.
  2. Instruments that aren't in the recording (placeholders).
  3. Rendering Frames.

Timelines in groups 1 & 2 are sorted based on the order of the list returned
by TimelineManager.availableTimelineTypes(). The Rendering Frames tree
element must be last, since it's always hidden and would otherwise interfere
with the alternating tree element CSS styles.

  • UserInterface/Views/TimelineRecordingContentView.css:

(.content-view.timeline-recording.edit-instruments > .timeline-overview):
(.content-view.timeline-recording.edit-instruments > .content-browser):
Hide lower content browser and extend timelines tree height in edit mode.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
Listen for edit mode changes on TimelineOverview.
(WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject):
(WebInspector.TimelineRecordingContentView.prototype._updateTimelineOverviewHeight):
When in edit mode, remove inline style rule for TimelineOverview height.
(WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):
(WebInspector.TimelineRecordingContentView.prototype._editingInstrumentsDidChange):
Update CSS and TimelineOverview height when edit mode changes.
(WebInspector.TimelineRecordingContentView.prototype.get timelineOverviewHeight): Deleted.
No longer used.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.displayNameForTimelineType):
(WebInspector.TimelineTabContentView.iconClassNameForTimelineType):
(WebInspector.TimelineTabContentView.genericClassNameForTimelineType):
(WebInspector.TimelineTabContentView.displayNameForTimeline): Deleted.
(WebInspector.TimelineTabContentView.iconClassNameForTimeline): Deleted.
(WebInspector.TimelineTabContentView.genericClassNameForTimeline): Deleted.
Helper functions now take a timeline type instead of a timeline object.

  • UserInterface/Views/TimelineTreeElement.js: Added.

New tree element class to encapsulate behavior specific to the timelines
tree outline, such as status element changes and disabling selection
when editing.

(WebInspector.TimelineTreeElement):
(WebInspector.TimelineTreeElement.prototype.get placeholder):
(WebInspector.TimelineTreeElement.prototype.get editing):
(WebInspector.TimelineTreeElement.prototype.set editing):
(WebInspector.TimelineTreeElement.prototype._showCloseButton):
(WebInspector.TimelineTreeElement.prototype._showCheckbox):
(WebInspector.TimelineTreeElement.prototype._updateStatusButton):

10:58 AM Changeset in webkit [198536] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

10:56 AM Changeset in webkit [198535] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.25

New tag.

10:49 AM Changeset in webkit [198534] by Yusuke Suzuki
  • 2 edits in trunk/Tools

[JSC] ASMBench cannot be run without JSBENCH_PATH
​https://bugs.webkit.org/show_bug.cgi?id=155751

Reviewed by Saam Barati.

Check ASMBENCH_PATH instead of JSBENCH_PATH for ASMBench files.

  • Scripts/run-jsc-benchmarks:
10:30 AM Changeset in webkit [198533] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking perf/document-contains.html as flaky on ios-simulator-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155755

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
10:26 AM Changeset in webkit [198532] by commit-queue@webkit.org
  • 6 edits in trunk/Source

[GTK] WebInspector broken after r197620
​https://bugs.webkit.org/show_bug.cgi?id=155497
<rdar://problem/25171910>

Patch by Carlos Garcia Campos <​cgarcia@igalia.com> on 2016-03-22
Reviewed by Philippe Normand.

Source/WebCore:

Add resource scheme to the list of secure protocols.

  • platform/SchemeRegistry.cpp:

(WebCore::secureSchemes):

Source/WebKit2:

Stop registering resource:// URLs as local, because they are not
like a local file at all. Compare also the URL protocols when
checking whether requested URL is main or test inspector page
instead of checking that the protocol is registered as local.

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::isMainOrTestInspectorPage): Compare also the URL protocols.

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateInspectorPage): Do not
set setAllowFileAccessFromFileURLs setting to true.

  • UIProcess/gtk/WebProcessPoolGtk.cpp:

(WebKit::WebProcessPool::platformInitializeWebProcess): Do not
register resource:// URLS as local.

10:01 AM Changeset in webkit [198531] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] allow duplicate property names returned from Proxy ownKeys() trap
​https://bugs.webkit.org/show_bug.cgi?id=155560

Patch by Caitlin Potter <​caitp@igalia.com> on 2016-03-22
Reviewed by Darin Adler.

Specification allows duplicate property names to be reported by the
Proxy ownKeys() trap --- and this is observable in any API which
operates on the returned list, such as Object.keys(),
Object.getOwnPropertyNames(), Object.getOwnPropertySymbols(), or
Object.getOwnPropertyDescriptors().

  • runtime/PropertyNameArray.h:

(JSC::PropertyNameArray::addUnchecked):
(JSC::PropertyNameArray::add):
(JSC::PropertyNameArray::addKnownUnique): Deleted.

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performGetOwnPropertyNames):

  • runtime/Structure.cpp:

(JSC::Structure::getPropertyNamesFromStructure):

9:02 AM Changeset in webkit [198530] by Brent Fulgham
  • 4 edits in trunk

Source/WebCore:
SharedBuffer::copy() can cause a segmentation fault.
​https://bugs.webkit.org/show_bug.cgi?id=155739

Reviewed by Ryosuke Niwa.

Based on a Blink patch by Huang Dongsung <​luxtella@company100.net>.
<​https://src.chromium.org/viewvc/blink?revision=153850&view=revision>

After SharedBuffer::copy(), SharedBuffer::append() can cause segmentation fault,
because copy() calls clone->m_buffer.append(m_segments[i], segmentSize) even if
'i' is the last index. The data size of m_segments.last() is often less than
segmentSize. So, in the cloned instance m_size < (m_buffer.size() + SUM(m_segments[i].size())).
This patch appends the exact size of the last segment instead of segmentSize.

Tested by TestWebKitAPI SharedBufferTest::copy

  • platform/SharedBuffer.cpp:

(SharedBuffer::copy):

Tools:
[Win] SharedBuffer::copy() can cause a segmentation fault.
​https://bugs.webkit.org/show_bug.cgi?id=155739

Reviewed by Ryosuke Niwa.

  • TestWebKitAPI/PlatformWin.cmake: Build and run the

SharedBuffer tests.

8:29 AM Changeset in webkit [198529] by Csaba Osztrogonác
  • 5 edits in trunk/Tools

[buildbot] Move ARM Linux bots to JSCOnly port
​https://bugs.webkit.org/show_bug.cgi?id=155655

Reviewed by Lucas Forschler.

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

(ConfigureBuild.init):
(appendCustomBuildFlags):
(CompileJSCOnly):
(Factory.init):
(BuildAndRemoteJSCTestsFactory):
(BuildAndRemoteJSCTestsFactory.init):

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
  • BuildSlaveSupport/clean-build:

(main):

7:27 AM Changeset in webkit [198528] by eric.carlson@apple.com
  • 3 edits
    1 add in trunk/LayoutTests

[OSX] Rebase media/media-document-audio-repaint.html
​https://bugs.webkit.org/show_bug.cgi?id=155733

Reviewed by Darin Adler.

  • platform/mac/TestExpectations:
  • platform/mac/media/media-document-audio-repaint-expected.png:
  • platform/mac/media/media-document-audio-repaint-expected.txt: Added.
6:47 AM Changeset in webkit [198527] by berto@igalia.com
  • 33 edits in trunk/Source

Source/ThirdParty/ANGLE:
Unreviewed typo fix.

  • src/compiler/translator/InfoSink.cpp:

(TInfoSinkBase::prefix): "UNKOWN" => "UNKOWN".

Source/WebCore:
Unreviewed typo fix.

  • platform/gtk/LocalizedStringsGtk.cpp:

(WebCore::textTrackAutomaticMenuItemText): "choosen" => "chosen"

Source/WebCore/platform/gtk/po:
Unreviewed typo fix "choosen" => "chosen"

  • as.po:
  • bg.po:
  • ca.po:
  • de.po:
  • en_GB.po:
  • es.po:
  • fr.po:
  • gl.po:
  • gu.po:
  • he.po:
  • hi.po:
  • it.po:
  • ja.po:
  • kn.po:
  • mr.po:
  • nl.po:
  • or.po:
  • pl.po:
  • pt_BR.po:
  • sl.po:
  • sv.po:
  • ta.po:
  • te.po:
  • tr.po:

Source/WebKit2:
Unreviewed typo fixes.

  • Shared/linux/WebMemorySamplerLinux.cpp:

(WebKit::WebMemorySampler::sampleWebKit): "Commited" => "Committed"

  • UIProcess/API/gtk/WebKitFileChooserRequest.cpp:

(webkit_file_chooser_request_select_files): "choosen" => "chosen"

  • UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:

(webkit_user_media_permission_request_class_init): "Wether" => "Whether"

6:22 AM Changeset in webkit [198526] by Carlos Garcia Campos
  • 13 edits in trunk/Source/WebKit2

Remove unused display and scroll view methods from PageClient and WebPageProxy
​https://bugs.webkit.org/show_bug.cgi?id=155744

Reviewed by Andreas Kling.

We have displayView(), canScrollView() and scrollView() that are
used by DrawingAreaProxyImpl which is only used by GTK+ port that
doesn't implement those methods.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::displayView): Deleted.
(WebKit::PageClientImpl::scrollView): Deleted.

  • UIProcess/API/gtk/PageClientImpl.h:
  • UIProcess/DrawingAreaProxyImpl.cpp:

(WebKit::DrawingAreaProxyImpl::incorporateUpdate): Update the
whole view when scrolling, or the damage area otherwise.

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

(WebKit::WebPageProxy::displayView): Deleted.
(WebKit::WebPageProxy::canScrollView): Deleted.
(WebKit::WebPageProxy::scrollView): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/efl/WebView.cpp:

(WebKit::WebView::displayView): Deleted.
(WebKit::WebView::scrollView): Deleted.

  • UIProcess/efl/WebView.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::displayView): Deleted.
(WebKit::PageClientImpl::canScrollView): Deleted.
(WebKit::PageClientImpl::scrollView): Deleted.

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

(WebKit::PageClientImpl::displayView): Deleted.
(WebKit::PageClientImpl::canScrollView): Deleted.
(WebKit::PageClientImpl::scrollView): Deleted.

2:44 AM Changeset in webkit [198525] by zandobersek@gmail.com
  • 5 edits in trunk/Source/WebKit2

[CoordinatedGraphics] Polish std::function<> usage in ThreadedCompositor, CoordinatedGraphicsScene
​https://bugs.webkit.org/show_bug.cgi?id=155726

Reviewed by Darin Adler.

Adjust the methods in ThreadedCompositor and CoordinatedGraphicsScene
classes to accept std::function<> arguments via rvalue references. This
should prevent both unnecessary copies and moves.

Fix lambda expressions that are most commonly used to construct the
std::function<> objects so that they don't capture-by-value by default,
but instead list the captured values verbosely. This part alone exposed
an issue in ThreadedCompositor::didChangeVisibleRect() where we were
capturing the `this' value by default, instead of a protector RefPtr.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::dispatchOnMainThread):
(WebKit::CoordinatedGraphicsScene::dispatchOnClientRunLoop):
(WebKit::CoordinatedGraphicsScene::paintToCurrentGLContext):
(WebKit::CoordinatedGraphicsScene::onNewBufferAvailable):
(WebKit::CoordinatedGraphicsScene::commitSceneState):
(WebKit::CoordinatedGraphicsScene::purgeGLResources):
(WebKit::CoordinatedGraphicsScene::commitScrollOffset):
(WebKit::CoordinatedGraphicsScene::appendUpdate):
(WebKit::CoordinatedGraphicsScene::setActive):

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.h:
  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::CompositingRunLoop::CompositingRunLoop):
(WebKit::CompositingRunLoop::callOnCompositingRunLoop):
(WebKit::ThreadedCompositor::setNeedsDisplay):
(WebKit::ThreadedCompositor::setNativeSurfaceHandleForCompositing):
(WebKit::ThreadedCompositor::setDeviceScaleFactor):
(WebKit::ThreadedCompositor::didChangeViewportSize):
(WebKit::ThreadedCompositor::didChangeViewportAttribute):
(WebKit::ThreadedCompositor::didChangeContentsSize):
(WebKit::ThreadedCompositor::scrollTo):
(WebKit::ThreadedCompositor::scrollBy):
(WebKit::ThreadedCompositor::didChangeVisibleRect):
(WebKit::ThreadedCompositor::callOnCompositingThread):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.h:
2:38 AM Changeset in webkit [198524] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.12.0

WebKitGTK+ 2.12.0

2:37 AM Changeset in webkit [198523] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.12.0 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.12.0.
12:28 AM Changeset in webkit [198522] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebKit2

[CoordinatedGraphics] Prefer RunLoop::main().dispatch() over callOnMainThread()
​https://bugs.webkit.org/show_bug.cgi?id=155725

Reviewed by Darin Adler.

Unify the CoordinatedGraphics code in the WebKit2 layer to use RunLoop
for dispatching tasks on either the main thread or the composition thread
in case of using the threaded compositor. The latter is already the default,
so this patch just replaces calls to callOnMainThread() with calls to
RunLoop::main().dispatch().

  • Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:

(WebKit::CoordinatedGraphicsScene::dispatchOnMainThread):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

(WebKit::ThreadedCompositor::didChangeVisibleRect):

12:26 AM Changeset in webkit [198521] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[TextureMapper] Destructing TextureMapperLayer should clean up its effect target
​https://bugs.webkit.org/show_bug.cgi?id=155718

Reviewed by Darin Adler.

TextureMapperLayer destructor should, in case of non-null effect target,
null out the effect target's mask and replica layer pointers if those
pointers point to the TextureMapperLayer object that's being destroyed,
avoiding use-after-free occurrences.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::~TextureMapperLayer):

12:21 AM Changeset in webkit [198520] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

[TexMap] Shrink-to-fit the CompositingCoordinator's update atlases vector after cleanup
​https://bugs.webkit.org/show_bug.cgi?id=155719

Reviewed by Carlos Garcia Campos.

Shrink the Vector object containing the cached UpdateAtlas objects
after the inactive ones are removed. This way the capacity of the
Vector is kept under control, preventing unnecessary waste of memory.

  • platform/graphics/texmap/coordinated/CompositingCoordinator.cpp:

(WebCore::CompositingCoordinator::releaseInactiveAtlasesTimerFired):

Mar 21, 2016:

8:48 PM Changeset in webkit [198519] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Skip HeapSnapshot test on WebKit1. Shared VM skews the data.

Rubber-stamped by Timothy Hatcher.

In this case, snapshots with snapshots with snapshots in the same VM
causes the test to run out of memory. This does not happen in WebKit2.

  • platform/mac-wk1/TestExpectations:
7:58 PM Changeset in webkit [198518] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

Commit log viewer repaints too frequently after r198499
​https://bugs.webkit.org/show_bug.cgi?id=155732

Reviewed by Joseph Pecoraro.

The bug was caused by InteractiveTimeSeriesChart invoking onchange callback whenever mouse moved even
if the current point didn't change. Fixed the bug by avoiding the work if the indicator hadn't changed
and avoiding work in the commit log viewer when the requested repository and the revision range were
the same as those of the last request.

  • public/v3/components/commit-log-viewer.js:

(CommitLogViewer):
(CommitLogViewer.prototype.currentRepository): Exit early when repository and the revision range are
identical to the one we already have to avoid repaints and issuing multiple network requests.

  • public/v3/components/interactive-time-series-chart.js:

(InteractiveTimeSeriesChart.prototype._mouseMove): Don't invoke _notifyIndicatorChanged if the current
indicator hadn't changed.

  • public/v3/pages/chart-pane.js:

(ChartPane.prototype._indicatorDidChange): Fixed the bug that unlocking the indicator wouldn't update
the URL. We need to check whether the lock state had changed. The old condition was also redundant
since _mainChartIndicatorWasLocked is always identically equal to isLocked per the prior assignment.

6:53 PM Changeset in webkit [198517] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-601.6.12/Source

Versioning

6:47 PM Changeset in webkit [198516] by matthew_hanson@apple.com
  • 5 edits in tags/Safari-601.1.46.122/Source

Versioning.

6:39 PM Changeset in webkit [198515] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

6:36 PM Changeset in webkit [198514] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

6:35 PM Changeset in webkit [198513] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Clean up Math.floor thunk and use SSE round instruction
​https://bugs.webkit.org/show_bug.cgi?id=155705

Reviewed by Geoffrey Garen.

SSE now allow us to use round instruction to implement Math.floor.
MacroAssembler's floorDouble is now only used in ARM64, but it can be allowed in x86 SSE.

  • jit/ThunkGenerators.cpp:

(JSC::floorThunkGenerator):

6:21 PM Changeset in webkit [198512] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.122

New Tag.

5:51 PM Changeset in webkit [198511] by Matt Baker
  • 3 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: New icon for Heap Allocations timeline
​https://bugs.webkit.org/show_bug.cgi?id=155731
<rdar://problem/25275494>

Reviewed by Joseph Pecoraro and Timothy Hatcher.

  • UserInterface/Images/HeapAllocationsInstrument.svg: Added.

New artwork from Jon Davis.

  • UserInterface/Views/TimelineIcons.css:

(.heap-allocations-icon .icon):
(body:not(.mac-platform, .windows-platform) .memory-icon .icon):
(body:not(.mac-platform, .windows-platform) .heap-allocations-icon .icon):
New icon styles/fallbacks for GTK.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.iconClassNameForTimeline):
Add new icon class to UI helper method.

5:51 PM Changeset in webkit [198510] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.6.12

New Tag.

5:30 PM Changeset in webkit [198509] by jonlee@apple.com
  • 14 edits
    2 copies
    2 deletes in trunk/PerformanceTests

Update benchmark tests
​https://bugs.webkit.org/show_bug.cgi?id=155723

Reviewed by Darin Adler.
Provisionally reviewed by Said Abou-Hallawa.

Add quadratic and bezier segments to the canvas path test.

  • Animometer/resources/runner/tests.js: Some of the query strings are unnecessary.

Rename the test.

  • Animometer/tests/master/resources/canvas-stage.js:

(tune): Update to be able to take an array of possible constructors. Choose one randomly.

  • Animometer/tests/master/resources/canvas-tests.js:

(CanvasLinePoint.Utilities.createClass): Move the point selection out to a separate
function called randomPoint() for reuse. Move X_LOOPS, Y_LOOPS, and offsets into the
class definition.
(randomPoint): Scale the grid down a little bit so that the lines along the edge of the
canvas are not cut off when the stroke size is thick.
(CanvasQuadraticSegment): Added.
(CanvasBezierSegment): Added.
(SimpleCanvasStage): Pass in an array of the different segment types. Since line segments
are short compared to the curved ones, make it twice as likely to render a line segment.
(SimpleCanvasStage.animate): Update the drawing code so that we render all line segments.

Add a helper method that selects a random element from an array.

  • Animometer/tests/resources/main.js:

(Stage.randomElementInArray): Select a random element from the provided array.

  • Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Refactor.
  • Animometer/tests/dom/resources/leaves.js: Ditto.
  • Animometer/tests/master/resources/dom-particles.js: Ditto.
  • Animometer/tests/master/resources/image-data.js: Ditto.
  • Animometer/tests/master/resources/leaves.js: Ditto.
  • Animometer/tests/simple/resources/simple-canvas-paths.js: Ditto.

Add canvas tests that includes all stroke and fill paths. This makes it possible to avoid having to
include the full simple canvas suite for perf testing.

  • Animometer/resources/debug-runner/tests.js: Add new tests. Move the canvas test into the Canvas

suite.

  • Animometer/tests/simple/resources/simple-canvas-paths.js: Add a CanvasStroke and CanvasFill particle

that random selects an object to render.

  • Animometer/resources/debug-runner/tests.js: Move 3D suite before basic canvas suite.

When updating the perf bot script, we will include the suites up to this one, but exclude
the basic canvas suite.

Move compositing transforms test to HTML suite and remove the empty Miscellaneous suite.

  • Animometer/resources/debug-runner/tests.js:
  • Animometer/tests/dom/compositing-transforms.html: Renamed from PerformanceTests/Animometer/tests/misc/compositing-transforms.html.
  • Animometer/tests/dom/resources/compositing-transforms.js: Renamed from PerformanceTests/Animometer/tests/misc/resources/compositing-transforms.js.

Clean up miscellaneous test suite. Add a canvas ellipse test, and remove the other
canvas tests.

  • Animometer/resources/debug-runner/tests.js: Add ellipse tests to the simple suite.
  • Animometer/tests/misc/canvas-electrons.html: Removed.
  • Animometer/tests/misc/canvas-stars.html: Removed.
  • Animometer/tests/misc/resources/canvas-electrons.js: Removed.
  • Animometer/tests/misc/resources/canvas-stars.js: Removed.
  • Animometer/tests/simple/resources/simple-canvas-paths.js: Add ellipse primitives.

Merge text tests together into one.

  • Animometer/resources/runner/tests.js: Remove international.html.
  • Animometer/tests/master/international.html: Removed.
  • Animometer/tests/master/resources/text.js:

(animate): Update styling. Manually calculate gradients for the shadow particles.
Reduce the step size for y direction to avoid cutting text off at the margins. Increase
step for x since there will be a little more room.

  • Animometer/tests/master/text.html: Add more translations and lay it out in a table.
5:22 PM Changeset in webkit [198508] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Fix A/B testing after r198503.

  • public/include/build-requests-fetcher.php:
5:06 PM Changeset in webkit [198507] by Brent Fulgham
  • 4 edits in trunk

Improve SharedBuffer testing
​https://bugs.webkit.org/show_bug.cgi?id=93078
<rdar://problem/25277829>

Reviewed by Ryosuke Niwa.

Source/WebCore:

  • platform/SharedBuffer.h: Mark a few methods as WEBCORE_EXPORT so they

can be used by TestWebKitAPI.

Tools:

Based on a Blink patch by Huang Dongsung <​luxtella@company100.net>.
<​https://src.chromium.org/viewvc/blink?revision=153850&view=revision,
and a Blink patch by <​tyoshino@chromium.org>
<​https://src.chromium.org/viewvc/blink?view=rev&revision=151617>

Add three test cases from the Blink project that cover various append,
copy, and createArrayBuffer calls.

  • TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp:

(TestWebKitAPI::TEST_F):

4:29 PM Changeset in webkit [198506] by Alan Bujtas
  • 3 edits
    2 adds in trunk

WebCore::RenderTableCell::setCol should put a cap on the column value.
​https://bugs.webkit.org/show_bug.cgi?id=155642
<rdar://problem/15895201>

Reviewed by Simon Fraser.

This patch ensures that we don't crash when the column number is large enough.
see webkit.org/b/71135 for more information.

Source/WebCore:

Test: tables/colspan-with-large-value-crash.html

  • rendering/RenderTableCell.h:

(WebCore::RenderTableCell::setCol):

LayoutTests:

  • tables/colspan-with-large-value-crash-expected.txt: Added.
  • tables/colspan-with-large-value-crash.html: Added.
4:05 PM Changeset in webkit [198505] by matthew_hanson@apple.com
  • 8 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r197967. rdar://problem/25271137

3:57 PM Changeset in webkit [198504] by beidson@apple.com
  • 5 edits in trunk/LayoutTests

storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange.html flaky on mac-wk2.
​https://bugs.webkit.org/show_bug.cgi?id=154748

Reviewed by Alex Christensen.

  • platform/mac/TestExpectations:
  • storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt:
  • storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-private-expected.txt:
  • storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
3:27 PM Changeset in webkit [198503] by rniwa@webkit.org
  • 6 edits in trunk/Websites/perf.webkit.org

Analysis task page is broken after r198479
​https://bugs.webkit.org/show_bug.cgi?id=155735

Rubber-stamped by Chris Dumez.

  • public/api/measurement-set.php:

(AnalysisResultsFetcher::fetch_commits): We need to emit the commit ID as done for regular data.

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

(BuildRequestsFetcher::fetch_roots_for_set_if_needed): Ditto. Don't use a fake ID after r198479.

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

(CommitLog): Assert that all commit log IDs are integers to catch regressions like this in future.

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

(RootSet): Don't resolve Repository here as doing so would modify the shared "root" entry in the JSON
we fetched, and subsequent construction of RootSet would fail since this line would blow up trying to
find the repository with "[object]" as the ID.

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

(TestGroup._createModelsFromFetchedTestGroups): Resolve Repository here.

3:25 PM Changeset in webkit [198502] by Simon Fraser
  • 7 edits
    3 adds in trunk

[iOS WK2] Use larger tiles when possible to reduce per-tile painting overhead
​https://bugs.webkit.org/show_bug.cgi?id=155734
rdar://problem/24968144

Reviewed by Tim Horton.

Source/WebCore:

The existing tile size logic is wired to adjustScrollbars, which doesn't fire
when scrolling is delegated. For iOS WK2, key off of a new unobscuredContentSizeChanged()
function that runs when the UI process tells told WebCore that the unobscured size
has changed. In addition, contentsResized() is used to update scrollability when
page changes size.

  • page/FrameView.cpp:

(WebCore::FrameView::contentsResized):
(WebCore::FrameView::addedOrRemovedScrollbar):
(WebCore::FrameView::adjustTiledBackingScrollability): Handle both delegated and non-delegated
scrolling; the former looks at the visible size (based on the unobscuredVisibleContentRect),
the latter at the presence of scrollbars.
(WebCore::FrameView::unobscuredContentSizeChanged):

  • page/FrameView.h:
  • platform/ScrollView.h:

(WebCore::ScrollView::unobscuredContentSizeChanged):

  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::adjustTileCoverageRect): Use kDefaultTileSize rather than the
tile size, to retain the old amount of overdraw.
(WebCore::TileController::tileSize): There was a bug in the not-scrollable case; we need
to scale.

  • platform/ios/ScrollViewIOS.mm:

(WebCore::ScrollView::setUnobscuredContentSize):

LayoutTests:

New results with larger page tiles in WK2.

  • platform/ios-simulator-wk2/compositing/tiling/rotated-tiled-clamped-expected.txt: Added.
  • platform/ios-simulator-wk2/compositing/tiling/rotated-tiled-preserve3d-clamped-expected.txt: Added.
  • platform/ios-simulator-wk2/compositing/tiling/transform-origin-tiled-expected.txt: Added.
3:22 PM Changeset in webkit [198501] by Brent Fulgham
  • 8 edits
    2 adds in trunk

Source/WebKit/win:
[Win] Connect layoutTestController.findString() to support testing
​https://bugs.webkit.org/show_bug.cgi?id=50234

Patch by Hyungwook Lee <​hyungwook.lee@navercorp.com> on 2016-03-21
Reviewed by Alex Christensen.

Implement WebView::findString to support testing efforts.

  • Interfaces/IWebViewPrivate.idl: Add API declaration.
  • WebView.cpp:
  • WebView.h:

Tools:
[Win] Connect layoutTestController.findString() to support testing
​https://bugs.webkit.org/show_bug.cgi?id=50234

Patch by Hyungwook Lee <​hyungwook.lee@navercorp.com> on 2016-03-21
Reviewed by Alex Christensen.

Implement TestRunner::findString().

  • DumpRenderTree/win/TestRunnerWin.cpp:

(TestRunner::findString):

LayoutTests:
[Win] Connect layoutTestController.findString() to support testing
​https://bugs.webkit.org/show_bug.cgi?id=50234

Patch by Hyungwook Lee <​hyungwook.lee@navercorp.com> on 2016-03-21
Reviewed by Alex Christensen.

  • platform/win/TestExpectations: Unskip test.
  • platform/win/editing/text-iterator/findString-expected.txt: Added.
3:07 PM Changeset in webkit [198500] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r197552.

May have caused a ~2% PLT regression on iOS

Reverted changeset:

"Drop DocumentSharedObjectPool immediately when going into
PageCache."
​https://bugs.webkit.org/show_bug.cgi?id=154986
​http://trac.webkit.org/changeset/197552

1:54 PM Changeset in webkit [198499] by rniwa@webkit.org
  • 11 edits in trunk/Websites/perf.webkit.org

v3 UI sometimes don't update the list of revisions on the commit log viewer
​https://bugs.webkit.org/show_bug.cgi?id=155729

Rubber-stamped by Chris Dumez.

Fixed multiple bugs that were affecting the list of blame range and commit logs for the range weren't
updated in some cases on v3 UI. Also, the commit log viewer state is now a part of the URL state so
opening and closing the commit log viewer will persist across page loads.

Also fixed a regression from r198479 that Test object can't be created for a top level test.

  • public/v3/components/chart-pane-base.js:

(ChartPaneBase.prototype.configure):
(ChartPaneBase.prototype._mainSelectionDidChange): Fixed the bug that the list of blame range nor the
commit log viewer don't get updated when the selected range changes.
(ChartPaneBase.prototype._indicatorDidChange):
(ChartPaneBase.prototype._didFetchData):
(ChartPaneBase.prototype._updateStatus): Extracted from _indicatorDidChange and _didFetchData.
(ChartPaneBase.prototype._requestOpeningCommitViewer): Renamed from _openCommitViewer.

  • public/v3/components/chart-status-view.js:

(ChartStatusView.prototype.updateStatusIfNeeded): Fixed the bug that the blame range doesn't get set
on the initial page load when the selection range is set but the chart data hadn't been fetched yet.

  • public/v3/components/commit-log-viewer.js:

(CommitLogViewer.prototype.view): Fixed the bug that we don't clear out the old list of commits while
loading the next set of commits to show as it looked as if the list was never updated.
(CommitLogViewer.prototype.render): Fixed the bug that the view always show the last repository name
even if there were nothing being fetched or commits to show.

  • public/v3/components/pane-selector.js:

(PaneSelector.prototype.focus): Removed superfluous call to console.log.

  • public/v3/models/data-model.js:

(DataModelObject.listForStaticMap): Generalized the code for all to fix the bug in Test.
(DataModelObject.all):

  • public/v3/models/test.js:

(Test): Fixed the bug that this code was relying on the static map to be an array.
(Test.topLevelTests): Use newly added listForStaticMap to convert the dictionary to an array.

  • public/v3/pages/chart-pane-status-view.js:

(ChartPaneStatusView): Always initialize _usedRevisionRange as a triple to simplify code elsewhere.
(ChartPaneStatusView.prototype.render): Invoke _revisionCallback when user clicks on a repository
expansion mark (>>). Also fixed click handler from the row since this made selecting revision range
on the view cumbersome. Now user has to explicitly click on the expansion mark (>>).
(ChartPaneStatusView.prototype._setRevisionRange): Now takes shouldNotify, from, and to as arguments
as this function must not invoke_revisionCallback inside _updateRevisionListForNewCurrentRepository.
(ChartPaneStatusView.prototype.moveRepositoryWithNotification): Use newly added setCurrentRepository
instead of manually invoking setCurrentRepository and updateRevisionListWithNotification.
(ChartPaneStatusView.prototype.setCurrentRepository): Fixed the bug that we weren't updating the
blame list here.
(ChartPaneStatusView.prototype.updateRevisionList): Renamed from updateRevisionListWithNotification
since we no longer call _revisionCallback. In general, callbacks are only meant to communicate user
initiated actions, and not program induced updates like this API so this was a bad pattern anyway.
ChartPane now explicitly updates the commit log viewer instead of relying on this function calling
_requestOpeningCommitViewer implicitly.
(ChartPaneStatusView.prototype._updateRevisionListForNewCurrentRepository): Extracted from
updateRevisionListWithNotification so that setCurrentRepository can also call this function.

  • public/v3/pages/chart-pane.js:

(ChartPane.prototype._requestOpeningCommitViewer): Overrides ChartPaneBase's method. Open the same
repository in other panes via ChartsPage.setOpenRepository.
(ChartPane.prototype.setOpenRepository): This method is called when the user selected a repository in
another pane. Open the same repository in this pane if it wasn't already open.

  • public/v3/pages/charts-page.js:

(ChartsPage): Added this._currentRepositoryId.
(ChartsPage.prototype.serializeState): Serialize _currentRepositoryId.
(ChartsPage.prototype.updateFromSerializedState): Set the commit log viewer's
(ChartsPage.prototype.setOpenRepository): Added.

  • tests/api-measurement-set.js: Fixed a test after r198479.
1:23 PM Changeset in webkit [198498] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Very flashy scrolling on ​http://quellish.tumblr.com page
​https://bugs.webkit.org/show_bug.cgi?id=155728
rdar://problem/22299375

Reviewed by Zalan Bujtas.

​http://quellish.tumblr.com/post/126712999812/how-on-earth-the-facebook-ios-application-is-so
has many elements that are nested inside elements with non-equal corner radius clipping.
This requires building bezier paths for the rounded-rect clip which is expensive.

For many rows of the table, we can avoid the rounded-rect clipping because the intersection
of the paintDirtyRect and the clip is actually rectangular.

  • platform/graphics/FloatRoundedRect.cpp:

(WebCore::FloatRoundedRect::intersectionIsRectangular):

  • platform/graphics/FloatRoundedRect.h:
  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::clipToRect):

1:13 PM Changeset in webkit [198497] by Alan Bujtas
  • 21 edits in trunk

Web Inspector search icon does not fit when zoomed in.
​https://bugs.webkit.org/show_bug.cgi?id=155708

Reviewed by Simon Fraser.

Adjusts the paint rect for the magnifier icon so that it fits even when zoomed in.

Source/WebCore:

Covered by existing tests.

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::resultsButtonSizes):
(WebCore::RenderThemeMac::paintSearchFieldResultsButton):

LayoutTests:

  • fast/forms/search/search-padding-cancel-results-buttons-expected.txt:
  • platform/mac/fast/css/focus-ring-exists-for-search-field-expected.txt:
  • platform/mac/fast/css/text-input-with-webkit-border-radius-expected.txt:
  • platform/mac/fast/css/text-overflow-input-expected.txt:
  • platform/mac/fast/forms/box-shadow-override-expected.txt:
  • platform/mac/fast/forms/control-restrict-line-height-expected.txt:
  • platform/mac/fast/forms/input-appearance-height-expected.txt:
  • platform/mac/fast/forms/placeholder-position-expected.txt:
  • platform/mac/fast/forms/placeholder-pseudo-style-expected.txt:
  • platform/mac/fast/forms/search-cancel-button-style-sharing-expected.txt:
  • platform/mac/fast/forms/search-display-none-cancel-button-expected.txt:
  • platform/mac/fast/forms/search-rtl-expected.txt:
  • platform/mac/fast/forms/search-styled-expected.txt:
  • platform/mac/fast/forms/search-vertical-alignment-expected.txt:
  • platform/mac/fast/forms/search/search-size-with-decorations-expected.txt:
  • platform/mac/fast/forms/searchfield-heights-expected.txt:
  • platform/mac/fast/repaint/search-field-cancel-expected.txt:
  • platform/mac/fast/replaced/width100percent-searchfield-expected.txt:
12:28 PM Changeset in webkit [198496] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

Enable preview of images as attachments.
​https://bugs.webkit.org/show_bug.cgi?id=155674
rdar://problem/25242656

Reviewed by Darin Adler.

If the client cannot handle image preview, but can handle attachments,
let them handle images as attachments.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _dataForPreviewItemController:atPosition:type:]):

12:22 PM Changeset in webkit [198495] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

V3 Perf Dashboard should automatically select initial range when creating a new task
​https://bugs.webkit.org/show_bug.cgi?id=155677

Reviewed by Joseph Pecoraro.

Select the entire range of points for which the analysis task is created by default so that creating
a test group to confirm the regression / progression is easy.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage): Added a boolean flag which indicates the user had modified main chart's selection.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.prototype.render): Set the main chart's selection to the entire range of points in
the analysis task if the user had never modified selection.
(AnalysisTaskPage.prototype._chartSelectionDidChange): This callback is invoked only when the user had
modified the selection so set _selectionWasModifiedByUser true here unconditionally.

11:09 AM Changeset in webkit [198494] by jonlee@apple.com
  • 3 edits in trunk/PerformanceTests

Add a link to show debug data
​https://bugs.webkit.org/show_bug.cgi?id=155724

Reviewed by Simon Fraser.

  • Animometer/developer.html: Attach the onclick handler to the score.
  • Animometer/index.html: Ditto.
10:54 AM Changeset in webkit [198493] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Crash when media player is destroyed.
​https://bugs.webkit.org/show_bug.cgi?id=155716

Reviewed by Alex Christensen.

Increase the reference count on the video presenter object in the ActivateObject method
to avoid referencing a deleted object when the media player is destroyed.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::CustomVideoPresenter::ActivateObject):

10:52 AM Changeset in webkit [198492] by eric.carlson@apple.com
  • 119 edits in trunk

Add a WebRTC specific compile flag
​https://bugs.webkit.org/show_bug.cgi?id=155663

.:

Reviewed by Jer Noble.

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFeatures.cmake:

Source/WebCore:

Guard WebRTC-only files with ENABLE(WEB_RTC) rather than ENABLE(MEDIA_STREAM).

Reviewed by Jer Noble.

  • Modules/mediastream/MediaEndpointPeerConnection.cpp:
  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/PeerConnectionBackend.h:
  • Modules/mediastream/PeerConnectionStates.h:
  • Modules/mediastream/RTCConfiguration.cpp:
  • Modules/mediastream/RTCConfiguration.h:
  • Modules/mediastream/RTCConfiguration.idl:
  • Modules/mediastream/RTCDTMFSender.cpp:
  • Modules/mediastream/RTCDTMFSender.h:
  • Modules/mediastream/RTCDTMFSender.idl:
  • Modules/mediastream/RTCDTMFToneChangeEvent.cpp:
  • Modules/mediastream/RTCDTMFToneChangeEvent.h:
  • Modules/mediastream/RTCDTMFToneChangeEvent.idl:
  • Modules/mediastream/RTCDataChannel.cpp:
  • Modules/mediastream/RTCDataChannel.h:
  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCDataChannelEvent.cpp:
  • Modules/mediastream/RTCDataChannelEvent.h:
  • Modules/mediastream/RTCDataChannelEvent.idl:
  • Modules/mediastream/RTCIceCandidate.cpp:
  • Modules/mediastream/RTCIceCandidate.h:
  • Modules/mediastream/RTCIceCandidate.idl:
  • Modules/mediastream/RTCIceCandidateEvent.cpp:
  • Modules/mediastream/RTCIceCandidateEvent.h:
  • Modules/mediastream/RTCIceCandidateEvent.idl:
  • Modules/mediastream/RTCIceServer.h:
  • Modules/mediastream/RTCIceServer.idl:
  • Modules/mediastream/RTCOfferAnswerOptions.cpp:
  • Modules/mediastream/RTCOfferAnswerOptions.h:
  • Modules/mediastream/RTCPeerConnection.cpp:
  • Modules/mediastream/RTCPeerConnection.h:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCPeerConnection.js:

(createOffer):

  • Modules/mediastream/RTCPeerConnectionInternals.js:
  • Modules/mediastream/RTCRtpReceiver.cpp:
  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpReceiver.idl:
  • Modules/mediastream/RTCRtpSender.cpp:
  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderReceiverBase.h:
  • Modules/mediastream/RTCSessionDescription.cpp:
  • Modules/mediastream/RTCSessionDescription.h:
  • Modules/mediastream/RTCSessionDescription.idl:
  • Modules/mediastream/RTCStatsReport.cpp:
  • Modules/mediastream/RTCStatsReport.idl:
  • Modules/mediastream/RTCStatsResponse.cpp:
  • Modules/mediastream/RTCStatsResponse.idl:
  • Modules/mediastream/RTCTrackEvent.cpp:
  • Modules/mediastream/RTCTrackEvent.h:
  • Modules/mediastream/RTCTrackEvent.idl:
  • Modules/mediastream/SDPProcessor.cpp:
  • Modules/mediastream/SDPProcessor.h:
  • bindings/generic/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):

  • bindings/generic/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setMediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::webkitGetUserMediaEnabled):
(WebCore::RuntimeEnabledFeatures::webkitMediaStreamEnabled):
(WebCore::RuntimeEnabledFeatures::peerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::setPeerConnectionEnabled):
(WebCore::RuntimeEnabledFeatures::webkitRTCPeerConnectionEnabled):

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::addBuiltinGlobals):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::convertValue):

  • bindings/js/JSDictionary.h:
  • bindings/js/JSRTCIceCandidateCustom.cpp:
  • bindings/js/JSRTCPeerConnectionCustom.cpp:
  • bindings/js/JSRTCSessionDescriptionCustom.cpp:
  • bindings/js/JSRTCStatsResponseCustom.cpp:
  • bindings/js/WebCoreJSBuiltinInternals.cpp:

(WebCore::JSBuiltinInternalFunctions::JSBuiltinInternalFunctions):
(WebCore::JSBuiltinInternalFunctions::visit):
(WebCore::JSBuiltinInternalFunctions::initialize):

  • bindings/js/WebCoreJSBuiltinInternals.h:

(WebCore::JSBuiltinInternalFunctions::rtcPeerConnectionInternals):

  • bindings/js/WebCoreJSBuiltins.h:

(WebCore::JSBuiltinFunctions::JSBuiltinFunctions):
(WebCore::JSBuiltinFunctions::mediaDevicesBuiltins):
(WebCore::JSBuiltinFunctions::navigatorUserMediaBuiltins):
(WebCore::JSBuiltinFunctions::rtcPeerConnectionBuiltins):
(WebCore::JSBuiltinFunctions::rtcPeerConnectionInternalsBuiltins):

  • dom/EventNames.in:
  • dom/EventTargetFactory.in:
  • loader/FrameLoaderClient.h:
  • platform/mediastream/IceCandidate.h:
  • platform/mediastream/MediaEndpoint.cpp:
  • platform/mediastream/MediaEndpoint.h:
  • platform/mediastream/MediaEndpointConfiguration.cpp:
  • platform/mediastream/MediaEndpointConfiguration.h:
  • platform/mediastream/MediaEndpointSessionConfiguration.h:
  • platform/mediastream/MediaPayload.h:
  • platform/mediastream/PeerMediaDescription.h:
  • platform/mediastream/RTCConfigurationPrivate.h:
  • platform/mediastream/RTCDTMFSenderHandler.h:
  • platform/mediastream/RTCDTMFSenderHandlerClient.h:
  • platform/mediastream/RTCDataChannelHandler.h:
  • platform/mediastream/RTCDataChannelHandlerClient.h:
  • platform/mediastream/RTCIceCandidateDescriptor.cpp:
  • platform/mediastream/RTCIceCandidateDescriptor.h:
  • platform/mediastream/RTCIceServerPrivate.h:
  • platform/mediastream/RTCPeerConnectionHandler.cpp:
  • platform/mediastream/RTCPeerConnectionHandler.h:
  • platform/mediastream/RTCPeerConnectionHandlerClient.h:
  • platform/mediastream/RTCSessionDescriptionDescriptor.cpp:
  • platform/mediastream/RTCSessionDescriptionDescriptor.h:
  • platform/mediastream/RTCSessionDescriptionRequest.h:
  • platform/mediastream/RTCStatsRequest.h:
  • platform/mediastream/RTCStatsResponseBase.h:
  • platform/mediastream/RTCVoidRequest.h:
  • platform/mediastream/SDPProcessorScriptResource.cpp:
  • platform/mediastream/SDPProcessorScriptResource.h:
  • platform/mock/MockMediaEndpoint.cpp:
  • platform/mock/MockMediaEndpoint.h:
  • platform/mock/RTCDTMFSenderHandlerMock.cpp:
  • platform/mock/RTCDTMFSenderHandlerMock.h:
  • platform/mock/RTCDataChannelHandlerMock.cpp:
  • platform/mock/RTCDataChannelHandlerMock.h:
  • platform/mock/RTCNotifiersMock.cpp:
  • platform/mock/RTCNotifiersMock.h:
  • platform/mock/RTCPeerConnectionHandlerMock.cpp:
  • platform/mock/RTCPeerConnectionHandlerMock.h:
  • platform/mock/TimerEventBasedMock.h:

(WebCore::RenderLayerBacking::paintIntoLayer):

  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::enableMockSpeechSynthesizer):
(WebCore::Internals::enableMockMediaEndpoint):
(WebCore::Internals::enableMockRTCPeerConnectionHandler):
(WebCore::Internals::setMockMediaCaptureDevicesEnabled):

  • testing/Internals.h:

LayoutTests:

Reviewed by Jer Noble.

  • platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-yosemite/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
10:47 AM Changeset in webkit [198491] by Ryan Haddad
  • 1 edit
    1 move in trunk/LayoutTests

Moving the -expected.txt file for accessibility/radio-button-group-members.html

Unreviewed test gardening.

  • accessibility/radio-button-group-members-expected.txt: Renamed from LayoutTests/accessibility/mac/radio-button-group-members-expected.txt.
10:17 AM Changeset in webkit [198490] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fixed compilation with GCC 4.8.
​https://bugs.webkit.org/show_bug.cgi?id=155698

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-21
Reviewed by Alexey Proskuryakov.

GCC 4.8 does not allow aggregate initialization for type with deleted
constructor, see ​https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52707.

  • dfg/DFGCSEPhase.cpp: Added ctor for ImpureDataSlot.
10:10 AM Changeset in webkit [198489] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking two inspector tests as flaky timeouts on Mac.
​https://bugs.webkit.org/show_bug.cgi?id=155607

Unreviewed test gardening.

  • platform/mac/TestExpectations:
8:59 AM Changeset in webkit [198488] by jh718.park@samsung.com
  • 17 edits in trunk/Source

[JSC] Add ArrayBuffer::tryCreate and change the callsites where it is needed
​https://bugs.webkit.org/show_bug.cgi?id=155328

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • API/JSTypedArray.cpp:

(JSObjectMakeTypedArray):
(JSObjectMakeArrayBufferWithBytesNoCopy):

  • runtime/ArrayBuffer.h:

(JSC::ArrayBuffer::create):
(JSC::ArrayBuffer::tryCreate):
(JSC::ArrayBuffer::createUninitialized):
(JSC::ArrayBuffer::tryCreateUninitialized):
(JSC::ArrayBuffer::createInternal):

  • runtime/GenericTypedArrayViewInlines.h:

(JSC::GenericTypedArrayView<Adaptor>::create):
(JSC::GenericTypedArrayView<Adaptor>::createUninitialized):

  • runtime/JSArrayBufferConstructor.cpp:

(JSC::constructArrayBuffer):

Source/WebCore:

No new tests, no new behaviours.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::processIfEmptyOrDisturbed):
(WebCore::FetchBody::consumeText):

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::didFinishLoading):

  • bindings/js/JSDOMPromise.h:

(WebCore::char>>):

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::MessageEvent):

  • dom/MessageEvent.h:
  • fileapi/FileReaderLoader.cpp:

(WebCore::FileReaderLoader::didReceiveResponse):
(WebCore::FileReaderLoader::didReceiveData):
(WebCore::FileReaderLoader::arrayBufferResult):

  • html/canvas/WebGLBuffer.cpp:

(WebCore::WebGLBuffer::associateBufferDataImpl):

  • html/track/DataCue.cpp:

(WebCore::DataCue::DataCue):
(WebCore::DataCue::data):
(WebCore::DataCue::setData):
(WebCore::DataCue::cueContentsMatch):

  • html/track/DataCue.h:
  • html/track/InbandDataTextTrack.cpp:

(WebCore::InbandDataTextTrack::addDataCue):
(WebCore::InbandDataTextTrack::removeCue):

  • platform/mac/SerializedPlatformRepresentationMac.mm:

(WebCore::jsValueWithDataInContext):

5:58 AM Changeset in webkit [198487] by youenn.fablet@crf.canon.fr
  • 1 edit in trunk/LayoutTests/platform/mac/TestExpectations

Unreviewed.
Marking imported/w3c/web-platform-tests/streams/readable-streams/garbage-collection-2.html as flaky (Pass, Crash)

3:42 AM Changeset in webkit [198486] by svillar@igalia.com
  • 7 edits in trunk

[css-grid] Fix percentage tracks' size computation in grids with gutters
​https://bugs.webkit.org/show_bug.cgi?id=153825

Reviewed by Darin Adler.

Source/WebCore:

The track sizing algorithm is passed an available size
(freeSpace in the code) where to size the tracks. The total size of the grid
gutters was pre-removed from that available size because we cannot use it to size
the tracks. However that available size is also used to compute the size of
percentage tracks. As we're removing the size of the gutters, the base size for
percentage computations is smaller than it should be.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):

LayoutTests:

  • fast/css-grid-layout/grid-gutters-and-flex-content-expected.txt:
  • fast/css-grid-layout/grid-gutters-and-flex-content.html:
  • fast/css-grid-layout/grid-gutters-and-tracks-expected.txt:
  • fast/css-grid-layout/grid-gutters-and-tracks.html:
2:46 AM Changeset in webkit [198485] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198484 - [GTK] scrollbar thumb clipped in 2.11.92
​https://bugs.webkit.org/show_bug.cgi?id=155586

Reviewed by Michael Catanzaro.

In the current version of Adwaita, the scrollbar itself also has a
one pixel border that we are not taking into account.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::paintThumb): Use the scrollbar size
in indicator mode, instead of only the thumb size, to correctly
position the thumb in indicator mode.

2:18 AM Changeset in webkit [198484] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] scrollbar thumb clipped in 2.11.92
​https://bugs.webkit.org/show_bug.cgi?id=155586

Reviewed by Michael Catanzaro.

In the current version of Adwaita, the scrollbar itself also has a
one pixel border that we are not taking into account.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::paintThumb): Use the scrollbar size
in indicator mode, instead of only the thumb size, to correctly
position the thumb in indicator mode.

Mar 20, 2016:

11:05 PM Changeset in webkit [198483] by Gyuyoung Kim
  • 14 edits in trunk/Source/WebCore

Reduce uses of PassRefPtr in WebCore/dom - 6
​https://bugs.webkit.org/show_bug.cgi?id=155579

Reviewed by Darin Adler.

  • dom/MessagePortChannel.h:
  • dom/default/PlatformMessagePortChannel.cpp:

(WebCore::PlatformMessagePortChannel::EventData::EventData):
(WebCore::MessagePortChannel::createChannel):
(WebCore::MessagePortChannel::MessagePortChannel):
(WebCore::MessagePortChannel::postMessageToRemote):
(WebCore::PlatformMessagePortChannel::create):
(WebCore::PlatformMessagePortChannel::PlatformMessagePortChannel):

  • dom/default/PlatformMessagePortChannel.h:

(WebCore::PlatformMessagePortChannel::EventData::message):

10:28 PM Changeset in webkit [198482] by commit-queue@webkit.org
  • 7 edits in trunk

The setter of binaryType attribute in WebSocket should raise the exception.
​https://bugs.webkit.org/show_bug.cgi?id=135874

Patch by Jinwoo Jeong <​jw00.jeong@samsung.com> on 2016-03-20
Reviewed by Antonio Gomes.

Source/WebCore:

According to W3C WebSocket Specification, <​https://www.w3.org/TR/2012/CR-websockets-20120920/>
when an invalid value is set on binaryType of WebSocket, a SyntaxError should be raised.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::setBinaryType): Add a parameter to set an exception.

  • Modules/websockets/WebSocket.h: Ditto.
  • Modules/websockets/WebSocket.idl: Update that setter of binaryType could raise an exception.

LayoutTests:

According to W3C WebSocket Specification, <​https://www.w3.org/TR/2012/CR-websockets-20120920/>,
when an invalid value is set on binaryType of WebSocket, a SyntaxError should be raised.

  • http/tests/websocket/tests/hybi/binary-type.html: Catch a syntax exception when binary type is set with invalid values.
10:11 PM Changeset in webkit [198481] by mitz@apple.com
  • 39 edits in trunk

[Mac] Determine TARGET_MAC_OS_X_VERSION_MAJOR from MACOSX_DEPLOYMENT_TARGET rather than from MAC_OS_X_VERSION_MAJOR
​https://bugs.webkit.org/show_bug.cgi?id=155707
<rdar://problem/24980691>

Reviewed by Darin Adler.

Source/bmalloc:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/JavaScriptCore:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/ThirdParty/ANGLE:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/WebCore:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/WebInspectorUI:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/WebKit/mac:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/WebKit2:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Source/WTF:

  • Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Tools:

  • ContentExtensionTester/Configurations/Base.xcconfig: Set TARGET_MAC_OS_X_VERSION_MAJOR based on the last component of MACOSX_DEPLOYMENT_TARGET.
  • ContentExtensionTester/Configurations/DebugRelease.xcconfig: For engineering builds, preserve the behavior of TARGET_MAC_OS_X_VERSION_MAJOR being the host’s OS version.

Similarly for these projects:

  • DumpRenderTree/mac/Configurations/Base.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • LayoutTestRelay/Configurations/Base.xcconfig:
  • LayoutTestRelay/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/Base.xcconfig:
  • MiniBrowser/Configurations/DebugRelease.xcconfig:
  • TestWebKitAPI/Configurations/Base.xcconfig:
  • TestWebKitAPI/Configurations/DebugRelease.xcconfig:
  • WebEditingTester/Configurations/Base.xcconfig:
  • WebEditingTester/Configurations/DebugRelease.xcconfig:
  • WebKitTestRunner/Configurations/Base.xcconfig:
  • WebKitTestRunner/Configurations/DebugRelease.xcconfig:
6:26 PM Changeset in webkit [198480] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Added implementations of AXObjectCache methods for !HAVE(ACCESSIBILITY).
​https://bugs.webkit.org/show_bug.cgi?id=155697

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-20
Reviewed by Darin Adler.

No new tests needed.

  • accessibility/AXObjectCache.h:

(WebCore::AXObjectCache::rangeForUnorderedCharacterOffsets):
(WebCore::AXObjectCache::absoluteCaretBoundsForCharacterOffset):
(WebCore::AXObjectCache::characterOffsetForIndex):
(WebCore::AXObjectCache::startOrEndCharacterOffsetForRange):
(WebCore::AXObjectCache::endCharacterOffsetOfLine):
(WebCore::AXObjectCache::nextCharacterOffset):
(WebCore::AXObjectCache::previousCharacterOffset):

5:57 PM Changeset in webkit [198479] by rniwa@webkit.org
  • 13 edits
    4 adds in trunk/Websites/perf.webkit.org

Associated commits don't immediately show up on an analysis task page
​https://bugs.webkit.org/show_bug.cgi?id=155692

Reviewed by Darin Adler.

The bug was caused by resolveCommits in AnalysisTask._constructAnalysisTasksFromRawData not being
able to find the matching commit log if the commit log had been created by the charts which don't
set the remote identifiers on each CommitLog objects.

Fixed the bug by modifying /api/measurement-set to include the commit ID, and making CommitLog
use the real database ID as its ID instead of a fake ID we create from repository and revision.

Also added a bunch of Mocha unit tests for AnalysisTask.fetchAll.

  • public/api/measurement-set.php:

(MeasurementSetFetcher::execute_query): Fetch commit_id.
(MeasurementSetFetcher::format_run): Use pass-by-reference to avoid making a copy of the row.
(MeasurementSetFetcher::parse_revisions_array): Include commit_id as the first item in the result.

  • public/v3/instrumentation.js:
  • public/v3/models/analysis-task.js:

(AnalysisTask): Fixed a bug that _buildRequestCount and _finishedBuildRequestCount could be kept
as strings and hasPendingRequests() could return a wrong result because it would perform string
inequality instead of numerical inequality.
(AnalysisTask.prototype.updateSingleton): Ditto.
(AnalysisTask.prototype.dissociateCommit):
(AnalysisTask._constructAnalysisTasksFromRawData):
(AnalysisTask._constructAnalysisTasksFromRawData.resolveCommits): Use findById now that CommitLog
objects all use the same id as the database id.

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

(CommitLog):
(CommitLog.prototype.remoteId): Deleted since we no longer create a fake id for commit logs for
measurement sets.
(CommitLog.findByRemoteId): Deleted.
(CommitLog.ensureSingleton): Deleted.
(CommitLog.fetchBetweenRevisions):

  • public/v3/models/data-model.js:

(DataModelObject.clearStaticMap): Added to aid unit testing.
(DataModelObject.ensureNamedStaticMap): Fixed a typo. Each map is a dictionary, not an array.

  • public/v3/models/metric.js:
  • public/v3/models/platform.js:
  • public/v3/models/root-set.js:

(RootSet): Updated per the interface change in CommitLog.ensureSingleton.
(MeasurementRootSet): Updated per /api/measurement-set change. Use the first value as the id.

  • public/v3/models/test.js:
  • unit-tests/analysis-task-tests.js: Added.

(sampleAnalysisTask):
(measurementCluster):

  • unit-tests/checkconfig.js: Added some assertion message to help aid diagnosing the failure.
  • unit-tests/measurement-adaptor-tests.js: Updated the sample data per the API change in

/api/measurement-set and also added assertions for commit log ids.

  • unit-tests/measurement-set-tests.js:

(beforeEach):

  • unit-tests/resources: Added.
  • unit-tests/resources/mock-remote-api.js: Added. Extracted from measurement-set-tests.js to be

used in analysis-task-tests.js.
(assert.notReached.assert.notReached):
(global.RemoteAPI.getJSON):
(global.RemoteAPI.getJSONWithStatus):
(beforeEach):

  • unit-tests/resources/v3-models.js: Added. Extracted from measurement-set-tests.js to be used in

analysis-task-tests.js and added more imports as needed.
(importFromV3):
(beforeEach):

4:08 PM Changeset in webkit [198478] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Crash in stress/regexp-matches-array-slow-put.js due to stomping on memory when having bad time
​https://bugs.webkit.org/show_bug.cgi?id=155679

Reviewed by Saam Barati.

Allocate out of line storage based on what the structure says it needs
in JSArray::tryCreateUninitialized.

  • runtime/JSArray.h:

(JSC::JSArray::tryCreateUninitialized):

3:42 PM Changeset in webkit [198477] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

Crash on DFG::WorkList thread in JSC::Heap::isCollecting for destroyed Web Worker
​https://bugs.webkit.org/show_bug.cgi?id=155678
<rdar://problem/25251439>

Reviewed by Filip Pizlo.

This fixes a crash that we saw with GuardMalloc. If the Plan was
Cancelled it may not be safe to access the VM. If the Plan was
cancelled we are just going to bail anyways, so keep the ASSERT but
short-circuit if the plan was Cancelled.

  • dfg/DFGWorklist.cpp:

(JSC::DFG::Worklist::runThread):

1:08 PM Changeset in webkit [198476] by Darin Adler
  • 22 edits in trunk/Source

Disable Caches in Safari's Develop menu does not disable caches.
​https://bugs.webkit.org/show_bug.cgi?id=64483

Reviewed by Antti Koivisto.

Source/WebCore:

Moved feature from Settings to Page.

  • history/PageCache.cpp:

(WebCore::canCachePage): Use function on Page instead of Settings.
(WebCore::PageCache::take): Ditto.
(WebCore::PageCache::get): Ditto.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::subresourceCachePolicy): Ditto.
(WebCore::FrameLoader::addExtraFieldsToRequest): Ditto.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::cachePolicy): Ditto.

  • page/Page.h:

(WebCore::Page::isResourceCachingDisabled): Added.
(WebCore::Page::setResourceCachingDisabled): Added.

  • page/Settings.in: Removed resourceCachingDisabled.

Source/WebKit/mac:

Removed unneeded WebPreferences property; we don't need this for Legacy WebKit.

  • WebView/WebPreferenceKeysPrivate.h: Removed

WebKitResourceCachingDisabledPreferenceKey.

  • WebView/WebPreferences.mm:

(-[WebPreferences isResourceCachingDisabled]): Deleted.
(-[WebPreferences setResourceCachingDisabled:]): Deleted.

  • WebView/WebPreferencesPrivate.h: Removed resourceCachingDisabled property.
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]): Removed code to update resourceCachingDisabled.

Source/WebKit2:

Moved functions from WKPreferences to WKPage.

  • Shared/WebPreferencesDefinitions.h: Removed ResourceCachingDisabled.
  • UIProcess/API/C/WKPage.cpp:

(WKPageGetResourceCachingDisabled): Added.
(WKPageSetResourceCachingDisabled): Added.

  • UIProcess/API/C/WKPagePrivate.h: Added above functions.
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetResourceCachingDisabled): Deleted.
(WKPreferencesGetResourceCachingDisabled): Deleted.

  • UIProcess/API/C/WKPreferencesRefPrivate.h: Deleted above functions.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setResourceCachingDisabled): Added.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::isResourceCachingDisabled): Added.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Removed code to set the setting
for resourceCachingDisabled..
(WebKit::WebPage::setResourceCachingDisabled): Added.

  • WebProcess/WebPage/WebPage.h: Declared setResourceCachingDisabled.
  • WebProcess/WebPage/WebPage.messages.in: Added SetResourceCachingDisabled.
10:20 AM Changeset in webkit [198475] by mitz@apple.com
  • 35 edits in trunk

Update build settings

Rubber-stamped by Andy Estes.

Source/bmalloc:

  • Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/Version.xcconfig:

Source/ThirdParty/ANGLE:

  • Configurations/DebugRelease.xcconfig:

Source/WebCore:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/Version.xcconfig:

Source/WebInspectorUI:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/Version.xcconfig:

Source/WebKit/mac:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/Version.xcconfig:

Source/WebKit2:

  • Configurations/DebugRelease.xcconfig:
  • Configurations/FeatureDefines.xcconfig:
  • Configurations/Version.xcconfig:

Source/WTF:

  • Configurations/DebugRelease.xcconfig:

Tools:

  • ContentExtensionTester/Configurations/DebugRelease.xcconfig:
  • DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
  • LayoutTestRelay/Configurations/DebugRelease.xcconfig:
  • MiniBrowser/Configurations/DebugRelease.xcconfig:
  • TestWebKitAPI/Configurations/DebugRelease.xcconfig:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig: Synced up to the ones in ../Source.
  • WebEditingTester/Configurations/DebugRelease.xcconfig:
  • WebKitTestRunner/Configurations/DebugRelease.xcconfig:
  • asan/asan.xcconfig:
8:21 AM Changeset in webkit [198474] by Chris Fleizach
  • 5 edits
    1 move in trunk

AX: Radio button members are not identified together in all cases
​https://bugs.webkit.org/show_bug.cgi?id=155604
<rdar://problem/21186992>

Reviewed by Darin Adler.

Source/WebCore:

Allow aria radio buttons to be grouped together as linked ui elements even if they're not input types of radio button.

Modified test: accessibility/radio-button-group-members.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::speakProperty):
(WebCore::AccessibilityRenderObject::addRadioButtonGroupChildren):
(WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers):

  • accessibility/AccessibilityRenderObject.h:

LayoutTests:

  • accessibility/mac/radio-button-group-members-expected.txt: Added.
  • accessibility/radio-button-group-members.html:
  • platform/mac/accessibility/radio-button-group-members-expected.txt: Removed.

Mar 19, 2016:

6:57 PM Changeset in webkit [198473] by jh718.park@samsung.com
  • 10 edits in trunk/Source/WebCore

Purge PassRefPtr from WebCore/html/shadow
​https://bugs.webkit.org/show_bug.cgi?id=155681

Reviewed by Darin Adler.

No new tests, no new behaviours.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::updateImageControls):
(WebCore::HTMLImageElement::tryCreateImageControls):
(WebCore::HTMLImageElement::createImageControls): Deleted.

  • html/HTMLImageElement.h:
  • html/shadow/ImageControlsRootElement.h:
  • html/shadow/MediaControls.h:
  • html/shadow/MediaControlsApple.cpp:

(WebCore::MediaControls::tryCreate):
(WebCore::MediaControlsApple::tryCreateControls):
(WebCore::MediaControlsApple::showClosedCaptionTrackList):
(WebCore::MediaControlsApple::hideClosedCaptionTrackList):
(WebCore::MediaControlsApple::eventListener):
(WebCore::MediaControls::create): Deleted.
(WebCore::MediaControlsApple::createControls): Deleted.

  • html/shadow/MediaControlsApple.h:
  • html/shadow/mac/ImageControlsButtonElementMac.cpp:

(WebCore::ImageControlsButtonElementMac::tryCreate):
(WebCore::ImageControlsButtonElementMac::maybeCreate): Deleted.

  • html/shadow/mac/ImageControlsButtonElementMac.h:
  • html/shadow/mac/ImageControlsRootElementMac.cpp:

(WebCore::ImageControlsRootElement::tryCreate):
(WebCore::ImageControlsRootElement::maybeCreate): Deleted.

2:16 PM Changeset in webkit [198472] by gskachkov@gmail.com
  • 10 edits in trunk

[ES6] Arrow function syntax. Update syntax error text 'super is only valid inside functions' to more suitable
​https://bugs.webkit.org/show_bug.cgi?id=155491

Reviewed by Saam Barati.

Source/JavaScriptCore:

Current message 'super is only valid inside of funcitons' is not correct
after patch for ​https://bugs.webkit.org/show_bug.cgi?id=153864 because
it is allow to use 'super' in eval. Current patch replace old message by
'Super is only valid inside functions or 'eval' inside a function' and
fix tests that rely on this message.

  • parser/Parser.cpp:

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

  • tests/stress/generator-with-super.js:

(shouldThrow):

  • tests/stress/modules-syntax-error.js:
  • tests/stress/super-in-lexical-scope.js:
  • tests/stress/tagged-templates-syntax.js:

LayoutTests:

  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-super.js:
  • sputnik/Conformance/07_Lexical_Conventions/7.5_Tokens/7.5.3_Future_Reserved_Words/S7.5.3_A1.27-expected.txt:
11:54 AM Changeset in webkit [198471] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Data URL DecodeTask may get deleted outside main thread
​https://bugs.webkit.org/show_bug.cgi?id=155584
rdar://problem/24492104

Reviewed by David Kilzer.

Follow-up: fix a possible null pointer crash.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::DecodingResultDispatcher::startTimer):

If timer fires under startOneShot m_decodeTask may become zero before schedule() is called.
Fix by copying schedule context to a local before calling startOneShot.

11:46 AM Changeset in webkit [198470] by Chris Dumez
  • 7 edits in trunk/Source/WebKit2

Add a setting to let the client toggle support for network cache speculative validation
​https://bugs.webkit.org/show_bug.cgi?id=155622
<rdar://problem/25233209>

Reviewed by Darin Adler.

Add SPI to toggle support for network cache speculative validation.
Enable network cache speculative validation by default for now, until
I have a chance to update the clients to use the new SPI.

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

(WKContextSetDiskCacheSpeculativeValidationEnabled):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration diskCacheSpeculativeValidationEnabled]):
(-[_WKProcessPoolConfiguration setDiskCacheSpeculativeValidationEnabled:]):

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

11:13 AM Changeset in webkit [198469] by mark.lam@apple.com
  • 14 edits in trunk

ES6 spec requires that ErrorPrototype not be an Error object.
​https://bugs.webkit.org/show_bug.cgi?id=155680

Reviewed by Michael Saboff.

Source/JavaScriptCore:

The ES6 spec states that Error.prototype should not be an instance of Error:
​https://tc39.github.io/ecma262/#sec-properties-of-the-error-prototype-object

"The Error prototype object is an ordinary object. It is not an Error instance
and does not have an ErrorData internal slot."

This patch changes ErrorPrototype to conform to the above specification.

  • runtime/ErrorConstructor.cpp:

(JSC::ErrorConstructor::finishCreation):

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototype::ErrorPrototype):
(JSC::ErrorPrototype::finishCreation):
(JSC::ErrorPrototype::getOwnPropertySlot):

  • runtime/ErrorPrototype.h:

(JSC::ErrorPrototype::create):

  • runtime/NativeErrorConstructor.cpp:

(JSC::NativeErrorConstructor::finishCreation):

  • runtime/NativeErrorPrototype.cpp:

(JSC::NativeErrorPrototype::NativeErrorPrototype):
(JSC::NativeErrorPrototype::finishCreation):

  • runtime/NativeErrorPrototype.h:

(JSC::NativeErrorPrototype::create):

  • updated to no longer need a JSGlobalObject argument.
  • tests/es6/miscellaneous_built-in_prototypes_are_not_instances.js:
  • updated to match the kangax version of this test.

LayoutTests:

Updated the appropriate tests to expect the toString() value of Error.prototype
to now be "[object Object]" instead of "[object Error]". Also rebased the test
results accordingly.

  • fast/dom/DOMException/prototype-object-expected.txt:
  • fast/dom/DOMException/prototype-object.html:
  • js/dom/native-error-prototype-expected.txt:
  • js/dom/script-tests/native-error-prototype.js:
  • sputnik/Conformance/15_Native_Objects/15.11_Error/15.11.4/S15.11.4_A2.html:
12:17 AM Changeset in webkit [198468] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

​https://bugs.webkit.org/show_bug.cgi?id=155664
Consider to cap the size of session history data.

In iOS, if the total history entries data exceeds a threshold (2MB at the moment), don't
accumulate more data into the session state blob.

Patch by Yongjun Zhang <​yongjun_zhang@apple.com> on 2016-03-19
Reviewed by Darin Adler.

  • UIProcess/mac/LegacySessionStateCoding.cpp:

(WebKit::encodeSessionHistory): Stop encoding further history entries data into session state

if the total size exceed 2MB in iOS.

Mar 18, 2016:

10:05 PM Changeset in webkit [198467] by dbates@webkit.org
  • 3 edits
    2 adds in trunk/LayoutTests

Update AutoFill button in input fields
​https://bugs.webkit.org/show_bug.cgi?id=155619

Update expected results for Windows and GTK ports. Add expected result for the EFL port.

  • platform/efl/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt: Added.
  • platform/gtk/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
  • platform/win/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:
9:06 PM Changeset in webkit [198466] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix after r198464.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups):

8:33 PM pywebsocket: a WebSocket server for layout tests edited by citizenJ@yopmail.com
(diff)
8:33 PM Changeset in webkit [198465] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Build fix after r198234.

  • public/api/commits.php:

(main): Typo: fetch_latest_reported -> fetch_last_reported.

  • public/include/commit-log-fetcher.php:

(CommitLogFetcher::format_single_commit): commits should be an array.

8:29 PM Changeset in webkit [198464] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Perf Dashboard v3 confuses better and worse on A/B task page
​https://bugs.webkit.org/show_bug.cgi?id=155675
<rdar://problem/25208723>

Reviewed by Joseph Pecoraro.

The analysis results viewer on v3 UI sometimes treats regressions as progressions and vice versa when
the first set (i.e. set A) of the revisions used in an A/B testing never appears in the original graph,
and its latest commit time matches that of the second set, which appears in the original graph.

Because the analysis results viewer compares results in the increasing row number, this results in
B to be compared to A instead of A to be compared to B. Fixed the bug by preventing the wrong ordering
to occur in _buildRowsForPointsAndTestGroups by always inserting a root set A before B when B appears
and A doesn't appear in the original graph.

  • public/v3/components/analysis-results-viewer.js:

(AnalysisResultsViewer.prototype._collectRootSetsInTestGroups): Remember the succeeding root set B
when creating an entry for root set A.
(AnalysisResultsViewer.prototype._buildRowsForPointsAndTestGroups): Fixed the bug. Also un-duplicated
the code to create a new row.
(AnalysisResultsViewer.RootSetInTestGroup): Now takes a succeeding root set. e.g. it's B for A and
undefined for B in A/B testing.
(AnalysisResultsViewer.RootSetInTestGroup.prototype.succeedingRootSet): Added.

  • public/v3/components/time-series-chart.js:

(TimeSeriesChart.computeTimeGrid): Fixed the bug that we would end up showing 0 AM instead of dates
when both dates and months change.

7:50 PM Changeset in webkit [198463] by rniwa@webkit.org
  • 1 edit
    2 adds in trunk/Websites/perf.webkit.org

Add unit tests for measurement-set.js and measurement-adapter.js
​https://bugs.webkit.org/show_bug.cgi?id=155673

Reviewed by Daniel Bates.

Add tests which were supposed to be added in r198462.

  • unit-tests/measurement-adaptor-tests.js: Added.
  • unit-tests/measurement-set-tests.js: Added.

(assert.notReached): Added.
(global.RemoteAPI.getJSON): Added.
(global.RemoteAPI.getJSONWithStatus): Added. A mock.

7:17 PM Changeset in webkit [198462] by rniwa@webkit.org
  • 15 edits
    1 add in trunk/Websites/perf.webkit.org

Add unit tests for measurement-set.js and measurement-adapter.js
​https://bugs.webkit.org/show_bug.cgi?id=155673

Reviewed by Darin Adler.

Added mocha unit tests for MeasurementSet and MeasurementAdapter classes along with the necessary
refactoring to run these tests in node.

getJSON and getJSONStatus are now under RemoteAPI so that unit tests can mock them.

Removed the dependency on v2 UI's TimeSeries and Measurement class by adding a new implementation
of TimeSeries in v3 and removing the dependency on Measurement in chart-pane-status-view.js with
new helper methods on Build and CommitLog.

Many js files now use 'use strict' (node doesn't support class syntax in non-strict mode) and
module.exports to export symbols in node's require function.

  • public/v3/index.html:
  • public/v3/main.js:
  • public/v3/models/analysis-results.js:

(AnalysisResults.fetch):

  • public/v3/models/analysis-task.js:

(AnalysisTask.fetchAll):

  • public/v3/models/builder.js:

(Build):
(Build.prototype.builder): Added. Used by ChartPaneStatusView.
(Build.prototype.buildNumber): Ditto.
(Build.prototype.buildTime): Ditto.

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

(CommitLog.prototype.diff): Ditto.
(CommitLog.fetchBetweenRevisions):

  • public/v3/models/data-model.js:

(DataModelObject.cachedFetch):

  • public/v3/models/measurement-adaptor.js:

(MeasurementAdaptor.prototype.applyToAnalysisResults): Renamed from adoptToAnalysisResults.
(MeasurementAdaptor.prototype.applyTo): Renamed from adoptToSeries. Now shares a lot more
code with applyToAnalysisResults. The code to set 'series' and 'seriesIndex' has been moved
to TimeSeries.append. 'measurement' is no longer needed as this patch removes its only use
in ChartPaneStatusView.

  • public/v3/models/measurement-cluster.js:

(MeasurementCluster.prototype.addToSeries): Use TimeSeries.append instead of directly mutating
series._series.

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

(Array.prototype.includes): Added a polyfill for node.
(MeasurementSet.prototype._fetchSecondaryClusters): Removed a bogus assertion. When fetchBetween
is called with a mixture of clusters that have been fetched and not fetched, this assertion fails.
(MeasurementSet.prototype._fetch):
(TimeSeries.prototype.findById): Moved to time-series.js.
(TimeSeries.prototype.dataBetweenPoints): Ditto.
(TimeSeries.prototype.firstPoint): Ditto.
(TimeSeries.prototype.fetchedTimeSeries): Moved the code to extend the last point to TimeSeries'
extendToFuture.

  • public/v3/models/repository.js:
  • public/v3/models/root-set.js:

(MeasurementRootSet): Ignore repositories that had not been defined (e.g. it could be added after
manifest.json had been downloaded but before a given root set is created for an A/B testing).

  • public/v3/models/time-series.js:

(TimeSeries): Added.
(TimeSeries.prototype.append): Added.
(TimeSeries.prototype.extendToFuture): Added.
(TimeSeries.prototype.firstPoint): Moved from measurement-set.js.
(TimeSeries.prototype.lastPoint): Added.
(TimeSeries.prototype.previousPoint): Added.
(TimeSeries.prototype.nextPoint): Added.
(TimeSeries.prototype.findPointByIndex): Added.
(TimeSeries.prototype.findById): Moved from measurement-set.js.
(TimeSeries.prototype.findPointAfterTime): Added.
(TimeSeries.prototype.dataBetweenPoints): Moved from measurement-set.js.

  • public/v3/pages/chart-pane-status-view.js:

(ChartPaneStatusView.prototype.render): Use newly added helper functions on Build.
(ChartPaneStatusView.prototype._formatTime): Added.
(ChartPaneStatusView.prototype.setCurrentRepository):
(ChartPaneStatusView.prototype.computeChartStatusLabels): Rewrote the code using RootSet object on
currentPoint and previousPoint instead of Measurement class from v2 UI. Also sort the results using
sortByNamePreferringOnesWithURL.

  • public/v3/remote.js:

(RemoteAPI.getJSON): Moved under RemoteAPI.
(RemoteAPI.getJSONWithStatus): Ditto.
(PrivilegedAPI):
(PrivilegedAPI.requestCSRFToken):

6:37 PM Changeset in webkit [198461] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Bullet misaligned when expanding console log message
​https://bugs.webkit.org/show_bug.cgi?id=155669
<rdar://problem/25250721>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-18
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree):
(.object-tree .object-tree): Deleted.
Make object tree's inline-block again.

  • UserInterface/Views/ConsoleMessageView.css:

(.console-top-level-message .object-tree):
(.console-top-level-message .object-tree .object-tree):
Since the Console is the only place that requires a non-inline-block
object-tree, and only at the top level, have the console override
the styles of object trees as it needs.

6:31 PM Changeset in webkit [198460] by commit-queue@webkit.org
  • 5 edits in trunk

Update AutoFill button in input fields.
​https://bugs.webkit.org/show_bug.cgi?id=155619.
rdar://problem/24486939.

Patch by Zhuo Li <​zachli@apple.com> on 2016-03-18
Reviewed by Daniel Bates.

Source/WebCore:

  • css/html.css:

(input::-webkit-contacts-auto-fill-button):
Use the new AutoFill button.

LayoutTests:

  • fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:

Update the test results.

  • platform/ios-simulator/fast/forms/auto-fill-button/input-contacts-auto-fill-button-expected.txt:

Ditto.

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

Uncaught Exception: TypeError: undefined is not an object (evaluating 'this._treeOutlineDataGridSynchronizer.treeElementForDataGridNode')
​https://bugs.webkit.org/show_bug.cgi?id=155671
<rdar://problem/25249401>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-18
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype._sort):

5:42 PM Changeset in webkit [198458] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Limit DFG's Validate symbols to its compilation unit
​https://bugs.webkit.org/show_bug.cgi?id=155670

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-18
Reviewed by Filip Pizlo.

  • dfg/DFGValidate.cpp:
5:05 PM Changeset in webkit [198457] by achristensen@apple.com
  • 13 edits in trunk/Source

Give NSURLSessionConfiguration information about parent process
​https://bugs.webkit.org/show_bug.cgi?id=155661
Source/WebCore:

Reviewed by Anders Carlsson.

  • platform/spi/cf/CFNetworkSPI.h:

Add newly-used SPI declarations.

Source/WebKit2:

rdar://problem/25225850

Reviewed by Anders Carlsson.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::sessionID):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::partitionName):
(WebKit::NetworkProcess::sourceApplicationAuditData):
(WebKit::NetworkProcess::cfURLCacheOrigins):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::globalCustomProtocolManager):
(WebKit::globalSourceApplicationAuditTokenData):
(WebKit::NetworkSession::setCustomProtocolManager):
(WebKit::NetworkSession::setSourceApplicationAuditTokenData):
(WebKit::NetworkSession::defaultSession):
(WebKit::NetworkSession::NetworkSession):
Tell the NSURLSessionConfiguration what the source application bundle identifier
and audit token data are so we can correctly keep track of which application is using data.
This also gives CFNetwork enough information to determine if the application is allowed to
use cell data in Settings, so it seems like we do not need to explicitly set allowsCellularAccess.

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::sourceApplicationAuditData):
(WebKit::RemoteNetworkingContext::sourceApplicationIdentifier):

  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::sourceApplicationAuditData):
(WebKit::WebFrameNetworkingContext::sourceApplicationIdentifier):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

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

(WebKit::WebProcess::platformTerminate):
(WebKit::WebProcess::sourceApplicationAuditData):
(WebKit::WebProcess::initializeSandbox):
I moved the calls to getAuditToken from RemoteNetworkingContext.mm and WebFrameNetworkingContext.mm
to NetworkProcessCocoa.mm and WebProcessCocoa.mm, respectively, to share with NetworkSession code,
which does not use NetworkingContexts.

5:04 PM Changeset in webkit [198456] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Build fix after r198455.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::layerTreeCommitComplete):

5:00 PM Changeset in webkit [198455] by Simon Fraser
  • 16 edits
    2 adds in trunk

Sideways-scrollable RTL document has wrong initial and reload offset in WKWebView
​https://bugs.webkit.org/show_bug.cgi?id=155660
Source/WebCore:

rdar://problem/22212662

Reviewed by Tim Horton.

There were two problems with the scroll position of RTL documents on initial and reload
in WKWebView.

First, in the delegatesScrolling() code path, ScrollView::updateScrollbars() needs to
tell someone that the scroll origin changed, to trigger a scroll to the page origin.

Secondly, WKWebView had scrollPosition/scrollOffset confusion in various places.

Test: fast/scrolling/rtl-initial-scroll-position.html

  • platform/ScrollView.cpp:

(WebCore::ScrollView::updateScrollbars):

Source/WebKit2:

Reviewed by Tim Horton.

There were two problems with the scroll position of RTL documents on initial and reload
in WKWebView.

First, in the delegatesScrolling() code path, ScrollView::updateScrollbars() needs to
tell someone that the scroll origin changed, to trigger a scroll to the page origin.

Secondly, WKWebView had scrollPosition/scrollOffset confusion in various places. In
the restorePageState() code path, WebCore passes an exposedRect; this patch makes
it explicit that it's an exposedContentRect, and passes scrollOrigin so that it can
be mapped into scrollOffset-relative coordinates that the UIScrollView wants.

When reloading an RTL page, there was an additional issue; restorePageState()
restored the exposedRect, but then we'd see the origin change as a programmatic scroll
to 0,0, clobbering the exposedRect. Fix by using a "_commitDidRestoreExposedRect" flag
on the WKWebView that is used to ignore the programmatic scroll in that case.

Ideally these changes would fix fast/scrolling/scroll-position-on-reload-rtl.html, but the
test still fails because of timing differences between OS X and iOS.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didCommitLayerTree:]):
(-[WKWebView _layerTreeCommitComplete]):
(-[WKWebView _restorePageStateToExposedRect:scrollOrigin:scale:]):
(-[WKWebView _scrollToContentScrollPosition:scrollOrigin:]):
(-[WKWebView _restorePageStateToExposedRect:scale:]): Deleted.
(-[WKWebView _scrollToContentOffset:scrollOrigin:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::requestScroll):
(WebKit::PageClientImpl::layerTreeCommitComplete):
(WebKit::PageClientImpl::restorePageState):

  • UIProcess/ios/WKContentView.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _layerTreeCommitComplete]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::layerTreeCommitComplete):
(WebKit::WebPageProxy::restorePageState):

  • UIProcess/mac/RemoteLayerTreeDrawingAreaProxy.mm:

(WebKit::RemoteLayerTreeDrawingAreaProxy::commitLayerTree):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::restorePageState):

LayoutTests:

Reviewed by Tim Horton.

Test for initial scroll position in an RTL page.

  • fast/scrolling/rtl-initial-scroll-position-expected.html: Added.
  • fast/scrolling/rtl-initial-scroll-position.html: Added.
4:59 PM Changeset in webkit [198454] by Ryan Haddad
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r198443.

This change caused API test failures on El Capitan

Reverted changeset:

"CRASH in WebCore::MediaResourceLoader::requestResource + 698"
​https://bugs.webkit.org/show_bug.cgi?id=155651
​http://trac.webkit.org/changeset/198443

4:53 PM Changeset in webkit [198453] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit2

NSURLSession: Set download resume data when a download fails due to an error.
​https://bugs.webkit.org/show_bug.cgi?id=155665

Reviewed by Alex Christensen.

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:didCompleteWithError:]): Save the resume data from the

NSError userInfo if it exists.

4:50 PM Changeset in webkit [198452] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Fix ObjectTree Map styling, key/value look cramped
​https://bugs.webkit.org/show_bug.cgi?id=155668

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-18
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.tree-outline .item.object-tree-array-index):

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.css:

(.tree-outline .item.object-tree-map-entry):
When creating generic tree outline styles generic object tree
styles were getting overriden by generic tree outline styles
with higher specificity.

4:45 PM Changeset in webkit [198451] by Darin Adler
  • 3 edits
    2 adds in trunk

ASSERTION FAILED: m_isValid == valid() in WebCore::HTMLFormControlElement::isValidFormControlElement
​https://bugs.webkit.org/show_bug.cgi?id=139481

Reviewed by Daniel Bates.

Source/WebCore:

Test: fast/forms/validity-assertion-inserting-into-datalist.html

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::insertedInto): Set the flags that will cause
"will validate" to be recomputed *before* calling willValidate().

LayoutTests:

  • fast/forms/validity-assertion-inserting-into-datalist-expected.txt: Added.
  • fast/forms/validity-assertion-inserting-into-datalist.html: Added.
4:23 PM Changeset in webkit [198450] by Chris Dumez
  • 7 edits
    6 adds in trunk

Speculative revalidation requests do not have their HTTP user-agent set
​https://bugs.webkit.org/show_bug.cgi?id=155620
<rdar://problem/24657567>

Reviewed by Brady Eidson.

Source/WebCore:

Export a couple of symbols so they can be used from WebKit2.

Test: http/tests/cache/disk-cache/speculative-validation/validation-request.html

  • platform/network/ResourceRequestBase.h:

Source/WebKit2:

Speculative revalidation requests do not have their HTTP user-agent set
which could lead to different content getting returned by the server.

To address the problem, we save the original request's 'user-agent' in
the disk cache and re-use it later on for speculative validation
requests.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):
(WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry):
(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):
(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourceInfo::operator=):
(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
(WebKit::NetworkCache::SubresourcesEntry::updateSubresourceLoads):
(WebKit::NetworkCache::SubresourcesEntry::decodeStorageRecord): Deleted.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):

LayoutTests:

Add layout test coverage.

  • http/tests/cache/disk-cache/speculative-validation/resources/request-headers-script.php: Added.
  • http/tests/cache/disk-cache/speculative-validation/resources/validation-request-frame.php: Added.
  • http/tests/cache/disk-cache/speculative-validation/validation-request-expected.txt: Added.
  • http/tests/cache/disk-cache/speculative-validation/validation-request.html: Added.
4:22 PM Changeset in webkit [198449] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.121

New Tag.

4:22 PM Changeset in webkit [198448] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.6.11

New Tag.

4:14 PM Changeset in webkit [198447] by mark.lam@apple.com
  • 28 edits in trunk

ES6 spec requires that RegExpPrototype not be a RegExp object.
​https://bugs.webkit.org/show_bug.cgi?id=155654

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

The ES6 spec states that RegExp.prototype should not be an instance of RegExp:
​https://tc39.github.io/ecma262/#sec-properties-of-the-regexp-prototype-object

"The RegExp prototype object is an ordinary object. It is not a RegExp instance
and does not have a RegExpMatcher internal slot or any of the other internal
slots of RegExp instance objects."

This patch changes RegExpPrototype to conform to the above specifications.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::RegExpConstructor):
(JSC::RegExpConstructor::finishCreation):

  • runtime/RegExpPrototype.cpp:

(JSC::RegExpPrototype::RegExpPrototype):
(JSC::RegExpPrototype::finishCreation):
(JSC::RegExpPrototype::getOwnPropertySlot):
(JSC::RegExpPrototype::visitChildren):
(JSC::regExpProtoFuncTest):

  • runtime/RegExpPrototype.h:

(JSC::RegExpPrototype::create):
(JSC::RegExpPrototype::createStructure):
(JSC::RegExpPrototype::emptyRegExp):

  • tests/es6.yaml:
  • This patch makes the es6/miscellaneous_built-in_prototypes_are_not_instances.js test now pass. However, the kangax version of this test still fails because it also checks Error objects (which will be fixed in a subsequent patch).
  • tests/mozilla/ecma_2/shell.js:

(stringify):
(test):
(getFailedCases):
(err):

  • tests/stress/static-getter-in-names.js:

(shouldBe):

LayoutTests:

Rebase all the test results.

  • fast/regex/script-tests/toString.js:
  • fast/regex/toString-expected.txt:
  • ietestcenter/Javascript/15.10.6-expected.txt:
  • ietestcenter/Javascript/15.10.7.1-1-expected.txt:
  • ietestcenter/Javascript/15.10.7.2-1-expected.txt:
  • ietestcenter/Javascript/15.10.7.3-1-expected.txt:
  • ietestcenter/Javascript/15.10.7.4-1-expected.txt:
  • ietestcenter/Javascript/15.10.7.5-1-expected.txt:
  • ietestcenter/Javascript/TestCases/15.10.6.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.1-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.2-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.3-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.4-1.js:

(ES5Harness.registerTest.test):

  • ietestcenter/Javascript/TestCases/15.10.7.5-1.js:

(ES5Harness.registerTest.test):

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/kde/RegExp-expected.txt:
  • js/kde/script-tests/RegExp.js:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.6/S15.10.6_A2-expected.txt:
3:35 PM Changeset in webkit [198446] by enrica@apple.com
  • 9 edits in trunk/Source/WebKit2

Add id attribute to _WKActivatedElementInfo.
​https://bugs.webkit.org/show_bug.cgi?id=155666
rdar://problem/25181956

Reviewed by Beth Dakin.

  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):

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

(-[_WKActivatedElementInfo _initWithType:URL:location:title:ID:rect:image:]):
(-[_WKActivatedElementInfo ID]):
(-[_WKActivatedElementInfo _initWithType:URL:location:title:rect:image:]): Deleted.

  • UIProcess/API/Cocoa/_WKActivatedElementInfoInternal.h:
  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showImageSheet]):
(-[WKActionSheetAssistant showLinkSheet]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _showAttachmentSheet]):
(-[WKContentView _showLinkSheet]):
(-[WKContentView _dataForPreviewItemController:atPosition:type:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

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

Need to forward declare NSScrollerImpSPI::scrollerLayoutDirection.
​https://bugs.webkit.org/show_bug.cgi?id=155662.

Patch by Zhuo Li <​zachli@apple.com> on 2016-03-18
Reviewed by Myles C. Maxfield.

  • platform/spi/mac/NSScrollerImpSPI.h:

Forward declare NSScrollerImpSPI::scrollerLayoutDirection.

2:14 PM Changeset in webkit [198444] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[OS X] Scrollbars are sometimes erroneously reported as overlay
​https://bugs.webkit.org/show_bug.cgi?id=155630

Reviewed by Darin Adler.

When AppKit boots up, if the system preference is set to determine at runtime whether
scrollbars should be overlay or always-on, AppKit must do some processing to determine
this scrollbar state. We listen for the results by using NSScrollerImpPairDelegate's
scrollerImpPair:updateScrollerStyleForNewRecommendedScrollerStyle: method.

However, our NSScrollerImpPairDelegates are owned by the FrameView, and when loading
a page, there is a short amount of time when no FrameViews are alive. This means that
there is a point in time when we don't have any NSScrollerImpPairs alive. Unfortunately,
the processesing that AppKit does to determine the scrollbar state is done
asynchronously, and the results may be reported within this short window. In this case,
we don't receive the notification that the scrollbar should be non-overlay, and our
internal state (gUsesOverlayScrollbars in ScrollbarThemeMac) becomes stale.

The solution is to simply always check what the scrollbar state is upon creation of a
NSScrollerImpPair. That way, as soon as the second FrameView is created, the scrollbar
state will be correctly updated immediately.

An alternative, similar, approach would be for ScrollbarThemeMac to listen to the
NSPreferredScrollerStyleDidChangeNotification. This patch doesn't use this approach
in order to align with the current division of responsibilities between ScrollAnimator
and ScrollbarTheme.

Covered by existing (RTL Scrollbar) tests.

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimatorMac::ScrollAnimatorMac):

1:54 PM Changeset in webkit [198443] by Brent Fulgham
  • 3 edits in trunk/Source/WebCore

CRASH in WebCore::MediaResourceLoader::requestResource + 698
​https://bugs.webkit.org/show_bug.cgi?id=155651
<rdar://problem/25130582>

Patch by Jer Noble <​jer.noble@apple.com> on 2016-03-18
Reviewed by Eric Carlson.

No new tests, fixes existing tests running under GuardMalloc.

Protect against the Document passed into MediaResourceLoader being destroyed during the MediaResourceLoader's lifetime.

  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::MediaResourceLoader):
(WebCore::MediaResourceLoader::contextDestroyed):
(WebCore::MediaResourceLoader::requestResource):
(WebCore::MediaResource::responseReceived):

  • loader/MediaResourceLoader.h:
1:48 PM Changeset in webkit [198442] by dino@apple.com
  • 2 edits
    4 adds in trunk/PerformanceTests

Add a basic WebGL test to Animometer
​https://bugs.webkit.org/show_bug.cgi?id=155475
<rdar://problem/25156860>

Reviewed by Simon Fraser and Jon Lee.

Add a pretty simple WebGL test to Animometer
which tries to draw a number of animated triangles.
The result still needs a bit of tuning.

  • Animometer/resources/debug-runner/tests.js: Add a new

Suite for "3D" tests.

  • Animometer/tests/3d/resources/webgl.js: Added.
  • Animometer/tests/3d/webgl.html: Added.
1:23 PM Changeset in webkit [198441] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Timeline reset issues after Navigation Sidebar removal
​https://bugs.webkit.org/show_bug.cgi?id=155658
<rdar://problem/25245292>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-18
Reviewed by Timothy Hatcher.

  • UserInterface/Views/CircleChart.js:

(WebInspector.CircleChart.prototype.set values):
If the segments have never been set the values list will be empty.
Allow clearing to set empty values again.

  • UserInterface/Views/ScriptClusterTimelineView.js:

(WebInspector.ScriptClusterTimelineView.prototype._scriptClusterViewCurrentContentViewDidChange):
(WebInspector.ScriptClusterTimelineView):
Timeline sidebar no longer exists. Replace with the common
FIXME added to the other TimelineViews.

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView.prototype.reset):
Timeline sidebar and content tree outline no longer exist.
Replace with the common comment indicating this method
is intended for subclasses.

12:58 PM Changeset in webkit [198440] by mark.lam@apple.com
  • 2 edits in trunk/Source/WebCore

JSDOMGlobalObject.h needs to #include StructureInlines.h.
​https://bugs.webkit.org/show_bug.cgi?id=155657

Reviewed by Filip Pizlo.

No new tests needed. This is a build fix for the Win EWS.

  • bindings/js/JSDOMGlobalObject.h:
12:46 PM Changeset in webkit [198439] by Brent Fulgham
  • 3 edits
    3 adds in trunk

Local file restrictions should not block sessionStorage access
​https://bugs.webkit.org/show_bug.cgi?id=155609
<rdar://problem/25229461>

Reviewed by Andy Estes.

Source/WebCore:

Use of 'sesssionStorage' is governed by SecurityOrigin with third party access
set to 'ShouldAllowFromThirdParty::AlwaysAllowFromThirdParty'. We should not
reject local files for this combination of arguments.

Test: storage/domstorage/sessionstorage/blocked-file-access.html

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canAccessStorage): For the case of sessionStorage,
allow local file access.

LayoutTests:

  • storage/domstorage/sessionstorage/blocked-file-access-expected.txt: Added.
  • storage/domstorage/sessionstorage/blocked-file-access.html: Added.
  • storage/domstorage/sessionstorage/resources/blocked-example.html: Added.
12:44 PM Changeset in webkit [198438] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline inspector/model/remote-object.html for mac after r198435

Unreviewed test gardening.

  • platform/mac/inspector/model/remote-object-expected.txt:
12:18 PM Changeset in webkit [198437] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Add test for HashMap::ensure that shows that moving into the lambda does not incure extra cost
​https://bugs.webkit.org/show_bug.cgi?id=155621

Patch by Sam Weinig <​sam@webkit.org> on 2016-03-18
Reviewed by Alex Christensen.

  • TestWebKitAPI/Tests/WTF/HashMap.cpp:

(TestWebKitAPI::ObjectWithRefLogger::ObjectWithRefLogger):
(TestWebKitAPI::testMovingUsingEnsure):
(TestWebKitAPI::testMovingUsingAdd):
Add tests ensuring that objects moved into a map using ensure don't
have extra ref-churn.

12:04 PM Changeset in webkit [198436] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

CachedResource::MediaResource types shouldn't be blocked due to mixed-content.
​https://bugs.webkit.org/show_bug.cgi?id=155588
<rdar://problem/25177795>

Reviewed by Daniel Bates.

The Mixed Content spec specifically allows (with certain restrictions) loads of <image>,
<video>, and <audio> resources from mixed-content origins, albeit with warnings.

No new tests, fixes existing test: http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::contentTypeFromResourceType):

11:42 AM Changeset in webkit [198435] by keith_miller@apple.com
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

DataView should use an accessor for its length and buffer properties
​https://bugs.webkit.org/show_bug.cgi?id=155625

Reviewed by Michael Saboff.

The DataView object should use an accessor on DataView.prototype for its
byteLength, byteOffset, and buffer properties. This patch also, moves the
buffer property off the TypedArray object itself and onto the prototype
along with the other accessors. Since the .buffer property is no longer on
the object, JSArrayBufferView no longer needs to intercept accesses to
properties. Finally, this patch also fixes the length property on all the
existing DataView.prototype functions.

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::getOwnPropertySlot): Deleted.
(JSC::JSArrayBufferView::put): Deleted.
(JSC::JSArrayBufferView::defineOwnProperty): Deleted.
(JSC::JSArrayBufferView::deleteProperty): Deleted.
(JSC::JSArrayBufferView::getOwnNonIndexPropertyNames): Deleted.

  • runtime/JSArrayBufferView.h:

(JSC::JSArrayBufferView::jsBuffer):

  • runtime/JSDataViewPrototype.cpp:

(JSC::dataViewProtoGetterBuffer):
(JSC::dataViewProtoGetterByteLength):
(JSC::dataViewProtoGetterByteOffset):

  • runtime/JSGenericTypedArrayViewPrototypeFunctions.h:

(JSC::genericTypedArrayViewProtoGetterFuncBuffer):

  • runtime/JSTypedArrayViewPrototype.cpp:

(JSC::typedArrayViewProtoGetterFuncBuffer):
(JSC::JSTypedArrayViewPrototype::finishCreation):

11:37 AM Changeset in webkit [198434] by bshafiei@apple.com
  • 7 edits
    2 copies in branches/safari-601.1.46-branch

Merged r192285. rdar://problem/25234895

11:32 AM Changeset in webkit [198433] by Brent Fulgham
  • 7 edits
    2 adds in branches/safari-601-branch

Merge r192285.

Source/WebCore:

  • dom/ContainerNode.cpp:

(WebCore::ContainerNode::ensurePreInsertionValidity): Added.

  • dom/ContainerNode.h:

2015-11-10 Pranjal Jumde <​pjumde@apple.com>

Fixed crash loading Mozilla layout test editor/libeditor/crashtests/431086-1.xhtml.
​https://bugs.webkit.org/show_bug.cgi?id=150252
<rdar://problem/23149470>

Reviewed by Brent Fulgham.

  • Source/WebCore/editing/ios/EditorIOS.mm
  • Source/WebCore/editing/mac/EditorMac.mm In Editor::fontForSelection moved the node removal code, so that the node is only removed if style is not NULL.
  • Source/WebCore/editing/cocoa/EditorCocoa.mm In Editor::styleForSelectionStart checking if the parentNode can accept the styleElement node.

LayoutTests:

2015-11-10 Pranjal Jumde <​pjumde@apple.com>

Fixed crash loading Mozilla layout test editor/libeditor/crashtests/431086-1.xhtml.
​https://bugs.webkit.org/show_bug.cgi?id=150252
<rdar://problem/23149470>

Reviewed by Brent Fulgham.

  • LayoutTests/editing/execCommand/150252.xhtml
  • LayoutTests/editing/execCommand/150252-expected.txt
11:22 AM Changeset in webkit [198432] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.24.0.1/Source

Versioning.

11:16 AM Changeset in webkit [198431] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.24.0.1

New tag.

11:00 AM Changeset in webkit [198430] by Brent Fulgham
  • 3 edits in branches/safari-601-branch/Source/WebCore

Unreviewed build fix.

Get rid of infinitely recursive 'draw' implementation.

  • platform/graphics/Image.cpp:

(WebCore::Image::draw): Deleted.

  • platform/graphics/Image.h:
10:58 AM Changeset in webkit [198429] by Antti Koivisto
  • 3 edits in trunk/Source/WebKit2

Protect against excessive cache traversal
​https://bugs.webkit.org/show_bug.cgi?id=155635
rdar://problem/24241008

Reviewed by Darin Adler.

We can't handle unlimited number of parallel cache traversal requests from the client.
We'll run out of dispatch queues and other system resources. CPU will spin.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::traverse):

Add limit of maximum 3 traversals. When exceeded return nothing and log an error.

  • NetworkProcess/cache/NetworkCache.h:
10:58 AM Changeset in webkit [198428] by jonlee@apple.com
  • 5 edits in trunk/PerformanceTests

Add support for statically linking to a specific test
​https://bugs.webkit.org/show_bug.cgi?id=155631

Rubber-stamped by Darin Adler.

  • Animometer/developer.html: Update to call restartBenchmark instead so that it works for

both the preset and the manually set test sessions.

  • Animometer/resources/debug-runner/animometer.css:

(.tree .link): Style the "link" UI.

  • Animometer/resources/debug-runner/animometer.js: Move updateDisplay from suitesManager

to optionsManager since this is a visual option and has nothing to do with the suites
settings. Update the construction of the test UI by including a "link" after each test.
Clicking on that link brings up a JS prompt with a URL and a query string with the current
parameters of the controller, and selected test. Pasting this URL into the location bar will
automatically start running the selected test.
(suitesManager.suitesFromQueryString): Iterate through the Suites and tests and find the one
that matches the provided parameters. Returns an object similar to the form in
suitesManager.updateLocalStorageFromUI.
(benchmarkController.initialize): After settings up the events and options, try parsing the
query string and running the benchmark immediately. Otherwise, fall back to the form.
(benchmarkController.startBenchmark): Store the options and suites into member variables for
reuse in restartBenchmark.
(benchmarkController.startBenchmarkImmediatelyIfEncoded): Convert the query string to an object.
If that's successful, find the suite and test referenced in the query string. Start the benchmark if
the search for the test succeeded.

  • Animometer/resources/extensions.js:

(Utilities.stripNonASCIICharacters): Helper method to convert the name of the suite and test
into a query-string-friendly version.
(Utilities.convertObjectToQueryString): Helper method to convert an object to query string
format.
(Utilities.convertQueryStringToObject): Helper method to convert query string into an object
with properties and values.

10:48 AM Changeset in webkit [198427] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: AXARIACurrent exposed but not displayed in Accessibility Inspector
​https://bugs.webkit.org/show_bug.cgi?id=155600

Reviewed by Chris Fleizach.

Source/WebCore:

AXARIACurrent attribute was added to a temporary array that was never returned.

Test: accessibility/mac/aria-current-attribute-exposed.html

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):

LayoutTests:

  • accessibility/mac/aria-current-attribute-exposed-expected.txt: Added.
  • accessibility/mac/aria-current-attribute-exposed.html: Added.
10:44 AM Changeset in webkit [198426] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: Typing broken on form input field while using VoiceOver
​https://bugs.webkit.org/show_bug.cgi?id=155613

Reviewed by Chris Fleizach.

Source/WebCore:

The div element inside the INPUT element gives a collapsed TextMarkerRange which then creates
a collapsed Range. Fixed it by using the parent node to create the Range when the div node has
no children.

Test: accessibility/mac/text-marker-range-for-node-without-children.html

  • accessibility/AXObjectCache.cpp:

(WebCore::setRangeStartOrEndWithCharacterOffset):

LayoutTests:

  • accessibility/mac/text-marker-range-for-node-without-children-expected.txt: Added.
  • accessibility/mac/text-marker-range-for-node-without-children.html: Added.
9:57 AM Changeset in webkit [198425] by Chris Fleizach
  • 2 edits in trunk/Source/WebCore

AX: Implement AutoFill Available attribute for a text field
​https://bugs.webkit.org/show_bug.cgi?id=155567

Reviewed by Darin Adler.

This file was left out of original commit accidentally.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::addTextFieldChildren):

9:08 AM Changeset in webkit [198424] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601.1.46-branch

Merged r198377. rdar://problem/25235130

9:07 AM Changeset in webkit [198423] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601.1.46-branch

Merged r198372. rdar://problem/25234912

9:06 AM Changeset in webkit [198422] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r198370. rdar://problem/25234907

9:05 AM Changeset in webkit [198421] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r198361. rdar://problem/25234910

9:04 AM Changeset in webkit [198420] by bshafiei@apple.com
  • 4 edits
    2 copies in branches/safari-601.1.46-branch

Merged r192770. rdar://problem/25234899

9:03 AM Changeset in webkit [198419] by bshafiei@apple.com
  • 2 edits in branches/safari-601.1.46-branch/LayoutTests

Merged r192514. rdar://problem/25234899

9:02 AM Changeset in webkit [198418] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601.1.46-branch

Merged r192499. rdar://problem/25234899

9:00 AM Changeset in webkit [198417] by bshafiei@apple.com
  • 5 edits
    2 copies in branches/safari-601.1.46-branch

Merged r192252. rdar://problem/25234902

8:59 AM Changeset in webkit [198416] by bshafiei@apple.com
  • 3 edits in branches/safari-601.1.46-branch/Source/WebCore

Merged r192853. rdar://problem/25234891

8:51 AM Changeset in webkit [198415] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r197956. Just for fun.

  • PlatformMac.cmake:
8:43 AM Changeset in webkit [198414] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601-branch

Merged r198377. rdar://problem/25235124

8:43 AM Changeset in webkit [198413] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601-branch

Merged r198372. rdar://problem/25234865

8:42 AM Changeset in webkit [198412] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r197628. Just for fun.

  • PlatformMac.cmake:
8:41 AM Changeset in webkit [198411] by bshafiei@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merged r198370. rdar://problem/25234857

8:40 AM Changeset in webkit [198410] by bshafiei@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merged r198361. rdar://problem/25234860

8:38 AM Changeset in webkit [198409] by bshafiei@apple.com
  • 4 edits
    2 copies in branches/safari-601-branch

Merged r192770. rdar://problem/25234850

8:37 AM Changeset in webkit [198408] by bshafiei@apple.com
  • 2 edits in branches/safari-601-branch/LayoutTests

Merged r192514. rdar://problem/25234850

8:35 AM Changeset in webkit [198407] by bshafiei@apple.com
  • 1 edit in branches/safari-601.1.46-branch/Source/WebCore/svg/SVGPathElement.cpp

Build fix.

8:34 AM Changeset in webkit [198406] by bshafiei@apple.com
  • 3 edits
    2 copies in branches/safari-601-branch

Merged r192499. rdar://problem/25234850

8:30 AM Changeset in webkit [198405] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] One more attempt to try to fix the build after r197633.

  • PlatformMac.cmake:
8:29 AM Changeset in webkit [198404] by bshafiei@apple.com
  • 5 edits
    2 copies in branches/safari-601-branch

Merged r192252. rdar://problem/25234854

8:27 AM Changeset in webkit [198403] by bshafiei@apple.com
  • 3 edits in branches/safari-601-branch/Source/WebCore

Merged r192853. rdar://problem/25234844

8:22 AM Changeset in webkit [198402] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] One more attempt to try to fix the build after r197633.

  • PlatformMac.cmake:
8:11 AM Changeset in webkit [198401] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] One more attempt to try to fix the build after r197633.

  • PlatformMac.cmake: Revert r198398, which was incorrect.
7:49 AM Changeset in webkit [198400] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Last attempt to try to fix the build after r197633.

  • PlatformMac.cmake:
6:56 AM Changeset in webkit [198399] by Manuel Rego Casasnovas
  • 7 edits in trunk/Source/WebCore

[css-grid] Rename GridSpan properties
​https://bugs.webkit.org/show_bug.cgi?id=155636

Reviewed by Sergio Villar Senin.

GridSpan was using old names initialResolvedPosition and
finalResolvedPosition.
This patch rename them to startLine and endLine.

Some reasons for this refactoring:

No new tests, no change of behavior.

  • css/CSSGridTemplateAreasValue.cpp:

(WebCore::stringForPosition):

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseGridTemplateAreasRow):

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::createImplicitNamedGridLinesFromGridArea):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForNonSpanningItems):
(WebCore::RenderGrid::insertItemIntoGrid):
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
(WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid):
(WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid):
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
(WebCore::RenderGrid::gridAreaBreadthForChildIncludingAlignmentOffsets):
(WebCore::RenderGrid::columnAxisOffsetForChild):
(WebCore::RenderGrid::rowAxisOffsetForChild):

  • rendering/style/GridArea.h:

(WebCore::GridSpan::untranslatedDefiniteGridSpan):
(WebCore::GridSpan::translatedDefiniteGridSpan):
(WebCore::GridSpan::operator==):
(WebCore::GridSpan::integerSpan):
(WebCore::GridSpan::untranslatedStartLine):
(WebCore::GridSpan::untranslatedEndLine):
(WebCore::GridSpan::startLine):
(WebCore::GridSpan::endLine):
(WebCore::GridSpan::begin):
(WebCore::GridSpan::end):
(WebCore::GridSpan::translate):
(WebCore::GridSpan::GridSpan):
(WebCore::GridSpan::untranslatedResolvedInitialPosition): Deleted.
(WebCore::GridSpan::untranslatedResolvedFinalPosition): Deleted.
(WebCore::GridSpan::resolvedInitialPosition): Deleted.
(WebCore::GridSpan::resolvedFinalPosition): Deleted.

  • rendering/style/GridPositionsResolver.cpp:

(WebCore::definiteGridSpanWithNamedLineSpanAgainstOpposite):
(WebCore::resolveNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveGridPositionAgainstOppositePosition):
(WebCore::GridPositionsResolver::resolveGridPositionsFromStyle):

6:56 AM Changeset in webkit [198398] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] One more unreviewed speculative buildfix after r197633. Just for fun.

  • PlatformMac.cmake:
6:09 AM Changeset in webkit [198397] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r197633. Just for fun.

  • PlatformMac.cmake:
4:36 AM Changeset in webkit [198396] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed speculative cloop buildfix after r198364.

  • bytecode/SuperSampler.cpp:
4:17 AM Changeset in webkit [198395] by youenn.fablet@crf.canon.fr
  • 8 edits
    11 adds in trunk

crossorigin element resource loading should check HTTP redirection
​https://bugs.webkit.org/show_bug.cgi?id=130578

Reviewed by Daniel Bates and Brent Fulgham.

Source/WebCore:

Moved part of DocumentThreadableLoader redirection cross origin control code
into functions in CrossOriginAccessControl.cpp. Added cross origin control for
redirections in SubResourceLoader when policy is set to PotentiallyCrossOriginEnabled
using CrossOriginAccessControl.cpp new functions. Added a new test that checks that
cross-origin redirections are checked against CORS.

Test: http/tests/security/shape-image-cors-redirect.html

  • loader/CrossOriginAccessControl.cpp:

(WebCore::isValidCrossOriginRedirectionURL): Returns true if the redirected URL is a valid URL for cross-origin requests.
(WebCore::cleanRedirectedRequestForAccessControl): Removes all headers added by the network backend that may cause the response CORS validation to fail.

  • loader/CrossOriginAccessControl.h: Added above function prototypes.
  • loader/DocumentThreadableLoader.cpp:

(WebCore::DocumentThreadableLoader::redirectReceived): Used new CORS redirection methods of CrossOriginAccessControl.cpp.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::init): Initialize the SecurityOrigin to be used for loading the resource.
(WebCore::SubresourceLoader::willSendRequest): Added cross-origin redirection response check.
(WebCore::SubresourceLoader::checkCrossOriginAccessControl): Checks CORS and update request if needed. Returns true if control checks passed.

  • loader/SubresourceLoader.h: Added checkCrossOriginAccessControl declaration and m_origin declaration.

LayoutTests:

shape-image-cors-redirect.html checks that cross-origin redirections are checked against CORS.
It also checks that same-origin redirections are not checked against CORS.

  • http/tests/security/resources/redirect-allow-star.php: Added.
  • http/tests/security/shape-image-cors-redirect-expected.html: Added.
  • http/tests/security/shape-image-cors-redirect.html: Added.
3:15 AM Changeset in webkit [198394] by youenn.fablet@crf.canon.fr
  • 9 edits
    984 copies
    2 adds
    1 delete in trunk/LayoutTests

Move IndexedDB regular test to web-platform-tests
​https://bugs.webkit.org/show_bug.cgi?id=155581

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Moving regular IndexedDB tests from LayoutTests/imported/w3c/indexeddb to LayoutTests/imported/w3c/web-platform-tests/IndexedDB.
Moving private browsing IndexedDB tests from LayoutTests/imported/w3c/indexeddb to LayoutTests/imported/w3c/IndexedDB-private-browsing.
Removed private prefix from private browsing IndexedDB tests since they are stored in their own folder.

Modified support.js to remove unnecessary calls to testRunner API.
Modified also IndexedDB-private-browsing/support.js to always activate testRunner private browsing mode.

  • IndexedDB-private-browsing/abort-in-initial-upgradeneeded-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-expected.txt.
  • IndexedDB-private-browsing/abort-in-initial-upgradeneeded.html: Copied from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded.html.
  • IndexedDB-private-browsing/close-in-upgradeneeded-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-expected.txt.
  • IndexedDB-private-browsing/close-in-upgradeneeded.html: Copied from LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded.html.
  • IndexedDB-private-browsing/cursor-overloads-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/cursor-overloads-expected.txt.
  • IndexedDB-private-browsing/cursor-overloads.html: Copied from LayoutTests/imported/w3c/indexeddb/cursor-overloads.htm.
  • IndexedDB-private-browsing/idb_webworkers-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idb_webworkers-expected.txt.
  • IndexedDB-private-browsing/idb_webworkers.html: Copied from LayoutTests/imported/w3c/indexeddb/idb_webworkers.htm.
  • IndexedDB-private-browsing/idbcursor-advance-continue-async-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-expected.txt.
  • IndexedDB-private-browsing/idbcursor-advance-continue-async.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async.htm.
  • IndexedDB-private-browsing/idbcursor-advance-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-expected.txt.
  • IndexedDB-private-browsing/idbcursor-advance-invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-expected.txt.
  • IndexedDB-private-browsing/idbcursor-advance-invalid.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid.htm.
  • IndexedDB-private-browsing/idbcursor-advance.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-advance.htm.
  • IndexedDB-private-browsing/idbcursor-continue-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-continue-expected.txt.
  • IndexedDB-private-browsing/idbcursor-continue.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-continue.htm.
  • IndexedDB-private-browsing/idbcursor-direction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-expected.txt.
  • IndexedDB-private-browsing/idbcursor-direction-index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-expected.txt.
  • IndexedDB-private-browsing/idbcursor-direction-index-keyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-expected.txt.
  • IndexedDB-private-browsing/idbcursor-direction-index-keyrange.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange.htm.
  • IndexedDB-private-browsing/idbcursor-direction-index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index.htm.
  • IndexedDB-private-browsing/idbcursor-direction-objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor-direction-objectstore-keyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-expected.txt.
  • IndexedDB-private-browsing/idbcursor-direction-objectstore-keyrange.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange.htm.
  • IndexedDB-private-browsing/idbcursor-direction-objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore.htm.
  • IndexedDB-private-browsing/idbcursor-direction.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-direction.htm.
  • IndexedDB-private-browsing/idbcursor-key-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-key-expected.txt.
  • IndexedDB-private-browsing/idbcursor-key.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-key.htm.
  • IndexedDB-private-browsing/idbcursor-primarykey-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-expected.txt.
  • IndexedDB-private-browsing/idbcursor-primarykey.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey.htm.
  • IndexedDB-private-browsing/idbcursor-reused-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-reused-expected.txt.
  • IndexedDB-private-browsing/idbcursor-reused.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-reused.htm.
  • IndexedDB-private-browsing/idbcursor-source-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-source-expected.txt.
  • IndexedDB-private-browsing/idbcursor-source.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor-source.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8.htm.
  • IndexedDB-private-browsing/idbcursor_advance_index9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_index9.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9.htm.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore.htm.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2.htm.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3.htm.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4.htm.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_advance_objectstore5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7.htm.
  • IndexedDB-private-browsing/idbcursor_continue_index8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_index8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8.htm.
  • IndexedDB-private-browsing/idbcursor_continue_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_invalid.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5.htm.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-expected.txt.
  • IndexedDB-private-browsing/idbcursor_continue_objectstore6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6.htm.
  • IndexedDB-private-browsing/idbcursor_delete_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index.htm.
  • IndexedDB-private-browsing/idbcursor_delete_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_index2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2.htm.
  • IndexedDB-private-browsing/idbcursor_delete_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_index3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3.htm.
  • IndexedDB-private-browsing/idbcursor_delete_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_index4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4.htm.
  • IndexedDB-private-browsing/idbcursor_delete_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_index5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5.htm.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore.htm.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2.htm.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore3-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3.htm.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4.htm.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_delete_objectstore5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5.htm.
  • IndexedDB-private-browsing/idbcursor_iterating-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating-expected.txt.
  • IndexedDB-private-browsing/idbcursor_iterating.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating.htm.
  • IndexedDB-private-browsing/idbcursor_iterating_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-expected.txt.
  • IndexedDB-private-browsing/idbcursor_iterating_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index.htm.
  • IndexedDB-private-browsing/idbcursor_iterating_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_iterating_index2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2.htm.
  • IndexedDB-private-browsing/idbcursor_iterating_objectstore-expected.txt: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor_iterating_objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore.htm.
  • IndexedDB-private-browsing/idbcursor_iterating_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_iterating_objectstore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2.htm.
  • IndexedDB-private-browsing/idbcursor_update_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index.htm.
  • IndexedDB-private-browsing/idbcursor_update_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2.htm.
  • IndexedDB-private-browsing/idbcursor_update_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3.htm.
  • IndexedDB-private-browsing/idbcursor_update_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4.htm.
  • IndexedDB-private-browsing/idbcursor_update_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5.htm.
  • IndexedDB-private-browsing/idbcursor_update_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6.htm.
  • IndexedDB-private-browsing/idbcursor_update_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_index7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7.htm.
  • IndexedDB-private-browsing/idbcursor_update_objectstore8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-expected.txt.
  • IndexedDB-private-browsing/idbcursor_update_objectstore8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8.htm.
  • IndexedDB-private-browsing/idbdatabase_close-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_close.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_close.htm.
  • IndexedDB-private-browsing/idbdatabase_close2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_close2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore-createIndex-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore-createIndex-emptyname.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore10-1000ends-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore10-1000ends.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore10-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore10-emptyname.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore11.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore8-parameters-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore8-parameters.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters.htm.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore9-invalidparameters-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_createObjectStore9-invalidparameters.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters.htm.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore.htm.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2.htm.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3.htm.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore4-not_reused-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_deleteObjectStore4-not_reused.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused.htm.
  • IndexedDB-private-browsing/idbdatabase_transaction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_transaction.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction.htm.
  • IndexedDB-private-browsing/idbdatabase_transaction2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_transaction2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2.htm.
  • IndexedDB-private-browsing/idbdatabase_transaction3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_transaction3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3.htm.
  • IndexedDB-private-browsing/idbdatabase_transaction4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_transaction4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4.htm.
  • IndexedDB-private-browsing/idbdatabase_transaction5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-expected.txt.
  • IndexedDB-private-browsing/idbdatabase_transaction5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5.htm.
  • IndexedDB-private-browsing/idbfactory_cmp-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-expected.txt.
  • IndexedDB-private-browsing/idbfactory_cmp.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp.htm.
  • IndexedDB-private-browsing/idbfactory_cmp2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-expected.txt.
  • IndexedDB-private-browsing/idbfactory_cmp2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2.htm.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-expected.txt.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase.htm.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-expected.txt.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2.htm.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-expected.txt.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3.htm.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-expected.txt.
  • IndexedDB-private-browsing/idbfactory_deleteDatabase4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4.htm.
  • IndexedDB-private-browsing/idbfactory_open-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open.htm.
  • IndexedDB-private-browsing/idbfactory_open10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open10-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open10.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open10.htm.
  • IndexedDB-private-browsing/idbfactory_open11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open11-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open11.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open11.htm.
  • IndexedDB-private-browsing/idbfactory_open12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open12-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open12.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open12.htm.
  • IndexedDB-private-browsing/idbfactory_open2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open2-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open2.htm.
  • IndexedDB-private-browsing/idbfactory_open3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open3-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open3.htm.
  • IndexedDB-private-browsing/idbfactory_open4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open4-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open4.htm.
  • IndexedDB-private-browsing/idbfactory_open5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open5-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open5.htm.
  • IndexedDB-private-browsing/idbfactory_open6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open6-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open6.htm.
  • IndexedDB-private-browsing/idbfactory_open7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open7-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open7.htm.
  • IndexedDB-private-browsing/idbfactory_open8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open8-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbfactory_open8.htm.
  • IndexedDB-private-browsing/idbfactory_open9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open9-expected.txt.
  • IndexedDB-private-browsing/idbfactory_open9.html: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private.html.
  • IndexedDB-private-browsing/idbindex-multientry-arraykeypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-expected.txt.
  • IndexedDB-private-browsing/idbindex-multientry-arraykeypath.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath.htm.
  • IndexedDB-private-browsing/idbindex-multientry-big-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-expected.txt.
  • IndexedDB-private-browsing/idbindex-multientry-big.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big.htm.
  • IndexedDB-private-browsing/idbindex-multientry-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-expected.txt.
  • IndexedDB-private-browsing/idbindex-multientry.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex-multientry.htm.
  • IndexedDB-private-browsing/idbindex_count-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count-expected.txt.
  • IndexedDB-private-browsing/idbindex_count.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_count.htm.
  • IndexedDB-private-browsing/idbindex_count2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count2-expected.txt.
  • IndexedDB-private-browsing/idbindex_count2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_count2.htm.
  • IndexedDB-private-browsing/idbindex_count3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count3-expected.txt.
  • IndexedDB-private-browsing/idbindex_count3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_count3.htm.
  • IndexedDB-private-browsing/idbindex_count4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count4-expected.txt.
  • IndexedDB-private-browsing/idbindex_count4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_count4.htm.
  • IndexedDB-private-browsing/idbindex_get-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get-expected.txt.
  • IndexedDB-private-browsing/idbindex_get.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get.htm.
  • IndexedDB-private-browsing/idbindex_get2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get2-expected.txt.
  • IndexedDB-private-browsing/idbindex_get2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get2.htm.
  • IndexedDB-private-browsing/idbindex_get3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get3-expected.txt.
  • IndexedDB-private-browsing/idbindex_get3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get3.htm.
  • IndexedDB-private-browsing/idbindex_get4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get4-expected.txt.
  • IndexedDB-private-browsing/idbindex_get4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get4.htm.
  • IndexedDB-private-browsing/idbindex_get5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get5-expected.txt.
  • IndexedDB-private-browsing/idbindex_get5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get5.htm.
  • IndexedDB-private-browsing/idbindex_get6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get6-expected.txt.
  • IndexedDB-private-browsing/idbindex_get6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get6.htm.
  • IndexedDB-private-browsing/idbindex_get7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get7-private-expected.txt.
  • IndexedDB-private-browsing/idbindex_get7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_get7.htm.
  • IndexedDB-private-browsing/idbindex_getKey-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey.htm.
  • IndexedDB-private-browsing/idbindex_getKey2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey2.htm.
  • IndexedDB-private-browsing/idbindex_getKey3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey3.htm.
  • IndexedDB-private-browsing/idbindex_getKey4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey4.htm.
  • IndexedDB-private-browsing/idbindex_getKey5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey5.htm.
  • IndexedDB-private-browsing/idbindex_getKey6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey6.htm.
  • IndexedDB-private-browsing/idbindex_getKey7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-private-expected.txt.
  • IndexedDB-private-browsing/idbindex_getKey7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_getKey7.htm.
  • IndexedDB-private-browsing/idbindex_indexNames-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-expected.txt.
  • IndexedDB-private-browsing/idbindex_indexNames.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_indexNames.htm.
  • IndexedDB-private-browsing/idbindex_openCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-expected.txt.
  • IndexedDB-private-browsing/idbindex_openCursor.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor.htm.
  • IndexedDB-private-browsing/idbindex_openCursor2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-private-expected.txt.
  • IndexedDB-private-browsing/idbindex_openCursor2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2.htm.
  • IndexedDB-private-browsing/idbindex_openKeyCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-expected.txt.
  • IndexedDB-private-browsing/idbindex_openKeyCursor.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor.htm.
  • IndexedDB-private-browsing/idbindex_openKeyCursor2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-expected.txt.
  • IndexedDB-private-browsing/idbindex_openKeyCursor2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2.htm.
  • IndexedDB-private-browsing/idbindex_openKeyCursor3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-private-expected.txt.
  • IndexedDB-private-browsing/idbindex_openKeyCursor3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3.htm.
  • IndexedDB-private-browsing/idbkeyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange-expected.txt.
  • IndexedDB-private-browsing/idbkeyrange.html: Copied from LayoutTests/imported/w3c/indexeddb/idbkeyrange.htm.
  • IndexedDB-private-browsing/idbkeyrange_incorrect-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-expected.txt.
  • IndexedDB-private-browsing/idbkeyrange_incorrect.html: Copied from LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect.htm.
  • IndexedDB-private-browsing/idbobjectstore_add-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add.htm.
  • IndexedDB-private-browsing/idbobjectstore_add10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add10.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10.htm.
  • IndexedDB-private-browsing/idbobjectstore_add11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add11.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11.htm.
  • IndexedDB-private-browsing/idbobjectstore_add12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add12.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12.htm.
  • IndexedDB-private-browsing/idbobjectstore_add13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add13.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13.htm.
  • IndexedDB-private-browsing/idbobjectstore_add14-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add14.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14.htm.
  • IndexedDB-private-browsing/idbobjectstore_add15-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add15.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15.htm.
  • IndexedDB-private-browsing/idbobjectstore_add16-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add16.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16.htm.
  • IndexedDB-private-browsing/idbobjectstore_add2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2.htm.
  • IndexedDB-private-browsing/idbobjectstore_add3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3.htm.
  • IndexedDB-private-browsing/idbobjectstore_add4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4.htm.
  • IndexedDB-private-browsing/idbobjectstore_add5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5.htm.
  • IndexedDB-private-browsing/idbobjectstore_add6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6.htm.
  • IndexedDB-private-browsing/idbobjectstore_add7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7.htm.
  • IndexedDB-private-browsing/idbobjectstore_add8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8.htm.
  • IndexedDB-private-browsing/idbobjectstore_add9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_add9.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9.htm.
  • IndexedDB-private-browsing/idbobjectstore_clear-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_clear.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear.htm.
  • IndexedDB-private-browsing/idbobjectstore_clear2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_clear2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2.htm.
  • IndexedDB-private-browsing/idbobjectstore_clear3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_clear3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3.htm.
  • IndexedDB-private-browsing/idbobjectstore_clear4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_clear4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4.htm.
  • IndexedDB-private-browsing/idbobjectstore_count-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_count.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count.htm.
  • IndexedDB-private-browsing/idbobjectstore_count2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_count2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2.htm.
  • IndexedDB-private-browsing/idbobjectstore_count3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_count3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3.htm.
  • IndexedDB-private-browsing/idbobjectstore_count4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_count4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex10.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex11.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex12.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex13.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex3-usable-right-away-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex3-usable-right-away.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex4-deleteIndex-event_order.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex5-emptykeypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex5-emptykeypath.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex6-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex6-event_order.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex7-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex7-event_order.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex8-valid_keys-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex8-valid_keys.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys.htm.
  • IndexedDB-private-browsing/idbobjectstore_createIndex9-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_createIndex9-emptyname.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6.htm.
  • IndexedDB-private-browsing/idbobjectstore_delete7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_delete7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7.htm.
  • IndexedDB-private-browsing/idbobjectstore_deleteIndex-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_deleteIndex.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex.htm.
  • IndexedDB-private-browsing/idbobjectstore_deleted-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_deleted.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted.htm.
  • IndexedDB-private-browsing/idbobjectstore_get-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get.htm.
  • IndexedDB-private-browsing/idbobjectstore_get2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2.htm.
  • IndexedDB-private-browsing/idbobjectstore_get3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3.htm.
  • IndexedDB-private-browsing/idbobjectstore_get4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4.htm.
  • IndexedDB-private-browsing/idbobjectstore_get5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5.htm.
  • IndexedDB-private-browsing/idbobjectstore_get6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6.htm.
  • IndexedDB-private-browsing/idbobjectstore_get7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_get7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7.htm.
  • IndexedDB-private-browsing/idbobjectstore_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_index.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_index.htm.
  • IndexedDB-private-browsing/idbobjectstore_openCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_openCursor.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor.htm.
  • IndexedDB-private-browsing/idbobjectstore_openCursor_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_openCursor_invalid.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid.htm.
  • IndexedDB-private-browsing/idbobjectstore_put-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put.htm.
  • IndexedDB-private-browsing/idbobjectstore_put10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put10.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10.htm.
  • IndexedDB-private-browsing/idbobjectstore_put11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put11.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11.htm.
  • IndexedDB-private-browsing/idbobjectstore_put12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put12.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12.htm.
  • IndexedDB-private-browsing/idbobjectstore_put13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put13.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13.htm.
  • IndexedDB-private-browsing/idbobjectstore_put14-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put14.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14.htm.
  • IndexedDB-private-browsing/idbobjectstore_put15-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put15.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15.htm.
  • IndexedDB-private-browsing/idbobjectstore_put16-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put16.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16.htm.
  • IndexedDB-private-browsing/idbobjectstore_put2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put2.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2.htm.
  • IndexedDB-private-browsing/idbobjectstore_put3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put3.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3.htm.
  • IndexedDB-private-browsing/idbobjectstore_put4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put4.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4.htm.
  • IndexedDB-private-browsing/idbobjectstore_put5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put5.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5.htm.
  • IndexedDB-private-browsing/idbobjectstore_put6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put6.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6.htm.
  • IndexedDB-private-browsing/idbobjectstore_put7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put7.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7.htm.
  • IndexedDB-private-browsing/idbobjectstore_put8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put8.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8.htm.
  • IndexedDB-private-browsing/idbobjectstore_put9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-expected.txt.
  • IndexedDB-private-browsing/idbobjectstore_put9.html: Copied from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9.htm.
  • IndexedDB-private-browsing/idbtransaction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction-expected.txt.
  • IndexedDB-private-browsing/idbtransaction-oncomplete-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-expected.txt.
  • IndexedDB-private-browsing/idbtransaction-oncomplete.html: Copied from LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete.htm.
  • IndexedDB-private-browsing/idbtransaction.html: Copied from LayoutTests/imported/w3c/indexeddb/idbtransaction.htm.
  • IndexedDB-private-browsing/idbtransaction_abort-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-expected.txt.
  • IndexedDB-private-browsing/idbtransaction_abort.html: Copied from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort.htm.
  • IndexedDB-private-browsing/idbversionchangeevent-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-expected.txt.
  • IndexedDB-private-browsing/idbversionchangeevent.html: Copied from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent.htm.
  • IndexedDB-private-browsing/idbworker.js: Copied from LayoutTests/imported/w3c/indexeddb/idbworker.js.

(false.MessageHandler.open_rq.onupgradeneeded):
(false.MessageHandler.db.e.target.result.db.onerror):
(false.MessageHandler.db.transaction.objectStore.onsuccess):
(false.MessageHandler.open_rq.onsuccess):
(false.MessageHandler.open_rq.onerror):
(false.MessageHandler.open_rq.onblocked):
(false.MessageHandler):

  • IndexedDB-private-browsing/index_sort_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/index_sort_order-expected.txt.
  • IndexedDB-private-browsing/index_sort_order.html: Copied from LayoutTests/imported/w3c/indexeddb/index_sort_order.htm.
  • IndexedDB-private-browsing/key_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/key_invalid-expected.txt.
  • IndexedDB-private-browsing/key_invalid.html: Copied from LayoutTests/imported/w3c/indexeddb/key_invalid.htm.
  • IndexedDB-private-browsing/key_valid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/key_valid-expected.txt.
  • IndexedDB-private-browsing/key_valid.html: Copied from LayoutTests/imported/w3c/indexeddb/key_valid.html.
  • IndexedDB-private-browsing/keygenerator-constrainterror-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-expected.txt.
  • IndexedDB-private-browsing/keygenerator-constrainterror.html: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror.htm.
  • IndexedDB-private-browsing/keygenerator-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-expected.txt.
  • IndexedDB-private-browsing/keygenerator-overflow-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-expected.txt.
  • IndexedDB-private-browsing/keygenerator-overflow.html: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator-overflow.htm.
  • IndexedDB-private-browsing/keygenerator.html: Copied from LayoutTests/imported/w3c/indexeddb/keygenerator.htm.
  • IndexedDB-private-browsing/keyorder-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keyorder-expected.txt.
  • IndexedDB-private-browsing/keyorder.html: Copied from LayoutTests/imported/w3c/indexeddb/keyorder.htm.
  • IndexedDB-private-browsing/keypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath-expected.txt.
  • IndexedDB-private-browsing/keypath.html: Copied from LayoutTests/imported/w3c/indexeddb/keypath.htm.
  • IndexedDB-private-browsing/keypath_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_invalid-expected.txt.
  • IndexedDB-private-browsing/keypath_invalid.html: Copied from LayoutTests/imported/w3c/indexeddb/keypath_invalid.htm.
  • IndexedDB-private-browsing/keypath_maxsize-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_maxsize-expected.txt.
  • IndexedDB-private-browsing/keypath_maxsize.html: Copied from LayoutTests/imported/w3c/indexeddb/keypath_maxsize.htm.
  • IndexedDB-private-browsing/list_ordering-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/list_ordering-expected.txt.
  • IndexedDB-private-browsing/list_ordering.html: Copied from LayoutTests/imported/w3c/indexeddb/list_ordering.htm.
  • IndexedDB-private-browsing/objectstore_keyorder-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-expected.txt.
  • IndexedDB-private-browsing/objectstore_keyorder.html: Copied from LayoutTests/imported/w3c/indexeddb/objectstore_keyorder.htm.
  • IndexedDB-private-browsing/request_bubble-and-capture-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-expected.txt.
  • IndexedDB-private-browsing/request_bubble-and-capture.html: Copied from LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture.htm.
  • IndexedDB-private-browsing/string-list-ordering-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/string-list-ordering-expected.txt.
  • IndexedDB-private-browsing/string-list-ordering.html: Copied from LayoutTests/imported/w3c/indexeddb/string-list-ordering.htm.
  • IndexedDB-private-browsing/support.js: Copied from LayoutTests/imported/w3c/indexeddb/support.js.

(window.indexedDB.else):
(add_completion_callback):
(fail):
(auto_fail):
(createdb_for_multiple_tests):
(assert_key_equals):

  • IndexedDB-private-browsing/transaction-create_in_versionchange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-expected.txt.
  • IndexedDB-private-browsing/transaction-create_in_versionchange.html: Copied from LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange.htm.
  • IndexedDB-private-browsing/transaction-lifetime-blocked-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-expected.txt.
  • IndexedDB-private-browsing/transaction-lifetime-blocked.html: Copied from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked.htm.
  • IndexedDB-private-browsing/transaction-lifetime-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-expected.txt.
  • IndexedDB-private-browsing/transaction-lifetime.html: Copied from LayoutTests/imported/w3c/indexeddb/transaction-lifetime.htm.
  • IndexedDB-private-browsing/transaction-requestqueue-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-expected.txt.
  • IndexedDB-private-browsing/transaction-requestqueue.html: Copied from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue.htm.
  • IndexedDB-private-browsing/transaction_bubble-and-capture-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-expected.txt.
  • IndexedDB-private-browsing/transaction_bubble-and-capture.html: Copied from LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture.htm.
  • IndexedDB-private-browsing/value-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/value-expected.txt.
  • IndexedDB-private-browsing/value.html: Copied from LayoutTests/imported/w3c/indexeddb/value.htm.
  • IndexedDB-private-browsing/value_recursive-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/value_recursive-expected.txt.
  • IndexedDB-private-browsing/value_recursive.html: Copied from LayoutTests/imported/w3c/indexeddb/value_recursive.htm.
  • IndexedDB-private-browsing/writer-starvation-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/writer-starvation-expected.txt.
  • IndexedDB-private-browsing/writer-starvation.html: Copied from LayoutTests/imported/w3c/indexeddb/writer-starvation.htm.
  • indexeddb/abort-in-initial-upgradeneeded-private.html: Removed.
  • indexeddb/close-in-upgradeneeded-private.html: Removed.
  • indexeddb/cursor-overloads-private.html: Removed.
  • indexeddb/idb_webworkers-private.html: Removed.
  • indexeddb/idbcursor-advance-continue-async-private.html: Removed.
  • indexeddb/idbcursor-advance-invalid-private.html: Removed.
  • indexeddb/idbcursor-advance-private.html: Removed.
  • indexeddb/idbcursor-continue-private.html: Removed.
  • indexeddb/idbcursor-direction-index-keyrange-private.html: Removed.
  • indexeddb/idbcursor-direction-index-private.html: Removed.
  • indexeddb/idbcursor-direction-objectstore-keyrange-private.html: Removed.
  • indexeddb/idbcursor-direction-objectstore-private.html: Removed.
  • indexeddb/idbcursor-direction-private.html: Removed.
  • indexeddb/idbcursor-key-private.html: Removed.
  • indexeddb/idbcursor-primarykey-private.html: Removed.
  • indexeddb/idbcursor-reused-private.html: Removed.
  • indexeddb/idbcursor-source-private.html: Removed.
  • indexeddb/idbcursor_advance_index-private.html: Removed.
  • indexeddb/idbcursor_advance_index2-private.html: Removed.
  • indexeddb/idbcursor_advance_index3-private.html: Removed.
  • indexeddb/idbcursor_advance_index5-private.html: Removed.
  • indexeddb/idbcursor_advance_index6-private.html: Removed.
  • indexeddb/idbcursor_advance_index7-private.html: Removed.
  • indexeddb/idbcursor_advance_index8-private.html: Removed.
  • indexeddb/idbcursor_advance_index9-private.html: Removed.
  • indexeddb/idbcursor_advance_objectstore-private.html: Removed.
  • indexeddb/idbcursor_advance_objectstore2-private.html: Removed.
  • indexeddb/idbcursor_advance_objectstore3-private.html: Removed.
  • indexeddb/idbcursor_advance_objectstore4-private.html: Removed.
  • indexeddb/idbcursor_advance_objectstore5-private.html: Removed.
  • indexeddb/idbcursor_continue_index-private.html: Removed.
  • indexeddb/idbcursor_continue_index2-private.html: Removed.
  • indexeddb/idbcursor_continue_index3-private.html: Removed.
  • indexeddb/idbcursor_continue_index4-private.html: Removed.
  • indexeddb/idbcursor_continue_index5-private.html: Removed.
  • indexeddb/idbcursor_continue_index6-private.html: Removed.
  • indexeddb/idbcursor_continue_index7-private.html: Removed.
  • indexeddb/idbcursor_continue_index8-private.html: Removed.
  • indexeddb/idbcursor_continue_invalid-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore2-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore3-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore4-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore5-private.html: Removed.
  • indexeddb/idbcursor_continue_objectstore6-private.html: Removed.
  • indexeddb/idbcursor_delete_index-private.html: Removed.
  • indexeddb/idbcursor_delete_index2-private.html: Removed.
  • indexeddb/idbcursor_delete_index3-private-expected.txt: Removed.
  • indexeddb/idbcursor_delete_index3-private.html: Removed.
  • indexeddb/idbcursor_delete_index4-private.html: Removed.
  • indexeddb/idbcursor_delete_index5-private.html: Removed.
  • indexeddb/idbcursor_delete_objectstore-private.html: Removed.
  • indexeddb/idbcursor_delete_objectstore2-private.html: Removed.
  • indexeddb/idbcursor_delete_objectstore3-private.html: Removed.
  • indexeddb/idbcursor_delete_objectstore4-private.html: Removed.
  • indexeddb/idbcursor_delete_objectstore5-private.html: Removed.
  • indexeddb/idbcursor_iterating-private-expected.txt: Removed.
  • indexeddb/idbcursor_iterating-private.html: Removed.
  • indexeddb/idbcursor_iterating_index-private.html: Removed.
  • indexeddb/idbcursor_iterating_index2-private.html: Removed.
  • indexeddb/idbcursor_iterating_objectstore-private.html: Removed.
  • indexeddb/idbcursor_iterating_objectstore2-private.html: Removed.
  • indexeddb/idbcursor_update_index-private.html: Removed.
  • indexeddb/idbcursor_update_index2-private.html: Removed.
  • indexeddb/idbcursor_update_index3-private.html: Removed.
  • indexeddb/idbcursor_update_index4-private.html: Removed.
  • indexeddb/idbcursor_update_index5-private.html: Removed.
  • indexeddb/idbcursor_update_index6-private.html: Removed.
  • indexeddb/idbcursor_update_index7-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore2-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore3-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore4-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore5-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore6-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore7-private.html: Removed.
  • indexeddb/idbcursor_update_objectstore8-private.html: Removed.
  • indexeddb/idbdatabase_close-private.html: Removed.
  • indexeddb/idbdatabase_close2-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore10-1000ends-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore10-emptyname-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore11-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore2-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore3-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore4-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore5-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore6-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore7-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore8-parameters-private.html: Removed.
  • indexeddb/idbdatabase_createObjectStore9-invalidparameters-private.html: Removed.
  • indexeddb/idbdatabase_deleteObjectStore-private.html: Removed.
  • indexeddb/idbdatabase_deleteObjectStore2-private.html: Removed.
  • indexeddb/idbdatabase_deleteObjectStore3-private.html: Removed.
  • indexeddb/idbdatabase_deleteObjectStore4-not_reused-private.html: Removed.
  • indexeddb/idbdatabase_transaction-private.html: Removed.
  • indexeddb/idbdatabase_transaction2-private.html: Removed.
  • indexeddb/idbdatabase_transaction3-private.html: Removed.
  • indexeddb/idbdatabase_transaction4-private.html: Removed.
  • indexeddb/idbdatabase_transaction5-private.html: Removed.
  • indexeddb/idbfactory_cmp-private.html: Removed.
  • indexeddb/idbfactory_cmp2-private.html: Removed.
  • indexeddb/idbfactory_deleteDatabase-private.html: Removed.
  • indexeddb/idbfactory_deleteDatabase2-private.html: Removed.
  • indexeddb/idbfactory_deleteDatabase3-private.html: Removed.
  • indexeddb/idbfactory_deleteDatabase4-private.html: Removed.
  • indexeddb/idbfactory_open-private.html: Removed.
  • indexeddb/idbfactory_open10-private.html: Removed.
  • indexeddb/idbfactory_open11-private.html: Removed.
  • indexeddb/idbfactory_open12-private.html: Removed.
  • indexeddb/idbfactory_open2-private.html: Removed.
  • indexeddb/idbfactory_open3-private.html: Removed.
  • indexeddb/idbfactory_open4-private.html: Removed.
  • indexeddb/idbfactory_open5-private.html: Removed.
  • indexeddb/idbfactory_open6-private.html: Removed.
  • indexeddb/idbfactory_open7-private.html: Removed.
  • indexeddb/idbfactory_open8-private.html: Removed.
  • indexeddb/idbindex-multientry-arraykeypath-private.html: Removed.
  • indexeddb/idbindex-multientry-big-private.html: Removed.
  • indexeddb/idbindex-multientry-private.html: Removed.
  • indexeddb/idbindex_count-private.html: Removed.
  • indexeddb/idbindex_count2-private.html: Removed.
  • indexeddb/idbindex_count3-private.html: Removed.
  • indexeddb/idbindex_count4-private.html: Removed.
  • indexeddb/idbindex_get-private.html: Removed.
  • indexeddb/idbindex_get2-private.html: Removed.
  • indexeddb/idbindex_get3-private.html: Removed.
  • indexeddb/idbindex_get4-private.html: Removed.
  • indexeddb/idbindex_get5-private.html: Removed.
  • indexeddb/idbindex_get6-private.html: Removed.
  • indexeddb/idbindex_get7-private.html: Removed.
  • indexeddb/idbindex_getKey-private.html: Removed.
  • indexeddb/idbindex_getKey2-private.html: Removed.
  • indexeddb/idbindex_getKey3-private.html: Removed.
  • indexeddb/idbindex_getKey4-private.html: Removed.
  • indexeddb/idbindex_getKey5-private.html: Removed.
  • indexeddb/idbindex_getKey6-private.html: Removed.
  • indexeddb/idbindex_getKey7-private.html: Removed.
  • indexeddb/idbindex_indexNames-private.html: Removed.
  • indexeddb/idbindex_openCursor-private.html: Removed.
  • indexeddb/idbindex_openCursor2-private.html: Removed.
  • indexeddb/idbindex_openKeyCursor-private.html: Removed.
  • indexeddb/idbindex_openKeyCursor2-private.html: Removed.
  • indexeddb/idbindex_openKeyCursor3-private.html: Removed.
  • indexeddb/idbkeyrange-private.html: Removed.
  • indexeddb/idbkeyrange_incorrect-private.html: Removed.
  • indexeddb/idbobjectstore_add-private.html: Removed.
  • indexeddb/idbobjectstore_add10-private.html: Removed.
  • indexeddb/idbobjectstore_add11-private.html: Removed.
  • indexeddb/idbobjectstore_add12-private.html: Removed.
  • indexeddb/idbobjectstore_add13-private.html: Removed.
  • indexeddb/idbobjectstore_add14-private.html: Removed.
  • indexeddb/idbobjectstore_add15-private.html: Removed.
  • indexeddb/idbobjectstore_add16-private.html: Removed.
  • indexeddb/idbobjectstore_add2-private.html: Removed.
  • indexeddb/idbobjectstore_add3-private.html: Removed.
  • indexeddb/idbobjectstore_add4-private.html: Removed.
  • indexeddb/idbobjectstore_add5-private.html: Removed.
  • indexeddb/idbobjectstore_add6-private.html: Removed.
  • indexeddb/idbobjectstore_add7-private.html: Removed.
  • indexeddb/idbobjectstore_add8-private.html: Removed.
  • indexeddb/idbobjectstore_add9-private.html: Removed.
  • indexeddb/idbobjectstore_clear-private.html: Removed.
  • indexeddb/idbobjectstore_clear2-private.html: Removed.
  • indexeddb/idbobjectstore_clear3-private.html: Removed.
  • indexeddb/idbobjectstore_clear4-private.html: Removed.
  • indexeddb/idbobjectstore_count-private.html: Removed.
  • indexeddb/idbobjectstore_count2-private.html: Removed.
  • indexeddb/idbobjectstore_count3-private.html: Removed.
  • indexeddb/idbobjectstore_count4-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex10-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex11-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex12-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex13-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex2-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex3-usable-right-away-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex5-emptykeypath-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex6-event_order-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex7-event_order-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex8-valid_keys-private.html: Removed.
  • indexeddb/idbobjectstore_createIndex9-emptyname-private.html: Removed.
  • indexeddb/idbobjectstore_delete-private.html: Removed.
  • indexeddb/idbobjectstore_delete2-private.html: Removed.
  • indexeddb/idbobjectstore_delete3-private.html: Removed.
  • indexeddb/idbobjectstore_delete4-private.html: Removed.
  • indexeddb/idbobjectstore_delete5-private.html: Removed.
  • indexeddb/idbobjectstore_delete6-private.html: Removed.
  • indexeddb/idbobjectstore_delete7-private.html: Removed.
  • indexeddb/idbobjectstore_deleteIndex-private.html: Removed.
  • indexeddb/idbobjectstore_deleted-private.html: Removed.
  • indexeddb/idbobjectstore_get-private.html: Removed.
  • indexeddb/idbobjectstore_get2-private.html: Removed.
  • indexeddb/idbobjectstore_get3-private.html: Removed.
  • indexeddb/idbobjectstore_get4-private.html: Removed.
  • indexeddb/idbobjectstore_get5-private.html: Removed.
  • indexeddb/idbobjectstore_get6-private.html: Removed.
  • indexeddb/idbobjectstore_get7-private.html: Removed.
  • indexeddb/idbobjectstore_index-private.html: Removed.
  • indexeddb/idbobjectstore_openCursor-private.html: Removed.
  • indexeddb/idbobjectstore_openCursor_invalid-private.html: Removed.
  • indexeddb/idbobjectstore_put-private.html: Removed.
  • indexeddb/idbobjectstore_put10-private.html: Removed.
  • indexeddb/idbobjectstore_put11-private.html: Removed.
  • indexeddb/idbobjectstore_put12-private.html: Removed.
  • indexeddb/idbobjectstore_put13-private.html: Removed.
  • indexeddb/idbobjectstore_put14-private.html: Removed.
  • indexeddb/idbobjectstore_put15-private.html: Removed.
  • indexeddb/idbobjectstore_put16-private.html: Removed.
  • indexeddb/idbobjectstore_put2-private.html: Removed.
  • indexeddb/idbobjectstore_put3-private.html: Removed.
  • indexeddb/idbobjectstore_put4-private.html: Removed.
  • indexeddb/idbobjectstore_put5-private.html: Removed.
  • indexeddb/idbobjectstore_put6-private.html: Removed.
  • indexeddb/idbobjectstore_put7-private.html: Removed.
  • indexeddb/idbobjectstore_put8-private.html: Removed.
  • indexeddb/idbobjectstore_put9-private.html: Removed.
  • indexeddb/idbtransaction-oncomplete-private.html: Removed.
  • indexeddb/idbtransaction-private.html: Removed.
  • indexeddb/idbtransaction_abort-private.html: Removed.
  • indexeddb/idbversionchangeevent-private.html: Removed.
  • indexeddb/index_sort_order-private.html: Removed.
  • indexeddb/key_invalid-private.html: Removed.
  • indexeddb/key_valid-private.html: Removed.
  • indexeddb/keygenerator-constrainterror-private.html: Removed.
  • indexeddb/keygenerator-overflow-private.html: Removed.
  • indexeddb/keygenerator-private.html: Removed.
  • indexeddb/keyorder-private.html: Removed.
  • indexeddb/keypath-private.html: Removed.
  • indexeddb/keypath_invalid-private.html: Removed.
  • indexeddb/keypath_maxsize-private.html: Removed.
  • indexeddb/list_ordering-private.html: Removed.
  • indexeddb/objectstore_keyorder-private.html: Removed.
  • indexeddb/request_bubble-and-capture-private.html: Removed.
  • indexeddb/string-list-ordering-private.html: Removed.
  • indexeddb/transaction-create_in_versionchange-private.html: Removed.
  • indexeddb/transaction-lifetime-blocked-private.html: Removed.
  • indexeddb/transaction-lifetime-private.html: Removed.
  • indexeddb/transaction-requestqueue-private.html: Removed.
  • indexeddb/transaction_bubble-and-capture-private.html: Removed.
  • indexeddb/value-private.html: Removed.
  • indexeddb/value_recursive-private.html: Removed.
  • indexeddb/writer-starvation-private.html: Removed.
  • resources/ImportExpectations:
  • web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded-private-expected.txt.
  • web-platform-tests/IndexedDB/abort-in-initial-upgradeneeded.html: Renamed from LayoutTests/imported/w3c/indexeddb/abort-in-initial-upgradeneeded.html.
  • web-platform-tests/IndexedDB/close-in-upgradeneeded-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded-private-expected.txt.
  • web-platform-tests/IndexedDB/close-in-upgradeneeded.html: Renamed from LayoutTests/imported/w3c/indexeddb/close-in-upgradeneeded.html.
  • web-platform-tests/IndexedDB/cursor-overloads-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/cursor-overloads-private-expected.txt.
  • web-platform-tests/IndexedDB/cursor-overloads.htm: Renamed from LayoutTests/imported/w3c/indexeddb/cursor-overloads.htm.
  • web-platform-tests/IndexedDB/idb_webworkers-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idb_webworkers-private-expected.txt.
  • web-platform-tests/IndexedDB/idb_webworkers.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idb_webworkers.htm.
  • web-platform-tests/IndexedDB/idbcursor-advance-continue-async-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-advance-continue-async.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-continue-async.htm.
  • web-platform-tests/IndexedDB/idbcursor-advance-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-advance-invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-advance-invalid.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance-invalid.htm.
  • web-platform-tests/IndexedDB/idbcursor-advance.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-advance.htm.
  • web-platform-tests/IndexedDB/idbcursor-continue-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-continue-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-continue.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-continue.htm.
  • web-platform-tests/IndexedDB/idbcursor-direction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-direction-index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-direction-index-keyrange.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index-keyrange.htm.
  • web-platform-tests/IndexedDB/idbcursor-direction-index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-index.htm.
  • web-platform-tests/IndexedDB/idbcursor-direction-objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-direction-objectstore-keyrange.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore-keyrange.htm.
  • web-platform-tests/IndexedDB/idbcursor-direction-objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction-objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor-direction.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-direction.htm.
  • web-platform-tests/IndexedDB/idbcursor-key-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-key-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-key.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-key.htm.
  • web-platform-tests/IndexedDB/idbcursor-primarykey-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-primarykey.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-primarykey.htm.
  • web-platform-tests/IndexedDB/idbcursor-reused-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-reused-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-reused.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-reused.htm.
  • web-platform-tests/IndexedDB/idbcursor-source-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-source-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor-source.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor-source.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index2.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index3.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index5.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index6.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index7.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index8.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_index9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_index9.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_index9.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore2.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore3.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore4.htm.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_advance_objectstore5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_advance_objectstore5.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index2.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index3.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index4.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index5.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index6.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index7.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_index8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_index8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_index8.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_invalid.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_invalid.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore2.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore3.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore4.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore5.htm.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_continue_objectstore6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_continue_objectstore6.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_index2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index2.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_index3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index3.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_index4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index4.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_index5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_index5.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore2.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore3.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore4.htm.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_delete_objectstore5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_delete_objectstore5.htm.
  • web-platform-tests/IndexedDB/idbcursor_iterating-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_iterating.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating.htm.
  • web-platform-tests/IndexedDB/idbcursor_iterating_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_iterating_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index.htm.
  • web-platform-tests/IndexedDB/idbcursor_iterating_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_iterating_index2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_index2.htm.
  • web-platform-tests/IndexedDB/idbcursor_iterating_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_iterating_objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_iterating_objectstore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_iterating_objectstore2.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index2.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index3.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index4.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index5.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index6.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_index7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_index7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_index7.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore2.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore3.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore4.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore5.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore6.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore7.htm.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbcursor_update_objectstore8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbcursor_update_objectstore8.htm.
  • web-platform-tests/IndexedDB/idbdatabase_close-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_close.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close.htm.
  • web-platform-tests/IndexedDB/idbdatabase_close2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_close2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_close2.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore-createIndex-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore-createIndex-emptyname.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-createIndex-emptyname.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-1000ends.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-1000ends.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore10-emptyname.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore10-emptyname.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore11.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore11.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore2.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore3.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore4.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore5.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore6.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore7.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore8-parameters-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore8-parameters.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore8-parameters.htm.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_createObjectStore9-invalidparameters.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_createObjectStore9-invalidparameters.htm.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore.htm.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore2.htm.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore3.htm.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_deleteObjectStore4-not_reused.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_deleteObjectStore4-not_reused.htm.
  • web-platform-tests/IndexedDB/idbdatabase_transaction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_transaction.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction.htm.
  • web-platform-tests/IndexedDB/idbdatabase_transaction2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_transaction2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction2.htm.
  • web-platform-tests/IndexedDB/idbdatabase_transaction3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_transaction3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction3.htm.
  • web-platform-tests/IndexedDB/idbdatabase_transaction4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_transaction4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction4.htm.
  • web-platform-tests/IndexedDB/idbdatabase_transaction5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbdatabase_transaction5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbdatabase_transaction5.htm.
  • web-platform-tests/IndexedDB/idbfactory_cmp-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_cmp.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp.htm.
  • web-platform-tests/IndexedDB/idbfactory_cmp2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_cmp2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_cmp2.htm.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase.htm.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase2.htm.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase3.htm.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_deleteDatabase4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_deleteDatabase4.htm.
  • web-platform-tests/IndexedDB/idbfactory_open-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open.htm.
  • web-platform-tests/IndexedDB/idbfactory_open10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open10-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open10.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open10.htm.
  • web-platform-tests/IndexedDB/idbfactory_open11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open11-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open11.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open11.htm.
  • web-platform-tests/IndexedDB/idbfactory_open12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open12-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open12.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open12.htm.
  • web-platform-tests/IndexedDB/idbfactory_open2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open2.htm.
  • web-platform-tests/IndexedDB/idbfactory_open3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open3.htm.
  • web-platform-tests/IndexedDB/idbfactory_open4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open4.htm.
  • web-platform-tests/IndexedDB/idbfactory_open5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open5.htm.
  • web-platform-tests/IndexedDB/idbfactory_open6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open6.htm.
  • web-platform-tests/IndexedDB/idbfactory_open7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open7.htm.
  • web-platform-tests/IndexedDB/idbfactory_open8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open8.htm.
  • web-platform-tests/IndexedDB/idbfactory_open9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open9-private-expected.txt.
  • web-platform-tests/IndexedDB/idbfactory_open9.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbfactory_open9.htm.
  • web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex-multientry-arraykeypath.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-arraykeypath.htm.
  • web-platform-tests/IndexedDB/idbindex-multientry-big-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex-multientry-big.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-big.htm.
  • web-platform-tests/IndexedDB/idbindex-multientry-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex-multientry.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex-multientry.htm.
  • web-platform-tests/IndexedDB/idbindex_count-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_count.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count.htm.
  • web-platform-tests/IndexedDB/idbindex_count2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_count2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count2.htm.
  • web-platform-tests/IndexedDB/idbindex_count3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_count3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count3.htm.
  • web-platform-tests/IndexedDB/idbindex_count4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_count4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_count4.htm.
  • web-platform-tests/IndexedDB/idbindex_get-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get.htm.
  • web-platform-tests/IndexedDB/idbindex_get2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get2.htm.
  • web-platform-tests/IndexedDB/idbindex_get3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get3.htm.
  • web-platform-tests/IndexedDB/idbindex_get4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get4.htm.
  • web-platform-tests/IndexedDB/idbindex_get5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get5.htm.
  • web-platform-tests/IndexedDB/idbindex_get6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get6.htm.
  • web-platform-tests/IndexedDB/idbindex_get7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get7-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_get7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_get7.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey2.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey3.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey4.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey5.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey6.htm.
  • web-platform-tests/IndexedDB/idbindex_getKey7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey7-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_getKey7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_getKey7.htm.
  • web-platform-tests/IndexedDB/idbindex_indexNames-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_indexNames-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_indexNames.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_indexNames.htm.
  • web-platform-tests/IndexedDB/idbindex_openCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_openCursor.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor.htm.
  • web-platform-tests/IndexedDB/idbindex_openCursor2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_openCursor2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openCursor2.htm.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor.htm.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor2.htm.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3-expected.txt.
  • web-platform-tests/IndexedDB/idbindex_openKeyCursor3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbindex_openKeyCursor3.htm.
  • web-platform-tests/IndexedDB/idbkeyrange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange-private-expected.txt.
  • web-platform-tests/IndexedDB/idbkeyrange.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange.htm.
  • web-platform-tests/IndexedDB/idbkeyrange_incorrect-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect-private-expected.txt.
  • web-platform-tests/IndexedDB/idbkeyrange_incorrect.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbkeyrange_incorrect.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add10.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add10.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add11.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add11.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add12.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add12.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add13.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add13.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add14-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add14.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add14.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add15-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add15.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add15.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add16-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add16.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add16.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add5.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add6.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add7.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add8.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_add9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_add9.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_add9.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_clear-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_clear.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_clear2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_clear2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_clear3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_clear3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_clear4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_clear4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_clear4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_count-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_count.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_count2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_count2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_count3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_count3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_count4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_count4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_count4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex10.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex10.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex11.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex11.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex12.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex12.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex13.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex13.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex3-usable-right-away.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex3-usable-right-away.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex4-deleteIndex-event_order.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex4-deleteIndex-event_order.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex5-emptykeypath.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex5-emptykeypath.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex6-event_order.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex6-event_order.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex7-event_order.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex7-event_order.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex8-valid_keys.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex8-valid_keys.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex9-emptyname-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_createIndex9-emptyname.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_createIndex9-emptyname.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete5.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete6.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_delete7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_delete7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_delete7.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_deleteIndex-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_deleteIndex.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleteIndex.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_deleted-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_deleted.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_deleted.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get5.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get6.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_get7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_get7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_get7.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_index-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_index-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_index.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_index.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_openCursor-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_openCursor.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_openCursor_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_openCursor_invalid.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_openCursor_invalid.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put10-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put10.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put10.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put11-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put11.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put11.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put12-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put12.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put12.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put13-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put13.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put13.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put14-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put14.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put14.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put15-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put15.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put15.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put16-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put16.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put16.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put2-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put2.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put2.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put3-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put3.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put3.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put4-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put4.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put4.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put5-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put5.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put5.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put6-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put6.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put6.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put7-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put7.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put7.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put8-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put8.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put8.htm.
  • web-platform-tests/IndexedDB/idbobjectstore_put9-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9-private-expected.txt.
  • web-platform-tests/IndexedDB/idbobjectstore_put9.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbobjectstore_put9.htm.
  • web-platform-tests/IndexedDB/idbtransaction-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction-private-expected.txt.
  • web-platform-tests/IndexedDB/idbtransaction-oncomplete-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete-private-expected.txt.
  • web-platform-tests/IndexedDB/idbtransaction-oncomplete.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction-oncomplete.htm.
  • web-platform-tests/IndexedDB/idbtransaction.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction.htm.
  • web-platform-tests/IndexedDB/idbtransaction_abort-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort-private-expected.txt.
  • web-platform-tests/IndexedDB/idbtransaction_abort.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbtransaction_abort.htm.
  • web-platform-tests/IndexedDB/idbversionchangeevent-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent-private-expected.txt.
  • web-platform-tests/IndexedDB/idbversionchangeevent.htm: Renamed from LayoutTests/imported/w3c/indexeddb/idbversionchangeevent.htm.
  • web-platform-tests/IndexedDB/idbworker.js: Renamed from LayoutTests/imported/w3c/indexeddb/idbworker.js.

(false.MessageHandler.open_rq.onupgradeneeded):
(false.MessageHandler.db.e.target.result.db.onerror):
(false.MessageHandler.db.transaction.objectStore.onsuccess):
(false.MessageHandler.open_rq.onsuccess):
(false.MessageHandler.open_rq.onerror):
(false.MessageHandler.open_rq.onblocked):
(false.MessageHandler):

  • web-platform-tests/IndexedDB/index_sort_order-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/index_sort_order-private-expected.txt.
  • web-platform-tests/IndexedDB/index_sort_order.htm: Renamed from LayoutTests/imported/w3c/indexeddb/index_sort_order.htm.
  • web-platform-tests/IndexedDB/interfaces-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/interfaces-expected.txt.
  • web-platform-tests/IndexedDB/interfaces.html: Renamed from LayoutTests/imported/w3c/indexeddb/interfaces.html.
  • web-platform-tests/IndexedDB/interfaces.idl: Renamed from LayoutTests/imported/w3c/indexeddb/interfaces.idl.
  • web-platform-tests/IndexedDB/interfaces.worker.js: Renamed from LayoutTests/imported/w3c/indexeddb/interfaces.worker.js.

(request.onload):

  • web-platform-tests/IndexedDB/key_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/key_invalid-private-expected.txt.
  • web-platform-tests/IndexedDB/key_invalid.htm: Renamed from LayoutTests/imported/w3c/indexeddb/key_invalid.htm.
  • web-platform-tests/IndexedDB/key_valid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/key_valid-private-expected.txt.
  • web-platform-tests/IndexedDB/key_valid.html: Renamed from LayoutTests/imported/w3c/indexeddb/key_valid.html.
  • web-platform-tests/IndexedDB/keygenerator-constrainterror-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror-private-expected.txt.
  • web-platform-tests/IndexedDB/keygenerator-constrainterror.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-constrainterror.htm.
  • web-platform-tests/IndexedDB/keygenerator-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-private-expected.txt.
  • web-platform-tests/IndexedDB/keygenerator-overflow-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-overflow-private-expected.txt.
  • web-platform-tests/IndexedDB/keygenerator-overflow.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator-overflow.htm.
  • web-platform-tests/IndexedDB/keygenerator.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keygenerator.htm.
  • web-platform-tests/IndexedDB/keyorder-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keyorder-private-expected.txt.
  • web-platform-tests/IndexedDB/keyorder.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keyorder.htm.
  • web-platform-tests/IndexedDB/keypath-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath-private-expected.txt.
  • web-platform-tests/IndexedDB/keypath.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keypath.htm.
  • web-platform-tests/IndexedDB/keypath_invalid-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_invalid-private-expected.txt.
  • web-platform-tests/IndexedDB/keypath_invalid.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_invalid.htm.
  • web-platform-tests/IndexedDB/keypath_maxsize-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_maxsize-private-expected.txt.
  • web-platform-tests/IndexedDB/keypath_maxsize.htm: Renamed from LayoutTests/imported/w3c/indexeddb/keypath_maxsize.htm.
  • web-platform-tests/IndexedDB/list_ordering-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/list_ordering-private-expected.txt.
  • web-platform-tests/IndexedDB/list_ordering.htm: Renamed from LayoutTests/imported/w3c/indexeddb/list_ordering.htm.
  • web-platform-tests/IndexedDB/objectstore_keyorder-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/objectstore_keyorder-private-expected.txt.
  • web-platform-tests/IndexedDB/objectstore_keyorder.htm: Renamed from LayoutTests/imported/w3c/indexeddb/objectstore_keyorder.htm.
  • web-platform-tests/IndexedDB/request_bubble-and-capture-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture-private-expected.txt.
  • web-platform-tests/IndexedDB/request_bubble-and-capture.htm: Renamed from LayoutTests/imported/w3c/indexeddb/request_bubble-and-capture.htm.
  • web-platform-tests/IndexedDB/string-list-ordering-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/string-list-ordering-private-expected.txt.
  • web-platform-tests/IndexedDB/string-list-ordering.htm: Renamed from LayoutTests/imported/w3c/indexeddb/string-list-ordering.htm.
  • web-platform-tests/IndexedDB/support.js: Renamed from LayoutTests/imported/w3c/indexeddb/support.js.

(window.indexedDB.else):
(add_completion_callback):
(fail):
(auto_fail):
(createdb_for_multiple_tests):
(assert_key_equals):

  • web-platform-tests/IndexedDB/transaction-create_in_versionchange-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange-private-expected.txt.
  • web-platform-tests/IndexedDB/transaction-create_in_versionchange.htm: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-create_in_versionchange.htm.
  • web-platform-tests/IndexedDB/transaction-lifetime-blocked-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked-private-expected.txt.
  • web-platform-tests/IndexedDB/transaction-lifetime-blocked.htm: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-blocked.htm.
  • web-platform-tests/IndexedDB/transaction-lifetime-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime-private-expected.txt.
  • web-platform-tests/IndexedDB/transaction-lifetime.htm: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-lifetime.htm.
  • web-platform-tests/IndexedDB/transaction-requestqueue-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue-private-expected.txt.
  • web-platform-tests/IndexedDB/transaction-requestqueue.htm: Renamed from LayoutTests/imported/w3c/indexeddb/transaction-requestqueue.htm.
  • web-platform-tests/IndexedDB/transaction_bubble-and-capture-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture-private-expected.txt.
  • web-platform-tests/IndexedDB/transaction_bubble-and-capture.htm: Renamed from LayoutTests/imported/w3c/indexeddb/transaction_bubble-and-capture.htm.
  • web-platform-tests/IndexedDB/value-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/value-private-expected.txt.
  • web-platform-tests/IndexedDB/value.htm: Renamed from LayoutTests/imported/w3c/indexeddb/value.htm.
  • web-platform-tests/IndexedDB/value_recursive-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/value_recursive-private-expected.txt.
  • web-platform-tests/IndexedDB/value_recursive.htm: Renamed from LayoutTests/imported/w3c/indexeddb/value_recursive.htm.
  • web-platform-tests/IndexedDB/writer-starvation-expected.txt: Renamed from LayoutTests/imported/w3c/indexeddb/writer-starvation-private-expected.txt.
  • web-platform-tests/IndexedDB/writer-starvation.htm: Renamed from LayoutTests/imported/w3c/indexeddb/writer-starvation.htm.

LayoutTests:

Renaming indexeddb test expectation according new path and directory name.

  • TestExpectations:
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator-wk1/TestExpectations:
  • platform/mac-wk2/TestExpectations:
  • platform/win/TestExpectations:
12:56 AM Changeset in webkit [198393] by Darin Adler
  • 15 edits in trunk/Source

Disable Caches in Safari's Develop menu does not disable caches.
​https://bugs.webkit.org/show_bug.cgi?id=64483

Reviewed by Antti Koivisto.

Source/WebCore:

Add a new setting, ResourceCachingDisabled, for use in future versions of Safari.

  • history/PageCache.cpp:

(WebCore::canCachePage): Check resourceCachingDisabled and return false.
(WebCore::PageCache::take): Check resourceCachingDisabled, and return null.
(WebCore::PageCache::get): Ditto.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::subresourceCachePolicy): Check resourceCachingDisabled, and
request a reload.
(WebCore::FrameLoader::addExtraFieldsToRequest): Check resourceCachingDisabled, and
set the cache policy to trigger a reload.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::cachePolicy): Check resourceCachingDisabled, and
request a reload.

  • page/Settings.in: Added resourceCachingDisabled.

Source/WebKit/mac:

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

(-[WebPreferences isResourceCachingDisabled]): Added.
(-[WebPreferences setResourceCachingDisabled:]): Added.

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

(-[WebView _preferencesChanged:]): Push resourceCachingDisabled into WebCore.

Source/WebKit2:

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

(WKPreferencesSetResourceCachingDisabled): Added.
(WKPreferencesGetResourceCachingDisabled): Added.

  • UIProcess/API/C/WKPreferencesRefPrivate.h: Ditto.
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Push ResourceCachingDisabled setting
into WebCore.

12:41 AM Changeset in webkit [198392] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198383 - REGRESSION(r195661): [GTK] very slow scrolling
​https://bugs.webkit.org/show_bug.cgi?id=155334

Reviewed by Michael Catanzaro.

We need to also restore the PerAxisData visible length when it's
reset because of a non animated scroll. To prevent making the same
mistake in the future, the current position and visible lengths
members are now required to construct PerAxisData. This also
simplifies the code and ensures that when the ScrollAnimatorSmooth
is created, it's updated to the current position.

  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::ScrollAnimationSmooth):
Initialize PerAxisData members.
(WebCore::ScrollAnimationSmooth::setCurrentPosition): Pass the
current position and visible length as parameters to the
PerAxisData constructor.
(WebCore::ScrollAnimationSmooth::animateScroll): Ditto.

  • platform/ScrollAnimationSmooth.h: Add a PerAxisData constructor

that receives current position and visible length and disallow to
use the default constructor.

  • platform/ScrollAnimatorSmooth.cpp:

(WebCore::ScrollAnimatorSmooth::ScrollAnimatorSmooth): Pass the
current position to the ScrollAnimationSmooth constructor.

  • platform/gtk/ScrollAnimatorGtk.cpp:

(WebCore::ScrollAnimatorGtk::ensureSmoothScrollingAnimation): Ditto.

12:41 AM Changeset in webkit [198391] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebInspectorUI

Merge r198382 - REGRESSION (r197724): [GTK] Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155432

Reviewed by Daniel Bates.

Allow Web Inspector to load resource: image resources.

  • UserInterface/Main.html:
12:41 AM Changeset in webkit [198390] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198334 - Unreviewed, rolling out r198201.
​https://bugs.webkit.org/show_bug.cgi?id=155585

That was not the proper solution (Requested by KaL on

Reverted changeset:

"REGRESSION (r197724): [GTK] Web Inspector: Images being
blocked by CSP 2.0"
​https://bugs.webkit.org/show_bug.cgi?id=155432
​http://trac.webkit.org/changeset/198201

12:34 AM Changeset in webkit [198389] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix. Just for fun.

  • loader/EmptyClients.cpp:
12:32 AM Changeset in webkit [198388] by Yusuke Suzuki
  • 2 edits in trunk

Unreviewed, missing SET_AND_EXPOSE_TO_BUILD for USE_UDIS86 in JSCOnly port
​https://bugs.webkit.org/show_bug.cgi?id=155628

  • Source/cmake/OptionsJSCOnly.cmake:
12:23 AM Changeset in webkit [198387] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Data URL DecodeTask may get deleted outside main thread
​https://bugs.webkit.org/show_bug.cgi?id=155584
rdar://problem/24492104

Reviewed by Darin Adler.

This is unsafe as it owns strings and other types that are only safe to delete in the main thread.

There is a race between deref in dispatch() and deref in timerFired(). If the timer fires before dispatch()
exits the implicit deref will trigger deletion of DecodingResultDispatcher in the dispatching thread.

(WebCore::DataURLDecoder::DecodingResultDispatcher::timerFired):

Fix by clearing m_decodeTask when the timer fires.

12:15 AM Changeset in webkit [198386] by rniwa@webkit.org
  • 2 edits
    6 adds in trunk/Websites/perf.webkit.org

Add unit tests for config.json and statistics.js
​https://bugs.webkit.org/show_bug.cgi?id=155626

Reviewed by Darin Adler.

Added mocha unit tests for statistics.js and validating config.json. For segmentations, I've extracted
real data from our internal perf dashboard.

Also fixed some bugs covered by these new tests.

  • public/shared/statistics.js:

(Statistics.movingAverage): Fixed a bug that forwardWindowSize was never used.
(Statistics.exponentialMovingAverage): Fixed the bug that the moving average starts at 0. It should
start at the first value instead.
(.splitIntoSegmentsUntilGoodEnough): Fixed the bug that we may try to segment a time series into
more parts than there are data points. Clearly, that doesn't make any sense.
(.findOptimalSegmentation): Renamed local variables so that they're more descriptive, and rewrote
the debugging code was the old code was emitting some useless data. Also fixed the bug that the length
of "segmentation" was off by one (we need segmentCount + 1 elements in the array sine we always
include the start of the first segment = 0 and the end of the last segment = values.length).
(.SampleVarianceUpperTriangularMatrix):
(Statistics): Modernized the export code.

  • tools/js: Added.
  • tools/js/config.js: Added.

(Config): Added.
(Config.prototype.configFilePath): Added.
(Config.prototype.value): Added.
(Config.prototype.path): Added.

  • tools/js/database.js: Added.

(Database): Added.
(Database.prototype.connect): Added.
(Database.prototype.disconnect): Added.

  • unit-tests: Added.
  • unit-tests/checkconfig.js: Added. Validates config.json. This is useful while setting up

a local instance of the perf dashboard.

  • unit-tests/statistics-tests.js: Added.

(assert.almostEqual): Added. Asserts that two floating values are within a given significant digits.
(.stdev):
(.delta):
(.computeWelchsT):

12:09 AM Changeset in webkit [198385] by Yusuke Suzuki
  • 2 edits in trunk

[JSCOnly] Enable udis86
​https://bugs.webkit.org/show_bug.cgi?id=155628

Reviewed by Carlos Garcia Campos.

Enable udis86 for disassembler. The current flag name is incorrect.

  • Source/cmake/OptionsJSCOnly.cmake:
12:06 AM Changeset in webkit [198384] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Try to fix GTK+ debug build after r198364.

  • WebProcess/gtk/WebProcessMainGtk.cpp: Use WTF::sleep().

Mar 17, 2016:

11:56 PM Changeset in webkit [198383] by Carlos Garcia Campos
  • 5 edits in trunk/Source/WebCore

REGRESSION(r195661): [GTK] very slow scrolling
​https://bugs.webkit.org/show_bug.cgi?id=155334

Reviewed by Michael Catanzaro.

We need to also restore the PerAxisData visible length when it's
reset because of a non animated scroll. To prevent making the same
mistake in the future, the current position and visible lengths
members are now required to construct PerAxisData. This also
simplifies the code and ensures that when the ScrollAnimatorSmooth
is created, it's updated to the current position.

  • platform/ScrollAnimationSmooth.cpp:

(WebCore::ScrollAnimationSmooth::ScrollAnimationSmooth):
Initialize PerAxisData members.
(WebCore::ScrollAnimationSmooth::setCurrentPosition): Pass the
current position and visible length as parameters to the
PerAxisData constructor.
(WebCore::ScrollAnimationSmooth::animateScroll): Ditto.

  • platform/ScrollAnimationSmooth.h: Add a PerAxisData constructor

that receives current position and visible length and disallow to
use the default constructor.

  • platform/ScrollAnimatorSmooth.cpp:

(WebCore::ScrollAnimatorSmooth::ScrollAnimatorSmooth): Pass the
current position to the ScrollAnimationSmooth constructor.

  • platform/gtk/ScrollAnimatorGtk.cpp:

(WebCore::ScrollAnimatorGtk::ensureSmoothScrollingAnimation): Ditto.

11:53 PM Changeset in webkit [198382] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebInspectorUI

REGRESSION (r197724): [GTK] Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155432

Reviewed by Daniel Bates.

Allow Web Inspector to load resource: image resources.

  • UserInterface/Main.html:
11:52 PM Changeset in webkit [198381] by Chris Fleizach
  • 7 edits in trunk

AX: WEB: VoiceOver does not announce some WAI-ARIA document structures
​https://bugs.webkit.org/show_bug.cgi?id=155603
<rdar://problem/25227385>

Reviewed by Darin Adler.

Source/WebCore:

Expose more ARIA landmark type roles on iOS for accessibility.

Updated test: accessibility/ios-simulator/landmark-type.html

  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

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

  • platform/LocalizedStrings.cpp:

(WebCore::searchMenuClearRecentSearchesText):
(WebCore::AXWebAreaText):
(WebCore::AXListItemActionVerb):
(WebCore::AXAutoFillCredentialsLabel):

  • platform/LocalizedStrings.h:

LayoutTests:

  • accessibility/ios-simulator/landmark-type-expected.txt:
  • accessibility/ios-simulator/landmark-type.html:
11:36 PM Changeset in webkit [198380] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

11:32 PM Changeset in webkit [198379] by dbates@webkit.org
  • 7 edits in trunk/Source/WebCore

Cleanup: Remove the need to pass reporting status to ContentSecurityPolicy functions
​https://bugs.webkit.org/show_bug.cgi?id=155623

Reviewed by Andy Estes and Alex Christensen.

ScriptController::initScript() is the only function that passes ContentSecurityPolicy::ReportingStatus::SuppressReport
following the removal of the SecurityPolicy script interface in <​http://trac.webkit.org/changeset/197142>. It
passes this reporting status to prevent sending a violation report when determining whether the CSP policy allows
use of the JavaScript eval()/operator eval so that it enable or disable this capability as appropriate. We
should teach ScriptController::initScript() to delegate the responsibility of enabling/disabling this capability
to the ContentSecurityPolicy. Then we can remove the need to expose ContentSecurityPolicy::ReportingStatus as
part of the ContentSecurityPolicy interface.

No functionality changed. So, no new tests.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::createWindowShell): Return a reference to a JSDOMWindowShell object
instead of a pointer as the pointer is always non-null.
(WebCore::ScriptController::initScript): Updated as needed now that ScriptController::createWindowShell()
returns a reference. Moved logic to enable/disable JavaScript eval() and operator eval from here into
ContentSecurityPolicy::didCreateWindowShell() and make use of this member function.

  • bindings/js/ScriptController.h:
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::didCreateWindowShell): Added. Moved logic from to enable/disable JavaScript
eval() and operator eval from ScriptController::initScript() to here.
(WebCore::ContentSecurityPolicy::didReceiveHeader): Substitute ContentSecurityPolicyDirectiveList::ReportingStatus::SuppressReport
for ContentSecurityPolicy::ReportingStatus::SuppressReport as the enum has moved from class ContentSecurityPolicy
to ContentSecurityPolicyDirectiveList. Fix minor code style nit; substitute nullptr for 0 in the first argument
to ContentSecurityPolicyDirectiveList::allowEval().
(WebCore::isAllowedByAllWithFrame): Substitute ContentSecurityPolicyDirectiveList::ReportingStatus::SuppressReport
for ContentSecurityPolicy::ReportingStatus::SuppressReport as the enum has moved from class ContentSecurityPolicy
to ContentSecurityPolicyDirectiveList.
(WebCore::isAllowedByAll): Substitute ContentSecurityPolicyDirectiveList::ReportingStatus::SuppressReport
for ContentSecurityPolicy::ReportingStatus::SuppressReport as the enum has moved from class ContentSecurityPolicy
to ContentSecurityPolicyDirectiveList. Also make this function static so that it has internal linkage.
(WebCore::isAllowedByAllWithState): Ditto.
(WebCore::isAllowedByAllWithContext): Ditto.
(WebCore::isAllowedByAllWithHashFromContent): Ditto.
(WebCore::isAllowedByAllWithURL): Ditto.
(WebCore::ContentSecurityPolicy::allowJavaScriptURLs): Remove argument reportingStatus and always pass
ContentSecurityPolicyDirectiveList::ReportingStatus::SendReport to the directive list member function. In a
subsequent patch we will remove the need to pass the reporting status to the directive list member function.
(WebCore::ContentSecurityPolicy::allowInlineEventHandlers): Ditto.
(WebCore::ContentSecurityPolicy::allowInlineScript): Ditto.
(WebCore::ContentSecurityPolicy::allowInlineStyle): Ditto.
(WebCore::ContentSecurityPolicy::allowEval): Ditto.
(WebCore::ContentSecurityPolicy::allowFrameAncestors): Ditto.
(WebCore::ContentSecurityPolicy::allowPluginType): Ditto.
(WebCore::ContentSecurityPolicy::allowScriptFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowObjectFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildFrameFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowChildContextFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowImageFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowStyleFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFontFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowMediaFromSource): Ditto.
(WebCore::ContentSecurityPolicy::allowConnectToSource): Ditto.
(WebCore::ContentSecurityPolicy::allowFormAction): Ditto.
(WebCore::ContentSecurityPolicy::allowBaseURI): Ditto.
(WebCore::ContentSecurityPolicy::evalDisabledErrorMessage): Deleted.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::ContentSecurityPolicyDirectiveList::allowJavaScriptURLs): Substitute ReportingStatus for
ContentSecurityPolicy::ReportingStatus as the enum has moved from class ContentSecurityPolicy to this class.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineEventHandlers): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineScript): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineStyle): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowEval): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowPluginType): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowScriptFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowObjectFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildContextFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowChildFrameFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowImageFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowStyleFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFontFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowMediaFromSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowConnectToSource): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFormAction): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowBaseURI): Ditto.
(WebCore::ContentSecurityPolicyDirectiveList::allowFrameAncestors): Ditto.

  • page/csp/ContentSecurityPolicyDirectiveList.h:
11:12 PM Changeset in webkit [198378] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

SpeculativeLoad needs to continue NetworkLoad when it receives a redirect response
​https://bugs.webkit.org/show_bug.cgi?id=155612

Reviewed by Andy Estes.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::willSendRedirectedRequest):
Call continueWillSendRequest. Otherwise, we will hang a thread in the NetworkProcess
if we are using ResourceHandle or we will not call the willPerformHTTPRedirection
completion handler if we are using NetworkSession. This will cause us to stop loading
from the server after the maximum number of connections is reached.

9:45 PM Changeset in webkit [198377] by Brent Fulgham
  • 3 edits
    2 adds in trunk

[XSS Auditor] Off by one in XSSAuditor::canonicalizedSnippetForJavaScript()
​https://bugs.webkit.org/show_bug.cgi?id=155624
<rdar://problem/25219962>

Unreviewed merge from Blink (patch by Tom Sepez <​tsepez@chromium.org>):
<​https://src.chromium.org/viewvc/blink?revision=201803&view=revision>

Source/WebCore:

Test: http/tests/security/xssAuditor/script-tag-with-trailing-script-and-urlencode.html

  • html/parser/XSSAuditor.cpp:

(WebCore::XSSAuditor::canonicalizedSnippetForJavaScript): Correct off-by-one error.

LayoutTests:

  • http/tests/security/xssAuditor/script-tag-with-trailing-script-and-urlencode-expected.txt: Added.
  • http/tests/security/xssAuditor/script-tag-with-trailing-script-and-urlencode.html: Added.
9:06 PM Changeset in webkit [198376] by commit-queue@webkit.org
  • 8 edits in trunk/Source

[JSC] Make CSE's ImpureData faster when dealing with large blocks
​https://bugs.webkit.org/show_bug.cgi?id=155594

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-17
Reviewed by Filip Pizlo.

Source/JavaScriptCore:

In some tests with large blocks, the time spent in DFG's LocalCSE
can be over 10% of the total compile time.
In those cases, LocalCSE is completely dominated by handling large
blocks.

This patch addresses the most obvious hot spots ImpureData's handling.

Initially, most of the time was going into HashTable::rehash().
The reason is the buckets are <HeapLocation, LazyNode> gigantic.
The hash table would easily get into several kilobytes and the CPU
was spending more time dealing with memory than anything.

To solve that, I moved the pairs lazily to the heap. The table itself
just contains the unique_ptr to those values. This makes the table
reasonably small and the alloc/dealloc are paid for by the fast rehash().

Once addImpure() was better, the next big bottleneck was clobber().
For each clobber(), we need to go over the entire map and test each value.
That loop was where most of the time was going.

Most calls to clobber() come from two kinds: SideState and Stack.

SideState is easy: it is never def'ed so we can always skip it.

Stack is disjoint from Heap too so we can also put it separately.

Splitting the map into 2 helped reduce the overhead. The maps are:
-Stack
-Heap

Having Stack alone was not enough for many blocks. In some cases,
you have a ton of SetLocal/GetLocal and having Stack separately
makes no difference.

To solve that, I split Stack in two: a map addressed by AbstractHeap
+ unique HeapLocation and a fallback map for everything else.
Since most Stack are not TOP and are unique per AbstractHeap,
I get O(1) clobber in most cases.

I could achieve the same result with a custom hash structure.
I don't think it is worth the effort, in most cases, m_fallbackStackMap
has a size of zero or one.

This patch introduces a lot of coupling between CSE and AbstractHeap.
To reduce the risk of bugs, the old map is still maintained in debug
and each step checks that the results are the same as the new implementation.

A new validation step also verify the strong assumptions made by CSE:
-SideState and World are never def().
-We never write HEAP TOP, we only write specific heap location.

  • dfg/DFGCSEPhase.cpp:
  • dfg/DFGHeapLocation.h:
  • dfg/DFGLazyNode.h:

(JSC::DFG::LazyNode::hash):

Source/WTF:

  • wtf/HashSet.h:

(WTF::V>::removeIf):

7:11 PM Changeset in webkit [198375] by sbarati@apple.com
  • 7 edits
    1 add in trunk/Source

Implement SmallPtrSet and integrate it into the Parser
​https://bugs.webkit.org/show_bug.cgi?id=155552

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Using SmallPtrSet instead of HashSet really helps speed
up the parser. What saves us most is not needing to always
malloc/free memory in the HashSet.

  • parser/Parser.cpp:

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

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::startSwitch):
(JSC::Scope::endSwitch):
(JSC::Scope::startLoop):
(JSC::Scope::hasDeclaredParameter):
(JSC::Scope::declareWrite):
(JSC::Scope::declareParameter):
(JSC::Scope::usedVariablesContains):
(JSC::Scope::useVariable):
(JSC::Scope::collectFreeVariables):
(JSC::Scope::getCapturedVars):
(JSC::Scope::isValidStrictMode):
(JSC::Scope::shadowsArguments):
(JSC::Scope::copyCapturedVariablesToVector):
(JSC::Scope::setIsModule):
(JSC::Parser::pushScope):
(JSC::Scope::getUsedVariables): Deleted.

Source/WTF:

This patch implements the SmallPtrSet data struture.
Inspired by the implementation in llvm:
​http://llvm.org/docs/doxygen/html/SmallPtrSet_8h_source.html

The data structure uses an inline array for storage up until
a fixed limit (8 entries in our implementation). If that storage
fills up, we fall back to a simple hash table implementation.
Crucially, this implementation doesn't support the remove
operation. This is on purpose. The hash table will only ever
grow.

Also, the implementation allows for it to be memcopied around.
I.e, we can put SmallPtrSet inside a Vector and allow that
Vector to use memcpy as its move operation (of course this
is only valid if the SmallPtrSet in the old memory doesn't have
its destructor called unless it is set back to its initial state.)

For now, SmallPtrSet only supports pointer types that are trivially
destructible. It's probably not too difficult to extend this to
smart pointers, but it's not part of this original implementation.

I've also implemented a pure forwarding varargs constructAndAppend
method on Vector. This allows you to do:
Vector<T> v;
v.constructAndAppend(a1, a2, ...)
as long as T has a constructor that accepts arguments (a1, a2, ...).

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/SmallPtrSet.h: Added.

(WTF::SmallPtrSet::SmallPtrSet):
(WTF::SmallPtrSet::operator=):
(WTF::SmallPtrSet::~SmallPtrSet):
(WTF::SmallPtrSet::add):
(WTF::SmallPtrSet::contains):
(WTF::SmallPtrSet::iterator::operator++):
(WTF::SmallPtrSet::iterator::operator*):
(WTF::SmallPtrSet::iterator::operator==):
(WTF::SmallPtrSet::iterator::operator!=):
(WTF::SmallPtrSet::begin):
(WTF::SmallPtrSet::end):
(WTF::SmallPtrSet::size):
(WTF::SmallPtrSet::emptyValue):
(WTF::SmallPtrSet::isValidEntry):
(WTF::SmallPtrSet::isSmall):
(WTF::SmallPtrSet::initialize):
(WTF::SmallPtrSet::grow):
(WTF::SmallPtrSet::bucket):

  • wtf/Vector.h:

(WTF::Vector::append):
(WTF::Vector::uncheckedAppend):
(WTF::minCapacity>::append):
(WTF::minCapacity>::constructAndAppend):
(WTF::minCapacity>::appendSlowCase):
(WTF::minCapacity>::constructAndAppendSlowCase):

6:53 PM Changeset in webkit [198374] by Alan Bujtas
  • 4 edits
    2 adds in trunk

Images in feed on ebay.com jiggle when one is hovered
​https://bugs.webkit.org/show_bug.cgi?id=155608
<rdar://problem/25160681>

The content offset in compositing layer = subpixel gap between the graphics layer and the layer bounds + layer bounds top left.

Reviewed by Simon Fraser.

Source/WebCore:

Test: compositing/hidpi-viewport-clipping-on-composited-content.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::contentOffsetInCompostingLayer):

  • rendering/RenderLayerBacking.h:

LayoutTests:

  • compositing/hidpi-viewport-clipping-on-composited-content-expected.html: Added.
  • compositing/hidpi-viewport-clipping-on-composited-content.html: Added.
6:43 PM Changeset in webkit [198373] by BJ Burg
  • 4 edits in trunk/Source/JavaScriptCore

Web Inspector: protocol generator shouldn't generate enums for parameters with non-anonymous enum types
​https://bugs.webkit.org/show_bug.cgi?id=155610
<rdar://problem/25229878>

Reviewed by Joseph Pecoraro.

If a command parameter has an anonymous enum type, the backend dispatcher generator
makes a C++ enum for the parameter. However, if the parameter references a named enum
type specified in a domain's 'type' section, then there's no need to generate an enum.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:

(CppBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
Add a missing check for the is_anonymous flag. Type references to named enums are resolved
to the underlying aliased EnumType instead of an AliasedType, so we have to check the flag.

Rebaseline tests.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
6:26 PM Changeset in webkit [198372] by Brent Fulgham
  • 3 edits
    2 adds in trunk

Don't initiate a style recall while drawing text
​https://bugs.webkit.org/show_bug.cgi?id=155618

Patch by Zalan Bujtas <Alan Bujtas> on 2016-03-17
Reviewed by Simon Fraser.

This patch ensures that we don't initiate a style recalc while in the middle of text drawing.

Source/WebCore:

Test: fast/canvas/crash-while-resizing-canvas.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

LayoutTests:

  • fast/canvas/crash-while-resizing-canvas-expected.txt: Added.
  • fast/canvas/crash-while-resizing-canvas.html: Added.
6:13 PM Changeset in webkit [198371] by Ryan Haddad
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r198335.
​https://bugs.webkit.org/show_bug.cgi?id=155617

This change caused existing LayoutTests to crash
intermittently (Requested by ryan|afk on #webkit).

Reverted changeset:

"DataURLDecoder::DecodingResultDispatcher may get deleted
outside main thread"
​https://bugs.webkit.org/show_bug.cgi?id=155584
​http://trac.webkit.org/changeset/198335

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-17

6:12 PM Changeset in webkit [198370] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Improve some metadata tests
​https://bugs.webkit.org/show_bug.cgi?id=155616

Patch by Eric Carlson <​eric.carlson@apple.com> on 2016-03-17
Reviewed by Saam Barati.

  • html/track/DataCue.cpp:

(WebCore::DataCue::DataCue):
(WebCore::DataCue::setData):

6:02 PM Changeset in webkit [198369] by mmaxfield@apple.com
  • 14 edits
    26 adds in trunk

[RTL Scrollbars] Position: absolute divs are covered by vertical scrollbar
​https://bugs.webkit.org/show_bug.cgi?id=155531

Reviewed by Darin Adler.

Source/WebCore:

This patch updates ScrollView::documentScrollPositionRelativeToViewOrigin(), which is
a helper function primarily used by WebCore::ScrollView::viewToContents() and
WebCore::ScrollView::contentsToView().

Tests: fast/scrolling/rtl-scrollbars-elementFromPoint-static.html

fast/scrolling/rtl-scrollbars-elementFromPoint.html
fast/scrolling/rtl-scrollbars-iframe-offset.html
fast/scrolling/rtl-scrollbars-iframe-position-absolute.html
fast/scrolling/rtl-scrollbars-iframe-scrolled.html
fast/scrolling/rtl-scrollbars-iframe.html
fast/scrolling/rtl-scrollbars-overflow-elementFromPoint.html
fast/scrolling/rtl-scrollbars-overflow-position-absolute.html
fast/scrolling/rtl-scrollbars-overflow-text-selection-scrolled.html
fast/scrolling/rtl-scrollbars-position-absolute.html
fast/scrolling/rtl-scrollbars-position-fixed.html
fast/scrolling/rtl-scrollbars-text-selection-scrolled.html
fast/scrolling/rtl-scrollbars-text-selection.html

  • platform/ScrollView.cpp:

(WebCore::ScrollView::documentScrollPositionRelativeToViewOrigin):

LayoutTests:

Add a bunch of tests. Also, this patch adds some tests that caught
​https://bugs.webkit.org/show_bug.cgi?id=155533 (but they are disabled).

  • fast/scrolling/rtl-scrollbars-elementFromPoint-expected.txt: Added.
  • fast/scrolling/rtl-scrollbars-elementFromPoint-static-expected.txt: Added.
  • fast/scrolling/rtl-scrollbars-elementFromPoint-static.html: Added.
  • fast/scrolling/rtl-scrollbars-elementFromPoint.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe-expected.txt: Added.
  • fast/scrolling/rtl-scrollbars-iframe-offset-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe-offset.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe-position-absolute-expected.txt: Added.
  • fast/scrolling/rtl-scrollbars-iframe-position-absolute.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe-scrolled-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe-scrolled.html: Added.
  • fast/scrolling/rtl-scrollbars-iframe.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-elementFromPoint-expected.txt: Added.
  • fast/scrolling/rtl-scrollbars-overflow-elementFromPoint.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-position-absolute-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-position-absolute.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-text-selection-scrolled-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-text-selection-scrolled.html: Added.
  • fast/scrolling/rtl-scrollbars-position-absolute-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-position-absolute.html: Added.
  • fast/scrolling/rtl-scrollbars-position-fixed-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-position-fixed.html: Added.
  • fast/scrolling/rtl-scrollbars-text-selection-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-text-selection-scrolled-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-text-selection-scrolled.html: Added.
  • fast/scrolling/rtl-scrollbars-text-selection.html: Added.
  • TestExpectations:
6:00 PM Changeset in webkit [198368] by matthew_hanson@apple.com
  • 1 delete in branches/Safari-601.6.10

Delete incorrect tag

5:59 PM Changeset in webkit [198367] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.6.10

New Tag.

5:57 PM Changeset in webkit [198366] by matthew_hanson@apple.com
  • 1 copy in branches/Safari-601.6.10

New Tag.

5:55 PM Changeset in webkit [198365] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

Fix some deprecation warnings in WebEditingTester
​https://bugs.webkit.org/show_bug.cgi?id=155601

Reviewed by Simon Fraser.

  • WebEditingTester/AppDelegate.m:

(-[WebEditingAppDelegate showOperations:]):
(-[WebEditingAppDelegate _updateNewWindowKeyEquivalents]):

5:53 PM Changeset in webkit [198364] by fpizlo@apple.com
  • 95 edits
    2 adds
    2 deletes in trunk/Source

Replace all of the various non-working and non-compiling sampling profiler hacks with a single super hack
​https://bugs.webkit.org/show_bug.cgi?id=155561

Reviewed by Saam Barati.

Source/JavaScriptCore:

A VM needs some internal profiling hacks in addition to the profiler(s) that the user sees, because
you can squeeze out more fidelity if you're willing to make some kind of deal with the devil. Prior
to this change JSC had a bunch of these:

  • CodeBlock sampling profiler
  • Bytecode sampling profiler
  • Sampling flags
  • Sampling regions
  • Some other stuff

I tried using these recently. They didn't even build. Initially I fixed that, but then I found that
these profilers had some serious bugs that made them report bogus results - like underreporting the
time spent in regions of code by more than 2x.

Part of the problem here is that a profiler loses fidelity as it gains power. The more general it
tries to be, the more code gets executed on the hot path for the profiler, which increasingly
perturbs the results. I believe that's the reason for the underreporting - code ran sufficiently
slower, and in a sufficiently different way when profiling, that the results were just wrong.

This change attacks this problem directly by replacing all of the diverse profiling hacks with just
one, which I call the SuperSampler. It consists of exactly one counter. When enabled, the sampler
will periodically print (via dataLog()) the percentage of samples that saw a non-zero count. Because
it's so simple, it gives better accuracy. This comes about in two ways:

  • It runs at a lower rate. That's fine since it's only checking one flag. You don't need a high rate for just one flag.


  • The fact that there is only *one* flag means that the user must choose a hypothesis about what is slow. This turns the problem of profiling into a hypothesis testing problem, which is an inherently less flaky kind of experiment to run.


The SuperSampler is enabled with a runtime flag rather than a compile-time flag, so it's much less
likely to break. That also means that you can enable it without rebuilding the universe. The old
samplers all had ENABLE flags in Platform.h, which was rather unfortunate for compile times.

SuperSampler supports both JIT and C++ users. C++ users should use SuperSamplerScope. The default
idiom is to create one and pass "true" to it. You can disable a scope by passing "false" instead.
This patch puts a bunch of scopes in places I care about. I think it's probably OK if people check in
these deactivated scopes. That makes it convenient to retest things we've tested previously.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/SamplingTool.cpp: Removed.
  • bytecode/SamplingTool.h: Removed.
  • bytecode/SuperSampler.cpp: Added.

(JSC::initializeSuperSampler):
(JSC::printSuperSamplerState):

  • bytecode/SuperSampler.h: Added.

(JSC::SuperSamplerScope::SuperSamplerScope):
(JSC::SuperSamplerScope::~SuperSamplerScope):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):

  • bytecompiler/NodesCodegen.cpp:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::forAllValues):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::clobberStructures):

  • dfg/DFGArgumentsEliminationPhase.cpp:

(JSC::DFG::performArgumentsElimination):

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::performBackwardsPropagation):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::parse):

  • dfg/DFGCFAPhase.cpp:

(JSC::DFG::performCFA):

  • dfg/DFGCFGSimplificationPhase.cpp:

(JSC::DFG::performCFGSimplification):

  • dfg/DFGCPSRethreadingPhase.cpp:

(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlocks):
(JSC::DFG::CPSRethreadingPhase::propagatePhis):
(JSC::DFG::performCPSRethreading):

  • dfg/DFGCSEPhase.cpp:

(JSC::DFG::performLocalCSE):
(JSC::DFG::performGlobalCSE):

  • dfg/DFGCleanUpPhase.cpp:

(JSC::DFG::performCleanUp):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::performConstantFolding):

  • dfg/DFGConstantHoistingPhase.cpp:

(JSC::DFG::performConstantHoisting):

  • dfg/DFGCriticalEdgeBreakingPhase.cpp:

(JSC::DFG::performCriticalEdgeBreaking):

  • dfg/DFGDCEPhase.cpp:

(JSC::DFG::performDCE):

  • dfg/DFGDriver.cpp:

(JSC::DFG::compileImpl):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::performFixup):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dethread):

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::performIntegerCheckCombining):

  • dfg/DFGIntegerRangeOptimizationPhase.cpp:

(JSC::DFG::performIntegerRangeOptimization):

  • dfg/DFGInvalidationPointInjectionPhase.cpp:

(JSC::DFG::performInvalidationPointInjection):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):

  • dfg/DFGLICMPhase.cpp:

(JSC::DFG::performLICM):

  • dfg/DFGLiveCatchVariablePreservationPhase.cpp:

(JSC::DFG::performLiveCatchVariablePreservationPhase):

  • dfg/DFGLivenessAnalysisPhase.cpp:

(JSC::DFG::performLivenessAnalysis):

  • dfg/DFGLoopPreHeaderCreationPhase.cpp:

(JSC::DFG::performLoopPreHeaderCreation):

  • dfg/DFGMaximalFlushInsertionPhase.cpp:

(JSC::DFG::performMaximalFlushInsertion):

  • dfg/DFGMovHintRemovalPhase.cpp:

(JSC::DFG::performMovHintRemoval):

  • dfg/DFGOSRAvailabilityAnalysisPhase.cpp:

(JSC::DFG::performOSRAvailabilityAnalysis):

  • dfg/DFGOSREntrypointCreationPhase.cpp:

(JSC::DFG::performOSREntrypointCreation):

  • dfg/DFGOSRExitCompiler.cpp:
  • dfg/DFGObjectAllocationSinkingPhase.cpp:

(JSC::DFG::performObjectAllocationSinking):

  • dfg/DFGOperations.cpp:
  • dfg/DFGPhantomInsertionPhase.cpp:

(JSC::DFG::performPhantomInsertion):

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThread):

  • dfg/DFGPredictionInjectionPhase.cpp:

(JSC::DFG::performPredictionInjection):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::performPredictionPropagation):

  • dfg/DFGPutStackSinkingPhase.cpp:

(JSC::DFG::performPutStackSinking):

  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::performSSAConversion):

  • dfg/DFGSSALoweringPhase.cpp:

(JSC::DFG::performSSALowering):

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStackLayoutPhase.cpp:

(JSC::DFG::performStackLayout):

  • dfg/DFGStaticExecutionCountEstimationPhase.cpp:

(JSC::DFG::performStaticExecutionCountEstimation):

  • dfg/DFGStoreBarrierInsertionPhase.cpp:

(JSC::DFG::performFastStoreBarrierInsertion):
(JSC::DFG::performGlobalStoreBarrierInsertion):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::performStrengthReduction):

  • dfg/DFGStructureAbstractValue.cpp:

(JSC::DFG::StructureAbstractValue::assertIsRegistered):
(JSC::DFG::StructureAbstractValue::clobber):
(JSC::DFG::StructureAbstractValue::observeTransition):
(JSC::DFG::StructureAbstractValue::observeTransitions):
(JSC::DFG::StructureAbstractValue::add):
(JSC::DFG::StructureAbstractValue::merge):
(JSC::DFG::StructureAbstractValue::mergeSlow):
(JSC::DFG::StructureAbstractValue::mergeNotTop):
(JSC::DFG::StructureAbstractValue::filter):
(JSC::DFG::StructureAbstractValue::filterSlow):
(JSC::DFG::StructureAbstractValue::contains):
(JSC::DFG::StructureAbstractValue::isSubsetOf):
(JSC::DFG::StructureAbstractValue::isSupersetOf):
(JSC::DFG::StructureAbstractValue::overlaps):
(JSC::DFG::StructureAbstractValue::equalsSlow):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::performStructureRegistration):

  • dfg/DFGTierUpCheckInjectionPhase.cpp:

(JSC::DFG::performTierUpCheckInjection):

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::performTypeCheckHoisting):

  • dfg/DFGUnificationPhase.cpp:

(JSC::DFG::performUnification):

  • dfg/DFGVarargsForwardingPhase.cpp:

(JSC::DFG::performVarargsForwarding):

  • dfg/DFGVirtualRegisterAllocationPhase.cpp:

(JSC::DFG::performVirtualRegisterAllocation):

  • dfg/DFGWatchpointCollectionPhase.cpp:

(JSC::DFG::performWatchpointCollection):

  • dynbench.cpp:
  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
(JSC::FTL::DFG::LowerDFGToB3::compileGetRegExpObjectLastIndex):

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileFTLOSRExit):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::store):
(JSC::FTL::Output::absolute):
(JSC::FTL::Output::incrementSuperSamplerCount):
(JSC::FTL::Output::decrementSuperSamplerCount):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::baseIndex):
(JSC::FTL::Output::load8SignExt32):
(JSC::FTL::Output::load8ZeroExt32):
(JSC::FTL::Output::anchor):
(JSC::FTL::Output::absolute): Deleted.

  • heap/Heap.cpp:

(JSC::Heap::markRoots):
(JSC::Heap::collectAndSweep):
(JSC::Heap::collectImpl):
(JSC::Heap::zombifyDeadObjects):

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::specializedSweep):

  • interpreter/Interpreter.cpp:

(JSC::setupVarargsFrameAndSetThis):
(JSC::Interpreter::Interpreter):
(JSC::Interpreter::initialize):
(JSC::checkedReturn):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::debug):
(JSC::SamplingScope::SamplingScope): Deleted.
(JSC::SamplingScope::~SamplingScope): Deleted.
(JSC::Interpreter::enableSampler): Deleted.
(JSC::Interpreter::dumpSampleData): Deleted.
(JSC::Interpreter::startSampling): Deleted.
(JSC::Interpreter::stopSampling): Deleted.

  • interpreter/Interpreter.h:

(JSC::Interpreter::isCallBytecode):
(JSC::Interpreter::sampler): Deleted.

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::branchIfNotFastTypedArray):
(JSC::AssemblyHelpers::incrementSuperSamplerCount):
(JSC::AssemblyHelpers::decrementSuperSamplerCount):
(JSC::AssemblyHelpers::purifyNaN):

  • jit/AssemblyHelpers.h:
  • jit/JIT.cpp:
  • jit/JIT.h:
  • jit/JITArithmetic.cpp:
  • jit/JITArithmetic32_64.cpp:
  • jit/JITCall.cpp:
  • jit/JITCall32_64.cpp:
  • jit/JITOperations.cpp:
  • jit/JITPropertyAccess.cpp:
  • jit/JITPropertyAccess32_64.cpp:
  • jsc.cpp:

(runWithScripts):
(jscmain):

  • parser/Nodes.cpp:
  • parser/Parser.h:

(JSC::parse):

  • runtime/Executable.h:
  • runtime/InitializeThreading.cpp:

(JSC::initializeThreading):

  • runtime/Options.h:
  • runtime/RegExpCachedResult.h:
  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/StringPrototype.cpp:

(JSC::removeUsingRegExpSearch):
(JSC::stringProtoFuncSubstring):

  • runtime/VM.cpp:

(JSC::VM::resetDateCache):
(JSC::VM::whenIdle):
(JSC::VM::deleteAllCode):
(JSC::VM::addSourceProviderCache):
(JSC::VM::startSampling): Deleted.
(JSC::VM::stopSampling): Deleted.
(JSC::VM::dumpSampleData): Deleted.

  • runtime/VM.h:

(JSC::VM::regExpCache):

  • testRegExp.cpp:

(runFromFiles):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::interpret):

Source/WebCore:

No new tests because no new behavior.

  • platform/audio/ios/MediaSessionManagerIOS.mm:
  • platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:

Source/WTF:

This patch replaces all of our various ad hoc profiling hacks with a single ad hoc profiling hack.
That needs to be able to sleep a thread, so I added a portable way to do it.

This also removes a bunch of ENABLE flags for all of the old non-working hacks.

  • wtf/CurrentTime.cpp:

(WTF::currentCPUTime):
(WTF::sleep):

  • wtf/CurrentTime.h:

(WTF::sleepMS):

  • wtf/Platform.h:
5:50 PM Changeset in webkit [198363] by timothy_horton@apple.com
  • 4 edits in trunk

Find-in-page indicator in Mail viewer is the wrong scale and cut off
​https://bugs.webkit.org/show_bug.cgi?id=155605
<rdar://problem/23948165>

Reviewed by Simon Fraser.

Source/WebKit2:

  • UIProcess/mac/WKTextFinderClient.mm:

(-[WKTextFinderClient didGetImageForMatchResult:]):
Initialize the NSImage with the correct size, instead of inferring the
size from the bitmap, so that we don't lose information about device pixel ratio.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/FindInPage.mm:

(TEST):
Add a test that ensures that the find result image is correctly @2x.
The NSImage size should be in points.

5:46 PM Changeset in webkit [198362] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Fix a typo which was supposed to be fixed in r198351.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.prototype.render):

5:42 PM Changeset in webkit [198361] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Some media tests are flaky.
​https://bugs.webkit.org/show_bug.cgi?id=155614

Reviewed by Eric Carlson.

  • html/track/TextTrack.cpp:

(WebCore::TextTrack::~TextTrack):

4:55 PM Changeset in webkit [198360] by sbarati@apple.com
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Make GetProperty(.) inside ArrayPrototype.cpp spec compatible.
​https://bugs.webkit.org/show_bug.cgi?id=155575

Reviewed by Filip Pizlo and Mark Lam.

This patch makes various Array.prototype.(shift | unshift | splice)
spec compliant. Before, they were performing Get and HasProperty as one
operation. Instead, they need to be performed as two distinct operations
when it would be observable.

  • runtime/ArrayPrototype.cpp:

(JSC::getProperty):

  • runtime/PropertySlot.h:

(JSC::PropertySlot::PropertySlot):
(JSC::PropertySlot::isCacheableValue):
(JSC::PropertySlot::isCacheableGetter):
(JSC::PropertySlot::isCacheableCustom):
(JSC::PropertySlot::setIsTaintedByProxy):
(JSC::PropertySlot::isTaintedByProxy):
(JSC::PropertySlot::internalMethodType):
(JSC::PropertySlot::getValue):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::getOwnPropertySlotCommon):

  • tests/es6.yaml:
  • tests/stress/proxy-array-prototype-methods.js: Added.

(assert):
(test):
(shallowEq):

4:26 PM Changeset in webkit [198359] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

4:25 PM Changeset in webkit [198358] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebInspectorUI

Web Inspector: Prefer retained size to the shallow size in Heap Snapshot data grids
​https://bugs.webkit.org/show_bug.cgi?id=155597
<rdar://problem/25225087>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-17
Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:

New datagrid column and tooltip strings.

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGrid.prototype.insertColumn):
Allow a column definition to provide a tooltip for the header cell.

  • UserInterface/Views/HeapSnapshotClassDataGridNode.js:

(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
Include retained size column data.

(WebInspector.HeapSnapshotClassDataGridNode.prototype._populate):
Fix non-batched populate to sort instances on first population.

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
Include retained size column data.

  • UserInterface/Views/HeapSnapshotInstancesContentView.js:

(WebInspector.HeapSnapshotInstancesContentView):
Include a retained size column. Update initial sort and column widths.

  • UserInterface/Views/HeapSnapshotInstancesDataGridTree.js:

(WebInspector.HeapSnapshotInstancesDataGridTree.buildSortComparator):
Include a numeric sort comparator for the new retained size column.

(WebInspector.HeapSnapshotInstancesDataGridTree.prototype._populateTopLevel):
Include retained size, and lazily calculate percentage later.

3:48 PM Changeset in webkit [198357] by beidson@apple.com
  • 3 edits
    3 adds in trunk

Don't try to restore deleted MemoryIndexes if their owning object store is not restored.
​https://bugs.webkit.org/show_bug.cgi?id=155068

Reviewed by Alex Christensen.

Source/WebCore:

Test: storage/indexeddb/modern/deleteindex-4-private.html

  • Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:

(WebCore::IDBServer::MemoryBackingStoreTransaction::indexDeleted):

LayoutTests:

  • storage/indexeddb/modern/deleteindex-4-private-expected.txt: Added.
  • storage/indexeddb/modern/deleteindex-4-private.html: Added.
  • storage/indexeddb/modern/resources/deleteindex-4.js: Added.
3:43 PM Changeset in webkit [198356] by commit-queue@webkit.org
  • 11 edits
    13 moves
    2 adds in trunk

AX: attributes to retrieve focusable and editable ancestors
​https://bugs.webkit.org/show_bug.cgi?id=155554

Patch by Doug Russell <​d_russell@apple.com> on 2016-03-17
Reviewed by Chris Fleizach.

Add attributes to help give context to focus changes:
AXFocusableAncestor - nearest accessibility ancestor that returns true for
canSetFocusAttribute().
AXEditableAncestor - nearest accessibility ancestor that returns true for
isTextControl().
AXHighestEditableAncestor - highest element in accessibility that returns true
for isTextControl().

Source/WebCore:

Test: accessibility/mac/ancestor-attributes.html

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

(WebCore::AccessibilityObject::focusableAncestor):
(WebCore::AccessibilityObject::editableAncestor):
(WebCore::AccessibilityObject::highestEditableAncestor):

  • accessibility/AccessibilityObject.h:
  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeNames]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

  • accessibility/image-link-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/image-link-expected.txt.
  • accessibility/image-map2-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/image-map2-expected.txt.
  • accessibility/internal-link-anchors2-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/internal-link-anchors2-expected.txt.
  • accessibility/lists-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/lists-expected.txt.
  • accessibility/mac/ancestor-attributes-expected.txt: Added.
  • accessibility/mac/ancestor-attributes.html: Added.
  • accessibility/mac/aria-columnrowheaders-expected.txt:
  • accessibility/mac/bounds-for-range-expected.txt:
  • accessibility/mac/document-links-expected.txt:
  • accessibility/mac/internal-link-anchors-expected.txt:
  • accessibility/math-multiscript-attributes-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/math-multiscript-attributes-expected.txt.
  • accessibility/plugin-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/plugin-expected.txt.
  • accessibility/table-attributes-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-attributes-expected.txt.
  • accessibility/table-cell-spans-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-cell-spans-expected.txt.
  • accessibility/table-cells-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-cells-expected.txt.
  • accessibility/table-detection-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-detection-expected.txt.
  • accessibility/table-one-cell-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-one-cell-expected.txt.
  • accessibility/table-sections-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-sections-expected.txt.
  • accessibility/table-with-rules-expected.txt: Renamed from LayoutTests/platform/mac/accessibility/table-with-rules-expected.txt.
  • accessibility/transformed-element-expected.txt:
3:17 PM Changeset in webkit [198355] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Unreviewed follow-up fix to test after r198353.

  • inspector/unit-tests/heap-snapshot.html:

Account for <root> in a few places.

2:04 PM Changeset in webkit [198354] by weinig@apple.com
  • 11 edits in trunk

Implement document.queryCommandSupported("copy")
​https://bugs.webkit.org/show_bug.cgi?id=155548
<rdar://problem/25195295>

Reviewed by Enrica Casucci.

Source/WebCore:

  • document.queryCommandSupported("copy") and document.queryCommandSupported("cut") need to return true if the ClipboardAccessPolicy is either Allow or RequiresUserGesture. But, document.queryCommandEnabled("copy") and document.queryCommandEnabled("cut") should still return false when there is no user gesture. I also had to maintain a weird quirk that copy and cut should be allowed to execute, and thus fire the oncopy and oncut events, even when disabled, if coming from a "MenuOrKeyBinding" source. To do this, I upgraded the allowExecutionWhenDisabled bit to a function taking a source, and return true only when the correct source is specified.
  • editing/Editor.h:
  • editing/EditorCommand.cpp:

(WebCore::defaultValueForSupportedCopyCut):
(WebCore::allowCopyCutFromDOM):
(WebCore::enabledCopy):
(WebCore::enabledCut):
(WebCore::allowExecutionWhenDisabled):
(WebCore::doNotAllowExecutionWhenDisabled):
(WebCore::allowExecutionWhenDisabledCopyCut):
(WebCore::Editor::Command::execute):
(WebCore::Editor::Command::allowExecutionWhenDisabled):

LayoutTests:

  • editing/execCommand/clipboard-access-with-user-gesture-expected.txt:
  • editing/execCommand/clipboard-access-with-user-gesture.html:

document.queryCommandSupported('copy') should be returning true.

  • editing/pasteboard/can-read-in-copy-and-cut-events.html:
  • editing/pasteboard/copy-cut-paste-events-fired-when-disabled.html:
  • editing/pasteboard/pasting-empty-html-falls-back-to-text.html:
  • editing/pasteboard/set_data_typeof_return.html:

Use testRunner.execCommand() to test the behavior of a user.

2:02 PM Changeset in webkit [198353] by Joseph Pecoraro
  • 21 edits
    1 move
    11 adds
    3 deletes in trunk

Web Inspector: HeapSnapshots are slow and use too much memory
​https://bugs.webkit.org/show_bug.cgi?id=155571

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

This is the first inclusion of Workers into Web Inspector. In this case
the Main side merely needs to make requests of the Worker and get back
objects that it can interact with more.

New file heirarchies:

UserInterface/Proxies

  • new Proxy classes in the Main page.
  • treat like Model classes, but not quite model.

UserInterface/Workers/HeapSnapshotWorker

  • new Worker classes for Workers. No WebInspector namespace.
  • no minification of these resources, they are simply copied.

Remote procedure call interface between the Main/Worker page happens
through the WorkerProxy and Worker classes. There are simple ways
to perform factory style methods and call methods on objects, and
get the result in a callback. Similiar to frontend <-> backend agent
communication:

HeapSnapshotWorkerProxy: (Main world)

  • creates the worker
  • performAction("actionName", arguments, callback)
  • callMethod(objectId, "methodName", arguments, callback)
  • handle message => dispatch event or invoke callback

HeapSnapshotWorker: (Worker world)

  • sendEvent("eventName", eventData)
  • handle message => dispatch action or method on object

Proxy object methods are boilerplate calls to performAction/callMethod
with deserialization of responses. The rest of the frontend can just
treat Proxy objects as Model objects with some data and async methods.

Because the Node/Edge data is so small, objects are cheaply created
when needed and not cached. This means that there may be duplicate
HeapSnapshotNode's for the same node. For example if different Views
both request instancesWithClassName("Foo"). This is fine, as none
of our Views really care about object uniqueness, they are only
interested in the data or querying for more data.

  • Scripts/combine-resources.pl:
  • Scripts/copy-user-interface-resources.pl:

Copy the Workers directory to the resources directory.
Its code is only meant to be loaded by Workers, so it
shouldn't be included in the Main page.

  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • UserInterface/Models/HeapSnapshot.js: Removed.
  • UserInterface/Models/HeapSnapshotDiff.js: Removed.
  • UserInterface/Models/HeapSnapshotEdge.js: Removed.
  • UserInterface/Models/HeapSnapshotNode.js: Removed.

Replace the old simple Model classes with Proxy classes that interact
with the Worker.

  • UserInterface/Models/HeapAllocationsInstrument.js:

(WebInspector.HeapAllocationsInstrument.prototype._takeHeapSnapshot):
(WebInspector.HeapAllocationsInstrument):

  • UserInterface/Models/HeapAllocationsTimelineRecord.js:

(WebInspector.HeapAllocationsTimelineRecord):

  • UserInterface/Models/HeapSnapshotRootPath.js:

(WebInspector.HeapSnapshotRootPath):
(WebInspector.HeapSnapshotRootPath.prototype.appendEdge):

  • UserInterface/Protocol/HeapObserver.js:

(WebInspector.HeapObserver.prototype.trackingStart):
(WebInspector.HeapObserver.prototype.trackingComplete):

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotDiff):
(WebInspector.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
(WebInspector.HeapAllocationsTimelineView.prototype._dataGridNodeSelected):
(WebInspector.HeapAllocationsTimelineView):

  • UserInterface/Views/HeapSnapshotClassDataGridNode.js:

(WebInspector.HeapSnapshotClassDataGridNode.prototype._populate):

  • UserInterface/Views/HeapSnapshotClusterContentView.js:
  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WebInspector.HeapSnapshotInstanceDataGridNode):
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode.node.shortestGCRootPath.):
(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPath):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.stringifyEdge):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler):

  • UserInterface/Views/HeapSnapshotInstancesContentView.js:

(WebInspector.HeapSnapshotInstancesContentView):

  • UserInterface/Views/HeapSnapshotInstancesDataGridTree.js:

(WebInspector.HeapSnapshotInstancesDataGridTree):

  • UserInterface/Views/HeapSnapshotSummaryContentView.js:

(WebInspector.HeapSnapshotSummaryContentView):
Update existing code to expect the new Proxy objects or create
the new HeapSnapshot using workers.

  • UserInterface/Proxies/HeapSnapshotDiffProxy.js: Added.

(WebInspector.HeapSnapshotDiffProxy):
(WebInspector.HeapSnapshotDiffProxy.deserialize):
(WebInspector.HeapSnapshotDiffProxy.prototype.get snapshot1):
(WebInspector.HeapSnapshotDiffProxy.prototype.get snapshot2):
(WebInspector.HeapSnapshotDiffProxy.prototype.get totalSize):
(WebInspector.HeapSnapshotDiffProxy.prototype.get totalObjectCount):
(WebInspector.HeapSnapshotDiffProxy.prototype.get categories):
(WebInspector.HeapSnapshotDiffProxy.prototype.allocationBucketCounts):
(WebInspector.HeapSnapshotDiffProxy.prototype.instancesWithClassName):
(WebInspector.HeapSnapshotDiffProxy.prototype.nodeWithIdentifier):
A HeapSnapshotDiffProxy looks like a HeapSnapshotProxy and responds to
the same methods, but has the extra snapshot1/2 pointers.

  • UserInterface/Proxies/HeapSnapshotEdgeProxy.js:

(WebInspector.HeapSnapshotEdgeProxy):
(WebInspector.HeapSnapshotEdgeProxy.deserialize):
Edge data. No methods are proxied at this point.

  • UserInterface/Proxies/HeapSnapshotNodeProxy.js: Added.

(WebInspector.HeapSnapshotNodeProxy):
(WebInspector.HeapSnapshotNodeProxy.deserialize):
(WebInspector.HeapSnapshotNodeProxy.prototype.shortestGCRootPath):
(WebInspector.HeapSnapshotNodeProxy.prototype.dominatedNodes):
(WebInspector.HeapSnapshotNodeProxy.prototype.retainedNodes):
(WebInspector.HeapSnapshotNodeProxy.prototype.retainers):
Node data and methods to query for node relationships.

  • UserInterface/Proxies/HeapSnapshotProxy.js: Added.

(WebInspector.HeapSnapshotProxy):
(WebInspector.HeapSnapshotProxy.deserialize):
(WebInspector.HeapSnapshotProxy.prototype.get proxyObjectId):
(WebInspector.HeapSnapshotProxy.prototype.get identifier):
(WebInspector.HeapSnapshotProxy.prototype.get totalSize):
(WebInspector.HeapSnapshotProxy.prototype.get totalObjectCount):
(WebInspector.HeapSnapshotProxy.prototype.get categories):
(WebInspector.HeapSnapshotProxy.prototype.allocationBucketCounts):
(WebInspector.HeapSnapshotProxy.prototype.instancesWithClassName):
(WebInspector.HeapSnapshotProxy.prototype.nodeWithIdentifier):
Snapshot data and methods to query for nodes.

  • UserInterface/Proxies/HeapSnapshotWorkerProxy.js: Added.

(WebInspector.HeapSnapshotWorkerProxy):
(WebInspector.HeapSnapshotWorkerProxy.singleton):
(WebInspector.HeapSnapshotWorkerProxy.prototype.createSnapshot):
(WebInspector.HeapSnapshotWorkerProxy.prototype.createSnapshotDiff):
(WebInspector.HeapSnapshotWorkerProxy.prototype.performAction):
(WebInspector.HeapSnapshotWorkerProxy.prototype.callMethod):
(WebInspector.HeapSnapshotWorkerProxy.prototype._postMessage):
(WebInspector.HeapSnapshotWorkerProxy.prototype._handleMessage):
Singleton factory for the worker and proxied communication with the worker.
Provide means for invoking "factory actions" and "object methods".

  • UserInterface/Workers/HeapSnapshot/HeapSnapshotWorker.js: Added.

(HeapSnapshotWorker):
(HeapSnapshotWorker.prototype.createSnapshot):
(HeapSnapshotWorker.prototype.createSnapshotDiff):
(HeapSnapshotWorker.prototype.sendEvent):
(HeapSnapshotWorker.prototype._handleMessage):
Main worker code. Handle dispatching actions and methods.

  • UserInterface/Workers/HeapSnapshot/HeapSnapshot.js: Added.

(HeapSnapshot):
(HeapSnapshot.buildCategories):
(HeapSnapshot.allocationBucketCounts):
(HeapSnapshot.instancesWithClassName):
(HeapSnapshot.prototype.allocationBucketCounts):
(HeapSnapshot.prototype.instancesWithClassName):
(HeapSnapshot.prototype.nodeWithIdentifier):
(HeapSnapshot.prototype.shortestGCRootPath):
(HeapSnapshot.prototype.dominatedNodes):
(HeapSnapshot.prototype.retainedNodes):
(HeapSnapshot.prototype.retainers):
(HeapSnapshot.prototype.serialize):
(HeapSnapshot.prototype.serializeNode):
(HeapSnapshot.prototype.serializeEdge):
(HeapSnapshot.prototype._buildOutgoingEdges):
(HeapSnapshot.prototype._buildIncomingEdges):
(HeapSnapshot.prototype._buildPostOrderIndexes):
(HeapSnapshot.prototype._buildDominatorIndexes):
(HeapSnapshot.prototype._buildRetainedSizes):
(HeapSnapshot.prototype._gcRootPathes.visitNode):
(HeapSnapshot.prototype._gcRootPathes):
(HeapSnapshotDiff):
(HeapSnapshotDiff.prototype.allocationBucketCounts):
(HeapSnapshotDiff.prototype.instancesWithClassName):
(HeapSnapshotDiff.prototype.nodeWithIdentifier):
(HeapSnapshotDiff.prototype.shortestGCRootPath):
(HeapSnapshotDiff.prototype.dominatedNodes):
(HeapSnapshotDiff.prototype.retainedNodes):
(HeapSnapshotDiff.prototype.retainers):
(HeapSnapshotDiff.prototype.serialize):
New HeapSnapshot data processing implementation. Instead of creating
a new object per Node or per Edge create data arrays containing data
per-Node. Operate on these lists of data instead of creating many objects.

LayoutTests:

  • inspector/heap/getPreview.html:
  • inspector/heap/getRemoteObject.html:
  • inspector/heap/snapshot.html:

Update tests to use the new HeapSnapshotWorker frontend code.

  • inspector/unit-tests/heap-snapshot-expected.txt: Added.
  • inspector/unit-tests/heap-snapshot.html: Added.

Verify the data processing in and worker communication work HeapSnapshotWorker
produces expected values when compared with the simple HeapSnapshot/Node/Edge
implentation.

2:01 PM Changeset in webkit [198352] by andersca@apple.com
  • 3 edits
    1 delete in trunk/Source/WebKit2

Remove use of dyld_register_image_state_change_handler() in PluginProcessMac.mm
​https://bugs.webkit.org/show_bug.cgi?id=155596

Reviewed by Dan Bernstein.

Use _dyld_register_func_for_add_image instead which is API. Use dladdr to find the image path given its header.

  • Platform/spi/Cocoa/DyldSPI.h: Removed.
  • PluginProcess/mac/PluginProcessMac.mm:

(WebKit::PluginProcess::platformInitializeProcess):

  • WebKit2.xcodeproj/project.pbxproj:
1:48 PM Changeset in webkit [198351] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

An analysis task should be closed if a progression cause is identified
​https://bugs.webkit.org/show_bug.cgi?id=155549

Reviewed by Chris Dumez.

Since a progression is desirable, we should close an analysis task once its cause is identified.

Also fix some typos.

  • init-database.sql: Fixed a typo.
  • public/api/analysis-tasks.php:
  • public/v3/models/analysis-task.js:

(AnalysisTask.prototype.dissociateBug): Renamed from dissociateBug.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage.prototype.render):
(AnalysisTaskPage.prototype._dissociateBug): Renamed from _dissociateBug.
(AnalysisTaskPage.prototype._dissociateCommit): Fixed the typo in the alert.

1:46 PM Changeset in webkit [198350] by Chris Dumez
  • 5 edits in trunk/Source

Set the WebContent process's main thread QoS to USER-INTERACTIVE
​https://bugs.webkit.org/show_bug.cgi?id=155595
<rdar://problem/22534965>

Reviewed by Antti Koivisto.

Source/WebKit2:

Increase the WebContent process main thread's QoS to USER-INTERACTIVE
instead of USER-INITIATED as it is drawing UI. However, use a relative
priority of -1 so that its priority is lower than the one of the
scrolling thread.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

Source/WTF:

Add a relativePriority parameter to setCurrentThreadIsUser*() so that
we can do more fine-grained prioritization of threads that have the
same QoS.

  • wtf/Threading.cpp:

(WTF::setCurrentThreadIsUserInteractive):
(WTF::setCurrentThreadIsUserInitiated):
(WTF::createThread): Deleted.

  • wtf/Threading.h:
1:38 PM Changeset in webkit [198349] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Make FunctionMode an enum class.
​https://bugs.webkit.org/show_bug.cgi?id=155587

Reviewed by Saam Barati.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • parser/NodeConstructors.h:

(JSC::BaseFuncExprNode::BaseFuncExprNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::FuncDeclNode::FuncDeclNode):
(JSC::ArrowFuncExprNode::ArrowFuncExprNode):
(JSC::MethodDefinitionNode::MethodDefinitionNode):

  • parser/ParserModes.h:

(JSC::functionNameIsInScope):

1:13 PM Changeset in webkit [198348] by msaboff@apple.com
  • 7 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Getters and Setters should be prefixed appropriately
​https://bugs.webkit.org/show_bug.cgi?id=155593

Reviewed by Mark Lam.

Changed the putDirectNativeIntrinsicGetter() to prepend "get " to the funtion name.

Updated places that had their own macro or hand constructed a getter function to use
the JSC_NATIVE_GETTER macro which will properly append "get ".

Prepended "get " and "set " to the proto accessor created on the Object prototype.

When we create the Symbol.species getter, added an explicit function name of "get [Symbol.species]".

  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):

  • inspector/JSJavaScriptCallFramePrototype.cpp:

(Inspector::JSJavaScriptCallFramePrototype::finishCreation):
(Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluate):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSObject.cpp:

(JSC::JSObject::putDirectNativeIntrinsicGetter):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):
(JSC::MapPrototype::getOwnPropertySlot):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):
(JSC::SetPrototype::getOwnPropertySlot):

  • tests/stress/accessors-get-set-prefix.js: Added.

(tryGetOwnPropertyDescriptorGetName):

12:28 PM Changeset in webkit [198347] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit2

Support manually accepting invalid SSL certificates with NetworkSession
​https://bugs.webkit.org/show_bug.cgi?id=155442
<rdar://problem/24847398>

Reviewed by Darin Adler.

When we click continue after getting a warning about an invalid SSL certificate, we call
NSURLRequest setAllowsSpecificHTTPSCertificate in NetworkProcess::allowSpecificHTTPSCertificateForHost,
which stores information in CFNetwork about the specific invalid SSL certificate we want to accept.
If we see such a certificate during a server trust evaluation, we want to tell CFNetwork to accept it.
This fixes a loop when going to ​https://badssl.com, clicking on expired, and clicking continue.

  • NetworkProcess/NetworkDataTask.h:
  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::didReceiveChallenge):
(WebKit::NetworkLoad::continueCanAuthenticateAgainstProtectionSpace):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTask::transferSandboxExtensionToDownload):
(WebKit::certificatesMatch):
(WebKit::NetworkDataTask::allowsSpecificHTTPSCertificateForHost):
(WebKit::NetworkDataTask::suggestedFilename):

12:07 PM Changeset in webkit [198346] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Large repaints when typing any character in console
​https://bugs.webkit.org/show_bug.cgi?id=155387
<rdar://problem/25125720>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Main.css:

(#content):

11:54 AM Changeset in webkit [198345] by fpizlo@apple.com
  • 4 edits in trunk/Source/WTF

Silence leaks in ParkingLot
​https://bugs.webkit.org/show_bug.cgi?id=155510

Reviewed by Alexey Proskuryakov.

ParkingLot has a concurrent hashtable that it reallocates on demand. It will not reallocate
it in steady state. The hashtable is sized to accommodate the high watermark of the number
of active threads - so long as the program doesn't just keep starting an unbounded number
of threads that are all active, the hashtable will stop resizing. Each resize operation is
designed to stay out of the way of the data-access-parallel normal path, in which two
threads operating on different lock addresses don't have to synchronize. To do this, it
simply drops the old hashtable without deleting it, so that threads that were still using
it don't crash. They will realize that they have the wrong hashtable before doing anything
bad, but we don't have a way of proving when all of those threads are no longer going to
read from the old hashtables. So, we just leak them.

This is a bounded leak, since the hashtable resizes exponentially. Thus the total memory
utilization of all hashtables, including the leaked ones, converges to a linear function of
the current hashtable's size (it's 2 * size of current hashtable).

But this leak is a problem for leaks tools, which will always report this leak. This is not
useful. It's better to silence the leak. That's what this patch does by ensuring that all
hashtables, including leaked ones, end up in a global vector. This is perf-neutral.

This requires making a StaticWordLock variant of WordLock. That's probably the biggest part
of this change.

  • wtf/ParkingLot.cpp:
  • wtf/WordLock.cpp:

(WTF::WordLockBase::lockSlow):
(WTF::WordLockBase::unlockSlow):
(WTF::WordLock::lockSlow): Deleted.
(WTF::WordLock::unlockSlow): Deleted.

  • wtf/WordLock.h:

(WTF::WordLockBase::lock):
(WTF::WordLockBase::isLocked):
(WTF::WordLock::WordLock):
(WTF::WordLock::lock): Deleted.
(WTF::WordLock::isLocked): Deleted.

10:37 AM Changeset in webkit [198344] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking http/tests/security/aboutBlank/window-open-self-about-blank.html as flaky on ios-sim-debug
​https://bugs.webkit.org/show_bug.cgi?id=94458

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
10:20 AM Changeset in webkit [198343] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

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

New tag.

10:05 AM Changeset in webkit [198341] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r198331 - REGRESSION(r197380): Build fails with new GCC and Clang
​https://bugs.webkit.org/show_bug.cgi?id=155044

Reviewed by Michael Catanzaro.

In C++, std math functions ceil and floor are overloaded for double and float.
Without explicit cast or function pointer assignment, compilers cannot
determine which function address is used in the given context.

  • b3/B3LowerMacrosAfterOptimizations.cpp:
10:04 AM Changeset in webkit [198340] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Tools

Merge r197241 - [GTK] Fix incorrect cast

Unreviewed.

  • MiniBrowser/gtk/main.c:

(createBrowserWindow):

10:03 AM Changeset in webkit [198339] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Tools

Merge r197719 - Update perf bot configuration for Animometer
​https://bugs.webkit.org/show_bug.cgi?id=155134

Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/benchmark_runner/data/patches/Animometer.patch: Refactor the patch

to work with the latest version of the harness.

  • Scripts/webkitpy/benchmark_runner/data/plans/animometer.plan: Bump up the timeout,

and use the latest version of the harness.

10:03 AM Changeset in webkit [198338] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Tools

Merge r197615 - [GTK] Fix logging details after r197505 (Run the run-benchmark script on the performance bot.)
​https://bugs.webkit.org/show_bug.cgi?id=154595

Unreviewed.

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py:

(start): Use logging.exception when a test fails in order to get the details about the error.

10:03 AM Changeset in webkit [198337] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.12/Tools

Merge r197505 - [GTK] Run the run-benchmark script on the performance bot.
​https://bugs.webkit.org/show_bug.cgi?id=154595

Reviewed by Carlos Garcia Campos.

  • BuildSlaveSupport/build.webkit.org-config/master.cfg: Add new RunBenchmarkTests step on the perf bots (only for the GTK+ port at this moment).

(RunBenchmarkTests):
(RunBenchmarkTests.start):
(RunBenchmarkTests.getText):
(RunBenchmarkTests.getText2):
(BuildAndPerfTestFactory.init):
(DownloadAndPerfTestFactory.init):

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Add new test for RunBenchmarkTests and update expected steps of GTK+ perf bot.

(RunBenchmarkTest):
(RunBenchmarkTest.assertResults):
(RunBenchmarkTest.test_success):
(RunBenchmarkTest.test_tests_failed):

  • Scripts/webkitpy/benchmark_runner/benchmark_runner.py: Log both the current iteration as also the total iterations for the current benchmark/plan.

(BenchmarkRunner._run_benchmark):

  • Scripts/webkitpy/benchmark_runner/browser_driver/gtk_minibrowser_driver.py: Use python logging also for errors.

(GTKMiniBrowserDriver.close_browsers):

  • Scripts/webkitpy/benchmark_runner/run_benchmark.py: Implement support for running all available benchmark plans.

(parse_args):
(start):
(main):

10:02 AM Changeset in webkit [198336] by Carlos Garcia Campos
  • 7 edits
    2 adds in releases/WebKitGTK/webkit-2.12/Tools

Merge r196979 - [GTK] Allow to run the WebKitGTK+ MiniBrowser with the run-benchmark script.
​https://bugs.webkit.org/show_bug.cgi?id=153993

Reviewed by Carlos Garcia Campos.

  • MiniBrowser/gtk/main.c:

(createBrowserWindow): Support --geometry argument for MiniBrowser.
We use this on the gtk_minibrowser_driver script to start the MiniBrowser maximized.

  • Scripts/webkitpy/benchmark_runner/browser_driver/init.py: Fix loading of subclasses:

The base class has to be loaded first, otherwise any subclase referencing it will give import error.
In OSX the ordering of os.listdir() causes the base class (browser_driver.py) to be first on the list, but not on Linux.
By specifiying the name of the base class file, we ensure it is always loaded first on any system despite the ordering of listdir.

  • Scripts/webkitpy/benchmark_runner/browser_driver/browser_driver_factory.py:

(BrowserDriverFactory.create):

  • Scripts/webkitpy/benchmark_runner/browser_driver/gtk_browser_driver.py: Added.

(GTKBrowserDriver):
(GTKBrowserDriver.prepare_env):
(GTKBrowserDriver.restore_env):
(GTKBrowserDriver.close_browsers):
(GTKBrowserDriver._launch_process):
(GTKBrowserDriver._terminate_processes):
(GTKBrowserDriver._screen_size):

  • Scripts/webkitpy/benchmark_runner/browser_driver/gtk_minibrowser_driver.py: Added.

(GTKMiniBrowserDriver):
(GTKMiniBrowserDriver.prepare_env):
(GTKMiniBrowserDriver.launch_url):
(GTKMiniBrowserDriver.close_browsers):

  • Scripts/webkitpy/benchmark_runner/http_server_driver/init.py: Fix loading of subclasses. See description above.
  • Scripts/webkitpy/benchmark_runner/http_server_driver/simple_http_server_driver.py:

(SimpleHTTPServerDriver):
(SimpleHTTPServerDriver.kill_server): Check if the server is still running before trying to terminate it.
Usually the server ends gracefully (no need to terminate it), so this was causing ugly errors on the log.

  • Scripts/webkitpy/benchmark_runner/utils.py: Fix loading of subclasses. See description above.

(load_subclasses):

10:02 AM Changeset in webkit [198335] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

DataURLDecoder::DecodingResultDispatcher may get deleted outside main thread
​https://bugs.webkit.org/show_bug.cgi?id=155584
rdar://problem/24492104

Reviewed by Chris Dumez.

This is unsafe as it owns strings and other types that are only safe to delete in the main thread.

  • platform/network/DataURLDecoder.cpp:

(WebCore::DataURLDecoder::DecodingResultDispatcher::dispatch):

The problem is that this was a refcounted type. This created a race. If the timer fired before dispatch()
was exited the implicit deref here would trigger the deletion in the dispatching thread.

Fix by getting rid of the unnecessary refcounting. Timer firing will now delete the instance explicitly.

(WebCore::DataURLDecoder::DecodingResultDispatcher::startTimer):
(WebCore::DataURLDecoder::DecodingResultDispatcher::timerFired):

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

Unreviewed, rolling out r198201.
​https://bugs.webkit.org/show_bug.cgi?id=155585

That was not the proper solution (Requested by KaL on
#webkit).

Reverted changeset:

"REGRESSION (r197724): [GTK] Web Inspector: Images being
blocked by CSP 2.0"
​https://bugs.webkit.org/show_bug.cgi?id=155432
​http://trac.webkit.org/changeset/198201

9:38 AM Changeset in webkit [198333] by Chris Fleizach
  • 11 edits
    2 adds in trunk

AX: Implement AutoFill Available attribute for a text field
​https://bugs.webkit.org/show_bug.cgi?id=155567

Reviewed by Darin Adler.

Source/WebCore:

Expose the auto fill buttons to the AX hierarchy.
Add an attribute for the textfield to inform when the auto fill button is available.

Test: accessibility/auto-fill-types.html

  • English.lproj/Localizable.strings:
  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::element):
(WebCore::AccessibilityObject::isValueAutofillAvailable):
(WebCore::AccessibilityObject::isValueAutofilled):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::passwordFieldValue):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::addTextFieldChildren):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

  • html/TextFieldInputType.cpp:

(WebCore::limitLength):
(WebCore::autoFillButtonTypeToAccessibilityLabel):
(WebCore::autoFillButtonTypeToAutoFillButtonPseudoClassName):
(WebCore::TextFieldInputType::createAutoFillButton):
(WebCore::TextFieldInputType::updateAutoFillButton):

  • platform/LocalizedStrings.cpp:

(WebCore::AXListItemActionVerb):
(WebCore::AXAutoFillCredentialsLabel):
(WebCore::AXAutoFillContactsLabel):
(WebCore::AXARIAContentGroupText):

  • platform/LocalizedStrings.h:

LayoutTests:

  • accessibility/auto-fill-types-expected.txt: Added.
  • accessibility/auto-fill-types.html: Added.
7:58 AM Changeset in webkit [198332] by mark.lam@apple.com
  • 16 edits
    3 adds in trunk

Method names should not appear in the lexical scope of the method's body.
​https://bugs.webkit.org/show_bug.cgi?id=155568

Reviewed by Saam Barati.

Source/JavaScriptCore:

Consider this scenario:

var f = "foo";
var result = ({

f() {

return f; f should be the string "foo", not this method f.

}

}).f();
result === "foo"; Should be true.

The reason this is not current working is because the parser does not yet
distinguish between FunctionExpressions and MethodDefinitions. The ES6 spec
explicitly distinguishes between the 2, and we should do the same.

This patch changes all methods (and getters and setters which are also methods)
to have a FunctionMode of MethodDefinition (instead of FunctionExpression).
functionNameIsInScope() is responsible for determining whether a function's name
should be in its scope or not. It already returns false for any function
whose FunctionMode is not FunctionExpression. Giving methods the MethodDefinition
FunctionMode gets us the correct behavior ES6 expects.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

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

(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewMethodDefinition):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ArrowFuncExprNode::emitBytecode):
(JSC::MethodDefinitionNode::emitBytecode):
(JSC::YieldExprNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionExpr):
(JSC::ASTBuilder::createMethodDefinition):
(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createGetterOrSetterProperty):
(JSC::ASTBuilder::createArguments):

  • parser/NodeConstructors.h:

(JSC::FunctionParameters::FunctionParameters):
(JSC::BaseFuncExprNode::BaseFuncExprNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::FuncDeclNode::FuncDeclNode):
(JSC::ArrowFuncExprNode::ArrowFuncExprNode):
(JSC::MethodDefinitionNode::MethodDefinitionNode):
(JSC::YieldExprNode::YieldExprNode):

  • parser/Nodes.h:

(JSC::BaseFuncExprNode::metadata):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parsePropertyMethod):

  • parser/ParserModes.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionExpr):
(JSC::SyntaxChecker::createFunctionMetadata):
(JSC::SyntaxChecker::createArrowFunctionExpr):
(JSC::SyntaxChecker::createMethodDefinition):
(JSC::SyntaxChecker::setFunctionNameStart):
(JSC::SyntaxChecker::createArguments):

  • tests/es6.yaml:

LayoutTests:

  • inspector/model/scope-chain-node-expected.txt:
  • rebased expected result.
  • js/script-tests/function-toString-vs-name.js:
  • fixed a bug in the shouldBe() function.
  • js/methods-names-should-not-be-in-lexical-scope-expected.txt: Added.
  • js/methods-names-should-not-be-in-lexical-scope.html: Added.
  • js/script-tests/methods-names-should-not-be-in-lexical-scope.js: Added.
  • test all variations of methods.
6:57 AM Changeset in webkit [198331] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

REGRESSION(r197380): Build fails with new GCC and Clang
​https://bugs.webkit.org/show_bug.cgi?id=155044

Reviewed by Michael Catanzaro.

In C++, std math functions ceil and floor are overloaded for double and float.
Without explicit cast or function pointer assignment, compilers cannot
determine which function address is used in the given context.

  • b3/B3LowerMacrosAfterOptimizations.cpp:
6:17 AM Changeset in webkit [198330] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[Mac][cmake] Unreviewed speculative buildfix after r198179. Just for fun.

  • PlatformMac.cmake:
6:14 AM Changeset in webkit [198329] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[Mac][cmake] Unreviewed buildfix after r198070. Just for fun.

  • PlatformMac.cmake:
5:59 AM Changeset in webkit [198328] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit/mac

[cmake][Mac] Unreviewed speculative buildfix after r198088. Just for fun.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

5:28 AM Changeset in webkit [198327] by Csaba Osztrogonác
  • 13 edits in trunk

Unreviewed, line ending fixes.

Source/ThirdParty:

  • gtest/codegear/gtest_all.cc:
  • gtest/codegear/gtest_link.cc:

LayoutTests:

  • css2.1/20110323/support/at-import-001.css:
  • css2.1/20110323/support/at-import-002.css:
  • css2.1/20110323/support/at-import-004.css:
  • css2.1/20110323/support/at-import-005.css:
  • css2.1/20110323/support/at-import-006.css:
  • css2.1/20110323/support/at-import-007.css:
  • css2.1/20110323/support/eof-green.css:
  • storage/indexeddb/set_version_blocked.html:
  • storage/indexeddb/transaction-read-only.html:
4:25 AM Changeset in webkit [198326] by youenn.fablet@crf.canon.fr
  • 8 edits in trunk

[Fetch API] response-consume.html is crashing on Mac WK1 Debug builds
​https://bugs.webkit.org/show_bug.cgi?id=155490

Reviewed by Darin Adler.

Source/WebCore:

Covered by existing tests.

Ensured to lock state before calling JSC:JSONParse.
Adding fulfillPromiseWithJSON routine to handle it.
Applied it to FetchBody.

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::json):
(WebCore::FetchBody::loadedAsText):
(WebCore::FetchBody::resolveAsJSON): Deleted.

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

(WebCore::FetchBodyOwner::loadedBlobAsText):

  • bindings/js/JSDOMPromise.cpp:

(WebCore::parseAsJSON):
(WebCore::fulfillPromiseWithJSON):

  • bindings/js/JSDOMPromise.h:

LayoutTests:

3:52 AM Changeset in webkit [198325] by adam.bergkvist@ericsson.com
  • 13 edits in trunk

WebRTC: Update RTCIceCandidate
​https://bugs.webkit.org/show_bug.cgi?id=155535

Reviewed by Eric Carlson.

Source/WebCore:

Update the RTCIceCandidate constructor procedure to match the WebRTC 1.0 specification [1].
In short: The "candidate" init dictionary member is required. At least one of the dictionary
members "sdpMid" and "sdpMLine" needs to be present; the corresponding attribute of the
other, is initialized to null.

[1] ​https://w3c.github.io/webrtc-pc/archives/20160215/webrtc.html

Tests: Updated fast/mediastream/RTCIceCandidate.htm

  • Modules/mediastream/RTCIceCandidate.cpp:

(WebCore::RTCIceCandidate::create):
(WebCore::RTCIceCandidate::RTCIceCandidate):

  • Modules/mediastream/RTCIceCandidate.h:

(WebCore::RTCIceCandidate::sdpMLineIndex):
(WebCore::RTCIceCandidate::setSdpMLineIndex):

  • Modules/mediastream/RTCIceCandidate.idl:
  • bindings/js/JSRTCIceCandidateCustom.cpp:

(WebCore::JSRTCIceCandidate::sdpMid):
(WebCore::JSRTCIceCandidate::sdpMLineIndex):

LayoutTests:

RTCIceCandidate.html is updated to test the new construction behavior and the nullable
attributes. The remaining updated tests simply construct an RTCIceCandidate to be used for
test purposes.

  • fast/mediastream/RTCIceCandidate-expected.txt:
  • fast/mediastream/RTCIceCandidate.html:
  • fast/mediastream/RTCPeerConnection-closed-state.html:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params-expected.txt:
  • fast/mediastream/RTCPeerConnection-overloaded-operations-params.html:
  • fast/mediastream/RTCPeerConnection-overloaded-operations.html:
2:46 AM Changeset in webkit [198324] by gskachkov@gmail.com
  • 12 edits
    1 add in trunk

Invoking super()/super inside of the eval should not lead to SyntaxError
​https://bugs.webkit.org/show_bug.cgi?id=153864

Reviewed by Saam Barati.

Source/JavaScriptCore:

Added support of the invoking super/super() inside of the eval within class.
Also support cases when eval is invoked in constructor, class method directly
or via arrow function. Access to the new.target in eval is not part of this patch
and will be implemented in ​https://bugs.webkit.org/show_bug.cgi?id=155545

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitLoadArrowFunctionLexicalEnvironment):
(JSC::BytecodeGenerator::isThisUsedInInnerArrowFunction):
(JSC::BytecodeGenerator::isNewTargetUsedInInnerArrowFunction):
(JSC::BytecodeGenerator::isSuperUsedInInnerArrowFunction):
(JSC::BytecodeGenerator::isSuperCallUsedInInnerArrowFunction):
(JSC::BytecodeGenerator::emitPutThisToArrowFunctionContextScope):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseMemberExpression):

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::isEvalContext):
(JSC::Scope::setIsEvalContext):
(JSC::parse):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):

  • tests/stress/arrowfunction-lexical-bind-supercall-4.js:
  • tests/stress/arrowfunction-lexical-bind-superproperty.js:
  • tests/stress/class-syntax-super-in-eval.js: Added.
  • tests/stress/generator-with-super.js:

LayoutTests:

  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-super.js:
12:46 AM Changeset in webkit [198323] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.10.9

WebKitGTK+ 2.10.9

12:45 AM Changeset in webkit [198322] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.10.9 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.10.9
12:44 AM Changeset in webkit [198321] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebKit2

Merge r196467 - [GTK] Allow applications to disable Accelerated Compositing mode.
​https://bugs.webkit.org/show_bug.cgi?id=154147

Reviewed by Carlos Garcia Campos.

  • UIProcess/gtk/WebPreferencesGtk.cpp:

(WebKit::WebPreferences::platformInitializeStore): if the environment
variable WEBKIT_DISABLE_COMPOSITING_MODE is defined, then disable AC.

12:44 AM Changeset in webkit [198320] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.10/Source

Merge r194518 - WebKit fails to build with musl libc library
​https://bugs.webkit.org/show_bug.cgi?id=152625

Patch by Khem Raj <​raj.khem@gmail.com> on 2016-01-03
Source/JavaScriptCore:

Reviewed by Daniel Bates.

Qualify isnan() calls with std namespace.

  • runtime/Options.cpp:

(Option::operator==): Add std namespace qualifier.

Source/WebCore:

Reviewed by Daniel Bates and Alexey Proskuryakov.

malloc_trim is glibc specific API so guard it with GLIBC.

  • platform/linux/MemoryPressureHandlerLinux.cpp:

(MemoryPressureHandler::platformReleaseMemory): Guard malloc_trim()
call with GLIBC_.

Source/WTF:

Reviewed by Daniel Bates.

Disable ctype.h check for musl C library on Linux.
Enable backtrace on Linux when using glibc.
We don't have backtrace() implemented on non-glibc system
C libraries on Linux e.g. musl.

  • wtf/DisallowCType.h: Check for GLIBC.
  • wtf/Assertions.cpp:

(WTFGetBacktrace): Check if libc is glibc.

12:43 AM Changeset in webkit [198319] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.10/Source

Revert "Merge r196803 - [GTK] Limit the number of tiles according to the visible area"

This reverts commit f4b75bd5443ace0a438a43f9b73ff6de303d3858.

12:05 AM Changeset in webkit [198318] by aestes@apple.com
  • 4 edits in trunk/Source

[Mac] Enable Content-Disposition: attachment sandbox
​https://bugs.webkit.org/show_bug.cgi?id=155578
<rdar://problem/21886326>

Reviewed by Dan Bernstein.

Covered by the existing set of attachment sandbox tests, which have always been run on Mac.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit2:

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

Mar 16, 2016:

11:52 PM WebKitGTK/2.10.x edited by Carlos Garcia Campos
(diff)
9:42 PM Changeset in webkit [198317] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Uncaught Exception: SyntaxError: Invalid regular expression: \ at end of pattern
​https://bugs.webkit.org/show_bug.cgi?id=155556
<rdar://problem/25200058>

Reviewed by Timothy Hatcher.

Use simpleGlobStringToRegExp, which returns a valid regular expression
for strings with trailing backslashes, and also provides globbing.
String.escapeForRegExp returns a JS string ending in "
", which isn't
a valid regular expression.

  • UserInterface/Views/OpenResourceDialog.js:

(WebInspector.OpenResourceDialog):
(WebInspector.OpenResourceDialog.prototype._handleMousedownEvent):
Fixed typo.

(WebInspector.OpenResourceDialog.prototype._updateFilter):
Switch to simpleGlobStringToRegExp.

8:36 PM Changeset in webkit [198316] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

SVG tear offs should return a const reference if possible
​https://bugs.webkit.org/show_bug.cgi?id=153214

Patch by Nikos Andronikos <​nikos.andronikos-webkit@cisra.canon.com.au> on 2016-03-16
Reviewed by Alex Christensen.

A smaller change than expected because the returned reference is being copied into a value in additional locations that baseVal and animVal are used.

No new tests as there is no change in behaviour.

  • svg/properties/SVGAnimatedEnumerationPropertyTearOff.h:
  • svg/properties/SVGAnimatedStaticPropertyTearOff.h:

(WebCore::SVGAnimatedStaticPropertyTearOff::baseVal):
(WebCore::SVGAnimatedStaticPropertyTearOff::animVal):

7:49 PM Changeset in webkit [198315] by jonlee@apple.com
  • 3 edits
    4 adds in trunk/PerformanceTests

Add a new benchmark test
​https://bugs.webkit.org/show_bug.cgi?id=155570

Reviewed by Simon Fraser.

New Leaves test includes various image sizes and opacity.

  • Animometer/resources/debug-runner/tests.js: Add it to the HTML test suite.
  • Animometer/tests/dom/leaves.html: Added.
  • Animometer/tests/dom/resources/leaves.js: Added. Override the

(Particle.call.reset): Uses a range of sizes, and opacity.
(Particle.call.animate): Opacity goes up then down. When it hits 0, reset the particle.
(Particle.call.move): Set transform and opacity.

  • Animometer/tests/master/resources/leaves.js: Get rid of the closure so that it

can be used in this test. Update the relative path so that it works in both the master
and dom test suite.

7:18 PM Changeset in webkit [198314] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, partial roll out of r197254.
<rdar://problem/25078552>

It caused a ~1.1% PLT regression on iOS.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::commitProvisionalLoad): Deleted.

6:48 PM Changeset in webkit [198313] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

6:45 PM Changeset in webkit [198312] by matthew_hanson@apple.com
  • 1 copy in tags/Safari-601.1.46.120

New Tag.

5:56 PM Changeset in webkit [198311] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

Recognize mailto and tel url as data detector links.
​https://bugs.webkit.org/show_bug.cgi?id=155569
rdar://problem/24836185

Reviewed by Sam Weinig.

When we check if the element is a data detector link,
we should return true also for URLs with mailto: and tel: scheme.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::isDataDetectorLink):

5:13 PM Changeset in webkit [198310] by Chris Dumez
  • 4 edits in trunk/Tools

Unreviewed, rolling out r198187.
​https://bugs.webkit.org/show_bug.cgi?id=155564

Potentially break testing on iOS (Requested by Guest23 on
#webkit).

Reverted changeset:

"Add twisted-15.5.0 module to
webkitpy.thirdparty.autoinstalled."
​https://bugs.webkit.org/show_bug.cgi?id=154667
​http://trac.webkit.org/changeset/198187

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-16

5:07 PM Changeset in webkit [198309] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Subpixel rendering: Directly composited image layers need pixelsnapping.
​https://bugs.webkit.org/show_bug.cgi?id=155558

Reviewed by Simon Fraser.

In order to match non-composited image size/position, we need to pixelsnap both the contents and the clipping
layer bounds for directly composited images.

Source/WebCore:

Test: fast/images/hidpi-directly-composited-image-on-subpixel-position.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::resetContentsRect):
(WebCore::RenderLayerBacking::updateChildClippingStrategy):
(WebCore::RenderLayerBacking::updateImageContents):

LayoutTests:

  • fast/images/hidpi-directly-composited-image-on-subpixel-position-expected.html: Added.
  • fast/images/hidpi-directly-composited-image-on-subpixel-position.html: Added.
4:37 PM Changeset in webkit [198308] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping mathml/very-large-stretchy-operators.html on ios-simulator debug
​https://bugs.webkit.org/show_bug.cgi?id=155565

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
4:32 PM Changeset in webkit [198307] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Marking compositing/visible-rect/animated-from-none.html as flaky on ios-sim-wk2, failing on ios-sim-wk1
​https://bugs.webkit.org/show_bug.cgi?id=155495

Unreviewed test gardening.

  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
4:25 PM Changeset in webkit [198306] by Beth Dakin
  • 28 edits in trunk/Source

Provide NSSpellChecker spellChecking methods with the current insertion point
​https://bugs.webkit.org/show_bug.cgi?id=155532
-and corresponding-
rdar://problem/24066952

Reviewed by Simon Fraser.

Source/WebCore:

Pass the Frame’s selection to a handful of spelling checking methods that
call into WebKit/WebKit2 to ultimately call into NSSpellChecker.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::hasMisspelling):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(AXAttributeStringSetSpelling):

  • editing/AlternativeTextController.cpp:

(WebCore::AlternativeTextController::timerFired):

  • editing/Editor.cpp:

(WebCore::Editor::guessesForMisspelledWord):
(WebCore::Editor::markAllMisspellingsAndBadGrammarInRanges):

  • editing/SpellChecker.cpp:

(WebCore::SpellChecker::invokeRequest):
(WebCore::SpellChecker::enqueueRequest):

  • editing/TextCheckingHelper.cpp:

(WebCore::TextCheckingHelper::findFirstMisspellingOrBadGrammar):
(WebCore::TextCheckingHelper::guessesForMisspelledOrUngrammaticalRange):
(WebCore::TextCheckingHelper::unifiedTextCheckerEnabled):
(WebCore::checkTextOfParagraph):

  • editing/TextCheckingHelper.h:
  • loader/EmptyClients.cpp:

(WebCore::EmptyFrameLoaderClient::createNetworkingContext):
(WebCore::EmptyTextCheckerClient::requestCheckingOfString):

  • loader/EmptyClients.h:
  • platform/text/TextCheckerClient.h:

(WebCore::TextCheckerClient::~TextCheckerClient):

The key needed to include the insertion point.

  • platform/spi/mac/NSSpellCheckerSPI.h:

Source/WebKit/mac:

Extract the insertion point from the VisibleSelection that WebCore has
passed.

  • WebCoreSupport/WebEditorClient.h:

(WebEditorClient::getGuessesForWord):

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::checkTextOfParagraph):
(insertionPointFromCurrentSelection):
(WebEditorClient::getGuessesForWord):
(WebEditorClient::requestCheckingOfString):

Source/WebKit2:

Pass the insertionPoint to the UIProcess

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

(WebKit::WebPageProxy::checkTextOfParagraph):
(WebKit::WebPageProxy::getGuessesForWord):
(WebKit::WebPageProxy::requestCheckingOfString):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/efl/TextCheckerEfl.cpp:

(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::requestCheckingOfString):

  • UIProcess/gtk/TextCheckerGtk.cpp:

(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::requestCheckingOfString):
(WebKit::TextChecker::checkTextOfParagraph):

  • UIProcess/ios/TextCheckerIOS.mm:

(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::requestCheckingOfString):

  • UIProcess/mac/TextCheckerMac.mm:

(WebKit::TextChecker::checkTextOfParagraph):
(WebKit::TextChecker::getGuessesForWord):
(WebKit::TextChecker::ignoreWord):
(WebKit::TextChecker::requestCheckingOfString):

Extract the insertion point from the VisibleSelection that WebCore has
passed.

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::insertionPointFromCurrentSelection):
(WebKit::WebEditorClient::checkTextOfParagraph):
(WebKit::WebEditorClient::getGuessesForWord):
(WebKit::WebEditorClient::requestCheckingOfString):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
3:10 PM Changeset in webkit [198305] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix assertion failure on drive.google.com after r196052
​https://bugs.webkit.org/show_bug.cgi?id=155562

Reviewed by Jer Noble.

  • rendering/RenderGeometryMap.cpp:

(WebCore::RenderGeometryMap::mapToContainer):
Change float equality check to areEssentiallyEqual.
This assertion was failing because rendererMappedResult was (944.335693, 232.047409)
but result was (944.335693, 232.047394). They differ by (0, 0.000015).

3:06 PM Changeset in webkit [198304] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style: should warn about blank lines after #include "config.h" in TestWebKitAPI
<​http://webkit.org/b/155445>

Reviewed by Darin Adler.

  • Scripts/webkitpy/style/checker.py:

(_PATH_RULES_SPECIFIER): Do not ignore "build/include*" checks
on TestWebKitAPI since this project uses a config.h header as of
r95188. Also remove references to WebKitAPITest, which ceased
to exist in r95944.

  • Scripts/webkitpy/style/checker_unittest.py:

(GlobalVariablesTest.test_path_rules_specifier): Add tests.
Remove reference to WebKitAPITest project.

2:49 PM Changeset in webkit [198303] by n_wang@apple.com
  • 3 edits
    2 adds in trunk

AX: Expose aria-current status to children
​https://bugs.webkit.org/show_bug.cgi?id=155469

Reviewed by Chris Fleizach.

Source/WebCore:

Added aria-current to the global ARIA attributes list.

Test: accessibility/aria-current-global-attribute.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsARIAAttributes):

LayoutTests:

  • accessibility/aria-current-global-attribute-expected.txt: Added.
  • accessibility/aria-current-global-attribute.html: Added.
2:31 PM Changeset in webkit [198302] by timothy_horton@apple.com
  • 6 edits in trunk

[mac] Printing test snapshots are upside-down after r198242
​https://bugs.webkit.org/show_bug.cgi?id=155543

Reviewed by Simon Fraser.

Source/WebCore:

  • page/PrintContext.cpp:

(WebCore::PrintContext::spoolAllPagesWithBoundaries):
Stop PLATFORM(COCOA)-conditionally flipping here. Just paint.
This function is only used by the test runners so this doesn't have a
huge impact on anything else.

Tools:

  • DumpRenderTree/mac/PixelDumpSupportMac.mm:

(createPagedBitmapContext):
Flip printing snapshots in DRT so that everything is right-side-up.

LayoutTests:

Re-un-skip these tests.

1:58 PM Changeset in webkit [198301] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Update WebKit Feature Status page to include the status of Content Security Policy Level 2 and Level 3

  • features.json:
1:44 PM Changeset in webkit [198300] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge r188574. rdar://problem/25070230

1:44 PM Changeset in webkit [198299] by matthew_hanson@apple.com
  • 18 edits
    12 deletes in branches/safari-601-branch

Merge r188566. rdar://problem/25070230

1:17 PM Changeset in webkit [198298] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r192184): CleanMyDrive 2's tutorial window is blank
​https://bugs.webkit.org/show_bug.cgi?id=155550
<rdar://problem/24250689>

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setDrawsTransparentBackground:]):
The app is using this SPI via key-value coding, so just keeping the implementation
is sufficient to make AppKit stop throwing an undefined key exception.
Log once that this is deprecated (... it's also SPI) and then forward to setDrawsBackground.

1:13 PM Changeset in webkit [198297] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/controller/runtime-controller.html as flaky on mac
​https://bugs.webkit.org/show_bug.cgi?id=154688

Unreviewed test gardening.

  • platform/mac/TestExpectations:
1:12 PM Changeset in webkit [198296] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

ASSERTION FAILED: !edge->isPhantomAllocation() in regress/script-tests/sink-huge-activation.js.ftl-eager in debug mode
​https://bugs.webkit.org/show_bug.cgi?id=153805

Reviewed by Mark Lam.

The object allocation sinking phase uses InferredValue::isStillValid() in the opposite
way from most clients: it will do an *extra* optimization if it returns false. The
phase will first compute sink candidates and then it will compute materialization
points. If something is a sink candidate then it is not a materialization point. A
NewFunction node may appear as not being a sink candidate during the first pass, so it's
not added to the set of things that will turn into PhantomNewFunction. But on the second
pass where we add materializations, we check isStillValid() again. Now this may become
false, so that second pass thinks that NewFunction is a sink candidate (even though it's
not in the sink candidates set) and so is not a materialization point.

This manifests as the NewFunction referring to a PhantomCreateActivation or whatever.

The solution is to have the phase cache results of calls to isStillValid(). It's OK if
we just remember the result of the first call and assume that it's not a sink candidate.
That's the worst that can happen.

No new tests since this is a super hard race and sink-huge-activation seemed to already
be catching it.

  • dfg/DFGObjectAllocationSinkingPhase.cpp:
1:09 PM Changeset in webkit [198295] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Mark http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-allow.html as flaky
​https://bugs.webkit.org/show_bug.cgi?id=94458

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
12:49 PM Changeset in webkit [198294] by sbarati@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Make Array.prototype.reverse spec compatible.
​https://bugs.webkit.org/show_bug.cgi?id=155528

Reviewed by Michael Saboff.

This patch make Array.prototype.reverse spec compatible.
Before, we weren't performing a HasProperty of each index
before performing a Get on that index. We now do that on
the slow path.

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncReverse):

  • tests/stress/array-reverse-proxy.js: Added.

(assert):
(test):
(shallowCopy):
(shallowEqual):
(let.handler.get getSet):
(test.let.handler.get getSet):

12:47 PM Changeset in webkit [198293] by ap@apple.com
  • 2 edits in trunk/Tools

Update unit test for iOS debug queues.

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
12:46 PM Changeset in webkit [198292] by dbates@webkit.org
  • 20 edits
    1 move
    48 adds in trunk

<video> and <audio> elements do not obey Content Security Policy on redirect
​https://bugs.webkit.org/show_bug.cgi?id=155509
<rdar://problem/10234844>

Reviewed by Alex Christensen.

Source/WebCore:

Fixes an issue where the Content Security Policy of the page was not enforced
on redirects when loading a media subresource via an HTML video or HTML audio
element.

Tests: http/tests/security/contentSecurityPolicy/audio-redirect-allowed.html

http/tests/security/contentSecurityPolicy/audio-redirect-blocked.html
http/tests/security/contentSecurityPolicy/font-redirect-allowed.html
http/tests/security/contentSecurityPolicy/font-redirect-blocked.html
http/tests/security/contentSecurityPolicy/image-redirect-allowed.html
http/tests/security/contentSecurityPolicy/image-redirect-blocked.html
http/tests/security/contentSecurityPolicy/script-redirect-allowed.html
http/tests/security/contentSecurityPolicy/script-redirect-blocked.html
http/tests/security/contentSecurityPolicy/stylesheet-redirect-allowed.html
http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked.html
http/tests/security/contentSecurityPolicy/svg-font-redirect-allowed.html
http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked.html
http/tests/security/contentSecurityPolicy/svg-image-redirect-allowed.html
http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked.html
http/tests/security/contentSecurityPolicy/track-redirect-allowed.html
http/tests/security/contentSecurityPolicy/track-redirect-blocked.html
http/tests/security/contentSecurityPolicy/video-redirect-allowed.html
http/tests/security/contentSecurityPolicy/video-redirect-blocked.html
http/tests/security/contentSecurityPolicy/xsl-redirect-allowed.html
http/tests/security/contentSecurityPolicy/xsl-redirect-blocked.html

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourceContent): Treat media resources as raw resources just as we do currently.
(WebCore::InspectorPageAgent::cachedResourceType): Ditto.

  • loader/MediaResourceLoader.cpp:

(WebCore::MediaResourceLoader::requestResource): Modified to use CachedResourceLoader::requestMedia() instead
of CachedResourceLoader::requestRawResource() so that we can differentiate between a media resource and a raw
resource in CachedResourceLoader. Added FIXME comment to skip checking the Content Security Policy for loads
initiated by an element in a user agent shadow tree. See <​https://bugs.webkit.org/show_bug.cgi?id=155505> for
more details.

  • loader/ResourceLoadInfo.cpp:

(WebCore::toResourceType): Treat media resources as raw resources just as we do currently. Also, add cases for
CachedResource::LinkPrefetch and CachedResource::LinkSubresource (when ENABLE(LINK_PREFETCH) is enabled) and
remove the default statement to force a compile-time error when a new CachedResource enumerator is added and
the switch block in this function is not updated.

  • loader/SubresourceLoader.cpp:

(WebCore::logResourceLoaded): Ditto.

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::CachedRawResource): Substitute CachedResource::isMainOrMediaOrRawResource() for
CachedResource::isMainOrRawResource() as the latter was renamed to the former.

  • loader/cache/CachedRawResource.h:

(isType): Ditto.

  • loader/cache/CachedResource.cpp:

(WebCore::defaultPriorityForResourceType): Use priority ResourceLoadPriority::Medium for media resources just as
we do currently.

  • loader/cache/CachedResource.h:

(WebCore::CachedResource::isMainOrMediaOrRawResource): Formerly named isMainOrRawResource. Returns true if the type
of this resource is a main resource, media resource, or raw resource.
(WebCore::CachedResource::isMainOrRawResource): Deleted.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::createResource): Treat media resources as raw resources just as we do currently.
(WebCore::CachedResourceLoader::requestMedia): Added.
(WebCore::contentTypeFromResourceType): Consider media resources as MixedContentChecker::ContentType::Active
just as we do currently.
(WebCore::CachedResourceLoader::checkInsecureContent): Apply the mixed content policy to media resources
just as we do currently.
(WebCore::CachedResourceLoader::canRequest): Apply the Same Origin Policy to media resources just as we
do currently. Query the Content Security Policy of the page to determine if the media resource can be
requested.
(WebCore::CachedResourceLoader::determineRevalidationPolicy): Substitute CachedResource::isMainOrMediaOrRawResource()
for CachedResource::isMainOrRawResource() as the latter was renamed to the former.

  • loader/cache/CachedResourceLoader.h:
  • platform/graphics/avfoundation/objc/WebCoreAVFResourceLoader.mm:

(WebCore::WebCoreAVFResourceLoader::startLoading): Modified to use CachedResourceLoader::requestMedia() instead
of CachedResourceLoader::requestRawResource() so that we can differentiate between a media resource and a raw
resource in CachedResourceLoader. Added FIXME comment to skip checking the Content Security Policy for loads
initiated by an element in a user agent shadow tree. See <​https://bugs.webkit.org/show_bug.cgi?id=155505> for
more details. Additionally, simplified code that determined whether to request the media resource or error out
by coalescing two conditional expressions into one conditional on whether we have a loader and substituted
nullptr for 0.

Source/WebKit2:

Use 0ms as the maximum buffering time for media resource just as we do currently.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::maximumBufferingTime):

LayoutTests:

Add tests to ensure that the Content Security Policy is enforced on redirects when
loading a subresource, including a video or audio file.

  • http/tests/resources/redirect.php: Fix PHP "undefined index" warnings when either query

parameter code or refresh (or both) are not specified.

  • http/tests/security/contentSecurityPolicy/audio-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/audio-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/audio-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/font-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/font-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/font-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/image-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/resources/ABCFont.svg: Renamed from LayoutTests/http/tests/security/contentSecurityPolicy/userAgentShadowDOM/resources/ABCFont.svg.
  • http/tests/security/contentSecurityPolicy/resources/alert-fail.xsl: Added.
  • http/tests/security/contentSecurityPolicy/resources/alert-pass.xsl: Added.
  • http/tests/security/contentSecurityPolicy/resources/green-square.svg: Added.
  • http/tests/security/contentSecurityPolicy/resources/red-square.svg: Added.
  • http/tests/security/contentSecurityPolicy/resources/xsl-redirect-allowed.php: Added.
  • http/tests/security/contentSecurityPolicy/resources/xsl-redirect-blocked.php: Added.
  • http/tests/security/contentSecurityPolicy/script-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/script-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/stylesheet-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/svg-font-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/svg-image-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/track-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/track-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/track-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-svg-font.html:
  • http/tests/security/contentSecurityPolicy/video-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-redirect-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/xsl-redirect-allowed-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/xsl-redirect-allowed.html: Added.
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/xsl-redirect-blocked.html: Added.
  • platform/efl/TestExpectations: For now skip tests http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-{audio, video}.html

until we fix <​https://bugs.webkit.org/show_bug.cgi?id=155505>. We will also need to fix
<​https://bugs.webkit.org/show_bug.cgi?id=153866> before we can unskip test http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-video.html
As far as I can tell the functionality exercised by these tests is not being using by the EFL port.

  • platform/gtk/TestExpectations: For now skip tests http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-{audio, video}.html

until we fix <​https://bugs.webkit.org/show_bug.cgi?id=155505>. As far as I can tell the functionality
exercised by these tests is not being using by the GTK port.

  • platform/ios-simulator/http/tests/security/contentSecurityPolicy/audio-redirect-blocked-expected.txt: Added expected failure result as

AV Foundation is responsible for loading media on iOS. That is, WebCore is not responsible for loading media.

  • platform/ios-simulator/http/tests/security/contentSecurityPolicy/video-redirect-blocked-expected.txt: Ditto.
  • platform/mac/TestExpectations: For now skip tests http/tests/security/contentSecurityPolicy/userAgentShadowDOM/allow-{audio, video}.html

until we fix <​https://bugs.webkit.org/show_bug.cgi?id=155505>. The functionality exercised by these
tests is not used on OS X. Additionally, mark as Failure on Yosemite and ElCapitan the added tests
http/tests/security/contentSecurityPolicy/{video, audio}-redirect-blocked.html as we do not support
Content Security Policy for media redirects in these versions of OS X.

12:33 PM Changeset in webkit [198291] by Chris Dumez
  • 17 edits in trunk/Source

Unreviewed, rolling out r198235, r198240, r198241, and
r198252.

Causing crashes on ARM

Reverted changesets:

"Remove compile time define for SEPARATED_HEAP"
​https://bugs.webkit.org/show_bug.cgi?id=155508
​http://trac.webkit.org/changeset/198235

"Gardening: build fix after r198235."
​http://trac.webkit.org/changeset/198240

"Build fix."
​http://trac.webkit.org/changeset/198241

"Rename performJITMemcpy to something more inline with our
normal webkit function names"
​https://bugs.webkit.org/show_bug.cgi?id=155525
​http://trac.webkit.org/changeset/198252

12:03 PM Changeset in webkit [198290] by BJ Burg
  • 4 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r198257.
​https://bugs.webkit.org/show_bug.cgi?id=155553

This change is unnecessary, clients can instead compile the
file with ARC enabled (Requested by brrian on #webkit).

Reverted changeset:

"REGRESSION(r198077): generated Objective-C protocol object
getters leak their wrappers"
​https://bugs.webkit.org/show_bug.cgi?id=155523
​http://trac.webkit.org/changeset/198257

11:31 AM Changeset in webkit [198289] by jiewen_tan@apple.com
  • 22 edits
    2 adds in trunk

URL Parsing should signal failure for illegal IDN
​https://bugs.webkit.org/show_bug.cgi?id=154945
<rdar://problem/8014795>

Reviewed by Brent Fulgham.

Source/WebCore:

WebCore::URL will now invalidate URLs with illegal IDN. And functions inside WebCoreNSURLExtras.h
that deal with IDN mapping will now return nil to signal error.

Test: fast/url/invalid-idn.html

  • platform/URL.cpp:

(WebCore::isSchemeFirstChar):
(WebCore::URL::init):
(WebCore::appendEncodedHostname):
(WebCore::encodeHostnames):
(WebCore::encodeRelativeString):

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

(WebCore::mapHostNameWithRange):
(WebCore::hostNameNeedsDecodingWithRange):
(WebCore::hostNameNeedsEncodingWithRange):
(WebCore::decodeHostNameWithRange):
(WebCore::encodeHostNameWithRange):
(WebCore::decodeHostName):
(WebCore::encodeHostName):
(WebCore::collectRangesThatNeedMapping):
(WebCore::mapHostNames):
(WebCore::URLWithData):
(WebCore::dataWithUserTypedString):
(WebCore::URLWithUserTypedString):
(WebCore::URLWithUserTypedStringDeprecated):
(WebCore::userVisibleString):

Source/WebKit/ios:

  • Misc/WebNSStringExtrasIOS.m:

(-[NSString _web_possibleURLsForForUserTypedString:]):

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder _updateTitleForURL:]):

Source/WebKit/mac:

In this patch, we add new SPIs _webkit_URLWithUserTypedString, _webkit_decodeHostName and
_webkit_encodeHostName which will return nil while dealing with illegal IDN.

Old SPIs _web_URLWithUserTypedString, _web_decodeHostName and _web_encodeHostName are marked
deprecated as they ignore URL parsing failure.

  • History/WebHistoryItem.mm:

(-[WebHistoryItem initFromDictionaryRepresentation:]):

  • Misc/WebKitErrors.m:

(+[NSError _webKitErrorWithCode:failingURL:]):

  • Misc/WebNSFileManagerExtras.mm:

(-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]):

  • Misc/WebNSPasteboardExtras.mm:

(-[NSPasteboard _web_bestURL]):

  • Misc/WebNSURLExtras.h:
  • Misc/WebNSURLExtras.mm:

(+[NSURL _web_URLWithUserTypedString:]):
(+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]):
(+[NSURL _webkit_URLWithUserTypedString:]):
(-[NSString _web_decodeHostName]):
(-[NSString _web_encodeHostName]):
(-[NSString _webkit_decodeHostName]):
(-[NSString _webkit_encodeHostName]):

  • Panels/WebAuthenticationPanel.m:

(-[WebAuthenticationPanel setUpForChallenge:]):

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::canonicalizeURLString):

Tools:

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController fetch:]):

  • TestWebKitAPI/Tests/Cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

LayoutTests:

  • fast/url/host-expected.txt:
  • fast/url/idna2003-expected.txt:
  • fast/url/invalid-idn-expected.txt: Added.
  • fast/url/invalid-idn.html: Added.
11:16 AM Changeset in webkit [198288] by mark.lam@apple.com
  • 42 edits
    1 add in trunk

Add support for setting Function.name from computed properties.
​https://bugs.webkit.org/show_bug.cgi?id=155437

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

In JS code, we can have initialization of computed properties with function and
class objects e.g.

var o = {

[x]: function() {},
[y]: class {}

}

The ES6 spec states that the function and class in the example above (being
anonymous) should take on the value of x and y respectively as their names:

o[x].name; should be the "stringified" value of x.
o[y].name;
should be the "stringified" value of y.

To achieve this, we will now inject an op_set_function_name bytecode at property
initialization sites if:

  1. the property assigned value is a function or class, and
  2. the function and class is anonymous, and
  3. if property assigned value is a class, it doesn't have a static method that is statically named "name".

The op_set_function_name will result in JSFunction::setFunctionName() being
called on the target function / class before it is assigned to the property.
JSFunction::setFunctionName() will take care of:

  1. computing the name to use from the value of the computed property name e.g. x and y in the example above.

If the computed property name is not a symbol, then the function / class name
should be the toString() value of that computed property name.

If the computed property name is a symbol, then ...

  1. if the Symbol has a defined description (e.g. Symbol("foo")), then the function / class name should be "[<symbol description>]" e.g. "[foo]".
  2. if the Symbol has an undefined description (e.g. Symbol()), then the function / class name should be "".

Note: Symbol("") is not the same as Symbol(). The former has a defined
descriptor "", and hence, yields a function / class name of "[]". The latter
yields a function / class name of "".

  1. reifying the lazy name property with this function / class name.

op_set_function_name is named after the SetFunctionName internal function
in the ES6 spec that performs the above operation.

It is behaviorally correct to use op_set_function_name at every property
initialization site with computed property names. However, we choose to not
emit the op_set_function_name bytecode when we already know that it will do
nothing i.e. when the target function / class is proven to already have a name or
name property. This is done as an optimization to avoid unnecessary calls to
JSFunction::setFunctionName().

Note: we could further check if the class has a static method with a computed
name that is a constant string "name" and elide op_set_function_name there too.
However, we don't bother because this should be rare. JSFunction::setFunctionName()
will still do the right thing.

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

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitSetFunctionNameIfNeeded):
(JSC::BytecodeGenerator::emitCall):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::PropertyListNode::emitBytecode):
(JSC::PropertyListNode::emitPutConstantProperty):

  • 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/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileSetFunctionName):
(JSC::DFG::SpeculativeJIT::compileForwardVarargs):

  • dfg/DFGSpeculativeJIT.h:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileSetFunctionName):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_strcat):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emitSlow_op_to_primitive):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_strcat):

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::handleHostCall):

  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
  • parser/Nodes.cpp:

(JSC::FunctionNode::finishParsing):
(JSC::PropertyListNode::hasStaticallyNamedProperty):
(JSC::VariableEnvironmentNode::VariableEnvironmentNode):

  • parser/Nodes.h:
  • runtime/JSFunction.cpp:

(JSC::getCalculatedDisplayName):
(JSC::JSFunction::setFunctionName):
(JSC::JSFunction::reifyLength):
(JSC::JSFunction::reifyName):

  • runtime/JSFunction.h:
  • tests/es6.yaml:
  • tests/stress/computed-function-names.js: Added.

(toKeyString):
(toFuncName):
(shouldBe):
(return.propKey):

LayoutTests:

  • js/object-literal-computed-methods-expected.txt:
  • Exercise op_set_function_name at all tiers.
  • js/script-tests/function-toString-vs-name.js:
  • Added tests for computed properties.
  • js/script-tests/object-literal-computed-methods.js:
  • rebased results.
10:20 AM Changeset in webkit [198287] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking imported/blink/fast/multicol/dynamic/relayout-abspos-in-relpos-spanner.html as flaky on ios-sim
​https://bugs.webkit.org/show_bug.cgi?id=155339

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
10:17 AM Changeset in webkit [198286] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebCore

Merge r192054. rdar://problem/25152937

9:58 AM Changeset in webkit [198285] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping failing printing tests
​https://bugs.webkit.org/show_bug.cgi?id=155543

Unreviewed test gardening.

Three printing tests that rely on software snapshotting are failing after r198242 exposed
an underlying issue. Skipping these tests to get the bots back to green during investigation.

9:46 AM Changeset in webkit [198284] by Antti Koivisto
  • 5 edits
    2 adds in trunk

Don't invalidate style unnecessarily when setting inline style cssText
​https://bugs.webkit.org/show_bug.cgi?id=155541
rdar://problem/23318893

Reviewed by Simon Fraser.

Source/WebCore:

We currently invalidate style when cssText is set whether the style declaration changed or not.

Based on a patch by Simon.

Test: fast/css/style-invalidation-inline-csstext.html

  • css/PropertySetCSSStyleDeclaration.cpp:

(WebCore::PropertySetCSSStyleDeclaration::cssText):
(WebCore::PropertySetCSSStyleDeclaration::setCssText):

Invalidate only if the parsed style changed.

  • css/StyleProperties.cpp:

(WebCore::MutableStyleProperties::parseDeclaration):

Compare the original and new style after parsing, return result.

  • css/StyleProperties.h:

LayoutTests:

  • fast/css/style-invalidation-inline-csstext-expected.txt: Added.
  • fast/css/style-invalidation-inline-csstext.html: Added.
9:26 AM Changeset in webkit [198283] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/css/getPropertyValue-webkit-marquee.html after r198255
​https://bugs.webkit.org/show_bug.cgi?id=155544

Unreviewed test gardening.

  • fast/css/getPropertyValue-webkit-marquee-expected.txt:
8:35 AM Changeset in webkit [198282] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.11.92

WebKitGTK+ 2.11.92

8:31 AM Changeset in webkit [198281] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198127 - Enable GSS-Negotiate support in libsoup
​https://bugs.webkit.org/show_bug.cgi?id=155354

Patch by Tomas Popela <​tpopela@redhat.com> on 2016-03-14
Reviewed by Carlos Garcia Campos.

Enable the SOUP_TYPE_AUTH_NEGOTIATE feature if libsoup was compiled
with the GSS-Negotiate support.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):

8:16 AM Changeset in webkit [198280] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.11.92 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.11.92.
8:16 AM Changeset in webkit [198279] by Carlos Garcia Campos
  • 22 edits
    6 deletes in releases/WebKitGTK/webkit-2.12

Revert "Merge r197549 - DFG/FTL should inline accesses to RegExpObject::m_lastIndex"

This reverts commit 75a052408f9d2d6401972afb8a422f0e5979aeff.

8:15 AM Changeset in webkit [198278] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Revert "Merge r197622 - The most aggressive form of RegExpTest/RegExpExec should speculate more aggressively than just cell"

This reverts commit 782aaddfb605fb925d3de4cb1e7b562cc26821b7.

8:15 AM Changeset in webkit [198277] by Carlos Garcia Campos
  • 33 edits
    5 deletes in releases/WebKitGTK/webkit-2.12

Revert "Merge r197641 - RegExpMatchesArray doesn't know how to have a bad time"

This reverts commit 240414640dd08dd67d4866c3992f399cb1035bc1.

8:14 AM Changeset in webkit [198276] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Revert "Merge r197715 - RegExp.prototype.exec() should call into Yarr at most once"

This reverts commit 2731cf7e9df14edf11cba6984e4c8cd1b14e752b.

8:14 AM Changeset in webkit [198275] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Revert "Merge r197730 - Reduce the number of instructions needed to record the last regexp result"

This reverts commit 074b9a12367b04dd3cd70f9d7c73695f8184fbb6.

8:14 AM Changeset in webkit [198274] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Revert "Merge r197729 - createRegExpMatchesArray should allocate substrings more quickly"

This reverts commit 5127c006fe6f7fcb4a512376866bce75b83a1c27.

8:13 AM Changeset in webkit [198273] by Carlos Garcia Campos
  • 9 edits
    2 deletes in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Revert "Merge r197796 - Regexp matching should incur less call overhead"

This reverts commit 462dd3fe9ae1b6992bbf331c52e9d4d440298a16.

8:13 AM Changeset in webkit [198272] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198269 - REGRESSION(r195661): [GTK] very slow scrolling
​https://bugs.webkit.org/show_bug.cgi?id=155334

Reviewed by Sergio Villar Senin.

Fix smooth scrolling behaviour change after r195661.

  • platform/ScrollAnimationSmooth.cpp:

(WebCore::getAnimationParametersForGranularity): Fix a typo,
animationTime for pixel granularity should be 11 * tickTime.
(WebCore::ScrollAnimationSmooth::animateScroll): Previous code
reset all the data except the visibleLenght, so keep it in the
PerAxisData after the reset.

8:13 AM Changeset in webkit [198271] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.12/Source

Merge r198266 - Unreviewed, rolling out r196803.
​https://bugs.webkit.org/show_bug.cgi?id=155534

Introduced several rendering issues in popular websites
(Requested by KaL on #webkit).

Reverted changeset:

"[GTK] Limit the number of tiles according to the visible
area"
​https://bugs.webkit.org/show_bug.cgi?id=126122
​http://trac.webkit.org/changeset/196803

6:59 AM Changeset in webkit [198270] by Yusuke Suzuki
  • 29 edits
    1 copy
    3 adds in trunk

[ES6] Reflect.set with receiver
​https://bugs.webkit.org/show_bug.cgi?id=155294

Reviewed by Saam Barati.

Source/JavaScriptCore:

This patch introduces the receiver parameter support for Reflect.set.
Reflect.set can alter the receiver with arbitrary values.
Each property descriptor uses the receiver in Set.

1) In the accessor descriptor case, the receiver is used as |this| value for setter calls.
2) In the data descriptor case, the actual property will be set onto the receiver objects.

The current put operation does not support the receiver that is different from the base object.
In particular, (2) case is not supported.
The naive implementation adds one more GetOwnProperty for the receiver per Set (9.1.9.1-4-c [1]), and it is unacceptable.
To keep the fast path efficiently, we fall back to the slow but generic implementation (ordinarySetSlow)
only when the receiver is altered.

We need not to change any JIT part, because the JS code cannot alter the receiver without Reflect.set.
The property accesses generated by the JIT code always have the receiver that is the same to the base object.
ProxyObject can alter the receiver, but this situation has no problem because ProxyObject disables Inline Caching.
NOTE: Generating Inline Caching for JSProxy (that is used for the Window proxy) is already disabled before this change.

[1]: ​https://tc39.github.io/ecma262/#sec-ordinaryset

  • jsc.cpp:

(functionCreateProxy):

  • runtime/GenericArgumentsInlines.h:

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

  • runtime/JSArray.cpp:

(JSC::JSArray::put):

  • runtime/JSArrayBuffer.cpp:

(JSC::JSArrayBuffer::put):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::put):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::isThisValueAltered):

  • runtime/JSDataView.cpp:

(JSC::JSDataView::put):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::put):

  • runtime/JSGenericTypedArrayViewInlines.h:

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

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::put):

  • runtime/JSObject.cpp:

(JSC::ordinarySetSlow):
(JSC::JSObject::putInlineSlow):

  • runtime/JSObject.h:
  • runtime/JSObjectInlines.h:

(JSC::JSObject::putInline):

  • runtime/JSProxy.h:

(JSC::JSProxy::createStructure):

  • runtime/Lookup.h:

(JSC::putEntry):

  • runtime/PropertySlot.h:
  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::put):

  • runtime/PutPropertySlot.h:

(JSC::PutPropertySlot::PutPropertySlot):
(JSC::PutPropertySlot::isCacheablePut):
(JSC::PutPropertySlot::isCacheableSetter):
(JSC::PutPropertySlot::isCacheableCustom):
(JSC::PutPropertySlot::isCustomAccessor):
(JSC::PutPropertySlot::disableCaching):
(JSC::PutPropertySlot::isCacheable):

  • runtime/ReflectObject.cpp:

(JSC::reflectObjectSet):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):
(JSC::reject): Deleted.

  • runtime/StringObject.cpp:

(JSC::StringObject::put):

  • tests/es6.yaml:
  • tests/stress/ordinary-set-exceptions.js: Added.

(shouldBe):
(shouldThrow):
(shouldThrow.set get var):

  • tests/stress/proxy-set.js:
  • tests/stress/reflect-set-proxy-set.js: Copied from Source/JavaScriptCore/tests/stress/proxy-set.js.

(shouldBe):
(unreachable):
(assert):
(throw.new.Error.let.handler.set 45):
(throw.new.Error):
(let.target.set x):
(let.target.get x):
(set let):

  • tests/stress/reflect-set-receiver-proxy-set.js: Added.

(shouldBe):
(unreachable):
(assert):
(let.handler.set 45):
(catch):
(let.target.set x):
(let.target.get x):
(set let):

  • tests/stress/reflect-set-with-global-proxy.js: Added.

(shouldBe):
(unreachable):
(get shouldBe):
(set shouldBe):
(set test1):
(set test2):
(set test3):

  • tests/stress/reflect-set.js:

(shouldThrow):
(unreachable):
(get shouldBe):
(set shouldBe):
(receiverTestIndexed):
(set get Uint8Array):
(receiverCase): Deleted.
(proxyCase): Deleted.
(stringObjectCase.set get shouldBe): Deleted.
(regExpLastIndex): Deleted.

LayoutTests:

Currently, putDelegate (JSLocation is special case) and CustomIndexedSetter work as special setters.

  • js/dom/reflect-set-onto-dom-expected.txt:
  • js/dom/script-tests/reflect-set-onto-dom.js:
2:36 AM Changeset in webkit [198269] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

REGRESSION(r195661): [GTK] very slow scrolling
​https://bugs.webkit.org/show_bug.cgi?id=155334

Reviewed by Sergio Villar Senin.

Fix smooth scrolling behaviour change after r195661.

  • platform/ScrollAnimationSmooth.cpp:

(WebCore::getAnimationParametersForGranularity): Fix a typo,
animationTime for pixel granularity should be 11 * tickTime.
(WebCore::ScrollAnimationSmooth::animateScroll): Previous code
reset all the data except the visibleLenght, so keep it in the
PerAxisData after the reset.

12:18 AM Changeset in webkit [198268] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit/win

Unreviewed, rolling out r196951 and r197031.

Revert also WinCairo follow ups after r196803

Reverted changesets:

"[WinCairo] Compile fix."
​https://bugs.webkit.org/show_bug.cgi?id=154545
​http://trac.webkit.org/changeset/196951

"[WinCairo] Mark layer as non composited."
​https://bugs.webkit.org/show_bug.cgi?id=154640
​http://trac.webkit.org/changeset/197031

12:11 AM Changeset in webkit [198267] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit/win

Unreviewed, rolling out r197693.

197031

Reverted changeset:

"[WinCairo][AcceleratedCompositing] Rendering issues on
www.bbc.com."
​https://bugs.webkit.org/show_bug.cgi?id=154912
​http://trac.webkit.org/changeset/197693

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

Unreviewed, rolling out r196803.
​https://bugs.webkit.org/show_bug.cgi?id=155534

Introduced several rendering issues in popular websites
(Requested by KaL on #webkit).

Reverted changeset:

"[GTK] Limit the number of tiles according to the visible
area"
​https://bugs.webkit.org/show_bug.cgi?id=126122
​http://trac.webkit.org/changeset/196803

12:02 AM Changeset in webkit [198265] by rniwa@webkit.org
  • 11 edits
    2 adds in trunk/Websites/perf.webkit.org

Analysis task page should allow specifying commits that caused or fixed a regression or a progression
​https://bugs.webkit.org/show_bug.cgi?id=155529

Reviewed by Chris Dumez.

Added the capability to associate revisions that caused or fixed a progression or a regression for which
an analysis task was created. Added task_commits that stores this relationship and added the backend
support to retrieve this table in /api/analysis-tasks and an privileged API to update this table at
/privileged-api/associate-commit.

Also extracted a new component, MutableListView, out of AnalysisTaskPage to render and manipulate a list
of mutable items, and used it to render the list of associated bugs and commits. The view takes a list of
kinds (e.g. repositories or bug trackers), and accepts a pair of a kind and arbitrary text as a new item
value.

  • init-database.sql: Added task_commits table.
  • public/api/analysis-tasks.php:

(main):
(fetch_associated_data_for_tasks): Renamed from fetch_and_push_bugs_to_tasks now that it also fetches
the list of commits associated with each analysis task by calling CommitLogFetcher::fetch_for_tasks.
Also fixe the bug that we were not taking
(format_task): No longer sets 'category' since the computation of category now depends on the list of
commits associated with this analysis task which aren't available until fetch_associated_data_for_tasks.
(determine_category): Added. Categorize any analysis tasks with "fixes" commits as "closed" and "causes"
commits as "identified".

  • public/include/commit-log-fetcher.php:

(CommitLogFetcher::construct): Remove the unused instance variable.
(CommitLogFetcher::fetch_for_tasks): Added. Fetches all commits associated with a list of analysis tasks.
Assumes the caller (fetch_associated_data_for_tasks) had setup "fixes" and "causes" fields on each task.

  • public/privileged-api/associate-commit.php: Added. Updates task_commits table to associate or disassociate

a commit with an analysis task. When the specified analysis task and the specified commit are already
associated, we simply update the table instead of adding a duplicating entry or error. For dissociation,
the front-end specifies the commit ID.
(main): Added.

  • public/v3/index.html:
  • public/v3/components/mutable-list-view.js: Added. Used by the list associated bugs and commits.

(MutableListView): Added.
(MutableListView.prototype.setList): Added.
(MutableListView.prototype.setKindList): Added.
(MutableListView.prototype.setAddCallback): Added. This callback is invoked when the user tries to add
a new item to the list.
(MutableListView.prototype.render): Added.
(MutableListView.prototype._submitted): Added.
(MutableListView.cssTemplate):
(MutableListView.htmlTemplate):
(MutableListItem): Added. RemovalLink could be a hyperlink or a callback and gets involved when the user
tries to delete this item.
(MutableListItem.prototype.content):

  • public/v3/models/analysis-task.js:

(AnalysisTask): Added the support of the list of commits that fixed and caused changes.
(AnalysisTask.prototype.updateSingleton): Ditto.
(AnalysisTask.prototype.causes): Added.
(AnalysisTask.prototype.fixes): Added.
(AnalysisTask.prototype.associateCommit): Added. Use the API added at /privileged-api/associate-commit
to associate a new commit with this analysis task. Each commit has either caused or fixed the change.
(AnalysisTask.prototype.dissociateCommit): Added. Use the same API to disassociate each commit.
(AnalysisTask._constructAnalysisTasksFromRawData): Find all commits associated with each analysis task.
Because commit log objects use a fake ID fdue to /api/measurement-set not providing commit IDs, we must
use CommitLog.findByRemoteId to find each commit instead of usual CommitLog.findById.
(AnalysisTask._constructAnalysisTasksFromRawData.resolveCommits): Added.

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

(BuildRequest.prototype.hasFinished): Renamed from hasCompleted since it was confusing for this._status
being "completed" wasn't a necessary condition for this function to return true.

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

(CommitLog): Added the static map for actual commit ID instead of a fake ID created in ensureSingleton.
(CommitLog.prototype.remoteId): Added. Returns the real commit ID.
(CommitLog.findByRemoteId): Added. Finds an CommitLog object using the real ID.

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

(TestGroup.prototype.hasFinished): Renamed from hasCompleted to match the rename in BuildRequest.

  • public/v3/pages/analysis-task-page.js:

(AnalysisTaskPage): Added lists for the commits that fixed and caused the change using MutableListView.
Also adopted MutableListView for the list of associated bugs.
(AnalysisTaskPage.prototype.render): Added the code to populate the newly added lists.
(AnalysisTaskPage.prototype._makeCommitListItem): Added.
(AnalysisTaskPage.prototype._associateBug): Now this is a callback from MutableListView.
(AnalysisTaskPage.prototype._associateCommit): Added.
(AnalysisTaskPage.prototype._dissociateCommit): Added.
(AnalysisTaskPage.htmlTemplate):
(AnalysisTaskPage.cssTemplate):

  • public/v3/remote.js:

(getJSON): Spit out the entire responseText when JSON failed to parse to make debugging easier.

Mar 15, 2016:

11:48 PM Changeset in webkit [198264] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Remove hint from SlowCaseEntry
​https://bugs.webkit.org/show_bug.cgi?id=155530

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-15
Reviewed by Alex Christensen.

  • jit/JIT.h:

(JSC::SlowCaseEntry::SlowCaseEntry):

11:30 PM Changeset in webkit [198263] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.5.17.2.1

New tag.

11:26 PM Changeset in webkit [198262] by bshafiei@apple.com
  • 2 edits in branches/safari-601-branch/Source/WebKit/win

Merged r198244. rdar://problem/25181891

11:25 PM Changeset in webkit [198261] by bshafiei@apple.com
  • 5 edits in branches/safari-601.5.17.2-branch/Source

Versioning.

11:23 PM Changeset in webkit [198260] by bshafiei@apple.com
  • 2 edits in branches/safari-601.5.17.2-branch/Source/WebKit/win

Merged r198244. rdar://problem/25181891

11:22 PM Changeset in webkit [198259] by bshafiei@apple.com
  • 5 edits in branches/safari-601.5.17.2-branch/Source

Versioning.

11:18 PM Changeset in webkit [198258] by bshafiei@apple.com
  • 1 copy in branches/safari-601.5.17.2-branch

New Branch.

8:31 PM Changeset in webkit [198257] by BJ Burg
  • 4 edits in trunk/Source/JavaScriptCore

REGRESSION(r198077): generated Objective-C protocol object getters leak their wrappers
​https://bugs.webkit.org/show_bug.cgi?id=155523
<rdar://problem/25181764>

Reviewed by Joseph Pecoraro.

Since the code may not be compiled with ARC, autorelease the returned wrapper.

  • inspector/scripts/codegen/objc_generator.py:

(ObjCGenerator.protocol_to_objc_expression_for_member):

  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
7:16 PM Changeset in webkit [198256] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Help clang generate better code on arrayProtoFuncToString()
​https://bugs.webkit.org/show_bug.cgi?id=155512

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-15
Reviewed by Mark Lam.

3d-raytrace hits Array.toString() hard with small arrays.
Half of the time is going into overhead around the StringJoiner.
This patch makes the function shorter and the layout better.

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncToString):
Add "UNLIKELY" on rare cases. Clang pushes that code to the tail.

Factor the code of jsMakeNontrivialString() so that the operation
is not duplicated in the function.

  • runtime/JSStringBuilder.h:

(JSC::jsMakeNontrivialString):
jsNontrivialString() supports r-value reference.
Move the result string into jsNontrivialString(), this removes
the deref+destructor from the function.

  • runtime/JSStringJoiner.cpp:

(JSC::JSStringJoiner::~JSStringJoiner):
The destructor is pretty large. No point in inlining it.

(JSC::joinStrings):

  • runtime/JSStringJoiner.h:

(JSC::JSStringJoiner::JSStringJoiner):
(JSC::JSStringJoiner::append):
The calls were duplicated. That's unnecessary.

  • runtime/NumericStrings.h:

(JSC::NumericStrings::add):
Return a reference in all cases.
This removes a deref+destructor.

6:51 PM Changeset in webkit [198255] by Alan Bujtas
  • 13 edits
    2 deletes in trunk

Remove overflow: -webkit-marquee
​https://bugs.webkit.org/show_bug.cgi?id=155517
<rdar://problem/25028481>

Reviewed by Simon Fraser.

This patch is based on Blink patch from ​jchaffraix@chromium.org (​https://src.chromium.org/viewvc/blink?revision=151756&view=revision)

Source/WebCore:

  • css/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue):

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Deleted.
(WebCore::CSSPrimitiveValue::operator EOverflow): Deleted.

  • css/CSSValueKeywords.in:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle):

  • css/html.css:

(marquee): Deleted.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::sizesLogicalWidthToFitContent):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollTo):
(WebCore::RenderLayer::updateScrollInfoAfterLayout):
(WebCore::RenderLayer::calculateClipRects):

  • rendering/RenderLayer.h:
  • rendering/RenderMarquee.h:
  • rendering/style/RenderStyleConstants.h:

LayoutTests:

  • fast/css/getPropertyValue-webkit-marquee.html:
  • fast/css/webkit-marquee-anonymous-node-crash-expected.txt: Removed.
  • fast/css/webkit-marquee-anonymous-node-crash.html: Removed.
6:45 PM Changeset in webkit [198254] by jdiggs@igalia.com
  • 11 edits in trunk

AX: Expose pointers to SVG elements referenced by aria-labelledby
​https://bugs.webkit.org/show_bug.cgi?id=155481

Reviewed by Chris Fleizach.

Source/WebCore:

Expose elements referenced by aria-labelledby via ATK_RELATION_LABELLED_BY.
Stop calling the supportsARIA* methods before getting the elements referred
to by the associated ARIA property in the accessible wrapper for ATK and
the inspector: Getting the elements will be just as fast when there are no
such elements, and faster when there are.

Modified the w3c-svg-name-calculation.html test to include AXTitleUIElement
in its output.

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsARIAAttributes):
(WebCore::AccessibilityObject::ariaElementsFromAttribute): Added.
(WebCore::AccessibilityObject::ariaControlsElements): Added.
(WebCore::AccessibilityObject::ariaDescribedByElements): Added.
(WebCore::AccessibilityObject::ariaFlowToElements): Added.
(WebCore::AccessibilityObject::ariaLabelledByElements): Added.
(WebCore::AccessibilityObject::ariaOwnsElements): Added.

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::ariaOwnsElements): No longer virtual.
(WebCore::AccessibilityObject::supportsARIAFlowTo): Deleted.
(WebCore::AccessibilityObject::ariaFlowToElements): No longer virtual.
(WebCore::AccessibilityObject::supportsARIADescribedBy): Deleted.
(WebCore::AccessibilityObject::ariaDescribedByElements): No longer virtual.
(WebCore::AccessibilityObject::supportsARIAControls): Deleted.
(WebCore::AccessibilityObject::ariaControlsElements): No longer virtual.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::ariaElementsFromAttribute): Moved to AccessibilityObject.
(WebCore::AccessibilityRenderObject::supportsARIAFlowTo): Deleted.
(WebCore::AccessibilityRenderObject::ariaFlowToElements): Moved to AccessibilityObject.
(WebCore::AccessibilityRenderObject::supportsARIADescribedBy): Deleted.
(WebCore::AccessibilityRenderObject::ariaDescribedByElements): Moved to AccessibilityObject.
(WebCore::AccessibilityRenderObject::supportsARIAControls): Deleted.
(WebCore::AccessibilityRenderObject::ariaControlsElements): Moved to AccessibilityObject.
(WebCore::AccessibilityRenderObject::ariaOwnsElements): Moved to AccessibilityObject.

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

(setAtkRelationSetFromCoreObject):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

LayoutTests:

  • accessibility/w3c-svg-name-calculation.html: Modified to also output AXTitleUIElement.
  • platform/gtk/accessibility/w3c-svg-name-calculation-expected.txt: Updated.
  • platform/mac/accessibility/w3c-svg-name-calculation-expected.txt: Updated.
6:07 PM Changeset in webkit [198253] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Remove stale ArrayPrototype declarations
​https://bugs.webkit.org/show_bug.cgi?id=155520

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-15
Reviewed by Mark Lam.

  • runtime/ArrayPrototype.cpp:

The implementations went away when the methods were moved to builtins
but the declarations were left behind.

6:02 PM Changeset in webkit [198252] by oliver@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Rename performJITMemcpy to something more inline with our normal webkit function names
​https://bugs.webkit.org/show_bug.cgi?id=155525

Reviewed by Saam Barati.

Simple bulk search/replace with a better name.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::fillNops):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::replaceWithLoad):
(JSC::ARM64Assembler::replaceWithAddressComputation):
(JSC::ARM64Assembler::setPointer):
(JSC::ARM64Assembler::repatchInt32):
(JSC::ARM64Assembler::repatchCompact):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):

  • jit/ExecutableAllocator.h:

(JSC::writeToExecutableRegion):
(JSC::performJITMemcpy): Deleted.

5:45 PM Changeset in webkit [198251] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit/mac

[ios-sim debug] API test WebKit1.AudioSessionCategoryIOS timing out
​https://bugs.webkit.org/show_bug.cgi?id=155275

Reviewed by Alexey Proskuryakov.

The videoPlaybackRequiresUserGesture and audioPlaybackRequiresUserGesture should both defalut to
NO, so that legacy clients of -[UIWebView setMediaPlaybackRequiresUserAction:] continue to work
as expected.

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

5:22 PM Changeset in webkit [198250] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebKit2

Merge r195982. rdar://problem/24560759

5:22 PM Changeset in webkit [198249] by matthew_hanson@apple.com
  • 4 edits
    1 add in branches/safari-601.1.46-branch

Merge r194060. rdar://problem/24560757

5:22 PM Changeset in webkit [198248] by matthew_hanson@apple.com
  • 4 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r197125. rdar://problem/24860685

5:22 PM Changeset in webkit [198247] by matthew_hanson@apple.com
  • 2 edits in branches/safari-601.1.46-branch/Source/WebCore

Merge r196670. rdar://problem/24860681

5:22 PM Changeset in webkit [198246] by matthew_hanson@apple.com
  • 19 edits
    2 adds in branches/safari-601.1.46-branch

Merge r196268. rdar://problem/24748259

5:02 PM Changeset in webkit [198245] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

Follow up to r195769.
​https://bugs.webkit.org/show_bug.cgi?id=155519
rdar://problem/25146483

Reviewed by Tim Horton.

There are two code paths that lead to calling handleSyntheticClick()
where we need to check if the default action can be performed on the
data detector link.
Only one was covered in r195769 and this patch addresses the missing one.
I've also discovered that the point reported in DidNotHandleTapAsClick was
incorrectly always (0, 0) and I've fixed it.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleTap):

5:00 PM Changeset in webkit [198244] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit/win

[Win] Correct double-release of CFURLConnectionRef
​https://bugs.webkit.org/show_bug.cgi?id=155515
<rdar://problem/25159143>

Reviewed by Tim Horton.

Tested by http/tests/download suite.

  • WebDownloadCFNet.cpp: Remove extra CFRelease.
4:59 PM Changeset in webkit [198243] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Occasional crash under GraphicsContext::platformContext() when dragging Google maps
​https://bugs.webkit.org/show_bug.cgi?id=155521
rdar://problem/24357307

Reviewed by Tim Horton.

It's possible for createDragImageForSelection() to return a null image, if the bounds
of the selection are an empty rect. That would cause a crash under convertImageToBitmap()
because a zero-sized ShareableBitmap will return a null GraphicsContext.

To avoid this, early return from DragController::startDrag() if the dragImage is null.

I wasn't able to come up with a test for this.

  • page/DragController.cpp:

(WebCore::DragController::startDrag):

4:51 PM Changeset in webkit [198242] by timothy_horton@apple.com
  • 2 edits in trunk/Tools

[iOS Simulator] Test result snapshots are upside down
​https://bugs.webkit.org/show_bug.cgi?id=154761

Reviewed by Simon Fraser.

  • WebKitTestRunner/cg/TestInvocationCG.cpp:

(WTR::createCGContextFromImage):
(WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
In r97104, Simon added code to take WindowServer snapshots, which came
in flipped, and added code to flip them back. At this point, WindowServer
snapshots got flipped, and software snapshots did not.

In r140067, Simon noticed that WindowServer ref test images were upside-down
on Mac (not sure why this changed), so turned off the flipping code (but
didn't delete it!). Now, WindowServer snapshots and software snapshots both
are not flipped.

In r190304, Carlos added an enum for the source of the snapshot ("WebView"
for window server snapshots, and "WebContent" for software snapshots),
and - critically - changed the flipping logic to flip software snapshots!

We didn't notice this on Mac because at this point we've made it so that
we *always* have WindowServer snapshots, but on iOS we still don't have
WindowServer snapshots, so now they're flipped.

And that's how we got here.

To restore the behavior from r140067, and correctly unflip snapshots on
iOS, just delete this code.

4:29 PM Changeset in webkit [198241] by oliver@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Improved build fix.

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

Gardening: build fix after r198235.

Not Reviewed.

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):

4:13 PM Changeset in webkit [198239] by timothy_horton@apple.com
  • 12 edits
    2 adds in trunk

iOS <attachment> element should allow customization of action text color
​https://bugs.webkit.org/show_bug.cgi?id=155513
<rdar://problem/24805991>

Reviewed by Simon Fraser.

Test: fast/attachment/attachment-action.html

  • css/html.css:

(attachment):
On iOS (the only place it is used), <attachment> color should default to system blue.

  • rendering/RenderThemeIOS.mm:

(WebCore::attachmentActionColor):
(WebCore::AttachmentInfo::AttachmentInfo):
Make use of the <attachment>'s CSS color for the action text.
This is a little weird because there are multiple bits of text in an
<attachment>, but only the action text ever changes color.

  • fast/attachment/attachment-action-expected.html: Added.
  • fast/attachment/attachment-action.html: Added.
  • platform/ios-simulator/fast/attachment/attachment-label-highlight-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-progress-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-rendering-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-select-on-click-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-select-on-click-inside-user-select-all-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-subtitle-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-title-expected.txt:

Rebaseline some tests and add one that action text matches the requested color.

4:10 PM Changeset in webkit [198238] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

Delay HTMLFormControlElement::focus() call until after layout is finished.
​https://bugs.webkit.org/show_bug.cgi?id=155503
<rdar://problem/24046635>

Reviewed by Simon Fraser.

Calling focus on a form element can trigger arbitrary JS code which could interfere with
the ongoing layout.
This patch delays HTMLFormControlElement::focus() call until after layout is finished.
If we are currently not in the middle of a layout, HTMLFormControlElement::focus() is delayed until
after style resolution is done.

Covered by LayoutTests/fast/dom/adopt-node-crash-2.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::updateBackingStore):

  • dom/Document.cpp:

(WebCore::Document::updateStyleIfNeeded):
(WebCore::Document::updateLayout):
(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

  • html/HTMLEmbedElement.cpp:

(WebCore::HTMLEmbedElement::renderWidgetLoadingPlugin):

  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::didAttachRenderers):

  • page/FrameView.cpp:

(WebCore::FrameView::layout):
(WebCore::FrameView::queuePostLayoutCallback):
(WebCore::FrameView::flushPostLayoutTasksQueue):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::sendResizeEventIfNeeded):

  • page/FrameView.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::imageChanged):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollTo):

3:57 PM Changeset in webkit [198237] by Ryan Haddad
  • 2 edits in trunk/Source/WebKit2

Unreviewed, rolling out r198230.

This change caused LayoutTests to fail on Mac

Reverted changeset:

"REGRESSION (r194660): Navigating to HTTPS sites may fail with
error"
​https://bugs.webkit.org/show_bug.cgi?id=155455
​http://trac.webkit.org/changeset/198230

3:46 PM Changeset in webkit [198236] by Simon Fraser
  • 2 edits
    7 adds in trunk/PerformanceTests

Add developer Animometer test that bounces P3-tagged images
​https://bugs.webkit.org/show_bug.cgi?id=155511

Reviewed by Tim Horton.

Add a test for rendering performance of tagged images. The 5 images are tagged
with the Display P3 colorspace.

  • Animometer/resources/debug-runner/tests.js:
  • Animometer/tests/bouncing-particles/bouncing-tagged-images.html: Added.
  • Animometer/tests/bouncing-particles/resources/bouncing-tagged-images.js: Added.
  • Animometer/tests/bouncing-particles/resources/image1.jpg: Added.
  • Animometer/tests/bouncing-particles/resources/image2.jpg: Added.
  • Animometer/tests/bouncing-particles/resources/image3.jpg: Added.
  • Animometer/tests/bouncing-particles/resources/image4.jpg: Added.
  • Animometer/tests/bouncing-particles/resources/image5.jpg: Added.
3:44 PM Changeset in webkit [198235] by oliver@apple.com
  • 16 edits in trunk/Source

Remove compile time define for SEPARATED_HEAP
​https://bugs.webkit.org/show_bug.cgi?id=155508

Reviewed by Mark Lam.

Source/JavaScriptCore:

This removes the compile time define for the SEPARATED_HEAP
feature, and moves to a default-off runtime preference.

This happily also removes the need for world rebuilds while
bringing it up on different platforms.

  • Configurations/FeatureDefines.xcconfig:
  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):

  • jit/ExecutableAllocator.h:

(JSC::performJITMemcpy):

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::FixedVMPoolExecutableAllocator::initializeSeparatedWXHeaps):
(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):
(JSC::FixedVMPoolExecutableAllocator::genericWriteToJITRegion):
(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator): Deleted.

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:

Source/WebCore:

Remove the feature define.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Remove the feature define.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Remove the feature define.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Remove the feature define.

  • wtf/FeatureDefines.h:
  • wtf/Platform.h:
3:42 PM Changeset in webkit [198234] by rniwa@webkit.org
  • 2 edits
    1 add in trunk/Websites/perf.webkit.org

Extract the code to format commit logs into its own PHP file
​https://bugs.webkit.org/show_bug.cgi?id=155514

Rubber-stamped by Chris Dumez.

Extracted CommitLogFetcher out of /api/commits so that it could be used in analysis-tasks.php
in the future to support associating cause/fix for each analysis task.

  • public/api/commits.php:
  • public/include/commit-log-fetcher.php: Added.

(CommitLogFetcher)
(CommitLogFetcher::construct): Added.
(CommitLogFetcher::repository_id_from_name): Added.
(CommitLogFetcher::fetch_between): Added.
(CommitLogFetcher::fetch_oldest): Added.
(CommitLogFetcher::fetch_latest): Added.
(CommitLogFetcher::fetch_last_reported): Added.
(CommitLogFetcher::fetch_revision): Added.
(CommitLogFetcher::commit_for_revision): Added.
(CommitLogFetcher::format_single_commit): Added.
(CommitLogFetcher::format_commit): Added.

3:38 PM Changeset in webkit [198233] by commit-queue@webkit.org
  • 6 edits in trunk

Unreviewed, rolling out r198148.
​https://bugs.webkit.org/show_bug.cgi?id=155518

"Lets do this patch at a later time" (Requested by saamyjoon
on #webkit).

Reverted changeset:

"[ES6] Disallow var assignments in for-in loops"
​https://bugs.webkit.org/show_bug.cgi?id=155451
​http://trac.webkit.org/changeset/198148

3:22 PM Changeset in webkit [198232] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Test result gardening for
ASSERT_NOT_REACHED on imported/w3c/web-platform-tests/html/semantics/embedded-content/the-area-element/area-coords.html
​https://bugs.webkit.org/show_bug.cgi?id=155516

  • TestExpectations: Skip the test in debug, as it's not useful to crash every time.
3:04 PM Changeset in webkit [198231] by ap@apple.com
  • 2 edits in trunk/Tools

run-api-tests doesn't print test name when the test crashes
​https://bugs.webkit.org/show_bug.cgi?id=155476

Reviewed by Daniel Bates.

  • Scripts/run-api-tests: Print "UNEXPECTEDLY EXITED" with a test name when output

doesn't contain the test name yet. Changed test name output to always be before raw
stdout for clarity.

2:55 PM Changeset in webkit [198230] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r194660): Navigating to HTTPS sites may fail with error
​https://bugs.webkit.org/show_bug.cgi?id=155455
<rdar://problem/24308793>

Reviewed by Alexey Proskuryakov.

Fixes an issue where navigating to an HTTPS site may fail because the Security Framework uses
a cache directory that it does not have permission to use.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::codeSigningIdentifierForProcess): Queries the Security Framework for the code signed
bundle identifier/code signing identifier.
(WebKit::ChildProcess::initializeSandbox): Use the client identifier as part of the user directory
suffix. Verify that the client identifier matches the code signed bundled identifier/code
signing identifier for the code signed app/tool. Fix minor code style issue; use a C++-style cast
instead of a C-style cast when casting an OSStatus to a long.
(WebKit::findSecCodeForProcess): Deleted; incorporated logic into WebKit::codeSigningIdentifierForProcess().

2:48 PM Changeset in webkit [198229] by commit-queue@webkit.org
  • 4 edits in trunk

REGRESSION: ASSERTION FAILED: !m_lastActiveBlock on js/function-apply.html
​https://bugs.webkit.org/show_bug.cgi?id=155411
<rdar://problem/25134537>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-15
Reviewed by Mark Lam.

Source/JavaScriptCore:

  • heap/Heap.cpp:

(JSC::Heap::collectImpl):
(JSC::Heap::didFinishCollection):
During collection allocators are stop/reset. The HeapProfiler tasks
were using HeapIterationScope (to satisfy MarkedSpace forEachCell API
contracts) which was doing its own stop/resume of allocators. Doing a
stop/resume in between the normal stop/reset of collection is unexpected.

Move this to didFinishCollection, alongside other heap iterations
like zombies and immortal objects. Putting this after those tasks
also means the heap snapshots will respect the zombies/immortal options
when deciding if the cell is alive or not.

LayoutTests:

  • platform/mac/TestExpectations:

Unmark test as flakey.

1:41 PM Changeset in webkit [198228] by sbarati@apple.com
  • 13 edits in trunk/Source/JavaScriptCore

We should have different JSTypes for JSGlobalLexicalEnvironment and JSLexicalEnvironment and JSModuleEnvironment
​https://bugs.webkit.org/show_bug.cgi?id=152406

Reviewed by Mark Lam.

This makes testing for a JSGlobalLexicalEnvironment faster
because we can just check the Cell's type instead of using
jsDynamicCast. I also changed code that does jsDynamicCast<JSGlobalObject*>
instead of isGlobalObject().

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

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

  • runtime/JSGlobalLexicalEnvironment.h:

(JSC::JSGlobalLexicalEnvironment::createStructure):

  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::createStructure):
(JSC::JSLexicalEnvironment::JSLexicalEnvironment):

  • runtime/JSModuleEnvironment.h:

(JSC::JSModuleEnvironment::createStructure):
(JSC::JSModuleEnvironment::offsetOfModuleRecord):

  • runtime/JSObject.h:

(JSC::JSObject::isGlobalObject):
(JSC::JSObject::isJSLexicalEnvironment):
(JSC::JSObject::isGlobalLexicalEnvironment):
(JSC::JSObject::isErrorInstance):

  • runtime/JSScope.cpp:

(JSC::abstractAccess):
(JSC::isUnscopable):
(JSC::JSScope::resolve):
(JSC::JSScope::collectVariablesUnderTDZ):
(JSC::JSScope::isVarScope):
(JSC::JSScope::isLexicalScope):
(JSC::JSScope::isModuleScope):
(JSC::JSScope::isCatchScope):
(JSC::JSScope::isFunctionNameScopeObject):
(JSC::JSScope::isNestedLexicalScope):
(JSC::JSScope::constantScopeForCodeBlock):
(JSC::isScopeType): Deleted.
(JSC::JSScope::isGlobalLexicalEnvironment): Deleted.

  • runtime/JSScope.h:
  • runtime/JSType.h:
1:31 PM Changeset in webkit [198227] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Fixing expectation for css3/masking/mask-svg-script-none-to-png.html on ios-simulator

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
1:27 PM Changeset in webkit [198226] by timothy_horton@apple.com
  • 12 edits in trunk/LayoutTests

Unskip and rebaseline <attachment> tests on iOS
<rdar://problem/24805991>

  • fast/attachment/attachment-default-icon.html:
  • fast/attachment/attachment-folder-icon.html:
  • fast/attachment/attachment-type-attribute.html:

Make these tests have identical titles between ref and actual, because
on iOS the layout differs if you have a title or not (unlike on Mac).

  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/fast/attachment/attachment-label-highlight-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-progress-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-rendering-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-select-on-click-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-select-on-click-inside-user-select-all-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-subtitle-expected.txt:
  • platform/ios-simulator/fast/attachment/attachment-title-expected.txt:

Unskip and rebaseline all but one of the attachment tests on iOS.

1:01 PM Changeset in webkit [198225] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Restore pre-r197244 behavior on Mac
​https://bugs.webkit.org/show_bug.cgi?id=155507
<rdar://problem/25174132>

Reviewed by Gavin Barraclough.

<​http://trac.webkit.org/changeset/197244> changed the session restore
behavior to disallow stale content on all platforms except iOS.
We would also like to maintain the behavior on Mac for performance
reasons and consistency between iOS and Mac.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadDifferentDocumentItem):

12:46 PM Changeset in webkit [198224] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Add Antti to WebKit2 Owners file
​https://bugs.webkit.org/show_bug.cgi?id=155504

Reviewed by Anders Carlsson and Sam Weinig.

  • Owners:
12:45 PM Changeset in webkit [198223] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

<attachment> on iOS isn't quite vertically centered
​https://bugs.webkit.org/show_bug.cgi?id=155502
<rdar://problem/24805991>

Reviewed by Beth Dakin.

No new tests; there are existing tests that will be enabled shortly.

  • rendering/RenderThemeIOS.mm:

(WebCore::AttachmentInfo::AttachmentInfo):
We were overcounting the total height of the attachment content by one margin, because each item
would add in its margin, including the last one. Remove one margin.

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

Remove flaky expectation for webgl/1.0.2/conformance/rendering/gl-scissor-test.html for mac
​https://bugs.webkit.org/show_bug.cgi?id=126586

Unreviewed test gardening.

  • platform/mac/TestExpectations:
12:24 PM Changeset in webkit [198221] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Fixing a typo in the ios-simulator TestExpectations file

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
12:15 PM Changeset in webkit [198220] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking animations/3d/transform-origin-vs-functions.html as flaky on ios-simulator-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155501

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
12:03 PM Changeset in webkit [198219] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: certain elements not included in accessibility tree
​https://bugs.webkit.org/show_bug.cgi?id=155480

Reviewed by Beth Dakin.

Source/WebCore:

This test case exposed a hole in the nextSibling logic where you can get into a state where we skip content.
The fix is to check if an inline element continuation has no sibling, to fall back on to the parent case to see if that has a sibling.

Test: accessibility/double-nested-inline-element-missing-from-tree.html

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::nextSibling):

LayoutTests:

  • accessibility/double-nested-inline-element-missing-from-tree-expected.txt: Added.
  • accessibility/double-nested-inline-element-missing-from-tree.html: Added.
11:26 AM Changeset in webkit [198218] by Chris Dumez
  • 22 edits
    2 deletes in trunk

Unreviewed, rolling out r198203.

Favorites view is no longer loading on iOS

Reverted changeset:

"URL Parsing should signal failure for illegal IDN"
​https://bugs.webkit.org/show_bug.cgi?id=154945
​http://trac.webkit.org/changeset/198203

11:25 AM Changeset in webkit [198217] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebCore

<attachment> on iOS should use short and emphasized fonts
​https://bugs.webkit.org/show_bug.cgi?id=155485
<rdar://problem/24805991>

Reviewed by Simon Fraser.

No new tests; there are existing tests that will be enabled shortly.

  • rendering/RenderThemeIOS.mm:

(WebCore::attachmentActionFont):
(WebCore::attachmentTitleFont):
(WebCore::attachmentSubtitleFont):
(WebCore::AttachmentInfo::buildTitleLines):
(WebCore::AttachmentInfo::buildSingleLine):
(WebCore::AttachmentInfo::AttachmentInfo):
No need for UIFonts, we can use CoreText, and that allows us to ask for the
correct Short and Emphasized variants that we need.

10:26 AM Changeset in webkit [198216] by Antti Koivisto
  • 9 edits in trunk

Source/WebCore:
REGRESSION (196383): Class change invalidation does not handle :not correctly
​https://bugs.webkit.org/show_bug.cgi?id=155493
<rdar://problem/24846762>

Reviewed by Andreas Kling.

We fail to invalidate bar style in

:not(.foo) bar { }

when class foo is added or removed.

There is a logic error in the invalidation code. It assumes that class addition can only make new selectors match
and removal make them not match. This is not true when :not is present.

  • style/AttributeChangeInvalidation.h:

(WebCore::Style::AttributeChangeInvalidation::AttributeChangeInvalidation):

  • style/ClassChangeInvalidation.cpp:

(WebCore::Style::ClassChangeInvalidation::invalidateStyle):

Invalidate style and collect full set of rules that may affect descendant style.

(WebCore::Style::ClassChangeInvalidation::invalidateDescendantStyle):

Invalidate with this set both before and after committing the changes.

(WebCore::Style::ClassChangeInvalidation::computeClassChange): Deleted.

  • style/ClassChangeInvalidation.h:

(WebCore::Style::ClassChangeInvalidation::ClassChangeInvalidation):
(WebCore::Style::ClassChangeInvalidation::~ClassChangeInvalidation):

LayoutTests:
Class change invalidation does not handle :not correctly
​https://bugs.webkit.org/show_bug.cgi?id=155493
<rdar://problem/24846762>

Reviewed by Andreas Kling.

  • fast/css/style-invalidation-attribute-change-descendants-expected.txt:
  • fast/css/style-invalidation-attribute-change-descendants.html:

Also add :not case for attribute changes (which handles this correctly already).

  • fast/css/style-invalidation-class-change-descendants-expected.txt:
  • fast/css/style-invalidation-class-change-descendants.html:

Add :not case.

8:30 AM Changeset in webkit [198215] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

8:28 AM Changeset in webkit [198214] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.23

New tag.

8:27 AM Changeset in webkit [198213] by bshafiei@apple.com
  • 1 delete in tags/Safari-602.1.23

Delete tag.

8:26 AM Changeset in webkit [198212] by fpizlo@apple.com
  • 45 edits
    2 deletes in trunk/Source/JavaScriptCore

Remove the Baker barrier from JSC
​https://bugs.webkit.org/show_bug.cgi?id=155479

Reviewed by Saam Barati.

It's been a while since I added a Baker barrier, but I never followed it up with an actual
concurrent GC. While thinking about the GC, I became convinced that the right path forward
is to do a non-copying concurrent GC. That is, remove the copied space and just use the
marked space. The downside of using marked space cannot be more than the overhead of the
Baker barrier, so concurrent non-copying GC is definitely better than copying
non-concurrent GC. I also suspect that just plain non-copying non-concurrent GC is going to
be fine also, so the path forward will probably be to first just remove CopiedSpace.

Anyway, for now this patch just removes the Baker barrier. It was a cute implementation but
it just cost performance and I don't think we'll ever use it.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/PolymorphicAccess.cpp:

(JSC::AccessCase::generate):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGCopyBarrierOptimizationPhase.cpp: Removed.
  • dfg/DFGCopyBarrierOptimizationPhase.h: Removed.
  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGHeapLocation.h:
  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetIndexedPropertyStorage):
(JSC::DFG::SpeculativeJIT::compileGetTypedArrayByteOffset):
(JSC::DFG::SpeculativeJIT::compileGetButterfly):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGTypeCheckHoistingPhase.cpp:

(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantStructureChecks):
(JSC::DFG::TypeCheckHoistingPhase::identifyRedundantArrayChecks):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileGetButterfly):
(JSC::FTL::DFG::LowerDFGToB3::compileConstantStoragePointer):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckArray):
(JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayByteOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
(JSC::FTL::DFG::LowerDFGToB3::storageForTransition):
(JSC::FTL::DFG::LowerDFGToB3::getById):
(JSC::FTL::DFG::LowerDFGToB3::isFastTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileGetButterflyReadOnly): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::loadButterflyWithBarrier): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::loadVectorWithBarrier): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::copyBarrier): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::isInToSpace): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::loadButterflyReadOnly): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::loadVectorReadOnly): Deleted.
(JSC::FTL::DFG::LowerDFGToB3::removeSpaceBits): Deleted.

  • heap/CopyBarrier.h:

(JSC::CopyBarrierBase::CopyBarrierBase):
(JSC::CopyBarrierBase::operator bool):
(JSC::CopyBarrierBase::get):
(JSC::CopyBarrierBase::clear):
(JSC::CopyBarrierBase::setWithoutBarrier):
(JSC::CopyBarrier::CopyBarrier):
(JSC::CopyBarrier::get):
(JSC::CopyBarrier::set):
(JSC::CopyBarrier::setWithoutBarrier):
(JSC::CopyBarrierBase::operator!): Deleted.
(JSC::CopyBarrierBase::getWithoutBarrier): Deleted.
(JSC::CopyBarrierBase::getPredicated): Deleted.
(JSC::CopyBarrierBase::copyState): Deleted.
(JSC::CopyBarrierBase::setCopyState): Deleted.
(JSC::CopyBarrierBase::weakCASWithoutBarrier): Deleted.
(JSC::CopyBarrier::getWithoutBarrier): Deleted.
(JSC::CopyBarrier::getPredicated): Deleted.
(JSC::CopyBarrier::weakCASWithoutBarrier): Deleted.

  • heap/Heap.cpp:

(JSC::Heap::addToRememberedSet):
(JSC::Heap::collectAndSweep):
(JSC::Heap::copyBarrier): Deleted.

  • heap/Heap.h:

(JSC::Heap::writeBarrierBuffer):

  • jit/AssemblyHelpers.cpp:

(JSC::AssemblyHelpers::branchIfNotFastTypedArray):
(JSC::AssemblyHelpers::purifyNaN):
(JSC::AssemblyHelpers::loadTypedArrayVector): Deleted.

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::branchStructure):
(JSC::AssemblyHelpers::addressForByteOffset):
(JSC::AssemblyHelpers::branchIfToSpace): Deleted.
(JSC::AssemblyHelpers::branchIfNotToSpace): Deleted.
(JSC::AssemblyHelpers::removeSpaceBits): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompile):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emitSlow_op_has_indexed_property):
(JSC::JIT::emit_op_get_direct_pname):
(JSC::JIT::emitSlow_op_get_direct_pname):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_get_direct_pname):
(JSC::JIT::emitSlow_op_get_direct_pname):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitDoubleLoad):
(JSC::JIT::emitContiguousLoad):
(JSC::JIT::emitArrayStorageLoad):
(JSC::JIT::emitSlow_op_get_by_val):
(JSC::JIT::emitGenericContiguousPutByVal):
(JSC::JIT::emitArrayStoragePutByVal):
(JSC::JIT::emitSlow_op_put_by_val):
(JSC::JIT::emit_op_get_from_scope):
(JSC::JIT::emitSlow_op_get_from_scope):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emitSlow_op_put_to_scope):
(JSC::JIT::emitIntTypedArrayGetByVal):
(JSC::JIT::emitFloatTypedArrayGetByVal):
(JSC::JIT::emitIntTypedArrayPutByVal):
(JSC::JIT::emitFloatTypedArrayPutByVal):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::visitChildren):
(JSC::DirectArguments::copyBackingStore):
(JSC::DirectArguments::overrideArgument):
(JSC::DirectArguments::copyToArguments):

  • runtime/DirectArguments.h:

(JSC::DirectArguments::canAccessIndexQuickly):
(JSC::DirectArguments::canAccessArgumentIndexQuicklyInDFG):

  • runtime/JSArray.cpp:

(JSC::JSArray::setLength):
(JSC::JSArray::pop):
(JSC::JSArray::push):
(JSC::JSArray::fastSlice):
(JSC::JSArray::fastConcatWith):
(JSC::JSArray::shiftCountWithArrayStorage):
(JSC::JSArray::shiftCountWithAnyIndexingType):
(JSC::JSArray::unshiftCountWithAnyIndexingType):
(JSC::JSArray::fillArgList):
(JSC::JSArray::copyToArguments):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::finalize):

  • runtime/JSArrayBufferView.h:

(JSC::JSArrayBufferView::isNeutered):
(JSC::JSArrayBufferView::vector):
(JSC::JSArrayBufferView::length):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::visitChildren):
(JSC::JSGenericTypedArrayView<Adaptor>::copyBackingStore):

  • runtime/JSObject.cpp:

(JSC::JSObject::visitChildren):
(JSC::JSObject::copyBackingStore):
(JSC::JSObject::heapSnapshot):
(JSC::JSObject::getOwnPropertySlotByIndex):
(JSC::JSObject::putByIndex):
(JSC::JSObject::enterDictionaryIndexingMode):
(JSC::JSObject::createInitialIndexedStorage):
(JSC::JSObject::createArrayStorage):
(JSC::JSObject::convertUndecidedToInt32):
(JSC::JSObject::convertUndecidedToDouble):
(JSC::JSObject::convertUndecidedToContiguous):
(JSC::JSObject::constructConvertedArrayStorageWithoutCopyingElements):
(JSC::JSObject::convertUndecidedToArrayStorage):
(JSC::JSObject::convertInt32ToDouble):
(JSC::JSObject::convertInt32ToContiguous):
(JSC::JSObject::convertInt32ToArrayStorage):
(JSC::JSObject::convertDoubleToContiguous):
(JSC::JSObject::convertDoubleToArrayStorage):
(JSC::JSObject::convertContiguousToArrayStorage):
(JSC::JSObject::setIndexQuicklyToUndecided):
(JSC::JSObject::ensureArrayStorageExistsAndEnterDictionaryIndexingMode):
(JSC::JSObject::deletePropertyByIndex):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::putIndexedDescriptor):
(JSC::JSObject::defineOwnIndexedProperty):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::putDirectIndexBeyondVectorLength):
(JSC::JSObject::getNewVectorLength):
(JSC::JSObject::ensureLengthSlow):
(JSC::JSObject::reallocateAndShrinkButterfly):
(JSC::JSObject::growOutOfLineStorage):
(JSC::getBoundSlotBaseFunctionForGetterSetter):
(JSC::JSObject::getEnumerableLength):

  • runtime/JSObject.h:

(JSC::JSObject::getArrayLength):
(JSC::JSObject::getVectorLength):
(JSC::JSObject::canGetIndexQuickly):
(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly):
(JSC::JSObject::canSetIndexQuickly):
(JSC::JSObject::canSetIndexQuicklyForPutDirect):
(JSC::JSObject::setIndexQuickly):
(JSC::JSObject::initializeIndex):
(JSC::JSObject::hasSparseMap):
(JSC::JSObject::inSparseIndexingMode):
(JSC::JSObject::inlineStorage):
(JSC::JSObject::butterfly):
(JSC::JSObject::outOfLineStorage):
(JSC::JSObject::locationForOffset):
(JSC::JSObject::ensureInt32):
(JSC::JSObject::ensureDouble):
(JSC::JSObject::ensureContiguous):
(JSC::JSObject::ensureArrayStorage):
(JSC::JSObject::arrayStorage):
(JSC::JSObject::arrayStorageOrNull):
(JSC::JSObject::ensureLength):
(JSC::JSObject::putDirectWithoutTransition):

  • runtime/MapData.h:

(JSC::JSIterator>::IteratorData::next):
(JSC::JSIterator>::IteratorData::refreshCursor):

  • runtime/MapDataInlines.h:

(JSC::JSIterator>::find):
(JSC::JSIterator>::add):
(JSC::JSIterator>::remove):
(JSC::JSIterator>::replaceAndPackBackingStore):
(JSC::JSIterator>::replaceBackingStore):
(JSC::JSIterator>::ensureSpaceForAppend):
(JSC::JSIterator>::visitChildren):
(JSC::JSIterator>::copyBackingStore):

  • runtime/Options.h:
8:20 AM Changeset in webkit [198211] by jer.noble@apple.com
  • 5 edits
    2 adds in trunk

Video elements with autoplay do not begin playing when scrolling into view if InvisibleAutoplayNotPermitted is set.
​https://bugs.webkit.org/show_bug.cgi?id=155468

Reviewed by Eric Carlson.

Source/WebCore:

Test: media/video-restricted-invisible-autoplay-allowed-when-visible.html

A few bugs came together to cause this behavior. We were not telling the media session that we were going to begin
the autoplaying state, we were not restoring the correct state when the interruption ended, and we were not checking
to see if we could actually play correctly when the interruption ended.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::prepareForLoad):
(WebCore::HTMLMediaElement::canTransitionFromAutoplayToPlay):
(WebCore::HTMLMediaElement::setReadyState):
(WebCore::HTMLMediaElement::resumeAutoplaying):
(WebCore::HTMLMediaElement::updateShouldPlay):
(WebCore::elementCanTransitionFromAutoplayToPlay): Deleted.

  • html/HTMLMediaElement.h:
  • platform/audio/PlatformMediaSession.cpp:

(WebCore::PlatformMediaSession::endInterruption):

LayoutTests:

  • media/video-restricted-invisible-autoplay-allowed-when-visible-expected.txt: Added.
  • media/video-restricted-invisible-autoplay-allowed-when-visible.html: Added.
8:10 AM Changeset in webkit [198210] by Manuel Rego Casasnovas
  • 10 edits
    1 move in trunk/Source/WebCore

[css-grid] Rename GridCoordinate to GridArea
​https://bugs.webkit.org/show_bug.cgi?id=155489

Reviewed by Sergio Villar Senin.

As the comment in GridCoordinate states,
it actually represents a grid area as it stores
the initial and final positions in both axis (columns and rows).

Someone can think about a grid coordinate just like a single cell.
However this class was representing an area of several cells.

On top of that the "grid area" concept is defined in the spec:
​https://drafts.csswg.org/css-grid/#grid-area-concept

No new tests, no change of behavior.

  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSGridTemplateAreasValue.cpp:

(WebCore::stringForPosition):

  • css/CSSGridTemplateAreasValue.h:
  • css/CSSParser.cpp:

(WebCore::CSSParser::parseGridTemplateAreasRow):

  • css/CSSParser.h:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::GridIterator::nextEmptyGridArea):
(WebCore::RenderGrid::insertItemIntoGrid):
(WebCore::RenderGrid::placeItemsOnGrid):
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
(WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid):
(WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid):
(WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid):
(WebCore::RenderGrid::clearGrid):
(WebCore::RenderGrid::cachedGridArea):
(WebCore::RenderGrid::cachedGridSpan):

  • rendering/RenderGrid.h:
  • rendering/style/GridArea.h: Renamed from Source/WebCore/rendering/style/GridCoordinate.h.

(WebCore::GridSpan::untranslatedDefiniteGridSpan):
(WebCore::GridSpan::translatedDefiniteGridSpan):
(WebCore::GridSpan::indefiniteGridSpan):
(WebCore::GridSpan::operator==):
(WebCore::GridSpan::integerSpan):
(WebCore::GridSpan::untranslatedResolvedInitialPosition):
(WebCore::GridSpan::untranslatedResolvedFinalPosition):
(WebCore::GridSpan::resolvedInitialPosition):
(WebCore::GridSpan::resolvedFinalPosition):
(WebCore::GridSpan::GridSpanIterator::GridSpanIterator):
(WebCore::GridSpan::GridSpanIterator::operator unsigned&):
(WebCore::GridSpan::GridSpanIterator::operator*):
(WebCore::GridSpan::begin):
(WebCore::GridSpan::end):
(WebCore::GridSpan::isTranslatedDefinite):
(WebCore::GridSpan::isIndefinite):
(WebCore::GridSpan::translate):
(WebCore::GridSpan::GridSpan):
(WebCore::GridArea::GridArea):
(WebCore::GridArea::operator==):
(WebCore::GridArea::operator!=):

  • rendering/style/GridPositionsResolver.cpp:
  • rendering/style/StyleGridData.h:
7:21 AM Changeset in webkit [198209] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[GTK] Remove duplicate HashMap traversal and unneeded reference count churn in DataObjectGtk::forClipboard
​https://bugs.webkit.org/show_bug.cgi?id=155470

Reviewed by Carlos Garcia Campos.

No new tests, no new behaviours.

  • platform/gtk/DataObjectGtk.cpp:

(WebCore::DataObjectGtk::forClipboard):

3:42 AM Changeset in webkit [198208] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebKit2

EFL build has been broken since r198180
​https://bugs.webkit.org/show_bug.cgi?id=155488

Unreviewed build fix.

  • WebProcess/UserContent/WebUserContentController.h: Use ENABLE(USER_MESSAGE_HANDLERS) guard.
3:38 AM Changeset in webkit [198207] by Manuel Rego Casasnovas
  • 7 edits
    2 moves in trunk/Source/WebCore

[css-grid] Rename GridResolvedPosition to GridPositionsResolver
​https://bugs.webkit.org/show_bug.cgi?id=155486

Reviewed by Sergio Villar Senin.

GridResolvedPosition is not storing a position (track or line) anymore.
Currently it's just a class wrapping the methods to resolve
grid positions from style.
Renamed the class to avoid confusions.

No new tests, no change of behavior.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::placeItemsOnGrid):
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
(WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid):
(WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid):
(WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid):
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

  • rendering/RenderGrid.h:
  • rendering/style/GridCoordinate.h:
  • rendering/style/GridPositionsResolver.cpp: Renamed from Source/WebCore/rendering/style/GridResolvedPosition.cpp.

(WebCore::isColumnSide):
(WebCore::isStartSide):
(WebCore::initialPositionSide):
(WebCore::finalPositionSide):
(WebCore::gridLinesForSide):
(WebCore::implicitNamedGridLineForSide):
(WebCore::GridPositionsResolver::isNonExistentNamedLineOrArea):
(WebCore::adjustGridPositionsFromStyle):
(WebCore::GridPositionsResolver::explicitGridColumnCount):
(WebCore::GridPositionsResolver::explicitGridRowCount):
(WebCore::explicitGridSizeForSide):
(WebCore::lookAheadForNamedGridLine):
(WebCore::lookBackForNamedGridLine):
(WebCore::resolveNamedGridLinePositionFromStyle):
(WebCore::definiteGridSpanWithNamedLineSpanAgainstOpposite):
(WebCore::resolveNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveGridPositionAgainstOppositePosition):
(WebCore::GridPositionsResolver::spanSizeForAutoPlacedItem):
(WebCore::resolveGridPositionFromStyle):
(WebCore::GridPositionsResolver::resolveGridPositionsFromStyle):

  • rendering/style/GridPositionsResolver.h: Renamed from Source/WebCore/rendering/style/GridResolvedPosition.h.
  • rendering/style/StyleAllInOne.cpp:
1:59 AM Changeset in webkit [198206] by sbarati@apple.com
  • 5 edits
    2 adds in trunk/Source/JavaScriptCore

Destructuring parameters are evaluated in the wrong scope
​https://bugs.webkit.org/show_bug.cgi?id=155454

Reviewed by Geoffrey Garen.

This patch makes our engine compatible with how parameter
lists are evaluated in ES6. A parameter list that contains
a rest parameter, any destructuring patterns, or default parameter values,
is classified as being non-simple. Non-simple parameter lists
must get their own scope to live in, and the variables in the
scope are under TDZ. This means that functions evaluated in the
parameter list don't have access to variables inside the function
body. Also, non-simple parameter lists get the strict-mode arguments object.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::~BytecodeGenerator):
(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::initializeArrowFunctionContextScopeIfNeeded):

  • bytecompiler/BytecodeGenerator.h:
  • parser/Nodes.h:

(JSC::FunctionParameters::size):
(JSC::FunctionParameters::at):
(JSC::FunctionParameters::append):
(JSC::FunctionParameters::hasDefaultParameterValues): Deleted.

  • tests/es6.yaml:
  • tests/stress/parameter-scoping.js: Added.

(assert):
(test):
(test.foo):
(test.):

1:58 AM Changeset in webkit [198205] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Leak: Accelerated ImageBufferCairo doesn't destroy the used textures
​https://bugs.webkit.org/show_bug.cgi?id=155431

Patch by Miguel Gomez <​magomez@igalia.com> on 2016-03-15
Reviewed by Žan Doberšek.

When using the Cairo backend, add a destructor to ImageBufferData and use it to destroy the
textures created if the buffer is being accelerated.

No new tests, already covered by existing ones.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBufferData::ImageBufferData):
Store the renderingMode flag.
(WebCore::ImageBufferData::~ImageBufferData):
Destroy gl resources if renderingMode is accelerated.
(WebCore::ImageBuffer::ImageBuffer):
Pass renderingMode to the data class and use it fro checks instead of the function parameter.

  • platform/graphics/cairo/ImageBufferDataCairo.h:

Add destructor and a renderingMode flag.

1:49 AM Changeset in webkit [198204] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r198201 - REGRESSION (r197724): [GTK] Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155432

Reviewed by Darin Adler.

The GTK+ port Web Inspector uses GResources for all internal
resources (images, fonts, scripts, etc.) that are now blocked by
the CSP. GResouces are like data URLs in practice, so we should
always allow them.

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar):

12:53 AM Changeset in webkit [198203] by jiewen_tan@apple.com
  • 22 edits
    2 adds in trunk

URL Parsing should signal failure for illegal IDN
​https://bugs.webkit.org/show_bug.cgi?id=154945
<rdar://problem/8014795>

Reviewed by Brent Fulgham.

Source/WebCore:

WebCore::URL will now invalidate URLs with illegal IDN. And functions inside WebCoreNSURLExtras.h
that deal with IDN mapping will now return nil to signal error.

Test: fast/url/invalid-idn.html

  • platform/URL.cpp:

(WebCore::isSchemeFirstChar):
(WebCore::URL::init):
(WebCore::appendEncodedHostname):
(WebCore::encodeHostnames):
(WebCore::encodeRelativeString):

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

(WebCore::mapHostNameWithRange):
(WebCore::hostNameNeedsDecodingWithRange):
(WebCore::hostNameNeedsEncodingWithRange):
(WebCore::decodeHostNameWithRange):
(WebCore::encodeHostNameWithRange):
(WebCore::decodeHostName):
(WebCore::encodeHostName):
(WebCore::collectRangesThatNeedMapping):
(WebCore::mapHostNames):
(WebCore::URLWithData):
(WebCore::dataWithUserTypedString):
(WebCore::URLWithUserTypedString):
(WebCore::URLWithUserTypedStringDeprecated):
(WebCore::userVisibleString):

Source/WebKit/ios:

  • Misc/WebNSStringExtrasIOS.m:

(-[NSString _web_possibleURLsForForUserTypedString:]):

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder _updateTitleForURL:]):

Source/WebKit/mac:

In this patch, we add new SPIs _webkit_URLWithUserTypedString, _webkit_decodeHostName and
_webkit_encodeHostName which will return nil while dealing with illegal IDN.

Old SPIs _web_URLWithUserTypedString, _web_decodeHostName and _web_encodeHostName are marked
deprecated as they ignore URL parsing failure.

  • History/WebHistoryItem.mm:

(-[WebHistoryItem initFromDictionaryRepresentation:]):

  • Misc/WebKitErrors.m:

(+[NSError _webKitErrorWithCode:failingURL:]):

  • Misc/WebNSFileManagerExtras.mm:

(-[NSFileManager _webkit_setMetadataURL:referrer:atPath:]):

  • Misc/WebNSPasteboardExtras.mm:

(-[NSPasteboard _web_bestURL]):

  • Misc/WebNSURLExtras.h:
  • Misc/WebNSURLExtras.mm:

(+[NSURL _web_URLWithUserTypedString:]):
(+[NSURL _webkit_URLWithUserTypedString:relativeToURL:]):
(+[NSURL _webkit_URLWithUserTypedString:]):
(-[NSString _web_decodeHostName]):
(-[NSString _web_encodeHostName]):
(-[NSString _webkit_decodeHostName]):
(-[NSString _webkit_encodeHostName]):

  • Panels/WebAuthenticationPanel.m:

(-[WebAuthenticationPanel setUpForChallenge:]):

  • WebCoreSupport/WebEditorClient.mm:

(WebEditorClient::canonicalizeURLString):

Tools:

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController fetch:]):

  • TestWebKitAPI/Tests/Cocoa/URLExtras.mm:

(TestWebKitAPI::TEST):

LayoutTests:

  • fast/url/host-expected.txt:
  • fast/url/idna2003-expected.txt:
  • fast/url/invalid-idn-expected.txt: Added.
  • fast/url/invalid-idn.html: Added.
12:37 AM Changeset in webkit [198202] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Regression(r197939): ASSERTION FAILED: url.containsOnlyASCII() in URL.cpp
​https://bugs.webkit.org/show_bug.cgi?id=155449
<rdar://problem/25134826>

Reviewed by Carlos Garcia Campos.

Bump WK2 Network Disk Cache version after r197939 as the new cache format
is not compatible with the old one and leads to assertions being hit when
browsing in Debug builds.

SubresourceInfo used to only contain a boolean and would therefore be
serialized as "0" / "1". However, after r197939, a URL field was added
and when trying to decode old cache entries with the new format, we
would try to construct a URL from the String "0" or "1". This would
assert because these are not valid URLs.

  • NetworkProcess/cache/NetworkCacheStorage.h:
12:01 AM Changeset in webkit [198201] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

REGRESSION (r197724): [GTK] Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155432

Reviewed by Darin Adler.

The GTK+ port Web Inspector uses GResources for all internal
resources (images, fonts, scripts, etc.) that are now blocked by
the CSP. GResouces are like data URLs in practice, so we should
always allow them.

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar):

Mar 14, 2016:

10:47 PM Changeset in webkit [198200] by bshafiei@apple.com
  • 4 edits
    1 copy in tags/Safari-602.1.22.0.2/Source/WebKit2

Merged r198089. rdar://problem/24428418

10:46 PM Changeset in webkit [198199] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.22.0.2/Source

Versioning.

10:39 PM Changeset in webkit [198198] by ggaren@apple.com
  • 9 edits
    1 copy
    1 delete in trunk/Source/bmalloc

Unreviewed, rolling out r197955.

I decided to go in another direction

Reverted changeset:

"bmalloc: Rename SmallPage to SmallRun"
​https://bugs.webkit.org/show_bug.cgi?id=155320
​http://trac.webkit.org/changeset/197955

10:32 PM Changeset in webkit [198197] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix WinCairo build after r198195.

  • platform/network/NetworkingContext.h:

curl networking now uses NetworkingContext::storageSession. That's everybody!

10:02 PM Changeset in webkit [198196] by commit-queue@webkit.org
  • 9 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Show path from root to instances in the Heap Snapshot content view
​https://bugs.webkit.org/show_bug.cgi?id=155478
<rdar://problem/25157408>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-14
Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

New strings and resources.

  • UserInterface/Models/HeapSnapshotNode.js:

(WebInspector.HeapSnapshotNode.prototype.get shortestGCRootPath):
(WebInspector.HeapSnapshotNode.prototype._gcRootPaths.visitNode):
(WebInspector.HeapSnapshotNode.prototype._gcRootPaths):
Helper to get the shortest path from a GC root to the node.

  • UserInterface/Models/HeapSnapshotRootPath.js: Added.

(WebInspector.HeapSnapshotRootPath):
(WebInspector.HeapSnapshotRootPath.emptyPath):
(WebInspector.HeapSnapshotRootPath.prototype.get node):
(WebInspector.HeapSnapshotRootPath.prototype.get parent):
(WebInspector.HeapSnapshotRootPath.prototype.get pathComponent):
(WebInspector.HeapSnapshotRootPath.prototype.get rootNode):
(WebInspector.HeapSnapshotRootPath.prototype.get fullPath):
(WebInspector.HeapSnapshotRootPath.prototype.isRoot):
(WebInspector.HeapSnapshotRootPath.prototype.isEmpty):
(WebInspector.HeapSnapshotRootPath.prototype.isGlobalScope):
(WebInspector.HeapSnapshotRootPath.prototype.isPathComponentImpossible):
(WebInspector.HeapSnapshotRootPath.prototype.isFullPathImpossible):
(WebInspector.HeapSnapshotRootPath.prototype.appendInternal):
(WebInspector.HeapSnapshotRootPath.prototype.appendArrayIndex):
(WebInspector.HeapSnapshotRootPath.prototype.appendPropertyName):
(WebInspector.HeapSnapshotRootPath.prototype.appendVariableName):
(WebInspector.HeapSnapshotRootPath.prototype.appendGlobalScopeName):
(WebInspector.HeapSnapshotRootPath.prototype.appendEdge):
(WebInspector.HeapSnapshotRootPath.prototype._canPropertyNameBeDotAccess):
Helper class, like PropertyPath, for building a string path to
a HeapSnapshotNode. Typically the path is built up with
HeapSnapshotEdges and so you can build a string such as:
window.foo[0]["prop erty"]._foo.

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotList):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotDiff):
(WebInspector.HeapAllocationsTimelineView.prototype.shown):
(WebInspector.HeapAllocationsTimelineView.prototype.hidden):
(WebInspector.HeapAllocationsTimelineView.prototype.closed):
Propogate shown/hidden to the contentViewContainer.
Cleanup the contentViewContainer when closing.

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js:

(WebInspector.HeapSnapshotInstanceDataGridNode.logHeapSnapshotNode):
Helper for logging a HeapSnapshotNode value to the console. If the
path is possible from the root, just output the path in the console
otherwise use a synthetic "Heap Snapshot Object (@1234)" like string.
For strings, just get the preview as we won't get a real RemoteObject.

(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPath):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.appendPathRow):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.sanitizeClassName):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler.stringifyEdge):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._mouseoverHandler):
Give the @1234 id element a mouseover handler to display a popover
with the path from a root. Stop the path at "Window" if possible
to avoid displaying internals like "JSDOMWindowShell".

  • UserInterface/Views/HeapSnapshotInstancesContentView.css:

(.heap-snapshot .object-id):
(.heap-snapshot .object-id:hover):
(.heap-snapshot > .data-grid tr:not(.selected) td .object-id): Deleted.
(.heap-snapshot .icon):
(.heap-snapshot-instance-popover-content):
(.heap-snapshot-instance-popover-content table):
(.heap-snapshot-instance-popover-content tr):
(.heap-snapshot-instance-popover-content td):
(.heap-snapshot-instance-popover-content td.edge-name):
(.heap-snapshot-instance-popover-content td.object-data):
(.heap-snapshot-instance-popover-content .node):
(.heap-snapshot-instance-popover-content .node *):
Styles for contents of the popover.

  • UserInterface/Views/HeapSnapshotInstancesContentView.js:

(WebInspector.HeapSnapshotInstancesContentView.prototype.hidden):

  • UserInterface/Views/HeapSnapshotInstancesDataGridTree.js:

(WebInspector.HeapSnapshotInstancesDataGridTree):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get popover):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get popoverNode):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.set popoverNode):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.hidden):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.willDismissPopover):
Have a single popover for the entire tree. Cache and clear
contents of the popover when appropriate.

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

[WinCairo] Compile fix.
​https://bugs.webkit.org/show_bug.cgi?id=155463

Patch by Per Arne Vollan <​peavo@outlook.com> on 2016-03-14
Reviewed by Alex Christensen.

Get the NetworkStorageSession object from the document in the same way as other platforms do.

Source/WebCore:

  • loader/CookieJar.cpp:

(WebCore::storageSession):

Source/WebKit/win:

  • WebCoreSupport/WebFrameNetworkingContext.cpp:

(WebFrameNetworkingContext::storageSession):

  • WebCoreSupport/WebFrameNetworkingContext.h:

(WebFrameNetworkingContext::storageSession):

9:39 PM Changeset in webkit [198194] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.22.0.2

New tag.

9:26 PM Changeset in webkit [198193] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.6.9

New tag.

9:08 PM Changeset in webkit [198192] by Yusuke Suzuki
  • 6 edits in trunk/Source/JavaScriptCore

[JSC] Don't reference the properties of @Reflect directly
​https://bugs.webkit.org/show_bug.cgi?id=155436

Reviewed by Geoffrey Garen.

Reflect.ownKeys and Reflect.getOwnPropertyDescriptor can be altered with the user-crafted values.
Instead of referencing them directly, let's reference them through private names.

  • builtins/ObjectConstructor.js:

(assign):

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

(JSC::ObjectConstructor::finishCreation): Deleted.

  • runtime/ReflectObject.cpp:

(JSC::ReflectObject::finishCreation):

  • tests/stress/object-assign-correctness.js:

(runTests.):
(runTests.get let):
(Reflect.ownKeys):
(Reflect.getOwnPropertyDescriptor):
(test.let.handler.switch.case.string_appeared_here.return.get enumerable): Deleted.
(test.let.handler.getOwnPropertyDescriptor): Deleted.
(test.let.handler.ownKeys): Deleted.
(test.let.handler.get getProps): Deleted.
(test.let.handler): Deleted.
(test): Deleted.

9:01 PM Changeset in webkit [198191] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

<attachment> on iOS should paint its progress indicator instead of a green square
​https://bugs.webkit.org/show_bug.cgi?id=155482
<rdar://problem/24805991>

Reviewed by Simon Fraser.

No new tests; there are existing tests that will be enabled shortly.

  • rendering/RenderThemeIOS.mm:

(WebCore::getAttachmentProgress):
Clamp progress to 0-1.

(WebCore::paintAttachmentProgress):
Paint a pie.

8:53 PM Changeset in webkit [198190] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.23

New tag.

8:53 PM Changeset in webkit [198189] by Chris Dumez
  • 37 edits in trunk

Unreviewed, rolling out r197981.

Caused a massive PLT regression on Mac.

Reverted changeset:

"Font antialiasing (smoothing) changes when elements are
rendered into compositing layers"
​https://bugs.webkit.org/show_bug.cgi?id=23364
​http://trac.webkit.org/changeset/197981

8:51 PM Changeset in webkit [198188] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r198145.

This attempt to disable the feature did not fix the PLT
regression

Reverted changeset:

"Regression(r197981): Huge regression on Mac PLT"
​https://bugs.webkit.org/show_bug.cgi?id=155443
​http://trac.webkit.org/changeset/198145

7:19 PM WebKitGTK/2.12.x edited by Michael Catanzaro
(diff)
6:52 PM Changeset in webkit [198187] by Dewei Zhu
  • 4 edits in trunk/Tools

Add twisted-15.5.0 module to webkitpy.thirdparty.autoinstalled.
​https://bugs.webkit.org/show_bug.cgi?id=154667

Reviewed by Ryosuke Niwa and Simon Fraser.

Add twisted-15.5.0 to webkitpy.thirdparty.autoinstalled.
Minor fix for twsited_http_server used by run-benchmark that we should only stop http server while recieving 'GET /shutdown'.

  • Scripts/webkitpy/benchmark_runner/http_server_driver/http_server/twisted_http_server.py:

(ServerControl.render_POST): Deleted.

  • Scripts/webkitpy/thirdparty/init.py:

(AutoinstallImportHook.find_module):
(AutoinstallImportHook._install_twisted_15_5_0):

  • Scripts/webkitpy/thirdparty/init_unittest.py:

(ThirdpartyTest.test_imports):

6:40 PM Changeset in webkit [198186] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46.101-branch/Source

Versioning.

6:36 PM Changeset in webkit [198185] by bshafiei@apple.com
  • 1 copy in branches/safari-601.1.46.101-branch

New Branch.

6:31 PM Changeset in webkit [198184] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

6:27 PM Changeset in webkit [198183] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Remove errant space.

  • page/UserContentController.cpp:
6:21 PM Changeset in webkit [198182] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the windows build.

  • page/UserContentController.cpp:
5:59 PM Changeset in webkit [198181] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

REGRESSION (r197114): Crash in WebCore::MediaDevicesRequest::didCompletePermissionCheck
​https://bugs.webkit.org/show_bug.cgi?id=155453

Reviewed by Eric Carlson.
<rdar://problem/24879447>

Reviewed by Dan Bates.

Further refinement to test case: Remove use of 'setTimeout', and ensure the code gets
called by using 'testRunner.waitUntilDone()'/'testRunner.notifyDone()'.

  • fast/mediastream/enumerating-crash.html:
5:48 PM Changeset in webkit [198180] by weinig@apple.com
  • 42 edits
    4 adds in trunk/Source

Add a baseURL parameter to _WKUserStyleSheet
​https://bugs.webkit.org/show_bug.cgi?id=155219

Reviewed by Tim Horton.

Source/WebCore:

  • Moves to a model for user content where instead of each page having a WebCore::UserContentController object, we have an abstract WebCore::UserContentProvider interface that can be implemented at the WebKit level. For now, legacy WebKit continues to use the old UserContentController, which implements WebCore::UserContentProvider, and WebKit2 implements its own implementation so it can store additional state.
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache):
Switch to using forEachUserStyleSheet on the UserContentProvider.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):
Remove null check now that we always have a UserContentProvider.

  • loader/EmptyClients.cpp:

(WebCore::fillWithEmptyClients):

  • loader/EmptyClients.h:

Add new EmptyClients.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):
Remove null check now that we always have a UserContentProvider.

  • loader/PingLoader.cpp:

(WebCore::processContentExtensionRulesForLoad):
Remove null check now that we always have a UserContentProvider.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal):
Remove null check now that we always have a UserContentProvider.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
Remove null check now that we always have a UserContentProvider.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
Remove null checks now that we always have a UserContentProvider, and userMessageHandlerDescriptors
returns a reference.

(WebCore::DOMWindow::open):
Remove null check now that we always have a UserContentProvider.

  • page/Frame.cpp:

(WebCore::Frame::injectUserScripts):
Simplify by lifting document check out of the main loop and using forEachUserScript.

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::~Page):
(WebCore::Page::userContentProvider):
(WebCore::Page::setUserContentProvider):
(WebCore::Page::setUserContentController): Deleted.

  • page/Page.h:

(WebCore::Page::userContentController): Deleted.

  • page/PageConfiguration.h:

Store the UserContentProvider in a Ref, and require PageConfigurations to provide one. This
removes a bunch of null checks and simplifies the code.

  • page/UserContentController.cpp:

(WebCore::UserContentController::~UserContentController):
(WebCore::UserContentController::forEachUserScript):
(WebCore::UserContentController::forEachUserStyleSheet):
(WebCore::UserContentController::addUserScript):
(WebCore::UserContentController::removeUserScript):
(WebCore::UserContentController::removeUserScripts):
(WebCore::UserContentController::addUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheets):
(WebCore::UserContentController::addUserMessageHandlerDescriptor):
(WebCore::UserContentController::removeUserMessageHandlerDescriptor):
(WebCore::UserContentController::addUserContentExtension):
(WebCore::UserContentController::removeUserContentExtension):
(WebCore::UserContentController::removeAllUserContentExtensions):
(WebCore::UserContentController::removeAllUserContent):
(WebCore::UserContentController::addPage): Deleted.
(WebCore::UserContentController::removePage): Deleted.
(WebCore::contentExtensionsEnabled): Deleted.
(WebCore::UserContentController::processContentExtensionRulesForLoad): Deleted.
(WebCore::UserContentController::actionsForResourceLoad): Deleted.

  • page/UserContentController.h:

(WebCore::UserContentController::userScripts): Deleted.
(WebCore::UserContentController::userStyleSheets): Deleted.
(WebCore::UserContentController::userMessageHandlerDescriptors): Deleted.
Add inheritance from UserContentProvider and simplify things by removing unique_ptrs
that were holding the member variables. There is usually only one UserContentController
so having these in unique_ptrs doesn't make much sense.

  • page/UserContentProvider.cpp: Added.

(WebCore::UserContentProvider::UserContentProvider):
(WebCore::UserContentProvider::~UserContentProvider):
(WebCore::UserContentProvider::addPage):
(WebCore::UserContentProvider::removePage):
(WebCore::UserContentProvider::invalidateInjectedStyleSheetCacheInAllFramesInAllPages):
(WebCore::contentExtensionsEnabled):
(WebCore::UserContentProvider::processContentExtensionRulesForLoad):
(WebCore::UserContentProvider::actionsForResourceLoad):

  • page/UserContentProvider.h: Added.

Add abstract class for providing user content and add some helpers on it.

  • page/UserMessageHandlerDescriptor.h:

(WebCore::UserMessageHandlerDescriptor::create):
(WebCore::UserMessageHandlerDescriptor::client):
(WebCore::UserMessageHandlerDescriptor::invalidateClient):

  • page/UserMessageHandlersNamespace.cpp:

(WebCore::UserMessageHandlersNamespace::handler):
Simplify now that userContentProvider() and userMessageHandlerDescriptors() are references.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
(-[WebView setGroupName:]):
Update to account for the name change from UserContentController -> UserContentProvider.

Source/WebKit2:

  • Moves to a model for user content where instead of using a WebCore::UserContentController object, we implement the new WebCore::UserContentProvider interface (on the existing WebUserContentController object).
  • Uses this to maintain maps of UserStylesSheets and UserScripts along with their identifiers, freeing up the URL, which had been acting as the identifier, to be used as the baseURL which was what it was intended for.
  • Adds a baseURL property to _WKUserStyleSheet.
  • WebKit2.xcodeproj/project.pbxproj:

Add new files.

  • Scripts/webkit/messages.py:

(headers_for_type):
Add support for sending WebUserContentControllerDataTypes.

  • Shared/WebUserContentControllerDataTypes.cpp: Added.

(WebKit::WebUserScriptData::encode):
(WebKit::WebUserScriptData::decode):
(WebKit::WebUserStyleSheetData::encode):
(WebKit::WebUserStyleSheetData::decode):

  • Shared/WebUserContentControllerDataTypes.h: Added.

Add helper types for sending user content over IPC.

  • UIProcess/API/APIUserScript.cpp:

(API::UserScript::generateUniqueURL):
(API::UserScript::UserScript):

  • UIProcess/API/APIUserScript.h:
  • UIProcess/API/APIUserStyleSheet.cpp:

(API::UserStyleSheet::generateUniqueURL):
(API::UserStyleSheet::UserStyleSheet):

  • UIProcess/API/APIUserStyleSheet.h:

Add identifiers for tracking across processes.

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

(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]):
(-[_WKUserStyleSheet baseURL]):
Add new initializer which takes a baseURL as well as an accessor for the baseURL.

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserScript):
(WebKit::WebUserContentControllerProxy::removeUserScript):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
Pass identifiers as well as user content.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::addUserScript):
(WebKit::InjectedBundle::addUserStyleSheet):
Move user content in via move semantics rather than using a unique_ptr.

(WebKit::InjectedBundle::removeUserScript):
(WebKit::InjectedBundle::removeUserStyleSheet):
(WebKit::InjectedBundle::removeUserScripts):
(WebKit::InjectedBundle::removeUserStyleSheets):
(WebKit::InjectedBundle::removeAllUserContent):
Update for new function signatures.

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::WebUserContentController):
(WebKit::WebUserContentController::~WebUserContentController):
(WebKit::WebUserContentController::addUserContentWorlds):
(WebKit::WebUserContentController::removeUserContentWorlds):
(WebKit::WebUserContentController::addUserScripts):
(WebKit::WebUserContentController::removeUserScript):
(WebKit::WebUserContentController::removeAllUserScripts):
(WebKit::WebUserContentController::addUserStyleSheets):
(WebKit::WebUserContentController::removeUserStyleSheet):
(WebKit::WebUserContentController::removeAllUserStyleSheets):
(WebKit::WebUserContentController::addUserScriptMessageHandlers):
(WebKit::WebUserContentController::removeUserScriptMessageHandler):
(WebKit::WebUserContentController::addUserContentExtensions):
(WebKit::WebUserContentController::removeUserContentExtension):
(WebKit::WebUserContentController::removeAllUserContentExtensions):
(WebKit::WebUserContentController::addUserScriptInternal):
(WebKit::WebUserContentController::addUserScript):
(WebKit::WebUserContentController::removeUserScriptWithURL):
(WebKit::WebUserContentController::removeUserScriptInternal):
(WebKit::WebUserContentController::removeUserScripts):
(WebKit::WebUserContentController::addUserStyleSheetInternal):
(WebKit::WebUserContentController::addUserStyleSheet):
(WebKit::WebUserContentController::removeUserStyleSheetWithURL):
(WebKit::WebUserContentController::removeUserStyleSheetInternal):
(WebKit::WebUserContentController::removeUserStyleSheets):
(WebKit::WebUserContentController::removeAllUserContent):
(WebKit::WebUserContentController::forEachUserScript):
(WebKit::WebUserContentController::forEachUserStyleSheet):

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.messages.in:

Convert to inheriting from UserContentProvider, rather than containing a UserContentController.
This means adding the storage for the user content, which has been simplified to avoid using
unique_ptrs.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::addUserScript):
(WebKit::WebPage::addUserStyleSheet):
(WebKit::WebPage::removeAllUserContent):
Update to call the WebUserContentController, rather than going to the UserContentController, which
no longer exists.

  • WebProcess/WebPage/WebPageGroupProxy.cpp:

(WebKit::WebPageGroupProxy::userContentController):

  • WebProcess/WebPage/WebPageGroupProxy.h:

Return the WebUserContentController rather than old UserContentController.

5:47 PM Changeset in webkit [198179] by enrica@apple.com
  • 4 edits
    1 add
    2 deletes in trunk/Source/WebCore

iOS: RTFD format is not available in the pasteboard after copy/cut.
​https://bugs.webkit.org/show_bug.cgi?id=155477
rdar://problem/23500600

Reviewed by Tim Horton.

WebKit is using UTTypeRTFD instead of UTTypeFlatRTFD that is the
proper RTFD format for pastedboard. I also discovered that, when
we create the NSTextAttachment in the NSAttributedString we produce
from the DOM range, we are not generating a file name with the
appropriate extension for the MIME type. The iOS specific implementation
of the MIMETypeRegistry functions were empty.
There is no need to have a differentiation between OS X and iOS, so
we now have only one file called MIMETypeRegistryCocoa.mm.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cocoa/MIMETypeRegistryCocoa.mm: Added.

(WebCore::MIMETypeRegistry::getMIMETypeForExtension):
(WebCore::MIMETypeRegistry::getExtensionsForMIMEType):
(WebCore::MIMETypeRegistry::getPreferredExtensionForMIMEType):
(WebCore::MIMETypeRegistry::isApplicationPluginMIMEType):

  • platform/ios/MIMETypeRegistryIOS.mm: Removed.
  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):
(WebCore::Pasteboard::supportedPasteboardTypes):
(WebCore::Pasteboard::hasData):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::write):

  • platform/mac/MIMETypeRegistryMac.mm: Removed.
5:39 PM Changeset in webkit [198178] by dbates@webkit.org
  • 9 edits
    4 adds in trunk

Web Inspector: Display Content Security Policy hash in details sidebar for script and style elements
​https://bugs.webkit.org/show_bug.cgi?id=155466
<rdar://problem/25152480>

Reviewed by Joseph Pecoraro and Timothy Hatcher.

Source/JavaScriptCore:

Add property contentSecurityPolicyHash to store the CSP hash for an HTML style element or an
applicable HTML script element.

  • inspector/protocol/DOM.json:

Source/WebCore:

For convenience, display the SHA-256 Content Security Policy (CSP) hash in the node details
sidebar for the selected HTML script element or HTML style element. A CSP script hash is
only applicable to inline JavaScript scripts. Therefore, we will display a hash for HTML
script elements only if they do not have a src attribute.

Tests: inspector/dom/csp-big5-hash.html

inspector/dom/csp-hash.html

  • inspector/InspectorDOMAgent.cpp:

(WebCore::computeContentSecurityPolicySHA256Hash): Added.
(WebCore::InspectorDOMAgent::buildObjectForNode): For an applicable HTML script- or style-
element, pass the computed SHA-256 CSP hash to the Inspector front end.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js: Add English localized string for the CSP hash UI label.
  • UserInterface/Models/DOMNode.js:

(WebInspector.DOMNode): Initialize the instance variable this._contentSecurityPolicyHash
with the value passed from the Inspector back end.
(WebInspector.DOMNode.prototype.contentSecurityPolicyHash): Returns the CSP hash for this node.

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WebInspector.DOMNodeDetailsSidebarPanel): Append a row to the end of section Identity to display
the CSP hash (if applicable).
(WebInspector.DOMNodeDetailsSidebarPanel.prototype.refresh): Query the underlying WebInspector.DOMNode
for the CSP hash of the selected node.

LayoutTests:

Add tests to ensure that the WebInspector.DOMNode object associated with an HTML style element
or applicable HTML script element has a valid CSP hash.

  • inspector/dom/csp-big5-hash-expected.txt: Added.
  • inspector/dom/csp-big5-hash.html: Added.
  • inspector/dom/csp-hash-expected.txt: Added.
  • inspector/dom/csp-hash.html: Added.
5:22 PM Changeset in webkit [198177] by jh718.park@samsung.com
  • 94 edits in trunk/Source

Purge PassRefPtr from ArrayBuffer, ArchiveResource, Pasteboard, LegacyWebArchive and DataObjectGtk
​https://bugs.webkit.org/show_bug.cgi?id=150497

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • runtime/ArrayBuffer.h:

(JSC::ArrayBuffer::create):
(JSC::ArrayBuffer::createAdopted):
(JSC::ArrayBuffer::createFromBytes):
(JSC::ArrayBuffer::createUninitialized):
(JSC::ArrayBuffer::slice):
(JSC::ArrayBuffer::sliceImpl):

Source/WebCore:

No new tests, no new behaviours.

  • Modules/indexeddb/IDBGetResult.h:

(WebCore::IDBGetResult::IDBGetResult):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::getIndexRecord):

  • Modules/mediastream/RTCDataChannel.cpp:

(WebCore::RTCDataChannel::didReceiveRawData):

  • dom/MessageEvent.cpp:

(WebCore::MessageEvent::MessageEvent):

  • dom/MessageEvent.h:
  • editing/Editor.cpp:

(WebCore::Editor::selectedRange):

  • editing/Editor.h:
  • editing/FrameSelection.h:

(WebCore::FrameSelection::toNormalizedRange):

  • editing/VisiblePosition.cpp:

(WebCore::makeRange):

  • editing/VisiblePosition.h:
  • editing/VisibleSelection.cpp:

(WebCore::VisibleSelection::toNormalizedRange):

  • editing/VisibleSelection.h:
  • editing/VisibleUnits.cpp:

(WebCore::enclosingTextUnitOfGranularity):
(WebCore::wordRangeFromPosition):
(WebCore::rangeExpandedByCharactersInDirectionAtWordBoundary):
(WebCore::rangeExpandedAroundPositionByCharacters):

  • editing/VisibleUnits.h:
  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::_addAttachmentForElement):
(fileWrapperForURL):

  • editing/efl/EditorEfl.cpp:

(WebCore::Editor::webContentFromPasteboard):

  • editing/gtk/EditorGtk.cpp:

(WebCore::createFragmentFromPasteboardData):
(WebCore::Editor::webContentFromPasteboard):

  • editing/ios/EditorIOS.mm:

(WebCore::dataInRTFDFormat):
(WebCore::dataInRTFFormat):
(WebCore::Editor::selectionInWebArchiveFormat):
(WebCore::Editor::WebContentReader::addFragment):
(WebCore::Editor::WebContentReader::readWebArchive):
(WebCore::Editor::WebContentReader::readRTFD):
(WebCore::Editor::WebContentReader::readRTF):
(WebCore::Editor::WebContentReader::readImage):
(WebCore::Editor::WebContentReader::readURL):
(WebCore::Editor::webContentFromPasteboard):
(WebCore::Editor::pasteWithPasteboard):
(WebCore::Editor::createFragmentAndAddResources):
(WebCore::Editor::createFragmentForImageResourceAndAddResource):

  • editing/mac/EditorMac.mm:

(WebCore::Editor::selectionInWebArchiveFormat):
(WebCore::Editor::adjustedSelectionRange):
(WebCore::dataInRTFDFormat):
(WebCore::dataInRTFFormat):
(WebCore::Editor::dataSelectionForPasteboard):
(WebCore::Editor::WebContentReader::readWebArchive):
(WebCore::Editor::WebContentReader::readRTFD):
(WebCore::Editor::WebContentReader::readRTF):
(WebCore::Editor::WebContentReader::readImage):
(WebCore::Editor::WebContentReader::readURL):
(WebCore::Editor::webContentFromPasteboard):
(WebCore::Editor::createFragmentForImageResourceAndAddResource):
(WebCore::Editor::createFragmentAndAddResources):

  • editing/win/EditorWin.cpp:

(WebCore::createFragmentFromPlatformData):
(WebCore::Editor::webContentFromPasteboard):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::archive):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::mainResourceData):
(WebCore::DocumentLoader::maybeCreateArchive):
(WebCore::DocumentLoader::addArchiveResource):
(WebCore::DocumentLoader::mainResource):

  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadArchive):

  • loader/SubstituteData.h:

(WebCore::SubstituteData::SubstituteData):
(WebCore::SubstituteData::isValid):

  • loader/SubstituteResource.h:

(WebCore::SubstituteResource::data):
(WebCore::SubstituteResource::SubstituteResource):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::didReceiveResponse):
(WebCore::ApplicationCacheGroup::didReceiveData):
(WebCore::ApplicationCacheGroup::didFail):
(WebCore::ApplicationCacheGroup::didReceiveManifestData):
(WebCore::ApplicationCacheGroup::didFinishLoadingManifest):

  • loader/appcache/ApplicationCacheHost.cpp:

(WebCore::ApplicationCacheHost::maybeLoadMainResource):
(WebCore::ApplicationCacheHost::maybeLoadSynchronously):
(WebCore::ApplicationCacheHost::maybeLoadFallbackSynchronously):

  • loader/appcache/ApplicationCacheResource.cpp:

(WebCore::ApplicationCacheResource::ApplicationCacheResource):
(WebCore::ApplicationCacheResource::deliver):
(WebCore::ApplicationCacheResource::estimatedSizeInStorage):

  • loader/appcache/ApplicationCacheResource.h:

(WebCore::ApplicationCacheResource::create):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::writeDataToUniqueFileInDirectory):

  • loader/appcache/ApplicationCacheStorage.h:
  • loader/archive/ArchiveFactory.cpp:

(WebCore::archiveFactoryCreate):
(WebCore::ArchiveFactory::create):

  • loader/archive/ArchiveFactory.h:
  • loader/archive/ArchiveResource.cpp:

(WebCore::ArchiveResource::ArchiveResource):
(WebCore::ArchiveResource::create):

  • loader/archive/ArchiveResource.h:
  • loader/archive/ArchiveResourceCollection.cpp:

(WebCore::ArchiveResourceCollection::addResource):

  • loader/archive/ArchiveResourceCollection.h:
  • loader/archive/cf/LegacyWebArchive.cpp:

(WebCore::LegacyWebArchive::createPropertyListRepresentation):
(WebCore::LegacyWebArchive::createResource):
(WebCore::LegacyWebArchive::create):
(WebCore::LegacyWebArchive::createFromSelection):

  • loader/archive/cf/LegacyWebArchive.h:
  • loader/archive/mhtml/MHTMLArchive.cpp:

(WebCore::MHTMLArchive::create):

  • loader/archive/mhtml/MHTMLArchive.h:
  • loader/archive/mhtml/MHTMLParser.cpp:

(WebCore::MHTMLParser::parseArchive):
(WebCore::MHTMLParser::parseArchiveWithHeader):
(WebCore::MHTMLParser::parseNextPart):

  • loader/archive/mhtml/MHTMLParser.h:
  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::didAddClient):

  • loader/icon/IconDatabase.cpp:

(WebCore::loadDefaultIconRecord):

  • loader/icon/IconRecord.cpp:

(WebCore::IconRecord::setImageData):

  • loader/icon/IconRecord.h:
  • platform/Pasteboard.h:
  • platform/PasteboardStrategy.h:
  • platform/PlatformPasteboard.h:
  • platform/SharedBuffer.cpp:

(WebCore::SharedBuffer::createArrayBuffer):
(WebCore::utf8Buffer):

  • platform/SharedBuffer.h:

(WebCore::SharedBuffer::create):

  • platform/cf/SharedBufferCF.cpp:

(WebCore::SharedBuffer::wrapCFData):

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::replacementData):

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::replacementData):

  • platform/graphics/Image.cpp:

(WebCore::Image::setData):

  • platform/graphics/Image.h:
  • platform/gtk/DataObjectGtk.cpp:

(WebCore::DataObjectGtk::forClipboard):

  • platform/gtk/DataObjectGtk.h:

(WebCore::DataObjectGtk::create):

  • platform/gtk/PasteboardGtk.cpp:

(WebCore::Pasteboard::Pasteboard):
(WebCore::Pasteboard::dataObject):

  • platform/ios/PasteboardIOS.mm:

(WebCore::Pasteboard::read):

  • platform/ios/PlatformPasteboardIOS.mm:

(WebCore::PlatformPasteboard::bufferForType):
(WebCore::PlatformPasteboard::readBuffer):

  • platform/mac/PasteboardMac.mm:

(WebCore::writeFileWrapperAsRTFDAttachment):
(WebCore::Pasteboard::read):

  • platform/mac/PlatformPasteboardMac.mm:

(WebCore::PlatformPasteboard::bufferForType):

  • platform/mac/SharedBufferMac.mm:

(WebCore::SharedBuffer::wrapNSData):
(WebCore::SharedBuffer::createFromReadingFile):

  • platform/network/MIMEHeader.cpp:

(WebCore::retrieveKeyValuePairs):
(WebCore::MIMEHeader::parseHeader):

  • platform/network/MIMEHeader.h:
  • platform/soup/SharedBufferSoup.cpp:

(WebCore::SharedBuffer::wrapSoupBuffer):

  • platform/win/ClipboardUtilitiesWin.cpp:

(WebCore::fragmentFromFilenames):
(WebCore::fragmentFromCFHTML):
(WebCore::fragmentFromHTML):

  • platform/win/ClipboardUtilitiesWin.h:
  • platform/win/PasteboardWin.cpp:

(WebCore::Pasteboard::documentFragment):

Source/WebKit/mac:

  • DOM/WebDOMOperations.mm:

(-[DOMNode webArchive]):
(-[DOMNode webArchiveByFilteringSubframes:]):

  • WebCoreSupport/WebPlatformStrategies.h:
  • WebCoreSupport/WebPlatformStrategies.mm:

(WebPlatformStrategies::bufferForType):
(WebPlatformStrategies::readBufferFromPasteboard):

  • WebView/WebArchive.mm:

(-[WebArchive initWithData:]):

  • WebView/WebDataSource.mm:

(-[WebDataSource webArchive]):
(-[WebDataSource addSubresource:]):

  • WebView/WebResource.mm:

(-[WebResource encodeWithCoder:]):
(-[WebResource data]):
(-[WebResource _stringValue]):
(-[WebResource _initWithCoreResource:]): Deleted.

Source/WebKit/win:

  • WebArchive.cpp:

(WebArchive::initWithNode):

Source/WebKit2:

  • Shared/APIWebArchive.mm:

(API::WebArchive::WebArchive):

  • Shared/APIWebArchiveResource.mm:

(API::WebArchiveResource::data):

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::PDFPlugin::addArchiveResource):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.h:
  • WebProcess/WebCoreSupport/ios/WebEditorClientIOS.mm:

(WebKit::WebEditorClient::documentFragmentFromAttributedString):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):

  • WebProcess/WebPage/WebFrame.cpp:

(WebKit::WebFrame::webArchiveData):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::resourceDataForFrame):

4:35 PM Changeset in webkit [198176] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Andy VanWagoner no longer has time to own Intl

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-14

  • features.json:

Andy is busy with other things.

Andy, thanks for your amazing work on Intl and your dedication
to making things right.

4:35 PM Changeset in webkit [198175] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r197974): HeapAllocationsTimelineView broken, doesn't handle Timeline Sidebar Navigation removal
​https://bugs.webkit.org/show_bug.cgi?id=155458
<rdar://problem/25150803>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-14
Reviewed by Timothy Hatcher.

  • UserInterface/Views/HeapAllocationsTimelineView.js:

(WebInspector.HeapAllocationsTimelineView):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord):
(WebInspector.HeapAllocationsTimelineView.prototype.get selectionPathComponents):
(WebInspector.HeapAllocationsTimelineView.prototype.layout):
(WebInspector.HeapAllocationsTimelineView.prototype._compareHeapSnapshotsClicked):
(WebInspector.HeapAllocationsTimelineView.prototype._dataGridNodeSelected):
(WebInspector.HeapAllocationsTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
Update the TimelineView now that there is no sidebar.
Remove any TreeOutline logic and replace with DataGrid logic.

4:33 PM Changeset in webkit [198174] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION(r198026): Can't click on Snapshot in Timeline Overview
​https://bugs.webkit.org/show_bug.cgi?id=155457
<rdar://problem/25150706>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-14
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler.prototype._handleClick):
The conditional was accidentally inverted in r198026.

4:31 PM Changeset in webkit [198173] by Julien Brianceau
  • 2 edits in trunk/Source/JavaScriptCore

[mips] Fix unaligned access in LLINT.
​https://bugs.webkit.org/show_bug.cgi?id=153228

Address loads used with btbxx opcodes were wrongly converted to lw
instruction instead of lbu, leading to unaligned access on mips
platforms. This is not a bug as it's silently fixed up by kernel,
but it's more efficient to avoid unaligned accesses for mips.

Reviewed by Geoffrey Garen.

  • offlineasm/mips.rb:
4:28 PM Changeset in webkit [198172] by bshafiei@apple.com
  • 8 edits in tags/Safari-602.1.22.2/Source

Merged r198167. rdar://problem/25128146

4:28 PM Changeset in webkit [198171] by fpizlo@apple.com
  • 9 edits in trunk

REGRESSION(r194394): >2x slow-down on CDjs
​https://bugs.webkit.org/show_bug.cgi?id=155471

Unreviewed (rollout).

Source/JavaScriptCore:

This revision changes localeCompare() so that it's *much* slower than before. It's
understandable that sometimes things will get a tiny bit slower when implementing new
language features, but more than 2x regression on a major benchmark is not OK.

This rolls out that change. We can reland it once we think about how to do it in a
performant way.

  • builtins/StringPrototype.js:

(search):
(localeCompare): Deleted.

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):

LayoutTests:

  • js/dom/script-tests/string-prototype-properties.js:
  • js/dom/string-prototype-properties-expected.txt:
  • js/script-tests/string-localeCompare.js:
  • js/string-localeCompare-expected.txt:
  • js/string-localeCompare.html:
4:26 PM Changeset in webkit [198170] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.22.2/Source

Versioning.

4:23 PM Changeset in webkit [198169] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.22.2

New tag.

4:20 PM Changeset in webkit [198168] by mark.lam@apple.com
  • 8 edits in trunk

Need to distinguish between Symbol() and Symbol("").
​https://bugs.webkit.org/show_bug.cgi?id=155438

Reviewed by Saam Barati.

Source/JavaScriptCore:

  • runtime/PrivateName.h:

(JSC::PrivateName::PrivateName):

Source/WTF:

While toString of both Symbol() and Symbol("") yields "Symbol()", Function.name
should yield "" and "[]" respectively. Hence, we need to tell between the two.
This functionality will be needed later in ​https://bugs.webkit.org/show_bug.cgi?id=155437.

We achieve this by creating another singleton instance like the empty StringImpl
as the null StringImpl. isNullSymbol() tests if the Stringimpl instance is a
symbol, and its substring is the null() singleton.

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createNullSymbol):
(WTF::StringImpl::containsOnlyWhitespace):
(WTF::StringImpl::createSymbolEmpty): Deleted.

  • wtf/text/StringImpl.h:

(WTF::StringImpl::tryCreateUninitialized):
(WTF::StringImpl::stringKind):
(WTF::StringImpl::isSymbol):
(WTF::StringImpl::isAtomic):
(WTF::StringImpl::isNullSymbol):

  • wtf/text/StringStatics.cpp:

(WTF::StringImpl::null):

Tools:

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::TEST):

  • Test that the a symbol with an empty string is not equivalent to a null symbol.
4:14 PM Changeset in webkit [198167] by oliver@apple.com
  • 8 edits in trunk/Source

Temporarily disable the separated heap.
​https://bugs.webkit.org/show_bug.cgi?id=155472

Reviewed by Geoffrey Garen.

Temporarily disable this.

  • Configurations/FeatureDefines.xcconfig:
3:58 PM Changeset in webkit [198166] by Beth Dakin
  • 3 edits in trunk/Source/WebKit2

[iOS] WKPreviewAction conforms to NSCopying but doesn’t override -
copyWithZone:
​https://bugs.webkit.org/show_bug.cgi?id=155395

Reviewed by Sam Weinig.

  • UIProcess/API/Cocoa/WKPreviewActionItem.mm:

(-[WKPreviewAction copyWithZone:]):

3:38 PM Changeset in webkit [198165] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/funcion-apply.html as flaky on mac debug
​https://bugs.webkit.org/show_bug.cgi?id=155411

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:22 PM Changeset in webkit [198164] by timothy@apple.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: cssmin.py does not handle calc(var(--toolbar-height) + var(--tab-bar-height))

​https://bugs.webkit.org/show_bug.cgi?id=155464
rdar://problem/25152196

Reviewed by Joseph Pecoraro.

  • Scripts/cssmin.py:

(cssminify): Check for var when stripping spaces around + and -.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview.prototype._viewModeDidChange):
Drive-by fix to add a missing semi-colon found by the copy-user-interface-resources-dryrun.rb script.

3:08 PM Changeset in webkit [198163] by tonikitoo@webkit.org
  • 4 edits
    6 adds in trunk

Selecting with shift+drag results in unexpected drag-n-drop
​https://bugs.webkit.org/show_bug.cgi?id=155314

Reviewed by Darin Adler.

Source/WebCore:

Test: editing/selection/shift-drag-selection-no-drag-n-drop.html

Whenever user tries to extend an existing text selection by dragging the mouse
(left button hold) with shift key pressed, WebKit enters drag-n-drop mode.
This behavior does not match common editing behavior out there, including other
browsers' (Firefox, Opera/Presto and IE).

Patch changes WebKit so that whenever one extends a selection with mouse
and shift key pressed off of a #text node, it does not enter drag-n-drop mode.

Additionally, patch also adds some further tests to ensure that when
selection is extended off of either a link or an image, drag-n-drop does
get triggered, no matter if shift key is pressed.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMousePressEvent):

LayoutTests:

Tests that ensure that WebKit:

1) does not enter drag-n-drop mode and extending selection by dragging with mouse with shift key is pressed,

off of a #text node.

2) does enter drag-n-drop mode and extending selection by dragging with mouse with shift key is pressed,

off of a link.

3) does enter drag-n-drop mode and extending selection by dragging with mouse with shift key is pressed,

off of an image.

Note that (1) is a behavior changed by this patch, whereas (2) and (3) represent existing
behavior that is kept.
Tests are also skip for iOS similarly to other drag-n-drop related tests.

  • fast/events/shift-drag-selection-no-drag-n-drop-expected.txt: Added.
  • fast/events/shift-drag-selection-no-drag-n-drop.html: Added.
  • fast/events/shift-drag-selection-on-link-triggers-drag-n-drop-expected.txt: Added.
  • fast/events/shift-drag-selection-on-link-triggers-drag-n-drop.html: Added.
  • fast/events/shift-drag-selection-on-image-triggers-drag-n-drop-expected.txt: Added.
  • fast/events/shift-drag-selection-on-image-triggers-drag-n-drop.html: Added.
3:03 PM Changeset in webkit [198162] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking storage/indexeddb/transaction-abort-private.html as flaky on mac-wk1
​https://bugs.webkit.org/show_bug.cgi?id=155067

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
3:03 PM Changeset in webkit [198161] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Skip test storage/indexeddb/odd-strings.html
​https://bugs.webkit.org/show_bug.cgi?id=154975

Unreviewed test gardening.

Removing duplicate expectation for test and skipping since it fails or times out on every run.

2:53 PM Changeset in webkit [198160] by Brent Fulgham
  • 3 edits
    2 adds in trunk

REGRESSION (r197114): Crash in WebCore::MediaDevicesRequest::didCompletePermissionCheck
​https://bugs.webkit.org/show_bug.cgi?id=155453
<rdar://problem/24879447>

Reviewed by Daniel Bates.

Source/WebCore:

Tested by fast/mediastream/enumerating-crash.html.

  • Modules/mediastream/MediaDevicesRequest.cpp:

(WebCore::MediaDevicesRequest::didCompletePermissionCheck): Prevent UserMediaPermissionCheck object from being
destroyed before the method completes.

LayoutTests:

  • fast/mediastream/enumerating-crash-expected.txt: Added.
  • fast/mediastream/enumerating-crash.html: Added.
2:50 PM Changeset in webkit [198159] by commit-queue@webkit.org
  • 6 edits in trunk/Source

Reduce generated JSON HeapSnapshot size
​https://bugs.webkit.org/show_bug.cgi?id=155460

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-14
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Adjust the HeapSnapshot JSON to better reduce its size.
Changes include:

  • avoid inner array groups and instead just have a large array for nodes/edges. This removes lots of small array allocations.
  • eliminate duplicate edges
  • avoid duplicating edge names by including them in their own table;
  • now both the nodes and edges lists hold only integers
  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::json):
Add some more documentation for the slightly modified format.
While generating, clear data structures as early as possible.

  • heap/HeapSnapshotBuilder.h:

(JSC::HeapSnapshotEdge::HeapSnapshotEdge):
During JSON building, the edge's cell pointers are converted to the
identifier they point to. This avoids having to re-lookup the identifier.

  • tests/heapProfiler/driver/driver.js:

(CheapHeapSnapshotEdge):
(CheapHeapSnapshot):
(CheapHeapSnapshot.prototype.edgeNameFromTableIndex):
(HeapSnapshot):
Update test driver for slightly different snapshot format.

Source/WebInspectorUI:

  • UserInterface/Models/HeapSnapshot.js:

(WebInspector.HeapSnapshot.fromPayload):
Update for the slightly modified format.

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

Unreviewed, rolling out r198095.
​https://bugs.webkit.org/show_bug.cgi?id=155467

Made text look poor (Requested by JoePeck on #webkit).

Reverted changeset:

"Web Inspector: Large repaints when typing any character in
console"
​https://bugs.webkit.org/show_bug.cgi?id=155387
​http://trac.webkit.org/changeset/198095

2:33 PM WebKitGTK/2.10.x edited by clopez@igalia.com
(diff)
2:32 PM Changeset in webkit [198157] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix crash when reloading a page using requestAnimationFrame on iOS
​https://bugs.webkit.org/show_bug.cgi?id=155465
rdar://problem/25100202

Reviewed by Tim Horton.

On iOS, it's possible for all clients for a DisplayRefreshMonitor
to be unregistered, but still get a subsequent displayDidRefresh() for that monitor.
In this case, we would remove(notFound) which release-asserts.

Fix by just checking for notFound.

Unable to test because requestAnimationFrame doesn't work in the simulator.

  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):

2:16 PM Changeset in webkit [198156] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Remove usage of -[UIGestureRecognizer requireOtherGestureToFail:]
​https://bugs.webkit.org/show_bug.cgi?id=155461
rdar://problem/25143282

Reviewed by Beth Dakin.

Use -[UIGestureRecognizer requireGestureRecognizerToFail:] instead, which has been API ever since UIGestureRecognizer was added.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _createAndConfigureDoubleTapGestureRecognizer]):

1:55 PM Changeset in webkit [198155] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[WinCairo][MediaFoundation] Implement float versions of MediaPlayer methods.
​https://bugs.webkit.org/show_bug.cgi?id=155357

Reviewed by Brent Fulgham.

It is better to implement the float versions of some of the MediaPlayer methods,
since the default implementation of the double versions is to call the float version.
Also added override keyword to overridden methods.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::seeking):
(WebCore::MediaPlayerPrivateMediaFoundation::seek):
(WebCore::MediaPlayerPrivateMediaFoundation::setRate):
(WebCore::MediaPlayerPrivateMediaFoundation::duration):
(WebCore::MediaPlayerPrivateMediaFoundation::currentTime):
(WebCore::MediaPlayerPrivateMediaFoundation::seekDouble): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::setRateDouble): Deleted.
(WebCore::MediaPlayerPrivateMediaFoundation::durationDouble): Deleted.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
1:55 PM Changeset in webkit [198154] by keith_miller@apple.com
  • 26 edits
    1 add in trunk/Source/JavaScriptCore

We should be able to eliminate cloned arguments objects that use the length property
​https://bugs.webkit.org/show_bug.cgi?id=155391

Reviewed by Geoffrey Garen.

Previously if a programmer tried to use arguments.length in a strict function we would not eliminate the
arguments object. We were unable to eliminate the arguments object because the user would get a cloned arguments
object, which does not special case the length property. Thus, in order to get arguments elimination for cloned
we need to add a special case. There are two things that need to happen for the elimination to succeed.

First, we need to eliminate the CheckStructure blocking the GetByOffset for the length property. In order to
eliminate the check structure we need to prove to the Abstract Interpreter that this structure check is
unnesssary. This didn't occur before for two reasons: 1) CreateClonedArguments did not set the structure it
produced. 2) Even if CreateClonedArguments provided the global object's cloned arguments structure we would
transition the new argements object when we added the length property during construction. To fix the second
problem we now pre-assign a slot on clonedArgumentsStructure for the length property. Additionally, in order to
prevent future transitions of the structure we need to choose an indexing type for the structure. Since, not
eliminating the arguments object is so expensive we choose to have all cloned arguments start with continuous
indexing type, this avoids transitioning when otherwise we would not have to. In the future we should be smarter
about choosing the indexing type but since its relatively rare to have a arguments object escape we don't worry
about this for now.

Additionally, this patch renames all former references of outOfBandArguments to clonedArguments and adds
extra instrumentation to DFGArgumentsEliminationPhase.

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

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/ValueRecovery.h:

(JSC::ValueRecovery::clonedArgumentsThatWereNotCreated):
(JSC::ValueRecovery::outOfBandArgumentsThatWereNotCreated): Deleted.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::run):

  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::tryToSetConstantRecovery):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileCreateClonedArguments):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_cloned_arguments):
(JSC::JIT::emit_op_create_out_of_band_arguments): Deleted.

  • llint/LowLevelInterpreter.asm:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::ClonedArguments):
(JSC::ClonedArguments::createEmpty):
(JSC::ClonedArguments::createWithInlineFrame):
(JSC::ClonedArguments::createByCopyingFrom):
(JSC::ClonedArguments::createStructure):

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

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

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::clonedArgumentsStructure):
(JSC::JSGlobalObject::outOfBandArgumentsStructure): Deleted.

1:54 PM Changeset in webkit [198153] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r191691): Can't Share Selected Text
​https://bugs.webkit.org/show_bug.cgi?id=155459
rdar://problem/24893625

Reviewed by Tim Horton.

Add the selected text as well. Somehow this got lost in the refactoring.

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::createShareMenuItem):

1:27 PM Changeset in webkit [198152] by timothy_horton@apple.com
  • 10 edits in trunk/Source

Revert r194125 and r194186: We're going to fix this a different way.

  • page/EventHandler.cpp:

(WebCore::EventHandler::clear):

  • page/EventHandler.h:
  • Shared/NativeWebGestureEvent.h:
  • Shared/mac/NativeWebGestureEventMac.mm:

(WebKit::pointForEvent):
(WebKit::NativeWebGestureEvent::NativeWebGestureEvent):
(WebKit::distanceForTouches): Deleted.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView selectFindMatch:completionHandler:]):
(-[WKWebView _web_superInputContext]):
(-[WKWebView touchesBeganWithEvent:]): Deleted.
(-[WKWebView touchesMovedWithEvent:]): Deleted.
(-[WKWebView touchesEndedWithEvent:]): Deleted.
(-[WKWebView touchesCancelledWithEvent:]): Deleted.

  • UIProcess/API/mac/WKView.mm:

(-[WKView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKView initWithFrame:processPool:configuration:webView:]):
(-[WKView touchesBeganWithEvent:]): Deleted.
(-[WKView touchesMovedWithEvent:]): Deleted.
(-[WKView touchesEndedWithEvent:]): Deleted.
(-[WKView touchesCancelledWithEvent:]): Deleted.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::WebViewImpl):
(WebKit::WebViewImpl::magnifyWithEvent):
(WebKit::WebViewImpl::smartMagnifyWithEvent):
(WebKit::WebViewImpl::rotateWithEvent):
(WebKit::WebViewImpl::touchesOrderedByAge): Deleted.
(WebKit::WebViewImpl::touchesBeganWithEvent): Deleted.
(WebKit::WebViewImpl::touchesMovedWithEvent): Deleted.
(WebKit::WebViewImpl::touchesEndedWithEvent): Deleted.
(WebKit::WebViewImpl::touchesCancelledWithEvent): Deleted.

1:13 PM Changeset in webkit [198151] by youenn.fablet@crf.canon.fr
  • 7 edits in trunk

[Fetch API] FetchLoader should check for empty bodies
​https://bugs.webkit.org/show_bug.cgi?id=155440

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-consume-empty-expected.txt:
  • web-platform-tests/fetch/api/request/request-consume-empty.html:
  • web-platform-tests/fetch/api/response/response-consume-empty-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-empty.html:

Source/WebCore:

Covered by added tests.

  • Modules/fetch/FetchLoader.cpp:

(WebCore::FetchLoader::didFinishLoading): returning empty array buffer/empty string if no data received during loading.

1:07 PM Changeset in webkit [198150] by sbarati@apple.com
  • 6 edits in trunk/Source/JavaScriptCore

[ES6] Make JSON.stringify ES6 compatible
​https://bugs.webkit.org/show_bug.cgi?id=155448

Reviewed by Sam Weinig and Mark Lam.

We weren't following the spec with respect to the "toJSON" property
of the thing being stringified. We were perform hasProperty(.)
on "toJSON" instead of get(.). This patch changes it our
implementation to perform get(value, "toJSON").

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::isFunction):
(JSC::JSValue::isCallable):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::toJSON):
(JSC::Stringifier::toJSONImpl):
(JSC::Stringifier::appendStringifiedValue):

  • tests/es6.yaml:
  • tests/stress/proxy-json.js:

(test):
(test.let.handler.get assert):
(test.let.handler):

1:06 PM Changeset in webkit [198149] by andersca@apple.com
  • 6 edits in trunk/Source

Fix build.

Source/WebKit/mac:

Ignore nullability warnings, create an empty PDF selection.

  • WebView/WebPDFView.mm:

(-[WebPDFView centerSelectionInVisibleArea:]):
(-[WebPDFView searchFor:direction:caseSensitive:wrap:startInSelection:]):
(+[WebPDFView _PDFSelectionClass]):
(-[WebPDFView _nextMatchFor:direction:caseSensitive:wrap:fromSelection:startInSelection:]):

Source/WebKit2:

Create an empty PDF selection.

  • Shared/mac/PDFKitImports.h:
  • Shared/mac/PDFKitImports.mm:

(WebKit::pdfSelectionClass):

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::PDFPlugin::nextMatchForString):

12:40 PM Changeset in webkit [198148] by sbarati@apple.com
  • 6 edits in trunk

[ES6] Disallow var assignments in for-in loops
​https://bugs.webkit.org/show_bug.cgi?id=155451

Reviewed by Mark Lam.

Source/JavaScriptCore:

We're doing this in its own patch instead of the patch for ​https://bugs.webkit.org/show_bug.cgi?id=155384
because last time we made this change it broke some websites. Lets try making
it again because it's what the ES6 mandates. If it still breaks things we will
roll it out.

  • parser/Parser.cpp:

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

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
12:33 PM Changeset in webkit [198147] by Beth Dakin
  • 3 edits in trunk/Source/WebKit2

Unable to commit previews in Mobile Safari
​https://bugs.webkit.org/show_bug.cgi?id=155450
-and corresponding-
rdar://problem/25135529

Reviewed by Tim Horton.

_uiDelegateProvidedPreviewingViewController was being consulted before
invoking the old SPI, which was always wrong. It should have been consulted
before calling the new API! But also, it doesn’t seem to be necessary at all
since [WKContentView _previewItemController:commitPreview:] is only invoked
when a custom view controller has been provided.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _registerPreview]):
(-[WKContentView _unregisterPreview]):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
(-[WKContentView _previewItemController:commitPreview:]):

12:15 PM Changeset in webkit [198146] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

12:01 PM Changeset in webkit [198145] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r197981): Huge regression on Mac PLT
​https://bugs.webkit.org/show_bug.cgi?id=155443
<rdar://problem/25113391>

Reviewed by Gavin Barraclough.

We have experience a huge regression on Mac PLT after r197981, so
disable the feature until the performance issue is resolved.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsSmoothedLayerText):

11:38 AM Changeset in webkit [198144] by sbarati@apple.com
  • 7 edits in trunk

assignments in for-in/for-of header not allowed
​https://bugs.webkit.org/show_bug.cgi?id=155384

Reviewed by Darin Adler.

Source/JavaScriptCore:

This patch prevents assignments to the loop variable
in for in/of loops in all but one situation. The following
syntax is still allowed even though the spec prevents it:
`
for (var i = X in blah) ;
`
If the loop contains let/const, destructuring, or is a for-of
loop, we always throw a syntax error if there is an assignment.
We can do this with full backwards compatibility.
We only allow the above type of for-in loops because Oliver told
me that when he tried to make such programs illegal he ran
into real websites breaking.

This patch also removed the !::CreatesAST compile-time branch when checking
assignments to new.target. This was a dangerous thing for me
to introduce into our parser. There are times where ::CreatesAST
is true but we also want to check for syntax errors. For example,
when parsing the top-level AST of a program. Though this check
was technically correct, it's dangerous to have. It was correct
because we would always be reparsing the new.target assignment
because new.target is only allowed inside a function. That made it
so that (!::CreatesAST <=> we care about new.target assignment syntax errors).
But, (!::CreatesAST <=> we care about syntax error X) is not true in general.
I think it's safer to remove such code.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createNewTargetExpr):
(JSC::ASTBuilder::isNewTarget):
(JSC::ASTBuilder::createResolve):

  • parser/Nodes.h:

(JSC::ExpressionNode::isBoolean):
(JSC::ExpressionNode::isSpreadExpression):
(JSC::ExpressionNode::isSuperNode):
(JSC::ExpressionNode::isNewTarget):
(JSC::ExpressionNode::isBytecodeIntrinsicNode):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseForStatement):
(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

LayoutTests:

  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:
11:29 AM Changeset in webkit [198143] by Brent Fulgham
  • 7 edits in trunk/Source

PingHandle delete's itself but pointer is still used by handleDataURL
​https://bugs.webkit.org/show_bug.cgi?id=154752
<rdar://problem/24872347>

Source/WebCore:

Patch by Chris Vienneau <​chris.vno@outlook.com> on 2016-03-14
Reviewed by Alex Christensen.

When a PingHandle is destroyed, we should tell its client so that the client can clear the pointer it
holds to the element to avoid accidentally attempting to use deallocated memory.

The ResourceHandle's client member may be null after "didReceiveResponse" is called. We should confirm
the client is still valid after these calls.

  • platform/network/DataURL.cpp:

(WebCore::handleDataURL): Check the client pointer before using it.

  • platform/network/PingHandle.h:

(WebCore::PingHandle::~PingHandle): Notify the client we are being destroyed.

  • platform/platform/network/ResourceHandle.h:

Source/WebKit2:

Reviewed by Alex Christensen.

When a PingLoad is destroyed, we should tell its client so that the client can clear the pointer it
holds to the element to avoid accidentally attempting to use deallocated memory.

  • NetworkProcess/PingLoad.h:

(WebKit::PingLoad::~PingLoad): Notify the client we are being destroyed.

11:13 AM Changeset in webkit [198142] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Negative outline offset could break curved outline-style: auto
​https://bugs.webkit.org/show_bug.cgi?id=155416

Reviewed by Tim Horton.

When radius becomes negative the rounded rect could end up being un-renderable -> no rounded corners at all.

Source/WebCore:

Test: fast/inline/hidpi-outline-auto-negative-offset-with-border-radius.html

  • platform/graphics/PathUtilities.cpp:

(WebCore::adjustedtRadiiForHuggingCurve):

LayoutTests:

  • fast/inline/hidpi-outline-auto-negative-offset-with-border-radius-expected.html: Added.
  • fast/inline/hidpi-outline-auto-negative-offset-with-border-radius.html: Added.
11:09 AM Changeset in webkit [198141] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

Remove blank lines after #include "config.h"

Follow-up fix from review comments on Bug 155394.

  • TestWebKitAPI/PlatformUtilities.cpp:
  • TestWebKitAPI/Tests/WTF/RefLogger.cpp:
11:01 AM Changeset in webkit [198140] by Alan Bujtas
  • 5 edits
    2 adds in trunk

[Outline: auto] Fractional radius value could result in non-renderable rounded border.
​https://bugs.webkit.org/show_bug.cgi?id=155420

Reviewed by Tim Horton.

RoundedRect::pixelSnappedRoundedRectForPainting ensures that the rounded rect is always renderable.

Source/WebCore:

Test: fast/inline/hidpi-outline-auto-with-fractional-radius.html

  • platform/graphics/PathUtilities.cpp:

(WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline):

  • platform/graphics/PathUtilities.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintFocusRing):

LayoutTests:

  • fast/inline/hidpi-outline-auto-with-fractional-radius-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-fractional-radius.html: Added.
10:53 AM WebKitIDL edited by youenn.fablet@crf.canon.fr
(diff)
10:30 AM Changeset in webkit [198139] by youenn.fablet@crf.canon.fr
  • 1 edit in trunk/LayoutTests/TestExpectations

Unreviewed.
Marking imported/fetch/api/request/request-consume.html as flaky on debug builds.

10:22 AM Changeset in webkit [198138] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Outline: auto has sharp corners with single line contenteditable.
​https://bugs.webkit.org/show_bug.cgi?id=155418

Reviewed by Tim Horton.

Multiple rectangles assumed multiline content and it broke bottomLeft and bottomRight corner check.
This patch adds fast path for polygons with 4 corners.

Source/WebCore:

Test: fast/inline/hidpi-outline-auto-with-one-focusring-rect.html

  • platform/graphics/PathUtilities.cpp:

(WebCore::cornerType):
(WebCore::cornerTypeForMultiline):
(WebCore::rectFromPolygon):
(WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline):

LayoutTests:

  • fast/inline/hidpi-outline-auto-with-one-focusring-rect-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-one-focusring-rect.html: Added.
10:18 AM Changeset in webkit [198137] by jdiggs@igalia.com
  • 7 edits in trunk

[AX] SVG element with child desc not exposed
​https://bugs.webkit.org/show_bug.cgi?id=155374

Reviewed by Darin Adler.

Source/WebCore:

Covered by the accessibility/w3c-svg-roles.html test, which was updated.

AccessibilitySVGRoot is now a subclass of AccessibilitySVGElement, which
exposes SVG elements with a child desc element as per the specification.
Also made existing protected methods private.

  • accessibility/AccessibilitySVGElement.h:
  • accessibility/AccessibilitySVGRoot.cpp:

(WebCore::AccessibilitySVGRoot::AccessibilitySVGRoot):
(WebCore::AccessibilitySVGRoot::parentObject):

  • accessibility/AccessibilitySVGRoot.h:

LayoutTests:

  • platform/gtk/accessibility/w3c-svg-roles-expected.txt: Updated.
  • platform/mac/accessibility/w3c-svg-roles-expected.txt: Updated.
9:55 AM Changeset in webkit [198136] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip asserting test http/tests/security/aboutBlank/security-context-write.html
​https://bugs.webkit.org/show_bug.cgi?id=94458

Unreviewed test gardening.

9:27 AM Changeset in webkit [198135] by Darin Adler
  • 3 edits in trunk/LayoutTests

Add copy/paste plug-in check for XHTML document
​https://bugs.webkit.org/show_bug.cgi?id=106350

  • TestExpectations: Re-enable test now that it works in WebKit 1.
  • editing/pasteboard/paste-noplugin-xhtml.xhtml: Fixed problem where test would try to

call setBlockAllPlugins even when it did not exist. Turns out that's needed for the
test to run under WebKit 2, but not needed at all under WebKit 1.

9:16 AM Changeset in webkit [198134] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • Modules/fetch/FetchBodyOwner.cpp:

(WebCore::FetchBodyOwner::loadedBlobAsText):

8:58 AM Changeset in webkit [198133] by youenn.fablet@crf.canon.fr
  • 15 edits
    3 copies
    1 add in trunk

[Fetch API] Implement data resolution for blob stored in Body
​https://bugs.webkit.org/show_bug.cgi?id=155359

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-consume-expected.txt:
  • web-platform-tests/fetch/api/request/request-consume.html:
  • web-platform-tests/fetch/api/request/request-init-002-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume-expected.txt:
  • web-platform-tests/fetch/api/response/response-consume.html:
  • web-platform-tests/fetch/api/response/response-init-002-expected.txt:

Source/WebCore:

Introducing FetchLoader as a wrapper around ThreadableLoader to load resources.
FetchLoader can retrieve data as text or array buffer. It only supports blob currently.

Introducing FetchLoaderClient interface and FetchBodyOwner::BlobLoader as specifc blob loader client.

Covered by existing rebased tests.

  • CMakeLists.txt:
  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::loadingType):
(WebCore::FetchBody::loadedAsArrayBuffer):
(WebCore::FetchBody::loadedAsText):

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

(WebCore::FetchBodyOwner::FetchBodyOwner):
(WebCore::FetchBodyOwner::loadBlob):
(WebCore::FetchBodyOwner::finishBlobLoading):
(WebCore::FetchBodyOwner::blobLoadingFailed):
(WebCore::FetchBodyOwner::BlobLoader::didReceiveResponse):

  • Modules/fetch/FetchBodyOwner.h:

(WebCore::FetchBodyOwner::loadedBlobAsText):
(WebCore::FetchBodyOwner::loadedBlobAsArrayBuffer):
(WebCore::FetchBodyOwner::blobLoadingSucceeded):

  • Modules/fetch/FetchLoader.cpp: Added.

(WebCore::FetchLoader::start):
(WebCore::FetchLoader::FetchLoader):
(WebCore::FetchLoader::stop):
(WebCore::FetchLoader::didReceiveResponse):
(WebCore::FetchLoader::didReceiveData):
(WebCore::FetchLoader::didFinishLoading):
(WebCore::FetchLoader::didFail):

  • Modules/fetch/FetchLoader.h: Added.
  • Modules/fetch/FetchLoaderClient.h: Added.

(WebCore::FetchLoaderClient::~FetchLoaderClient):
(WebCore::FetchLoaderClient::didReceiveResponse):
(WebCore::FetchLoaderClient::didFinishLoadingAsText):
(WebCore::FetchLoaderClient::didFinishLoadingAsArrayBuffer):

  • WebCore.xcodeproj/project.pbxproj:
8:42 AM Changeset in webkit [198132] by commit-queue@webkit.org
  • 5 edits in trunk

Restored ENABLE_WEBCORE option and used it in JSCOnly port.
​https://bugs.webkit.org/show_bug.cgi?id=155428

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-14
Reviewed by Michael Catanzaro.

This is a partial revert of r182624.

  • CMakeLists.txt:
  • Source/CMakeLists.txt:
  • Source/cmake/OptionsJSCOnly.cmake:
  • Source/cmake/WebKitFS.cmake:
8:40 AM Changeset in webkit [198131] by fred.wang@free.fr
  • 2 edits in trunk/Tools

Unreviewed: Add my professional email address.

  • Scripts/webkitpy/common/config/contributors.json:
8:26 AM Changeset in webkit [198130] by fred.wang@free.fr
  • 2 edits in trunk/LayoutTests

Skip accessibility/internal-link-anchors2.html as the linked ui element API is not supported for links.

Unreviewed test gardening.

  • platform/gtk/TestExpectations:
8:19 AM Changeset in webkit [198129] by fred.wang@free.fr
  • 4 edits
    2 adds in trunk

Make MathML colspan/rowspan consistent with HTML table cells.
​https://bugs.webkit.org/show_bug.cgi?id=150253

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-14
Reviewed by Martin Robinson.

Source/WebCore:

Test: mathml/rowspan-crash.xhtml

We make MathMLElement::colSpan and MathMLElement::rowSpan consistent with the corresponding functions in HTMLTableCellElement.cpp.
These functions now return unsigned integers, use the same parsing functions and set a maximum for rowspan.
This latter change fixes crash/timeout with large values of rowspan.

  • mathml/MathMLElement.cpp: Include HTMLParserIdioms to use limitToOnlyHTMLNonNegative.

(WebCore::MathMLElement::colSpan): Use unsigned integer and limitToOnlyHTMLNonNegative.
(WebCore::MathMLElement::rowSpan): ditto. We also use the same maximum limit as HTMLTableCellElement.

  • mathml/MathMLElement.h: Make colSpan and rowSpan return unsigned integers.

LayoutTests:

We import crashing test from bug 150253.

  • mathml/rowspan-crash-expected.txt: Added.
  • mathml/rowspan-crash.xhtml: Added.
8:17 AM Changeset in webkit [198128] by Darin Adler
  • 2 edits in trunk/LayoutTests

Continue work on ​https://bugs.webkit.org/show_bug.cgi?id=106350

  • TestExpectations: Disable test fow now since it seems to be failing in WebKit 1 and depends on hooks not present in WebKit 1 test runner.
8:13 AM Changeset in webkit [198127] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Enable GSS-Negotiate support in libsoup
​https://bugs.webkit.org/show_bug.cgi?id=155354

Patch by Tomas Popela <​tpopela@redhat.com> on 2016-03-14
Reviewed by Carlos Garcia Campos.

Enable the SOUP_TYPE_AUTH_NEGOTIATE feature if libsoup was compiled
with the GSS-Negotiate support.

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):

7:17 AM Changeset in webkit [198126] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r198124 - [GTK] Reimplement webkit_web_context_clear_cache functionality.
​https://bugs.webkit.org/show_bug.cgi?id=146041

Reviewed by Michael Catanzaro.

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_clear_cache):

7:13 AM Changeset in webkit [198125] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix the GTK+ build after r198124.

WebsiteDataTypes is now an OptionSet.

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_clear_cache):

6:36 AM Changeset in webkit [198124] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Reimplement webkit_web_context_clear_cache functionality.
​https://bugs.webkit.org/show_bug.cgi?id=146041

Reviewed by Michael Catanzaro.

  • UIProcess/API/gtk/WebKitWebContext.cpp:

(webkit_web_context_clear_cache):

6:16 AM Changeset in webkit [198123] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r198098 - Install WebKit2 WebProcess NetworkProcess on OSX when not building the Mac PORT
​https://bugs.webkit.org/show_bug.cgi?id=152651

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-14
Reviewed by Philippe Normand.

  • CMakeLists.txt:
6:12 AM WebKitGTK/2.12.x edited by Carlos Garcia Campos
(diff)
6:12 AM Changeset in webkit [198122] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12

Merge r198058 - [GTK][Mac] Don't force ENABLE_INTROSPECTION=OFF on Mac
​https://bugs.webkit.org/show_bug.cgi?id=152650

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-12
Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit2:
[GTK][Mac] Use DYLD_LIBRARY_PATH on OSX rather then LD_LIBRARY_PATH
​https://bugs.webkit.org/show_bug.cgi?id=152650

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-12
Reviewed by Carlos Garcia Campos.

  • PlatformGTK.cmake:
6:09 AM Changeset in webkit [198121] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r197927 - [GTK] Artifacts when using web view background color
​https://bugs.webkit.org/show_bug.cgi?id=155229

Reviewed by Mario Sanchez Prada.

This is because when using a web view color, we fill with the
color every rectangle updated by the web process, but we should
always fill the entire backing store before rendering the actual
contents on top.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::display): Ensure the web process always
renders the whole visible rectangle when background is rendered by
the UI process.

6:08 AM Changeset in webkit [198120] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197998 - [GTK] Fix rendering of slider input elements
​https://bugs.webkit.org/show_bug.cgi?id=155296

Reviewed by Michael Catanzaro.

Use the new gadgets for newer GTK+ and improve a bit the rendering
for previous versions to better match GTK+.

  • rendering/RenderThemeGtk.cpp:

(WebCore::createStyleContext): Add ScaleContents and
ScaleHighlight parts that are only used with GTK+ 3.19.
(WebCore::RenderThemeGtk::paintSliderTrack): Use a smaller trough,
centered in the given rectangle to better match GTK+. Also render
the hightlight gadget with GTK+ 3.19.
(WebCore::RenderThemeGtk::paintSliderThumb): Also create the style
context for contents gadget.
(WebCore::RenderThemeGtk::adjustSliderThumbSize): Take into
account the slider border when calculating the slider thumb size.

6:07 AM Changeset in webkit [198119] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197997 - [GTK] Scrollbars are broken once again with current GTK+ master
​https://bugs.webkit.org/show_bug.cgi?id=155292

Reviewed by Michael Catanzaro.

Most of the trough theming properties have been moved to the
scrollbar, and a new gadget "contents" has been added between the
scrollbar and its children.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext): Add
left/bottom style classes to ensure the scrollbars border is taken
into account and rendered.
(WebCore::ScrollbarThemeGtk::paintTrackBackground): Also create
style context for contents gadget.
(WebCore::ScrollbarThemeGtk::paintThumb): Ditto.
(WebCore::ScrollbarThemeGtk::paintButton): Ditto.
(WebCore::ScrollbarThemeGtk::scrollbarThickness): Take the
scrollbar border into account.
(WebCore::ScrollbarThemeGtk::buttonSize): Also create style
context for contents gadget.
(WebCore::ScrollbarThemeGtk::getStepperSpacing): Ditto.
(WebCore::ScrollbarThemeGtk::minimumThumbLength): Ditto.
(WebCore::ScrollbarThemeGtk::thumbFatness): Ditto.
(WebCore::ScrollbarThemeGtk::getTroughBorder): Take the scrollbar
border into account.

6:06 AM Changeset in webkit [198118] by Carlos Garcia Campos
  • 12 edits in releases/WebKitGTK/webkit-2.12

Merge r197811 - Font size computed style is innaccurate
​https://bugs.webkit.org/show_bug.cgi?id=154705
<rdar://problem/23474068>

Reviewed by Timothy Hatcher.

Source/WebCore:

Safari rounds the font size value reported to getComputedStyle(). Neither Firefox
nor Chrome do this.

Covered by existing tests.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::getFontSizeCSSValuePreferringKeyword):
(WebCore::fontSizeFromStyle):

LayoutTests:

Update expected results.

  • css3/calc/font-size-fractional-expected.txt:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-relative-font-size.html:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-relative-font-size-expected.txt:
  • editing/mac/attributed-string/font-size-expected.txt:
  • editing/mac/attributed-string/vertical-align-expected.txt:
  • platform/mac-mavericks/editing/mac/attributed-string/font-size-expected.txt:
  • platform/mac-mavericks/editing/mac/attributed-string/vertical-align-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/font-size-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/vertical-align-expected.txt:
5:15 AM Changeset in webkit [198117] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebInspectorUI

Merge r197802 - Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155182
<rdar://problem/25040640>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Daniel Bates.

  • UserInterface/Main.html:

Allow Web Inspector to load file: and blob: image resources.
Also blob: media and font resources.

5:10 AM Changeset in webkit [198116] by youenn.fablet@crf.canon.fr
  • 8 edits in trunk

Web platform test server should not try to launch servers on already bound sockets
​https://bugs.webkit.org/show_bug.cgi?id=141157

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • resources/config.json: Changed wpt https port from 8443 to 9443.
  • web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt: Updated according https port change.
  • web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt: Ditto.
  • web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt: Ditto.
  • web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt: Ditto.

Tools:

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(wpt_config_json): Load WPT config from LayoutTests/imported/w3c/resources/config.json.
(base_url): Refactored to use wpt_config_json routine.
(WebPlatformTestServer.init): Fill port mappings according WPT config.

5:02 AM Changeset in webkit [198115] by rniwa@webkit.org
  • 17 edits
    2 adds in trunk

Add slotchange event
​https://bugs.webkit.org/show_bug.cgi?id=155424
<rdar://problem/24997534>

Reviewed by Antti Koivisto.

Source/WebCore:

Added slotchange event as discussed on ​https://github.com/w3c/webcomponents/issues/288.

While the exact semantics of it could still evolve over time, this patch implements as
an asynchronous event that fires on a slot element whenever its distributed nodes change
(flattened assigned nodes):
​http://w3c.github.io/webcomponents/spec/shadow/#dfn-distributed-nodes

Since inserting or removing an element from a shadow host could needs to enqueue this event
on the right slot element, this patch moves the invalidation point of element removals and
insertions from Element::childrenChanged to Element::insertedInto and Element::removedFrom.
Text nodes are still invalidated at Element::childrenChanged for performance reasons
since it could only appear within a default slot element.

Because this more fine-grained invalidation needs to be overridden by HTMLDetailsElement,
we now subclass SlotAssignment in HTMLDetailsElement instead of passing in a std::function.

Test: fast/shadow-dom/slotchange-event.html

  • dom/Document.cpp:

(WebCore::Document::enqueueSlotchangeEvent): Added.

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

(WebCore::Element::attributeChanged): Call hostChildElementDidChangeSlotAttr.
(WebCore::Element::insertedInto): Call hostChildElementDidChange.
(WebCore::Element::removedFrom): Ditto.
(WebCore::Element::childrenChanged): Don't invalidate the slots on ElementInserted and
ElementRemoved since they're now done in Element::insertedInto and Element::removedFrom.

  • dom/Event.cpp:

(WebCore::Event::scoped): slotchange event is scoped.

  • dom/EventNames.h: Added eventNames().slotchange.
  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::invalidateSlotAssignments): Deleted.
(WebCore::ShadowRoot::invalidateDefaultSlotAssignments): Deleted.

  • dom/ShadowRoot.h:

(ShadowRoot): Added more fine-grained invalidators, mirroring changes to SlotAssignment.

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::SlotAssignment): Removed a variant that takes SlotNameFunction
since HTMLDetailsElement now subclasses SlotAssignment.
(WebCore::SlotAssignment::~SlotAssignment): Added now that the class is virtual.
(WebCore::recursivelyFireSlotChangeEvent): Added.
(WebCore::SlotAssignment::didChangeSlot): Added. Invalidates the style tree only if there
is a corresponding slot element, and fires slotchange event. When the slot element we found
in this shadow tree is assigned to a slot element inside an inner shadow tree, recursively
fire slotchange event on each such inner slots.
(WebCore::SlotAssignment::hostChildElementDidChange): Added. Update the matching slot when
an element is inserted or removed under a shadow host.
(WebCore::SlotAssignment::assignedNodesForSlot): Removed the superfluous early exit to an
release assert since addSlotElementByName should always create a SlotInfo for each element.
(WebCore::SlotAssignment::slotNameForHostChild): Added. This is the equivalent of old
m_slotNameFunction which DetailsSlotAssignment overrides.
(WebCore::SlotAssignment::invalidateDefaultSlot): Deleted.
(WebCore::SlotAssignment::findFirstSlotElement): Added an assertion. slotInfo.element must
be nullptr if elementCount is 0, and elementCount must be 0 if slotInfo.element is nullptr
after calling resolveAllSlotElements, which traverses the entire shadow tree to find all
slot elements.
(WebCore::SlotAssignment::assignSlots):

  • dom/SlotAssignment.h: Implemented inline functions of ShadowRoot here to avoid including

SlotAssignment.h in ShadowRoot.h. Not inlining them results in extra function calls for all
builtin elements with shadow root without slot elements, which impacts performance.
(WebCore::ShadowRoot::didRemoveAllChildrenOfShadowHost): Added.
(WebCore::ShadowRoot::didChangeDefaultSlot): Added.
(WebCore::ShadowRoot::hostChildElementDidChange): Added.
(WebCore::ShadowRoot::hostChildElementDidChangeSlotAttribute): Added.
(WebCore::ShadowRoot::innerSlotDidChange):

  • html/HTMLDetailsElement.cpp:

(WebCore::DetailsSlotAssignment): Added. Subclasses SlotAssignment to override
hostChildElementDidChange and slotNameForHostChild.
(WebCore::DetailsSlotAssignment::hostChildElementDidChange): Added. We don't check if this
is the first summary element since we don't know the answer when this function is called
inside Element::removedFrom.
(WebCore::DetailsSlotAssignment::slotNameForHostChild): Renamed from slotNameFunction. Also
removed the code to return nullAtom when details element is not open as that messes up new
fine-grained invalidation. Insert/remove the slot element in parseAttribute instead.
(WebCore::HTMLDetailsElement::didAddUserAgentShadowRoot): Don't insert the slot element for
the summary since the details element is not open now.
(WebCore::HTMLDetailsElement::parseAttribute): Remove and insert the slot element for the
summary here instead of changing the behavior of slotNameForHostChild.

  • html/HTMLDetailsElement.h:
  • html/HTMLSlotElement.cpp:

(WebCore::HTMLSlotElement::enqueueSlotChangeEvent): Added. Enqueues a new slotchange event
if we haven't done so for this element yet.
(WebCore::HTMLSlotElement::dispatchEvent): Added. Clear m_hasEnqueuedSlotChangeEvent when
dispatching a slotchange event so that a subsequent call to enqueueSlotChangeEvent would
enqueue a new event. Note scripts call EventTarget::dispatchEventForBindings instead.

  • html/HTMLSlotElement.h:

LayoutTests:

Added a W3C style testharness.js test.

  • fast/shadow-dom/ShadowRoot-interface-expected.txt:
  • fast/shadow-dom/ShadowRoot-interface.html: Don't import testharness.css from svn.webkit.org.
  • fast/shadow-dom/slotchange-event-expected.txt: Added.
  • fast/shadow-dom/slotchange-event.html: Added.
4:57 AM Changeset in webkit [198114] by Carlos Garcia Campos
  • 9 edits
    2 adds in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197796 - Regexp matching should incur less call overhead
​https://bugs.webkit.org/show_bug.cgi?id=155181

Reviewed by Geoffrey Garen.

Previously we had DFG/FTL code call into the DFGOperation, which then called in to
RegExpObject, which then called into createRegExpMatchesArray, which then called into
RegExp, which then called the code generated by Yarr.

Now we have DFG/FTL code call into the DFGOperation, which does all of the things and calls
into code generated by Yarr.

This is another tiny Octane/regexp speed-up.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOperations.cpp:
  • runtime/RegExp.cpp:

(JSC::regExpFlags):
(JSC::RegExp::compile):
(JSC::RegExp::match):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):
(JSC::RegExpFunctionalTestCollector::clearRegExp): Deleted.
(JSC::RegExp::compileIfNecessary): Deleted.
(JSC::RegExp::compileIfNecessaryMatchOnly): Deleted.

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h: Added.

(JSC::RegExpFunctionalTestCollector::clearRegExp):
(JSC::RegExp::compileIfNecessary):
(JSC::RegExp::matchInline):
(JSC::RegExp::compileIfNecessaryMatchOnly):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):
(JSC::createStructureImpl):
(JSC::tryCreateUninitializedRegExpMatchesArray): Deleted.
(JSC::createRegExpMatchesArray): Deleted.

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):
(JSC::RegExpObject::exec):
(JSC::RegExpObject::match):
(JSC::getLastIndexAsUnsigned): Deleted.

  • runtime/RegExpObject.h:

(JSC::RegExpObject::getLastIndex):
(JSC::RegExpObject::test):
(JSC::RegExpObject::testInline):

  • runtime/RegExpObjectInlines.h: Added.

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

4:38 AM Changeset in webkit [198113] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Reduce unnecessary dashboard repaints
​https://bugs.webkit.org/show_bug.cgi?id=155425
<rdar://problem/25138247>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DefaultDashboardView.js:

(WebInspector.DefaultDashboardView.prototype._appendElementForNamedItem.):
newText is a number for console message counters.

4:31 AM Changeset in webkit [198112] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.12

Merge r197784 - Scrolling does not work when the mouse down is handled by a node
​https://bugs.webkit.org/show_bug.cgi?id=19033

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/events/prevent-default-prevents-interaction-with-scrollbars-.html

When a mouse press/down event happens on a scrollbar area, but event
is default prevented in the document level, for example, event does not get
properly passed to scrollbars, although it should.

Problem started long ago with r17770, and was improved with r19596.
However, years later, the way Scrollbar* is obtained is still currently different
weither event is default prevented or not.

Patch uniforms the logic for both cases, and fixes the bug.

Note: code before used to look like

if (swallowEvent) {

<code>

} else {

<bleh>
<foo>

}

.. and now looks like

if (!swallowEvent)

<bleh>

<code>

if (!swallowEvent)

<foo>

e.g. document.addEventListener('mousedown', function (e) { e.preventDefault(); });

  • page/EventHandler.cpp:

(WebCore::scrollbarForMouseEvent):
(WebCore::EventHandler::handleMousePressEvent):

LayoutTests:

  • fast/events/prevent-default-prevents-interaction-with-scrollbars-expected.txt: Added.
  • fast/events/prevent-default-prevents-interaction-with-scrollbars.html: Added.
4:24 AM Changeset in webkit [198111] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197774 - WeakBlock::visit() should check for a WeakHandleOwner before consulting mark bits.
<​https://webkit.org/b/155154>

Reviewed by Darin Adler.

Reorder the checks in WeakBlock::visit() so we don't look at the mark bits in MarkedBlock
unless the current WeakImpl has a WeakHandleOwner we need to consult.

I was originally hoping to make an optimization that could skip over entire WeakBlocks
if they didn't have a single WeakHandleOwner, but it turns out that scenario is not as
common as I suspected.

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::visit):

4:11 AM Changeset in webkit [198110] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197730 - Reduce the number of instructions needed to record the last regexp result
​https://bugs.webkit.org/show_bug.cgi?id=155161

Reviewed by Sam Weinig.

This tightens up RegExpCachedResult::record(). My profiling shows that we spend just
over 1% of the time in Octane/regexp in this function. This function had two obvious
redundancies:

1) It executed the write barrier on owner twice. It only needs to execute it once. Since

the same RegExpConstructor is likely to be used many times, it makes sense to do the
barrier without looking at the 'to' objects at all. In steady state, this means that
the RegExpConstructor will simply be OldGrey so this one barrier will always skip the
slow path.

2) It cleared some fields that didn't need to be cleared, since we can just use

m_reified to indicate that the fields are not meaningful anymore.

This is meant to be a microscopic regexp speed-up.

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::visitChildren):
(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpCachedResult.h:

(JSC::RegExpCachedResult::record):

4:02 AM Changeset in webkit [198109] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197729 - createRegExpMatchesArray should allocate substrings more quickly
​https://bugs.webkit.org/show_bug.cgi?id=155160

Reviewed by Sam Weinig.

This was calling a version of jsSubstring() that isn't inlineable because it was doing a lot
of checks in finishCreation(). In particular, it was checking that the base string is not
itself a substring and that it's been resolved. We don't need those checks here, since the
string must have been resolved prior to regexp processing.

This patch is also smart about whether to do checks for the empty and full substrings. In
the matches array loop, these checks are super unlikely to be profitable, so we just
unconditionally allocate the substring.

This removes those checks and makes the allocation inlineable. It looks like a 1% speed-up
on Octane/regexp.

  • runtime/JSString.h:

(JSC::jsSubstring):
(JSC::jsSubstringOfResolved):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createRegExpMatchesArray):

3:27 AM Changeset in webkit [198108] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197725 - [JSC] Small clean up of how we use SSA's valuesAtHead
​https://bugs.webkit.org/show_bug.cgi?id=155152

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-07
Reviewed by Filip Pizlo.

liveAtHead and valuesAtHead contain the same nodes,
we do not need the extra look up.

This also opens the way to use the same kind of liveness
analysis as Air (where live values at head do not use a set).

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::InPlaceAbstractState::merge):

3:20 AM Changeset in webkit [198107] by Carlos Garcia Campos
  • 6 edits
    34 adds in releases/WebKitGTK/webkit-2.12

Merge r197724 - CSP: Source '*' should not match URLs with schemes blob, data, or filesystem
​https://bugs.webkit.org/show_bug.cgi?id=154122
<rdar://problem/24613336>

Reviewed by Brent Fulgham.

Source/WebCore:

Restrict matching of source expression * to HTTP or HTTPS URLs for all directives except
img-src and media-src. This policy is more restrictive than the policy described in section
Matching Source Expressions of the Content Security Policy 2.0 spec., <​https://www.w3.org/TR/2015/CR-CSP2-20150721>,
which restricts matching * to schemes that are not blob, data, or filesystem.

For directive img-src we restrict matching of * to HTTP, HTTPS, and data URLs. For directive
media-src we restrict matching of * to HTTP, HTTPS, data URLs and blob URLs. We use a
more lenient interpretation of * for directives img-src and media-src than required by
the spec. to mitigate web compatibility issues.

Tests: fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html

fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star.html
fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star.html
fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star.html
fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star.html
fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star.html
http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star.html
http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star.html
http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star.html
http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star.html
media/video-with-blob-url-allowed-by-csp-media-src-star.html
media/video-with-data-url-allowed-by-csp-media-src-star.html
media/video-with-file-url-blocked-by-csp-media-src-star.html

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar): Added.
(WebCore::ContentSecurityPolicySourceList::matches): Modified to only match * if ContentSecurityPolicySourceList::isProtocolAllowedByStar().
evaluates to true.

  • page/csp/ContentSecurityPolicySourceList.h:

LayoutTests:

Add tests to ensure that we do not regress our interpretation of * with respect to directives
img-src, media-src, style-src, and default-src.

When running in WebKitTestRunner, skip the tests fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html
and media/video-with-blob-url-allowed-by-csp-media-src-star.html as they make use of eventSender.beginDragWithFiles(),
which is not implement. We will need to fix <​https://bugs.webkit.org/show_bug.cgi?id=64285>
before we can run these tests in WebKitTestRunner.

  • TestExpectations:
  • fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/resources/green.png: Added.
  • fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/resources/red-background-color.css: Added.

(#test):

  • http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-blob-url-allowed-by-csp-media-src-star-expected.html: Added.
  • media/video-with-blob-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-data-url-allowed-by-csp-media-src-star-expected.html: Added.
  • media/video-with-data-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-file-url-blocked-by-csp-media-src-star-expected.html: Added.
  • media/video-with-file-url-blocked-by-csp-media-src-star.html: Added.
  • platform/wk2/TestExpectations:
3:19 AM Changeset in webkit [198106] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.12/Source

Merge r197706 - Cleanup: Add convenience function URL::procotolIsBlob()
​https://bugs.webkit.org/show_bug.cgi?id=155127
<rdar://problem/25016829>

Reviewed by Brent Fulgham.

Source/WebCore:

Similar to the class member function URL::protocolIsData(), add a class member function to
class URL to determine if a URL is a blob URL.

No functionality was changed. So, no new tests.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::shouldUseInnerURL): Modified to use URL::protocolIsBlob().
(WebCore::getCachedOrigin): Ditto.

  • platform/URL.h:

(WebCore::URL::protocolIsBlob): Added.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcStart): Modified to use URL::protocolIsBlob().
(urlHasSupportedProtocol): Ditto.

  • workers/Worker.cpp:

(WebCore::Worker::didReceiveResponse): Ditto.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest): Ditto.

Source/WebKit2:

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad): Modified to use URL::protocolIsBlob().

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::NetworkResourceLoader): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::canHandleRequest): Ditto.

2:57 AM Changeset in webkit [198105] by Carlos Garcia Campos
  • 7 edits
    1 copy in releases/WebKitGTK/webkit-2.12/Source/bmalloc

Merge r197797 - Unreviewed, rolling in r197722.
​https://bugs.webkit.org/show_bug.cgi?id=155171

The right calculation for our static_assert is actually:

sizeof(SmallChunk) % vmPageSize + 2 * smallMax <= vmPageSize

instead of:

sizeof(SmallChunk) % vmPageSize + smallMax <= vmPageSize

smallMax is not enough because line metadata might require us to begin
allocation at an offset as large as smallMax, so we need 2 * smallMax.

Once correct, this static_assert fires, and we fix it by increasing
the alignment of SmallChunk.

Restored changeset:

"bmalloc: Use List<T> instead of Vector<T> in some places"
​https://bugs.webkit.org/show_bug.cgi?id=155150
​http://trac.webkit.org/changeset/197722

2:52 AM Changeset in webkit [198104] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197716 - Crash in WebCore::RenderElement::containingBlockForObjectInFlow
​https://bugs.webkit.org/show_bug.cgi?id=155109

Reviewed by Simon Fraser.

It's unsafe to call containingBlock() on RenderView.

Unable to reproduce.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::styleWillChange):
(WebCore::RenderBlock::isSelfCollapsingBlock):
(WebCore::RenderBlock::selectionGaps):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::borderBoxRectInRegion):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight):

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::adjustedPositionRelativeToOffsetParent):
(WebCore::RenderFlowThread::offsetFromLogicalTopOfFirstRegion):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hasCompositedLayerInEnclosingPaginationChain):
(WebCore::RenderLayer::updatePagination):
(WebCore::inContainingBlockChain):

  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::isValidColumnSpanner):

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::decorationsClipRectForBoxInNamedFlowFragment):

  • rendering/RenderObject.cpp:

(WebCore::hasFixedPosInNamedFlowContainingBlock):

  • rendering/RenderReplaced.cpp:

(WebCore::firstContainingBlockWithLogicalWidth):

  • rendering/RenderView.cpp:

(WebCore::RenderView::subtreeSelectionBounds):
(WebCore::RenderView::repaintSubtreeSelection):
(WebCore::RenderView::clearSubtreeSelection):
(WebCore::RenderView::applySubtreeSelection):

2:46 AM Changeset in webkit [198103] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197715 - RegExp.prototype.exec() should call into Yarr at most once
​https://bugs.webkit.org/show_bug.cgi?id=155139

Reviewed by Saam Barati.

For apparently no good reason, RegExp.prototype.match() was calling into Yarr twice, almost
as if it was hoping that the non-matching case was so common that it was best to have the
matching case do the work all over again.

This is a 4% speed-up on Octane/regexp. It's also a matter of common sense: we should not be
in the business of presuming whether someone's match will succeed or fail. The increased
cost of running Yarr twice is so much larger than whatever savings we were getting from
running a match-only regexp that this is just not a good overall deal for the engine.

Also, it's interesting that we are seeing a 4% speed-up on regexp despite the fact that a
majority (almost a supermajority, I think) of calls into RegExp.prototype.match() are failed
matches. So, this change is a 4% speed-up despite being a slow down on the common case. That
tells you just how bad the old behavior was on the uncommon case.

  • runtime/MatchResult.h:

(MatchResult::MatchResult):
(MatchResult::failed):
(MatchResult::operator bool):

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpConstructor.h:

(JSC::RegExpConstructor::setMultiline):
(JSC::RegExpConstructor::multiline):
(JSC::RegExpConstructor::performMatch):
(JSC::RegExpConstructor::recordMatch):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createRegExpMatchesArray):
(JSC::createEmptyRegExpMatchesArray):
(JSC::createStructureImpl):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):
(JSC::getLastIndexAsUnsigned):
(JSC::RegExpObject::exec):
(JSC::RegExpObject::match):

  • runtime/RegExpObject.h:

(JSC::RegExpObject::getLastIndex):
(JSC::RegExpObject::test):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncMatch):

2:44 AM Changeset in webkit [198102] by youenn.fablet@crf.canon.fr
  • 20 edits in trunk/Source/WebCore

Introduce CallWith=Document in binding generator
​https://bugs.webkit.org/show_bug.cgi?id=155358

Reviewed by Darin Adler.

Covered by existing tests and binding test.

  • Modules/notifications/Notification.cpp:

(WebCore::Notification::permission): Taking a Document& instead of ScriptExecutionContext&.
(WebCore::Notification::requestPermission): Ditto.

  • Modules/notifications/Notification.h:
  • Modules/notifications/Notification.idl: Using CallWith=Document.
  • bindings/scripts/CodeGeneratorJS.pm: Adding support for CallWith=Document and changed name from scriptContext to context.

(GenerateCallWith):
(GenerateConstructorDefinition):

  • bindings/scripts/IDLAttributes.txt: Adding support for CallWith=Document.
  • bindings/scripts/test/GObject/WebKitDOMTestObj.cpp:

(webkit_dom_test_obj_with_document_argument):

  • bindings/scripts/test/GObject/WebKitDOMTestObj.h:
  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):

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

(WebCore::jsTestObjWithScriptExecutionContextAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContext):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces):
(WebCore::jsTestObjPrototypeFunctionWithDocumentArgument):

  • bindings/scripts/test/ObjC/DOMTestObj.h:
  • bindings/scripts/test/ObjC/DOMTestObj.mm:

(-[DOMTestObj withDocumentArgument]):

  • bindings/scripts/test/TestObj.idl: Adding binding test.
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::focus): Taking a Document& instead of ScriptExecutionContext&.
(WebCore::DOMWindow::close): Ditto.

  • page/DOMWindow.h:
  • page/DOMWindow.idl:
  • page/History.cpp:

(WebCore::History::back): Ditto.
(WebCore::History::forward): Ditto.
(WebCore::History::go): Ditto.

  • page/History.h:
  • page/History.idl:
  • testing/Internals.cpp:

(WebCore::InspectorStubFrontend::closeWindow): Calling DOMWindow::close() directly.

2:21 AM Changeset in webkit [198101] by Carlos Garcia Campos
  • 13 edits
    8 adds
    1 delete in releases/WebKitGTK/webkit-2.12

Merge r197697 - CSP: object-src directive should prohibit creation of nested browsing context
​https://bugs.webkit.org/show_bug.cgi?id=153153
<rdar://problem/24383209>

Reviewed by Brent Fulgham.

Source/WebCore:

Enforce the Content Security Policy object-src directive when fetching a URL for content
that will cause an HTML object or HTML embed element to act as a nested browsing context
(i.e. behave as if the content was loaded in an HTML iframe element). This makes our
enforcement of the object-src directive match the behavior of the object-src directive
in the Content Security Policy 2.0 spec., <​http://www.w3.org/TR/2015/CR-CSP2-20150721/>.

Tests: http/tests/security/contentSecurityPolicy/embed-src-url-blocked.html

http/tests/security/contentSecurityPolicy/embed-src-url-blocked2.html
http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2.html
http/tests/security/contentSecurityPolicy/object-src-url-blocked2.html

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::isPluginContentAllowedByContentSecurityPolicy): Extracted from SubframeLoader::pluginIsLoadable().
Checks if the plugin element is allowed by the Content Security Policy to load the URL and MIME type.
(WebCore::SubframeLoader::pluginIsLoadable): Extract out the logic for determining if
the plugin content is allowed to load by the Content Security Policy into SubframeLoader::isPluginContentAllowedByContentSecurityPolicy()
and make use of this function.
(WebCore::SubframeLoader::requestObject): Modified to call SubframeLoader::isPluginContentAllowedByContentSecurityPolicy()
before loading plugin content into a sub frame. If the plugin content is not allowed to load then we
mark the plugin as unavailable with the reason being that it was blocked by the Content Security Policy.

  • loader/SubframeLoader.h:

LayoutTests:

Add test to ensure that we enforce the Content Security Policy object-src directive
for HTML object and HTML embed elements that behave like an HTML iframe element.

  • TestExpectations: Remove entries for tests that pass.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-code-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-movie-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-movie-blocked.html:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked.html:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-url-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-url-blocked.html:

Simplify the code used in the above tests and update incorrect expected results.

  • http/tests/security/contentSecurityPolicy/object-src-url-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-src-url-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/resources/object-src-param.js: Removed.
1:44 AM Changeset in webkit [198100] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.4.10

WebKitGTK+ 2.4.10

1:43 AM Changeset in webkit [198099] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.4

Unreviewed. Update NEWS and Versions.m4 for 2.4.10 release.

.:

  • Source/autotools/Versions.m4: Bump version numbers.

Source/WebKit/gtk:

  • NEWS: Added release notes for 2.4.10.
1:37 AM Changeset in webkit [198098] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Install WebKit2 WebProcess NetworkProcess on OSX when not building the Mac PORT
​https://bugs.webkit.org/show_bug.cgi?id=152651

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-14
Reviewed by Philippe Normand.

  • CMakeLists.txt:
12:34 AM Changeset in webkit [198097] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore/platform/gtk/po

Translation updates: German, Spanish, French, Italian, Korean, Brazilian Portuguese, Russian, Chinese

12:07 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)

Mar 12, 2016:

11:27 PM Changeset in webkit [198096] by Darin Adler
  • 1 edit
    2 adds in trunk/LayoutTests

Add copy/paste plug-in check for XHTML document
​https://bugs.webkit.org/show_bug.cgi?id=106350

Reviewed by David Kilzer.

This bug was filed because of the assumption that there was a bug, but it
turns out that even in XHTML documents, we use HTML tree builder, so there is
no bug. Thus this just adds the test that demonstrates this.

  • editing/pasteboard/paste-noplugin-xhtml-expected.txt: Added.
  • editing/pasteboard/paste-noplugin-xhtml.xhtml: Added.
11:20 PM Changeset in webkit [198095] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Large repaints when typing any character in console
​https://bugs.webkit.org/show_bug.cgi?id=155387
<rdar://problem/25125720>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/Main.css:

(#content):

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

Web Inspector: Memory timeline pie charts are misaligned when there is no recording
​https://bugs.webkit.org/show_bug.cgi?id=155421

Patch by Devin Rousso <Devin Rousso> on 2016-03-13
Reviewed by Timothy Hatcher.

  • UserInterface/Views/MemoryTimelineView.css:

(.timeline-view.memory > .content > .overview):
Removed top padding to match bottom padding.

(.timeline-view.memory .legend > .row):
(.timeline-view.memory .legend):
Moved specified width to prevent unrecorded timelines from having graphs
that are offset horizontally.

9:52 PM Changeset in webkit [198093] by commit-queue@webkit.org
  • 22 edits in trunk

Remove ENABLE(ES6_TEMPLATE_LITERAL_SYNTAX) guards
​https://bugs.webkit.org/show_bug.cgi?id=155417

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-13
Reviewed by Yusuke Suzuki.

.:

  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parsePrimaryExpression): Deleted.
(JSC::Parser<LexerType>::parseMemberExpression): Deleted.

Source/WebCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

  • wtf/FeatureDefines.h:

Tools:

  • Scripts/webkitperl/FeatureList.pm:
  • TestWebKitAPI/Configurations/FeatureDefines.xcconfig:

WebKitLibraries:

  • win/tools/vsprops/FeatureDefines.props:
  • win/tools/vsprops/FeatureDefinesCairo.props:
9:43 PM Changeset in webkit [198092] by weinig@apple.com
  • 6 edits
    3 adds in trunk

Implement unprivileged execCommand("copy") and execCommand("cut")
<rdar://problem/24354406>
​https://bugs.webkit.org/show_bug.cgi?id=146336

Reviewed by Dean Jackson.

Source/WebCore:

Test: editing/execCommand/clipboard-access-with-user-gesture.html

  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • editing/ClipboardAccessPolicy.h:

Added.

  • editing/EditorCommand.cpp:

(WebCore::defaultValueForSupportedCopyCut):
(WebCore::supportedCopyCut):
Match other browsers and allow the copy and cut commands
to be executed when there is a user gesture.

  • page/Settings.h:

Add include of ClipboardAccessPolicy.h.

  • page/Settings.in:

Add new setting for ClipboardAccessPolicy

LayoutTests:

  • editing/execCommand/clipboard-access-with-user-gesture-expected.txt: Added.
  • editing/execCommand/clipboard-access-with-user-gesture.html: Added.

Add test for using execCommand("copy") and execCommand("cut") during a user gesture.

8:58 PM Changeset in webkit [198091] by dino@apple.com
  • 41 edits in trunk

DRT should enable WebGL by default on Mac
​https://bugs.webkit.org/show_bug.cgi?id=155419
<rdar://problem/25136981>

Reviewed by Sam Weinig.

Tools:

For some reason, lost in time, WebGL was enabled
by default on trunk, but disabled by default
in DumpRenderTree when using WebKit 1. This
was very annoying, because each test had
an explicit command to enable it.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues): Deleted WebGL line.

LayoutTests:

Update all the tests that no longer have to explicitly
turn WebGL on.

  • compositing/backface-visibility/backface-visibility-webgl.html:
  • compositing/visibility/visibility-simple-webgl-layer.html:
  • compositing/webgl/webgl-background-color.html:
  • compositing/webgl/webgl-no-alpha.html:
  • compositing/webgl/webgl-nonpremultiplied-blend.html:
  • compositing/webgl/webgl-reflection.html:
  • compositing/webgl/webgl-repaint.html:
  • fast/canvas/webgl/antialiasing-enabled.html:
  • fast/canvas/webgl/canvas-resize-crash.html:
  • fast/canvas/webgl/css-webkit-canvas-repaint.html:
  • fast/canvas/webgl/css-webkit-canvas.html:
  • fast/canvas/webgl/out-of-bounds-simulated-vertexAttrib0-drawArrays-expected.txt:
  • fast/canvas/webgl/out-of-bounds-simulated-vertexAttrib0-drawArrays.html:
  • fast/canvas/webgl/premultiplyalpha-test.html:
  • fast/canvas/webgl/resources/webgl-test.js:

(initNonKhronosFramework): Deleted.

  • fast/canvas/webgl/texImage2DImageDataTest.html:
  • fast/canvas/webgl/toDataURL-unpremultipliedAlpha.html:
  • fast/canvas/webgl/unprefixed-context.html:
  • fast/canvas/webgl/webgl-composite-modes-repaint.html:
  • fast/canvas/webgl/webgl-composite-modes.html:
  • fast/canvas/webgl/webgl-drawarrays-crash.html:
  • fast/canvas/webgl/webgl-layer-update.html:
  • fast/canvas/webgl/webgl-reload-crash.html:
  • http/tests/canvas/webgl/origin-clean-conformance.html:
  • http/tests/security/webgl-remote-read-remote-image-allowed-with-credentials.html:
  • http/tests/security/webgl-remote-read-remote-image-allowed.html:
  • http/tests/security/webgl-remote-read-remote-image-blocked-no-crossorigin.html:
  • http/tests/webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js:
  • http/tests/webgl/1.0.2/resources/webgl_test_files/resources/js-test-pre.js:
  • http/tests/webgl/1.0.2/resources/webkit-webgl-test-harness.js:
  • imported/blink/compositing/draws-content/webgl-simple-background.html:
  • webgl/1.0.2/resources/webgl_test_files/conformance/more/unit.js:
  • webgl/1.0.2/resources/webgl_test_files/resources/js-test-pre.js:
  • webgl/1.0.2/resources/webkit-webgl-test-harness.js:
  • webgl/1.0.3/resources/webgl_test_files/conformance/more/unit.js:
  • webgl/1.0.3/resources/webgl_test_files/resources/js-test-pre.js:
  • webgl/1.0.3/resources/webkit-webgl-test-harness.js:
  • webgl/resources/webkit-webgl-test-harness.js:
6:57 PM Changeset in webkit [198090] by rniwa@webkit.org
  • 5 edits
    2 adds in trunk

REGRESSION (r190840): crash inside details element's slotNameFunction
​https://bugs.webkit.org/show_bug.cgi?id=155388

Reviewed by Antti Koivisto.

Source/WebCore:

The bug was caused by HTMLDetailsElement::isActiveSummary calling findAssignedSlot with a summary element
inside the shadow tree of the detials element. Fixed it by existing early when the summary element passed
to isActiveSummary is not a direct child of the details element.

Test: fast/html/details-summary-tabindex-crash.html

  • dom/ShadowRoot.cpp:

(WebCore::ShadowRoot::findAssignedSlot): Added an assertion for regression testing.

  • dom/SlotAssignment.cpp:

(WebCore::SlotAssignment::findAssignedSlot): Removed the superfluous call to assignSlots added in r190840.
There is no need to update the slot assignments here (entires in m_slots are added or removed by
addSlotElementByName or removeSlotElementByName and assignSlots only updates assignedNodes in each SlotInfo
which is never used in this function or findFirstSlotElement.

  • html/HTMLDetailsElement.cpp:

(WebCore::HTMLDetailsElement::isActiveSummary): Fixed the bug.

LayoutTests:

Added a regression test.

  • fast/html/details-summary-tabindex-crash-expected.txt: Added.
  • fast/html/details-summary-tabindex-crash.html: Added.
6:44 PM Changeset in webkit [198089] by mitz@apple.com
  • 4 edits
    1 add in trunk/Source/WebKit2

[Mac] Injected bundle in relocatable WebContent service can’t use XPC services from other relocatable frameworks
​https://bugs.webkit.org/show_bug.cgi?id=155414
<rdar://problem/24428418>

Reviewed by Sam Weinig.

  • Configurations/DebugRelease.xcconfig: Set WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT to NO, because engineering builds are ad-hoc signed and therefore can’t have a private entitlement.
  • Configurations/WebContent-OSX.entitlements: Added. Includes the XPC domain extension entitlement.
  • Configurations/WebContentService.xcconfig: Set WK_WEBCONTENT_SERVICE_NEEDS_XPC_DOMAIN_EXTENSION_ENTITLEMENT to YES if not already set and the framework is relocatable. Set CODE_SIGN_ENTITLEMENTS to the new entitlements file if the domain extension entitlement is needed.
  • WebKit2.xcodeproj/project.pbxproj: Added reference to new file.
6:09 PM Changeset in webkit [198088] by dino@apple.com
  • 32 edits in trunk

<attachment> should be a runtime-enabled feature
​https://bugs.webkit.org/show_bug.cgi?id=155413
<rdar://problem/25120753>

Reviewed by Sam Weinig and Anders Carlsson.

Source/WebKit/mac:

Add an internal setting on WebPreferences
to enable the <attachment> element support.

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

(+[WebPreferences initialize]):
(-[WebPreferences attachmentElementEnabled]):
(-[WebPreferences setAttachmentElementEnabled:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Add an internal setting on WKWebViewConfiguration
to enable the <attachment> element support.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _attachmentElementEnabled]):
(-[WKWebViewConfiguration _setAttachmentElementEnabled:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

LayoutTests:

Now that <attachment> is disabled by default, use an
internal setting to turn them back on test by test.

  • fast/attachment/attachment-default-icon-expected.html:
  • fast/attachment/attachment-default-icon.html:
  • fast/attachment/attachment-disabled-dom.html:
  • fast/attachment/attachment-disabled-rendering.html:
  • fast/attachment/attachment-dom.html:
  • fast/attachment/attachment-folder-icon-expected.html:
  • fast/attachment/attachment-folder-icon.html:
  • fast/attachment/attachment-icon-from-file-extension-expected.html:
  • fast/attachment/attachment-icon-from-file-extension.html:
  • fast/attachment/attachment-label-highlight.html:
  • fast/attachment/attachment-progress.html:
  • fast/attachment/attachment-rendering.html:
  • fast/attachment/attachment-select-on-click-inside-user-select-all.html:
  • fast/attachment/attachment-select-on-click.html:
  • fast/attachment/attachment-subtitle.html:
  • fast/attachment/attachment-title.html:
  • fast/attachment/attachment-type-attribute-expected.html:
  • fast/attachment/attachment-type-attribute.html:
  • editing/pasteboard/copy-paste-attachment.html:
  • editing/pasteboard/drag-and-drop-attachment-contenteditable.html:
3:54 PM Changeset in webkit [198087] by Antti Koivisto
  • 4 edits
    2 adds in trunk

ComposedTreeIterator fails to traverse slots if root is shadow host
​https://bugs.webkit.org/show_bug.cgi?id=155407

Reviewed by Darin Adler.

Source/WebCore:

Test: fast/shadow-dom/composed-tree-shadow-subtree.html

  • dom/ComposedTreeIterator.cpp:

(WebCore::ComposedTreeIterator::ComposedTreeIterator):

Traversal functions assume m_contextStack is deeper than 1 before they need to enter slot traversal code paths.
Call initializeContextStack in case of shadow host which does the right thing.

(WebCore::ComposedTreeIterator::traverseSiblingInSlot):
(WebCore::composedTreeAsText):

Add option to include pointers as debugging aid.

  • dom/ComposedTreeIterator.h:

(WebCore::composedTreeChildren):

LayoutTests:

  • fast/shadow-dom/composed-tree-shadow-subtree-expected.txt: Added.
  • fast/shadow-dom/composed-tree-shadow-subtree.html: Added.
3:30 PM Changeset in webkit [198086] by commit-queue@webkit.org
  • 8 edits
    7 adds in trunk

Added new port JSCOnly.
​https://bugs.webkit.org/show_bug.cgi?id=154512

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-13
Reviewed by Michael Catanzaro.

This port allows to build JavaScriptCore engine with minimal
dependencies.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsJSCOnly.cmake: Added.

Source/JavaScriptCore:

  • PlatformJSCOnly.cmake: Added.

Source/WTF:

  • wtf/PlatformJSCOnly.cmake: Added.
  • wtf/none/MainThreadNone.cpp: Added.
  • wtf/none/RunLoopNone.cpp: Added.
  • wtf/none/WorkQueueNone.cpp: Added.

Tools:

  • Scripts/build-jsc:
  • Scripts/webkitdirs.pm:

(argumentsForConfiguration):
(executableProductDir):
(determinePortName):
(isJSCOnly):
(wrapperPrefixIfNeeded):
(generateBuildSystemFromCMakeProject):
(buildCMakeGeneratedProject):

3:28 PM Changeset in webkit [198085] by ddkilzer@apple.com
  • 6 edits
    1 copy in trunk/Tools

TestWebKitAPI: fix linker warnings
<​http://webkit.org/b/155394>

Reviewed by Darin Adler.

  • TestWebKitAPI/CMakeLists.txt:
  • Add RefLogger.cpp source file.
  • Add other missing cross-platform source files.
  • Add FIXMEs about RunLoop.cpp and about missing platform-specific source files.
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • Add RefLogger.cpp source file.
  • TestWebKitAPI/Counters.cpp:

(DeleterCounter<ConstructorDestructorCounter>::deleterCount):
Move specific declaration here to fix linker warning.

  • TestWebKitAPI/Counters.h:

(DeleterCounter<T>::deleterCount): Remove declaration of global
template variable.

  • TestWebKitAPI/Tests/WTF/RefLogger.cpp: Added.

(TestWebKitAPI::log): Added. Move inline definition in
RefLogger.h to here to fix linker warning.

  • TestWebKitAPI/Tests/WTF/RefLogger.h:

(TestWebKitAPI::log): Replace inline function with declaration.

3:03 PM Changeset in webkit [198084] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Styles sidebar inline swatches are oddly shaped
​https://bugs.webkit.org/show_bug.cgi?id=155410

Patch by Devin Rousso <Devin Rousso> on 2016-03-13
Reviewed by Timothy Hatcher.

  • UserInterface/Views/InlineSwatch.css:

(.inline-swatch):
(.inline-swatch > span):
Added more consistent border-radius with UserInterface/Images/CubicBezier.svg.

  • UserInterface/Views/VisualStyleColorPicker.css:

(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .inline-swatch.color):
Made border-radius consistent with the adjacent input field.

1:12 PM Changeset in webkit [198083] by weinig@apple.com
  • 20 edits in trunk/Source

WebKit can easily crash below NetworkSession::dataTaskForIdentifier() with NSURLSession enabled
<rdar://problem/25129946>
​https://bugs.webkit.org/show_bug.cgi?id=155401

Reviewed by Alex Christensen.

Source/WebCore:

Add a SessionID as a member of NetworkStorageSession. This allows us to avoid having HashMaps
to map between the two types.

  • platform/network/NetworkStorageSession.h:

(WebCore::NetworkStorageSession::sessionID):
(WebCore::NetworkStorageSession::credentialStorage):
(WebCore::NetworkStorageSession::platformSession):

  • platform/network/NetworkStorageSessionStub.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::context):
(WebCore::NetworkStorageSession::createPrivateBrowsingSession):
(WebCore::defaultSession):
(WebCore::NetworkStorageSession::defaultStorageSession):
(WebCore::NetworkStorageSession::switchToNewTestingSession):

  • platform/network/cf/NetworkStorageSessionCFNet.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::switchToNewTestingSession):
(WebCore::NetworkStorageSession::defaultStorageSession):
(WebCore::NetworkStorageSession::createPrivateBrowsingSession):

  • platform/network/soup/NetworkStorageSessionSoup.cpp:

(WebCore::NetworkStorageSession::NetworkStorageSession):
(WebCore::NetworkStorageSession::defaultStorageSession):
(WebCore::NetworkStorageSession::createPrivateBrowsingSession):
(WebCore::NetworkStorageSession::switchToNewTestingSession):
(WebCore::NetworkStorageSession::soupNetworkSession):

Source/WebKit/mac:

  • WebCoreSupport/WebFrameNetworkingContext.mm:

(WebFrameNetworkingContext::ensurePrivateBrowsingSession):
Pass a SessionID to NetworkStorageSession::createPrivateBrowsingSession().

Source/WebKit/win:

  • WebCoreSupport/WebFrameNetworkingContext.cpp:

(WebFrameNetworkingContext::ensurePrivateBrowsingSession):
Pass a SessionID to NetworkStorageSession::createPrivateBrowsingSession().

Source/WebKit2:

The issue was that NSURLSessionDataTasks can continue to invoke their NSURLSession's delegate methods
after -[NSURLSession invalidateAndCancel] is called. So, when the NetworkSession was destroyed, and
still had outstanding data tasks, the session delegate would get called, try to use the session, and
crash. To fix this I:

  • Made NetworkSession RefCounted.
  • Gave NetworkSession two delegates, one for each NSURLSession.
  • Made each delegate have a strong reference to the NetworkSession that gets cleared out in the newly implemented URLSession:didBecomeInvalidWithError: method.
  • Changed from simply destroying the NetworkSession in SessionTracker::destroySession(), to derefing it and explicitly calling invalidateAndCancel on the two associated NSURLSessions (which in turn eventually cause the URLSession:didBecomeInvalidWithError: to fire).
  • To ensure the correct lifetime of the WebCore::NetworkStorageSession, I made it a member of the NetworkSession. This also allowed some simplification inside SessionTracker.
  • NetworkProcess/NetworkDataTask.h:

(WebKit::NetworkDataTask::setPendingDownload):
(WebKit::NetworkDataTask::pendingDownloadLocation):

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad):

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::sessionID):

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTask::NetworkDataTask):
(WebKit::NetworkDataTask::~NetworkDataTask):
(WebKit::NetworkDataTask::willPerformHTTPRedirection):
(WebKit::NetworkDataTask::tryPasswordBasedAuthentication):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate initWithNetworkSession:]):
(-[WKNetworkSessionDelegate URLSession:didBecomeInvalidWithError:]):
(WebKit::NetworkSession::setCustomProtocolManager):
(WebKit::NetworkSession::create):
(WebKit::NetworkSession::defaultSession):
(WebKit::NetworkSession::NetworkSession):
(WebKit::NetworkSession::~NetworkSession):
(WebKit::NetworkSession::invalidateAndCancel):
(WebKit::NetworkSession::networkStorageSession):
(WebKit::NetworkSession::clearCredentials):

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):

  • Shared/SessionTracker.cpp:

(WebKit::identifierBase):
(WebKit::SessionTracker::getIdentifierBase):
(WebKit::SessionTracker::setIdentifierBase):
(WebKit::staticSessionMap):
(WebKit::SessionTracker::networkSession):
(WebKit::SessionTracker::storageSession):
(WebKit::staticStorageSessionMap):
(WebKit::SessionTracker::sessionID):
(WebKit::SessionTracker::setSession):
(WebKit::SessionTracker::destroySession):
(WebKit::SessionTracker::forEachNetworkStorageSession):
(WebKit::storageSessionToID): Deleted.
(WebKit::SessionTracker::storageSessionMap): Deleted.

  • Shared/SessionTracker.h:
  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
(WebKit::WebFrameNetworkingContext::localFileContentSniffingEnabled):
(WebKit::WebFrameNetworkingContext::scheduledRunLoopPairs):

  • WebProcess/WebCoreSupport/soup/WebFrameNetworkingContext.cpp:

(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):
(WebKit::WebFrameNetworkingContext::setCookieAcceptPolicyForAllContexts):
(WebKit::WebFrameNetworkingContext::WebFrameNetworkingContext):

12:51 PM Changeset in webkit [198082] by jonlee@apple.com
  • 2 edits in trunk/Source/WebCore

getUserMedia requests from the main frame should be treated the same as requests from an iframe with the same origin
​https://bugs.webkit.org/show_bug.cgi?id=155405
<rdar://problem/25131007>

Reviewed by Eric Carlson.

When gUM is called from the main frame, or from a subframe with the same origin, the
top level document origin should be the same.

  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::userMediaDocumentOrigin): Reverse the logic so that it is similar
to topLevelDocumentOrigin.
(WebCore::UserMediaRequest::topLevelDocumentOrigin): Return the top origin always.

12:02 PM Changeset in webkit [198081] by ddkilzer@apple.com
  • 4 edits in trunk/Source

REGRESSION (r198079): Windows build broke because of "%PRId64" format specifier

Source/WebCore:

  • platform/network/ParsedContentRange.cpp: Add #include

<wtf/StdLibExtras.h> and remove local definition of "PRId64".

Source/WTF:

This fixes the following build failure in WebCore for Windows:

C:\Source\WebCore\page\DOMTimer.cpp(396): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]
C:\Source\WebCore\page\DOMTimer.cpp(399): error C2146: syntax error: missing ')' before identifier 'PRId64' [C:\WebKitBuild\Debug\Source\WebCore\WebCore.vcxproj]

  • wtf/StdLibExtras.h: Define "PRId64" for Windows here so it may

be shared. This should fix DOMTimer.cpp after r198079 since it
already includes StdLibExtras.h.

8:46 AM Changeset in webkit [198080] by mark.lam@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

​http://kangax.github.io/compat-table/esnext/ crashes reliably.
​https://bugs.webkit.org/show_bug.cgi?id=155404

Reviewed by Yusuke Suzuki.

constructObjectFromPropertyDescriptor() was incorrectly assuming that either
both getter and setter will be set or unset. It did not consider that only one
of the getter or setter may be set. This patch fixes that.

  • runtime/ObjectConstructor.h:

(JSC::constructObjectFromPropertyDescriptor):

  • tests/stress/proxy-with-unbalanced-getter-setter.js: Added.

(assert):
(let.handler.defineProperty):
(i.):
(i.assert):
(i.get assert):
(set assert):

7:46 AM Changeset in webkit [198079] by jh718.park@samsung.com
  • 2 edits in trunk/Source/WebCore

[EFL] Fix debug build error since r197690. Unreviewed.
​https://bugs.webkit.org/show_bug.cgi?id=155408

Unreviewed. Change %lld to %PRId instead to correct the error below.
error: format ‘%lld’ expects argument of type ‘long long int’,
but argument 5 has type ‘std::chrono::duration<long int, std::ratio<1l, 1000l> >::rep
{aka long int}’ [-Werror=format=]

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::updateTimerIntervalIfNecessary):

Mar 12, 2016:

7:58 PM Changeset in webkit [198078] by mmaxfield@apple.com
  • 12 edits in trunk/Source/WebCore

[Cocoa] Remove typedef from NSScrollerImp to ScrollbarPainter
​https://bugs.webkit.org/show_bug.cgi?id=155379

Reviewed by Beth Dakin.

There's no reason to not call them what they are.

No new tests because there is no behavior change.

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setScrollerImpsFromScrollbars):
(WebCore::ScrollingStateFrameScrollingNode::setScrollbarPaintersFromScrollbars): Deleted.

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm:

(WebCore::ScrollingStateFrameScrollingNode::setScrollerImpsFromScrollbars):
(WebCore::ScrollingStateFrameScrollingNode::setScrollbarPaintersFromScrollbars): Deleted.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac):
(WebCore::ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac):
(WebCore::ScrollingTreeFrameScrollingNodeMac::releaseReferencesToScrollerImpsOnTheMainThread):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):
(WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):
(WebCore::ScrollingTreeFrameScrollingNodeMac::releaseReferencesToScrollbarPaintersOnTheMainThread): Deleted.

  • platform/ScrollbarThemeComposite.h:
  • platform/mac/ScrollAnimatorMac.h:
  • platform/mac/ScrollAnimatorMac.mm:

(scrollbarPainterForScrollbar):
(-[WebScrollerImpDelegate setUpAlphaAnimation:scrollerPainter:part:animateAlphaTo:duration:]):
(-[WebScrollerImpDelegate scrollerImp:animateKnobAlphaTo:duration:]):
(-[WebScrollerImpDelegate scrollerImp:animateTrackAlphaTo:duration:]):
(-[WebScrollerImpDelegate scrollerImp:animateUIStateTransitionWithDuration:]):
(-[WebScrollerImpDelegate scrollerImp:animateExpansionTransitionWithDuration:]):
(WebCore::ScrollAnimatorMac::ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::~ScrollAnimatorMac):
(WebCore::ScrollAnimatorMac::mouseEnteredScrollbar):
(WebCore::ScrollAnimatorMac::mouseExitedScrollbar):
(WebCore::ScrollAnimatorMac::mouseIsDownInScrollbar):
(WebCore::ScrollAnimatorMac::didAddVerticalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveVerticalScrollbar):
(WebCore::ScrollAnimatorMac::didAddHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::willRemoveHorizontalScrollbar):
(WebCore::ScrollAnimatorMac::invalidateScrollbarPartLayers):
(WebCore::ScrollAnimatorMac::verticalScrollbarLayerDidChange):
(WebCore::ScrollAnimatorMac::horizontalScrollbarLayerDidChange):
(WebCore::ScrollAnimatorMac::shouldScrollbarParticipateInHitTesting):
(WebCore::ScrollAnimatorMac::notifyContentAreaScrolled):
(WebCore::ScrollAnimatorMac::cancelAnimations):
(WebCore::ScrollAnimatorMac::updateScrollerStyle):
(WebCore::ScrollAnimatorMac::initialScrollbarPaintTimerFired):
(-[WebScrollbarPainterDelegate setUpAlphaAnimation:scrollerPainter:part:animateAlphaTo:duration:]): Deleted.
(-[WebScrollbarPainterDelegate scrollerImp:animateKnobAlphaTo:duration:]): Deleted.
(-[WebScrollbarPainterDelegate scrollerImp:animateTrackAlphaTo:duration:]): Deleted.
(-[WebScrollbarPainterDelegate scrollerImp:animateUIStateTransitionWithDuration:]): Deleted.
(-[WebScrollbarPainterDelegate scrollerImp:animateExpansionTransitionWithDuration:]): Deleted.

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

(WebCore::scrollbarMap):
(+[WebScrollbarPrefsObserver appearancePrefsChanged:]):
(WebCore::ScrollbarThemeMac::registerScrollbar):
(WebCore::ScrollbarThemeMac::setNewPainterForScrollbar):
(WebCore::ScrollbarThemeMac::painterForScrollbar):
(WebCore::ScrollbarThemeMac::scrollbarThickness):
(WebCore::ScrollbarThemeMac::updateScrollbarOverlayStyle):
(WebCore::ScrollbarThemeMac::hasThumb):
(WebCore::ScrollbarThemeMac::setPaintCharacteristicsForScrollbar):
(WebCore::scrollbarPainterPaint):

7:48 PM Changeset in webkit [198077] by BJ Burg
  • 11 edits in trunk/Source/JavaScriptCore

When generating Objective-C protocol types, getters for objects need to synthesize a new object instance
​https://bugs.webkit.org/show_bug.cgi?id=155389
<rdar://problem/25125821>

Reviewed by Timothy Hatcher.

Currently, in object property getters for Objective-C protocol types, we use
a C-style cast of the member's RWIProtocolJSONObject * to the type of the property.
However, at runtime the class of self is going to be RWIProtocolJSONObject *,
not MemberType *, so any subsequent calls to MemberType properties on the return value
will fail as the selectors will not be recognized.

Instead of doing a C-style pointer cast, we need to create a new MemberType object
that's backed by the InspectorObject retrieved from the parent object by key.
This requires a new initWithJSONObject initializer for each object protocol type.

  • inspector/scripts/codegen/generate_objc_header.py:

(ObjCHeaderGenerator._generate_type_interface): Add new declaration.

  • inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:

(ObjCProtocolTypesImplementationGenerator.generate_type_implementation):
(ObjCProtocolTypesImplementationGenerator._generate_init_method_for_json_object): Added.
Forward through to the super class initializer who assigns the underlying InspectorObject.

(ObjCProtocolTypesImplementationGenerator._generate_init_method_for_required_members):
Drive-by cleanup to use the more compact [super init] form.

  • inspector/scripts/codegen/objc_generator.py:

(ObjCGenerator.protocol_to_objc_expression_for_member):
For property getters of objects, use initWithJSONObject: rather than a C-style cast.

Rebaseline relevant test results.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
6:39 PM Changeset in webkit [198076] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Removed variable names from default constructor declarations.
​https://bugs.webkit.org/show_bug.cgi?id=155397

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-12
Reviewed by Mark Lam.

They carry no information and generate unused variable warning with GCC
4.8 in a lot of source files.

  • parser/VariableEnvironment.h:
5:55 PM Changeset in webkit [198075] by dino@apple.com
  • 5 edits
    4 adds in trunk

REGRESSION (r188647): Teamtreehouse website sidebar buttons are not rendered
​https://bugs.webkit.org/show_bug.cgi?id=155400
<rdar://problem/24818602>

Reviewed by Anders Carlsson.

Source/WebCore:

When we unprefixed CSS filters we accidentally
stopped SVG elements that use the CSS filter shorthands
from rendering. We still don't actually support
the shorthands in this case, but we should render
the element without the filter.

Tests: css3/filters/filters-on-svg-element.html

css3/filters/filters-on-svg-root.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::hasReferenceFilterOnly): Add
this new function that tells us if we have the
style of filter that we can handle in SVG content.

  • rendering/style/RenderStyle.h:
  • rendering/svg/SVGRenderingContext.cpp:

(WebCore::SVGRenderingContext::prepareToRenderSVGContent):
We can mark an element as ready to render if it
has a shorthand filter.

LayoutTests:

Add tests with SVG content that uses CSS filter
shorthands. These particular filters are no-ops
so should not affect rendering. If they actually
tried to do something you wouldn't see them work
until we enable shorthand filters on SVG content.

  • css3/filters/filters-on-svg-element-expected.html: Added.
  • css3/filters/filters-on-svg-element.html: Added.
  • css3/filters/filters-on-svg-root-expected.html: Added.
  • css3/filters/filters-on-svg-root.html: Added.
4:36 PM Changeset in webkit [198074] by mmaxfield@apple.com
  • 75 edits
    7 deletes in trunk

Delete dead SVG Font code
​https://bugs.webkit.org/show_bug.cgi?id=154718

Reviewed by Antti Koivisto.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsWin.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmake/tools/vsprops/FeatureDefines.props:
  • Source/cmake/tools/vsprops/FeatureDefinesCairo.props:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

All the ports have adopted the SVG -> OTF Font Converter, so there will never
be an instantiation of a font backed by a DOM subtree. We can remove all the
infrastructure used to support that.

No new tests because there is no behavior change.

  • CMakeLists.txt:
  • Configurations/FeatureDefines.xcconfig:
  • WebCore.order:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::CSSFontFaceSource): Deleted.
(WebCore::CSSFontFaceSource::font): Deleted.

  • css/CSSFontFaceSource.h:
  • loader/cache/CachedFont.cpp:
  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::createFont): Deleted.
(WebCore::CachedSVGFont::ensureCustomFontData): Deleted.

  • loader/cache/CachedSVGFont.h:
  • platform/graphics/Font.cpp:

(WebCore::Font::Font):
(WebCore::fillGlyphPage):
(WebCore::Font::description): Deleted.
(WebCore::Font::createScaledFont): Deleted.
(WebCore::Font::applyTransforms): Deleted.

  • platform/graphics/Font.h:

(WebCore::Font::widthForGlyph):
(WebCore::Font::SVGData::~SVGData): Deleted.
(WebCore::Font::create): Deleted.
(WebCore::Font::svgData): Deleted.
(WebCore::Font::isSVGFont): Deleted.

  • platform/graphics/win/FontWin.cpp:
  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::drawText):
(WebCore::FontCascade::drawEmphasisMarks):
(WebCore::FontCascade::glyphDataForCharacter):
(WebCore::FontCascade::adjustSelectionRectForText):
(WebCore::FontCascade::offsetForPosition):
(WebCore::FontCascade::drawEmphasisMarksForSimpleText):
(WebCore::FontCascade::drawGlyphBuffer):
(WebCore::isDrawnWithSVGFont): Deleted.
(WebCore::FontCascade::width): Deleted.
(WebCore::FontCascade::codePath): Deleted.

  • platform/graphics/FontCascade.h:
  • platform/graphics/GraphicsContext.h:
  • platform/graphics/SVGGlyph.cpp: Removed.

(WebCore::processArabicFormDetection): Deleted.
(WebCore::charactersWithArabicForm): Deleted.
(WebCore::isCompatibleArabicForm): Deleted.
(WebCore::isCompatibleGlyph): Deleted.

  • platform/graphics/SVGGlyph.h: Removed.

(WebCore::SVGGlyph::SVGGlyph): Deleted.
(WebCore::SVGGlyph::inheritedValue): Deleted.
(WebCore::SVGGlyph::operator==): Deleted.

  • platform/graphics/TextRun.cpp:
  • platform/graphics/TextRun.h:

(WebCore::TextRun::RenderingContext::~RenderingContext): Deleted.
(WebCore::TextRun::renderingContext): Deleted.
(WebCore::TextRun::setRenderingContext): Deleted.

  • platform/graphics/WidthIterator.cpp:

(WebCore::WidthIterator::applyFontTransforms):
(WebCore::WidthIterator::advanceInternal):
(WebCore::WidthIterator::glyphDataForCharacter): Deleted.

  • platform/graphics/WidthIterator.h:

(WebCore::WidthIterator::lastGlyphName): Deleted.
(WebCore::WidthIterator::setLastGlyphName): Deleted.
(WebCore::WidthIterator::arabicForms): Deleted.

  • platform/graphics/cairo/FontCairo.cpp:

(WebCore::CairoGlyphToPathTranslator::advance):
(WebCore::FontCascade::dashesForIntersectionsWithRect):
(WebCore::CairoGlyphToPathTranslator::moveToNextValidGlyph): Deleted.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::MacGlyphToPathTranslator::advance):
(WebCore::FontCascade::dashesForIntersectionsWithRect):
(WebCore::FontCascade::primaryFontIsSystemFont):
(WebCore::FontCascade::drawEmphasisMarksForComplexText):
(WebCore::MacGlyphToPathTranslator::moveToNextValidGlyph): Deleted.

  • platform/graphics/harfbuzz/HarfBuzzShaper.cpp:

(WebCore::HarfBuzzShaper::shapeHarfBuzzRuns): Deleted.

  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::TextLayout::isNeeded):
(WebCore::TextLayout::TextLayout):
(WebCore::TextLayout::constructTextRun):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::paint):
(WebCore::EllipsisBox::selectionRect):
(WebCore::EllipsisBox::paintSelection):

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::localSelectionRect):
(WebCore::InlineTextBox::paint):
(WebCore::InlineTextBox::paintSelection):
(WebCore::InlineTextBox::paintCompositionBackground):
(WebCore::InlineTextBox::paintDocumentMarker):
(WebCore::InlineTextBox::paintTextMatchMarker):
(WebCore::InlineTextBox::offsetForPosition):
(WebCore::InlineTextBox::positionForOffset):
(WebCore::InlineTextBox::constructTextRun):

  • rendering/InlineTextBox.h:
  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::constructTextRun):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::stripTrailingSpace):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::checkLinesForTextOverflow):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::paintObject):
(WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::setImageSizeForAltText):
(WebCore::RenderImage::paintReplaced):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::updateFromElement):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):
(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::getRelativeMarkerRect):

  • rendering/RenderMenuList.cpp:

(RenderMenuList::updateOptionsWidth):

  • rendering/RenderText.cpp:

(WebCore::RenderText::widthFromCache):
(WebCore::RenderText::trimmedPrefWidths):
(WebCore::hyphenWidth):
(WebCore::maxWordFragmentWidth):
(WebCore::RenderText::computePreferredLogicalWidths):
(WebCore::RenderText::width):

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::getAverageCharWidth):

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeMeasureTextClient::RenderThemeMeasureTextClient):
(WebCore::adjustInputElementButtonStyle):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForFontAndText): Deleted.

  • rendering/line/BreakingContext.h:

(WebCore::WordTrailingSpace::WordTrailingSpace):
(WebCore::WordTrailingSpace::width):
(WebCore::measureHyphenWidth):
(WebCore::textWidth):
(WebCore::tryHyphenating):
(WebCore::BreakingContext::handleText):

  • rendering/svg/RenderSVGAllInOne.cpp:
  • rendering/svg/RenderSVGText.cpp:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::prepareGraphicsContextForTextPainting):
(WebCore::SVGInlineTextBox::restoreGraphicsContextAfterTextPainting):
(WebCore::SVGInlineTextBox::paintTextWithShadows):
(WebCore::SVGInlineTextBox::constructTextRun): Deleted.

  • rendering/svg/SVGInlineTextBox.h:
  • rendering/svg/SVGTextLayoutEngine.cpp:

(WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath):

  • rendering/svg/SVGTextLayoutEngineSpacing.cpp:

(WebCore::SVGTextLayoutEngineSpacing::calculateSVGKerning): Deleted.

  • rendering/svg/SVGTextLayoutEngineSpacing.h:
  • rendering/svg/SVGTextMetrics.cpp:

(WebCore::SVGTextMetrics::SVGTextMetrics):
(WebCore::SVGTextMetrics::constructTextRun): Deleted.

  • rendering/svg/SVGTextMetrics.h:
  • rendering/svg/SVGTextMetricsBuilder.cpp:

(WebCore::SVGTextMetricsBuilder::advanceSimpleText):

  • rendering/svg/SVGTextRunRenderingContext.cpp: Removed.

(WebCore::svgFontAndFontFaceElementForFontData): Deleted.
(WebCore::SVGTextRunRenderingContext::floatWidthUsingSVGFont): Deleted.
(WebCore::SVGTextRunRenderingContext::applySVGKerning): Deleted.
(WebCore::SVGGlyphToPathTranslator::SVGGlyphToPathTranslator): Deleted.
(WebCore::SVGGlyphToPathTranslator::transform): Deleted.
(WebCore::SVGGlyphToPathTranslator::path): Deleted.
(WebCore::SVGGlyphToPathTranslator::extents): Deleted.
(WebCore::SVGGlyphToPathTranslator::moveToNextValidGlyph): Deleted.
(WebCore::SVGGlyphToPathTranslator::advance): Deleted.
(WebCore::SVGTextRunRenderingContext::createGlyphToPathTranslator): Deleted.
(WebCore::SVGTextRunRenderingContext::drawSVGGlyphs): Deleted.
(WebCore::missingGlyphForFont): Deleted.
(WebCore::SVGTextRunRenderingContext::glyphDataForCharacter): Deleted.

  • rendering/svg/SVGTextRunRenderingContext.h: Removed.
  • svg/SVGAllInOne.cpp:
  • svg/SVGFontData.cpp: Removed.

(WebCore::SVGFontData::SVGFontData): Deleted.
(WebCore::SVGFontData::initializeFont): Deleted.
(WebCore::SVGFontData::widthForSVGGlyph): Deleted.
(WebCore::SVGFontData::applySVGGlyphSelection): Deleted.
(WebCore::SVGFontData::fillSVGGlyphPage): Deleted.
(WebCore::SVGFontData::fillBMPGlyphs): Deleted.
(WebCore::SVGFontData::fillNonBMPGlyphs): Deleted.
(WebCore::computeNormalizedSpaces): Deleted.
(WebCore::createStringWithMirroredCharacters): Deleted.

  • svg/SVGFontData.h: Removed.

(WebCore::SVGFontData::~SVGFontData): Deleted.
(WebCore::SVGFontData::svgFontFaceElement): Deleted.
(WebCore::SVGFontData::horizontalOriginX): Deleted.
(WebCore::SVGFontData::horizontalOriginY): Deleted.
(WebCore::SVGFontData::horizontalAdvanceX): Deleted.
(WebCore::SVGFontData::verticalOriginX): Deleted.
(WebCore::SVGFontData::verticalOriginY): Deleted.
(WebCore::SVGFontData::verticalAdvanceY): Deleted.

  • svg/SVGFontElement.cpp:

(WebCore::SVGFontElement::SVGFontElement): Deleted.
(WebCore::SVGFontElement::invalidateGlyphCache): Deleted.
(WebCore::SVGFontElement::firstMissingGlyphElement): Deleted.
(WebCore::SVGFontElement::registerLigaturesInGlyphCache): Deleted.
(WebCore::SVGFontElement::ensureGlyphCache): Deleted.
(WebCore::SVGKerningMap::clear): Deleted.
(WebCore::SVGKerningMap::insert): Deleted.
(WebCore::stringMatchesUnicodeRange): Deleted.
(WebCore::stringMatchesGlyphName): Deleted.
(WebCore::stringMatchesUnicodeName): Deleted.
(WebCore::matches): Deleted.
(WebCore::kerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::horizontalKerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::verticalKerningForPairOfStringsAndGlyphs): Deleted.
(WebCore::SVGFontElement::collectGlyphsForString): Deleted.
(WebCore::SVGFontElement::collectGlyphsForGlyphName): Deleted.
(WebCore::SVGFontElement::svgGlyphForGlyph): Deleted.
(WebCore::SVGFontElement::missingGlyph): Deleted.

  • svg/SVGFontElement.h:

(WebCore::SVGKerning::SVGKerning): Deleted.
(WebCore::SVGKerningMap::isEmpty): Deleted.

  • svg/SVGGlyphElement.cpp:

(WebCore::SVGGlyphElement::invalidateGlyphCache): Deleted.
(WebCore::SVGGlyphElement::parseAttribute): Deleted.
(WebCore::SVGGlyphElement::insertedInto): Deleted.
(WebCore::SVGGlyphElement::removedFrom): Deleted.
(WebCore::parseArabicForm): Deleted.
(WebCore::parseOrientation): Deleted.
(WebCore::SVGGlyphElement::inheritUnspecifiedAttributes): Deleted.
(WebCore::parseSVGGlyphAttribute): Deleted.
(WebCore::SVGGlyphElement::buildGenericGlyphIdentifier): Deleted.
(WebCore::SVGGlyphElement::buildGlyphIdentifier): Deleted.

  • svg/SVGGlyphElement.h:
  • svg/SVGGlyphMap.h: Removed.

(WebCore::GlyphMapNode::GlyphMapNode): Deleted.
(WebCore::GlyphMapNode::create): Deleted.
(WebCore::SVGGlyphMap::SVGGlyphMap): Deleted.
(WebCore::SVGGlyphMap::addGlyph): Deleted.
(WebCore::SVGGlyphMap::appendToGlyphTable): Deleted.
(WebCore::SVGGlyphMap::compareGlyphPriority): Deleted.
(WebCore::SVGGlyphMap::collectGlyphsForString): Deleted.
(WebCore::SVGGlyphMap::clear): Deleted.
(WebCore::SVGGlyphMap::svgGlyphForGlyph): Deleted.
(WebCore::SVGGlyphMap::glyphIdentifierForGlyphName): Deleted.

  • svg/SVGHKernElement.cpp:

(WebCore::SVGHKernElement::insertedInto): Deleted.
(WebCore::SVGHKernElement::removedFrom): Deleted.

  • svg/SVGHKernElement.h:
  • svg/SVGToOTFFontConversion.cpp:
  • svg/SVGToOTFFontConversion.h:
  • svg/SVGVKernElement.cpp:

(WebCore::SVGVKernElement::insertedInto): Deleted.
(WebCore::SVGVKernElement::removedFrom): Deleted.

  • svg/SVGVKernElement.h:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:
4:22 PM Changeset in webkit [198073] by bshafiei@apple.com
  • 4 edits in tags/Safari-602.1.22.1/Source

Roll out r197572. rdar://problem/25114544

4:02 PM Changeset in webkit [198072] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.22.1/Source

Versioning.

3:59 PM Changeset in webkit [198071] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.22.1

New tag.

3:15 PM Changeset in webkit [198070] by Beth Dakin
  • 7 edits
    11 moves in trunk/Source/WebKit2

Make preview inline navigation work API
​https://bugs.webkit.org/show_bug.cgi?id=155383
-and corresponding-
rdar://problem/25117985

Reviewed by Dan Bernstein.

With this patch:
_WKElementInfo is now WKElementInfo in file and class names. Header is now
public.

_WKPreviewElementInfo is now WKPreviewElementInfo in file and class names.
Header is now public.

_WKPreviewAction is now WKPreviewActionItem in filenames (header is now
public), the protocol _WKPreviewActionItem is now WKPreviewActionItem, and
the _WKPreviewAction class is now WKPreviewAction. (The internal header is
still project, of course.)
and
WKPreviewActionIdentifiersPrivate.h/mm is now
WKPreviewActionItemIdentifiers.h/mm and all the the identifiers have been
updated. Header is now public.

  • Shared/API/Cocoa/WebKit.h:
  • UIProcess/API/Cocoa/WKElementInfo.h: Copied from UIProcess/API/Cocoa/_WKElementInfo.h.
  • UIProcess/API/Cocoa/WKElementInfo.mm: Copied from UIProcess/API/Cocoa/_WKElementInfo.mm.

(-[WKElementInfo copyWithZone:]):
(-[_WKElementInfo copyWithZone:]): Deleted.

  • UIProcess/API/Cocoa/WKElementInfoInternal.h: Copied from UIProcess/API/Cocoa/_WKElementInfoInternal.h.
  • UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.h: Removed.
  • UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.mm: Removed.
  • UIProcess/API/Cocoa/WKPreviewActionItem.h: Copied from UIProcess/API/Cocoa/_WKPreviewAction.h.
  • UIProcess/API/Cocoa/WKPreviewActionItem.mm: Copied from UIProcess/API/Cocoa/_WKPreviewAction.mm.
  • UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.h: Copied from UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.h.
  • UIProcess/API/Cocoa/WKPreviewActionItemIdentifiers.mm: Copied from UIProcess/API/Cocoa/WKPreviewActionIdentifiersPrivate.mm.
  • UIProcess/API/Cocoa/WKPreviewActionItemInternal.h: Copied from UIProcess/API/Cocoa/_WKPreviewActionInternal.h.
  • UIProcess/API/Cocoa/WKPreviewElementInfo.h: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfo.h.
  • UIProcess/API/Cocoa/WKPreviewElementInfo.mm: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfo.mm.

(-[WKPreviewElementInfo _initWithLinkURL:]):
(-[_WKPreviewElementInfo _initWithLinkURL:]): Deleted.

  • UIProcess/API/Cocoa/WKPreviewElementInfoInternal.h: Copied from UIProcess/API/Cocoa/_WKPreviewElementInfoInternal.h.
  • UIProcess/API/Cocoa/WKUIDelegate.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/API/Cocoa/_WKContextMenuElementInfo.h:
  • UIProcess/API/Cocoa/_WKElementInfo.h: Removed.
  • UIProcess/API/Cocoa/_WKElementInfo.mm: Removed.
  • UIProcess/API/Cocoa/_WKElementInfoInternal.h: Removed.
  • UIProcess/API/Cocoa/_WKPreviewAction.h: Removed.
  • UIProcess/API/Cocoa/_WKPreviewAction.mm: Removed.
  • UIProcess/API/Cocoa/_WKPreviewActionInternal.h: Removed.
  • UIProcess/API/Cocoa/_WKPreviewElementInfo.h: Removed.
  • UIProcess/API/Cocoa/_WKPreviewElementInfo.mm: Removed.
  • UIProcess/API/Cocoa/_WKPreviewElementInfoInternal.h: Removed.
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):
(previewIdentifierForElementAction):
(-[WKContentView _presentedViewControllerForPreviewItemController:]):
(-[WKContentView _previewItemController:commitPreview:]):

  • WebKit2.xcodeproj/project.pbxproj:
1:18 PM Changeset in webkit [198069] by mmaxfield@apple.com
  • 14 edits
    10 adds in trunk

[OS X] Scrollbars of overflow:scroll divs should appear on the left on RTL systems
​https://bugs.webkit.org/show_bug.cgi?id=155385

Reviewed by Simon Fraser.

Source/WebCore:

There is already some existing setup for RTL scrollbars. This patch hooks up this
existing support to the OS X triggering mechanism introduced in r197956. It also
fixes up the existing support to function even when the direction of the
RTL-scrollbar div is LTR (this means the contents of the div must be pushed
over by the width of the scrollbar).

Tests: fast/scrolling/rtl-scrollbars-overflow-contents.html

fast/scrolling/rtl-scrollbars-overflow-dir-rtl.html
fast/scrolling/rtl-scrollbars-overflow-padding.html
fast/scrolling/rtl-scrollbars-overflow-simple.html
fast/scrolling/rtl-scrollbars-overflow.html

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::addOverflowFromPositionedObjects):
(WebCore::RenderBlock::logicalLeftOffsetForContent):
(WebCore::RenderBlock::logicalRightOffsetForContent):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::determineLogicalLeftPositionForChild):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::overflowClipRect):
(WebCore::RenderBox::layoutOverflowRectForPropagation):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::computeScrollDimensions):

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::shouldPlaceBlockDirectionScrollbarOnLogicalLeft):

  • rendering/style/RenderStyle.h:

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/win/TestExpectations:
  • fast/scrolling/rtl-scrollbars-overflow-contents-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-contents.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-dir-rtl-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-dir-rtl.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-padding-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-padding.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-simple-expected-mismatch.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow-simple.html: Added.
  • fast/scrolling/rtl-scrollbars-overflow.html: Added.
12:59 PM Changeset in webkit [198068] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.6.8

New tag.

12:58 PM Changeset in webkit [198067] by ddkilzer@apple.com
  • 2 edits in trunk/Tools

REGRESSION (r178615): Fix incorrect case in included header for WeakPtr.cpp

  • TestWebKitAPI/Tests/WTF/WeakPtr.cpp: Change "test.h" to

"Test.h" to fix incorrect case. This was discovered when adding
WeakPtr.cpp to CMakeLists.txt for the patch on Bug 155394.

11:59 AM Changeset in webkit [198066] by ddkilzer@apple.com
  • 4 edits in trunk/Tools

run-webkit-tests: handle Darwin framework/library environment variables more consistently
<​http://webkit.org/b/155392>

Reviewed by Daniel Bates.

These changes will make it possible to pass through environment
variables from the run-webkit-tests command-line.

  • Scripts/webkitpy/port/base.py:

(Port.to.setup_environ_for_server): Add DYLD_FRAMEWORK_PATH,
XPC_DYLD_FRAMEWORK_PATH and XPC_DYLD_LIBRARY_PATH to the
list of variables to keep from the run-webkit-test environment.

  • Scripts/webkitpy/port/driver.py:

(Driver._append_environment_variable_path): Add method to append
a path to an environment variable, or set the path if the
variable doesn't exist.
(Driver._setup_environ_for_driver): Extract build_root_path into
a local variable. Use Driver._append_environment_variable_path
to extend DYLD_LIBRARY_PATH, XPC_DYLD_LIBRARY_PATH,
DYLD_FRAMEWORK_PATH and
XPC_DYLD_FRAMEWORK_PATH instead of
overwriting them.

  • Scripts/webkitpy/port/driver_unittest.py:

(DriverTest.testappend_environment_variable_path): Add test
method to test Driver._append_environment_variable_path.

10:16 AM Changeset in webkit [198065] by Nikita Vasilyev
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert toolbar and tab bar to position absolute to reduce repaint areas
​https://bugs.webkit.org/show_bug.cgi?id=155386

Reviewed by Timothy Hatcher.

Using CSS flexbox causes unnecessary large repaints.
Convert top level elements (.toolbar, .tab-bar, #main)
from flexbox to "position: absolute".

  • UserInterface/Views/Main.css:

(#main):

  • UserInterface/Views/TabBar.css:

(.tab-bar):

  • UserInterface/Views/Toolbar.css:

(.toolbar):
(body.mac-platform:not(.docked, .mavericks) .toolbar):
(body.mac-platform:not(.docked, .mavericks)):
(body.window-inactive:not(.mavericks) .toolbar): Deleted.

  • UserInterface/Views/Variables.css:

(:root):

9:30 AM Changeset in webkit [198064] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.22.0.1/Source

Versioning.

9:27 AM Changeset in webkit [198063] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.22.0.1

New tag.

9:24 AM Changeset in webkit [198062] by Alan Bujtas
  • 9 edits
    8 adds in trunk

[Forms: focus] focus rings around text fields do not follow contour (border-radius)
​https://bugs.webkit.org/show_bug.cgi?id=154099
rdar://problem/9988429

Reviewed by Tim Horton.

Source/WebCore:

This patch enables outline-style: auto to follow the curve of border-radius.
When both border-radius and outline-style: auto are set, the native focusring painting will take the border-radius values
into account. This is only for outline-style: auto, other non-auto outline styles paint as if there
was no border-radius set.
It supports both single and multiline content with joint rectangles.
However in case of disjoint rectangles, we fallback to the non-radius drawing.

Tests: fast/inline/hidpi-outline-auto-with-border-radius-horizontal-ltr.html

fast/inline/hidpi-outline-auto-with-border-radius-horizontal-rtl.html
fast/inline/hidpi-outline-auto-with-border-radius-vertical-ltr.html
fast/inline/hidpi-outline-auto-with-border-radius-vertical-rtl.html

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/Path.cpp:

(WebCore::Path::addBeziersForRoundedRect):

  • platform/graphics/Path.h:

(WebCore::Path::circleControlPoint):

  • platform/graphics/PathUtilities.cpp:

(WebCore::polygonsForRect):
(WebCore::PathUtilities::pathsWithShrinkWrappedRects):
(WebCore::startAndEndPointsForCorner):
(WebCore::cornerType):
(WebCore::controlPointsForBezierCurve):
(WebCore::adjustedtRadiiForHuggingCurve):
(WebCore::PathUtilities::pathWithShrinkWrappedRectsForOutline):

  • platform/graphics/PathUtilities.h:
  • platform/graphics/mac/GraphicsContextMac.mm:

(WebCore::GraphicsContext::drawFocusRing):

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::paintFocusRing):

LayoutTests:

Unfortunately there's no proper way to test native focusring drawing.
These tests attempt to verify that we don't end up painting sharp corners.

  • fast/inline/hidpi-outline-auto-with-border-radius-horizontal-ltr-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-horizontal-ltr.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-horizontal-rtl-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-horizontal-rtl.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-vertical-ltr-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-vertical-ltr.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-vertical-rtl-expected.html: Added.
  • fast/inline/hidpi-outline-auto-with-border-radius-vertical-rtl.html: Added.
7:22 AM WebKitGTK/2.12.x edited by Michael Catanzaro
(diff)
2:51 AM Changeset in webkit [198061] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.4/Source/JavaScriptCore

Merge r173886 - [CLoop] - Fix CLoop on the 32-bit Big-Endians
​https://bugs.webkit.org/show_bug.cgi?id=137020

Patch by Tomas Popela <​tpopela@redhat.com> on 2016-03-12
Reviewed by Mark Lam.

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
2:50 AM Changeset in webkit [198060] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.4/Source/JavaScriptCore

LLINT op_put_to_scope and op_get_from_scope should use loadpFromInstruction to get operand from instruction
​https://bugs.webkit.org/show_bug.cgi?id=132333

Unreviewed.

When loading operand variable from instruction in
_llint_op_get_from_scope and _llint_op_put_to_scope use
loadpFromInstruction instead of loadisFromInstruction. Also when
saving the operand in LLIntSlowPaths.cpp use the same way as in
CodeBlock.cpp.

Patch by Tomas Popela <​tpopela@redhat.com> on 2016-03-12

  • llint/LLIntSlowPaths.cpp:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
2:50 AM Changeset in webkit [198059] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.4/Source/JavaScriptCore

Revert "Merge r173886 - [CLoop] - Fix CLoop on the 32-bit Big-Endians"

This reverts commit 5eed35f00c8f26efa2bd5084dc5009563c307e7f.

2:23 AM Changeset in webkit [198058] by commit-queue@webkit.org
  • 4 edits in trunk

.:
[GTK][Mac] Don't force ENABLE_INTROSPECTION=OFF on Mac
​https://bugs.webkit.org/show_bug.cgi?id=152650

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-12
Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit2:
[GTK][Mac] Use DYLD_LIBRARY_PATH on OSX rather then LD_LIBRARY_PATH
​https://bugs.webkit.org/show_bug.cgi?id=152650

Patch by Jeremy Huddleston Sequoia <​jeremyhu@apple.com> on 2016-03-12
Reviewed by Carlos Garcia Campos.

  • PlatformGTK.cmake:

Mar 11, 2016:

7:28 PM Changeset in webkit [198057] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Remove a few jumps from DFG
​https://bugs.webkit.org/show_bug.cgi?id=155347

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-11
Reviewed by Mark Lam.

Usually, setting ValueTrue or ValueFalse is set
by Compare+Or. There are 3 places in DFG with branches instead.

This patch changes them to the usual pattern.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileObjectEquality):
(JSC::DFG::SpeculativeJIT::compileObjectToObjectOrOtherEquality):

7:11 PM Changeset in webkit [198056] by rniwa@webkit.org
  • 26 edits
    8 adds in trunk

Add Event.deepPath() and Event.scoped
​https://bugs.webkit.org/show_bug.cgi?id=153538
<rdar://problem/24363836>

Reviewed by Darin Adler.

Source/WebCore:

Added the support for deepPath(), scoped, and relatedTargetScoped on Event.prototype for shadow DOM:
​http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-event-interface
and updated the EventPath class to respect scoped and relatedTargetScoped flags as specified at:
​http://w3c.github.io/webcomponents/spec/shadow/#get-the-parent

Tests: fast/shadow-dom/Extensions-to-Event-Interface.html

fast/shadow-dom/trusted-event-scoped-flags.html

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDefinition): Added the support for Conditional for InitializedByEventConstructor.

  • bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.cpp:
  • bindings/scripts/test/GObject/WebKitDOMTestEventConstructor.h:
  • bindings/scripts/test/JS/JSTestEventConstructor.cpp:
  • bindings/scripts/test/ObjC/DOMTestEventConstructor.h:
  • bindings/scripts/test/ObjC/DOMTestEventConstructor.mm:
  • bindings/scripts/test/TestEventConstructor.idl: Added a test case for using InitializedByEventConstructor

with Conditional.

  • dom/Event.cpp:

(WebCore::Event::Event): Initialize m_scoped and m_relatedTargetScoped from EventInit dictionary.
(WebCore::Event::scoped): Added. Implements ​http://w3c.github.io/webcomponents/spec/shadow/#scoped-flag
(WebCore::Event::deepPath): Added.

  • dom/Event.h:

(WebCore::Event::relatedTargetScoped): Added. Overridden by FocusEvent and MouseEvent to implement
​http://w3c.github.io/webcomponents/spec/shadow/#relatedtargetscoped-flag
(WebCore::Event::setEventPath): Added.
(WebCore::Event::clearEventPath): Added.

  • dom/Event.idl: Added scoped, relatedTargetScoped, and deepPath() conditionally enabled for shadow DOM.
  • dom/EventContext.h:

(WebCore::EventContext::currentTarget):

  • dom/EventDispatcher.cpp:

(WebCore::EventDispatcher::dispatchEvent): Set the event path while the event is being dispatched.

  • dom/EventPath.cpp:

(WebCore::shouldEventCrossShadowBoundary): Check event.scoped flag instead of hard-coding a list of events here
which has been moved to Event::scoped. See above.
(WebCore::EventPath::setRelatedTarget): Check m_event.relatedTargetScoped() instead of hard-coding a list of
events here. relatedTargetScoped is overridden by FocusEvent and MouseEvent.
(WebCore::EventPath::hasEventListeners): Fixed the misleading variable name.
(WebCore::isUnclosedNodeOf): Added. Implements ​http://w3c.github.io/webcomponents/spec/shadow/#dfn-unclosed-node
(WebCore::EventPath::computePathDisclosedToTarget): Added. Implements the algorithm to filter event targets:
​http://w3c.github.io/webcomponents/spec/shadow/#widl-Event-deepPath-sequence-EventTarget

  • dom/EventPath.h:
  • dom/FocusEvent.cpp:

(WebCore::FocusEvent::relatedTargetScoped): Returns true when this is a trusted event per:
​http://w3c.github.io/webcomponents/spec/shadow/#relatedtargetscoped-flag

  • dom/FocusEvent.h:
  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::relatedTargetScoped): Ditto.

  • dom/MouseEvent.h:

LayoutTests:

Added a W3C style testharness.js tests for Event.prototype.scoped, Event.prototype.scopedRelatedTarget,
Event.prototype.deepPath() and a test that uses eventSender to verify the values of the scoped and
scopedRelatedTarget flags on trusted events.

  • fast/shadow-dom/Extensions-to-Event-Interface-expected.txt: Added.
  • fast/shadow-dom/Extensions-to-Event-Interface.html: Added.
  • fast/shadow-dom/event-with-related-target.html:
  • fast/shadow-dom/resources: Added.
  • fast/shadow-dom/resources/event-path-test-helpers.js: Added. Extracted from event-with-related-target.html.
  • fast/shadow-dom/trusted-event-scoped-flags-expected.txt: Added.
  • fast/shadow-dom/trusted-event-scoped-flags.html: Added.
  • fast/xmlhttprequest/xmlhttprequest-get-expected.txt:
  • http/tests/workers/worker-importScriptsOnError-expected.txt:
  • inspector/model/remote-object-get-properties-expected.txt:
  • platform/ios-simulator/fast/shadow-dom/trusted-event-scoped-flags-expected.txt: Added.
4:36 PM Changeset in webkit [198055] by commit-queue@webkit.org
  • 9 edits in trunk/Source

Move prevalent resource classifier from WebCore to WebKit.
​https://bugs.webkit.org/show_bug.cgi?id=155242
<rdar://problem/24913272>

Patch by John Wilander <​wilander@apple.com> on 2016-03-11
Reviewed by Andy Estes.

Source/WebCore:

No new tests since we have yet to decide how to set up tests for prevalent resources.

  • loader/ResourceLoadObserver.cpp:

(WebCore::ResourceLoadObserver::logFrameNavigation):
(WebCore::ResourceLoadObserver::logSubresourceLoading):

  • Removed calls to old classifier in WebCore.
  • loader/ResourceLoadStatistics.cpp:

(WebCore::encodeHashCountedSet):
(WebCore::ResourceLoadStatistics::checkAndSetAsPrevalentResourceIfNecessary): Deleted.
(WebCore::ResourceLoadStatistics::hasPrevalentResourceCharacteristics): Deleted.

  • loader/ResourceLoadStatistics.h:
    • Deleted old classification functions.
  • loader/ResourceLoadStatisticsStore.cpp:

(WebCore::ResourceLoadStatisticsStore::create):
(WebCore::ResourceLoadStatisticsStore::fireDataModificationHandler):
(WebCore::ResourceLoadStatisticsStore::hasEnoughDataForStatisticsProcessing):

  • New function to allow for checks before calls to processStatistics.

(WebCore::ResourceLoadStatisticsStore::processStatistics):

  • New function that receives a lamda and executes it on every entry in its statistics map.
  • loader/ResourceLoadStatisticsStore.h:

Source/WebKit2:

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::create):
(WebKit::WebResourceLoadStatisticsStore::~WebResourceLoadStatisticsStore):
(WebKit::hasPrevalentResourceCharacteristics):
(WebKit::classifyPrevalentResources):

  • Moved these two functions from WebCore.

(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated):

  • Calls processStatistics with a lamda function to classify prevalent resources.
  • WebKit2.xcodeproj/project.pbxproj:
    • Fixed the ordering of source files.
3:59 PM Changeset in webkit [198054] by weinig@apple.com
  • 2 edits in trunk/Source/WebKit2

WebKit needs a new sandbox profile addition for DataDetectors
<rdar://problem/25091102>

Reviewed by Brent Fulgham.

  • WebProcess/com.apple.WebProcess.sb.in:
3:56 PM Changeset in webkit [198053] by ap@apple.com
  • 3 edits in trunk/Tools

[ios-sim debug] API test WTF_Lock.ContendedShortSection and WTF_ParkingLot.UnparkOneFifty timing out
​https://bugs.webkit.org/show_bug.cgi?id=155276

[ios-sim] API test WTF_Condition.TenProducersTenConsumersOneSlot timing out
​https://bugs.webkit.org/show_bug.cgi?id=155345

[iOS Simulator] API test timeout: WTF_ParkingLot.UnparkOneFiftyThenFiftyAll
​https://bugs.webkit.org/show_bug.cgi?id=153997
<rdar://problem/23580034>

<rdar://problem/23580018> TestWebKitAPI Timeout: WTF_ParkingLot.UnparkOneFifty

Rubber-stamped by Filip Pizlo.

  • Scripts/run-api-tests: These tests are pretty slow. Increase API test timeout.
  • TestWebKitAPI/Tests/WTF/ParkingLot.cpp: Start running WTF_ParkingLot.UnparkOneFiftyThenFiftyAll

on iOS again.

3:48 PM Changeset in webkit [198052] by sbarati@apple.com
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Make Object.assign spec compliant
​https://bugs.webkit.org/show_bug.cgi?id=155375

Reviewed by Michael Saboff.

This is a straight forward implementation of Object.assign
in the spec.
​https://tc39.github.io/ecma262/#sec-object.assign
Before, weren't performing all of the specified operations.
Now, we are.

  • builtins/ObjectConstructor.js:

(assign):

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

(JSC::JSGlobalObject::init):

  • tests/es6.yaml:
3:24 PM Changeset in webkit [198051] by Chris Dumez
  • 5 edits in trunk/Source/WebKit2

Regression(r198040): WebKit2.DocumentStartUserScriptAlertCrashTest API test is crashing in debug
​https://bugs.webkit.org/show_bug.cgi?id=155382

Reviewed by Alexey Proskuryakov.

r198040 introduced an assertion to make sure we never call
applicationBundleIsEqualTo() before setApplicationBundleIdentifier()
is called. This new assertion found a bug as it turns out we were
calling setApplicationBundleIdentifier() too late during the
WebProcess initialization and some runtime applications checks were
already done by then.

To address the problem, this patch moves the
setApplicationBundleIdentifier() call as early as possible during
the WebProcess and the NetworkProcess initialization. It also moves
it to the Cocoa specific files for clarity.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

3:15 PM Changeset in webkit [198050] by jiewen_tan@apple.com
  • 3 edits
    3 adds in trunk

WebKit should not be redirected to an invalid URL
​https://bugs.webkit.org/show_bug.cgi?id=155263
<rdar://problem/22820172>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/navigation/redirect-to-invalid-url.html

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):

LayoutTests:

  • http/tests/navigation/redirect-to-invalid-url-expected.txt: Added.
  • http/tests/navigation/redirect-to-invalid-url.html: Added.
  • http/tests/navigation/resources/redirect-to-invalid-url-frame.php: Added.
2:50 PM Changeset in webkit [198049] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

Use only selected text for Look up.
​https://bugs.webkit.org/show_bug.cgi?id=155380

Reviewed by Tim Horton.

The corresponding piece that uses the extended context for Look up
is not ready yet. For the moment default to retrieving the selected text.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _lookup:]):

2:49 PM Changeset in webkit [198048] by jer.noble@apple.com
  • 2 edits in trunk/Tools

[ios-sim debug] API tests RequiresUserActionForPlaybackTest.DoesNotRequireUserActionForMediaPlayback and RequiresUserActionForAudioButNotVideoPlayback asserting
​https://bugs.webkit.org/show_bug.cgi?id=155365

Reviewed by Darin Adler.

Allow tests running on iOS simulator to play video inline, avoiding this assert.

  • TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm:

(RequiresUserActionForPlaybackTest::SetUp):

2:25 PM Changeset in webkit [198047] by bshafiei@apple.com
  • 4 edits in tags/Safari-602.1.22/Source/WebKit2

Merged r198046.

2:13 PM Changeset in webkit [198046] by mitz@apple.com
  • 4 edits in trunk/Source/WebKit2

[iOS] Allow clients to specify text suggestions to be used for a form input session
​https://bugs.webkit.org/show_bug.cgi?id=155343

Patch by Chelsea Pugh <​cpugh@apple.com> on 2016-03-11
Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/_WKFormInputSession.h:
  • UIProcess/API/Cocoa/_WKInputDelegate.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKFormInputSession suggestions]): Add a getter for suggestions.
(-[WKFormInputSession setSuggestions:]): Add a setter, which calls setSuggestions with our suggestions on the input delegate.
(-[WKContentView insertTextSuggestion:]): Call _webView:insertTextSuggestion:inInputSession: on our input delegate so clients know
a text suggestion was tapped.

1:53 PM Changeset in webkit [198045] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Wrong TimelineOverview height after switching from Events to Frames
​https://bugs.webkit.org/show_bug.cgi?id=155366
<rdar://problem/25111028>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
Update the overview height after setting a new view mode.

1:47 PM Changeset in webkit [198044] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Fix typo in StyleTreeResolver.cpp
​https://bugs.webkit.org/show_bug.cgi?id=139946

Patch by Maksim Kisilev <​mkisilev@yandex-team.ru> on 2016-03-10
Reviewed by Andy Estes.

The constructor for CheckForVisibilityChangeOnRecalcStyle was improperly comparing the
result of WKContentChange() (which is not a function) to WKContentVisibilityChange. I
believe the above cast would implicitly resolve to WKContentNoChange in all cases,
whether a visibility change had been observed or not.

This patch corrects this problem. I would expect that this might affect some content
visibility change behavior, but I'm not sure what the appropriate test case would be
since this was apparently found through code inspection.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::CheckForVisibilityChangeOnRecalcStyle::CheckForVisibilityChangeOnRecalcStyle):

1:46 PM Changeset in webkit [198043] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/track/track-in-band-style.html as flaky on Yosemite
​https://bugs.webkit.org/show_bug.cgi?id=153143

Unreviewed test gardening.

  • platform/mac-wk1/TestExpectations:
1:08 PM Changeset in webkit [198042] by mark.lam@apple.com
  • 21 edits in trunk

Implement Function.name and Function#toString for ES6 class.
​https://bugs.webkit.org/show_bug.cgi?id=155336

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

The only thing that the ES6 spec says about toString with regards to class
objects is:

"The string representation must have the syntax of a FunctionDeclaration,
FunctionExpression, GeneratorDeclaration, GeneratorExpression, ClassDeclaration,
ClassExpression, ArrowFunction, MethodDefinition, or GeneratorMethod depending
upon the actual characteristics of the object."

Previously, invoking toString() on a class object will return the function
source string of the class' constructor function. This does not conform to the
spec in that the toString string for a class does not have the syntax of a
ClassDeclaration or ClassExpression.

This is now fixed by doing the following:

  1. Added "m_classSource" to FunctionExecutable (and correspondingly to UnlinkedFunctionExecutable, FunctionMetadataNode, and ClassExprNode). m_classSource is the SourceCode for the code range "class ... { ... }".

Since the class constructor function is the in memory representation of the
class object, only class constructor functions will have its m_classSource
set. m_classSource will be "null" (by default) for all other functions.
This is how we know if a FunctionExecutable is for a class.

Note: FunctionExecutable does not have its own m_classSource. It always gets
it from its UnlinkedFunctionExecutable. This is ok to do because our CodeCache
currently does not cache UnlinkedFunctionExecutables for class constructors.

  1. The ClassExprNode now tracks the SourceCode range for the class expression. This is used to set m_classSource in the UnlinkedFunctionExecutable at bytecode generation time, and the FunctionExecutable later at bytecode linking time.
  1. Function.prototype.toString() now checks if the function is for a class. If so, it returns the string for the class source instead of just the function source for the class constructor.

Note: the class source is static from the time the class was parsed. This
can introduces some weirdness at runtime. Consider the following:

var v1 = class {}
v1.toString(); yields "class {}".

class c2 extends v1 {}

c2.proto === v1; yields true i.e. c2 extends v1.
c2.toString();
yields "class c2 extends v1 {}" which is fine.

v1 = {}; point v1 to something else now.

c2.proto === v1; now yields false i.e. c2 no longer extends v1.

c2 actually extends the class that v1 used to
point to, but ...

c2.toString(); still yields "class c2 extends v1 {}" which is no longer true.

It is unclear how we can best implement toString() to avoid this issue.
The above behavior is how Chrome (Version 51.0.2671.0 canary (64-bit))
currently implements toString() of a class, and we do the same in this patch.
In Firefox (45.0), toString() of a class will yield the function source of it
constructor function, which is not better.

In this patch, we also added ES6 compliance for Function.name on class objects:

  1. The ClassExprNode now has a m_ecmaName string for tracking the inferred name of a class according to the ES6 spec. The ASTBuilder now mirrors its handling of FuncExprNodes to ClassExprNodes in setting the nodes' m_ecmaName where relevant.

The m_ecmaName is later used to set the m_ecmaName of the FunctionExecutable
of the class constructor, which in turn is used to populate the initial value
of the Function.name property.

  1. Also renamed some variable names (/m_metadata/metadata/) to be consistent with webkit naming convention.
  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

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

(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitNewDefaultConstructor):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ClassExprNode::emitBytecode):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createAssignResolve):
(JSC::ASTBuilder::createYield):
(JSC::ASTBuilder::createClassExpr):
(JSC::ASTBuilder::createFunctionExpr):
(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::makeAssignNode):

  • parser/NodeConstructors.h:

(JSC::FunctionParameters::FunctionParameters):
(JSC::BaseFuncExprNode::BaseFuncExprNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::FuncDeclNode::FuncDeclNode):
(JSC::ArrowFuncExprNode::ArrowFuncExprNode):
(JSC::ClassDeclNode::ClassDeclNode):
(JSC::ClassExprNode::ClassExprNode):

  • parser/Nodes.h:

(JSC::ExpressionNode::isDestructuringNode):
(JSC::ExpressionNode::isFuncExprNode):
(JSC::ExpressionNode::isArrowFuncExprNode):
(JSC::ExpressionNode::isClassExprNode):
(JSC::ExpressionNode::isCommaNode):
(JSC::ExpressionNode::isSimpleArray):
(JSC::ExpressionNode::isAdd):

  • parser/Parser.cpp:

(JSC::stringForFunctionMode):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseClass):

  • parser/ParserFunctionInfo.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createEmptyLetExpression):
(JSC::SyntaxChecker::createYield):
(JSC::SyntaxChecker::createClassExpr):
(JSC::SyntaxChecker::createFunctionExpr):
(JSC::SyntaxChecker::createFunctionMetadata):
(JSC::SyntaxChecker::createArrowFunctionExpr):

  • runtime/Executable.cpp:

(JSC::FunctionExecutable::FunctionExecutable):
(JSC::FunctionExecutable::finishCreation):

  • runtime/Executable.h:
  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • tests/es6.yaml:

LayoutTests:

  • js/class-syntax-name-expected.txt:
  • js/script-tests/class-syntax-name.js:

(shouldBe):
(shouldBeTrue):

  • Rebased expected result.
  • js/function-toString-vs-name.html:
  • js/script-tests/function-toString-vs-name.js:
  • Added new tests for class.
  • platform/mac/inspector/model/remote-object-expected.txt:
  • Rebased expected result.
1:07 PM BuildingGtk edited by clopez@igalia.com
(diff)
1:06 PM BuildingGtk edited by clopez@igalia.com
(diff)
1:05 PM BuildingGtk edited by clopez@igalia.com
(diff)
12:59 PM Changeset in webkit [198041] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Creating and releasing a WKBackForwardListItem crashes
​https://bugs.webkit.org/show_bug.cgi?id=155376
rdar://problem/17377712

Reviewed by Dan Bernstein.

Make init unavailable.

  • UIProcess/API/Cocoa/WKBackForwardListItem.h:
12:26 PM Changeset in webkit [198040] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

iOS-sim debug: WebCoreNSURLSessionTest.BasicOperation and WebCoreNSURLSessionTest.InvalidateEmpty asserting
​https://bugs.webkit.org/show_bug.cgi?id=155256

Reviewed by Alexey Proskuryakov.

r197628 consolidated the runtime application checking code for iOS and
Mac. However, while the new code works fine for WebKit2, it is unsafe
on WebKit1 / iOS and hits assertion in debug. The reason is that
applicationBundleIdentifier() for getting called from several threads
(WebThread, UIThread).

To address the problem, this patch renames applicationBundleIdentifier()
to applicationBundleIdentifierOverride() and only initializes the
override upon WebProcess and Network process initialization. We therefore
do not initialize the override in WebKit1 or in the WebKit2 UIProcess.
When the override is not set, we fall back to using the main bundle
identifier (which does the right thing for WebKit1 / WebKit2 UIProcess)
but without caching it to avoid thread safety issues.

No new tests, already covered by API tests currently crashing.

  • platform/RuntimeApplicationChecks.mm:

(WebCore::applicationBundleIdentifierOverride):

  • Renamed applicationBundleIdentifier() to applicationBundleIdentifierOverride() and only initialize upon initialization of the WebProcess or the Network process.
  • In debug, set a flag to indicate that the override was already queried.

(WebCore::applicationBundleIdentifier):
New utility function that is returns the application bundle override if it is
set and fallback to calling [[NSBundle mainBundle] bundleIdentifier] otherwise.

(WebCore::setApplicationBundleIdentifier):
Add assertions to make sure that:

  1. This is always called from the main thread.
  2. The application bundle identifier has not been queried *before* getting overriden as this would indicate a bug in our code and we would have wrongly returned the main bundle identifier in such case.

(WebCore::MacApplication::isAppleMail):
(WebCore::MacApplication::isIBooks):
(WebCore::MacApplication::isITunes):
(WebCore::MacApplication::isMicrosoftMessenger):
(WebCore::MacApplication::isAdobeInstaller):
(WebCore::MacApplication::isMicrosoftOutlook):
(WebCore::MacApplication::isQuickenEssentials):
(WebCore::MacApplication::isAperture):
(WebCore::MacApplication::isVersions):
(WebCore::MacApplication::isHRBlock):
(WebCore::MacApplication::isHipChat):
(WebCore::IOSApplication::isMobileSafari):
(WebCore::IOSApplication::isDumpRenderTree):
(WebCore::IOSApplication::isMobileStore):
(WebCore::IOSApplication::isFacebook):
(WebCore::IOSApplication::isDaijisenDictionary):
(WebCore::IOSApplication::isNASAHD):
(WebCore::IOSApplication::isTheEconomistOnIphone):
(WebCore::IOSApplication::isWebProcess):
(WebCore::IOSApplication::isIBooks):
Drop assertions making sure the cached flag is correct. We now have
an assertion to detect this earlier in setApplicationBundleIdentifier().

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

Marking imported/blink/fast/multicol/dynamic/multicol-with-abspos-svg-with-foreignobject-with-multicol-crash.html as flaky
​https://bugs.webkit.org/show_bug.cgi?id=155339

Unreviewed test gardening.

This test is a flaky crash on ios-simulator debug.

  • platform/ios-simulator/TestExpectations:
12:01 PM Changeset in webkit [198038] by bshafiei@apple.com
  • 5 edits
    1 delete in tags/Safari-602.1.22/Source/JavaScriptCore

Merged r198024.

11:54 AM Changeset in webkit [198037] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Follow-up to:

_WKPreviewAction should be in an internal header
​https://bugs.webkit.org/show_bug.cgi?id=155370

Rubber-stamped by Dan Bernstein.

  • UIProcess/API/Cocoa/_WKPreviewActionInternal.h:
11:37 AM Changeset in webkit [198036] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/heap/getPreview.html as flaky on mac-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155312

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
11:35 AM Changeset in webkit [198035] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

Web Audio becomes distorted after sample rate changes
​https://bugs.webkit.org/show_bug.cgi?id=154538
<rdar://problem/24771292>

Reviewed by Darin Adler.

When the underlying audio hardware sample rate changes, the AudioUnit render callback will begin asking
for fewer or more frames. For example, when the sample rate goes from 44.1kHz to 48kHz, it will ask for
118 samples instead of 128. (And vice-versa, 140 samples instead of 128.) But the Web Audio engine can only
really handle requests in multiples of 128 samples. In the case where there are requests for < 128 samples,
actually render 128, but save off the unrequested samples in a separate bus. Then fill that bus during the
next request.

  • platform/audio/AudioBus.cpp:

(WebCore::AudioBus::copyFromRange): Added utility method.

  • platform/audio/AudioBus.h:
  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::AudioDestinationIOS): Create a "spare" bus.
(WebCore::assignAudioBuffersToBus): Moved from inside render.
(WebCore::AudioDestinationIOS::render): Save off extra samples to the "spare" bus.

  • platform/audio/ios/AudioDestinationIOS.h:
11:30 AM Changeset in webkit [198034] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking css3/masking/mask-luminance-svg.html and css3/masking/mask-svg-script-none-to-png.html as flaky
​https://bugs.webkit.org/show_bug.cgi?id=155372.

Unreviewed test gardening.

These two tests are flaky crashes on ios-simulator debug.

  • platform/ios-simulator/TestExpectations:
11:29 AM Changeset in webkit [198033] by Beth Dakin
  • 5 edits
    1 add in trunk/Source/WebKit2

_WKPreviewAction should be in an internal header
​https://bugs.webkit.org/show_bug.cgi?id=155370

Reviewed by Tim Horton.

Move _WKPreviewAction to an Internal header since only the protocol needs to
be SPI.

  • UIProcess/API/Cocoa/_WKPreviewAction.h:
  • UIProcess/API/Cocoa/_WKPreviewAction.mm:
  • UIProcess/API/Cocoa/_WKPreviewActionInternal.h: Added.
  • UIProcess/ios/WKContentViewInteraction.mm:
  • WebKit2.xcodeproj/project.pbxproj:
11:05 AM Changeset in webkit [198032] by bshafiei@apple.com
  • 3 edits
    3 deletes in tags/Safari-602.1.22

Merged r198027.

11:03 AM Changeset in webkit [198031] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

11:02 AM Changeset in webkit [198030] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.22

New tag.

10:52 AM Changeset in webkit [198029] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[jhbuild] Disable LLVM OCaml bindings.
​https://bugs.webkit.org/show_bug.cgi?id=153274

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-11
Reviewed by Michael Catanzaro.

  • gtk/jhbuild.modules: disable all (actually only OCaml) bindings for LLVM.
10:48 AM Changeset in webkit [198028] by Yusuke Suzuki
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r198023.
​https://bugs.webkit.org/show_bug.cgi?id=155024

Reviewed by Geoffrey Garen.

Update binding test results.

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

(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):

10:36 AM Changeset in webkit [198027] by Ryan Haddad
  • 3 edits
    3 deletes in trunk

Unreviewed, rolling out r197984.

This change caused an existing LayoutTest to fail

Reverted changeset:

"WebKit should not be redirected to an invalid URL"
​https://bugs.webkit.org/show_bug.cgi?id=155263
​http://trac.webkit.org/changeset/197984

10:30 AM Changeset in webkit [198026] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Make it possible to disable TimelineRuler UI
​https://bugs.webkit.org/show_bug.cgi?id=155348
<rdar://problem/25103505>

Reviewed by Timothy Hatcher.

Adds an "enabled" property to TimelineRuler, allowing the selection UI
to be disabled without removing the current selection.

  • UserInterface/Views/TimelineRuler.css:

(.timeline-ruler.allows-time-range-selection:not(.disabled)):
(.timeline-ruler > .selection-drag):
(.timeline-ruler:not(.disabled) > .selection-drag):
(.timeline-ruler:not(.disabled) > .selection-drag:active):
(.timeline-ruler.disabled > .selection-handle):
(.timeline-ruler.allows-time-range-selection): Deleted.
(.timeline-ruler > .selection-drag:active): Deleted.
Updated ruler styles for "disabled" state: pointer events are disabled,
selection handles hidden, and the default cursor is shown.

  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler):
(WebInspector.TimelineRuler.prototype.get enabled):
(WebInspector.TimelineRuler.prototype.set enabled):
New property.
(WebInspector.TimelineRuler.prototype._handleClick):
Corrected code which always reset the pointer events to "all", instead
of setting it back to the original value.

10:02 AM Changeset in webkit [198025] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Unreviewed, rolling out r197495.
​https://bugs.webkit.org/show_bug.cgi?id=155369

LLVM is needed to run update-webkitgtk-libs reliably
(Requested by mcatanzaro on #webkit).

Reverted changeset:

"[jhbuild] Remove LLVM dependency."
​https://bugs.webkit.org/show_bug.cgi?id=153274
​http://trac.webkit.org/changeset/197495

9:51 AM Changeset in webkit [198024] by commit-queue@webkit.org
  • 5 edits
    1 delete in trunk/Source/JavaScriptCore

Unreviewed, rolling out r197994.
​https://bugs.webkit.org/show_bug.cgi?id=155368

Broke several ARM tests (Requested by msaboff on #webkit).

Reverted changeset:

"[JSC] Add register reuse for ArithAdd of an Int32 and
constant in DFG"
​https://bugs.webkit.org/show_bug.cgi?id=155164
​http://trac.webkit.org/changeset/197994

9:28 AM Changeset in webkit [198023] by Yusuke Suzuki
  • 116 edits
    4 adds in trunk

[ES6] Implement Reflect.set without receiver support
​https://bugs.webkit.org/show_bug.cgi?id=155024

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch implements Reflect.set.
The challenge in this patch is Reflect.set requires boolean result of Set,
this is not propagated in the previous JSC put implementation.

This patch changes the put and putByIndex signature from void put(...) and void putByIndex(...) to bool put(...) and bool putByIndex(...),
more consistent style to the ECMA262 spec's Set.

This patch modifies so many part of WebKit. But almost all the changes are mechanical ones.

Currently, this patch does not support receiver modification support.
This will be supported in the subsequent patch[1].

[1]: ​https://bugs.webkit.org/show_bug.cgi?id=155294

  • API/JSCallbackObject.h:
  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::put):
(JSC::JSCallbackObject<Parent>::putByIndex):

  • debugger/DebuggerScope.cpp:

(JSC::DebuggerScope::put):

  • debugger/DebuggerScope.h:
  • jsc.cpp:

(WTF::RuntimeArray::put):

  • runtime/ClassInfo.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::put):

  • runtime/ClonedArguments.h:
  • runtime/CustomGetterSetter.cpp:

(JSC::callCustomSetter):

  • runtime/CustomGetterSetter.h:
  • runtime/GenericArguments.h:
  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::putByIndex):

  • runtime/GetterSetter.cpp:

(JSC::callSetter):

  • runtime/GetterSetter.h:
  • runtime/JSArray.cpp:

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

  • runtime/JSArray.h:
  • runtime/JSArrayBuffer.cpp:

(JSC::JSArrayBuffer::put):

  • runtime/JSArrayBuffer.h:
  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::put):

  • runtime/JSArrayBufferView.h:
  • runtime/JSCJSValue.cpp:

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

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::put):
(JSC::JSValue::putInline):
(JSC::JSValue::putByIndex):

  • runtime/JSCell.cpp:

(JSC::JSCell::put):
(JSC::JSCell::putByIndex):

  • runtime/JSCell.h:
  • runtime/JSDataView.cpp:

(JSC::JSDataView::put):

  • runtime/JSDataView.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):

  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::put):
(JSC::JSGenericTypedArrayView<Adaptor>::putByIndex):

  • runtime/JSGlobalLexicalEnvironment.cpp:

(JSC::JSGlobalLexicalEnvironment::put):

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

(JSC::JSGlobalObject::put):

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

(JSC::JSLexicalEnvironment::put):

  • runtime/JSLexicalEnvironment.h:
  • runtime/JSModuleEnvironment.cpp:

(JSC::JSModuleEnvironment::put):

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

(JSC::JSModuleNamespaceObject::put):
(JSC::JSModuleNamespaceObject::putByIndex):

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

(JSC::JSModuleRecord::instantiateDeclarations):

  • runtime/JSObject.cpp:

(JSC::JSObject::put):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::putByIndex):
(JSC::JSObject::putGetter):
(JSC::JSObject::putSetter):
(JSC::JSObject::putDirectAccessor):
(JSC::JSObject::putDirectCustomAccessor):
(JSC::JSObject::putDirectNonIndexAccessor):
(JSC::JSObject::putIndexedDescriptor):
(JSC::JSObject::defineOwnIndexedProperty):
(JSC::JSObject::attemptToInterceptPutByIndexOnHoleForPrototype):
(JSC::JSObject::attemptToInterceptPutByIndexOnHole):
(JSC::JSObject::putByIndexBeyondVectorLengthWithoutAttributes):
(JSC::JSObject::putByIndexBeyondVectorLengthWithArrayStorage):
(JSC::JSObject::putByIndexBeyondVectorLength):
(JSC::JSObject::putDirectNativeIntrinsicGetter):
(JSC::JSObject::putDirectNativeFunction):
(JSC::JSObject::putDirectMayBeIndex):
(JSC::validateAndApplyPropertyDescriptor):

  • runtime/JSObject.h:

(JSC::JSObject::putByIndexInline):
(JSC::JSObject::putDirect):

  • runtime/JSObjectInlines.h:

(JSC::JSObject::putInline):

  • runtime/JSProxy.cpp:

(JSC::JSProxy::put):
(JSC::JSProxy::putByIndex):

  • runtime/JSProxy.h:
  • runtime/JSSymbolTableObject.h:

(JSC::symbolTablePut):
(JSC::symbolTablePutTouchWatchpointSet):
(JSC::symbolTablePutInvalidateWatchpointSet):
(JSC::symbolTablePutWithAttributesTouchWatchpointSet):

  • runtime/Lookup.h:

(JSC::putEntry):
(JSC::lookupPut):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::performPut):
(JSC::ProxyObject::put):
(JSC::ProxyObject::putByIndexCommon):
(JSC::ProxyObject::putByIndex):

  • runtime/ProxyObject.h:
  • runtime/PutPropertySlot.h:
  • runtime/ReflectObject.cpp:

(JSC::reflectObjectSet):

  • runtime/RegExpConstructor.cpp:

(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::defineOwnProperty):
(JSC::regExpObjectSetLastIndexStrict):
(JSC::regExpObjectSetLastIndexNonStrict):
(JSC::RegExpObject::put):

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

(JSC::SparseArrayValueMap::putEntry):
(JSC::SparseArrayEntry::put):

  • runtime/SparseArrayValueMap.h:
  • runtime/StringObject.cpp:

(JSC::StringObject::put):
(JSC::StringObject::putByIndex):

  • runtime/StringObject.h:
  • tests/es6.yaml:
  • tests/modules/namespace.js:
  • tests/stress/reflect-set.js: Added.

(shouldBe):
(shouldThrow):
(receiverCase.object2.set Cocoa):
(receiverCase):
(proxyCase):
(objectCase.set get shouldBe):
(objectCase.get shouldBe):
(arrayCase.set get shouldBe):
(arrayCase.get shouldBe):
(arrayBufferCase.set get shouldBe):
(arrayBufferCase.get shouldBe):
(set get shouldBe):
(get shouldBe):
(argumentCase.test1):
(argumentCase.test2):
(argumentCase.test3):
(argumentCase.test4.set get shouldBe):
(argumentCase.test5.get shouldBe):
(argumentStrictCase.test1):
(argumentStrictCase.test2):
(argumentStrictCase.test3):
(argumentStrictCase.test4.set get shouldBe):
(argumentStrictCase.test5.get shouldBe):
(stringObjectCase.set get shouldBe):
(stringObjectCase.get shouldBe):
(customSetter.test1):
(customSetter.test2):
(customSetter.test3):
(customSetter):
(regExpLastIndex):
(functionCase.func):

Source/WebCore:

CustomSetter returns boolean value that indicates the result of Set.
According to this change, this patch modifies the CodeGeneratorJS and test results.

Currently, DOM elements' Set return true when the setter is found.
This is good for the first step.

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::putDelegate):

  • bindings/js/JSDOMBinding.cpp:

(WebCore::throwSetterTypeError):

  • bindings/js/JSDOMBinding.h:
  • bindings/js/JSDOMStringMapCustom.cpp:

(WebCore::JSDOMStringMap::putDelegate):

  • bindings/js/JSDOMWindowBase.cpp:

(WebCore::JSDOMWindowBase::updateDocument):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::put):
(WebCore::JSDOMWindow::putByIndex):

  • bindings/js/JSHTMLAppletElementCustom.cpp:

(WebCore::JSHTMLAppletElement::putDelegate):

  • bindings/js/JSHTMLEmbedElementCustom.cpp:

(WebCore::JSHTMLEmbedElement::putDelegate):

  • bindings/js/JSHTMLObjectElementCustom.cpp:

(WebCore::JSHTMLObjectElement::putDelegate):

  • bindings/js/JSLocationCustom.cpp:

(WebCore::JSLocation::putDelegate):
(WebCore::JSLocationPrototype::putDelegate):

  • bindings/js/JSPluginElementFunctions.cpp:

(WebCore::pluginElementCustomPut):

  • bindings/js/JSPluginElementFunctions.h:
  • bindings/js/JSStorageCustom.cpp:

(WebCore::JSStorage::putDelegate):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GenerateImplementation):
(GeneratePrototypeDeclaration):

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

(WebCore::setJSTestActiveDOMObjectConstructor):

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

(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):

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

(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):

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

(WebCore::setJSTestCustomNamedGetterConstructor):

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

(WebCore::setJSTestEventConstructorConstructor):

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

(WebCore::setJSTestEventTargetConstructor):

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

(WebCore::setJSTestExceptionConstructor):

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

(WebCore::setJSTestGenerateIsReachableConstructor):

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

(WebCore::setJSTestInterfaceConstructor):
(WebCore::JSTestInterface::put):
(WebCore::JSTestInterface::putByIndex):
(WebCore::setJSTestInterfaceConstructorImplementsStaticAttr):
(WebCore::setJSTestInterfaceImplementsStr2):
(WebCore::setJSTestInterfaceImplementsStr3):
(WebCore::setJSTestInterfaceImplementsNode):
(WebCore::setJSTestInterfaceConstructorSupplementalStaticAttr):
(WebCore::setJSTestInterfaceSupplementalStr2):
(WebCore::setJSTestInterfaceSupplementalStr3):
(WebCore::setJSTestInterfaceSupplementalNode):

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

(WebCore::setJSTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorTestAttributeRWCustom):

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

(WebCore::setJSTestMediaQueryListListenerConstructor):

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

(WebCore::setJSTestNamedConstructorConstructor):

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

(WebCore::setJSTestNodeConstructor):
(WebCore::setJSTestNodeName):

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

(WebCore::setJSTestNondeterministicConstructor):
(WebCore::setJSTestNondeterministicNondeterministicWriteableAttr):
(WebCore::setJSTestNondeterministicNondeterministicExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicGetterExceptionAttr):
(WebCore::setJSTestNondeterministicNondeterministicSetterExceptionAttr):

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

(WebCore::setJSTestObjConstructor):
(WebCore::setJSTestObjConstructorStaticStringAttr):
(WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::setJSTestObjEnumAttr):
(WebCore::setJSTestObjByteAttr):
(WebCore::setJSTestObjOctetAttr):
(WebCore::setJSTestObjShortAttr):
(WebCore::setJSTestObjUnsignedShortAttr):
(WebCore::setJSTestObjLongAttr):
(WebCore::setJSTestObjLongLongAttr):
(WebCore::setJSTestObjUnsignedLongLongAttr):
(WebCore::setJSTestObjStringAttr):
(WebCore::setJSTestObjTestObjAttr):
(WebCore::setJSTestObjLenientTestObjAttr):
(WebCore::setJSTestObjStringAttrTreatingNullAsEmptyString):
(WebCore::setJSTestObjXMLObjAttr):
(WebCore::setJSTestObjCreate):
(WebCore::setJSTestObjReflectedStringAttr):
(WebCore::setJSTestObjReflectedIntegralAttr):
(WebCore::setJSTestObjReflectedUnsignedIntegralAttr):
(WebCore::setJSTestObjReflectedBooleanAttr):
(WebCore::setJSTestObjReflectedURLAttr):
(WebCore::setJSTestObjReflectedCustomIntegralAttr):
(WebCore::setJSTestObjReflectedCustomBooleanAttr):
(WebCore::setJSTestObjReflectedCustomURLAttr):
(WebCore::setJSTestObjTypedArrayAttr):
(WebCore::setJSTestObjAttrWithGetterException):
(WebCore::setJSTestObjAttrWithGetterExceptionWithMessage):
(WebCore::setJSTestObjAttrWithSetterException):
(WebCore::setJSTestObjAttrWithSetterExceptionWithMessage):
(WebCore::setJSTestObjStringAttrWithGetterException):
(WebCore::setJSTestObjStringAttrWithSetterException):
(WebCore::setJSTestObjStrictTypeCheckingAttribute):
(WebCore::setJSTestObjCustomAttr):
(WebCore::setJSTestObjOnfoo):
(WebCore::setJSTestObjWithScriptStateAttribute):
(WebCore::setJSTestObjWithCallWithAndSetterCallWithAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::setJSTestObjWithScriptArgumentsAndCallStackAttribute):
(WebCore::setJSTestObjConditionalAttr1):
(WebCore::setJSTestObjConditionalAttr2):
(WebCore::setJSTestObjConditionalAttr3):
(WebCore::setJSTestObjConditionalAttr4Constructor):
(WebCore::setJSTestObjConditionalAttr5Constructor):
(WebCore::setJSTestObjConditionalAttr6Constructor):
(WebCore::setJSTestObjAnyAttribute):
(WebCore::setJSTestObjMutablePoint):
(WebCore::setJSTestObjImmutablePoint):
(WebCore::setJSTestObjStrawberry):
(WebCore::setJSTestObjStrictFloat):
(WebCore::setJSTestObjId):
(WebCore::setJSTestObjReplaceableAttribute):
(WebCore::setJSTestObjNullableLongSettableAttribute):
(WebCore::setJSTestObjNullableStringSettableAttribute):
(WebCore::setJSTestObjNullableStringValue):
(WebCore::setJSTestObjAttributeWithReservedEnumType):
(WebCore::setJSTestObjPutForwardsAttribute):
(WebCore::setJSTestObjPutForwardsNullableAttribute):

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

(WebCore::setJSTestOverloadedConstructorsConstructor):

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

(WebCore::setJSTestOverrideBuiltinsConstructor):

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

(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceValue):
(WebCore::setJSTestSerializedScriptValueInterfaceCachedValue):

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

(WebCore::setJSTestTypedefsConstructor):
(WebCore::setJSTestTypedefsUnsignedLongLongAttr):
(WebCore::setJSTestTypedefsImmutableSerializedScriptValue):
(WebCore::setJSTestTypedefsAttrWithGetterException):
(WebCore::setJSTestTypedefsAttrWithSetterException):
(WebCore::setJSTestTypedefsStringAttrWithGetterException):
(WebCore::setJSTestTypedefsStringAttrWithSetterException):

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

(WebCore::setJSattributeConstructor):

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

(WebCore::setJSreadonlyConstructor):

  • bridge/c/c_runtime.cpp:

(JSC::Bindings::CField::setValueToInstance):

  • bridge/c/c_runtime.h:
  • bridge/jsc/BridgeJSC.h:

(JSC::Bindings::Instance::put):

  • bridge/objc/objc_runtime.h:
  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcField::setValueToInstance):
(JSC::Bindings::ObjcArray::setValueAt):
(JSC::Bindings::ObjcFallbackObjectImp::put):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::put):
(JSC::RuntimeArray::putByIndex):

  • bridge/runtime_array.h:
  • bridge/runtime_object.cpp:

(JSC::Bindings::RuntimeObject::put):

  • bridge/runtime_object.h:

Source/WebKit/mac:

As the same to NPJSObject, we just propagate the returned value of NetscapePluginInstanceProxy::setProperty.

  • Plugins/Hosted/ProxyInstance.h:
  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyField::setValueToInstance):
(WebKit::ProxyInstance::setFieldValue):

Source/WebKit2:

NPJSObject::setProperty may call methodTable()->put operation, but we intentionally do not propagate it to the caller's ::put.
In the current implementation, we just use the result of ::setProperty call.
This is true when ::setProperty attempts to call methodTable()->put.
In ::setProperty, after calling methodTable()->put, ::setProperty function clears the exception state.
So this is not the same semantics to the simple data property store. Rather, this is like the accessor.
In ECMA262 Set, it returns true if there is a setter. So we just use the returned value of ::setProperty.
This indicates that there is a setter for the given Set operation.

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::put):

  • WebProcess/Plugins/Netscape/JSNPObject.h:

LayoutTests:

  • js/dom/reflect-set-onto-dom-expected.txt: Added.
  • js/dom/reflect-set-onto-dom.html: Added.
  • js/dom/script-tests/reflect-set-onto-dom.js: Added.
8:57 AM Changeset in webkit [198022] by BJ Burg
  • 5 edits in trunk/Source/JavaScriptCore

Web Inspector: generated initWithPayload: protocol object initializers should recursively decode array and object members
​https://bugs.webkit.org/show_bug.cgi?id=155337
<rdar://problem/25098357>

Reviewed by Timothy Hatcher.

In cases where an object member is itself an object or array, we were
not calling initWithPayload: on the object member itself. So, this caused
a runtime error when constructing the outer object because the generated
code casted the NSDictionary/NSArray into the member's protocol object type.

  • inspector/scripts/codegen/objc_generator.py:

(ObjCGenerator.payload_to_objc_expression_for_member):
Do a straightforward call to initWithPayload: for objects. For arrays,
call a templated helper function which does the same thing. The helper
is used to make this array decoding fit into a single generated expression.

Rebaseline relevant test results.

  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
8:20 AM Changeset in webkit [198021] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197695 - [JSC] Improve and64() and or64() with immediate on x86
​https://bugs.webkit.org/show_bug.cgi?id=155104

Reviewed by Geoffrey Garen.

GetButterflyReadOnly was doing:

movq 0x8(%rbx), %r9
movq $0xfffffffffffffffc, %r11
andq %r11, %r9

There is no need for the move to load the immediate,
andq sign extend its immediate.

With this patch, we have:

movq 0x8(%rbx), %r9
andq $0xfffffffffffffffc, %r9

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::and64):
(JSC::MacroAssemblerX86_64::or64):

7:54 AM Changeset in webkit [198020] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r197956): WebContent process crashes on launch due to unrecognized selector
<​http://webkit.org/b/155356>

Reviewed by Alexey Proskuryakov.

  • platform/mac/ScrollableAreaMac.mm:

(WebCore::ScrollableArea::systemLanguageIsRTL): Add
-respondsToSelector: check.

7:10 AM Changeset in webkit [198019] by youenn.fablet@crf.canon.fr
  • 8 edits in trunk

WTF should have a similar function as equalLettersIgnoringASCIICase to match beginning of strings
​https://bugs.webkit.org/show_bug.cgi?id=153419

Reviewed by Darin Adler.

Source/WebCore:

Covered by added unint tests.

  • Modules/fetch/FetchHeaders.cpp:

(WebCore::isForbiddenHeaderName): Using startsWithLettersIgnoringASCIICase.

Source/WTF:

Introducing startsWithLettersIgnoringASCIICase, to check the beginning of a string.
Moving some code from WTF::equalLettersIgnoringASCIICaseCommonWithoutLength in
WTF::hasPrefixWithLettersIgnoringASCIICaseCommon to enable reuse in
WTF::startsWithLettersIgnoringASCIICaseCommon.

  • wtf/text/StringCommon.h:

(WTF::hasPrefixWithLettersIgnoringASCIICaseCommon):
(WTF::equalLettersIgnoringASCIICaseCommonWithoutLength):
(WTF::startsWithLettersIgnoringASCIICaseCommonWithoutLength):
(WTF::startsWithLettersIgnoringASCIICaseCommon):

  • wtf/text/StringImpl.h:

(WTF::startsWithLettersIgnoringASCIICase):

  • wtf/text/WTFString.h:

(WTF::startsWithLettersIgnoringASCIICase):

Tools:

  • TestWebKitAPI/Tests/WTF/StringOperators.cpp:

(TestWebKitAPI::TEST): Adding test case for startsWithLettersIgnoringASCIICase.

6:45 AM Changeset in webkit [198018] by Carlos Garcia Campos
  • 5 edits
    1 add in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge - 197688 - [JSC] Simplify the overflow check of ArithAbs
​https://bugs.webkit.org/show_bug.cgi?id=155063

Reviewed by Geoffrey Garen.

The only integer that overflow abs(int32) is INT_MIN.
For some reason, our code testing for that case
was checking the top bit of the result specifically.

The code required a large immediate on x86 and an extra
register on ARM64.

This patch turns the overflow check into a branch on
the sign of the result.

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArithAbs):

  • jit/ThunkGenerators.cpp:

(JSC::absThunkGenerator):

  • tests/stress/arith-abs-overflow.js: Added.

(opaqueAbs):

6:37 AM Changeset in webkit [198017] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197687 - [JSC] Improve how DFG zero Floating Point registers
​https://bugs.webkit.org/show_bug.cgi?id=155096

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-07
Reviewed by Geoffrey Garen.

DFG had a weird way of zeroing a FPR:

-zero a GP.
-move that to a FP.

Filip added moveZeroToDouble() for B3. This patch
uses that in the lower tiers.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::moveZeroToDouble):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):

  • jit/ThunkGenerators.cpp:

(JSC::floorThunkGenerator):
(JSC::roundThunkGenerator):

Fix the ARM build after r197687
​https://bugs.webkit.org/show_bug.cgi?id=155128

Reviewed by Saam Barati.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::moveZeroToDouble):

6:28 AM Changeset in webkit [198016] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197686 - REGRESSION (r197303): Web Inspector crashes web process when inspecting an element on TOT
<​https://webkit.org/b/154812>

Reviewed by Geoffrey Garen.

Guard against null pointer dereference for UnlinkedCodeBlocks that don't have any control flow
profiling data.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets):

6:28 AM Changeset in webkit [198015] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197305 - REGRESSION(r197303): 4 jsc tests failing on bots.

Unreviewed follow-up fix.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset): This function
can still get called with !m_rareData, in case the type profiler is active but this
particular code block doesn't have type profiler data. Handle it gracefully.

6:28 AM Changeset in webkit [198014] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197303 - Shrink UnlinkedCodeBlock a bit.
<​https://webkit.org/b/154797>

Reviewed by Anders Carlsson.

Move profiler-related members of UnlinkedCodeBlock into its RareData
structure, saving 40 bytes, and then reorder the other members of
UnlinkedCodeBlock to save another 24 bytes, netting a nice total 64.

The VM member was removed entirely since UnlinkedCodeBlock is a cell
and can retrieve its VM through MarkedBlock header lookup.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::vm):
(JSC::UnlinkedCodeBlock::typeProfilerExpressionInfoForBytecodeOffset):
(JSC::UnlinkedCodeBlock::addTypeProfilerExpressionInfo):
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock): Deleted.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::addRegExp):
(JSC::UnlinkedCodeBlock::addConstant):
(JSC::UnlinkedCodeBlock::addFunctionDecl):
(JSC::UnlinkedCodeBlock::addFunctionExpr):
(JSC::UnlinkedCodeBlock::addOpProfileControlFlowBytecodeOffset):
(JSC::UnlinkedCodeBlock::opProfileControlFlowBytecodeOffsets):
(JSC::UnlinkedCodeBlock::vm): Deleted.

6:14 AM Changeset in webkit [198013] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197685 - [JSC] Remove a useless "Move" from baseline-JIT op_mul's fast path
​https://bugs.webkit.org/show_bug.cgi?id=155071

Reviewed by Geoffrey Garen.

We do not need to multiply to a scratch and then move the result
to the destination. We can just multiply to the destination.

  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_mul):

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateFastPath):

6:05 AM Changeset in webkit [198012] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197680 - Make RenderStyle copy-on-write a bit less.
<​https://webkit.org/b/155106>

Reviewed by Antti Koivisto.

Add a cheesy SET_NESTED_VAR macro complement to SET_VAR so we can avoid copy-on-write
detachment of nested RenderStyle substructures when the leaf value doesn't change.

I spotted about 300kB of these mistakes being made during PLT on iOS, most of them
in the transformX setter.

  • rendering/style/RenderStyle.h:
5:58 AM Changeset in webkit [198011] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197678 - [TextureMapper] [BitmapTexturePool] Use appropriate list size when freeing textures
​https://bugs.webkit.org/show_bug.cgi?id=155105

Patch by Miguel Gomez <​magomez@igalia.com> on 2016-03-07
Reviewed by Žan Doberšek.

Use appropriate list size when releasing the textures used as attachment.
This is a fix for the patch to ​https://bugs.webkit.org/show_bug.cgi?id=154965.

No new tests because no new functionality was added.

  • platform/graphics/texmap/BitmapTexturePool.cpp:

(WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired):

5:49 AM Changeset in webkit [198010] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197655 - [JSC] Improve DFG's Int32 ArithMul if one operand is a constant
​https://bugs.webkit.org/show_bug.cgi?id=155066

Reviewed by Filip Pizlo.

When multiplying an integer by a constant, DFG was doing quite
a bit worse than baseline JIT.
We were loading the constant into a register, doing the multiply,
the checking the result and both operands for negative zero.

This patch changes:
-Use the multiply-by-immediate form on x86.
-Do as few checks as possible to detect negative-zero.

In most cases, this reduce the negative-zero checks
to zero or one TEST+JUMP.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::mul32):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithMul):

4:59 AM Changeset in webkit [198009] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.10.8

WebKitGTK+ 2.10.8

4:58 AM Changeset in webkit [198008] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.10

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.10.8 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.10.8
4:58 AM Changeset in webkit [198007] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r197997 - [GTK] Scrollbars are broken once again with current GTK+ master
​https://bugs.webkit.org/show_bug.cgi?id=155292

Reviewed by Michael Catanzaro.

Most of the trough theming properties have been moved to the
scrollbar, and a new gadget "contents" has been added between the
scrollbar and its children.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext): Add
left/bottom style classes to ensure the scrollbars border is taken
into account and rendered.
(WebCore::ScrollbarThemeGtk::paintTrackBackground): Also create
style context for contents gadget.
(WebCore::ScrollbarThemeGtk::paintThumb): Ditto.
(WebCore::ScrollbarThemeGtk::paintButton): Ditto.
(WebCore::ScrollbarThemeGtk::scrollbarThickness): Take the
scrollbar border into account.
(WebCore::ScrollbarThemeGtk::buttonSize): Also create style
context for contents gadget.
(WebCore::ScrollbarThemeGtk::getStepperSpacing): Ditto.
(WebCore::ScrollbarThemeGtk::minimumThumbLength): Ditto.
(WebCore::ScrollbarThemeGtk::thumbFatness): Ditto.
(WebCore::ScrollbarThemeGtk::getTroughBorder): Take the scrollbar
border into account.

4:58 AM Changeset in webkit [198006] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.10/Source/WebCore

Merge r197609 - [GTK] Scrollbars are broken again with GTK+ >= 3.19.11
​https://bugs.webkit.org/show_bug.cgi?id=154890

Reviewed by Michael Catanzaro.

Scrollbar style properties have been deprecated in GTK+, and it
seems that now deprecating means keeping the properties but
ignoring them. So, this reworks the whole scrollbars theme code
again to not cache style properties anymore, but retrieve them
from the GtkStyleContext. Previous GTK+ versions still need to
query the style properties, so I've added helper functions to get
all the style properties with the ifdefs, trying to keep the
common render code free of GTK+ versions ifdefs.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::backButtonRect):
(WebCore::ScrollbarThemeGtk::forwardButtonRect):
(WebCore::ScrollbarThemeGtk::trackRect):
(WebCore::ScrollbarThemeGtk::thumbRect):
(WebCore::ScrollbarThemeGtk::paintTrackBackground):
(WebCore::ScrollbarThemeGtk::paintThumb):
(WebCore::ScrollbarThemeGtk::paint):
(WebCore::ScrollbarThemeGtk::scrollbarThickness):
(WebCore::ScrollbarThemeGtk::buttonSize):
(WebCore::ScrollbarThemeGtk::stepperSize):
(WebCore::ScrollbarThemeGtk::getStepperSpacing):
(WebCore::ScrollbarThemeGtk::troughUnderSteppers):
(WebCore::ScrollbarThemeGtk::minimumThumbLength):
(WebCore::ScrollbarThemeGtk::thumbFatness):
(WebCore::ScrollbarThemeGtk::getTroughBorder):
(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext):
(WebCore::ScrollbarThemeGtk::updateThemeProperties):
(WebCore::ScrollbarThemeGtk::handleMousePressEvent):

  • platform/gtk/ScrollbarThemeGtk.h:
4:08 AM Changeset in webkit [198005] by youenn.fablet@crf.canon.fr
  • 6 edits
    4 adds in trunk

[Fetch API] Use DeferredWrapper directly in FetchBody promise handling
​https://bugs.webkit.org/show_bug.cgi?id=155291

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

  • web-platform-tests/fetch/api/request/request-consume-empty-expected.txt: Added.
  • web-platform-tests/fetch/api/request/request-consume-empty.html: Added.
  • web-platform-tests/fetch/api/response/response-consume-empty-expected.txt: Added.
  • web-platform-tests/fetch/api/response/response-consume-empty.html: Added.

Source/WebCore:

Moved from typed DOMPromise to DeferredWrapper as there can only be one promise resolved.
Started preparing the handling of blobs translation to other resolved types.

Fixed the case of empty body, in which case promises should resolve with empty objects (strings, buffers...) and not null.

Added Consumer structure to handle asynchronous resolution/rejection of promises.
Added preliminary API to resolve promises based on data stored as a Blob.
FetchBodyOwner will be responsible to do/stop blob loading.

Tests: imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html

imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html

  • Modules/fetch/FetchBody.cpp:

(WebCore::FetchBody::processIfEmptyOrDisturbed): Fixed empty body case.
(WebCore::FetchBody::arrayBuffer):
(WebCore::FetchBody::blob):
(WebCore::FetchBody::json):
(WebCore::FetchBody::text):
(WebCore::FetchBody::consume):
(WebCore::FetchBody::consumeText):
(WebCore::FetchBody::loadingType):
(WebCore::FetchBody::consumeBlob):
(WebCore::FetchBody::resolveAsJSON):
(WebCore::FetchBody::loadingFailed):
(WebCore::FetchBody::loadedAsBlob):

  • Modules/fetch/FetchBody.h:

(WebCore::FetchBody::formData):
(WebCore::FetchBody::Consumer::Consumer):

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

(WebCore::FetchBodyOwner::arrayBuffer):
(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::formData):
(WebCore::FetchBodyOwner::json):
(WebCore::FetchBodyOwner::text):
(WebCore::FetchBodyOwner::loadBlob):

3:13 AM Changeset in webkit [198004] by yoav@yoav.ws
  • 3 edits
    4 adds
    2 deletes in trunk

Avoid applying link tags with an invalid media attribute
​https://bugs.webkit.org/show_bug.cgi?id=143262

Reviewed by Brent Fulgham.

Source/WebCore:

In current HTML spec, unlike HTML4, the UA must not apply <link> based resources
when the media attribute does not match:
​https://html.spec.whatwg.org/multipage/semantics.html#attr-link-media

An invalid media attribute parsing creates a non-empty MediaQuerySet
containing a single query with no expressions and no media type.
(and with its m_ignored flag off)

In order to ignore such MediaQueries, I added an extra check that makes sure
that the queries handled by MediaQueryEvaluator::eval have either expressions
or a media type, and if not, they are ignored.

Test: fast/dom/HTMLLinkElement/link-stylesheet-invalid-media.html

  • css/MediaQueryEvaluator.cpp:

(WebCore::MediaQueryEvaluator::eval):

LayoutTests:

These tests make sure that when <link rel=stylesheet> is present with an invalid
media attribute, the styles are not being applied.

  • fast/dom/HTMLLinkElement/link-stylesheet-invalid-media-expected.txt: Added.
  • fast/dom/HTMLLinkElement/link-stylesheet-invalid-media.html: Added.
  • fast/dom/HTMLLinkElement/link-stylesheet-media-type-expected.txt: Added.
  • fast/dom/HTMLLinkElement/link-stylesheet-media-type.html: Added.

These tests test the old HTML4 behavior and are no longer relevant.

  • fast/media/media-descriptor-syntax-05.html: Removed.
  • fast/media/media-descriptor-syntax-05-expected.html: Removed.
2:04 AM Changeset in webkit [198003] by fred.wang@free.fr
  • 2 edits in trunk/LayoutTests

Skip content-editable-as-textarea.html on GTK as it uses AX API.

Unreviewed test gardening.

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-11

  • platform/gtk/TestExpectations:
1:44 AM Changeset in webkit [198002] by youenn.fablet@crf.canon.fr
  • 58 edits in trunk/Source/WebCore

[CallWith=ScriptExecutionContext] should pass ScriptExecutionContext to the implementation by reference
​https://bugs.webkit.org/show_bug.cgi?id=155297

Reviewed by Darin Adler.

Changing the binding generator to pass ScriptExecutionContext by reference.
Updating DOM classes accordingly.

Covered by existing tests.

  • Modules/encryptedmedia/MediaKeySession.cpp:

(WebCore::MediaKeySession::create):
(WebCore::MediaKeySession::MediaKeySession):

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

(WebCore::MediaKeys::createSession):

  • Modules/encryptedmedia/MediaKeys.h:
  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::clone):

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

(WebCore::FetchResponse::error):
(WebCore::FetchResponse::redirect):
(WebCore::FetchResponse::clone):

  • Modules/fetch/FetchResponse.h:
  • Modules/indexeddb/IDBCursor.h:

(WebCore::IDBCursor::continueFunction):

  • Modules/indexeddb/IDBFactory.h:
  • Modules/indexeddb/IDBIndex.h:
  • Modules/indexeddb/IDBKeyRange.cpp:

(WebCore::IDBKeyRange::lowerValue):
(WebCore::IDBKeyRange::upperValue):
(WebCore::IDBKeyRange::only):
(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):

  • Modules/indexeddb/IDBKeyRange.h:

(WebCore::IDBKeyRange::lowerBound):
(WebCore::IDBKeyRange::upperBound):
(WebCore::IDBKeyRange::bound):

  • Modules/indexeddb/IDBObjectStore.h:
  • Modules/indexeddb/IDBOpenDBRequest.cpp:

(WebCore::IDBOpenDBRequest::IDBOpenDBRequest):

  • Modules/indexeddb/IDBOpenDBRequest.h:
  • Modules/indexeddb/IDBRequest.cpp:

(WebCore::IDBRequest::IDBRequest):

  • Modules/indexeddb/IDBRequest.h:
  • Modules/indexeddb/client/IDBCursorImpl.cpp:

(WebCore::IDBClient::IDBCursor::continueFunction):
(WebCore::IDBClient::IDBCursor::deleteFunction):

  • Modules/indexeddb/client/IDBCursorImpl.h:
  • Modules/indexeddb/client/IDBFactoryImpl.cpp:

(WebCore::IDBClient::shouldThrowSecurityException):
(WebCore::IDBClient::IDBFactory::getDatabaseNames):
(WebCore::IDBClient::IDBFactory::open):
(WebCore::IDBClient::IDBFactory::openInternal):
(WebCore::IDBClient::IDBFactory::deleteDatabase):
(WebCore::IDBClient::IDBFactory::cmp):

  • Modules/indexeddb/client/IDBFactoryImpl.h:
  • Modules/indexeddb/client/IDBIndexImpl.cpp:

(WebCore::IDBClient::IDBIndex::IDBIndex):
(WebCore::IDBClient::IDBIndex::openCursor):
(WebCore::IDBClient::IDBIndex::count):
(WebCore::IDBClient::IDBIndex::openKeyCursor):
(WebCore::IDBClient::IDBIndex::get):
(WebCore::IDBClient::IDBIndex::getKey):

  • Modules/indexeddb/client/IDBIndexImpl.h:
  • Modules/indexeddb/client/IDBObjectStoreImpl.cpp:

(WebCore::IDBClient::IDBObjectStore::create):
(WebCore::IDBClient::IDBObjectStore::IDBObjectStore):
(WebCore::IDBClient::IDBObjectStore::openCursor):
(WebCore::IDBClient::IDBObjectStore::get):
(WebCore::IDBClient::IDBObjectStore::deleteFunction):
(WebCore::IDBClient::IDBObjectStore::doDelete):
(WebCore::IDBClient::IDBObjectStore::modernDelete):
(WebCore::IDBClient::IDBObjectStore::clear):
(WebCore::IDBClient::IDBObjectStore::createIndex):
(WebCore::IDBClient::IDBObjectStore::index):
(WebCore::IDBClient::IDBObjectStore::count):

  • Modules/indexeddb/client/IDBObjectStoreImpl.h:
  • Modules/indexeddb/client/IDBOpenDBRequestImpl.cpp:

(WebCore::IDBClient::IDBOpenDBRequest::createDeleteRequest):
(WebCore::IDBClient::IDBOpenDBRequest::createOpenRequest):
(WebCore::IDBClient::IDBOpenDBRequest::IDBOpenDBRequest):

  • Modules/indexeddb/client/IDBOpenDBRequestImpl.h:
  • Modules/indexeddb/client/IDBRequestImpl.cpp:

(WebCore::IDBClient::IDBRequest::IDBRequest):

  • Modules/indexeddb/client/IDBRequestImpl.h:
  • Modules/indexeddb/client/IDBTransactionImpl.cpp:

(WebCore::IDBClient::IDBTransaction::objectStore):
(WebCore::IDBClient::IDBTransaction::createObjectStore):
(WebCore::IDBClient::IDBTransaction::createIndex):

  • Modules/mediasource/DOMURLMediaSource.cpp:

(WebCore::DOMURLMediaSource::createObjectURL):

  • Modules/mediasource/DOMURLMediaSource.h:
  • Modules/mediastream/DOMURLMediaStream.cpp:

(WebCore::DOMURLMediaStream::createObjectURL):

  • Modules/mediastream/DOMURLMediaStream.h:
  • Modules/mediastream/HTMLMediaElementMediaStream.cpp:

(WebCore::HTMLMediaElementMediaStream::setSrcObject):

  • Modules/mediastream/HTMLMediaElementMediaStream.h:
  • Modules/mediastream/HTMLMediaElementMediaStream.idl:
  • Modules/notifications/Notification.cpp:

(WebCore::Notification::Notification):
(WebCore::Notification::create):
(WebCore::Notification::permission):
(WebCore::Notification::requestPermission):

  • Modules/notifications/Notification.h:
  • Modules/notifications/NotificationCenter.cpp:

(WebCore::NotificationCenter::createNotification):

  • Modules/notifications/NotificationClient.h:
  • Modules/quota/StorageInfo.cpp:

(WebCore::StorageInfo::queryUsageAndQuota):
(WebCore::StorageInfo::requestQuota):

  • Modules/quota/StorageInfo.h:
  • Modules/quota/StorageQuota.h:
  • bindings/js/JSIDBObjectStoreCustom.cpp:

(WebCore::JSIDBObjectStore::createIndex):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateCallWith):

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

(WebCore::jsTestInterfacePrototypeFunctionImplementsMethod2):
(WebCore::jsTestInterfacePrototypeFunctionSupplementalMethod2):

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

(WebCore::jsTestObjWithScriptExecutionContextAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::jsTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttribute):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateAttributeRaises):
(WebCore::setJSTestObjWithScriptExecutionContextAndScriptStateWithSpacesAttribute):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContext):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptState):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateObjException):
(WebCore::jsTestObjPrototypeFunctionWithScriptExecutionContextAndScriptStateWithSpaces):

  • fileapi/FileReaderSync.cpp:

(WebCore::FileReaderSync::readAsArrayBuffer):
(WebCore::FileReaderSync::readAsBinaryString):
(WebCore::FileReaderSync::readAsText):
(WebCore::FileReaderSync::readAsDataURL):
(WebCore::FileReaderSync::startLoading):

  • fileapi/FileReaderSync.h:

(WebCore::FileReaderSync::readAsText):

  • html/DOMURL.cpp:

(WebCore::DOMURL::createObjectURL):
(WebCore::DOMURL::createPublicURL):
(WebCore::DOMURL::revokeObjectURL):

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

(WebCore::HTMLMediaElement::setSrcObject):

  • html/HTMLMediaElement.h:
  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::InspectorIndexedDBAgent::requestDatabaseNames):

  • page/DOMWindow.h:
  • page/History.h:

(WebCore::History::back):
(WebCore::History::forward):
(WebCore::History::go):

Mar 10, 2016:

11:52 PM Changeset in webkit [198001] by keith_miller@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/ChangeLog

Unreviewed, fix Changelog. git merged poorly.

11:13 PM Changeset in webkit [198000] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[ES6] Make RegExp.prototype.toString spec compliant
​https://bugs.webkit.org/show_bug.cgi?id=155341

Patch by Saam barati <​sbarati@apple.com> on 2016-03-10
Reviewed by Filip Pizlo.

Before we were directly calling into the flagsString
function. Instead, we must get the "flags" property
of the thisObject. This will usually call into the flags
getter, but not always. Specifically, you can you a Proxy
to observe this behavior.

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterGlobal):

  • tests/es6.yaml:
  • tests/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js: Added.

(test.get var):
(test.):

  • tests/stress/regexp-prototype-tostring.js: Added.

(assert):
(test):
(test.get var):
(test.):
(let.handler.get switch):
(let.handler):
(get test):
(test.get RegExp):

11:10 PM Changeset in webkit [197999] by sbarati@apple.com
  • 5 edits
    2 adds in trunk

[ES6] Make RegExp.prototype.toString spec compliant
​https://bugs.webkit.org/show_bug.cgi?id=155341

Reviewed by Filip Pizlo.

Before we were directly calling into the flagsString
function. Instead, we must get the "flags" property
of the thisObject. This will usually call into the flags
getter, but not always. Specifically, you can you a Proxy
to observe this behavior.

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterGlobal):

  • tests/es6.yaml:
  • tests/es6/Proxy_internal_get_calls_RegExp.prototype.toString.js: Added.

(test.get var):
(test.):

  • tests/stress/regexp-prototype-tostring.js: Added.

(assert):
(test):
(test.get var):
(test.):
(let.handler.get switch):
(let.handler):
(get test):
(test.get RegExp):

11:05 PM Changeset in webkit [197998] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] Fix rendering of slider input elements
​https://bugs.webkit.org/show_bug.cgi?id=155296

Reviewed by Michael Catanzaro.

Use the new gadgets for newer GTK+ and improve a bit the rendering
for previous versions to better match GTK+.

  • rendering/RenderThemeGtk.cpp:

(WebCore::createStyleContext): Add ScaleContents and
ScaleHighlight parts that are only used with GTK+ 3.19.
(WebCore::RenderThemeGtk::paintSliderTrack): Use a smaller trough,
centered in the given rectangle to better match GTK+. Also render
the hightlight gadget with GTK+ 3.19.
(WebCore::RenderThemeGtk::paintSliderThumb): Also create the style
context for contents gadget.
(WebCore::RenderThemeGtk::adjustSliderThumbSize): Take into
account the slider border when calculating the slider thumb size.

10:59 PM Changeset in webkit [197997] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] Scrollbars are broken once again with current GTK+ master
​https://bugs.webkit.org/show_bug.cgi?id=155292

Reviewed by Michael Catanzaro.

Most of the trough theming properties have been moved to the
scrollbar, and a new gadget "contents" has been added between the
scrollbar and its children.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext): Add
left/bottom style classes to ensure the scrollbars border is taken
into account and rendered.
(WebCore::ScrollbarThemeGtk::paintTrackBackground): Also create
style context for contents gadget.
(WebCore::ScrollbarThemeGtk::paintThumb): Ditto.
(WebCore::ScrollbarThemeGtk::paintButton): Ditto.
(WebCore::ScrollbarThemeGtk::scrollbarThickness): Take the
scrollbar border into account.
(WebCore::ScrollbarThemeGtk::buttonSize): Also create style
context for contents gadget.
(WebCore::ScrollbarThemeGtk::getStepperSpacing): Ditto.
(WebCore::ScrollbarThemeGtk::minimumThumbLength): Ditto.
(WebCore::ScrollbarThemeGtk::thumbFatness): Ditto.
(WebCore::ScrollbarThemeGtk::getTroughBorder): Take the scrollbar
border into account.

10:47 PM Changeset in webkit [197996] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r197986): Don't try to link to undefined $(WEBKIT_SYSTEM_INTERFACE_LIBRARY)

Follow-up build fix for:

AX: Force allow user zoom
<​https://bugs.webkit.org/show_bug.cgi?id=155056>

Fixes the following build failure:

ld: library not found for -l-lAccessibility
clang: error: linker command failed with exit code 1 (use -v to see invocation)

  • Configurations/WebKit.xcconfig: Remove

"-l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)" from OTHER_LDFLAGS since
that macro is not defined, and there is no need to link to
libWebKitSystemInterface.a.

10:12 PM Changeset in webkit [197995] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r197983): Build fails due to missing inline method

Attempt to fix the following build failure:

Undefined symbols for architecture arm64:

"JSC::GenericTypedArrayView<JSC::Uint8ClampedAdaptor>::createUninitialized(unsigned int)", referenced from:

WebCore::ImageBufferData::getData(WebCore::IntRect const&, WebCore::IntSize const&, bool, bool, float) const in ImageBufferDataCG.o

  • platform/graphics/cg/ImageBufferDataCG.cpp: Include some

headers to match FEGaussianBlur.cpp and FilterEffect.cpp.

10:04 PM Changeset in webkit [197994] by commit-queue@webkit.org
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] Add register reuse for ArithAdd of an Int32 and constant in DFG
​https://bugs.webkit.org/show_bug.cgi?id=155164

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-10
Reviewed by Geoffrey Garen.

Every "inc" in loop was looking like this:

move rX, rY
inc rY
jo 0x230f4a200580

This patch add register Reuse to that case to remove
the extra "move".

  • dfg/DFGOSRExit.h:

(JSC::DFG::SpeculationRecovery::SpeculationRecovery):
(JSC::DFG::SpeculationRecovery::immediate):

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithAdd):

  • tests/stress/arith-add-with-constant-overflow.js: Added.

(opaqueAdd):

9:09 PM Changeset in webkit [197993] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebCore

Try to fix the iOS 9 build.

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::detectContentInRange):

  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
  • platform/spi/cocoa/DataDetectorsCoreSPI.h:
9:01 PM Changeset in webkit [197992] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r197976): Build failure due to missing DDOptionalSource.h header

Follow-up fix for:

Expose additional WKDataDetectorTypes.
<​https://bugs.webkit.org/show_bug.cgi?id=155331>

  • platform/spi/cocoa/DataDetectorsCoreSPI.h: Protect

DDOptionalSource.h with version check.

8:52 PM Changeset in webkit [197991] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Windows build after r197986.

  • accessibility/AccessibilityObject.h:
8:50 PM Changeset in webkit [197990] by jer.noble@apple.com
  • 17 edits in trunk/Source

Set AVURLAssetUsesNoPersistentCacheKey on AVAsset to match caching policy.
​https://bugs.webkit.org/show_bug.cgi?id=155117
rdar://problem/6802240

Patch by Jeremy Jones <​jeremyj@apple.com> on 2016-03-10
Reviewed by Simon Fraser.

Source/WebCore:

No new tests because no new functionality was added.

This will prevent persistent media caches when webkit is using in memory caching.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerShouldUsePersistentCache): Added.

  • html/HTMLMediaElement.h: Declare mediaPlayerShouldUsePersistentCache().
  • page/ChromeClient.h: Declare mediaPlayerShouldUsePersistentCache().
  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerShouldUsePersistentCache): Added.

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

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL): Set property on AVAssetOptions.

Source/WebKit/mac:

Implement mediaShouldUsePersistentCache to disable media caching when NSURLCache is disabled.

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::mediaShouldUsePersistentCache): Added.

Source/WebKit2:

Make AVAsset AVURLAssetUsesNoPersistentCacheKey match !m_websiteDataStore->isPersistent()
This will prevent persistent media caches when webkit is using in-memory caching.

  • Shared/WebPageCreationParameters.cpp: Add mediaShouldUsePersistentCache.

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::creationParameters): Add mediaShouldUsePersistentCache.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::mediaShouldUsePersistentCache): Added.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::m_mediaUsesPersistentCache): Added.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::mediaShouldUsePersistentCache): Added.

8:25 PM Changeset in webkit [197989] by jer.noble@apple.com
  • 3 edits in trunk

CRASH at WebCore::RenderView::updateVisibleViewportRect
​https://bugs.webkit.org/show_bug.cgi?id=155209
<rdar://problem/23997530>

Reviewed by Simon Fraser.

Source/WebCore:

Test: media/video-crash-invisible-autoplay-display-none.html

Between the time when the video element's renderer is created and destroyed, we may have unset the
InvisibleAutoplayNotPermitted restriction. So rather than check for that restriction before
unregistering for the "visible in viewport" notification, unregister only if the renderer
was previously registered.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::willDetachRenderers):

LayoutTests:

(These files were mistakenly landed in a previous commit:)

  • media/video-crash-invisible-autoplay-display-none-expected.txt: Added.
  • media/video-crash-invisible-autoplay-display-none.html: Added.
8:16 PM Changeset in webkit [197988] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit/win

Unreviewed build fix after r197953; correct the settings added in r197953.

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

8:03 PM Changeset in webkit [197987] by Alan Bujtas
  • 8 edits in trunk

Simple line layout: Add text-align: justify support.
​https://bugs.webkit.org/show_bug.cgi?id=155006

Reviewed by Antti Koivisto.

Source/WebCore:

This patch enables text-align: justify; for simple line layout (only latin text for now).
It speeds up/reduced memory consumption for justified text.

PerformanceTests/Layout/line-layout-simple.html
before text-align: justify support -> mean: 86.20513022288704 runs/s
after -> mean: 96.73972475626084 runs/s

Covered by existing text-align: justify tests.

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForFontAndText):
(WebCore::SimpleLineLayout::LineState::expansionOpportunityCount):
(WebCore::SimpleLineLayout::LineState::expansionOportunity):
(WebCore::SimpleLineLayout::expansionBehavior):
(WebCore::SimpleLineLayout::justifyRuns):
(WebCore::SimpleLineLayout::closeLineEndingAndAdjustRuns):
(WebCore::SimpleLineLayout::createTextRuns):
(WebCore::SimpleLineLayout::printReason):
(WebCore::SimpleLineLayout::canUseForStyle): Deleted.

  • rendering/SimpleLineLayout.h:
  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::expansion):
(WebCore::SimpleLineLayout::RunResolver::Run::expansionBehavior):

LayoutTests:

Rebaseline based on simple line layout output.

  • fast/text/whitespace/023-expected.txt:
  • platform/mac/css2.1/t0905-c5525-fltwidth-00-c-g-expected.txt:
7:57 PM Changeset in webkit [197986] by n_wang@apple.com
  • 19 edits
    2 adds in trunk

AX: Force allow user zoom
​https://bugs.webkit.org/show_bug.cgi?id=155056

Reviewed by Simon Fraser.

Source/WebCore:

Override the maximum/minimum scale factor when forceAlwaysUserScalable is true.

Test: fast/viewport/ios/force-always-user-scalable.html

  • Configurations/WebCoreTestSupport.xcconfig:
  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::minimumScale):

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::maximumScale):

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::Internals::Internals):
(WebCore::Internals::composedTreeAsText):
(WebCore::Internals::setViewportForceAlwaysUserScalable):

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

Source/WebKit2:

Linked libAccessibility library so that we can observe the accessibility
setting change for the force always user scalable feature.

  • Configurations/WebKit.xcconfig:
  • UIProcess/API/Cocoa/WKWebView.mm:

(shouldAllowPictureInPictureMediaPlayback):
(forceAlwaysUserScalableChangedCallback):
(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView dealloc]):
(-[WKWebView _navigationGestureDidEnd]):
(-[WKWebView _updateForceAlwaysUserScalable]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::setViewportConfigurationMinimumLayoutSize):
(WebKit::WebPageProxy::updateForceAlwaysUserScalable):
(WebKit::WebPageProxy::setMaximumUnobscuredSize):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::disableInspectorNodeSearch):
(WebKit::WebPage::updateForceAlwaysUserScalable):
(WebKit::innerFrameQuad):

LayoutTests:

  • fast/viewport/ios/force-always-user-scalable-expected.txt: Added.
  • fast/viewport/ios/force-always-user-scalable.html: Added.
  • platform/ios-simulator-wk2/TestExpectations:
7:52 PM Changeset in webkit [197985] by keith_miller@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, build fix for r197983, hopefully.

  • API/WebKitAvailability.h:
6:58 PM Changeset in webkit [197984] by jiewen_tan@apple.com
  • 3 edits
    3 adds in trunk

WebKit should not be redirected to an invalid URL
​https://bugs.webkit.org/show_bug.cgi?id=155263
<rdar://problem/22820172>

Reviewed by Brent Fulgham.

Source/WebCore:

Test: http/tests/navigation/redirect-to-invalid-url.html

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequestInternal):

LayoutTests:

  • http/tests/navigation/redirect-to-invalid-url-expected.txt: Added.
  • http/tests/navigation/redirect-to-invalid-url.html: Added.
  • http/tests/navigation/resources/redirect-to-invalid-url-frame.php: Added.
6:46 PM Changeset in webkit [197983] by keith_miller@apple.com
  • 15 edits
    1 copy
    5 adds in trunk/Source/JavaScriptCore

Typed Arrays have no public facing API
​https://bugs.webkit.org/show_bug.cgi?id=120112

Reviewed by Geoffrey Garen.

This patch adds a new C-API (an Obj-C API will follow in the future) for Typed Arrays. The API has two sets of
functions. One for Typed Arrays and another for Array Buffers. This API is intended to reflect the use of Typed
Array objects in JS code. There is a method for each of the core TypedArray and Array Buffer methods.
Originally, we were planning on using a separate non-JS object as the backing store instead of a JS Array Buffer
but we decide to defer that idea since there was no good CF/NS API that met all the constraints we needed
(Discussed further below). We also wanted to want until Shared Array Buffers had reached a more finished state
to see what impact they might have on an API.

The API has the following Typed Array construction methods:
1) Create with length (the backing buffer is zero initialized). -- JSObjectMakeTypedArray
2) Create with an existing pointer and a destructor. -- JSObjectMakeTypedArrayFromBytesNoCopy
3) Create with an Array Buffer object. -- JSObjectMakeTypedArrayFromArrayBuffer
4) Create with an Array Buffer object with a given offset and length. -- JSObjectMakeTypedArrayFromArrayBufferWithOffset

The API has the following functions on Typed Array JSObjectRefs:
5) Get access to a temporary void* of the backing store's data. -- JSObjectGetTypedArrayBytesPtr
6) Get the length of a Typed Array object (returns 0 if it is not a Typed Array object). -- JSObjectGetTypedArrayLength
7) Get the byte length of a Typed Array object (returns 0 if it is not a Typed Array object). -- JSObjectGetTypedArrayByteLength
8) Get the byte offset of a Typed Array object (returns 0 if it is not a Typed Array object). -- JSObjectGetTypedArrayByteOffset
9) Get a Typed Array object's Array Buffer backing store. -- JSObjectGetTypedArrayBuffer

The API has the following Array Buffer construction method:
10) Create with an existing pointer and a destructor. -- JSObjectMakeArrayBufferWithBytesNoCopy

The API has the following functions on Array Buffer JSObjectRefs:
11) Get access to a temporary void* of the backing store's data. -- JSObjectGetArrayBufferBytesPtr
12) Get the byte length of an Array Buffer object (returns 0 if it is not an Array Buffer object). -- JSObjectGetArrayBufferByteLength

The API adds the following new typedefs and enumerations:
13) A typedef representing the function pointer type used to deallocate byte pointers provided to constructors. -- JSTypedArrayByesDeallocator
14) An enumeration indicating the Typed Array API type of a JSValueRef. -- JSTypedArrayType

Finally, The API has the following function to get Typed Array Types:
15) Get the Typed Array type of a JS value. -- JSValueGetTypedArrayType

There are a couple of things to note about these functions. Calling JSObjectGetTypedArrayBytesPtr (5) or
JSObjectGetArrayBufferBytesPtr (12) will pin and lock the ArrayBuffer's data for the remaining lifetime of that
ArrayBuffer. This is because, currently, we do not have finalizers for our Array Buffers or Typed Arrays with a
backing ArrayBuffer and adding one would likely incur a non-trivial cost to GC. Also, we do not have a direct
way to make a Typed Array from a pointer with an offset as we do not expect using offsets to be a common use
case of the API.

While it would have been nice to integrate our backing store with CFData or one of its subclasses, it is not
possible to force a CFData/CFMutableData to be both writable and have a fixed size/backing store pointer.
NSData is not writable and CFMutableData can have a fixed pointer if it is allocated with a non-zero capacity
but there is no way for us to force an existing CFMutableData into this state.

  • API/APIUtils.h: Copied from Source/JavaScriptCore/runtime/ArrayBuffer.cpp.

(handleExceptionIfNeeded):
(setException):

  • API/JSBase.h:
  • API/JSObjectRef.cpp:

(handleExceptionIfNeeded): Deleted.

  • API/JSTypedArray.cpp: Added.

(toJSTypedArrayType):
(toTypedArrayType):
(createTypedArray):
(JSValueGetTypedArrayType):
(JSObjectMakeTypedArray):
(JSObjectMakeTypedArrayWithBytesNoCopy):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayLength):
(JSObjectGetTypedArrayByteLength):
(JSObjectGetTypedArrayByteOffset):
(JSObjectGetTypedArrayBuffer):
(JSObjectMakeArrayBufferWithBytesNoCopy):
(JSObjectGetArrayBufferBytesPtr):
(JSObjectGetArrayBufferByteLength):

  • API/JSTypedArray.h: Added.
  • API/JSValueRef.cpp:

(handleExceptionIfNeeded): Deleted.

  • API/JSValueRef.h:
  • API/JavaScript.h:
  • API/WebKitAvailability.h:
  • API/tests/TypedArrayCTest.cpp: Added.

(id):
(freePtr):
(assertEqualsAsNumber):
(testAccess):
(testConstructors):
(forEachTypedArrayType):
(testTypedArrayCAPI):

  • API/tests/TypedArrayCTest.h: Added.
  • API/tests/testapi.c:

(main):

  • CMakeLists.txt:
  • ForwardingHeaders/JavaScriptCore/JSTypedArray.h: Added.
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • runtime/ArrayBuffer.cpp:

(JSC::ArrayBuffer::transfer):

  • runtime/ArrayBuffer.h:

(JSC::arrayBufferDestructorNull):
(JSC::arrayBufferDestructorDefault):
(JSC::ArrayBufferContents::ArrayBufferContents):
(JSC::ArrayBufferContents::transfer):
(JSC::ArrayBuffer::createAdopted):
(JSC::ArrayBuffer::createFromBytes):
(JSC::ArrayBuffer::ArrayBuffer):
(JSC::ArrayBuffer::pinAndLock):
(JSC::ArrayBufferContents::tryAllocate):
(JSC::ArrayBufferContents::~ArrayBufferContents):

  • shell/PlatformWin.cmake:
6:37 PM Changeset in webkit [197982] by n_wang@apple.com
  • 14 edits
    2 adds in trunk

AX: Implement bounds/position and index related text marker functions using TextIterator
​https://bugs.webkit.org/show_bug.cgi?id=154976

Reviewed by Chris Fleizach.

Source/WebCore:

Implemented position and index related text marker calls with TextIterator. Also fixed some
VoiceOver navigation issues.

Test: accessibility/mac/text-marker-for-index.html

  • accessibility/AXObjectCache.cpp:

(WebCore::AXObjectCache::traverseToOffsetInRange):
(WebCore::AXObjectCache::startOrEndCharacterOffsetForRange):
(WebCore::AXObjectCache::textMarkerDataForCharacterOffset):
(WebCore::AXObjectCache::shouldSkipBoundary):
(WebCore::AXObjectCache::textMarkerDataForNextCharacterOffset):
(WebCore::AXObjectCache::startCharacterOffsetOfWord):
(WebCore::AXObjectCache::nextBoundary):
(WebCore::AXObjectCache::previousBoundary):
(WebCore::AXObjectCache::previousSentenceStartCharacterOffset):
(WebCore::AXObjectCache::localCaretRectForCharacterOffset):
(WebCore::AXObjectCache::absoluteCaretBoundsForCharacterOffset):
(WebCore::AXObjectCache::characterOffsetForPoint):
(WebCore::AXObjectCache::characterOffsetForBounds):
(WebCore::AXObjectCache::endCharacterOffsetOfLine):
(WebCore::AXObjectCache::startCharacterOffsetOfLine):
(WebCore::AXObjectCache::characterOffsetForIndex):
(WebCore::AXObjectCache::indexForCharacterOffset):
(WebCore::AXObjectCache::rootAXEditableElement):

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

(WebCore::AccessibilityObject::visiblePositionRangeForRange):
(WebCore::AccessibilityObject::rangeForPlainTextRange):
(WebCore::AccessibilityObject::lineRangeForPosition):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::boundsForVisiblePositionRange):
(WebCore::AccessibilityObject::boundsForRange):
(WebCore::AccessibilityObject::setSelectedVisiblePositionRange):
(WebCore::AccessibilityObject::doAXStringForRange):
(WebCore::AccessibilityObject::doAXBoundsForRange):
(WebCore::AccessibilityObject::doAXBoundsForRangeUsingCharacterOffset):

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::nodeIsTextControl):
(WebCore::AccessibilityRenderObject::boundsForRects):
(WebCore::AccessibilityRenderObject::boundsForVisiblePositionRange):
(WebCore::AccessibilityRenderObject::boundsForRange):
(WebCore::AccessibilityRenderObject::setSelectedVisiblePositionRange):
(WebCore::AccessibilityRenderObject::doAXBoundsForRange):
(WebCore::AccessibilityRenderObject::doAXBoundsForRangeUsingCharacterOffset):
(WebCore::AccessibilityRenderObject::accessibilityImageMapHitTest):

  • accessibility/AccessibilityRenderObject.h:
  • accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:

(-[WebAccessibilityObjectWrapper positionForTextMarker:]):
(-[WebAccessibilityObjectWrapper textMarkerRange]):
(-[WebAccessibilityObjectWrapper textMarkerRangeForSelection]):
(-[WebAccessibilityObjectWrapper textMarkerForPosition:]):
(-[WebAccessibilityObjectWrapper _stringForRange:attributed:]):
(-[WebAccessibilityObjectWrapper frameForTextMarkers:]):
(-[WebAccessibilityObjectWrapper textMarkerForPoint:]):
(-[WebAccessibilityObjectWrapper nextMarkerForCharacterOffset:]):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper doAXAttributedStringForRange:]):
(-[WebAccessibilityObjectWrapper _convertToNSRange:]):
(-[WebAccessibilityObjectWrapper _indexForTextMarker:]):
(-[WebAccessibilityObjectWrapper _textMarkerForIndex:]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:forParameter:]):

  • editing/htmlediting.cpp:

(WebCore::localCaretRectInRendererForCaretPainting):
(WebCore::localCaretRectInRendererForRect):

  • editing/htmlediting.h:

LayoutTests:

  • accessibility/mac/text-marker-for-index-expected.txt: Added.
  • accessibility/mac/text-marker-for-index.html: Added.
  • accessibility/mac/text-marker-word-nav-expected.txt:
  • accessibility/mac/text-marker-word-nav.html:
5:49 PM Changeset in webkit [197981] by Simon Fraser
  • 37 edits in trunk

Font antialiasing (smoothing) changes when elements are rendered into compositing layers
​https://bugs.webkit.org/show_bug.cgi?id=23364

Reviewed by Tim Horton.

Source/WebCore:

Improve the appearance of subpixel-antialiased ("smoothed") text in non-opaque layers
by opting in to a new CALayer backing store format.

GraphicsLayer now has setSupportsSmoothedFonts(), which is called by RenderLayerBacking
when the platform has support for the new feature. Ideally this would only be set when
we know a layer has smoothed text drawn into it, but, for now, enable this for all
layers. The right thing happens with opaque layers under the hood.

setSupportsSmoothedFonts() is turned into a PlatformCALayer contentsFormat flag, which
is ultimately passed to setBackingStoreFormat().

We also need to propagate this flag to TileController tiles.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::supportsSmoothedLayerText):
(WebCore::GraphicsLayer::setSmoothedLayerTextEnabled):
(WebCore::GraphicsLayer::smoothedLayerTextEnabled):
(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::supportsSmoothedFonts):
(WebCore::GraphicsLayer::setSupportsSmoothedFonts):

  • platform/graphics/TiledBacking.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsSmoothedLayerText):
(WebCore::GraphicsLayer::setSmoothedLayerTextEnabled):
(WebCore::GraphicsLayer::smoothedLayerTextEnabled):
(WebCore::GraphicsLayerCA::setSupportsSmoothedFonts):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateContentsFormat):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator): Give the number a "shadow" when
the contents format says we support smoothed fonts.

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::setTileContentsFormatFlags):
(WebCore::TileController::createTileLayer):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::updateTileLayerProperties):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::setBackingStoreFormat):
(PlatformCALayerCocoa::commonInit):
(PlatformCALayerCocoa::setContentsFormat):
(PlatformCALayer::drawLayerContents): Previously, we turned off font smoothing in
non-opaque layers to improve text appearance. We no longer need to do that when
the contents format has "SmoothedFonts".

  • platform/graphics/ca/win/PlatformCALayerWin.cpp:

(PlatformCALayerWin::setContentsFormat):
(PlatformCALayerWin::contentsFormat):

  • platform/graphics/ca/win/PlatformCALayerWin.h:
  • platform/ios/LegacyTileGridTile.mm:

(WebCore::setBackingStoreFormat):
(WebCore::LegacyTileGridTile::LegacyTileGridTile):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createGraphicsLayer):

Source/WebKit/mac:

Allow internal clients to turn off smoothed layer text, so that WebKitTestRunner
can disable it.

  • WebView/WebView.mm:

(+[WebView _setSmoothedLayerTextEnabled:]):
(+[WebView _smoothedLayerTextEnabled]):

  • WebView/WebViewPrivate.h:

Source/WebKit2:

Send the ContentsFormat to the UI process (but nothing happens to it there yet).

Allow internal clients to turn off smoothed layer text, so that WebKitTestRunner
can disable it.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::WebProcessCreationParameters):
(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • Shared/mac/RemoteLayerTreeTransaction.h:
  • Shared/mac/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

  • UIProcess/API/C/WKContext.cpp:

(WKContextEnableSmoothedLayerText):

  • UIProcess/API/C/WKContextPrivate.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):
(WebKit::WebProcessPool::enableSmoothedLayerText):
(WebKit::WebProcessPool::WebProcessPool): Deleted.

  • UIProcess/WebProcessPool.h:
  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::setContentsFormat):
(WebKit::PlatformCALayerRemote::contentsFormat):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::enableSmoothedLayerText):

  • WebProcess/WebProcess.h:
  • WebProcess/WebProcess.messages.in:

Tools:

Turn off smoothed layer text because it affects many layout test results.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebViewToConsistentStateBeforeTesting):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetStateToConsistentValues):

5:46 PM Changeset in webkit [197980] by Ryan Haddad
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r197922.
​https://bugs.webkit.org/show_bug.cgi?id=155340

This change broke storage/websql tests on ios-simulator.
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"WebKit should adopt journal_mode=wal for all SQLite
databases."
​https://bugs.webkit.org/show_bug.cgi?id=133496
​http://trac.webkit.org/changeset/197922

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-10

5:41 PM Changeset in webkit [197979] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

[Cocoa] Test gardening after r197933
<rdar://problem/25091368>

Unreviewed.

  • fast/text/woff2-expected.html:
  • fast/text/woff2.html:
5:34 PM Changeset in webkit [197978] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the build again.

  • editing/cocoa/DataDetection.mm:

(WebCore::constructURLStringForResult):

5:32 PM Changeset in webkit [197977] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the build.

  • editing/cocoa/DataDetection.mm:
5:06 PM Changeset in webkit [197976] by enrica@apple.com
  • 9 edits in trunk/Source

Expose additional WKDataDetectorTypes.
​https://bugs.webkit.org/show_bug.cgi?id=155331
rdar://problem/24175813

Reviewed by Tim Horton.

Source/WebCore:

Adding support for additional data detector types (tracking
numbers, flight information and spotlight suggestions).

  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::constructURLStringForResult):
(WebCore::DataDetection::detectContentInRange):

  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
  • platform/spi/cocoa/DataDetectorsCoreSPI.h:

Source/WebKit2:

Adding API to enable data detection of tracking numbers,
flight number and spotlight suggestions.

  • UIProcess/API/Cocoa/WKWebView.mm:

(fromWKDataDetectorTypes):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h:
5:03 PM Changeset in webkit [197975] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: color swatch and border are misaligned in Visual Styles sidebar
​https://bugs.webkit.org/show_bug.cgi?id=154471

Patch by Daniel Strokis <​dstrokis@icloud.com> on 2016-03-10
Reviewed by Timothy Hatcher.

Color swatches in the Visual Styles sidebar now have only their left corners rounded (thanks to Matt Baker for the idea).

  • UserInterface/Views/InlineSwatch.css:

(.inline-swatch > span):
(.inline-swatch): Deleted.

  • UserInterface/Views/VisualStyleColorPicker.css:

(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .inline-swatch.color):

4:49 PM Changeset in webkit [197974] by Matt Baker
  • 14 edits
    1 delete in trunk/Source/WebInspectorUI

Web Inspector: Timelines UI redesign: remove navigation sidebar
​https://bugs.webkit.org/show_bug.cgi?id=153036
<rdar://problem/24195627>

Reviewed by Timothy Hatcher.

Removed TimelineView methods used by the sidebar to setup the content tree
outline and handle tree element events, which are no longer used. Tree elements
are no longer created by TimelineViews as records are processed.

  • UserInterface/Main.html:

Removed files.

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView):
Removed tree outline event listeners and data grid parameter.
(WebInspector.LayoutTimelineView.prototype._processPendingRecords):
(WebInspector.LayoutTimelineView.prototype._dataGridFiltersDidChange):
(WebInspector.LayoutTimelineView.prototype._hoveredOrSelectedRecord):
Get record from data grid node instead of tree element.
(WebInspector.LayoutTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.LayoutTimelineView.prototype._mouseOverTreeOutline): Deleted.
(WebInspector.LayoutTimelineView.prototype._mouseLeaveTreeOutline): Deleted.
No longer needed, highlighting performed by data grid event handlers.

  • UserInterface/Views/MemoryTimelineView.js:

(WebInspector.MemoryTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
No longer needed.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype._updateFilter): Deleted.
Removed hack which was specific to TimelineSidebarPanel.

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView):
Removed sidebar styles and tree outline data grid parameter.
(WebInspector.NetworkTimelineView.prototype._processPendingRecords):
(WebInspector.NetworkTimelineView.prototype._dataGridFiltersDidChange):
(WebInspector.NetworkTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.NetworkTimelineView.prototype.treeElementSelected): Deleted.
No longer needed.

  • UserInterface/Views/OverviewTimelineView.js:

(WebInspector.OverviewTimelineView):
(WebInspector.OverviewTimelineView.prototype.get selectionPathComponents):
(WebInspector.OverviewTimelineView.prototype.dataGridNodePathComponentSelected):
Create path components from the grid selection. This should have been
included in ​https://webkit.org/b/154954.

(WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime.getStartTime):
(WebInspector.OverviewTimelineView.prototype._compareDataGridNodesByStartTime):
(WebInspector.OverviewTimelineView.prototype._insertDataGridNode):
(WebInspector.OverviewTimelineView.prototype._addResourceToDataGridIfNeeded):
(WebInspector.OverviewTimelineView.prototype._addSourceCodeTimeline):
Refactored to accept grid nodes instead of tree elements.

(WebInspector.OverviewTimelineView.prototype._processPendingRepresentedObjects):
(WebInspector.OverviewTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.OverviewTimelineView.prototype.shown):
(WebInspector.OverviewTimelineView.prototype.treeElementPathComponentSelected): Deleted.
(WebInspector.OverviewTimelineView.prototype._compareTreeElementsByDetails): Deleted.
Not used anywhere.

(WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime.getStartTime): Deleted.
(WebInspector.OverviewTimelineView.prototype._compareTreeElementsByStartTime): Deleted.
(WebInspector.OverviewTimelineView.prototype._insertTreeElement): Deleted.
(WebInspector.OverviewTimelineView.prototype._addResourceToTreeIfNeeded): Deleted.
Reimplemented as _compareDataGridNodesByStartTime, _insertDataGridNode and _addResourceToDataGridIfNeeded.

  • UserInterface/Views/RenderingFrameTimelineView.js:

(WebInspector.RenderingFrameTimelineView):
Removed sidebar styles and tree outline data grid parameter.

(WebInspector.RenderingFrameTimelineView.prototype.get selectionPathComponents):
(WebInspector.RenderingFrameTimelineView.prototype.dataGridNodePathComponentSelected):
Create path components from the grid selection. This should have been
included in ​https://webkit.org/b/154954.

(WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
(WebInspector.RenderingFrameTimelineView.prototype._scopeBarSelectionDidChange):
(WebInspector.RenderingFrameTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.RenderingFrameTimelineView.prototype.treeElementDeselected): Deleted.
(WebInspector.RenderingFrameTimelineView.prototype.treeElementSelected): Deleted.
(WebInspector.RenderingFrameTimelineView.prototype.treeElementPathComponentSelected): Deleted.

  • UserInterface/Views/ScriptClusterTimelineView.js:

(WebInspector.ScriptClusterTimelineView):
Don't hold reference to extraArguments, just pass to subviews.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WebInspector.ScriptDetailsTimelineView):
Removed sidebar styles and tree outline data grid parameter.
(WebInspector.ScriptDetailsTimelineView.prototype._processPendingRecords):
(WebInspector.ScriptDetailsTimelineView.prototype._dataGridFiltersDidChange):
(WebInspector.ScriptDetailsTimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.ScriptDetailsTimelineView.prototype.treeElementSelected): Deleted.
(WebInspector.ScriptDetailsTimelineView.prototype.dataGridNodeForTreeElement): Deleted.
(WebInspector.ScriptDetailsTimelineView.prototype.populateProfileNodeTreeElement): Deleted.

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
Fixed failure when treeElement and parentTreeElementOrDataGridNode are both null.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
Removed extraArguments and sidebar panel references.
(WebInspector.TimelineRecordingContentView.prototype.contentBrowserTreeElementForRepresentedObject):
Use icon style from the tab, instead of the sidebar.
(WebInspector.TimelineRecordingContentView.prototype._currentContentViewDidChange):
Removed updates to the sidebar.
(WebInspector.TimelineRecordingContentView.prototype._pathComponentSelected):
(WebInspector.TimelineRecordingContentView.prototype._updateTimes):
(WebInspector.TimelineRecordingContentView.prototype._instrumentAdded):
Removed sidebar reference when creating new TimelineViews.
(WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):

  • UserInterface/Views/TimelineSidebarPanel.css: Removed.
  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView):
Removed hidden sidebar FIXME.
(WebInspector.TimelineTabContentView.prototype._addRecording):
New location for sidebar style class constant StopwatchIconStyleClass.

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView):
(WebInspector.TimelineView.prototype.get navigationItems): Deleted.
(WebInspector.TimelineView.prototype.get navigationSidebarTreeOutline): Deleted.
(WebInspector.TimelineView.prototype.get navigationSidebarTreeOutlineLabel): Deleted.
(WebInspector.TimelineView.prototype.get timelineSidebarPanel): Deleted.
(WebInspector.TimelineView.prototype.treeElementPathComponentSelected): Deleted.
(WebInspector.TimelineView.prototype.treeElementDeselected): Deleted.
(WebInspector.TimelineView.prototype.treeElementSelected): Deleted.
(WebInspector.TimelineView.prototype._treeSelectionDidChange): Deleted.
Sidebar logic for panel and content tree outline removed.

4:47 PM Changeset in webkit [197973] by Beth Dakin
  • 5 edits
    4 adds in trunk/Source/WebKit2

defaultActions in UIDelegate method
_webView:previewingViewControllerForElement:defaultActions: need to be
use-able by a client
​https://bugs.webkit.org/show_bug.cgi?id=155304
-and corresponding-
rdar://problem/24269296

Reviewed by Anders Carlsson.

This patch adds a new protocol, WKPreviewActionItem, which is a sub-protocol
of UIPreviewActionItem. The new protocol adds an identifier so that clients
can identify which of our default actions they want to use. In order for a
client to use our default action items, they need to return those actions in
their UIViewController's implementation of previewActionItems.

Change the defaultActions to NSArray <id <WKPreviewActionItem>> *

  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:

This new file defines our sub-protocol and sub-class for WKPreviewActions.

  • UIProcess/API/Cocoa/_WKPreviewAction.h: Added.
  • UIProcess/API/Cocoa/_WKPreviewAction.mm: Added.

(+[_WKPreviewAction actionWithIdentifier:title:style:handler:]):

New BOOL _uiDelegateProvidedPreviewingViewController keeps track of whether
the client returned a view controller from
_webView:previewingViewControllerForElement:defaultActions:. If they did
return a view controller, then we should invoke
_webView:commitPreviewingViewController: at commit time. If they returned
nil, then they indicated that WebKit should continue with default previewing
behavior, so we will not invoke the UIDelegate’s commit method.

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _registerPreview]):
(-[WKContentView _unregisterPreview]):
(-[WKContentView _interactionShouldBeginFromPreviewItemController:forPosition:]):

In order for our default actions to be useful, we have to create
_WKPreviewActions.
(-[WKContentView _presentedViewControllerForPreviewItemController:]):

Only invoke _webView:commitPreviewedViewController: if
_uiDelegateProvidedPreviewingViewController is YES.
(-[WKContentView _previewItemController:commitPreview:]):

  • WebKit2.xcodeproj/project.pbxproj:
4:45 PM Changeset in webkit [197972] by dbates@webkit.org
  • 69 edits
    13 adds in trunk

CSP: Implement frame-ancestors directive
​https://bugs.webkit.org/show_bug.cgi?id=154345
<rdar://problem/24702161>

Reviewed by Brent Fulgham.

Source/WebCore:

Add support for the Content Security Policy directive frame-ancestors per the Content Security
Policy 2.0 spec., <​https://www.w3.org/TR/2015/CR-CSP2-20150721/>.

Tests: http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-meta-element-ignored.html

http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored.html
http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html
http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html
http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html
http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied): Extracted from DocumentLoader::responseReceived().
(WebCore::DocumentLoader::responseReceived): Extracted logic to cancel a load and dispatch a DOM Load
event at the frame owner into DocumentLoader::stopLoadingAfterXFrameOptionsOrContentSecurityPolicyDenied().
Make use of this function when loading of the frame is blocked by either the Content Security Policy or
the X-Frame-Option policy. We explicitly instantiate a ContentSecurityPolicy object with a SecurityOrigin
and Frame instead of using ScriptExecutionContext m_frame->document() because m_frame->document() is not
in a stable state (for instance, Document::m_url has not been initialized) as we are in the process of
loading the underlying document data for it.

  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::didBeginDocument): Pass ContentSecurityPolicy::ReportParsingErrors::No to silence
errors raised when parsing the Content Security Policy headers to avoid duplicate error messages. Any
parsing errors would have been raised when we parsed the Content Security Policy in DocumentLoader.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::ContentSecurityPolicy): Modified to take an optional pointer to a Frame (defaults
to nullptr). The specified Frame is used to support emitting console messages for violations/syntax errors and
send violation reports. We make use of this constructor variant in DocumentLoader to support emitting console
message and sending violation reports in the context of DocumentLoader where its associated Document is not in a
stable state and making use of a Frame seems less error prone.
(WebCore::ContentSecurityPolicy::didReceiveHeaders): Modified to take argument reportParsingErrors as
to whether to silence parsing errors when parsing the specified headers.
(WebCore::isAllowedByAllWithFrame): Helper function to query a ContentSecurityPolicyDirectiveList function
passing a Frame and URL for each Content Security Policy.
(WebCore::ContentSecurityPolicy::allowFrameAncestors): Calls WebCore::isAllowedByAllWithFrame().
(WebCore::ContentSecurityPolicy::reportViolation): Modified to support sending a violation report when
we have a Frame and no ScriptExecutionContext (such as when we are instantiated in DocumentLoader).
Additionally, we only will send a report if reporting is enabled (i.e. ContentSecurityPolicy::m_isReportingEnabled == true).
(WebCore::ContentSecurityPolicy::logToConsole): Modified to support logging a message to the console
we have a Frame and no ScriptExecutionContext. We also only allow logging if reporting is enabled.

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::checkFrameAncestors): Added.
(WebCore::ContentSecurityPolicyDirectiveList::checkFrameAncestorsAndReportViolation): Added.
(WebCore::ContentSecurityPolicyDirectiveList::allowFrameAncestors): Added.
(WebCore::ContentSecurityPolicyDirectiveList::parse): Ignore the directive frame-ancestors when defined
in a policy given in an HTML meta element and report such use as invalid.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Parse the directive frame-ancestors.

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicyResponseHeaders.h: Mark constructor "explicit".

LayoutTests:

Adds new tests to ensure we ignore directive frame-ancestors when defined a policy delivered
in an HTML meta element or in a report-only policy (i.e. delivered via HTTP header Content-
Security-Policy-Report-Only). Also adds new test to ensure that we send a violation report
when the directive frame-ancestors is violated.

Updated many existing tests and test results that unnecessarily depended on a DOM SecurityError
exception being thrown when accessing the content of a cross-origin frame. It is sufficient
and more direct to test directive frame-ancestors by dumping the contents of all children frames
on the page. We design the tests such that a child frame that was blocked by the frame-ancestors
directive is expected to have no content. A child frame that was allowed by the frame-ancestors
directive is expected to have content.

  • TestExpectations: Mark frame-ancestors tests as PASS so that we run them.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-meta-element-ignored-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-meta-element-ignored.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-in-report-only-ignored.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-none-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-none-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-self-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-self-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-star-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-star-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-url-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-url-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-url-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-cross-url-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-none-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-none-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-self-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-star-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-url-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-url-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-cross-in-same-url-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-none-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-none-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-self-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-self-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-star-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-star-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-url-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-url-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-url-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-cross-url-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-none-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-none-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-self-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-self-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-star-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-star-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-url-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-url-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-url-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-nested-same-in-same-url-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-none-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-none-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-protocolless-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-protocolless-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-self-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-self-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-self-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-self-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-star-allow-crossorigin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-star-allow-crossorigin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-star-allow-sameorigin-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-star-allow-sameorigin.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-url-allow-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-url-allow.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-url-block-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/frame-ancestors-url-block.html:
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin-https.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-cross-origin.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin-https.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/frame-ancestors/report-frame-ancestors-same-origin.html: Added.
  • http/tests/security/contentSecurityPolicy/resources/echo-intertag.pl: Added.
  • http/tests/security/contentSecurityPolicy/resources/frame-ancestors-test.js:

(done): Added.
(injectIFrame): Modified to make use of handleFrameEvent().
(handleFrameEvent): Added.
(iframeLoaded): Deleted.

  • http/tests/security/contentSecurityPolicy/resources/frame-in-frame.pl:
4:44 PM Changeset in webkit [197971] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Enable Memory Timelines by default if supported
​https://bugs.webkit.org/show_bug.cgi?id=155333
<rdar://problem/25097319>

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.defaultInstruments):

4:43 PM Changeset in webkit [197970] by sbarati@apple.com
  • 7 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Instanceof isn't spec compliant when the RHS is a Proxy with a target that is a function
​https://bugs.webkit.org/show_bug.cgi?id=155329

Reviewed by Mark Lam.

We use type info flags on the structure to dictate whether or not
the RHS of an instanceof is a valid RHS (i.e, a function). The solution
to make Proxy a valid RHS when the Proxy's target is callable is to have
two different structures for ProxyObject: one for a non-callable target
and one for a callable target.

  • runtime/JSGlobalObject.cpp:

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

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::moduleRecordStructure):
(JSC::JSGlobalObject::moduleNamespaceObjectStructure):
(JSC::JSGlobalObject::proxyObjectStructure):
(JSC::JSGlobalObject::callableProxyObjectStructure):
(JSC::JSGlobalObject::proxyRevokeStructure):
(JSC::JSGlobalObject::wasmModuleStructure):

  • runtime/ProxyConstructor.cpp:

(JSC::makeRevocableProxy):
(JSC::constructProxyObject):
(JSC::ProxyConstructor::getConstructData):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::ProxyObject):
(JSC::ProxyObject::structureForTarget):
(JSC::ProxyObject::finishCreation):

  • runtime/ProxyObject.h:

(JSC::ProxyObject::create):
(JSC::ProxyObject::createStructure):

  • tests/es6.yaml:
  • tests/stress/proxy-instanceof.js: Added.

(assert):
(test):
(C):
(test.let.handler.get if):
(test.let.handler):

4:42 PM Changeset in webkit [197969] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Add shouldNotBe to standalone test harness
​https://bugs.webkit.org/show_bug.cgi?id=155300

Patch by Andy VanWagoner <​andy@instructure.com> on 2016-03-10
Reviewed by Saam Barati.

Copy over the shouldNotBe function from js-test-pre. This fixes errors
introduced be new Intl tests.

  • resources/standalone-pre.js:

(shouldNotBe):

4:34 PM Changeset in webkit [197968] by jer.noble@apple.com
  • 16 edits in trunk/Source

Add WebCore, WebKit, & WebKit2 preference/setting to enable Main Content heuristic.
​https://bugs.webkit.org/show_bug.cgi?id=155326
<rdar://problem/25095408>

Reviewed by Beth Dakin.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Set the OverrideUserGestureRequirementForMainContent if the new setting is enabled.

  • page/Settings.in:

Source/WebKit/mac:

Add SPI to get and set the new preference.

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

(-[WebPreferences overrideUserGestureRequirementForMainContent]):
(-[WebPreferences setOverrideUserGestureRequirementForMainContent:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Add SPI to get and set the new preference.

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

(WKPreferencesSetMainContentUserGestureOverrideEnabled):
(WKPreferencesGetMainContentUserGestureOverrideEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _mainContentUserGestureOverrideEnabled]):
(-[WKWebViewConfiguration _setMainContentUserGestureOverrideEnabled:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

4:32 PM Changeset in webkit [197967] by Said Abou-Hallawa
  • 8 edits in trunk/Source/WebCore

REGRESSION: GuardMallloc crash in SVGListPropertyTearOff<SVGPointList>::processIncomingListItemWrapper
​https://bugs.webkit.org/show_bug.cgi?id=154969

Patch by Said Abou-Hallawa <​sabouhallawa@apple.com> on 2016-03-10
Reviewed by Darin Adler.

The life cycle of the SVGAnimatedPropertyTearOff::m_baseVal and m_animVal
was not correct. Like what was done in SVGAnimatedListPropertyTearOff,
m_baseVal and m_animVal have to be raw RefCounted pointers. When requested
through, SVGAnimatedPropertyTearOff::baseVal() and animVal() they are
encapsulated in a RefPtr to ensure they existence as long as they are
referenced. When the animated property object (which is stored in either
m_baseVal or m_animVal) is not referenced by anyone, it is going to be
deleted. In the destructor of their class, SVGAnimatedPropertyTearOff
will be notified of this deletion through propertyWillBeDeleted() to clean
its member m_baseVal or m_animVal.

  • bindings/scripts/CodeGeneratorJS.pm:

(NativeToJSValue): Now all the SVG animated property return RefPtrs. In
addition to that, SVGViewSpec.transform also returns
RefPtr<SVGTransformListPropertyTearOff>.

  • svg/properties/SVGAnimatedListPropertyTearOff.h:

(WebCore::SVGAnimatedListPropertyTearOff::animVal):
(WebCore::SVGAnimatedListPropertyTearOff::currentAnimatedValue):
(WebCore::SVGAnimatedListPropertyTearOff::animationStarted):
(WebCore::SVGAnimatedListPropertyTearOff::animationEnded):
(WebCore::SVGAnimatedListPropertyTearOff::synchronizeWrappersIfNeeded):
(WebCore::SVGAnimatedListPropertyTearOff::isAnimating):
(WebCore::SVGAnimatedListPropertyTearOff::propertyWillBeDeleted):
Change propertyWillBeDeleted() to be virtual and make it takes an SVGProperty*.
Rename m_animatingAnimVal to be m_animatedProperty. Add isAnimating() which
returns true if m_animatedProperty is not null. Use isAnimating() instead of
m_isAnimating because it's deleted from the base class.

  • svg/properties/SVGAnimatedProperty.cpp:

(WebCore::SVGAnimatedProperty::SVGAnimatedProperty):
(WebCore::SVGAnimatedProperty::~SVGAnimatedProperty):

  • svg/properties/SVGAnimatedProperty.h:

(WebCore::SVGAnimatedProperty::isAnimating):
(WebCore::SVGAnimatedProperty::propertyWillBeDeleted):
Delete m_isAnimating since its value can be deduced from the value of
m_animatedProperty in the derived class. Add propertyWillBeDeleted() and
isAnimating() as virtual functions with the default behavior.

  • svg/properties/SVGAnimatedPropertyTearOff.h:

(WebCore::SVGAnimatedPropertyTearOff::baseVal):
(WebCore::SVGAnimatedPropertyTearOff::animVal):
Like SVGAnimatedListPropertyTearOff::baseVal() and animVal() create the
value if it does not exist. Keep a raw RefCounted pointer but return a
RefPtr.

(WebCore::SVGAnimatedPropertyTearOff::isAnimating):
(WebCore::SVGAnimatedPropertyTearOff::propertyWillBeDeleted):
Override virtual functions.

(WebCore::SVGAnimatedPropertyTearOff::currentAnimatedValue):
(WebCore::SVGAnimatedPropertyTearOff::animationStarted):
(WebCore::SVGAnimatedPropertyTearOff::animationEnded):
(WebCore::SVGAnimatedPropertyTearOff::animValWillChange):
(WebCore::SVGAnimatedPropertyTearOff::animValDidChange):
Replace m_isAnimating with isAnimating(). Ensure that we get a new animated
property through animVal() and store it in a RefPtr to ensure it will not
go away while animating.

  • svg/properties/SVGAnimatedStaticPropertyTearOff.h:

(WebCore::SVGAnimatedStaticPropertyTearOff::isAnimating):
(WebCore::SVGAnimatedStaticPropertyTearOff::currentAnimatedValue):
(WebCore::SVGAnimatedStaticPropertyTearOff::animationStarted):
(WebCore::SVGAnimatedStaticPropertyTearOff::animationEnded):
(WebCore::SVGAnimatedStaticPropertyTearOff::animValWillChange):
(WebCore::SVGAnimatedStaticPropertyTearOff::animValDidChange):
Add isAnimating() and replace all the instances of m_isAnimating with calls
to isAnimating().

  • svg/properties/SVGPropertyTearOff.h:

(WebCore::SVGPropertyTearOff::animatedProperty):
(WebCore::SVGPropertyTearOff::setAnimatedProperty):
(WebCore::SVGPropertyTearOff::contextElement):
(WebCore::SVGPropertyTearOff::SVGPropertyTearOff):
(WebCore::SVGPropertyTearOff::~SVGPropertyTearOff):
SVGPropertyTearOff is what SVGAnimatedPropertyTearOff creates for its
baseVal() and animVal() values. These values can be null anytime once
they are not referenced. The SVGAnimatedPropertyTearOff holds only raw
RefCounted pointer for them. So (1) SVGPropertyTearOff needs to hold a
RefPtr for its SVGAnimatedProperty and (2) it needs to notify its
SVGAnimatedProperty when it's deleted by calling propertyWillBeDeleted()
from the destructor. Also there is no need to get the contextElement()
and save it in class member, m_contextElement since it can be always be
retrieved from SVGAnimatedProperty::contextElement().

4:05 PM Changeset in webkit [197966] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline two inspector tests after r197954 changed the results.

Unreviewed test gardening.

  • inspector/debugger/command-line-api-exception-expected.txt:
  • platform/mac/inspector/model/remote-object-expected.txt:
3:54 PM Changeset in webkit [197965] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Remove firing assertion after r197865.
​https://bugs.webkit.org/show_bug.cgi?id=155137
rdar://problem/25096835

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveData:]):
This assertion was firing. I'm looking into why.

3:50 PM Changeset in webkit [197964] by jer.noble@apple.com
  • 2 edits in trunk/Tools

Partial roll-out of r197953; test fails because encode/decode support of those properties were never added.

  • TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm:

(TEST): Deleted.

3:48 PM Changeset in webkit [197963] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[ES6] RegExp sticky flag should be ignored in String.match when global flag is given
​https://bugs.webkit.org/show_bug.cgi?id=155332

Reviewed by Saam Barati.

Removed logic from stringProtoFuncMatch that handles the case where both global and sticky flags are set.

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncMatch):

3:38 PM Changeset in webkit [197962] by msaboff@apple.com
  • 7 edits
    3 adds
    10 deletes in trunk

[ES6] Allow RegExp constructor to take pattern from an existing RegExp with new flags
​https://bugs.webkit.org/show_bug.cgi?id=155315

Reviewed by Saam Barati.

Source/JavaScriptCore:

Changed to comply with section 21.2.3.1, step 5. Eliminated syntax error.

In the process, change to get the VM at the top of the function.

Updated tests accordingly.

  • runtime/RegExpConstructor.cpp:

(JSC::constructRegExp):

  • tests/es6.yaml: Changed miscellaneous_RegExp_constructor_can_alter_flags.js to normal.
  • tests/mozilla/mozilla-tests.yaml: Disabled ecma_3/RegExp/15.10.4.1-5-n.js as it checks

for the old behavior of throwing a syntax error.

LayoutTests:

New and updated test for change.

  • fast/regex/constructor-expected.txt:
  • fast/regex/script-tests/constructor.js:

Changed test for new behavior.`

  • js/regexp-old-regexp-new-flags-expected.txt: Added.
  • js/regexp-old-regexp-new-flags.html: Added.
  • js/script-tests/regexp-old-regexp-new-flags.js: Added.

New test.

  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.3/S15.10.3.1_A2_T1-expected.txt: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.3/S15.10.3.1_A2_T1.html: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.3/S15.10.3.1_A2_T2-expected.txt: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.3/S15.10.3.1_A2_T2.html: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A2_T1-expected.txt: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A2_T1.html: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A2_T2-expected.txt: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A2_T2.html: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A8_T8-expected.txt: Removed.
  • sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.4/S15.10.4.1_A8_T8.html: Removed.

Removed obsolete tests.

3:18 PM Changeset in webkit [197961] by Matt Baker
  • 8 edits
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Add "Quick Open" dialog to debugger and resources tabs
​https://bugs.webkit.org/show_bug.cgi?id=153028
<rdar://problem/24194239>

Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:

New placeholder text for open resource dialog field.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
Keep a reference to the content element to use as global dialog parent,
and create keyboard shortcut for new dialog.

(WebInspector._showOpenResourceDialog):
Create dialog if needed, return if already visible.
(WebInspector.dialogWasDismissed):
Show represented object, if any, when dialog is dismissed.

  • UserInterface/Main.html:

New files.

  • UserInterface/Views/Dialog.js: Added.

Base class for modal dialog popovers. Implements basic setup and
teardown, and logic for validating and returning a represented object.

(WebInspector.Dialog):
(WebInspector.Dialog.prototype.get visible):
(WebInspector.Dialog.prototype.get delegate):
(WebInspector.Dialog.prototype.get representedObject):
(WebInspector.Dialog.prototype.present):
(WebInspector.Dialog.prototype.dismiss):
(WebInspector.Dialog.prototype.didPresetDialog):
(WebInspector.Dialog.prototype.representedObjectIsValid):

  • UserInterface/Views/GoToLineDialog.js:

Subclass the Dialog base class.
(WebInspector.GoToLineDialog):
(WebInspector.GoToLineDialog.prototype.didPresentDialog):
Implement base class behavior hook. Replaces "present".
(WebInspector.GoToLineDialog.prototype._handleInputEvent):
(WebInspector.GoToLineDialog.prototype._handleKeydownEvent):
Line number validation handled by base class/delegate.
(WebInspector.GoToLineDialog.prototype._clear):
(WebInspector.GoToLineDialog.prototype.present): Deleted.
(WebInspector.GoToLineDialog.prototype.dismiss): Deleted.
No longer needed, handled by base class.

  • UserInterface/Views/OpenResourceDialog.css: Added.

(.open-resource-dialog):
(.open-resource-dialog > .field):
(.open-resource-dialog > .field > input):
(.open-resource-dialog > .field > input::-webkit-input-placeholder):
(.open-resource-dialog > .field > img):
(.open-resource-dialog > .field > img:active):
(.open-resource-dialog.non-empty > .field > img):
(.open-resource-dialog > .tree-outline):
(.open-resource-dialog > .tree-outline .item):
(.open-resource-dialog > .tree-outline .item:first-child):
(.open-resource-dialog > .tree-outline .item.selected):
(.open-resource-dialog > .tree-outline .item.selected .subtitle):
Styles for "quick open" dialog.

  • UserInterface/Views/OpenResourceDialog.js: Added.

New dialog type, based on the Quick Open dialog found in Xcode (and its
equivalent in most modern editors).

(WebInspector.OpenResourceDialog):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline.createTreeElement):
(WebInspector.OpenResourceDialog.prototype._populateResourceTreeOutline):
Populate the auto-completion tree from the list of filtered resources.

(WebInspector.OpenResourceDialog.prototype.didPresentDialog):
Build resource list once, when the dialog is presented. Update the list
when resources are added/removed in a follow-up: ​https://webkit.org/b/155321.

(WebInspector.OpenResourceDialog.prototype._handleInputEvent):
(WebInspector.OpenResourceDialog.prototype._handleKeydownEvent):
Escape key: dismiss dialog if input is empty, otherwise clear input.
Enter key: dismiss dialog if object selected.
Key up/down: cycle through auto-completion tree items, if any.

(WebInspector.OpenResourceDialog.prototype._handleKeyupEvent):
(WebInspector.OpenResourceDialog.prototype._handleBlurEvent):
(WebInspector.OpenResourceDialog.prototype._handleMousedownEvent):
(WebInspector.OpenResourceDialog.prototype._handleClickEvent):
(WebInspector.OpenResourceDialog.prototype._clear):
(WebInspector.OpenResourceDialog.prototype._updateFilter):
Rebuild filter regular expressions and apply to all resources. Each
resource is given a weight based on the first matching filter. Filters
are ordered by relevancy, from most to least relevant. Filtered resources
are sorted based on weight. If no matches are found, the tree is hidden.

  • UserInterface/Views/ResourceTreeElement.js:

(WebInspector.ResourceTreeElement.prototype.get filterableData):
make filterable resource data more fine-grained. Priority should be given
to the resource's name, before the complete URL.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.showGoToLineDialog):
(WebInspector.SourceCodeTextEditor.prototype.dialogWasDismissed):
(WebInspector.SourceCodeTextEditor.prototype.goToLineDialogValueWasValidated): Deleted.
(WebInspector.SourceCodeTextEditor.prototype.goToLineDialogWasDismissed): Deleted.
Updated for new Dialog delegate behavior.

  • UserInterface/Views/TreeOutline.css:

(.tree-outline.large .item .titles):
(.tree-outline.large .item .titles.no-subtitle): Deleted.
Styles for tree elements in "quick open" dialog auto-completion tree.

3:09 PM Changeset in webkit [197960] by sbarati@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Make ToPropertyDescriptor spec compliant
​https://bugs.webkit.org/show_bug.cgi?id=155313

Reviewed by Mark Lam.

We were performing HasProperty(.) and Get(.) in the same operation.
This isn't valid according to the spec and it's user observable
behavior with Proxy. This patch fixes ToPropertyDescriptor to use
two distinct operations for HasProperty(.) and Get(.).

  • runtime/ObjectConstructor.cpp:

(JSC::ownEnumerablePropertyKeys):
(JSC::toPropertyDescriptor):

  • tests/es6.yaml:
  • tests/stress/to-property-key-correctness.js: Added.

(assert):
(test):
(test.let.handler.has):
(arrayEq):
(let.handler.has):
(let.target):
(set get let):

3:02 PM Changeset in webkit [197959] by BJ Burg
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: report the underlying parser error message when JSON parsing fails
​https://bugs.webkit.org/show_bug.cgi?id=155303
<rdar://problem/25088939>

Reviewed by Timothy Hatcher.

  • inspector/scripts/generate-inspector-protocol-bindings.py:

(generate_from_specification.load_specification):
Stringize the underlying error so we can see what it says.

2:58 PM Changeset in webkit [197958] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: TreeOutlineDataGridSynchronizer should be optional in TimelineDataGrid
​https://bugs.webkit.org/show_bug.cgi?id=155318
<rdar://problem/25091949>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineDataGrid.js:

(WebInspector.TimelineDataGrid):
TreeOutline is optional, and if non-null a tree outline synchronizer is created.

(WebInspector.TimelineDataGrid.prototype.shown):
(WebInspector.TimelineDataGrid.prototype.treeElementForDataGridNode):
(WebInspector.TimelineDataGrid.prototype.dataGridNodeForTreeElement):
(WebInspector.TimelineDataGrid.prototype.treeElementMatchesActiveScopeFilters):
Safety checks for the synchronizer.

(WebInspector.TimelineDataGrid.prototype.addRowInSortOrder):
treeElement is now an optional parameter. If non-null, a tree synchronizer
should exist. The third parameter has been overloaded, to allow passing
a parent tree element or data grid node.

(WebInspector.TimelineDataGrid.prototype._refreshDirtyDataGridNodes):
(WebInspector.TimelineDataGrid.prototype._sort):
Safety checks for the synchronizer.

2:25 PM Changeset in webkit [197957] by Jon Davis
  • 2 edits in trunk/Source/WebCore

Fixed broken link for "WebGL 2" on the Feature Status page
​https://bugs.webkit.org/show_bug.cgi?id=155235

Reviewed by Alex Christensen.

  • features.json:
2:05 PM Changeset in webkit [197956] by mmaxfield@apple.com
  • 22 edits
    5 adds in trunk

[OS X] Main frame scrollbars should appear on the left on RTL systems
​https://bugs.webkit.org/show_bug.cgi?id=155149

Reviewed by Simon Fraser.

Source/WebCore:

A helper function, ScrollableArea::systemLanguageIsRTL() is used to determine
if we should be in this new mode. Once we have determined we should be in
this new mode, there are some scattered places where the geometry math
needed to be updated.

Tests: fast/scrolling/rtl-scrollbars-simple.html

fast/scrolling/rtl-scrollbars.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):

  • platform/mac/ScrollableAreaMac.mm:

(WebCore::ScrollableArea::systemLanguageIsRTL):

  • platform/ScrollableArea.h:
  • platform/ScrollView.cpp:

(WebCore::ScrollView::updateScrollbars):
(WebCore::ScrollView::scrollCornerRect):

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::ScrollAnimator::scrollbarsAreRTL):

  • platform/spi/mac/NSScrollerImpSPI.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::positionForClipLayer):

Tools:

Setting the volatile default needs to be done early, so it is
plumbed through the injected bundle's initialization routine.

Control of RTL scrollbars is handled by putting the string
<!-- webkit-test-runner [ rtlScrollbars=true ] -->
on the first line of a test.

  • WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:

(WTR::shouldUseRTLScrollbars):
(WTR::InjectedBundle::platformInitialize):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::generatePageConfiguration):
(WTR::updateTestOptionsFromTestHeader):
(WTR::TestController::getInjectedBundleInitializationUserData):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestOptions.h:
  • WebKitTestRunner/mac/PlatformWebViewMac.mm:

(WTR::PlatformWebView::viewSupportsOptions):

LayoutTests:

  • fast/scrolling/rtl-scrollbars-expected.html: Added.
  • fast/scrolling/rtl-scrollbars-simple-expected-mismatch.html: Added.
  • fast/scrolling/rtl-scrollbars-simple.html: Added.
  • fast/scrolling/rtl-scrollbars.html: Added.
  • platform/mac-wk1/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/win/TestExpectations:
1:41 PM Changeset in webkit [197955] by ggaren@apple.com
  • 9 edits
    1 move in trunk/Source/bmalloc

bmalloc: Rename SmallPage to SmallRun
​https://bugs.webkit.org/show_bug.cgi?id=155320

Reviewed by Alex Christensen.

A page is a fixed-size set of lines.

A run is an variable-sized set of lines.

We want to start using runs because:

(a) we want to support varying the hardware page size by OS;

(b) we want to support allocations larger than our current page size.

  • bmalloc.xcodeproj/project.pbxproj:
  • bmalloc/Allocator.cpp:

(bmalloc::Allocator::reallocate):

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::initializeSmallRunMetadata):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeSmallRuns):
(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::allocateSmallRun):
(bmalloc::Heap::deallocateSmallLine):
(bmalloc::Heap::initializeLineMetadata): Deleted.
(bmalloc::Heap::scavengeSmallPages): Deleted.
(bmalloc::Heap::allocateSmallPage): Deleted.

  • bmalloc/Heap.h:
  • bmalloc/LineMetadata.h:
  • bmalloc/SmallChunk.h:

(bmalloc::SmallChunk::begin):
(bmalloc::SmallChunk::end):
(bmalloc::SmallChunk::lines):
(bmalloc::SmallChunk::runs):
(bmalloc::SmallChunk::SmallChunk):
(bmalloc::SmallLine::end):
(bmalloc::SmallRun::get):
(bmalloc::SmallRun::begin):
(bmalloc::SmallRun::end):
(bmalloc::SmallChunk::pages): Deleted.
(bmalloc::SmallPage::get): Deleted.
(bmalloc::SmallPage::begin): Deleted.
(bmalloc::SmallPage::end): Deleted.

  • bmalloc/SmallPage.h: Removed.
  • bmalloc/SmallRun.h: Copied from Source/bmalloc/bmalloc/SmallPage.h.

(bmalloc::SmallRun::SmallRun):
(bmalloc::SmallRun::ref):
(bmalloc::SmallRun::deref):
(bmalloc::SmallPage::SmallPage): Deleted.
(bmalloc::SmallPage::ref): Deleted.
(bmalloc::SmallPage::deref): Deleted.

  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::allocateSmallChunk):
(bmalloc::VMHeap::allocateLargeChunk):

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateSmallRun):
(bmalloc::VMHeap::allocateLargeObject):
(bmalloc::VMHeap::deallocateSmallRun):
(bmalloc::VMHeap::deallocateLargeObject):
(bmalloc::VMHeap::allocateSmallPage): Deleted.
(bmalloc::VMHeap::deallocateSmallPage): Deleted.

1:37 PM Changeset in webkit [197954] by Joseph Pecoraro
  • 21 edits
    5 copies
    19 adds in trunk/Source

Web Inspector: JavaScript Heap Allocations Timeline
​https://bugs.webkit.org/show_bug.cgi?id=155287
<rdar://problem/25078088>

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:

(InjectedScript.prototype._describe):
(InjectedScript.prototype._nodeDescription):
Provide the nicer node preview more often.

Source/WebInspectorUI:

Initial JavaScript Heap Allocations Timeline includes:

  • Snapshot markers in the timeline
  • Initial/Periodic/End snapshots during recording
  • Ability to manually take a snapshot
  • View of all objects in a Snapshot and Diff between snapshots
    • Summary view - rough display of the size/count of large objects
    • Instances view - view each of the individual objects
  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • UserInterface/Images/Compare.svg: Added.
  • UserInterface/Images/HeapSnapshot.svg: Added.
  • UserInterface/Images/HeapSnapshotDiff.svg: Added.
  • UserInterface/Images/HeapSnapshotInstances.svg: Added.
  • UserInterface/Images/HeapSnapshotSummary.svg: Added.
  • Localizations/en.lproj/localizedStrings.js:

New resources and strings.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.prototype.heapTrackingStarted):
(WebInspector.TimelineManager.prototype.heapTrackingCompleted):
(WebInspector.TimelineManager.prototype.heapSnapshotAdded):

  • UserInterface/Protocol/HeapObserver.js:

(WebInspector.HeapObserver.prototype.trackingStart):
(WebInspector.HeapObserver.prototype.trackingComplete):
(WebInspector.HeapObserver):
Add snapshot records to the active recording's timeline.

  • UserInterface/Models/HeapAllocationsInstrument.js: Added.

(WebInspector.HeapAllocationsInstrument):
(WebInspector.HeapAllocationsInstrument.supported):
(WebInspector.HeapAllocationsInstrument.prototype.get timelineRecordType):
(WebInspector.HeapAllocationsInstrument.prototype.startInstrumentation):
(WebInspector.HeapAllocationsInstrument.prototype.stopInstrumentation):
(WebInspector.HeapAllocationsInstrument.prototype._takeHeapSnapshot):
Start, stop, and periodic snapshots.

  • UserInterface/Models/HeapAllocationsTimelineRecord.js:

(WebInspector.HeapAllocationsTimelineRecord):
(WebInspector.HeapAllocationsTimelineRecord.prototype.get timestamp):
(WebInspector.HeapAllocationsTimelineRecord.prototype.get heapSnapshot):

  • UserInterface/Models/TimelineRecord.js:
  • UserInterface/Models/TimelineRecording.js:

(WebInspector.TimelineRecording):
(WebInspector.TimelineRecording.prototype.addRecord):

  • UserInterface/Views/TimelineOverviewGraph.js:

(WebInspector.TimelineOverviewGraph.createForTimeline):

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.displayNameForTimeline):
(WebInspector.TimelineTabContentView.iconClassNameForTimeline):
(WebInspector.TimelineTabContentView.genericClassNameForTimeline):
(WebInspector.TimelineTabContentView.iconClassNameForRecord):
(WebInspector.TimelineTabContentView.displayNameForRecord):
New timeline and record type.

  • UserInterface/Models/HeapSnapshotDiff.js: Added.

(WebInspector.HeapSnapshotDiff):
(WebInspector.HeapSnapshotDiff.prototype.get snapshot1):
(WebInspector.HeapSnapshotDiff.prototype.get snapshot2):
(WebInspector.HeapSnapshotDiff.prototype.get addedInstances):
(WebInspector.HeapSnapshotDiff.prototype.get removedInstances):
(WebInspector.HeapSnapshotDiff.prototype.get sizeDifference):
(WebInspector.HeapSnapshotDiff.prototype.get growth):
(WebInspector.HeapSnapshotDiff.prototype.snapshotForDiff):
Compare two snapshots and create a "diff snapshot" which is just
the newly added objects.

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView.createFromRepresentedObject):
(WebInspector.ContentView.isViewable):
A HeapSnapshot creates a HeapSnapshotClusterView.

  • UserInterface/Views/HeapAllocationsTimelineDataGridNode.js: Added.

(WebInspector.HeapAllocationsTimelineDataGridNode):
(WebInspector.HeapAllocationsTimelineDataGridNode.prototype.get record):
(WebInspector.HeapAllocationsTimelineDataGridNode.prototype.get data):
(WebInspector.HeapAllocationsTimelineDataGridNode.prototype.createCellContent):
(WebInspector.HeapAllocationsTimelineDataGridNode.prototype.markAsBaseline):
(WebInspector.HeapAllocationsTimelineDataGridNode.prototype.clearBaseline):

  • UserInterface/Views/HeapAllocationsTimelineOverviewGraph.css: Copied from Source/WebInspectorUI/UserInterface/Protocol/HeapObserver.js.

(.timeline-overview-graph.heap-allocations):
(.timeline-overview-graph.heap-allocations > img.snapshot):

  • UserInterface/Views/HeapAllocationsTimelineOverviewGraph.js: Added.

(WebInspector.HeapAllocationsTimelineOverviewGraph):
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.reset):
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout.xScale):
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype.layout):
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype._visibleRecords):
(WebInspector.HeapAllocationsTimelineOverviewGraph.prototype._heapAllocationTimelineRecordAdded):

  • UserInterface/Views/HeapAllocationsTimelineView.css: Copied from Source/WebInspectorUI/UserInterface/Protocol/HeapObserver.js.

(.timeline-view.heap-allocations > .data-grid):
(.timeline-view.heap-allocations > .data-grid td .icon.heap-snapshot):
(.timeline-view.heap-allocations > .data-grid tr.baseline):
(.timeline-view.heap-allocations > .content-view-container):
(.timeline-view.heap-allocations > .content-view-container > .content-view):

  • UserInterface/Views/HeapAllocationsTimelineView.js: Added.

(WebInspector.HeapAllocationsTimelineView):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotList):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotTimelineRecord):
(WebInspector.HeapAllocationsTimelineView.prototype.showHeapSnapshotDiff):
(WebInspector.HeapAllocationsTimelineView.prototype.get navigationItems):
(WebInspector.HeapAllocationsTimelineView.prototype.get selectionPathComponents):
(WebInspector.HeapAllocationsTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
(WebInspector.HeapAllocationsTimelineView.prototype.treeElementPathComponentSelected):
(WebInspector.HeapAllocationsTimelineView.prototype.userSelectedRecordFromOverview):
(WebInspector.HeapAllocationsTimelineView.prototype.closed):
(WebInspector.HeapAllocationsTimelineView.prototype.layout):
(WebInspector.HeapAllocationsTimelineView.prototype.reset):
(WebInspector.HeapAllocationsTimelineView.prototype._heapAllocationsTimelineRecordAdded):
(WebInspector.HeapAllocationsTimelineView.prototype._snapshotListPathComponentClicked):
(WebInspector.HeapAllocationsTimelineView.prototype._snapshotPathComponentSelected):
(WebInspector.HeapAllocationsTimelineView.prototype._currentContentViewDidChange):
(WebInspector.HeapAllocationsTimelineView.prototype._contentViewSelectionPathComponentDidChange):
(WebInspector.HeapAllocationsTimelineView.prototype._updateCompareHeapSnapshotButton):
(WebInspector.HeapAllocationsTimelineView.prototype._takeHeapSnapshotClicked):
(WebInspector.HeapAllocationsTimelineView.prototype._cancelSelectComparisonHeapSnapshots):
(WebInspector.HeapAllocationsTimelineView.prototype._compareHeapSnapshotsClicked):
(WebInspector.HeapAllocationsTimelineView.prototype._dataGridNodeSelected):

  • UserInterface/Views/HeapSnapshotClassDataGridNode.js: Added.

(WebInspector.HeapSnapshotClassDataGridNode):
(WebInspector.HeapSnapshotClassDataGridNode.prototype.get data):
(WebInspector.HeapSnapshotClassDataGridNode.prototype.createCellContent):
(WebInspector.HeapSnapshotClassDataGridNode.prototype.sort):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._populate):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._fetchBatch):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._updateBatchedSort):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._updateBatchedChildren):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._removeFetchMoreDataGridNode):
(WebInspector.HeapSnapshotClassDataGridNode.prototype._appendFetchMoreDataGridNode):

  • UserInterface/Views/HeapSnapshotClusterContentView.js: Added.

(WebInspector.HeapSnapshotClusterContentView.createPathComponent):
(WebInspector.HeapSnapshotClusterContentView):
(WebInspector.HeapSnapshotClusterContentView.iconStyleClassNameForClassName):
(WebInspector.HeapSnapshotClusterContentView.prototype.get heapSnapshot):
(WebInspector.HeapSnapshotClusterContentView.prototype.get summaryContentView):
(WebInspector.HeapSnapshotClusterContentView.prototype.get instancesContentView):
(WebInspector.HeapSnapshotClusterContentView.prototype.get navigationItems):
(WebInspector.HeapSnapshotClusterContentView.prototype.get selectionPathComponents):
(WebInspector.HeapSnapshotClusterContentView.prototype.shown):
(WebInspector.HeapSnapshotClusterContentView.prototype.closed):
(WebInspector.HeapSnapshotClusterContentView.prototype.saveToCookie):
(WebInspector.HeapSnapshotClusterContentView.prototype.restoreFromCookie):
(WebInspector.HeapSnapshotClusterContentView.prototype.showSummary):
(WebInspector.HeapSnapshotClusterContentView.prototype.showInstances):
(WebInspector.HeapSnapshotClusterContentView.prototype._contentViewExtraArguments):
(WebInspector.HeapSnapshotClusterContentView.prototype._pathComponentForContentView):
(WebInspector.HeapSnapshotClusterContentView.prototype._identifierForContentView):
(WebInspector.HeapSnapshotClusterContentView.prototype._showContentViewForIdentifier):
(WebInspector.HeapSnapshotClusterContentView.prototype._pathComponentSelected):
(WebInspector.HeapSnapshotClusterContentView.prototype._toggleShowInternalObjectsSetting):
(WebInspector.HeapSnapshotClusterContentView.prototype._updateViewsForShowInternalObjectsSettingValue):
(WebInspector.HeapSnapshotClusterContentView.prototype._updateShowInternalObjectsButtonNavigationItem):

  • UserInterface/Views/HeapSnapshotInstanceDataGridNode.js: Added.

(WebInspector.HeapSnapshotInstanceDataGridNode):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get data):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.get selectable):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCells):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.createCellContent):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype.sort):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._contextMenuHandler.):
(WebInspector.HeapSnapshotInstanceDataGridNode.prototype._contextMenuHandler):

  • UserInterface/Views/HeapSnapshotInstanceFetchMoreDataGridNode.js: Added.

(WebInspector.HeapSnapshotInstanceFetchMoreDataGridNode):
(WebInspector.HeapSnapshotInstanceFetchMoreDataGridNode.prototype.createCellContent):
(WebInspector.HeapSnapshotInstanceFetchMoreDataGridNode.prototype.sort):

  • UserInterface/Views/HeapSnapshotInstancesContentView.css: Added.
  • UserInterface/Views/HeapSnapshotInstancesContentView.js: Added.

(WebInspector.HeapSnapshotInstancesContentView):
(WebInspector.HeapSnapshotInstancesContentView.prototype.get showInternalObjects):
(WebInspector.HeapSnapshotInstancesContentView.prototype.set showInternalObjects):
(WebInspector.HeapSnapshotInstancesContentView.prototype._sortDataGrid):

  • UserInterface/Views/HeapSnapshotInstancesDataGridTree.js: Added.

(WebInspector.HeapSnapshotInstancesDataGridTree):
(WebInspector.HeapSnapshotInstancesDataGridTree.buildSortComparator):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get heapSnapshot):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get includeInternalObjects):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.set includeInternalObjects):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.get children):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.appendChild):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.insertChild):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.removeChildren):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.set sortComparator):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype.sort):
(WebInspector.HeapSnapshotInstancesDataGridTree.prototype._populateTopLevel):

  • UserInterface/Views/HeapSnapshotSummaryContentView.css: Added.
  • UserInterface/Views/HeapSnapshotSummaryContentView.js: Added.

(WebInspector.HeapSnapshotSummaryContentView.createChartContainer):
(WebInspector.HeapSnapshotSummaryContentView.appendLegendRow):
(WebInspector.HeapSnapshotSummaryContentView.appendEmptyMessage):
(WebInspector.HeapSnapshotSummaryContentView):
(WebInspector.HeapSnapshotSummaryContentView.prototype.layout):

  • UserInterface/Views/PathComponentIcons.css:

(.heap-snapshot-summary-icon .icon):
(.heap-snapshot-instances-icon .icon):
(.snapshot-list-icon .icon):
(.snapshot-diff-icon .icon):
(body:not(.mac-platform, .windows-platform) .snapshot-diff-icon .icon):
(body:not(.mac-platform, .windows-platform) .call-trees-icon .icon): Deleted.

  • UserInterface/Views/TextNavigationItem.css:

(.navigation-bar .item.text):

  • UserInterface/Views/TextNavigationItem.js:

(WebInspector.TextNavigationItem):
(WebInspector.TextNavigationItem.prototype.get text):
(WebInspector.TextNavigationItem.prototype.set text):

  • UserInterface/Views/TimelineIcons.css:

(.heap-snapshot-record .icon):

  • UserInterface/Views/Variables.css:

(:root):
New views.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForNodePreview):
(WebInspector.FormattedValue.createElementForFunctionWithName):
(WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForObjectPreview):
Better display for a raw object preview.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview):
(WebInspector.TimelineOverview.prototype.userSelectedRecord):

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView):
(WebInspector.TimelineRecordingContentView.prototype.timelineOverviewUserSelectedRecord):

  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler.prototype.set allowsTimeRangeSelection):
(WebInspector.TimelineRuler.prototype._handleClick):
(WebInspector.TimelineRuler.prototype._handleMouseDown):
(WebInspector.TimelineRuler.prototype._handleMouseMove):

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView.prototype.userSelectedRecordFromOverview):
Hook up a way for clicking in the TimelineOverview / TimelineRuler
to redispatch to an OverviewGraph element, and provide a patch for
the Overview -> RecordingContentView -> TimelineView for records.

1:35 PM Changeset in webkit [197953] by jer.noble@apple.com
  • 49 edits
    4 adds in trunk

Add separate WK and WK2 preferences for requiring user gestures for video media, distinct from user gestures for media generally
​https://bugs.webkit.org/show_bug.cgi?id=155141

Reviewed by Beth Dakin.

Source/WebCore:

Rename RequireUserGestureForRateChange -> RequireUserGestureForVideoRateChange.
Rename Settings::requiresUserGestureForMediaPlayback -> Settings::videoPlaybackRequiresUserGesture.

Fix longstanding FIXME unifying our behavior restrictions between iOS and Mac.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::constructCommon): Rename.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Unify behavior restriction behavior.
(WebCore::HTMLMediaElement::removeBehaviorsRestrictionsAfterFirstUserGesture): Rename.

  • html/MediaElementSession.cpp:

(WebCore::restrictionName): Rename.
(WebCore::MediaElementSession::playbackPermitted): Rename.

  • html/MediaElementSession.h:
  • page/Settings.cpp:
  • page/Settings.in:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaElementRestrictions): Rename.

Source/WebKit/mac:

Deprecate WebPreferences.mediaPlaybackRequiresUserGesture property in favor of .videoPlaybackRequiresUserGesture.

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

(+[WebPreferences initialize]):
(-[WebPreferences mediaPlaybackRequiresUserGesture]):
(-[WebPreferences setMediaPlaybackRequiresUserGesture:]):
(-[WebPreferences videoPlaybackRequiresUserGesture]):
(-[WebPreferences setVideoPlaybackRequiresUserGesture:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit/win:

  • WebView.cpp:

(WebView::notifyPreferencesChanged):

Source/WebKit2:

Add a new preference, videoPlaybackRequiresUserGesture, distinct from mediaPlaybackRequiresUserGesture. Legacy clients of
mediaPlaybackRequiresUserGesture will still be able to use it normally, as setting that preference to true will effectively
set both audioPlaybackRequiresUserGesture and videoPlaybackRequiresUserGesture to true. Make these preferences all available
universally, rather than just on PLATFORM(IOS). This requires adding a definition for -setRequiresUserActionForMediaPlayback:
and -requiresUserActionForMediaPlayback on !PLATFORM(IOS).

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

(WKPreferencesSetVideoPlaybackRequiresUserGesture):
(WKPreferencesGetVideoPlaybackRequiresUserGesture):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _initializeWithConfiguration:]):
(-[WKWebView _setObscuredInsets:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration encodeWithCoder:]):
(-[WKWebViewConfiguration initWithCoder:]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration requiresUserActionForMediaPlayback]):
(-[WKWebViewConfiguration setRequiresUserActionForMediaPlayback:]):
(-[WKWebViewConfiguration allowsInlineMediaPlayback]):
(-[WKWebViewConfiguration setAllowsInlineMediaPlayback:]):
(-[WKWebViewConfiguration _requiresUserActionForVideoPlayback]):
(-[WKWebViewConfiguration _setRequiresUserActionForVideoPlayback:]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

Set the default values for media preferences unconditionally, not just on PLATFORM(IOS). Set "video requires user gesture"
to sane defaults in addition to "audio requires user gesture" and (in the case of DumpREnderTree) instead of "media requires user gesture".

Add a new test of WK2 user gesture requirement preferences.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit/ios/video-with-audio.html:
  • TestWebKitAPI/Tests/WebKit/ios/video-without-audio.html:
  • TestWebKitAPI/Tests/WebKit2Cocoa/RequiresUserActionForPlayback.mm: Added.

(-[RequiresUserActionForPlaybackNavigationDelegate webView:didFinishNavigation:]):
(-[RequiresUserActionForPlaybackMessageHandler userContentController:didReceiveScriptMessage:]):
(RequiresUserActionForPlaybackTest::SetUp):
(RequiresUserActionForPlaybackTest::createWebView):
(RequiresUserActionForPlaybackTest::testVideoWithAudio):
(RequiresUserActionForPlaybackTest::testVideoWithoutAudio):
(RequiresUserActionForPlaybackTest::testAudioOnly):
(TEST_F):

  • TestWebKitAPI/Tests/WebKit2Cocoa/Coding.mm:

(TEST):

LayoutTests:

Update layout tests to reflect new restriction name.

  • media/audio-playback-restriction-play-expected.txt:
  • media/audio-playback-restriction-play.html:
  • media/no-autoplay-with-user-gesture-requirement.html:
  • media/video-load-require-user-gesture.html:
  • media/video-play-require-user-gesture.html:
  • media/video-crash-invisible-autoplay-display-none-expected.txt: Added.
  • media/video-crash-invisible-autoplay-display-none.html: Added.
  • media/video-main-content-allow-expected.txt:
  • media/video-main-content-allow-then-deny-expected.txt:
  • media/video-main-content-allow-then-deny.html:
  • media/video-main-content-allow.html:
  • media/video-main-content-deny-display-none-expected.txt:
  • media/video-main-content-deny-display-none.html:
  • media/video-main-content-deny-not-in-dom-expected.txt:
  • media/video-main-content-deny-not-in-dom.html:
  • media/video-main-content-deny-not-visible-expected.txt:
  • media/video-main-content-deny-not-visible.html:
  • media/video-main-content-deny-obscured-expected.txt:
  • media/video-main-content-deny-obscured.html:
  • media/video-main-content-deny-too-small-expected.txt:
  • media/video-main-content-deny-too-small.html:
1:11 PM Changeset in webkit [197952] by rniwa@webkit.org
  • 10 edits
    4 adds in trunk

Add :defined support
​https://bugs.webkit.org/show_bug.cgi?id=155108

Reviewed by Antti Koivisto.

Source/WebCore:

Added :defined pseudo class which applies to a successfully instantiated custom element or a builtin element.
A new node flag, isUnresolvedCustomElement, which was added in r197917 tracks un-upgraded / unresolved custom
elements for which :defined should not apply.

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

fast/custom-elements/defined-rule.html

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::constructElement): Unset isUnresolvedCustomElement now that HTMLElement's
constructor sets isUnresolvedCustomElement.

  • bindings/js/JSHTMLElementCustom.cpp:

(WebCore::constructJSHTMLElement): Set isUnresolvedCustomElement to true since :defined should never apply to
a custom element inside its constructor as HTMLElement constructor does not set the defined flag:
​https://w3c.github.io/webcomponents/spec/custom/#htmlelement-constructor

  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText): Added the support for serializing :defined.

  • css/CSSSelector.h:

(PseudoClassType): Added PseudoClassDefined for :defined.

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne): Added the support for :defined.

  • css/SelectorCheckerTestFunctions.h:

(WebCore::isDefinedElement): Added. Returns true for any builtin element and a custom element after a successful
construction / upgrades.

  • css/SelectorPseudoClassAndCompatibilityElementMap.in: Added :defined.
  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType): Added the support for :defined.

LayoutTests:

Added W3C style testharness.js tests and ref tests for :defined pseudo class.

  • fast/custom-elements/defined-pseudo-class-expected.txt: Added.
  • fast/custom-elements/defined-pseudo-class.html: Added.
  • fast/custom-elements/defined-rule-expected.html: Added.
  • fast/custom-elements/defined-rule.html: Added.
12:52 PM Changeset in webkit [197951] by ap@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Build fix for deprecated constant names.

  • Carbon/CarbonWindowAdapter.mm:

(-[CarbonWindowAdapter initWithCarbonWindowRef:takingOwnership:disableOrdering:carbon:]):
(-[CarbonWindowAdapter sendSuperEvent:]):

12:46 PM Changeset in webkit [197950] by commit-queue@webkit.org
  • 39 edits
    4 deletes in trunk/Source

Unreviewed, rolling out r197943.
​https://bugs.webkit.org/show_bug.cgi?id=155317

This change broke Windows, WinCairo, GTK and EFL builds
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"Add a baseURL parameter to _WKUserStyleSheet"
​https://bugs.webkit.org/show_bug.cgi?id=155219
​http://trac.webkit.org/changeset/197943

12:09 PM Changeset in webkit [197949] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

12:06 PM Changeset in webkit [197948] by BJ Burg
  • 3 edits in trunk/Tools

Web Inspector: should be able to run protocol and input generator scripts from any directory
​https://bugs.webkit.org/show_bug.cgi?id=155307

Reviewed by Joseph Pecoraro.

  • Scripts/webkitpy/inspector/main.py:

(InspectorGeneratorTests.main):

  • Scripts/webkitpy/replay/main.py:

(InputGeneratorTests.main):
Compute the current SCM based on the location of the script being executed, not
the $CWD which could be anything. There's rarely a good reason to use $CWD.

11:41 AM Changeset in webkit [197947] by sbarati@apple.com
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

Assignment to new.target should be an early error
​https://bugs.webkit.org/show_bug.cgi?id=151148

Reviewed by Mark Lam.

This patch makes it so that any form of assignment to new.target
is an early syntax error.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createNewTargetExpr):
(JSC::ASTBuilder::isNewTarget):
(JSC::ASTBuilder::createResolve):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseAssignmentExpression):
(JSC::Parser<LexerType>::parseUnaryExpression):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createThisExpr):
(JSC::SyntaxChecker::createSuperExpr):
(JSC::SyntaxChecker::createNewTargetExpr):
(JSC::SyntaxChecker::isNewTarget):
(JSC::SyntaxChecker::createResolve):
(JSC::SyntaxChecker::createObjectLiteral):

  • tests/es6.yaml:
  • tests/stress/new-target-syntax-errors.js: Added.

(shouldBeSyntaxError):
(shouldNotBeSyntaxError):

  • tests/stress/new-target.js:

(Constructor):
(doWeirdThings):
(noAssign): Deleted.
(catch): Deleted.

11:26 AM Changeset in webkit [197946] by Lucas Forschler
  • 2 edits in branches/safari-601-branch/Tools

<rdar://problem/25074204>
Unreviewed build fix attempt.

  • Scripts/webkitdirs.pm:

(determineBaseProductDir):
(determineConfiguration):
(determineArchitecture):
(determineNumberOfCPUs):
(jscPath):
(visualStudioInstallDir):
(msBuildInstallDir):
(visualStudioVersion):
(determineConfigurationProductDir):
(productDir):
(executableProductDir):
(jscProductDir):
(configuration):
(determineGenerateDsym):
(hasIOSDevelopmentCertificate):
(argumentsForXcode):
(XcodeOptions):
(XcodeOptionString):
(determinePassedConfiguration):
(passedConfiguration):
(checkFrameworks):
(checkForArgumentAndRemoveFromArrayRef):
(prohibitUnknownPort):
(determinePortName):
(portName):
(isEfl):
(isGtk):
(isWinCairo):
(isWin64):
(determineIsWin64):
(determineIsWin64FromArchitecture):
(isCygwin):
(isARM):
(isX86_64):
(isCrossCompilation):
(isAppleMacWebKit):
(isAppleWinWebKit):
(iOSSimulatorDevicesPath):
(createiOSSimulatorDevice):
(willUseIOSDeviceSDK):
(willUseIOSSimulatorSDK):
(isIOSWebKit):
(determineNmPath):
(nmPath):
(splitVersionString):
(determineOSXVersion):
(osXVersion):
(determineIOSVersion):
(iosVersion):
(isWindowsNT):
(debugger):
(determineDebugger):
(appendToEnvironmentVariableList):
(prependToEnvironmentVariableList):
(setUpGuardMallocIfNeeded):
(launcherName):
(checkRequiredSystemConfig):
(determineWindowsSourceDir):
(setupAppleWinEnv):
(setupCygwinEnv):
(buildXCodeProject):
(buildVisualStudioProject):
(isCachedArgumentfileOutOfDate):
(wrapperPrefixIfNeeded):
(canUseNinja):
(canUseNinjaGenerator):
(canUseEclipseNinjaGenerator):
(cmakeGeneratedBuildfile):
(generateBuildSystemFromCMakeProject):
(buildCMakeGeneratedProject):
(cleanCMakeGeneratedProject):
(buildCMakeProjectOrExit):
(cmakeBasedPortName):
(determineIsCMakeBuild):
(isCMakeBuild):
(promptUser):
(setPathForRunningWebKitApp):
(printHelpAndExitForRunAndDebugWebKitAppIfNeeded):
(argumentsForRunAndDebugMacWebKitApp):
(setupMacWebKitEnvironment):
(setupIOSWebKitEnvironment):
(waitUntilIOSSimulatorDeviceIsInState):
(shutDownIOSSimulatorDevice):
(restartIOSSimulatorDevice):
(relaunchIOSSimulator):
(runIOSWebKitAppInSimulator):
(runIOSWebKitApp):
(execMacWebKitAppForDebugging):
(debugSafari):
(runSafari):
(runMiniBrowser):
(determineIsEfl): Deleted.
(determineIsGtk): Deleted.
(determineIsWinCairo): Deleted.
(willUseIOSDeviceSDKWhenBuilding): Deleted.
(willUseIOSSimulatorSDKWhenBuilding): Deleted.
(shouldTargetWebProcess): Deleted.
(determineShouldTargetWebProcess): Deleted.
(shouldUseXPCServiceForWebProcess): Deleted.
(determineShouldUseXPCServiceForWebProcess): Deleted.
(jhbuildWrapperPrefixIfNeeded): Deleted.
(canUseEclipse): Deleted.

10:39 AM Changeset in webkit [197945] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

[MediaStream] push media stream state to the UI process
​https://bugs.webkit.org/show_bug.cgi?id=155281

Reviewed by Dean Jackson.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame): Don't clear m_mediaState, it is done in

WebPageProxy::resetState. This reverts a change added in r197929.

10:30 AM Changeset in webkit [197944] by dbates@webkit.org
  • 23 edits in trunk

CSP: Implement support for script and style nonces
​https://bugs.webkit.org/show_bug.cgi?id=116508
<rdar://problem/24963980>

Reviewed by Brent Fulgham.

Source/WebCore:

Add support for script-src and style-src nonces as per sections Nonce usage for script elements
and Nonce usage for style elements of the Content Security Policy 2.0 spec., <​https://www.w3.org/TR/2015/CR-CSP2-20150721/>.

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::createSheet): Check if the nonce for an HTML style element matches a known nonce.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::requestScript): Check if the nonce for an HTML script element for an external JavaScript
script matches a known nonce. If it does then skip subsequent checks of the Content Security Policy when loading
the script.
(WebCore::ScriptElement::executeScript): Check if the nonce for an HTML script element for an inline JavaScript
script matches a known nonce.

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::process): Check if the nonce for an HTML link element matches a known nonce. If it does
then skip subsequent checks of the Content Security Policy when loading the stylesheet.

  • html/HTMLScriptElement.idl: Unconditionally expose attribute nonce.
  • html/HTMLStyleElement.idl: Ditto.
  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::isAllowedByAllWithNonce):
(WebCore::ContentSecurityPolicy::allowScriptWithNonce): Check if the nonce attribute value of a script element
matches a known nonce. This function delegates the check to ContentSecurityPolicyDirectiveList::allowScriptWithNonce().
(WebCore::ContentSecurityPolicy::allowStyleWithNonce): Check if the nonce attribute value of a style/link element
matches a known nonce. This function delegates the check to ContentSecurityPolicyDirectiveList::allowStyleWithNonce().

  • page/csp/ContentSecurityPolicy.h:
  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::checkNonce): Checks if the directive allows the specified nonce.
(WebCore::ContentSecurityPolicyDirectiveList::allowScriptWithNonce): Check if the specified nonce is in
the source list of the script-src directive (if specified) or the source list of the default-src directive (if specified).
(WebCore::ContentSecurityPolicyDirectiveList::allowStyleWithNonce): Check if the specified nonce is in
the source list of the style-src directive (if specified) or the source list of the default-src directive (if specified).

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::matches): Returns whether the specified nonce is in the HashSet of
nonces for the directive.
(WebCore::ContentSecurityPolicySourceList::parse): Modified to call ContentSecurityPolicySourceList::parseNonceSource()
to parse a nonce source expression.
(WebCore::isBase64Character): Moved function to be above function ContentSecurityPolicySourceList::parseNonceSource()
so that it can referenced from both ContentSecurityPolicySourceList::parseNonceSource() and ContentSecurityPolicySourceList::parseHashSource().
(WebCore::isNonceCharacter): Added. Matches Blink's definition of a valid nonce character. This definition differs
from the definition in the Content Security Policy Level 3 spec., <​https://w3c.github.io/webappsec-csp/> (29 February 2016).
(WebCore::ContentSecurityPolicySourceList::parseNonceSource): Parses a source expression for a nonce value.

  • page/csp/ContentSecurityPolicySourceList.h:

(WebCore::ContentSecurityPolicySourceList::allowInline): We only allow inline scripts/stylesheets if
'unsafe-inline' was specified in the source list and the source list does not contain any hash sources
or nonce sources.

  • page/csp/ContentSecurityPolicySourceListDirective.cpp:

(WebCore::ContentSecurityPolicySourceListDirective::allows): Checks if the specified nonce is in the source list.

  • page/csp/ContentSecurityPolicySourceListDirective.h:

LayoutTests:

Update expected results due to differences between Blink and WebKit violation message formats.

Additionally mark script- and style- nonce tests as PASS in LayoutTests/TestExpectations so
that we run them.

  • TestExpectations:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-and-scripthash-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-and-scripthash.html:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-basic-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-ignore-unsafeinline-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scriptnonce-invalidnonce-expected.txt: Also update result

to reflect that we consider "'n-" an invalid source expression (as expected).

  • http/tests/security/contentSecurityPolicy/1.1/stylenonce-allowed-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/stylenonce-blocked-expected.txt:
10:24 AM Changeset in webkit [197943] by weinig@apple.com
  • 39 edits
    4 adds in trunk/Source

Add a baseURL parameter to _WKUserStyleSheet
​https://bugs.webkit.org/show_bug.cgi?id=155219

Reviewed by Tim Horton.

Source/WebCore:

  • Moves to a model for user content where instead of each page having a WebCore::UserContentController object, we have an abstract WebCore::UserContentProvider interface that can be implemented at the WebKit level. For now, legacy WebKit continues to use the old UserContentController, which implements WebCore::UserContentProvider, and WebKit2 implements its own implementation so it can store additional state.
  • WebCore.xcodeproj/project.pbxproj:

Add new files.

  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache):
Switch to using forEachUserStyleSheet on the UserContentProvider.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource):
Remove null check now that we always have a UserContentProvider.

  • loader/EmptyClients.cpp:

(WebCore::fillWithEmptyClients):

  • loader/EmptyClients.h:

Add new EmptyClients.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadResourceSynchronously):
Remove null check now that we always have a UserContentProvider.

  • loader/PingLoader.cpp:

(WebCore::processContentExtensionRulesForLoad):
Remove null check now that we always have a UserContentProvider.

  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::willSendRequestInternal):
Remove null check now that we always have a UserContentProvider.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
Remove null check now that we always have a UserContentProvider.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
Remove null checks now that we always have a UserContentProvider, and userMessageHandlerDescriptors
returns a reference.

(WebCore::DOMWindow::open):
Remove null check now that we always have a UserContentProvider.

  • page/Frame.cpp:

(WebCore::Frame::injectUserScripts):
Simplify by lifting document check out of the main loop and using forEachUserScript.

  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::~Page):
(WebCore::Page::userContentProvider):
(WebCore::Page::setUserContentProvider):
(WebCore::Page::setUserContentController): Deleted.

  • page/Page.h:

(WebCore::Page::userContentController): Deleted.

  • page/PageConfiguration.h:

Store the UserContentProvider in a Ref, and require PageConfigurations to provide one. This
removes a bunch of null checks and simplifies the code.

  • page/UserContentController.cpp:

(WebCore::UserContentController::~UserContentController):
(WebCore::UserContentController::forEachUserScript):
(WebCore::UserContentController::forEachUserStyleSheet):
(WebCore::UserContentController::addUserScript):
(WebCore::UserContentController::removeUserScript):
(WebCore::UserContentController::removeUserScripts):
(WebCore::UserContentController::addUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheets):
(WebCore::UserContentController::addUserMessageHandlerDescriptor):
(WebCore::UserContentController::removeUserMessageHandlerDescriptor):
(WebCore::UserContentController::addUserContentExtension):
(WebCore::UserContentController::removeUserContentExtension):
(WebCore::UserContentController::removeAllUserContentExtensions):
(WebCore::UserContentController::removeAllUserContent):
(WebCore::UserContentController::addPage): Deleted.
(WebCore::UserContentController::removePage): Deleted.
(WebCore::contentExtensionsEnabled): Deleted.
(WebCore::UserContentController::processContentExtensionRulesForLoad): Deleted.
(WebCore::UserContentController::actionsForResourceLoad): Deleted.

  • page/UserContentController.h:

(WebCore::UserContentController::userScripts): Deleted.
(WebCore::UserContentController::userStyleSheets): Deleted.
(WebCore::UserContentController::userMessageHandlerDescriptors): Deleted.
Add inheritance from UserContentProvider and simplify things by removing unique_ptrs
that were holding the member variables. There is usually only one UserContentController
so having these in unique_ptrs doesn't make much sense.

  • page/UserContentProvider.cpp: Added.

(WebCore::UserContentProvider::UserContentProvider):
(WebCore::UserContentProvider::~UserContentProvider):
(WebCore::UserContentProvider::addPage):
(WebCore::UserContentProvider::removePage):
(WebCore::UserContentProvider::invalidateInjectedStyleSheetCacheInAllFramesInAllPages):
(WebCore::contentExtensionsEnabled):
(WebCore::UserContentProvider::processContentExtensionRulesForLoad):
(WebCore::UserContentProvider::actionsForResourceLoad):

  • page/UserContentProvider.h: Added.

Add abstract class for providing user content and add some helpers on it.

  • page/UserMessageHandlerDescriptor.h:

(WebCore::UserMessageHandlerDescriptor::create):
(WebCore::UserMessageHandlerDescriptor::client):
(WebCore::UserMessageHandlerDescriptor::invalidateClient):

  • page/UserMessageHandlersNamespace.cpp:

(WebCore::UserMessageHandlersNamespace::handler):
Simplify now that userContentProvider() and userMessageHandlerDescriptors() are references.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
(-[WebView setGroupName:]):
Update to account for the name change from UserContentController -> UserContentProvider.

Source/WebKit2:

  • Moves to a model for user content where instead of using a WebCore::UserContentController object, we implement the new WebCore::UserContentProvider interface (on the existing WebUserContentController object).
  • Uses this to maintain maps of UserStylesSheets and UserScripts along with their identifiers, freeing up the URL, which had been acting as the identifier, to be used as the baseURL which was what it was intended for.
  • Adds a baseURL property to _WKUserStyleSheet.
  • WebKit2.xcodeproj/project.pbxproj:

Add new files.

  • Scripts/webkit/messages.py:

(headers_for_type):
Add support for sending WebUserContentControllerDataTypes.

  • Shared/WebUserContentControllerDataTypes.cpp: Added.

(WebKit::WebUserScriptData::encode):
(WebKit::WebUserScriptData::decode):
(WebKit::WebUserStyleSheetData::encode):
(WebKit::WebUserStyleSheetData::decode):

  • Shared/WebUserContentControllerDataTypes.h: Added.

Add helper types for sending user content over IPC.

  • UIProcess/API/APIUserScript.cpp:

(API::UserScript::generateUniqueURL):
(API::UserScript::UserScript):

  • UIProcess/API/APIUserScript.h:
  • UIProcess/API/APIUserStyleSheet.cpp:

(API::UserStyleSheet::generateUniqueURL):
(API::UserStyleSheet::UserStyleSheet):

  • UIProcess/API/APIUserStyleSheet.h:

Add identifiers for tracking across processes.

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

(-[_WKUserStyleSheet initWithSource:forMainFrameOnly:legacyWhitelist:legacyBlacklist:baseURL:userContentWorld:]):
(-[_WKUserStyleSheet baseURL]):
Add new initializer which takes a baseURL as well as an accessor for the baseURL.

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserScript):
(WebKit::WebUserContentControllerProxy::removeUserScript):
(WebKit::WebUserContentControllerProxy::addUserStyleSheet):
(WebKit::WebUserContentControllerProxy::removeUserStyleSheet):
Pass identifiers as well as user content.

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::addUserScript):
(WebKit::InjectedBundle::addUserStyleSheet):
Move user content in via move semantics rather than using a unique_ptr.

(WebKit::InjectedBundle::removeUserScript):
(WebKit::InjectedBundle::removeUserStyleSheet):
(WebKit::InjectedBundle::removeUserScripts):
(WebKit::InjectedBundle::removeUserStyleSheets):
(WebKit::InjectedBundle::removeAllUserContent):
Update for new function signatures.

  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserContentController::WebUserContentController):
(WebKit::WebUserContentController::~WebUserContentController):
(WebKit::WebUserContentController::addUserContentWorlds):
(WebKit::WebUserContentController::removeUserContentWorlds):
(WebKit::WebUserContentController::addUserScripts):
(WebKit::WebUserContentController::removeUserScript):
(WebKit::WebUserContentController::removeAllUserScripts):
(WebKit::WebUserContentController::addUserStyleSheets):
(WebKit::WebUserContentController::removeUserStyleSheet):
(WebKit::WebUserContentController::removeAllUserStyleSheets):
(WebKit::WebUserContentController::addUserScriptMessageHandlers):
(WebKit::WebUserContentController::removeUserScriptMessageHandler):
(WebKit::WebUserContentController::addUserContentExtensions):
(WebKit::WebUserContentController::removeUserContentExtension):
(WebKit::WebUserContentController::removeAllUserContentExtensions):
(WebKit::WebUserContentController::addUserScriptInternal):
(WebKit::WebUserContentController::addUserScript):
(WebKit::WebUserContentController::removeUserScriptWithURL):
(WebKit::WebUserContentController::removeUserScriptInternal):
(WebKit::WebUserContentController::removeUserScripts):
(WebKit::WebUserContentController::addUserStyleSheetInternal):
(WebKit::WebUserContentController::addUserStyleSheet):
(WebKit::WebUserContentController::removeUserStyleSheetWithURL):
(WebKit::WebUserContentController::removeUserStyleSheetInternal):
(WebKit::WebUserContentController::removeUserStyleSheets):
(WebKit::WebUserContentController::removeAllUserContent):
(WebKit::WebUserContentController::forEachUserScript):
(WebKit::WebUserContentController::forEachUserStyleSheet):

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.messages.in:

Convert to inheriting from UserContentProvider, rather than containing a UserContentController.
This means adding the storage for the user content, which has been simplified to avoid using
unique_ptrs.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::addUserScript):
(WebKit::WebPage::addUserStyleSheet):
(WebKit::WebPage::removeAllUserContent):
Update to call the WebUserContentController, rather than going to the UserContentController, which
no longer exists.

  • WebProcess/WebPage/WebPageGroupProxy.cpp:

(WebKit::WebPageGroupProxy::userContentController):

  • WebProcess/WebPage/WebPageGroupProxy.h:

Return the WebUserContentController rather than old UserContentController.

10:23 AM Changeset in webkit [197942] by ddkilzer@apple.com
  • 5 edits in trunk

[iOS] DumpRenderTree crashes when accessing window.testRunner.inspectorTestStubURL
<​http://webkit.org/b/155295>

Reviewed by Brent Fulgham.

Tools:

  • DumpRenderTree/mac/TestRunnerMac.mm:

(TestRunner::inspectorTestStubURL): Always return nullptr for
PLATFORM(IOS). This matches what we did in r192604 for
WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm.

LayoutTests:

  • platform/ios-simulator-wk1/TestExpectations:
  • platform/ios-simulator-wk2/TestExpectations:
  • Remove all "inspector/" tests. They are already skipped in platform/ios-simulator/TestExpectations, so no need to resurrect them here.
9:55 AM Changeset in webkit [197941] by Ryan Haddad
  • 22 edits in trunk/Source

Unreviewed, rolling out r197923.
​https://bugs.webkit.org/show_bug.cgi?id=155301

Rolling out this change due to breaking the build and
LayoutTests. (Requested by ryanhaddad on #webkit).

Reverted changeset:

"Font antialiasing (smoothing) changes when elements are
rendered into compositing layers"
​https://bugs.webkit.org/show_bug.cgi?id=23364
​http://trac.webkit.org/changeset/197923

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-10

9:46 AM Changeset in webkit [197940] by dbates@webkit.org
  • 28 edits
    8 adds in trunk

CSP: Implement support for inline script and inline style hashes
​https://bugs.webkit.org/show_bug.cgi?id=155007
<rdar://problem/24964098>

Reviewed by Brent Fulgham.

Source/WebCore:

Inspiration taken from the analogous implementation in Blink.

Add support for script-src and style-src hashes as per sections Hash usage for script elements
and Hash usage for style elements of the Content Security Policy 2.0 spec., <​https://www.w3.org/TR/2015/CR-CSP2-20150721/>.

Test: http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html

  • WebCore.xcodeproj/project.pbxproj: Add file ContentSecurityPolicyHash.h. Also sort the list of files

in the group WebCore/page/csp.

  • dom/InlineStyleSheetOwner.cpp:

(WebCore::InlineStyleSheetOwner::createSheet): Pass the content of the stylesheet when querying whether
the stylesheet is allowed by the Content Security Policy.

  • dom/ScriptElement.cpp:

(WebCore::ScriptElement::executeScript): Pass the content of the inline JavaScript script when querying
whether the script is allowed by the Content Security Policy.

  • dom/StyledElement.cpp:

(WebCore::StyledElement::styleAttributeChanged): The Content Security Policy style-src hashes do not apply
to inline styles defined in the HTML style attribute. So, pass a null string (to indicate the absence of
content) when querying whether the inline style is allowed by the Content Security Policy.

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::toCryptoDigestAlgorithm): Convenience function that maps a ContentSecurityPolicyHashAlgorithm
enumerator to a CryptoDigest::Algorithm enumerator.
(WebCore::isAllowedByAllWithHashFromContent): Computes the digest of the specified content for each
hash algorithm and checks if digest matches a hash that was specified in a policy.
(WebCore::ContentSecurityPolicy::documentEncoding): Added.
(WebCore::ContentSecurityPolicy::allowInlineScript): Check if the hash of the script matches a known
hash if applicable. Otherwise, fall back to checking the URL of the script.
(WebCore::ContentSecurityPolicy::allowInlineStyle): Check if the hash of the stylesheet matches a
known hash if applicable. Otherwise, fall back to checking the URL of the stylesheet.

  • page/csp/ContentSecurityPolicy.h:

(WebCore::ContentSecurityPolicy::addHashAlgorithmsForInlineScripts): Adds the specified set of
hash algorithms to the existing set of hash algorithms we know are used for inline scripts.
(WebCore::ContentSecurityPolicy::addHashAlgorithmsForInlineStylesheets): Adds the specified set of
hash algorithms to the existing set of hash algorithms we know are used for inline stylesheets.

  • page/csp/ContentSecurityPolicyDirectiveList.cpp:

(WebCore::checkEval): Make this a static, non-member function because it does not depend on any
instance or class variables. Mark this function as inline to give a hint to the compiler that it
should consider inlining the implementation of this function into the caller.
(WebCore::checkInline): Ditto.
(WebCore::checkSource): Ditto.
(WebCore::checkHash): Checks if the directive allows content with the specified hash.
(WebCore::checkMediaType): Make this a static, non-member function because it does not depend on
any instance or class variables. Mark this function as inline to give a hint to the compiler that
it should consider inlining the implementation of this function into the caller.
(WebCore::ContentSecurityPolicyDirectiveList::create): Modified as needed now that WebCore::checkEval()
is a static, non-member function.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineScriptWithHash): Added.
(WebCore::ContentSecurityPolicyDirectiveList::allowInlineStyleWithHash): Added.
(WebCore::ContentSecurityPolicyDirectiveList::addDirective): Modified to pass the hash algorithms seen
from parsing the directives script-src, style-src, and default-src to the ContentSecurityPolicy object.
(WebCore::ContentSecurityPolicyDirectiveList::checkEval): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkInline): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkSource): Deleted.
(WebCore::ContentSecurityPolicyDirectiveList::checkMediaType): Deleted.

  • page/csp/ContentSecurityPolicyDirectiveList.h:
  • page/csp/ContentSecurityPolicyHash.h: Added.

(WTF::DefaultHash<WebCore::ContentSecurityPolicyDigest>::Hash::hash): Compute the hash of a digest as
we would compute the hash of a string.
(WTF::DefaultHash<WebCore::ContentSecurityPolicyDigest>::Hash::equal): Compare digests for equality
by making use of Vector's equality operator.

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::matches): Checks if the hash is in the set of known hashes.
(WebCore::ContentSecurityPolicySourceList::parse): Modified to call ContentSecurityPolicySourceList::parseHashSource()
to try to parse the source list expression as a hash source. If this fails then we try to parse the
source expression as a scheme/host/port expression.
(WebCore::parseHashAlgorithmAdvancingPosition): Parses the hash algorithm from a hash source expression.
(WebCore::isBase64Character): Returns whether the specified character is a valid Base64/Base64url character,
excluding the padding character '='. Disregarding the omission of the padding character '=', this function
conforms to the ABNF grammar defined in section Source Lists of the Content Security Policy Level 3 spec.,
<​https://w3c.github.io/webappsec-csp> (Editor’s Draft, 29 February 2016). We take the padding character '='
into account in ContentSecurityPolicySourceList::parseHashSource().
(WebCore::ContentSecurityPolicySourceList::parseHashSource): Parses a hash source expression per the ABNF
grammar described in section Source Lists of the Content Security Policy Level 3 spec.

  • page/csp/ContentSecurityPolicySourceList.h:

(WebCore::ContentSecurityPolicySourceList::hashAlgorithmsUsed): Returns the set of hash algorithms seen from
parsing the source list.
(WebCore::ContentSecurityPolicySourceList::allowInline): We only allow inline scripts/stylesheets if
'unsafe-inline' was specified in the source list and the source list does not contain any hash sources.

  • page/csp/ContentSecurityPolicySourceListDirective.cpp:

(WebCore::ContentSecurityPolicySourceListDirective::allows): Checks if the specified hash is in the source list.

  • page/csp/ContentSecurityPolicySourceListDirective.h:

(WebCore::ContentSecurityPolicySourceListDirective::hashAlgorithmsUsed): Turns around and calls ContentSecurityPolicySourceList::hashAlgorithmsUsed().

LayoutTests:

Add new test http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html to ensure that
script hashes are interpreted correctly. Update many existing tests that had a hash source with
a SHA-1 hash to use a SHA-256 hash. The valid hash algorithms are SHA-256, SHA-384, and SHA-512
per the Content Security Policy Level 3 spec. At the time of writing, Blink also supports SHA-1.

  • TestExpectations: Mark many CSP 1.1 tests as PASS so that we run them. Remove entries for tests

http/tests/security/contentSecurityPolicy/1.1/{script, style}hash-default-src.html as these tests
now pass.

  • http/tests/security/contentSecurityPolicy/1.1/resources/didRunInlineScriptEpilogue.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/didRunInlineScriptPrologue.js: Added.
  • http/tests/security/contentSecurityPolicy/1.1/resources/testScriptHash.php: Added.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-allowed.html: Update test as SHA-1 is not

a supported hash algorithm per the Content Security Policy Level 3 spec.

  • http/tests/security/contentSecurityPolicy/1.1/scripthash-basic-blocked-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-basic-blocked.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-default-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-ignore-unsafeinline-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-ignore-unsafeinline.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-malformed-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-tests-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-tests.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/scripthash-unicode-normalization.html: Update test

as SHA-1 is not a supported hash algorithm per the Content Security Policy Level 3 spec.

  • http/tests/security/contentSecurityPolicy/1.1/stylehash-allowed-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-allowed.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-basic-blocked-error-event.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-basic-blocked-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-basic-blocked.html: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-default-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/stylehash-svg-style-basic-blocked-error-event.html: Update test

as SHA-1 is not a supported hash algorithm per the Content Security Policy Level 3 spec.

8:57 AM Changeset in webkit [197939] by Chris Dumez
  • 10 edits in trunk/Source

Speculative revalidation requests do not have their 'first party for cookies' URL set
​https://bugs.webkit.org/show_bug.cgi?id=155284
<rdar://problem/25053203>

Reviewed by Antti Koivisto.

Source/WebCore:

Export a few more symbols so they can be used in WebKit2.

  • platform/URL.h:
  • platform/network/ResourceRequestBase.h:

Source/WebKit2:

Speculative revalidation requests did not have their 'first party for cookies'
URL set. This means the underlying NSURLRequest has a nil mainDocumentURL.
Without a way to determine whether the cookie is in a third-party context,
CFNetwork defaults to accepting all cookies for these resources.

  • NetworkProcess/cache/NetworkCacheCoders.cpp:

(WebKit::NetworkCache::Coder<WebCore::URL>::encode):
(WebKit::NetworkCache::Coder<WebCore::URL>::decode):

  • NetworkProcess/cache/NetworkCacheCoders.h:

Add template specialization to support encoding / decoding WebCore::URL.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):
Set the "first party for cookies" URL on the revalidation request.

(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::registerSubresourceLoad):
(WebKit::NetworkCache::SpeculativeLoadManager::PendingFrameLoad::saveToDiskIfReady):
Now keep the subresources' ResourceRequests, in addition to their key, so we can later
extract the 'first party for cookies' URL from the request and save it to disk.

(WebKit::NetworkCache::SpeculativeLoadManager::registerLoad):
Pass the ResourceRequest in addition to the key to
PendingFrameLoad::registerSubresourceLoad().

(WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry):
Add an extra SubresourceInfo parameter, in addition to the Entry, so we
have access to the first party for cookies URL. Pass this URL to
constructRevalidationRequest().

(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
Add an extra SubresourceInfo parameter, in addition to the Entry, so we
have access to the first party for cookies URL.

(WebKit::NetworkCache::SpeculativeLoadManager::startSpeculativeRevalidation):
Pass the SubresourceInfo to preloadEntry().

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::decode):
Encode / Decode new firstPartyForCookies member.

(WebKit::NetworkCache::SubresourcesEntry::SubresourcesEntry):
(WebKit::NetworkCache::SubresourcesEntry::updateSubresourceLoads):
Take SubresourceLoad objects in, instead of simple Key objects so we have
access to the ResourceRequest. We extract the first party for cookies URL
from the request and pass it to the SubresourceInfo constructor.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourcesEntry::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourcesEntry::SubresourceLoad::SubresourceLoad):

8:28 AM Changeset in webkit [197938] by jer.noble@apple.com
  • 6 edits in trunk/Source

Enable AVFoundationNSURLSessionEnabled by default
​https://bugs.webkit.org/show_bug.cgi?id=154469

Reviewed by Sam Weinig.

Source/WebCore:

  • page/Settings.cpp:

Source/WebKit/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
8:24 AM Changeset in webkit [197937] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebKit2

Merge r197927 - [GTK] Artifacts when using web view background color
​https://bugs.webkit.org/show_bug.cgi?id=155229

Reviewed by Mario Sanchez Prada.

This is because when using a web view color, we fill with the
color every rectangle updated by the web process, but we should
always fill the entire backing store before rendering the actual
contents on top.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::display): Ensure the web process always
renders the whole visible rectangle when background is rendered by
the UI process.

8:22 AM Changeset in webkit [197936] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10/Source/WebKit2

Merge r197733 - REGRESSION(r197062): [GTK] Transparent backgrounds no longer work after r197062
​https://bugs.webkit.org/show_bug.cgi?id=155119

Reviewed by Martin Robinson.

This is because after r197062 we are now realizing the view too
early, even before the toplevel window has been realized, forcing
the toplevel window to be realized. If the RGBA visual is set on
the window after it has been realzied it doesn't have any
effect. We should wait until the toplevel window is realized to
realize the web view, giving time to the application to set RGBA
visual and background color. If the toplevel window is already
realized we realize the web view immediately, so that this doesn't
affect the tearing problems fixed in r197062.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(toplevelWindowRealized):
(webkitWebViewBaseSetToplevelOnScreenWindow):

8:10 AM Changeset in webkit [197935] by Carlos Garcia Campos
  • 5 edits
    2 moves in releases/WebKitGTK/webkit-2.10

Merge r196807 - Revert to dispatching the popstate event synchronously
​https://bugs.webkit.org/show_bug.cgi?id=153297
rdar://problem/24092294

Reviewed by Brent Fulgham.

Source/WebCore:

r192369 made the popstate event dispatch asynchronously, which matches what the HTML5 spec says to do. However,
due to compatibility regressions we need to revert back to dispatching synchronously. This change reverts
r192369's changes to Document.cpp, but retains the new tests.

Firing popstate synchronously makes both fast/loader/remove-iframe-during-history-navigation-different.html and
fast/loader/remove-iframe-during-history-navigation-same.html crash, because their onpopstate handlers remove
frames from the document that will later be accessed by HistoryController::recursiveGoToItem().

To prevent the crashes, this change does two things:

  1. Keep a reference to the current frame inside FrameLoader::loadSameDocumentItem(), since calling loadInSameDocument() might otherwise delete it.
  2. Handle a null frame when iterating a HistoryItem's child frames in HistoryController::recursiveGoToItem(), since calling goToItem() on one frame might cause another frame to be deleted.

Covered by existing tests. fast/loader/stateobjects/popstate-is-asynchronous.html was renamed to
fast/loader/stateobjects/popstate-is-synchronous.html and modified to expect synchronous dispatch.

  • dom/Document.cpp:

(WebCore::Document::enqueuePopstateEvent):

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadSameDocumentItem):

  • loader/HistoryController.cpp:

(WebCore::HistoryController::recursiveGoToItem):

LayoutTests:

Renamed and modified this test to expect synchronous dispatch.

  • fast/loader/stateobjects/popstate-is-synchronous-expected.txt: Renamed from LayoutTests/fast/loader/stateobjects/popstate-is-asynchronous-expected.txt.
  • fast/loader/stateobjects/popstate-is-synchronous.html: Renamed from LayoutTests/fast/loader/stateobjects/popstate-is-asynchronous.html.
8:09 AM Changeset in webkit [197934] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.10

Merge r192369 - popstate event should be dispatched asynchronously
​https://bugs.webkit.org/show_bug.cgi?id=36202
<rdar://problem/7761279>

Based on an original patch by Mihai Parparita <​mihaip@chromium.org>.

Reviewed by Brent Fulgham.

Source/WebCore:

Tests: fast/loader/remove-iframe-during-history-navigation-different.html

fast/loader/remove-iframe-during-history-navigation-same.html
fast/loader/stateobjects/popstate-is-asynchronous.html

  • dom/Document.cpp:

(WebCore::Document::enqueuePopstateEvent):
Use enqueueWindowEvent().

LayoutTests:

  • fast/loader/remove-iframe-during-history-navigation-different-expected.txt: Added.
  • fast/loader/remove-iframe-during-history-navigation-different.html: Added.

Imported from Blink.

  • fast/loader/remove-iframe-during-history-navigation-same-expected.txt: Added.
  • fast/loader/remove-iframe-during-history-navigation-same.html: Added.

Ditto.

  • fast/loader/stateobjects/popstate-fires-on-history-traversal.html:

Modified to account for popstate firing asynchronously.

  • fast/loader/stateobjects/popstate-is-asynchronous-expected.txt: Added.
  • fast/loader/stateobjects/popstate-is-asynchronous.html: Added.

Based on Mihai's original test. Modified to pass in current WebKit.

7:30 AM Changeset in webkit [197933] by fred.wang@free.fr
  • 16 edits
    53 adds in trunk

[GTK] Add support for WOFF2
​https://bugs.webkit.org/show_bug.cgi?id=152616

.:

Patch by Frederic Wang <​fwang@igalia.org> on 2016-03-10
Reviewed by Carlos Garcia Campos.

  • Source/CMakeLists.txt: Build brotli and woff2 third-party libraries if WOFF2 is enabled.
  • Source/cmake/OptionsGTK.cmake: Always enable WOFF2 on GTK.

Source/ThirdParty:

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-10
Reviewed by Carlos Garcia Campos.

We import the source of the third-party brotli and woff2 libraries because release packages do not exist yet.
The script to update source from upstream as well as the makefile to compile relevant files are based on similar code from Mozilla.

  • brotli/CMakeLists.txt: Added. We force BROTLI_BUILD_PORTABLE by default, see ​https://github.com/google/brotli/issues/307.
  • brotli/LICENSE: Added.
  • brotli/README.webkit: Added.
  • brotli/dec/Makefile: Added.
  • brotli/dec/bit_reader.c: Added.
  • brotli/dec/bit_reader.h: Added.
  • brotli/dec/context.h: Added.
  • brotli/dec/decode.c: Added.
  • brotli/dec/decode.h: Added.
  • brotli/dec/dictionary.c: Added.
  • brotli/dec/dictionary.h: Added.
  • brotli/dec/huffman.c: Added.
  • brotli/dec/huffman.h: Added.
  • brotli/dec/port.h: Added.

(BrotliRBit):

  • brotli/dec/prefix.h: Added.
  • brotli/dec/state.c: Added.
  • brotli/dec/state.h: Added.
  • brotli/dec/transform.h: Added.
  • brotli/dec/types.h: Added.
  • brotli/update.sh: Added. This script helps to get the latest version of the decoder source code.
  • woff2/CMakeLists.txt: Added. We only compile the decoder files.
  • woff2/LICENSE: Added.
  • woff2/README.webkit: Added.
  • woff2/src/buffer.h: Added.

(woff2::Failure):
(woff2::Buffer::Buffer):
(woff2::Buffer::Skip):
(woff2::Buffer::Read):
(woff2::Buffer::ReadU8):
(woff2::Buffer::ReadU16):
(woff2::Buffer::ReadS16):
(woff2::Buffer::ReadU24):
(woff2::Buffer::ReadU32):
(woff2::Buffer::ReadS32):
(woff2::Buffer::ReadTag):
(woff2::Buffer::ReadR64):
(woff2::Buffer::buffer):
(woff2::Buffer::offset):
(woff2::Buffer::length):
(woff2::Buffer::set_offset):

  • woff2/src/file.h: Added.

(woff2::GetFileContent):
(woff2::SetFileContents):

  • woff2/src/font.cc: Added.
  • woff2/src/font.h: Added.
  • woff2/src/glyph.cc: Added.
  • woff2/src/glyph.h: Added.

(woff2::Glyph::Glyph):

  • woff2/src/normalize.cc: Added.
  • woff2/src/normalize.h: Added.
  • woff2/src/port.h: Added.

(woff2::Log2Floor):

  • woff2/src/round.h: Added.

(woff2::Round4):

  • woff2/src/store_bytes.h: Added.

(woff2::StoreU32):
(woff2::Store16):
(woff2::StoreBytes):

  • woff2/src/table_tags.cc: Added.
  • woff2/src/table_tags.h: Added.
  • woff2/src/transform.cc: Added.
  • woff2/src/transform.h: Added.
  • woff2/src/variable_length.cc: Added.
  • woff2/src/variable_length.h: Added.
  • woff2/src/woff2_common.cc: Added.
  • woff2/src/woff2_common.h: Added.

(woff2::Table::operator<):

  • woff2/src/woff2_compress.cc: Added.
  • woff2/src/woff2_dec.cc: Added.
  • woff2/src/woff2_dec.h: Added.
  • woff2/src/woff2_decompress.cc: Added.
  • woff2/src/woff2_enc.cc: Added.
  • woff2/src/woff2_enc.h: Added.

(woff2::WOFF2Params::WOFF2Params):

  • woff2/update.sh: Added. This script helps to get the latest upstream version.

Source/WebCore:

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-10
Reviewed by Carlos Garcia Campos.

No new tests (Covered by existing tests).

  • CMakeLists.txt: Add woff2 source to the include directory and link WebCore against brotli and woff2.
  • platform/graphics/WOFFFileFormat.cpp:

(WebCore::isWOFF): Recognize the signature of WOFF2 font.
(WebCore::convertWOFFToSfnt): If the font has the WOFF2 signature, then try and decompress it using the woff2 library.

  • platform/graphics/freetype/FontCustomPlatformDataFreeType.cpp:

(WebCore::FontCustomPlatformData::supportsFormat): Add woff2 to the list of supported formats.

Source/WTF:

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-10
Reviewed by Carlos Garcia Campos.

  • wtf/FeatureDefines.h: Enable USE_WOFF2 flag on GTK.

Tools:

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-10
Reviewed by Carlos Garcia Campos.

  • Scripts/webkitpy/style/checker.py: Only verify basic style for third party modules brotli and woff2.

LayoutTests:

Patch by Frederic Wang <​fwang@igalia.com> on 2016-03-10
Reviewed by Carlos Garcia Campos.

  • fast/text/woff2-expected.html: Adjust font-size to work around anti-aliasing effects.
  • fast/text/woff2.html: Ditto.
  • platform/gtk/TestExpectations: Update test expectation of woff2 test for GTK.
6:32 AM Changeset in webkit [197932] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/JavaScriptCore

Fix the build in Windows.

Reviewed by Alberto Garcia.

  • interpreter/JSStack.cpp:

(JSC::commitSize):

6:25 AM WebKitGTK/2.12.x edited by Michael Catanzaro
(diff)
4:26 AM Changeset in webkit [197931] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebKit2

Unreviewed, revert changes accidentally committed with previous patch.

  • WebProcess/com.apple.WebProcess.sb.in:
4:15 AM Changeset in webkit [197930] by Manuel Rego Casasnovas
  • 12 edits
    2 adds in trunk

[css-grid] Fix placement for unknown named grid lines
​https://bugs.webkit.org/show_bug.cgi?id=155230

Reviewed by Sergio Villar Senin.

Source/WebCore:

The spec has changed and now all the implicit lines should be considered
when we're resolving named grid lines with an unknown name.

The relevant part of the spec is
(​http://dev.w3.org/csswg/css-grid/#line-placement):
"If a name is given as a <custom-ident>, only lines with that name

are counted. If not enough lines with that name exist,
all implicit grid lines are assumed to have that name
for the purpose of finding this position."

Modified the code to resolve named grid lines in GridResolvedPosition.
We need to keep the old behavior of considering "auto" unknown named
grid lines for the case of positioned grid items.

Test: fast/css-grid-layout/grid-item-unknown-named-grid-line-resolution.html

  • rendering/style/GridResolvedPosition.cpp:

(WebCore::adjustGridPositionsFromStyle):
(WebCore::lookAheadForNamedGridLine):
(WebCore::lookBackForNamedGridLine):
(WebCore::resolveNamedGridLinePositionFromStyle):
(WebCore::definiteGridSpanWithNamedLineSpanAgainstOpposite):
(WebCore::resolveNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveGridPositionAgainstOppositePosition):
(WebCore::resolveGridPositionFromStyle):

LayoutTests:

Updated current tests to the new expected behavior and created a new
test checking different cases explicitly.

  • fast/css-grid-layout/grid-container-change-named-grid-lines-recompute-child.html:
  • fast/css-grid-layout/grid-item-bad-named-area-auto-placement-expected.txt:
  • fast/css-grid-layout/grid-item-bad-named-area-auto-placement.html:
  • fast/css-grid-layout/grid-item-named-grid-area-resolution.html:
  • fast/css-grid-layout/grid-item-named-grid-line-resolution-expected.txt:
  • fast/css-grid-layout/grid-item-named-grid-line-resolution.html:
  • fast/css-grid-layout/grid-item-negative-position-resolution.html:
  • fast/css-grid-layout/grid-item-position-changed-dynamic.html:
  • fast/css-grid-layout/grid-item-unknown-named-grid-line-resolution-expected.txt: Added.
  • fast/css-grid-layout/grid-item-unknown-named-grid-line-resolution.html: Added.
  • fast/css-grid-layout/named-grid-lines-with-named-grid-areas-resolution.html:
4:05 AM Changeset in webkit [197929] by eric.carlson@apple.com
  • 13 edits in trunk/Source

[MediaStream] push media stream state to the UI process
​https://bugs.webkit.org/show_bug.cgi?id=155281

Reviewed by Darin Adler.

Source/WebCore:

  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream): Register with the document as an audio producer.
(WebCore::MediaStream::~MediaStream): Unregister.
(WebCore::MediaStream::setIsActive): Update document status.
(WebCore::MediaStream::pageMutedStateDidChange): Mute/unmute according to the page mute setting.
(WebCore::MediaStream::mediaState): Return state.
(WebCore::MediaStream::statusDidChange): Call document.updateIsPlayingMedia.
(WebCore::MediaStream::characteristicsChanged): Track stream mute state.
(WebCore::MediaStream::scheduleActiveStateChange): m_isActive -> m_active.

  • Modules/mediastream/MediaStream.h:
  • page/MediaProducer.h: Add HasActiveMediaCaptureDevice.
  • platform/mediastream/MediaStreamPrivate.cpp:

(WebCore::MediaStreamPrivate::hasVideo): Make const.
(WebCore::MediaStreamPrivate::hasAudio): Ditto.
(WebCore::MediaStreamPrivate::muted): New.

  • platform/mediastream/MediaStreamPrivate.h:
  • platform/mediastream/mac/AVMediaCaptureSource.mm:

(WebCore::AVMediaCaptureSource::AVMediaCaptureSource): Initialize muted to true.
(WebCore::AVMediaCaptureSource::captureSessionIsRunningDidChange): Set muted.

Source/WebKit2:

  • UIProcess/API/C/WKPage.cpp:

(WKPageGetMediaState): New.

  • UIProcess/API/C/WKPagePrivate.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didCommitLoadForFrame): Clear m_mediaState.
(WebKit::WebPageProxy::isPlayingMediaDidChange): Call m_pageClient.isPlayingMediaDidChange when

audio or video state changes, call m_uiClient->isPlayingAudioDidChange when audio, vidoe,
or media stream state changes.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::mediaStateFlags): New.

12:19 AM Changeset in webkit [197928] by gskachkov@gmail.com
  • 7 edits in trunk/Source/JavaScriptCore

How we load new.target in arrow functions is broken
​https://bugs.webkit.org/show_bug.cgi?id=155153

Reviewed by Saam Barati.

Fixed not correct approach of caching new.target. In current patch was added code feature
flag that shows that current function is using new.target, when generating byte code an arrow
function we are loading new.target value to its register from arrow function lexical environment.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitLoadNewTargetFromArrowFunctionLexicalEnvironment):

  • bytecompiler/BytecodeGenerator.h:

(JSC::BytecodeGenerator::newTarget):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createNewTargetExpr):
(JSC::ASTBuilder::usesNewTarget):

  • parser/Nodes.h:

(JSC::ScopeNode::usesNewTarget):

  • parser/ParserModes.h:
  • tests/stress/arrowfunction-lexical-bind-newtarget.js:

Mar 9, 2016:

11:13 PM Changeset in webkit [197927] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[GTK] Artifacts when using web view background color
​https://bugs.webkit.org/show_bug.cgi?id=155229

Reviewed by Mario Sanchez Prada.

This is because when using a web view color, we fill with the
color every rectangle updated by the web process, but we should
always fill the entire backing store before rendering the actual
contents on top.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::display): Ensure the web process always
renders the whole visible rectangle when background is rendered by
the UI process.

10:15 PM Changeset in webkit [197926] by commit-queue@webkit.org
  • 12 edits
    4 adds in trunk

Web Inspector: Get a RemoteObject or ObjectPreview from HeapSnapshot Object Identifier
​https://bugs.webkit.org/show_bug.cgi?id=155264
<rdar://problem/25070716>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-09
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/InjectedScript.h:
  • inspector/InjectedScript.cpp:

(Inspector::InjectedScript::functionDetails):
(Inspector::InjectedScript::previewValue):
New InjectedScript methods for building Debugger.FunctionDetails
or Runtime.ObjectPreview protocol objects from a JSValue.

  • inspector/InjectedScriptSource.js:

(InjectedScript.prototype.previewValue):
(InjectedScript.prototype.functionDetails):
(InjectedScript.prototype.getFunctionDetails):
(InjectedScript.RemoteObject.prototype._isPreviewableObjectInternal):
(InjectedScript.RemoteObject.prototype._createObjectPreviewForValue): Deleted.
(InjectedScript.RemoteObject.prototype._appendEntryPreviews): Deleted.
Share code around creating function details or object preview objects.

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::InspectorHeapAgent):
(Inspector::InspectorHeapAgent::nodeForHeapObjectIdentifier):
(Inspector::InspectorHeapAgent::getPreview):
(Inspector::InspectorHeapAgent::getRemoteObject):

  • inspector/agents/InspectorHeapAgent.h:
  • inspector/protocol/Heap.json:

New protocol methods that go from heap object identifier to a
remote object or some kind of preview.

  • inspector/scripts/codegen/generator.py:

Allow runtime casts for ObjectPreview.

LayoutTests:

  • inspector/heap/getPreview-expected.txt: Added.
  • inspector/heap/getPreview.html: Added.
  • inspector/heap/getRemoteObject-expected.txt: Added.
  • inspector/heap/getRemoteObject.html: Added.

Test the new protocol methods in different scenarios.

  • inspector/heap/snapshot-expected.txt:
  • inspector/heap/snapshot.html:

Fix typo.

9:28 PM Changeset in webkit [197925] by commit-queue@webkit.org
  • 11 edits in trunk

[INTL] Intl Constructors not web compatible with Object.create usage
​https://bugs.webkit.org/show_bug.cgi?id=153679

Patch by Andy VanWagoner <​thetalecrafter@gmail.com> on 2016-03-09
Reviewed by Darin Adler.

Source/JavaScriptCore:

Add workaround for initializing NumberFormat and DateTimeFormat objects
using Object.create followed by constructor.call. This is necessary for
backwards compatibility with libraries relying on v1 behavior of Intl
constructors.

Collator does not get the workaround, since polyfills do not include it,
and there are not any known instances of v2 incompatible libraries.

The workaround involves checking for an object that inherits from the
*Format constructor, but was not actually initialized with that type. A
substitute instance is created and attached to the object using a private
name. The prototype functions then check for the private property to use
in place of the original object.

Since this behavior is not part of the v2 spec, it should be removed as
soon as the incompatible behavior is no longer in common use.

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

(JSC::callIntlDateTimeFormat):

  • runtime/IntlDateTimeFormatPrototype.cpp:

(JSC::IntlDateTimeFormatPrototypeGetterFormat):
(JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):

  • runtime/IntlNumberFormatConstructor.cpp:

(JSC::callIntlNumberFormat):

  • runtime/IntlNumberFormatPrototype.cpp:

(JSC::IntlNumberFormatPrototypeGetterFormat):
(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):

LayoutTests:

Add tests for Object.create + contructor.call initialization of NumberFormat
and DateTimeFormat objects.

  • js/intl-datetimeformat-expected.txt:
  • js/intl-numberformat-expected.txt:
  • js/script-tests/intl-datetimeformat.js:
  • js/script-tests/intl-numberformat.js:
9:27 PM Changeset in webkit [197924] by rniwa@webkit.org
  • 5 edits
    2 adds in trunk/Source/WebCore

Extract EventPath.h/cpp out of EventDispatcher.cpp
​https://bugs.webkit.org/show_bug.cgi?id=155285

Reviewed by Chris Dumez.

Extracted EventPath.h/cpp out of EventDispatcher.cpp to add the support for Event.deepPath()
in webkit.org/b/153538. The new file defines member functions of EventPath and RelatedNodeRetargeter.

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

(WebCore::EventDispatcher::dispatchScopedEvent):
(WebCore::EventDispatcher::dispatchEvent):
(WebCore::EventPath): Moved to EventPath.cpp.
(WebCore::eventTargetRespectingTargetRules): Moved to EventPath.h.
(WebCore::shouldEventCrossShadowBoundary): Moved to EventPath.cpp.
(WebCore::nodeOrHostIfPseudoElement): Ditto.
(WebCore::RelatedNodeRetargeter): Moved to EventPath.cpp.

  • dom/EventPath.cpp: Added.

(WebCore::shouldEventCrossShadowBoundary): Moved from EventDispatcher.cpp.
(WebCore::nodeOrHostIfPseudoElement): Ditto.
(WebCore::EventPath::EventPath): Ditto.
(WebCore::RelatedNodeRetargeter): Ditto.

  • dom/EventPath.h: Added.

(WebCore::EventPath::isEmpty):
(WebCore::EventPath::size):
(WebCore::EventPath::contextAt):
(WebCore::EventPath::lastContextIfExists):
(WebCore::EventPath::eventTargetRespectingTargetRules): Moved from EventDispatcher.cpp.

9:26 PM Changeset in webkit [197923] by Simon Fraser
  • 22 edits in trunk/Source

Font antialiasing (smoothing) changes when elements are rendered into compositing layers
​https://bugs.webkit.org/show_bug.cgi?id=23364
rdar://problem/7288429

Reviewed by Tim Horton.
Source/WebCore:

Improve the appearance of subpixel-antialiased ("smoothed") text in non-opaque layers
by opting in to a new CALayer backing store format.

GraphicsLayer now has setSupportsSmoothedFonts(), which is called by RenderLayerBacking
when the platform has support for the new feature. Ideally this would only be set when
we know a layer has smoothed text drawn into it, but, for now, enable this for all
layers. The right thing happens with opaque layers under the hood.

setSupportsSmoothedFonts() is turned into a PlatformCALayer contentsFormat flag, which
is ultimately passed to setBackingStoreFormat().

We also need to propagate this flag to TileController tiles.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::supportsSmoothedFontsInNonOpaqueLayers):
(WebCore::GraphicsLayer::GraphicsLayer):

  • platform/graphics/GraphicsLayer.h:

(WebCore::GraphicsLayer::supportsSmoothedFonts):
(WebCore::GraphicsLayer::setSupportsSmoothedFonts):

  • platform/graphics/TiledBacking.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayer::supportsSmoothedFontsInNonOpaqueLayers):
(WebCore::GraphicsLayerCA::setSupportsSmoothedFonts):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::updateContentsFormat):

  • platform/graphics/ca/GraphicsLayerCA.h:
  • platform/graphics/ca/PlatformCALayer.cpp:

(WebCore::PlatformCALayer::drawRepaintIndicator): Give the number a "shadow" when
the contents format says we support smoothed fonts.

  • platform/graphics/ca/PlatformCALayer.h:
  • platform/graphics/ca/TileController.cpp:

(WebCore::TileController::setTileContentsFormatFlags):
(WebCore::TileController::createTileLayer):

  • platform/graphics/ca/TileController.h:
  • platform/graphics/ca/TileGrid.cpp:

(WebCore::TileGrid::updateTileLayerProperties):

  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.h:
  • platform/graphics/ca/cocoa/PlatformCALayerCocoa.mm:

(WebCore::setBackingStoreFormat):
(PlatformCALayerCocoa::commonInit):
(PlatformCALayerCocoa::setContentsFormat):
(PlatformCALayer::drawLayerContents): Previously, we turned off font smoothing in
non-opaque layers to improve text appearance. We no longer need to do that when
the contents format has "SmoothedFonts".

  • platform/ios/LegacyTileGridTile.mm:

(WebCore::setBackingStoreFormat):
(WebCore::LegacyTileGridTile::LegacyTileGridTile):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::createGraphicsLayer):

Source/WebKit2:

Send the ContentsFormat to the UI process (but nothing happens to it there yet).

  • Shared/mac/RemoteLayerTreeTransaction.h:
  • Shared/mac/RemoteLayerTreeTransaction.mm:

(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:

(WebKit::PlatformCALayerRemote::setContentsFormat):
(WebKit::PlatformCALayerRemote::contentsFormat):

  • WebProcess/WebPage/mac/PlatformCALayerRemote.h:
9:17 PM Changeset in webkit [197922] by barraclough@apple.com
  • 3 edits in trunk/Source/WebCore

WebKit should adopt journal_mode=wal for all SQLite databases.
​https://bugs.webkit.org/show_bug.cgi?id=133496

Reviewed by Brady Eidson & Darin Adler.

The statement intended to enable WAL mode is always failing because it is missing a
prepare(). Fix this. We were also previously permitting SQLITE_OK results - this
was in error (we were only getting these because stepping the unprepared statement
returned SQLITE_OK). Also set the SQLITE_OPEN_AUTOPROXY flag when opening the
database - this will improve perfomance when the database is accessed via an AFP
mount.

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::open):

  • call prepareAndStep(), only check for SQLITE_ROW result.
  • platform/sql/SQLiteFileSystem.cpp:

(WebCore::SQLiteFileSystem::openDatabase):

  • should set SQLITE_OPEN_AUTOPROXY flag when opening database.
8:43 PM Changeset in webkit [197921] by rniwa@webkit.org
  • 25 edits in trunk

Add runtime flags for shadow DOM and custom elements
​https://bugs.webkit.org/show_bug.cgi?id=155213

Reviewed by Dean Jackson.

Source/WebCore:

Added new runtime flags for shadow DOM and custom elements.

  • bindings/generic/RuntimeEnabledFeatures.h:

(WebCore::RuntimeEnabledFeatures::setShadowDOMEnabled): Added.
(WebCore::RuntimeEnabledFeatures::shadowDOMEnabled): Added.
(WebCore::RuntimeEnabledFeatures::setCustomElementsEnabled): Added.
(WebCore::RuntimeEnabledFeatures::customElementsEnabled): Added.

  • dom/Document.idl:
  • dom/Element.idl:
  • dom/Node.idl:
  • dom/NonDocumentTypeChildNode.idl:
  • dom/ShadowRoot.idl:
  • html/HTMLSlotElement.idl:

Source/WebKit/mac:

Set the runtime flag based on preferences. Enable shadow DOM and disable custom elements by default.

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

(+[WebPreferences initialize]):
(-[WebPreferences shadowDOMEnabled]):
(-[WebPreferences setShadowDOMEnabled:]):
(-[WebPreferences customElementsEnabled]):
(-[WebPreferences setCustomElementsEnabled:]):

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

Set the runtime flag based on preferences. Enable shadow DOM and disable custom elements by default.

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

(WKPreferencesSetShadowDOMEnabled):
(WKPreferencesGetShadowDOMEnabled):
(WKPreferencesSetCustomElementsEnabled):
(WKPreferencesGetCustomElementsEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

Removed the manual overrides of ENABLE_SHADOW_DOM and ENABLE_CUSTOM_ELEMENTS as they were
making --no-shadow-dom and --no-custom-elements flags on build-webkit useless.

  • wtf/FeatureDefines.h:

Tools:

Always enable shadow DOM and custom elements during testing.

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setShadowDOMEnabled): Added.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
8:06 PM Changeset in webkit [197920] by Brent Fulgham
  • 5 edits in trunk

Handling 'allowUniversalAccessFromFileURLs' on WKWebViewConfiguration causes test breakage
​https://bugs.webkit.org/show_bug.cgi?id=155265
<rdar://problem/11101440>

Reviewed by Andy Estes.

Source/WebKit2:

We require "AllowUniversalAccessFromFileURLs" to permit file URLs from accessing
localStorage. However, this setting is not available on the Cocoa WKPreference (by design).
Instead, you need to set this value on the WKWebViewConfiguration.

Back out the work-around landed in r197889,

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Remove test workaround.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformCreateInspectorPage): Set the correct flag on
the WKWebViewConfiguration.

Tools:

WK2 localStorage tests need the 'AllowUniversalAccessFromFileURLs' preference set by default.
Tests that confirm blocking localStorage manually set the flag to "False" in the test.

  • WebKitTestRunner/cocoa/TestControllerCocoa.mm:

(WTR::initializeWebViewConfiguration): Set the default state to the correct value.

7:16 PM Changeset in webkit [197919] by Matt Baker
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: LayoutTimelineView path components should reflect grid row nesting
​https://bugs.webkit.org/show_bug.cgi?id=155279
<rdar://problem/25075355>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView.prototype.get selectionPathComponents):
Walk grid nodes to build path component array.

6:41 PM Changeset in webkit [197918] by sbarati@apple.com
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

Add proper JSON.stringify support for Proxy when the target is an array
​https://bugs.webkit.org/show_bug.cgi?id=155180

Reviewed by Darin Adler.

This patch makes the following type of program true:
JSON.stringify(new Proxy([25], {})) === "[25]"

We need to change the JSON stringifier to use the IsArray test
in section 7.2.2 of ES6 spec instead of the JSC inherits(JSArray::info())
test.

This patch also adds tests for general JSON.stringify support
of Proxy.

  • runtime/ArrayConstructor.cpp:

(JSC::arrayConstructorIsArray):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayConstructor.h:

(JSC::isArray):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Holder::object):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::startNewLine):
(JSC::Stringifier::Holder::Holder):

  • tests/es6.yaml:
  • tests/stress/proxy-json.js: Added.

(assert):
(test):

6:33 PM Changeset in webkit [197917] by rniwa@webkit.org
  • 12 edits
    2 adds in trunk

defineElement should upgrade existing unresolved custom elements
​https://bugs.webkit.org/show_bug.cgi?id=155107

Reviewed by Darin Adler.

Source/WebCore:

Added the support for upgrading existing unresolved custom elements when defineElement is called.

The current implementation upgrades elements in the order they were created and has the issue that
it keeps accumulating all elements with a hyphen in its name until defineElement is called as
documented in ​https://github.com/w3c/webcomponents/issues/419

This patch re-purposes IsEditingTextFlag to indicate that the node is an unresolved custom element.
Since isEditingText() is only called in textRendererIsNeeded only on Text nodes, it's mutually
exclusive with isUnresolvedCustomElement().

The list of unresolved custom elements is kept in m_upgradeCandidatesMap, a hash map of element names
to the list of unresolved elements with that name.

In addition, added the logic to use HTMLElement as the interface for unresolved custom element instead
of HTMLUnknownElement.

Test: fast/custom-elements/upgrading/upgrading-parser-created-element.html

  • bindings/js/JSCustomElementInterface.cpp:

(WebCore::JSCustomElementInterface::upgradeElement): Clear the flag.

  • bindings/js/JSDocumentCustom.cpp:

(WebCore::JSDocument::defineElement): Set the unique private name to keep the interface alive before
calling addElementDefinition as the call can now invoke author scripts.

  • dom/CustomElementDefinitions.cpp:

(WebCore::CustomElementDefinitions::addElementDefinition): Upgrade existing unresolved elements kept
in m_upgradeCandidatesMap.
(WebCore::CustomElementDefinitions::addUpgradeCandidate): Added.

  • dom/CustomElementDefinitions.h:
  • dom/Document.cpp:

(WebCore::createHTMLElementWithNameValidation): Added the code to add the unresolved custom elements
to the upgrade candidates map. Also instantiate it as HTMLElement instead of HTMLUnknownElement.
(WebCore::createFallbackHTMLElement): Ditto.

  • dom/Node.h:

(WebCore::Node::setIsCustomElement):
(WebCore::Node::isUnresolvedCustomElement): Added.
(WebCore::Node::setIsUnresolvedCustomElement): Added.
(WebCore::Node::setCustomElementIsResolved): Added. Clears IsEditingTextOrUnresolvedCustomElementFlag
and sets IsCustomElement.
(WebCore::Node::isEditingText): Check both IsEditingTextOrUnresolvedCustomElementFlag and IsTextFlag
for safety even though it's currently only used in textRendererIsNeeded which takes Text&.

  • dom/make_names.pl:

(defaultParametersHash): Added customElementInterfaceName as a parameter.
(printWrapperFactoryCppFile): Generate the code to use customElementInterfaceName when the element
for which the wrapper is created has isUnresolvedCustomElement flag set.

  • html/HTMLTagNames.in: Use HTMLElement for unresolved custom elements.
  • html/parser/HTMLConstructionSite.cpp:

(WebCore::HTMLConstructionSite::createHTMLElementOrFindCustomElementInterface): Added the code to add
the unresolved custom elements to the upgrade candidates map. Also instantiate it as HTMLElement instead
of HTMLUnknownElement.

LayoutTests:

Added W3C style testharness.js tests for asynchronously defining custom elements.

  • fast/custom-elements/upgrading/Node-cloneNode.html:
  • fast/custom-elements/upgrading/upgrading-parser-created-element-expected.txt: Added.
  • fast/custom-elements/upgrading/upgrading-parser-created-element.html: Added.
6:05 PM Changeset in webkit [197916] by enrica@apple.com
  • 12 edits in trunk/Source

Retrieve additional context for some data detector link for preview and action menu.
​https://bugs.webkit.org/show_bug.cgi?id=155278
rdar://problem/24884951

Reviewed by Tim Horton.

Source/WebCore:

Adding helper function to compute a range by moving by a number of characters
from a given position and direction.
Adding function to check if the given data detector link element requires
an extended context.

  • editing/VisibleUnits.cpp:

(WebCore::rangeExpandedByCharactersInDirectionAtWordBoundary):

  • editing/VisibleUnits.h:
  • editing/cocoa/DataDetection.h:
  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::requiresExtendedContext):

Source/WebKit2:

Data detector results for items like calendar events, can be augmented
retrieving the text surrounding the link.

  • Platform/spi/ios/DataDetectorsUISPI.h:
  • Shared/ios/InteractionInformationAtPosition.h:
  • Shared/ios/InteractionInformationAtPosition.mm:

(WebKit::InteractionInformationAtPosition::encode):
(WebKit::InteractionInformationAtPosition::decode):

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showDataDetectorsSheet]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _dataForPreviewItemController:atPosition:type:]):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::getPositionInformation):

6:04 PM Changeset in webkit [197915] by sbarati@apple.com
  • 16 edits
    1 add in trunk

ES6: Implement lexical scoping for function definitions in strict mode
​https://bugs.webkit.org/show_bug.cgi?id=152844

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch implements block scoping for function definitions
in strict mode. The implementation works as follows:

  • If we're in sloppy mode, function declarations work exactly as they did before this patch. I.e, function declarations are hoisted and declared like "var" variables.


  • If you're in strict mode and at the top of a function scope or program scope, function declarations still work like they used to. They are defined like "var" variables. This is necessary for backwards compatibility because ES5 strict mode allowed duplicate function declarations at the top-most scope of a program/function.


  • If you're in strict mode and inside a block statement or a switch statement, function declarations are now block scoped. All function declarations within a block are hoisted to the beginning of the block. They are not hoisted out of the block like they are in sloppy mode. This allows for the following types of programs: ` function foo() {

function bar() { return 20; }
{

function bar() { return 30; }
bar(); 30

}
bar(); 20

}
`

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::instantiateLexicalVariables):
(JSC::BytecodeGenerator::emitPrefillStackTDZVariables):
(JSC::BytecodeGenerator::pushLexicalScope):
(JSC::BytecodeGenerator::pushLexicalScopeInternal):
(JSC::BytecodeGenerator::initializeBlockScopedFunctions):
(JSC::BytecodeGenerator::popLexicalScope):
(JSC::BytecodeGenerator::liftTDZCheckIfPossible):
(JSC::BytecodeGenerator::pushTDZVariables):
(JSC::BytecodeGenerator::getVariablesUnderTDZ):
(JSC::BytecodeGenerator::emitNewRegExp):
(JSC::BytecodeGenerator::emitNewFunctionExpressionCommon):
(JSC::BytecodeGenerator::emitNewFunctionExpression):
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):

  • bytecompiler/BytecodeGenerator.h:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createSourceElements):
(JSC::ASTBuilder::features):
(JSC::ASTBuilder::numConstants):
(JSC::ASTBuilder::createFuncDeclStatement):
(JSC::ASTBuilder::createClassDeclStatement):
(JSC::ASTBuilder::createBlockStatement):
(JSC::ASTBuilder::createTryStatement):
(JSC::ASTBuilder::createSwitchStatement):
(JSC::ASTBuilder::Scope::Scope):
(JSC::ASTBuilder::funcDeclarations): Deleted.

  • parser/NodeConstructors.h:

(JSC::CaseBlockNode::CaseBlockNode):
(JSC::SwitchNode::SwitchNode):
(JSC::BlockNode::BlockNode):

  • parser/Nodes.cpp:

(JSC::ScopeNode::ScopeNode):
(JSC::ScopeNode::singleStatement):
(JSC::ProgramNode::ProgramNode):
(JSC::ModuleProgramNode::ModuleProgramNode):
(JSC::EvalNode::EvalNode):
(JSC::FunctionNode::FunctionNode):
(JSC::VariableEnvironmentNode::VariableEnvironmentNode):

  • parser/Nodes.h:

(JSC::VariableEnvironmentNode::VariableEnvironmentNode):
(JSC::VariableEnvironmentNode::lexicalVariables):
(JSC::VariableEnvironmentNode::functionStack):
(JSC::ScopeNode::captures):
(JSC::ScopeNode::varDeclarations):
(JSC::ScopeNode::neededConstants):
(JSC::ProgramNode::startColumn):
(JSC::ProgramNode::endColumn):
(JSC::EvalNode::startColumn):
(JSC::EvalNode::endColumn):
(JSC::ModuleProgramNode::startColumn):
(JSC::ModuleProgramNode::endColumn):
(JSC::ScopeNode::functionStack): Deleted.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::didFinishParsing):
(JSC::Parser<LexerType>::parseStatementListItem):
(JSC::Parser<LexerType>::parseSwitchStatement):
(JSC::Parser<LexerType>::parseBlockStatement):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::getMetadata):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseExportDeclaration):

  • parser/Parser.h:

(JSC::Scope::declareVariable):
(JSC::Scope::declareFunction):
(JSC::Scope::appendFunction):
(JSC::Scope::takeFunctionDeclarations):
(JSC::Scope::declareLexicalVariable):
(JSC::Parser::currentVariableScope):
(JSC::Parser::currentLexicalDeclarationScope):
(JSC::Parser::currentFunctionScope):
(JSC::Parser::pushScope):
(JSC::Parser::popScopeInternal):
(JSC::Parser::declareVariable):
(JSC::Parser::declareFunction):
(JSC::Parser::hasDeclaredVariable):
(JSC::Parser::isFunctionMetadataNode):
(JSC::Parser<LexerType>::parse):

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFuncDeclStatement):
(JSC::SyntaxChecker::createClassDeclStatement):
(JSC::SyntaxChecker::createBlockStatement):
(JSC::SyntaxChecker::createExprStatement):
(JSC::SyntaxChecker::createIfStatement):
(JSC::SyntaxChecker::createContinueStatement):
(JSC::SyntaxChecker::createTryStatement):
(JSC::SyntaxChecker::createSwitchStatement):
(JSC::SyntaxChecker::createWhileStatement):
(JSC::SyntaxChecker::createWithStatement):
(JSC::SyntaxChecker::createDoWhileStatement):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironmentEntry::isExported):
(JSC::VariableEnvironmentEntry::isImported):
(JSC::VariableEnvironmentEntry::isImportedNamespace):
(JSC::VariableEnvironmentEntry::isFunction):
(JSC::VariableEnvironmentEntry::setIsCaptured):
(JSC::VariableEnvironmentEntry::setIsConst):
(JSC::VariableEnvironmentEntry::setIsExported):
(JSC::VariableEnvironmentEntry::setIsImported):
(JSC::VariableEnvironmentEntry::setIsImportedNamespace):
(JSC::VariableEnvironmentEntry::setIsFunction):
(JSC::VariableEnvironmentEntry::clearIsVar):
(JSC::VariableEnvironment::VariableEnvironment):
(JSC::VariableEnvironment::begin):
(JSC::VariableEnvironment::end):

  • tests/es6.yaml:
  • tests/stress/block-scoped-function-declarations.js: Added.

(assert):
(test):
(f.foo.bar):
(f.foo.):
(f.foo):
(f):
(assert.foo.):
(assert.foo):
(assert.foo.foo):
(assert.foo.bar):
(assert.foo.switch.case.1):
(assert.foo.switch.case.2):
(assert.foo.switch.foo):
(assert.foo.switch.bar):

LayoutTests:

  • js/let-syntax-expected.txt:
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:

(testFailed):
(runTest):

5:55 PM Changeset in webkit [197914] by barraclough@apple.com
  • 3 edits in trunk/Source/WebKit2

Last opened tab does not receive SetHiddenPageTimerThrottlingIncreaseLimit message
​https://bugs.webkit.org/show_bug.cgi?id=155126

Reviewed by Anders Carlson.

WebPageProxy will increment the hidden page throttling counter from within its constructor,
which currently causes the WebProcessPool to try to synchronously message all processes.
The web page triggering the increment then fails to receive the message, since it was
still being constructed. Make the update of the limit async, such that the page is fully
constructed before the WebProcessPool processes the update.

  • UIProcess/WebProcessPool.cpp:

(WebKit::m_hiddenPageThrottlingAutoIncreasesCounter):

  • This now schedules a zero-delay timer to handle the update.

(WebKit::m_hiddenPageThrottlingTimer):

  • This is now responsible for calling updateHiddenPageThrottlingAutoIncreaseLimit.
  • UIProcess/WebProcessPool.h:
    • Added m_hiddenPageThrottlingTimer.
5:54 PM Changeset in webkit [197913] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

5:53 PM Changeset in webkit [197912] by ddkilzer@apple.com
  • 3 edits in trunk/Tools

check-webkit-style: fix false-positive warnings about @try/@catch blocks in Objective-C++ source files
<​http://webkit.org/b/155273>

Reviewed by Andy Estes.

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

(check_spacing_for_function_call): Ignore @catch lines.
(check_braces): Ditto.

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

(CppStyleTest.test_brace_at_begin_of_line): Add test case.

5:46 PM Changeset in webkit [197911] by dbates@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix the Windows build after <​https://trac.webkit.org/changeset/197905>
(​https://bugs.webkit.org/show_bug.cgi?id=155247)

We need to call the std::unique_ptr<CryptoDigest>() constructor directly
instead of using the convenience function std::make_unique<CryptoDigest>()
because std::make_unique<CryptoDigest>() cannot access the private constructor
CryptoDigest().

  • platform/crypto/win/CryptoDigestWin.cpp:

(WebCore::CryptoDigest::create):

5:38 PM Changeset in webkit [197910] by jonlee@apple.com
  • 6 edits in trunk/PerformanceTests

Enhance existing Animometer tests
​https://bugs.webkit.org/show_bug.cgi?id=155261

Reviewed by Simon Fraser.

  • Animometer/tests/master/resources/canvas-tests.js: Add a gradient to

the filled circles. To expose more of the gradient, add another circle.
(SimpleCanvasStage.call.animate): For each frame, create a gradient with
undulating stop points and colors. Fill the circles twice; once with
the solid color, and once with the gradient.

  • Animometer/tests/master/resources/dom-particles.js: Refactor the

emission variables into a separate stage for this test. Add a colorOffset
variable to make the colors of each particle slightly different, since
the ramp controller can add large numbers of particles all at once, which
would otherwise get all the same color.

  • Animometer/tests/master/resources/particles.js:

(initialize): Remove the code specific to the SVG mask test.

  • Animometer/tests/master/resources/image-data.js:

(initialize): Remove unused local variable.

  • Animometer/tests/master/resources/multiply.js:

(initialize): Make the test harder by adding more total particles.

5:38 PM Changeset in webkit [197909] by Matt Baker
  • 14 edits
    1 move in trunk/Source/WebInspectorUI

Web Inspector: Timelines UI redesign: use DataGridNode for TimelineView selection path components
​https://bugs.webkit.org/show_bug.cgi?id=154954
<rdar://problem/24947939>

Reviewed by Timothy Hatcher.

This patch adds a new path component, TimelineDataGridNodePathComponent,
for creating a path component from the current grid selection. This is
needed since TimelineViews will no longer have an associated content tree
outline once the navigation sidebar is removed.

TimelineDataGridNode has new protected methods, "displayName" and
"iconClassNames", which are used to populate hierarchical path components,
create grid node data, and create cell content.

TimelineView subclasses share a certain amount of boilerplate code for
getting selection path components and handling path component selection.
In the future we may be able to reduce this code by introducing a new
DataGridTimelineView base class.

  • UserInterface/Main.html:

Added/removed files.

  • UserInterface/Views/LayoutTimelineDataGridNode.js:

(WebInspector.LayoutTimelineDataGridNode.prototype.get data):
(WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
(WebInspector.LayoutTimelineDataGridNode):
(WebInspector.LayoutTimelineDataGridNode.prototype.get record): Deleted.
Moved to base class.

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView.prototype.get selectionPathComponents):
(WebInspector.LayoutTimelineView.prototype.dataGridNodePathComponentSelected):
(WebInspector.LayoutTimelineView.prototype.treeElementPathComponentSelected): Deleted.
TimelineView tree outlines are going away.

  • UserInterface/Views/MemoryTimelineView.js:

(WebInspector.MemoryTimelineView.prototype.treeElementPathComponentSelected): Deleted.
TimelineView tree outlines are going away.

  • UserInterface/Views/NetworkTimelineView.js:

(WebInspector.NetworkTimelineView.prototype.get selectionPathComponents):
(WebInspector.NetworkTimelineView.prototype.dataGridNodePathComponentSelected):
(WebInspector.NetworkTimelineView.prototype.treeElementPathComponentSelected): Deleted.
TimelineView tree outlines are going away.

  • UserInterface/Views/ProfileNodeDataGridNode.js:

(WebInspector.ProfileNodeDataGridNode.prototype.get data):
(WebInspector.ProfileNodeDataGridNode.prototype.createCellContent):
(WebInspector.ProfileNodeDataGridNode.prototype.displayName):
(WebInspector.ProfileNodeDataGridNode.prototype.iconClassNames):
(WebInspector.ProfileNodeDataGridNode):
(WebInspector.ProfileNodeDataGridNode.prototype._iconClassNameForProfileNode): Deleted.
(WebInspector.ProfileNodeDataGridNode.prototype._titleForProfileNode): Deleted.
Re-implemented as overrides of the base class methods "iconClassNames"
and "displayName".

  • UserInterface/Views/RenderingFrameTimelineDataGridNode.js:

(WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
(WebInspector.RenderingFrameTimelineDataGridNode):
(WebInspector.RenderingFrameTimelineDataGridNode.prototype.get record): Deleted.
Moved to base class.

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ResourceTimelineDataGridNode.prototype.displayName):
(WebInspector.ResourceTimelineDataGridNode.prototype.iconClassNames):
Override base class methods, making it possible to remove ResourceTimelineDataGridNodePathComponent,
and treat all TimelineDataGridNodes in a uniform manner.

(WebInspector.ResourceTimelineDataGridNode.prototype._createNameCellDocumentFragment):
Replace duplicated code with call to "displayName".

  • UserInterface/Views/ResourceTimelineDataGridNodePathComponent.js: Removed.

Replaced by more generic solution, TimelineDataGridNodePathComponent.

  • UserInterface/Views/ScriptDetailsTimelineView.js:

(WebInspector.ScriptDetailsTimelineView.prototype.get selectionPathComponents):
(WebInspector.ScriptDetailsTimelineView.prototype.dataGridNodePathComponentSelected):
(WebInspector.ScriptDetailsTimelineView.prototype.treeElementPathComponentSelected): Deleted.
TimelineView tree outlines are going away.

  • UserInterface/Views/ScriptTimelineDataGridNode.js:

(WebInspector.ScriptTimelineDataGridNode.prototype.createCellContent):
(WebInspector.ScriptTimelineDataGridNode.prototype._createNameCellDocumentFragment):
Replace duplicated code with call to "displayName".

(WebInspector.ScriptTimelineDataGridNode):
(WebInspector.ScriptTimelineDataGridNode.prototype.get record): Deleted.
Moved to base class.

  • UserInterface/Views/SourceCodeTimelineTimelineDataGridNode.js:

(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype.createCellContent):
(WebInspector.SourceCodeTimelineTimelineDataGridNode.prototype._createNameCellContent):
Replace duplicated code with call to "displayName".

  • UserInterface/Views/TimelineDataGridNode.js:

(WebInspector.TimelineDataGridNode.prototype.get record):
Implemented in terms of the "records" getter, since all subclasses simply returned the
node's first (or only) record.

(WebInspector.TimelineDataGridNode.prototype.displayName):
(WebInspector.TimelineDataGridNode.prototype.iconClassNames):
Base class implementations, using utility methods in TimelineTabContentView
to get display data based on the node's timeline record. Can be overridden
by nodes that either don't have a timeline record (ProfileNodeDataGridNode)

  • UserInterface/Views/TimelineDataGridNodePathComponent.js:

(WebInspector.TimelineDataGridNodePathComponent):
(WebInspector.TimelineDataGridNodePathComponent.prototype.get timelineDataGridNode):
(WebInspector.TimelineDataGridNodePathComponent.prototype.get previousSibling):
(WebInspector.TimelineDataGridNodePathComponent.prototype.get nextSibling):

  • UserInterface/Views/TimelineView.js:

(WebInspector.TimelineView):
(WebInspector.TimelineView.prototype.get selectionPathComponents):
Must be implemented by subclasses since not all TimelineViews use a DataGrid.

5:37 PM Changeset in webkit [197908] by jonlee@apple.com
  • 4 edits
    3 adds
    1 delete in trunk/PerformanceTests

Add text tests
​https://bugs.webkit.org/show_bug.cgi?id=155257

Reviewed by Simon Fraser.

  • Animometer/resources/extensions.js:

(UnitBezier.Utilities.createClass): Add a class that computes Bezier points
assuming that two of the control points are at (0,0) and (1,1). Taken from
WebCore/platform/graphics/UnitBezier.h

  • Animometer/resources/runner/tests.js: Add a test for English text and one

for international text.

  • Animometer/tests/master/international.html: Added.
  • Animometer/tests/master/resources/text.js: Added. The test assumes there is

#template div which it will copy. The copies are placed behind the template, and
are set with different colors each frame. They are moved around with CSS transform.

  • Animometer/tests/master/text.html: Added.

Remove the other text tests, since these ones cover the same techniques.

  • Animometer/tests/text/layering-text.html: Removed.
  • Animometer/tests/text/resources/layering-text.js: Removed.
  • Animometer/tests/text/resources/text-boxes.js: Removed.
  • Animometer/tests/text/text-boxes.html: Removed.
  • Animometer/resources/debug-runner/tests.js:
5:35 PM Changeset in webkit [197907] by jonlee@apple.com
  • 5 edits
    15 adds in trunk/PerformanceTests

Add a new image test
​https://bugs.webkit.org/show_bug.cgi?id=155232

Reviewed by Dean Jackson.
Provisionally reviewed by Said Abou-Hallawa.

The image test renders PNGs and moves them with translate and rotate
transforms. Each particle has a lifetime, and when the lifetime ends or
the particle goes offscreen, it resets itself somewhere on the stage.

  • Animometer/resources/debug-runner/tests.js: Remove the CSS bouncing PNG

images test, because this one tests the same technique.

  • Animometer/resources/runner/tests.js: Added here as "Leaves".
  • Animometer/tests/master/leaves.html: Added.
  • Animometer/tests/master/resources/particles.js: Refactor out the parts

specific to the DOM particles test. Consequently make velocity a public
member.
(initialize): The options parameter is never used, so remove it.
(animate): Remove unused local variable.

  • Animometer/tests/master/resources/leaves.js: Maintains a focal point that

moves back and forth across the canvas. That point affects the velocity
of the particles. When the focal point is on the leftmost side, it is
between [-6, -2], and set in reset(). When the focal point is on the rightmost
side, it will be from [2, 6].

  • Animometer/tests/master/resources/dom-particles.js: Move JS specific to

this test here from particles.js.

New images.

  • Animometer/tests/master/resources/compass100.png: Added.
  • Animometer/tests/master/resources/console100.png: Added.
  • Animometer/tests/master/resources/contribute100.png: Added.
  • Animometer/tests/master/resources/debugger100.png: Added.
  • Animometer/tests/master/resources/inspector100.png: Added.
  • Animometer/tests/master/resources/layout100.png: Added.
  • Animometer/tests/master/resources/performance100.png: Added.
  • Animometer/tests/master/resources/script100.png: Added.
  • Animometer/tests/master/resources/shortcuts100.png: Added.
  • Animometer/tests/master/resources/standards100.png: Added.
  • Animometer/tests/master/resources/storage100.png: Added.
  • Animometer/tests/master/resources/styles100.png: Added.
  • Animometer/tests/master/resources/timeline100.png: Added.
5:10 PM Changeset in webkit [197906] by Matt Baker
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Nodes in Computed Styles > Container Regions formatted incorrectly.
​https://bugs.webkit.org/show_bug.cgi?id=155277
<rdar://problem/25072711>

Reviewed by Timothy Hatcher.

  • UserInterface/Views/DOMTreeDataGrid.js:

(WebInspector.DOMTreeDataGrid):
Enable icon column property.

  • UserInterface/Views/DOMTreeDataGridNode.js:

(WebInspector.DOMTreeDataGridNode):
Removed calls to unused methods.

(WebInspector.DOMTreeDataGridNode.prototype.createCellContent):
(WebInspector.DOMTreeDataGridNode.prototype._createNameCellDocumentFragment):
Simplified cell content creation.

(WebInspector.DOMTreeDataGridNode.prototype._updateNodeName): Deleted.
(WebInspector.DOMTreeDataGridNode.prototype._makeNameCell): Deleted.
Renamed _createNameCellDocumentFragment to be consistent with similar
methods in other data grid node classes.

(WebInspector.DOMTreeDataGridNode.prototype._updateNameCellData): Deleted.
No longer needed.

5:09 PM Changeset in webkit [197905] by dbates@webkit.org
  • 3 edits
    2 adds in trunk/Source/WebCore

[Win] Implement CryptoDigest
​https://bugs.webkit.org/show_bug.cgi?id=155247
<rdar://problem/25065843>

Reviewed by Brent Fulgham.

Implement the CryptoDigest abstraction for Windows so that we can compute cryptographically
secure hashes. This will allow us to support Content Security Policy inline script and inline
stylesheet hashes on Windows.

  • PlatformWin.cmake: Add file CryptoDigestWin.cpp.
  • PlatformWinCairo.cmake: Ditto.
  • platform/crypto/win/CryptoDigestWin.cpp: Added.

(WebCore::CryptoDigest::CryptoDigest): Instantiate a CryptoDigestContext object.
(WebCore::CryptoDigest::~CryptoDigest): Destroy the cryptographic service provider and hash
object if non-null.
(WebCore::CryptoDigest::create): Acquire a handle to a cryptographic service provider (HCRYPTPROV)
and a handle to a hash object (HCRYPTHASH).
(WebCore::CryptoDigest::addBytes): Add the contents of the specified buffer to the hash object.
(WebCore::CryptoDigest::computeHash): Compute and return a Vector of bytes that represent the digest.

5:02 PM Changeset in webkit [197904] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Build fix after r196870.

  • public/include/report-processor.php:
5:00 PM Changeset in webkit [197903] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Add Size metric to perf dashboard
​https://bugs.webkit.org/show_bug.cgi?id=155266

Reviewed by Chris Dumez.

Added the "Size" metric and use bytes as its unit.

  • public/js/helper-classes.js:

(PerfTestRuns):

  • public/v2/data.js:

(RunsData.unitFromMetricName):

4:56 PM Changeset in webkit [197902] by ddkilzer@apple.com
  • 10 edits in trunk/Source

REGRESSION (r197149): Missing availability checks when soft-linking DataDetectors.framework
<​http://webkit.org/b/155258>

Reviewed by Andy Estes.

Source/WebCore:

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::Highlight::setDDHighlight):
(WebCore::ServicesOverlayController::Highlight::paintContents):
(WebCore::ServicesOverlayController::mouseIsOverHighlight):

  • Add check that returns early if DataDetectors.framework is not available.
  • platform/spi/mac/DataDetectorsSPI.h:
  • Mark Objective-C classses as optional.

Source/WebKit/mac:

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _clearImmediateActionState]):
(-[WebImmediateActionController immediateActionRecognizerWillBeginAnimation:]):
(-[WebImmediateActionController _animationControllerForDataDetectedText]):
(-[WebImmediateActionController _animationControllerForDataDetectedLink]):

  • Add check that returns early if DataDetectors.framework is not available.

Source/WebKit2:

  • Platform/mac/MenuUtilities.mm:

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

  • Add check that returns early if DataDetectors.framework is not available.
  • Shared/mac/WebHitTestResultData.mm:

(WebKit::WebHitTestResultData::platformDecode):

  • Add Debug assertion. The soft-linked code should never be called if there was no actionContext passed in.
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::dismissContentRelativeChildWindowsFromViewOnly):

  • Protect calls to DDActionsManager with availability check.
  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController _clearImmediateActionState]):
(-[WKImmediateActionController immediateActionRecognizerWillBeginAnimation:]):

  • Protect calls to DDActionsManager with availability check.

(-[WKImmediateActionController _animationControllerForDataDetectedText]):
(-[WKImmediateActionController _animationControllerForDataDetectedLink]):

  • Add check that returns early if DataDetectors.framework is not available.
4:45 PM Changeset in webkit [197901] by commit-queue@webkit.org
  • 7 edits in trunk/Source

Add state dumping facility
​https://bugs.webkit.org/show_bug.cgi?id=154930
<rdar://problem/24939135>

Patch by Keith Rollin <Keith Rollin> on 2016-03-09
Reviewed by Anders Carlsson.

Source/WebKit2:

Collect the times at which pages are loaded. Dump them when an OS
state dump is triggered.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didCommitLoad):

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::lastPageLoadTime):

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

(WebKit::WebProcess::registerWithStateDumper):
(WebKit::WebProcess::platformInitializeProcess):

Source/WTF:

Add an OS_STATE flag to control the inclusion of process state dumping
functionality.

  • wtf/Platform.h:
4:40 PM Changeset in webkit [197900] by jmarcell@apple.com
  • 2 edits in trunk/Tools

Removing reference to Dashboard.Repository.Internal.trac from open source unit tests.
​https://bugs.webkit.org/show_bug.cgi?id=155274

Reviewed by Alexey Proskuryakov.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/tests/tests.js:

(setup): Deleted. In bug 154180 we removed Dashboard.Repository.Internal which was causing an
error in the unit tests.

4:36 PM Changeset in webkit [197899] by sbarati@apple.com
  • 6 edits
    1 add in trunk/Source/JavaScriptCore

Array.isArray support for Proxy
​https://bugs.webkit.org/show_bug.cgi?id=155179

Reviewed by Mark Lam.

This patch implements Array.isArray to be compliant
with the ES6 spec. Specifically, it needs to interface
properly with Proxy arguments.
​https://tc39.github.io/ecma262/#sec-isarray

  • runtime/ArrayConstructor.cpp:

(JSC::ArrayConstructor::getCallData):
(JSC::arrayConstructorIsArray):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):

  • runtime/ArrayPrototype.cpp:

(JSC::speciesConstructArray):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::revoke):
(JSC::ProxyObject::isRevoked):
(JSC::ProxyObject::visitChildren):

  • runtime/ProxyObject.h:

(JSC::ProxyObject::target):
(JSC::ProxyObject::handler):

  • tests/es6.yaml:
  • tests/stress/proxy-is-array.js: Added.

(assert):
(test):

4:22 PM Changeset in webkit [197898] by jer.noble@apple.com
  • 7 edits
    14 adds in trunk

Add heuristic for "main content" videos which override user gesture requirements
​https://bugs.webkit.org/show_bug.cgi?id=155224

Reviewed by Eric Carlson.

Source/WebCore:

Tests: media/video-main-content-allow-then-deny.html

media/video-main-content-allow.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

Add a new behavior "restriction" to MediaElementSession that allows media elements
to optionally overriding their own user gesture requirements if the session determines
that the media element is the page's "main content".

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::didAttachRenderers):
(WebCore::HTMLMediaElement::updateShouldPlay):

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

(WebCore::restrictionName):
(WebCore::MediaElementSession::MediaElementSession):
(WebCore::MediaElementSession::addBehaviorRestriction):
(WebCore::MediaElementSession::playbackPermitted):
(WebCore::MediaElementSession::dataLoadingPermitted):
(WebCore::isMainContent):
(WebCore::MediaElementSession::mainContentCheckTimerFired):
(WebCore::MediaElementSession::updateIsMainContent):

  • html/MediaElementSession.h:
  • testing/Internals.cpp:

(WebCore::Internals::setMediaElementRestrictions):

LayoutTests:

  • media/video-main-content-allow-expected.txt: Added.
  • media/video-main-content-allow-then-deny-expected.txt: Added.
  • media/video-main-content-allow-then-deny.html: Added.
  • media/video-main-content-allow.html: Added.
  • media/video-main-content-deny-display-none-expected.txt: Added.
  • media/video-main-content-deny-display-none.html: Added.
  • media/video-main-content-deny-not-in-dom-expected.txt: Added.
  • media/video-main-content-deny-not-in-dom.html: Added.
  • media/video-main-content-deny-not-visible-expected.txt: Added.
  • media/video-main-content-deny-not-visible.html: Added.
  • media/video-main-content-deny-obscured-expected.txt: Added.
  • media/video-main-content-deny-obscured.html: Added.
  • media/video-main-content-deny-too-small-expected.txt: Added.
  • media/video-main-content-deny-too-small.html: Added.
4:14 PM Changeset in webkit [197897] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Added missing #if(SOUP) after r197591.
​https://bugs.webkit.org/show_bug.cgi?id=155259

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-09
Reviewed by Alex Christensen.

No new tests needed.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
4:03 PM Changeset in webkit [197896] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

_WKWebsiteDataSize.h should be an SPI header.

Rubber-stamped by Tim Horton.

  • WebKit2.xcodeproj/project.pbxproj:
3:57 PM Changeset in webkit [197895] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Fix the ARM64 MacroAssembler after r197816
​https://bugs.webkit.org/show_bug.cgi?id=155268

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-09
Reviewed by Mark Lam.

The patch tries to generate instructions that do not exist,
causing quite fun stuff at runtime.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::store16):
(JSC::MacroAssemblerARM64::store8):

3:47 PM Changeset in webkit [197894] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping js/regress/getter-richards-try-catch.html on ios-simulator debug
​https://bugs.webkit.org/show_bug.cgi?id=155271

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
3:36 PM Changeset in webkit [197893] by adachan@apple.com
  • 3 edits in trunk/Source/WebCore

Add a getter for WebVideoFullscreenInterfaceObjC and update its rate property
​https://bugs.webkit.org/show_bug.cgi?id=155239

Reviewed by Eric Carlson.

  • platform/mac/WebVideoFullscreenInterfaceMac.h:

Move the stub implementation of setVideoDimensions() to the mm file.
Declare a getter to WebVideoFullscreenInterfaceMacObjC.

  • platform/mac/WebVideoFullscreenInterfaceMac.mm:

(WebCore::WebVideoFullscreenInterfaceMac::setRate):
Also update the rate property of WebVideoFullscreenInterfaceMacObjC.
(WebCore::WebVideoFullscreenInterfaceMac::setVideoDimensions):
Stub implementation of setVideoDimensions() has been moved to here.

3:33 PM Changeset in webkit [197892] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Fix Mac build without video enabled after r197633.

  • bindings/objc/DOM.mm:
3:07 PM Changeset in webkit [197891] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

use ulimit command to check process limit in webkitpy
​https://bugs.webkit.org/show_bug.cgi?id=155260

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort.default_child_processes): Use ulimit command output instead of
launchctl limit maxproc command.

3:02 PM Changeset in webkit [197890] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip two flaky tests on mac-wk1
​https://bugs.webkit.org/show_bug.cgi?id=155196

Unreviewed test gardening.

media/video-with-blob-url-allowed-by-csp-media-src-star.html and media/video-with-data-url-allowed-by-csp-media-src-star.html
are flaky on mac-wk1. Skipping to get bots to green during investigation.

  • platform/mac-wk1/TestExpectations:
3:00 PM Changeset in webkit [197889] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Handling 'allowUniversalAccessFromFileURLs' on WKWebViewConfiguration causes test breakage
​https://bugs.webkit.org/show_bug.cgi?id=155265

Unreviewed work-around to allow testing to continue.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration init]): Workaround build break.

2:34 PM Changeset in webkit [197888] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r197873.
​https://bugs.webkit.org/show_bug.cgi?id=155262

"Crashes some JSC tests" (Requested by mlam on #webkit).

Reverted changeset:

"Add dumping of function expression names in CodeBlock
bytecode dump."
​https://bugs.webkit.org/show_bug.cgi?id=155248
​http://trac.webkit.org/changeset/197873

2:29 PM Changeset in webkit [197887] by rniwa@webkit.org
  • 16 edits
    1 copy
    2 moves
    1 add in trunk

Rename Node.treeRoot to rootNode and turn it on by default
​https://bugs.webkit.org/show_bug.cgi?id=155226

Reviewed by Antonio Gomes.
Source/WebCore:

Node.prototype.treeRoot has been merged into DOM spec from Shadow DOM spec and renamed to rootNode:
​https://dom.spec.whatwg.org/#dom-node-rootnode

Rename the method and expose it unconditionally on Node.prototype.

Tests: fast/dom/Node/rootNode.html

fast/shadow-dom/Node-interface-rootNode.html

  • dom/ContainerNode.h:

(WebCore::Node::highestAncestor): Deleted. There is no need for this function to be inlined.

  • dom/Document.h: Now that both TreeScope and Node defines rootNode, we need to pick either.

Here, we pick TreeScope's definition since Document is by definition always in a document so there is
no need to even check inTreeScope().

  • dom/Node.cpp:

(WebCore::Node::rootNode): Moved here. Also added a fast path for when "this" node is in a document
or a shadow root since TreeScope stores its root node as a member variable (m_rootNode).

  • dom/Node.h:
  • dom/Node.idl: Renamed the method and removed Conditional=SHADOW_DOM.
  • dom/ShadowRoot.h: Similar to the change in Document.h. See above.
  • editing/Editor.cpp:

(WebCore::correctSpellcheckingPreservingTextCheckingParagraph): Use rootNode instead of free function
defined in htmlediting.cpp, which was removed in this patch.

  • editing/htmlediting.cpp:

(WebCore::highestAncestor): Deleted.

  • editing/htmlediting.h:
  • html/FormAssociatedElement.cpp:

(WebCore::computeRootNode): Added.
(WebCore::FormAssociatedElement::removedFrom): We can't use Node::rootNode here because this function
is called in the middle of removing a subtree, and some associated form element's inDocument flag may
not have been updated yet. So use computeRootNode to manually find the highest ancestor.
(WebCore::FormAssociatedElement::formRemovedFromTree): Ditto.

  • xml/XPathPath.cpp:

(WebCore::XPath::LocationPath::evaluate):

LayoutTests:


Split Node-interface-treeRoot.html into two pieces, the one that doesn't invoke shadow DOM and the other that tests
shadow DOM related cases. I intend to upstream these tests to W3C at some point so keep them in testharness.js form.

  • fast/dom/Node/rootNode-expected.txt: Added.
  • fast/dom/Node/rootNode.html: Copied from LayoutTests/fast/shadow-dom/Node-interface-treeRoot.html.
  • fast/shadow-dom/Node-interface-rootNode-expected.txt: Renamed from Node-interface-treeRoot-expected.txt.
  • fast/shadow-dom/Node-interface-rootNode.html: Renamed from LayoutTests/fast/shadow-dom/Node-interface-treeRoot.html.
  • js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/efl/js/dom/dom-static-property-for-in-iteration-expected.txt:
  • platform/gtk/js/dom/dom-static-property-for-in-iteration-expected.txt:
1:50 PM Changeset in webkit [197886] by commit-queue@webkit.org
  • 4 edits in trunk

[cmake] Fixed All-in-One build.
​https://bugs.webkit.org/show_bug.cgi?id=155241

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-03-09
Reviewed by Csaba Osztrogonác.

.:

  • Source/cmake/WebKitMacros.cmake: Last item of WebCore_SOURCES was

not removed in PROCESS_ALLINONE_FILE.

Source/WebCore:

No new tests needed.

  • bindings/js/JSBindingsAllInOne.cpp: Should not include generated

file.

1:49 PM Changeset in webkit [197885] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix use-after-free when cancelling synchronous XHR when using NetworkSession
​https://bugs.webkit.org/show_bug.cgi?id=155253

Reviewed by Brady Eidson.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::continueWillSendRequest):
Store the completion handler on the stack before calling didFail, which deletes the
NetworkLoad, so we don't access m_redirectCompletionHandler after deleting the NetworkLoad.

1:48 PM Changeset in webkit [197884] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

Unreviewed, rebaseline bindings tests after r197874.

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

(WebCore::JSattribute::getOwnPropertySlot):

  • bindings/scripts/test/JS/JSattribute.h:
1:44 PM Changeset in webkit [197883] by ap@apple.com
  • 5 edits in trunk/Tools

Stop building armv7 on iOS device builders
​https://bugs.webkit.org/show_bug.cgi?id=155246

Reviewed by David Kilzer.

  • BuildSlaveSupport/build.webkit.org-config/config.json: Building both armv7 and

armv7s makes the bots unnecessarily slow. We can catch super rare v7-only regressions
elsewhere.

  • Scripts/webkitpy/common/config/ews.json: Changed EWS to match, as we always want

EWS configuration to be verified by buildbot queues.

  • Scripts/webkitdirs.pm:
  • Scripts/webkitpy/port/ios.py:

Changed default to arm64. I think that the default is probably not used in any
practical scenarios, but it's nice to make it more sensible.

1:31 PM Changeset in webkit [197882] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Unreviewed, rolling out r197698.
​https://bugs.webkit.org/show_bug.cgi?id=155252

Caused assertions, and wasn't reviewed by a WK2 owner
(Requested by andersca on #webkit).

Reverted changeset:

"Last opened tab does not receive
SetHiddenPageTimerThrottlingIncreaseLimit message"
​https://bugs.webkit.org/show_bug.cgi?id=155126
​http://trac.webkit.org/changeset/197698

1:30 PM Changeset in webkit [197881] by Conrad Shultz
  • 2 edits in trunk/Source/WebKit2

WebsiteDataStore::Configuration::legacyWebsiteDataStoreConfiguration() should respect the passed-in configuration
​https://bugs.webkit.org/show_bug.cgi?id=155250

Reviewed by Anders Carlsson.

Note that the legacy directories are already set by default in ProcessPoolConfiguration::createWithLegacyOptions(),
which is also where the shouldHaveLegacyDataStore flag, which will cause this code path to be reached, is set.

  • UIProcess/WebProcessPool.cpp:

(WebKit::legacyWebsiteDataStoreConfiguration):
Use the passed-in configuration to set the application cache, network cache, and media keys storage directories.

1:30 PM Changeset in webkit [197880] by Jon Davis
  • 2 edits in trunk/Websites/webkit.org

For RSS feeds, convert image and link relative URIs to absolute URIs
​https://bugs.webkit.org/show_bug.cgi?id=155237

Reviewed by Timothy Hatcher.

  • wp-content/themes/webkit/functions.php:
1:22 PM Changeset in webkit [197879] by Chris Dumez
  • 8 edits in trunk/Source/WebKit2

Speculative disk cache resource revalidations are sometimes wasted
​https://bugs.webkit.org/show_bug.cgi?id=155187
<rdar://problem/25032905>

Reviewed by Antti Koivisto.

Speculative disk cache resource revalidations were sometimes wasted.

We would sometimes correctly revalidate a resource but the
NetworkResourceLoader then either:

  1. Fail to reuse the speculatively validated entry
  2. Reuse the speculatively validated entry but then validate it again

Bug 1 was caused by the revalidated entry key sometimes being
different from the cached entry key. This could happen when
revalidation fails (the server did not send back a 304) in
which case we call NetworkCache::store() which creates a new
cache Entry, generating a cache key from our revalidation
request. If the original request has a cache partition or a
range, then the keys would not match because we did not set
the cache partition or the range on the revalidation request.
This has been addressed by setting the cache partition on the
revalidation request in constructRevalidationRequest() and by
not doing revalidation if the original request had a 'range'
header.

Bug 2 was caused by us marking a speculatively revalidated entry
as "not needing revalidating" only in Cache::update(). Cache::update()
is only called in the case the revalidation was successful (server
returned a 304). If revalidation was not successful, Cache::store()
would be called instead was we would fail to update the
needsRevalidation flag. NetworkResourceLoader would then validate
again the resource that was already speculatively revalidated.
To address the problem, we now update the 'needsRevalidation' flag
as soon as the speculative revalidation completes, in
SpeculativeLoad::didComplete().

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::makeCacheKey):
(WebKit::NetworkCache::Cache::update):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::setNeedsValidation):

  • NetworkProcess/cache/NetworkCacheEntry.h:
  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::noPartitionString):
(WebKit::NetworkCache::Key::Key):
(WebKit::NetworkCache::Key::hasPartition):

  • NetworkProcess/cache/NetworkCacheKey.h:
  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::didComplete):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):
(WebKit::NetworkCache::SpeculativeLoadManager::revalidateEntry):

1:15 PM Changeset in webkit [197878] by oliver@apple.com
  • 4 edits in trunk/Source

Fix old iOS

1:13 PM Changeset in webkit [197877] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unnecessary constructor
​https://bugs.webkit.org/show_bug.cgi?id=155249

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-09
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ScriptTimelineDataGrid.js:

(WebInspector.ScriptTimelineDataGrid):

1:09 PM Changeset in webkit [197876] by oliver@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Wincairo buildfix
​https://bugs.webkit.org/show_bug.cgi?id=155245

Reviewed by Mark Lam.

Fix up exports for a few symbols

  • jit/ExecutableAllocator.h:
  • jit/ExecutableAllocatorFixedVMPool.cpp:
12:55 PM Changeset in webkit [197875] by Chris Dumez
  • 7 edits in trunk

focus() / blur() should be on HTMLElement / SVGElement, not Element
​https://bugs.webkit.org/show_bug.cgi?id=155216

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

focus() / blur() should be on HTMLElement / SVGElement, not Element:

Chrome and Firefox match the specification.

Note that after this change, focus() / blur() is no longer exposed
on MathMLElement. This matches the MathML specification and is
consistent with Firefox and Chrome.

  • dom/Element.idl:
  • html/HTMLElement.idl:
  • svg/SVGElement.idl:
12:37 PM Changeset in webkit [197874] by Chris Dumez
  • 5 edits in trunk

Move attributes to the instance for most interfaces that have "Error" in their name
​https://bugs.webkit.org/show_bug.cgi?id=155231

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/interfaces-expected.txt:

Source/WebCore:

Our bindings generator was keeping attributes on the instances for
interfaces having "Error" or "Exception" in their name. The reason is
that interfaces that have "Error" in their prototype would not behave
correctly otherwise because "Error" incorrectly has its attributes on
the instance at the moment. However, in our bindings generator, the
condition to decide if an interface's prototype should be "Error" is
if $interface->isException. Therefore, we should use the same condition
to decide if we should keep attributes on the instance until "Error"
is updated to have its attributes on the prototype. Doing this for any
interface having "Error" or "Exception" in their name is overkill.

No new tests, already covered by existing test.

  • bindings/scripts/CodeGeneratorJS.pm:

(InterfaceRequiresAttributesOnInstance):

12:36 PM Changeset in webkit [197873] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Add dumping of function expression names in CodeBlock bytecode dump.
​https://bugs.webkit.org/show_bug.cgi?id=155248

Reviewed by Filip Pizlo.

Because ...
[ 19] new_func_exp loc5, loc3, f0:foo

... is more informative than
[ 19] new_func_exp loc5, loc3, f0

Anonymous functions will be dumped as <anon>.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpFunctionExpr):
(JSC::CodeBlock::dumpBytecode):

  • bytecode/CodeBlock.h:
12:36 PM Changeset in webkit [197872] by ap@apple.com
  • 2 edits in trunk/Tools

Add iOS Simulator EWS to bot watcher's dashboard
​https://bugs.webkit.org/show_bug.cgi?id=155220

Reviewed by Lucas Forschler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BubbleQueueServer.js:
12:25 PM Changeset in webkit [197871] by dbates@webkit.org
  • 3 edits
    1 copy
    1 add
    1 delete in trunk/Source/WebCore

Rename WebCore/platform/crypto/mac/CryptoDigestMac.cpp to WebCore/platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp
​https://bugs.webkit.org/show_bug.cgi?id=155244

Reviewed by Alexey Proskuryakov.

The file WebCore/platform/crypto/mac/CryptoDigestMac.cpp is applicable to both iOS and OS X.
We should move and rename this file to reflect that is applicable to both of these platforms.

  • PlatformMac.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/crypto/commoncrypto/CryptoDigestCommonCrypto.cpp: Renamed from Source/WebCore/platform/crypto/mac/CryptoDigestMac.cpp.
12:22 PM Changeset in webkit [197870] by Brent Fulgham
  • 8 edits in trunk

Local HTML should be blocked from localStorage access unless "Disable Local File Restrictions" is checked
​https://bugs.webkit.org/show_bug.cgi?id=155185
Source/WebKit2:

Reviewed by Anders Carlsson.
<rdar://problem/11101440>

Tested by TestWebKitAPI tests IndexedDB.IndexedDBMultiProcess and IndexedDB.IndexedDBPersistence.

Allow Cocoa WKWebViewConfiguration access to the 'allowUniversalAccessFromFileURLs' setting.

  • UIProcess/API/Cocoa/WKWebView.mm:

(- [WKWebView _initializeWithConfiguration]): Set 'allowUniversalAccessFromFileURLsKey' in
page configuration.

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _allowUniversalAccessFromFileURLs]): Added,
(-[WKWebViewConfiguration _setAllowUniversalAccessFromFileURLs:]): Added.

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:

Tools:

<rdar://problem/11101440>

Reviewed by Anders Carlsson.

  • TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp:

(TestWebKitAPI::TEST): Allow local file accesss to run test.

  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess.mm:

(TEST): Ditto.

  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence.mm:

(TEST): Ditto.

12:11 PM Changeset in webkit [197869] by msaboff@apple.com
  • 23 edits
    3 adds in trunk

[ES6] Implement RegExp sticky flag and related functionality
​https://bugs.webkit.org/show_bug.cgi?id=155177

Reviewed by Saam Barati.

Source/JavaScriptCore:

Implemented the ES6 RegExp sticky functionality.

There are two main behavior changes when the sticky flag is specified.
1) Matching starts at lastIndex and lastIndex is updated after the match.
2) The regular expression is only matched from the start position in the string.
See ES6 section 21.2.5.2.2 for details.

Changed both the Yarr interpreter and jit to not loop to the next character for sticky RegExp's.
Updated RegExp exec and match, and stringProtoFuncMatch to handle lastIndex changes.

Restructured the way flags are passed to and through YarrPatterns to use RegExpFlags instead of
individual bools.

Updated tests for 'y' flag and new behavior.

  • bytecode/CodeBlock.cpp:

(JSC::regexpToSourceString):

  • inspector/ContentSearchUtilities.cpp:

(Inspector::ContentSearchUtilities::findMagicComment):

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

(JSC::regExpFlags):
(JSC::RegExpFunctionalTestCollector::outputOneTest):
(JSC::RegExp::finishCreation):
(JSC::RegExp::compile):
(JSC::RegExp::compileMatchOnly):

  • runtime/RegExp.h:
  • runtime/RegExpKey.h:
  • runtime/RegExpObjectInlines.h:

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

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncCompile):
(JSC::flagsString):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncMatch):

  • tests/es6.yaml:
  • tests/stress/static-getter-in-names.js:

(shouldBe):

  • yarr/RegularExpression.cpp:

(JSC::Yarr::RegularExpression::Private::compile):

  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::tryConsumeBackReference):
(JSC::Yarr::Interpreter::matchAssertionBOL):
(JSC::Yarr::Interpreter::matchAssertionEOL):
(JSC::Yarr::Interpreter::matchAssertionWordBoundary):
(JSC::Yarr::Interpreter::matchDotStarEnclosure):
(JSC::Yarr::Interpreter::matchDisjunction):
(JSC::Yarr::Interpreter::Interpreter):
(JSC::Yarr::ByteCompiler::atomPatternCharacter):

  • yarr/YarrInterpreter.h:

(JSC::Yarr::BytecodePattern::BytecodePattern):
(JSC::Yarr::BytecodePattern::estimatedSizeInBytes):
(JSC::Yarr::BytecodePattern::ignoreCase):
(JSC::Yarr::BytecodePattern::multiline):
(JSC::Yarr::BytecodePattern::sticky):
(JSC::Yarr::BytecodePattern::unicode):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::matchCharacterClass):
(JSC::Yarr::YarrGenerator::jumpIfCharNotEquals):
(JSC::Yarr::YarrGenerator::generateAssertionBOL):
(JSC::Yarr::YarrGenerator::generateAssertionEOL):
(JSC::Yarr::YarrGenerator::generatePatternCharacterOnce):
(JSC::Yarr::YarrGenerator::generatePatternCharacterFixed):
(JSC::Yarr::YarrGenerator::generateDotStarEnclosure):
(JSC::Yarr::YarrGenerator::backtrack):

  • yarr/YarrPattern.cpp:

(JSC::Yarr::YarrPatternConstructor::YarrPatternConstructor):
(JSC::Yarr::YarrPatternConstructor::atomPatternCharacter):
(JSC::Yarr::YarrPatternConstructor::setupAlternativeOffsets):
(JSC::Yarr::YarrPatternConstructor::optimizeBOL):
(JSC::Yarr::YarrPattern::compile):
(JSC::Yarr::YarrPattern::YarrPattern):

  • yarr/YarrPattern.h:

(JSC::Yarr::YarrPattern::reset):
(JSC::Yarr::YarrPattern::nonwordcharCharacterClass):
(JSC::Yarr::YarrPattern::ignoreCase):
(JSC::Yarr::YarrPattern::multiline):
(JSC::Yarr::YarrPattern::sticky):
(JSC::Yarr::YarrPattern::unicode):

LayoutTests:

New and updated tests.

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/regexp-flags-expected.txt:
  • js/regexp-sticky-expected.txt: Added.
  • js/regexp-sticky.html: Added.
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/regexp-flags.js:

(RegExp.prototype.hasOwnProperty): Deleted check for sticky property.

  • js/script-tests/regexp-sticky.js: New test.

(asString):
(testStickyExec):
(testStickyMatch):

11:56 AM Changeset in webkit [197868] by timothy_horton@apple.com
  • 5 edits in trunk

Removing and re-adding a script message handler with the same name results in an unusable message handler
​https://bugs.webkit.org/show_bug.cgi?id=155223

Reviewed by Sam Weinig.
Source/WebCore:

New API test: WKUserContentController.ScriptMessageHandlerReplaceWithSameName.

  • page/UserMessageHandler.h:

(WebCore::UserMessageHandler::descriptor):

  • page/UserMessageHandlersNamespace.cpp:

(WebCore::UserMessageHandlersNamespace::handler):
This lazy removal mechanism combined with the fact that we only compare
handler name and world makes it such that m_messageHandlers could have
a stale UserMessageHandler with a UserMessageHandlerDescriptor that differed
only in client.

It is safe to compare the descriptors by pointer instead because m_messageHandler
holds a strong reference to its UserMessageHandlerDescriptors, and this will ensure
that the add-remove-add path (with identical name and world) causes a new
UserContentController to be created.

We also now clean up any stale UserMessageHandlers whenever we're about to
add a new one, by removing any which the UserContentController no longer knows about.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:

(TEST):
Add a test ensuring that it is possible to remove and re-add a script message handler
with the same name and still dispatch messages to it.

11:36 AM Changeset in webkit [197867] by mark.lam@apple.com
  • 11 edits in trunk

FunctionExecutable::ecmaName() should not be based on inferredName().
​https://bugs.webkit.org/show_bug.cgi?id=155203

Reviewed by Michael Saboff.

Source/JavaScriptCore:

The ES6 rules for how a function name should be inferred closely matches JSC's
implementation with one exception:

var o = {}
o.foo = function() {}

JSC's inferredName for o.foo would be "foo".
ES6 specifies that o.foo.name is "".

The fix is to add a distinct FunctionExecutable::ecmaName() which applies the ES6
rules for inferring the initial value of Function.name.

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedFunctionExecutable.h:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createAssignResolve):
(JSC::ASTBuilder::createGetterOrSetterProperty):
(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::makeAssignNode):

  • parser/Nodes.h:
  • runtime/Executable.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::reifyName):

  • tests/es6.yaml:

LayoutTests:

  • js/script-tests/function-toString-vs-name.js:
  • Fixed up object property test section and added new test cases.
  • platform/mac/http/tests/media/media-source/mediasource-sourcebuffer-mode-expected.txt:
11:29 AM Changeset in webkit [197866] by enrica@apple.com
  • 10 edits in trunk/Source/WebKit2

Add two finger tap on links.
​https://bugs.webkit.org/show_bug.cgi?id=155205
rdar://problem/22937516

Reviewed by Sam Weinig.

Adds two finger tap gesture recognizer. When performed
on a link, it calls the delegate.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView setupInteraction]):
(-[WKContentView cleanupInteraction]):
(-[WKContentView _removeDefaultGestureRecognizers]):
(-[WKContentView _addDefaultGestureRecognizers]):
(-[WKContentView _twoFingerSingleTapGestureRecognized:]):

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::handleTwoFingerTapAtPoint):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleTwoFingerTapAtPoint):

11:04 AM Changeset in webkit [197865] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Always call NSURLSession completion handlers
​https://bugs.webkit.org/show_bug.cgi?id=155137

Patch by Alex Christensen <​achristensen@webkit.org> on 2016-03-09
Reviewed by Darin Adler.

There are some edge cases which should not be hit, but if they are they would cause the
network process to hang and network resources to be leaked. This can be avoided.
There are also a few release asserts that do not need to crash release builds.

  • NetworkProcess/cocoa/NetworkDataTaskCocoa.mm:

(WebKit::NetworkDataTask::NetworkDataTask):
(WebKit::NetworkDataTask::didReceiveChallenge):
(WebKit::NetworkDataTask::didCompleteWithError):
(WebKit::NetworkDataTask::didReceiveResponse):
(WebKit::NetworkDataTask::didReceiveData):
(WebKit::NetworkDataTask::willPerformHTTPRedirection):
(WebKit::NetworkDataTask::scheduleFailure):
(WebKit::NetworkDataTask::tryPasswordBasedAuthentication):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(-[WKNetworkSessionDelegate URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:task:didReceiveChallenge:completionHandler:]):
(-[WKNetworkSessionDelegate URLSession:dataTask:didReceiveResponse:completionHandler:]):

10:45 AM Changeset in webkit [197864] by Chris Dumez
  • 8 edits
    2 adds in trunk

Align HTMLKeygenElement.keytype with the specification
​https://bugs.webkit.org/show_bug.cgi?id=155214

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/reflection-forms-expected.txt:

Source/WebCore:

Align HTMLKeygenElement.keytype with the specification:

In particular, the following changes were made:

  1. Return "rsa" by default (i.e. when the corresponding content attribute is missing)
  2. Only return known values

Test: fast/dom/HTMLKeygenElement/keygen-keytype.html

  • html/HTMLKeygenElement.cpp:

(WebCore::HTMLKeygenElement::setKeytype):
(WebCore::HTMLKeygenElement::keytype):
(WebCore::HTMLKeygenElement::appendFormData):

  • html/HTMLKeygenElement.h:
  • html/HTMLKeygenElement.idl:

LayoutTests:

Add test coverage for HTMLKeygenElement.keytype.

  • fast/dom/HTMLKeygenElement/keygen-keytype-expected.txt: Added.
  • fast/dom/HTMLKeygenElement/keygen-keytype.html: Added.
10:26 AM Changeset in webkit [197863] by Philippe Normand
  • 5 edits in trunk/Source/WebCore

[GStreamer] Fix MediaPlayerPrivate conflicts
​https://bugs.webkit.org/show_bug.cgi?id=155236

Reviewed by Martin Robinson.

In some cases the mediastream player would be used to play
non-mediastream videos or MSE streams. The OWR player should be
used only for mediastreams and the MediaPlayerPrivateGStreamer
player should be used only for normal <video> elements and
MediaSource support.

This patch intends to fix the massive tests timeouts currently
happening on the GTK bots after r197752.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::supportsType): Bail out if
the type checked represents a mediastream.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

Prevent signal disconnection on possible NULL GObjects.
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.cpp:

(WebCore::MediaPlayerPrivateGStreamerOwr::MediaPlayerPrivateGStreamerOwr):
Simplify constructor to the bare minimum.
(WebCore::MediaPlayerPrivateGStreamerOwr::load): Create sinks only
if needed from the load method.
(WebCore::MediaPlayerPrivateGStreamerOwr::getSupportedTypes):
Initialize the type cache to an empty static hashset.
(WebCore::MediaPlayerPrivateGStreamerOwr::supportsType): This
player does support mediastreams and nothing else.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerOwr.h:
10:10 AM Changeset in webkit [197862] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Harden JSC Root element functions from bad values
​https://bugs.webkit.org/show_bug.cgi?id=155234

Reviewed by Saam Barati.

Changed jsCast() to jsDynamicCast() in Root related function to protect against being
called with non-Root arguments.

  • jsc.cpp:

(functionCreateElement):
(functionGetElement):
(functionSetElementRoot):

9:51 AM Changeset in webkit [197861] by benjamin@webkit.org
  • 18 edits in trunk/Source/JavaScriptCore

[JSC] Pick how to OSR Enter to FTL at runtime instead of compile time
​https://bugs.webkit.org/show_bug.cgi?id=155217

Reviewed by Filip Pizlo.

This patch addresses 2 types of problems with tiering up to FTL
with OSR Entry in a loop:
-When there are nested loops, it is generally valuable to enter

an outer loop rather than an inner loop.

-When tiering up at a point that cannot OSR Enter, we are at

the mercy of the outer loop frequency to compile the right
entry point.

The first case is significant in the test "gaussian-blur".
That test has 4 nested loops. When we have an OSR Entry,
the analysis phases have to be pesimistic where we enter:
we do not really know what constraint can be proven from
the DFG code that was running.

In "gaussian-blur", integer-range analysis removes pretty
much all overflow checks in the inner loops of where we entered.
The more outside we enter, the better code we generate.

Since we spend the most iterations in the inner loop, we naturally
tend to OSR Enter into the 2 most inner loops, making the most
pessimistic assumptions.

To avoid such problems, I changed how we decide where to OSR Enter.
Previously, the last CheckTierUpAndOSREnter to cross the threshold
was where we take the entry point for FTL.

What happens now is that the entry point is not decied when
compiling the CheckTierUp variants. Instead, all the information
we need is gathered during compilation and keept on the JITCode
to be used at runtime.

When we try to tier up and decide to OSR Enter, we use the information
we have to pick a good outer loop for OSR Entry.

Now the problem is outer loop do not CheckTierUpAndOSREnter often,
wasting several miliseconds before entering the newly compiled FTL code.

To solve that, every CheckTierUpAndOSREnter has its own trigger that
bypass the counter. When the FTL Code is compiled, the trigger is set
and we enter through the right CheckTierUpAndOSREnter immediately.

---

This new mechanism also solves a problem of ai-astar.
When we try to tier up in ai-astar, we had nothing to compile until
the outer loop is reached.

To make sure we reached the CheckTierUpAndOSREnter in a reasonable time,
we had CheckTierUpWithNestedTriggerAndOSREnter with a special trigger.

With the new mechanism, we can do much better:
-When we keep hitting CheckTierUpInLoop, we now have all the information

we need to already start compiling the outer loop.
Instead of waiting for the outer loop to be reached a few times, we compile
it as soon as the inner loop is hammering CheckTierUpInLoop.

-With the new triggers, the very next time we hit the outer loop, we OSR Enter.

This allow us to compile what we need sooner and enter sooner.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize): Deleted.

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC): Deleted.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode): Deleted.

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

(JSC::DFG::JITCompiler::JITCompiler):
(JSC::DFG::JITCompiler::compileEntryExecutionFlag):

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPlan.h:

(JSC::DFG::Plan::canTierUpAndOSREnter):

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate): Deleted.

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute): Deleted.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile): Deleted.

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGTierUpCheckInjectionPhase.cpp:

(JSC::DFG::TierUpCheckInjectionPhase::run):
(JSC::DFG::TierUpCheckInjectionPhase::buildNaturalLoopToLoopHintMap):
(JSC::DFG::TierUpCheckInjectionPhase::findLoopsContainingLoopHintWithoutOSREnter): Deleted.

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:

(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::ToFTLForOSREntryDeferredCompilationCallback):
(JSC::DFG::Ref<ToFTLForOSREntryDeferredCompilationCallback>ToFTLForOSREntryDeferredCompilationCallback::create):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidBecomeReadyAsynchronously):
(JSC::DFG::ToFTLForOSREntryDeferredCompilationCallback::compilationDidComplete):

  • dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h:
9:44 AM Changeset in webkit [197860] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Cleaning up TestExpectations files to remove deleted tests and duplicate entries for ios-simulator.

Unreviewed test gardening.

9:25 AM Changeset in webkit [197859] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping fast/events/max-tabindex-focus.html on ios-simulator
​https://bugs.webkit.org/show_bug.cgi?id=155233

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
9:06 AM Changeset in webkit [197858] by Brent Fulgham
  • 3 edits
    3 adds in trunk

Local HTML should be blocked from localStorage access unless "Disable Local File Restrictions" is checked..
​https://bugs.webkit.org/show_bug.cgi?id=155185
<rdar://problem/11101440>

Reviewed by Zalan Bujtas.

Source/WebCore:

Tested by storage/domstorage/localstorage/blocked-file-access.html.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::canAccessStorage): If the origin is a local file, and we have not been granted
universal file access, prevent access to DOM localStorage.

LayoutTests:

  • storage/domstorage/localstorage/blocked-file-access-expected.txt: Added.
  • storage/domstorage/localstorage/blocked-file-access.html: Added.
  • storage/domstorage/localstorage/resources/blocked-example.html: Added.
6:26 AM Changeset in webkit [197857] by Manuel Rego Casasnovas
  • 4 edits
    4 adds in trunk

[css-grid] Allow to place positioned grid items on the padding
​https://bugs.webkit.org/show_bug.cgi?id=155199

Reviewed by Sergio Villar Senin.

Source/WebCore:

According to the following discussion on the CSS WG mailing list,
we should be able to place positioned grid items on the padding directly:
​https://lists.w3.org/Archives/Public/www-style/2015Nov/0070.html

This means that a positioned grid item can be placed on the padding itself.
The "auto" value resolves to the padding edges (0th and -0th lines).
So if a positioned item is placed with: grid-column: auto / 1;
it'd be placed on the padding, from line 0th to 1st line.

On top of that, we've to detect properly the first and last explicit
grid lines during the layout of positioned grid items.
We have to consider that the grid can have implicit tracks created
previously by regular grid items.

Tests: fast/css-grid-layout/grid-positioned-items-padding.html

fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track.html

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):

LayoutTests:

Add new tests and updated results in a current one.

  • fast/css-grid-layout/grid-positioned-items-implicit-grid.html:
  • fast/css-grid-layout/grid-positioned-items-padding-expected.txt: Added.
  • fast/css-grid-layout/grid-positioned-items-padding.html: Added.
  • fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track-expected.txt: Added.
  • fast/css-grid-layout/grid-positioned-items-within-grid-implicit-track.html: Added.
4:00 AM Changeset in webkit [197856] by akling@apple.com
  • 3 edits
    2 adds in trunk

ImageDocuments leak their world.
<​https://webkit.org/b/155167>
<rdar://problem/24987363>

Reviewed by Antti Koivisto.

Source/WebCore:

ImageDocument uses a special code path in ImageLoader in order to manually
control how the image is loaded. It has to do this because the ImageDocument
is really just a synthetic wrapper around a main resource that's an image.

This custom loading code had a bug where it would create a new CachedImage
and neglect to set its CachedResource::m_state flag to Pending (which is
normally set by CachedResource::load(), but we don't call that for these.)

This meant that when ImageDocument called CachedImage::finishLoading() to
trigger the notifyFinished() callback path, the image would look at its
loading state and see that it was Unknown (not Pending), and conclude that
it hadn't loaded yet. So we never got the notifyFinished() signal.

The world leaks here because ImageLoader slaps a ref on its <img> element
while it waits for the loading operation to complete. Once finished, whether
successfully or with an error, it derefs the <img>.

Since we never fired notifyFinished(), we ended up with an extra ref on
these <img> forever, and then the element kept its document alive too.

Test: fast/dom/ImageDocument-world-leak.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

LayoutTests:

Made a little test that loads an image into an <iframe> 10 times and then
triggers a garbage collection and checks that all the documents got destroyed.

Prior to this change, all 10 ImageDocuments would remain alive at the end.

This got rolled out the first time because it failed on bots. It failed due
to expecting a specific number of documents to be live at the start of the
test, which was not reliable on bots since we appear to have more leaks(!)

Tweaked the test to check the delta in live document count instead.

  • fast/dom/ImageDocument-world-leak-expected.txt: Added.
  • fast/dom/ImageDocument-world-leak.html: Added.
3:24 AM Changeset in webkit [197855] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197654 - [JSC] Remove a superfluous Move in front of every double unboxing
​https://bugs.webkit.org/show_bug.cgi?id=155064

Reviewed by Saam Barati.

Double unboxing was always doing:

Move source, scratch
Add64 tag, scratch
IntToDouble scratch, fp

We do not need to "Move" to copy the source.
Both x86 and ARM64 have an efficient 3 operands Add instruction.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileValueToInt32):
(JSC::DFG::SpeculativeJIT::compileDoubleRep):
(JSC::DFG::SpeculativeJIT::speculateRealNumber):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::unboxDouble):

  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::unboxDoubleWithoutAssertions):
(JSC::AssemblyHelpers::unboxDouble):
(JSC::AssemblyHelpers::unboxDoubleNonDestructive):

3:02 AM Changeset in webkit [197854] by svillar@igalia.com
  • 7 edits in trunk

[css-grid] Fix auto-track sizing with min-size:auto and specific sizes
​https://bugs.webkit.org/show_bug.cgi?id=155165

Reviewed by Darin Adler.

Source/WebCore:

Specs recently changed the way auto tracks are sized. In the
previous versions, when sizing auto minimums, only the
min-width|height of the items spanning through the auto tracks
were used to size them. The new text specifies that for items
with a specified minimum size of auto, the behavior is
equivalent to a min-content minimum.

This means that from now on, auto tracks with min-size:auto
will no longer be smaller than min-content tracks (which was
pretty weird from the user POV).

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::minSizeForChild): use grid items
min-content contributions whenever the specified size is not
auto or when min-size is auto.

LayoutTests:

  • fast/css-grid-layout/grid-automatic-minimum-for-auto-columns-expected.txt:
  • fast/css-grid-layout/grid-automatic-minimum-for-auto-columns.html:
  • fast/css-grid-layout/grid-automatic-minimum-for-auto-rows-expected.txt:
  • fast/css-grid-layout/grid-automatic-minimum-for-auto-rows.html:
2:56 AM Changeset in webkit [197853] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r197733 - REGRESSION(r197062): [GTK] Transparent backgrounds no longer work after r197062
​https://bugs.webkit.org/show_bug.cgi?id=155119

Reviewed by Martin Robinson.

This is because after r197062 we are now realizing the view too
early, even before the toplevel window has been realized, forcing
the toplevel window to be realized. If the RGBA visual is set on
the window after it has been realzied it doesn't have any
effect. We should wait until the toplevel window is realized to
realize the web view, giving time to the application to set RGBA
visual and background color. If the toplevel window is already
realized we realize the web view immediately, so that this doesn't
affect the tearing problems fixed in r197062.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(toplevelWindowRealized):
(webkitWebViewBaseSetToplevelOnScreenWindow):

2:52 AM Changeset in webkit [197852] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197653 - [JSC] Use 3 operands Add in more places
​https://bugs.webkit.org/show_bug.cgi?id=155082

Reviewed by Filip Pizlo.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::addPtr):
(JSC::MacroAssembler::add32):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::add32):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithAdd):
The case with child1 constant is useless.
The canonical form will have the constant as child2.

Also add register reuse for the fast-add.
Registers are a scarce resource on x86.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::prepareForTailCallSlow):

  • yarr/YarrJIT.cpp:

(JSC::Yarr::YarrGenerator::generate):

2:28 AM Changeset in webkit [197851] by Carlos Garcia Campos
  • 14 edits in releases/WebKitGTK/webkit-2.12/Source

Merge r197652 - [JSC] Improve codegen of Compare and Test
​https://bugs.webkit.org/show_bug.cgi?id=155055

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-06
Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch introduces a few improvements on how we lower
Compare and Test with immediates:

-Add certain Immediate forms of ARM64.
-Use CBZ/CBNZ when possible on ARM64.
-When possible, convert a CMP into a TST

On some hardware, we can issue more TST simultaneously.

On x86, any TST+Jump is candidate for macro-fusion.
They are also smaller.
(sections 3.4.2.2 and 3.5.1.9)

-Do not load the mask immediate of a TST

if it only contains ones (mostly useful for ARM64
since that would not have been a valid immediate).

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::compare32):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::moveConditionallyAfterFloatingPointCompare):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyAfterFloatingPointCompare):
This is somewhat unrelated but I found that out while working
on moveDoubleConditionallyTest32:

If "thenCase" and "dest" are assigned the same register
by the allocator, then the first (f)fcsel would override
the "thenCase" and the second fcsel would always be "elseCase".

This is covered by testb3 but was only uncovered
after recent "Move" removals in lowering.

(JSC::MacroAssemblerARM64::moveConditionally32):
(JSC::MacroAssemblerARM64::moveConditionally64):
(JSC::MacroAssemblerARM64::moveConditionallyTest32):
(JSC::MacroAssemblerARM64::moveDoubleConditionally32):
(JSC::MacroAssemblerARM64::moveDoubleConditionally64):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyTest32):
(JSC::MacroAssemblerARM64::branch32):
(JSC::MacroAssemblerARM64::branch64):
(JSC::MacroAssemblerARM64::branchTest32):
(JSC::MacroAssemblerARM64::test32):
The version taking an immediate was guarded by

(cond == Zero)
(cond == NonZero). That is overzealous,

and only needed for CBZ/CBNZ.

(JSC::MacroAssemblerARM64::branchTest64):
(JSC::MacroAssemblerARM64::compare32):
(JSC::MacroAssemblerARM64::compare64):
(JSC::MacroAssemblerARM64::commuteCompareToZeroIntoTest):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::moveConditionally32):
(JSC::MacroAssemblerX86Common::moveConditionallyTest32):
(JSC::MacroAssemblerX86Common::branch32):
(JSC::MacroAssemblerX86Common::test32):
(JSC::MacroAssemblerX86Common::branchTest32):
(JSC::MacroAssemblerX86Common::compare32):
(JSC::MacroAssemblerX86Common::commuteCompareToZeroIntoTest):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::compare64):
(JSC::MacroAssemblerX86_64::branch64):
(JSC::MacroAssemblerX86_64::moveConditionally64):

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::createGenericCompare):
Unfortunately this cannot be abstracted by the MacroAssembler.
Those immediates are not valid, we have to pick the better
for right away.

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::int64Operands):
(JSC::B3::modelCompare):
(JSC::B3::testCompareImpl):
(JSC::B3::testCompare):
(JSC::B3::b3Pow):
(JSC::B3::testPowDoubleByIntegerLoop):
Some versions of pow(double, int) do not return
the exact same bits as our integer loop.
Added a new version to have the same behavior
as the B3 loop.

(JSC::B3::run):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePeepHoleBooleanBranch):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileInt32Compare):
Comparing to an immediate is super common. Do not waste
a register for that!

Source/WebCore:

  • cssjit/FunctionCall.h:

(WebCore::FunctionCall::callAndBranchOnCondition):

2:15 AM Changeset in webkit [197850] by Manuel Rego Casasnovas
  • 10 edits
    2 adds in trunk

[css-grid] Initial support for implicit grid before explicit grid
​https://bugs.webkit.org/show_bug.cgi?id=155014

Reviewed by Darin Adler.

Source/WebCore:

Change GridSpan to store int instead of unsigned. This allows us to
resolve positions before the explicit grid with negative values.

This patch adds a new type of GridSpan called "Untranslated".
This type is only used in populateExplicitGridAndOrderIterator().
Where we store the smallest negative position in both axis.

Then the GridSpans are translated into positive values, using the offset
calculated before. This is done in placeItemsOnGrid() and from that
moment the rest of the code uses "Definite" GridSpans, which returns
only positive positions (unsigned instead of int).
This allows us to don't have to modify the rest of the code, as it keeps
using GridSpans as before.

Let's use an example to explain how it works. Imagine that we've a 2
columns grid and 2 items placed like:

  • Item A: grid-column: -5;
  • Item B: grid-column: 1;

Initially we'll use "Unstranslated" GridSpans with the following values:

  • Item A: GridSpan(-2, -1)
  • Item B: GridSpan(0, 1)

Then we'll translate them using the smallest position as offset (-2)
so we've "Definite" GridSpans:

  • Item A: GridSpan(0, 1)
  • Item B: GridSpan(2, 3)

Test: fast/css-grid-layout/implicit-tracks-before-explicit.html

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseGridTemplateAreasRow):

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::GridIterator::nextEmptyGridArea):
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::gridTrackSize):
(WebCore::RenderGrid::insertItemIntoGrid):
(WebCore::RenderGrid::placeItemsOnGrid):
(WebCore::RenderGrid::populateExplicitGridAndOrderIterator):
(WebCore::RenderGrid::createEmptyGridAreaAtSpecifiedPositionsOutsideGrid):
(WebCore::RenderGrid::placeSpecifiedMajorAxisItemsOnGrid):
(WebCore::RenderGrid::placeAutoMajorAxisItemOnGrid):
(WebCore::RenderGrid::offsetAndBreadthForPositionedChild):
(WebCore::RenderGrid::placeAutoMajorAxisItemsOnGrid): Deleted.
(WebCore::RenderGrid::layoutPositionedObject): Deleted.

  • rendering/RenderGrid.h:
  • rendering/style/GridCoordinate.h:

(WebCore::GridSpan::untranslatedDefiniteGridSpan):
(WebCore::GridSpan::translatedDefiniteGridSpan):
(WebCore::GridSpan::integerSpan):
(WebCore::GridSpan::untranslatedResolvedInitialPosition):
(WebCore::GridSpan::untranslatedResolvedFinalPosition):
(WebCore::GridSpan::resolvedInitialPosition):
(WebCore::GridSpan::resolvedFinalPosition):
(WebCore::GridSpan::begin):
(WebCore::GridSpan::end):
(WebCore::GridSpan::isTranslatedDefinite):
(WebCore::GridSpan::isIndefinite):
(WebCore::GridSpan::translate):
(WebCore::GridSpan::GridSpan):
(WebCore::GridSpan::operator==): Deleted.
(WebCore::GridSpan::GridSpanIterator::GridSpanIterator): Deleted.
(WebCore::GridSpan::GridSpanIterator::operator unsigned&): Deleted.

  • rendering/style/GridResolvedPosition.cpp:

(WebCore::resolveRowStartColumnStartNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveRowEndColumnEndNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveNamedGridLinePositionAgainstOppositePosition):
(WebCore::resolveGridPositionAgainstOppositePosition):
(WebCore::resolveGridPositionFromStyle):
(WebCore::GridResolvedPosition::resolveGridPositionsFromStyle):
(WebCore::GridResolvedPosition::spanSizeForAutoPlacedItem): Deleted.

LayoutTests:

Updated results in current tests and added specific test for this.

  • fast/css-grid-layout/grid-auto-flow-resolution.html:
  • fast/css-grid-layout/grid-item-negative-position-resolution.html:
  • fast/css-grid-layout/grid-item-spanning-resolution.html:
  • fast/css-grid-layout/implicit-tracks-before-explicit-expected.txt: Added.
  • fast/css-grid-layout/implicit-tracks-before-explicit.html: Added.
2:05 AM Changeset in webkit [197849] by Carlos Garcia Campos
  • 15 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197649 - DFG should know how to speculate StringOrOther
​https://bugs.webkit.org/show_bug.cgi?id=155094

Reviewed by Saam Barati.

Any code that processes the regexp matches array was previously doing a relatively expensive
Branch(Untyped:). This introduces a new use kind called StringOrOther, which is perfect for
code that loops over the matches array and branches on the entries being non-empty.

To do this, I needed to introduce code into the FTL that creates new blocks. We still had that
awful FTL_NEW_BLOCK idiom since the only way to debug LLVM IR was to ascribe names to basic
blocks. B3 IR is inherently more debuggable since unlike LLVM, B3 knows how to always respect
code origin, and it knows how to print the code origin nicely in the dumps. So, rather than
continue using FTL_NEW_BLOCK(m_out, ("things")), I replaced all of that stuff with
m_out.newBlock(). It's much nicer that way.

This is a tiny speed-up on Octane/regexp at best. I was hoping for more. Oh well.

  • bytecode/SpeculatedType.h:

(JSC::isStringSpeculation):
(JSC::isStringOrOtherSpeculation):
(JSC::isSymbolSpeculation):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::shouldSpeculateString):
(JSC::DFG::Node::shouldSpeculateStringOrOther):
(JSC::DFG::Node::shouldSpeculateStringObject):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::SafeToExecuteEdge::operator()):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileStringZeroLength):
(JSC::DFG::SpeculativeJIT::compileLogicalNotStringOrOther):
(JSC::DFG::SpeculativeJIT::emitStringBranch):
(JSC::DFG::SpeculativeJIT::emitStringOrOtherBranch):
(JSC::DFG::SpeculativeJIT::compileConstantStoragePointer):
(JSC::DFG::SpeculativeJIT::speculateObjectOrOther):
(JSC::DFG::SpeculativeJIT::speculateString):
(JSC::DFG::SpeculativeJIT::speculateStringOrOther):
(JSC::DFG::SpeculativeJIT::speculateStringIdentAndLoadStorage):
(JSC::DFG::SpeculativeJIT::speculate):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compileLogicalNot):
(JSC::DFG::SpeculativeJIT::emitBranch):

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::lower):
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):
(JSC::FTL::DFG::LowerDFGToB3::compileBooleanToNumber):
(JSC::FTL::DFG::LowerDFGToB3::compileToThis):
(JSC::FTL::DFG::LowerDFGToB3::compileArithMul):
(JSC::FTL::DFG::LowerDFGToB3::compileArithDiv):
(JSC::FTL::DFG::LowerDFGToB3::compileArithMod):
(JSC::FTL::DFG::LowerDFGToB3::compileArithMinOrMax):
(JSC::FTL::DFG::LowerDFGToB3::compileArithPow):
(JSC::FTL::DFG::LowerDFGToB3::compileArithRound):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckStructure):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayifyToStructure):
(JSC::FTL::DFG::LowerDFGToB3::compileGetById):
(JSC::FTL::DFG::LowerDFGToB3::compileGetIndexedPropertyStorage):
(JSC::FTL::DFG::LowerDFGToB3::compileGetTypedArrayByteOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileGetByVal):
(JSC::FTL::DFG::LowerDFGToB3::compilePutByVal):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPush):
(JSC::FTL::DFG::LowerDFGToB3::compileArrayPop):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileCreateDirectArguments):
(JSC::FTL::DFG::LowerDFGToB3::compileCopyRest):
(JSC::FTL::DFG::LowerDFGToB3::compileGetRestLength):
(JSC::FTL::DFG::LowerDFGToB3::compileNewArrayWithSize):
(JSC::FTL::DFG::LowerDFGToB3::compileNewTypedArray):
(JSC::FTL::DFG::LowerDFGToB3::compileToStringOrCallStringConstructor):
(JSC::FTL::DFG::LowerDFGToB3::compileToPrimitive):
(JSC::FTL::DFG::LowerDFGToB3::compileMakeRope):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharCodeAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringFromCharCode):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiGetByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileMultiPutByOffset):
(JSC::FTL::DFG::LowerDFGToB3::compileNotifyWrite):
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):
(JSC::FTL::DFG::LowerDFGToB3::compileForwardVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileSwitch):
(JSC::FTL::DFG::LowerDFGToB3::compileIsString):
(JSC::FTL::DFG::LowerDFGToB3::compileIsObject):
(JSC::FTL::DFG::LowerDFGToB3::compileIsObjectOrNull):
(JSC::FTL::DFG::LowerDFGToB3::compileIsFunction):
(JSC::FTL::DFG::LowerDFGToB3::compileTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::compileOverridesHasInstance):
(JSC::FTL::DFG::LowerDFGToB3::compileInstanceOf):
(JSC::FTL::DFG::LowerDFGToB3::compileHasIndexedProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileHasStructureProperty):
(JSC::FTL::DFG::LowerDFGToB3::compileGetDirectPname):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorStructurePname):
(JSC::FTL::DFG::LowerDFGToB3::compileGetEnumeratorGenericPname):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeNewObject):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileCheckWatchdogTimer):
(JSC::FTL::DFG::LowerDFGToB3::checkStructure):
(JSC::FTL::DFG::LowerDFGToB3::numberOrNotCellToInt32):
(JSC::FTL::DFG::LowerDFGToB3::checkInferredType):
(JSC::FTL::DFG::LowerDFGToB3::allocatePropertyStorageWithSizeImpl):
(JSC::FTL::DFG::LowerDFGToB3::loadVectorWithBarrier):
(JSC::FTL::DFG::LowerDFGToB3::copyBarrier):
(JSC::FTL::DFG::LowerDFGToB3::loadVectorReadOnly):
(JSC::FTL::DFG::LowerDFGToB3::compareEqObjectOrOtherToObject):
(JSC::FTL::DFG::LowerDFGToB3::nonSpeculativeCompare):
(JSC::FTL::DFG::LowerDFGToB3::stringsEqual):
(JSC::FTL::DFG::LowerDFGToB3::allocateCell):
(JSC::FTL::DFG::LowerDFGToB3::allocateVariableSizedObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateBasicStorageAndGetEnd):
(JSC::FTL::DFG::LowerDFGToB3::allocateObject):
(JSC::FTL::DFG::LowerDFGToB3::allocateJSArray):
(JSC::FTL::DFG::LowerDFGToB3::boolify):
(JSC::FTL::DFG::LowerDFGToB3::equalNullOrUndefined):
(JSC::FTL::DFG::LowerDFGToB3::contiguousPutByValOutOfBounds):
(JSC::FTL::DFG::LowerDFGToB3::switchString):
(JSC::FTL::DFG::LowerDFGToB3::switchStringRecurse):
(JSC::FTL::DFG::LowerDFGToB3::buildTypeOf):
(JSC::FTL::DFG::LowerDFGToB3::doubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::sensibleDoubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::strictInt52ToJSValue):
(JSC::FTL::DFG::LowerDFGToB3::jsValueToStrictInt52):
(JSC::FTL::DFG::LowerDFGToB3::convertDoubleToInt32):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateCellOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateObjectOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateString):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringOrOther):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringIdent):
(JSC::FTL::DFG::LowerDFGToB3::speculateStringOrStringObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateRealNumber):
(JSC::FTL::DFG::LowerDFGToB3::speculateNotStringVar):
(JSC::FTL::DFG::LowerDFGToB3::emitStoreBarrier):
(JSC::FTL::DFG::LowerDFGToB3::callCheck):

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::initialize):
(JSC::FTL::Output::newBlock):
(JSC::FTL::Output::check):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::setFrequency):
(JSC::FTL::Output::insertNewBlocksBefore):

1:35 AM Changeset in webkit [197848] by Carlos Garcia Campos
  • 33 edits
    5 adds in releases/WebKitGTK/webkit-2.12

Merge r197641 - RegExpMatchesArray doesn't know how to have a bad time
​https://bugs.webkit.org/show_bug.cgi?id=155069

Reviewed by Yusuke Suzuki.

Source/JavaScriptCore:

In trunk if we are having a bad time, the regexp matches array is still allocated with a
non-slow-put indexing shape, which makes it have the wrong behavior on indexed setters on
the prototype chain.

Getting this to work right requires introducing bad time code paths into the regexp matches
array. It also requires something more drastic: making this code not play games with the
global object. The code that creates the matches array needs to have the actual global
object of the regexp native function that it's logically created by.

This is totally different from how we've handled global objects in the past because it means
that the global object is not a constant. Normally we can make it a constant because a
script executable will know its global object. But with native functions, it's the function
instance that knows the global object - not the native executable. When we inline a native
intrinsic, we are guaranteed to know the native executable but we're not guaranteed to know
the functon instance. This means that the global object may be a variable that gets computed
by looking at the instance at run-time. So, the RegExpExec/RegExpTest nodes in DFG IR now
take a global object child. That also meant adding a new node type, GetGlobalObject, which
does the thing to the callee that CallFrame::lexicalGlobalObject() would have done.
Eventually, we'll probably have to make other native intrinsics also use GetGlobalObject. It
turns out that this really isn't so bad because usually it's constant-folded anyway, since
although the intrinsic code supports executable-based inlining (which leaves the callee
instance as an unknown), it happens rarely for intrinsics. So, conveying the global object
via a child isn't any worse than conveying it via meta-data, and it's probably better than
telling the inliner not to do executable-based inlining of native intrinsics. That would
have been a confusing special-case.

This is perf-neutral on my machines but it fixes a bug and it unlocks some interesting
possibilities. For example, RegExpExec can now make a firm promise about the type of array
it's creating.

This also contains some other changes:

  • We are now using Structure::addPropertyTransition() in a lot of places even though it was meant to be an internal method with a quirky contract - for example if only works if you know that there is not existing transition. This relaxes this constraint.
  • Restores the use of "*" for heap references in JSString.h. It's very unusual to have heap references pointed at with "&", since we don't currently do that anywhere. The fact that it was using the wrong reference type also meant that the code couldn't elegantly make use of some our GC pointer helpers like jsCast<>.
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::attemptToInlineCall):
(JSC::DFG::ByteCodeParser::handleMinMax):
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileSkipScope):
(JSC::DFG::SpeculativeJIT::compileGetGlobalObject):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):

  • 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::compileSkipScope):
(JSC::FTL::DFG::LowerDFGToB3::compileGetGlobalObject):
(JSC::FTL::DFG::LowerDFGToB3::compileGetClosureVar):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):

  • jit/JITOperations.h:
  • runtime/JSGlobalObject.cpp:

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

  • runtime/JSGlobalObject.h:
  • runtime/JSObject.h:

(JSC::JSObject::putDirectInternal):

  • runtime/JSString.h:

(JSC::jsString):
(JSC::jsSubstring):

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpMatchesArray.cpp:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):
(JSC::createStructureImpl):
(JSC::createRegExpMatchesArrayStructure):
(JSC::createRegExpMatchesArraySlowPutStructure):

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

(JSC::RegExpObject::put):
(JSC::RegExpObject::exec):
(JSC::RegExpObject::match):

  • runtime/RegExpObject.h:

(JSC::RegExpObject::getLastIndex):
(JSC::RegExpObject::test):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncTest):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncCompile):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncMatch):

  • runtime/Structure.cpp:

(JSC::Structure::suggestedArrayStorageTransition):
(JSC::Structure::addPropertyTransition):
(JSC::Structure::addNewPropertyTransition):

  • runtime/Structure.h:
  • tests/stress/regexp-matches-array-bad-time.js: Added.
  • tests/stress/regexp-matches-array-slow-put.js: Added.

LayoutTests:

  • js/regress/regexp-exec-expected.txt: Added.
  • js/regress/regexp-exec.html: Added.
  • js/regress/script-tests/regexp-exec.js: Added.
12:54 AM Changeset in webkit [197847] by mmaxfield@apple.com
  • 7 edits
    2 adds in trunk

[iOS] Arabic text on Wikipedia is shown as boxes
​https://bugs.webkit.org/show_bug.cgi?id=155129
<rdar://problem/24919902>

Reviewed by Darin Adler.

Source/WebCore:

GeezaPro is the PostScript name, not the family name.

Test: fast/text/arabic-blacklisted.html

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::platformLookupFallbackFont):

LayoutTests:

This test is iOS-specific.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
  • fast/text/arabic-blacklisted-expected.html: Added.
  • fast/text/arabic-blacklisted.html: Added.
12:46 AM Changeset in webkit [197846] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197640 - [JSC] RegExp#lastIndex should handle writable attribute when defining in defineOwnProperty path
​https://bugs.webkit.org/show_bug.cgi?id=155093

Reviewed by Filip Pizlo.

Before this patch, setLastIndex(ExecState* exec, size_t lastIndex) always overwrites the existing value
regardless of writable attribute.
And when defining RegExp#lastIndex in defineOwnProperty, we need to define the value first
before making the attribute readonly. After changing the writable attribute, we cannot define the value.

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::defineOwnProperty):

  • runtime/RegExpObject.h:

(JSC::RegExpObject::setLastIndex):

  • tests/stress/regexp-last-index-writable.js: Added.

(shouldBe):
(shouldThrow):
(regExpLastIndex):

12:32 AM Changeset in webkit [197845] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197622 - The most aggressive form of RegExpTest/RegExpExec should speculate more aggressively than just cell
​https://bugs.webkit.org/show_bug.cgi?id=154900

Reviewed by Saam Barati.

These old operations used to speculate cell. That's what they did when they were first
introduced. That was probably about as good as they could do back then because we didn't have
very powerful checks. Now we have powerful checks, so we can do this right.

The most profitable thing to check is that child1 is a RegExpObject and child2 is a JSString.
Sometimes though, we will not know what child2 is even though we know that child1 is a
RegExpObject. So, this patch means that RegExpExec/RegExpTest have the following overloads:

RegExpExec(RegExpObject:, String:)
RegExpExec(RegExpObject:, Untyped:)
RegExpExec(Untyped:, Untyped:)

This shaves off some type checks in Octane/regexp. It also cleans up some problems in our
modeling of the effectfulness of these operations.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.h:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):

  • jit/JITOperations.h:
12:05 AM Changeset in webkit [197844] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197609 - [GTK] Scrollbars are broken again with GTK+ >= 3.19.11
​https://bugs.webkit.org/show_bug.cgi?id=154890

Reviewed by Michael Catanzaro.

Scrollbar style properties have been deprecated in GTK+, and it
seems that now deprecating means keeping the properties but
ignoring them. So, this reworks the whole scrollbars theme code
again to not cache style properties anymore, but retrieve them
from the GtkStyleContext. Previous GTK+ versions still need to
query the style properties, so I've added helper functions to get
all the style properties with the ifdefs, trying to keep the
common render code free of GTK+ versions ifdefs.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::ScrollbarThemeGtk::backButtonRect):
(WebCore::ScrollbarThemeGtk::forwardButtonRect):
(WebCore::ScrollbarThemeGtk::trackRect):
(WebCore::ScrollbarThemeGtk::thumbRect):
(WebCore::ScrollbarThemeGtk::paintTrackBackground):
(WebCore::ScrollbarThemeGtk::paintThumb):
(WebCore::ScrollbarThemeGtk::paint):
(WebCore::ScrollbarThemeGtk::scrollbarThickness):
(WebCore::ScrollbarThemeGtk::buttonSize):
(WebCore::ScrollbarThemeGtk::stepperSize):
(WebCore::ScrollbarThemeGtk::getStepperSpacing):
(WebCore::ScrollbarThemeGtk::troughUnderSteppers):
(WebCore::ScrollbarThemeGtk::minimumThumbLength):
(WebCore::ScrollbarThemeGtk::thumbFatness):
(WebCore::ScrollbarThemeGtk::getTroughBorder):
(WebCore::ScrollbarThemeGtk::getOrCreateStyleContext):
(WebCore::ScrollbarThemeGtk::updateThemeProperties):
(WebCore::ScrollbarThemeGtk::handleMousePressEvent):

  • platform/gtk/ScrollbarThemeGtk.h:

Mar 8, 2016:

11:59 PM Changeset in webkit [197843] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197577 - Remove use of deprecated sqlite3_expired
​https://bugs.webkit.org/show_bug.cgi?id=155025

Reviewed by Tim Horton.

Since we exclusively use sqlite3_prepare_v2 and don't use sqlite3_prepare,
manually checking for expired statements is not necessary.

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::isExpired): Null check the statement, but don't bother

with sqlite3_expired.

11:59 PM Changeset in webkit [197842] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.12

Merge r197576 - Location.reload should not be writable
​https://bugs.webkit.org/show_bug.cgi?id=154989

Reviewed by Gavin Barraclough.

Source/JavaScriptCore:

After r196770, operations marked as [Unforgeable] in the IDL (such as
Location.reload) are correctly reported as not writable by
Object.getOwnPropertyDescriptor(). Trying to set such property in JS
is correctly ignored (or throws in strict mode) if the object has
previously been reified. However, due to a bug in putEntry(), it was
still possible to override the property if the object was not reified
yet. This patch fixes the issue by checking in putEntry() that entries
that are functions are not ReadOnly before calling putDirect().

  • runtime/Lookup.h:

(JSC::putEntry):

LayoutTests:

Add a layout test to verify that operations marked as [Unforgeable] in
IDL are indeed not writable.

  • fast/html/unforgeable-operations-readonly-expected.txt: Added.
  • fast/html/unforgeable-operations-readonly.html: Added.
11:45 PM Changeset in webkit [197841] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Unreviewed, rolling out r197825.
​https://bugs.webkit.org/show_bug.cgi?id=155222

It broke the EFL build. It is not dead code. (Requested by
gyuyoung on #webkit).

Reverted changeset:

"Delete dead scrolling code"
​https://bugs.webkit.org/show_bug.cgi?id=155210
​http://trac.webkit.org/changeset/197825

11:44 PM Changeset in webkit [197840] by Carlos Garcia Campos
  • 3 edits
    4 adds in releases/WebKitGTK/webkit-2.12

Merge r197570 - [iOS] Crash during font loading when injected bundle cancels load
​https://bugs.webkit.org/show_bug.cgi?id=155001

Reviewed by Tim Horton.

Source/WebCore:

If a injected bundle cancels the load, the fontLoaded() callback will be
called twice. We can simply detect this condition.

Test: CancelLoading.CancelFontSubresource API test

  • css/CSSFontFaceSource.cpp:

(WebCore::CSSFontFaceSource::fontLoaded):

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2/Ahem.ttf: Added.
  • TestWebKitAPI/Tests/WebKit2/webfont.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/CancelFontSubresource.mm: Added.

(-[Myles webView:didFinishNavigation:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/CancelFontSubresourcePlugIn.mm: Added.

(-[CancelFontSubresourcePlugIn webProcessPlugIn:didCreateBrowserContextController:]):
(-[CancelFontSubresourcePlugIn webProcessPlugInBrowserContextController:frame:willSendRequestForResource:request:redirectResponse:]):

11:42 PM Changeset in webkit [197839] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197552 - Drop DocumentSharedObjectPool immediately when going into PageCache.
<​https://webkit.org/b/154986>

Reviewed by Antti Koivisto.

The DocumentSharedObjectPool is a weirdly efficient little optimization
that deduplicates ElementData during the first 10s of a Document's lifetime.
While it's up, every ElementData created will persist so it can be used for
deduplication.

If a Document goes into the PageCache while its shared object pool is still
alive, we can just kill it right away. This will sometimes allow us to free
a bunch of ElementData sooner.

  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::setInPageCache):
(WebCore::Document::clearSharedObjectPool):
(WebCore::Document::sharedObjectPoolClearTimerFired): Deleted.

  • dom/Document.h:
11:29 PM Changeset in webkit [197838] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

Remove failing assertion. There are strings that claim to be atomic but that the
compiler thread can totally deal with, like the empty string.

Rubber stamped by Mark Lam.

  • wtf/text/StringImpl.h:

(WTF::StringImpl::ref):
(WTF::StringImpl::deref):

11:28 PM Changeset in webkit [197837] by Carlos Garcia Campos
  • 22 edits
    6 adds in releases/WebKitGTK/webkit-2.12

Merge r197549 - DFG/FTL should inline accesses to RegExpObject::m_lastIndex
​https://bugs.webkit.org/show_bug.cgi?id=155003

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

The Octane/regexp benchmark sets RegExps' lastIndex a lot. I could imagine this being
something that people want to do. Right now, I'm not convinced that making the RegExp object
be more plain-JS would be a good idea considering that pretty much all uses of it will
require some special compiler magic. Also, it's good that this patch teaches the compiler
how to reason about lastIndex since some of my other plans for regexp involve having the
compiler treat more regexp stuff as intrinsic.

This is a smaller Octane/regexp speed-up than I hoped - maybe around 1%. It's an enormous
speed-up on the microbenchmarks attached to this patch.

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGHeapLocation.h:
  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compilePutAccessorByVal):
(JSC::DFG::SpeculativeJIT::compileGetRegExpObjectLastIndex):
(JSC::DFG::SpeculativeJIT::compileSetRegExpObjectLastIndex):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStoreBarrierInsertionPhase.cpp:
  • ftl/FTLAbstractHeapRepository.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
(JSC::FTL::DFG::LowerDFGToB3::compileGetRegExpObjectLastIndex):
(JSC::FTL::DFG::LowerDFGToB3::compileSetRegExpObjectLastIndex):
(JSC::FTL::DFG::LowerDFGToB3::didOverflowStack):
(JSC::FTL::DFG::LowerDFGToB3::lowObject):
(JSC::FTL::DFG::LowerDFGToB3::lowRegExpObject):
(JSC::FTL::DFG::LowerDFGToB3::lowString):

  • runtime/RegExpObject.h:

(JSC::RegExpObject::createStructure):
(JSC::RegExpObject::offsetOfLastIndex):

LayoutTests:

  • js/regress/regexp-last-index-expected.txt: Added.
  • js/regress/regexp-last-index.html: Added.
  • js/regress/regexp-set-last-index-expected.txt: Added.
  • js/regress/regexp-set-last-index.html: Added.
  • js/regress/script-tests/regexp-last-index.js: Added.
  • js/regress/script-tests/regexp-set-last-index.js: Added.
11:28 PM Changeset in webkit [197836] by Carlos Garcia Campos
  • 1 edit
    3 deletes in releases/WebKitGTK/webkit-2.12/LayoutTests

Merge r197547 - Unreviewed, remove test with flaky timeout that doesn't test anything anymore. This test
was relevant back when arguments got torn off; something that we don't do anymore. It
uses a loop that waits for the top-tier compiler to compile it. We don't write tests
like that anymore.

  • js/dfg-osr-exit-between-create-and-tearoff-arguments-expected.txt: Removed.
  • js/dfg-osr-exit-between-create-and-tearoff-arguments.html: Removed.
  • js/script-tests/dfg-osr-exit-between-create-and-tearoff-arguments.js: Removed.
10:27 PM Changeset in webkit [197835] by Chris Dumez
  • 3 edits
    2 adds in trunk

Element with maximum tabIndex cannot be returned by nextElementWithGreaterTabIndex()
​https://bugs.webkit.org/show_bug.cgi?id=155215

Reviewed by Ryosuke Niwa.

Source/WebCore:

Element with maximum tabIndex cannot be returned by nextElementWithGreaterTabIndex()
due to a bug in r197726. This patch fixes the issue by only comparing
candidate.tabIndex to winningTabIndex if winner is non-null.

Test: fast/events/max-tabindex-focus.html

  • page/FocusController.cpp:

(WebCore::nextElementWithGreaterTabIndex):

LayoutTests:

Add test to make sure that an Element with a tabIndex equal to
2147483647 (maximum tabIndex) can be focused.

  • fast/events/max-tabindex-focus-expected.txt: Added.
  • fast/events/max-tabindex-focus.html: Added.
9:53 PM Changeset in webkit [197834] by ap@apple.com
  • 2 edits in trunk/Tools

Fix iOS Simulator EWS.

Unreviewed build fix.

  • Scripts/webkitpy/common/config/ports.py:
9:16 PM Changeset in webkit [197833] by fpizlo@apple.com
  • 27 edits
    6 adds in trunk

DFG should be able to constant-fold strings
​https://bugs.webkit.org/show_bug.cgi?id=155200

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This adds constant-folding of string1 + string2 and string.length. The actual folding
rule is easy, but there are some gotchas.

The problem is that the DFG cannot allocate new JSString objects until we are on the
main thread. So, DFG IR must have a node for a JSValue string constant that hasn't been
created yet - i.e. it doesn't have any concrete JSValue bits yet.

We have the ability to speak of such things, using LazyJSValue. But that's a class, not
a node type. This patch now adds a node type, LazyJSConstant, which is a Node that holds
a LazyJSValue.

This puts us in a weird situation: AI uses JSValue to represent constants. It would take
a lot of work to change it to use LazyJSValue. So, this implements the constant folding
in StrengthReductionPhase. I created a bug and put a FIXME about moving these rules into
AI.

OTOH, our experience in B3 shows that constant folding in strength reduction is quite
nice. It would totally make sense to have strength reduction have constant folding rules
that mirror the rules in AI, or to factor out the AI constant folding rules, the same
way that B3 factors out those rules into Value methods.

Another issue is how to represent the cumulative result of possibly many foldings. I
initially considered adding LazyJSValue kinds that represented concatenation. Folding
the concatenation to a constant meand that this constant was actually a LazyJSValue that
represented the concatenation of two other things. But this would get super messy if we
wanted to fold an operation that uses the results of another folded operation.

So, the JIT thread folds string operations by creating a WTF::String that contains the
result. The DFG::Graph holds a +1 on the underlying StringImpl, so we can pass the
StringImpl* around without reference counting. The LazyJSValue now has a special kind
that means: we created this StringImpl* on the JIT thread, and once the JIT is done, we
will relinquish ownership of it. LazyJSValue has some magic to emit code for these
to-be-created-JSStrings while also transferring ownership of the StringImpl from the JIT
thread to the main thread and registering the JSString with the GC.

This just implements folding for concatenation and GetArrayLength. It's just a proof of
concept for evil things I want to do later.

This change is a 2.5x speed-up on the string concatenation microbenchmarks I added in
this patch.

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGFrozenValue.cpp:

(JSC::DFG::FrozenValue::emptySingleton):
(JSC::DFG::FrozenValue::tryGetString):
(JSC::DFG::FrozenValue::dumpInContext):

  • dfg/DFGFrozenValue.h:

(JSC::DFG::FrozenValue::strength):

  • dfg/DFGGraph.h:
  • dfg/DFGLazyJSValue.cpp:

(JSC::DFG::LazyJSValue::newString):
(JSC::DFG::LazyJSValue::getValue):
(JSC::DFG::equalToStringImpl):
(JSC::DFG::LazyJSValue::tryGetStringImpl):
(JSC::DFG::LazyJSValue::tryGetString):
(JSC::DFG::LazyJSValue::strictEqual):
(JSC::DFG::LazyJSValue::switchLookupValue):
(JSC::DFG::LazyJSValue::emit):
(JSC::DFG::LazyJSValue::dumpInContext):

  • dfg/DFGLazyJSValue.h:

(JSC::DFG::LazyJSValue::LazyJSValue):
(JSC::DFG::LazyJSValue::knownStringImpl):
(JSC::DFG::LazyJSValue::kind):
(JSC::DFG::LazyJSValue::tryGetValue):
(JSC::DFG::LazyJSValue::character):
(JSC::DFG::LazyJSValue::stringImpl):

  • dfg/DFGMayExit.cpp:

(JSC::DFG::mayExit):

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToIdentityOn):
(JSC::DFG::Node::convertToLazyJSConstant):
(JSC::DFG::Node::convertToPutHint):
(JSC::DFG::Node::convertToPutClosureVarHint):
(JSC::DFG::Node::tryGetString):
(JSC::DFG::Node::promotedLocationDescriptor):

  • dfg/DFGNode.h:

(JSC::DFG::Node::convertToConstant):
(JSC::DFG::Node::convertToConstantStoragePointer):
(JSC::DFG::Node::castConstant):
(JSC::DFG::Node::hasLazyJSValue):
(JSC::DFG::Node::lazyJSValue):
(JSC::DFG::Node::initializationValueForActivation):

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileSetRegExpObjectLastIndex):
(JSC::DFG::SpeculativeJIT::compileLazyJSConstant):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileInt52Constant):
(JSC::FTL::DFG::LowerDFGToB3::compileLazyJSConstant):
(JSC::FTL::DFG::LowerDFGToB3::compileDoubleRep):

Source/WTF:

Also disable assertions about reference counting strings on the JIT thread. We will do
that now and it's OK.

  • wtf/text/StringImpl.h:

(WTF::StringImpl::ref):
(WTF::StringImpl::deref):

LayoutTests:

  • js/regress/script-tests/strcat-const.js: Added.

(foo):
(bar):

  • js/regress/script-tests/strcat-length-const.js: Added.

(foo):
(bar):

  • js/regress/strcat-const-expected.txt: Added.
  • js/regress/strcat-const.html: Added.
  • js/regress/strcat-length-const-expected.txt: Added.
  • js/regress/strcat-length-const.html: Added.
9:02 PM Changeset in webkit [197832] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Timelines keeps switching to overview instead of keeping the selected timeline
​https://bugs.webkit.org/show_bug.cgi?id=155212
<rdar://problem/25052504>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel.prototype.saveStateToCookie):
The sidebar was using out of date information in its tree outline causing it to
switch to the wrong sidebar. Use the up to date information from the recording view.

  • UserInterface/Views/TimelineTabContentView.js:

(WebInspector.TimelineTabContentView.prototype._recordingSelected):
Fix typo not getting the right timeline type.

8:39 PM Changeset in webkit [197831] by weinig@apple.com
  • 7 edits in trunk/Source/WebCore

Stop using the UserContentController for injecting the override style sheet from CaptionUserPreferences
​https://bugs.webkit.org/show_bug.cgi?id=155211

Reviewed by Dan Bernstein.

The UserContentController is going to become read only from WebCore's perspective. The CaptionUserPreferences
was relying on being able to set a UserStyleSheet on it, but this was really unnecessary complexity. Simplify
things by storing the style sheet's source directly on the Page and teaching ExtensionStyleSheets about it
explicitly.

  • dom/ExtensionStyleSheets.cpp:

(WebCore::ExtensionStyleSheets::updateInjectedStyleSheetCache):
If there is a captionUserPreferencesStyleSheet on the page, inject it.

  • page/CaptionUserPreferences.cpp:

(WebCore::CaptionUserPreferences::updateCaptionStyleSheetOveride):
Greatly simplify the code. Now, all this does is set the style sheet on each page.

  • page/Page.cpp:

(WebCore::Page::invalidateInjectedStyleSheetCacheInAllFrames):
Extract this out from UserContentController.

(WebCore::Page::setUserContentController):
Call the newly extracted invalidateInjectedStyleSheetCacheInAllFrames().

(WebCore::Page::captionUserPreferencesStyleSheet):
(WebCore::Page::setCaptionUserPreferencesStyleSheet):
Add getter/setter. When setting, invalidate the style sheet cache.

  • page/Page.h:

Add new members and functions.

  • page/UserContentController.cpp:

(WebCore::UserContentController::addUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheet):
(WebCore::UserContentController::removeUserStyleSheets):
(WebCore::UserContentController::removeAllUserContent):
Switch to calling invalidateInjectedStyleSheetCacheInAllFramesInAllPages().

(WebCore::UserContentController::invalidateInjectedStyleSheetCacheInAllFramesInAllPages):
Rename and implement in terms of Page::invalidateInjectedStyleSheetCacheInAllFrames().

  • page/UserContentController.h:

Rename function.

6:50 PM Changeset in webkit [197830] by aakash_jain@apple.com
  • 2 edits in trunk/Tools

Booting multiple iOS simulator parallely fails sometimes
​https://bugs.webkit.org/show_bug.cgi?id=155208
<rdar://problem/25019651>

Reviewed by Darin Adler.

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort.setup_test_run): Increase the time delay between subsequent
simulator boot.

6:27 PM Changeset in webkit [197829] by weinig@apple.com
  • 2 edits in trunk/Source/WebKit2

Roll r197632 back in now that the bots have caught up.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView textInputTraits]):

6:17 PM Changeset in webkit [197828] by ap@apple.com
  • 2 edits in trunk/Tools

Add iOS debug testers to flakiness dashboard
​https://bugs.webkit.org/show_bug.cgi?id=155206

Reviewed by Darin Adler.

  • TestResultServer/static-dashboards/builders.jsonp:
6:06 PM Changeset in webkit [197827] by Joseph Pecoraro
  • 22 edits
    3 copies in trunk/Source

Web Inspector: Memory Timeline should show MemoryPressure events
​https://bugs.webkit.org/show_bug.cgi?id=155158
<rdar://problem/25026610>

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/protocol/Memory.json:

Source/WebCore:

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::releaseMemory):
When responding to memory pressure, notify page inspectors.

  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

Remove unused includes.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didHandleMemoryPressureImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::playbackStarted):
(WebCore::InspectorInstrumentation::playbackPaused):
(WebCore::InspectorInstrumentation::playbackFinished):
(WebCore::InspectorInstrumentation::playbackHitPosition):
(WebCore::InspectorInstrumentation::didHandleMemoryPressure):

  • inspector/InspectorMemoryAgent.cpp:

(WebCore::InspectorMemoryAgent::didCreateFrontendAndBackend):
(WebCore::InspectorMemoryAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorMemoryAgent::enable):
(WebCore::InspectorMemoryAgent::disable):
(WebCore::InspectorMemoryAgent::didHandleMemoryPressure):

  • inspector/InspectorMemoryAgent.h:
  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::reset):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::inspectorMemoryAgent):
(WebCore::InstrumentingAgents::setInspectorMemoryAgent):
Plumbing to notify the right active inspector.

Source/WebInspectorUI:

  • UserInterface/Main.html:

New resources.

  • UserInterface/Base/Main.js:

(WebInspector.loaded):

  • UserInterface/Controllers/MemoryManager.js:

(WebInspector.MemoryManager):
(WebInspector.MemoryManager.prototype.memoryPressure):

  • UserInterface/Protocol/MemoryObserver.js:

(WebInspector.MemoryObserver.prototype.memoryPressure):
New manager for Memory domain events.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager):
(WebInspector.TimelineManager.defaultInstruments):
(WebInspector.TimelineManager.prototype._memoryPressure):

  • UserInterface/Models/TimelineRecording.js:

(WebInspector.TimelineRecording.prototype.addMemoryPressureEvent):
Add events to the Memory Timeline of the active recording.

  • UserInterface/Models/MemoryTimeline.js:

(WebInspector.MemoryTimeline.prototype.get memoryPressureEvents):
(WebInspector.MemoryTimeline.prototype.addMemoryPressureEvent):
(WebInspector.MemoryTimeline.prototype.reset):
(WebInspector.MemoryTimeline):

  • UserInterface/Models/Timeline.js:

(WebInspector.Timeline.create):
Create a specific MemoryTimeline to hold records and memory pressure events.

  • UserInterface/Models/MemoryPressureEvent.js:

(WebInspector.MemoryPressureEvent):
(WebInspector.MemoryPressureEvent.fromPayload):
(WebInspector.MemoryPressureEvent.prototype.get timestamp):
(WebInspector.MemoryPressureEvent.prototype.get severity):
Model object for a memory pressure event.

  • UserInterface/Views/MemoryTimelineOverviewGraph.css:

(.timeline-overview-graph.memory .memory-pressure-event):

  • UserInterface/Views/MemoryTimelineOverviewGraph.js:

(WebInspector.MemoryTimelineOverviewGraph):
(WebInspector.MemoryTimelineOverviewGraph.prototype.reset):
(WebInspector.MemoryTimelineOverviewGraph.prototype._visibleMemoryPressureEvents):
(WebInspector.MemoryTimelineOverviewGraph.prototype._memoryTimelineMemoryPressureEventAdded):
Include markers for memory pressure events.

6:06 PM Changeset in webkit [197826] by Joseph Pecoraro
  • 7 edits
    2 adds in trunk

Web Inspector: Add Heap domain start/stop tracking commands
​https://bugs.webkit.org/show_bug.cgi?id=155190

Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::willDestroyFrontendAndBackend):
(Inspector::InspectorHeapAgent::startTracking):
(Inspector::InspectorHeapAgent::stopTracking):

  • inspector/agents/InspectorHeapAgent.h:
  • inspector/protocol/Heap.json:

Source/WebInspectorUI:

  • UserInterface/Protocol/HeapObserver.js:

(WebInspector.HeapObserver.prototype.trackingStart):
(WebInspector.HeapObserver.prototype.trackingComplete):
To be used when we have a HeapAllocationsInstrument and timeline.

LayoutTests:

  • inspector/heap/tracking-expected.txt: Added.
  • inspector/heap/tracking.html: Added.
6:05 PM Changeset in webkit [197825] by mmaxfield@apple.com
  • 8 edits in trunk/Source/WebCore

Delete dead scrolling code
​https://bugs.webkit.org/show_bug.cgi?id=155210

Reviewed by Simon Fraser.

No new tests because there is no behavior change.

  • page/FrameView.cpp:

(WebCore::FrameView::layerForScrolling): Deleted.

  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::scrollLayerForScrollableArea): Deleted.

  • page/scrolling/ScrollingCoordinator.h:
  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::horizontalScrollbar):
(WebCore::ScrollableArea::verticalScrollbar):
(WebCore::ScrollableArea::tiledBacking):
(WebCore::ScrollableArea::layerForHorizontalScrollbar):
(WebCore::ScrollableArea::layerForVerticalScrollbar):
(WebCore::ScrollableArea::layerForScrollCorner):
(WebCore::ScrollableArea::layerForOverhangAreas):
(WebCore::ScrollableArea::layerForScrolling): Deleted.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects): Deleted.

  • rendering/RenderLayer.h:
5:44 PM Changeset in webkit [197824] by commit-queue@webkit.org
  • 3 edits
    1 move in trunk/Source/WebInspectorUI

Web Inspector: Make debugging Test.html easier
​https://bugs.webkit.org/show_bug.cgi?id=155207

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Brian Burg.

  • UserInterface/Base/InspectorFrontendHostStub.js: Renamed from Source/WebInspectorUI/UserInterface/Protocol/InspectorFrontendHostStub.js.

(window.InspectorFrontendHost.WebInspector.InspectorFrontendHostStub.prototype.unbufferedLog):
Add new stub for test function.

  • UserInterface/Main.html:
  • UserInterface/Test.html:

Move the stub to the Base directory.

5:40 PM Changeset in webkit [197823] by mmaxfield@apple.com
  • 2 edits in trunk

[EFL] Enable the SVG -> OTF Font Converter
​https://bugs.webkit.org/show_bug.cgi?id=155192

Reviewed by Gyuyoung Kim.

  • Source/cmake/OptionsEfl.cmake:
5:38 PM Changeset in webkit [197822] by commit-queue@webkit.org
  • 10 edits
    5 adds in trunk

Web Inspector: Add a way to create a Heap Snapshot
​https://bugs.webkit.org/show_bug.cgi?id=155188

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Brian Burg.

Source/JavaScriptCore:

  • inspector/agents/InspectorHeapAgent.h:
  • inspector/protocol/Heap.json:
  • inspector/agents/InspectorHeapAgent.cpp:

(Inspector::InspectorHeapAgent::snapshot):
Take a heap snapshot and return the JSON string result.

  • inspector/protocol/Debugger.json:

Remove unused optional inferredName. Our displayName would be inferred.

Source/WebInspectorUI:

  • UserInterface/Main.html:
  • UserInterface/Test.html:

Add new Model resources.

  • UserInterface/Models/HeapSnapshot.js: Added.

(WebInspector.HeapSnapshotClassCategory):
(WebInspector.HeapSnapshot):
(WebInspector.HeapSnapshot.fromPayload):
(WebInspector.HeapSnapshot.prototype.get rootNode):
(WebInspector.HeapSnapshot.prototype.get nodes):
(WebInspector.HeapSnapshot.prototype.get identifier):
(WebInspector.HeapSnapshot.prototype.get instances):
(WebInspector.HeapSnapshot.prototype.get categories):
(WebInspector.HeapSnapshot.prototype.get totalSize):
(WebInspector.HeapSnapshot.prototype.get totalObjectCount):
(WebInspector.HeapSnapshot.prototype.instancesWithClassName):
(WebInspector.HeapSnapshot.prototype.nodeWithObjectIdentifier):

  • UserInterface/Models/HeapSnapshotEdge.js: Added.

(WebInspector.HeapSnapshotEdge):
(WebInspector.HeapSnapshotEdge.prototype.stringify):

  • UserInterface/Models/HeapSnapshotNode.js: Added.

(WebInspector.HeapSnapshotNode):
Data structures for a HeapSnapshot.

LayoutTests:

  • inspector/heap/snapshot-expected.txt: Added.
  • inspector/heap/snapshot.html: Added.
5:05 PM Changeset in webkit [197821] by oliver@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix ios bot build.

5:00 PM Changeset in webkit [197820] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Move two indexeddb test skips out of wk2/TestExpectations and in to TestExpectations.

Unreviewed test gardening.

4:40 PM Changeset in webkit [197819] by andersca@apple.com
  • 2 edits in trunk/Source/WTF

Fix AppKitCompatibilityDeclarations build.

  • wtf/mac/AppKitCompatibilityDeclarations.h:

Remove duplicate declarations, conditionally define NSTextAlignment and
add a NSWindowStyleMask typedef.

4:25 PM Changeset in webkit [197818] by oliver@apple.com
  • 1 edit in trunk/Source/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp

Build fix

4:21 PM Changeset in webkit [197817] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Implement Function.name support for getters/setters and inferring name of function properties.
​https://bugs.webkit.org/show_bug.cgi?id=154865

Rubber-stamped by Joseph Pecoraro.

Follow up to the fix for this bug: adding a few small clean-ups for issues Joe
pointed out in the bug.

  • runtime/JSBoundSlotBaseFunction.cpp:

(JSC::JSBoundSlotBaseFunction::create):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::putToPrimitiveByIndex):

4:08 PM Changeset in webkit [197816] by oliver@apple.com
  • 21 edits in trunk

Start moving to separated writable and executable mappings in the JIT
​https://bugs.webkit.org/show_bug.cgi?id=155178

Reviewed by Fil Pizlo.

Source/JavaScriptCore:

Start moving to a separate writable and executable heap for the various
JITs.

As part of our work to harden the JIT against various attacks, we're
moving away from our current RWX heap and on to using separate RW and X
mappings. This means that simply leaking the location of the executable
mapping is not sufficient to compromise JSC, so we can continue to
use direct executable pointers in our GC objects (which we need for
performance), but keep the writable pointer in only a single location
so that we are less likely to leak the address. To further obscure the
address of the writable region we place it in an execute only region
of memory so that it is not possible to read the location from
anywhere. That means an attacker must have at least partial control
of PC (to call jitMemCopy) before they can start to attack the JIT.

This work is initially ARM64 only, as we use as the jitMemCopy is
currently specific to that platform's calling conventions and layout.
We're just landing it in the current form so that we can at least
ensure it doesn't regress.

  • Configurations/FeatureDefines.xcconfig:
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::ldp):
(JSC::ARM64Assembler::ldnp):
(JSC::ARM64Assembler::fillNops):
(JSC::ARM64Assembler::stp):
(JSC::ARM64Assembler::stnp):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::replaceWithLoad):
(JSC::ARM64Assembler::replaceWithAddressComputation):
(JSC::ARM64Assembler::setPointer):
(JSC::ARM64Assembler::repatchInt32):
(JSC::ARM64Assembler::repatchCompact):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
(JSC::ARM64Assembler::loadStoreRegisterPairOffset):
(JSC::ARM64Assembler::loadStoreRegisterPairNonTemporal):

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::allocate):

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::LinkBuffer):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::sub64):
(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::loadPair64):
(JSC::MacroAssemblerARM64::loadPair64WithNonTemporalAccess):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::storePair64):
(JSC::MacroAssemblerARM64::storePair64WithNonTemporalAccess):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::branchAdd64):
(JSC::MacroAssemblerARM64::branchSub64):

  • jit/ExecutableAllocator.h:

(JSC::performJITMemcpy):

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::initializeSeparatedWXHeaps):
(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:

Source/WebCore:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Update feature defines.

  • wtf/FeatureDefines.h:
  • wtf/Platform.h: ARM64 for now.

Tools:

Making run-jsc-benchmarks slightly happier on my machine.

  • Scripts/run-jsc-benchmarks:
4:01 PM Changeset in webkit [197815] by mark.lam@apple.com
  • 21 edits
    3 adds in trunk

Implement Function.name support for getters/setters and inferring name of function properties.
​https://bugs.webkit.org/show_bug.cgi?id=154865

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  1. toString() no longer uses the value of Function.name as the name of the function in the returned string, because ...
  1. Function.name is supposed to be configurable. Hence, it can be made writable and can be set to any JSValue, or deleted.
  1. Function.prototype.toString() is supposed to produce a string that can be

eval'ed. Hence, for JS functions, the function name in the produced
string must be a legal function name (and not some arbitrary value set in
Function.name). For example, while a number is a legal value for
Function.name, it is not legal as the function name in the toString()
string.

Instead, we'll always use the original name from the JS source that the
function was parsed from.

  1. JSFunction::name() now always return the original name, not the value of the Function.name property. As a result, it also no longer needs an ExecState* arg.

If the original name is an empty string, JSFunction::name() will use the
inferred name.

  1. For JS functions, the original name can be attained from their FunctionExecutable object.

For host/native functions (which do not have a FunctionExecutable), we get the
"original" name from its NativeExecutable.

  1. The m_hostFunctionStubMap now keys its NativeExecutable pointers using the original name, in addition to the native function and constructor pointers.

This is needed because we want a different NativeExecutable for functions with
a different name (to satisfy (3) above).

  1. Changed JSBoundFunction to store the name of its bound function in its NativeExecutable. This will later be used to generate the toString() string. It's Function.name value is eagerly initialized at construction time.
  1. Function.name for getters/setters are now prefixed with "get"/"set". This was done both for the JSBoundSlotBaseFunctions and JS definable get/set functions.
  1. Added InternalFunction::m_originalName so that we can use it to generate the toString() string. We're storing it as a JSString instead of a WTF::String only because we want InternalFunction to be continue to be trivially destructible.
  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::functionDetails):

  • jit/JITThunks.cpp:

(JSC::JITThunks::finalize):
(JSC::JITThunks::hostFunctionStub):

  • jit/JITThunks.h:
  • runtime/Executable.h:
  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):

  • runtime/InternalFunction.cpp:

(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::visitChildren):
(JSC::InternalFunction::name):
(JSC::InternalFunction::displayName):

  • runtime/InternalFunction.h:
  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::create):
(JSC::JSBoundFunction::visitChildren):
(JSC::JSBoundFunction::toStringName): Deleted.

  • runtime/JSBoundFunction.h:

(JSC::JSBoundFunction::boundThis):
(JSC::JSBoundFunction::boundArgs):
(JSC::JSBoundFunction::createStructure):

  • runtime/JSBoundSlotBaseFunction.cpp:

(JSC::boundSlotBaseFunctionCall):
(JSC::JSBoundSlotBaseFunction::create):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::initializeRareData):
(JSC::JSFunction::name):
(JSC::JSFunction::displayName):
(JSC::JSFunction::calculatedDisplayName):
(JSC::JSFunction::reifyName):

  • runtime/JSFunction.h:
  • tests/es6.yaml:

LayoutTests:

  • js/function-toString-vs-name-expected.txt: Added.
  • js/function-toString-vs-name.html: Added.
  • js/script-tests/function-toString-vs-name.js: Added.
3:59 PM Changeset in webkit [197814] by mmaxfield@apple.com
  • 2 edits in trunk

[GTK] Enable the SVG -> OTF Font Converter
​https://bugs.webkit.org/show_bug.cgi?id=155191

Reviewed by Martin Robinson.

  • Source/cmake/OptionsGTK.cmake:
3:58 PM Changeset in webkit [197813] by andersca@apple.com
  • 2 edits in trunk/Tools

Use NSUInteger instead of NSWindowStyleMask.

  • MiniBrowser/mac/MiniBrowser_Prefix.pch:
3:56 PM Changeset in webkit [197812] by andersca@apple.com
  • 4 edits in trunk/Tools

Fix build.

We intentionally don't use AppKitCompatibilityDeclarations.h here, since we want
MiniBrowser to build without WTF.

  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate _updateNewWindowKeyEquivalents]):

  • MiniBrowser/mac/BrowserWindowController.m:

(-[BrowserWindowController windowDidLoad]):

  • MiniBrowser/mac/MiniBrowser_Prefix.pch:
3:52 PM Changeset in webkit [197811] by mmaxfield@apple.com
  • 12 edits in trunk

Font size computed style is innaccurate
​https://bugs.webkit.org/show_bug.cgi?id=154705
<rdar://problem/23474068>

Reviewed by Timothy Hatcher.

Source/WebCore:

Safari rounds the font size value reported to getComputedStyle(). Neither Firefox
nor Chrome do this.

Covered by existing tests.

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::ComputedStyleExtractor::getFontSizeCSSValuePreferringKeyword):
(WebCore::fontSizeFromStyle):

LayoutTests:

Update expected results.

  • css3/calc/font-size-fractional-expected.txt:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-relative-font-size.html:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-relative-font-size-expected.txt:
  • editing/mac/attributed-string/font-size-expected.txt:
  • editing/mac/attributed-string/vertical-align-expected.txt:
  • platform/mac-mavericks/editing/mac/attributed-string/font-size-expected.txt:
  • platform/mac-mavericks/editing/mac/attributed-string/vertical-align-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/font-size-expected.txt:
  • platform/mac-yosemite/editing/mac/attributed-string/vertical-align-expected.txt:
3:44 PM Changeset in webkit [197810] by andersca@apple.com
  • 2 edits
    1 add in trunk/Source/WTF

Add AppKit compatibility header
​https://bugs.webkit.org/show_bug.cgi?id=155202

Reviewed by Beth Dakin.

  • WTF.xcodeproj/project.pbxproj:
  • wtf/mac/AppKitCompatibilityDeclarations.h: Added.
3:31 PM Changeset in webkit [197809] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking storage/domstorage/events/basic-body-attribute.html as flaky on ios-simulator-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155201

Unreviewed test gardening.

  • platform/ios-simulator-wk2/TestExpectations:
3:30 PM Changeset in webkit [197808] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2][Mac] Allow processes to set "fast-dev-casheable" bit in Network Process
​https://bugs.webkit.org/show_bug.cgi?id=155189
<rdar://problem/25042678>

Reviewed by Alexey Proskuryakov.

Update the NetworkProcess sandbox profiles with a declaration that using the
system-fctl to touch the "hot file" flag (to support caching operations)
is allowed. I should have done this in Bug 154503, but did not.

  • NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in: Add sandbox permission.
3:16 PM Changeset in webkit [197807] by adachan@apple.com
  • 3 edits in trunk/Source/WebCore

Enable API related to the video fullscreen layer in MediaPlayerPrivateMediaStreamAVFObjC for Mac.
​https://bugs.webkit.org/show_bug.cgi?id=153239

Reviewed by Eric Carlson.

Reuse VideoFullscreenLayerManager to manage moving the video layer between the fullscreen
layer and the inline layer depending on the current presentation mode.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaStreamAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::MediaPlayerPrivateMediaStreamAVFObjC):
Create m_videoFullscreenLayerManager.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::platformLayer):
Return the video inline layer from the VideoFullscreenLayerManager.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::createPreviewLayers):
Call VideoFullscreenLayerManager::setVideoLayer() with the m_videoBackgroundLayer. To make sure
the preview layer (a sublayer of m_videoBackgroundLayer) resize according to aspect ratio, set
its contents gravity to kCAGravityResizeAspect. Also, set its autoresizing mask so it'll resize
with its superlayer.
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenLayer):
Call VideoFullscreenLayerManager::setVideoFullscreenLayer().
(WebCore::MediaPlayerPrivateMediaStreamAVFObjC::setVideoFullscreenFrame):
Call VideoFullscreenLayerManager::setVideoFullscreenFrame().

3:02 PM Changeset in webkit [197806] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Miscellaneous inspector fixes for typos / stale code
​https://bugs.webkit.org/show_bug.cgi?id=155193

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Timothy Hatcher.

  • UserInterface/Models/SourceCodeLocation.js:

(WebInspector.SourceCodeLocation.prototype._locationString):
Fix whitespace.

  • UserInterface/Views/ApplicationCacheFrameContentView.js:

(WebInspector.ApplicationCacheFrameContentView):
Remove unused class name.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._showPopoverForFunction.didGetDetails):
Remove inferredName, as that was never sent by our backend and is getting removed.

  • UserInterface/Views/TimelineRuler.js:

(WebInspector.TimelineRuler.prototype._handleMouseUp):
Fix variable name typo.

2:29 PM Changeset in webkit [197805] by ap@apple.com
  • 4 edits in trunk/Tools

Add iOS simulator EWS that runs tests
​https://bugs.webkit.org/show_bug.cgi?id=155175

Reviewed by Lucas Forschler.

  • QueueStatusServer/config/queues.py:
  • Scripts/webkitpy/common/config/ews.json:
  • Scripts/webkitpy/common/config/ports.py:
2:22 PM Changeset in webkit [197804] by mmaxfield@apple.com
  • 11 edits
    2 adds in trunk

[Font Loading] Crash when a single load request causes multiple fonts to fail loading
​https://bugs.webkit.org/show_bug.cgi?id=155009

Reviewed by Simon Fraser.

Source/WebCore:

In JavaScript, the first promise fulfillment/failure wins. However, in C++, any
subsequent fulfillments/failures cause a crash.

Test: fast/text/font-face-set-document-multiple-failure.html

  • css/CSSFontFace.cpp:

(WebCore::iterateClients): Notifying a client may cause some other client
to be destroyed, thereby modifying the clients set. This function allows
for notifying clients in a resilient manner.
(WebCore::CSSFontFace::setStyle): Update to use iterateClients().
(WebCore::CSSFontFace::setWeight): Ditto.
(WebCore::CSSFontFace::setUnicodeRange): Ditto.
(WebCore::CSSFontFace::setVariantLigatures): Ditto.
(WebCore::CSSFontFace::setVariantPosition): Ditto.
(WebCore::CSSFontFace::setVariantCaps): Ditto.
(WebCore::CSSFontFace::setVariantNumeric): Ditto.
(WebCore::CSSFontFace::setVariantAlternates): Ditto.
(WebCore::CSSFontFace::setVariantEastAsian): Ditto.
(WebCore::CSSFontFace::setFeatureSettings): Ditto.
(WebCore::CSSFontFace::setStatus): Ditto.
(WebCore::CSSFontFace::notifyClientsOfFontPropertyChange): Deleted.

  • css/CSSFontFace.h: Adding a way for clients to make sure they don't register

or deregister another client.

  • css/CSSFontFaceSet.cpp:

(WebCore::CSSFontFaceSet::guardAgainstClientRegistrationChanges): Simple
ref()/deref() pair.
(WebCore::CSSFontFaceSet::stopGuardingAgainstClientRegistrationChanges):

  • css/CSSFontFaceSet.h:
  • css/FontFace.cpp: Ditto.

(WebCore::FontFace::guardAgainstClientRegistrationChanges):
(WebCore::FontFace::stopGuardingAgainstClientRegistrationChanges):

  • css/FontFace.h:
  • css/FontFaceSet.cpp:

(WebCore::FontFaceSet::faceFinished): Make sure that we only fulfil or reject
a promise once.

  • css/FontFaceSet.h:
  • dom/Document.cpp:

(WebCore::Document::fonts): The CSSFontFaces inside the CSSFontSelector get
created during style recalc. We may be in a state where there is a style
recalc pending. In order to make sure the Javascript API sees the current
state of the world, force a style recalc here (but only if one is pending).

LayoutTests:

  • fast/text/font-face-set-document-multiple-failure-expected.txt: Added.
  • fast/text/font-face-set-document-multiple-failure.html: Added.
1:58 PM Changeset in webkit [197803] by commit-queue@webkit.org
  • 21 edits
    1 delete in trunk

Unreviewed, rolling out r197793 and r197799.
​https://bugs.webkit.org/show_bug.cgi?id=155195

something weird happened while landing this and everything
broke (Requested by olliej on #webkit).

Reverted changesets:

"Start moving to separated writable and executable mappings in
the JIT"
​https://bugs.webkit.org/show_bug.cgi?id=155178
​http://trac.webkit.org/changeset/197793

"arm64 build fix after r197793."
​http://trac.webkit.org/changeset/197799

1:56 PM Changeset in webkit [197802] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Images being blocked by CSP 2.0
​https://bugs.webkit.org/show_bug.cgi?id=155182
<rdar://problem/25040640>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-08
Reviewed by Daniel Bates.

  • UserInterface/Main.html:

Allow Web Inspector to load file: and blob: image resources.
Also blob: media and font resources.

1:44 PM Changeset in webkit [197801] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

[WK2] Grant explicit read access to ManagedPreferences
​https://bugs.webkit.org/show_bug.cgi?id=155173
<rdar://problem/24910550>

Reviewed by Alexey Proskuryakov.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb: Add new

read permission.

1:42 PM Changeset in webkit [197800] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip fast/events/prevent-default-prevents-interaction-with-scrollbars.html on ios-simulator

Unreviewed test gardening.

The test relies on mouse events, which are unsupported on ios-simulator.

  • platform/ios-simulator/TestExpectations:
1:36 PM Changeset in webkit [197799] by achristensen@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

arm64 build fix after r197793.

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::initializeBulletproofJIT):
(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):
Use consistent ENABLE macro. It looks like it was partially renamed.

1:33 PM Changeset in webkit [197798] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip css3/filters tests that seem to cause a crash on ios-simulator
​https://bugs.webkit.org/show_bug.cgi?id=153933

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
1:21 PM Changeset in webkit [197797] by ggaren@apple.com
  • 7 edits
    1 add in trunk/Source/bmalloc

Unreviewed, rolling in r197722.
​https://bugs.webkit.org/show_bug.cgi?id=155171

The right calculation for our static_assert is actually:

sizeof(SmallChunk) % vmPageSize + 2 * smallMax <= vmPageSize

instead of:

sizeof(SmallChunk) % vmPageSize + smallMax <= vmPageSize

smallMax is not enough because line metadata might require us to begin
allocation at an offset as large as smallMax, so we need 2 * smallMax.

Once correct, this static_assert fires, and we fix it by increasing
the alignment of SmallChunk.

Restored changeset:

"bmalloc: Use List<T> instead of Vector<T> in some places"
​https://bugs.webkit.org/show_bug.cgi?id=155150
​http://trac.webkit.org/changeset/197722

1:15 PM Changeset in webkit [197796] by fpizlo@apple.com
  • 9 edits
    2 adds in trunk/Source/JavaScriptCore

Regexp matching should incur less call overhead
​https://bugs.webkit.org/show_bug.cgi?id=155181

Reviewed by Geoffrey Garen.

Previously we had DFG/FTL code call into the DFGOperation, which then called in to
RegExpObject, which then called into createRegExpMatchesArray, which then called into
RegExp, which then called the code generated by Yarr.

Now we have DFG/FTL code call into the DFGOperation, which does all of the things and calls
into code generated by Yarr.

This is another tiny Octane/regexp speed-up.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOperations.cpp:
  • runtime/RegExp.cpp:

(JSC::regExpFlags):
(JSC::RegExp::compile):
(JSC::RegExp::match):
(JSC::RegExp::compileMatchOnly):
(JSC::RegExp::deleteCode):
(JSC::RegExpFunctionalTestCollector::clearRegExp): Deleted.
(JSC::RegExp::compileIfNecessary): Deleted.
(JSC::RegExp::compileIfNecessaryMatchOnly): Deleted.

  • runtime/RegExp.h:
  • runtime/RegExpInlines.h: Added.

(JSC::RegExpFunctionalTestCollector::clearRegExp):
(JSC::RegExp::compileIfNecessary):
(JSC::RegExp::matchInline):
(JSC::RegExp::compileIfNecessaryMatchOnly):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createEmptyRegExpMatchesArray):
(JSC::createStructureImpl):
(JSC::tryCreateUninitializedRegExpMatchesArray): Deleted.
(JSC::createRegExpMatchesArray): Deleted.

  • runtime/RegExpMatchesArray.h:

(JSC::tryCreateUninitializedRegExpMatchesArray):
(JSC::createRegExpMatchesArray):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):
(JSC::RegExpObject::exec):
(JSC::RegExpObject::match):
(JSC::getLastIndexAsUnsigned): Deleted.

  • runtime/RegExpObject.h:

(JSC::RegExpObject::getLastIndex):
(JSC::RegExpObject::test):
(JSC::RegExpObject::testInline):

  • runtime/RegExpObjectInlines.h: Added.

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

1:02 PM Changeset in webkit [197795] by andersca@apple.com
  • 12 edits in trunk/Source/WebKit2

Ignore deprecation warnings.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::stopNSAppRunLoop):

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::mouseEventTypeForEvent):
(WebKit::clickCountForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::textFromEvent):
(WebKit::unmodifiedTextFromEvent):
(WebKit::isKeypadEvent):
(WebKit::isKeyUpEvent):
(WebKit::modifiersForEvent):
(WebKit::WebEventFactory::createWebKeyboardEvent):

  • UIProcess/API/Cocoa/WKNavigationAction.mm:

(toNSEventModifierFlags):

  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::becomeFirstResponder):
(WebKit::WebViewImpl::updateContentInsetsIfAutomatic):
(WebKit::WebViewImpl::viewDidMoveToWindow):
(WebKit::WebViewImpl::postFakeMouseMovedEventForFlagsChangedEvent):
(WebKit::WebViewImpl::createFullScreenWindow):
(WebKit::WebViewImpl::sendToolTipMouseExited):
(WebKit::WebViewImpl::sendToolTipMouseEntered):
(WebKit::applicationFlagsForDrag):
(WebKit::WebViewImpl::setLastMouseDownEvent):
(WebKit::WebViewImpl::doneWithKeyEvent):
(WebKit::WebViewImpl::collectKeyboardLayoutCommandsForEvent):
(WebKit::WebViewImpl::performKeyEquivalent):

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::beginModal):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::showContextMenu):

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformCanAttach):

  • UIProcess/mac/WebPopupMenuProxyMac.mm:

(WebKit::WebPopupMenuProxyMac::populate):
(WebKit::WebPopupMenuProxyMac::showPopupMenu):

  • WebProcess/Plugins/PDF/DeprecatedPDFPlugin.mm:

(WebKit::modifierFlagsFromWebEvent):
(WebKit::getEventTypeFromWebEvent):

  • WebProcess/Plugins/PDF/PDFPluginTextAnnotation.mm:

(WebKit::cssAlignmentValueForNSTextAlignment):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::convertImageToBitmap):

12:57 PM Changeset in webkit [197794] by mark.lam@apple.com
  • 28 edits
    2 deletes in trunk/Source

synthesizePrototype() and friends need to be followed by exception checks (or equivalent).
​https://bugs.webkit.org/show_bug.cgi?id=155169

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

With the exception checks, we may end up throwing new exceptions over an existing
one that has been thrown but not handled yet, thereby obscuring it. It may also
mean that the VM will continue running on potentially unstable state, which may
have undesirable consequences.

I first observed this in some failed assertion while running tests on a patch for
​https://bugs.webkit.org/show_bug.cgi?id=154865.

Performance is neutral with this patch (tested on x86_64).

  1. Deleted JSNotAnObject, and removed all uses of it.
  1. Added exception checks, when needed, following calls to synthesizePrototype() and JSValue::toObject().

The cases that do not need an exception check are the ones that already ensures
that JSValue::toObject() is only called on a value that is convertible to an
object. In those cases, I added an assertion that no exception was thrown
after the call.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/ScriptCallStackFactory.cpp:

(Inspector::createScriptCallStackFromException):

  • interpreter/Interpreter.cpp:
  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncConcat):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
(JSC::arrayProtoFuncValues):
(JSC::arrayProtoFuncEntries):
(JSC::arrayProtoFuncKeys):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/ExceptionHelpers.cpp:
  • runtime/JSCJSValue.cpp:

(JSC::JSValue::toObjectSlowCase):
(JSC::JSValue::toThisSlowCase):
(JSC::JSValue::synthesizePrototype):
(JSC::JSValue::putToPrimitive):
(JSC::JSValue::putToPrimitiveByIndex):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::getPropertySlot):
(JSC::JSValue::get):

  • runtime/JSFunction.cpp:
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncProtoGetter):

  • runtime/JSNotAnObject.cpp: Removed.
  • runtime/JSNotAnObject.h: Removed.
  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorDefineProperties):
(JSC::objectConstructorCreate):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncValueOf):
(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncToString):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:

Source/WebCore:

No new tests because this issue is covered by existing tests when the fix for
​https://bugs.webkit.org/show_bug.cgi?id=154865 lands. That patch is waiting for
this patch to land first so as to not introduce test failures.

  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/JSDeviceMotionEventCustom.cpp:

(WebCore::readAccelerationArgument):
(WebCore::readRotationRateArgument):

  • bindings/js/JSGeolocationCustom.cpp:

(WebCore::createPositionOptions):

  • bindings/js/JSHTMLCanvasElementCustom.cpp:

(WebCore::get3DContextAttributes):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateConstructorDefinition):

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

(WebCore::JSTestEventConstructorConstructor::construct):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getTypeFlags):

  • html/HTMLMediaElement.cpp:

(WebCore::setPageScaleFactorProperty):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):

12:53 PM Changeset in webkit [197793] by oliver@apple.com
  • 21 edits
    1 add in trunk

Start moving to separated writable and executable mappings in the JIT
​https://bugs.webkit.org/show_bug.cgi?id=155178

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Start moving to a separate writable and executable heap for the various
JITs.

As part of our work to harden the JIT against various attacks, we're
moving away from our current RWX heap and on to using separate RW and X
mappings. This means that simply leaking the location of the executable
mapping is not sufficient to compromise JSC, so we can continue to
use direct executable pointers in our GC objects (which we need for
performance), but keep the writable pointer in only a single location
so that we are less likely to leak the address. To further obscure the
address of the writable region we place it in an execute only region
of memory so that it is not possible to read the location from
anywhere. That means an attacker must have at least partial control
of PC (to call jitMemCopy) before they can start to attack the JIT.

This work is initially ARM64 only, as we use as the jitMemCopy is
currently specific to that platform's calling conventions and layout.
We're just landing it in the current form so that we can at least
ensure it doesn't regress.

  • Configurations/FeatureDefines.xcconfig:
  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::ldp):
(JSC::ARM64Assembler::ldnp):
(JSC::ARM64Assembler::fillNops):
(JSC::ARM64Assembler::stp):
(JSC::ARM64Assembler::stnp):
(JSC::ARM64Assembler::replaceWithJump):
(JSC::ARM64Assembler::replaceWithLoad):
(JSC::ARM64Assembler::replaceWithAddressComputation):
(JSC::ARM64Assembler::setPointer):
(JSC::ARM64Assembler::repatchInt32):
(JSC::ARM64Assembler::repatchCompact):
(JSC::ARM64Assembler::linkJumpOrCall):
(JSC::ARM64Assembler::linkCompareAndBranch):
(JSC::ARM64Assembler::linkConditionalBranch):
(JSC::ARM64Assembler::linkTestAndBranch):
(JSC::ARM64Assembler::loadStoreRegisterPairOffset):
(JSC::ARM64Assembler::loadStoreRegisterPairNonTemporal):

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::copyCompactAndLinkCode):
(JSC::LinkBuffer::allocate):

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::LinkBuffer):

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::sub64):
(JSC::MacroAssemblerARM64::load64):
(JSC::MacroAssemblerARM64::loadPair64):
(JSC::MacroAssemblerARM64::loadPair64WithNonTemporalAccess):
(JSC::MacroAssemblerARM64::load8):
(JSC::MacroAssemblerARM64::store64):
(JSC::MacroAssemblerARM64::storePair64):
(JSC::MacroAssemblerARM64::storePair64WithNonTemporalAccess):
(JSC::MacroAssemblerARM64::store8):
(JSC::MacroAssemblerARM64::branchAdd64):
(JSC::MacroAssemblerARM64::branchSub64):

  • jit/ExecutableAllocator.h:

(JSC::performJITMemcpy):

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::FixedVMPoolExecutableAllocator::FixedVMPoolExecutableAllocator):
(JSC::FixedVMPoolExecutableAllocator::initializeBulletproofJIT):
(JSC::FixedVMPoolExecutableAllocator::jitWriteThunkGenerator):

  • runtime/Options.cpp:

(JSC::recomputeDependentOptions):

  • runtime/Options.h:

Source/WebCore:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit/mac:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

Update feature defines.

  • Configurations/FeatureDefines.xcconfig:

Source/WTF:

Update feature defines.

  • wtf/FeatureDefines.h:
  • wtf/Platform.h: ARM64 for now.

Tools:

Making run-jsc-benchmarks slightly happier on my machine.

  • Scripts/run-jsc-benchmarks:
12:35 PM Changeset in webkit [197792] by commit-queue@webkit.org
  • 9 edits
    2 deletes in trunk

Unreviewed, rolling out r197766.
​https://bugs.webkit.org/show_bug.cgi?id=155183

Has platform-specific code in non-platform files (Requested by
smfr on #webkit).

Reverted changeset:

"AX: Force allow user zoom"
​https://bugs.webkit.org/show_bug.cgi?id=155056
​http://trac.webkit.org/changeset/197766

12:26 PM Changeset in webkit [197791] by andersca@apple.com
  • 18 edits in trunk/Source/WebKit/mac

Ignore deprecation warnings.

  • Misc/WebNSEventExtras.m:

(-[NSEvent _web_isKeyEvent:]):
(-[NSEvent _web_isOptionTabKeyEvent]):

  • Misc/WebNSViewExtras.m:

(-[NSView _web_dragShouldBeginFromMouseDown:withExpiration:xHysteresis:yHysteresis:]):

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(WebKit::NetscapePluginHostProxy::beginModal):

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::syntheticKeyDownWithCommandModifier):

  • Plugins/Hosted/WebHostedNetscapePluginView.mm:

(-[WebHostedNetscapePluginView drawRect:]):

  • Plugins/WebNetscapePluginEventHandlerCocoa.mm:

(WebNetscapePluginEventHandlerCocoa::syntheticKeyDownWithCommandModifier):

  • WebCoreSupport/PopupMenuMac.mm:

(PopupMenuMac::populate):
(PopupMenuMac::show):

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::showContextMenu):

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::actionDictionary):

  • WebCoreSupport/WebInspectorClient.mm:

(WebInspectorFrontendClient::canAttach):
(-[WebInspectorWindowController window]):

  • WebInspector/WebNodeHighlight.mm:

(-[WebNodeHighlight initWithTargetView:inspectorController:]):

  • WebView/WebFrameView.mm:

(-[WebFrameView keyDown:keyDown:]):

  • WebView/WebFullScreenController.mm:

(-[WebFullScreenController init]):
(createBackgroundFullscreenWindow):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView _postFakeMouseMovedEventForFlagsChangedEvent:]):
(-[WebHTMLView _setMouseDownEvent:_setMouseDownEvent:]):
(isQuickLookEvent):
(-[WebHTMLView hitTest:]):
(-[WebHTMLView _sendToolTipMouseExited]):
(-[WebHTMLView _sendToolTipMouseEntered]):
(mouseEventIsPartOfClickOrDrag):
(-[WebHTMLView _updateMouseoverWithEvent:]):
(-[WebHTMLView acceptsFirstResponder]):
(-[WebHTMLView viewDidMoveToWindow]):
(currentKeyboardEvent):
(-[WebHTMLView _handleStyleKeyEquivalent:]):
(-[WebHTMLView _interpretKeyEvent:savingCommands:]):

  • WebView/WebPDFView.mm:

(-[WebPDFView hitTest:]):
(-[WebPDFView PDFViewWillClickOnLink:withURL:]):
(-[WebPDFView _fakeKeyEventWithFunctionKey:]):

  • WebView/WebTextCompletionController.mm:

(-[WebTextCompletionController _buildUI]):
(-[WebTextCompletionController _placePopupWindow:]):

  • WebView/WebView.mm:

(-[WebView applicationFlags:]):

12:18 PM Changeset in webkit [197790] by Beth Dakin
  • 6 edits in trunk/Source/WebCore

Add an event for when touch force changes
​https://bugs.webkit.org/show_bug.cgi?id=155143
-and corresponding-
rdar://problem/24068726

Reviewed by Darin Adler.

We will be able to test this once we fix the iOS touch tests.

This patch adds touchforcechange which is a lot like the iOS equivalent of
webkitmouseforcechanged. We had originally hoped to use touchmove to dispatch
force changes, but that turned out to be a compatibility nightmare.

  • dom/EventNames.h:

(WebCore::EventNames::isTouchEventType):
(WebCore::EventNames::isWheelEventType):
(WebCore::EventNames::touchEventNames):

  • dom/GlobalEventHandlers.idl:
  • html/HTMLAttributeNames.in:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

  • platform/PlatformEvent.h:
12:11 PM Changeset in webkit [197789] by andersca@apple.com
  • 15 edits in trunk/Source/WebCore

Ignore deprecation warnings.

  • editing/cocoa/HTMLConverter.mm:

(HTMLConverter::computedAttributesForElement):
(HTMLConverter::_addMarkersToList):

  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::keyEvent):
(WebCore::lastEventIsMouseUp):
(WebCore::EventHandler::passSubframeEventToSubframe):
(WebCore::EventHandler::passWheelEventToWidget):
(WebCore::EventHandler::sendFakeEventsAfterWidgetTracking):

  • page/mac/TextIndicatorWindow.mm:

(WebCore::TextIndicatorWindow::setTextIndicator):

  • platform/graphics/mac/IconMac.mm:

(WebCore::Icon::paint):

  • platform/mac/CursorMac.mm:

(WebCore::createCustomCursor):

  • platform/mac/DragImageMac.mm:

(WebCore::dissolveDragImageToFraction):
(WebCore::createDragImageFromImage):

  • platform/mac/EventLoopMac.mm:

(WebCore::EventLoop::cycle):

  • platform/mac/PasteboardMac.mm:

(WebCore::Pasteboard::setDragImage):

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::globalPointForEvent):
(WebCore::pointForEvent):
(WebCore::mouseButtonForEvent):
(WebCore::mouseEventTypeForEvent):
(WebCore::clickCountForEvent):
(WebCore::textFromEvent):
(WebCore::unmodifiedTextFromEvent):
(WebCore::keyIdentifierForKeyEvent):
(WebCore::isKeypadEvent):
(WebCore::windowsKeyCodeForKeyEvent):
(WebCore::isKeyUpEvent):
(WebCore::modifiersForEvent):
(WebCore::PlatformKeyboardEventBuilder::PlatformKeyboardEventBuilder):

  • platform/mac/ScrollbarThemeMac.mm:

(WebCore::scrollbarControlSizeToNSControlSize):

  • platform/mac/ThemeMac.mm:

(-[WebCoreThemeView window]):
(WebCore::controlSizeForFont):
(WebCore::controlSizeFromPixelSize):
(WebCore::setUpButtonCell):
(WebCore::stepperControlSizeForFont):
(WebCore::paintStepper):
(WebCore::ThemeMac::minimumControlSize):

  • platform/mac/WebVideoFullscreenHUDWindowController.mm:

(-[WebVideoFullscreenHUDWindow initWithContentRect:styleMask:backing:defer:]):
(-[WebVideoFullscreenHUDWindow performKeyEquivalent:]):
(-[WebVideoFullscreenHUDWindowController init]):
(-[WebVideoFullscreenHUDWindowController keyDown:]):
(-[WebVideoFullscreenHUDWindowController windowDidLoad]):

  • platform/mac/WebWindowAnimation.mm:

(WebWindowAnimationDurationFromDuration):

  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::updateCachedSystemFontDescription):
(WebCore::RenderThemeMac::controlSizeForFont):
(WebCore::RenderThemeMac::controlSizeForCell):
(WebCore::RenderThemeMac::controlSizeForSystemFont):
(WebCore::RenderThemeMac::paintProgressBar):
(WebCore::RenderThemeMac::popupMenuSize):
(WebCore::RenderThemeMac::sliderThumbHorizontal):
(WebCore::RenderThemeMac::sliderThumbVertical):

11:33 AM Changeset in webkit [197788] by dbates@webkit.org
  • 5 edits in trunk

Support iterating over an OptionSet and checking if it is empty
​https://bugs.webkit.org/show_bug.cgi?id=154941
<rdar://problem/24964187>

Reviewed by Darin Adler.

Source/WTF:

Implements support for iterating over the enumerators in an OptionSet as well as
determining if the set is empty.

Iterating over an OptionSet is in Big Theta(N) where N is the number of items in
the set. More precisely, it is in Big Theta(log M) where M is the bitmask represented
by the bitwise OR-ing of all enumerators in the set.

  • wtf/OptionSet.h: Added comment to describe the purpose of this class and its invariant -

the enumerators must be positive powers of two.
(WTF::OptionSet::Iterator::operator*): Returns the enumerator pointed to by the iterator.
(WTF::OptionSet::Iterator::operator++): Advance to the next smallest enumerator in the set.
(WTF::OptionSet::Iterator::operator==): Returns whether the iterator is equal to the specified iterator.
(WTF::OptionSet::Iterator::operator!=): Returns whether the iterator is not equal to the specified iterator.
(WTF::OptionSet::Iterator::Iterator): Added.
(WTF::OptionSet::fromRaw): Instantiate using specialized private constructor to allow
instantiation with a raw value of 0.
(WTF::OptionSet::OptionSet): Specialized constructor that asserts that the specified value
is a positive power of two. This variant is only compiled when assertions are enabled (i.e. !ASSERT_DISABLED).
(WTF::OptionSet::isEmpty): Returns whether the set is empty.
(WTF::OptionSet::begin): Returns an iterator to the enumerator with the smallest value in the set.
(WTF::OptionSet::end): Returns an iterator that represents the end sentinel of the set.

Tools:

Add tests to ensure that we do not regression both iteration of an OptionSet and
determining whether an OptionSet is empty.

  • TestWebKitAPI/Test.h:

(TestWebKitAPI::Util::assertStrongEnum): Helper function to assert two strong enum type for equality.

  • TestWebKitAPI/Tests/WTF/OptionSet.cpp:

(TestWebKitAPI::TEST):

11:32 AM Changeset in webkit [197787] by adachan@apple.com
  • 5 edits in trunk/Source/WebKit2

Fix lifetime issues regarding WebVideoFullscreenInterfaceMac
​https://bugs.webkit.org/show_bug.cgi?id=155130

Reviewed by Beth Dakin.

Now that both fullscreen and video controls manager rely on WebVideoFullscreenInterface,
we now keep track of a "client count" for each context ID so we'll only remove it
from the context map after all the "clients" are done with it.

Before this change, every time WebVideoFullscreenManager::setUpVideoControlsManager()
is called, the existing interface is cleared and a new one is created even when there's
an existing interface for that. With this change, we reuse the existing interface for
the video element.

  • UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h:
  • UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::invalidate):
Also clear out m_clientCounts.
(WebKit::WebVideoFullscreenManagerProxy::addClientForContext):
If the context ID is not in m_clientCounts yet, add the count of 1 to
that table for that ID. Otherwise, increment the count by 1.
(WebKit::WebVideoFullscreenManagerProxy::removeClientForContext):
Assert that we have added this context id to m_clientCounts before.
Decrement the count. If it reaches 0, remove this context ID from both
m_clientCounts and m_contextMap.
(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
We have started a new fullscreen session using this interface. Call
addClientForContext() to update the client count.
(WebKit::WebVideoFullscreenManagerProxy::setUpVideoControlsManagerWithID):
If the current controls manager set up has the same context ID as the one
passed in, we don't have to do anything. Otherwise, if we have set up
the video controls manager with a different ID before, call removeClientForContext()
on the old ID to decrement its client count. Set m_controlsManagerContextId
to the new value and call addClientForContext() with it.
(WebKit::WebVideoFullscreenManagerProxy::didCleanupFullscreen):
Instead of removing the mapping from m_contextMap directly, reset the fullscreen
mode on the interface and call removeClientForContext(), which removes the mapping
only if there's no more client using the interface.

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

(WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager):
Clear m_clientCounts.
(WebKit::WebVideoFullscreenManager::removeContext):
Add a helper method for removing the context.
(WebKit::WebVideoFullscreenManager::addClientForContext):
If the context ID is not in m_clientCounts yet, add the count of 1 to
that table for that ID. Otherwise, increment the count by 1.
(WebKit::WebVideoFullscreenManager::removeClientForContext):
Assert that we have added this context id to m_clientCounts before.
Decrement the count. If it reaches 0, remove this context ID from
m_clientCounts and call removeContext() to clean up this context.
(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
We have started a new fullscreen session using this interface. Call
addClientForContext() to update the client count. Create a layer hosting
context if it's not there.
(WebKit::WebVideoFullscreenManager::setUpVideoControlsManager):
If we have set up a context for this video element before, see if it's
the one we are currently managing video controls for. If it is, return early.
Otherwise, call removeClientForContext() on the previous m_controlsManagerContextId
and update m_controlsManagerContextId to the context ID of this video element.
If there's no context created for this video element yet, set one up.
Send a SetUpVideoControlsManagerWithID message to the proxy object in the UI process
so it'll update its controls manager context ID. Also, conditionalize all of this
under PLATFORM(MAC) to be consistent with WebVideoFullscreenManagerProxy.
(WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
Just reset the fullscreen mode on the interface and call removeClientForContext() which
only cleans up the context if there's no more client using it.

11:02 AM Changeset in webkit [197786] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip svg/animations/animate-marker-orient-from-angle-to-autostartreverse.html on ios-simulator
​https://bugs.webkit.org/show_bug.cgi?id=155174

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
10:58 AM Changeset in webkit [197785] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed attempt to fix the 32bit build after r197782.

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):

10:57 AM Changeset in webkit [197784] by tonikitoo@webkit.org
  • 3 edits
    2 adds in trunk

Scrolling does not work when the mouse down is handled by a node
​https://bugs.webkit.org/show_bug.cgi?id=19033

Reviewed by Simon Fraser.

Source/WebCore:

Test: fast/events/prevent-default-prevents-interaction-with-scrollbars-.html

When a mouse press/down event happens on a scrollbar area, but event
is default prevented in the document level, for example, event does not get
properly passed to scrollbars, although it should.

Problem started long ago with r17770, and was improved with r19596.
However, years later, the way Scrollbar* is obtained is still currently different
weither event is default prevented or not.

Patch uniforms the logic for both cases, and fixes the bug.

Note: code before used to look like

if (swallowEvent) {

<code>

} else {

<bleh>
<foo>

}

.. and now looks like

if (!swallowEvent)

<bleh>

<code>

if (!swallowEvent)

<foo>

e.g. document.addEventListener('mousedown', function (e) { e.preventDefault(); });

  • page/EventHandler.cpp:

(WebCore::scrollbarForMouseEvent):
(WebCore::EventHandler::handleMousePressEvent):

LayoutTests:

  • fast/events/prevent-default-prevents-interaction-with-scrollbars-expected.txt: Added.
  • fast/events/prevent-default-prevents-interaction-with-scrollbars.html: Added.
10:54 AM Changeset in webkit [197783] by Sukolsak Sakshuwong
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json

Unreviewed. Move myself to the reviewers list.

  • Scripts/webkitpy/common/config/contributors.json:
10:51 AM Changeset in webkit [197782] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed Windows build fix after r197728.

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):

10:35 AM Changeset in webkit [197781] by msaboff@apple.com
  • 10 edits
    3 moves
    3 adds in trunk

[ES6] Regular Expression canonicalization tables for Unicode need to be updated to use Unicode CaseFolding.txt
​https://bugs.webkit.org/show_bug.cgi?id=155114

Reviewed by Darin Adler.

Source/JavaScriptCore:

Extracted out the Unicode canonicalization table creation from
YarrCanonicalizeUnicode.js into a new Python script, generateYarrCanonicalizeUnicode.
That script generates the Unicode tables as the file YarrCanonicalizeUnicode.cpp in
DerivedSources/JavaScriptCore.

Updated the processing of ignore case to make the ASCII short cuts dependent on whether
or not we are a Unicode pattern.

Renamed yarr/YarrCanonicalizeUnicode.{cpp,js} back to their prior names,
YarrCanonicalizeUCS2.{cpp,js}.
Renamed yarr/YarrCanonicalizeUnicode.h to YarrCanonicalize.h as it declares both the
legacy UCS2 and Unicode tables.

  • CMakeLists.txt:
  • DerivedSources.make:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • generateYarrCanonicalizeUnicode: Added.
  • ucd: Added.
  • ucd/CaseFolding.txt: Added. The current verion, 8.0, of the Unicode CaseFolding table.
  • yarr/YarrCanonicalizeUCS2.cpp: Copied from Source/JavaScriptCore/yarr/YarrCanonicalizeUnicode.cpp.
  • yarr/YarrCanonicalize.h: Copied from Source/JavaScriptCore/yarr/YarrCanonicalizeUnicode.h.
  • yarr/YarrCanonicalizeUCS2.js: Copied from Source/JavaScriptCore/yarr/YarrCanonicalizeUnicode.js.

(printHeader):

  • yarr/YarrCanonicalizeUnicode.cpp: Removed.
  • yarr/YarrCanonicalizeUnicode.h: Removed.
  • yarr/YarrCanonicalizeUnicode.js: Removed.
  • yarr/YarrInterpreter.cpp:

(JSC::Yarr::Interpreter::tryConsumeBackReference):

  • yarr/YarrJIT.cpp:
  • yarr/YarrPattern.cpp:

(JSC::Yarr::CharacterClassConstructor::putChar):

LayoutTests:

Updated test cases.

  • js/regexp-unicode-expected.txt:
  • js/script-tests/regexp-unicode.js:
10:19 AM Changeset in webkit [197780] by Ryan Haddad
  • 3 edits
    2 deletes in trunk

Unreviewed, rolling out r197765.
​https://bugs.webkit.org/show_bug.cgi?id=155172

The test added with this change is failing on all platforms.
(Requested by ryanhaddad on #webkit).

Reverted changeset:

"ImageDocuments leak their world."
​https://bugs.webkit.org/show_bug.cgi?id=155167
​http://trac.webkit.org/changeset/197765

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-08

10:11 AM Changeset in webkit [197779] by Antti Koivisto
  • 21 edits in trunk/Source/WebCore

Make Element const in ElementRuleCollector
​https://bugs.webkit.org/show_bug.cgi?id=155170

Reviewed by Andreas Kling.

More const.

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ElementRuleCollector):
(WebCore::ElementRuleCollector::matchAllRules):

  • css/ElementRuleCollector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne):
(WebCore::SelectorChecker::matchesFocusPseudoClass):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelationIfResolvingStyle):
(WebCore::SelectorCompiler::addStyleRelationFunction):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateContextFunctionCallTest):
(WebCore::SelectorCompiler::elementIsActive):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
(WebCore::SelectorCompiler::elementIsHovered):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
(WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
(WebCore::SelectorCompiler::isPlaceholderShown):

  • cssjit/SelectorCompiler.h:
  • dom/StyledElement.h:

(WebCore::StyledElement::additionalPresentationAttributeStyle):
(WebCore::StyledElement::inlineStyle):
(WebCore::StyledElement::collectStyleForPresentationAttribute):
(WebCore::StyledElement::invalidateStyleAttribute):
(WebCore::StyledElement::presentationAttributeStyle):

  • html/HTMLTableCellElement.cpp:

(WebCore::HTMLTableCellElement::parseAttribute):
(WebCore::HTMLTableCellElement::additionalPresentationAttributeStyle):

  • html/HTMLTableCellElement.h:
  • html/HTMLTableColElement.cpp:

(WebCore::HTMLTableColElement::parseAttribute):
(WebCore::HTMLTableColElement::additionalPresentationAttributeStyle):

  • html/HTMLTableColElement.h:
  • html/HTMLTableElement.cpp:

(WebCore::leakBorderStyle):
(WebCore::HTMLTableElement::additionalPresentationAttributeStyle):

  • html/HTMLTableElement.h:
  • html/HTMLTableSectionElement.cpp:

(WebCore::HTMLTableSectionElement::create):
(WebCore::HTMLTableSectionElement::additionalPresentationAttributeStyle):

  • html/HTMLTableSectionElement.h:
  • inspector/InspectorCSSAgent.cpp:

(WebCore::InspectorCSSAgent::didUnregisterNamedFlowContentElement):
(WebCore::InspectorCSSAgent::forcePseudoState):

  • inspector/InspectorCSSAgent.h:
  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::pushNodePathToFrontend):
(WebCore::InspectorDOMAgent::boundNodeId):
(WebCore::InspectorDOMAgent::backendNodeIdForNode):

  • inspector/InspectorDOMAgent.h:
  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::handleMousePressImpl):
(WebCore::InspectorInstrumentation::forcePseudoStateImpl):

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::handleMousePress):
(WebCore::InspectorInstrumentation::forcePseudoState):

10:09 AM Changeset in webkit [197778] by youenn.fablet@crf.canon.fr
  • 5 edits
    1 copy in trunk/Source/WebCore

[Fetch API] Commonalize handling of FetchBody by FetchRequest and FetchResponse
​https://bugs.webkit.org/show_bug.cgi?id=154959

Reviewed by Darin Adler.

Introducing FetchBodyOwner class as base class of FetchRequest and FetchResponse.
This class is an ActiveDOMObject and is responsible of handling the Body API implemented by Request and Response.

Covered by existing tests.

  • Modules/fetch/FetchBodyOwner.h: Added.

(WebCore::FetchBodyOwner::isDisturbed):
(WebCore::FetchBodyOwner::arrayBuffer):
(WebCore::FetchBodyOwner::formData):
(WebCore::FetchBodyOwner::blob):
(WebCore::FetchBodyOwner::json):
(WebCore::FetchBodyOwner::text):
(WebCore::FetchBodyOwner::body):
(WebCore::FetchBodyOwner::FetchBodyOwner):

  • Modules/fetch/FetchRequest.h:

(WebCore::FetchRequest::FetchRequest):

  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::FetchResponse):

  • Modules/fetch/FetchResponse.h:
  • WebCore.xcodeproj/project.pbxproj:
10:06 AM Changeset in webkit [197777] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix 32-bit build after r197726.

Also, re-enable static_assert to check the ElementRareData size.

  • dom/ElementRareData.cpp:
10:03 AM Changeset in webkit [197776] by Ryan Haddad
  • 3 edits in trunk/LayoutTests

Rebaseline WPT reflection tests for ios-simulator after r197726

Unreviewed test gardening.

  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/reflection-forms-expected.txt:
9:59 AM Changeset in webkit [197775] by ap@apple.com
  • 2 edits in trunk/Tools

Add debug iOS Simulator bots to the dashboard
​https://bugs.webkit.org/show_bug.cgi?id=155157

Reviewed by Darin Adler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/WebKitBuildbot.js:
9:57 AM Changeset in webkit [197774] by akling@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

WeakBlock::visit() should check for a WeakHandleOwner before consulting mark bits.
<​https://webkit.org/b/155154>

Reviewed by Darin Adler.

Reorder the checks in WeakBlock::visit() so we don't look at the mark bits in MarkedBlock
unless the current WeakImpl has a WeakHandleOwner we need to consult.

I was originally hoping to make an optimization that could skip over entire WeakBlocks
if they didn't have a single WeakHandleOwner, but it turns out that scenario is not as
common as I suspected.

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::visit):

9:55 AM Changeset in webkit [197773] by timothy@apple.com
  • 4 edits in trunk/Source/WebKit2

Web Inspector: Add automation protocol methods for navigation

​https://bugs.webkit.org/show_bug.cgi?id=155163
rdar://problem/25029054

Reviewed by Darin Adler.

  • UIProcess/Automation/Automation.json:
  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::getBrowsingContexts): Set url.
(WebKit::WebAutomationSession::getBrowsingContext): Added.
(WebKit::WebAutomationSession::navigateBrowsingContext): Added.
(WebKit::WebAutomationSession::goBackInBrowsingContext): Added.
(WebKit::WebAutomationSession::goForwardInBrowsingContext): Added.
(WebKit::WebAutomationSession::reloadBrowsingContext): Added.

  • UIProcess/Automation/WebAutomationSession.h:
9:41 AM Changeset in webkit [197772] by Ryan Haddad
  • 7 edits
    1 delete in trunk/Source/bmalloc

Unreviewed, rolling out r197722.
​https://bugs.webkit.org/show_bug.cgi?id=155171

This change caused 800+ JSC test failures (Requested by
ryanhaddad on #webkit).

Reverted changeset:

"bmalloc: Use List<T> instead of Vector<T> in some places"
​https://bugs.webkit.org/show_bug.cgi?id=155150
​http://trac.webkit.org/changeset/197722

Patch by Commit Queue <​commit-queue@webkit.org> on 2016-03-08

9:39 AM Changeset in webkit [197771] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Unreviewed test fix after r197721.
​https://bugs.webkit.org/show_bug.cgi?id=155120
<rdar://problem/25010167>

If a WK1 client turns on the "Resource Load Statistics" debug flag, but
does not supply a data modification handler, we dereference a null function.

  • loader/ResourceLoadStatisticsStore.cpp:

(WebCore::ResourceLoadStatisticsStore::fireDataModificationHandler): Check
for nullptr function before invoking it.

9:25 AM Changeset in webkit [197770] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, temporarily comment out static_assert while I investigate.

It still did not build on some platforms.

  • dom/ElementRareData.cpp:
9:17 AM Changeset in webkit [197769] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, another build fix after r197726.

  • dom/ElementRareData.cpp:
9:11 AM Changeset in webkit [197768] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed Windows build fix after r197728.

  • platform/MemoryPressureHandler.cpp:
9:06 AM Changeset in webkit [197767] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r197726.

  • dom/ElementRareData.cpp:
8:13 AM Changeset in webkit [197766] by n_wang@apple.com
  • 9 edits
    2 adds in trunk

AX: Force allow user zoom
​https://bugs.webkit.org/show_bug.cgi?id=155056

Reviewed by Chris Fleizach.

Source/WebCore:

Override the maximum scale factor when forceAlwaysUserScalable is true.

Test: accessibility/ios-simulator/force-user-scalable.html

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::maximumScale):

  • testing/Internals.cpp:

(WebCore::Internals::composedTreeAsText):
(WebCore::Internals::setViewportForceAlwaysUserScalable):
(WebCore::Internals::viewportConfigurationMaximumScale):

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

Source/WebKit2:

Soft linked libAccessibility library so that we can observe the accessibility
setting change for the force always user scalable feature.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::forceAlwaysUserScalableChangedCallback):
(WebKit::WebPage::create):
(WebKit::m_shouldDispatchFakeMouseMoveEvents):
(WebKit::WebPage::~WebPage):
(WebKit::WebPage::preferencesDidChange):
(WebKit::WebPage::updateForceAlwaysUserScalable):
(WebKit::WebPage::updatePreferences):

  • WebProcess/WebPage/WebPage.h:

LayoutTests:

  • accessibility/ios-simulator/force-user-scalable-expected.txt: Added.
  • accessibility/ios-simulator/force-user-scalable.html: Added.
7:14 AM Changeset in webkit [197765] by akling@apple.com
  • 3 edits
    2 adds in trunk

ImageDocuments leak their world.
<​https://webkit.org/b/155167>
<rdar://problem/24987363>

Reviewed by Antti Koivisto.

Source/WebCore:

ImageDocument uses a special code path in ImageLoader in order to manually
control how the image is loaded. It has to do this because the ImageDocument
is really just a synthetic wrapper around a main resource that's an image.

This custom loading code had a bug where it would create a new CachedImage
and neglect to set its CachedResource::m_state flag to Pending (which is
normally set by CachedResource::load(), but we don't call that for these.)

This meant that when ImageDocument called CachedImage::finishLoading() to
trigger the notifyFinished() callback path, the image would look at its
loading state and see that it was Unknown (not Pending), and conclude that
it hadn't loaded yet. So we never got the notifyFinished() signal.

The world leaks here because ImageLoader slaps a ref on its <img> element
while it waits for the loading operation to complete. Once finished, whether
successfully or with an error, it derefs the <img>.

Since we never fired notifyFinished(), we ended up with an extra ref on
these <img> forever, and then the element kept its document alive too.

Test: fast/dom/ImageDocument-world-leak.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

LayoutTests:

Made a little test that loads an image into an <iframe> 10 times and then
triggers a garbage collection and checks that all the documents got destroyed.

Prior to this change, all 10 ImageDocuments would remain alive at the end.

  • fast/dom/ImageDocument-world-leak-expected.txt: Added.
  • fast/dom/ImageDocument-world-leak.html: Added.
6:59 AM Changeset in webkit [197764] by Antti Koivisto
  • 30 edits
    2 adds in trunk/Source/WebCore

ElementRuleCollector should not mutate document and style
​https://bugs.webkit.org/show_bug.cgi?id=155113

Reviewed by Andreas Kling.

Move applying of style relations out of ElementRuleCollector and StyleResolver.
This gets us closer to making StyleResolver const for Element.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::ElementRuleCollector):

No need for style parameter anymore.

(WebCore::ElementRuleCollector::collectMatchingRules):
(WebCore::ElementRuleCollector::sortAndTransferMatchedRules):
(WebCore::ElementRuleCollector::ruleMatches):

Client will now do the style and element mutations. Just collect the data here.

(WebCore::ElementRuleCollector::collectMatchingRulesForList):
(WebCore::ElementRuleCollector::commitStyleRelations): Deleted.

Moves to StyleRelations.cpp

  • css/ElementRuleCollector.h:

(WebCore::ElementRuleCollector::hasMatchedRules):
(WebCore::ElementRuleCollector::matchedPseudoElementIds):
(WebCore::ElementRuleCollector::styleRelations):
(WebCore::ElementRuleCollector::didMatchUncommonAttributeSelector):

  • css/MediaQueryMatcher.cpp:

(WebCore::MediaQueryMatcher::prepareEvaluator):
(WebCore::MediaQueryMatcher::evaluate):

  • css/SelectorChecker.cpp:

(WebCore::addStyleRelation):
(WebCore::isFirstChildElement):
(WebCore::isFirstOfType):
(WebCore::countElementsBefore):
(WebCore::countElementsOfTypeBefore):
(WebCore::SelectorChecker::matchRecursively):
(WebCore::SelectorChecker::checkOne):

  • css/SelectorChecker.h:

(WebCore::SelectorChecker::CheckingContext::CheckingContext):

  • css/StyleMedia.cpp:

(WebCore::StyleMedia::matchMedium):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::StyleResolver):
(WebCore::isAtShadowBoundary):
(WebCore::StyleResolver::styleForElement):

Apply the style relations affecting current style immediately.
Pass the rest to the client.

(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):

  • css/StyleResolver.h:

(WebCore::ElementStyle::ElementStyle):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelationIfResolvingStyle):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateAddStyleRelation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateSelectorCheckerExcludingPseudoElements):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateDirectAdjacentTreeWalker):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateIndirectAdjacentTreeWalker):
(WebCore::SelectorCompiler::addStyleRelationFunction):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsActive):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsEmpty):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsFirstChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsHovered):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsOnlyChild):
(WebCore::SelectorCompiler::makeContextStyleUniqueIfNecessaryAndTestIsPlaceholderShown):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthChildOf):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChildOf):

  • dom/Document.cpp:

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

Apply style relations.

(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

  • dom/Element.cpp:

(WebCore::Element::styleResolver):
(WebCore::Element::resolveStyle):
(WebCore::Element::didDetachRenderers):
(WebCore::Element::resolveCustomStyle):

Return ElementStyle (which contains style relations along with the render style).
Rename for consistency.

(WebCore::Element::cloneAttributesFromElement):
(WebCore::Element::customStyleForRenderer): Deleted.

  • dom/Element.h:

(WebCore::Element::isVisibleInViewportChanged):

  • dom/PseudoElement.cpp:

(WebCore::PseudoElement::clearHostElement):
(WebCore::PseudoElement::resolveCustomStyle):
(WebCore::PseudoElement::didAttachRenderers):
(WebCore::PseudoElement::customStyleForRenderer): Deleted.

  • dom/PseudoElement.h:
  • html/HTMLTitleElement.cpp:

(WebCore::HTMLTitleElement::computedTextWithDirection):

  • html/shadow/SliderThumbElement.cpp:

(WebCore::SliderThumbElement::hostInput):
(WebCore::SliderThumbElement::resolveCustomStyle):
(WebCore::SliderThumbElement::shadowPseudoId):
(WebCore::SliderContainerElement::createElementRenderer):
(WebCore::SliderContainerElement::resolveCustomStyle):
(WebCore::SliderContainerElement::shadowPseudoId):
(WebCore::SliderThumbElement::customStyleForRenderer): Deleted.
(WebCore::SliderContainerElement::customStyleForRenderer): Deleted.

  • html/shadow/SliderThumbElement.h:
  • html/shadow/TextControlInnerElements.cpp:

(WebCore::TextControlInnerElement::create):
(WebCore::TextControlInnerElement::resolveCustomStyle):
(WebCore::TextControlInnerTextElement::renderer):
(WebCore::TextControlInnerTextElement::resolveCustomStyle):
(WebCore::TextControlPlaceholderElement::TextControlPlaceholderElement):
(WebCore::TextControlPlaceholderElement::resolveCustomStyle):
(WebCore::TextControlInnerElement::customStyleForRenderer): Deleted.
(WebCore::TextControlInnerTextElement::customStyleForRenderer): Deleted.
(WebCore::TextControlPlaceholderElement::customStyleForRenderer): Deleted.

  • html/shadow/TextControlInnerElements.h:
  • rendering/RenderElement.cpp:

(WebCore::RenderElement::getUncachedPseudoStyle):

  • rendering/RenderNamedFlowFragment.cpp:

(WebCore::RenderNamedFlowFragment::computeStyleInRegion):
(WebCore::RenderNamedFlowFragment::computeChildrenStyleInRegion):

  • style/StyleRelations.cpp: Added.

(WebCore::Style::commitRelationsToRenderStyle):

Commit relations affecting style that is being computed.

(WebCore::Style::commitRelationsToDocument):

Commit relations that mutate document.

  • style/StyleRelations.h: Added.

Factor style relation data structures and functions to a file of their own.

(WebCore::Style::Relation::Relation):

  • style/StyleSharingResolver.cpp:

(WebCore::Style::SharingResolver::styleSharingCandidateMatchesRuleSet):

  • style/StyleTreeResolver.cpp:

(WebCore::Style::TreeResolver::styleForElement):

Apply style relations.

  • style/StyleTreeResolver.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::synchronizeSystemLanguage):
(WebCore::SVGElement::resolveCustomStyle):
(WebCore::SVGElement::customStyleForRenderer): Deleted.

  • svg/SVGElement.h:
  • svg/SVGElementRareData.h:

(WebCore::SVGElementRareData::overrideComputedStyle):

6:50 AM Changeset in webkit [197763] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197546 - [JSC] Add support for MADD, MSUB and MNEG to Air
​https://bugs.webkit.org/show_bug.cgi?id=154997

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-03
Reviewed by Filip Pizlo.

ARM64 can do an Add/Sub in the Multiply units.
LLVM was doing so but we lost that when switching to B3.

This patch adds those instructions in Air.

There are more ALUs than multiply units, thus we are more
likely to successfully schedule a Multiply+Add than 2 Multiply.
I am conservative and only emit a multiply-add if the value
can be interned. As far as I can tell from what is generated
by LLVM, that backend had the same rule.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::multiplyAdd32):
(JSC::MacroAssemblerARM64::multiplySub32):
(JSC::MacroAssemblerARM64::multiplyNeg32):
(JSC::MacroAssemblerARM64::multiplyAdd64):
(JSC::MacroAssemblerARM64::multiplySub64):
(JSC::MacroAssemblerARM64::multiplyNeg64):

  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::populateWithInterestingValues):
(JSC::B3::floatingPointOperands):
(JSC::B3::int64Operands):
(JSC::B3::int32Operands):
(JSC::B3::testMulAddArgsLeft):
(JSC::B3::testMulAddArgsRight):
(JSC::B3::testMulAddArgsLeft32):
(JSC::B3::testMulAddArgsRight32):
(JSC::B3::testMulSubArgsLeft):
(JSC::B3::testMulSubArgsRight):
(JSC::B3::testMulSubArgsLeft32):
(JSC::B3::testMulSubArgsRight32):
(JSC::B3::testMulNegArgs):
(JSC::B3::testMulNegArgs32):
(JSC::B3::run):

6:28 AM Changeset in webkit [197762] by Carlos Garcia Campos
  • 16 edits
    2 copies
    2 adds in releases/WebKitGTK/webkit-2.12/Source/bmalloc

Merge r197545 - Unreviewed, rolling in r197174.
​https://bugs.webkit.org/show_bug.cgi?id=154762

The right calculation for alignment is actually:

vmAlignment - getpagesize() + vmSize

instead of:

vmAlignment - vmPageSize + vmSize

The vmPageSize might be larger than getpagesize().

Restored changeset:

"bmalloc: Added a fast XLarge allocator"
​https://bugs.webkit.org/show_bug.cgi?id=154720
​http://trac.webkit.org/changeset/197174

6:23 AM Changeset in webkit [197761] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197542 - Octane/regexp's Exec function should benefit from array length accessor inlining
​https://bugs.webkit.org/show_bug.cgi?id=154994

Reviewed by Benjamin Poulain.

It does:

var thingy = blahbitty.blah;
if (thingy)

foo = thingy.length;

So, 'thingy' is SpecArray | SpecOther, which prevents the array length accessor inlining from
kicking in. Our strategy for this elsewhere in the DFG is to allow a one-time speculation that
we won't see SpecOther, since *usually* we see SpecOther mixed with other stuff in cases like
this where there is some null check guarding the code.

This gives another slight speed-up on Octane/regexp.

  • bytecode/SpeculatedType.h:

(JSC::isCellSpeculation):
(JSC::isCellOrOtherSpeculation):
(JSC::isNotCellSpeculation):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::shouldSpeculateCell):
(JSC::DFG::Node::shouldSpeculateCellOrOther):
(JSC::DFG::Node::shouldSpeculateNotCell):

5:57 AM Changeset in webkit [197760] by Carlos Garcia Campos
  • 8 edits
    3 adds in releases/WebKitGTK/webkit-2.12

Merge r197520 - DFG should be able to compile StringReplace
​https://bugs.webkit.org/show_bug.cgi?id=154979

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Adds support for StringReplace to the DFG tier. This is a 3% speed-up on Octane/regexp.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateFinalObject):
(JSC::DFG::SpeculativeJIT::speculateRegExpObject):
(JSC::DFG::SpeculativeJIT::speculateObjectOrOther):

  • dfg/DFGSpeculativeJIT.h:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • jit/JITOperations.h:

LayoutTests:

Add a microbenchmark for a case of StringReplace that we hadn't covered with a microbenchmark
yet: using something absurd for the replace value. This is interesting for implementing the
32_64 version of StringReplace, which gets really weird in the absurd case because of how it
consumes the entire register file while making the call on x86-32.

  • js/regress/script-tests/string-replace-generic.js: Added.
  • js/regress/string-replace-generic-expected.txt: Added.
  • js/regress/string-replace-generic.html: Added.
5:35 AM Changeset in webkit [197759] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197506 - [TextureMapper] Use RGBA format for textures attached to framebuffers
​https://bugs.webkit.org/show_bug.cgi?id=154965

Patch by Miguel Gomez <​magomez@igalia.com> on 2016-03-03
Reviewed by Žan Doberšek.

Use RGBA format when allocating textures that will be used as framebuffer
attachments. This means adding a new flag to BitmapTexture and modifying
BitmapTextureGL to use the appropriate format according to the flag. Also,
BitmapTexturePool needs to use two vectors to handle both types of textures
separately, as we want to avoid constantly switching the format of a reused
texture.

No new tests since the behavior change is covered by existing tests.

  • platform/graphics/texmap/BitmapTexture.h: Add new flag.
  • platform/graphics/texmap/BitmapTextureGL.cpp:

(WebCore::BitmapTextureGL::BitmapTextureGL): Receive flags on constructor and use RGBA
when the FBOAttachment flag is enabled.
(WebCore::BitmapTextureGL::applyFilters): Use FBOAttachemt flag to request a texture.

  • platform/graphics/texmap/BitmapTextureGL.h: Add flags to the constructor.
  • platform/graphics/texmap/BitmapTexturePool.cpp: Add a new vector of textures to hold

those in RGBA format.
(WebCore::BitmapTexturePool::acquireTexture): Return a texture for the usage specified
in the incoming flags.
(WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired): Release textures from
both vectors.
(WebCore::BitmapTexturePool::createTexture): Pass the usage flag when creating a new
texture.

  • platform/graphics/texmap/BitmapTexturePool.h: Add new texture vector and add flags to

the needed headers.

  • platform/graphics/texmap/TextureMapper.cpp:

(WebCore::TextureMapper::acquireTextureFromPool): Pass the received flags to the BitmapTexturePool.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::paintIntoSurface): Use FBOAttachemt flag to request a texture.

5:31 AM Changeset in webkit [197758] by Carlos Garcia Campos
  • 7 edits
    1 add in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197492 - RegExpExec/RegExpTest should not unconditionally speculate cell
​https://bugs.webkit.org/show_bug.cgi?id=154901

Reviewed by Benjamin Poulain.

This is a three part change. It all started with a simple goal: end the rage-recompiles in
Octane/regexp by enabling the DFG and FTL to do untyped RegExpExec/RegExpTest. This keeps us
in the optimized code when you do a regexp match on a number, for example.

While implementing this, I realized that DFGOperations.cpp was bad at exception checking. When
it did check for exceptions, it used exec->hadException() instead of vm.exception(). So I
fixed that. I also made sure that the regexp operations checked for exception after doing
toString().

Unfortunately, the introduction of untyped RegExpExec/RegExpTest caused a regression on
Octane/regexp. This was because we were simultaneously scheduling replacement and OSR compiles
of some large functions with the FTL JIT. The OSR compiles were not useful. This was a
regression from the previous changes to make OSR compiles happen sooner. The problem is that
this change also removed the throttling of OSR compiles even in those cases where we suspect
that replacement is more likely. This patch reintroduces that throttling, but only in the
replacement path.

This change ends up being neutral overall.

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):

  • tests/stress/regexp-exec-effect-after-exception.js: Added.
5:23 AM Changeset in webkit [197757] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197491 - [JSC] JSCell_freeListNext and JSCell_structureID are considered not overlapping
​https://bugs.webkit.org/show_bug.cgi?id=154947

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-02
Reviewed by Filip Pizlo.

This bug was discovered while testing ​https://bugs.webkit.org/show_bug.cgi?id=154894.

The problem was that JSCell_freeListNext and JSCell_structureID were
considered as disjoint. When reordering instructions, the scheduler
could move the write of the StructureID first to reduce dependencies.
This would erase half of JSCell_freeListNext before we get a chance
to load the value.

This patch changes the hierarchy to make sure nothing is written
until JSCell_freeListNext is processed.

All credits for this patch go to Filip.

  • ftl/FTLAbstractHeapRepository.cpp:

(JSC::FTL::AbstractHeapRepository::AbstractHeapRepository):

  • ftl/FTLAbstractHeapRepository.h:
4:57 AM Changeset in webkit [197756] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197490 - [JSC] Improve Select of Doubles based on Double condition
​https://bugs.webkit.org/show_bug.cgi?id=154572

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-02
Reviewed by Filip Pizlo.

Octane has a bunch of Select on Double based on comparing Doubles.
A few nodes generate that: ValueRep, Min, Max, etc.

On ARM64, we can improve our code a lot. ARM can do a select
based on flags with the FCSEL instruction.

On x86, this patch adds aggressive aliasing for moveDoubleConditionallyXXX.
This has obviously a much more limited impact.

  • assembler/MacroAssembler.h:

(JSC::MacroAssembler::moveDoubleConditionally32): Deleted.
(JSC::MacroAssembler::moveDoubleConditionally64): Deleted.
(JSC::MacroAssembler::moveDoubleConditionallyTest32): Deleted.
(JSC::MacroAssembler::moveDoubleConditionallyTest64): Deleted.
(JSC::MacroAssembler::moveDoubleConditionallyDouble): Deleted.
(JSC::MacroAssembler::moveDoubleConditionallyFloat): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::moveDoubleConditionallyAfterFloatingPointCompare):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyDouble):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyFloat):
(JSC::MacroAssemblerARM64::moveConditionally32):
(JSC::MacroAssemblerARM64::moveDoubleConditionally32):
(JSC::MacroAssemblerARM64::moveDoubleConditionally64):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyTest32):
(JSC::MacroAssemblerARM64::moveDoubleConditionallyTest64):
(JSC::MacroAssemblerARM64::branch64):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::moveConditionally32):
(JSC::MacroAssemblerX86Common::moveDoubleConditionally32):
(JSC::MacroAssemblerX86Common::moveDoubleConditionallyTest32):
(JSC::MacroAssemblerX86Common::moveDoubleConditionallyDouble):
(JSC::MacroAssemblerX86Common::moveDoubleConditionallyFloat):

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::moveDoubleConditionally64):
(JSC::MacroAssemblerX86_64::moveDoubleConditionallyTest64):

  • b3/air/AirInstInlines.h:

(JSC::B3::Air::Inst::shouldTryAliasingDef):

  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::populateWithInterestingValues):
(JSC::B3::floatingPointOperands):
(JSC::B3::int64Operands):
(JSC::B3::int32Operands):
(JSC::B3::testSelectCompareFloat):
(JSC::B3::testSelectCompareFloatToDouble):
(JSC::B3::testSelectDoubleCompareDouble):
(JSC::B3::testSelectDoubleCompareDoubleWithAliasing):
(JSC::B3::testSelectFloatCompareFloat):
(JSC::B3::testSelectFloatCompareFloatWithAliasing):
(JSC::B3::run):

4:21 AM Changeset in webkit [197755] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.12

Merge r197486 - Paint table borders on empty cells even in quirks mode.
​https://bugs.webkit.org/show_bug.cgi?id=154928

Reviewed by David Hyatt.

Enable border painting for empty cells unless 'empty-cells: hide' is set.
This is inline with FF and Chrome behaviour.

Source/WebCore:

Test: fast/table/border-on-empty-table-cells-quirks-mode.html

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::paintBoxDecorations):

LayoutTests:

  • fast/table/border-on-empty-table-cells-quirks-mode-expected.html: Added.
  • fast/table/border-on-empty-table-cells-quirks-mode.html: Added.
4:07 AM Changeset in webkit [197754] by alex
  • 4 edits in trunk

Unreviewed EFL build fix after r197752.

Tools:

  • Scripts/webkitperl/FeatureList.pm: Avoid MEDIA_STREAM

compilation by default until EFL bumps gstreamer to 1.6.

LayoutTests:

  • platform/efl/TestExpectations: Avoid running the mediastream

tests until the support is implemented and compiled by default.

2:58 AM Changeset in webkit [197753] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

One more unreviewed speculative buildfix after r197728.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::continueWillSendRequest):

2:36 AM Changeset in webkit [197752] by alex
  • 7 edits
    1 delete in trunk

[GTK] [EFL] Avoid running mediastream tests by default until we compile by default
​https://bugs.webkit.org/show_bug.cgi?id=153540

Reviewed by Philippe Normand.

After bumping gstreamer to 1.6.3 in r196804 we can enable again
Tools:

compilation of mediastream and running the tests.

  • Scripts/run-gtk-tests:

(TestRunner): Enable again the UserMedia API test.

  • Scripts/webkitperl/FeatureList.pm: Enable the compilation of the

mediastream by default.

  • gtk/jhbuild-webrtc.modules: Removed the specific jhbuild modules

file.

  • gtk/jhbuild.modules: Bumped the openwebrtc version to the one we

are currently using.

LayoutTests:

compilation of mediastream and running the tests. We have updated
the expectations accordingly.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
2:11 AM Changeset in webkit [197751] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197485 - RegExpPrototype should check for exceptions after calling toString and doing so should not be expensive
​https://bugs.webkit.org/show_bug.cgi?id=154927

Reviewed by Saam Barati.

While working on regexp optimizations, I found that RegExpPrototype calls toString(), an
effectful operation that could do anything, without then checking for hadException().

So I added a call to hadException().

But that regressed Octane/regexp by 5%! That's a lot! It turns out that
exec->hadException() is soooper slow. So, I made it cheaper to check for exceptions from
toString(): there is now a variant called toStringFast() that returns null iff it throws an
exception.

This allowed me to add the exception check without regressing perf.

Note that toString() must retain its old behavior of returning an empty string on exception.
There is just too much code that relies on that behavior.

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::isValidCallee):
(JSC::JSValue::toStringSlowCase):
(JSC::JSValue::toWTFStringSlowCase):

  • runtime/JSCJSValue.h:

(JSC::JSValue::asValue):

  • runtime/JSString.h:

(JSC::JSValue::toString):
(JSC::JSValue::toStringFast):
(JSC::JSValue::toWTFString):

  • runtime/RegExpPrototype.cpp:

(JSC::regExpProtoFuncTest):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncCompile):

1:48 AM Changeset in webkit [197750] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Unreviewed speculative buildfix after r197728.

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

1:47 AM Changeset in webkit [197749] by Carlos Garcia Campos
  • 14 edits
    6 adds in releases/WebKitGTK/webkit-2.12

Merge r197474 - Modern IDB: Close UniqueIDBDatabases once they become unused.
​https://bugs.webkit.org/show_bug.cgi?id=154922

Reviewed by Alex Christensen.

Source/WebCore:

Tests: storage/indexeddb/modern/256-open-databases.html

storage/indexeddb/modern/exceed-open-file-limit.html

Without this change, attempts to open a 256th database in the DatabaseProcess will fail on Mac.

Due to SQLite journal files, this limit could come up as early as 128 databases if they are all
in active use.

This is because launchd - by default - limits xpc services to having 256 open file handles by default.

While we should explore raising the limit, we should also close databases we no longer need.

  • Modules/indexeddb/server/IDBBackingStore.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::closeUniqueIDBDatabase):
(WebCore::IDBServer::IDBServer::deleteUniqueIDBDatabase): Deleted.

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/MemoryBackingStoreTransaction.cpp:

(WebCore::IDBServer::MemoryBackingStoreTransaction::MemoryBackingStoreTransaction):

  • Modules/indexeddb/server/MemoryIDBBackingStore.cpp:

(WebCore::IDBServer::MemoryIDBBackingStore::getOrEstablishDatabaseInfo):

  • Modules/indexeddb/server/MemoryIDBBackingStore.h:
  • Modules/indexeddb/server/SQLiteIDBBackingStore.cpp:

(WebCore::IDBServer::SQLiteIDBBackingStore::getOrEstablishDatabaseInfo):

  • Modules/indexeddb/server/SQLiteIDBBackingStore.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::~UniqueIDBDatabase):
(WebCore::IDBServer::UniqueIDBDatabase::performCurrentOpenOperation): Handle the case where opening

the backing store failed by firing an error event instead of pretending everything is okay.

(WebCore::IDBServer::UniqueIDBDatabase::deleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didDeleteBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::openBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::didOpenBackingStore):
(WebCore::IDBServer::UniqueIDBDatabase::isCurrentlyInUse):
(WebCore::IDBServer::UniqueIDBDatabase::operationAndTransactionTimerFired): If the database is not

currently in use, close it.

(WebCore::IDBServer::UniqueIDBDatabase::inProgressTransactionCompleted):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:

(WebCore::IDBServer::UniqueIDBDatabase::deletePending): Deleted.

  • Modules/indexeddb/shared/IDBObjectStoreInfo.cpp:

(WebCore::IDBObjectStoreInfo::isolatedCopy): Actually get this right.

LayoutTests:

  • platform/mac-wk1/TestExpectations:
  • storage/indexeddb/modern/256-open-databases-expected.txt: Added.
  • storage/indexeddb/modern/256-open-databases.html: Added.
  • storage/indexeddb/modern/exceed-open-file-limit-expected.txt: Added.
  • storage/indexeddb/modern/exceed-open-file-limit.html: Added.
  • storage/indexeddb/modern/resources/256-open-databases.js: Added.
  • storage/indexeddb/modern/resources/exceed-open-file-limit.js: Added.
1:46 AM Changeset in webkit [197748] by youenn.fablet@crf.canon.fr
  • 11 edits
    63 adds in trunk

[Fetch API] Implement fetch skeleton
​https://bugs.webkit.org/show_bug.cgi?id=155111

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Importing basic fetch api tests.

  • resources/ImportExpectations: Activating fetch/api/basic import.
  • web-platform-tests/fetch/api/basic/accept-header-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/accept-header-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/accept-header-worker.html: Added.
  • web-platform-tests/fetch/api/basic/accept-header.html: Added.
  • web-platform-tests/fetch/api/basic/accept-header.js: Added.

(promise_test):

  • web-platform-tests/fetch/api/basic/integrity-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/integrity-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/integrity-worker.html: Added.
  • web-platform-tests/fetch/api/basic/integrity.html: Added.
  • web-platform-tests/fetch/api/basic/integrity.js: Added.

(integrity):

  • web-platform-tests/fetch/api/basic/mode-no-cors-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/mode-no-cors-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/mode-no-cors-worker.html: Added.
  • web-platform-tests/fetch/api/basic/mode-no-cors.html: Added.
  • web-platform-tests/fetch/api/basic/mode-no-cors.js: Added.

(fetchNoCors):

  • web-platform-tests/fetch/api/basic/mode-same-origin-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/mode-same-origin-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/mode-same-origin-worker.html: Added.
  • web-platform-tests/fetch/api/basic/mode-same-origin.html: Added.
  • web-platform-tests/fetch/api/basic/mode-same-origin.js: Added.

(fetchSameOrigin):

  • web-platform-tests/fetch/api/basic/request-forbidden-headers-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-forbidden-headers-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html: Added.
  • web-platform-tests/fetch/api/basic/request-forbidden-headers.html: Added.
  • web-platform-tests/fetch/api/basic/request-forbidden-headers.js: Added.

(requestForbiddenHeaders):

  • web-platform-tests/fetch/api/basic/request-headers-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-headers-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/request-headers-worker.html: Added.
  • web-platform-tests/fetch/api/basic/request-headers.html: Added.
  • web-platform-tests/fetch/api/basic/request-headers.js: Added.

(requestHeaders):

  • web-platform-tests/fetch/api/basic/scheme-about-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-about-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-about-worker.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-about.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-about.js: Added.

(checkFetchResponse):
(checkKoUrl):

  • web-platform-tests/fetch/api/basic/scheme-blob-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-blob-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-blob-worker.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-blob.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-blob.js: Added.

(checkFetchResponse):
(checkKoUrl):

  • web-platform-tests/fetch/api/basic/scheme-data-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-data-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-data-worker.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-data.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-data.js: Added.

(checkFetchResponse):
(checkKoUrl):

  • web-platform-tests/fetch/api/basic/scheme-others-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-others-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/scheme-others-worker.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-others.html: Added.
  • web-platform-tests/fetch/api/basic/scheme-others.js: Added.

(checkKoUrl):

  • web-platform-tests/fetch/api/basic/stream-response-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/stream-response-worker-expected.txt: Added.
  • web-platform-tests/fetch/api/basic/stream-response-worker.html: Added.
  • web-platform-tests/fetch/api/basic/stream-response.html: Added.
  • web-platform-tests/fetch/api/basic/stream-response.js: Added.

(streamBody):
(promise_test.):
(promise_test):

  • web-platform-tests/fetch/api/basic/w3c-import.log: Added.

Source/WebCore:

Adding skeleton code to call fetch API from normal and worker scopes.
Fetch API implementation is limited to reject the promise.

Updating the binding generator to fix the case of overloaded promise-returning functions.
Made overloaded utility functions "static inline".

Tests: imported/w3c/web-platform-tests/fetch/api/basic/accept-header-worker.html

imported/w3c/web-platform-tests/fetch/api/basic/accept-header.html
imported/w3c/web-platform-tests/fetch/api/basic/integrity-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/integrity.html
imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/mode-no-cors.html
imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/mode-same-origin.html
imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/request-forbidden-headers.html
imported/w3c/web-platform-tests/fetch/api/basic/request-headers-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/request-headers.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-about-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-about.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-blob.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-data-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-data.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-others-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/scheme-others.html
imported/w3c/web-platform-tests/fetch/api/basic/stream-response-worker.html
imported/w3c/web-platform-tests/fetch/api/basic/stream-response.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/fetch/DOMWindowFetch.cpp: Added.

(WebCore::DOMWindowFetch::fetch):

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

(WebCore::WorkerGlobalScopeFetch::fetch):

  • Modules/fetch/WorkerGlobalScopeFetch.h: Added.
  • Modules/fetch/WorkerGlobalScopeFetch.idl: Added.
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation): Fixing the case of overloaded promise-returning functions.

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

(WebCore::jsTestObjPrototypeFunctionOverloadedMethod1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod2):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod3):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod4):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod5):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod6):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod7):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod8):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod9):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod10):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod11):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod11):
(WebCore::jsTestObjConstructorFunctionOverloadedMethod12):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2Promise):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod): Deleted.
(WebCore::jsTestObjConstructorFunctionClassMethod2): Deleted.
(WebCore::jsTestObjPrototypeFunctionAny): Deleted.
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionPromise): Deleted.
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithFloatArgumentPromise): Deleted.
(WebCore::jsTestObjPrototypeFunctionTestPromiseFunctionWithExceptionPromise): Deleted.

  • bindings/scripts/test/TestObj.idl:

LayoutTests:

1:44 AM Changeset in webkit [197747] by Carlos Garcia Campos
  • 1 edit
    3 adds in releases/WebKitGTK/webkit-2.12/LayoutTests

Merge r197465 - Add a benchmark for string transcoding.

Rubber stamped by Saam Barati.

I wrote some code like this while working on
​https://github.com/WebAssembly/design/pull/573. I thought I'd add it as a benchmark since
it stresses things that we may not have good bench coverage for.

  • js/regress/script-tests/string-transcoding.js: Added.

(decodeUTF8):
(encodeUTF8):
(arraysEqual):
(arrayToString):
(setHeader):
(print):
(tryArray):
(doSteps):

  • js/regress/string-transcoding-expected.txt: Added.
  • js/regress/string-transcoding.html: Added.
1:36 AM Changeset in webkit [197746] by Carlos Garcia Campos
  • 13 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197462 - Use IndentTextOrNot instead of passing isFirstLine/shouldIndentText as bool.
​https://bugs.webkit.org/show_bug.cgi?id=154628

Reviewed by Simon Fraser.

No change in behaviour.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::computeStartPositionDeltaForChildAvoidingFloats):
(WebCore::RenderBlock::logicalLeftSelectionOffset):
(WebCore::RenderBlock::logicalRightSelectionOffset):

  • rendering/RenderBlock.h:

(WebCore::RenderBlock::availableLogicalWidthForLineInRegion):
(WebCore::RenderBlock::logicalRightOffsetForLineInRegion):
(WebCore::RenderBlock::logicalLeftOffsetForLineInRegion):
(WebCore::RenderBlock::startOffsetForLineInRegion):
(WebCore::RenderBlock::endOffsetForLineInRegion):
(WebCore::RenderBlock::availableLogicalWidthForLine):
(WebCore::RenderBlock::logicalRightOffsetForLine):
(WebCore::RenderBlock::logicalLeftOffsetForLine):
(WebCore::RenderBlock::startOffsetForLine):
(WebCore::RenderBlock::endOffsetForLine):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::getClearDelta):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::updateLogicalInlinePositions):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
(WebCore::RenderBlockFlow::deleteEllipsisLineBoxes):
(WebCore::RenderBlockFlow::checkLinesForTextOverflow):
(WebCore::RenderBlockFlow::startAlignedOffsetForLine):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::shrinkLogicalWidthToAvoidFloats):
(WebCore::RenderBox::containingBlockAvailableLineWidthInRegion):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::RenderDeprecatedFlexibleBox::applyLineClamp):

  • rendering/RenderListItem.cpp:

(WebCore::RenderListItem::positionListMarker):

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::selectionTop):
(WebCore::RootInlineBox::selectionBottom):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseForWithReason):
(WebCore::SimpleLineLayout::updateLineConstrains):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::skipLeadingWhitespace):

  • rendering/line/LineWidth.cpp:

(WebCore::LineWidth::shrinkAvailableWidthForNewFloatIfNeeded):
(WebCore::availableWidthAtOffset):

  • rendering/line/LineWidth.h:

(WebCore::LineWidth::shouldIndentText):

1:31 AM Changeset in webkit [197745] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197446 - [JSC] Use a Move without REX byte when possible
​https://bugs.webkit.org/show_bug.cgi?id=154801

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-02
Reviewed by Alex Christensen.

Filip wrote an optimization in the register allocator
to use 32bit "Move" when we don't care about the top bytes.

When I moved the commutative ops to the fake 3 operands instruction
I largely destroyed this since all the "Moves" became full register.

In this patch, I switch back to 32bit "Moves" for 32bit operations.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::and32):
(JSC::MacroAssemblerX86Common::lshift32):
(JSC::MacroAssemblerX86Common::mul32):
(JSC::MacroAssemblerX86Common::or32):
(JSC::MacroAssemblerX86Common::rshift32):
(JSC::MacroAssemblerX86Common::urshift32):
(JSC::MacroAssemblerX86Common::xor32):
(JSC::MacroAssemblerX86Common::branchAdd32):
(JSC::MacroAssemblerX86Common::branchMul32):
(JSC::MacroAssemblerX86Common::branchSub32):
(JSC::MacroAssemblerX86Common::move32IfNeeded):

1:10 AM Changeset in webkit [197744] by youenn.fablet@crf.canon.fr
  • 7 edits in trunk/Source/WebCore

[Fetch API] Make FetchRequest and FetchResponse ActiveDOMObject
​https://bugs.webkit.org/show_bug.cgi?id=154729

Reviewed by Darin Adler.

Covered by existing tests.

Making FetchRequest and FetchResponse ActiveDOMObject.
Both objects can always be suspended now.
This might be updated when blob conversion is added or when fetching data to fill in FetchResponse.

  • Modules/fetch/FetchRequest.cpp:

(WebCore::FetchRequest::create):
(WebCore::FetchRequest::clone):
(WebCore::FetchRequest::activeDOMObjectName):
(WebCore::FetchRequest::canSuspendForDocumentSuspension):

  • Modules/fetch/FetchRequest.h:

(WebCore::FetchRequest::FetchRequest):

  • Modules/fetch/FetchRequest.idl:
  • Modules/fetch/FetchResponse.cpp:

(WebCore::FetchResponse::error):
(WebCore::FetchResponse::redirect):
(WebCore::FetchResponse::FetchResponse):
(WebCore::FetchResponse::clone):
(WebCore::FetchResponse::activeDOMObjectName):
(WebCore::FetchResponse::canSuspendForDocumentSuspension):

  • Modules/fetch/FetchResponse.h:

(WebCore::FetchResponse::create):

  • Modules/fetch/FetchResponse.idl:
1:08 AM Changeset in webkit [197743] by Carlos Garcia Campos
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197445 - [JSC] Simplify ArithMod(ArithMod(x, const1), const2) if const2 >= const1
​https://bugs.webkit.org/show_bug.cgi?id=154904

Reviewed by Saam Barati.

The ASM test "ubench" has a "x % 10 % 255".
The second modulo should be eliminated.

This is a 15% improvement on ASMJS' ubench.

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • tests/stress/arith-modulo-twice.js: Added.

(opaqueModuloSmaller):
(opaqueModuloEqual):
(opaqueModuloLarger):
(opaqueModuloSmallerNeg):
(opaqueModuloEqualNeg):
(opaqueModuloLargerNeg):
(opaqueExpectedOther):

12:55 AM Changeset in webkit [197742] by timothy@apple.com
  • 3 edits in trunk/Source/WebKit2

Web Inspector: Make WebAutomationSession::closeBrowsingContext work as expected

​https://bugs.webkit.org/show_bug.cgi?id=155162
rdar://problem/25027191

Reviewed by Brian Burg.

  • UIProcess/Automation/WebAutomationSession.cpp:

(WebKit::WebAutomationSession::closeBrowsingContext):
Call closePage, the same method ultimately used by window.close().

  • UIProcess/WebPageProxy.h: Make closePage public.
12:49 AM Changeset in webkit [197741] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197438 - Simplify some StringBuilder appends
​https://bugs.webkit.org/show_bug.cgi?id=154902

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-01
Reviewed by Mark Lam.

  • runtime/ExceptionHelpers.cpp:

(JSC::notAFunctionSourceAppender):

  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::stackTracesAsJSON):
Use StringBuilder::append(char) instead of append(char*) where possible.

12:46 AM Changeset in webkit [197740] by Carlos Garcia Campos
  • 1 edit
    3 adds in releases/WebKitGTK/webkit-2.12/LayoutTests

Merge r197417 - FTL should simplify StringReplace with an empty replacement string
​https://bugs.webkit.org/show_bug.cgi?id=154871

Reviewed by Michael Saboff.

Really add this new test.

  • js/regress/script-tests/string-replace-empty.js: Added.
  • js/regress/string-replace-empty-expected.txt: Added.
  • js/regress/string-replace-empty.html: Added.
12:38 AM Changeset in webkit [197739] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12

Merge r197416 - FTL should simplify StringReplace with an empty replacement string
​https://bugs.webkit.org/show_bug.cgi?id=154871

Reviewed by Michael Saboff.

This is a simple and hugely profitable change. If we do a string.replace(/things/, ""), then
this calls directly into StringPrototype's replace-with-empty-string logic instead of going
through stuff that does checks before reaching that same conclusion.

This speeds up Octane/regexp by about 6-10%. It also speeds up the attached microbenchmark by
about 7%.

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):

  • runtime/StringPrototype.cpp:

(JSC::jsSpliceSubstringsWithSeparators):
(JSC::removeUsingRegExpSearch):
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::operationStringProtoFuncReplaceRegExpString):

  • runtime/StringPrototype.h:
12:20 AM Changeset in webkit [197738] by commit-queue@webkit.org
  • 11 edits
    7 adds in trunk

[SVG2] Implement marker orient='auto-start-reverse'
​https://bugs.webkit.org/show_bug.cgi?id=138456

Patch by Nikos Andronikos <​nikos.andronikos-webkit@cisra.canon.com.au> on 2016-03-08
Reviewed by Darin Adler.

Source/WebCore:

​https://www.w3.org/TR/SVG2/painting.html#OrientAttribute
marker-start markers must be oriented at 180 degrees to the direction of the path when
the orient attribute of the marker is set to 'auto-start-reverse'.

To acheive this the SVGMarkerData class which calculates the angles for each marker on
a path must know whether the orient type is set to reverse the start marker.

Tests: svg/animations/animate-marker-orient-from-angle-to-autostartreverse.html

svg/animations/animate-marker-orienttype-4.html
svg/custom/marker-auto-start-reverse.html

  • rendering/svg/RenderSVGShape.cpp:

(WebCore::RenderSVGShape::processMarkerPositions):

Create marker data, using animated value of orient to determine
if first marker should be reversed.

  • rendering/svg/SVGMarkerData.h:

(WebCore::SVGMarkerData::SVGMarkerData):

Constructor now requires boolean indicating if start marker is
reversed.

(WebCore::SVGMarkerData::currentAngle):

Take into account whether start marker should be reversed.

  • rendering/svg/SVGResources.cpp:

(WebCore::SVGResources::markerReverseStart):

New function to query whether start marker should be reversed.

  • rendering/svg/SVGResources.h: Add declaration for new function.
  • svg/SVGAnimatedAngle.cpp:

(WebCore::SVGAnimatedAngleAnimator::calculateAnimatedValue):

Support animation including the value auto-start-reverse.

  • svg/SVGMarkerElement.cpp:

(WebCore::SVGMarkerElement::setOrient):

Combine duplicated functionality into one private method

(WebCore::SVGMarkerElement::setOrientToAuto):

Set orient type and angle correctly for orient=auto. Uses setOrient.

(WebCore::SVGMarkerElement::setOrientToAngle):

Set orient type and angle correctly for orient=<angle>. Uses setOrient.

(WebCore::SVGMarkerElement::synchronizeOrientType):

Support auto-start-reverse as a possible case.

  • svg/SVGMarkerElement.h:

(WebCore::SVGIDLEnumLimits<SVGMarkerOrientType>::highestExposedEnumValue):

Limit the orient DOM property so that the new enum value
required for auto-start-reverse is not exposed.

(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::highestEnumValue):

Support auto-start-reverse.

(WebCore::SVGPropertyTraits<SVGMarkerOrientType>::fromString):

Support auto-start-reverse.

LayoutTests:

  • svg/animations/animate-marker-orient-from-angle-to-autostartreverse-expected.txt: Added.
  • svg/animations/animate-marker-orient-from-angle-to-autostartreverse.html: Added.
  • svg/animations/animate-marker-orienttype-4-expected.html: Added.
  • svg/animations/animate-marker-orienttype-4.html: Added. Verify output after animation has run - ensure animation reflected in visual result.
  • svg/animations/script-tests/animate-marker-orient-from-angle-to-autostartreverse.js: Added. Test DOM values at various snap-shot times throughout the animation.

(sample1):
(sample2):
(sample3):
(executeTest):

  • svg/custom/marker-auto-start-reverse-expected.html: Added.
  • svg/custom/marker-auto-start-reverse.html: Added. Verify static result - start marker is oriented at 180 degrees to direction of path.
  • svg/dom/SVGAnimatedEnumeration-SVGMarkerElement-expected.txt:
  • svg/dom/script-tests/SVGAnimatedEnumeration-SVGMarkerElement.js: Check attributes are treated as case sensitive. Check UNKNOWN is returned for enum value when auto-start-reverse set.
12:16 AM Changeset in webkit [197737] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197415 - Timer alignment in separate web processes should not all sync up to the same point.
​https://bugs.webkit.org/show_bug.cgi?id=154878

Reviewed by Chris Dumez.

For any given WebContent process it is desirable that timers are synchronized to a single
alignment point, but if all WebContent processes align to the same point then there may
be a thundering herd of processes waking up.

  • page/DOMTimer.cpp:

(WebCore::DOMTimer::alignedFireTime):

  • align to a randomized point.
12:13 AM Changeset in webkit [197736] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197411 - Unreviewed, fix CLOOP build.

  • jit/JITOperations.h:

Mar 7, 2016:

11:58 PM Changeset in webkit [197735] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r197452 - REGRESSION(r197409): [GTK] Web process always crashes on WebPage construction after r197409
​https://bugs.webkit.org/show_bug.cgi?id=154918

Reviewed by Žan Doberšek.

We have an incorrect check in DrawingAreaImpl constructor that has
never actually worked because it uses the page settings before
they were initialized. But that has been fixed in r197409 and now
we are always forcing accelerated compositing mode incorrectly,
because m_alwaysUseCompositing is set in the constructor and never
changed again.

  • WebProcess/WebPage/DrawingAreaImpl.cpp:

(WebKit::DrawingAreaImpl::DrawingAreaImpl): Remove code to set
settings and m_alwaysUseCompositing, since that should be done in
updatePreferences().
(WebKit::DrawingAreaImpl::updatePreferences): Update the settings
accordingly and always update m_alwaysUseCompositing when AC is
enabled and forced in the settings.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage): WebPage::updatePreferences() calls
DrawingArea::updatePreferences(), but since r197409 it happens
before the drawing area has been created. So, call
DrawingArea::updatePreferences() in the constructor right after
the main frame has been created, since
DrawingArea::updatePreferences() uses the main frame.

11:58 PM Changeset in webkit [197734] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.12/Source

Merge r197409 - REGRESSION (r154616): Accelerated drawing is off during the initial load
<​https://webkit.org/b/123812>

Reviewed by Tim Horton.

Source/WebCore:

Robustify the hey-the-Settings-changed callbacks in Page to handle document-less frames.
This is needed because now Settings are changed even before the main Frame has a Document.

  • page/Page.cpp:

(WebCore::networkStateChanged):
(WebCore::Page::updateStyleForAllPagesAfterGlobalChangeInEnvironment):
(WebCore::Page::takeAnyMediaCanStartListener):
(WebCore::Page::setMediaVolume):
(WebCore::Page::setPageScaleFactor):
(WebCore::Page::invalidateStylesForAllLinks):
(WebCore::Page::invalidateStylesForLink):
(WebCore::Page::dnsPrefetchingStateChanged):
(WebCore::Page::storageBlockingStateChanged):
(WebCore::Page::setMuted):
(WebCore::Page::captionPreferencesChanged):
(WebCore::Page::setSessionID):
(WebCore::Page::setPlaybackTarget):
(WebCore::Page::playbackTargetAvailabilityDidChange):
(WebCore::Page::setShouldPlayToPlaybackTarget):

  • page/Settings.cpp:

(WebCore::setImageLoadingSettings):

Source/WebKit2:

Load preferences before instantiating the first DrawingArea. This ensures that we do the
initial paint using accelerated drawing, and avoids allocating persistent data structures
only needed by the software rendering path.

  • WebProcess/WebPage/WebPage.cpp:
11:18 PM Changeset in webkit [197733] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r197062): [GTK] Transparent backgrounds no longer work after r197062
​https://bugs.webkit.org/show_bug.cgi?id=155119

Reviewed by Martin Robinson.

This is because after r197062 we are now realizing the view too
early, even before the toplevel window has been realized, forcing
the toplevel window to be realized. If the RGBA visual is set on
the window after it has been realzied it doesn't have any
effect. We should wait until the toplevel window is realized to
realize the web view, giving time to the application to set RGBA
visual and background color. If the toplevel window is already
realized we realize the web view immediately, so that this doesn't
affect the tearing problems fixed in r197062.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(toplevelWindowRealized):
(webkitWebViewBaseSetToplevelOnScreenWindow):

11:16 PM Changeset in webkit [197732] by sbarati@apple.com
  • 11 edits
    1 copy
    2 adds in trunk/Source/JavaScriptCore

[ES6] Implement revocable proxies
​https://bugs.webkit.org/show_bug.cgi?id=154321

Reviewed by Mark Lam.

This patch is a straight forward implementation of Proxy.revocable
with respect to section 26.2.2.1 of the ECMAScript spec.
​https://tc39.github.io/ecma262/#sec-proxy.revocable

This patch also fixes a bug in Proxy where we
were incorrectly caching "in", i.e, "x" in proxy.
We should never blatantly cache this because caching is observable
behavior by users of the language. We could come up with
a smarter caching scheme that caches only if the Proxy's
handler doesn't have a "has" property, i.e, we don't have
to call out to JS code. But for now, it's easiest to disable
caching.

  • CMakeLists.txt:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • runtime/JSGlobalObject.cpp:

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

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::moduleRecordStructure):
(JSC::JSGlobalObject::moduleNamespaceObjectStructure):
(JSC::JSGlobalObject::proxyObjectStructure):
(JSC::JSGlobalObject::proxyRevokeStructure):
(JSC::JSGlobalObject::wasmModuleStructure):

  • runtime/ProxyConstructor.cpp:

(JSC::ProxyConstructor::create):
(JSC::ProxyConstructor::ProxyConstructor):
(JSC::makeRevocableProxy):
(JSC::proxyRevocableConstructorThrowError):
(JSC::ProxyConstructor::finishCreation):
(JSC::constructProxyObject):

  • runtime/ProxyConstructor.h:

(JSC::ProxyConstructor::createStructure):

  • runtime/ProxyObject.cpp:

(JSC::ProxyObject::finishCreation):
(JSC::performProxyGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):
(JSC::ProxyObject::getPrototype):
(JSC::ProxyObject::revoke):
(JSC::ProxyObject::visitChildren):

  • runtime/ProxyObject.h:

(JSC::ProxyObject::create):

  • runtime/ProxyRevoke.cpp: Added.

(JSC::ProxyRevoke::create):
(JSC::ProxyRevoke::ProxyRevoke):
(JSC::ProxyRevoke::finishCreation):
(JSC::performProxyRevoke):
(JSC::ProxyRevoke::getCallData):
(JSC::ProxyRevoke::visitChildren):

  • runtime/ProxyRevoke.h: Added.

(JSC::ProxyRevoke::createStructure):
(JSC::ProxyRevoke::proxy):
(JSC::ProxyRevoke::setProxyToNull):

  • tests/stress/proxy-has-property.js:

(assert):
(assert.let.handler.has):
(assert.let.foo):

  • tests/stress/proxy-revoke.js: Added.

(assert):
(throw.new.Error.):
(throw.new.Error):
(callAllHandlers):
(shouldThrowNullHandler):
(allHandlersShouldThrow):
(i.let.trap.of.traps.trap.string_appeared_here.func):
(i.let.trap.of.traps.else.func):
(i.Proxy.revocable):

11:09 PM Changeset in webkit [197731] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Fix the ARM build after r197687
​https://bugs.webkit.org/show_bug.cgi?id=155128

Reviewed by Saam Barati.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::moveZeroToDouble):

10:55 PM Changeset in webkit [197730] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Reduce the number of instructions needed to record the last regexp result
​https://bugs.webkit.org/show_bug.cgi?id=155161

Reviewed by Sam Weinig.

This tightens up RegExpCachedResult::record(). My profiling shows that we spend just
over 1% of the time in Octane/regexp in this function. This function had two obvious
redundancies:

1) It executed the write barrier on owner twice. It only needs to execute it once. Since

the same RegExpConstructor is likely to be used many times, it makes sense to do the
barrier without looking at the 'to' objects at all. In steady state, this means that
the RegExpConstructor will simply be OldGrey so this one barrier will always skip the
slow path.

2) It cleared some fields that didn't need to be cleared, since we can just use

m_reified to indicate that the fields are not meaningful anymore.

This is meant to be a microscopic regexp speed-up.

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::visitChildren):
(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpCachedResult.h:

(JSC::RegExpCachedResult::record):

10:53 PM Changeset in webkit [197729] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

createRegExpMatchesArray should allocate substrings more quickly
​https://bugs.webkit.org/show_bug.cgi?id=155160

Reviewed by Sam Weinig.

This was calling a version of jsSubstring() that isn't inlineable because it was doing a lot
of checks in finishCreation(). In particular, it was checking that the base string is not
itself a substring and that it's been resolved. We don't need those checks here, since the
string must have been resolved prior to regexp processing.

This patch is also smart about whether to do checks for the empty and full substrings. In
the matches array loop, these checks are super unlikely to be profitable, so we just
unconditionally allocate the substring.

This removes those checks and makes the allocation inlineable. It looks like a 1% speed-up
on Octane/regexp.

  • runtime/JSString.h:

(JSC::jsSubstring):
(JSC::jsSubstringOfResolved):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createRegExpMatchesArray):

10:44 PM Changeset in webkit [197728] by commit-queue@webkit.org
  • 25 edits in trunk/Source

Enhance logging: Use "always on" macros
​https://bugs.webkit.org/show_bug.cgi?id=154499
<rdar://problem/24757730>

Patch by Keith Rollin <Keith Rollin> on 2016-03-07
Reviewed by Chris Dumez.

Source/WebCore:

Make use of new logging macros by reporting on frame and resource
load activity.

Add new logging to memory pressure handler to show when it's called
and its effectiveness. As part of this change, the various
platform-specific implementations have been unified.

No new tests. No new basic functionality has been added. Only new
logging has been added in release mode or has been enabled to execute
in release mode as well as debug mode.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::prepareForLoadStart):
(WebCore::FrameLoader::checkLoadCompleteForThisFrame):
(WebCore::FrameLoader::isAlwaysOnLoggingAllowed):

  • loader/FrameLoader.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::isAlwaysOnLoggingAllowed):

  • loader/ResourceLoader.h:
  • page/Frame.cpp:

(WebCore::Frame::isAlwaysOnLoggingAllowed):

  • page/Frame.h:
  • page/Page.cpp:

(WebCore::Page::isAlwaysOnLoggingAllowed):

  • page/Page.h:
  • page/SessionID.h:

(WebCore::SessionID::isAlwaysOnLoggingAllowed):

  • platform/MemoryPressureHandler.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::logMemoryUsageChange):
(WebCore::MemoryPressureHandler::ReliefLogger::platformLog): Deleted.

  • platform/MemoryPressureHandler.h:

(WebCore::MemoryPressureHandler::ReliefLogger::ReliefLogger):
(WebCore::MemoryPressureHandler::ReliefLogger::~ReliefLogger):

  • platform/cocoa/MemoryPressureHandlerCocoa.mm:

(WebCore::MemoryPressureHandler::ReliefLogger::platformLog): Deleted.

  • platform/linux/MemoryPressureHandlerLinux.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::platformLog): Deleted.

  • platform/win/MemoryPressureHandlerWin.cpp:

(WebCore::MemoryPressureHandler::ReliefLogger::platformLog): Deleted.

Source/WebKit2:

Make use of new logging macros by reporting on frame and resource
load activity.

Connection updated to report IPC errors, helping us identify when
messaging between processes breaks down.

ChildProcess updated to log if it is terminating early. Some
sysdiagnose logging from customers indicate that this is happening in
the wild.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::startNetworkLoad):
(WebKit::NetworkResourceLoader::didFinishLoading):
(WebKit::NetworkResourceLoader::didFailLoading):
(WebKit::NetworkResourceLoader::continueWillSendRequest):
(WebKit::NetworkResourceLoader::isAlwaysOnLoggingAllowed):

  • NetworkProcess/NetworkResourceLoader.h:
  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForSyncReply):

  • Shared/ChildProcess.cpp:

(WebKit::didCloseOnConnectionWorkQueue):

  • WebProcess/Network/WebLoaderStrategy.cpp:

(WebKit::WebLoaderStrategy::scheduleLoad):

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::willSendRequest):
(WebKit::WebResourceLoader::didReceiveResponse):
(WebKit::WebResourceLoader::didReceiveData):
(WebKit::WebResourceLoader::didFinishResourceLoad):
(WebKit::WebResourceLoader::didFailResourceLoad):
(WebKit::WebResourceLoader::didReceiveResource):
(WebKit::WebResourceLoader::isAlwaysOnLoggingAllowed):

  • WebProcess/Network/WebResourceLoader.h:

Source/WTF:

Update LOG_ALWAYS and LOG_ALWAYS_ERROR macros to take an expression to
be evaluated. If the expression evaluates to True, the associated
message is logged. This facility is used to prevent logging from being
performed in private sessions, but it could be extended to prevent
logging under other circumstances as well.

  • wtf/Assertions.h:
10:42 PM Changeset in webkit [197727] by Chris Dumez
  • 6 edits in trunk

Align HTMLCanvasElement.width / height with the specification
​https://bugs.webkit.org/show_bug.cgi?id=155156

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/reflection-embedded-expected.txt:

Source/WebCore:

Align HTMLCanvasElement.width / height with the specification:

In particular, the following changes were made:

  1. The attributes are now 'unsigned long' instead of 'long'
  2. The corresponding content attributes are parsed as per the HTML rules for passing non-negative integers.
  3. Upon setting, if the value is out-of-range, the content attributes is set to its default value.

No new tests, already covered by existing test.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::setHeight):
(WebCore::HTMLCanvasElement::setWidth):
(WebCore::HTMLCanvasElement::reset):

  • html/HTMLCanvasElement.h:
  • html/HTMLCanvasElement.idl:
10:38 PM Changeset in webkit [197726] by Chris Dumez
  • 26 edits
    2 deletes in trunk

Stop clamping HTMLElement.tabIndex to the range of a short
​https://bugs.webkit.org/show_bug.cgi?id=155159

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Rebaseline now that more checks are passing.

  • web-platform-tests/html/dom/reflection-embedded-expected.txt:
  • web-platform-tests/html/dom/reflection-forms-expected.txt:
  • web-platform-tests/html/dom/reflection-grouping-expected.txt:
  • web-platform-tests/html/dom/reflection-metadata-expected.txt:
  • web-platform-tests/html/dom/reflection-misc-expected.txt:
  • web-platform-tests/html/dom/reflection-obsolete-expected.txt:
  • web-platform-tests/html/dom/reflection-sections-expected.txt:
  • web-platform-tests/html/dom/reflection-tabular-expected.txt:
  • web-platform-tests/html/dom/reflection-text-expected.txt:

Source/WebCore:

Stop clamping HTMLElement.tabIndex to the range of a short. We
apparently did this to match Firefox. However, this no longer matches
Firefox's behavior nor the HTML specification:

No new tests, already covered by existing test.

  • dom/Element.cpp:

(WebCore::Element::setTabIndexExplicitly):
(WebCore::Element::tabIndex):

  • dom/Element.h:
  • dom/ElementRareData.h:

(WebCore::ElementRareData::tabIndex):
(WebCore::ElementRareData::setTabIndexExplicitly):

  • html/HTMLAnchorElement.cpp:

(WebCore::HTMLAnchorElement::tabIndex):

  • html/HTMLAnchorElement.h:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::parseAttribute):
(WebCore::HTMLElement::tabIndex):

  • html/HTMLElement.h:
  • html/HTMLFormControlElement.cpp:

(WebCore::HTMLFormControlElement::tabIndex):

  • html/HTMLFormControlElement.h:
  • page/FocusController.cpp:

(WebCore::nextElementWithGreaterTabIndex):
(WebCore::FocusController::previousFocusableElement):

  • svg/SVGAElement.cpp:

(WebCore::SVGAElement::tabIndex):

  • svg/SVGAElement.h:
  • svg/SVGElement.cpp:

(WebCore::SVGElement::tabIndex):
(WebCore::SVGElement::parseAttribute):

  • svg/SVGElement.h:

LayoutTests:

Drop outdated test.

  • fast/dom/tabindex-clamp-expected.txt: Removed.
  • fast/dom/tabindex-clamp.html: Removed.
9:56 PM Changeset in webkit [197725] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Small clean up of how we use SSA's valuesAtHead
​https://bugs.webkit.org/show_bug.cgi?id=155152

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-07
Reviewed by Filip Pizlo.

liveAtHead and valuesAtHead contain the same nodes,
we do not need the extra look up.

This also opens the way to use the same kind of liveness
analysis as Air (where live values at head do not use a set).

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::beginBasicBlock):
(JSC::DFG::InPlaceAbstractState::merge):

9:39 PM Changeset in webkit [197724] by dbates@webkit.org
  • 6 edits
    34 adds in trunk

CSP: Source '*' should not match URLs with schemes blob, data, or filesystem
​https://bugs.webkit.org/show_bug.cgi?id=154122
<rdar://problem/24613336>

Reviewed by Brent Fulgham.

Source/WebCore:

Restrict matching of source expression * to HTTP or HTTPS URLs for all directives except
img-src and media-src. This policy is more restrictive than the policy described in section
Matching Source Expressions of the Content Security Policy 2.0 spec., <​https://www.w3.org/TR/2015/CR-CSP2-20150721>,
which restricts matching * to schemes that are not blob, data, or filesystem.

For directive img-src we restrict matching of * to HTTP, HTTPS, and data URLs. For directive
media-src we restrict matching of * to HTTP, HTTPS, data URLs and blob URLs. We use a
more lenient interpretation of * for directives img-src and media-src than required by
the spec. to mitigate web compatibility issues.

Tests: fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html

fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star.html
fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star.html
fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star.html
fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star.html
fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star.html
http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star.html
http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star.html
http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star.html
http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star.html
http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star.html
media/video-with-blob-url-allowed-by-csp-media-src-star.html
media/video-with-data-url-allowed-by-csp-media-src-star.html
media/video-with-file-url-blocked-by-csp-media-src-star.html

  • page/csp/ContentSecurityPolicySourceList.cpp:

(WebCore::ContentSecurityPolicySourceList::isProtocolAllowedByStar): Added.
(WebCore::ContentSecurityPolicySourceList::matches): Modified to only match * if ContentSecurityPolicySourceList::isProtocolAllowedByStar().
evaluates to true.

  • page/csp/ContentSecurityPolicySourceList.h:

LayoutTests:

Add tests to ensure that we do not regress our interpretation of * with respect to directives
img-src, media-src, style-src, and default-src.

When running in WebKitTestRunner, skip the tests fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html
and media/video-with-blob-url-allowed-by-csp-media-src-star.html as they make use of eventSender.beginDragWithFiles(),
which is not implement. We will need to fix <​https://bugs.webkit.org/show_bug.cgi?id=64285>
before we can run these tests in WebKitTestRunner.

  • TestExpectations:
  • fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-blob-url-blocked-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-data-url-allowed-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star-expected.html: Added.
  • fast/dom/HTMLImageElement/image-with-file-url-blocked-by-csp-img-src-star.html: Added.
  • fast/dom/HTMLImageElement/resources/green.png: Added.
  • fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-blob-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-data-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star-expected.html: Added.
  • fast/dom/HTMLLinkElement/link-with-file-url-blocked-by-csp-style-src-star.html: Added.
  • fast/dom/HTMLLinkElement/resources/red-background-color.css: Added.

(#test):

  • http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-with-http-url-allowed-by-csp-img-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/image-with-https-url-allowed-by-csp-img-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/javascript-url-blocked-by-default-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/link-with-http-url-allowed-by-csp-style-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/link-with-https-url-allowed-by-csp-style-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-with-http-url-allowed-by-csp-media-src-star.html: Added.
  • http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/video-with-https-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-blob-url-allowed-by-csp-media-src-star-expected.html: Added.
  • media/video-with-blob-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-data-url-allowed-by-csp-media-src-star-expected.html: Added.
  • media/video-with-data-url-allowed-by-csp-media-src-star.html: Added.
  • media/video-with-file-url-blocked-by-csp-media-src-star-expected.html: Added.
  • media/video-with-file-url-blocked-by-csp-media-src-star.html: Added.
  • platform/wk2/TestExpectations:
7:45 PM Changeset in webkit [197723] by jonlee@apple.com
  • 6 edits in trunk/PerformanceTests

Add ability to retrieve raw data from release harness
​https://bugs.webkit.org/show_bug.cgi?id=155026

Reviewed by Simon Fraser.

  • Animometer/developer.html: Remove the special UI in the debug

harness.

  • Animometer/resources/runner/animometer.css: Add styles for the

overlay.

  • Animometer/resources/runner/animometer.js: Let 'j' show the JSON

results, but only if the overlay doesn't exist. Add 'esc' key to dismiss
the overlay.
(window.benchmarkController.selectResults): Cycle the cases around
so that the first 's' press selects both the benchmark score and
the individual test scores.

  • Animometer/resources/debug-runner/animometer.css: Remove

unneeded rules.

  • Animometer/resources/debug-runner/animometer.js: Make the same

call to handleKeyPress.

7:01 PM Changeset in webkit [197722] by ggaren@apple.com
  • 7 edits
    1 add in trunk/Source/bmalloc

bmalloc: Use List<T> instead of Vector<T> in some places
​https://bugs.webkit.org/show_bug.cgi?id=155150

Reviewed by Andreas Kling.

Vector<T> is expensive when you want a lot of them because our minimum
allocation size is the system page size.

  • bmalloc.xcodeproj/project.pbxproj: Added a List<T> class.
  • bmalloc/Heap.cpp:

(bmalloc::Heap::scavengeSmallPages):
(bmalloc::Heap::allocateSmallPage): Use the List<T> API. No need to check
for stale entries anymore because List<T> supports O(1) eager removal
and we remove eagerly now.

(bmalloc::Heap::deallocateSmallLine): Remove eagerly. This simplifies
the allocation code and it is also required for correctness since we
only have enough metadata to be in one list at a time.

  • bmalloc/Heap.h: List!
  • bmalloc/SmallChunk.h: Made this assert a little more precise since this

patch triggered the old version in a benign way.

(bmalloc::SmallChunk::SmallChunk): This code moved to the SmallPage
constructor.

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage): Accomodate the List<T> data structure.
This is a net memory savings on Mac for heaps smaller than ~128MB and on
iOS for heaps smaller than ~512MB. The maximum memory saved is 512kB on
Mac and 2MB on iOS. For larger heaps, there's a memory cost of 0.4% on
Mac and 0.1% on iOS.

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateSmallPage): Use List<T> API.

6:56 PM Changeset in webkit [197721] by Brent Fulgham
  • 10 edits in trunk/Source

Reduce startup and shutdown cost of resource load statistics
​https://bugs.webkit.org/show_bug.cgi?id=155120
<rdar://problem/25010167>

Reviewed by Andy Estes.

Source/WebCore:

Move all file-related code out of WebCore.

  • loader/ResourceLoadStatisticsStore.cpp:

(WebCore::ResourceLoadStatisticsStore::create): Deleted path overload.
(WebCore::ResourceLoadStatisticsStore::createEncoderFromData): Added.
(WebCore::ResourceLoadStatisticsStore::readDataFromDecoder): Added.
(WebCore::ResourceLoadStatisticsStore::ResourceLoadStatisticsStore): Deleted.
(WebCore::ResourceLoadStatisticsStore::writeDataToDisk): Deleted.
(WebCore::ResourceLoadStatisticsStore::setStatisticsStorageDirectory): Deleted.
(WebCore::ResourceLoadStatisticsStore::persistentStoragePath): Deleted.
(WebCore::ResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Deleted.
(WebCore::ResourceLoadStatisticsStore::createDecoderFromDisk): Deleted.
(WebCore::ResourceLoadStatisticsStore::writeEncoderToDisk): Deleted.

  • loader/ResourceLoadStatisticsStore.h:

(WebCore::ResourceLoadStatisticsStore::clear): Added.

Source/WebKit/mac:

Remove the Resource Load Statistics stuff from WK1, now that it is up and
running in WK2.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]): Remove call to read resource load
statistics from disk.
(+[WebView _applicationWillTerminate]): Remove call to write resource load
statistics to disk.

Source/WebKit2:

Use a dedicated WorkQueue to process resource load statistics data. Allow
processing to load (and save) previously stored statistics asynchronously so
that it does not delay startup.

Now that we have a more rational storage situation, get rid of the 'writeToDisk'
method since it is no longer needed in the WK2 layer.

Move all of the Resource Load Statistics file handling code from WebCore to this
API layer.

  • UIProcess/WebResourceLoadStatisticsStore.cpp:

(WebKit::WebResourceLoadStatisticsStore::WebResourceLoadStatisticsStore): Initialize
member variable with storage path, rather than passing to WebCore code.
(WebKit::WebResourceLoadStatisticsStore::resourceLoadStatisticsUpdated): Revised to
use the new WorkQueue code.
(WebKit::WebResourceLoadStatisticsStore::setResourceLoadStatisticsEnabled): When
activating the feature, purge any old statistics before loading from disk.
(WebKit::WebResourceLoadStatisticsStore::readDataFromDiskIfNeeded): Added.
(WebKit::WebResourceLoadStatisticsStore::processWillOpenConnection): Added.
(WebKit::WebResourceLoadStatisticsStore::processDidCloseConnection): Added.
(WebKit::WebResourceLoadStatisticsStore::applicationWillTerminate): Make sure all
of the WorkQueue tasks are done before terminating.
(WebKit::WebResourceLoadStatisticsStore::persistentStoragePath): Moved from WebCore.
(WebKit::WebResourceLoadStatisticsStore::writeEncoderToDisk): Ditto.
(WebKit::WebResourceLoadStatisticsStore::createDecoderFromDisk): Ditto.
(WebKit::WebResourceLoadStatisticsStore::writeToDisk): Deleted.

  • UIProcess/WebResourceLoadStatisticsStore.h:

(WebKit::WebResourceLoadStatisticsStore::coreStore):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::webProcessWillOpenConnection): Call new WebResourceLoadStatisticsStore code.
(WebKit::WebsiteDataStore::webProcessDidCloseConnection): Ditto.

6:40 PM Changeset in webkit [197720] by achristensen@apple.com
  • 6 edits
    2 adds in trunk

Fix cookies with private browsing and NetworkSession
​https://bugs.webkit.org/show_bug.cgi?id=155147
rdar://problem/25018279

Reviewed by Brady Eidson.

Source/WebKit2:

In the NetworkSession constructor, we look for a NetworkStorageSession in the SessionTracker
and use that NetworkStorageSession's CFHTTPCookieStorageRef in the NSURLSessionConfiguration.
NetworkStorageSessions were being set in SessionTracker's storageSessionMap after NetworkSessions
were created, causing the NSHTTPCookieStorage of the NSURLSession to be different from the
CFHTTPCookieStorageRef used by document.cookie in newly created private browsing sessions.
This fixes that problem by passing the NetworkStorageSession as a constructor parameter to the
NetworkSession so it can use the correct CFHTTPCookieStorageRef in its NSURLSessionConfiguration
before it is in the storageSessionMap.

  • NetworkProcess/NetworkSession.h:

(WebKit::NetworkSession::sessionID):

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

(WebKit::NetworkSession::defaultSession):
(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/mac/RemoteNetworkingContext.mm:

(WebKit::RemoteNetworkingContext::ensurePrivateBrowsingSession):

  • WebProcess/WebCoreSupport/mac/WebFrameNetworkingContext.mm:

(WebKit::WebFrameNetworkingContext::ensurePrivateBrowsingSession):

LayoutTests:

  • http/tests/cookies/private-cookie-storage-expected.txt: Added.
  • http/tests/cookies/private-cookie-storage.html: Added.
5:51 PM Changeset in webkit [197719] by jonlee@apple.com
  • 3 edits in trunk/Tools

Update perf bot configuration for Animometer
​https://bugs.webkit.org/show_bug.cgi?id=155134

Reviewed by Ryosuke Niwa.

  • Scripts/webkitpy/benchmark_runner/data/patches/Animometer.patch: Refactor the patch

to work with the latest version of the harness.

  • Scripts/webkitpy/benchmark_runner/data/plans/animometer.plan: Bump up the timeout,

and use the latest version of the harness.

5:27 PM WebKitGTK/2.12.x edited by Michael Catanzaro
(diff)
5:23 PM Changeset in webkit [197718] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking media/track/track-cues-pause-on-exit.html as flaky on ElCapitan Debug WK2
​https://bugs.webkit.org/show_bug.cgi?id=155151

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
4:49 PM Changeset in webkit [197717] by BJ Burg
  • 18 edits
    1 add in trunk/Source/JavaScriptCore

Web Inspector: the protocol generator should generate factory method stubs for protocol types
​https://bugs.webkit.org/show_bug.cgi?id=155103
<rdar://problem/25002772>

Reviewed by Timothy Hatcher.

Generate stubs with unique names so that parsing methods can be used
reflectively at runtime, based on the protocol version that's loaded.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/scripts/codegen/init.py:
  • inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:

Added. For each type in a domain, add a method of the form
-[ProtocolTypeConversions _parseXXX:fromPayload]. This is in a category
method, and the selector is only ever looked up at runtime.

(ObjCProtocolTypeConversionsHeaderGenerator.generate_output):

  • inspector/scripts/generate-inspector-protocol-bindings.py:

(generate_from_specification):

Rebaseline test results with new generator output.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
4:45 PM Changeset in webkit [197716] by Alan Bujtas
  • 11 edits in trunk/Source/WebCore

Crash in WebCore::RenderElement::containingBlockForObjectInFlow
​https://bugs.webkit.org/show_bug.cgi?id=155109

Reviewed by Simon Fraser.

It's unsafe to call containingBlock() on RenderView.

Unable to reproduce.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::styleWillChange):
(WebCore::RenderBlock::isSelfCollapsingBlock):
(WebCore::RenderBlock::selectionGaps):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::borderBoxRectInRegion):
(WebCore::RenderBox::computePercentageLogicalHeight):
(WebCore::RenderBox::computeReplacedLogicalHeightUsing):
(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasAutoHeightOrContainingBlockWithAutoHeight):

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::adjustedPositionRelativeToOffsetParent):
(WebCore::RenderFlowThread::offsetFromLogicalTopOfFirstRegion):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::hasCompositedLayerInEnclosingPaginationChain):
(WebCore::RenderLayer::updatePagination):
(WebCore::inContainingBlockChain):

  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::isValidColumnSpanner):

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::decorationsClipRectForBoxInNamedFlowFragment):

  • rendering/RenderObject.cpp:

(WebCore::hasFixedPosInNamedFlowContainingBlock):

  • rendering/RenderReplaced.cpp:

(WebCore::firstContainingBlockWithLogicalWidth):

  • rendering/RenderView.cpp:

(WebCore::RenderView::subtreeSelectionBounds):
(WebCore::RenderView::repaintSubtreeSelection):
(WebCore::RenderView::clearSubtreeSelection):
(WebCore::RenderView::applySubtreeSelection):

4:34 PM Changeset in webkit [197715] by fpizlo@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

RegExp.prototype.exec() should call into Yarr at most once
​https://bugs.webkit.org/show_bug.cgi?id=155139

Reviewed by Saam Barati.

For apparently no good reason, RegExp.prototype.match() was calling into Yarr twice, almost
as if it was hoping that the non-matching case was so common that it was best to have the
matching case do the work all over again.

This is a 4% speed-up on Octane/regexp. It's also a matter of common sense: we should not be
in the business of presuming whether someone's match will succeed or fail. The increased
cost of running Yarr twice is so much larger than whatever savings we were getting from
running a match-only regexp that this is just not a good overall deal for the engine.

Also, it's interesting that we are seeing a 4% speed-up on regexp despite the fact that a
majority (almost a supermajority, I think) of calls into RegExp.prototype.match() are failed
matches. So, this change is a 4% speed-up despite being a slow down on the common case. That
tells you just how bad the old behavior was on the uncommon case.

  • runtime/MatchResult.h:

(MatchResult::MatchResult):
(MatchResult::failed):
(MatchResult::operator bool):

  • runtime/RegExpCachedResult.cpp:

(JSC::RegExpCachedResult::lastResult):

  • runtime/RegExpConstructor.h:

(JSC::RegExpConstructor::setMultiline):
(JSC::RegExpConstructor::multiline):
(JSC::RegExpConstructor::performMatch):
(JSC::RegExpConstructor::recordMatch):

  • runtime/RegExpMatchesArray.cpp:

(JSC::createRegExpMatchesArray):
(JSC::createEmptyRegExpMatchesArray):
(JSC::createStructureImpl):

  • runtime/RegExpMatchesArray.h:

(JSC::createRegExpMatchesArray):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::put):
(JSC::getLastIndexAsUnsigned):
(JSC::RegExpObject::exec):
(JSC::RegExpObject::match):

  • runtime/RegExpObject.h:

(JSC::RegExpObject::getLastIndex):
(JSC::RegExpObject::test):

  • runtime/StringPrototype.cpp:

(JSC::stringProtoFuncMatch):

4:14 PM Changeset in webkit [197714] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

Correct bug in resource load statistics debug flag for legacy clients
​https://bugs.webkit.org/show_bug.cgi?id=155118
<rdar://problem/25020088>

Reviewed by Andy Estes.

Some clients launch WebKit2 using the "legacy" configuration for the website data store.
The Resource Load Statistics code was not added to this type of configuration, which
prevents various WebKit2 clients from using this code.

  • UIProcess/WebProcessPool.cpp:

(WebKit::legacyWebsiteDataStoreConfiguration): Tell the legacy initializer where to
find the resource load statistics data.

4:04 PM Changeset in webkit [197713] by jdiggs@igalia.com
  • 4 edits in trunk/Tools

[GTK][jhbuild] OpenWebRTC build fails with GCC 6.0
​https://bugs.webkit.org/show_bug.cgi?id=154839

Reviewed by Michael Catanzaro.

Add '-Wno-error' to jhbuildrc; remove it from the module sets for macos.

  • gtk/jhbuild-webrtc.modules:
  • gtk/jhbuild.modules:
  • gtk/jhbuildrc:
3:45 PM Changeset in webkit [197712] by commit-queue@webkit.org
  • 22 edits
    2 adds in trunk/Source/JavaScriptCore

Heap Snapshot should include different Edge types and data (Property, Index, Variable)
​https://bugs.webkit.org/show_bug.cgi?id=154937

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-03-07
Reviewed by Geoffrey Garen.

  • heap/SlotVisitor.cpp:

(JSC::SlotVisitor::appendHidden):

  • heap/SlotVisitor.h:
  • heap/SlotVisitorInlines.h:

(JSC::SlotVisitor::appendHidden):
(JSC::SlotVisitor::appendValuesHidden):
Add new visit methods to visit a reference without snapshotting the edge.

  • heap/Heap.cpp:

(JSC::AddExtraHeapSnapshotEdges::AddExtraHeapSnapshotEdges):
(JSC::AddExtraHeapSnapshotEdges::operator()):
(JSC::Heap::addHeapSnapshotEdges):
(JSC::Heap::removeDeadHeapSnapshotNodes):
(JSC::Heap::collectImpl):

  • heap/Heap.h:

After marking, visit the live cells for a chance to record extra
heap snapshotting information about the cell.

  • heap/HeapSnapshotBuilder.cpp:

(JSC::HeapSnapshotBuilder::appendNode):
(JSC::HeapSnapshotBuilder::appendEdge):
(JSC::HeapSnapshotBuilder::appendPropertyNameEdge):
(JSC::HeapSnapshotBuilder::appendVariableNameEdge):
(JSC::HeapSnapshotBuilder::appendIndexEdge):
(JSC::HeapSnapshotBuilder::json):

  • heap/HeapSnapshotBuilder.h:

(JSC::HeapSnapshotEdge::HeapSnapshotEdge):
Construct edges with extra data.

  • runtime/ClassInfo.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::heapSnapshot):

  • runtime/JSCell.h:

Add a new method to provide cells with an opportunity to provide
extra heap snapshotting information.

  • runtime/JSObject.cpp:

(JSC::JSObject::visitButterfly):
(JSC::JSObject::visitChildren):
(JSC::JSObject::heapSnapshot):
(JSC::JSFinalObject::visitChildren):

  • runtime/JSObject.h:

Capture object property names and index names when heap snapshotting.
Do not include them as internal edges in normal visitChildren.

  • runtime/JSEnvironmentRecord.cpp:

(JSC::JSEnvironmentRecord::visitChildren):
(JSC::JSEnvironmentRecord::heapSnapshot):

  • runtime/JSEnvironmentRecord.h:
  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::visitChildren):
(JSC::JSSegmentedVariableObject::heapSnapshot):

  • runtime/JSSegmentedVariableObject.h:

Capture scope variable names when heap snapshotting.

  • runtime/Structure.cpp:

(JSC::Structure::visitChildren):

  • runtime/Structure.h:
  • runtime/StructureInlines.h:

(JSC::Structure::propertyTable):
When performing a heap snapshotting collection, don't clear the
property table so that accessing the table during this GC is okay.

  • tests/heapProfiler/driver/driver.js:
  • tests/heapProfiler/property-edge-types.js: Added.
  • tests/heapProfiler/variable-edge-types.js: Added.

Tests covering the different edge types and data we capture.

3:27 PM Changeset in webkit [197711] by sbarati@apple.com
  • 4 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] Implement Proxy.GetPrototypeOf
​https://bugs.webkit.org/show_bug.cgi?id=155099

Reviewed by Mark Lam.

This patch is a straight forward implementation of Proxy.GetPrototypeOf
with respect to section 9.5.1 of the ECMAScript spec.
​https://tc39.github.io/ecma262/#sec-proxy-object-internal-methods-and-internal-slots-getprototypeof

  • runtime/ProxyObject.cpp:

(JSC::performProxyGet):
(JSC::ProxyObject::setPrototype):
(JSC::ProxyObject::performGetPrototype):
(JSC::ProxyObject::getPrototype):
(JSC::ProxyObject::visitChildren):

  • runtime/ProxyObject.h:
  • tests/es6.yaml:
  • tests/stress/proxy-get-prototype-of.js: Added.

(assert):
(throw.new.Error.let.handler.get getPrototypeOf):
(throw.new.Error.get let):
(throw.new.Error.get catch):
(throw.new.Error):
(assert.let.handler.getPrototypeOf):
(assert.get let):
(assert.get catch):
(assert.):
(let.handler.getPrototypeOf):
(get let):
(let.handler.has):

3:24 PM Changeset in webkit [197710] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking imported/w3c/indexeddb/idbcursor-advance-continue-async.htm as flaky on Yosemite Release WK2
​https://bugs.webkit.org/show_bug.cgi?id=154606

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
3:16 PM Changeset in webkit [197709] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/promises-tests/promises-tests-2-3-3.html as flaky on mac
​https://bugs.webkit.org/show_bug.cgi?id=155140

Unreviewed test gardening.

  • platform/mac/TestExpectations:
2:58 PM Changeset in webkit [197708] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking inspector/console/addInspectedNode.html as flaky on Yosemite WK2
​https://bugs.webkit.org/show_bug.cgi?id=155138

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
2:24 PM Changeset in webkit [197707] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping css3/filters/huge-region-composited.html on ios-simulator in an
attempt to eliminate a flaky crash.
​https://bugs.webkit.org/show_bug.cgi?id=153933

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
2:17 PM Changeset in webkit [197706] by dbates@webkit.org
  • 10 edits in trunk/Source

Cleanup: Add convenience function URL::procotolIsBlob()
​https://bugs.webkit.org/show_bug.cgi?id=155127
<rdar://problem/25016829>

Reviewed by Brent Fulgham.

Source/WebCore:

Similar to the class member function URL::protocolIsData(), add a class member function to
class URL to determine if a URL is a blob URL.

No functionality was changed. So, no new tests.

  • page/SecurityOrigin.cpp:

(WebCore::SecurityOrigin::shouldUseInnerURL): Modified to use URL::protocolIsBlob().
(WebCore::getCachedOrigin): Ditto.

  • platform/URL.h:

(WebCore::URL::protocolIsBlob): Added.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcStart): Modified to use URL::protocolIsBlob().
(urlHasSupportedProtocol): Ditto.

  • workers/Worker.cpp:

(WebCore::Worker::didReceiveResponse): Ditto.

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::createRequest): Ditto.

Source/WebKit2:

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::NetworkLoad): Modified to use URL::protocolIsBlob().

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::NetworkResourceLoader): Ditto.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::canHandleRequest): Ditto.

1:53 PM Changeset in webkit [197705] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip unsupported plugin tests from r197697 on ios-simulator

Unreviewed test gardening.

  • platform/ios-simulator/TestExpectations:
1:40 PM Changeset in webkit [197704] by aakash_jain@apple.com
  • 3 edits in trunk/Tools

webkitpy should verify timestamp from CrashLogs while collecting all crash logs
​https://bugs.webkit.org/show_bug.cgi?id=155000
<rdar://problem/24860219>

Reviewed by Alexey Proskuryakov.

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

(CrashLogs._find_all_logs_darwin): Make sure that crash log timestamp is within expected
time range, because file modification time is not always accurate.
(CrashLogs.get_timestamp_from_logs): Parse the timestamp from logs.

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

(CrashLogsTest.test_get_timestamp_from_logs_darwin): Testcase for above function.

1:39 PM Changeset in webkit [197703] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip storage/indexeddb/intversion-open-in-upgradeneeded.html on mac-wk2
​https://bugs.webkit.org/show_bug.cgi?id=155050

Unreviewed test gardening.

  • platform/mac-wk2/TestExpectations:
1:25 PM Changeset in webkit [197702] by adam.bergkvist@ericsson.com
  • 13 edits
    5 copies
    6 adds in trunk

WebRTC: Implement MediaEndpointPeerConnection::createOffer()
​https://bugs.webkit.org/show_bug.cgi?id=154867

Reviewed by Eric Carlson and Jer Noble.

Source/WebCore:

  • MediaEndpointPeerConnection: Initial implementation of createOffer()

added. createOffer() is split up into a synchronous part, and a
scheduled task. The task will be deferred until information, requiring
some amount of work, such as the DTLS fingerprint is available. Other
async API functions will also follow this pattern.

  • SDPProcessor (added): The SDPProcessors parses SDP to a

MediaEndpointSessionConfiguration object and generates SDP in the
reverse direction. Any SDP string handling is confined to the
SDPProcessor and all configuration of the media session is done via the
MediaEndpointSessionConfiguration object.

The SDP parser and generator logic is implemented in JavaScript and
works with JSON (SDP->JSON, JSON->SDP). The SDPProcessor runs JS in an
isolated scope and converts JSON to a MediaEndpointSessionConfiguration
object and the reverse. Using JSON signaling (nonstandard) can be
helpful during debugging.

  • MockMediaEndpoint (added): Mock MediaEndpoint implementation with

support for generating offers. DTLS information, such as fingerprint,
is hard coded to facilitate testing with expected values.

Test: fast/mediastream/RTCPeerConnection-inspect-offer.html

The test is currently skipped on the mac port until support to read the
SDPProcessor JavaScript resource is added.

  • CMakeLists.txt:
  • Modules/mediastream/MediaEndpointPeerConnection.cpp:

(WebCore::WrappedSessionDescriptionPromise::create):
(WebCore::WrappedSessionDescriptionPromise::promise):
(WebCore::WrappedSessionDescriptionPromise::WrappedSessionDescriptionPromise):
(WebCore::randomString):
(WebCore::MediaEndpointPeerConnection::MediaEndpointPeerConnection):
(WebCore::MediaEndpointPeerConnection::runTask):
(WebCore::MediaEndpointPeerConnection::startRunningTasks):
(WebCore::MediaEndpointPeerConnection::createOffer):
(WebCore::MediaEndpointPeerConnection::createOfferTask):
(WebCore::MediaEndpointPeerConnection::gotDtlsFingerprint):

  • Modules/mediastream/MediaEndpointPeerConnection.h:
  • Modules/mediastream/SDPProcessor.cpp: Added.

(WebCore::SDPProcessor::SDPProcessor):
(WebCore::createCandidateObject):
(WebCore::createCandidate):
(WebCore::configurationFromJSON):
(WebCore::iceCandidateFromJSON):
(WebCore::configurationToJSON):
(WebCore::iceCandidateToJSON):
(WebCore::SDPProcessor::generate):
(WebCore::SDPProcessor::parse):
(WebCore::SDPProcessor::generateCandidateLine):
(WebCore::SDPProcessor::parseCandidateLine):
(WebCore::SDPProcessor::callScript):

  • Modules/mediastream/SDPProcessor.h: Added.
  • Modules/mediastream/sdp.js: Added.

(match):
(addDefaults):
(fillTemplate):
(SDP.parse):
(SDP.generate):
(SDP.generateCandidateLine):
(hasAllProperties):
(SDP.verifyObject):
(generate):
(parse):
(generateCandidateLine):
(parseCandidateLine):

  • PlatformGTK.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • platform/mediastream/MediaEndpoint.cpp:

(WebCore::createMediaEndpoint):

  • platform/mediastream/MediaEndpoint.h:
  • platform/mediastream/PeerMediaDescription.h:
  • platform/mediastream/SDPProcessorScriptResource.cpp: Added.

(WebCore::SDPProcessorScriptResource::scriptString):

  • platform/mediastream/SDPProcessorScriptResource.h: Added.
  • platform/mediastream/gtk/SDPProcessorScriptResourceGtk.cpp: Added.

(WebCore::SDPProcessorScriptResource::scriptString):

  • platform/mock/MockMediaEndpoint.cpp: Added.

(WebCore::MockMediaEndpoint::create):
(WebCore::MockMediaEndpoint::MockMediaEndpoint):
(WebCore::MockMediaEndpoint::~MockMediaEndpoint):
(WebCore::MockMediaEndpoint::setConfiguration):
(WebCore::MockMediaEndpoint::generateDtlsInfo):
(WebCore::MockMediaEndpoint::getDefaultAudioPayloads):
(WebCore::MockMediaEndpoint::getDefaultVideoPayloads):
(WebCore::MockMediaEndpoint::updateReceiveConfiguration):
(WebCore::MockMediaEndpoint::updateSendConfiguration):
(WebCore::MockMediaEndpoint::addRemoteCandidate):
(WebCore::MockMediaEndpoint::replaceSendSource):
(WebCore::MockMediaEndpoint::stop):

  • platform/mock/MockMediaEndpoint.h: Added.
  • testing/Internals.cpp:

(WebCore::Internals::Internals):
(WebCore::Internals::enableMockMediaEndpoint):

  • testing/Internals.h:

LayoutTests:

The output SDP from createOffer() is processed by verifying all variable
identifiers, such as session and user id, and replacing them with
predefined values to make the SDP comparable with an expected result.

The test is currently skipped on the mac port until support to read the
SDPProcessor JavaScript resource is added.

  • fast/mediastream/RTCPeerConnection-inspect-offer-expected.txt: Added.
  • fast/mediastream/RTCPeerConnection-inspect-offer.html: Added.
  • platform/mac/TestExpectations:
1:22 PM Changeset in webkit [197701] by BJ Burg
  • 21 edits
    1 move in trunk/Source/JavaScriptCore

Web Inspector: rename generated *EnumConversionHelpers.h to *TypeConversions.h
​https://bugs.webkit.org/show_bug.cgi?id=155121
<rdar://problem/25010391>

Reviewed by Timothy Hatcher.

Split out this renaming from the work to generate factory method stubs for types.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • inspector/scripts/codegen/init.py:
  • inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:

(ObjCConfigurationImplementationGenerator.generate_output):

  • inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:

(ObjCFrontendDispatcherImplementationGenerator.generate_output):

  • inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py: Renamed from Source/JavaScriptCore/inspector/scripts/codegen/generate_objc_conversion_helpers.py.
  • inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:

(ObjCProtocolTypesImplementationGenerator.generate_output):

  • inspector/scripts/codegen/objc_generator_templates.py:
  • inspector/scripts/generate-inspector-protocol-bindings.py:

(generate_from_specification):

Rebaseline tests after changing generator order.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
1:08 PM Changeset in webkit [197700] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skip storage/indexeddb/modern/exceed-open-file-limit.html
​https://bugs.webkit.org/show_bug.cgi?id=155091

Unreviewed test gardening.

  • platform/wk2/TestExpectations:
12:33 PM Changeset in webkit [197699] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Use CGColorSpaceCopyICCData instead of CGColorSpaceCopyICCProfile
​https://bugs.webkit.org/show_bug.cgi?id=155123
rdar://problem/24990256

Reviewed by Tim Horton.

On newer OSes, use CGColorSpaceCopyICCData().

  • Shared/mac/ColorSpaceData.mm:

(WebKit::ColorSpaceData::encode):

12:28 PM Changeset in webkit [197698] by barraclough@apple.com
  • 3 edits in trunk/Source/WebKit2

Last opened tab does not receive SetHiddenPageTimerThrottlingIncreaseLimit message
​https://bugs.webkit.org/show_bug.cgi?id=155126

Reviewed by Chris Dumez.

WebPageProxy will increment the hidden page throttling counter from within its constructor,
which currently causes the WebProcessPool to try to synchronously message all processes.
The web page triggering the increment then fails to receive the message, since it was
still being constructed. Make the update of the limit async, such that the page is fully
constructed before the WebProcessPool processes the update.

  • UIProcess/WebProcessPool.cpp:

(WebKit::m_hiddenPageThrottlingAutoIncreasesCounter):

  • This now schedules a zero-delay timer to handle the update.

(WebKit::m_hiddenPageThrottlingTimer):

  • This is now responsible for calling updateHiddenPageThrottlingAutoIncreaseLimit.
  • UIProcess/WebProcessPool.h:
    • Added m_hiddenPageThrottlingTimer.
12:21 PM Changeset in webkit [197697] by dbates@webkit.org
  • 13 edits
    8 adds
    1 delete in trunk

CSP: object-src directive should prohibit creation of nested browsing context
​https://bugs.webkit.org/show_bug.cgi?id=153153
<rdar://problem/24383209>

Reviewed by Brent Fulgham.

Source/WebCore:

Enforce the Content Security Policy object-src directive when fetching a URL for content
that will cause an HTML object or HTML embed element to act as a nested browsing context
(i.e. behave as if the content was loaded in an HTML iframe element). This makes our
enforcement of the object-src directive match the behavior of the object-src directive
in the Content Security Policy 2.0 spec., <​http://www.w3.org/TR/2015/CR-CSP2-20150721/>.

Tests: http/tests/security/contentSecurityPolicy/embed-src-url-blocked.html

http/tests/security/contentSecurityPolicy/embed-src-url-blocked2.html
http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2.html
http/tests/security/contentSecurityPolicy/object-src-url-blocked2.html

  • loader/SubframeLoader.cpp:

(WebCore::SubframeLoader::isPluginContentAllowedByContentSecurityPolicy): Extracted from SubframeLoader::pluginIsLoadable().
Checks if the plugin element is allowed by the Content Security Policy to load the URL and MIME type.
(WebCore::SubframeLoader::pluginIsLoadable): Extract out the logic for determining if
the plugin content is allowed to load by the Content Security Policy into SubframeLoader::isPluginContentAllowedByContentSecurityPolicy()
and make use of this function.
(WebCore::SubframeLoader::requestObject): Modified to call SubframeLoader::isPluginContentAllowedByContentSecurityPolicy()
before loading plugin content into a sub frame. If the plugin content is not allowed to load then we
mark the plugin as unavailable with the reason being that it was blocked by the Content Security Policy.

  • loader/SubframeLoader.h:

LayoutTests:

Add test to ensure that we enforce the Content Security Policy object-src directive
for HTML object and HTML embed elements that behave like an HTML iframe element.

  • TestExpectations: Remove entries for tests that pass.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked.html: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/embed-src-url-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-code-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-movie-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-movie-blocked.html:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked.html:
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-src-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/object-src-param-url-blocked-expected.txt:
  • http/tests/security/contentSecurityPolicy/object-src-param-url-blocked.html:

Simplify the code used in the above tests and update incorrect expected results.

  • http/tests/security/contentSecurityPolicy/object-src-url-blocked2-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/object-src-url-blocked2.html: Added.
  • http/tests/security/contentSecurityPolicy/resources/object-src-param.js: Removed.
11:39 AM Changeset in webkit [197696] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking js/arraybuffer-wrappers.html as a flaky timeout on Mac
​https://bugs.webkit.org/show_bug.cgi?id=155092

Unreviewed test gardening.

  • platform/mac/TestExpectations:
10:57 AM Changeset in webkit [197695] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Improve and64() and or64() with immediate on x86
​https://bugs.webkit.org/show_bug.cgi?id=155104

Reviewed by Geoffrey Garen.

GetButterflyReadOnly was doing:

movq 0x8(%rbx), %r9
movq $0xfffffffffffffffc, %r11
andq %r11, %r9

There is no need for the move to load the immediate,
andq sign extend its immediate.

With this patch, we have:

movq 0x8(%rbx), %r9
andq $0xfffffffffffffffc, %r9

  • assembler/MacroAssemblerX86_64.h:

(JSC::MacroAssemblerX86_64::and64):
(JSC::MacroAssemblerX86_64::or64):

10:52 AM Changeset in webkit [197694] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.21.0.3/Source

Versioning.

10:51 AM Changeset in webkit [197693] by peavo@outlook.com
  • 2 edits in trunk/Source/WebKit/win

[WinCairo][AcceleratedCompositing] Rendering issues on www.bbc.com.
​https://bugs.webkit.org/show_bug.cgi?id=154912

Reviewed by Michael Catanzaro.

If we have a scroll layer, we should not include the scroll position in the visible rectangle,
since the scroll position is already reflected in the position of the scroll layer.

  • WebCoreSupport/AcceleratedCompositingContext.cpp:

(AcceleratedCompositingContext::flushPendingLayerChanges):

10:50 AM Changeset in webkit [197692] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.21.0.3

New tag.

10:44 AM Changeset in webkit [197691] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline inspector/model/remote-object.html for mac after r197626
​https://bugs.webkit.org/show_bug.cgi?id=155115

Unreviewed test gardening.

  • platform/mac/inspector/model/remote-object-expected.txt:
10:41 AM Changeset in webkit [197690] by barraclough@apple.com
  • 18 edits in trunk/Source

Convert DOMTimer to std::chrono::milliseconds
​https://bugs.webkit.org/show_bug.cgi?id=155085

Reviewed by Andreas Kling.

DOMTimer currently uses a mix of millisecond (was int, now std::chrono) and second (as double)
time values. Constant conversion back and forth is a complete mess. Stop that.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::minimumTimerInterval):
(WebCore::Document::timerAlignmentInterval):

  • dom/Document.h:
    • double -> std::chrono::milliseconds
  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::adjustMinimumTimerInterval):
(WebCore::ScriptExecutionContext::minimumTimerInterval):
(WebCore::ScriptExecutionContext::timerAlignmentInterval):

  • dom/ScriptExecutionContext.h:
    • double -> std::chrono::milliseconds
  • page/DOMTimer.cpp:

(WebCore::DOMTimer::updateTimerIntervalIfNecessary):
(WebCore::DOMTimer::intervalClampedToMinimum):
(WebCore::DOMTimer::alignedFireTime):

  • page/DOMTimer.h:
    • double -> std::chrono::milliseconds
  • page/Page.cpp:

(WebCore::Page::setTimerThrottlingState):
(WebCore::Page::setTimerAlignmentIntervalIncreaseLimit):
(WebCore::Page::updateDOMTimerAlignmentInterval):

  • page/Page.h:
    • double -> std::chrono::milliseconds
  • page/Settings.cpp:

(WebCore::Settings::setNeedsAdobeFrameReloadingQuirk):
(WebCore::Settings::setMinimumDOMTimerInterval):

  • page/Settings.h:
    • double -> std::chrono::milliseconds
  • page/SuspendableTimer.h:

(WebCore::SuspendableTimer::startRepeating):
(WebCore::SuspendableTimer::startOneShot):
(WebCore::SuspendableTimer::repeatIntervalMS):
(WebCore::SuspendableTimer::augmentFireInterval):
(WebCore::SuspendableTimer::augmentRepeatInterval):

  • added std::chrono::milliseconds interface.
  • platform/Timer.cpp:

(WebCore::TimerBase::setNextFireTime):

  • restructured for new alignedFireTime signatured, moved zero-delay handling to here. This change made because inside alignedFireTime fireTime will have already been truncated.
  • platform/Timer.h:

(WebCore::TimerBase::msToSeconds):
(WebCore::TimerBase::secondsToMS):

  • internal helper functions to bridge std::chrono::milliseconds to internal double.

(WebCore::TimerBase::startRepeating):
(WebCore::TimerBase::startOneShot):
(WebCore::TimerBase::repeatIntervalMS):
(WebCore::TimerBase::augmentFireInterval):
(WebCore::TimerBase::augmentRepeatInterval):

  • expanded std::chrono::milliseconds interface.

(WebCore::TimerBase::alignedFireTime):

  • changed to std::chrono::milliseconds, made return value Optional (null means no alignment).
  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::setMinimumTimerInterval):

  • testing/InternalSettings.h:
    • double -> std::chrono::milliseconds

Source/WebKit/win:

  • WebView.cpp:

(WebView::setMinimumTimerInterval):

  • Convert double argument into std::chrono::milliseconds.
10:41 AM Changeset in webkit [197689] by BJ Burg
  • 11 edits in trunk/Source/JavaScriptCore

Web Inspector: It should be possible to initialize generated ObjC protocol types from an NSDictionary payload
​https://bugs.webkit.org/show_bug.cgi?id=155102
<rdar://problem/25002015>

Reviewed by Timothy Hatcher.

In Objective-C code, we sometimes prefer to parse JSON using Cocoa rather
than the InspectorValue classes. Support initializing protocol objects
directly from an NSDictionary payload. This delegates validation of values to
the setter methods that already exist on the protocol object classes.

  • inspector/scripts/codegen/generate_objc_header.py:

(ObjCHeaderGenerator._generate_type_interface):

  • inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:

(ObjCProtocolTypesImplementationGenerator.generate_type_implementation):
(ObjCProtocolTypesImplementationGenerator._generate_init_method_for_payload):

  • inspector/scripts/codegen/objc_generator.py:

(ObjCGenerator.payload_to_objc_expression_for_member):
Add a new helper method to generate an expression to unpack the value
from an NSDictionary. If it's not a primitive, the setter performs
validation of the value's kind using -[NSObject isKindOfClass:].

Rebaseline relevant tests.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
10:30 AM Changeset in webkit [197688] by benjamin@webkit.org
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

[JSC] Simplify the overflow check of ArithAbs
​https://bugs.webkit.org/show_bug.cgi?id=155063

Reviewed by Geoffrey Garen.

The only integer that overflow abs(int32) is INT_MIN.
For some reason, our code testing for that case
was checking the top bit of the result specifically.

The code required a large immediate on x86 and an extra
register on ARM64.

This patch turns the overflow check into a branch on
the sign of the result.

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileArithAbs):

  • jit/ThunkGenerators.cpp:

(JSC::absThunkGenerator):

  • tests/stress/arith-abs-overflow.js: Added.

(opaqueAbs):

10:25 AM Changeset in webkit [197687] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC] Improve how DFG zero Floating Point registers
​https://bugs.webkit.org/show_bug.cgi?id=155096

Patch by Benjamin Poulain <​bpoulain@apple.com> on 2016-03-07
Reviewed by Geoffrey Garen.

DFG had a weird way of zeroing a FPR:

-zero a GP.
-move that to a FP.

Filip added moveZeroToDouble() for B3. This patch
uses that in the lower tiers.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::moveZeroToDouble):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateDouble):

  • jit/ThunkGenerators.cpp:

(JSC::floorThunkGenerator):
(JSC::roundThunkGenerator):

10:24 AM Changeset in webkit [197686] by akling@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

REGRESSION (r197303): Web Inspector crashes web process when inspecting an element on TOT
<​https://webkit.org/b/154812>

Reviewed by Geoffrey Garen.

Guard against null pointer dereference for UnlinkedCodeBlocks that don't have any control flow
profiling data.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::insertBasicBlockBoundariesForControlFlowProfiler):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::hasOpProfileControlFlowBytecodeOffsets):

10:23 AM Changeset in webkit [197685] by benjamin@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Remove a useless "Move" from baseline-JIT op_mul's fast path
​https://bugs.webkit.org/show_bug.cgi?id=155071

Reviewed by Geoffrey Garen.

We do not need to multiply to a scratch and then move the result
to the destination. We can just multiply to the destination.

  • jit/JITArithmetic.cpp:

(JSC::JIT::emit_op_mul):

  • jit/JITMulGenerator.cpp:

(JSC::JITMulGenerator::generateFastPath):

10:21 AM Changeset in webkit [197684] by Yusuke Suzuki
  • 2 edits
    2 adds in trunk/Source/JavaScriptCore

[JSC] StringObject.{put, defineOwnProperty} should realize indexed properties
​https://bugs.webkit.org/show_bug.cgi?id=155089

Reviewed by Geoffrey Garen.

Through implementing Reflect.set[1], we found StringObject does not obey the spec.
StringObject::put should call putByIndex if the given propertyName is index.
And StringObject::defineOwnProperty should recognize indexed properties since
JSObject::defineOwnIndexedProperty is specialized to JSObject layout.
Before calling JSObject::defineOwnProperty,
StringObject should handle its special indexed own properties.
It is responsibility of StringObject::defineOwnProperty.

And the logic is cleaned up by using validateAndApplyPropertyDescriptor.

[1]: ​https://bugs.webkit.org/show_bug.cgi?id=155024

  • runtime/StringObject.cpp:

(JSC::StringObject::put):
(JSC::StringObject::putByIndex):
(JSC::isStringOwnProperty):
(JSC::StringObject::defineOwnProperty):
(JSC::StringObject::deleteProperty):

  • tests/stress/string-object-define-own-property.js: Added.

(shouldBe):
(shouldThrow):

  • tests/stress/string-object-put-by-index.js: Added.

(shouldBe):
(shouldThrow):
(testSloppy):
(testStrict):

9:50 AM Changeset in webkit [197683] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.21.0.2/Source

Versioning.

9:49 AM Changeset in webkit [197682] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.21.0.2

New tag.

9:30 AM Changeset in webkit [197681] by Simon Fraser
  • 2 edits
    2 adds in trunk/LayoutTests

[iOS Simulator] Three object-position tests failing after r197618
​https://bugs.webkit.org/show_bug.cgi?id=155116

Mark two tests as image failures, and add new results for a compositing test.

  • platform/ios-simulator/TestExpectations:
  • platform/ios-simulator/compositing/video/video-object-position-expected.txt: Added.
7:22 AM Changeset in webkit [197680] by akling@apple.com
  • 2 edits in trunk/Source/WebCore

Make RenderStyle copy-on-write a bit less.
<​https://webkit.org/b/155106>

Reviewed by Antti Koivisto.

Add a cheesy SET_NESTED_VAR macro complement to SET_VAR so we can avoid copy-on-write
detachment of nested RenderStyle substructures when the leaf value doesn't change.

I spotted about 300kB of these mistakes being made during PLT on iOS, most of them
in the transformX setter.

  • rendering/style/RenderStyle.h:
4:12 AM Changeset in webkit [197679] by Carlos Garcia Campos
  • 28 edits
    3 adds in releases/WebKitGTK/webkit-2.12

Merge r197408 - Turn String.prototype.replace into an intrinsic
​https://bugs.webkit.org/show_bug.cgi?id=154835

Reviewed by Michael Saboff.

Source/JavaScriptCore:

Octane/regexp spends a lot of time in String.prototype.replace(). That function does a lot
of checks to see if the parameters are what they are likely to often be (a string, a
regexp, and a string). The intuition of this patch is that it's good to remove those checks
and it's good to call the native function as directly as possible.

This yields a 10% speed-up on a replace microbenchmark and a 3% speed-up on Octane/regexp.
It also improves Octane/jquery.

This is only the beginning of what I want to do with replace optimizations. The other
optimizations will rely on StringReplace being revealed as a construct in DFG IR.

  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):
(JSC::speculationToAbbreviatedString):
(JSC::speculationFromClassInfo):

  • bytecode/SpeculatedType.h:

(JSC::isStringOrStringObjectSpeculation):
(JSC::isRegExpObjectSpeculation):
(JSC::isBoolInt32Speculation):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • 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::shouldSpeculateStringOrStringObject):
(JSC::DFG::Node::shouldSpeculateRegExpObject):
(JSC::DFG::Node::shouldSpeculateSymbol):

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::SafeToExecuteEdge::operator()):
(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::speculateFinalObject):
(JSC::DFG::SpeculativeJIT::speculateRegExpObject):
(JSC::DFG::SpeculativeJIT::speculateObjectOrOther):
(JSC::DFG::SpeculativeJIT::speculate):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • dfg/DFGUseKind.cpp:

(WTF::printInternal):

  • dfg/DFGUseKind.h:

(JSC::DFG::typeFilterFor):
(JSC::DFG::isCell):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

(JSC::FTL::DFG::LowerDFGToB3::compileNode):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
(JSC::FTL::DFG::LowerDFGToB3::didOverflowStack):
(JSC::FTL::DFG::LowerDFGToB3::speculate):
(JSC::FTL::DFG::LowerDFGToB3::speculateFinalObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateRegExpObject):
(JSC::FTL::DFG::LowerDFGToB3::speculateString):

  • jit/JITOperations.h:
  • runtime/Intrinsic.h:
  • runtime/JSType.h:
  • runtime/RegExpObject.h:

(JSC::RegExpObject::createStructure):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):
(JSC::removeUsingRegExpSearch):
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpString):
(JSC::replaceUsingStringSearch):
(JSC::stringProtoFuncRepeat):
(JSC::replace):
(JSC::stringProtoFuncReplace):
(JSC::operationStringProtoFuncReplaceGeneric):
(JSC::stringProtoFuncToString):

  • runtime/StringPrototype.h:

LayoutTests:

  • js/regress/script-tests/string-replace.js: Added.
  • js/regress/string-replace-expected.txt: Added.
  • js/regress/string-replace.html: Added.
4:07 AM Changeset in webkit [197678] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[TextureMapper] [BitmapTexturePool] Use appropriate list size when freeing textures
​https://bugs.webkit.org/show_bug.cgi?id=155105

Patch by Miguel Gomez <​magomez@igalia.com> on 2016-03-07
Reviewed by Žan Doberšek.

Use appropriate list size when releasing the textures used as attachment.
This is a fix for the patch to ​https://bugs.webkit.org/show_bug.cgi?id=154965.

No new tests because no new functionality was added.

  • platform/graphics/texmap/BitmapTexturePool.cpp:

(WebCore::BitmapTexturePool::releaseUnusedTexturesTimerFired):

3:36 AM Changeset in webkit [197677] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197405 - Modern IDB: Possible crash deallocating IDBDatabaseInfo/IDBObjectStoreInfo/IDBIndexInfo.
​https://bugs.webkit.org/show_bug.cgi?id=154860

Reviewed by Alex Christensen.

Covered by existing tests.

  • Modules/indexeddb/shared/IDBDatabaseInfo.cpp:

(WebCore::IDBDatabaseInfo::IDBDatabaseInfo):
(WebCore::IDBDatabaseInfo::isolatedCopy):

  • Modules/indexeddb/shared/IDBDatabaseInfo.h:
  • Modules/indexeddb/shared/IDBTransactionInfo.cpp:

(WebCore::IDBTransactionInfo::isolatedCopy): If there's an IDBDatabaseInfo to copy, that

copy needs to be isolated.

3:34 AM Changeset in webkit [197676] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r197402 - NetworkCache: Web process leaks resource buffer when using shareable reasources
​https://bugs.webkit.org/show_bug.cgi?id=154852

Reviewed by Darin Adler.

ResourceLoader::didReceiveBuffer() expects a PassRefPtr, but we
are passing a raw pointer making PassRefPtr to take another
reference instead of transfering the ownership as expected.

  • WebProcess/Network/WebResourceLoader.cpp:

(WebKit::WebResourceLoader::didReceiveResource):

3:31 AM Changeset in webkit [197675] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197387 - TextureMapperGL: simplify TransformationMatrix copies in draw(), beginClip()
​https://bugs.webkit.org/show_bug.cgi?id=154791

Reviewed by Carlos Garcia Campos.

In both functions, the passed-in model-view matrix is first copied, multiplied
against a rect-to-rect TransformationMatrix, and then assigned into a local
TransformationMatrix variable, which causes another copy due to the multiply()
function returning a reference to the modified object.

To avoid the last copy, first copy the model-view matrix into a local variable,
and multiply the rect-to-rect TransformationMatrix into the new object afterwards.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::draw):
(WebCore::TextureMapperGL::beginClip):

3:30 AM Changeset in webkit [197674] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197386 - ImageBufferCairo should support OpenGL ES 2 configurations
​https://bugs.webkit.org/show_bug.cgi?id=154790

Reviewed by Carlos Garcia Campos.

When building with OpenGL ES 2 and with accelerated 2D canvas support,
the GLES2 header should be included instead of the OpenGLShims.h header.

The glTexParameterf() calls targeting GL_TEXTURE_WRAP_S and
GL_TEXTURE_WRAP_T parameters should use the GL_CLAMP_TO_EDGE value.
GL_CLAMP isn't available in OpenGL ES 2 and was dropped in OpenGL 3.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBufferData::createCairoGLSurface):

3:30 AM Changeset in webkit [197673] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebCore

Merge r197385 - TextureMapperGL: beginPainting() should handle the PaintingMirrored value in PaintFlags
​https://bugs.webkit.org/show_bug.cgi?id=154789

Reviewed by Carlos Garcia Campos.

  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::beginPainting): The ClipStack should be reset with
a Y-axis mode that corresponds to the presence of the PaintingMirrored value in
the passed-in PaintFlags argument. If present, the default Y-axis mode should be
used, and the inverted Y-axis otherwise.

3:28 AM Changeset in webkit [197672] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197381 - regress/script-tests/double-pollution-putbyoffset.js.ftl-eager timed out because of a lock ordering deadlock involving InferredType and CodeBlock
​https://bugs.webkit.org/show_bug.cgi?id=154841

Reviewed by Benjamin Poulain.

Here's the deadlock:

Main thread:

1) Change an InferredType. This acquires InferredType::m_lock.
2) Fire watchpoint set. This triggers CodeBlock invalidation, which acquires

CodeBlock::m_lock.

DFG thread:

1) Iterate over the information in a CodeBlock. This acquires CodeBlock::m_lock.
2) Ask an InferredType for its descriptor(). This acquires InferredType::m_lock.

I think that the DFG thread's ordering should be legal, because the best logic for lock
hierarchies is that locks that protect the largest set of stuff should be acquired first.

This means that the main thread shouldn't be holding the InferredType::m_lock when firing
watchpoint sets. That's what this patch ensures.

At the time of writing, this test was deadlocking for me on trunk 100% of the time. With
this change I cannot get it to deadlock.

  • runtime/InferredType.cpp:

(JSC::InferredType::willStoreValueSlow):
(JSC::InferredType::makeTopSlow):
(JSC::InferredType::set):
(JSC::InferredType::removeStructure):
(JSC::InferredType::InferredStructureWatchpoint::fireInternal):

  • runtime/InferredType.h:
3:08 AM Changeset in webkit [197671] by Carlos Garcia Campos
  • 46 edits
    8 adds in releases/WebKitGTK/webkit-2.12

Merge r197380 - [DFG][FTL][B3] Support floor and ceil
​https://bugs.webkit.org/show_bug.cgi?id=154683

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch implements and fixes the following things.

  1. Implement Ceil and Floor in DFG, FTL and B3

x86 SSE 4.2 and ARM64 have round instructions that can directly perform Ceil or Floor.
This patch leverages this functionality. We introduce ArithFloor and ArithCeil.
During DFG phase, these nodes attempt to convert itself to Identity (in Fixup phase).
As the same to ArithRound, it tracks arith rounding mode.
And if these nodes are required to emit machine codes, we emit rounding machine code
if it is supported in the current machine. For example, in x86, we emit round.

This Floor functionality is nice for @toInteger in builtin.
That is used for Array.prototype.{forEach, map, every, some, reduce...}
And according to the benchmark results, Kraken audio-oscillator is slightly improved
due to its frequent Math.round and Math.floor calls.

  1. Implement Floor in B3 and Air

As the same to Ceil in B3, we add a new B3 IR and Air opcode, Floor.
This Floor is leveraged to implement ArithFloor in DFG.

  1. Fix ArithRound operation

Currently, we used cvtsd2si (in x86) to convert double value to int32.
And we also used this to implement Math.round, like, cvtsd2si(value + 0.5).
However, this implementation is not correct. Because cvtsd2si is not floor operation.
It is trucate operation. This is OK for positive numbers. But NG for negative numbers.
For example, the current implementation accidentally rounds -0.6 to -0.0. This should be -1.0.
Using Ceil and Floor instructions, we implement correct ArithRound.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::supportsFloatingPointRounding):
(JSC::MacroAssemblerARM::ceilDouble):
(JSC::MacroAssemblerARM::floorDouble):
(JSC::MacroAssemblerARM::supportsFloatingPointCeil): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::supportsFloatingPointRounding):
(JSC::MacroAssemblerARM64::floorFloat):
(JSC::MacroAssemblerARM64::supportsFloatingPointCeil): Deleted.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::supportsFloatingPointRounding):
(JSC::MacroAssemblerARMv7::ceilDouble):
(JSC::MacroAssemblerARMv7::floorDouble):
(JSC::MacroAssemblerARMv7::supportsFloatingPointCeil): Deleted.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::ceilDouble):
(JSC::MacroAssemblerMIPS::floorDouble):
(JSC::MacroAssemblerMIPS::supportsFloatingPointRounding):
(JSC::MacroAssemblerMIPS::supportsFloatingPointCeil): Deleted.

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::supportsFloatingPointRounding):
(JSC::MacroAssemblerSH4::ceilDouble):
(JSC::MacroAssemblerSH4::floorDouble):
(JSC::MacroAssemblerSH4::supportsFloatingPointCeil): Deleted.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::floorDouble):
(JSC::MacroAssemblerX86Common::floorFloat):
(JSC::MacroAssemblerX86Common::supportsFloatingPointRounding):
(JSC::MacroAssemblerX86Common::supportsFloatingPointCeil): Deleted.

  • b3/B3ConstDoubleValue.cpp:

(JSC::B3::ConstDoubleValue::floorConstant):

  • b3/B3ConstDoubleValue.h:
  • b3/B3ConstFloatValue.cpp:

(JSC::B3::ConstFloatValue::floorConstant):

  • b3/B3ConstFloatValue.h:
  • b3/B3LowerMacrosAfterOptimizations.cpp:
  • b3/B3LowerToAir.cpp:

(JSC::B3::Air::LowerToAir::lower):

  • b3/B3Opcode.cpp:

(WTF::printInternal):

  • b3/B3Opcode.h:
  • b3/B3ReduceDoubleToFloat.cpp:
  • b3/B3ReduceStrength.cpp:
  • b3/B3Validate.cpp:
  • b3/B3Value.cpp:

(JSC::B3::Value::floorConstant):
(JSC::B3::Value::isRounded):
(JSC::B3::Value::effects):
(JSC::B3::Value::key):
(JSC::B3::Value::typeFor):

  • b3/B3Value.h:
  • b3/air/AirFixPartialRegisterStalls.cpp:
  • b3/air/AirOpcode.opcodes:
  • b3/testb3.cpp:

(JSC::B3::testFloorCeilArg):
(JSC::B3::testFloorArg):
(JSC::B3::testFloorImm):
(JSC::B3::testFloorMem):
(JSC::B3::testFloorFloorArg):
(JSC::B3::testCeilFloorArg):
(JSC::B3::testFloorIToD64):
(JSC::B3::testFloorIToD32):
(JSC::B3::testFloorArgWithUselessDoubleConversion):
(JSC::B3::testFloorArgWithEffectfulDoubleConversion):
(JSC::B3::run):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGArithMode.cpp:

(WTF::printInternal):

  • dfg/DFGArithMode.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleIntrinsicCall):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::roundShouldSpeculateInt32):

  • dfg/DFGNode.h:

(JSC::DFG::Node::arithNodeFlags):
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasArithRoundingMode):

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

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithRounding):
(JSC::DFG::SpeculativeJIT::compileArithRound): Deleted.

  • dfg/DFGSpeculativeJIT.h:
  • 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::compileArithRound):
(JSC::FTL::DFG::LowerDFGToB3::compileArithFloor):
(JSC::FTL::DFG::LowerDFGToB3::compileArithCeil):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::doubleFloor):

  • jit/ThunkGenerators.cpp:

(JSC::ceilThunkGenerator):

  • tests/stress/math-ceil-arith-rounding-mode.js: Added.

(firstCareAboutZeroSecondDoesNot):
(firstDoNotCareAboutZeroSecondDoes):
(warmup):
(verifyNegativeZeroIsPreserved):

  • tests/stress/math-ceil-basics.js: Added.

(mathCeilOnIntegers):
(mathCeilOnDoubles):
(mathCeilOnBooleans):
(uselessMathCeil):
(mathCeilWithOverflow):
(mathCeilConsumedAsDouble):
(mathCeilDoesNotCareAboutMinusZero):
(mathCeilNoArguments):
(mathCeilTooManyArguments):
(testMathCeilOnConstants):
(mathCeilStructTransition):
(Math.ceil):

  • tests/stress/math-floor-arith-rounding-mode.js: Added.

(firstCareAboutZeroSecondDoesNot):
(firstDoNotCareAboutZeroSecondDoes):
(warmup):
(verifyNegativeZeroIsPreserved):

  • tests/stress/math-floor-basics.js: Added.

(mathFloorOnIntegers):
(mathFloorOnDoubles):
(mathFloorOnBooleans):
(uselessMathFloor):
(mathFloorWithOverflow):
(mathFloorConsumedAsDouble):
(mathFloorDoesNotCareAboutMinusZero):
(mathFloorNoArguments):
(mathFloorTooManyArguments):
(testMathFloorOnConstants):
(mathFloorStructTransition):
(Math.floor):

  • tests/stress/math-round-should-not-use-truncate.js: Added.

(mathRoundDoesNotCareAboutMinusZero):

  • tests/stress/math-rounding-infinity.js: Added.

(shouldBe):
(testRound):
(testFloor):
(testCeil):

  • tests/stress/math-rounding-nan.js: Added.

(shouldBe):
(testRound):
(testFloor):
(testCeil):

  • tests/stress/math-rounding-negative-zero.js: Added.

(shouldBe):
(testRound):
(testFloor):
(testCeil):
(testRoundNonNegativeZero):
(testRoundNonNegativeZero2):

Websites/webkit.org:

  • docs/b3/intermediate-representation.html:
2:45 AM Changeset in webkit [197670] by Carlos Garcia Campos
  • 29 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197379 - Add new MethodTable method to get an estimated size for a cell
​https://bugs.webkit.org/show_bug.cgi?id=154838

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-02-29
Reviewed by Filip Pizlo.

The new class method estimatedSize(JSCell*) estimates the size for a single cell.
As the name implies, this is meant to be an approximation. It is more important
that big objects report a large size, then to get perfect size information for
all objects in the heap.

Base implementation (JSCell):

  • returns the MarkedBlock bucket size for this cell.
  • This gets us the object size include inline storage. Basically a better sizeof.

Subclasses with "Extra Memory Cost":

  • Any class that reports extra memory (reportExtraMemoryVisited) should include that in the estimated size.
  • E.g. CodeBlock, JSGenericTypedArrayView, WeakMapData, etc.

Subclasses with "Copied Space" storage:

  • Any class with data in copied space (copyBackingStore) should include that in the estimated size.
  • E.g. JSObject, JSGenericTypedArrayView, JSMap, JSSet, DirectArguments, etc.

Add reportExtraMemoryVisited for UnlinkedCodeBlock's compressed unlinked
instructions because this can be larger than 1kb, which is significant.

This has one special case for RegExp generated bytecode / JIT code, which
does not currently fall into the extra memory cost or copied space storage.
In practice I haven't seen this grow to a significant cost.

  • runtime/ClassInfo.h:

Add the new estimatedSize method to the table.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::visitChildren):
(JSC::UnlinkedCodeBlock::estimatedSize):
(JSC::UnlinkedCodeBlock::setInstructions):

  • bytecode/UnlinkedCodeBlock.h:

Report an extra memory cost for unlinked code blocks like
we do for linked code blocks.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::estimatedSize):

  • bytecode/CodeBlock.h:
  • bytecode/UnlinkedInstructionStream.cpp:

(JSC::UnlinkedInstructionStream::sizeInBytes):

  • bytecode/UnlinkedInstructionStream.h:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::estimatedSize):

  • runtime/DirectArguments.h:
  • runtime/JSCell.cpp:

(JSC::JSCell::estimatedSizeInBytes):
(JSC::JSCell::estimatedSize):

  • runtime/JSCell.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

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

  • runtime/JSMap.cpp:

(JSC::JSMap::estimatedSize):

  • runtime/JSMap.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::visitButterfly):

  • runtime/JSObject.h:
  • runtime/JSSet.cpp:

(JSC::JSSet::estimatedSize):

  • runtime/JSSet.h:
  • runtime/JSString.cpp:

(JSC::JSString::estimatedSize):

  • runtime/JSString.h:
  • runtime/MapData.h:

(JSC::MapDataImpl::capacityInBytes):

  • runtime/WeakMapData.cpp:

(JSC::WeakMapData::estimatedSize):
(JSC::WeakMapData::visitChildren):

  • runtime/WeakMapData.h:

Implement estimated size following the pattern of reporting
extra visited size, or copy space memory.

  • runtime/RegExp.cpp:

(JSC::RegExp::estimatedSize):

  • runtime/RegExp.h:
  • yarr/YarrInterpreter.h:

(JSC::Yarr::ByteDisjunction::estimatedSizeInBytes):
(JSC::Yarr::BytecodePattern::estimatedSizeInBytes):

  • yarr/YarrJIT.h:

(JSC::Yarr::YarrCodeBlock::size):
Include generated bytecode / JITCode to a RegExp's size.

2:43 AM Changeset in webkit [197669] by Manuel Rego Casasnovas
  • 3 edits in trunk/LayoutTests

[css-grid] Add missing test for grid-template shorthand
​https://bugs.webkit.org/show_bug.cgi?id=155013

Reviewed by Sergio Villar Senin.

We support the following syntax in grid-template shorthand:

-webkit-grid-template: [foo1] 'a' 50px [foo2]

[bar1] 'b' 50px [bar2] / 100px;

But we don't have a test to check that grid-template-rows value
has the names of the same lines grouped. So it's:

[foo1] 50px [foo2 bar1] 50px [bar2];

This means that if we remove the third argument in
CSSParser::parseGridLineNames(), all the current tests are passing.

Without that argument, the value for grid-template-rows would be:

[foo1] 50px [foo2] [bar1] 50px [bar2];

Which is wrong.

This patch adds a specific test case for this which would fail
in that case.

  • fast/css-grid-layout/grid-template-shorthand-get-set-expected.txt:
  • fast/css-grid-layout/grid-template-shorthand-get-set.html:
2:19 AM Changeset in webkit [197668] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197374 - SpeculatedType should be easier to edit
​https://bugs.webkit.org/show_bug.cgi?id=154840

Reviewed by Mark Lam.

We used to specify the bitmasks in SpeculatedType.h using hex codes. This used to work
great because we didn't have so many masks and you could use the mask to visually see
which ones overlapped. It also made it easy to visualize subset relationships.

But now we have a lot of masks with a lot of confusing overlaps, and it's no longer
possible to just see their relationship by looking at hex codes. Worse, the use of hex
codes makes it super annoying to move the bits around. For example, right now we have two
bits free, but if we wanted to reclaim them by editing the old hex masks, it would be a
nightmare.

So this patch replaces the hex masks with shift expressions (1u << 15 for example) and it
makes any derived masks (i.e. masks that are the bit-or of other masks) be expressed using
an or expression (SpecFoo | SpecBar | SpecBaz for example).

This makes it easier to see the relationships and it makes it easier to take bits for new
types.

  • bytecode/SpeculatedType.h:
2:12 AM WebKitGTK/2.4.x edited by tpopela@redhat.com
(diff)
1:58 AM Changeset in webkit [197667] by Carlos Garcia Campos
  • 8 edits
    3 adds in releases/WebKitGTK/webkit-2.12

Merge r197372 - Modern IDB: WebKit 2 IPC layer easily confused about multiple web processes being connected.
​https://bugs.webkit.org/show_bug.cgi?id=154837

Reviewed by Alex Christensen.

Source/WebKit2:

The crux of the bug is that WebProcesses cannot assign themselves server-unique identifiers...
The server must do that for them.

A once-per-session-per-WebProcess sync message and a few updates to connection management fix this.

  • DatabaseProcess/DatabaseToWebProcessConnection.cpp:

(WebKit::DatabaseToWebProcessConnection::didReceiveSyncMessage):
(WebKit::generateConnectionToServerIdentifier):
(WebKit::DatabaseToWebProcessConnection::establishIDBConnectionToServer):

  • DatabaseProcess/DatabaseToWebProcessConnection.h:
  • DatabaseProcess/DatabaseToWebProcessConnection.messages.in:
  • WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.cpp:

(WebKit::WebIDBConnectionToServer::WebIDBConnectionToServer):
(WebKit::generateConnectionToServerIdentifier): Deleted.

  • WebProcess/Databases/WebToDatabaseProcessConnection.cpp:

(WebKit::WebToDatabaseProcessConnection::didReceiveMessage):
(WebKit::WebToDatabaseProcessConnection::idbConnectionToServerForSession):

  • WebProcess/Databases/WebToDatabaseProcessConnection.h:

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-1.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-2.html: Added.
  • TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess.mm: Added.
1:56 AM Changeset in webkit [197666] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197370 - OverridesHasInstance constant folding is wrong
​https://bugs.webkit.org/show_bug.cgi?id=154833

Reviewed by Filip Pizlo.

The current implementation of OverridesHasInstance constant folding
is incorrect. Since it relies on OSR exit information it has been
moved to the StrengthReductionPhase. Normally, such an optimazation would be
put in FixupPhase, however, there are a number of cases where we don't
determine an edge of OverridesHasInstance is a constant until after fixup.
Performing the optimization during StrengthReductionPhase means we can defer
our decision until later.

In the future we should consider creating a version of this optimization
that does not depend on OSR exit information and move the optimization back
to ConstantFoldingPhase.

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants): Deleted.

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

1:48 AM Changeset in webkit [197665] by Carlos Garcia Campos
  • 5 edits
    6 adds in releases/WebKitGTK/webkit-2.12

Merge r197366 - B3 should have global store elimination
​https://bugs.webkit.org/show_bug.cgi?id=154658

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Implements fairly comprehensive global store elimination:

1) If you store the result of a load with no interference in between, remove the store.

2) If you store the same thing you stored previously, remove the store.

3) If you store something that you either loaded previously or stored previously along

arbitrarily many paths, remove the store.

4) If you store to something that is stored to again in the future with no interference in

between, remove the store.

Rule (4) is super relevant to FTL since the DFG does not eliminate redundant PutStructures.
A constructor that produces a large object will have many redundant stores to the same base
pointer, offset, and heap range, with no code to observe that heap raneg in between.

This doesn't have a decisive effect on major benchmarks, but it's an enormous win for
microbenchmarks:

  • 30% faster to construct an object with many fields.
  • 5x faster to do many stores to a global variable.

The compile time cost should be very small. Although the optimization is global, it aborts as
soon as it sees anything that would confound store elimination. For rules (1)-(3), we
piggy-back the existing load elimination, which gives up on interfering stores. For rule (4),
we search forward through the current block and then globally a block at a time (skipping
block contents thanks to summary data), which could be expensive. But rule (4) aborts as soon
as it sees a read, write, or end block (Return or Oops). Any Check will claim to read TOP. Any
Patchpoint that results from an InvalidationPoint will claim to read TOP, as will any
Patchpoints for ICs. Those are usually sprinkled all over the program.

In other words, this optimization rarely kicks in. When it does kick in, it makes programs run
faster. When it doesn't kick in, it's usually O(1) because there are reasons for aborting all
over a "normal" program so the search will halt almost immediately. This of course raises the
question: how much more in compile time do we pay when the optimization does kick in? The
optimization kicks in the most for the microbenchmarks I wrote for this patch. Amazingly, the
effect of the optimization a wash for compile time: whatever cost we pay doing the O(n2)
searches is balanced by the massive reduction in work in the backend. On one of the two
microbenchmarks, overall compile time actually shrank with this optimization even though CSE
itself cost more. That's not too surprising - the backend costs much more per instruction, so
things that remove instructions before we get to the backend tend to be a good idea.

We could consider adding a more aggressive version of this in the future, which could sink
stores into checks. That could be crazy fun: ​https://bugs.webkit.org/show_bug.cgi?id=152162#c3

But mainly, I'm adding this optimization because it was super fun to implement during the
WebAssembly CG summit.

  • b3/B3EliminateCommonSubexpressions.cpp:
  • b3/B3MemoryValue.h:
  • b3/B3SuccessorCollection.h:

(JSC::B3::SuccessorCollection::begin):
(JSC::B3::SuccessorCollection::end):
(JSC::B3::SuccessorCollection::const_iterator::const_iterator):
(JSC::B3::SuccessorCollection::const_iterator::operator*):
(JSC::B3::SuccessorCollection::const_iterator::operator++):
(JSC::B3::SuccessorCollection::const_iterator::operator==):
(JSC::B3::SuccessorCollection::const_iterator::operator!=):

LayoutTests:

These two benchmarks both speed up significantly with this change.

  • js/regress/build-large-object-expected.txt: Added.
  • js/regress/build-large-object.html: Added.
  • js/regress/many-repeat-stores-expected.txt: Added.
  • js/regress/many-repeat-stores.html: Added.
  • js/regress/script-tests/build-large-object.js: Added.
  • js/regress/script-tests/many-repeat-stores.js: Added.
1:47 AM WebKitGTK/2.4.x edited by berto@igalia.com
(diff)
1:46 AM WebKitGTK/2.4.x edited by berto@igalia.com
(diff)
1:39 AM Changeset in webkit [197664] by Carlos Garcia Campos
  • 9 edits
    1 add in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197365 - Make it cheap to #include "JITOperations.h"
​https://bugs.webkit.org/show_bug.cgi?id=154836

Reviewed by Mark Lam.

Prior to this change, this header included the whole world even though it did't have any
definitions. This patch turns almost all of the includes into forward declarations. Right
now this header is very cheap to include.

  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGSpeculativeJIT.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/Repatch.h:
  • runtime/CommonSlowPaths.h:

(JSC::encodeResult): Deleted.
(JSC::decodeResult): Deleted.

  • runtime/SlowPathReturnType.h: Added.

(JSC::encodeResult):
(JSC::decodeResult):

1:37 AM WebKitGTK/2.4.x edited by tpopela@redhat.com
(diff)
1:36 AM Changeset in webkit [197663] by Carlos Garcia Campos
  • 8 edits
    2 adds in releases/WebKitGTK/webkit-2.12/Source/JavaScriptCore

Merge r197357 - FTL should be able to run everything in Octane/regexp
​https://bugs.webkit.org/show_bug.cgi?id=154266

Reviewed by Saam Barati.

Adds FTL support for NewRegexp, RegExpTest, and RegExpExec. I couldn't figure out how to
make the RegExpExec peephole optimization work in FTL. This optimizations shouldn't be a
DFG backend optimization anyway - if we need this optimization then it should be a
strength reduction rule over IR. That way, it can be shared by all backends.

I measured whether removing that optimization had any effect on performance separately
from measuring the performance of this patch. Removing that optimization did not change
our score on any benchmarks.

This patch does have an overall negative effect on the Octane/regexp score. This is
presumably because tiering up to the FTL has no value to the code in the regexp test. Or
maybe it's something else. No matter - the overall effect on the Octane score is not
statistically significant and we don't want this kind of coverage blocked by the fact
that adding coverage hurts a benchmark.

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGNode.h:

(JSC::DFG::Node::setIndexingType):
(JSC::DFG::Node::hasRegexpIndex):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNotifyWrite):
(JSC::DFG::SpeculativeJIT::compileIsObjectOrNull):
(JSC::DFG::SpeculativeJIT::compileRegExpExec): Deleted.

  • 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::compileCheckWatchdogTimer):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpExec):
(JSC::FTL::DFG::LowerDFGToB3::compileRegExpTest):
(JSC::FTL::DFG::LowerDFGToB3::compileNewRegexp):
(JSC::FTL::DFG::LowerDFGToB3::didOverflowStack):

  • tests/stress/ftl-regexp-exec.js: Added.
  • tests/stress/ftl-regexp-test.js: Added.
1:25 AM Changeset in webkit [197662] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.12/Source/WebKit2

Merge r197352 - Fixed compilation with !ENABLE(DATABASE_PROCESS).
​https://bugs.webkit.org/show_bug.cgi?id=154813

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-02-29
Reviewed by Michael Catanzaro.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::terminateDatabaseProcess): Added missing #if
guard.

1:24 AM Changeset in webkit [197661] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.12

Merge r197351 - [GTK] Touch slider test fails due to assertion in webkitWebViewBaseTouchEvent()
​https://bugs.webkit.org/show_bug.cgi?id=153829

Patch by Adrien Plazas <​aplazas@igalia.com> on 2016-02-29
Reviewed by Carlos Garcia Campos.

Source/WebKit2:

Once a touch event sequence is identified as a gesture, remove it
from the list of handled touch events.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchEvent):

LayoutTests:

  • platform/gtk/TestExpectations:

Remove now passing tests from the expected failures.

Note: See TracTimeline for information about the timeline view.