Timeline



Apr 5, 2016:

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

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

Reviewed by Alex Christensen.

Source/JavaScriptCore:

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

  • runtime/CommonIdentifiers.h:

Source/WebCore:

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

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

  • bindings/js/JSDOMGlobalObject.cpp:

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

  • bindings/scripts/CodeGeneratorJS.pm:

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

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

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

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

  • UserInterface/Views/SourceCodeTextEditor.js:

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

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

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

Reviewed by Daniel Bates.

.:

  • Source/cmake/OptionsMac.cmake:

Source/JavaScriptCore:

  • CMakeLists.txt:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Source/WebKit:

  • CMakeLists.txt:

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Tools:

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

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

Reviewed by Benjamin Poulain.

This implements some improvements for inlining:

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


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


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


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

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

  • bytecode/CallLinkStatus.cpp:

(JSC::CallLinkStatus::dump):

  • bytecode/CallLinkStatus.h:

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

  • bytecode/GetByIdStatus.cpp:

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

  • bytecode/GetByIdStatus.h:

(JSC::GetByIdStatus::wasSeenInJIT):

  • dfg/DFGByteCodeParser.cpp:

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

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

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

Reviewed by Geoffrey Garen.

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

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

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

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

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

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

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

(Inspector::InspectorScriptProfilerAgent::trackingComplete):

  • runtime/SamplingProfiler.cpp:

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

  • runtime/SamplingProfiler.h:

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

  • runtime/VM.cpp:

(JSC::VM::VM):

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

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

Reviewed by Timothy Hatcher.

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

  • UIProcess/Automation/Automation.json:

Copy the Page domain Cookie object. Add new commands.

  • UIProcess/Automation/WebAutomationSession.cpp:

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

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

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

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

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

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

  • NetworkProcess/cocoa/NetworkSessionCocoa.mm:

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

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

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

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

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

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

Reviewed by Andy Estes.

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

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

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

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

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

Reviewed by Mark Lam.

Source/WebCore:

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

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

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

In this patch, the following is done:

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

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

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

  • bindings/js/JSDOMBinding.cpp:

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

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

(WebCore::handlePostMessage):

LayoutTests:

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

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

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

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

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

Reviewed by Simon Fraser.

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

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

Web Inspector: Make the Timelines sidebar wider

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

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineOverview.css:

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

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

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

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

Reverted changeset:

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

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

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

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

Reviewed by Dean Jackson.

Source/WebCore:

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

(WebCore::EditorClient::requestCandidatesForSelection):

Source/WebKit/mac:

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

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

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

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/Main.js:

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

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

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

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

Source/JavaScriptCore:

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

  • runtime/CommonIdentifiers.h:

Source/WebCore:

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

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

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

  • bindings/js/JSDOMGlobalObject.cpp:

(WebCore::JSDOMGlobalObject::finishCreation):

Source/WebKit/mac:

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

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

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

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

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

Source/WebKit2:

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

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

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

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

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Tools:

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

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

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

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

Unreviewed, fix cloop some more.

  • runtime/RegExpInlines.h:

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

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

Unreviewed, fix cloop.

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

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

Reviewed by Alex Christensen.

No new tests (No change in behavior).

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::putOrAddOnServer):

  • Modules/indexeddb/IDBValue.cpp:

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

  • Modules/indexeddb/IDBValue.h:

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

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

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

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

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

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

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

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::SerializedScriptValue::writeBlobsToDiskForIndexedDB):

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

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

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/TimelineOverview.js:

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

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

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

  • UserInterface/Views/TimelineTreeElement.js:

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

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

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

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

Reviewed by Saam Barati.
PerformanceTests/SunSpider:

  • shadow-chicken.yaml: Added.

Source/JavaScriptCore:


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

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

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

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

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

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

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

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

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

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

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

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

  • API/JSContextRef.cpp:

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

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

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

  • bytecode/CodeBlock.cpp:

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

  • bytecompiler/BytecodeGenerator.cpp:

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

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

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

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

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

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

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

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

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

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

  • heap/Heap.cpp:

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

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

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

  • interpreter/CallFrame.h:

(JSC::ExecState::iterate):

  • interpreter/Interpreter.cpp:

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

  • interpreter/ShadowChicken.cpp: Added.

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

  • interpreter/ShadowChicken.h: Added.

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

  • interpreter/ShadowChickenInlines.h: Added.

(JSC::ShadowChicken::iterate):

  • interpreter/StackVisitor.h:

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

  • jit/CCallHelpers.cpp: Added.

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

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::prepareForTailCallSlow):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

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

(JSC::genericUnwind):

  • jit/JITOpcodes.cpp:

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

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

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

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

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

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

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

  • runtime/Error.cpp:

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

  • runtime/JSFunction.cpp:

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

  • runtime/JSGlobalObjectFunctions.cpp:

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

  • runtime/NullSetterFunction.cpp:

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

  • runtime/ObjectConstructor.cpp:

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

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

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

  • runtime/VM.h:

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

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

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

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

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

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

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

  • tools/JSDollarVMPrototype.cpp:

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

Source/WebCore:

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

No new tests because no change in behavior.

  • bindings/js/JSXMLHttpRequestCustom.cpp:

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

  • testing/Internals.cpp:

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

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

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

Reviewed by Saam Barati.

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

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

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

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

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

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

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.cpp:

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

  • dfg/DFGInsertionSet.cpp:

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

  • dfg/DFGInsertionSet.h:

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

  • dfg/DFGLazyJSValue.cpp:

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

  • dfg/DFGMayExit.cpp:

(JSC::DFG::mayExit):

  • dfg/DFGNode.h:

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

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

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

  • dfg/DFGObjectMaterializationData.h:

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

  • dfg/DFGOpInfo.h: Added.

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

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

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

  • dfg/DFGPromotedHeapLocation.cpp:

(WTF::printInternal):

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

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

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

  • dfg/DFGSpeculativeJIT.h:

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

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

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

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

  • dfg/DFGValidate.cpp:

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

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

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

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

  • ftl/FTLOperations.cpp:

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

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

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

  • runtime/RegExp.cpp:

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

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

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

  • runtime/RegExpConstructor.h:

(JSC::RegExpConstructor::offsetOfCachedResult):

  • runtime/RegExpInlines.h:

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

  • runtime/RegExpObjectInlines.h:

(JSC::RegExpObject::execInline):

  • runtime/StringPrototype.cpp:

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

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

(foo):

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

(foo):

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

(foo):

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

(foo):

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

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

  • yarr/YarrInterpreter.h:

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

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

Reviewed by Saam Barati.

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

  • wtf/Insertion.h:

(WTF::executeInsertions):

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

Reviewed by Saam Barati.

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

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

Reviewed by Timothy Hatcher.

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

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

Reviewed by Benjamin Poulain.

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

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

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

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

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

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

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecode/PolymorphicAccess.cpp:

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

  • bytecode/PolymorphicAccess.h:

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

  • bytecode/StructureStubInfo.cpp:

(JSC::StructureStubInfo::reset):

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

(JSC::BytecodeGenerator::emitTryGetById):

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

(JSC::BytecodeIntrinsicNode::emit_intrinsic_tryGetById):

  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLLowerDFGToB3.cpp:

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

  • jit/JIT.cpp:

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

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

(JSC::JITGetByIdGenerator::JITGetByIdGenerator):

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

(JSC::JIT::callOperation):

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

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

  • jit/JITPropertyAccess32_64.cpp:

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

  • jit/Repatch.cpp:

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

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

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

  • llint/LLIntData.cpp:

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

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

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

(JSC::PropertySlot::getPureResult):

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

(JSC::ProxyObject::getOwnPropertySlotCommon):

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

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

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

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

Reviewed by Alex Christensen.

Source/WebCore:

No new tests (No change in behavior).

  • Modules/indexeddb/IDBTransaction.cpp:

(WebCore::IDBTransaction::putOrAddOnServer):

  • Modules/indexeddb/IDBValue.cpp:

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

  • Modules/indexeddb/IDBValue.h:

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

  • Modules/indexeddb/client/IDBConnectionToServer.cpp:

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

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

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

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

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

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

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

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

(WebCore::InProcessIDBServer::putOrAdd):

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

(WebCore::IDBValue>::copy):

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

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

Source/WebKit2:

  • DatabaseProcess/IndexedDB/WebIDBConnectionToClient.cpp:

(WebKit::WebIDBConnectionToClient::putOrAdd):

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

(WebKit::WebIDBConnectionToServer::putOrAdd):

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

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

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

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

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::GraphicsContext::drawNativeImage):

  • platform/graphics/cg/GraphicsContextCG.h:

(WebCore::CGContextStateSaver::didSave):

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

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

Reviewed by Filip Pizlo.

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

  • parser/Parser.cpp:

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

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

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

Reviewed by Geoffrey Garen and Keith Miller.

Source/JavaScriptCore:

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

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

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

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

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

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

  • bytecode/PolymorphicAccess.cpp:

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

  • bytecode/PolymorphicAccess.h:

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

  • bytecode/StructureStubInfo.cpp:

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

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

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

  • jit/AssemblyHelpers.h:

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

  • jit/GPRInfo.cpp:

(JSC::JSValueRegs::dump):

  • jit/GPRInfo.h:

(JSC::JSValueRegs::uses):

  • jit/Repatch.cpp:

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

  • jit/ThunkGenerators.cpp:

(JSC::virtualThunkFor):

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

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

  • runtime/Structure.h:

LayoutTests:

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

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

Reviewed by Zalan Bujtas.

Make it possible to run:

notifyutil -p com.apple.WebKit.showLayerTree

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

Move callback registration from RenderObject's constructor to Page.

  • page/mac/PageMac.mm:

(WebCore::Page::platformInitialize):

  • rendering/RenderObject.cpp:

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

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

Merge r199042. rdar://problem/25533763

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

Merge r198035. rdar://problem/25467558

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

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

Reviewed by Mark Lam.

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

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

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

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

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

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

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

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

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

Source/JavaScriptCore:

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

Define the conditionalized classes WebGL2RenderingContext and WebGLVertexArrayObject.

Source/WebCore:

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

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

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

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

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

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

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::is3dType):

  • html/canvas/WebGL2RenderingContext.cpp:

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

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

(WebCore::WebGLRenderingContextBase::create):

  • html/canvas/WebGLVertexArrayObject.idl:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

LayoutTests:

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

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

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

Test checking that WebGLVertexArrayObject is defined.

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

Test checking that WebGL2RenderingContext is defined.

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

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

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

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

Reviewed by Antti Koivisto.

Source/WebKit2:

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

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

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

  • NetworkProcess/cache/NetworkCacheStorage.h:

LayoutTests:

Add test coverage for the bug.

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

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

Reviewed by Andreas Kling.

Source/WebCore:

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

  • style/StyleSharingResolver.cpp:

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

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

LayoutTests:

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

Speculative build fix after r199043

  • bindings/js/SerializedScriptValue.cpp:

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

  • bindings/js/SerializedScriptValue.h:

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

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

Speculative build fix after r199043

  • bindings/js/SerializedScriptValue.cpp:

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

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

Unreviewed build fix with GSTREAMER_GL active.

Caused by r198655.

(WebCore::MediaPlayerPrivateGStreamerBase::nativeImageForCurrentTime):

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

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

Reviewed by Andreas Kling.

  • dom/ContainerNode.cpp:

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

  • dom/Document.cpp:

(WebCore::Document::destroyRenderTree):

  • dom/Element.cpp:

(WebCore::disconnectPseudoElement):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::prepareForDocumentSuspension):

  • mathml/MathMLSelectElement.cpp:

(WebCore::MathMLSelectElement::updateSelectedChild):

  • style/RenderTreeUpdater.cpp:

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

Tear down render tree using ComposedTreeIterator for traversal.

(WebCore::RenderTreeUpdater::tearDownRenderer):

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

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

Unused class.

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

Remove the old recursive code.

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

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

Source/WebCore:

Added new runtime flags for WebGL2.

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

  • bindings/generic/RuntimeEnabledFeatures.h:

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

Source/WebKit/mac:

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

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

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

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

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

(-[WebView _preferencesChanged:]):

Source/WebKit2:

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

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

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

(WKPreferencesSetWebGL2Enabled):
(WKPreferencesGetWebGL2Enabled):

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

(WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

Source/WTF:

Removed the manual overrides of ENABLE_WEBGL2.

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

  • wtf/FeatureDefines.h:

Tools:

Always enable WebGL2 during testing.

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

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::beginTesting):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setWebGL2Enabled):

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

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

Reviewed by Andreas Kling.

Source/WebCore:

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

  • dom/CharacterData.cpp:

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

  • dom/Text.cpp:

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

Update using RenderTreeUpdater.

(WebCore::Text::formatForDebugger):

  • dom/Text.h:

(WebCore::Text::Text):

  • style/StyleTreeResolver.cpp:

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

Kill the old code paths.

  • style/StyleTreeResolver.h:

LayoutTests:

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

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

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

Reviewed by Žan Doberšek.

  • platform/network/curl/SocketStreamHandle.h:

(WebCore::SocketStreamHandle::create):

  • platform/network/soup/SocketStreamHandle.h:

(WebCore::SocketStreamHandle::create):

Apr 4, 2016:

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

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

Reviewed by Yusuke Suzuki.

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

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

  • dfg/DFGSpeculativeJIT.h:

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

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

Merged r198854. rdar://problem/25489003

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

Merged r198850. rdar://problem/25489003

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

Versioning.

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

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

Reviewed by Michael Catanzaro.

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

No change in behavior, just refactoring.

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

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

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

(WebKit::CompositingRunLoop::runLoop):

  • Shared/CoordinatedGraphics/threadedcompositor/ThreadedCompositor.cpp:

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

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

New tag.

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

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

Reviewed by Simon Fraser.

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

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

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

Reviewed by Antonio Gomes.

  • platform/graphics/texmap/TextureMapperGL.cpp:

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

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

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

Reviewed by Antonio Gomes.

  • platform/graphics/texmap/TextureMapperLayer.cpp:

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

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

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

Reviewed by Alex Christensen.

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

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

(WebCore::IDBTransaction::putOrAddOnServer):

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

(WebCore::IDBValue::IDBValue):

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

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

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

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

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

(WebCore::appendFileContentsToFileHandle):

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

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

  • platform/network/BlobRegistryImpl.h:

Source/WebKit2:

Reviewed by Alex Christensen.

  • NetworkProcess/FileAPI/NetworkBlobRegistry.cpp:

(WebKit::NetworkBlobRegistry::writeBlobsToTemporaryFiles):

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

(WebKit::NetworkConnectionToWebProcess::writeBlobsToTemporaryFiles):

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

(WebKit::BlobRegistryProxy::writeBlobsToTemporaryFiles):

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

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

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

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

Reviewed by Eric Carlson.

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

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

  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::render):

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

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

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

  • UserInterface/Views/ContentView.js:

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

  • UserInterface/Views/NavigationSidebarPanel.js:

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

  • UserInterface/Views/ApplicationCacheManifestTreeElement.js:

(WebInspector.ApplicationCacheManifestTreeElement):

  • UserInterface/Views/DatabaseHostTreeElement.js:

(WebInspector.DatabaseHostTreeElement):

  • UserInterface/Views/IndexedDatabaseHostTreeElement.js:

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

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

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

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

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

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

  • WebProcess/InjectedBundle/APIInjectedBundleFormClient.h:

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

  • WebProcess/WebPage/ios/WebPageIOS.mm:

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

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

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

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

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

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::connect):

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

(WebCore::SocketStreamHandle::create):

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

(WebCore::SocketStreamHandle::SocketStreamHandle):

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

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

Reviewed by Tim Horton.

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

  • page/FrameView.cpp:

(WebCore::FrameView::setExposedRect):

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

(WebCore::computeTileCoverage):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::flushPendingLayerChanges):

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

Don't crash when rendering form controls with Display List Drawing enabled
https://bugs.webkit.org/show_bug.cgi?id=156122

Reviewed by Sam Weinig.

Don't attempt to paint form controls if display-list drawing is enabled, since
doing so attempts to get at a CGContextRef that doens't exist.

  • rendering/RenderTheme.cpp:

(WebCore::RenderTheme::paint):

8:54 PM Changeset in webkit [199036] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[win] run-webkit-tests failed to launch DumpRenderTree
https://bugs.webkit.org/show_bug.cgi?id=156150

Patch by Bill Ming <mbbill@gmail.com> on 2016-04-04
Reviewed by Alex Christensen.

  • Tools/Scripts/webkitpy/port/base.py:
8:52 PM Changeset in webkit [199035] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Avoid copying ModuleLoaderObject.js to resources bundle
https://bugs.webkit.org/show_bug.cgi?id=156188
<rdar://problem/25534383>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-04
Reviewed by Alexey Proskuryakov.

8:50 PM Changeset in webkit [199034] by Alan Bujtas
  • 35 edits in trunk

CSS Triangles Rendering Regression affecting CSS Ribbons.
https://bugs.webkit.org/show_bug.cgi?id=156121

Reviewed by Simon Fraser.

Source/WebCore:

We use floored border width values for painting (see BorderEdge).
However border-box sizing is based on rounded border values. This mismatch could result in a 2 device pixel
gap when both top and bottom (or left and right) borders are present.

This patch applies flooring on the computed border width value.

It matches FireFox (44.0.2) behaviour (both by inspecting box-sizing visually and through getComputedStyle() values on border-width).

Covered by existing tests.

  • css/StyleBuilderConverter.h:

(WebCore::StyleBuilderConverter::convertLineWidth):

LayoutTests:

Rebeaseline to match current behaviour.

  • fast/inline/hidpi-inline-text-decoration-with-subpixel-value-expected.html:
  • platform/mac/css1/units/length_units-expected.txt:
  • platform/mac/fast/css/bidi-override-in-anonymous-block-expected.txt:
  • platform/mac/fast/multicol/span/anonymous-style-inheritance-expected.txt:
  • platform/mac/fast/repaint/repaint-during-scroll-with-zoom-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-initial-value-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-002-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-style-004-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-with-three-values-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-radius-with-two-values-001-expected.txt:
  • platform/mac/ietestcenter/css3/bordersbackgrounds/border-top-left-radius-values-003-expected.txt:
  • platform/mac/media/video-zoom-expected.txt:
  • platform/mac/svg/custom/svg-fonts-in-html-expected.txt:
  • platform/mac/svg/zoom/page/zoom-background-image-tiled-expected.txt:
  • platform/mac/svg/zoom/page/zoom-background-images-expected.txt:
  • platform/mac/svg/zoom/page/zoom-img-preserveAspectRatio-support-1-expected.txt:
  • platform/mac/svg/zoom/page/zoom-replaced-intrinsic-ratio-001-expected.txt:
  • platform/mac/svg/zoom/page/zoom-svg-float-border-padding-expected.txt:
  • platform/mac/svg/zoom/page/zoom-svg-through-object-with-auto-size-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug1055-2-expected.txt:
5:19 PM Changeset in webkit [199033] by Michael Catanzaro
  • 2 edits in trunk/Source/WebKit2

Unreviewed GTK build fix after r199020

  • UIProcess/API/gtk/WebKitUserContentManager.cpp:

(webkit_user_content_manager_register_script_message_handler):
(webkit_user_content_manager_unregister_script_message_handler):

5:14 PM Changeset in webkit [199032] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

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

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

"Regressed Octane and Kraken on the perf bots."

Reverted changeset:

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

5:12 PM Changeset in webkit [199031] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception in CSS with string "constructor" (WebInspector.Color.fromString())
https://bugs.webkit.org/show_bug.cgi?id=156183
<rdar://problem/25539279>

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2016-04-04
Reviewed by Brian Burg.

  • UserInterface/Models/Color.js:

(WebInspector.Color.fromString):
Fix the uncaught exception issue. Only look at own properties of
our keyword map to avoid values like "toString" and "constructor".

  • UserInterface/Debug/UncaughtExceptionReporter.js:

(handleError):
(handleUncaughtException):
(handleUncaughtExceptionRecord):
Generalize uncaught exception handler error sheet to get
exception records from both uncaught exceptions (window.onerror)
and general Runtime Error objects (TypeError, etc).

  • UserInterface/Base/Utilities.js:

(window.promiseLogError.window.promiseLogError):
Add a fallback log exception helper.

  • UserInterface/Controllers/AnalyzerManager.js:

(WebInspector.AnalyzerManager.prototype.getAnalyzerMessagesForSourceCode):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor):
Add catch handlers to Promises to log exceptions.

4:17 PM Changeset in webkit [199030] by d_russell@apple.com
  • 31 edits
    8 adds
    6 deletes in trunk

AX: new lines in content editable elements don't notify accessibility
https://bugs.webkit.org/show_bug.cgi?id=153361

Reviewed by Ryosuke Niwa.

Relocate accessibility edit notification logic into higher level logic.
Typing notifications relocated into TypingCommand.
Cut & Paste notifications relocated into Editor.
Undo relocated into EditCommandComposition.

Tests: accessibility/mac/value-change/value-change-user-info-contenteditable.html

accessibility/mac/value-change/value-change-user-info-textarea.html
accessibility/mac/value-change/value-change-user-info-textfield.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • accessibility/AXObjectCache.cpp:

(WebCore::AccessibilityReplacedText::AccessibilityReplacedText):
(WebCore::AccessibilityReplacedText::postTextStateChangeNotification):
(WebCore::AXObjectCache::postTextStateChangeNotification):
(WebCore::AXObjectCache::postTextReplacementNotification):

  • accessibility/AXObjectCache.h:

(WebCore::VisiblePositionIndexRange::isNull):
(WebCore::AccessibilityReplacedText::AccessibilityReplacedText):
(WebCore::AccessibilityReplacedText::replacedRange):

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::listMarkerTextForNodeAndPosition):
(WebCore::AccessibilityObject::stringForVisiblePositionRange):

  • accessibility/AccessibilityObject.h:

(WebCore::VisiblePositionRange::VisiblePositionRange):

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postTextStateChangePlatformNotification):
(WebCore::AXObjectCache::postTextReplacementPlatformNotification):

  • editing/AppendNodeCommand.cpp:

(WebCore::AppendNodeCommand::doApply): Deleted.
(WebCore::AppendNodeCommand::doUnapply): Deleted.

  • editing/CompositeEditCommand.cpp:

(WebCore::AccessibilityUndoReplacedText::indexForVisiblePosition):
(WebCore::AccessibilityUndoReplacedText::confgureTextToBeDeletedByUnapplyIndexesWithEditCommandEndingSelection):
(WebCore::AccessibilityUndoReplacedText::confgureTextToBeDeletedByUnapplyStartIndexWithEditCommandStartingSelection):
(WebCore::AccessibilityUndoReplacedText::setTextInsertedByUnapplyRange):
(WebCore::AccessibilityUndoReplacedText::captureTextToBeDeletedByUnapply):
(WebCore::AccessibilityUndoReplacedText::captureTextToBeDeletedByReapply):
(WebCore::stringForVisiblePositionIndexRange):
(WebCore::AccessibilityUndoReplacedText::textInsertedByUnapply):
(WebCore::AccessibilityUndoReplacedText::textInsertedByReapply):
(WebCore::postTextStateChangeNotification):
(WebCore::AccessibilityUndoReplacedText::postTextStateChangeNotificationForUnapply):
(WebCore::AccessibilityUndoReplacedText::postTextStateChangeNotificationForReapply):
(WebCore::EditCommandComposition::EditCommandComposition):
(WebCore::EditCommandComposition::unapply):
(WebCore::EditCommandComposition::reapply):
(WebCore::EditCommandComposition::setStartingSelection):
(WebCore::EditCommandComposition::setEndingSelection):
(WebCore::EditCommandComposition::setTextInsertedByUnapplyRange):
(WebCore::CompositeEditCommand::removeNode):
(WebCore::CompositeEditCommand::replaceTextInNode):
(WebCore::deleteSelectionEditingActionForEditingAction):
(WebCore::CompositeEditCommand::deleteSelection):
(WebCore::CompositeEditCommand::applyStyle): Deleted.
(WebCore::CompositeEditCommand::updatePositionForNodeRemovalPreservingChildren): Deleted.
(WebCore::CompositeEditCommand::inputText): Deleted.

  • editing/CompositeEditCommand.h:

(WebCore::AccessibilityUndoReplacedText::AccessibilityUndoReplacedText):

  • editing/DeleteFromTextNodeCommand.cpp:

(WebCore::DeleteFromTextNodeCommand::doApply): Deleted.
(WebCore::DeleteFromTextNodeCommand::getNodesInCommand): Deleted.

  • editing/DeleteFromTextNodeCommand.h:
  • editing/DictationCommand.cpp:

(WebCore::DictationCommand::doApply):

  • editing/EditCommand.cpp:

(WebCore::EditCommand::postTextStateChangeNotification):
(WebCore::SimpleEditCommand::SimpleEditCommand): Deleted.
(WebCore::SimpleEditCommand::doReapply): Deleted.
(WebCore::SimpleEditCommand::addNodeAndDescendants): Deleted.

  • editing/EditCommand.h:
  • editing/EditingAllInOne.cpp:
  • editing/Editor.cpp:

(WebCore::Editor::replaceSelectionWithFragment):
(WebCore::Editor::appliedEditing):
(WebCore::Editor::unappliedEditing):
(WebCore::Editor::postTextStateChangeNotificationForCut):
(WebCore::Editor::performCutOrCopy):
(WebCore::Editor::changeSelectionAfterCommand):
(WebCore::dispatchEditableContentChangedEvents): Deleted.
(WebCore::Editor::addTextToKillRing): Deleted.

  • editing/Editor.h:
  • editing/InsertIntoTextNodeCommand.cpp:

(WebCore::InsertIntoTextNodeCommand::doApply): Deleted.
(WebCore::InsertIntoTextNodeCommand::getNodesInCommand): Deleted.

  • editing/InsertNodeBeforeCommand.cpp:

(WebCore::InsertNodeBeforeCommand::doApply): Deleted.
(WebCore::InsertNodeBeforeCommand::doUnapply): Deleted.
(WebCore::InsertNodeBeforeCommand::getNodesInCommand): Deleted.

  • editing/RemoveNodeCommand.cpp:

(WebCore::RemoveNodeCommand::RemoveNodeCommand):

  • editing/RemoveNodeCommand.h:

(WebCore::RemoveNodeCommand::create):

  • editing/ReplaceDeleteFromTextNodeCommand.cpp: Removed.
  • editing/ReplaceDeleteFromTextNodeCommand.h: Removed.
  • editing/ReplaceInsertIntoTextNodeCommand.cpp: Removed.
  • editing/ReplaceInsertIntoTextNodeCommand.h: Removed.
  • editing/ReplaceSelectionCommand.cpp:

(WebCore::ReplaceSelectionCommand::doApply):
(WebCore::ReplaceSelectionCommand::completeHTMLReplacement):
(WebCore::ReplaceSelectionCommand::performTrivialReplace):

  • editing/ReplaceSelectionCommand.h:

(WebCore::ReplaceSelectionCommand::visibleSelectionForInsertedText):

  • editing/TextInsertionBaseCommand.cpp:

(WebCore::TextInsertionBaseCommand::TextInsertionBaseCommand):

  • editing/TextInsertionBaseCommand.h:
  • editing/TypingCommand.cpp:

(WebCore::TypingCommand::TypingCommand):
(WebCore::TypingCommand::insertText):
(WebCore::TypingCommand::insertLineBreak):
(WebCore::TypingCommand::insertParagraphSeparatorInQuotedContent):
(WebCore::TypingCommand::insertParagraphSeparator):
(WebCore::TypingCommand::postTextStateChangeNotificationForDeletion):
(WebCore::TypingCommand::doApply):
(WebCore::TypingCommand::insertTextAndNotifyAccessibility):
(WebCore::TypingCommand::insertLineBreakAndNotifyAccessibility):
(WebCore::TypingCommand::insertParagraphSeparatorAndNotifyAccessibility):
(WebCore::TypingCommand::insertParagraphSeparatorInQuotedContentAndNotifyAccessibility):
(WebCore::TypingCommand::deleteKeyPressed):
(WebCore::TypingCommand::forwardDeleteKeyPressed):

  • editing/TypingCommand.h:
3:54 PM Changeset in webkit [199029] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

prepare-ChangeLog set endl incorrectly.
https://bugs.webkit.org/show_bug.cgi?id=156151

Patch by Bill Ming <mbbill@gmail.com> on 2016-04-04
Reviewed by Alex Christensen.

  • Tools/Scripts/prepare-ChangeLog:
3:47 PM Changeset in webkit [199028] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

CMake build fix.

  • PlatformMac.cmake:
3:28 PM Changeset in webkit [199027] by jiewen_tan@apple.com
  • 2 edits in trunk/Source/WebKit2

Tapping on tabs in webpages caused WK crash at WebKit: WebKit::WebFrame::didReceivePolicyDecision
https://bugs.webkit.org/show_bug.cgi?id=156119
<rdar://problem/20732167>

Reviewed by Andy Estes.

Protect the m_frame so that it is present for completion handlers.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

3:17 PM Changeset in webkit [199026] by d_russell@apple.com
  • 1 edit in trunk/Tools/Scripts/webkitpy/common/config/contributors.json

Unreviewed: Add Doug Russell as a commiter.

  • Scripts/webkitpy/common/config/contributors.json:
3:12 PM Changeset in webkit [199025] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC][x86] Fix an assertion in MacroAssembler::branch8()
https://bugs.webkit.org/show_bug.cgi?id=156181

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-04-04
Reviewed by Geoffrey Garen.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::branch8):
The test was wrong because valid negative numbers have ones
in the top bits.

I replaced the assertion to be explicit about the valid range.

3:10 PM Changeset in webkit [199024] by dino@apple.com
  • 9 edits
    2 adds in trunk

Add color-gamut media query support
https://bugs.webkit.org/show_bug.cgi?id=155994
<rdar://problem/23282326>

Reviewed by Darin Adler.

Source/WebCore:

Add the new CSS media query: color-gamut
https://drafts.csswg.org/mediaqueries-4/#color-gamut

This ultimately calls into screenSupportsExtendedColor,
which has only been implemented on iOS at the moment.
All displays will match the "srgb" keyword, but only
iOS devices with an extended color screen will
match against "p3" (e.g. the iPad Pro 9.7").
Nothing will match against "rec2020".

Test: fast/media/mq-color-gamut.html

  • css/CSSValueKeywords.in: Add "p3" and "rec2020".
  • css/MediaFeatureNames.h: Add "color-gamut"
  • css/MediaQueryEvaluator.cpp:

(WebCore::color_gamutMediaFeatureEval): Call
screenSupportsExtendedColor to see if we're srgb or p3.

  • css/MediaQueryExp.cpp:

(WebCore::featureWithCSSValueID):

  • platform/efl/PlatformScreenEfl.cpp: Add empty implementation.

(WebCore::screenSupportsExtendedColor):

  • platform/gtk/PlatformScreenGtk.cpp: Ditto.

(WebCore::screenSupportsExtendedColor):

  • platform/win/PlatformScreenWin.cpp: Ditto.

(WebCore::screenSupportsExtendedColor):

LayoutTests:

New test for color-gamut.

  • fast/media/mq-color-gamut-expected.html: Added.
  • fast/media/mq-color-gamut.html: Added.
2:22 PM Changeset in webkit [199023] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Update feature status on anchor download attribute.

  • features.json:
2:18 PM Changeset in webkit [199022] by Beth Dakin
  • 20 edits in trunk/Source

Add some logic to decide when a video can control the videoControlsManager
https://bugs.webkit.org/show_bug.cgi?id=156089
-and corresponding-
rdar://problem/23833752

Reviewed by Eric Carlson and Tim Horton.

Source/WebCore:

With this patch, a video can take over the videoControlsManager if all of
these conditions are met:
-Playback is permitted
-The video has a renderer
-The video is 400x300 or larger
AND
-The video has both audio and video

If those criteria are not met the video will still be allowed to take over
the videoControlsManager if:
-Playback is permitted
-The video has a renderer
-The video started playing because of a user gesture.

If multiple videos meet this criteria, then the video that most recently
started playing will take over the videoControlsManager.

We might consider more restrictions in the future, but this seems like a good
place to start.

Move all decisions about the videoControlsManager to updatePlayState()
instead of playInternal().

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::playInternal):

If the video will play after updatePlayState, then invoke
setUpVideoControlsManager() if canControlControlsManager() is true. If the
video will not be playing after updatePlayState, then check to see if
endedPlayback() is true. If it is, then invoke clearVideoControlsManager().
(WebCore::HTMLMediaElement::updatePlayState):

The logic for the heuristic is here:

  • html/MediaElementSession.cpp:

(WebCore::MediaElementSession::canControlControlsManager):

  • html/MediaElementSession.h:

New ChromeClient function clearVideoControlsManager().

  • page/ChromeClient.h:

Source/WebKit2:

The biggest change in WebKit2 is to push all of the logic for the
videoControlsManager into WebCore. With this change, WebCore will invoke
setUpVideoControlsManager() when there is a video to control the manager, and
it will call clearVideoControlsManager() when there is not.

Add clearVideoControlsManager().

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

(WebKit::WebVideoFullscreenManagerProxy::clearVideoControlsManager):

Re-name isPlayingMediaDidChange() to videoControlsManagerDidChange(). This
ties the logic to the lifetime of the videoControlsManager instead of
figuring it out in the UIProcess based on the media state.

  • UIProcess/Cocoa/WebViewImpl.h:
  • UIProcess/Cocoa/WebViewImpl.mm:

(WebKit::WebViewImpl::videoControlsManagerDidChange):
(WebKit::WebViewImpl::isPlayingMediaDidChange): Deleted.

  • UIProcess/PageClient.h:

Also change isPlayingVideoWithAudio() into hasActiveVideoForControlsManager()
Again, this ties the logic to the lifetime of the videoControlsManager
instead of figuring it out in the UIProcess based on the media state.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange):
(WebKit::WebPageProxy::videoControlsManagerDidChange):
(WebKit::WebPageProxy::hasActiveVideoForControlsManager):
(WebKit::WebPageProxy::isPlayingVideoWithAudio): Deleted.

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

(WebKit::PageClientImpl::videoControlsManagerDidChange):
(WebKit::PageClientImpl::isPlayingMediaDidChange): Deleted.

New WebChromeClient function clearVideoControlsManager().

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::clearVideoControlsManager):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

Do the work to clear the videoControlsManager.

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

(WebKit::WebVideoFullscreenManager::clearVideoControlsManager):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenToModeWithoutAnimation):

2:09 PM Changeset in webkit [199021] by Brent Fulgham
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r198955): com.apple.WebKit.Networking.Development crashed in WebKit::NetworkLoad::setPendingDownloadID + 11
https://bugs.webkit.org/show_bug.cgi?id=156177
<rdar://problem/25508037>

Reviewed by Alex Christensen.

We do not currently create a NetworkDataTask when we encounter a BLOB URL when building with
NETWORK_SESSION enabled. This causes us to crash when the download system attempts to work
with a BLOB URL.

  • NetworkProcess/NetworkLoad.cpp:

(WebKit::NetworkLoad::setPendingDownloadID): Add null check for m_task.
(WebKit::NetworkLoad::setPendingDownload): Ditto.

2:03 PM Changeset in webkit [199020] by weinig@apple.com
  • 30 edits in trunk

Add SPI to allow install script message handlers in isolated worlds
https://bugs.webkit.org/show_bug.cgi?id=156153

Reviewed by Anders Carlsson.

Source/WebCore:

Added API Test: WKUserContentController.ScriptMessageHandlerBasicPostIsolatedWorld

  • Changes the signature of the method in UserContentProvider to get UserMessageHandlerDescriptors to match that of UserScripts and UserStyleSheets.
  • Removes the need for UserMessageHandlerDescriptor::Client by making UserMessageHandlerDescriptor directly subclassable.
  • Changes invalidation model of UserMessageHandlersNamespace to be more direct by allowing it to register for invalidation notifications, rather than always checking if handler has been removed on each invocation.
  • loader/EmptyClients.cpp:

Update for new signature.

  • page/DOMWindow.cpp:

(WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
Switch to using forEachUserMessageHandler.

(WebCore::DOMWindow::webkitNamespace):
Pass the UserContentProvider to the namespace on creation, so the UserMessageHandlersNamespace
can use it to register to listen for UserMessageHandler changes.

  • page/UserContentController.h:
  • page/UserContentController.cpp:

(WebCore::UserContentController::forEachUserStyleSheet):
(WebCore::UserContentController::forEachUserMessageHandler):
(WebCore::UserContentController::addUserScript):
(WebCore::UserContentController::removeUserStyleSheets):
(WebCore::UserContentController::removeAllUserContent):
(WebCore::UserContentController::addUserMessageHandlerDescriptor): Deleted.
(WebCore::UserContentController::removeUserMessageHandlerDescriptor): Deleted.
(WebCore::UserContentController::addUserContentExtension): Deleted.
(WebCore::UserContentController::removeUserContentExtension): Deleted.
(WebCore::UserContentController::removeAllUserContentExtensions): Deleted.
Removed unused functions, all the UserMessageHandler and UserContentExtension ones. UserContentController
is only used for Legacy WebKit where those features are not exposed.

  • page/UserContentProvider.h:
  • page/UserContentProvider.cpp:

(WebCore::UserContentProvider::registerForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::unregisterForUserMessageHandlerInvalidation):
(WebCore::UserContentProvider::invalidateAllRegisteredUserMessageHandlerInvalidationClients):
(WebCore::UserContentProviderInvalidationClient::~UserContentProviderInvalidationClient):
Update signature for UserMessageHandlerDescriptor access to match UserScript and UserStyleSheet.
Adds explicit invalidation for UserMessageHandlers.

  • page/UserMessageHandler.cpp:

(WebCore::UserMessageHandler::UserMessageHandler):
(WebCore::UserMessageHandler::postMessage):
(WebCore::UserMessageHandler::name): Deleted.
(WebCore::UserMessageHandler::world): Deleted.

  • page/UserMessageHandler.h:

(WebCore::UserMessageHandler::descriptor):
(WebCore::UserMessageHandler::invalidateDescriptor):

  • page/UserMessageHandlerDescriptor.cpp:

(WebCore::UserMessageHandlerDescriptor::UserMessageHandlerDescriptor):
(WebCore::UserMessageHandlerDescriptor::~UserMessageHandlerDescriptor):
(WebCore::UserMessageHandlerDescriptor::name):
(WebCore::UserMessageHandlerDescriptor::world):

  • page/UserMessageHandlerDescriptor.h:

(WebCore::UserMessageHandlerDescriptor::Client::~Client): Deleted.
(WebCore::UserMessageHandlerDescriptor::create): Deleted.
(WebCore::UserMessageHandlerDescriptor::client): Deleted.
(WebCore::UserMessageHandlerDescriptor::invalidateClient): Deleted.
Simplify by removing the Client. Now, when the UserMessageHandlerDescriptor is no longer
active, it gets nulled out in the UserMessageHandler.

  • page/UserMessageHandlersNamespace.cpp:

(WebCore::UserMessageHandlersNamespace::UserMessageHandlersNamespace):
(WebCore::UserMessageHandlersNamespace::~UserMessageHandlersNamespace):
(WebCore::UserMessageHandlersNamespace::didInvalidate):
(WebCore::UserMessageHandlersNamespace::handler):

  • page/UserMessageHandlersNamespace.h:

Change the logic to listen for invalidations of the UserMessageHandlerDescriptor map. When it
is invalidated, re-build the map of cached UserMessageHandlers from the UserContentProvider,
and invalidate any remaining UserMessageHandlers that no longer exist in the UserContentProvider.

  • page/WebKitNamespace.cpp:

(WebCore::WebKitNamespace::WebKitNamespace):

  • page/WebKitNamespace.h:

(WebCore::WebKitNamespace::create):
Pass through the UserContentProvider.

Source/WebKit2:

  • Scripts/webkit/messages.py:

(headers_for_type):

  • Shared/WebUserContentControllerDataTypes.cpp:

(WebKit::WebScriptMessageHandlerData::encode):
(WebKit::WebScriptMessageHandlerData::decode):

  • Shared/WebUserContentControllerDataTypes.h:

Add WebKit::WebScriptMessageHandlerData, matching WebKit::WebUserScriptData and
WebKit::WebUserStyleSheetData.

  • UIProcess/API/Cocoa/WKUserContentController.mm:

(-[WKUserContentController addScriptMessageHandler:name:]):
(-[WKUserContentController removeScriptMessageHandlerForName:]):
(-[WKUserContentController _removeAllUserStyleSheetsAssociatedWithUserContentWorld:]):
(-[WKUserContentController _addScriptMessageHandler:name:userContentWorld:]):
(-[WKUserContentController _removeScriptMessageHandlerForName:userContentWorld:]):
(-[WKUserContentController _removeAllScriptMessageHandlersAssociatedWithUserContentWorld:]):

  • UIProcess/API/Cocoa/WKUserContentControllerPrivate.h:

Add SPI for adding and removing ScriptMessageHandlers associated with a world.

  • UIProcess/UserContent/WebScriptMessageHandler.cpp:

(WebKit::WebScriptMessageHandler::create):
(WebKit::WebScriptMessageHandler::WebScriptMessageHandler):
(WebKit::WebScriptMessageHandlerHandle::encode): Deleted.
(WebKit::WebScriptMessageHandlerHandle::decode): Deleted.

  • UIProcess/UserContent/WebScriptMessageHandler.h:

(WebKit::WebScriptMessageHandler::identifier):
(WebKit::WebScriptMessageHandler::name):
(WebKit::WebScriptMessageHandler::userContentWorld):
(WebKit::WebScriptMessageHandler::client):
(WebKit::WebScriptMessageHandler::handle): Deleted.
Add the world and move the data object to WebUserContentControllerDataTypes.h

  • UIProcess/UserContent/WebUserContentControllerProxy.cpp:

(WebKit::WebUserContentControllerProxy::addProcess):
(WebKit::WebUserContentControllerProxy::addUserScriptMessageHandler):
(WebKit::WebUserContentControllerProxy::removeUserMessageHandlerForName):
(WebKit::WebUserContentControllerProxy::removeAllUserMessageHandlers):

  • UIProcess/UserContent/WebUserContentControllerProxy.h:

Update for worlds, matching UserScript/UserStyleSheet model.

  • WebProcess/UserContent/WebUserContentController.h:
  • WebProcess/UserContent/WebUserContentController.cpp:

(WebKit::WebUserMessageHandlerDescriptorProxy::WebUserMessageHandlerDescriptorProxy):
Change to inherit directly from WebCore::UserMessageHandlerDescriptor.

(WebKit::WebUserContentController::addUserScriptMessageHandlers):
(WebKit::WebUserContentController::removeUserScriptMessageHandler):
(WebKit::WebUserContentController::removeAllUserScriptMessageHandlers):
(WebKit::WebUserContentController::addUserScriptMessageHandlerInternal):
(WebKit::WebUserContentController::removeUserScriptMessageHandlerInternal):
Add support for worlds, matching UserScript/UserStyleSheet model.

(WebKit::WebUserContentController::addUserStyleSheets):
Add missing call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages()

(WebKit::WebUserContentController::removeAllUserStyleSheets):
Switch to only calling invalidateInjectedStyleSheetCacheInAllFramesInAllPages() once
after the loop and only if any stylesheets were removed.

(WebKit::WebUserContentController::addUserStyleSheetInternal):
Remove call to invalidateInjectedStyleSheetCacheInAllFramesInAllPages(), make
callers call it. This allows us to avoid calling it repeatedly in removeAllUserStyleSheets().

(WebKit::WebUserContentController::addUserStyleSheet):
Call invalidateInjectedStyleSheetCacheInAllFramesInAllPages() explicitly since it
is no longer called in addUserStyleSheetInternal().

(WebKit::WebUserContentController::forEachUserMessageHandler):
Implement by iterating the m_userMessageHandlers map.

  • WebProcess/UserContent/WebUserContentController.messages.in:

Update for worlds, matching UserScript/UserStyleSheet model.

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/UserContentController.mm:

Add new test, WKUserContentController.ScriptMessageHandlerBasicPostIsolatedWorld

1:45 PM Changeset in webkit [199019] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Skipping crashing test fast/loader/opaque-base-url.html on Debug
https://bugs.webkit.org/show_bug.cgi?id=156179

Unreviewed test gardening.

1:16 PM Changeset in webkit [199018] by jiewen_tan@apple.com
  • 3 edits in trunk/Tools

Build fix for r198956.

Unreviewed.

  • TestWebKitAPI/Tests/WebKit2Cocoa/LoadInvalidURLRequest.mm:

(-[LoadInvalidURLNavigationActionDelegate webView:didFailProvisionalNavigation:withError:]):

  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm:

(-[LoadInvalidURLWebFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):

1:01 PM Changeset in webkit [199017] by Chris Dumez
  • 10 edits
    2 adds in trunk

Regression(r196145): Crash in getOwnPropertyDescriptor on http://www.history.com/shows/vikings
https://bugs.webkit.org/show_bug.cgi?id=156136
<rdar://problem/25410767>

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Add a few more identifiers for using in the generated bindings.

  • runtime/CommonIdentifiers.h:

Source/WebCore:

The page was crashing when doing the following:
Object.getOwnPropertyDescriptor(window, "indexedDB")

getOwnPropertyDescriptor() expected getDirect() to return a CustomGetterSetter for
CustomAccessors but it was not the case for window.indexedDB. The reason was that
window.indexedDB was a special property, which is not part of the static table but
returned by GetOwnPropertySlot() if IndexedDB feature is enabled. This weirdness
was due to our bindings generator not having proper support for [EnabledAtRuntime]
properties on Window.

This patch adds support for [EnabledAtRuntime] properties on Window by omitting
these properties from the static property table and then setting them at runtime
in JSDOMWindow::finishCreation() if the corresponding feature is enabled.
window.indexedDB now looks like a regular property when IndexedDB is enabled
and getOwnPropertyDescriptor() works as expected for this property.

Test: storage/indexeddb/indexeddb-getownpropertyDescriptor.html

  • Modules/indexeddb/DOMWindowIndexedDatabase.cpp:

(WebCore::DOMWindowIndexedDatabase::indexedDB):

  • Modules/indexeddb/DOMWindowIndexedDatabase.h:

The generated bindings pass DOMWindow by reference instead of pointer so update
the implementation accordingly.

  • Modules/indexeddb/DOMWindowIndexedDatabase.idl:

Add 'indexedDB' and 'webkitIndexedDB' properties and mark them as
[EnabledAtRuntime]. Now that the bindings generator correctly handles
[EnabledAtRuntime] properties on the Window, there is no need to
custom-handle them in JSDOMWindowCustom.

  • bindings/js/JSDOMWindowCustom.cpp:

Drop custom handling for 'indexedDB' and 'webkitIndexedDB' properties
in getOwnPropertySlot(). The generated bindings code now makes sure to
only set those properties on the Window if IndexedDB is enabled so we
can let the regular code path look up those properties.

  • bindings/scripts/CodeGeneratorJS.pm:

(GetJSCAttributesForAttribute):
(GenerateHeader):
(GeneratePropertiesHashTable):
(GenerateImplementation):
Add support for [EnabledAtRuntime] properties on DOMWindow. For such
properties, we do the following:

  1. Omit them from the static property table
  2. In JSDOMWindow::finishCreation(), dynamically add those properties at runtime if the corresponding feature is enabled.

Note that this works for constructors as well.

  • inspector/InspectorIndexedDBAgent.cpp:

(WebCore::assertIDBFactory):
Pass Window by reference instead of pointer.

LayoutTests:

Add a layout test to confirm that calling Object.getOwnPropertyDescriptor(window, "indexedDB")
does not crash and works as expected.

  • storage/indexeddb/indexeddb-getownpropertyDescriptor-expected.txt: Added.
  • storage/indexeddb/indexeddb-getownpropertyDescriptor.html: Added.
12:41 PM Changeset in webkit [199016] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

CopiedBlock should be 16kB
https://bugs.webkit.org/show_bug.cgi?id=156168

Reviewed by Mark Lam.

MarkedBlock is 16kB, and bmalloc's largest fast-path allocation is 16kB,
and the largest page size on Apple devices is 16kB -- so this change
should improve sharing and recycling and keep us on the fast path more.

32kB is also super aggro. At 16kB, we support allocations up to 8kB,
which covers 99.3% of allocations on facebook.com. The 32kB block size
only covered an additional 0.2% of allocations.

  • heap/CopiedBlock.h:
12:41 PM Changeset in webkit [199015] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Addressing post-review feedback on r198970
https://bugs.webkit.org/show_bug.cgi?id=156123

Unreviewed.

  • platform/text/BidiResolver.h:

(WebCore::BidiCharacterRun::~BidiCharacterRun):

12:39 PM Changeset in webkit [199014] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

[SVG -> OTF Converter] Crash when trying to re-convert a previously-failed font conversion
https://bugs.webkit.org/show_bug.cgi?id=156175
<rdar://problem/25130547>

Reviewed by David Kilzer.

m_externalSVGFontElement points inside the document owned by m_externalSVGDocument.
However, when the m_externalSVGDocument is destroyed (due to a failed conversion),
we weren't resetting m_externalSVGFontElement. Then, when trying to re-convert, we
were using the fact that m_externalSVGFontElement is non-null to mean it's valid.

Test: fast/text/svg-font-invalid-glyph-path-failure.html (Under GuardMalloc)

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

11:35 AM Changeset in webkit [199013] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking plugins/focus.html as flaky on mac
https://bugs.webkit.org/show_bug.cgi?id=156174

Unreviewed test gardening.

  • platform/mac/TestExpectations:
11:30 AM Changeset in webkit [199012] by andersca@apple.com
  • 4 edits in trunk/Source/WebCore

Properly generate static functions that return Promises
https://bugs.webkit.org/show_bug.cgi?id=156169

Reviewed by Sam Weinig.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateReturnParameters):

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

(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunction):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionPromise):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithException):
(WebCore::jsTestObjConstructorFunctionTestStaticPromiseFunctionWithExceptionPromise):

  • bindings/scripts/test/TestObj.idl:
11:20 AM Changeset in webkit [199011] by jh718.park@samsung.com
  • 4 edits in trunk/Source

[EFL] Fix build break since r198800
https://bugs.webkit.org/show_bug.cgi?id=156011

Reviewed by Alex Christensen.

Source/WebCore:

  • PlatformEfl.cmake: Remove temorary statement which was applied to avoid build failure of Efl port.

Source/WebKit2:

  • CMakeLists.txt: Currently circular dependency state exists between WebCoreDerivedSources and WebCore targets.

By adding -Wl,--start-group -Wl,--end-group linker option, we can resolve this problem.
In case there is no such circular dependency, this linker option does nothing.

11:02 AM Changeset in webkit [199010] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Rebaseline fast/scrolling/rtl-scrollbars-animation-property.html for Windows

Unreviewed test gardening

  • platform/win/fast/scrolling/rtl-scrollbars-animation-property-expected.txt:
10:44 AM Changeset in webkit [199009] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[win] prepare-ChangeLog should treat windows path differently.
https://bugs.webkit.org/show_bug.cgi?id=156120

Patch by Bill Ming <mbbill@gmail.com> on 2016-04-04
Reviewed by Brent Fulgham.

  • Scripts/prepare-ChangeLog:
10:40 AM Changeset in webkit [199008] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Re-disable event dispatch assertions in RenderTreeUpdater::updateRenderTree
https://bugs.webkit.org/show_bug.cgi?id=156172

Some ruby tests on iOS hit these.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

9:12 AM Changeset in webkit [199007] by commit-queue@webkit.org
  • 35 edits in trunk

REGRESSION(r198492): [GTK] The WEB_RTC flag was not correctly added in some situations
https://bugs.webkit.org/show_bug.cgi?id=156164

Patch by Alejandro G. Castro <alex@igalia.com> on 2016-04-04
Reviewed by Philippe Normand.

.:

Remove double space in the error message when openwebrtc is not present.

  • Source/cmake/OptionsGTK.cmake:

Source/WebCore:

Replace WEBRTC with WEB_RTC, in the idls add the new option
UsePointersEvenForNonNullableObjectArguments to fix compilation.

  • Modules/mediastream/RTCDataChannel.idl:
  • Modules/mediastream/RTCPeerConnection.idl:
  • Modules/mediastream/RTCRtpReceiver.cpp:
  • Modules/mediastream/RTCRtpReceiver.h:
  • Modules/mediastream/RTCRtpSender.cpp:
  • Modules/mediastream/RTCRtpSender.h:
  • Modules/mediastream/RTCRtpSender.idl:
  • Modules/mediastream/RTCRtpSenderReceiverBase.h:
  • Modules/mediastream/RTCSessionDescription.cpp:
  • Modules/mediastream/RTCSessionDescription.h:
  • Modules/mediastream/RTCStatsReport.cpp:
  • Modules/mediastream/RTCStatsResponse.cpp:
  • Modules/mediastream/RTCTrackEvent.cpp:
  • Modules/mediastream/RTCTrackEvent.h:
  • Modules/mediastream/SDPProcessor.cpp:
  • Modules/mediastream/SDPProcessor.h:
  • bindings/generic/RuntimeEnabledFeatures.cpp:

(WebCore::RuntimeEnabledFeatures::RuntimeEnabledFeatures):

  • bindings/generic/RuntimeEnabledFeatures.h:
  • bindings/js/WebCoreJSBuiltinInternals.cpp:

(WebCore::JSBuiltinInternalFunctions::JSBuiltinInternalFunctions):
(WebCore::JSBuiltinInternalFunctions::visit):
(WebCore::JSBuiltinInternalFunctions::initialize):

  • bindings/js/WebCoreJSBuiltinInternals.h:
  • bindings/js/WebCoreJSBuiltins.h:

(WebCore::JSBuiltinFunctions::JSBuiltinFunctions):

  • platform/mediastream/RTCSessionDescriptionDescriptor.cpp:
  • platform/mediastream/RTCSessionDescriptionDescriptor.h:
  • platform/mediastream/RTCSessionDescriptionRequest.h:
  • platform/mediastream/RTCStatsRequest.h:
  • platform/mediastream/RTCStatsResponseBase.h:
  • platform/mediastream/RTCVoidRequest.h:
  • platform/mediastream/SDPProcessorScriptResource.cpp:
  • platform/mediastream/SDPProcessorScriptResource.h:
  • platform/mock/TimerEventBasedMock.h:

Tools:

Enable the new WEB_RTC option by default for Gtk+.

  • Scripts/webkitperl/FeatureList.pm:
8:46 AM Changeset in webkit [199006] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[GTK] Added missing inspector files under UserInterface/Proxies.
https://bugs.webkit.org/show_bug.cgi?id=156165

Patch by Konstantin Tokarev <Konstantin Tokarev> on 2016-04-04
Reviewed by Michael Catanzaro.

  • PlatformGTK.cmake:
8:29 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
8:27 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
8:10 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:30 AM Changeset in webkit [199005] by commit-queue@webkit.org
  • 26 edits in trunk/Source

REGRESSION(r198792): [GTK] Inspector crashes in Inspector::Protocol::getEnumConstantValue since r198792
https://bugs.webkit.org/show_bug.cgi?id=155745
<rdar://problem/25289456>

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2016-04-04
Reviewed by Brian Burg.

Source/JavaScriptCore:

The problem is that we are generating the Inspector::Protocol::getEnumConstantValue() method and the
enum_constant_values array for every framework that has enum values. So, in case of GTK port we have two
implementations, one for the inspector in JavaScriptCore and another one for Web Automation in WebKit2, but when
using the inspector in WebKit2 we always end up using the one in WebKit2. Since the enum_constant_values array
is smaller in WebKit2 than the one in JavaScriptCore, we crash every time we receive an enum value higher than
the array size. We need to disambiguate the getEnumConstantValue() generated and used for every framework, so we
can use a specific namespace for the enum conversion methods.

  • inspector/agents/InspectorDebuggerAgent.cpp:

(Inspector::breakpointActionTypeForString): Use Inspector::Protocol::InspectorHelpers.

  • inspector/scripts/codegen/cpp_generator.py:

(CppGenerator.helpers_namespace): Return the namespace name that should be used for the helper methods.

  • inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:

(CppBackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain): Use
CppGenerator.helpers_namespace() to use the right namespace when using getEnumConstantValue().
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command): Ditto.

  • inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:

(CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event): Ditto.

  • inspector/scripts/codegen/generate_cpp_protocol_types_header.py:

(CppProtocolTypesHeaderGenerator.generate_output): Move declaration of getEnumConstantValue to a helper function.
(_generate_enum_constant_value_conversion_methods): Do not emit any code if there aren't enums and ensure all
conversion methods are declared inside the helpers namespace.
(_generate_builder_setter_for_member): Use CppGenerator.helpers_namespace() to use the right namespace when
using getEnumConstantValue().
(_generate_unchecked_setter_for_member): Ditto.
(_generate_declarations_for_enum_conversion_methods): Return a list instead of a string so that we can return an
empty list in case of not emitting any code. The caller will use extend() that has no effect when an empty list
is passed.

  • inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:

(CppProtocolTypesImplementationGenerator.generate_output): Use the new helper function to generate both the enum
mapping and conversion methods inside the helpers namespace.
(CppProtocolTypesImplementationGenerator._generate_enum_mapping): Return a list instead of a string so that we
can return an empty list in case of not emitting any code.
(CppProtocolTypesImplementationGenerator._generate_enum_mapping_and_conversion_methods): Ensure we only emit
code when there are enum values, and it's generated inside the helpers namespace.

  • inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
  • inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
  • inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
  • inspector/scripts/tests/expected/enum-values.json-result:
  • inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
  • inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
  • inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
  • inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
  • inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-array-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
  • inspector/scripts/tests/expected/type-declaration-object-type.json-result:
  • inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:

Source/WebCore:

Use Inspector::Protocol::AutomationEnums namespace for getEnumConstantValue().

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForAccessibilityProperties):

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::addRecordToTimeline):

Source/WebKit2:

Use Inspector::Protocol::AutomationEnums namespace for getEnumConstantValue().

  • UIProcess/Automation/WebAutomationSession.cpp:
  • WebProcess/Automation/WebAutomationSessionProxy.cpp:

(WebKit::WebAutomationSessionProxy::didClearWindowObjectForFrame):
(WebKit::WebAutomationSessionProxy::evaluateJavaScriptFunction):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithOrdinal):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithNodeHandle):
(WebKit::WebAutomationSessionProxy::resolveChildFrameWithName):
(WebKit::WebAutomationSessionProxy::resolveParentFrame):
(WebKit::WebAutomationSessionProxy::computeElementLayout):

7:20 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:12 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
7:10 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
6:40 AM Changeset in webkit [199004] by Antti Koivisto
  • 2 edits in trunk/Source/WebCore

Avoid double traversal in RenderTreeUpdater for slot roots
https://bugs.webkit.org/show_bug.cgi?id=156110

Reviewed by Andreas Kling.

  • style/RenderTreeUpdater.cpp:

(WebCore::hasDisplayContents):
(WebCore::findRenderingRoot):
(WebCore::findRenderingRoots):
(WebCore::RenderTreeUpdater::commit):

If there are multiple roots that are slots we may end up updating the same rendering root multiple times.
Fix by deduplicating the roots.

(WebCore::RenderTreeUpdater::updateRenderTree):

Some cleanups.

5:58 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:56 AM Changeset in webkit [199003] by Antti Koivisto
  • 17 edits
    1 add in trunk/Source/WebCore

Enable assertions against DOM mutations in RenderTreeUpdater
https://bugs.webkit.org/show_bug.cgi?id=156156

Reviewed by Andreas Kling.

Ensure we don't mutate DOM or dispatch events during render tree updates.

  • WebCore.xcodeproj/project.pbxproj:
  • dom/ContainerNode.cpp:
  • dom/ContainerNode.h:

(WebCore::NoEventDispatchAssertion::NoEventDispatchAssertion): Deleted.
(WebCore::NoEventDispatchAssertion::~NoEventDispatchAssertion): Deleted.
(WebCore::NoEventDispatchAssertion::isEventDispatchForbidden): Deleted.

Move NoEventDispatchAssertion to a header of its own.

  • dom/NoEventDispatchAssertion.h: Added.

(WebCore::NoEventDispatchAssertion::NoEventDispatchAssertion):
(WebCore::NoEventDispatchAssertion::~NoEventDispatchAssertion):
(WebCore::NoEventDispatchAssertion::isEventDispatchForbidden):
(WebCore::NoEventDispatchAssertion::dropTemporarily):
(WebCore::NoEventDispatchAssertion::restoreDropped):

Add a way to disable event assertions temporarily.

  • loader/cache/CachedSVGFont.cpp:

(WebCore::CachedSVGFont::ensureCustomFontData):

Temporary SVG font document may get constructed during render tree update. These can't run scripts or generally
affect anything outside the font document as it does not have a frame. Disable event assertions temporarily.

Tested by svg/W3C-SVG-1.1/fonts-elem-07-b.svg

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::updateRenderTree):

Enable assertions.

5:53 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
(diff)
5:51 AM WebKitGTK/Gardening/Calendar edited by clopez@igalia.com
rotate gardnening logs by year (diff)
5:49 AM WebKitGTK/Gardening/Calendar/2015Logs created by clopez@igalia.com
5:47 AM WebKitGTK/Gardening/Calendar/2014Logs created by clopez@igalia.com
3:26 AM Changeset in webkit [199002] by commit-queue@webkit.org
  • 8 edits
    5 deletes in trunk/Source/WebKit2

Fix WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX after r196500
https://bugs.webkit.org/show_bug.cgi?id=156060

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Darin Adler.

Commit r196500 was a bit too eager in removing the
platformGetLaunchOptions() callsites as non-mac platform still use
that in debug builds to attach debugging tools to spawned
subprocesses (eg. gdbserver).

Instead of reinstating them and relying on each subprocess type to
implement its own platformGetLaunchOptions() version (all alike),
avoid duplication and check the *_PROCESS_CMD_PREFIX environment
variables in a single place, ChildProcessProxy::getLaunchOptions().

Doing so also improves consistency in *_PROCESS_CMD_PREFIX support:
only WEB_PROCESS_CMD_PREFIX and NETWORK_PROCESS_CMD_PREFIX worked with
both the GTK and EFL ports while PLUGIN_PROCESS_CMD_PREFIX only
worked for EFL and there was no corresponding
DATABASE_PROCESS_CMD_PREFIX implementation.

  • UIProcess/ChildProcessProxy.cpp:

(WebKit::ChildProcessProxy::getLaunchOptions): Check the
appropriate *_PROCESS_CMD_PREFIX environment variable.

  • UIProcess/Plugins/unix/PluginProcessProxyUnix.cpp:

(WebKit::PluginProcessProxy::platformGetLaunchOptions): Drop
check for PLUGIN_PROCESS_COMMAND_PREFIX, now handled by
ChildProcessProxy::getLaunchOptions().

  • UIProcess/Databases/DatabaseProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/WebProcessProxy.h: Drop platformGetLaunchOptions()

prototypes.

  • UIProcess/Network/soup/NetworkProcessProxySoup.cpp:
  • UIProcess/Databases/efl/DatabaseProcessProxyEfl.cpp:
  • UIProcess/Databases/gtk/DatabaseProcessProxyGtk.cpp:
  • UIProcess/efl/WebProcessProxyEfl.cpp:
  • UIProcess/gtk/WebProcessProxyGtk.cpp: Removed, they only contained

platformGetLaunchOptions() implementations.

  • PlatformEfl.cmake:
  • PlatformGTK.cmake: Drop removed files.
3:26 AM Changeset in webkit [199001] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[TexMap] Trim redundant guards
https://bugs.webkit.org/show_bug.cgi?id=155927

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Žan Doberšek.

  • platform/graphics/GraphicsContext3DPrivate.cpp: Drop some redundant

checks in preprocessor guards.

3:21 AM Changeset in webkit [199000] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebCore

Rely on PlatformLayer to choose the TextureMapperPlatformLayer impl
https://bugs.webkit.org/show_bug.cgi?id=155926

Patch by Emanuele Aina <Emanuele Aina> on 2016-04-04
Reviewed by Žan Doberšek.

Use PlatformLayer to replace a bunch of subtly different #ifdef
scattered over the codebase to choose between TextureMapperPlatformLayer
and TextureMapperPlatformLayerProxyProvider.

  • platform/graphics/GraphicsContext3DPrivate.h:
  • platform/graphics/cairo/ImageBufferDataCairo.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h: Use

PlatformLayer.h an inherit from PlatformLayer instead of choosing the
right implementation every time.

  • platform/graphics/texmap/TextureMapperPlatformLayer.h: Add

TEXTURE_MAPPER guards to make it unconditionally usable.

  • platform/graphics/texmap/TextureMapperPlatformLayerProxy.h: Add

COORDINATED_GRAPHICS_THREADED guards to make it unconditionally
usable.

1:51 AM Changeset in webkit [198999] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed ARM buildfix after r198981.

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::roundTowardZeroDouble):

1:25 AM Changeset in webkit [198998] by fred.wang@free.fr
  • 14 edits in trunk

Refactor RenderMathMLRow layout functions to avoid using flexbox
https://bugs.webkit.org/show_bug.cgi?id=153208

Patch by Frederic Wang <fwang@igalia.com> on 2016-04-04
Reviewed by Martin Robinson.

Source/WebCore:

This is the first patch to rewrite MathML layout without relying on
flexboxes or anonymous renderers.
We have done some temporary changes to allow overriding of
layoutBlock and to implement paintChildren, but this will be remove in a
follow-up patch. We also implement firstLineBaseline,
computePreferredLogicalWidths and layoutBlock of RenderMathMLRow without
using any flexbox functions. We adjust a bit the MathML CSS to take into
account these changes. Finally, we delete the unused helper function to
create anonymous RenderMathMLRow.

  • css/mathml.css:

(ms, mtext, mi, mn, mo, annotation, mtd): Prevent linebreaking inside token elements and table cells, otherwise this cause test failures with the new implementation of RenderMathMLRow.
(math, mrow, mfenced, merror, mphantom, mstyle, menclose): Deleted. We no longer rely on flexbox for baseline alignment of RenderMathMLRow.

  • rendering/RenderFlexibleBox.h: Allow overrider of the LayoutBlock for the moment.
  • rendering/RenderObject.h:

(WebCore::RenderObject::isRenderMathMLMenclose): Add helper function.

  • rendering/mathml/RenderMathMLMenclose.h: ditto.
  • rendering/mathml/RenderMathMLBlock.h:

(WebCore::ascentForChild): Add helper function to easily compute the ascent of a child.

  • rendering/mathml/RenderMathMLRow.cpp: Reimplement the class without using the flexbox layout.

(WebCore::RenderMathMLRow::firstLineBaseline): Implement the function to determine the baseline.
(WebCore::RenderMathMLRow::computeLineVerticalStretch): Add a function that browses non-stretchy children to determine the desired vertical stretch metrics.
(WebCore::RenderMathMLRow::computePreferredLogicalWidths): Implement the function to determine the preferred widths of the RenderMathMLRow.
(WebCore::RenderMathMLRow::layoutRowItems): Helper function that layouts children (stretching vertical operators if needed), calculate the exact logical width and position children.
(WebCore::RenderMathMLRow::layoutBlock): Implement the function to do the actual layout, which essentially calls layoutRowItems.
(WebCore::RenderMathMLRow::paintChildren): Temporarily implement this function, which just calls paintChild on each child.
(WebCore::RenderMathMLRow::createAnonymousWithParentRenderer): Deleted. We actually don't create anonymous RenderMathMLRow at the moment.
(WebCore::RenderMathMLRow::layout): Deleted.

  • rendering/mathml/RenderMathMLRow.h: Update declarations of functions.

LayoutTests:

Apply some small adjustments to MathML tests after the refactoring of RenderMathMLRow.

  • TestExpectations: Skip fractions-positions reftest for now. The small difference will be fixed after refactoring completely RenderMathMLFraction. We also ignore a test for margin/padding on MathML renderers.
  • platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.png: Update reference to take into account small changes in stretch size.

The intended test behavior (reading variants and construction from the MATH table) is preserved.

  • platform/gtk/mathml/opentype/opentype-stretchy-horizontal-expected.txt: ditto.
  • platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.png: ditto.
  • platform/mac/mathml/opentype/opentype-stretchy-horizontal-expected.txt: ditto.
12:53 AM Changeset in webkit [198997] by Chris Fleizach
  • 7 edits in trunk/Source/WebCore

AX: Consolidate radio button group member code with that in HTMLElement derivatives
https://bugs.webkit.org/show_bug.cgi?id=155696
<rdar://problem/25260379>

Reviewed by Darin Adler.

Behavior covered by existing tests.

  • accessibility/AccessibilityRenderObject.cpp:

(WebCore::AccessibilityRenderObject::addRadioButtonGroupMembers):

  • dom/CheckedRadioButtons.cpp:

(WebCore::RadioButtonGroup::isValid):
(WebCore::RadioButtonGroup::members):
(WebCore::RadioButtonGroup::setCheckedButton):
(WebCore::CheckedRadioButtons::addButton):
(WebCore::CheckedRadioButtons::groupMembers):
(WebCore::CheckedRadioButtons::updateCheckedState):

  • dom/CheckedRadioButtons.h:
  • dom/Range.h:

(WebCore::documentOrderComparator):

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::isInRequiredRadioButtonGroup):
(WebCore::HTMLInputElement::radioButtonGroup):
(WebCore::HTMLInputElement::checkedRadioButtonForGroup):

  • html/HTMLInputElement.h:
12:42 AM Changeset in webkit [198996] by Hunseop Jeong
  • 10 edits
    2 adds in trunk/LayoutTests

[EFL] Unreviewed EFL Gardening on 4th Apr.

Rebaseline some unexpected failures.

  • platform/efl/editing/execCommand/5481523-expected.txt: Rebaseline after r195740
  • platform/efl/fast/css/layerZOrderCrash-expected.txt: Rebaseline after r195740
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-center-expected.txt: Rebaseline after r187380
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-right-expected.txt: Rebaseline after r187380
  • platform/efl/fast/css/word-space-extra-expected.txt: Rebaseline after r192660
  • platform/efl/fast/table/click-near-anonymous-table-expected.txt: Rebaseline after r195740
  • platform/efl/fast/text/svg-font-face-with-kerning-expected.txt: Added. Rebaseline after r182620
  • platform/efl/fast/text/textIteratorNilRenderer-expected.txt: Rebaseline after r195740
  • platform/efl/fast/text/trak-optimizeLegibility-expected.txt: Added. Rebaseline after r191623
  • platform/efl/fast/transforms/bounding-rect-zoom-expected.txt: Rebaseline after r191623
  • platform/efl/svg/wicd/test-rightsizing-b-expected.txt: Rebaseline after r182620

Apr 3, 2016:

10:26 PM Changeset in webkit [198995] by ggaren@apple.com
  • 13 edits in trunk/Source/bmalloc

bmalloc: segregate small and large objects again, and allocate more objects on the small path
https://bugs.webkit.org/show_bug.cgi?id=156152

Reviewed by Sam Weinig.

Microbenchmark data suggested that it was a good idea for small and large
objects to share memory. But r198675 did not improve memory use in
full browser benchmarks.

This patch reverts to segregating small and large objects -- but without
going back to doubled VM usage -- in order to capture a few benefits:

(*) Small pages fragment the large heap. Separating them out saves a lot
of memory in our worst case fragmentation recording:

nimlang 276,076kB 209,636kB 1.32x smaller

(*) Small objects are common enough that even their slow paths benefit
from simpler code:

Execution Time:

...
facebook 234ms 216ms 1.08x faster
reddit 114ms 108ms
1.06x faster
flickr 118ms 111ms 1.06x faster
theverge 146ms 140ms
1.04x faster
...
<arithmetic mean> 107ms 102ms 1.04x faster

(*) We can use less metadata:

Memory at End:

...
list_allocate 460kB 384kB 1.2x smaller
tree_allocate 492kB 424kB
1.16x smaller
tree_churn 480kB 404kB 1.19x smaller
fragment 532kB 452kB
1.18x smaller
fragment_iterate 712kB 588kB 1.21x smaller
medium 15,152kB 11,796kB
1.28x smaller
big 15,044kB 10,976kB 1.37x smaller
...
<arithmetic mean> 7,724kB 7,190kB
1.07x smaller

This patch also takes advantage of our support for varying the page size
at runtime by allocating more objects on the small object path:

medium 178ms 150ms 1.19x faster

Some microbenchmarks report memory use increases from this change -- like
they reported memory use decreases from r198675 -- but I'm ignoring them
for now because I expect our full browser memory benchmarks to confirm
that this patch is fine.

  • bmalloc/BumpAllocator.h:

(bmalloc::BumpAllocator::BumpAllocator): Use a full unsigned because we
can allocate objects larger than 16kB - 1, and a full unsigned does not
make BumpAllocator any larger on 64bit systems.

  • bmalloc/Chunk.h:

(bmalloc::Chunk::begin):
(bmalloc::Chunk::end):
(bmalloc::Chunk::size):
(bmalloc::Chunk::objectType): Store ObjectType in the Chunk, since it only
varies by Chunk now, and not from page to page within a Chunk. Also,
union together small and large object metadata, since we will only use
one or the other. This saves memory.

(bmalloc::Chunk::Chunk): Conditionalize initialization based on object
type, since only one kind of metadata or the other can be used at runtime.

(bmalloc::Object::Object):
(bmalloc::Object::begin):
(bmalloc::SmallPage::end): Deleted.

  • bmalloc/Heap.cpp:

(bmalloc::Heap::Heap):
(bmalloc::Heap::initializeLineMetadata): Save a little space, since we
know that lines are only 256 bytes long.

(bmalloc::Heap::initializePageMetadata): Store a dynamic page size for
each size class. We used to use only one page size (the system page size)
but that limited our ability to allocate objects larger than 1kB on the
small object path. Now we can handle any object size we want by storing
objects of that size in a custom page size.

(bmalloc::Heap::concurrentScavenge):
(bmalloc::Heap::scavenge):
(bmalloc::Heap::scavengeSmallPages): Revert to our old linked list
strategy for storing small pages.

(bmalloc::Heap::splitAndAllocate): Object type is per Chunk now.

(bmalloc::Heap::allocateLarge): Don't nuke the small page list when
allocating a large object because the two don't share memory anymore.

(bmalloc::Heap::allocateSmallPage): Revert to our old linked list
strategy for storing small pages.

(bmalloc::Heap::deallocateSmallLine): Don't return early in the case
where this is the first free object in the page. In the case of large-ish
objects, the first free object might also be the last free object,
since there's one object per page.

(bmalloc::Heap::allocateSmallBumpRangesByMetadata): Split out some helper
lambdas to make this code clearer.

(bmalloc::Heap::allocateSmallBumpRangesByObject): Added a fast scan
for objects larger than the line size. When multiple objects fit in
a single line, it's an optimization to scan a line at a time. But when
it's one object per line, or one object per 64 lines, it's better just
to scan an object at a time.

  • bmalloc/Heap.h:

(bmalloc::Heap::allocateSmallBumpRanges):
(bmalloc::Heap::derefSmallLine): Match the changes above.

  • bmalloc/LineMetadata.h: We weren't using all those bits.
  • bmalloc/List.h:

(bmalloc::List::remove): Put a removed Node fully back into the default
(empty) state it was in before it entered the list. This change is not
observable, but it makes things clearer when you're debugging.

  • bmalloc/Object.h:

(bmalloc::Object::Object):
(bmalloc::Object::chunk):
(bmalloc::Object::offset):
(bmalloc::Object::operator+):
(bmalloc::Object::operator<=): Added some helpers for iterating by object.

  • bmalloc/ObjectType.cpp:

(bmalloc::objectType): Updated for API change.

  • bmalloc/Sizes.h:

(bmalloc::Sizes::maskObjectSize):
(bmalloc::Sizes::objectSize):
(bmalloc::Sizes::pageSize): Support more page sizes.

  • bmalloc/SmallPage.h:

(bmalloc::SmallPage::SmallPage):
(bmalloc::SmallPage::objectType): Deleted.
(bmalloc::SmallPage::setObjectType): Deleted.
(bmalloc::SmallPage::smallPageCount): Deleted.
(bmalloc::SmallPage::setSmallPageCount): Deleted. Object type is per
Chunk now, and we can infer page count from size class.

  • bmalloc/VMHeap.cpp:

(bmalloc::VMHeap::allocateChunk):
(bmalloc::VMHeap::allocateSmallChunk):

  • bmalloc/VMHeap.h:

(bmalloc::VMHeap::allocateSmallPage):
(bmalloc::VMHeap::deallocateSmallPage):
(bmalloc::VMHeap::allocateLargeObject): Support our old behavior of
storing free pages in linked lists.

4:01 PM Changeset in webkit [198994] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Remove unneeded UsePointersEvenForNonNullableObjectArguments in WebKitCSSMatrix.idl
https://bugs.webkit.org/show_bug.cgi?id=156142

Reviewed by Sam Weinig.

  • css/WebKitCSSMatrix.idl: Removed UsePointersEvenForNonNullableObjectArguments.

It was having no effect, I think because there were no non-nullable object arguments.

3:00 PM Changeset in webkit [198993] by clopez@igalia.com
  • 83 edits
    65 adds in trunk/LayoutTests

[GTK] Unreviewed GTK gardening.

Rebaseline many SVG tests after r197814 and mark new reported failures.

  • platform/gtk/TestExpectations:
  • platform/gtk/svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/color-prop-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-01-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-01-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-03-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-dom-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/coords-units-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-felem-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-felem-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/filters-image-03-f-expected.txt:
  • platform/gtk/svg/W3C-SVG-1.1-SE/interact-pointer-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/interact-pointer-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-control-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-control-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-marker-07-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/painting-marker-07-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/paths-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-17-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-17-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-20-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-grad-20-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-03-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/pservers-pattern-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/struct-use-14-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-css-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-pres-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/styling-pres-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/svgdom-over-01-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-09-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-intro-09-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tref-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tref-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tspan-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/text-tspan-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-04-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-05-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1-SE/types-dom-07-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/animate-elem-24-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/animate-elem-24-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/filters-light-04-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/filters-light-04-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/filters-turb-02-f-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-04-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-05-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-06-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-elem-07-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/fonts-glyph-02-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/fonts-kern-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/masking-mask-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/pservers-grad-08-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-06-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-06-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-07-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-07-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-08-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-elems-08-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-01-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-01-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/render-groups-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-align-08-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-align-08-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-fonts-03-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-fonts-03-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-01-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-01-t-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-02-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-02-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-03-b-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-03-b-expected.txt: Added.
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-04-t-expected.png:
  • platform/gtk/svg/W3C-SVG-1.1/text-intro-04-t-expected.txt: Added.
  • platform/gtk/svg/batik/text/textEffect-expected.png:
  • platform/gtk/svg/batik/text/textEffect-expected.txt: Added.
  • platform/gtk/svg/batik/text/textEffect3-expected.png:
  • platform/gtk/svg/batik/text/textEffect3-expected.txt: Added.
  • platform/gtk/svg/batik/text/textPosition2-expected.png:
  • platform/gtk/svg/batik/text/textPosition2-expected.txt:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.png:
  • platform/gtk/svg/custom/glyph-selection-arabic-forms-expected.txt:
  • platform/gtk/svg/custom/glyph-selection-non-bmp-expected.png:
  • platform/gtk/svg/custom/glyph-selection-non-bmp-expected.txt:
  • platform/gtk/svg/custom/glyph-setting-d-attribute-expected.txt: Added.
  • platform/gtk/svg/custom/glyph-transformation-with-hkern-expected.png:
  • platform/gtk/svg/custom/glyph-transformation-with-hkern-expected.txt: Added.
  • platform/gtk/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.png:
  • platform/gtk/svg/custom/scrolling-embedded-svg-file-image-repaint-problem-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-in-text-controls-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-no-latin-glyph-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-segmented-expected.png:
  • platform/gtk/svg/custom/svg-fonts-segmented-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-with-no-element-reference-expected.png:
  • platform/gtk/svg/custom/svg-fonts-with-no-element-reference-expected.txt: Added.
  • platform/gtk/svg/custom/svg-fonts-without-missing-glyph-expected.png:
  • platform/gtk/svg/custom/svg-fonts-without-missing-glyph-expected.txt:
  • platform/gtk/svg/custom/svg-fonts-word-spacing-expected.png:
  • platform/gtk/svg/custom/svg-fonts-word-spacing-expected.txt:
  • platform/gtk/svg/foreignObject/text-tref-02-b-expected.png:
  • platform/gtk/svg/foreignObject/text-tref-02-b-expected.txt: Added.
  • platform/gtk/svg/text/text-overflow-ellipsis-svgfont-expected.png:
  • platform/gtk/svg/text/text-overflow-ellipsis-svgfont-expected.txt:
  • platform/gtk/svg/text/text-text-05-t-expected.png:
  • platform/gtk/svg/text/text-text-05-t-expected.txt: Added.
  • platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.png:
  • platform/gtk/svg/transforms/text-with-mask-with-svg-transform-expected.txt: Added.
  • platform/gtk/svg/wicd/test-rightsizing-b-expected.png:
  • platform/gtk/svg/wicd/test-rightsizing-b-expected.txt:
3:00 PM Changeset in webkit [198992] by Antti Koivisto
  • 6 edits in trunk/Source/WebCore

Tighten ComposedTreeAncestorIterator to return Elements
https://bugs.webkit.org/show_bug.cgi?id=150324

Reviewed by Andreas Kling.

Only other thing it could credibly return was Document. We can exclude it from the composed tree and avoid some casting.

  • dom/ComposedTreeAncestorIterator.h:

(WebCore::ComposedTreeAncestorIterator::operator*):
(WebCore::ComposedTreeAncestorIterator::operator->):
(WebCore::ComposedTreeAncestorIterator::operator==):
(WebCore::ComposedTreeAncestorIterator::operator!=):
(WebCore::ComposedTreeAncestorIterator::operator++):
(WebCore::ComposedTreeAncestorIterator::get):
(WebCore::ComposedTreeAncestorIterator::ComposedTreeAncestorIterator):
(WebCore::ComposedTreeAncestorIterator::traverseParent):
(WebCore::ComposedTreeAncestorAdapter::begin):
(WebCore::ComposedTreeAncestorAdapter::end):
(WebCore::ComposedTreeAncestorAdapter::first):

  • dom/Element.cpp:

(WebCore::Element::resolveComputedStyle):

  • dom/Node.cpp:

(WebCore::Node::updateAncestorsForStyleRecalc):
(WebCore::Node::setNeedsStyleRecalc):

  • rendering/RenderNamedFlowThread.cpp:

(WebCore::RenderNamedFlowThread::isChildAllowed):
(WebCore::RenderNamedFlowThread::dispatchRegionOversetChangeEventIfNeeded):

  • style/RenderTreeUpdater.cpp:

(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):

2:19 PM Changeset in webkit [198991] by ddkilzer@apple.com
  • 1 edit in branches/safari-601.1.46-branch/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm

Fix build by moving elementRectInWindow() to where it is used.

1:19 PM Changeset in webkit [198990] by Antti Koivisto
  • 7 edits
    2 adds in trunk

Shadow DOM: Slot style is not computed
https://bugs.webkit.org/show_bug.cgi?id=156144

Reviewed by Darin Adler.

Source/WebCore:

We don’t currently compute style for active slots. While slots have have implicit display:contents and don’t create
boxes themselves the style should still inherit to slotted children.

Basically

<slot style=“color:red”></slot>

should work as expected.

The implementation falls out from the new style resolve architecture and this patch mostly just removes the special
case code that prevented this from working.

Test: fast/shadow-dom/css-scoping-shadow-slot-style.html

  • html/HTMLSlotElement.h:

(WebCore::hasImplicitDisplayContents):

Move to a shared location.

  • style/RenderTreeUpdater.cpp:

(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::updateRenderTree):

Remove the special case code. What remains is a display:contents test for rendererless elements.

(WebCore::RenderTreeUpdater::updateElementRenderer):

Don't create renderers for (implicit) display:contents.

(WebCore::hasDisplayContents): Deleted.

  • style/StyleTreeResolver.cpp:

(WebCore::Style::detachRenderTree):
(WebCore::Style::affectsRenderedSubtree):

Factor into a function.

(WebCore::Style::TreeResolver::resolveElement):

Remove the special case code.

(WebCore::Style::TreeResolver::resolveComposedTree):

Always resolve slots as we don't currently save their style.

LayoutTests:

  • fast/shadow-dom/css-scoping-shadow-slot-style-expected.html: Added.
  • fast/shadow-dom/css-scoping-shadow-slot-style.html: Added.
12:45 PM Changeset in webkit [198989] by sbarati@apple.com
  • 19 edits
    1 add in trunk

Implement Annex B.3.3 function hoisting rules for function code
https://bugs.webkit.org/show_bug.cgi?id=155672

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

The spec states that functions declared inside a function
inside a block scope are subject to the rules of Annex B.3.3:
https://tc39.github.io/ecma262/#sec-block-level-function-declarations-web-legacy-compatibility-semantics

The rule states that functions declared in such blocks should
be local bindings of the block. If declaring the function's name
as a "var" in the function would not lead to a syntax error (i.e,
if we don't have a let/const/class variable with the same name)
and if we don't have a parameter with the same name, then we
implictly also declare the funcion name as a "var". When evaluating
the block statement we bind the hoisted "var" to be the value
of the local function binding.

There is one more thing we do for web compatibility. We allow
function declarations inside if/else statements that aren't
blocks. For such statements, we transform the code as if the
function were declared inside a block statement. For example:
function foo() { if (cond) function baz() { } }
is transformed into:
function foo() { if (cond) { function baz() { } } }

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::initializeDefaultParameterValuesAndSetupFunctionScopeStack):
(JSC::BytecodeGenerator::initializeBlockScopedFunctions):

  • bytecompiler/BytecodeGenerator.h:
  • parser/Nodes.cpp:

(JSC::ScopeNode::ScopeNode):
(JSC::ProgramNode::ProgramNode):
(JSC::ModuleProgramNode::ModuleProgramNode):
(JSC::EvalNode::EvalNode):
(JSC::FunctionNode::FunctionNode):

  • parser/Nodes.h:

(JSC::ScopeNode::hasCapturedVariables):
(JSC::ScopeNode::captures):
(JSC::ScopeNode::hasSloppyModeHoistedFunction):
(JSC::ScopeNode::varDeclarations):
(JSC::ProgramNode::startColumn):
(JSC::ProgramNode::endColumn):
(JSC::EvalNode::startColumn):
(JSC::EvalNode::endColumn):
(JSC::ModuleProgramNode::startColumn):
(JSC::ModuleProgramNode::endColumn):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::didFinishParsing):
(JSC::Parser<LexerType>::parseStatement):
(JSC::Parser<LexerType>::parseIfStatement):

  • parser/Parser.h:

(JSC::Scope::declareVariable):
(JSC::Scope::declareFunction):
(JSC::Scope::addSloppyModeHoistableFunctionCandidate):
(JSC::Scope::appendFunction):
(JSC::Scope::declareParameter):
(JSC::Scope::mergeInnerArrowFunctionFeatures):
(JSC::Scope::getSloppyModeHoistedFunctions):
(JSC::Scope::getCapturedVars):
(JSC::ScopeRef::containingScope):
(JSC::ScopeRef::operator==):
(JSC::ScopeRef::operator!=):
(JSC::Parser::declareFunction):
(JSC::Parser::hasDeclaredVariable):
(JSC::Parser::isFunctionMetadataNode):
(JSC::Parser::DepthManager::DepthManager):
(JSC::Parser<LexerType>::parse):

  • parser/VariableEnvironment.h:

(JSC::VariableEnvironmentEntry::isImported):
(JSC::VariableEnvironmentEntry::isImportedNamespace):
(JSC::VariableEnvironmentEntry::isFunction):
(JSC::VariableEnvironmentEntry::isParameter):
(JSC::VariableEnvironmentEntry::isSloppyModeHoistingCandidate):
(JSC::VariableEnvironmentEntry::setIsCaptured):
(JSC::VariableEnvironmentEntry::setIsConst):
(JSC::VariableEnvironmentEntry::setIsImported):
(JSC::VariableEnvironmentEntry::setIsImportedNamespace):
(JSC::VariableEnvironmentEntry::setIsFunction):
(JSC::VariableEnvironmentEntry::setIsParameter):
(JSC::VariableEnvironmentEntry::setIsSloppyModeHoistingCandidate):
(JSC::VariableEnvironmentEntry::clearIsVar):

  • runtime/CodeCache.h:

(JSC::SourceCodeValue::SourceCodeValue):

  • runtime/JSScope.cpp:
  • runtime/JSScope.h:
  • tests/es6.yaml:
  • tests/stress/sloppy-mode-function-hoisting.js: Added.

(assert):
(test):
(falsey):
(truthy):
(test.):
(test.a):
(test.f):
(test.let.funcs.f):
(test.catch.f):
(test.foo):
(test.bar):
(test.switch.case.0):
(test.else.f):
(test.b):
(test.c):
(test.d):
(test.e):
(test.g):
(test.h):
(test.i):
(test.j):
(test.k):
(test.l):
(test.m):
(test.n):
(test.o):
(test.p):
(test.q):
(test.r):
(test.s):
(test.t):
(test.u):
(test.v):
(test.w):
(test.x):
(test.y):
(test.z):
(foo):
(bar):
(falsey.bar):
(baz):
(falsey.baz):

LayoutTests:

  • js/kde/func-decl-expected.txt:
  • js/kde/script-tests/func-decl.js:
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/parser-syntax-check.js:

(valid):
(onlyValidGlobally):
(onlyInvalidGlobally):
(invalid):

12:38 PM Changeset in webkit [198988] by mitz@apple.com
  • 2 edits in trunk/Tools

Use the correct value for the first nightly build with frameworks built for OS X 10.11.

  • Scripts/bisect-builds:

(makeNightlyList):

12:14 PM Changeset in webkit [198987] by mitz@apple.com
  • 2 edits in trunk/Tools

Made bisect-builds work again.

Rubber-stamped by Sam Weinig.

  • Scripts/bisect-builds:

Changed to use HTTPS to access nightly.webkit.org, and added a minimum revision for OS X 10.11.

11:56 AM Changeset in webkit [198986] by ddkilzer@apple.com
  • 4 edits in trunk/Source/WebCore

REGRESSION (r198653, r198864): http/tests/contentdispositionattachmentsandbox/referer-header-stripped*.html tests crashing due to unavailable SPI
<http://webkit.org/b/156145>

Reviewed by Tim Horton.

Covered by existing tests under GuardMalloc:

http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-always.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-default.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-never.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-no-referrer-when-downgrade.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-no-referrer.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-origin.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped-with-meta-referer-unsafe-url.html
http/tests/contentdispositionattachmentsandbox/referer-header-stripped.html

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::isDataDetectorLink):
(WebCore::DataDetection::shouldCancelDefaultAction):

  • Restore iOS 9.x code.

(WebCore::DataDetection::detectContentInRange):

  • Guard new SPI with version macros.
  • platform/cocoa/DataDetectorsCoreSoftLink.h:
  • platform/cocoa/DataDetectorsCoreSoftLink.mm:
  • Guard new SPI with version macros.
9:50 AM Changeset in webkit [198985] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, turn ES6 for-in loop test success
https://bugs.webkit.org/show_bug.cgi?id=155451

  • tests/es6.yaml:
3:56 AM Changeset in webkit [198984] by Carlos Garcia Campos
  • 2 edits in trunk

Unreviewed. Bump GTK+ versions numbers.

  • Source/cmake/OptionsGTK.cmake:
3:50 AM Changeset in webkit [198983] by Carlos Garcia Campos
  • 9 edits in trunk/Source/WebCore

Replace all RenderTheme::popupInternalPadding methods with a single one returning a LengthBox
https://bugs.webkit.org/show_bug.cgi?id=156098

Reviewed by Darin Adler.

The caller always wants all padding sides, so we can simplify both the caller and the implementations by using a
single method. It's also more efficient for the GTK+ port that creates and destroys the same style contexts on
every call.

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::adjustInnerStyle):

  • rendering/RenderTheme.h:

(WebCore::RenderTheme::popupInternalPaddingBox):
(WebCore::RenderTheme::popupInternalPaddingLeft): Deleted.
(WebCore::RenderTheme::popupInternalPaddingRight): Deleted.
(WebCore::RenderTheme::popupInternalPaddingTop): Deleted.
(WebCore::RenderTheme::popupInternalPaddingBottom): Deleted.

  • rendering/RenderThemeGtk.cpp:

(WebCore::RenderThemeGtk::popupInternalPaddingBox):
(WebCore::getComboBoxMetrics): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingLeft): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingRight): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingTop): Deleted.
(WebCore::RenderThemeGtk::popupInternalPaddingBottom): Deleted.

  • rendering/RenderThemeGtk.h:
  • rendering/RenderThemeIOS.h:
  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::popupInternalPaddingBox):
(WebCore::RenderThemeIOS::popupInternalPaddingRight): Deleted.

  • rendering/RenderThemeMac.h:
  • rendering/RenderThemeMac.mm:

(WebCore::RenderThemeMac::popupInternalPaddingBox):
(WebCore::RenderThemeMac::popupInternalPaddingLeft): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingRight): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingTop): Deleted.
(WebCore::RenderThemeMac::popupInternalPaddingBottom): Deleted.

2:56 AM Changeset in webkit [198982] by ddkilzer@apple.com
  • 1 edit
    4 adds in trunk/LayoutTests

REGRESSION (r198859): fast/scrolling/rtl-scrollbars-animation-property.html fails on non-Mac platforms
<http://webkit.org/b/155962>

Unreviewed; land platform-specific test results.

  • platform/gtk/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
  • platform/ios-simulator/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
  • platform/win/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
1:37 AM Changeset in webkit [198981] by Yusuke Suzuki
  • 37 edits
    9 adds in trunk

[JSC] Add truncate operation (rounding to zero)
https://bugs.webkit.org/show_bug.cgi?id=156072

Reviewed by Saam Barati.

Source/JavaScriptCore:

Add TruncIntrinsic for Math.trunc. DFG handles it as ArithTrunc.
In DFG, ArithTrunc behaves similar to ArithRound, ArithCeil, and ArithFloor.
ArithTrunc rounds the value towards zero.

And we rewrite @toInteger to use @trunc instead of @abs, @floor, negation and branch.
This is completely the same to what we do in JSValue::toInteger.

Since DFG recognize it, DFG can convert ArithTrunc to Identity if the given argument is Int32.
This is useful because almost all the argument is Int32 in @toLength -> @toInteger -> @trunc case.
In such cases, we can eliminate trunc() call.

As a bonus, to speed up Math.trunc operation, we use x86 SSE round and frintz in ARM64 for ArithRound.
In DFG, we emit these instructions. In FTL, we use Patchpoint to emit these instructions to avoid adding a new B3 IR.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::roundTowardZeroDouble):
(JSC::MacroAssemblerARM64::roundTowardZeroFloat):

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::roundTowardZeroDouble):

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::roundTowardZeroDouble):

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::roundTowardZeroDouble):

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::roundTowardZeroDouble):
(JSC::MacroAssemblerX86Common::roundTowardZeroFloat):

  • builtins/GlobalObject.js:

(toInteger):

  • dfg/DFGAbstractInterpreterInlines.h:

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

  • dfg/DFGByteCodeParser.cpp:

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

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

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

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::roundShouldSpeculateInt32):

  • dfg/DFGNode.h:

(JSC::DFG::Node::arithNodeFlags):
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasArithRoundingMode):

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

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

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileArithRounding):

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

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

  • dfg/DFGSpeculativeJIT64.cpp:

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

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToB3.cpp:

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

  • ftl/FTLOutput.cpp:

(JSC::FTL::Output::doubleTrunc):

  • ftl/FTLOutput.h:
  • jit/ThunkGenerators.cpp:

(JSC::truncThunkGenerator):

  • jit/ThunkGenerators.h:
  • runtime/CommonIdentifiers.h:
  • runtime/Intrinsic.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

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

(JSC::thunkGeneratorForIntrinsic):

  • tests/stress/math-rounding-infinity.js:

(testTrunc):

  • tests/stress/math-rounding-nan.js:

(testTrunc):

  • tests/stress/math-rounding-negative-zero.js:

(testTrunc):

  • tests/stress/math-trunc-arith-rounding-mode.js: Added.

(firstCareAboutZeroSecondDoesNot):
(firstDoNotCareAboutZeroSecondDoes):
(warmup):
(verifyNegativeZeroIsPreserved):

  • tests/stress/math-trunc-basics.js: Added.

(mathTruncOnIntegers):
(mathTruncOnDoubles):
(mathTruncOnBooleans):
(uselessMathTrunc):
(mathTruncWithOverflow):
(mathTruncConsumedAsDouble):
(mathTruncDoesNotCareAboutMinusZero):
(mathTruncNoArguments):
(mathTruncTooManyArguments):
(testMathTruncOnConstants):
(mathTruncStructTransition):
(Math.trunc):

  • tests/stress/math-trunc-should-be-truncate.js: Added.

(mathTrunc):

LayoutTests:

  • js/regress/many-foreach-calls-expected.txt: Added.
  • js/regress/many-foreach-calls.html: Added.
  • js/regress/math-trunc-expected.txt: Added.
  • js/regress/math-trunc.html: Added.
  • js/regress/script-tests/many-foreach-calls.js: Added.

forEach calls @toInteger. It includes @trunc now.
(i.array.forEach):

  • js/regress/script-tests/math-trunc.js: Added.

Call Math.trunc repeatedly.
(mathTruncInt):
(mathTruncDouble):
(mathTruncMixed):
(mathTruncDoubleDoesNotCareNegativeZero):

12:59 AM Changeset in webkit [198980] by gskachkov@gmail.com
  • 18 edits in trunk/Source/JavaScriptCore

[ES6] Class syntax. Access to new.target inside of the eval should not lead to SyntaxError
https://bugs.webkit.org/show_bug.cgi?id=155545

Reviewed by Saam Barati.

Current patch allow to invoke new.target in eval if this eval is executed within function,
otherwise this will lead to Syntax error

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::getSlow):

  • bytecode/ExecutableInfo.h:

(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::evalContextType):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::evalContextType):

  • bytecode/UnlinkedFunctionExecutable.cpp:

(JSC::generateUnlinkedFunctionCodeBlock):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluate):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • parser/Parser.cpp:

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

  • parser/Parser.h:

(JSC::Scope::Scope):
(JSC::Scope::setEvalContextType):
(JSC::Scope::evalContextType):
(JSC::parse):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):
(JSC::CodeCache::getModuleProgramCodeBlock):

  • runtime/CodeCache.h:
  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::EvalExecutable::create):
(JSC::EvalExecutable::EvalExecutable):
(JSC::ProgramExecutable::ProgramExecutable):
(JSC::ModuleProgramExecutable::ModuleProgramExecutable):
(JSC::FunctionExecutable::FunctionExecutable):

  • runtime/Executable.h:

(JSC::ScriptExecutable::evalContextType):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createEvalCodeBlock):

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • tests/stress/arrowfunction-lexical-bind-newtarget.js:
  • tests/stress/new-target.js:

Apr 2, 2016:

6:55 PM Changeset in webkit [198979] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

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

"Causes js/regress/array-nonarray-polymorhpic-access.html to
crash." (Requested by ddkilzer on #webkit).

Reverted changeset:

"[JSC] Initialize SSA's live values at tail lazily"
https://bugs.webkit.org/show_bug.cgi?id=156126
http://trac.webkit.org/changeset/198976

6:22 PM Changeset in webkit [198978] by gskachkov@gmail.com
  • 3 edits in trunk/LayoutTests

[ES6] Arrow function syntax. Add missed test for using 'with' and 'this' in arrow function.
https://bugs.webkit.org/show_bug.cgi?id=156059

Reviewed by Saam Barati.

Added test case that cover using 'with' with lexically bound 'this' in arrow function, this case was not
covered by tests for arrow function.

  • js/arrowfunction-lexical-bind-this-expected.txt:
  • js/script-tests/arrowfunction-lexical-bind-this.js:
3:04 PM Changeset in webkit [198977] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r198933): Web Inspector and inspected page hang in local builds
https://bugs.webkit.org/show_bug.cgi?id=156138
<rdar://problem/25507724>

Reviewed by Alexey Proskuryakov.

Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process
read-only filesystem access and mach lookup capability to various Security framework files
and SecurityServer, respectively.

  • DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
2:16 PM Changeset in webkit [198976] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Initialize SSA's live values at tail lazily
https://bugs.webkit.org/show_bug.cgi?id=156126

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-04-02
Reviewed by Mark Lam.

Setting up the clean state early looks harmless but it is
actually quite expensive.

The problem is AbstractValue is gigantic, you really want
to minimize how much you touch that memory.

By removing the initialization, most blocks only
get 2 or 3 accesses. Once to setup the value, and a few
queries for merging the current block with the successors.

  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::endBasicBlock):
(JSC::DFG::setLiveValues): Deleted.
(JSC::DFG::InPlaceAbstractState::initialize): Deleted.

2:14 PM Changeset in webkit [198975] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

[JSC] Add an option to avoid disassembling baseline code for the JSC Profiler
https://bugs.webkit.org/show_bug.cgi?id=156127

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-04-02
Reviewed by Mark Lam.

The profiler run out of memory on big programs if you dump
the baseline disassembly.

  • jit/JIT.cpp:

(JSC::JIT::privateCompile):

  • runtime/Options.h:
1:01 PM Changeset in webkit [198974] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Cleanup DataDetection.mm a little bit
https://bugs.webkit.org/show_bug.cgi?id=156128

Patch by Sam Weinig <sam@webkit.org> on 2016-04-02
Reviewed by Dan Bernstein.

  • html/HTMLAttributeNames.in:

Add x-apple-data-detectors, x-apple-data-detectors-type, x-apple-data-detectors-result

  • editing/cocoa/DataDetection.mm:

(WebCore::DataDetection::requiresExtendedContext):
(WebCore::DataDetection::dataDetectorIdentifier):
(WebCore::DataDetection::shouldCancelDefaultAction):
(WebCore::removeResultLinksFromAnchor):
(WebCore::searchForLinkRemovingExistingDDLinks):
Use new generated qualified name attributes, switch to using fastGetAttribute and
equalIgnoringASCIICase, and fix the position of some *s.

(WebCore::dataDetectorStringForPath):
Fix some *s and switch to using StringBuilder.

(WebCore::buildQuery):
Fix some *s.

(WebCore::DataDetection::detectContentInRange):
Use new generated qualified name attributes.

12:34 PM Changeset in webkit [198973] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Another attempt to fix the Apple Internal Yosemite and El Capitan builds following
<http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455)

Similar to the sandbox policy for WebProcess and NetworkProcess, grant a Database process
access to the passed user's cache directory and passed user's temporary directory so that
the Security framework can verify the code signature of the app that launched it when the
Database process is itself code signed.

  • DatabaseProcess/mac/com.apple.WebKit.Databases.sb.in:
9:34 AM Changeset in webkit [198972] by mitz@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

jsc binary embedded in relocatable JavaScriptCore.framework links against system JavaScriptCore.framework
https://bugs.webkit.org/show_bug.cgi?id=156134
<rdar://problem/25443824>

Reviewed by Mark Lam.

  • Configurations/JSC.xcconfig: Define WK_RELOCATABLE_FRAMEWORKS_LDFLAGS when building relocatable frameworks to include a -dyld_env option setting DYLD_FRAMEWORK_PATH to point to the directory containing JavaScript.framework, and add WK_RELOCATABLE_FRAMEWORKS_LDFLAGS to OTHER_LDFLAGS.
1:59 AM Changeset in webkit [198971] by ddkilzer@apple.com
  • 2 edits in trunk/LayoutTests

REGRESSION (r198963): css3/filters/backdrop/dynamic-backdrop-filter-change.html frequently fails
<http://webkit.org/b/149319>

Unreviewed attempt to fix layout test.

  • css3/filters/backdrop/dynamic-backdrop-filter-change.html:

Use testRunner.notifyDone() after testRunner.waitUntilDone().

12:01 AM Changeset in webkit [198970] by mmaxfield@apple.com
  • 9 edits in trunk/Source/WebCore

Migrate BidiRunList and BidiRun to automatic memory management
https://bugs.webkit.org/show_bug.cgi?id=156123

Reviewed by Simon Fraser.

BidiRunList, BidiRun, and BidiCharacterRun have all been doing manual
"new"s and "delete"s for years. This patch migrates those classes to
using std::unique_ptr.

No new tests because there is no behavior change.

  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::drawBidiText):

  • platform/text/BidiResolver.h:

(WebCore::BidiCharacterRun::BidiCharacterRun):
(WebCore::BidiCharacterRun::next):
(WebCore::BidiCharacterRun::takeNext):
(WebCore::BidiCharacterRun::setNext):
(WebCore::Subclass>::appendRunInternal):

  • platform/text/BidiRunList.h:

(WebCore::BidiRunList::BidiRunList):
(WebCore::BidiRunList::firstRun):
(WebCore::BidiRunList<Run>::appendRun):
(WebCore::BidiRunList<Run>::prependRun):
(WebCore::BidiRunList<Run>::moveRunToEnd):
(WebCore::BidiRunList<Run>::moveRunToBeginning):
(WebCore::BidiRunList<Run>::replaceRunWithRuns):
(WebCore::BidiRunList<Run>::clear):
(WebCore::BidiRunList<Run>::reverseRuns):
(WebCore::BidiRunList<Run>::clearWithoutDestroyingRuns): Deleted.
(WebCore::BidiRunList<Run>::deleteRuns): Deleted.

  • rendering/BidiRun.cpp:

(WebCore::BidiRun::takeNext):

  • rendering/BidiRun.h:

(WebCore::BidiRun::next):
(WebCore::BidiRun::takeNext):

  • rendering/InlineIterator.h:

(WebCore::addPlaceholderRunForIsolatedInline):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::createRun):
(WebCore::RenderBlockFlow::handleTrailingSpaces):
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::skipLeadingWhitespace):

Apr 1, 2016:

11:38 PM MathML/Early_2016_Refactoring edited by fred.wang@free.fr
(diff)
10:41 PM Changeset in webkit [198969] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed follow-up to r198968. Remove debug statements.

  • Scripts/remove-console-asserts.pl:

(removeConsoleAssertsInFile):

10:23 PM Changeset in webkit [198968] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove console.asserts from Worker code in optimized builds
https://bugs.webkit.org/show_bug.cgi?id=156124
<rdar://problem/25505031>

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

  • Scripts/copy-user-interface-resources.pl:

Remove console asserts on the Worker results directory.

  • Scripts/remove-console-asserts.pl:

(removeConsoleAssertsInFile):
(removeConsoleAssertsInDirectory):
Refactor into functions for a file and a file for
recursing through directories.

8:21 PM Changeset in webkit [198967] by dbates@webkit.org
  • 2 edits in trunk/Source/WebKit2

Attempt to fix the Apple Internal Yosemite and El Capitan builds following
<http://trac.webkit.org/changeset/198933> (https://bugs.webkit.org/show_bug.cgi?id=155455)
<rdar://problem/25502181>

Only check the code signature of the client app if the "user-directory-suffix" sandbox
initialization parameter will not be used. This parameter is only used/passed as an
initialization parameter if the client app is not sandboxed, which seems sufficient
criterion to determine whether it is safe to honor it.

  • Shared/mac/ChildProcessMac.mm:

(WebKit::ChildProcess::initializeSandbox):

7:30 PM Changeset in webkit [198966] by bshafiei@apple.com
  • 5 edits in tags/Safari-602.1.26.0.1/Source

Versioning.

7:28 PM Changeset in webkit [198965] by bshafiei@apple.com
  • 1 copy in tags/Safari-602.1.26.0.1

New tag.

6:48 PM Changeset in webkit [198964] by jiewen_tan@apple.com
  • 3 edits
    1 move in trunk/Tools

Build fix for r198956.

Unreviewed.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLNotChange.mm: Renamed from Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ProvisionalURLChange.mm.

(-[ProvisionalURLNotChangeController webView:didFinishNavigation:]):
(-[ProvisionalURLNotChangeController webView:didFailProvisionalNavigation:withError:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm:

(-[LoadInvalidSchemeDelegate browsingContextController:didFailProvisionalLoadWithError:]):
(TestWebKitAPI::TEST):

5:19 PM Changeset in webkit [198963] by Simon Fraser
  • 3 edits
    2 adds in trunk

Backdrop Filter should repaint when changed via script
https://bugs.webkit.org/show_bug.cgi?id=149319
rdar://problem/22749892

Reviewed by Tim Horton.

Source/WebCore:

When backdrop filters change, we need to trigger a recomposite, just as we do
for filters. It's ok to re-use ContextSensitivePropertyFilter because
adjustStyleDifference() does the right thing.

Test: css3/filters/backdrop/dynamic-backdrop-filter-change.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayerRepaint):

LayoutTests:

  • css3/filters/backdrop/dynamic-backdrop-filter-change-expected.html: Added.
  • css3/filters/backdrop/dynamic-backdrop-filter-change.html: Added.
5:09 PM Changeset in webkit [198962] by bshafiei@apple.com
  • 5 edits in branches/safari-601-branch/Source

Versioning.

5:08 PM Changeset in webkit [198961] by bshafiei@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source

Versioning.

4:52 PM Changeset in webkit [198960] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.46.125

New tag.

4:51 PM Changeset in webkit [198959] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.6.14

New tag.

4:25 PM Changeset in webkit [198958] by Alan Bujtas
  • 3 edits
    2 adds in trunk

putImageData leaves visible artifacts on retina display
https://bugs.webkit.org/show_bug.cgi?id=156039
<rdar://problem/25482243>

Reviewed by Simon Fraser.

Inflate the repaint rect to cover anti-aliasing bits.

Source/WebCore:

Test: fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind.html

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::didDraw):

LayoutTests:

  • fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind-expected.html: Added.
  • fast/canvas/hidpi-repaint-on-retina-leaves-bits-behind.html: Added.
2:44 PM Changeset in webkit [198957] by matthew_hanson@apple.com
  • 5 edits in branches/safari-601.1.46-branch/Source/WebCore

Roll out r198035 via r198903. rdar://problem/25467558

2:40 PM Changeset in webkit [198956] by jiewen_tan@apple.com
  • 9 edits
    3 adds in trunk

WebKit should dispatchDidFailProvisionalLoad while loading invalid URLs
https://bugs.webkit.org/show_bug.cgi?id=155995
<rdar://problem/14967004>

Reviewed by Andy Estes.

Source/WebCore:

Added API Tests.

If a loading request contains an invalid URL, DocumentLoader will now dispatch
cannotShowURLError to the clients.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::startLoadingMainResource):

Source/WebKit2:

Ensure that alternative HTML string will not be loaded back to back for
failing provisional loads.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadAlternateHTMLString):
(WebKit::WebPageProxy::didFinishLoadForFrame):

  • UIProcess/WebPageProxy.h:

Tools:

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

(-[LoadAlternateHTMLStringFromProvisionalLoadErrorController webView:didFailProvisionalNavigation:withError:]):
(-[LoadAlternateHTMLStringFromProvisionalLoadErrorController webView:didStartProvisionalNavigation:]):
(TEST):

  • TestWebKitAPI/Tests/WebKit2Cocoa/LoadInvalidURLRequest.mm: Added.

(literalURL):
(-[LoadInvalidURLNavigationActionDelegate webView:didCommitNavigation:]):
(-[LoadInvalidURLNavigationActionDelegate webView:didFailProvisionalNavigation:withError:]):
(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.html: Added.
  • TestWebKitAPI/Tests/mac/LoadInvalidURLRequest.mm: Added.

(-[LoadInvalidURLWebFrameLoadDelegate webView:didCommitLoadForFrame:]):
(-[LoadInvalidURLWebFrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
(TestWebKitAPI::TEST):

2:10 PM Changeset in webkit [198955] by Brent Fulgham
  • 23 edits
    9 adds in trunk

Confirm <a download> satisfies specification criteria
https://bugs.webkit.org/show_bug.cgi?id=156057

Reviewed by Andy Estes.

Source/WebKit2:

  • WebProcess/InjectedBundle/API/c/WKBundleNavigationAction.cpp:

(WKBundleNavigationActionGetHasDownloadAttribute): Added.

  • WebProcess/InjectedBundle/API/c/WKBundleNavigationActionPrivate.h:
  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.cpp:

(WebKit::InjectedBundleNavigationAction::InjectedBundleNavigationAction):

  • WebProcess/InjectedBundle/InjectedBundleNavigationAction.h:

(WebKit::InjectedBundleNavigationAction::hasDownloadAttribute): Added.

Tools:

Revise WebKitTestRunner:
(1) Provide a download client delegate.
(2) Teach WKTR to wait to finish a test until a download finishes.
(3) Allow WKTR to notify the current TestRunner that it can finish.

  • WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessageToPage): Update to recognize a new
message "NotifyDownloadDone".

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::decidePolicyForNavigationAction): Handle 'download'
attribute case.

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::waitUntilDownload): Added.

  • WebKitTestRunner/InjectedBundle/TestRunner.h:

(WTR::TestRunner::shouldFinishAfterDownload): Added.

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createWebViewWithOptions): Set up the download client.
(WTR::TestController::downloadDidStart): Added.
(WTR::TestController::decideDestinationWithSuggestedFilename): Added.
(WTR::TestController::downloadDidFinish): Added.
(WTR::TestController::downloadDidFail): Added.
(WTR::TestController::downloadDidCancel): Added.

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::notifyDownloadDone): Added.

  • WebKitTestRunner/TestInvocation.h:

LayoutTests:

Import <a download> tests from the Blink project.

Based on a Blink change (patch by <asanka@chromium.org>):
<https://src.chromium.org/viewvc/blink?revision=172767&view=revision>

  • TestExpectations: Mark two expected failures with the new tests.
  • fast/dom/HTMLAnchorElement/anchor-download-expected.txt: Updated for

expected output (blob URL currently not working).

  • fast/dom/HTMLAnchorElement/anchor-nodownload-set-expected.txt: Ditto.
  • http/tests/security/anchor-download-allow-blob-expected.txt: Added.
  • http/tests/security/anchor-download-allow-blob.html: Added.
  • http/tests/security/anchor-download-allow-data-expected.txt: Added.
  • http/tests/security/anchor-download-allow-data.html: Added.
  • http/tests/security/anchor-download-allow-sameorigin-expected.txt: Added.
  • http/tests/security/anchor-download-allow-sameorigin.html: Added.
  • http/tests/security/anchor-download-block-crossorigin-expected.txt: Added.
  • http/tests/security/anchor-download-block-crossorigin.html: Added.
  • http/tests/security/resources/attachment.php: Added.
  • platform/ios-simulator-wk1/TestExpectations: Disable download tests until WK1 support

is implemented.

  • platform/ios-simulator-wk2/TestExpectations: Disable download tests until

NETWORK_SESSION support exists.

  • platform/mac/TestExpectations: Reactivate the HTMLAnchorElement tests.
  • platform/mac-wk1/TestExpectations: Disable download tests until WK1 support

is implemented.

1:58 PM Changeset in webkit [198954] by Ryan Haddad
  • 4 edits in trunk/LayoutTests

Rebaseline tests added with r198951
https://bugs.webkit.org/show_bug.cgi?id=156092

Unreviewed test gardening.

  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src-expected.txt:
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src-expected.txt:
12:20 PM Changeset in webkit [198953] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

[JSC][x86] Add the 3 operands form of floating point substraction
https://bugs.webkit.org/show_bug.cgi?id=156095

Patch by Benjamin Poulain <bpoulain@apple.com> on 2016-04-01
Reviewed by Geoffrey Garen.

Same old, same old. Add the AVX form of subsd and subss.

Unfortunately, we cannot benefit from the 3 register form
in B3 yet because the Air script does not support CPU flags yet.
That can be fixed later.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::subDouble):
(JSC::MacroAssemblerX86Common::subFloat):

  • assembler/X86Assembler.h:

(JSC::X86Assembler::vsubsd_rr):
(JSC::X86Assembler::subsd_mr):
(JSC::X86Assembler::vsubsd_mr):
(JSC::X86Assembler::vsubss_rr):
(JSC::X86Assembler::subss_mr):
(JSC::X86Assembler::vsubss_mr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

  • b3/air/AirOpcode.opcodes:
12:15 PM Changeset in webkit [198952] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Reset CSS spacing rules on the <math> element.
https://bugs.webkit.org/show_bug.cgi?id=155433

Patch by Frederic Wang <fwang@igalia.com> on 2016-04-01
Reviewed by Brent Fulgham.

Source/WebCore:

Test: mathml/presentation/css-spacing.html

When the authors has changed some CSS spacing rules on a page, they are currently inherited on MathML too, potentially causing broken math rendering.
For example, this caused a bug in Firefox on Wikipedia in the past. Hence we align on Gecko and just reset the CSS spacing rules by default. We also import Mozilla's test.

  • css/mathml.css:

(math): Set line-height, word-spacing and letter-spacing to normal.

LayoutTests:

We import a test from Mozilla to ensure that CSS spacing rules line-height, word-spacing and letter-spacing are by default reset to normal on the <math> element.

  • mathml/presentation/css-spacing-expected.html: Added.
  • mathml/presentation/css-spacing.html: Added.
11:40 AM Changeset in webkit [198951] by dbates@webkit.org
  • 6 edits
    6 adds in trunk

CSP: child-src violations reported as frame-src violation
https://bugs.webkit.org/show_bug.cgi?id=156092
<rdar://problem/25478509>

Reviewed by Andy Estes.

Source/WebCore:

Tests: http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src.html

http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src.html
http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src.html

  • page/csp/ContentSecurityPolicy.cpp:

(WebCore::ContentSecurityPolicy::allowChildFrameFromSource): Determine the name of the effective violation
directive from the name of the violated directive. If the name of the violated directive is "frame-src"
then use that name for the name of the effective violated directive. Otherwise, use "child-src" for the
name of the effective violated directive. A byproduct of this decision is that we report child-src as the
effective violated directive when a frame load was blocked by the default-src directive. This seems reasonable
because directive frame-src is deprecated in Content Security Policy Level 2. The child-src directive is
its replacement.

LayoutTests:

  • TestExpectations: Mark the newly added tests as PASS so that we run them.
  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-blocked-expected.txt: Substitute "child-src" for "frame-src" in the

expected console warning.

  • http/tests/security/contentSecurityPolicy/1.1/child-src/frame-redirect-blocked-expected.txt: Ditto.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-child-src.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-default-src.html: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src-expected.txt: Added.
  • http/tests/security/contentSecurityPolicy/1.1/securityviolationpolicy-block-frame-using-frame-src.html: Added.
11:22 AM Changeset in webkit [198950] by dbates@webkit.org
  • 2 edits in trunk

Fix up ChangeLog entries for r198936 (https://bugs.webkit.org/show_bug.cgi?id=156079) to reference
the update bug title that reflects that r198936 fixes the regression caused by r196012.

11:15 AM Changeset in webkit [198949] by adachan@apple.com
  • 2 edits in trunk/LayoutTests

Add a way to reset the eventTrigger in ControlsTest in LayoutTests/media/controls/controls-test-helpers.js
https://bugs.webkit.org/show_bug.cgi?id=154616

Reviewed by Dean Jackson.

  • media/controls/controls-test-helpers.js:

(ControlsTest.prototype.resetEventTrigger):

10:55 AM Changeset in webkit [198948] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

CMake build fix.

  • PlatformMac.cmake:
9:45 AM Changeset in webkit [198947] by commit-queue@webkit.org
  • 19 edits
    1 copy
    1 add in trunk

Compile DumpRenderTree with CMake on Mac
https://bugs.webkit.org/show_bug.cgi?id=156088

Patch by Alex Christensen <achristensen@webkit.org> on 2016-04-01
Reviewed by Brent Fulgham.

Source/WebCore:

  • PlatformMac.cmake:
  • platform/mock/mediasource/MockBox.cpp:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKit/mac:

  • Misc/WebKit.h:

Alphabetize headers.

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • UIProcess/API/Cocoa/WebKitLegacy.h: Added.

Tools:

  • CMakeLists.txt:
  • DumpRenderTree/CMakeLists.txt:
  • DumpRenderTree/DefaultPolicyDelegate.m:

(-[DefaultPolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):

  • DumpRenderTree/DumpRenderTreeFileDraggingSource.m:
  • DumpRenderTree/PlatformMac.cmake: Added.
  • DumpRenderTree/PlatformWin.cmake:
  • DumpRenderTree/mac/AppleScriptController.m:

(convertAEDescToObject):

  • DumpRenderTree/mac/DumpRenderTreeMain.mm:
  • DumpRenderTree/mac/LayoutTestHelper.m:
9:18 AM Changeset in webkit [198946] by Ryan Haddad
  • 2 edits in trunk/LayoutTests

Marking three media controls tests as flaky on El Capitan
https://bugs.webkit.org/show_bug.cgi?id=156112

Unreviewed test gardening.

  • platform/mac/TestExpectations:
3:49 AM WebKitGTK/2.12.x edited by berto@igalia.com
(diff)
3:36 AM Changeset in webkit [198945] by berto@igalia.com
  • 2 edits in trunk/Source/JavaScriptCore

[JSC] Missing PATH_MAX definition
https://bugs.webkit.org/show_bug.cgi?id=156102

Reviewed by Yusuke Suzuki.

Not all systems define PATH_MAX, so add a fallback value that is
long enough.

  • jsc.cpp:
3:21 AM Changeset in webkit [198944] by jh718.park@samsung.com
  • 2 edits
    1 add in trunk/LayoutTests

Unreviewed EFL gardening about new RTL scrollbar testcase
This testcase has been added in r198859.

  • platform/efl/TestExpectations:
  • platform/efl/fast/scrolling/rtl-scrollbars-animation-property-expected.txt: Added.
2:54 AM Changeset in webkit [198943] by Antti Koivisto
  • 41 edits
    5 adds in trunk

Separate render tree updating from style resolve
https://bugs.webkit.org/show_bug.cgi?id=155298

Reviewed by Andreas Kling.

Source/WebCore:

This patch splits computing document style and applying the results into two distinct steps:

Style::TreeResolver::resolve()

|
| Style::Update
V

RenderTreeUpdater::commit()

Style::TreeResolver::resolve() returns a Style::Update object that contains all the changes to be made
for the whole composed tree. RenderTreeUpdater then applies the changes updating, building or tearing
down portions of the render tree as needed.

Style::Update consists of a map that contains new style for each newly resolved element along with some
metadata. A separate map contains text nodes that require reconstruction. It also tracks change roots so
RenderTreeUpdater needs to traverse the changed subtrees only.

The patch eliminates the recursive render tree build code path replacing it with iterative functions.

This will enable future optimizations. For example we won't need to commit to immediate rendering
changes simply because some script or internal function requires up-to-date style.

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::State::State):
(WebCore::StyleResolver::styleForElement):

  • css/StyleResolver.h:

(WebCore::StyleResolver::setOverrideDocumentElementStyle):
(WebCore::StyleResolver::State::State):

Root element style is needed for resolving other elements. Add a way to provide it without looking
into active document style.

  • dom/Document.cpp:

(WebCore::Document::recalcStyle):

Resolve the document style and commit it immediately (for now).

(WebCore::Document::styleForElementIgnoringPendingStylesheets):

  • dom/Document.h:

(WebCore::Document::setNeedsNotifyRemoveAllPendingStylesheet):
(WebCore::Document::inStyleRecalc):
(WebCore::Document::inRenderTreeUpdate):

  • dom/Element.cpp:

(WebCore::Element::setChildIndex):

Setting the unique bit is now done by style relations update code.

  • dom/Node.cpp:

(WebCore::Node::setNeedsStyleRecalc):

Prevent spurious style invalidation during render tree updating.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::styleDidChange):

Capturing body element color for color:-webkit-text is now done by TreeResolver.

  • rendering/RenderElement.h:

(WebCore::RenderElement::setAnimatableStyle): Deleted.

No longer used.

  • style/RenderTreePosition.cpp:

(WebCore::RenderTreePosition::nextSiblingRenderer):

Skip over non-rendered slot elements.

  • style/RenderTreeUpdater.cpp: Added.

(WebCore::RenderTreeUpdater::Parent::Parent):
(WebCore::RenderTreeUpdater::RenderTreeUpdater):
(WebCore::hasDisplayContents):
(WebCore::findRenderingRoot):
(WebCore::RenderTreeUpdater::commit):

Call updateRenderTree for each change root.

(WebCore::shouldCreateRenderer):
(WebCore::RenderTreeUpdater::updateRenderTree):

Iteratively traverse the composed tree starting for a change root.
Apply the changes calling updateElementRenderer and updateTextRenderer as needed.
Enter subtrees that haves changes to apply.

(WebCore::RenderTreeUpdater::renderTreePosition):

We may not create renderers for all elements (<slot> or more generally display:contents) that
have rendered descendants. Search the parent stack to find the valid position.

(WebCore::RenderTreeUpdater::pushParent):
(WebCore::RenderTreeUpdater::popParent):
(WebCore::RenderTreeUpdater::popParentsToDepth):

Maintain parent stack.

(WebCore::pseudoStyleCacheIsInvalid):
(WebCore::RenderTreeUpdater::updateElementRenderer):

Create, delete or update the renderer.

(WebCore::moveToFlowThreadIfNeeded):
(WebCore::RenderTreeUpdater::createRenderer):
(WebCore::textRendererIsNeeded):
(WebCore::createTextRenderer):
(WebCore::RenderTreeUpdater::updateTextRenderer):
(WebCore::RenderTreeUpdater::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):

This is moved from TreeResolver.

(WebCore::needsPseudoElement):
(WebCore::RenderTreeUpdater::updateBeforeOrAfterPseudoElement):

Pseudo elements are handled entirely during render tree construction. Compute their style and
create or delete them as needed.

  • style/RenderTreeUpdater.h: Added.

(WebCore::RenderTreeUpdater::parent):

  • style/StyleRelations.cpp:

(WebCore::Style::commitRelationsToRenderStyle):
(WebCore::Style::commitRelations):

Commit to Style::Update instead of the document if needed.

(WebCore::Style::commitRelationsToDocument): Deleted.

  • style/StyleRelations.h:
  • style/StyleSharingResolver.cpp:

(WebCore::Style::elementHasDirectionAuto):
(WebCore::Style::SharingResolver::resolve):

Fetch the shareable style from Style::Update instead of the active document style.

(WebCore::Style::SharingResolver::findSibling):
(WebCore::Style::SharingResolver::canShareStyleWithElement):

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

(WebCore::Style::TreeResolver::Parent::Parent):

No need for render tree position anymore.

(WebCore::Style::TreeResolver::popScope):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::invalidateWhitespaceOnlyTextSiblingsAfterAttachIfNeeded):
(WebCore::Style::createTextRendererIfNeeded):
(WebCore::Style::updateTextRendererAfterContentChange):
(WebCore::Style::resetStyleForNonRenderedDescendants):
(WebCore::Style::detachChildren):
(WebCore::Style::detachSlotAssignees):
(WebCore::Style::detachRenderTree):
(WebCore::Style::TreeResolver::resolveElement):

Just resolve the style and return it, no more applying or entering render tree construction code paths.

(WebCore::Style::resolveTextNode):
(WebCore::Style::elementImplicitVisibility):
(WebCore::Style::TreeResolver::pushParent):
(WebCore::Style::TreeResolver::popParent):
(WebCore::Style::TreeResolver::popParentsToDepth):
(WebCore::Style::shouldResolvePseudoElement):
(WebCore::Style::TreeResolver::resolveComposedTree):

Add style changes to Style::Update.

(WebCore::Style::TreeResolver::resolve):

Return Style::Update object if non-empty.

(WebCore::Style::postResolutionCallbackQueue):
(WebCore::Style::shouldCreateRenderer): Deleted.
(WebCore::Style::moveToFlowThreadIfNeeded): Deleted.
(WebCore::Style::TreeResolver::createRenderer): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForChildren): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForShadowRoot): Deleted.
(WebCore::Style::beforeOrAfterPseudoElement): Deleted.
(WebCore::Style::setBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::clearBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::needsPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForBeforeOrAfterPseudoElement): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeForSlotAssignees): Deleted.
(WebCore::Style::TreeResolver::createRenderTreeRecursively): Deleted.
(WebCore::Style::pseudoStyleCacheIsInvalid): Deleted.
(WebCore::Style::TreeResolver::resolveBeforeOrAfterPseudoElement): Deleted.

Remove the recursive render tree building code path.

  • style/StyleTreeResolver.h:

(WebCore::Style::TreeResolver::scope):

  • style/StyleUpdate.cpp: Added.

(WebCore::Style::Update::Update):
(WebCore::Style::Update::elementUpdate):
(WebCore::Style::Update::textUpdate):
(WebCore::Style::Update::elementStyle):
(WebCore::Style::Update::addElement):
(WebCore::Style::Update::addText):
(WebCore::Style::Update::addPossibleRoot):

  • style/StyleUpdate.h: Added.

(WebCore::Style::Update::roots):
(WebCore::Style::Update::document):

  • svg/SVGElement.h:

(WebCore::SVGElement::updateRelativeLengthsInformation):

  • svg/SVGUseElement.cpp:

(WebCore::SVGUseElement::svgAttributeChanged):
(WebCore::SVGUseElement::willRecalcStyle):
(WebCore::SVGUseElement::willAttachRenderers): Deleted.

Switvh willAttachRenderers to willRecalcStyle as the former is now called too late.

  • svg/SVGUseElement.h:

LayoutTests:

Skip mathml/presentation/menclose-notation-attribute-change-value.html. It will be fixed by upcoming MathML refactoring.

  • css3/blending/repaint/blend-mode-isolate-stacking-context-expected.txt:
  • css3/viewport-percentage-lengths/viewport-percentage-lengths-resize-expected.txt:

This is a progression.

  • editing/mac/spelling/autocorrection-contraction-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-after-paste-expected.txt:
  • editing/mac/spelling/autocorrection-removing-underline-expected.txt:
  • editing/mac/spelling/autocorrection-simple-expected.txt:
  • editing/style/remove-underline-from-stylesheet-expected.txt:
  • editing/style/typing-style-003-expected.txt:

Non-rendered whitespace related changes.

  • platform/ios-simulator/TestExpectations:

Skip fast/regions/position-writing-modes-in-variable-width-regions.html on iOS. Similar tests are mostly already skipped.

  • platform/ios-simulator/editing/style/typing-style-003-expected.txt: Added.
  • platform/mac-wk2/editing/mac/spelling/autocorrection-contraction-expected.txt:
  • platform/mac/editing/inserting/editable-html-element-expected.txt:
  • platform/mac/editing/inserting/editing-empty-divs-expected.txt:
  • platform/mac/editing/inserting/insert-at-end-02-expected.txt:
  • platform/mac/editing/pasteboard/4989774-expected.txt:
  • platform/mac/editing/selection/4983858-expected.txt:

Non-rendered whitespace related changes.

1:06 AM WebKitNightlyElCapWorkaround edited by Manuel Rego Casasnovas
run-safari was not working after the workaround, explained how to run … (diff)
12:23 AM WebKitGTK/2.12.x edited by berto@igalia.com
(diff)
Note: See TracTimeline for information about the timeline view.