WebKit-https.git
4 years agoUnreviewed, teach run-javascriptcore-tests that this is a slow test.
fpizlo@apple.com [Fri, 6 Jan 2017 03:14:25 +0000 (03:14 +0000)]
Unreviewed, teach run-javascriptcore-tests that this is a slow test.

* js/script-tests/regress-139548.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210427 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Form Validation] lengthy validation messages should be truncated with an ellipsis
cdumez@apple.com [Fri, 6 Jan 2017 02:47:06 +0000 (02:47 +0000)]
[Form Validation] lengthy validation messages should be truncated with an ellipsis
https://bugs.webkit.org/show_bug.cgi?id=166747
<rdar://problem/29872021>

Reviewed by Simon Fraser.

Lengthy HTML validation messages should be truncated with an ellipsis.
Previously, they were truncated but there was no ellipsis.

No new tests, not easily testable. Manually tested on
- http://codepen.io/cdumez/full/zoOZmZ/ (last field)

* platform/ios/ValidationBubbleIOS.mm:
(WebCore::ValidationBubble::ValidationBubble):
* platform/mac/ValidationBubbleMac.mm:
(WebCore::ValidationBubble::ValidationBubble):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210425 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRadio buttons have a fixed border radius making them look square when resized
simon.fraser@apple.com [Fri, 6 Jan 2017 01:55:07 +0000 (01:55 +0000)]
Radio buttons have a fixed border radius making them look square when resized
https://bugs.webkit.org/show_bug.cgi?id=148676
Source/WebCore:

rdar://problem/29889892

Reviewed by Tim Horton.

Change the 8px border-radius of iOS radio buttons to 50% so they remain circular
when the page overrides the size.

Test: fast/forms/ios/large-radio-button-is-round.html

* css/html.css:
(#if defined(WTF_PLATFORM_IOS) && WTF_PLATFORM_IOS):

LayoutTests:

Reviewed by Tim Horton.

* fast/forms/ios/large-radio-button-is-round-expected.html: Added.
* fast/forms/ios/large-radio-button-is-round.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210423 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCoreText variation axis identifiers don't work with 64-bit numbers
mmaxfield@apple.com [Fri, 6 Jan 2017 01:06:15 +0000 (01:06 +0000)]
CoreText variation axis identifiers don't work with 64-bit numbers
https://bugs.webkit.org/show_bug.cgi?id=166745
<rdar://problem/29856541>
<rdar://problem/29848883>

Reviewed by Tim Horton.

There is a bug where some CFNumbers are getting garbage results when
being placed into a 64-bit field. Luckily, we don't need the full
64-bits; 32-bits is sufficient.

Test: fast/text/international/system-language/hindi-system-font-punctuation.html

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::defaultVariationValues):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210400 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCarets can split up marriages and families
mmaxfield@apple.com [Fri, 6 Jan 2017 01:04:34 +0000 (01:04 +0000)]
Carets can split up marriages and families
https://bugs.webkit.org/show_bug.cgi?id=166711
<rdar://problem/29019333>

Reviewed by Alex Christensen.

Source/WTF:

There are four code points which should be allowed to accept emoji modifiers:
- U+1F46A FAMILY
- U+1F46B MAN AND WOMAN HOLDING HANDS
- U+1F46C TWO MEN HOLDING HANDS
- U+1F46D TWO WOMEN HOLDING HANDS

Even though macOS's and iOS's emoji keyboard don't allow users to actually type
these combinations, we may still receive them from other platforms. We should
therefore treat these as joining sequences. Rendering isn't a problem because
the fonts accept the emoji modifiers, but our caret placement code isn't educated
about it. Currently, we treat these emoji groups as ligatures, allowing the caret
to be placed between the two code points, which visually shows as being horizontally
centered in the glyph. Instead, we should treat these code points as accepting
emoji modifiers.

Tests: editing/caret/emoji.html
       editing/caret/ios/emoji.html

* wtf/text/TextBreakIterator.cpp:
(WTF::cursorMovementIterator):

LayoutTests:

AFAICT we don't have a test where we arrow-through a set of emoji. We do
have tests where we backspace-through a set of emoji. Add a new test for
the arrow keys.

* platform/ios/TestExpectations:
* platform/mac/editing/caret/emoji-expected.txt: Added.
* editing/caret/emoji.html: Added.
* editing/caret/ios/emoji-expected.txt: Added.
* editing/caret/ios/emoji.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210399 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAutomaticThread timeout shutdown leaves a small window where notify() would think...
fpizlo@apple.com [Fri, 6 Jan 2017 00:24:11 +0000 (00:24 +0000)]
AutomaticThread timeout shutdown leaves a small window where notify() would think that the thread is still running
https://bugs.webkit.org/show_bug.cgi?id=166742

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Update to new AutomaticThread API.

* dfg/DFGWorklist.cpp:

Source/WTF:

Remove the use of the RAII ThreadScope, since the use of RAII helped make this bug possible:
we'd do ~ThreadScope after we had done ~LockHolder, so in between when we decided to shut
down a thread and when it reported itself as being shut down, there was a window where a
notify() call would get confused.

Now, we run all thread shutdown stuff while the lock is held. We release the lock last. One
API implication is that threadWillStop becomes threadIsStopping and it's called while the
lock is held. This seems benign.

* wtf/AutomaticThread.cpp:
(WTF::AutomaticThread::start):
(WTF::AutomaticThread::threadIsStopping):
(WTF::AutomaticThread::ThreadScope::ThreadScope): Deleted.
(WTF::AutomaticThread::ThreadScope::~ThreadScope): Deleted.
(WTF::AutomaticThread::threadWillStop): Deleted.
* wtf/AutomaticThread.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210398 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Remove unused delegate from VisualStyleSelectorSection
commit-queue@webkit.org [Thu, 5 Jan 2017 23:42:05 +0000 (23:42 +0000)]
Web Inspector: Remove unused delegate from VisualStyleSelectorSection
https://bugs.webkit.org/show_bug.cgi?id=166744

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-01-05
Reviewed by Alex Christensen.

* UserInterface/Views/VisualStyleDetailsPanel.js:
(WebInspector.VisualStyleDetailsPanel.prototype.initialLayout):
* UserInterface/Views/VisualStyleSelectorSection.js:
(WebInspector.VisualStyleSelectorSection):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210379 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoStart hittesting a clean tree in RenderEmbeddedObject::isReplacementObscured
zalan@apple.com [Thu, 5 Jan 2017 23:37:16 +0000 (23:37 +0000)]
Start hittesting a clean tree in RenderEmbeddedObject::isReplacementObscured
https://bugs.webkit.org/show_bug.cgi?id=166743
<rdar://problem/29024384>

Reviewed by Simon Fraser.

Unable to reproduce.

* rendering/RenderEmbeddedObject.cpp:
(WebCore::RenderEmbeddedObject::isReplacementObscured):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210378 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRebaseline fast/canvas/webgl/context-creation-attributes.html after r210372.
ryanhaddad@apple.com [Thu, 5 Jan 2017 22:40:21 +0000 (22:40 +0000)]
Rebaseline fast/canvas/webgl/context-creation-attributes.html after r210372.

Unreviewed test gardening.

* fast/canvas/webgl/context-creation-attributes-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210377 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCrash inside Editor::styleForSelectionStart
rniwa@webkit.org [Thu, 5 Jan 2017 22:18:36 +0000 (22:18 +0000)]
Crash inside Editor::styleForSelectionStart
https://bugs.webkit.org/show_bug.cgi?id=166710

Reviewed by Chris Dumez.

Added a null pointer check. This crash can happen when the DOM is mutated as editorState tries
to compute the style at the selection start.

No new tests since there is no reproducible test case, and I couldn't come up with one either.
This crash seems to retire some intricate dependency between when DOM is mutated, selection is
updated, and then performPostLayoutTasks ends up updating the editor state in response to
the element's editabilty changing.

* editing/cocoa/EditorCocoa.mm:
(WebCore::Editor::styleForSelectionStart):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210376 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, rolling out r210370.
ryanhaddad@apple.com [Thu, 5 Jan 2017 21:35:05 +0000 (21:35 +0000)]
Unreviewed, rolling out r210370.

This change caused hundreds of LayoutTest failures on Sierra.

Reverted changeset:

"[Cocoa] Variation fonts without variations specified are not
rendered as if the default variations were specified"
https://bugs.webkit.org/show_bug.cgi?id=166672
http://trac.webkit.org/changeset/210370

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210375 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[SOUP] Network process crash in WebKit::CustomProtocolManagerImpl::didFailWithError
commit-queue@webkit.org [Thu, 5 Jan 2017 21:27:50 +0000 (21:27 +0000)]
[SOUP] Network process crash in WebKit::CustomProtocolManagerImpl::didFailWithError
https://bugs.webkit.org/show_bug.cgi?id=165082

Patch by Carlos Garcia Campos <cgarcia@igalia.com> on 2017-01-05
Reviewed by Alex Christensen.

Source/WebCore:

Simplified WebKitSoupRequestGenericClient.

* platform/network/soup/WebKitSoupRequestGeneric.cpp:
(webkitSoupRequestGenericSendAsync):
(webkitSoupRequestGenericSendFinish):
(webkitSoupRequestGenericGetRequest):
* platform/network/soup/WebKitSoupRequestGeneric.h:
* platform/network/soup/WebKitSoupRequestGenericClient.h:

Source/WebKit2:

CustomProtocolManager uses a Workqueue to receive the IPC messages since r149194. Then we added the Soup
implementation adopting that approach, but without making our implementation thread safe. The crash happens
because the CustomProtocolManager implementation is used by two threads at the same time, the main thread
because of a ping load (probably caused by an image load in the unload handler, I haven't been able to
reproduce the crash) and the work queue thread. The reasons to make CustomProtocolManager use a WorkQueue
are no longer valid because CustomProtocolManager is now only used in the network process and sync loads don't
use any nested run loop, they are just an IPC sync message. So this patch makes CustomProtocolManager a normal
message receiver again to ensure messages are handled in the main thread. It also adds the common implementation
to a new CustomProtocolManager.cpp file shared by Cocoa and Soup based ports.

* CMakeLists.txt: Add CustomProtocolManager.cpp.
* NetworkProcess/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:
(-[WKCustomProtocol initWithRequest:cachedResponse:client:]): Use new CustomProtocolManager API.
(-[WKCustomProtocol startLoading]): Ditto.
(-[WKCustomProtocol stopLoading]): Ditto.
(WebKit::CustomProtocolManager::registerProtocolClass): Register the NSURLProtocol class when not using the
network session.
(WebKit::CustomProtocolManager::didFailWithError): removeCustomProtocol now receives an ID.
(WebKit::CustomProtocolManager::didFinishLoading): Ditto.
* NetworkProcess/CustomProtocols/CustomProtocolManager.cpp: Added.
(WebKit::generateCustomProtocolID): Moved from CustomProtocolManagerCocoa.mm and CustomProtocolManagerSoup.cpp.
(WebKit::CustomProtocolManager::supplementName): Ditto.
(WebKit::CustomProtocolManager::CustomProtocolManager): Also removes the work queue initialization.
(WebKit::CustomProtocolManager::initialize): Copied and modernized the loop.
(WebKit::CustomProtocolManager::addCustomProtocol): Copied from CustomProtocolManagerCocoa.mm.
(WebKit::CustomProtocolManager::removeCustomProtocol): Ditto.
(WebKit::CustomProtocolManager::startLoading): Send the StartLoading message to the proxy.
(WebKit::CustomProtocolManager::stopLoading): Send the StopLoading message to the proxy.
* NetworkProcess/CustomProtocols/CustomProtocolManager.h:
* NetworkProcess/CustomProtocols/soup/CustomProtocolManagerImpl.cpp: Removed.
* NetworkProcess/CustomProtocols/soup/CustomProtocolManagerImpl.h: Removed.
* NetworkProcess/CustomProtocols/soup/CustomProtocolManagerSoup.cpp: Moved the implementation from
CustomProtocolManagerImpl and updated to the new CustomProtocolManager API.
(WebKit::CustomProtocolManager::WebSoupRequestAsyncData::WebSoupRequestAsyncData):
(WebKit::CustomProtocolManager::WebSoupRequestAsyncData::~WebSoupRequestAsyncData):
(WebKit::CustomProtocolManager::registerProtocolClass):
(WebKit::CustomProtocolManager::registerScheme):
(WebKit::CustomProtocolManager::supportsScheme):
(WebKit::CustomProtocolManager::didFailWithError):
(WebKit::CustomProtocolManager::didLoadData):
(WebKit::CustomProtocolManager::didReceiveResponse):
(WebKit::CustomProtocolManager::didFinishLoading):
(WebKit::CustomProtocolManager::wasRedirectedToRequest):
* NetworkProcess/cocoa/NetworkSessionCocoa.mm:
(WebKit::globalCustomProtocolManager):
(WebKit::NetworkSessionCocoa::defaultSession):
CustomProtocolManager is no longer refcounted, so just pass a pointer.
A static pointer has the same lifetime as the NetworkProcess object in the NetworkProcess,
and in the WebProcess it will remain nullptr, just like it used to.
* PlatformEfl.cmake:
* PlatformGTK.cmake:
* WebKit2.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210374 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoTurn preferLowPowerWebGLRendering setting on by default
cdumez@apple.com [Thu, 5 Jan 2017 20:56:03 +0000 (20:56 +0000)]
Turn preferLowPowerWebGLRendering setting on by default
https://bugs.webkit.org/show_bug.cgi?id=166737
<rdar://problem/29870033>

Reviewed by Dean Jackson.

Temporarily turn preferLowPowerWebGLRendering setting on by default until
we deal better with WebGL content in background tabs.

Source/WebCore:

* page/Settings.in:

Source/WebKit/mac:

* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210372 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUpdate pointer-lock test expectations, enabling passing tests.
commit-queue@webkit.org [Thu, 5 Jan 2017 20:37:07 +0000 (20:37 +0000)]
Update pointer-lock test expectations, enabling passing tests.
https://bugs.webkit.org/show_bug.cgi?id=166656
rdar://problem/29851126

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-05
Reviewed by Alex Christensen.

Several pointer lock tests are passing and are now marked as passing.
pointer-lock/lock-already-locked.html Pass
pointer-lock/lock-element-not-in-dom.html Pass
http/tests/pointer-lock/iframe-sandboxed-allow-pointer-lock.html Pass
http/tests/pointer-lock/iframe-sandboxed-nested-allow-pointer-lock.html Pass
http/tests/pointer-lock/pointerlockelement-different-origin.html Pass
http/tests/pointer-lock/pointerlockelement-same-origin.html Pass
http/tests/pointer-lock/requestPointerLock-can-not-transfer-between-documents.html Pass
http/tests/pointer-lock/iframe-sandboxed.html Pass
http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock.html Pass

* platform/mac/TestExpectations:
* http/tests/pointer-lock/iframe-sandboxed-expected.txt: Updated.
* http/tests/pointer-lock/iframe-sandboxed-nested-disallow-then-allow-pointer-lock-expected.txt: Updated

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210371 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Variation fonts without variations specified are not rendered as if the defau...
mmaxfield@apple.com [Thu, 5 Jan 2017 20:31:28 +0000 (20:31 +0000)]
[Cocoa] Variation fonts without variations specified are not rendered as if the default variations were specified
https://bugs.webkit.org/show_bug.cgi?id=166672
<rdar://problem/29779119>
<rdar://problem/29848883>

Reviewed by Simon Fraser.

CoreText has a bug (<rdar://problem/29859207>) where variation fonts without
a specified variation value are rendered as if the minimum value is specified,
rather than the default value. The solution is to apply default values where
they are omitted.

Test: fast/text/variations/advances.html

* platform/graphics/cocoa/FontCacheCoreText.cpp:
(WebCore::preparePlatformFont):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210370 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMark the dedicated root linebox for trailing floats in empty inlines dirty.
zalan@apple.com [Thu, 5 Jan 2017 20:24:59 +0000 (20:24 +0000)]
Mark the dedicated root linebox for trailing floats in empty inlines dirty.
https://bugs.webkit.org/show_bug.cgi?id=166732
<rdar://problem/29100419>

Reviewed by Antti Koivisto.

Source/WebCore:

We normally attach floating boxes to the last root linebox. However when the floatbox is preceded by a <br>
we generate a dedicated root linebox (TrailingFloatsRootInlineBox) for the floatbox.
When this floatbox is a RenderInline descendant and this RenderInline does not generate lineboxes (it's ancestor RenderBlockFlow does)
we have to make sure that this special root linebox gets marked dirty when the associated floatbox changes.
(Unfortunately through the recursive calls on dirtyLinesFromChangedChild(), we lose the information about
the "changed child" since the inlines propagates the marking logic to the RenderBlockFlow, see FIXME.)

Test: fast/inline/trailing-floats-inline-crash2.html

* rendering/RenderLineBoxList.cpp:
(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

LayoutTests:

* fast/inline/trailing-floats-inline-crash2-expected.txt: Added.
* fast/inline/trailing-floats-inline-crash2.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210369 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Both modern-media-controls/images/iOS modern-media-controls/images/macOS...
commit-queue@webkit.org [Thu, 5 Jan 2017 20:15:27 +0000 (20:15 +0000)]
[Cocoa] Both modern-media-controls/images/iOS modern-media-controls/images/macOS are installed on both platforms
https://bugs.webkit.org/show_bug.cgi?id=163871

Patch by Antoine Quint <graouts@apple.com> on 2017-01-05
Reviewed by Eric Carlson.

We now only copy modern media controls images, if any, for the current platform.

* WebCore.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210368 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Test.html should support globals reportInternalError, reportUnhandledR...
bburg@apple.com [Thu, 5 Jan 2017 20:07:44 +0000 (20:07 +0000)]
Web Inspector: Test.html should support globals reportInternalError, reportUnhandledRejection, reportUncaughtException
https://bugs.webkit.org/show_bug.cgi?id=161358
<rdar://problem/28066446>

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

We have a hodgepodge of redundant code that reports uncaught exceptions in the inspector page.
There is better handling of uncaught exceptions in the inspected page, such as including stack traces.

This patch consolidates a lot of this code and makes it possible to report
unhandled promise rejections, top-level uncaught exceptions, and exceptions
caught in a try-catch block. The formatting and sanitization code for all of
these things is shared and consistent. Finally, some tests have been added to
catch regressions in unhandled rejection/uncaught exception reporting.

* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness): Explicitly set initial flag state here so it's easy to find all flags.

(FrontendTestHarness.prototype.redirectConsoleToTestOutput):
Extract this code to sanitize stack frames and put it in TestHarness. It is used
by other methods that need to print stack frames.

(FrontendTestHarness.prototype.reportUnhandledRejection):
(FrontendTestHarness.prototype.reportUncaughtException):
Added. Sanitize stack trace data so it is deterministic. Log the message to the
original window.console but don't exit early. Sometimes the test page is not
fully loaded if we throw an exception quite early in the test() method, and there's
no harm in not early returning. If we do early return in this case, then a test that
uses reportUncaughtException on purpose may not complete because the call to completeTest()
would be skipped by returning early.

(FrontendTestHarness.prototype.reportUncaughtExceptionFromEvent):
Renamed from reportUncaughtException since the signature of that method suggests
it should have a single exception argument rather than lots of data arguments.

* UserInterface/Test/Test.js: Add globals.

* UserInterface/Test/TestHarness.js:
(TestHarness): Document class flags.
(TestHarness.sanitizeURL):
(TestHarness.sanitizeStackFrame):
(TestHarness.prototype.sanitizeStack):
Extract this code from other parts of the test harness. Make sanitizeStack
an instance method so that there is only one place that needs to check the
'suppressStackTraces' flag.

* UserInterface/Test/TestSuite.js:
(TestSuite.prototype.logThrownObject):
(TestSuite):
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):
(SyncTestSuite.prototype.runTestCases):
(SyncTestSuite):
(TestSuite.messageFromThrownObject): Deleted.
Inline some helpers with only one use-site and consolidate redundant code
for adding an exception and message to the test results.

LayoutTests:

Improve uncaught exception reporting and add some tests to document
new and existing behavior.

* http/tests/inspector/resources/inspector-test.js:
(runTest.runTestMethodInFrontend):
(runTest): Outsource reporting of an uncaught exception while injecting
a method into the frontend. By doing this, we can make the report using
the actual exception object since it doesn't go through window.onerror.

* inspector/unit-tests/async-test-suite-expected.txt:
* inspector/unit-tests/async-test-suite.html:
* inspector/unit-tests/sync-test-suite-expected.txt:
* inspector/unit-tests/sync-test-suite.html:
Rebaseline and force suppression of stack traces, which are not deterministic
across commits due to logging specific lines and columns in TestCombined.js.

* inspector/unit-tests/globals-uncaught-exception-from-timer-callback-expected.txt: Added.
* inspector/unit-tests/globals-uncaught-exception-from-timer-callback.html: Added.
* inspector/unit-tests/globals-uncaught-exception-in-test-function-expected.txt: Added.
* inspector/unit-tests/globals-uncaught-exception-in-test-function.html: Added.
* inspector/unit-tests/globals-uncaught-exception-in-test-suite-expected.txt: Added.
* inspector/unit-tests/globals-uncaught-exception-in-test-suite.html: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-test-function-expected.txt: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-test-function.html: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-test-suite-expected.txt: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-test-suite.html: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-timer-callback-expected.txt: Added.
* inspector/unit-tests/globals-unhandled-rejection-in-timer-callback.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210367 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSkip fast/scrolling/page-cache-back-overflow-scroll-restore.html on iOS simulator.
akling@apple.com [Thu, 5 Jan 2017 19:51:38 +0000 (19:51 +0000)]
Skip fast/scrolling/page-cache-back-overflow-scroll-restore.html on iOS simulator.
<https://webkit.org/b/166736>

* platform/ios-simulator/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210366 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAdd WebCore::URL::protocolHostAndPort
krollin@apple.com [Thu, 5 Jan 2017 19:18:03 +0000 (19:18 +0000)]
Add WebCore::URL::protocolHostAndPort
https://bugs.webkit.org/show_bug.cgi?id=166426

Reviewed by Alex Christensen.

Source/WebCore:

Added to support record/replay mechanism, which needs it in order to
implement fuzzy-matching of URLs that are similar to each other but
that nonetheless come from the same source/host.

Updated TestWebKitAPI/Tests/WebCore/URL.cpp.

* platform/URL.cpp:
(WebCore::URL::protocolHostAndPort):
* platform/URL.h:

Tools:

Add test for protocolHostAndPort.

* TestWebKitAPI/Tests/WebCore/URL.cpp:
(TestWebKitAPI::TEST_F):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210365 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUse WTF::Function instead of std::function in network cache code
antti@apple.com [Thu, 5 Jan 2017 19:10:23 +0000 (19:10 +0000)]
Use WTF::Function instead of std::function in network cache code
https://bugs.webkit.org/show_bug.cgi?id=166721

Reviewed by Andreas Kling.

Use better move-only type. Fix some unnecessary function copies.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::clear):
* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheData.h:
* NetworkProcess/cache/NetworkCacheDataCocoa.mm:
(WebKit::NetworkCache::Data::apply):
* NetworkProcess/cache/NetworkCacheDataSoup.cpp:
(WebKit::NetworkCache::Data::apply):
* NetworkProcess/cache/NetworkCacheFileSystem.cpp:
(WebKit::NetworkCache::traverseDirectory):
* NetworkProcess/cache/NetworkCacheFileSystem.h:
* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
(WebKit::NetworkCache::SpeculativeLoadManager::canRetrieve):
(WebKit::NetworkCache::SpeculativeLoadManager::retrieve):

    Split retrieve() to canRetrieve() and retrieve() functions.
    This avoids the need to copy the completion handler in the caller.

* NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
* NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::ReadOperation::ReadOperation):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
* NetworkProcess/cache/NetworkCacheStorage.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210364 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed build fix after https://trac.webkit.org/changeset/210360
enrica@apple.com [Thu, 5 Jan 2017 18:54:47 +0000 (18:54 +0000)]
Unreviewed build fix after https://trac.webkit.org/changeset/210360

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::performDragOperation):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210363 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoForm validation: Align email validation with the latest HTML specification
cdumez@apple.com [Thu, 5 Jan 2017 18:31:27 +0000 (18:31 +0000)]
Form validation: Align email validation with the latest HTML specification
https://bugs.webkit.org/show_bug.cgi?id=166697
<rdar://problem/29870245>

Reviewed by Alex Christensen.

Source/WebCore:

Align email validation with the latest HTML specification:
- https://html.spec.whatwg.org/#valid-e-mail-address

It particular, the following changes were made:
- The first and last character of the domain now needs to be a letter or a digit
- Parts of the domain can only be 63 characters in length

No new tests, extended existing test.

* html/EmailInputType.cpp:

LayoutTests:

Extended / updated existing layout test to cover behavior changes.

* fast/forms/ValidityState-typeMismatch-email-expected.txt:
* fast/forms/resources/ValidityState-typeMismatch-email.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210361 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSupport File Promise during drag for macOS.
enrica@apple.com [Thu, 5 Jan 2017 18:29:00 +0000 (18:29 +0000)]
Support File Promise during drag for macOS.
https://bugs.webkit.org/show_bug.cgi?id=165204
rdar://problem/19595567

Reviewed by Tim Horton.

Source/WebCore:

Adds the support for handling File Promise type during
drag. DragData now has the knowledge of the NSFilesPromisePboardType and
checks for the data type during drag.

* page/mac/DragControllerMac.mm:
(WebCore::DragController::dragOperation):
* platform/DragData.h:
(WebCore::DragData::setFileNames):
(WebCore::DragData::fileNames):
* platform/mac/DragDataMac.mm:
(WebCore::DragData::containsFiles):
(WebCore::DragData::numberOfFiles):
(WebCore::DragData::asFilenames):
(WebCore::DragData::containsCompatibleContent):
(WebCore::DragData::containsPromise):
(WebCore::DragData::asURL):

Source/WebKit/mac:

Adds support for dropping a File Promise in a WebView.
The implementation uses new File Promise API available in Sierra.

* Misc/WebNSPasteboardExtras.mm:
(+[NSPasteboard _web_dragTypesForURL]):
* WebView/WebView.mm:
(-[WebView performDragOperation:]):

Source/WebKit2:

Adds support for dropping a File Promise in a WKWebView.
The implementation uses new File Promise API available in Sierra.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
* Shared/mac/PasteboardTypes.mm:
(WebKit::PasteboardTypes::forURL):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::createSandboxExtensionsIfNeeded):
(WebKit::WebViewImpl::performDragOperation):
(WebKit::maybeCreateSandboxExtensionFromPasteboard): Deleted.
(WebKit::createSandboxExtensionsForFileUpload): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210360 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Win] Compile error.
pvollan@apple.com [Thu, 5 Jan 2017 18:05:29 +0000 (18:05 +0000)]
[Win] Compile error.
https://bugs.webkit.org/show_bug.cgi?id=166726

Source/JavaScriptCore:

Reviewed by Alex Christensen.

Add include folder.

* CMakeLists.txt:

Source/WebCore:

Reviewed by Alex Christensen.

Add include folder.

* CMakeLists.txt:

Source/WebKit:

Add include folder.

* CMakeLists.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210359 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Win] Archive test result is failing.
pvollan@apple.com [Thu, 5 Jan 2017 17:34:47 +0000 (17:34 +0000)]
[Win] Archive test result is failing.
https://bugs.webkit.org/show_bug.cgi?id=166720

Reviewed by Alex Christensen.

Deleting the layout test result folder is sometimes failing
on Windows. This is not a critical error.

* BuildSlaveSupport/test-result-archive:
(archiveTestResults):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210358 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[SOUP] AddressSanitizer: heap-use-after-free under WTF::String::fromUTF8()
commit-queue@webkit.org [Thu, 5 Jan 2017 17:30:57 +0000 (17:30 +0000)]
[SOUP] AddressSanitizer: heap-use-after-free under WTF::String::fromUTF8()
https://bugs.webkit.org/show_bug.cgi?id=166722

Patch by Milan Crha <mcrha@redhat.com> on 2017-01-05
Reviewed by Alex Christensen.

* platform/soup/PublicSuffixSoup.cpp:
(WebCore::topPrivatelyControlledDomain):
Use a variable to hold UTF-8 version of the domain, because
the soup_tld_get_base_domain() returns a pointer into the passed-in
string, which could be freed due to the temporary object being freed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210357 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove some unnecessary page cache checks in render tree code.
akling@apple.com [Thu, 5 Jan 2017 16:17:22 +0000 (16:17 +0000)]
Remove some unnecessary page cache checks in render tree code.
<https://webkit.org/b/166728>

Reviewed by Antti Koivisto.

There is no render tree in the page cache, so we don't need to be checking
for it in renderer code.

* rendering/RenderElement.cpp:
(WebCore::shouldRepaintForImageAnimation):
(WebCore::RenderElement::newImageAnimationFrameAvailable):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::imageChanged):
* rendering/RenderObject.cpp:
(WebCore::printRenderTreeForLiveDocuments):
(WebCore::printLayerTreeForLiveDocuments):
* rendering/RenderView.cpp:
(WebCore::RenderView::lazyRepaintTimerFired):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoREGRESSION(r210226): overflow:scroll scroll position not restored on back navigation
akling@apple.com [Thu, 5 Jan 2017 16:02:44 +0000 (16:02 +0000)]
REGRESSION(r210226): overflow:scroll scroll position not restored on back navigation
<https://webkit.org/b/166724>

Reviewed by Antti Koivisto.

Source/WebCore:

Before r210226, the render tree being torn down and the document being destroyed
were roughly the same thing, since they would always happen together, from the
render tree's perspective.

Changing this caused us to skip over the code that saves the scroll position
for an element's RenderLayer when going into the page cache. Navigating back to
that page would then scroll the layer to (0,0) instead of the previous position.

The fix is simply to remove the check for documentBeingDestroyed() in ~RenderLayer().
Note that two checks are being removed, there was also a weird "optimization"
to avoid nulling out EventHandler's m_resizeLayer if it points to this layer.
That pointer would eventually get nulled out in EventHandler::clear() anyway,
but it feels better to not let that pointer dangle.

Test: fast/scrolling/page-cache-back-overflow-scroll-restore.html

* rendering/RenderLayer.cpp:
(WebCore::RenderLayer::~RenderLayer):

LayoutTests:

Add a test that navigates back to a page with a scrolled overflow:scroll element.
The test verifies that the scroll position is restored.

* fast/scrolling/page-cache-back-overflow-scroll-restore-expected.txt: Added.
* fast/scrolling/page-cache-back-overflow-scroll-restore.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210329 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoDisable smooth playhead animation for main content media in the Touch Bar
wenson_hsieh@apple.com [Thu, 5 Jan 2017 15:51:39 +0000 (15:51 +0000)]
Disable smooth playhead animation for main content media in the Touch Bar
https://bugs.webkit.org/show_bug.cgi?id=166715
<rdar://problem/29870673>

Reviewed by Eric Carlson.

Passing in a non-zero playback rate to WebPlaybackControlsManager's timing property causes unintended effects
further down the stack. Please see the Radar for more details.

* platform/mac/WebPlaybackSessionInterfaceMac.mm:
(WebCore::WebPlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210328 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoFix iOS build due to missing #include's.
akling@apple.com [Thu, 5 Jan 2017 15:12:03 +0000 (15:12 +0000)]
Fix iOS build due to missing #include's.

* history/CachedFrame.cpp:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210327 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove ChromeClient::needTouchEvents().
akling@apple.com [Thu, 5 Jan 2017 13:47:59 +0000 (13:47 +0000)]
Remove ChromeClient::needTouchEvents().
<https://webkit.org/b/166723>

Rubber-stamped by Antti Koivisto.

Source/WebCore:

Remove this hook since it's a no-op in every port.

* dom/Document.cpp:
(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::didAddTouchEventHandler):
(WebCore::Document::didRemoveTouchEventHandler):
* history/CachedFrame.cpp:
(WebCore::CachedFrameBase::restore):
* loader/EmptyClients.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::transitionToCommitted):
* page/ChromeClient.h:

Source/WebKit/mac:

* WebCoreSupport/WebChromeClient.h:

Source/WebKit/win:

* WebCoreSupport/WebChromeClient.h:

Source/WebKit2:

* WebProcess/WebCoreSupport/WebChromeClient.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210326 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed test gardening.
pvollan@apple.com [Thu, 5 Jan 2017 13:14:05 +0000 (13:14 +0000)]
Unreviewed test gardening.

Update test expectations on Windows for failing tests. These failures are tracked in
https://bugs.webkit.org/show_bug.cgi?id=160447.

* platform/win/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210325 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Minibrowser: Add printing support
tpopela@redhat.com [Thu, 5 Jan 2017 12:07:38 +0000 (12:07 +0000)]
[GTK] Minibrowser: Add printing support
https://bugs.webkit.org/show_bug.cgi?id=165298

Open a print dialog when the Ctrl + P shortcut is pressed. If there is
an error during the print, it's printed on the console.

Reviewed by Michael Catanzaro.

* MiniBrowser/gtk/BrowserWindow.c:
(webKitPrintOperationFailedCallback):
(printPage):
(browser_window_init):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210324 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove PassRefPtr use from "bindings/scripts", "svg", "testing", and "workers"
darin@apple.com [Thu, 5 Jan 2017 08:46:10 +0000 (08:46 +0000)]
Remove PassRefPtr use from "bindings/scripts", "svg", "testing", and "workers"
https://bugs.webkit.org/show_bug.cgi?id=166718

Reviewed by Alex Christensen.

* bindings/scripts/test/JS/JSFloat64Array.cpp: Removed. Stale unused test
result expectation file.
* bindings/scripts/test/JS/JSFloat64Array.h: Ditto.

* svg/SVGElement.cpp:
(WebCore::SVGElement::removeEventListener): Fix comment that incorrectly
mentions PassRefPtr.

* testing/Internals.cpp:
(WebCore::Internals::computedStyleIncludingVisitedInfo): Return Ref instead
of RefPtr.
(WebCore::Internals::serializeObject): Ditto.
(WebCore::Internals::deserializeBuffer): Ditto.
(WebCore::Internals::observeGC): Streamlined code a bit.
* testing/Internals.h: Updated for above changes.
* testing/Internals.idl: Marked various function results as nullable.

* workers/DedicatedWorkerThread.cpp:
(WebCore::DedicatedWorkerThread::createWorkerGlobalScope): Take a RefPtr&&
instead of a PassRefPtr.
* workers/DedicatedWorkerThread.h: Updated for above change.

* workers/Worker.cpp:
(WebCore::Worker::Worker): Passs a reference to WorkerGlobalScopeProxy::create.
(WebCore::Worker::~Worker): Updated since m_contentProxy is a reference.
(WebCore::Worker::postMessage): Ditto.
(WebCore::Worker::terminate): Ditto.
(WebCore::Worker::hasPendingActivity): Ditto.
(WebCore::Worker::notifyNetworkStateChange): Ditto.
(WebCore::Worker::notifyFinished): Ditto.
* workers/Worker.h: Made m_contextProxy a reference rather than a pointer.

* workers/WorkerGlobalScopeProxy.h: Reduced includes. Made destructor
protected instead of public since this class destroys itself.

* workers/WorkerMessagingProxy.cpp:
(WebCore::WorkerGlobalScopeProxy::create): Take and return a reference.
(WebCore::WorkerMessagingProxy::WorkerMessagingProxy): Moved most initialization
to the calass definition. Take a reference instead of a pointer.
(WebCore::WorkerMessagingProxy::startWorkerGlobalScope): Use auto.
(WebCore::WorkerMessagingProxy::workerThreadCreated): Take a reference
rather than a PassRefPtr.
* workers/WorkerMessagingProxy.h: Updated for above changes.
(WebCore::WorkerMessagingProxy::askedToTerminate): Deleted.
(WebCore::WorkerMessagingProxy::workerObject): Deleted.

* workers/WorkerThread.h: Take a RefPtr&& instead of a PassRefPtr.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210323 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[EFL] Fully update TestExpectations
gyuyoung.kim@webkit.org [Thu, 5 Jan 2017 08:08:11 +0000 (08:08 +0000)]
[EFL] Fully update TestExpectations

Unreviewed EFL gardening.

EFL layout test has been broken too long time. Besides many tests have not maintained
as well. Now many tests are passingi, or some tests are being failed, crash, or timeout.
To update current test results, this patch updates all test results in TextExpectation.

After this update, I hope to track layout test failures efficiently.

* platform/efl/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210322 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed. Addressing post-review comments after r21005.
carlosgc@webkit.org [Thu, 5 Jan 2017 07:27:27 +0000 (07:27 +0000)]
Unreviewed. Addressing post-review comments after r21005.

Simplify cairo_glyph_t initialization as suggested by Said.

* platform/graphics/cairo/FontCairo.cpp:
(WebCore::CairoGlyphToPathTranslator::path):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210321 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[css-grid] Fix crash clamping grid lines
rego@igalia.com [Thu, 5 Jan 2017 07:03:09 +0000 (07:03 +0000)]
[css-grid] Fix crash clamping grid lines
https://bugs.webkit.org/show_bug.cgi?id=166637

Reviewed by Darin Adler.

Source/WebCore:

Avoid issues with very big values for the grid lines clamping them on GridPosition.

Test: fast/css-grid-layout/grid-position-crash.html

* rendering/style/GridArea.h: Move kGridMaxTracks definition to GridPosition.
* rendering/style/GridPosition.h:
(WebCore::GridPosition::setExplicitPosition): Use new setIntegerPosition().
(WebCore::GridPosition::setSpanPosition): Ditto.
(WebCore::GridPosition::setIntegerPosition): Clamp the position using kGridMaxTracks.

Tools:

Creates new unit test to verify that the maximum tracks limit
is used in GridPosition too.

* TestWebKitAPI/PlatformEfl.cmake:
* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWin.cmake:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/GridPosition.cpp: Added.
(TestWebKitAPI::TEST):

LayoutTests:

* fast/css-grid-layout/grid-position-crash-expected.txt: Added.
* fast/css-grid-layout/grid-position-crash.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210320 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove PassRefPtr use from the "html" directory, other improvements
darin@apple.com [Thu, 5 Jan 2017 06:45:48 +0000 (06:45 +0000)]
Remove PassRefPtr use from the "html" directory, other improvements
https://bugs.webkit.org/show_bug.cgi?id=166635

Reviewed by Alex Christensen.

Source/WebCore:

* CMakeLists.txt: Removed the duplicate copies of all the WebGL-specific files
in the main list of source files; there is no value in listing them twice.
Replaced WebGLGetInfo.cpp with WebGLAny.cpp.

* Modules/mediasource/MediaSource.cpp:
(WebCore::MediaSource::removeSourceBuffer): Updates since the tracks functions
return references now.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateFastSeekTimeForMediaTime): Removed
unneeded SourceBufferPrivate* argument.
(WebCore::SourceBuffer::appendBufferTimerFired): Ditto.
(WebCore::SourceBuffer::sourceBufferPrivateAppendComplete): Ditto.
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveRenderingError): Ditto.
(WebCore::SourceBuffer::videoTracks): Return a reference rather than a pointer.
(WebCore::SourceBuffer::audioTracks): Ditto.
(WebCore::SourceBuffer::textTracks): Ditto.
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveInitializationSegment):
Removed unneeded SourceBufferPrivate* argument.
(WebCore::SourceBuffer::validateInitializationSegment): Updated since tracks
functions now return a pointer.
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample): Removed unneeded
SourceBufferPrivate* argument.
(WebCore::SourceBuffer::sourceBufferPrivateHasAudio): Ditto.
(WebCore::SourceBuffer::sourceBufferPrivateHasVideo): Ditto.
(WebCore::SourceBuffer::videoTrackSelectedChanged): Take a reference rather than
a pointer.
(WebCore::SourceBuffer::audioTrackEnabledChanged): Ditto.
(WebCore::SourceBuffer::textTrackModeChanged): Ditto.
(WebCore::SourceBuffer::textTrackAddCue): Ditto.
(WebCore::SourceBuffer::textTrackAddCues): Ditto.
(WebCore::SourceBuffer::textTrackRemoveCue): Ditto.
(WebCore::SourceBuffer::textTrackRemoveCues): Ditto.
(WebCore::SourceBuffer::textTrackKindChanged): Ditto.
(WebCore::SourceBuffer::sourceBufferPrivateDidBecomeReadyForMoreSamples): Ditto.
(WebCore::SourceBuffer::provideMediaData): Ditto.
(WebCore::SourceBuffer::reenqueueMediaForTime): Ditto.
* Modules/mediasource/SourceBuffer.h: Updated for above changes.

* WebCore.xcodeproj/project.pbxproj: Replaced WebGLGetInfo with WebGLAny.

* bindings/js/JSCanvasRenderingContext2DCustom.cpp:
(WebCore::toHTMLCanvasStyle): Removed explicit cast to CanvasStyle and unneeded
conversion to a pointer since CanvasStyle constructors now take references.

* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginInstance): Updated since bindingsInstance now returns a raw pointer.
(WebCore::pluginScriptObject): Ditto.

* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::toJS): Moved to WebGLAny.h/cpp.
(WebCore::JSWebGL2RenderingContext::getIndexedParameter): Updated since the toJS
function in WebGLAny.h takes references, not pointers.

* bindings/js/JSWebGLRenderingContextBaseCustom.cpp: Removed quite a few unneeded
includes and got rid of a lot of unneeded JSC prefixes.
(WebCore::toJS): Moved to WebGLAny.h/cpp.
(WebCore::toJSNewlyCreated):
(WebCore::objectParameter): Renamed from getObjectParameter and also changed to
take a pointer to member function so we don't need an enum and a switch statement.
(WebCore::toJS): Changed to take references rather than pointers.
(WebCore::JSWebGLRenderingContextBase::getAttachedShaders): Use a modern for loop.
(WebCore::JSWebGLRenderingContextBase::getBufferParameter): Use objectParameter.
(WebCore::JSWebGLRenderingContextBase::getRenderbufferParameter): Ditto.
(WebCore::JSWebGLRenderingContextBase::getVertexAttrib): Ditto.
(WebCore::toNumberVector): Renamed from toVector, since this is specifically for
vectors of numbers. Use uncheckedAppend instead of assignment.
(WebCore::functionForUniform): Marked this inline.
(WebCore::dataFunctionf): Updated for above changes.
(WebCore::dataFunctioni): Ditto.
(WebCore::dataFunctionMatrix): Ditto.

* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::fetch): Moved assertions to the top of the function.
Also added a FIXME because it's unclear why these assertions are correct. Updated
to use downcastScriptElement instead of toScriptElementIfPossible.

* dom/Document.h: Sorted list of forward-declared classes. Removed duplicate
forward declaration of ScriptModuleLoader.

* dom/PendingScript.cpp:
(WebCore::PendingScript::create): Take a ScriptElement instead of an Element.
(WebCore::PendingScript::PendingScript): Ditto.
(WebCore::PendingScript::loadableScript): Moved inline to header and made inline.
(WebCore::PendingScript::setClient): Take a reference instead of a pointer.
* dom/PendingScript.h: UPdated for above changes.

* dom/ScriptElement.cpp:
(WebCore::ScriptElement::prepareScript): Pass a reference instead of a pointer.
(WebCore::ScriptElement::ref): Added. Forwards ref/deref to the underlying element
so we can use Ref and RefPtr with this class.
(WebCore::ScriptElement::deref): Ditto.
(WebCore::isScriptElement): Added. Replaces one of the two uses of
toScriptElementIfPossible, and is similar in style to is<Element>.
(WebCore::downcastScriptElement): Ditto, but for downcast.
* dom/ScriptElement.h: Updated for above changes.

* dom/ScriptRunner.cpp:
(WebCore::ScriptRunner::queueScriptForExecution): Take reference rather than
pointer, and pass ScriptElement rather than Element.
(WebCore::ScriptRunner::notifyFinished): Ditto.
(WebCore::ScriptRunner::timerFired): Ditto.
* dom/ScriptRunner.h: Updated for above changes.

* html/FileInputType.cpp:
(WebCore::FileInputType::files): Updated since m_fileList is a Ref.
(WebCore::FileInputType::createFileList): Updated to return a Ref instead of
a PassRefPtr. Also use reserveInitialCapacity/uncheckedAppend.
(WebCore::FileInputType::requestIcon): Updated since the updateRendering
function is now called iconLoaded. Also use references instead of pointers.
(WebCore::FileInputType::setFiles): Take a RefPtr&& insted of a PassRefPtr.
Also put some conditional code inside an #if.
(WebCore::FileInputType::filesChosen): Updated for function name change.
(WebCore::FileInputType::iconLoaded): Renamed from updateRendering.
Changed argument to RefPtr&& from PassRefPtr.
(WebCore::FileInputType::defaultToolTip): Got rid of unneeded local variable
and used the correct type, unsigned, rather than size_t.
* html/FileInputType.h: Updated for the above changes, use final instead
of override, and use Ref instead of RefPtr.

* html/HTMLElement.cpp:
(WebCore::HTMLElement::form): Renamed from virtualForm.
* html/HTMLElement.h: Replaced the form/virtualForm pair of functions with
just a form function. The old design dates back before we had "final" for
virtual functions, and now we can just use that instead.

* html/HTMLFormControlElement.cpp:
(WebCore::HTMLFormControlElement::virtualForm): Deleted.
* html/HTMLFormControlElement.h: Mark the form function final, since it's
now both an inline function in this class, and an override of a virtual
function inherited from the base class. Deleted the virtualForm function.

* html/HTMLInputElement.cpp:
(WebCore::HTMLInputElement::defaultEventHandler): Removed use of the
formForSubmission function, which was just another way to get the same
thing as the form function; perhaps they were different in the past.
(WebCore::HTMLInputElement::setFiles): Take a RefPtr&& rather than a PassRefPtr.
* html/HTMLInputElement.h: Updated for the above.

* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::control): Made this const.
(WebCore::HTMLLabelElement::form): Made this const, so it can be used to
override the const form function from the base class.
* html/HTMLLabelElement.h: Marked the form function final, since we want it
to override the form function inherited from HTMLElement.

* html/HTMLLegendElement.cpp:
(WebCore::HTMLLegendElement::form): Renamed from virtualForm.
* html/HTMLLegendElement.h: Override form instead of virtualForm and mark it final
This makes things more efficient if someone calls form directly on this class;
before it would make an unnecessary virtual function call.

* html/HTMLMediaElement.cpp:
(WebCore::TrackDisplayUpdateScope::TrackDisplayUpdateScope): Take a reference
rather than a pointer.
(WebCore::TrackDisplayUpdateScope::~TrackDisplayUpdateScope): Ditto.
(WebCore::eventTimeCueCompare): Compare the cues the same way the cue list would
rather than using cueIndex.
(WebCore::HTMLMediaElement::audioTrackEnabledChanged): Take a reference.
(WebCore::HTMLMediaElement::textTrackModeChanged): Ditto.
(WebCore::HTMLMediaElement::videoTrackSelectedChanged): Ditto.
(WebCore::HTMLMediaElement::textTrackKindChanged): Ditto.
(WebCore::HTMLMediaElement::textTrackAddCues): Ditto.
(WebCore::HTMLMediaElement::textTrackRemoveCues): Ditto.
(WebCore::HTMLMediaElement::textTrackAddCue): Ditto.
(WebCore::HTMLMediaElement::textTrackRemoveCue): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Pass references.
(WebCore::HTMLMediaElement::mediaPlayerDidAddTextTrack): Ditto.
(WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack): Ditto.
(WebCore::HTMLMediaElement::removeTextTrack): Ditto.
(WebCore::HTMLMediaElement::forgetResourceSpecificTracks): Ditto.
(WebCore::HTMLMediaElement::setController): Take a RefPtr&& instead of PassRefPtr.
* html/HTMLMediaElement.h: Updated for above changes.

* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::virtualForm): Deleted.
* html/HTMLObjectElement.h: Made the form function inline and final, which
achieves the same thing we did before with using, but without requiring the
separate virtualForm function, now deleted.

* html/HTMLOptionElement.cpp:
(WebCore::HTMLOptionElement::collectOptionInnerText): Use isScriptElement
instead of toScriptElementIfPossible.

* html/HTMLPlugInElement.cpp:
(WebCore::HTMLPlugInElement::bindingsInstance): Renamed from getInstance and
changed the return type to a raw pointer.
* html/HTMLPlugInElement.h: Updated for the above changes. Also changed the
updateSnapshot function to take a raw pointer instead of a PassRefPtr.

* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::createElementRenderer): Pass a pointer
to updateSnapshot.
(WebCore::HTMLPlugInImageElement::updateSnapshot): Updated to take a raw
pointer instead of a PassRefPtr.
* html/HTMLPlugInImageElement.h: Updated for above changes.

* html/HTMLScriptElement.h: Added using to resolve the ambiguity with the
ref/deref from HTMLElement and from ScriptElement.

* html/HTMLTextFormControlElement.cpp:
(WebCore::HTMLTextFormControlElement::selection): Return a RefPtr instead
of a PassRefPtr.
* html/HTMLTextFormControlElement.h: Updated for above changes.

* html/HTMLTrackElement.cpp:
(WebCore::HTMLTrackElement::textTrackKindChanged): Take a reference.
(WebCore::HTMLTrackElement::textTrackModeChanged): Ditto.
(WebCore::HTMLTrackElement::textTrackAddCues): Ditto.
(WebCore::HTMLTrackElement::textTrackRemoveCues): Ditto.
(WebCore::HTMLTrackElement::textTrackAddCue): Ditto.
(WebCore::HTMLTrackElement::textTrackRemoveCue): Ditto.
* html/HTMLTrackElement.h: Updated for above changes.

* html/InputType.cpp:
(WebCore::InputType::formForSubmission): Deleted.
(WebCore::InputType::setFiles): Take a RefPtr&& instead of a PassRefPtr.
* html/InputType.h: Updated for above changes.

* html/PluginDocument.cpp:
(WebCore::PluginDocumentParser::createDocumentStructure): Pass a reference.
(WebCore::PluginDocument::setPluginElement): Take a reference rather than
a PassRefPtr.
* html/PluginDocument.h: Updated for above changes.

* html/canvas/CanvasRenderingContext2D.cpp:
(WebCore::CanvasRenderingContext2D::setStrokeStyle): Pass a reference.
(WebCore::CanvasRenderingContext2D::setFillStyle): Ditto.
(WebCore::CanvasRenderingContext2D::drawTextInternal): Ditto.

* html/canvas/CanvasStyle.cpp:
(WebCore::CanvasStyle::CanvasStyle): Rewrite all constructors to use the
m_style variant instead of separate m_type and other data members. Also
change from PassRefPtr to a reference.
(WebCore::CanvasStyle::createFromString): Update to use the variant.
(WebCore::CanvasStyle::createFromStringWithOverrideAlpha): Ditto.
(WebCore::CanvasStyle::isEquivalentColor): Ditto.
(WebCore::CanvasStyle::isEquivalentRGBA): Ditto.
(WebCore::CanvasStyle::isEquivalentCMYKA): Ditto.
(WebCore::CanvasStyle::CanvasStyle): Deleted copy constructor; the compiler
can now generate a correct copy or move constructor.
(WebCore::CanvasStyle::~CanvasStyle): Deleted. Compiler generates this
properly now without help from us.
(WebCore::CanvasStyle::operator=): Deleted. The compiler can now generate
a correct copy of move assignment operator.
(WebCore::CanvasStyle::applyStrokeColor): Updated to take a reference and
use the variant.
(WebCore::CanvasStyle::applyFillColor): Ditto.

* html/canvas/CanvasStyle.h: Redid this class to use a variant instead of
a type enumeration and a union.

* html/canvas/OESVertexArrayObject.cpp:
(WebCore::OESVertexArrayObject::createVertexArrayOES): Updated use of enum
since it's now an enum class.

* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::WebGL2RenderingContext): Use Ref&& instead of
RefPtr&& for the GraphicsContext3D.
(WebCore::WebGL2RenderingContext::initializeVertexArrayObjects): Updated enum
and also use references.
(WebCore::WebGL2RenderingContext::getInternalformatParameter): Use nullptr to
return null rather than the old idiom (default-constructed WebGLGetInfo).
(WebCore::WebGL2RenderingContext::texStorage2D): Ditto.
(WebCore::WebGL2RenderingContext::getQueryParameter): Ditto.
(WebCore::WebGL2RenderingContext::getSamplerParameter): Ditto.
(WebCore::WebGL2RenderingContext::getSyncParameter): Ditto.
(WebCore::WebGL2RenderingContext::getIndexedParameter): Ditto.
(WebCore::WebGL2RenderingContext::getActiveUniformBlockParameter): Ditto.
(WebCore::WebGL2RenderingContext::getActiveUniformBlockName): Ditto.
(WebCore::WebGL2RenderingContext::createVertexArray): Updated enum and also
use reference.
(WebCore::WebGL2RenderingContext::getExtension): Rearranged logic in three ways:
(1) Moved checks for whether an extension is supported inside the case for that
extension, rather than combining the extension name check with the extensions
enabled check. (2) Used the new enableSupportedExtension function to simplify
many of the checks to avoid repeating the extension name twice. (3) Changed the
idiom so we set the pointers to nullptr explicitly, preparing for a future where
we might make the extension pointers use std::optional so we can cache a negative
for each extension too, not just a positive result.
(WebCore::WebGL2RenderingContext::getSupportedExtensions): Use ASCIILiteral.
(WebCore::WebGL2RenderingContext::getFramebufferAttachmentParameter): Use nullptr
as above. For non-null types, return the object without converting, letting the
WebGLAny class handle things, except for enumerations, which we need to explicitly
static_cast to an integral type, and things that will be stored in the variant in
a RefPtr, where we use makeRefPtr.
(WebCore::WebGL2RenderingContext::validateFramebufferFuncParameters):
Simplified and clarified the handling of COLOR_ATTACHMENT.
(WebCore::WebGL2RenderingContext::getParameter): Return WebGLAny, same idiom as
described above for getFramebufferAttachmentParameter.
* html/canvas/WebGL2RenderingContext.h: Updated for above changes.

* html/canvas/WebGLAny.cpp: Added.
(WebCore::toJS): Handles conversion to JavaScript types. This function is based
on the existing toJS functions from the two classes that were using WebGLGetInfo.
Eventually we can probably just get the bindings to automatically generate this,
but there is some work to do to get to that point.
* html/canvas/WebGLAny.h: Added. This type, a variant, replaces the WebGLGetInfo
class. Also includes the toJS function, which is the real point of this type, since
it's about returning a variant mapped appropriately to JavaScript types.

* html/canvas/WebGLContextGroup.cpp:
(WebCore::WebGLContextGroup::getAGraphicsContext3D): Changed to return a reference.
Droped unnecessary local variable with a long type name.
(WebCore::WebGLContextGroup::addContext): Take a reference.
(WebCore::WebGLContextGroup::removeContext): Ditto.
(WebCore::WebGLContextGroup::removeObject): Ditto.
(WebCore::WebGLContextGroup::addObject): Ditto.
(WebCore::WebGLContextGroup::detachAndRemoveAllObjects): Dropped unnecessary
local variable with a long type name.
* html/canvas/WebGLContextGroup.h: Updated for above changes.

* html/canvas/WebGLContextObject.cpp:
(WebCore::WebGLContextObject::~WebGLContextObject): Pass references.
(WebCore::WebGLContextObject::detachContext): Ditto.

* html/canvas/WebGLGetInfo.cpp: Removed.
* html/canvas/WebGLGetInfo.h: Removed.

* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::WebGLRenderingContext): Take a Ref&& instead
of as PassRefPtr.
(WebCore::WebGLRenderingContext::initializeVertexArrayObjects): Updated enum
and also use references.
(WebCore::WebGLRenderingContext::getExtension): Rearranged logic in three ways:
(1) Moved checks for whether an extension is supported inside the case for that
extension, rather than combining the extension name check with the extensions
enabled check. (2) Used the new enableSupportedExtension function to simplify
many of the checks to avoid repeating the extension name twice. (3) Changed the
idiom so we set the pointers to nullptr explicitly, preparing for a future where
we might make the extension pointers use std::optional so we can cache a negative
for each extension too, not just a positive result.
(WebCore::WebGLRenderingContext::getSupportedExtensions): Use ASCIILiteral.
(WebCore::WebGLRenderingContext::getFramebufferAttachmentParameter): Use nullptr
as above. For non-null types, return the object without converting, letting the
WebGLAny class handle things, except for enumerations, which we need to explicitly
static_cast to an integral type, and things that will be stored in the variant in
a RefPtr, where we use makeRefPtr.
(WebCore::WebGLRenderingContext::validateFramebufferFuncParameters):
Simplified and clarified the handling of COLOR_ATTACHMENT adding a FIXME about
something questionable.
(WebCore::WebGLRenderingContext::getParameter): Return WebGLAny, same idiom as
described above for getFramebufferAttachmentParameter.
* html/canvas/WebGLRenderingContext.h: Updated for above changes.

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create): Updated to pass references
instead of pointers in a couple cases
(WebCore::WebGLRenderingContextBase::WebGLRenderingContextBase): Changed graphics
context argument type from RefPtr&& to Ref&&. Also moved initialization of scalars
from the constructor to the class definition.
(WebCore::WebGLRenderingContextBase::~WebGLRenderingContextBase): Pass a reference.
(WebCore::WebGLRenderingContextBase::createBuffer): Pass a reference instead of a pointer.
(WebCore::WebGLRenderingContextBase::createFramebuffer): Ditto.
(WebCore::WebGLRenderingContextBase::createTexture): Ditto.
(WebCore::WebGLRenderingContextBase::createProgram): Ditto.
(WebCore::WebGLRenderingContextBase::createRenderbuffer): Ditto.
(WebCore::WebGLRenderingContextBase::createShader): Ditto.
(WebCore::WebGLRenderingContextBase::deleteBuffer): Ditto.
(WebCore::WebGLRenderingContextBase::getBufferParameter): Update to use WebGLAny.
(WebCore::WebGLRenderingContextBase::getProgramParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getRenderbufferParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getShaderParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getTexParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getUniform): Ditto.
(WebCore::WebGLRenderingContextBase::getVertexAttrib): Ditto.
(WebCore::WebGLRenderingContextBase::getVertexAttribOffset): Removed unnneed
type casts.
(WebCore::WebGLRenderingContextBase::vertexAttribPointer): Pass a reference.
(WebCore::WebGLRenderingContextBase::removeSharedObject): Take a reference.
(WebCore::WebGLRenderingContextBase::addSharedObject): Ditto.
(WebCore::WebGLRenderingContextBase::removeContextObject): Ditto.
(WebCore::WebGLRenderingContextBase::addContextObject): Ditto.
(WebCore::WebGLRenderingContextBase::getBooleanParameter): Changed return type;
connversion to WebGLAny can happen at the point of use.
(WebCore::WebGLRenderingContextBase::getBooleanArrayParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getFloatParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getIntParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getUnsignedIntParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getInt64Parameter): Ditto.
(WebCore::WebGLRenderingContextBase::getWebGLFloatArrayParameter): Ditto.
(WebCore::WebGLRenderingContextBase::getWebGLIntArrayParameter): Ditto.
(WebCore::WebGLRenderingContextBase::validateBufferDataParameters): Use
optional to simplify logic and get rid of a boolean.
(WebCore::WebGLRenderingContextBase::enableSupportedExtension): Added.
Helper used by the getExtension functions.
* html/canvas/WebGLRenderingContextBase.h: Updated for the above changes.
Also changed setBoundVertexArrayObject to take a raw pointer instead of
as PassRefPtr.

* html/canvas/WebGLSharedObject.cpp:
(WebCore::WebGLSharedObject::~WebGLSharedObject): Pass a reference.
(WebCore::WebGLSharedObject::detachContextGroup): Ditto.
(WebCore::WebGLSharedObject::getAGraphicsContext3D): Updated since the
underlying getAGraphicsContext3D function now returns a reference.

* html/canvas/WebGLSharedObject.h: Removed many unused "is" virtual functions.
* html/canvas/WebGLTransformFeedback.h: Ditto.

* html/canvas/WebGLVertexArrayObject.cpp:
(WebCore::WebGLVertexArrayObject::create): Updated for new type enumeration.
(WebCore::WebGLVertexArrayObject::WebGLVertexArrayObject): Ditto.
(WebCore::WebGLVertexArrayObject::deleteObjectImpl): Ditto.
* html/canvas/WebGLVertexArrayObject.h: Updated for above changes.

* html/canvas/WebGLVertexArrayObjectBase.cpp:
(WebCore::WebGLVertexArrayObjectBase::WebGLVertexArrayObjectBase): Updated for new
type enumeration and moved initialization to class definition.
(WebCore::WebGLVertexArrayObjectBase::setElementArrayBuffer): Changed argument to
raw pointer instead of PassRefPtr.
(WebCore::WebGLVertexArrayObjectBase::setVertexAttribState): Changed argument to
reference instead of PassRefPtr.
(WebCore::WebGLVertexArrayObjectBase::unbindBuffer): Changed arugment type to
reference instead of PassRefPtr.
(WebCore::WebGLVertexArrayObjectBase::setVertexAttribDivisor): Removed unneeded
local variable.
* html/canvas/WebGLVertexArrayObjectBase.h: Updated for above changes.
Replaced VAOType with Type. Used class member initialization.

* html/canvas/WebGLVertexArrayObjectOES.cpp:
(WebCore::WebGLVertexArrayObjectOES::create): Updated for new type enumeration.
(WebCore::WebGLVertexArrayObjectOES::WebGLVertexArrayObjectOES): Ditto.
(WebCore::WebGLVertexArrayObjectOES::~WebGLVertexArrayObjectOES) Ditto.:
(WebCore::WebGLVertexArrayObjectOES::deleteObjectImpl): Ditto.
* html/canvas/WebGLVertexArrayObjectOES.h: Updated for above changes.

* html/forms/FileIconLoader.cpp:
(WebCore::FileIconLoader::iconLoaded): Renamed from notifyFinished. Also changed
the name of the function this calls to iconLoaded. Changed the arguemnt to
RefPtr&& instead of PassRefPtr.
* html/forms/FileIconLoader.h: Updated for above changes.

* html/parser/HTMLConstructionSite.cpp:
(WebCore::HTMLConstructionSite::attachLater): Use isScriptElement instead of
toScriptElementIfPossible.
(WebCore::HTMLConstructionSite::insertForeignElement): Ditto.

* html/parser/HTMLDocumentParser.cpp:
(WebCore::HTMLDocumentParser::runScriptsForPausedTreeBuilder): Pass script
element as a Ref rather than RefPtr.
(WebCore::HTMLDocumentParser::watchForLoad): Pass a reference instead of a pointer.

* html/parser/HTMLScriptRunner.cpp:
(WebCore::HTMLScriptRunner::executeParsingBlockingScript): Deleted. Moved the code
into the single call site, execute ParsingBlockingScripts.
(WebCore::HTMLScriptRunner::executePendingScriptAndDispatchEvent): Changed argument
type to a reference from a RefPtr; this funtion was not taking ownership. Also remove
call to toScriptElementIfPossible,
since pending scripts now contains script elements already.
(WebCore::HTMLScriptRunner::execute): Changed argument type to Ref<ScriptElement>&&
from PassRefPtr<Element>.
(WebCore::HTMLScriptRunner::executeParsingBlockingScripts): Moved code here from
executeParsingBlockingScript. Also pass a reference.
(WebCore::HTMLScriptRunner::executeScriptsWaitingForParsing): Pass a reference.
(WebCore::requestPendingScript): Changed argument type to ScriptElement& from
Element*.
(WebCore::HTMLScriptRunner::requestParsingBlockingScript): Ditto.
(WebCore::HTMLScriptRunner::requestDeferredScript): Ditto.
(WebCore::HTMLScriptRunner::runScript): Ditto.
* html/parser/HTMLScriptRunner.h: Updated for above changes.

* html/parser/HTMLTreeBuilder.cpp:
(WebCore::HTMLTreeBuilder::takeScriptToProcess): Changed return type from
RefPtr<Element> to RefPtr<ScriptElement>.
(WebCore::HTMLTreeBuilder::processEndTag): Downcast the script element to
HTMLScriptElement so we can store it as a ScriptElement.
(WebCore::HTMLTreeBuilder::processTokenInForeignContent): Downcast the script
element to SVGScriptElement so we can store it as a script element.
* html/parser/HTMLTreeBuilder.h: Updated for above changes. Changed the type
of m_scriptToProcess to RefPtr<ScriptElement>.

* html/parser/TextDocumentParser.cpp: Added now-needed include.

* html/parser/XSSAuditorDelegate.cpp:
(WebCore::XSSAuditorDelegate::generateViolationReport): Changed return type
to Ref from PassRefPtr.
* html/parser/XSSAuditorDelegate.h: Updated for above.

* html/track/AudioTrack.cpp:
(WebCore::AudioTrack::AudioTrack): Take references.
(WebCore::AudioTrack::setPrivate): Ditto.
(WebCore::AudioTrack::setEnabled): Removed redundant code to do what the
private setEnabled function is already going to do.
(WebCore::AudioTrack::inbandTrackIndex): Removed assertion since m_private
is now a Ref rather than RefPtr.
(WebCore::AudioTrack::enabledChanged): Added an early exit so we will only
call audioTrackEnabledChanged if m_enabled is actually changing. Also removed
the unneeded track private argument.
(WebCore::AudioTrack::idChanged): Ditto.
(WebCore::AudioTrack::labelChanged): Ditto.
(WebCore::AudioTrack::languageChanged): Ditto.
(WebCore::AudioTrack::willRemove): Ditto.
* html/track/AudioTrack.h: Updated for above changes.

* html/track/InbandDataTextTrack.cpp:
(WebCore::InbandDataTextTrack::addDataCue): Removed inband text track private
argument. Use contains instead of find/end.
(WebCore::InbandDataTextTrack::updateDataCue): Ditto. Use get instead of find/end.
(WebCore::InbandDataTextTrack::removeDataCue): Ditto.
* html/track/InbandDataTextTrack.h: Updated for above changes.

* html/track/InbandGenericTextTrack.cpp:
(WebCore::InbandGenericTextTrack::InbandGenericTextTrack): Take references.
(WebCore::InbandGenericTextTrack::create): Ditto.
(WebCore::InbandGenericTextTrack::updateCueFromCueData): Ditto.
(WebCore::InbandGenericTextTrack::addGenericCue): Ditto. Also removed unused
track private argument.
(WebCore::InbandGenericTextTrack::updateGenericCue): Ditto.
(WebCore::InbandGenericTextTrack::removeGenericCue): Ditto.
(WebCore::InbandGenericTextTrack::parseWebVTTCueData): Ditto.
(WebCore::InbandGenericTextTrack::parseWebVTTFileHeader): Ditto.
(WebCore::InbandGenericTextTrack::newRegionsParsed): Pass a reference.
* html/track/InbandGenericTextTrack.h: Updated for above changes.

* html/track/InbandTextTrack.cpp:
(WebCore::InbandTextTrack::create): Return a Ref instead of a PassRefPtr. Take
references.
(WebCore::InbandTextTrack::InbandTextTrack): Ditto.
(WebCore::InbandTextTrack::setPrivate): Take a reference instead of a PassRefPtr.
(WebCore::InbandTextTrack::isClosedCaptions): Removed check for null since m_private
is now a Ref and so never null.
(WebCore::InbandTextTrack::isSDH): Ditto.
(WebCore::InbandTextTrack::containsOnlyForcedSubtitles): Ditto.
(WebCore::InbandTextTrack::isMainProgramContent): Ditto.
(WebCore::InbandTextTrack::isEasyToRead): Ditto.
(WebCore::InbandTextTrack::inbandTrackIndex): Ditto.
(WebCore::InbandTextTrack::inBandMetadataTrackDispatchType): Ditto.
(WebCore::InbandTextTrack::idChanged): Removed unneeded track private argument.
(WebCore::InbandTextTrack::labelChanged): Ditto.
(WebCore::InbandTextTrack::languageChanged): Ditto.
(WebCore::InbandTextTrack::willRemove): Ditto.
(WebCore::InbandTextTrack::updateKindFromPrivate): Improved switch statement
by removing default so we get a warning if we forget to handle a kind value.
(WebCore::InbandTextTrack::startTimeVariance): Removed check for null.
* html/track/InbandTextTrack.h: Updated for above changes. Changed m_private from
a RefPtr to a Ref.

* html/track/InbandWebVTTTextTrack.cpp:
(WebCore::InbandWebVTTTextTrack::InbandWebVTTTextTrack): Take references.
(WebCore::InbandWebVTTTextTrack::create): Ditto.
(WebCore::InbandWebVTTTextTrack::parseWebVTTCueData): Removed unneeded track
private arguemnt.
(WebCore::InbandWebVTTTextTrack::newRegionsParsed): Pass a reference.
* html/track/InbandWebVTTTextTrack.h: Updated for above changes.

* html/track/LoadableTextTrack.cpp:
(WebCore::LoadableTextTrack::newCuesAvailable): Pass references.
(WebCore::LoadableTextTrack::newRegionsAvailable): Ditto.

* html/track/TextTrack.cpp:
(WebCore::TextTrack::~TextTrack): Use references.
(WebCore::TextTrack::setKind): Ditto.
(WebCore::TextTrack::setMode): Ditto.
(WebCore::TextTrack::removeAllCues): Ditto.
(WebCore::TextTrack::activeCues): Ditto.
(WebCore::TextTrack::addCue): Ditto.
(WebCore::TextTrack::removeCue): Removed unneeded code to handle a cue
that points to a track but is not in that track. Added a call to
setIsActive(false) here instead of having the remove function do it.
(WebCore::TextTrack::addRegion): Use references.
(WebCore::TextTrack::removeRegion): Removed unneeded code to handle a
region that points to a track but is not in that track.
(WebCore::TextTrack::cueWillChange): Use references.
(WebCore::TextTrack::cueDidChange): Ditto.
(WebCore::TextTrack::setLanguage): Ditto.
* html/track/TextTrack.h: Updated for above changes.

* html/track/TextTrackCue.cpp:
(WebCore::TextTrackCue::TextTrackCue): Initialized the data members
in the class definition.
(WebCore::TextTrackCue::cueIndex): Deleted.
(WebCore::TextTrackCue::invalidateCueIndex): Deleted.
* html/track/TextTrackCue.h: Updated for the above. Removed m_cueIndex,
because it is not a good design to store these and try to keep them up
to date.

* html/track/TextTrackCueList.cpp:
(WebCore::compareCues): Added. Helper for sorting and checking sorting.
(WebCore::TextTrackCueList::TextTrackCueList): Deleted. Let the compiler
generate this.
(WebCore::TextTrackCueList::length): Moved to header.
(WebCore::TextTrackCueList::cueIndex): Renamed from getCueIndex.
Changed return type to unsigned rather than unsigned long.
(WebCore::TextTrackCueList::item): Updated for name change.
(WebCore::TextTrackCueList::getCueById): Ditto.
(WebCore::TextTrackCueList::activeCues): Build the vector directly
rather than wastefully adding with TextTrackCueList::add, which will
try to sort.
(WebCore::TextTrackCueList::add): Take a Ref&& instead of a PassRefPtr.
Also, keep sorted using std::upper_bound instead of the recursive
binary search this code was using before. Also remove the
invalidateCueIndexes call since there are no cue indices any more.
Also remove the boolean return value since no caller was using it.
(WebCore::TextTrackCueList::remove): Take a reference instead of a
pointer. Also remove the boolean return value since no caller was using it.
(WebCore::TextTrackCueList::contains): Deleted. Was unused.
(WebCore::TextTrackCueList::updateCueIndex): Reimplemented using the
std::upper_bound and std::rotate operations. The old code that used
remove and add was inefficient and also could cause a cue to be deallocated
if something else wasn't holding a reference to the cue. Also changed to take
a reference.
(WebCore::TextTrackCueList::clear): Deleted. Was unused.
(WebCore::TextTrackCueList::invalidateCueIndexes): Deleted. No longer
needed since we don't store cue indices in the cues any more.
* html/track/TextTrackCueList.h: Updated for the above changes.

* html/track/VTTRegionList.cpp:
(WebCore::VTTRegionList::VTTRegionList): Deleted. Let the compiler
generate this.
(WebCore::VTTRegionList::length): Moved to header.
(WebCore::VTTRegionList::item): Updated for name and type changes.
(WebCore::VTTRegionList::getRegionById): Ditto.
(WebCore::VTTRegionList::add): Changed to take a Ref&& instead of a
PassRefPtr.
(WebCore::VTTRegionList::remove): Updated.
(WebCore::VTTRegionList::clear): Deleted. Was unused.
* html/track/VTTRegionList.h: Updated for the above changes.
* html/track/VTTRegionList.idl: Made return values nullable to reflect
the actual semantic of the code.

* html/track/VideoTrack.cpp:
(WebCore::VideoTrack::VideoTrack): Use references.
(WebCore::VideoTrack::setPrivate): Ditto.
(WebCore::VideoTrack::setSelected): Ditto.
(WebCore::VideoTrack::inbandTrackIndex): Removed assertion since m_private
is now a Ref instead of a RefPtr.
(WebCore::VideoTrack::selectedChanged): Removed unneeded track private argument.
(WebCore::VideoTrack::idChanged): Ditto.
(WebCore::VideoTrack::labelChanged): Ditto.
(WebCore::VideoTrack::languageChanged): Ditto.
(WebCore::VideoTrack::willRemove): Ditto.
(WebCore::VideoTrack::setKind): Updated to use reference.
(WebCore::VideoTrack::setLanguage): Ditto.
* html/track/VideoTrack.h: Updated for the above. Changed derivation to private.
Removed unneeded defaultKindKeyword.

* loader/EmptyClients.h: Updated to use reference.

* loader/PingLoader.cpp:
(WebCore::PingLoader::sendViolationReport): Take a Ref&& instead of RefPtr&&.
* loader/PingLoader.h: Updated for above change.

* page/Chrome.cpp:
(WebCore::Chrome::loadIconForFiles): Take a reference.
* page/Chrome.h: Updated for above change.
* page/ChromeClient.h: Ditto.

* page/csp/ContentSecurityPolicy.cpp:
(WebCore::ContentSecurityPolicy::reportViolation): Use auto.

* platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
(WebPlaybackSessionModelMediaElement::selectAudioMediaOption): Simplified
algorithm by removing unneeded direct call to audioTrackEnabledChanged,
which will be called by setEnabled and doesn't need to be called again here.
(WebPlaybackSessionModelMediaElement::selectLegibleMediaOption): Removed
unhelpful assertion and unnneded initialization.

* platform/graphics/AudioTrackPrivate.h: Removed unnneeed track private
argument and initialized data members where they are defined.

* platform/graphics/InbandTextTrackPrivateClient.h: Use Ref instead of
PassRefPtr, initialize data members where they are defined, and removed
the unneeded track private arguments from the client functions.

* platform/graphics/SourceBufferPrivate.h: Fixed functions that were taking
AtomicString to take a const& instead. Use Ref&& instead of PassRefPtr.

* platform/graphics/SourceBufferPrivateClient.h: Removed unneded private pointer
arguments from client functions.

* platform/graphics/TrackPrivateBase.h: Removed unneeded private pointers
from client functions.
* platform/graphics/VideoTrackPrivate: Ditto.

* platform/graphics/avfoundation/AudioTrackPrivateAVF.h: Use
const AtomicString&.

* platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:
(WebCore::InbandMetadataTextTrackPrivateAVF::addDataCue): Updated for change to arguments.
(WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes): Ditto.
(WebCore::InbandMetadataTextTrackPrivateAVF::flushPartialCues): Ditto.
* platform/graphics/avfoundation/InbandTextTrackPrivateAVF.cpp:
(WebCore::InbandTextTrackPrivateAVF::processAttributedStrings): Ditto.
(WebCore::InbandTextTrackPrivateAVF::resetCueValues): Ditto.
(WebCore::InbandTextTrackPrivateAVF::processNativeSamples): Ditto.

* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.cpp:
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::AudioTrackPrivateMediaSourceAVFObjC):
Moved initialization of data memebrs to where they are defined.
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::enabled): Deleted. No longer needed.
(WebCore::AudioTrackPrivateMediaSourceAVFObjC::setEnabled): Changed to use the enabled
flag from the base class instead of a separate m_enabled in this class.
* platform/graphics/avfoundation/objc/AudioTrackPrivateMediaSourceAVFObjC.h:
Removed the enabled function and the m_enabled data member.

* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h: Marked functions
final instead of override and updated arguemnts.
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::SourceBufferPrivateAVFObjC::didParseStreamDataAsAsset): Updated for change
to arguments.
(WebCore::SourceBufferPrivateAVFObjC::processCodedFrame): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::appendCompleted): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::hasVideo): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::hasAudio): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::layerDidReceiveError): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::flush): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::enqueueSample): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::isReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::fastSeekTimeForMediaTime): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::seekToTime): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::didBecomeReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateAVFObjC::notifyClientWhenReadyForMoreSamples): Ditto.

* platform/graphics/gstreamer/InbandMetadataTextTrackPrivateGStreamer.h: Updated for
changes to arguments.
* platform/graphics/gstreamer/InbandTextTrackPrivateGStreamer.cpp:
(WebCore::InbandTextTrackPrivateGStreamer::notifyTrackOfSample): Ditto.
* platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:
(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged): Ditto.
* platform/graphics/gstreamer/mse/AppendPipeline.cpp:
(WebCore::AppendPipeline::appsinkNewSample): Ditto.
* platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.cpp:
(WebCore::SourceBufferPrivateGStreamer::append): Ditto.
(WebCore::SourceBufferPrivateGStreamer::flush): Ditto.
(WebCore::SourceBufferPrivateGStreamer::enqueueSample): Ditto.
(WebCore::SourceBufferPrivateGStreamer::isReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateGStreamer::notifyReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateGStreamer::stopAskingForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateGStreamer::notifyClientWhenReadyForMoreSamples): Ditto.
(WebCore::SourceBufferPrivateGStreamer::didReceiveInitializationSegment): Ditto.
(WebCore::SourceBufferPrivateGStreamer::didReceiveSample): Ditto.
(WebCore::SourceBufferPrivateGStreamer::didReceiveAllPendingSamples): Ditto.
* platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h: Ditto.
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockSourceBufferPrivate::append): Ditto.
(WebCore::MockSourceBufferPrivate::didReceiveInitializationSegment): Ditto.
(WebCore::MockSourceBufferPrivate::didReceiveSample): Ditto.
(WebCore::MockSourceBufferPrivate::enqueuedSamplesForTrackID): Ditto.
(WebCore::MockSourceBufferPrivate::enqueueSample): Ditto.
(WebCore::MockSourceBufferPrivate::hasVideo): Ditto.
(WebCore::MockSourceBufferPrivate::hasAudio): Ditto.
(WebCore::MockSourceBufferPrivate::fastSeekTimeForMediaTime): Ditto.
(WebCore::MockSourceBufferPrivate::seekToTime): Ditto.
* platform/mock/mediasource/MockSourceBufferPrivate.h: Ditto.

* rendering/RenderSnapshottedPlugIn.cpp:
(WebCore::RenderSnapshottedPlugIn::updateSnapshot): Take raw pointer instead
of PassRefPtr.
* rendering/RenderSnapshottedPlugIn.h: Updated for above change.

* svg/SVGScriptElement.h: Added using to resolve the ambiguity with the
ref/deref from SVGElement and from ScriptElement.

* xml/parser/XMLDocumentParser.cpp:
(WebCore::XMLDocumentParser::notifyFinished): Updated to simplify since
the pending script now has a script element.

* xml/parser/XMLDocumentParserLibxml2.cpp:
(WebCore::XMLDocumentParser::startElementNs): Use isSciprtElement instead
of toScriptElementIfPossible.
(WebCore::XMLDocumentParser::endElementNs): Ditto. Also use downcastScriptElement.

Source/WebKit/mac:

* WebCoreSupport/WebChromeClient.h:
* WebCoreSupport/WebChromeClient.mm:
(WebChromeClient::loadIconForFiles): Take a reference instead of a pointer.

Source/WebKit/win:

* WebCoreSupport/WebChromeClient.cpp:
(WebChromeClient::loadIconForFiles): Take a reference instead of a pointer.
* WebCoreSupport/WebChromeClient.h: Updated for the above.

Source/WebKit2:

* WebProcess/WebCoreSupport/WebChromeClient.cpp:
(WebKit::WebChromeClient::loadIconForFiles): Take a reference instead of a pointer.
* WebProcess/WebCoreSupport/WebChromeClient.h: Ditto.

Source/WTF:

* wtf/RefPtr.h:
(WTF::makeRefPtr): Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210319 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMove editing history scripts to WebCore PrivateHeaders
wenson_hsieh@apple.com [Thu, 5 Jan 2017 05:09:04 +0000 (05:09 +0000)]
Move editing history scripts to WebCore PrivateHeaders
https://bugs.webkit.org/show_bug.cgi?id=166709
<rdar://problem/29876612>

Reviewed by Dan Bernstein.

Source/WebCore:

Move editing history scripts out of InternalScripts and into Scripts, and update the WebCore Copy Script build
phase to copy the editing scripts into PrivateHeaders.

No new tests, because there should be no behavior change.

* Scripts/DumpEditingHistory.js: Renamed from Source/WebCore/InternalScripts/DumpEditingHistory.js.
* Scripts/EditingHistoryUtil.js: Renamed from Source/WebCore/InternalScripts/EditingHistoryUtil.js.
* WebCore.xcodeproj/project.pbxproj:

Tools:

Update references to editing script files in WebCore that were moved.

* EditingHistory/EditingHistory.xcodeproj/project.pbxproj:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210318 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, build fix after r210313 part 2
utatane.tea@gmail.com [Thu, 5 Jan 2017 04:43:13 +0000 (04:43 +0000)]
Unreviewed, build fix after r210313 part 2
https://bugs.webkit.org/show_bug.cgi?id=166676

Add 'U' suffix.

* TestWebKitAPI/Tests/WTF/StringView.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/WTFString.cpp:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210317 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: forced pseudo classes aren't cleared from inspected page when Inspecto...
joepeck@webkit.org [Thu, 5 Jan 2017 04:37:43 +0000 (04:37 +0000)]
Web Inspector: forced pseudo classes aren't cleared from inspected page when Inspector closes
https://bugs.webkit.org/show_bug.cgi?id=108823
<rdar://problem/13143550>

Reviewed by Timothy Hatcher.

* inspector/InspectorCSSAgent.h:
* inspector/InspectorCSSAgent.cpp:
(WebCore::InspectorCSSAgent::documentDetached):
Clear the document from all of the different Document sets.

(WebCore::InspectorCSSAgent::didRemoveDocument): Deleted.
Use documentDetached, which is more direct.

(WebCore::InspectorCSSAgent::forcePseudoState):
Update the set of Documents with psuedo element changes. So when we
reset forced styles we know which documents to refresh styles.

(WebCore::InspectorCSSAgent::resetPseudoStates):
Use the list of documents we've already computed.

(WebCore::InspectorCSSAgent::didRemoveDOMNode):
(WebCore::InspectorCSSAgent::didModifyDOMAttr):
Change to take a reference and more data to avoid extra work.

* inspector/InspectorDOMAgent.h:
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::unbind):
Eliminated didRemoveDocument.

(WebCore::InspectorDOMAgent::didModifyDOMAttr):
(WebCore::InspectorDOMAgent::didRemoveDOMAttr):
(WebCore::InspectorDOMAgent::styleAttributeInvalidated):
Pass a references to the DOM listener client, these are never null.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210316 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove runtime flag for variation fonts
mmaxfield@apple.com [Thu, 5 Jan 2017 04:35:48 +0000 (04:35 +0000)]
Remove runtime flag for variation fonts
https://bugs.webkit.org/show_bug.cgi?id=164251

Reviewed by Dean Jackson.

Source/WebCore:

No new tests because there is no behavior change, but updated the following
tests to stop setting the flag:
- animations/font-variations/font-variation-settings-order.html:
- animations/font-variations/font-variation-settings-unlike.html:
- animations/font-variations/font-variation-settings.html:
- fast/text/variations/duplicate.html:
- fast/text/variations/exist.html:
- fast/text/variations/getComputedStyle.html:
- fast/text/variations/inheritance.html:
- fast/text/variations/order.html:
- fast/text/variations/outofbounds.html:

* css/CSSComputedStyleDeclaration.cpp:
(WebCore::ComputedStyleExtractor::propertyValue):
* css/parser/CSSParser.cpp:
(WebCore::CSSParserContext::CSSParserContext):
(WebCore::operator==):
* css/parser/CSSParserMode.h:
(WebCore::CSSParserContext::completeURL):
(WebCore::CSSParserContextHash::hash):
* css/parser/CSSPropertyParser.cpp:
(WebCore::CSSPropertyParser::parseSingleValue):
* page/Settings.in:
* testing/InternalSettings.cpp:
(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::variationFontsEnabled): Deleted.
(WebCore::InternalSettings::setVariationFontsEnabled): Deleted.
* testing/InternalSettings.h:
* testing/InternalSettings.idl:

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::registerUserDefaultsIfNeeded):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):

LayoutTests:

* animations/font-variations/font-variation-settings-expected.html:
* animations/font-variations/font-variation-settings-order-expected.html:
* animations/font-variations/font-variation-settings-order.html:
* animations/font-variations/font-variation-settings-unlike-expected.html:
* animations/font-variations/font-variation-settings-unlike.html:
* animations/font-variations/font-variation-settings.html:
* fast/text/variations/duplicate-expected.html:
* fast/text/variations/duplicate.html:
* fast/text/variations/exist-expected-mismatch.html:
* fast/text/variations/exist.html:
* fast/text/variations/getComputedStyle.html:
* fast/text/variations/inheritance-expected.html:
* fast/text/variations/inheritance.html:
* fast/text/variations/order-expected.html:
* fast/text/variations/order.html:
* fast/text/variations/outofbounds-expected.html:
* fast/text/variations/outofbounds.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210315 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed build fix after r210313
utatane.tea@gmail.com [Thu, 5 Jan 2017 04:04:43 +0000 (04:04 +0000)]
Unreviewed build fix after r210313
https://bugs.webkit.org/show_bug.cgi?id=166676

Revert `#pragma once` to ifdefs due to build failure.

* wtf/text/StringView.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210314 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoLimit thread name appropriately
utatane.tea@gmail.com [Thu, 5 Jan 2017 02:53:00 +0000 (02:53 +0000)]
Limit thread name appropriately
https://bugs.webkit.org/show_bug.cgi?id=166676

Reviewed by Sam Weinig.

Source/WTF:

In some platform, the max length of thread names are limited.
For example, the number of the max length is 32 in Windows and
16 in Linux. But the specified thread name is typically long
in WebKit like "com.apple.CoreIPC.ReceiveQueue"

We port the logic substring the thread name in
generic/WorkQueueGeneric.cpp to Threading. It retrieves the name
"ReceiveQueue" from "com.apple.CoreIPC.ReceiveQueue". And apply
the appropriate the thread name limit and use it on Linux and
Windows environment.

* wtf/Threading.cpp:
(WTF::normalizeThreadName):
(WTF::createThread):
* wtf/Threading.h:
* wtf/ThreadingPthreads.cpp:
(WTF::initializeCurrentThreadInternal):
* wtf/ThreadingWin.cpp:
(WTF::initializeCurrentThreadInternal):
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::platformInitialize):
* wtf/text/StringView.h:
(WTF::StringView::left):
(WTF::StringView::right):
(WTF::StringView::reverseFind):

Tools:

* TestWebKitAPI/Tests/WTF/StringView.cpp:
(TestWebKitAPI::TEST):
* TestWebKitAPI/Tests/WTF/WTFString.cpp:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210313 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWebAssembly: sections with the same name are allowed
jfbastien@apple.com [Thu, 5 Jan 2017 02:49:51 +0000 (02:49 +0000)]
WebAssembly: sections with the same name are allowed
https://bugs.webkit.org/show_bug.cgi?id=166708

Reviewed by Saam Barati.

* wasm/self-test/test_BuilderJSON.js:
(SectionsWithSameCustomName):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210312 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: application cache details not shown in Storage Tab
nvasilyev@apple.com [Thu, 5 Jan 2017 02:00:28 +0000 (02:00 +0000)]
Web Inspector: application cache details not shown in Storage Tab
https://bugs.webkit.org/show_bug.cgi?id=166699
<rdar://problem/29871716>

Reviewed by Brian Burg.

Fix a ternary operator precedence. The following expression throws an exception:

    true || false ? i.dont.exist : false

* UserInterface/Views/ApplicationCacheFrameTreeElement.js:
(WebInspector.ApplicationCacheFrameTreeElement.prototype.updateTitles):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210311 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Cocoa] Teach SharedBuffer to return an NSArray of data segments to avoid flattening
aestes@apple.com [Thu, 5 Jan 2017 01:32:02 +0000 (01:32 +0000)]
[Cocoa] Teach SharedBuffer to return an NSArray of data segments to avoid flattening
https://bugs.webkit.org/show_bug.cgi?id=166696

Reviewed by Tim Horton.

Source/WebCore:

Existing methods of extracting NSData from a SharedBuffer require either merging or copying
data segments. Since data segments are stored in CFDataRefs on Cocoa platforms, it should be
possible to retrieve an NSArray of the segments without having to first flatten to a single
buffer.

This patch implements such a method. This will be used in a follow-on patch, where I will
need to pass SharedBuffer data to QuickLook via an NSArray of NSData.

New API test: SharedBufferTest.createNSDataArray.

* platform/SharedBuffer.h: Declared createNSArrayData(), and exported two functions needed
by the API test.
* platform/cocoa/SharedBufferCocoa.mm:
(WebCore::SharedBuffer::createNSDataArray): Added. Returns m_cfData or a copy of m_fileData
if either exist. Otherwise, adds m_buffer (wrapped in a WebCoreSharedBufferData object) and
the objects in m_dataArray to a NSMutableArray and returns it.

Tools:

* TestWebKitAPI/PlatformGTK.cmake:
* TestWebKitAPI/PlatformWin.cmake:
* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp: Moved class SharedBufferTest to SharedBufferTest.{cpp,h}.
* TestWebKitAPI/Tests/WebCore/SharedBufferTest.cpp: Moved class SharedBufferTest from SharedBuffer.cpp.
* TestWebKitAPI/Tests/WebCore/SharedBufferTest.h: Ditto.
* TestWebKitAPI/Tests/WebCore/cocoa/SharedBuffer.mm: Added.
(TestWebKitAPI::expectDataArraysEqual): Added a helper to assert that two NSArrays of NSData are equal.
(TestWebKitAPI::TEST_F): Added a test for createNSDataArray.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210310 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: teach the protocol generator about platform-specific types, events...
bburg@apple.com [Thu, 5 Jan 2017 01:22:41 +0000 (01:22 +0000)]
Web Inspector: teach the protocol generator about platform-specific types, events, and commands
https://bugs.webkit.org/show_bug.cgi?id=166003
<rdar://problem/28718990>

Reviewed by Joseph Pecoraro.

This patch implements parser, model, and generator-side changes to account for
platform-specific types, events, and commands. The 'platform' property is parsed
for top-level definitions and assumed to be the 'generic' platform if none is specified.

Since the generator's platform setting acts to filter definitions with an incompatible platform,
all generators must be modified to consult a list of filtered types/commands/events for
a domain instead of directly accessing Domain.{type_declarations, commands, events}. To prevent
accidental misuse, hide those fields behind accessors (e.g., `all_type_declarations()`) so that they
are still accessible if truly necessary, but not used by default and caused an error if not migrated.

* inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py:
(CppAlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
(CppBackendDispatcherHeaderGenerator.domains_to_generate):
(CppBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
(CppBackendDispatcherHeaderGenerator._generate_dispatcher_declarations_for_domain):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
(CppBackendDispatcherImplementationGenerator.domains_to_generate):
(CppBackendDispatcherImplementationGenerator._generate_dispatcher_implementations_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_small_dispatcher_switch_implementation_for_domain):
(CppBackendDispatcherImplementationGenerator._generate_large_dispatcher_switch_implementation_for_domain):
* inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py:
(CppFrontendDispatcherHeaderGenerator.domains_to_generate):
(CppFrontendDispatcherHeaderGenerator._generate_dispatcher_declarations_for_domain):
* inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:
(CppFrontendDispatcherImplementationGenerator.domains_to_generate):
(CppFrontendDispatcherImplementationGenerator._generate_dispatcher_implementations_for_domain):
* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(CppProtocolTypesHeaderGenerator._generate_forward_declarations):
(_generate_typedefs_for_domain):
(_generate_builders_for_domain):
(_generate_forward_declarations_for_binding_traits):
(_generate_declarations_for_enum_conversion_methods):
* inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:
(CppProtocolTypesImplementationGenerator._generate_enum_conversion_methods_for_domain):
(CppProtocolTypesImplementationGenerator._generate_open_field_names):
(CppProtocolTypesImplementationGenerator._generate_builders_for_domain):
* inspector/scripts/codegen/generate_js_backend_commands.py:
(JSBackendCommandsGenerator.should_generate_domain):
(JSBackendCommandsGenerator.domains_to_generate):
(JSBackendCommandsGenerator.generate_domain):
(JSBackendCommandsGenerator.domains_to_generate.should_generate_domain): Deleted.
* inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:
(ObjCBackendDispatcherHeaderGenerator.domains_to_generate):
(ObjCBackendDispatcherHeaderGenerator._generate_objc_forward_declarations):
(ObjCBackendDispatcherHeaderGenerator._generate_objc_handler_declarations_for_domain):
* inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:
(ObjCBackendDispatcherImplementationGenerator):
(ObjCBackendDispatcherImplementationGenerator.domains_to_generate):
(ObjCBackendDispatcherImplementationGenerator._generate_handler_implementation_for_domain):
(ObjCConfigurationImplementationGenerator): Deleted.
(ObjCConfigurationImplementationGenerator.__init__): Deleted.
(ObjCConfigurationImplementationGenerator.output_filename): Deleted.
(ObjCConfigurationImplementationGenerator.domains_to_generate): Deleted.
(ObjCConfigurationImplementationGenerator.generate_output): Deleted.
(ObjCConfigurationImplementationGenerator._generate_handler_implementation_for_domain): Deleted.
(ObjCConfigurationImplementationGenerator._generate_handler_implementation_for_command): Deleted.
(ObjCConfigurationImplementationGenerator._generate_success_block_for_command): Deleted.
(ObjCConfigurationImplementationGenerator._generate_success_block_for_command.and): Deleted.
(ObjCConfigurationImplementationGenerator._generate_conversions_for_command): Deleted.
(ObjCConfigurationImplementationGenerator._generate_conversions_for_command.in_param_expression): Deleted.
(ObjCConfigurationImplementationGenerator._generate_invocation_for_command): Deleted.
* inspector/scripts/codegen/generate_objc_configuration_header.py:
(ObjCConfigurationHeaderGenerator.generate_output):
(ObjCConfigurationHeaderGenerator._generate_properties_for_domain):
* inspector/scripts/codegen/generate_objc_configuration_implementation.py:
(ObjCConfigurationImplementationGenerator):
(ObjCConfigurationImplementationGenerator.generate_output):
(ObjCConfigurationImplementationGenerator._generate_configuration_implementation_for_domains):
(ObjCConfigurationImplementationGenerator._generate_ivars):
(ObjCConfigurationImplementationGenerator._generate_dealloc):
(ObjCBackendDispatcherImplementationGenerator): Deleted.
(ObjCBackendDispatcherImplementationGenerator.__init__): Deleted.
(ObjCBackendDispatcherImplementationGenerator.output_filename): Deleted.
(ObjCBackendDispatcherImplementationGenerator.generate_output): Deleted.
(ObjCBackendDispatcherImplementationGenerator._generate_configuration_implementation_for_domains): Deleted.
(ObjCBackendDispatcherImplementationGenerator._generate_ivars): Deleted.
(ObjCBackendDispatcherImplementationGenerator._generate_dealloc): Deleted.
(ObjCBackendDispatcherImplementationGenerator._generate_handler_setter_for_domain): Deleted.
(ObjCBackendDispatcherImplementationGenerator._generate_event_dispatcher_getter_for_domain): Deleted.
(ObjCBackendDispatcherImplementationGenerator._variable_name_prefix_for_domain): Deleted.
* inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:
(ObjCFrontendDispatcherImplementationGenerator.domains_to_generate):
(ObjCFrontendDispatcherImplementationGenerator._generate_event_dispatcher_implementations):
* inspector/scripts/codegen/generate_objc_header.py:
(ObjCHeaderGenerator.generate_output):
(ObjCHeaderGenerator._generate_forward_declarations):
(ObjCHeaderGenerator._generate_enums):
(ObjCHeaderGenerator._generate_types):
(ObjCHeaderGenerator._generate_command_protocols):
(ObjCHeaderGenerator._generate_event_interfaces):
* inspector/scripts/codegen/generate_objc_internal_header.py:
(ObjCInternalHeaderGenerator.generate_output):
(ObjCInternalHeaderGenerator._generate_event_dispatcher_private_interfaces):
* inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:
(ObjCProtocolTypeConversionsHeaderGenerator.domains_to_generate):
(ObjCProtocolTypeConversionsHeaderGenerator._generate_enum_conversion_functions):
* inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:
(ObjCProtocolTypeConversionsImplementationGenerator.domains_to_generate):
(ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_interface):
(ObjCProtocolTypeConversionsImplementationGenerator._generate_type_factory_category_implementation):
* inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:
(ObjCProtocolTypesImplementationGenerator.domains_to_generate):
(ObjCProtocolTypesImplementationGenerator.generate_type_implementations):

* inspector/scripts/codegen/generator.py:
(Generator.can_generate_platform):
(Generator):
(Generator.type_declarations_for_domain):
(Generator.commands_for_domain):
(Generator.events_for_domain):
These are the core methods for computing whether a definition can be used given a target platform.

(Generator.calculate_types_requiring_shape_assertions):
(Generator._traverse_and_assign_enum_values):
* inspector/scripts/codegen/models.py:
(Protocol.parse_type_declaration):
(Protocol.parse_command):
(Protocol.parse_event):
(Protocol.resolve_types):

(Domain.__init__):
(Domain):
(Domain.all_type_declarations):
(Domain.all_commands):
(Domain.all_events):
Hide fields behind these accessors so it's really obvious when we are ignoring platform filtering.

(Domain.resolve_type_references):
(TypeDeclaration.__init__):
(Command.__init__):
(Event.__init__):
* inspector/scripts/codegen/objc_generator.py:
(ObjCGenerator.should_generate_types_for_domain):
(ObjCGenerator):
(ObjCGenerator.should_generate_commands_for_domain):
(ObjCGenerator.should_generate_events_for_domain):
(ObjCGenerator.should_generate_domain_types_filter): Deleted.
(ObjCGenerator.should_generate_domain_types_filter.should_generate_domain_types): Deleted.
(ObjCGenerator.should_generate_domain_command_handler_filter): Deleted.
(ObjCGenerator.should_generate_domain_command_handler_filter.should_generate_domain_command_handler): Deleted.
(ObjCGenerator.should_generate_domain_event_dispatcher_filter): Deleted.
(ObjCGenerator.should_generate_domain_event_dispatcher_filter.should_generate_domain_event_dispatcher): Deleted.
Clean up some messy code that essentially did the same definition filtering as we must do for platforms.
This will be enhanced in a future patch so that platform filtering will take priority over the target framework.

The results above need rebaselining because the class names for two generators were swapped by accident.
Fixing the names causes the order of generated files to change, and this generates ugly diffs because every
generated file includes the same copyright block at the top.

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

* inspector/scripts/tests/generic/expected/fail-on-command-with-invalid-platform.json-error: Added.
* inspector/scripts/tests/generic/expected/fail-on-type-with-invalid-platform.json-error: Added.
* inspector/scripts/tests/generic/fail-on-command-with-invalid-platform.json: Added.
* inspector/scripts/tests/generic/fail-on-type-with-invalid-platform.json: Added.

Add error test cases for invalid platforms in commands, types, and events.

* inspector/scripts/tests/generic/definitions-with-mac-platform.json: Added.
* inspector/scripts/tests/generic/expected/definitions-with-mac-platform.json-result: Added.
* inspector/scripts/tests/all/definitions-with-mac-platform.json: Added.
* inspector/scripts/tests/all/expected/definitions-with-mac-platform.json-result: Added.
* inspector/scripts/tests/ios/definitions-with-mac-platform.json: Added.
* inspector/scripts/tests/ios/expected/definitions-with-mac-platform.json-result: Added.
* inspector/scripts/tests/mac/definitions-with-mac-platform.json: Added.
* inspector/scripts/tests/mac/expected/definitions-with-mac-platform.json-result: Added.

Add a basic 4-way test that generates code for each platform from the same specification.
With 'macos' platform for each definition, only 'all' and 'mac' generate anything interesting.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210309 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: teach the protocol generator about platform-specific types, events...
bburg@apple.com [Thu, 5 Jan 2017 01:17:07 +0000 (01:17 +0000)]
Web Inspector: teach the protocol generator about platform-specific types, events, and commands
https://bugs.webkit.org/show_bug.cgi?id=166003
<rdar://problem/28718990>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Make it possible to test inspector protocol generator output for different platforms.

Move existing tests to the generic/ subdirectory, as they are to be generated
without any specific platform. Later, platform-specific generator behavior will be
tested by cloning the same test to multiple platform directories.

* inspector/scripts/tests{/ => /generic/}commands-with-async-attribute.json
* inspector/scripts/tests{/ => /generic/}commands-with-optional-call-return-parameters.json
* inspector/scripts/tests{/ => /generic/}domains-with-varying-command-sizes.json
* inspector/scripts/tests{/ => /generic/}enum-values.json
* inspector/scripts/tests{/ => /generic/}events-with-optional-parameters.json
* inspector/scripts/tests{/ => /generic/}expected/commands-with-async-attribute.json-result
* inspector/scripts/tests{/ => /generic/}expected/commands-with-optional-call-return-parameters.json-result
* inspector/scripts/tests{/ => /generic/}expected/domains-with-varying-command-sizes.json-result
* inspector/scripts/tests{/ => /generic/}expected/enum-values.json-result
* inspector/scripts/tests{/ => /generic/}expected/events-with-optional-parameters.json-result
* inspector/scripts/tests{/ => /generic/}expected/fail-on-domain-availability.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-duplicate-command-call-parameter-names.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-duplicate-command-return-parameter-names.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-duplicate-event-parameter-names.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-duplicate-type-declarations.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-duplicate-type-member-names.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-enum-with-no-values.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-number-typed-optional-parameter-flag.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-number-typed-optional-type-member.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-string-typed-optional-parameter-flag.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-string-typed-optional-type-member.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-type-declaration-using-type-reference.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-type-reference-as-primitive-type.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-type-with-lowercase-name.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-unknown-type-reference-in-type-declaration.json-error
* inspector/scripts/tests{/ => /generic/}expected/fail-on-unknown-type-reference-in-type-member.json-error
* inspector/scripts/tests{/ => /generic/}expected/generate-domains-with-feature-guards.json-result
* inspector/scripts/tests{/ => /generic/}expected/same-type-id-different-domain.json-result
* inspector/scripts/tests{/ => /generic/}expected/shadowed-optional-type-setters.json-result
* inspector/scripts/tests{/ => /generic/}expected/type-declaration-aliased-primitive-type.json-result
* inspector/scripts/tests{/ => /generic/}expected/type-declaration-array-type.json-result
* inspector/scripts/tests{/ => /generic/}expected/type-declaration-enum-type.json-result
* inspector/scripts/tests{/ => /generic/}expected/type-declaration-object-type.json-result
* inspector/scripts/tests{/ => /generic/}expected/type-requiring-runtime-casts.json-result
* inspector/scripts/tests{/ => /generic/}fail-on-domain-availability.json
* inspector/scripts/tests{/ => /generic/}fail-on-duplicate-command-call-parameter-names.json
* inspector/scripts/tests{/ => /generic/}fail-on-duplicate-command-return-parameter-names.json
* inspector/scripts/tests{/ => /generic/}fail-on-duplicate-event-parameter-names.json
* inspector/scripts/tests{/ => /generic/}fail-on-duplicate-type-declarations.json
* inspector/scripts/tests{/ => /generic/}fail-on-duplicate-type-member-names.json
* inspector/scripts/tests{/ => /generic/}fail-on-enum-with-no-values.json
* inspector/scripts/tests{/ => /generic/}fail-on-number-typed-optional-parameter-flag.json
* inspector/scripts/tests{/ => /generic/}fail-on-number-typed-optional-type-member.json
* inspector/scripts/tests{/ => /generic/}fail-on-string-typed-optional-parameter-flag.json
* inspector/scripts/tests{/ => /generic/}fail-on-string-typed-optional-type-member.json
* inspector/scripts/tests{/ => /generic/}fail-on-type-declaration-using-type-reference.json
* inspector/scripts/tests{/ => /generic/}fail-on-type-reference-as-primitive-type.json
* inspector/scripts/tests{/ => /generic/}fail-on-type-with-lowercase-name.json
* inspector/scripts/tests{/ => /generic/}fail-on-unknown-type-reference-in-type-declaration.json
* inspector/scripts/tests{/ => /generic/}fail-on-unknown-type-reference-in-type-member.json
* inspector/scripts/tests{/ => /generic/}generate-domains-with-feature-guards.json
* inspector/scripts/tests{/ => /generic/}same-type-id-different-domain.json
* inspector/scripts/tests{/ => /generic/}shadowed-optional-type-setters.json
* inspector/scripts/tests{/ => /generic/}type-declaration-aliased-primitive-type.json
* inspector/scripts/tests{/ => /generic/}type-declaration-array-type.json
* inspector/scripts/tests{/ => /generic/}type-declaration-enum-type.json
* inspector/scripts/tests{/ => /generic/}type-declaration-object-type.json
* inspector/scripts/tests{/ => /generic/}type-requiring-runtime-casts.json

Tools:

Teach run-inspector-generator-tests to generate test output using the platform name
derived from the directory that the test is in. For example, tests in the /generic/
subdirectory will pass `--platform generic` to generate-inspector-protocol-bindings.py.

* Scripts/webkitpy/inspector/main.py:
(InspectorGeneratorTests.generate_from_json):
(InspectorGeneratorTests.run_tests):
(InspectorGeneratorTests.main):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210308 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: teach the protocol generator about platform-specific types, events...
bburg@apple.com [Thu, 5 Jan 2017 01:16:30 +0000 (01:16 +0000)]
Web Inspector: teach the protocol generator about platform-specific types, events, and commands
https://bugs.webkit.org/show_bug.cgi?id=166003
<rdar://problem/28718990>

Reviewed by Joseph Pecoraro.

Add a --platform argument to generate-inspector-protocol-bindings.py and propagate
the specified platform to each generator. This will be used in the next few patches
to exclude types, events, and commands that are unsupported by the backend platform.

Covert all subclasses of Generator to pass along their positional arguments so that we
can easily change base class arguments without editing all generator constructors.

* inspector/scripts/codegen/cpp_generator.py:
(CppGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_alternate_backend_dispatcher_header.py:
(CppAlternateBackendDispatcherHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_header.py:
(CppBackendDispatcherHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_backend_dispatcher_implementation.py:
(CppBackendDispatcherImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_frontend_dispatcher_header.py:
(CppFrontendDispatcherHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_frontend_dispatcher_implementation.py:
(CppFrontendDispatcherImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_protocol_types_header.py:
(CppProtocolTypesHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_cpp_protocol_types_implementation.py:
(CppProtocolTypesImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_js_backend_commands.py:
(JSBackendCommandsGenerator.__init__):
* inspector/scripts/codegen/generate_objc_backend_dispatcher_header.py:
(ObjCBackendDispatcherHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_objc_backend_dispatcher_implementation.py:
(ObjCConfigurationImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_objc_configuration_header.py:
(ObjCConfigurationHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_objc_configuration_implementation.py:
(ObjCBackendDispatcherImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_objc_frontend_dispatcher_implementation.py:
(ObjCFrontendDispatcherImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_objc_header.py:
(ObjCHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_objc_internal_header.py:
(ObjCInternalHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_objc_protocol_type_conversions_header.py:
(ObjCProtocolTypeConversionsHeaderGenerator.__init__):
* inspector/scripts/codegen/generate_objc_protocol_type_conversions_implementation.py:
(ObjCProtocolTypeConversionsImplementationGenerator.__init__):
* inspector/scripts/codegen/generate_objc_protocol_types_implementation.py:
(ObjCProtocolTypesImplementationGenerator.__init__):
Pass along *args instead of single positional arguments.

* inspector/scripts/codegen/generator.py:
(Generator.__init__):
Save the target platform and add a getter.

* inspector/scripts/codegen/models.py:
(Platform):
(Platform.__init__):
(Platform.fromString):
(Platforms):
Define the allowed Platform instances (iOS, macOS, and Any).

* inspector/scripts/codegen/objc_generator.py:
(ObjCGenerator.and.__init__):
* inspector/scripts/generate-inspector-protocol-bindings.py:
(generate_from_specification):
Pass along *args instead of single positional arguments.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210307 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, rolling out r210296.
ryanhaddad@apple.com [Thu, 5 Jan 2017 00:44:07 +0000 (00:44 +0000)]
Unreviewed, rolling out r210296.

This change broke macOS builds.

Reverted changeset:

"Check for the existence of
AVSampleBufferDisplayLayer_Private.h in AVFoundationSPI.h"
https://bugs.webkit.org/show_bug.cgi?id=166691
http://trac.webkit.org/changeset/210296

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210304 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed, rolling out r210287.
ryanhaddad@apple.com [Thu, 5 Jan 2017 00:33:00 +0000 (00:33 +0000)]
Unreviewed, rolling out r210287.

This change caused editing test failures on macOS.

Reverted changeset:

"Support File Promise during drag for macOS."
https://bugs.webkit.org/show_bug.cgi?id=165204
http://trac.webkit.org/changeset/210287

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210300 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCheck for the existence of AVSampleBufferDisplayLayer_Private.h in AVFoundationSPI.h
jer.noble@apple.com [Wed, 4 Jan 2017 23:46:27 +0000 (23:46 +0000)]
Check for the existence of AVSampleBufferDisplayLayer_Private.h in AVFoundationSPI.h
https://bugs.webkit.org/show_bug.cgi?id=166691

Reviewed by Eric Carlson.

Move the declaration of AVSampleBufferDisplayLayer SPI into AVFoundationSPI.h and key off the presence of the _Private.h header.

Drive-by Fix: also check for the presence of AVSampleBufferRenderSynchronizer.h before re-declaring AVSampleBufferRenderSynchronizer.

* platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
* platform/spi/mac/AVFoundationSPI.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210296 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMany new HTML5 input types still exposed as generic AXTextfield
n_wang@apple.com [Wed, 4 Jan 2017 23:07:13 +0000 (23:07 +0000)]
Many new HTML5 input types still exposed as generic AXTextfield
https://bugs.webkit.org/show_bug.cgi?id=109017
<rdar://problem/13658955>

Reviewed by Chris Fleizach.

Source/WebCore:

Provided more detailed role description for input types that
are exposed as standard text fields on the mac.

Changes are covered in modified test expectation.

* English.lproj/Localizable.strings:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper roleDescription]):
* platform/LocalizedStrings.cpp:
(WebCore::AXDateTimeFieldText):
(WebCore::AXMonthFieldText):
(WebCore::AXNumberFieldText):
(WebCore::AXWeekFieldText):
* platform/LocalizedStrings.h:
* platform/efl/LocalizedStringsEfl.cpp:
(WebCore::AXDateTimeFieldText):
(WebCore::AXMonthFieldText):
(WebCore::AXNumberFieldText):
(WebCore::AXWeekFieldText):
* platform/gtk/LocalizedStringsGtk.cpp:
(WebCore::AXDateTimeFieldText):
(WebCore::AXMonthFieldText):
(WebCore::AXNumberFieldText):
(WebCore::AXWeekFieldText):

LayoutTests:

* platform/mac/accessibility/roles-exposed-expected.txt:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210295 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove bindings/generic and distribute its contents appropriately
weinig@apple.com [Wed, 4 Jan 2017 23:04:18 +0000 (23:04 +0000)]
Remove bindings/generic and distribute its contents appropriately
https://bugs.webkit.org/show_bug.cgi?id=166700

Rubber-stamped by Alex Christensen.

* CMakeLists.txt:
* DerivedSources.make:
* PlatformMac.cmake:
* PlatformWin.cmake:
* WebCore.xcodeproj/project.pbxproj:
* bindings/IDLTypes.h: Copied from Source/WebCore/bindings/generic/IDLTypes.h.
* bindings/generic/ActiveDOMCallback.cpp: Removed.
* bindings/generic/ActiveDOMCallback.h: Removed.
* bindings/generic/IDLTypes.h: Removed.
* bindings/generic/RuntimeEnabledFeatures.cpp: Removed.
* bindings/generic/RuntimeEnabledFeatures.h: Removed.
* dom/ActiveDOMCallback.cpp: Copied from Source/WebCore/bindings/generic/ActiveDOMCallback.cpp.
* dom/ActiveDOMCallback.h: Copied from Source/WebCore/bindings/generic/ActiveDOMCallback.h.
* page/RuntimeEnabledFeatures.cpp: Copied from Source/WebCore/bindings/generic/RuntimeEnabledFeatures.cpp.
* page/RuntimeEnabledFeatures.h: Copied from Source/WebCore/bindings/generic/RuntimeEnabledFeatures.h.
Move files around.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210293 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAdd Exception accessor to ExceptionOr to remove unnecessary releases
commit-queue@webkit.org [Wed, 4 Jan 2017 23:00:00 +0000 (23:00 +0000)]
Add Exception accessor to ExceptionOr to remove unnecessary releases
https://bugs.webkit.org/show_bug.cgi?id=166692

Patch by Sam Weinig <sam@webkit.org> on 2017-01-04
Reviewed by Alex Christensen.

* Modules/webdatabase/DatabaseManager.cpp:
(WebCore::DatabaseManager::openDatabaseBackend):
Use new exception() function.

* dom/ExceptionOr.h:
(WebCore::ExceptionOr<ReturnType>::exception):
(WebCore::ExceptionOr<void>::exception):
Add exception() function which returns the exception without releasing it.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210292 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoVersioning.
jmarcell@apple.com [Wed, 4 Jan 2017 22:56:07 +0000 (22:56 +0000)]
Versioning.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210291 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCorrect DOMWindow handling during FrameLoader::clear
bfulgham@apple.com [Wed, 4 Jan 2017 22:35:44 +0000 (22:35 +0000)]
Correct DOMWindow handling during FrameLoader::clear
https://bugs.webkit.org/show_bug.cgi?id=166357
<rdar://problem/29741862>

Reviewed by Andy Estes.

Make sure that we always clean up the DOM window when clearing Window properties, even if the document will
remain in the page cache. Since 'clearWindowShell' is only used in FrameLoader, divide it's beahvior into
two steps:

1. Rename 'clearWindowShell' to 'clearWIndowShellsNotMatchingDOMWindow' to better describe its function.
Switch to a modern C++ loop. Do not switch to the new DOMWindow here, but detach and clear existing
DOMWindow connections.

2. Add a new method 'setDOMWindowForWindowShell'. Complete switch to the new DOMWindow.

This change allows us to disconnect the old DOMWindow, perform the 'setDocument(nullptr)' operation, and then
connect to the new Window without leaving the loader in an inconsistent state.

* loader/bindings/js/ScriptController.cpp:
(WebCore::clearWindowShellsNotMatchingDOMWindow): Renamed from 'clearWindowShell'
(WebCore::setDOMWindowForWindowShell): Added.
* loader/bindings/js/ScriptController.h:
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clear): Revise to use the new two-step DOMWindow switch logic.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210288 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoSupport File Promise during drag for macOS.
enrica@apple.com [Wed, 4 Jan 2017 22:30:32 +0000 (22:30 +0000)]
Support File Promise during drag for macOS.
https://bugs.webkit.org/show_bug.cgi?id=165204
rdar://problem/19595567

Reviewed by Tim Horton.

Source/WebCore:

Adds the support for handling File Promise type during
drag. DragData now has the knowledge of the NSFilesPromisePboardType and
checks for the data type during drag.

* page/mac/DragControllerMac.mm:
(WebCore::DragController::dragOperation):
* platform/DragData.h:
(WebCore::DragData::setFileNames):
(WebCore::DragData::fileNames):
* platform/mac/DragDataMac.mm:
(WebCore::DragData::containsFiles):
(WebCore::DragData::numberOfFiles):
(WebCore::DragData::asFilenames):
(WebCore::DragData::containsCompatibleContent):
(WebCore::DragData::containsPromise):
(WebCore::DragData::asURL):

Source/WebKit/mac:

Adds support for dropping a File Promise in a WebView.
The implementation uses new File Promise API available in Sierra.

* Misc/WebNSPasteboardExtras.mm:
(+[NSPasteboard _web_dragTypesForURL]):
* WebView/WebView.mm:
(-[WebView performDragOperation:]):

Source/WebKit2:

Adds support for dropping a File Promise in a WKWebView.
The implementation uses new File Promise API available in Sierra.

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<DragData>::encode):
(IPC::ArgumentCoder<DragData>::decode):
* Shared/mac/PasteboardTypes.mm:
(WebKit::PasteboardTypes::forURL):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::createSandboxExtensionsIfNeeded):
(WebKit::WebViewImpl::performDragOperation):
(WebKit::maybeCreateSandboxExtensionFromPasteboard): Deleted.
(WebKit::createSandboxExtensionsForFileUpload): Deleted.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210287 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoREGRESSION (r210257): com.apple.WebKit.WebContent.Development crashed in com.apple...
weinig@apple.com [Wed, 4 Jan 2017 22:10:29 +0000 (22:10 +0000)]
REGRESSION (r210257): com.apple.WebKit.WebContent.Development crashed in com.apple.WebCore: WebCore::ExceptionOr<WTF::Ref<WebCore::Database> >::operator= + 14
<rdar://problem/29866398>

* wtf/Expected.h:
(WTF::Expected::swap):
Add missing calls to destroy() when moving things over each other in a union.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210286 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agostress/spread-calling.js timing out on the bots
sbarati@apple.com [Wed, 4 Jan 2017 21:31:50 +0000 (21:31 +0000)]
stress/spread-calling.js timing out on the bots
https://bugs.webkit.org/show_bug.cgi?id=166689
<rdar://problem/29779182>

Reviewed by Mark Lam.

* stress/spread-calling.js:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210285 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAssertion hit on redfin.com: ASSERTION FAILED: collection->length() > 1
cdumez@apple.com [Wed, 4 Jan 2017 21:26:05 +0000 (21:26 +0000)]
Assertion hit on redfin.com: ASSERTION FAILED: collection->length() > 1
https://bugs.webkit.org/show_bug.cgi?id=166687
<rdar://problem/29865854>

Reviewed by Darin Adler.

Source/WebCore:

We were mistakenly calling Document::addWindowNamedItem() / Document::removeWindowNamedItem()
for elements in Shadow DOMs. As a result, the windowNamedItem DocumentOrderedMap would
contain elements in shadow DOMs. This would cause the assertion to be hit in window's
named property getter because of the length mismatch between the windowNamedItem
DocumentOrderedMap and the WindowNameCollection.

Tests: fast/shadow-dom/document-named-property.html
       fast/shadow-dom/window-named-property.html

* dom/Element.cpp:
(WebCore::Element::updateNameForDocument):
(WebCore::Element::updateIdForDocument):
* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::parseAttribute):
* html/HTMLObjectElement.cpp:
(WebCore::HTMLObjectElement::updateDocNamedItem):

LayoutTests:

Add layout test coverage.

* fast/shadow-dom/document-named-property-expected.txt: Added.
* fast/shadow-dom/document-named-property.html: Added.
* fast/shadow-dom/window-named-property-expected.txt: Added.
* fast/shadow-dom/window-named-property.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210284 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Two editing tests are passing but marked as failure
rego@igalia.com [Wed, 4 Jan 2017 20:57:54 +0000 (20:57 +0000)]
[GTK] Two editing tests are passing but marked as failure

Unreviewed GTK gardening.

* platform/gtk/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210283 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWebAssembly JS API: add Module.sections
jfbastien@apple.com [Wed, 4 Jan 2017 19:27:01 +0000 (19:27 +0000)]
WebAssembly JS API: add Module.sections
https://bugs.webkit.org/show_bug.cgi?id=165159
<rdar://problem/29760326>

Reviewed by Mark Lam.

JSTests:

As described here: https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymodulecustomsections

* wasm/Builder.js: allow custom sections to be duplicated
* wasm/js-api/Module.customSection.js: Added.
(assert.throws.WebAssembly.Module.prototype.customSections):
(assert.eq):

Source/JavaScriptCore:

As described in: https://github.com/WebAssembly/design/blob/master/JS.md#webassemblymodulecustomsections

This was added for Emscripten, and is likely to be used soon.

* wasm/WasmFormat.h: custom sections are just name + bytes
* wasm/WasmModuleParser.cpp: parse them, instead of skipping over
* wasm/WasmModuleParser.h:
* wasm/js/WebAssemblyModulePrototype.cpp: construct the Array of
ArrayBuffer as described in the spec
(JSC::webAssemblyModuleProtoCustomSections):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210282 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRelease pointer lock when page state is reset for any reason, not just for process...
commit-queue@webkit.org [Wed, 4 Jan 2017 19:23:48 +0000 (19:23 +0000)]
Release pointer lock when page state is reset for any reason, not just for process exited.
https://bugs.webkit.org/show_bug.cgi?id=166654
<rdar://problem/29849769>

Patch by Jeremy Jones <jeremyj@apple.com> on 2017-01-04
Reviewed by Tim Horton.

Pointer lock was not being released when the window is closed.
Move the pointer lock to resetState() so it happens whenever the page is
reset, not just when it is reset after process exit.

* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::resetState): Release here.
(WebKit::WebPageProxy::resetStateAfterProcessExited): Don't release here.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210281 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoValidate the BCP47-ness of the language string passed to TrackBase::setLanguage()
wilander@apple.com [Wed, 4 Jan 2017 19:21:42 +0000 (19:21 +0000)]
Validate the BCP47-ness of the language string passed to TrackBase::setLanguage()
https://bugs.webkit.org/show_bug.cgi?id=123926

Reviewed by Jer Noble.

LayoutTests/imported/w3c:

* web-platform-tests/html/dom/reflection-embedded-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/HTMLElement/HTMLTrackElement/srclang-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.
* web-platform-tests/html/semantics/embedded-content/media-elements/interfaces/TextTrack/language-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.

Source/WebCore:

Test: media/media-source/only-bcp47-language-tags-accepted-as-valid.html

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::configureTextTrackGroup):
    Log message now includes the valid BCP 47 language too.
(WebCore::HTMLMediaElement::setSelectedTextTrack):
    Now sets preferred language to the valid BCP 47 language.
* html/track/TextTrack.cpp:
(WebCore::TextTrack::setLanguage):
    Removed fixme and aligned comments with new behavior.
* html/track/TrackBase.cpp:
(WebCore::TrackBase::TrackBase):
    Initializes m_validBCP47Language with language parameter.
(WebCore::isValidBCP47LanguageTag):
    New convenience function.
(WebCore::TrackBase::setLanguage):
    Sets m_validBCP47Language if the incoming tag is valid.
    Produces a console warning if the tag is invalid.
    The member m_language is set to the incoming tag regardless.
(WebCore::TrackBase::validBCP47Language):
    New getter for valid language tag. To be used internally.
* html/track/TrackBase.h:
    New AtomicString member m_validBCP47Language.
(WebCore::TrackBase::setLanguage): Deleted.
* html/track/VideoTrack.cpp:
(WebCore::VideoTrack::setLanguage):
    Removed fixme and aligned comments with new behavior.
* page/CaptionUserPreferences.cpp:
(WebCore::trackDisplayName):
    Now uses the getter for BCP 47 language.
(WebCore::CaptionUserPreferences::textTrackLanguageSelectionScore):
    Now uses the getter for BCP 47 language.
* page/CaptionUserPreferencesMediaAF.cpp:
(WebCore::buildDisplayStringForTrackBase):
    Now uses the getter for BCP 47 language.
(WebCore::CaptionUserPreferencesMediaAF::textTrackSelectionScore):
    Now uses the getter for BCP 47 language.
(WebCore::textTrackCompare):
    Now uses the getter for BCP 47 language.
(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu):
    Now uses the getter for BCP 47 language.

LayoutTests:

* media/media-source/only-bcp47-language-tags-accepted-as-valid-expected.txt: Added.
* media/media-source/only-bcp47-language-tags-accepted-as-valid.html: Added.
* media/track/w3c/interfaces/HTMLTrackElement/srclang-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.
* media/track/w3c/interfaces/TextTrack/language-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.
* platform/ios-simulator-wk2/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.
* platform/ios-simulator/imported/w3c/web-platform-tests/html/dom/reflection-embedded-expected.txt:
    Expected text change since we now have console warnings for
    invalid language tags.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210280 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Cross Origin importScripts() scripts lack source URL, causes issues...
commit-queue@webkit.org [Wed, 4 Jan 2017 19:20:51 +0000 (19:20 +0000)]
Web Inspector: Cross Origin importScripts() scripts lack source URL, causes issues with Inspector showing Resource
https://bugs.webkit.org/show_bug.cgi?id=165569
<rdar://problem/29607569>

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-01-04
Reviewed by Youenn Fablet.

Source/WebCore:

Test: http/tests/inspector/worker/blob-script-with-cross-domain-imported-scripts.html

* Modules/fetch/FetchLoader.cpp:
(WebCore::FetchLoader::start):
* loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::didReceiveResponse):
* loader/ThreadableLoader.cpp:
(WebCore::ThreadableLoaderOptions::ThreadableLoaderOptions):
* loader/ThreadableLoader.h:
* loader/WorkerThreadableLoader.cpp:
(WebCore::LoaderTaskOptions::LoaderTaskOptions):
Add a new ThreadableLoader option to avoid filtering the response.

* workers/WorkerScriptLoader.cpp:
(WebCore::WorkerScriptLoader::loadSynchronously):
(WebCore::WorkerScriptLoader::loadAsynchronously):
Disable filtering of the response. This is an internal load, we
don't want to filter data that would be valuable later.

LayoutTests:

* http/tests/inspector/worker/blob-script-with-cross-domain-imported-scripts-expected.txt: Added.
* http/tests/inspector/worker/blob-script-with-cross-domain-imported-scripts.html: Added.
* http/tests/inspector/worker/resources/worker-blob-import-script.js: Added.
* http/tests/inspector/worker/resources/worker-blob-script.js: Added.
Ensure cross origin scripts imported by workers still get the correct Script URL.
Also this provides a test for worker started with a blob URL.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210279 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWe don't properly handle exceptions inside the nativeCallTrampoline macro in the...
sbarati@apple.com [Wed, 4 Jan 2017 19:11:23 +0000 (19:11 +0000)]
We don't properly handle exceptions inside the nativeCallTrampoline macro in the LLInt
https://bugs.webkit.org/show_bug.cgi?id=163720

Reviewed by Mark Lam.

JSTests:

* stress/bound-function-tail-call-with-exception.js: Added.
(bar):
(foo):
(catch):

Source/JavaScriptCore:

In the LLInt, we were incorrectly doing the exception check after the call.
Before the exception check, we were unwinding to our caller's
frame under the assumption that our caller was always a JS frame.
This is incorrect, however, because our caller might be a C frame.
One way that it can be a C frame is when C calls to JS, and JS tail
calls to native. This patch fixes this bug by doing unwinding from
the native callee's frame instead of its callers.

* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210276 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRemove final custom binding from IDBRequest
weinig@apple.com [Wed, 4 Jan 2017 17:48:58 +0000 (17:48 +0000)]
Remove final custom binding from IDBRequest
https://bugs.webkit.org/show_bug.cgi?id=166671

Reviewed by Alex Christensen.

* CMakeLists.txt:
* WebCore.xcodeproj/project.pbxproj:
Remove JSIDBRequestCustom.cpp

* bindings/js/JSIDBRequestCustom.cpp: Removed.

* Modules/indexeddb/IDBRequest.cpp:
(WebCore::IDBRequest::IDBRequest):
(WebCore::IDBRequest::~IDBRequest):
(WebCore::IDBRequest::result):
(WebCore::IDBRequest::setSource):
(WebCore::IDBRequest::sourceObjectStoreIdentifier):
(WebCore::IDBRequest::sourceIndexIdentifier):
(WebCore::IDBRequest::requestedIndexRecordType):
(WebCore::IDBRequest::setResult):
(WebCore::IDBRequest::setResultToStructuredClone):
(WebCore::IDBRequest::setResultToUndefined):
(WebCore::IDBRequest::resultCursor):
(WebCore::IDBRequest::willIterateCursor):
(WebCore::IDBRequest::didOpenOrIterateCursor):
(WebCore::IDBRequest::source): Deleted.
(WebCore::IDBRequest::clearResult): Deleted.
* Modules/indexeddb/IDBRequest.h:
(WebCore::IDBRequest::source):
(WebCore::IDBRequest::cursorResult): Deleted.
(WebCore::IDBRequest::databaseResult): Deleted.
(WebCore::IDBRequest::scriptResult): Deleted.
Replace multiple member variables with Variants for source and result. Add a result
member function that properly sets an exception if not "done".

* Modules/indexeddb/IDBRequest.idl:
Remove CustomGetter annotation and add type.

* bindings/generic/IDLTypes.h:
(WebCore::IDLAny::nullValue):
(WebCore::IDLAny::isNullValue):
(WebCore::IDLAny::extractValueFromNullable):
* bindings/js/JSDOMConvert.h:
(WebCore::Converter<IDLAny>::convert):
Flesh out IDLAny to be implemented as a Strong<Unknown> when used in aggregate types,
but still work with JSValue when passing as a parameter.

* inspector/InspectorIndexedDBAgent.cpp:
Update for new return value of IDBRequest::result().

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210275 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUnreviewed cmake buildfix after r210266.
ossy@webkit.org [Wed, 4 Jan 2017 13:59:44 +0000 (13:59 +0000)]
Unreviewed cmake buildfix after r210266.

* DumpRenderTree/PlatformMac.cmake:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210274 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoProvide a setting for clients to always prefer low-power WebGL
timothy_horton@apple.com [Wed, 4 Jan 2017 08:55:38 +0000 (08:55 +0000)]
Provide a setting for clients to always prefer low-power WebGL
https://bugs.webkit.org/show_bug.cgi?id=166675
<rdar://problem/29834093>

Reviewed by Dan Bernstein.

No new tests; as noted in r204664, we don't know how to reliably test
automatic graphics switching. One could use the manual test introduced
in that commit; after this commit, with the setting switched on, on a
dual-GPU machine that is actively using integrated graphics, that test
should return the same result for both contexts.

* page/Settings.in:
Add a setting to prefer low-power WebGL.

* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::create):
If said setting is enabled, set preferLowPowerToHighPerformance.

* WebView/WebPreferenceKeysPrivate.h:
* WebView/WebPreferences.mm:
(+[WebPreferences initialize]):
(-[WebPreferences preferLowPowerWebGLRendering]):
(-[WebPreferences setPreferLowPowerWebGLRendering:]):
* WebView/WebPreferencesPrivate.h:
* WebView/WebView.mm:
(-[WebView _preferencesChanged:]):
Expose a new private preferLowPowerWebGLRendering WebKit1 preference.

* MiniBrowser/mac/Info.plist:
Have MiniBrowser claim to be a modern app that supports
automatic graphics switching. WebKit needs to support automatic
graphics switching, so our test app might as well. Without this
Info.plist parameter, this change has no effect, and bringing up
a WebGL context still brings up the discrete GPU (also true of the
existing web-exposed preferLowPowerToHighPerformance API).

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210273 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoUse prctl to name thread on Linux
utatane.tea@gmail.com [Wed, 4 Jan 2017 08:29:52 +0000 (08:29 +0000)]
Use prctl to name thread on Linux
https://bugs.webkit.org/show_bug.cgi?id=166663

Reviewed by Michael Catanzaro.

It is quite useful if we can name threads. This name will be shown in GDB.
While macOS uses pthread_setname_np, we can use prctl on Linux.

* wtf/ThreadingPthreads.cpp:
(WTF::initializeCurrentThreadInternal):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210272 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's...
utatane.tea@gmail.com [Wed, 4 Jan 2017 07:52:05 +0000 (07:52 +0000)]
WorkQueueGeneric's platformInvalidate() can deadlock when called on the RunLoop's thread
https://bugs.webkit.org/show_bug.cgi?id=166645

Reviewed by Carlos Garcia Campos.

Source/WTF:

WorkQueue can be destroyed on its invoking thread itself.
The scenario is the following.

    1. Create WorkQueue (in thread A).
    2. Dispatch a task (in thread A, dispatching a task to thread B).
    3. Deref in thread A.
    4. The task is executed in thread B.
    5. Deref in thread B.
    6. The WorkQueue is destroyed, calling platformInvalidate in thread B.

In that case, if platformInvalidate waits thread B's termination, it causes deadlock.
We do not need to wait the thread termination.

* wtf/WorkQueue.h:
* wtf/generic/WorkQueueGeneric.cpp:
(WorkQueue::platformInitialize):
(WorkQueue::platformInvalidate):

Tools:

* TestWebKitAPI/Tests/WTF/WorkQueue.cpp:
(TestWebKitAPI::TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210271 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoPlace all the Cocoa WebCore API tests in the same directory
aestes@apple.com [Wed, 4 Jan 2017 03:52:03 +0000 (03:52 +0000)]
Place all the Cocoa WebCore API tests in the same directory
https://bugs.webkit.org/show_bug.cgi?id=166673

Reviewed by Michael Catanzaro.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/cocoa/SerializedCryptoKeyWrap.mm: Renamed from Tools/TestWebKitAPI/Tests/WebCore/SerializedCryptoKeyWrap.mm.
* TestWebKitAPI/Tests/WebCore/cocoa/URLExtras.mm: Renamed from Tools/TestWebKitAPI/Tests/Cocoa/URLExtras.mm.
* TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm: Renamed from Tools/TestWebKitAPI/Tests/WebCore/WebCoreNSURLSession.mm.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210268 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agolabel element with tabindex >= 0 is not focusable
rniwa@webkit.org [Wed, 4 Jan 2017 03:39:39 +0000 (03:39 +0000)]
label element with tabindex >= 0 is not focusable
https://bugs.webkit.org/show_bug.cgi?id=102780
<rdar://problem/29796608>

Reviewed by Darin Adler.

Source/WebCore:

Fixed the bug by removing the override for HTMLLabelElement::isFocusable which always returned false.

This is a behavior from r5532 but it doesn't match the latest HTML specification or that of Chrome
and Firefox.

Also fixed an existing bug in HTMLLabelElement::focus and HTMLLegendElement::focus which focused
the associated form control when there is one even if the element itself is focusable. Without this fix,
traversing from control with shift+tab would break since focusing the label would move the focus back
to the input element inside the label element.

Finally, fixed a bug in HTMLLegendElement::focus that we can call inFocus without updating layout first.

The fix was inspired by https://chromium.googlesource.com/chromium/src/+/085ad8697b1be50c4f93e296797a25a43a79bcfb

Test: fast/events/focus-label-legend-elements-with-tabindex.html

* html/HTMLLabelElement.cpp:
(WebCore::HTMLLabelElement::focus):
(WebCore::HTMLLabelElement::isFocusable): Deleted.
* html/HTMLLabelElement.h:
* html/HTMLLegendElement.cpp:
(WebCore::HTMLLegendElement::focus):

LayoutTests:

Added a regression test for traversing label and legend elements by tabbing.
A native merge of the blink fix would have regressed this for the label element
while the bug in the legend element had always existed.

Also added a regression test for focusing label and legend elements with tabindex.
We should be able to focus either element. New behavior matches that of Chrome.
Firefox moves the focus to the label element like we used to before this patch.

Also merge the test fix from https://chromium.googlesource.com/chromium/src/+/085ad8697b1be50c4f93e296797a25a43a79bcfb

* fast/events/focus-label-legend-elements-expected.txt: Added.
* fast/events/focus-label-legend-elements-with-tab-expected.txt: Added.
* fast/events/focus-label-legend-elements-with-tab.html: Added.
* fast/events/focus-label-legend-elements.html: Added.
* fast/events/resources/tabindex-focus-blur-all-frame1.html:
* fast/events/resources/tabindex-focus-blur-all-frame2.html:
* fast/events/resources/tabindex-focus-blur-all.js:
* fast/events/tabindex-focus-blur-all-expected.txt:
* platform/ios-simulator-wk2/TestExpectations:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210267 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoNSSpellChecker's recordResponse isn't called for unseen automatic corrections
timothy_horton@apple.com [Wed, 4 Jan 2017 03:13:22 +0000 (03:13 +0000)]
NSSpellChecker's recordResponse isn't called for unseen automatic corrections
https://bugs.webkit.org/show_bug.cgi?id=166450
<rdar://problem/29447824>

Reviewed by Darin Adler.

Source/WebCore:

Test: editing/mac/spelling/accept-unseen-candidate-records-acceptance.html

* editing/AlternativeTextController.cpp:
(WebCore::AlternativeTextController::recordAutocorrectionResponse):
(WebCore::AlternativeTextController::recordAutocorrectionResponseReversed): Deleted.
* editing/AlternativeTextController.h:
Add recordAutocorrectionResponse, which takes a AutocorrectionResponseType, instead of having
a function specifically for reverted autocorrections. Also, get rid of the unnecessary indirection
of the private overload of recordAutocorrectionResponseReversed, since there's only one caller.

* editing/Editor.cpp:
(WebCore::Editor::markAndReplaceFor):
Call recordAutocorrectionResponse with Accepted when performing an auto-autocorrection.

(WebCore::Editor::changeBackToReplacedString):
Adopt recordAutocorrectionResponse.

* page/AlternativeTextClient.h:
Add an "AutocorrectionAccepted" response type.

Source/WebKit/mac:

* WebCoreSupport/CorrectionPanel.h:
* WebCoreSupport/CorrectionPanel.mm:
(CorrectionPanel::recordAutocorrectionResponse):
(CorrectionPanel::handleAcceptedReplacement):
* WebCoreSupport/WebAlternativeTextClient.mm:
(toCorrectionResponse):
(WebAlternativeTextClient::recordAutocorrectionResponse):
Funnel all calls to recordResponse:toCorrection:forWord:language:inSpellDocumentWithTag:
through recordAutocorrectionResponse, for debugging's sake.
Drop the NSView parameter because we don't need it, just the tag.
Convert the new AutocorrectionResponseType value to its corresponding
NSCorrectionResponse value.

Source/WebKit2:

* UIProcess/mac/CorrectionPanel.h:
* UIProcess/mac/CorrectionPanel.mm:
(WebKit::CorrectionPanel::recordAutocorrectionResponse):
(WebKit::CorrectionPanel::handleAcceptedReplacement):
Funnel all calls to recordResponse:toCorrection:forWord:language:inSpellDocumentWithTag:
through recordAutocorrectionResponse, for debugging's sake.
Drop the NSView parameter because we don't need it, just the tag.

* UIProcess/mac/PageClientImpl.mm:
(WebKit::toCorrectionResponse):
(WebKit::PageClientImpl::recordAutocorrectionResponse):
Convert the new AutocorrectionResponseType value to its corresponding
NSCorrectionResponse value.

Tools:

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/TestRunner.cpp:
(TestRunner::staticFunctions):
* DumpRenderTree/mac/TestRunnerMac.mm:
(setSpellCheckerLoggingEnabledCallback):
* DumpRenderTree/win/TestRunnerWin.cpp:
(setSpellCheckerLoggingEnabledCallback):
* DumpRenderTree/mac/DumpRenderTree.mm:
(resetWebViewToConsistentStateBeforeTesting):
* DumpRenderTree/mac/DumpRenderTreeSpellChecker.h: Added.
* DumpRenderTree/mac/DumpRenderTreeSpellChecker.mm: Added.
(stringForCorrectionResponse):
(drt_NSSpellChecker_recordResponseToCorrection):
(swizzleNSSpellCheckerMethodsIfNeeded):
(setSpellCheckerLoggingEnabled):
Add a new testRunner method, setSpellCheckerLoggingEnabled, which, when
set to true, logs to stdout (which ends up in the test result) whenever
NSSpellChecker recordResponse:toCorrection:forWord:language:inSpellDocumentWithTag:
is called, and then calls the original method. It is reset to false between tests.

LayoutTests:

* editing/editing.js:
(runEditingTest):
(runEditingTestWithCallbackLogging):
Add a way to run an editing test without enabling noisy editing callback logging.

* editing/mac/spelling/accept-unseen-candidate-records-acceptance-expected.txt: Added.
* editing/mac/spelling/accept-unseen-candidate-records-acceptance.html: Added.
Add a test that ensures that we correctly inform NSSpellChecker of an
accepted unseen correction.

* platform/mac-wk2/TestExpectations:
Disable the test because spelling tests don't work in WebKit2 at all.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210266 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAX: Focus should jump into modal dialogs when one appears
n_wang@apple.com [Wed, 4 Jan 2017 03:07:03 +0000 (03:07 +0000)]
AX: Focus should jump into modal dialogs when one appears
https://bugs.webkit.org/show_bug.cgi?id=166670

Reviewed by Chris Fleizach.

Source/WebCore:

Added a timer to let focus jump into a modal dialog if the web
author didn't handle the focus movement.

Test: accessibility/mac/aria-modal-auto-focus.html

* accessibility/AXObjectCache.cpp:
(WebCore::AXObjectCache::AXObjectCache):
(WebCore::AXObjectCache::~AXObjectCache):
(WebCore::firstFocusableChild):
(WebCore::AXObjectCache::focusAriaModalNode):
(WebCore::AXObjectCache::focusAriaModalNodeTimerFired):
(WebCore::AXObjectCache::handleAriaModalChange):
* accessibility/AXObjectCache.h:
(WebCore::AXObjectCache::focusAriaModalNode):

LayoutTests:

* accessibility/mac/aria-modal-auto-focus-expected.txt: Added.
* accessibility/mac/aria-modal-auto-focus.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210265 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: WrappedPromise constructor should behave like the Promise constructor
bburg@apple.com [Wed, 4 Jan 2017 01:32:13 +0000 (01:32 +0000)]
Web Inspector: WrappedPromise constructor should behave like the Promise constructor
https://bugs.webkit.org/show_bug.cgi?id=166523

Reviewed by Joseph Pecoraro.

Source/WebInspectorUI:

* UserInterface/Models/WrappedPromise.js:
(WebInspector.WrappedPromise):
- Return the result of 'work' from the inner promise
so WrappedPromise.promise can be chained.
- Provide shim resolve, reject callbacks as parameters.

(WebInspector.WrappedPromise.prototype.get settled): Added.
Tells whether we already resolved or rejected the promise.

(WebInspector.WrappedPromise.prototype.resolve):
(WebInspector.WrappedPromise.prototype.reject):
Throw an error if already settled and update the flag.

LayoutTests:

* inspector/unit-tests/wrapped-promise-expected.txt: Added.
* inspector/unit-tests/wrapped-promise.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210261 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: color picker should feature an editable CSS value
commit-queue@webkit.org [Wed, 4 Jan 2017 01:26:58 +0000 (01:26 +0000)]
Web Inspector: color picker should feature an editable CSS value
https://bugs.webkit.org/show_bug.cgi?id=124356

Patch by Devin Rousso <dcrousso+webkit@gmail.com> on 2017-01-03
Reviewed by Brian Burg.

* UserInterface/Views/ColorPicker.css:
(.color-picker):
(.color-picker > .color-inputs):
(.color-picker > .color-inputs > div):
(.color-picker > .color-inputs > div[hidden]):
(.color-picker > .color-inputs input):

* UserInterface/Views/ColorPicker.js:
(WebInspector.ColorPicker.createColorInput):
(WebInspector.ColorPicker):
(WebInspector.ColorPicker.prototype.set color):
(WebInspector.ColorPicker.prototype.sliderValueDidChange):
(WebInspector.ColorPicker.prototype._updateColor):
(WebInspector.ColorPicker.prototype._showColorComponentInputs.updateColorInput):
(WebInspector.ColorPicker.prototype._showColorComponentInputs):
(WebInspector.ColorPicker.prototype._handleColorInputInput):
Add an input element (with a label for the component name and its units) for each component
as part of the current color format (e.g. R, G, B, A).  If any of these inputs are changed
then the color is also changed and the "ColorChanged" event is fired.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210260 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoREGRESSION (r210244): Release JSC Stress test failure: wasm.yaml/wasm/js-api/wasm...
jfbastien@apple.com [Wed, 4 Jan 2017 01:14:59 +0000 (01:14 +0000)]
REGRESSION (r210244): Release JSC Stress test failure: wasm.yaml/wasm/js-api/wasm-to-wasm.js.default-wasm
https://bugs.webkit.org/show_bug.cgi?id=166669
<rdar://problem/29856455>

Reviewed by Saam Barati.

Bug #165282 added wasm -> wasm calls, but caused crashes in
release builds because the pinned registers are also callee-saved
and were being clobbered. B3 didn't see itself clobbering them
when no memory was used, and therefore omitted a restore.

This was causing the C++ code in callWebAssemblyFunction to crash
because $r12 was 0, and it expected it to have its value prior to
the call.

* wasm/WasmB3IRGenerator.cpp:
(JSC::Wasm::createJSToWasmWrapper):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210259 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRename SharedBufferMac.mm to SharedBufferCocoa.mm
aestes@apple.com [Wed, 4 Jan 2017 00:36:32 +0000 (00:36 +0000)]
Rename SharedBufferMac.mm to SharedBufferCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=166666

Reviewed by Tim Horton.

* PlatformMac.cmake:
* WebCore.xcodeproj/project.pbxproj:
* platform/cocoa/SharedBufferCocoa.mm: Renamed from Source/WebCore/platform/mac/SharedBufferMac.mm.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210258 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoRe-implement ExceptionOr on top of WTF::Expected
commit-queue@webkit.org [Wed, 4 Jan 2017 00:33:39 +0000 (00:33 +0000)]
Re-implement ExceptionOr on top of WTF::Expected
https://bugs.webkit.org/show_bug.cgi?id=166668

Patch by Sam Weinig <sam@webkit.org> on 2017-01-03
Reviewed by Alex Christensen.

As a first step towards using WTF::Expected instead of ExceptionOr,
use Expected as an implementation detail, rather than Variant/std::optional.

* crypto/algorithms/CryptoAlgorithmAES_KW.cpp:
* crypto/algorithms/CryptoAlgorithmHMAC.cpp:
* crypto/algorithms/CryptoAlgorithmRSAES_PKCS1_v1_5.cpp:
* crypto/algorithms/CryptoAlgorithmRSASSA_PKCS1_v1_5.cpp:
* crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:
Add missing #include of Variant.h

* dom/ExceptionOr.h:
(WebCore::ExceptionOr<ReturnType>::ExceptionOr):
(WebCore::ExceptionOr<ReturnType>::hasException):
(WebCore::ExceptionOr<ReturnType>::releaseException):
(WebCore::ExceptionOr<ReturnType>::releaseReturnValue):
(WebCore::ExceptionOr<void>::ExceptionOr):
(WebCore::ExceptionOr<void>::hasException):
(WebCore::ExceptionOr<void>::releaseException):
Re-implement on top of Expected.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210257 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMake setting Event's cancelBubble to false a no-op
cdumez@apple.com [Tue, 3 Jan 2017 23:51:39 +0000 (23:51 +0000)]
Make setting Event's cancelBubble to false a no-op
https://bugs.webkit.org/show_bug.cgi?id=166018

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Merge https://github.com/w3c/web-platform-tests/pull/4304 to extend / fix
test coverage.

* web-platform-tests/dom/events/Event-cancelBubble-expected.txt: Added.
* web-platform-tests/dom/events/Event-cancelBubble.html: Added.
* web-platform-tests/dom/events/Event-dispatch-bubble-canceled-expected.txt: Added.
* web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html: Added.
* web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble-expected.txt: Added.
* web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html: Added.
* web-platform-tests/dom/events/Event-initEvent.html:
* web-platform-tests/dom/events/Event-propagation-expected.txt:
* web-platform-tests/dom/events/Event-propagation.html:
* web-platform-tests/dom/events/w3c-import.log:

Source/WebCore:

Align behavior of Event.cancelBubble with the latest DOM specification:
- https://dom.spec.whatwg.org/#dom-event-cancelbubble

Setting it to true sets the 'stop propagation' flag to true and setting
it to false is now a no-op.

Tests: imported/w3c/web-platform-tests/dom/events/Event-cancelBubble.html
       imported/w3c/web-platform-tests/dom/events/Event-dispatch-bubble-canceled.html
       imported/w3c/web-platform-tests/dom/events/Event-dispatch-multiple-cancelBubble.html

* Modules/indexeddb/IDBEventDispatcher.cpp:
(WebCore::IDBEventDispatcher::dispatch):
* dom/Event.h:
(WebCore::Event::cancelBubble):
(WebCore::Event::setCancelBubble):
* dom/EventDispatcher.cpp:
(WebCore::dispatchEventInDOM):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210254 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoMake WTF::Expected support Ref template parameters
weinig@apple.com [Tue, 3 Jan 2017 23:18:45 +0000 (23:18 +0000)]
Make WTF::Expected support Ref template parameters
https://bugs.webkit.org/show_bug.cgi?id=166662

Reviewed by Alex Christensen.

Source/WTF:

Tests: Added to TestWebKitAPI/Expected.cpp

* wtf/Expected.h:
(WTF::UnexpectedType::value):
Add overloads based on this value type to allow getting at the value
as an rvalue for moving the error into the Expected.

(WTF::Expected::Expected):
Add overload that takes an ErrorType/UnexpectedType<ErrorType> as an rvalue.

(WTF::Expected::swap):
Move the temporary value/error rather than copying.

Tools:

* TestWebKitAPI/Tests/WTF/Expected.cpp:
(TestWebKitAPI::TEST):
Add tests for using Ref with Expected.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210253 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: "Invalid Characters" setting does the opposite of the checkbox
commit-queue@webkit.org [Tue, 3 Jan 2017 23:06:52 +0000 (23:06 +0000)]
Web Inspector: "Invalid Characters" setting does the opposite of the checkbox
https://bugs.webkit.org/show_bug.cgi?id=166664

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2017-01-03
Reviewed by Brian Burg.

* UserInterface/Views/CodeMirrorOverrides.css:
(.CodeMirror .cm-invalidchar):
(.show-invalid-characters .CodeMirror .cm-invalidchar):
Hide invalid characters by default, and show them with the show class.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210252 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Address failures under LayoutTests/inspector/debugger/stepping
joepeck@webkit.org [Tue, 3 Jan 2017 22:31:25 +0000 (22:31 +0000)]
Web Inspector: Address failures under LayoutTests/inspector/debugger/stepping
https://bugs.webkit.org/show_bug.cgi?id=166300

Reviewed by Brian Burg.

Source/JavaScriptCore:

* debugger/Debugger.cpp:
(JSC::Debugger::continueProgram):
When continuing, clear states that would have had us pause again.

* inspector/agents/InspectorDebuggerAgent.cpp:
(Inspector::InspectorDebuggerAgent::didBecomeIdle):
When resuming after becoming idle, be sure to clear Debugger state.

LayoutTests:

* inspector/debugger/stepping/stepping-classes-expected.txt:
Rebaseline these results to new column values.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210251 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: Fix Content Flow Container Regions Computed Style section
joepeck@webkit.org [Tue, 3 Jan 2017 22:31:22 +0000 (22:31 +0000)]
Web Inspector: Fix Content Flow Container Regions Computed Style section
https://bugs.webkit.org/show_bug.cgi?id=166294

Reviewed by Brian Burg.

Source/WebInspectorUI:

* UserInterface/Controllers/DOMTreeManager.js:
(WebInspector.DOMTreeManager.prototype._coerceRemoteArrayOfDOMNodes):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.domNodeResolved):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.remoteObjectPropertiesAvailable):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo):
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getComputedProperty): Deleted.
(WebInspector.DOMTreeManager.prototype.getNodeContentFlowInfo.backendFunction.getContentFlowName): Deleted.
Update this to use Array.from() to convert the NodeList to an Array, and then
use the already available RemoteObject's size property instead of getting the
"length" property from the Array.

LayoutTests:

* inspector/dom/content-flow-list.html:
Update the domTree across navigations. Also dynamically add the flows to
ensure we get the events.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210250 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWeb Inspector: opening Test.html in a normal browser window doesn't log errors to...
bburg@apple.com [Tue, 3 Jan 2017 22:12:27 +0000 (22:12 +0000)]
Web Inspector: opening Test.html in a normal browser window doesn't log errors to console
https://bugs.webkit.org/show_bug.cgi?id=166570

Reviewed by Joseph Pecoraro.

Early syntax errors in the test harness should be logged to the page console since they are easier to
debug in a normal browser using Web Inspector. But, the checks to revert to normal console don't work.

* UserInterface/Test/FrontendTestHarness.js:
(FrontendTestHarness.prototype.reportUncaughtException):
Add a helper to encapsulate the meaning of checking this._shouldResendResults.
This flag is always true until the test page injects its initializers into the
inspector page, which will never happen when we view Test.html outside of the test harness.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210249 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoCheck for the existence of AVSampleBufferAudioRenderer.h before redeclaring AVSampleB...
jer.noble@apple.com [Tue, 3 Jan 2017 22:03:33 +0000 (22:03 +0000)]
Check for the existence of AVSampleBufferAudioRenderer.h before redeclaring AVSampleBufferAudioRenderer
https://bugs.webkit.org/show_bug.cgi?id=166421
<rdar://problem/29782862>

Reviewed by Dan Bernstein.

Follow up after r210099; fix the __has_include directive to include the framework and fix the #import inside #if.

* platform/spi/mac/AVFoundationSPI.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210248 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAnother attempt to fix the Apple Sierra Release 32-bit Build following <https://trac...
dbates@webkit.org [Tue, 3 Jan 2017 20:53:22 +0000 (20:53 +0000)]
Another attempt to fix the Apple Sierra Release 32-bit Build following <https://trac.webkit.org/changeset/210075>
(https://bugs.webkit.org/show_bug.cgi?id=166367)

Guard more code in WebViewImpl::handleRequestedCandidates() inside HAVE(TOUCH_BAR).
Remove unused local variable weakThis.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::handleRequestedCandidates):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210247 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoREGRESSION(r210226): fast/history/back-from-page-with-focused-iframe.html crashes...
akling@apple.com [Tue, 3 Jan 2017 20:46:08 +0000 (20:46 +0000)]
REGRESSION(r210226): fast/history/back-from-page-with-focused-iframe.html crashes under GuardMalloc
<https://webkit.org/b/166657>
<rdar://problem/29848806>

Reviewed by Antti Koivisto.

The problem was that tearDownRenderers() would cause commit Widget hierarchy updates
before returning, which is just before Document clears its m_renderView pointer.
This led to an awkward callback into Page::setActivityState() which ended up trying
to clear the selection inside a partially dead render tree.

Fix this by adding a WidgetHierarchyUpdatesSuspensionScope to Document::destroyRenderTree()
which ensures that Widget updates don't happen until after Document::m_renderView is cleared.

* dom/Document.cpp:
(WebCore::Document::destroyRenderTree):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210246 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoAttempt to fix the Apple Sierra Release 32-bit Build following <https://trac.webkit...
dbates@webkit.org [Tue, 3 Jan 2017 20:32:49 +0000 (20:32 +0000)]
Attempt to fix the Apple Sierra Release 32-bit Build following <https://trac.webkit.org/changeset/210075>
(https://bugs.webkit.org/show_bug.cgi?id=166367)

Add HAVE(TOUCH_BAR)-guard around code that messages candidateListTouchBarItem() as
candidateListTouchBarItem() is only defined when building with Touch Bar support.

Also added an inline comment to help demarcate the code when building without Touch Bar
support. We should look to clean up WebViewImpl.mm including extracting out the Touch
Bar code to another file or better demarcating it so as to improve the hackability of
this code and prevent breaking the build when building without Touch Bar support.

* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::handleRequestedCandidates):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210245 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoWebAssembly JS API: check and test in-call / out-call values
jfbastien@apple.com [Tue, 3 Jan 2017 20:24:36 +0000 (20:24 +0000)]
WebAssembly JS API: check and test in-call / out-call values
https://bugs.webkit.org/show_bug.cgi?id=164876
<rdar://problem/29844107>

Reviewed by Saam Barati.

JSTests:

* wasm.yaml:
* wasm/assert.js: add an assert for NaN comparison
* wasm/fuzz/export-function.js: Added. Generate random wasm export
signatures, and call them with random parameters.
(const.paramExporter):
(const.setBuffer):
(const.types.generate):
(generate):
* wasm/js-api/export-arity.js: Added.
(const.paramExporter): Test that mismatched arities when JS calls
wasm follow the defined semantics: i32 is 0, f32 / f64 are NaN.
https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects
* wasm/js-api/export-void-is-undef.js: Added. Test that "void"
wasm functions return "undefined" in JS.

Source/JavaScriptCore:

* wasm/WasmBinding.cpp:
(JSC::Wasm::wasmToJs): fix the wasm -> JS call coercions for f32 /
f64 which the assotiated tests inadvertently tripped on: the
previous code wasn't correctly performing JSValue boxing for
"double" values. This change is slightly involved because it
requires two scratch registers to materialize the
`DoubleEncodeOffset` value. This change therefore reorganizes the
code to first generate traps, then handle all integers (freeing
all GPRs), and then all the floating-point values.
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction): Implement the defined semantics
for mismatched arities when JS calls wasm:
https://github.com/WebAssembly/design/blob/master/JS.md#exported-function-exotic-objects
  - i32 is 0, f32 / f64 are NaN.
  - wasm functions which return "void" are "undefined" in JS.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210244 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoPlaceholder style mechanism leaks CSSFontSelector for first Document styled.
akling@apple.com [Tue, 3 Jan 2017 18:53:04 +0000 (18:53 +0000)]
Placeholder style mechanism leaks CSSFontSelector for first Document styled.
<https://webkit.org/b/166652>

Reviewed by Antti Koivisto.

The placeholder style is used when we're resolving style for a non-rendered
element, or any element before stylesheets have loaded.

An old optimization had us reusing the same style each time, which meant that
since it was initialized with a font selector the first time, it kept that
font selector alive forever.

As we have to clone the style anyway, fix this by just making a new style
each time, using the current document's font selector.

* style/StyleTreeResolver.cpp:
(WebCore::Style::makePlaceholderStyle):
(WebCore::Style::TreeResolver::TreeResolver):
(WebCore::Style::TreeResolver::styleForElement):
(WebCore::Style::ensurePlaceholderStyle): Deleted.
(WebCore::Style::isPlaceholderStyle): Deleted.
* style/StyleTreeResolver.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210240 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years agoA floating element within <li> overlaps with the marker
clopez@igalia.com [Tue, 3 Jan 2017 15:02:26 +0000 (15:02 +0000)]
A floating element within <li> overlaps with the marker
https://bugs.webkit.org/show_bug.cgi?id=166528

Reviewed by Zalan Bujtas.

Source/WebCore:

Merged from Blink (patch by trobhogan@gmail.com):
https://crrev.com/c896e79e5ba348d7ed87438cd3a19d0176f3036d
https://crbug.com/548616

Establish a list marker's offset before floats have been added to its line.

Computing the offset for a list marker after the rest of the objects on the line
it is on have been laid out, means it will avoid floats it ought not to.

Instead, compute the offset when laying out the marker and cache it for use later.

Tests: fast/lists/list-marker-before-float-nested-rtl.html
       fast/lists/list-marker-before-float-nested.html
       fast/lists/list-marker-before-float-rtl.html
       fast/lists/list-marker-before-float.html

* rendering/RenderListItem.cpp:
(WebCore::RenderListItem::positionListMarker):
* rendering/RenderListMarker.cpp:
(WebCore::RenderListMarker::RenderListMarker):
(WebCore::RenderListMarker::layout):
* rendering/RenderListMarker.h:

LayoutTests:

* fast/lists/list-marker-before-float-expected.html: Added.
* fast/lists/list-marker-before-float-nested-expected.html: Added.
* fast/lists/list-marker-before-float-nested-rtl-expected.html: Added.
* fast/lists/list-marker-before-float-nested-rtl.html: Added.
* fast/lists/list-marker-before-float-nested.html: Added.
* fast/lists/list-marker-before-float-rtl-expected.html: Added.
* fast/lists/list-marker-before-float-rtl.html: Added.
* fast/lists/list-marker-before-float.html: Added.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210239 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[GTK] Expose WebKitSecurityOrigin API
mcatanzaro@igalia.com [Tue, 3 Jan 2017 11:59:28 +0000 (11:59 +0000)]
[GTK] Expose WebKitSecurityOrigin API
https://bugs.webkit.org/show_bug.cgi?id=166632

Source/WebKit2:

Patch by Michael Catanzaro  <mcatanzaro@igalia.com> and Carlos Garcia Campos <cgarcia@igalia.com> on 2017-01-03
Reviewed by Carlos Garcia Campos.

This API will be useful to have for various purposes, such as setting initial notification
permissions.

* PlatformGTK.cmake:
* UIProcess/API/gtk/WebKitAutocleanups.h:
* UIProcess/API/gtk/WebKitSecurityOrigin.cpp: Added.
(_WebKitSecurityOrigin::_WebKitSecurityOrigin):
(webkitSecurityOriginCreate):
(webkit_security_origin_new):
(webkit_security_origin_new_for_uri):
(webkit_security_origin_ref):
(webkit_security_origin_unref):
(webkit_security_origin_get_protocol):
(webkit_security_origin_get_host):
(webkit_security_origin_get_port):
(webkit_security_origin_is_opaque):
(webkit_security_origin_to_string):
* UIProcess/API/gtk/WebKitSecurityOrigin.h: Added.
* UIProcess/API/gtk/WebKitSecurityOriginPrivate.h: Added.
* UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt:
* UIProcess/API/gtk/docs/webkit2gtk-docs.sgml:
* UIProcess/API/gtk/webkit2.h:

Tools:

Reviewed by Carlos Garcia Campos.

* TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
* TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSecurityOrigin.cpp: Added.
(testSecurityOriginBasicConstructor):
(testSecurityOriginURIConstructor):
(testSecurityOriginDefaultPort):
(testSecurityOriginFileURI):
(testSecurityOriginDataURI):
(beforeAll):
(afterAll):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210238 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Win] jsc.exe sometimes never exits.
pvollan@apple.com [Tue, 3 Jan 2017 10:24:38 +0000 (10:24 +0000)]
[Win] jsc.exe sometimes never exits.
https://bugs.webkit.org/show_bug.cgi?id=158073

Reviewed by Darin Adler.

On Windows the thread specific destructor is also called when the main thread is exiting.
This may lead to the main thread waiting forever for the machine thread lock when exiting,
if the sampling profiler thread was terminated by the system while holding the machine
thread lock.

* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::removeThread):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210237 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[Win] Some xmlhttprequest tests are failing.
pvollan@apple.com [Tue, 3 Jan 2017 10:05:52 +0000 (10:05 +0000)]
[Win] Some xmlhttprequest tests are failing.
https://bugs.webkit.org/show_bug.cgi?id=166638

Reviewed by Darin Adler.

The tests are failing because the request timeout is set to zero.
When the timeout is set to zero, we should use the default timeout.

* platform/network/cf/ResourceRequestCFNet.cpp:
(WebCore::ResourceRequest::doUpdatePlatformRequest):
(WebCore::ResourceRequest::doUpdatePlatformHTTPBody):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210236 268f45cc-cd09-0410-ab3c-d52691b4dbfc

4 years ago[SOUP] Load options allowStoredCredentials = DoNotAllowStoredCredentials with clientC...
carlosgc@webkit.org [Tue, 3 Jan 2017 09:08:21 +0000 (09:08 +0000)]
[SOUP] Load options allowStoredCredentials = DoNotAllowStoredCredentials with clientCredentialPolicy = MayAskClientForCredentials doesn't work
https://bugs.webkit.org/show_bug.cgi?id=164471

Reviewed by Michael Catanzaro.

When DoNotAllowStoredCredentials is used we disable the SoupAuthManager feature for the message, but that
disables all HTTP authentication, causing the load to always fail with Authorization required even when
clientCredentialPolicy allows to ask the user for credentials. The problem is that even if we don't use the
WebCore credentials for that request, libsoup will always use its internal cache of SoupAuth if we enable the
SoupAuthManager feature. Libsoup 2.57.1 has new API to disable the use of cached credentials for a particular
message, adding the new message flag SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE.

* NetworkProcess/soup/NetworkDataTaskSoup.cpp:
(WebKit::NetworkDataTaskSoup::createRequest): Set SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE flag to disable cached
credentials for the message if libsoup >= 2.57.1 is used.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210235 268f45cc-cd09-0410-ab3c-d52691b4dbfc