Timeline



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 Brian 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 <Brian 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 Brian 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 Brian 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 Brian 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 Brian 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 Brian 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 Brian 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 Brian 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 Brian 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 Brian 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.
Note: See TracTimeline for information about the timeline view.