WebKit-https.git
4 years agoWeb Inspector: delete key should work on multi-values visual sidebar grid sections
drousso@apple.com [Tue, 18 Aug 2015 04:11:09 +0000 (04:11 +0000)]
Web Inspector: delete key should work on multi-values visual sidebar grid sections
https://bugs.webkit.org/show_bug.cgi?id=148110

Reviewed by Timothy Hatcher.

* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js:
(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._listElementKeyDown):
If the backspace/delete key is pressed when focus is within the list element, delete
the selected list item if it is not currently being edited (if it has an editor).

* UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.get currentlyEditing):

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

4 years agoWeb Inspector: web fonts or unknown fonts show up as Times in visual sidebar
drousso@apple.com [Tue, 18 Aug 2015 04:08:47 +0000 (04:08 +0000)]
Web Inspector: web fonts or unknown fonts show up as Times in visual sidebar
https://bugs.webkit.org/show_bug.cgi?id=148103

Reviewed by Timothy Hatcher.

* UserInterface/Views/VisualStyleFontFamilyTreeElement.js:
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
Fonts now fall back to sans-serif and -apple-system if they do not exist.

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

4 years agoFollow up patch after r188566
mmaxfield@apple.com [Tue, 18 Aug 2015 02:44:14 +0000 (02:44 +0000)]
Follow up patch after r188566

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

4 years agoAdd const to content extension parser
commit-queue@webkit.org [Tue, 18 Aug 2015 02:25:10 +0000 (02:25 +0000)]
Add const to content extension parser
https://bugs.webkit.org/show_bug.cgi?id=148044

Patch by Alex Christensen <achristensen@webkit.org> on 2015-08-17
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

* runtime/JSObject.h:
(JSC::JSObject::getIndexQuickly):
(JSC::JSObject::tryGetIndexQuickly):
(JSC::JSObject::getDirectIndex):
(JSC::JSObject::getIndex):
Added a few const keywords.

Source/WebCore:

* contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::containsOnlyASCIIWithNoUppercase):
(WebCore::ContentExtensions::getDomainList):
(WebCore::ContentExtensions::getTypeFlags):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):
(WebCore::ContentExtensions::loadRule):
(WebCore::ContentExtensions::loadEncodedRules):
Add const.  No change in behavior.

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

4 years ago[OS X] Remove support for composite fonts
mmaxfield@apple.com [Tue, 18 Aug 2015 02:07:57 +0000 (02:07 +0000)]
[OS X] Remove support for composite fonts
https://bugs.webkit.org/show_bug.cgi?id=147920

Reviewed by Dan Bernstein.

Source/WebCore:

WebKit maintains a cache of code point to glyph mapping for a particular font. One of
the ways WebKit populates this cache is to create a string holding consecutive code
points, create a CTLineRef from the string, and use CTRunGetGlyphs() with
CTRunGetStringIndices() to map from the code points to the glyphs. This approach is
fundamentally incorrect, as it will combine consecutive code points together in the
string if possible to produce a glyph.

The only way WebKit will ever trigger this code path is if we are inspecting a
composite font, first introduced in [1]. These composite fonts are extremely rare
because:
1. None of the preinstalled fonts on either OS X nor iOS are composite fonts,
2. WebKit does not support loading web fonts from composite font files, and
3. WebKit's support only ever existed on OS X (none of the other ports).

In fact, no one I've consulted with has ever seen any of these fonts used in the wild.
The fonts also require a fundamentally broken code path, and add complexity to WebKit.

[1] https://bugs.webkit.org/attachment.cgi?id=134923&action=review

No new tests.

* platform/graphics/Font.h:
* platform/graphics/FontPlatformData.cpp:
(WebCore::FontPlatformData::FontPlatformData): Deleted.
(WebCore::FontPlatformData::operator=): Deleted.
* platform/graphics/FontPlatformData.h:
(WebCore::FontPlatformData::isCompositeFontReference): Deleted.
(WebCore::FontPlatformData::operator==): Deleted.
* platform/graphics/cocoa/FontCocoa.mm:
(WebCore::Font::compositeFontReferenceFont): Deleted.
* platform/graphics/cocoa/FontPlatformDataCocoa.mm:
(WebCore::FontPlatformData::FontPlatformData): Deleted.
(WebCore::FontPlatformData::setFont): Deleted.
* platform/graphics/mac/GlyphPageMac.cpp:
(WebCore::shouldUseCoreText):
(WebCore::GlyphPage::fill):

Tools:

* DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
* DumpRenderTree/fonts/SampleFont.sfont: Removed.
* DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
* DumpRenderTree/mac/Configurations/DumpRenderTreeApp.xcconfig:
* DumpRenderTree/mac/DumpRenderTree.mm:
(allowedFontFamilySet): Deleted.
(activateTestingFonts): Deleted.
* WebKitTestRunner/InjectedBundle/cocoa/ActivateFontsCocoa.mm:
(WTR::allowedFontFamilySet): Deleted.
(WTR::activateFonts): Deleted.
* WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
* WebKitTestRunner/fonts/SampleFont.sfont: Removed.
* WebKitTestRunner/mac/TestControllerMac.mm:
(WTR::allowedFontFamilySet): Deleted.

LayoutTests:

* fast/text/international/text-spliced-font.html: Removed.
* platform/efl/fast/text/international/text-spliced-font-expected.png: Removed.
* platform/efl/fast/text/international/text-spliced-font-expected.txt: Removed.
* platform/gtk/fast/text/international/text-spliced-font-expected.png: Removed.
* platform/gtk/fast/text/international/text-spliced-font-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/text/international/text-spliced-font-expected.txt: Removed.
* platform/ios-simulator/fast/text/international/text-spliced-font-expected.txt: Removed.
* platform/mac/fast/text/international/text-spliced-font-expected.png: Removed.
* platform/mac/fast/text/international/text-spliced-font-expected.txt: Removed.
* platform/win/fast/text/international/text-spliced-font-expected.png: Removed.
* platform/win/fast/text/international/text-spliced-font-expected.txt: Removed.

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

4 years agoSome functions on DictionaryLookup.h should just be generic functions elsewhere
timothy_horton@apple.com [Tue, 18 Aug 2015 02:02:36 +0000 (02:02 +0000)]
Some functions on DictionaryLookup.h should just be generic functions elsewhere
https://bugs.webkit.org/show_bug.cgi?id=138567

Reviewed by Dean Jackson.

No new tests, just refactoring.

* dom/Range.cpp:
(WebCore::Range::contains):
* dom/Range.h:
Add a Range::contains(VisiblePosition).
It's simpler than the old thing from DictionaryLookup.mm, but does the same thing.
It's so simple that it doesn't necessarily need to exist, but it seems useful.

* editing/VisiblePosition.cpp:
(WebCore::makeRange):
nullptrs

* editing/mac/DictionaryLookup.h:
* editing/mac/DictionaryLookup.mm:
(WebCore::selectionContainsPosition):
(WebCore::rangeForDictionaryLookupAtHitTestResult):
(WebCore::isPositionInRange): Deleted.
(WebCore::shouldUseSelection): Deleted.
Move isPositionInRange to Range.
Rename shouldUseSelection to what it really means.
I didn't move selectionContainsPosition to VisibleSelection because it
only handles Range selections, not any of the ohers, and thus isn't
generic enough to put there.

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

4 years agoUnreviewed internal build fix attempt after r188539.
jhoneycutt@apple.com [Tue, 18 Aug 2015 01:42:40 +0000 (01:42 +0000)]
Unreviewed internal build fix attempt after r188539.

* WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:

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

4 years agoSpeculative GTK build fix after r188553
achristensen@apple.com [Tue, 18 Aug 2015 01:38:30 +0000 (01:38 +0000)]
Speculative GTK build fix after r188553

* CMakeLists.txt:
Added new files.

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

4 years ago[Win] Test gardening
mmaxfield@apple.com [Tue, 18 Aug 2015 00:57:03 +0000 (00:57 +0000)]
[Win] Test gardening

Unreviewed.

* platform/win/fast/text/system-font-punctuation-expected.txt: Added.

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

4 years agoFix the build
mmaxfield@apple.com [Tue, 18 Aug 2015 00:52:23 +0000 (00:52 +0000)]
Fix the build

Unreviewed.

* TestWebKitAPI/Tests/WTF/StringHasher.cpp:

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

4 years ago[Win CMake] Allow WebKitLibraries directory to be set from the command line
achristensen@apple.com [Tue, 18 Aug 2015 00:43:55 +0000 (00:43 +0000)]
[Win CMake] Allow WebKitLibraries directory to be set from the command line
https://bugs.webkit.org/show_bug.cgi?id=148112

Reviewed by Brent Fulgham.

.:

* Source/cmake/OptionsWin.cmake:
Don't use an environment variable for WEBKIT_LIBRARIES_DIR.
Instead, use the default location if nothing is passed in from the command line.
This way we can set it from the command line for the AppleInternal build.
Also, set the output directories to be consistent between the old and new build systems (and ninja).

Source/WebCore:

* PlatformAppleWin.cmake:
* PlatformWinCairo.cmake:
Don't use an environment variable for WEBKIT_LIBRARIES_DIR.

Source/WebKit:

* PlatformWin.cmake:
Don't use an environment variable for WEBKIT_LIBRARIES_DIR.

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

4 years ago[OS X] Migrate off of CTFontSetRenderingParameters()
mmaxfield@apple.com [Tue, 18 Aug 2015 00:42:34 +0000 (00:42 +0000)]
[OS X] Migrate off of CTFontSetRenderingParameters()
https://bugs.webkit.org/show_bug.cgi?id=148113

Reviewed by Lucas Forschler.

Instead, use CTFontSetRenderingStyle().

No new tests because there is no behavior change.

* platform/spi/cocoa/CoreTextSPI.h:

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

4 years agoBuild Debug Suffix on Windows with CMake
achristensen@apple.com [Tue, 18 Aug 2015 00:21:17 +0000 (00:21 +0000)]
Build Debug Suffix on Windows with CMake
https://bugs.webkit.org/show_bug.cgi?id=148083

Reviewed by Brent Fulgham.

.:

* Source/cmake/OptionsWin.cmake:
Use debug libraries in debug suffix builds.

Source/JavaScriptCore:

* CMakeLists.txt:
* PlatformWin.cmake:
* shell/CMakeLists.txt:
* shell/PlatformWin.cmake:
Add DEBUG_SUFFIX

Source/WebCore:

* CMakeLists.txt:
* PlatformAppleWin.cmake:
* PlatformWin.cmake:
Add DEBUG_SUFFIX

Source/WebKit:

* CMakeLists.txt:
* PlatformWin.cmake:
Add DEBUG_SUFFIX

Source/WTF:

* wtf/PlatformWin.cmake:
Add DEBUG_SUFFIX

Tools:

* TestWebKitAPI/CMakeLists.txt:
* TestWebKitAPI/PlatformWin.cmake:
Add DEBUG_SUFFIX

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

4 years agoImplement IntegerHasher
mmaxfield@apple.com [Mon, 17 Aug 2015 23:59:05 +0000 (23:59 +0000)]
Implement IntegerHasher
https://bugs.webkit.org/show_bug.cgi?id=147866

Reviewed by Darin Adler and Anders Carlsson.

Source/WebCore:

Rename StringHasher.h to Hasher.

No new tests because there is no behavior difference.

* contentextensions/DFAMinimizer.cpp: Use new #include.
* contentextensions/HashableActionList.h: Ditto.
* platform/graphics/FontFeatureSettings.cpp:
(WebCore::FontFeatureSettings::hash): Use new IntegerHasher class.
(WebCore::FontFeature::hash): Deleted.
* platform/graphics/FontFeatureSettings.h: Remove unnecessary function.
* platform/graphics/Gradient.cpp: Use new #include.
* platform/graphics/WidthCache.h: Ditto.

Source/WebInspectorUI:

Update comment.

* UserInterface/Base/Utilities.js:

Source/WebKit2:

Use new #include.

* DatabaseProcess/IndexedDB/IDBIdentifier.h:
* Platform/IPC/StringReference.cpp:

Source/WTF:

Rename StringHasher.h to Hasher.h, and include an IntegerHasher class.

* WTF.vcxproj/WTF.vcxproj: Update to target new file.
* WTF.vcxproj/WTF.vcxproj.filters: Ditto.
* WTF.xcodeproj/project.pbxproj: Ditto.
* wtf/CMakeLists.txt: Ditto.
* wtf/Hasher.h: Renamed from Source/WTF/wtf/StringHasher.h.
* wtf/text/CString.cpp: Use new #include
* wtf/text/StringHash.h: Ditto.
* wtf/text/StringImpl.h: Ditto.
* wtf/unicode/UTF8.cpp: Ditto.

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

4 years agoAdd WKWindowFeaturesRef and a new modern createNewPage UI client callback
andersca@apple.com [Mon, 17 Aug 2015 23:39:59 +0000 (23:39 +0000)]
Add WKWindowFeaturesRef and a new modern createNewPage UI client callback
https://bugs.webkit.org/show_bug.cgi?id=147989

Reviewed by Tim Horton.

Re-land this and make sure we actually allocate a WKWindowFeatures object.

* Platform/IPC/mac/ConnectionMac.mm:
* Shared/API/APIObject.h:
* Shared/API/c/WKBase.h:
* UIProcess/API/APIWindowFeatures.cpp: Added.
* UIProcess/API/APIWindowFeatures.h: Added.
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageUIClient):
* UIProcess/API/C/WKPageUIClient.h:
* UIProcess/API/C/WKWindowFeaturesRef.cpp: Added.
(WKWindowFeaturesGetTypeID):
* UIProcess/API/C/WKWindowFeaturesRef.h: Added.
* UIProcess/API/Cocoa/WKWindowFeatures.mm:
(-[WKWindowFeatures dealloc]):
(-[WKWindowFeatures menuBarVisibility]):
(-[WKWindowFeatures statusBarVisibility]):
(-[WKWindowFeatures toolbarsVisibility]):
(-[WKWindowFeatures allowsResizing]):
(-[WKWindowFeatures x]):
(-[WKWindowFeatures y]):
(-[WKWindowFeatures width]):
(-[WKWindowFeatures height]):
(-[WKWindowFeatures _apiObject]):
(-[WKWindowFeatures _initWithWindowFeatures:]): Deleted.
* UIProcess/API/Cocoa/WKWindowFeaturesInternal.h:
(WebKit::wrapper):
* UIProcess/Cocoa/UIDelegate.mm:
(WebKit::UIDelegate::UIClient::createNewPage):
* WebKit2.xcodeproj/project.pbxproj:

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

4 years agoWeb Inspector: InspectorTest should be a subclass of TestHarness
bburg@apple.com [Mon, 17 Aug 2015 23:37:05 +0000 (23:37 +0000)]
Web Inspector: InspectorTest should be a subclass of TestHarness
https://bugs.webkit.org/show_bug.cgi?id=148079

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Extract the frontend test harness into a subclass. Delete some code that
is now redundant. Sprinkle some ES6 syntax where possible.

Rewrite the code that redirects the Inspector page's console messages to
the test page, since it didn't appear to work any more.

* UserInterface/Test.html:
* UserInterface/Test/FrontendTestHarness.js: Added.
(FrontendTestHarness):
(FrontendTestHarness.prototype.completeTest):
(FrontendTestHarness.prototype.addResult):
(FrontendTestHarness.prototype.debugLog):
(FrontendTestHarness.prototype.evaluateInPage):
(FrontendTestHarness.prototype.expectNoError):
(FrontendTestHarness.prototype.testPageDidLoad):
(FrontendTestHarness.prototype.reloadPage):
(FrontendTestHarness.prototype.redirectConsoleToTestOutput.createProxyConsoleHandler):
(FrontendTestHarness.prototype.redirectConsoleToTestOutput):
(FrontendTestHarness.prototype.reportUncaughtException):
(FrontendTestHarness.prototype._resendResults):
* UserInterface/Test/Test.js:
(InspectorTest.EventDispatcher.prototype.dispatchEvent): Deleted.
(InspectorTest.EventDispatcher): Deleted.
(InspectorTest.log): Deleted.
(InspectorTest.assert): Deleted.
(InspectorTest.expectThat): Deleted.
(InspectorTest.debugLog): Deleted.
(InspectorTest.expectNoError): Deleted.
(InspectorTest.completeTest): Deleted.
(InspectorTest.evaluateInPage): Deleted.
(InspectorTest.addResult): Deleted.
(InspectorTest._resendResults): Deleted.
(InspectorTest.testPageDidLoad): Deleted.
(InspectorTest.reloadPage): Deleted.
(InspectorTest.reportUncaughtException): Deleted.

LayoutTests:

Rename InspectorTestProxy to TestPage.

* http/tests/inspector/debugger/debugger-test.js:
* http/tests/inspector/dom/shapes-test.js:
* http/tests/inspector/replay/replay-test.js:
* http/tests/inspector/resources/inspector-test.js:
(TestPage.registerInitializer):
(runTest):
(TestPage.completeTest):
(TestPage.debugLog):
(TestPage.addResult):
(TestPage.reportUncaughtException):
(InspectorTestProxy.registerInitializer): Deleted.
(InspectorTestProxy.completeTest): Deleted.
(InspectorTestProxy.debugLog): Deleted.
(InspectorTestProxy.addResult): Deleted.
(InspectorTestProxy.reportUncaughtException): Deleted.
* inspector/debugger/breakpoint-action-eval.html:
* inspector/debugger/resources/break-on-exception-tests.js:
* inspector/debugger/resources/script-for-breakpoint-actions.js:
(breakpointActions):
* inspector/debugger/search-scripts.html:
* inspector/replay/window-navigator-plugins-memoized.html:
* inspector/timeline/debugger-paused-while-recording.html:
* inspector/timeline/exception-in-injected-script-while-recording.html:

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

4 years agoRemove failing expectations for some WK2 tests that have passed for the
jhoneycutt@apple.com [Mon, 17 Aug 2015 23:03:28 +0000 (23:03 +0000)]
Remove failing expectations for some WK2 tests that have passed for the
last 15 builds.

* platform/ios-simulator-wk2/TestExpectations:

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

4 years agoLog actual PageCache retrieval success rate using diagnostic logging
cdumez@apple.com [Mon, 17 Aug 2015 22:57:27 +0000 (22:57 +0000)]
Log actual PageCache retrieval success rate using diagnostic logging
https://bugs.webkit.org/show_bug.cgi?id=147937

Reviewed by Antti Koivisto.

Log actual PageCache retrieval success rate using diagnostic logging.
Previously, we would only log how successful we are at saving entries
into the cache, which is not the most interesting metric.

* history/PageCache.cpp:
(WebCore::canCachePage):
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::continueLoadAfterNavigationPolicy):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::canCacheKey):
* page/DiagnosticLoggingKeys.h:

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

4 years agoWeb Inspector: Type profiler return types aren't showing up
commit-queue@webkit.org [Mon, 17 Aug 2015 22:57:23 +0000 (22:57 +0000)]
Web Inspector: Type profiler return types aren't showing up
https://bugs.webkit.org/show_bug.cgi?id=147348

Patch by Saam barati <sbarati@apple.com> on 2015-08-17
Reviewed by Brian Burg.

Bug #145995 changed the starting offset of a function to
be the open parenthesis of the function's parameter list.
Source/JavaScriptCore:

This broke JSC's type profiler protocol of communicating
return types of a function to the web inspector. This
is now fixed. The text offset used in the protocol is now
the first letter of the function/get/set/method name.
So "f" in "function a() {}", "s" in "set foo(){}", etc.

* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::CodeBlock):
* jsc.cpp:
(functionReturnTypeFor):

Source/WebInspectorUI:

This broke the type profiler's text offset based protocol with JSC.
The text offset used in the protocol is now the first letter of the
function/get/set/method name.  So "f" in "function a() {}", "s" in "set foo(){}", etc.

* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype.containsNonEmptyReturnStatement):
(WebInspector.ScriptSyntaxTree.functionReturnDivot):

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

4 years agoSimplify how PlatformWebViews are created when view options change
andersca@apple.com [Mon, 17 Aug 2015 22:49:42 +0000 (22:49 +0000)]
Simplify how PlatformWebViews are created when view options change
https://bugs.webkit.org/show_bug.cgi?id=148093

Reviewed by Sam Weinig.

Instead of letting each port dictate when the PlatformWebView should be recreated we now do the following:

TestController::ensureViewSupportsOptionsForTest gets the view options for a test by calling
TestController::viewOptionsForTest, which returns a filled in ViewOptions struct for a given test. It also allows
ports to add/override settings by calling TestController::updatePlatformSpecificViewOptionsForTest.

If the current PlatformWebView doesn't support the given view options, delete the web view and create a new one.

Also, get rid of the first call to TestController::createWebViewWithOptions in TestController::initialize and
always rely on TestController::ensureViewSupportsOptionsForTest creating a PlatformWebView for us.

* WebKitTestRunner/TestController.cpp:
(WTR::TestController::ensureViewSupportsOptionsForTest):
(WTR::shouldUseFixedLayout):
(WTR::TestController::viewOptionsForTest):
(WTR::TestController::updateWebViewSizeForTest):
(WTR::TestController::updateWindowScaleForTest):
(WTR::TestController::configureViewForTest):
(WTR::TestController::initialize): Deleted.
(WTR::TestController::ensureViewSupportsOptions): Deleted.
(WTR::TestController::updateLayoutTypeForTest): Deleted.
(WTR::TestController::platformConfigureViewForTest): Deleted.
(WTR::TestController::platformResetPreferencesToConsistentValues): Deleted.
(WTR::TestController::run): Deleted.
* WebKitTestRunner/TestController.h:
* WebKitTestRunner/efl/TestControllerEfl.cpp:
(WTR::shouldUseFixedLayout):
(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
(WTR::TestController::platformConfigureViewForTest):
(WTR::TestController::platformResetPreferencesToConsistentValues):
* WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
* WebKitTestRunner/mac/TestControllerMac.mm:
(WTR::TestController::updatePlatformSpecificViewOptionsForTest):
(WTR::TestController::platformConfigureViewForTest):

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

4 years agoAdd performance tests for traversal of collections returned by getElementsByClassName...
cdumez@apple.com [Mon, 17 Aug 2015 22:27:56 +0000 (22:27 +0000)]
Add performance tests for traversal of collections returned by getElementsByClassName() / getElementsByTagName()
https://bugs.webkit.org/show_bug.cgi?id=148080

Reviewed by Antti Koivisto.

Add performance tests for traversal of *uncached* collections returned
by getElementsByClassName() / getElementsByTagName(). These methods
will soon be updated to return an HTMLCollection instead of a
NodeList and we need to make sure we don't regress performance in the
process.

* DOM/get-elements-by-class-name-traversal-uncached.html: Added.
* DOM/get-elements-by-tag-name-traversal-uncached.html: Added.

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

4 years agoWeb Inspector: REGRESSION: spurious console.assert inside ResourceContentView._conten...
bburg@apple.com [Mon, 17 Aug 2015 22:27:36 +0000 (22:27 +0000)]
Web Inspector: REGRESSION: spurious console.assert inside ResourceContentView._contentAvailable
https://bugs.webkit.org/show_bug.cgi?id=147886

Reviewed by Joseph Pecoraro.

* UserInterface/Views/ResourceContentView.js:
(WebInspector.ResourceContentView.prototype._hasContent): Fix the style class name.

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

4 years ago[ES6] Implement ES6 arrow function syntax. Arrow function specific features. Lexical...
commit-queue@webkit.org [Mon, 17 Aug 2015 22:24:20 +0000 (22:24 +0000)]
[ES6] Implement ES6 arrow function syntax. Arrow function specific features. Lexical bind of this
https://bugs.webkit.org/show_bug.cgi?id=144956

Source/JavaScriptCore:

Patch by Aleksandr Skachkov <gskachkov@gmail.com> on 2015-08-17
Reviewed by Saam Barati.

Added support of ES6 arrow function specific feature, lexical bind of this and no constructor. http://wiki.ecmascript.org/doku.php?id=harmony:arrow_function_syntax
In patch were implemented the following cases:
   this - variable |this| is point to the |this| of the function where arrow function is declared. Lexical bind of |this|
   constructor - the using of the command |new| for arrow function leads to runtime error
   call(), apply(), bind()  - methods can only pass in arguments, but has no effect on |this|

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecode/ExecutableInfo.h:
(JSC::ExecutableInfo::ExecutableInfo):
(JSC::ExecutableInfo::isArrowFunction):
* bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):
* bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::isArrowFunction):
* bytecode/UnlinkedFunctionExecutable.cpp:
(JSC::generateFunctionCodeBlock):
(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):
(JSC::UnlinkedFunctionExecutable::codeBlockFor):
* bytecode/UnlinkedFunctionExecutable.h:
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitNewFunctionCommon):
(JSC::BytecodeGenerator::emitNewFunctionExpression):
(JSC::BytecodeGenerator::emitNewArrowFunctionExpression):
(JSC::BytecodeGenerator::emitLoadArrowFunctionThis):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::ArrowFuncExprNode::emitBytecode):
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGCapabilities.cpp:
(JSC::DFG::capabilityLevel):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::convertToPhantomNewFunction):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::isFunctionAllocation):
* dfg/DFGNodeType.h:
* dfg/DFGObjectAllocationSinkingPhase.cpp:
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGPromotedHeapLocation.cpp:
(WTF::printInternal):
* dfg/DFGPromotedHeapLocation.h:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileLoadArrowFunctionThis):
(JSC::DFG::SpeculativeJIT::compileNewFunctionCommon):
(JSC::DFG::SpeculativeJIT::compileNewFunction):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::callOperation):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStoreBarrierInsertionPhase.cpp:
* dfg/DFGStructureRegistrationPhase.cpp:
(JSC::DFG::StructureRegistrationPhase::run):
* ftl/FTLAbstractHeapRepository.cpp:
* ftl/FTLAbstractHeapRepository.h:
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* ftl/FTLIntrinsicRepository.h:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::compileNode):
(JSC::FTL::DFG::LowerDFGToLLVM::compileNewFunction):
(JSC::FTL::DFG::LowerDFGToLLVM::compileLoadArrowFunctionThis):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationMaterializeObjectInOSR):
* interpreter/Interpreter.cpp:
* interpreter/Interpreter.h:
* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArgumentsWithExecState): Added 3 arguments version for windows build.
* jit/JIT.cpp:
(JSC::JIT::privateCompileMainPass):
* jit/JIT.h:
* jit/JITInlines.h:
(JSC::JIT::callOperation):
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_load_arrowfunction_this):
(JSC::JIT::emit_op_new_func_exp):
(JSC::JIT::emitNewFuncExprCommon):
(JSC::JIT::emit_op_new_arrow_func_exp):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_load_arrowfunction_this):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* llint/LLIntOffsetsExtractor.cpp:
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
(JSC::LLInt::setUpCall):
* llint/LLIntSlowPaths.h:
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createFunctionMetadata):
(JSC::ASTBuilder::createArrowFunctionExpr):
* parser/NodeConstructors.h:
(JSC::BaseFuncExprNode::BaseFuncExprNode):
(JSC::FuncExprNode::FuncExprNode):
(JSC::ArrowFuncExprNode::ArrowFuncExprNode):
* parser/Nodes.cpp:
(JSC::FunctionMetadataNode::FunctionMetadataNode):
* parser/Nodes.h:
(JSC::ExpressionNode::isArrowFuncExprNode):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createFunctionMetadata):
* runtime/Executable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor):
* runtime/Executable.h:
* runtime/JSArrowFunction.cpp: Added.
(JSC::JSArrowFunction::destroy):
(JSC::JSArrowFunction::create):
(JSC::JSArrowFunction::JSArrowFunction):
(JSC::JSArrowFunction::createWithInvalidatedReallocationWatchpoint):
(JSC::JSArrowFunction::visitChildren):
(JSC::JSArrowFunction::getConstructData):
* runtime/JSArrowFunction.h: Added.
(JSC::JSArrowFunction::allocationSize):
(JSC::JSArrowFunction::createImpl):
(JSC::JSArrowFunction::boundThis):
(JSC::JSArrowFunction::createStructure):
(JSC::JSArrowFunction::offsetOfThisValue):
* runtime/JSFunction.h:
* runtime/JSFunctionInlines.h:
(JSC::JSFunction::JSFunction):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):
* runtime/JSGlobalObject.h:
(JSC::JSGlobalObject::arrowFunctionStructure):
* tests/stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js: Added.
* tests/stress/arrowfunction-activation-sink-osrexit-default-value.js: Added.
* tests/stress/arrowfunction-activation-sink-osrexit.js: Added.
* tests/stress/arrowfunction-activation-sink.js: Added.
* tests/stress/arrowfunction-bound.js: Added.
* tests/stress/arrowfunction-call.js: Added.
* tests/stress/arrowfunction-constructor.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-1.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-2.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-3.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-4.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-5.js: Added.
* tests/stress/arrowfunction-lexical-bind-this-6.js: Added.
* tests/stress/arrowfunction-lexical-this-activation-sink-osrexit.js: Added.
* tests/stress/arrowfunction-lexical-this-activation-sink.js: Added.
* tests/stress/arrowfunction-lexical-this-sinking-no-double-allocate.js: Added.
* tests/stress/arrowfunction-lexical-this-sinking-osrexit.js: Added.
* tests/stress/arrowfunction-lexical-this-sinking-put.js: Added.
* tests/stress/arrowfunction-others.js: Added.
* tests/stress/arrowfunction-run-10-1.js: Added.
* tests/stress/arrowfunction-run-10-2.js: Added.
* tests/stress/arrowfunction-run-10000-1.js: Added.
* tests/stress/arrowfunction-run-10000-2.js: Added.
* tests/stress/arrowfunction-sinking-no-double-allocate.js: Added.
* tests/stress/arrowfunction-sinking-osrexit.js: Added.
* tests/stress/arrowfunction-sinking-put.js: Added.
* tests/stress/arrowfunction-tdz.js: Added.
* tests/stress/arrowfunction-typeof.js: Added.

LayoutTests:

Patch by Skachkov Oleksandr <gskachkov@gmail.com> on 2015-08-17
Reviewed by Saam Barati.

* js/arrowfunction-bind-expected.txt: Added.
* js/arrowfunction-bind.html: Added.
* js/arrowfunction-call-expected.txt: Added.
* js/arrowfunction-call.html: Added.
* js/arrowfunction-constructor-expected.txt: Added.
* js/arrowfunction-constructor.html: Added.
* js/arrowfunction-lexical-bind-this-expected.txt: Added.
* js/arrowfunction-lexical-bind-this.html: Added.
* js/arrowfunction-others-expected.txt: Added.
* js/arrowfunction-others.html: Added.
* js/arrowfunction-tdz-expected.txt: Added.
* js/arrowfunction-tdz.html: Added.
* js/arrowfunction-typeof-expected.txt: Added.
* js/arrowfunction-typeof.html: Added.
* js/regress/arrowfunction-call-expected.txt: Added.
* js/regress/arrowfunction-call.html: Added.
* js/regress/script-tests/arrowfunction-call.js: Added.
* js/regress/script-tests/function-call.js: Added.
* js/script-tests/arrowfunction-bind.js: Added.
* js/script-tests/arrowfunction-call.js: Added.
* js/script-tests/arrowfunction-constructor.js: Added.
* js/script-tests/arrowfunction-lexical-bind-this.js: Added.
* js/script-tests/arrowfunction-others.js: Added.
* js/script-tests/arrowfunction-tdz.js: Added.
* js/script-tests/arrowfunction-typeof.js: Added.

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

4 years agoWeb Inspector: split TestStub.js into multiple files and modernize it
bburg@apple.com [Mon, 17 Aug 2015 21:51:45 +0000 (21:51 +0000)]
Web Inspector: split TestStub.js into multiple files and modernize it
https://bugs.webkit.org/show_bug.cgi?id=148077

Reviewed by Timothy Hatcher.
Source/WebInspectorUI:

Since we want to share files between the two harnesses, split some of the parts
into different files so not everything has to be included at once.

Rename InjectedTestHarness to just TestHarness. Update some code to use
ES6 features where appropriate. Put test classes into Test/ directory.

* UserInterface/Base/TestStub.js: Removed.
* UserInterface/Test.html:
* UserInterface/Test/InspectorProtocol.js: Added.
(InspectorProtocol.sendCommand):
(InspectorProtocol.awaitCommand):
(InspectorProtocol.awaitEvent.):
(InspectorProtocol.awaitEvent):
(InspectorProtocol.addEventListener):
(InspectorProtocol.sendMessage):
(InspectorProtocol.checkForError):
(InspectorProtocol.dispatchMessageFromBackend):
* UserInterface/Test/ProtocolTestHarness.js: Added.
(ProtocolTestHarness.prototype.completeTest):
(ProtocolTestHarness.prototype.addResult):
(ProtocolTestHarness.prototype.debugLog):
(ProtocolTestHarness.prototype.evaluateInPage):
(ProtocolTestHarness):
* UserInterface/Test/Test.js: Renamed from Source/WebInspectorUI/UserInterface/Base/Test.js.
(WebInspector.loaded):
(WebInspector.contentLoaded):
(WebInspector.UIString):
(WebInspector.updateDockedState):
(WebInspector.updateDockingAvailability):
(InspectorTest.EventDispatcher.prototype.dispatchEvent):
(InspectorTest.EventDispatcher):
(InspectorTest.log):
(InspectorTest.assert):
(InspectorTest.expectThat):
(InspectorTest.debugLog):
(InspectorTest.expectNoError):
(InspectorTest.completeTest):
(InspectorTest.evaluateInPage):
(InspectorTest.addResult):
(InspectorTest._resendResults):
(InspectorTest.testPageDidLoad):
(InspectorTest.reloadPage):
(InspectorTest.reportUncaughtException):
* UserInterface/Test/TestHarness.js: Added.
(TestHarness):
(TestHarness.prototype.completeTest):
(TestHarness.prototype.addResult):
(TestHarness.prototype.debugLog):
(TestHarness.prototype.evaluateInPage):
(TestHarness.prototype.createAsyncSuite):
(TestHarness.prototype.createSyncSuite):
(TestHarness.prototype.get logCount):
(TestHarness.prototype.log):
(TestHarness.prototype.assert):
(TestHarness.prototype.expectThat):
* UserInterface/Test/TestStub.js: Added.
* UserInterface/Test/TestSuite.js: Added.
(TestSuite):
(TestSuite.prototype.runTestCasesAndFinish):
(TestSuite.prototype.runTestCases):
(TestSuite.prototype.get passCount):
(TestSuite.prototype.get skipCount):
(TestSuite.prototype.addTestCase):
(AsyncTestSuite.prototype.runTestCasesAndFinish.finish):
(AsyncTestSuite.prototype.runTestCasesAndFinish):
(AsyncTestSuite.prototype.runTestCases):
(AsyncTestSuite):
(SyncTestSuite.prototype.runTestCasesAndFinish):
(SyncTestSuite.prototype.runTestCases):
(SyncTestSuite):
* UserInterface/TestStub.html:

LayoutTests:

Add the prefix 'TestPage' to everything in protocol-test.js. Continue
exporting it to the global namespace for backwards compatibility, too.

Rename some things to match changes in the test harness. Tighten up
preconditions for test suite and test case names. Sprinkle some ES6.

* http/tests/inspector/dom/resources/InspectorDOMListener.js:
* http/tests/inspector/resources/console-test.js:
* http/tests/inspector/resources/probe-test.js:
* http/tests/inspector/resources/protocol-test.js:
(TestPage.registerInitializer):
(TestPage.debugLog.window.debugLog):
(TestPage.log.window.log):
(TestPage.closeTest.window.closeTest):
(TestPage.runTest.window.runTest):
(ProtocolTestProxy.registerInitializer): Deleted.
(debugLog): Deleted.
(log): Deleted.
(closeTest): Deleted.
(runTest): Deleted.
* inspector/dom/resources/dom-search-queries.js:
* inspector/unit-tests/async-test-suite.html:
* inspector/unit-tests/sync-test-suite.html:

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

4 years agoAPI::PageConfiguration's sessionID needs to be set whenever the API::WebsiteDataStore...
weinig@apple.com [Mon, 17 Aug 2015 21:50:24 +0000 (21:50 +0000)]
API::PageConfiguration's sessionID needs to be set whenever the API::WebsiteDataStore is set
https://bugs.webkit.org/show_bug.cgi?id=148097

Reviewed by Anders Carlsson.

Source/WebKit2:

We were getting an empty SessionID set on the WebPageProxy (and crashing asserting down the line)
when using a WKPageConfiguration with a WKWebsiteDataStore set on it.

Tests:
    WebKit2.WKPageConfigurationBasicWithDataStore
    WebKit2.WKPageConfigurationBasicWithNonPersistentDataStore

* UIProcess/API/APIPageConfiguration.cpp:
(API::PageConfiguration::setWebsiteDataStore):
Set the sessionID member whenever changing the WebsiteDataStore.

* UIProcess/API/C/WKWebsiteDataStoreRef.cpp:
(WKWebsiteDataStoreGetDefaultDataStore):
(WKWebsiteDataStoreCreateNonPersistentDataStore):
* UIProcess/API/C/WKWebsiteDataStoreRef.h:
Expose functions for getting default and new non-persistent data stores via the C-SPI. Useful
for testing and transitioning users of the C-SPI to the new model.

* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
Remove explicit setting of the sessionID. This is handled by the above call to setWebsiteDataStore().

Tools:

* TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp:
Add tests for WebsiteDataStores in the WKPageConfiguration.

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

4 years agoCleanup the builtin JavaScript files
weinig@apple.com [Mon, 17 Aug 2015 21:40:30 +0000 (21:40 +0000)]
Cleanup the builtin JavaScript files
https://bugs.webkit.org/show_bug.cgi?id=147382

Reviewed by Geoffrey Garen.

* builtins/Array.prototype.js:
* builtins/ArrayConstructor.js:
* builtins/ArrayIterator.prototype.js:
* builtins/Function.prototype.js:
* builtins/Iterator.prototype.js:
* builtins/ObjectConstructor.js:
* builtins/StringConstructor.js:
* builtins/StringIterator.prototype.js:
Unify the style of the built JavaScript files.

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

4 years agoCannot change WKWebView scrollView deceleration rate
wenson_hsieh@apple.com [Mon, 17 Aug 2015 20:39:04 +0000 (20:39 +0000)]
Cannot change WKWebView scrollView deceleration rate
https://bugs.webkit.org/show_bug.cgi?id=148086
<rdar://problem/21893685>

Reviewed by Simon Fraser.

Updates the preferred scroll deceleration factor when the scrollView's decelerationRate is explicitly set by the
user, so when snap scrolling is inactive and [WKWebView scrollViewWillBeginDragging] sets its scrollView's
decelerationRate to the preferred decelerationRate, it will be set to the updated value.

* UIProcess/ios/WKScrollView.mm:
(-[WKScrollView setDecelerationRate:]): Overrides setDecelerationRate to update _preferredScrollDecelerationFactor.

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

4 years agoMove some commands from ./CMakeLists.txt to Source/cmake
achristensen@apple.com [Mon, 17 Aug 2015 20:37:06 +0000 (20:37 +0000)]
Move some commands from ./CMakeLists.txt to Source/cmake
https://bugs.webkit.org/show_bug.cgi?id=148003

Reviewed by Brent Fulgham.

* CMakeLists.txt:
.:

Moved functionality to WebKitCommon.cmake and WebKitFS.cmake and made conditional
so we can change directory structure from command line parameters.
* Source/cmake/OptionsAppleWin.cmake:
* Source/cmake/OptionsWin.cmake: Copied from Source/cmake/OptionsWindows.cmake.
* Source/cmake/OptionsWinCairo.cmake:
* Source/cmake/OptionsWindows.cmake: Removed.
* Source/cmake/WebKitCommon.cmake: Added.
* Source/cmake/WebKitFS.cmake:

Source/JavaScriptCore:

Added commands needed to build JSC by itself.

Source/WebCore:

Added commands needed to build WebCore by itself.

Source/WebKit:

Added some commands needed to build WebKit by itself.

Source/WTF:

Added commands needed to build WTF by itself.

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

4 years agoWeb Inspector: load ProtocolTestStub from the WebInspectorUI bundle
bburg@apple.com [Mon, 17 Aug 2015 20:33:48 +0000 (20:33 +0000)]
Web Inspector: load ProtocolTestStub from the WebInspectorUI bundle
https://bugs.webkit.org/show_bug.cgi?id=147955

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

Move ProtocolTestStub.{html,js} into the actual WebInspectorUI project.

* UserInterface/Base/TestStub.js: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.js.
* UserInterface/TestStub.html: Renamed from LayoutTests/http/tests/inspector/resources/ProtocolTestStub.html.

Tools:

To enable sharing of common test code between protocol and model tests,
start loading the protocol TestStub.js through the WebInspectorUI bundle.

This patch adds the read-only getter TestRunner.inspectorTestStubURL, which
protocol-test.js uses to load the inspector frontend stub into its iframe
from an arbitrary local file URL.

* DumpRenderTree/TestRunner.cpp:
(getInspectorTestStubURLCallback):
(TestRunner::staticValues):
* DumpRenderTree/TestRunner.h:
* DumpRenderTree/mac/TestRunnerMac.mm:
(SOFT_LINK_STAGED_FRAMEWORK):
(TestRunner::inspectorTestStubURL):
* DumpRenderTree/win/TestRunnerWin.cpp:
(TestRunner::inspectorTestStubURL):
* WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
* WebKitTestRunner/InjectedBundle/TestRunner.h:
* WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp:
(WTR::TestRunner::inspectorTestStubURL):
* WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
(WTR::TestRunner::inspectorTestStubURL):
* WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm:
(WTR::TestRunner::inspectorTestStubURL):

LayoutTests:

Since the inspector stub cannot open files that live in the LayoutTests
directory, adopt the test helper marshalling approach used by inspector.js.
Each helper must register its code for marshalling and explicitly put globals
on the window object.

Use script tags rather than importScript to include helpers in a test.

* TestExpectations: For now, skip inspector http tests. These should be rewritten
to use inspector-test.js, which does not run into cross-origin problems.

Rebaseline some test results to account for shifted line numbers (yuck).

* http/tests/inspector/dom/resources/InspectorDOMListener.js:
* http/tests/inspector/resources/console-test.js:
* http/tests/inspector/resources/probe-test.js:
* http/tests/inspector/resources/protocol-test.js:
(ProtocolTestProxy.registerInitializer):
(log):
(runTest.runInitializationMethodsInFrontend):
(runTest.runTestMethodInFrontend):
(runTest):
* inspector/console/console-message.html:
* inspector/console/css-source-locations-expected.txt:
* inspector/console/css-source-locations.html:
* inspector/console/js-source-locations-expected.txt:
* inspector/console/js-source-locations.html:
* inspector/console/x-frame-options-message-expected.txt:
* inspector/console/x-frame-options-message.html:
* inspector/debugger/didSampleProbe-multiple-probes.html:
* inspector/debugger/setBreakpoint-actions.html:
* inspector/debugger/setBreakpoint-options-exception.html:
* inspector/dom/dom-search-expected.txt:
* inspector/dom/dom-search-with-context.html:
* inspector/dom/dom-search.html:
* inspector/dom/resources/dom-search-queries.js:

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

4 years agoChange email address from saambarati1@gmail.com to sbarati@apple.com
saambarati1@gmail.com [Mon, 17 Aug 2015 20:29:09 +0000 (20:29 +0000)]
Change email address from saambarati1@gmail.com to sbarati@apple.com

* Scripts/webkitpy/common/config/contributors.json:

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

4 years ago[WinCairo] Accelerated compositing does not respect device scale factor.
peavo@outlook.com [Mon, 17 Aug 2015 20:22:35 +0000 (20:22 +0000)]
[WinCairo] Accelerated compositing does not respect device scale factor.
https://bugs.webkit.org/show_bug.cgi?id=148085

Reviewed by Brent Fulgham.

Scale root layer's transformation matrix with device scale factor.

* WebCoreSupport/AcceleratedCompositingContext.cpp:
(AcceleratedCompositingContext::initialize):
(AcceleratedCompositingContext::startedAnimation):
(AcceleratedCompositingContext::applyDeviceScaleFactor):
(AcceleratedCompositingContext::compositeLayersToContext):
(AcceleratedCompositingContext::resizeRootLayer):
(AcceleratedCompositingContext::flushAndRenderLayers):
(AcceleratedCompositingContext::paintContents):
(AcceleratedCompositingContext::deviceScaleFactor):
* WebCoreSupport/AcceleratedCompositingContext.h:
* WebView.cpp:
(WebView::repaint):

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

4 years agoRemove unused multisampling check
commit-queue@webkit.org [Mon, 17 Aug 2015 20:19:55 +0000 (20:19 +0000)]
Remove unused multisampling check
https://bugs.webkit.org/show_bug.cgi?id=148030

Patch by Alex Christensen <achristensen@webkit.org> on 2015-08-17
Reviewed by Dean Jackson.

No change in behavior.
Extensions3DOpenGLCommon.m_maySupportMultisampling is always true.

* platform/graphics/Extensions3D.h:
* platform/graphics/opengl/Extensions3DOpenGLCommon.cpp:
(WebCore::Extensions3DOpenGLCommon::Extensions3DOpenGLCommon):
* platform/graphics/opengl/Extensions3DOpenGLCommon.h:
(WebCore::Extensions3DOpenGLCommon::isImagination):
(WebCore::Extensions3DOpenGLCommon::vendor):
(WebCore::Extensions3DOpenGLCommon::requiresBuiltInFunctionEmulation):
(WebCore::Extensions3DOpenGLCommon::requiresRestrictedMaximumTextureSize):
(WebCore::Extensions3DOpenGLCommon::maySupportMultisampling): Deleted.
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::validateDepthStencil):

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

4 years agoRefactor BuildbotQueueView._presentPopoverForPendingCommits to work more generically...
commit-queue@webkit.org [Mon, 17 Aug 2015 19:45:11 +0000 (19:45 +0000)]
Refactor BuildbotQueueView._presentPopoverForPendingCommits to work more generically with
repositories other than "openSource" and "internal".
https://bugs.webkit.org/show_bug.cgi?id=147961

Patch by Jason Marcell <jmarcell@apple.com> on 2015-08-17
Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:
(BuildbotQueueView.prototype._presentPopoverForPendingCommits): Refactored to work more
generically with repositories other than "openSource" and "internal".

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

4 years ago[ES6] Implement Reflect.get
utatane.tea@gmail.com [Mon, 17 Aug 2015 18:56:52 +0000 (18:56 +0000)]
[ES6] Implement Reflect.get
https://bugs.webkit.org/show_bug.cgi?id=147925

Reviewed by Geoffrey Garen.

This patch implements Reflect.get API.
It can take the receiver object as the third argument.
When the receiver is specified and there's a getter for the given property name,
we call the getter with the receiver as the |this| value.

* runtime/ReflectObject.cpp:
(JSC::reflectObjectGet):
* runtime/SparseArrayValueMap.cpp:
(JSC::SparseArrayEntry::get): Deleted.
* runtime/SparseArrayValueMap.h:
* tests/stress/reflect-get.js: Added.
(shouldBe):
(shouldThrow):
(.get shouldThrow):
(.get var):
(get var.object.get hello):
(.get shouldBe):
(get var.object.set hello):

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

4 years agoREGRESSION (r188486): Crash in SubresourceLoader::didReceiveResponse() when Temporary...
aestes@apple.com [Mon, 17 Aug 2015 18:52:38 +0000 (18:52 +0000)]
REGRESSION (r188486): Crash in SubresourceLoader::didReceiveResponse() when TemporaryChange goes out of scope
https://bugs.webkit.org/show_bug.cgi?id=148082

Reviewed by Alexey Proskuryakov.

Covered by existing tests run under ASan or Guard Malloc.

* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse): Ensure that callingDidReceiveResponse is destroyed while the
SubresourceLoader is still alive by declaring it after protect.

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

4 years agowill-change should sometimes trigger compositing
simon.fraser@apple.com [Mon, 17 Aug 2015 18:32:49 +0000 (18:32 +0000)]
will-change should sometimes trigger compositing
https://bugs.webkit.org/show_bug.cgi?id=148072

Reviewed by Tim Horton.
Source/JavaScriptCore:

Include will-change as a reason for compositing.

* inspector/protocol/LayerTree.json:

Source/WebCore:

Implement the compositing side-effects of will-change, if any of the
following properties are specified:
    opacity
    filter (as -webkit-filter)
    backdrop-filter (as -webkit-backdrop-filter)
    transform (on transformable elements only)

Tests: compositing/layer-creation/will-change-change.html
       compositing/layer-creation/will-change-layer-creation.html

* inspector/InspectorLayerTreeAgent.cpp:
(WebCore::InspectorLayerTreeAgent::reasonsForCompositingLayer): Tell the inspector
about will-change.
* rendering/RenderElement.cpp:
(WebCore::RenderElement::adjustStyleDifference): Need to trigger a recomposite if
will-change includes a compositing trigger property. This gets called before and
after setting the style, so this checks both states.
(WebCore::RenderElement::shouldWillChangeCreateStackingContext):
* rendering/RenderElement.h:
(WebCore::RenderElement::willChangeCreatesStackingContext): Helper function that
RenderInline uses to determine if it needs to create a RenderLayer, since RenderInline
doesn't get automatic layer RenderLayers as a side effect of having non-auto z-index
in the style.
* rendering/RenderInline.h: Need to trigger a RenderLayer if will-change includes
a property that applies to inlines.
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::requiresCompositingLayer): Call requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::requiresOwnBackingStore): Call requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::reasonsForCompositing): Include requiresCompositingForWillChange().
(WebCore::RenderLayerCompositor::requiresCompositingForWillChange): If will-change contains a
property that would trigger compositing on this element, return true.
* rendering/RenderLayerCompositor.h:
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::changeRequiresLayout): Set ContextSensitivePropertyWillChange in
changedContextSensitiveProperties if will-change changes.
* rendering/style/RenderStyle.h: Rename for clarity.
* rendering/style/RenderStyleConstants.h: Add ContextSensitivePropertyWillChange.
* rendering/style/WillChangeData.cpp:
(WebCore::propertyCreatesStackingContext): Subset of properties that create stacking
context on any element.
(WebCore::propertyCreatesStackingContextOnBoxesOnly): Additional properties that
create stacking context on boxes.
(WebCore::propertyTriggersCompositing): Properties that trigger compositing on
any element.
(WebCore::propertyTriggersCompositingOnBoxesOnly): Additional properties that
trigger compositing on boxes.
(WebCore::WillChangeData::addFeature): As features are added, manage a set of
flags to know if they trigger stacking context or compositing, on inlines and boxes.
(WebCore::WillChangeData::createsStackingContext): Deleted.
* rendering/style/WillChangeData.h:
(WebCore::WillChangeData::canCreateStackingContext):
(WebCore::WillChangeData::canCreateStackingContextOnInline):
(WebCore::WillChangeData::canTriggerCompositing):
(WebCore::WillChangeData::canTriggerCompositingOnInline):

Source/WebInspectorUI:

Have the web inspector show a correct compositing reason for will-change.
This could be improved to indicate which specific value in will-change triggered
the compositing.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
(WebInspector.LayerTreeDetailsSidebarPanel.prototype._populateListOfCompositingReasons):
(WebInspector.LayerTreeDetailsSidebarPanel):

LayoutTests:

* compositing/layer-creation/will-change-change-expected.txt: Added.
* compositing/layer-creation/will-change-change.html: Added.
* compositing/layer-creation/will-change-layer-creation-expected.txt: Added.
* compositing/layer-creation/will-change-layer-creation.html: Added.

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

4 years ago[ES6] Implement Reflect.getOwnPropertyDescriptor
utatane.tea@gmail.com [Mon, 17 Aug 2015 18:28:19 +0000 (18:28 +0000)]
[ES6] Implement Reflect.getOwnPropertyDescriptor
https://bugs.webkit.org/show_bug.cgi?id=147929

Reviewed by Geoffrey Garen.

Implement Reflect.getOwnPropertyDescriptor.
The difference from the Object.getOwnPropertyDescriptor is
Reflect.getOwnPropertyDescriptor does not perform ToObject onto
the first argument. If the first argument is not an Object, it
immediately raises the TypeError.

* runtime/ObjectConstructor.cpp:
(JSC::objectConstructorGetOwnPropertyDescriptor):
* runtime/ObjectConstructor.h:
* runtime/ReflectObject.cpp:
(JSC::reflectObjectGetOwnPropertyDescriptor):
* tests/stress/reflect-get-own-property.js: Added.
(shouldBe):
(shouldThrow):

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

4 years agobuild.webkit.org/dashboard shows yellow when crash-only queues have too many failures
ap@apple.com [Mon, 17 Aug 2015 18:18:11 +0000 (18:18 +0000)]
build.webkit.org/dashboard shows yellow when crash-only queues have too many failures
https://bugs.webkit.org/show_bug.cgi?id=148081

Reviewed by Tim Horton.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:
(BuildbotTesterQueueView.prototype.update.appendBuilderQueueStatus):

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

4 years agoHoles for find matches that span multiple lines are completely wrong
timothy_horton@apple.com [Mon, 17 Aug 2015 18:12:08 +0000 (18:12 +0000)]
Holes for find matches that span multiple lines are completely wrong
https://bugs.webkit.org/show_bug.cgi?id=148065
<rdar://problem/5305002>

Reviewed by Simon Fraser.

Test: fast/text/mark-matches-broken-line-rendering.html

Two big problems with find holes:
    - RenderedDocumentMarker only has one rect, but a marker can be painted
      by multiple text runs, each with their own rendered rect
    - paintTextMatchMarker does std::max((unsigned)a, (unsigned)0), which is
      obviously an overflow problem/not going to work if a is negative

The combination of these issues causes the holes for find matches to be
very broken: text that isn't part of the match is highlighted, and some
text that is part of the match isn't highlighted.

To fix, make RenderedDocumentMarker support multiple rects, and use signed
math (like paintDocumentMarker already did) when computing positions in paintTextMatchMarker.

* dom/DocumentMarkerController.cpp:
(WebCore::DocumentMarkerController::addTextMatchMarker):
(WebCore::DocumentMarkerController::renderedRectsForMarkers):
* dom/RenderedDocumentMarker.h:
(WebCore::RenderedDocumentMarker::RenderedDocumentMarker):
(WebCore::RenderedDocumentMarker::isRendered):
(WebCore::RenderedDocumentMarker::contains):
(WebCore::RenderedDocumentMarker::addRenderedRect):
(WebCore::RenderedDocumentMarker::renderedRects):
(WebCore::RenderedDocumentMarker::invalidate):
(WebCore::RenderedDocumentMarker::setRenderedRect): Deleted.
(WebCore::RenderedDocumentMarker::renderedRect): Deleted.
(WebCore::RenderedDocumentMarker::invalidMarkerRect): Deleted.
* rendering/InlineTextBox.cpp:
(WebCore::InlineTextBox::paintDocumentMarker):
(WebCore::InlineTextBox::paintTextMatchMarker):
(WebCore::InlineTextBox::computeRectForReplacementMarker):
* rendering/svg/SVGInlineFlowBox.cpp:
(WebCore::SVGInlineFlowBox::computeTextMatchMarkerRectForRenderer):

* fast/text/mark-matches-broken-line-rendering-expected.html: Added.
* fast/text/mark-matches-broken-line-rendering.html: Added.
Add a test that ensures that we correctly mark test matches that cross
line breaks.

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

4 years agoAdopt shrink-wrapping for TextIndicators on Mac
timothy_horton@apple.com [Mon, 17 Aug 2015 17:50:09 +0000 (17:50 +0000)]
Adopt shrink-wrapping for TextIndicators on Mac
https://bugs.webkit.org/show_bug.cgi?id=148064

Reviewed by Beth Dakin.

Instead of indicating the bounding rect when there are multiple text rects,
use shrink-wrapping for TextIndicatorWindow (on Mac), like we do on iOS.

* bindings/objc/DOM.mm:
(-[DOMNode getPreviewSnapshotImage:andRects:]):
Make getPreviewSnapshotImage use the same options that iOS WebKit2 uses.
This fixes a regression from r188420 where iOS WebKit1 TextIndicators lost
all of the relevant (previously hardcoded inside TextIndicator) options.

* page/TextIndicator.cpp:
(WebCore::TextIndicator::createWithRange):
(WebCore::TextIndicator::createWithSelectionInFrame):
(WebCore::initializeIndicator):
Don't keep indicatesCurrentSelection in TextIndicatorData. Instead,
just pass it through to initializeIndicator. Add a flag which stops us
from zeroing out the margin if indicatesCurrentSelection is true.
Move default margins into TextIndicator so they can be applied to the stored rects
just like on iOS, instead of trying to apply them later like we used to on Mac.

* page/TextIndicator.h:
(WebCore::TextIndicator::indicatesCurrentSelection): Deleted.
* page/mac/TextIndicatorWindow.h:
* page/mac/TextIndicatorWindow.mm:
(-[WebTextIndicatorView initWithFrame:textIndicator:margin:offset:]):
(WebCore::TextIndicatorWindow::setTextIndicator):
(outsetIndicatorRectIncludingShadow): Deleted.
(textIndicatorsForTextRectsOverlap): Deleted.
Make use of pathsWithShrinkWrappedRects for TextIndicatorWindow, instead
of just smushing all intersecting rects together. Use the computed path
for the shadows and to mask the yellow highlight and snapshot layer.

* platform/graphics/PathUtilities.cpp:
(WebCore::PathUtilities::pathsWithShrinkWrappedRects):
(WebCore::PathUtilities::pathWithShrinkWrappedRects):
* platform/graphics/PathUtilities.h:
Make it possible to retrieve each non-intersecting path individually, instead
of just a single giant Path, so that TextIndicatorWindow can make separate
layers for each one (so they can bounce separately).

* Shared/WebCoreArgumentCoders.cpp:
(IPC::ArgumentCoder<TextIndicatorData>::encode): Deleted.
(IPC::ArgumentCoder<TextIndicatorData>::decode): Deleted.
* WebProcess/WebPage/FindController.cpp:
(WebKit::FindController::updateFindIndicator):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::getPositionInformation):
Use the new option, TextIndicatorOptionIncludeMarginIfRangeMatchesSelection,
for iOS and FindController, because we can keep the margins in these cases
because we don't have to animate to/from the blue highlight.

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

4 years ago[Win] Cleanups to PluginView::handleMouseEvent().
commit-queue@webkit.org [Mon, 17 Aug 2015 17:41:44 +0000 (17:41 +0000)]
[Win] Cleanups to PluginView::handleMouseEvent().
https://bugs.webkit.org/show_bug.cgi?id=148024

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-08-17
Reviewed by Alex Christensen.

1. Replace the raw values identifying specific mouse buttons with
   WebCore::MouseButton enum values.
2. Reindent if and switch statements.

* Plugins/PluginViewWin.cpp:
(WebCore::PluginView::handleMouseEvent):

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

4 years agoRemove some includes from Node.cpp
simon.fraser@apple.com [Mon, 17 Aug 2015 17:15:16 +0000 (17:15 +0000)]
Remove some includes from Node.cpp
https://bugs.webkit.org/show_bug.cgi?id=148000

Reviewed by Anders Carlsson.

No need for these includes.

* dom/Node.cpp:

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

4 years agoAccessing HTMLCollection.length is slow
cdumez@apple.com [Mon, 17 Aug 2015 16:46:41 +0000 (16:46 +0000)]
Accessing HTMLCollection.length is slow
https://bugs.webkit.org/show_bug.cgi?id=148039

Reviewed by Ryosuke Niwa.

Source/WebCore:

Accessing was HTMLCollection.length is slow, much slower than accessing
NodeList.length. The reason is that HTMLCollection's bindings code is
slightly different. In particular, HTMLCollection's GetOwnPropertySlot()
has an extra check to see if the PropertyName is available on the
prototype before doing:
1. Check static properties (getStaticValueSlotEntryWithoutCaching())
2. Indexed getter
3. Named getter
4. Check own properties (getStaticValueSlot())

This means that everytime the JavaScript was accessing HTMLCollection.length
or HTMLCollection[index], we would check if length / index was present on the
prototype before calling HTMLCollection::length() / HTMLCollection::item(i).
The prototype check is fairly expensive and was making traversing an
HTMLCollection much slower than traversing a NodeList.

In this patch, I refactored GetOwnPropertySlot() to do:
1. Indexed getter
2. Check static properties
3. Prototype check
4. Named getter
5. Check own properties

This way, the prototype check is no longer slowing down HTMLCollection
traversal. What matters is that we do the prototype check *before* calling
the named getter as we don't want named properties to mask properties on
the prototype.

Note that this patch takes the minimal approach to get the performance win
while limiting the risk of breakage. Indeed, the current behavior still
does not match the WebIDL specification, which seems to indicate the order
should be:
1. Indexed getter
2. Check static / own properties
3. Prototype check
4. Named getter

Once we match the specification, I believe we will be able to drop the
JSC::HasImpureGetOwnPropertySlot flag on HTMLCollection, which currently
makes HTMLCollection.length not cacheable. Right now, I believe we still
need this flag because named properties can still mask own properties.

Performance:
/Bindings/childNodes-traversal: 5597.54 +/- 0.7% -> 5572.10 +/- 0.4%
/Bindings/children-traversal: 3852.61 +/- 0.3% -> 4731.03 +/- 0.3% (~23% better)

Test: fast/dom/htmlcollection-getownproperty.html

* bindings/scripts/CodeGeneratorJS.pm:
(GenerateGetOwnPropertySlotBody):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTarget::getOwnPropertySlot):

LayoutTests:

* fast/dom/htmlcollection-getownproperty-expected.txt: Added.
* fast/dom/htmlcollection-getownproperty.html: Added.
Add new layout test covering the expected behavior of HTMLCollection's
[[GetOwnProperty]]. A few checks are still failing as we don't entirely
match the specification yet.

* fast/dom/wrapper-classes-expected.txt:
Rebaseline test as a few more checks are now passing.

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

4 years agoFix possible EGL and GLX makeCurrent problem of GLPlatformContext and GLPlatformSurface
commit-queue@webkit.org [Mon, 17 Aug 2015 15:36:16 +0000 (15:36 +0000)]
Fix possible EGL and GLX makeCurrent problem of GLPlatformContext and GLPlatformSurface
https://bugs.webkit.org/show_bug.cgi?id=147695

Patch by Jinyoung Hur <hur.ims@navercorp.com> on 2015-08-17
Reviewed by Gyuyoung Kim.

GLPLatformContext::makeCurrent is implemented to do no-op when it thinks, comparing with a static
variable declared in GLPlatformContext.cpp, there is no changes. This can lead to not-working
makeCurrent when other part of codes, e.g., Cairo-gl, change EGL or GLX current context by calling
something like eglMakeCurrent. So modify GLPLatformContext::makeCurrent to use the return value of
eglGetCurrentContext or glXGetCurrentContext as a comparing target rather than a static variable.
In addition, GLPlatformSurface::isCurrentDrawable is also modified to use eglGetCurrentSurface or
glXGetCurrentDrawable rather than a static variable.

There are no tests because already existing GL tests will verify this change.

* platform/graphics/opengl/GLPlatformContext.cpp:
(WebCore::GLPlatformContext::makeCurrent):
(WebCore::GLPlatformContext::releaseCurrent):
(WebCore::GLCurrentContextWrapper::GLCurrentContextWrapper): Deleted.
(WebCore::GLPlatformContext::~GLPlatformContext): Deleted.
(WebCore::GLPlatformContext::isCurrentContext): Deleted.
(WebCore::GLPlatformContext::getCurrent): Deleted.
* platform/graphics/opengl/GLPlatformContext.h:
* platform/graphics/opengl/GLPlatformSurface.cpp:
(WebCore::GLPlatformSurface::~GLPlatformSurface): Deleted.
(WebCore::GLPlatformSurface::isCurrentDrawable): Deleted.
(WebCore::GLPlatformSurface::onMakeCurrent): Deleted.
(WebCore::GLPlatformSurface::destroy): Deleted.
* platform/graphics/opengl/GLPlatformSurface.h:
* platform/graphics/surfaces/egl/EGLSurface.cpp:
(WebCore::EGLTransportSurface::isCurrentDrawable):
(WebCore::EGLOffScreenSurface::isCurrentDrawable):
* platform/graphics/surfaces/egl/EGLSurface.h:
* platform/graphics/surfaces/glx/GLXSurface.cpp:
(WebCore::GLXTransportSurface::isCurrentContext):
(WebCore::GLXOffScreenSurface::isCurrentContext):
* platform/graphics/surfaces/glx/GLXSurface.h:

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

4 years agoRefactor ViewGestureController swipe snapshot removal to be more platform-independent
timothy_horton@apple.com [Mon, 17 Aug 2015 00:52:50 +0000 (00:52 +0000)]
Refactor ViewGestureController swipe snapshot removal to be more platform-independent
https://bugs.webkit.org/show_bug.cgi?id=148062

Reviewed by Dan Bernstein.

* Platform/Logging.h:
Add a ViewGestures logging channel.

* UIProcess/ViewGestureController.cpp: Added.
(viewGestureControllersForAllPages):
(WebKit::ViewGestureController::ViewGestureController):
(WebKit::ViewGestureController::~ViewGestureController):
(WebKit::ViewGestureController::gestureControllerForPage):
(WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame):
(WebKit::ViewGestureController::didRepaintAfterNavigation):
(WebKit::ViewGestureController::didHitRenderTreeSizeThreshold):
(WebKit::ViewGestureController::didRestoreScrollPosition):
(WebKit::ViewGestureController::didReachMainFrameLoadTerminalState):
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
(WebKit::ViewGestureController::checkForActiveLoads):
(WebKit::ViewGestureController::SnapshotRemovalTracker::eventsDescription):
(WebKit::ViewGestureController::SnapshotRemovalTracker::SnapshotRemovalTracker):
(WebKit::ViewGestureController::SnapshotRemovalTracker::log):
(WebKit::ViewGestureController::SnapshotRemovalTracker::start):
(WebKit::ViewGestureController::SnapshotRemovalTracker::reset):
(WebKit::ViewGestureController::SnapshotRemovalTracker::eventOccurred):
(WebKit::ViewGestureController::SnapshotRemovalTracker::cancelOutstandingEvent):
(WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackIfPossible):
(WebKit::ViewGestureController::SnapshotRemovalTracker::fireRemovalCallbackImmediately):
(WebKit::ViewGestureController::SnapshotRemovalTracker::watchdogTimerFired):
(WebKit::ViewGestureController::SnapshotRemovalTracker::startWatchdog):
Build a platform-independent SnapshotRemovalTracker, which keeps track of
various events that we wait for before removing the snapshot. This
is constructed from the union of ViewGestureController{IOS, Mac}'s snapshot
removal code, and each platform ViewGestureController can specify which
events to wait for (because this currently differs slightly).

Add logging to SnapshotRemovalTracker to make debugging snapshot removal
issues much easier.

* UIProcess/mac/ViewGestureController.h:
(WebKit::ViewGestureController::backgroundColorForCurrentSnapshot):
(WebKit::ViewGestureController::didFinishLoadForMainFrame):
(WebKit::ViewGestureController::didFailLoadForMainFrame):

* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::platformTeardown):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::setRenderTreeSize):
(WebKit::ViewGestureController::willCommitPostSwipeTransitionLayerTree):
(WebKit::ViewGestureController::removeSwipeSnapshot):
(viewGestureControllersForAllPages): Deleted.
(WebKit::ViewGestureController::ViewGestureController): Deleted.
(WebKit::ViewGestureController::~ViewGestureController): Deleted.
(WebKit::ViewGestureController::didRestoreScrollPosition): Deleted.
(WebKit::ViewGestureController::mainFrameLoadDidReachTerminalState): Deleted.
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame): Deleted.
(WebKit::ViewGestureController::activeLoadMonitoringTimerFired): Deleted.
(WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired): Deleted.
(WebKit::ViewGestureController::removeSwipeSnapshotIfReady): Deleted.
* UIProcess/mac/ViewGestureControllerMac.mm:
(WebKit::ViewGestureController::platformTeardown):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::forceRepaintIfNeeded):
(WebKit::ViewGestureController::removeSwipeSnapshot):
(WebKit::ViewGestureController::ViewGestureController): Deleted.
(WebKit::ViewGestureController::~ViewGestureController): Deleted.
(WebKit::ViewGestureController::beginSwipeGesture): Deleted.
(WebKit::ViewGestureController::didHitRenderTreeSizeThreshold): Deleted.
(WebKit::ViewGestureController::didFirstVisuallyNonEmptyLayoutForMainFrame): Deleted.
(WebKit::ViewGestureController::mainFrameLoadDidReachTerminalState): Deleted.
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame): Deleted.
(WebKit::ViewGestureController::activeLoadMonitoringTimerFired): Deleted.
(WebKit::ViewGestureController::swipeSnapshotWatchdogTimerFired): Deleted.
(WebKit::ViewGestureController::removeSwipeSnapshotAfterRepaint): Deleted.
Move shareable snapshot removal code to a new platform-independent ViewGestureController file.
Move the ViewGestureController constructor/destructor to the platform-independent file.

* UIProcess/mac/ViewGestureController.messages.in:
* WebKit2.xcodeproj/project.pbxproj:

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

4 years agoRefactor HTMLCollection to be as fast as CachedLiveNodeList
cdumez@apple.com [Sun, 16 Aug 2015 18:58:48 +0000 (18:58 +0000)]
Refactor HTMLCollection to be as fast as CachedLiveNodeList
https://bugs.webkit.org/show_bug.cgi?id=147979

Reviewed by Ryosuke Niwa and Antti Koivisto.

Refactor HTMLCollection to be as fast as CachedLiveNodeList. This is in
preparation of having getElementsByTagName*() / getElementsByClassName()
return an HTMLCollection instead of a NodeList, as per the
specification. Chrome and Firefox already match the specification in
this case.

Traversing an HTMLCollection was slow because of all the extra
branching it had compared to CachedLiveNodeList. To address the issue,
this patch introduces a new templated CachedHTMLCollection subclass,
which behaves in a similar way as CachedLiveNodeList. The 2 template
parameters are:
1. The type of the subclass of CachedHTMLCollection, so we can call
   elementMatches() directly on the subclass, without needed any
   virtual function call or switch statement. This is the same approach
   as in CachedLiveNodeList.
2. The type of tree traversal used (Descendants, ChildrenOnly,
   CustomForwardOnly). Unlike LiveNodeList, HTMLCollection needs to
   support these 3 types of tree traversal. These were causing extra
   branching for every item() call. We are now able to choose the right
   type of traversal for the CachedHTMLCollection at compile time.

* WebCore.xcodeproj/project.pbxproj:
Add new files to the Project.

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::children):
(WebCore::ContainerNode::cachedHTMLCollection): Deleted.
* dom/ContainerNode.h:
Drop ContainerNode::ensureCachedHTMLCollection() and use
NodeListsNodeData::addCachedCollection() directly at call sites
instead. We need access to the CollectionType at build-time so
we can resolve the CollectionTraversalType parameter for the
GenericCachedHTMLCollection using CollectionTypeTraits.

* dom/Document.cpp:
* dom/Document.h:
Update ensureCachedCollection() so the CollectionType is now a template
parameter instead of a method argument. We need to know the
CollectionType at build time to construct the GenericCachedHTMLCollection.

* dom/ElementChildIterator.h:
(WebCore::ElementChildIterator<ElementType>::operator):
(WebCore::ElementChildConstIterator<ElementType>::operator):
Add support for decrementing an ElementChildIterator, for consistency
with ElementDescendantIterator. We need this to support backward
traversal in CachedHTMLCollections that use the 'ChildrenOnly' type
of traversal.

* dom/LiveNodeList.h:
(WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
(WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
Move traversal implementation to CollectionTraversal.h, so it can be
shared with achedHTMLCollection.h.

* html/CachedHTMLCollection.h: Added.
(WebCore::traversalType>::CachedHTMLCollection):
(WebCore::traversalType>::~CachedHTMLCollection):
(WebCore::traversalType>::CachedHTMLCollection::memoryCost):
(WebCore::traversalType>::collectionCanTraverseBackward):
(WebCore::traversalType>::collectionTraverseForward):
(WebCore::traversalType>::collectionTraverseBackward):
(WebCore::traversalType>::willValidateIndexCache):
(WebCore::traversalType>::length):
(WebCore::traversalType>::item):
(WebCore::traversalType>::invalidateCache):
(WebCore::traversalType>::elementMatches):
(WebCore::nameShouldBeVisibleInDocumentAll):
(WebCore::traversalType>::namedItem):

* html/CollectionTraversal.h: Added.
Add new template class that provide the collection traversal code
needed by CollectionIndexCache. It has template specializations for
all 3 types of traversal: Descendants, ChildrenOnly, and
CustomForwardOnly.

* html/CollectionType.h:
Add CollectionTypeTraits traits so we can resolve the
CollectionTraversalType used by a specific CollectionType at
compile-time. This is needed for the second template parameter of
CachedHTMLCollection.

* html/GenericCachedHTMLCollection.cpp: Added.
(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches):
* html/GenericCachedHTMLCollection.h: Added.
Add CachedHTMLCollection subclass is the generic one used for all
CollectionTypes that do not have their own subclass (e.g. NodeChildren).
This has an elementMatches() method with a switch() statement handling
all these CollectionTypes. Those are not normally not performance
sensitive.

* html/HTMLAllCollection.cpp:
(WebCore::HTMLAllCollection::HTMLAllCollection):
* html/HTMLAllCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection. Also provide
an elementMatches() method that simply returns true as we want to
match all elements.

* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::HTMLCollection):
Move CollectionIndexCache member to the subclass and drop the 2 other
members as they are replaced with the CollectionTraversalType template
parameter of CachedHTMLCollection.

(WebCore::HTMLCollection::~HTMLCollection):
Move Document::unregisterCollection() call to ~CachedHTMLCollection()
as we needed to check if the CollectionIndexCache was valid first.

(WebCore::HTMLCollection::updateNamedElementCache):
Move part of the implementation to the CachedHTMLCollection subclass
as it needs to know about the type of traversal and it needs to be
able to call elementMatches().

* html/HTMLCollection.h:
(WebCore::HTMLCollection::rootNode):
Inline for performance reasons and consistency with CachedLiveNodeList.

(WebCore::HTMLCollection::memoryCost):
Make virtual and move part of the implementation to the
CachedHTMLCollection subclass to compute the cost of the
CollectionIndexCache.

(WebCore::HTMLCollection::invalidateCache):
Move part of the implementation to the subclass to invalidate the
CollectionIndexCache.

* html/HTMLFieldSetElement.cpp:
(WebCore::HTMLFieldSetElement::elements):

* html/HTMLFormControlsCollection.cpp:
* html/HTMLFormControlsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::elements):
* html/HTMLMapElement.cpp:
(WebCore::HTMLMapElement::areas):
Call NodeListsNodeData::addCachedCollection() directly.

* html/HTMLNameCollection.cpp:
* html/HTMLNameCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.

* html/HTMLOptionsCollection.cpp:
* html/HTMLOptionsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.

* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::selectedOptions):
(WebCore::HTMLSelectElement::options):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::rows):
(WebCore::HTMLTableElement::tBodies):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::cells):
Call NodeListsNodeData::addCachedCollection() directly.

* html/HTMLTableRowsCollection.cpp:
* html/HTMLTableRowsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::rows):
Call NodeListsNodeData::addCachedCollection() directly.

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

4 years ago[JSC] Use (x + x) instead of (x * 2) when possible
benjamin@webkit.org [Sun, 16 Aug 2015 08:13:50 +0000 (08:13 +0000)]
[JSC] Use (x + x) instead of (x * 2) when possible
https://bugs.webkit.org/show_bug.cgi?id=148051

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-08-16
Reviewed by Michael Saboff.

When multiplying a number by 2, JSC was loading a constant "2"
in register and multiplying it with the first number:

    mov $0x4000000000000000, %rcx
    movd %rcx, %xmm0
    mulsd %xmm0, %xmm1

This is a problem for a few reasons.
1) "movd %rcx, %xmm0" only set half of XMM0. This instruction
   has to wait for any preceding instruction on XMM0 to finish
   before executing.
2) The load and transform itself is large and unecessary.

To fix that, I added a StrengthReductionPhase to transform
multiplications by 2 into a addition.

Unfortunately, that turned the code into:
    movsd %xmm0 %xmm1
    mulsd %xmm1 %xmm0

The reason is GenerationInfo::canReuse() was not accounting
for nodes using other nodes multiple times.

After fixing that too, we now have the multiplications by 2
done as:
    addsd %xmm0 %xmm0

* dfg/DFGGenerationInfo.h:
(JSC::DFG::GenerationInfo::useCount):
(JSC::DFG::GenerationInfo::canReuse): Deleted.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::FPRTemporary::FPRTemporary):
* dfg/DFGSpeculativeJIT.h:
(JSC::DFG::SpeculativeJIT::canReuse):
(JSC::DFG::GPRTemporary::GPRTemporary):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):

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

4 years agoREGRESSION (r168327): ImageDocuments with margins zoom to the wrong position when...
timothy_horton@apple.com [Sun, 16 Aug 2015 03:46:47 +0000 (03:46 +0000)]
REGRESSION (r168327): ImageDocuments with margins zoom to the wrong position when clicked
https://bugs.webkit.org/show_bug.cgi?id=148063

Reviewed by Simon Fraser.

No new test because it doesn't seem possible to click on a window.open'd ImageDocument.

* html/ImageDocument.cpp:
(WebCore::ImageEventListener::handleEvent):
Use <img>-relative coordinates, not document-relative coordinates,
because after r168327, the image can be centered.

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

4 years ago[Cocoa] Add redirect support to CustomProtocolManager
aestes@apple.com [Sun, 16 Aug 2015 03:29:01 +0000 (03:29 +0000)]
[Cocoa] Add redirect support to CustomProtocolManager
https://bugs.webkit.org/show_bug.cgi?id=147871

Reviewed by Dan Bernstein.
Source/WebKit2:

NSURLProtocols have the ability to generate redirect responses. This change teaches CustomProtocolManager how to handle them.

* Shared/Network/CustomProtocols/Cocoa/CustomProtocolManagerCocoa.mm:
(WebKit::CustomProtocolManager::wasRedirectedToRequest): Called -URLProtocol:wasRedirectedToRequest:redirectResponse: on the NSURLProtocolClient.
* Shared/Network/CustomProtocols/CustomProtocolManager.h:
* Shared/Network/CustomProtocols/CustomProtocolManager.messages.in: Defined WasRedirectedToRequest.
* Shared/Network/CustomProtocols/soup/CustomProtocolManagerSoup.cpp:
(WebKit::CustomProtocolManager::wasRedirectedToRequest): Defined empty function.
* UIProcess/Network/CustomProtocols/mac/CustomProtocolManagerProxyMac.mm:
(-[WKCustomProtocolLoader connection:willSendRequest:redirectResponse:]): If a redirect response is received, send WasRedirectedToRequest and return nil to ignore the redirect.

Tools:

Updated WebKit2CustomProtocolsTest.MainResource to generate a redirect response.

* TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm:
(TestWebKitAPI::TEST): Unregesitered TestProtocol.
* TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html: Changed scheme to http.
* TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm:
(-[CustomProtocolsLoadDelegate browsingContextControllerDidStartProvisionalLoad:]): Expected a certain provisional URL.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidReceiveServerRedirectForProvisionalLoad:]): Ditto.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidCommitLoad:]): Expected a certain committed URL.
(-[CustomProtocolsLoadDelegate browsingContextControllerDidFinishLoad:]): Expected isLoading to be false.
(TestWebKitAPI::TEST): Used the new load delegate and unregistered TestProtocol.
* TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm:
(TestWebKitAPI::TEST): Unregistered TestProtocol.
* TestWebKitAPI/mac/TestProtocol.mm: Changed scheme to http.
(+[TestProtocol canInitWithRequest:]): Changed to use property syntax.
(-[TestProtocol startLoading]): Taught to handle redirect responses.

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

4 years agoRemoved an expectation for http/tests/media/video-buffered-range-contains-currentTime...
ap@apple.com [Sat, 15 Aug 2015 20:42:29 +0000 (20:42 +0000)]
Removed an expectation for http/tests/media/video-buffered-range-contains-currentTime.html,
which no longer times out. This expectation was conflicting with a correct one.

* platform/mac/TestExpectations:

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

4 years agoHave will-change create stacking context when necessary
simon.fraser@apple.com [Sat, 15 Aug 2015 20:13:24 +0000 (20:13 +0000)]
Have will-change create stacking context when necessary
https://bugs.webkit.org/show_bug.cgi?id=148060

Reviewed by Zalan Bujtas.

Source/WebCore:

If will-change includes a property whose non-initial value can create
stacking context, create stacking context for that element.

Test: fast/css/will-change/will-change-creates-stacking-context.html

* css/StyleResolver.cpp:
(WebCore::StyleResolver::adjustRenderStyle):
* rendering/style/RenderStyle.h: Add willChangeCreatesStackingContext(),
which on most cases is a fast, inlined 'return false'. Otherwise ask
the WillChangeData.
* rendering/style/WillChangeData.cpp:
(WebCore::propertyCreatesStackingContext):
(WebCore::WillChangeData::createsStackingContext):
* rendering/style/WillChangeData.h:

LayoutTests:

Ref test for will-change creating stacking context.

* fast/css/will-change/resources/will-change-stacking-helper.js: Added.
(makeStackingBlock):
* fast/css/will-change/will-change-creates-stacking-context-expected.html: Added.
* fast/css/will-change/will-change-creates-stacking-context.html: Added.
* platform/efl/TestExpectations: Mark image failure on EFL, since some CSS
properties in the test are disabled there.

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

4 years agoUnreviewed, rolling out r188508.
commit-queue@webkit.org [Sat, 15 Aug 2015 18:09:01 +0000 (18:09 +0000)]
Unreviewed, rolling out r188508.
https://bugs.webkit.org/show_bug.cgi?id=148058

Caused 10 tests to crash (Requested by smfr on #webkit).

Reverted changeset:

"Refactor HTMLCollection to be as fast as CachedLiveNodeList"
https://bugs.webkit.org/show_bug.cgi?id=147979
http://trac.webkit.org/changeset/188508

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

4 years agoImplement parsing for CSS will-change
simon.fraser@apple.com [Sat, 15 Aug 2015 17:59:05 +0000 (17:59 +0000)]
Implement parsing for CSS will-change
https://bugs.webkit.org/show_bug.cgi?id=148052

Reviewed by Dean Jackson.

Source/WebCore:

Syntax is
    will-change: auto | <animateable-feature>#
where
    <animateable-feature> = scroll-position | contents | <custom-ident>

To support this, add WillChangeData which stores a vector of "feature"
and CSS property squished into 16 bits. This is stored in rareNonInheritedData.
If null or an empty list, the property value is 'auto'. The list preserves
unknown properties.

Test: fast/css/will-change-parsing.html

* CMakeLists.txt:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* css/CSSComputedStyleDeclaration.cpp:
(WebCore::getWillChangePropertyValue):
(WebCore::ComputedStyleExtractor::propertyValue):
* css/CSSParser.cpp:
(WebCore::CSSParser::parseValue):
(WebCore::isValidGridPositionCustomIdent): Renamed from isValidCustomIdent(),
since it's grid-specific.
(WebCore::CSSParser::parseIntegerOrCustomIdentFromGridPosition):
(WebCore::valueIsCSSKeyword): Returns true for the "CSS-wide" keywords like
"initial", "inherit" and "default".
(WebCore::CSSParser::parseFontFamily):
(WebCore::isValidWillChangeAnimatableFeature):
(WebCore::CSSParser::parseWillChange):
(WebCore::isValidCustomIdent): Deleted.
* css/CSSParser.h:
* css/CSSPrimitiveValue.h:
(WebCore::CSSPrimitiveValue::isPropertyID): New utility function.
* css/CSSPropertyNames.in:
* css/CSSValueKeywords.in:
* css/StyleBuilderCustom.h:
(WebCore::StyleBuilderCustom::applyValueWillChange):
* rendering/style/RenderStyle.cpp:
(WebCore::RenderStyle::setWillChange):
* rendering/style/RenderStyle.h:
* rendering/style/StyleAllInOne.cpp:
* rendering/style/StyleRareNonInheritedData.cpp:
(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):
(WebCore::StyleRareNonInheritedData::willChangeDataEquivalent):
* rendering/style/StyleRareNonInheritedData.h:
* rendering/style/WillChangeData.cpp: Added.
(WebCore::WillChangeData::operator==):
(WebCore::WillChangeData::containsScrollPosition):
(WebCore::WillChangeData::containsContents):
(WebCore::WillChangeData::containsProperty):
(WebCore::WillChangeData::addFeature):
(WebCore::WillChangeData::featureAt):
* rendering/style/WillChangeData.h: Added.
(WebCore::WillChangeData::create):
(WebCore::WillChangeData::operator!=):
(WebCore::WillChangeData::isAuto):
(WebCore::WillChangeData::numFeatures):
(WebCore::WillChangeData::WillChangeData):
(WebCore::WillChangeData::AnimatableFeature::feature):
(WebCore::WillChangeData::AnimatableFeature::property):
(WebCore::WillChangeData::AnimatableFeature::featurePropertyPair):
(WebCore::WillChangeData::AnimatableFeature::AnimatableFeature):
(WebCore::WillChangeData::AnimatableFeature::operator==):

LayoutTests:

will-change parsing test.

* fast/css/will-change-parsing-expected.txt: Added.
* fast/css/will-change-parsing.html: Added.

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

4 years agoBuild fix after r188510
wenson_hsieh@apple.com [Sat, 15 Aug 2015 17:57:25 +0000 (17:57 +0000)]
Build fix after r188510

* platform/mac/ThemeMac.mm:
(WebCore::paintToggleButton): Pass a raw pointer to drawCellOrFocusRingWithViewIntoContext.

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

4 years agoSearch fields should scale when rendering while zoomed
wenson_hsieh@apple.com [Sat, 15 Aug 2015 17:50:04 +0000 (17:50 +0000)]
Search fields should scale when rendering while zoomed
https://bugs.webkit.org/show_bug.cgi?id=147867

Reviewed by Daniel Bates.

When rendering zoomed search fields, draw to an image buffer instead of drawing directly into the context. This
allows us to scale the image buffer up before rendering. Also refactors common logic used to draw both selects
(paintMenuList) and search fields into the new private method paintCellAndSetFocusedElementNeedsRepaintIfNecessary.

* rendering/RenderThemeMac.h: Changed drawCellOrFocusRingWithViewIntoContext to take a raw pointer.
* rendering/RenderThemeMac.mm:
(WebCore::paintToggleButton): Passes a raw pointer to drawCellOrFocusRingWithViewIntoContext.
(WebCore::ThemeMac::drawCellOrFocusRingWithViewIntoContext): Changed to take a raw pointer.
* rendering/RenderThemeMac.h:
* rendering/RenderThemeMac.mm:
(WebCore::RenderThemeMac::paintMenuList): Refactored to use paintCellAndSetFocusedElementNeedsRepaintIfNecessary.
(WebCore::RenderThemeMac::paintCellAndSetFocusedElementNeedsRepaintIfNecessary): Contains logic common to painting
    both selects and search fields.
(WebCore::RenderThemeMac::paintSearchField): Use ThemeMac::drawCellOrFocusRingWithViewIntoContext
    to render search fields, utilizing an offscreen image buffer only when necessary.

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

4 years agoClean up js-test use in scroll-snap tests
ap@apple.com [Sat, 15 Aug 2015 05:51:04 +0000 (05:51 +0000)]
Clean up js-test use in scroll-snap tests
https://bugs.webkit.org/show_bug.cgi?id=148046

Reviewed by Brent Fulgham.

* tiled-drawing/scrolling/scroll-snap/scroll-snap-iframe-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-iframe.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-2d-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-borders.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-horizontal.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-horizontal.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-slow-vertical.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-stateless-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow-stateless.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-overflow.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-padding.html:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated-expected.txt:
* tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-rotated.html:

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

4 years agoRefactor HTMLCollection to be as fast as CachedLiveNodeList
cdumez@apple.com [Sat, 15 Aug 2015 05:44:46 +0000 (05:44 +0000)]
Refactor HTMLCollection to be as fast as CachedLiveNodeList
https://bugs.webkit.org/show_bug.cgi?id=147979

Reviewed by Ryosuke Niwa.

Refactor HTMLCollection to be as fast as CachedLiveNodeList. This is in
preparation of having getElementsByTagName*() / getElementsByClassName()
return an HTMLCollection instead of a NodeList, as per the
specification. Chrome and Firefox already match the specification in
this case.

Traversing an HTMLCollection was slow because of all the extra
branching it had compared to CachedLiveNodeList. To address the issue,
this patch introduces a new templated CachedHTMLCollection subclass,
which behaves in a similar way as CachedLiveNodeList. The 2 template
parameters are:
1. The type of the subclass of CachedHTMLCollection, so we can call
   elementMatches() directly on the subclass, without needed any
   virtual function call or switch statement. This is the same approach
   as in CachedLiveNodeList.
2. The type of tree traversal used (Descendants, ChildrenOnly,
   CustomForwardOnly). Unlike LiveNodeList, HTMLCollection needs to
   support these 3 types of tree traversal. These were causing extra
   branching for every item() call. We are now able to choose the right
   type of traversal for the CachedHTMLCollection at compile time.

* WebCore.xcodeproj/project.pbxproj:
Add new files to the Project.

* dom/ContainerNode.cpp:
(WebCore::ContainerNode::children):
(WebCore::ContainerNode::cachedHTMLCollection): Deleted.
* dom/ContainerNode.h:
Drop ContainerNode::ensureCachedHTMLCollection() and use
NodeListsNodeData::addCachedCollection() directly at call sites
instead. We need access to the CollectionType at build-time so
we can resolve the CollectionTraversalType parameter for the
GenericCachedHTMLCollection using CollectionTypeTraits.

* dom/Document.cpp:
* dom/Document.h:
Update ensureCachedCollection() so the CollectionType is now a template
parameter instead of a method argument. We need to know the
CollectionType at build time to construct the GenericCachedHTMLCollection.

* dom/ElementChildIterator.h:
(WebCore::ElementChildIterator<ElementType>::operator):
(WebCore::ElementChildConstIterator<ElementType>::operator):
Add support for decrementing an ElementChildIterator, for consistency
with ElementDescendantIterator. We need this to support backward
traversal in CachedHTMLCollections that use the 'ChildrenOnly' type
of traversal.

* dom/LiveNodeList.h:
(WebCore::CachedLiveNodeList<NodeListType>::collectionBegin):
(WebCore::CachedLiveNodeList<NodeListType>::collectionLast):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseForward):
(WebCore::CachedLiveNodeList<NodeListType>::collectionTraverseBackward):
Move traversal implementation to CollectionTraversal.h, so it can be
shared with achedHTMLCollection.h.

* html/CachedHTMLCollection.h: Added.
(WebCore::traversalType>::CachedHTMLCollection):
(WebCore::traversalType>::~CachedHTMLCollection):
(WebCore::traversalType>::CachedHTMLCollection::memoryCost):
(WebCore::traversalType>::collectionCanTraverseBackward):
(WebCore::traversalType>::collectionTraverseForward):
(WebCore::traversalType>::collectionTraverseBackward):
(WebCore::traversalType>::willValidateIndexCache):
(WebCore::traversalType>::length):
(WebCore::traversalType>::item):
(WebCore::traversalType>::invalidateCache):
(WebCore::traversalType>::elementMatches):
(WebCore::nameShouldBeVisibleInDocumentAll):
(WebCore::traversalType>::namedItem):

* html/CollectionTraversal.h: Added.
Add new template class that provide the collection traversal code
needed by CollectionIndexCache. It has template specializations for
all 3 types of traversal: Descendants, ChildrenOnly, and
CustomForwardOnly.

* html/CollectionType.h:
Add CollectionTypeTraits traits so we can resolve the
CollectionTraversalType used by a specific CollectionType at
compile-time. This is needed for the second template parameter of
CachedHTMLCollection.

* html/GenericCachedHTMLCollection.cpp: Added.
(WebCore::GenericCachedHTMLCollection<traversalType>::elementMatches):
* html/GenericCachedHTMLCollection.h: Added.
Add CachedHTMLCollection subclass is the generic one used for all
CollectionTypes that do not have their own subclass (e.g. NodeChildren).
This has an elementMatches() method with a switch() statement handling
all these CollectionTypes. Those are not normally not performance
sensitive.

* html/HTMLAllCollection.cpp:
(WebCore::HTMLAllCollection::HTMLAllCollection):
* html/HTMLAllCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection. Also provide
an elementMatches() method that simply returns true as we want to
match all elements.

* html/HTMLCollection.cpp:
(WebCore::HTMLCollection::HTMLCollection):
Move CollectionIndexCache member to the subclass and drop the 2 other
members as they are replaced with the CollectionTraversalType template
parameter of CachedHTMLCollection.

(WebCore::HTMLCollection::~HTMLCollection):
Move Document::unregisterCollection() call to ~CachedHTMLCollection()
as we needed to check if the CollectionIndexCache was valid first.

(WebCore::HTMLCollection::updateNamedElementCache):
Move part of the implementation to the CachedHTMLCollection subclass
as it needs to know about the type of traversal and it needs to be
able to call elementMatches().

* html/HTMLCollection.h:
(WebCore::HTMLCollection::rootNode):
Inline for performance reasons and consistency with CachedLiveNodeList.

(WebCore::HTMLCollection::memoryCost):
Make virtual and move part of the implementation to the
CachedHTMLCollection subclass to compute the cost of the
CollectionIndexCache.

(WebCore::HTMLCollection::invalidateCache):
Move part of the implementation to the subclass to invalidate the
CollectionIndexCache.

* html/HTMLFieldSetElement.cpp:
(WebCore::HTMLFieldSetElement::elements):

* html/HTMLFormControlsCollection.cpp:
* html/HTMLFormControlsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::elements):
* html/HTMLMapElement.cpp:
(WebCore::HTMLMapElement::areas):
Call NodeListsNodeData::addCachedCollection() directly.

* html/HTMLNameCollection.cpp:
* html/HTMLNameCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.

* html/HTMLOptionsCollection.cpp:
* html/HTMLOptionsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.

* html/HTMLSelectElement.cpp:
(WebCore::HTMLSelectElement::selectedOptions):
(WebCore::HTMLSelectElement::options):
* html/HTMLTableElement.cpp:
(WebCore::HTMLTableElement::rows):
(WebCore::HTMLTableElement::tBodies):
* html/HTMLTableRowElement.cpp:
(WebCore::HTMLTableRowElement::cells):
Call NodeListsNodeData::addCachedCollection() directly.

* html/HTMLTableRowsCollection.cpp:
* html/HTMLTableRowsCollection.h:
Subclass CachedHTMLCollection instead of HTMLCollection.
customElementAfter() no longer needs to be virtual as it
is called directly by CachedHTMLCollection on the subclass.

* html/HTMLTableSectionElement.cpp:
(WebCore::HTMLTableSectionElement::rows):
Call NodeListsNodeData::addCachedCollection() directly.

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

4 years agoOccasional failure in v8-v6/v8-raytrace.js.ftl-eager
basile_clement@apple.com [Sat, 15 Aug 2015 05:00:57 +0000 (05:00 +0000)]
Occasional failure in v8-v6/v8-raytrace.js.ftl-eager
https://bugs.webkit.org/show_bug.cgi?id=147165

Reviewed by Saam Barati.

The object allocation sinking phase was not properly checking that a
MultiGetByOffset was safe to lower before lowering it.
This makes it so that we only lower MultiGetByOffset if it only loads
from direct properties of the object, and considers it as an escape in
any other case (e.g. a load from the prototype).

It also ensure proper conversion of MultiGetByOffset into
CheckStructureImmediate when needed.

* dfg/DFGObjectAllocationSinkingPhase.cpp:
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::DFG::LowerDFGToLLVM::checkStructure):
    We were not compiling properly CheckStructure and
    CheckStructureImmediate nodes with an empty StructureSet.
* tests/stress/sink-multigetbyoffset.js: Regression test.

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

4 years agoWeb Inspector: NavigationBar.updateLayoutSoon should use requestAnimationFrame
mattbaker@apple.com [Sat, 15 Aug 2015 03:47:04 +0000 (03:47 +0000)]
Web Inspector: NavigationBar.updateLayoutSoon should use requestAnimationFrame
https://bugs.webkit.org/show_bug.cgi?id=148010

Reviewed by Brian Burg.

NavigationBar.updateLayoutSoon now uses requestAnimationFrame instead of setTimeout.

* UserInterface/Views/NavigationBar.js:
(WebInspector.NavigationBar):
(WebInspector.NavigationBar.prototype.updateLayoutSoon.update):
(WebInspector.NavigationBar.prototype.updateLayoutSoon):
(WebInspector.NavigationBar.prototype.updateLayout):

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

4 years agoRebase some WK2 test results to include the frame scroll pos. Move the
jhoneycutt@apple.com [Sat, 15 Aug 2015 03:24:41 +0000 (03:24 +0000)]
Rebase some WK2 test results to include the frame scroll pos. Move the
cross-platform test results to the WK1 directory.

* platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-bt-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-bt-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-lr-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-lr-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-rl-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-rl-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/BottomToTop-tb-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/BottomToTop-tb-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-bt-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-bt-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-lr-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-lr-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-rl-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-rl-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/pagination/RightToLeft-tb-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/pagination/RightToLeft-tb-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/vertical-rl/column-rules-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/column-rules-expected.txt.
* platform/ios-simulator-wk1/fast/multicol/vertical-rl/float-paginate-complex-expected.txt: Renamed from LayoutTests/platform/ios-simulator/fast/multicol/vertical-rl/float-paginate-complex-expected.txt.
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-bt-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-lr-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-rl-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/BottomToTop-tb-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-bt-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-lr-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-dynamic-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-rl-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/pagination/RightToLeft-tb-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-break-with-balancing-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/column-rules-expected.txt:
* platform/ios-simulator-wk2/fast/multicol/vertical-rl/float-paginate-complex-expected.txt:

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

4 years agoiOS test gardening.
jhoneycutt@apple.com [Sat, 15 Aug 2015 01:35:49 +0000 (01:35 +0000)]
iOS test gardening.

* platform/ios-simulator-wk2/TestExpectations:
* platform/ios-simulator/js/dom/constructor-length-expected.txt:

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

4 years agoWeb Inspector: Add VisualStyleDetailsPanel
drousso@apple.com [Sat, 15 Aug 2015 01:07:36 +0000 (01:07 +0000)]
Web Inspector: Add VisualStyleDetailsPanel
https://bugs.webkit.org/show_bug.cgi?id=147570

Reviewed by Timothy Hatcher.

Added VisualStyleDetailsPanel and inclusions to forthcoming classes
that will be used in this visual sidebar panel.

* Localizations/en.lproj/localizedStrings.js:
* UserInterface/Main.html:
Added files for all new classes used in the VisualStyleDetailsPanel.

* UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
(WebInspector.CSSStyleDetailsSidebarPanel):
* UserInterface/Views/DetailsSection.js:
(WebInspector.DetailsSection):
(WebInspector.DetailsSection.prototype.set collapsed):
(WebInspector.DetailsSection.prototype.get expandedByUser):
(WebInspector.DetailsSection.prototype._headerElementClicked):
Track whether or not the expanded state was caused by the user.

* UserInterface/Views/VisualStyleDetailsPanel.css: Added.
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > .visual-style-section-clear):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section:not(.modified) > .header > .visual-style-section-clear):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .header > span):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section.modified > .header > span::after):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row:last-child):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row.visual-style-separated-row):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container > .visual-style-property-title):
(.sidebar > .panel.details.css-style .visual > .details-section .details-section > .content .group > .row > .visual-style-property-container:not(.layout-reversed):last-child):
(.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section)):
(.sidebar > .panel.details.css-style .visual.disabled > .details-section:not(.visual-style-selector-section) input):

* UserInterface/Views/VisualStyleDetailsPanel.js: Added.
(WebInspector.VisualStyleDetailsPanel):
(WebInspector.VisualStyleDetailsPanel.prototype.refresh):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.replaceDashWithCapital):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection.createOptionsElement):
(WebInspector.VisualStyleDetailsPanel.prototype._generateSection):
(WebInspector.VisualStyleDetailsPanel.prototype._prepareForChange):
(WebInspector.VisualStyleDetailsPanel.prototype._updateSections):
(WebInspector.VisualStyleDetailsPanel.prototype._updateProperties):
(WebInspector.VisualStyleDetailsPanel.prototype._updateAutocompleteCompatiblePropertyEditor):
(WebInspector.VisualStyleDetailsPanel.prototype._sectionModified):
(WebInspector.VisualStyleDetailsPanel.prototype._clearModifiedSection):
(WebInspector.VisualStyleDetailsPanel.prototype.get _initialTextList):
(WebInspector.VisualStyleDetailsPanel.prototype._initialPropertyTextModified):
(WebInspector.VisualStyleDetailsPanel.prototype._populateSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateDisplaySection):
(WebInspector.VisualStyleDetailsPanel.prototype._generateMetricSectionRows):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePositionSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFloatSection):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseover):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners.onEditorMouseout):
(WebInspector.VisualStyleDetailsPanel.prototype._addMetricsMouseListeners):
(WebInspector.VisualStyleDetailsPanel.prototype._populateDimensionsSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateMarginSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populatePaddingSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFlexboxSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextStyleSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateFontSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextSpacingSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTextShadowSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBackgroundStyleSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBorderSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateOutlineSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.noRemainingTreeItems):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.selectedBoxShadowItemValueChanged):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection.boxShadowItemSelected):
(WebInspector.VisualStyleDetailsPanel.prototype._populateBoxShadowSection):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.noRemainingTreeItems):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.selectedtransitionItemValueChanged):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection.transitionItemSelected):
(WebInspector.VisualStyleDetailsPanel.prototype._populateTransitionSection):

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

4 years agoiOS test gardening.
jhoneycutt@apple.com [Sat, 15 Aug 2015 00:58:19 +0000 (00:58 +0000)]
iOS test gardening.

* platform/ios-simulator-wk2/fast/ruby/bopomofo-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/ruby/bopomofo-letter-spacing-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/ruby/bopomofo-rl-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/text/international/plane2-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/text/international/synthesized-italic-vertical-latin-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/japanese-lr-text-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/japanese-rl-text-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-horizontal-bt-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-vertical-lr-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/japanese-ruby-vertical-rl-expected.txt: Removed.
* platform/ios-simulator-wk2/fast/writing-mode/vertical-align-table-baseline-expected.txt: Removed.

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

4 years agoUse WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std...
fpizlo@apple.com [Sat, 15 Aug 2015 00:14:52 +0000 (00:14 +0000)]
Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* API/JSVirtualMachine.mm:
(initWrapperCache):
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(wrapperCacheMutex): Deleted.
* bytecode/SamplingTool.cpp:
(JSC::SamplingTool::doRun):
(JSC::SamplingTool::notifyOfScope):
* bytecode/SamplingTool.h:
* dfg/DFGThreadData.h:
* dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::isActiveForVM):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):
* dfg/DFGWorklist.h:
* disassembler/Disassembler.cpp:
* heap/CopiedSpace.cpp:
(JSC::CopiedSpace::doneFillingBlock):
(JSC::CopiedSpace::doneCopying):
* heap/CopiedSpace.h:
* heap/CopiedSpaceInlines.h:
(JSC::CopiedSpace::recycleBorrowedBlock):
(JSC::CopiedSpace::allocateBlockForCopyingPhase):
* heap/GCThread.cpp:
(JSC::GCThread::waitForNextPhase):
(JSC::GCThread::gcThreadMain):
* heap/GCThreadSharedData.cpp:
(JSC::GCThreadSharedData::GCThreadSharedData):
(JSC::GCThreadSharedData::~GCThreadSharedData):
(JSC::GCThreadSharedData::startNextPhase):
(JSC::GCThreadSharedData::endCurrentPhase):
(JSC::GCThreadSharedData::didStartMarking):
(JSC::GCThreadSharedData::didFinishMarking):
* heap/GCThreadSharedData.h:
* heap/HeapTimer.h:
* heap/MachineStackMarker.cpp:
(JSC::ActiveMachineThreadsManager::Locker::Locker):
(JSC::ActiveMachineThreadsManager::add):
(JSC::ActiveMachineThreadsManager::remove):
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::tryCopyOtherThreadStack):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):
* heap/MachineStackMarker.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::donateKnownParallel):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::mergeOpaqueRoots):
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::containsOpaqueRootTriState):
* inspector/remote/RemoteInspectorDebuggableConnection.h:
* inspector/remote/RemoteInspectorDebuggableConnection.mm:
(Inspector::RemoteInspectorHandleRunSourceGlobal):
(Inspector::RemoteInspectorQueueTaskOnGlobalQueue):
(Inspector::RemoteInspectorInitializeGlobalQueue):
(Inspector::RemoteInspectorHandleRunSourceWithInfo):
(Inspector::RemoteInspectorDebuggableConnection::setup):
(Inspector::RemoteInspectorDebuggableConnection::closeFromDebuggable):
(Inspector::RemoteInspectorDebuggableConnection::close):
(Inspector::RemoteInspectorDebuggableConnection::sendMessageToBackend):
(Inspector::RemoteInspectorDebuggableConnection::queueTaskOnPrivateRunLoop):
* interpreter/JSStack.cpp:
(JSC::JSStack::JSStack):
(JSC::JSStack::releaseExcessCapacity):
(JSC::JSStack::addToCommittedByteCount):
(JSC::JSStack::committedByteCount):
(JSC::stackStatisticsMutex): Deleted.
(JSC::JSStack::initializeThreading): Deleted.
* interpreter/JSStack.h:
(JSC::JSStack::gatherConservativeRoots):
(JSC::JSStack::sanitizeStack):
(JSC::JSStack::size):
(JSC::JSStack::initializeThreading): Deleted.
* jit/ExecutableAllocator.cpp:
(JSC::DemandExecutableAllocator::DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::~DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::bytesAllocatedByAllAllocators):
(JSC::DemandExecutableAllocator::bytesCommittedByAllocactors):
(JSC::DemandExecutableAllocator::dumpProfileFromAllAllocators):
(JSC::DemandExecutableAllocator::allocators):
(JSC::DemandExecutableAllocator::allocatorsMutex):
* jit/JITThunks.cpp:
(JSC::JITThunks::ctiStub):
* jit/JITThunks.h:
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):
* profiler/ProfilerDatabase.h:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSLock.cpp:
(JSC::GlobalJSLock::GlobalJSLock):
(JSC::GlobalJSLock::~GlobalJSLock):
(JSC::JSLockHolder::JSLockHolder):
(JSC::GlobalJSLock::initialize): Deleted.
* runtime/JSLock.h:

Source/WTF:

Relanding after fixing a deadlock on Linux.

* wtf/Condition.h: "using WTF::Condition".
* wtf/Lock.h:
(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):
* wtf/ParkingLot.cpp:
(WTF::ParkingLot::parkConditionally): Work around a Linux C++ bug where wait_until with time_point::max() immediately returns and doesn't flash the lock.

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

4 years agoES6 class syntax should allow computed name method
rniwa@webkit.org [Fri, 14 Aug 2015 23:50:25 +0000 (23:50 +0000)]
ES6 class syntax should allow computed name method
https://bugs.webkit.org/show_bug.cgi?id=142690

Reviewed by Saam Barati.

Source/JavaScriptCore:

Added a new "attributes" attribute to op_put_getter_by_id, op_put_setter_by_id, op_put_getter_setter to specify
the property descriptor options so that we can use use op_put_setter_by_id and op_put_getter_setter to define
getters and setters for classes. Without this, getters and setters could erroneously override methods.

* bytecode/BytecodeList.json:
* bytecode/BytecodeUseDef.h:
(JSC::computeUsesForBytecodeOffset):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::dumpBytecode):
* bytecompiler/BytecodeGenerator.cpp:
(JSC::BytecodeGenerator::emitDirectPutById):
(JSC::BytecodeGenerator::emitPutGetterById):
(JSC::BytecodeGenerator::emitPutSetterById):
(JSC::BytecodeGenerator::emitPutGetterSetter):
* bytecompiler/BytecodeGenerator.h:
* bytecompiler/NodesCodegen.cpp:
(JSC::PropertyListNode::emitBytecode): Always use emitPutGetterSetter to emit getters and setters for classes
as done for object literals.
(JSC::PropertyListNode::emitPutConstantProperty):
(JSC::ClassExprNode::emitBytecode):
* jit/CCallHelpers.h:
(JSC::CCallHelpers::setupArgumentsWithExecState):
* jit/JIT.h:
* jit/JITInlines.h:
(JSC::JIT::callOperation):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter):
(JSC::JIT::emit_op_del_by_id):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::emit_op_put_getter_by_id):
(JSC::JIT::emit_op_put_setter_by_id):
(JSC::JIT::emit_op_put_getter_setter):
(JSC::JIT::emit_op_del_by_id):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* llint/LowLevelInterpreter.asm:
* parser/ASTBuilder.h:
(JSC::ASTBuilder::createProperty):
(JSC::ASTBuilder::createPropertyList):
* parser/NodeConstructors.h:
(JSC::PropertyNode::PropertyNode):
* parser/Nodes.h:
(JSC::PropertyNode::expressionName):
(JSC::PropertyNode::name):
* parser/Parser.cpp:
(JSC::Parser<LexerType>::parseClass): Added the support for computed property name. We don't support computed names
for getters and setters.
* parser/SyntaxChecker.h:
(JSC::SyntaxChecker::createProperty):
* runtime/JSObject.cpp:
(JSC::JSObject::allowsAccessFrom):
(JSC::JSObject::putGetter):
(JSC::JSObject::putSetter):
* runtime/JSObject.h:
* runtime/PropertyDescriptor.h:

LayoutTests:

Added test cases for computed method names.

* js/class-syntax-method-names-expected.txt:
* js/script-tests/class-syntax-method-names.js:

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

4 years agoAdd InspectorInstrumentation builtin object to instrument the code in JS builtins...
utatane.tea@gmail.com [Fri, 14 Aug 2015 22:24:26 +0000 (22:24 +0000)]
Add InspectorInstrumentation builtin object to instrument the code in JS builtins like Promises
https://bugs.webkit.org/show_bug.cgi?id=147942

Reviewed by Geoffrey Garen.

This patch adds new private global object, @InspectorInstrumentation.
It is intended to be used as the namespace object (like Reflect/Math) for Inspector's
instrumentation system and it is used to instrument the builtin JS code, like Promises.

* CMakeLists.txt:
* DerivedSources.make:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
* JavaScriptCore.xcodeproj/project.pbxproj:
* builtins/InspectorInstrumentationObject.js: Added.
(debug):
(promiseFulfilled):
(promiseRejected):
* builtins/Operations.Promise.js:
(rejectPromise):
(fulfillPromise):
* runtime/CommonIdentifiers.h:
* runtime/InspectorInstrumentationObject.cpp: Added.
(JSC::InspectorInstrumentationObject::InspectorInstrumentationObject):
(JSC::InspectorInstrumentationObject::finishCreation):
(JSC::InspectorInstrumentationObject::getOwnPropertySlot):
(JSC::InspectorInstrumentationObject::isEnabled):
(JSC::InspectorInstrumentationObject::enable):
(JSC::InspectorInstrumentationObject::disable):
(JSC::inspectorInstrumentationObjectDataLogImpl):
* runtime/InspectorInstrumentationObject.h: Added.
(JSC::InspectorInstrumentationObject::create):
(JSC::InspectorInstrumentationObject::createStructure):
* runtime/JSGlobalObject.cpp:
(JSC::JSGlobalObject::init):

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

4 years agoWeb Inspector: Highlight DOM node attribute changes in parallel, not sequentially
drousso@apple.com [Fri, 14 Aug 2015 22:19:57 +0000 (22:19 +0000)]
Web Inspector: Highlight DOM node attribute changes in parallel, not sequentially
https://bugs.webkit.org/show_bug.cgi?id=148019

Reviewed by Brian Burg.

* UserInterface/Views/DOMTreeElement.js:
(WebInspector.DOMTreeElement.prototype._markNodeChanged):
(WebInspector.DOMTreeElement.prototype._nodeChangedAnimationEnd):
Now removes the animated element from the updated list once the animation ends.

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

4 years agoWeb Inspector: Long delay when row selection changes in timeline data grids
mattbaker@apple.com [Fri, 14 Aug 2015 22:15:33 +0000 (22:15 +0000)]
Web Inspector: Long delay when row selection changes in timeline data grids
https://bugs.webkit.org/show_bug.cgi?id=148005

Reviewed by Brian Burg.

Selecting a tree element in the Timelines sidebar generates multiple
WebInspector.ContentView.SelectionPathComponentsDidChange events, each of which
causes NavigationBar to update its layout (which is extremely expensive).

* UserInterface/Views/ContentBrowser.js:
(WebInspector.ContentBrowser.prototype._contentViewSelectionPathComponentDidChange):
Call updateLayoutSoon instead of updateLayout to coalesce layout requests.

* UserInterface/Views/TimelineRecordingContentView.js:
(WebInspector.TimelineRecordingContentView.prototype._recordSelected):
When the selected record changes in the overview graph, make sure the record's tree element
isn't already selected. Reselecting the tree element results in an extra NavigationBar layout.

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

4 years agoImplementing enumerateDevices
mdaiter@apple.com [Fri, 14 Aug 2015 22:11:37 +0000 (22:11 +0000)]
Implementing enumerateDevices
https://bugs.webkit.org/show_bug.cgi?id=146426
<rdar://problem/21599847>

Reviewed by Eric Carlson.

* CMakeLists.txt:
* Modules/mediastream/MediaDeviceInfo.idl:
* Modules/mediastream/UserMediaRequest.cpp:
(WebCore::UserMediaRequest::enumerateDevices):
* WebCore.xcodeproj/project.pbxproj:
* platform/mediastream/MediaDevicesPrivate.cpp:
(WebCore::MediaDevicesPrivate::create):
(WebCore::MediaDevicesPrivate::MediaDevicesPrivate):
(WebCore::MediaDevicesPrivate::didCompleteRequest):
(WebCore::MediaDevicesPrivate::availableMediaDevices):
* platform/mediastream/MediaDevicesPrivate.h:
(WebCore::MediaDevicesPrivate::~MediaDevicesPrivate):
(WebCore::MediaDevicesPrivate::capturedDevices):

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

4 years agoAdd performance tests for NodeList and HTMLCollection traversal
cdumez@apple.com [Fri, 14 Aug 2015 22:11:22 +0000 (22:11 +0000)]
Add performance tests for NodeList and HTMLCollection traversal
https://bugs.webkit.org/show_bug.cgi?id=148043

Reviewed by Gavin Barraclough.

Add performance tests for NodeList and HTMLCollection traversal.
Ideally, those 2 tests should be as fast. However, due to inefficiencies
in our HTMLCollection bindings code, the HTMLCollection tests is ~30%
slower. This will be addressed in the near future.

* Bindings/childNodes-traversal.html: Added.
* Bindings/children-traversal.html: Added.

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

4 years agoWeb Inspector: REGRESSION (r188396): Rendering Frames timeline ruler dividers are...
mattbaker@apple.com [Fri, 14 Aug 2015 22:08:10 +0000 (22:08 +0000)]
Web Inspector: REGRESSION (r188396): Rendering Frames timeline ruler dividers are off by 1px
https://bugs.webkit.org/show_bug.cgi?id=148040

Reviewed by Brian Burg.

* UserInterface/Views/TimelineOverview.css:
(.timeline-overview.frames > .timeline-ruler > .markers > .divider):
(.timeline-overview.frames > .timeline-ruler > .header > .divider): Deleted.
All ruler dividers should be translated by the same amount.

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

4 years agoWeb Inspector: Style changes to Visual sidebar editors
drousso@apple.com [Fri, 14 Aug 2015 22:04:56 +0000 (22:04 +0000)]
Web Inspector: Style changes to Visual sidebar editors
https://bugs.webkit.org/show_bug.cgi?id=148021

Reviewed by Brian Burg.

Various style fixes and feature enhancements in some of the Visual style property editors.

* UserInterface/Views/VisualStyleColorPicker.css:
(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > .color-swatch):
(.visual-style-property-container.input-color-picker > .visual-style-property-value-container > input):
(.visual-style-property-container.input-color-picker.multiple > .visual-style-property-value-container > .visual-style-multiple-property-placeholder):

* UserInterface/Views/VisualStyleKeywordCheckbox.css:
(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input):
(.visual-style-property-container.keyword-checkbox.font-variant > .visual-style-property-value-container > input::before):
(.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > input): Deleted.
(.visual-style-property-container.keyword-checkbox > .visual-style-property-value-container > div): Deleted.
Replaced the SVG image before the checkbox with a :before pseudo-element with content.

* UserInterface/Views/VisualStyleKeywordCheckbox.js:
(WebInspector.VisualStyleKeywordCheckbox):
Removed the SVG image before the checkbox.

* UserInterface/Views/VisualStyleKeywordPicker.js:
(WebInspector.VisualStyleKeywordPicker.prototype.get value):
(WebInspector.VisualStyleKeywordPicker.prototype.set value):
(WebInspector.VisualStyleKeywordPicker.prototype.set placeholder):
(WebInspector.VisualStyleKeywordPicker.prototype.get synthesizedValue):
(WebInspector.VisualStyleKeywordPicker.prototype._getValue):
(WebInspector.VisualStyleKeywordPicker.prototype._setValue):
(WebInspector.VisualStyleKeywordPicker.prototype._generateSynthesizedValue):
(WebInspector.VisualStyleKeywordPicker.prototype._handleKeywordChanged):
Due to a current bug (https://webkit.org/b/147064), you cannot extend ES6 getters/setters.  In order to work
around this, a member function was added that performs the same action as the getter/setter, but can be extended.

* UserInterface/Views/VisualStylePropertyEditorLink.css:
(.visual-style-property-editor-link.linked > .visual-style-property-editor-link-border):
(.visual-style-property-editor-link > .visual-style-property-editor-link-icon > .unlinked-icon):

* UserInterface/Views/VisualStyleRelativeNumberSlider.js:
(WebInspector.VisualStyleRelativeNumberSlider):
(WebInspector.VisualStyleRelativeNumberSlider.prototype._resetSlider):
(WebInspector.VisualStyleRelativeNumberSlider.prototype._sliderChanged):

* UserInterface/Views/VisualStyleSelectorTreeItem.css:
(.item.visual-style-selector-item > input[type="checkbox"]):
(.item.visual-style-selector-item.selected > input[type="checkbox"]::before):
(.item.visual-style-selector-item.modified > .icon):
(.item.visual-style-selector-item:not(.dom-element-icon).editable > .titles > .title:focus):

* UserInterface/Views/VisualStyleSelectorTreeItem.js:
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleContextMenuEvent):
(WebInspector.VisualStyleSelectorTreeItem.prototype._handleMainTitleMouseDown):
Added another context menu item to show the source location for the selected rule.

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

4 years agocryptographicallyRandomValuesFromOS should use arc4random_buf on Darwin.
commit-queue@webkit.org [Fri, 14 Aug 2015 22:01:34 +0000 (22:01 +0000)]
cryptographicallyRandomValuesFromOS should use arc4random_buf on Darwin.
https://bugs.webkit.org/show_bug.cgi?id=148038

Patch by Keith Miller <keith_miller@apple.com> on 2015-08-14
Reviewed by Geoffrey Garen.

Currently, we open a file descriptor to /dev/urandom, which can sometimes
fail to open. Using arc4random_buf instead should get around this issue.

* wtf/OSRandomSource.cpp:
(WTF::cryptographicallyRandomValuesFromOS):

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

4 years ago[Mac] video-buffered-range-contains-currentTime.html is flakey after r188390
eric.carlson@apple.com [Fri, 14 Aug 2015 21:55:58 +0000 (21:55 +0000)]
[Mac] video-buffered-range-contains-currentTime.html is flakey after r188390
https://bugs.webkit.org/show_bug.cgi?id=148042

* platform/mac/TestExpectations: Mark the test as flakey.

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

4 years ago[Cocoa] Downloads do not start if policy decision is made asynchronously
aestes@apple.com [Fri, 14 Aug 2015 21:08:13 +0000 (21:08 +0000)]
[Cocoa] Downloads do not start if policy decision is made asynchronously
https://bugs.webkit.org/show_bug.cgi?id=147985

Reviewed by Brady Eidson.

Source/WebCore:

It's only possible to convert a NSURLConnection to a download while the connection delegate's
-connection:didReceiveResponse: is being called. However, WebKit clients can decide content policy
asynchronously. If a client chooses to download a response asynchronously, we can no longer convert the
connection to a download, so we should start a new download instead.

New API test: _WKDownload.AsynchronousDownloadPolicy

* dom/Document.cpp: Updated to include SubresourceLoader.h.
* loader/DocumentLoader.cpp:
(WebCore::DocumentLoader::mainResourceLoader): Updated to return a SubresourceLoader.
(WebCore::DocumentLoader::continueAfterContentPolicy): Cast mainResourceLoader() to a ResourceLoader since
didFail() is private in SubresourceLoader.
* loader/DocumentLoader.h:
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::SubresourceLoader): Initialized m_callingDidReceiveResponse to false.
(WebCore::SubresourceLoader::didReceiveResponse): Used TemporaryChange<> to set m_callingDidReceiveResponse to true.
* loader/SubresourceLoader.h:
* loader/appcache/ApplicationCacheHost.cpp: Updated to include SubresourceLoader.h.
* loader/mac/DocumentLoaderMac.cpp: Ditto.

Source/WebKit/mac:

* WebCoreSupport/WebFrameLoaderClient.mm:
(WebFrameLoaderClient::convertMainResourceLoadToDownload): Started a new download if the main resource loader is not calling didReceiveResponse.

Source/WebKit/win:

* WebCoreSupport/WebFrameLoaderClient.cpp: Updated to include SubresourceLoader.h.

Source/WebKit2:

* WebProcess/Network/WebResourceLoader.cpp: Updated to include SubresourceLoader.h.
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::convertMainResourceLoadToDownload): Started a new download if the main resource loader is not calling didReceiveResponse.

Tools:

Added a new API test.

* TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
(-[AsynchronousDownloadNavigationDelegate webView:decidePolicyForNavigationResponse:decisionHandler:]):
(-[AsynchronousDownloadDelegate _downloadDidStart:]):
(TEST):

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

4 years agoRenderBlock::simplifiedLayout should pop LayoutStateMaintainer when early returns.
zalan@apple.com [Fri, 14 Aug 2015 20:27:58 +0000 (20:27 +0000)]
RenderBlock::simplifiedLayout should pop LayoutStateMaintainer when early returns.
https://bugs.webkit.org/show_bug.cgi?id=148031

Reviewed by Simon Fraser.

LayoutStateMaintainer push/pop calls need to be balanced to ensure layout consistency.

Unable to make a test case for this.

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::simplifiedLayout):
* rendering/RenderView.h:
(WebCore::LayoutStateMaintainer::~LayoutStateMaintainer): ASSERT the state properly.
(WebCore::LayoutStateMaintainer::push):
(WebCore::LayoutStateMaintainer::pop):
(WebCore::LayoutStateMaintainer::didPush):
(WebCore::LayoutStateMaintainer::LayoutStateMaintainer): Deleted.

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

4 years agoWeb Inspector: Add visual editors for CSS properties
drousso@apple.com [Fri, 14 Aug 2015 20:07:15 +0000 (20:07 +0000)]
Web Inspector: Add visual editors for CSS properties
https://bugs.webkit.org/show_bug.cgi?id=147576

Added parent class for property editors in the Visual style
details panel in the CSS sidebar.

Reviewed by Timothy Hatcher.

* UserInterface/Views/VisualStylePropertyCombiner.js: Added.
(WebInspector.VisualStylePropertyCombiner):
(WebInspector.VisualStylePropertyCombiner.prototype.get style):
(WebInspector.VisualStylePropertyCombiner.prototype.get synthesizedValue):
(WebInspector.VisualStylePropertyCombiner.prototype.modifyPropertyText):
(WebInspector.VisualStylePropertyCombiner.prototype.update):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText.updateCompatibleEditor):
(WebInspector.VisualStylePropertyCombiner.prototype.updateValuesFromText):
(WebInspector.VisualStylePropertyCombiner.prototype.propertyMissing):
(WebInspector.VisualStylePropertyCombiner.prototype.resetEditorValues):
(WebInspector.VisualStylePropertyCombiner.prototype._markEditors):
(WebInspector.VisualStylePropertyCombiner.prototype._handlePropertyEditorValueChanged):

* UserInterface/Views/VisualStylePropertyEditor.css: Added.
(.visual-style-property-container):
(.visual-style-property-container > .visual-style-property-title):
(.visual-style-property-container > .visual-style-property-title > .property-reference-info):
(.visual-style-property-container.disabled > .visual-style-property-title > :not(.property-reference-info)):
(.visual-style-property-container > .visual-style-property-value-container):
(.visual-style-property-container.disabled > .visual-style-property-value-container):
(.visual-style-property-container > .visual-style-property-value-container select):
(.visual-style-property-container > .visual-style-property-value-container input):
(.visual-style-property-container.disabled > .visual-style-property-value-container input):
(.visual-style-property-container.layout-reversed > .visual-style-property-title):
(.visual-style-property-container > .visual-style-property-value-container > .visual-style-special-property-placeholder):
(.visual-style-property-info-popover):
(.visual-style-property-info-popover > h3):

* UserInterface/Views/VisualStylePropertyEditor.js: Added.
(WebInspector.VisualStylePropertyEditor.canonicalizeValues):
(WebInspector.VisualStylePropertyEditor):
(WebInspector.VisualStylePropertyEditor.prototype.get element):
(WebInspector.VisualStylePropertyEditor.prototype.get style):
(WebInspector.VisualStylePropertyEditor.prototype.get value):
(WebInspector.VisualStylePropertyEditor.prototype.set value):
(WebInspector.VisualStylePropertyEditor.prototype.get units):
(WebInspector.VisualStylePropertyEditor.prototype.set units):
(WebInspector.VisualStylePropertyEditor.prototype.get placeholder):
(WebInspector.VisualStylePropertyEditor.prototype.set placeholder):
(WebInspector.VisualStylePropertyEditor.prototype.get synthesizedValue):
(WebInspector.VisualStylePropertyEditor.prototype.set suppressStyleTextUpdate):
(WebInspector.VisualStylePropertyEditor.prototype.set masterProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get masterProperty):
(WebInspector.VisualStylePropertyEditor.prototype.set optionalProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get optionalProperty):
(WebInspector.VisualStylePropertyEditor.prototype.set colorProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get colorProperty):
(WebInspector.VisualStylePropertyEditor.prototype.get propertyReferenceName):
(WebInspector.VisualStylePropertyEditor.prototype.set propertyReferenceName):
(WebInspector.VisualStylePropertyEditor.prototype.set disabled):
(WebInspector.VisualStylePropertyEditor.prototype.get disabled):
(WebInspector.VisualStylePropertyEditor.prototype.update):
(WebInspector.VisualStylePropertyEditor.prototype.updateEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype.resetEditorValues):
(WebInspector.VisualStylePropertyEditor.prototype.modifyPropertyText):
(WebInspector.VisualStylePropertyEditor.prototype.getValuesFromText):
(WebInspector.VisualStylePropertyEditor.prototype.propertyMissing):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsCompatible):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedKeyword):
(WebInspector.VisualStylePropertyEditor.prototype.valueIsSupportedUnit):
(WebInspector.VisualStylePropertyEditor.prototype.get contentElement):
(WebInspector.VisualStylePropertyEditor.prototype.get specialPropertyPlaceholderElement):
(WebInspector.VisualStylePropertyEditor.prototype.parseValue):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedKeyword):
(WebInspector.VisualStylePropertyEditor.prototype._valueIsSupportedAdvancedUnit):
(WebInspector.VisualStylePropertyEditor.prototype._canonicalizedKeywordForKey):
(WebInspector.VisualStylePropertyEditor.prototype._keyForKeyword):
(WebInspector.VisualStylePropertyEditor.prototype._valueDidChange):
(WebInspector.VisualStylePropertyEditor.prototype._replaceShorthandPropertyWithLonghandProperties):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementPrepareForClick):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOver):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementMouseOut):
(WebInspector.VisualStylePropertyEditor.prototype._titleElementClick):
(WebInspector.VisualStylePropertyEditor.prototype._hasMultipleConflictingValues):
(WebInspector.VisualStylePropertyEditor.prototype._showPropertyInfoPopover):
(WebInspector.VisualStylePropertyEditor.prototype._toggleTabbingOfSelectableElements):

* UserInterface/Views/VisualStyleTabbedPropertiesRow.css: Added.
(.visual-style-tabbed-properties-row ~ :not(.visible)):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button.selected):
(.visual-style-tabbed-properties-row > .visual-style-tabbed-properties-row-container > button:not(.selected):hover):

* UserInterface/Views/VisualStyleTabbedPropertiesRow.js: Added.
(WebInspector.VisualStyleTabbedPropertiesRow):
(WebInspector.VisualStyleTabbedPropertiesRow.prototype._handleButtonClicked):

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

4 years agoWeb Inspector: Add Visual editors for CSS properties with comma separated values
drousso@apple.com [Fri, 14 Aug 2015 20:05:06 +0000 (20:05 +0000)]
Web Inspector: Add Visual editors for CSS properties with comma separated values
https://bugs.webkit.org/show_bug.cgi?id=147578

Reviewed by Timothy Hatcher.

Displays comma separated CSS property values as a tree outline list.

* UserInterface/Images/Minus.svg: Added.
* UserInterface/Views/TreeOutline.js:
(WebInspector.TreeOutline.prototype.get selectedTreeElementIndex):
(WebInspector.TreeOutline):

* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.css: Added.
(.visual-style-property-container.comma-separated-keyword-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:nth-child(odd)):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.selected):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > :matches(button, img)):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.selected:not(.editor-hidden) > .titles > *):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item > .visual-style-comma-separated-keyword-item-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item.visual-style-font-family-list-item.editor-hidden > .visual-style-comma-separated-keyword-item-editor):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item > .titles > .subtitle):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-list > .visual-style-comma-separated-keyword-item:not(.no-value) > .titles > .subtitle):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > div):
(.visual-style-property-container.comma-separated-keyword-editor > .visual-style-property-value-container > .visual-style-comma-separated-keyword-controls > .visual-style-remove-comma-separated-keyword):

* UserInterface/Views/VisualStyleCommaSeparatedKeywordEditor.js: Added.
(WebInspector.VisualStyleCommaSeparatedKeywordEditor):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set selectedTreeElementValue):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get value):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.set value):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype.get synthesizedValue):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeElementSelected):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._treeItemIsEmpty):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addEmptyCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeSelectedCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeEmptyCommaSeparatedKeywords):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._addCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._removeCommaSeparatedKeyword):
(WebInspector.VisualStyleCommaSeparatedKeywordEditor.prototype._createNewTreeElement):

* UserInterface/Views/VisualStyleFontFamilyListEditor.js: Added.
(WebInspector.VisualStyleFontFamilyListEditor):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.visualStyleCompletionsControllerCustomizeCompletionElement):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.get hasCompletions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype.set completions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._modifyCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._addCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._addEmptyCommaSeparatedKeyword):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._completionClicked):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeyDown):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._treeElementKeywordChanged):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._hideCompletions):
(WebInspector.VisualStyleFontFamilyListEditor.prototype._createNewTreeElement):

* UserInterface/Views/VisualStyleFontFamilyTreeElement.js: Added.
(WebInspector.VisualStyleFontFamilyTreeElement):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.editorBounds):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.updateMainTitle):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.showKeywordEditor):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.hideKeywordEditor):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.get keywordEditorHidden):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.onattach):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype.ondeselect):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyDown):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorKeyUp):
(WebInspector.VisualStyleFontFamilyTreeElement.prototype._keywordEditorBlurred):

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

4 years agoRemove a few includes from RenderObject.h
simon.fraser@apple.com [Fri, 14 Aug 2015 19:15:27 +0000 (19:15 +0000)]
Remove a few includes from RenderObject.h
https://bugs.webkit.org/show_bug.cgi?id=148007

Reviewed by Tim Horton.

Shrink down the RenderObject.h includes a little.

* rendering/RenderElement.h:
* rendering/RenderObject.h:
* rendering/RenderText.h:

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

4 years agoUnreviewed, rolling out r187357.
commit-queue@webkit.org [Fri, 14 Aug 2015 18:48:34 +0000 (18:48 +0000)]
Unreviewed, rolling out r187357.
https://bugs.webkit.org/show_bug.cgi?id=148032

webkit-patch generates incorrect patches that cannot be
applied (Requested by dydz on #webkit).

Reverted changeset:

"Call fixChangeLogPatch when generating patches from webkit-
patch"
https://bugs.webkit.org/show_bug.cgi?id=147248
http://trac.webkit.org/changeset/187357

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

4 years agoWeb Inspector: Add autocomplete controller for Visual property editors
drousso@apple.com [Fri, 14 Aug 2015 18:43:46 +0000 (18:43 +0000)]
Web Inspector: Add autocomplete controller for Visual property editors
https://bugs.webkit.org/show_bug.cgi?id=147579

Reviewed by Timothy Hatcher.

* UserInterface/Controllers/VisualStyleCompletionsController.js: Added.
(WebInspector.VisualStyleCompletionsController):
Takes in a CSSCompletions and displays a list of suggestions based on a given prefix in a popover.
(WebInspector.VisualStyleCompletionsController.prototype.get visible):
(WebInspector.VisualStyleCompletionsController.prototype.get hasCompletions):
(WebInspector.VisualStyleCompletionsController.prototype.get currentCompletion):
(WebInspector.VisualStyleCompletionsController.prototype.set completions):
(WebInspector.VisualStyleCompletionsController.prototype.completionSuggestionsViewCustomizeCompletionElement):
(WebInspector.VisualStyleCompletionsController.prototype.previous):
(WebInspector.VisualStyleCompletionsController.prototype.next):
(WebInspector.VisualStyleCompletionsController.prototype.update):
(WebInspector.VisualStyleCompletionsController.prototype.show):
(WebInspector.VisualStyleCompletionsController.prototype.hide):

* UserInterface/Models/CSSKeywordCompletions.js:
(WebInspector.CSSKeywordCompletions.forProperty):
Make sure that the cssNameCompletions exist before trying to add them.

* UserInterface/Views/CompletionSuggestionsView.js:
(WebInspector.CompletionSuggestionsView.prototype.update):
Allow the delegate to modify the newly created completion suggestion item.

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

4 years agoWeb Inspector: Add a visual editor for timing functions
drousso@apple.com [Fri, 14 Aug 2015 18:31:38 +0000 (18:31 +0000)]
Web Inspector: Add a visual editor for timing functions
https://bugs.webkit.org/show_bug.cgi?id=148022

Reviewed by Timothy Hatcher.

Uses the existing bezier editor and the Visual keyword picker to make an editor for timing functions.

* UserInterface/Views/VisualStyleTimingEditor.css: Added.
(.visual-style-property-container.timing-editor > .visual-style-property-value-container):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .keyword-picker-select):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:hover):
(.visual-style-property-container.timing-editor > .visual-style-property-value-container > .bezier-editor:active):

* UserInterface/Views/VisualStyleTimingEditor.js: Added.
(WebInspector.VisualStyleTimingEditor):
(WebInspector.VisualStyleTimingEditor.prototype.parseValue):
(WebInspector.VisualStyleTimingEditor.prototype.get bezierValue):
(WebInspector.VisualStyleTimingEditor.prototype.set bezierValue):
(WebInspector.VisualStyleTimingEditor.prototype._getValue):
(WebInspector.VisualStyleTimingEditor.prototype._setValue):
(WebInspector.VisualStyleTimingEditor.prototype._generateSynthesizedValue):
(WebInspector.VisualStyleTimingEditor.prototype._bezierMarkerClicked):
(WebInspector.VisualStyleTimingEditor.prototype._handleKeywordChanged):

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

4 years agoRefactor BuildbotQueueView._appendPendingRevisionCount to work more generically with...
commit-queue@webkit.org [Fri, 14 Aug 2015 18:06:51 +0000 (18:06 +0000)]
Refactor BuildbotQueueView._appendPendingRevisionCount to work more generically with repositories
other than "openSource" and "internal".
https://bugs.webkit.org/show_bug.cgi?id=147938

Patch by Jason Marcell <jmarcell@apple.com> on 2015-08-14
Reviewed by Daniel Bates.

* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueueView.js:
(BuildbotQueueView.prototype._appendPendingRevisionCount): Refactored to work more generically with
repositories other than "openSource" and "internal".

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

4 years agoFix the Mavericks build.
timothy_horton@apple.com [Fri, 14 Aug 2015 17:43:42 +0000 (17:43 +0000)]
Fix the Mavericks build.

* platform/spi/mac/LookupSPI.h:

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

4 years agoFrequent assertions on animations/restart-after-scroll.html
ap@apple.com [Fri, 14 Aug 2015 17:09:35 +0000 (17:09 +0000)]
Frequent assertions on animations/restart-after-scroll.html
https://bugs.webkit.org/show_bug.cgi?id=148026

* TestExpectations: Skip the test in debug mode.

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

4 years agoUnreviewed, rolling out r188444.
commit-queue@webkit.org [Fri, 14 Aug 2015 16:53:37 +0000 (16:53 +0000)]
Unreviewed, rolling out r188444.
https://bugs.webkit.org/show_bug.cgi?id=148029

Broke GTK and EFL (see bug #148027) (Requested by philn on
#webkit).

Reverted changeset:

"Use WTF::Lock and WTF::Condition instead of WTF::Mutex,
WTF::ThreadCondition, std::mutex, and std::condition_variable"
https://bugs.webkit.org/show_bug.cgi?id=147999
http://trac.webkit.org/changeset/188444

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

4 years agoSpeculative fix for iOS build failure.
simon.fraser@apple.com [Fri, 14 Aug 2015 16:49:54 +0000 (16:49 +0000)]
Speculative fix for iOS build failure.

* Shared/mac/RemoteLayerTreeTransaction.h:

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

4 years agoFix the build.
timothy_horton@apple.com [Fri, 14 Aug 2015 16:48:08 +0000 (16:48 +0000)]
Fix the build.

* platform/spi/mac/LookupSPI.h:

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

4 years ago[GStreamer] Handle missing plugins better at runtime
philn@webkit.org [Fri, 14 Aug 2015 16:31:55 +0000 (16:31 +0000)]
[GStreamer] Handle missing plugins better at runtime
https://bugs.webkit.org/show_bug.cgi?id=146999

Reviewed by Carlos Garcia Campos.

* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::createAudioSink): Warn the
user if autoaudiosink wasn't found at runtime. In that case
playbin will try to be smart by itself, hopefully. Also moved a
couple GST_WARNING calls to WARN_MEDIA_MESSAGE.
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin): Use
WARN_MEDIA_MESSAGE here as well.

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

4 years agoUnreviewed, remove dead code after r188385.
philn@webkit.org [Fri, 14 Aug 2015 16:30:21 +0000 (16:30 +0000)]
Unreviewed, remove dead code after r188385.

* UIProcess/API/gtk/WebKitUserMediaPermissionRequest.cpp:
(webkitUserMediaPermissionRequestAllow): Deleted.

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

4 years agoCover memory cache subresource validation policy with cache tests
antti@apple.com [Fri, 14 Aug 2015 14:08:59 +0000 (14:08 +0000)]
Cover memory cache subresource validation policy with cache tests
https://bugs.webkit.org/show_bug.cgi?id=147830

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Existing tests under http/tests/cache/disk-cache currently cover disk and XHR memory cache validation behaviors.
They can be extended to cover the regular subresource policy too.

Add window.internals API to disable CachedRawResource validation behavior. This makes XHR validate like
other resources and allows existing tests (that use XHR) to cover normal subresource policy .

Test results reveal some bugs. For example subresources in memory cache don't respect Vary header.

It is generally bad that we have a separate XHR-and-main-resource validation policy in memory cache. Network cache
doesn't have one.

* loader/FrameLoader.cpp:
(WebCore::FrameLoader::clearTestingOverrides):
(WebCore::FrameLoader::applyShouldOpenExternalURLsPolicyToNewDocumentLoader):
* loader/FrameLoader.h:
(WebCore::FrameLoader::setOverrideCachePolicyForTesting):
(WebCore::FrameLoader::setOverrideResourceLoadPriorityForTesting):
(WebCore::FrameLoader::setStrictRawResourceValidationPolicyDisabledForTesting):
(WebCore::FrameLoader::isStrictRawResourceValidationPolicyDisabledForTesting):
(WebCore::FrameLoader::provisionalLoadErrorBeingHandledURL):
* loader/cache/CachedRawResource.h:
* loader/cache/CachedResource.h:
(WebCore::CachedResource::setLoadFinishTime):
(WebCore::CachedResource::loadFinishTime):
(WebCore::CachedResource::canReuse): Deleted.

    Made canReuse non-virtual and removed it from the base. Only CachedRawResource has implementation.

* loader/cache/CachedResourceLoader.cpp:
(WebCore::CachedResourceLoader::determineRevalidationPolicy):
* testing/Internals.cpp:
(WebCore::Internals::setOverrideResourceLoadPriority):
(WebCore::Internals::setStrictRawResourceValidationPolicyDisabled):
(WebCore::Internals::clearMemoryCache):
* testing/Internals.h:

LayoutTests:

Add another test round using subresource validation policy.

* http/tests/cache/disk-cache/disk-cache-204-status-code-expected.txt:
* http/tests/cache/disk-cache/disk-cache-302-status-code-expected.txt:
* http/tests/cache/disk-cache/disk-cache-307-status-code-expected.txt:
* http/tests/cache/disk-cache/disk-cache-404-status-code-expected.txt:
* http/tests/cache/disk-cache/disk-cache-disable-expected.txt:
* http/tests/cache/disk-cache/disk-cache-media-expected.txt:
* http/tests/cache/disk-cache/disk-cache-range-expected.txt:
* http/tests/cache/disk-cache/disk-cache-request-headers-expected.txt:
* http/tests/cache/disk-cache/disk-cache-request-max-stale-expected.txt:
* http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header-expected.txt:
* http/tests/cache/disk-cache/disk-cache-validation-attachment-expected.txt:
* http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy-expected.txt:
* http/tests/cache/disk-cache/disk-cache-validation-expected.txt:
* http/tests/cache/disk-cache/disk-cache-validation-no-body-expected.txt:
* http/tests/cache/disk-cache/disk-cache-vary-expected.txt:
* http/tests/cache/disk-cache/disk-cache-vary-no-body-expected.txt:
* http/tests/cache/disk-cache/resources/cache-test.js:
(loadResourcesWithOptions):
(.):
(runTests):

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

4 years agoUnreviewed. Fix the build with !ENABLE(MEDIA_STREAM) after r188385.
carlosgc@webkit.org [Fri, 14 Aug 2015 08:47:38 +0000 (08:47 +0000)]
Unreviewed. Fix the build with !ENABLE(MEDIA_STREAM) after r188385.

* UIProcess/API/C/WKUserMediaPermissionRequest.cpp:
(WKUserMediaPermissionRequestDeviceNamesVideo):
(WKUserMediaPermissionRequestDeviceNamesAudio):

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

4 years agoUnreviewed. Fix GTK+ build after r188386.
carlosgc@webkit.org [Fri, 14 Aug 2015 08:45:07 +0000 (08:45 +0000)]
Unreviewed. Fix GTK+ build after r188386.

* UIProcess/API/gtk/WebKitWindowProperties.cpp:
(webkitWindowPropertiesUpdateFromWebWindowFeatures):

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

4 years agoUnreviewed, shorten another test that is timing out.
fpizlo@apple.com [Fri, 14 Aug 2015 07:30:39 +0000 (07:30 +0000)]
Unreviewed, shorten another test that is timing out.

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

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

4 years agoUse WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std...
fpizlo@apple.com [Fri, 14 Aug 2015 06:46:46 +0000 (06:46 +0000)]
Use WTF::Lock and WTF::Condition instead of WTF::Mutex, WTF::ThreadCondition, std::mutex, and std::condition_variable
https://bugs.webkit.org/show_bug.cgi?id=147999

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

* API/JSVirtualMachine.mm:
(initWrapperCache):
(+[JSVMWrapperCache addWrapper:forJSContextGroupRef:]):
(+[JSVMWrapperCache wrapperForJSContextGroupRef:]):
(wrapperCacheMutex): Deleted.
* bytecode/SamplingTool.cpp:
(JSC::SamplingTool::doRun):
(JSC::SamplingTool::notifyOfScope):
* bytecode/SamplingTool.h:
* dfg/DFGThreadData.h:
* dfg/DFGWorklist.cpp:
(JSC::DFG::Worklist::~Worklist):
(JSC::DFG::Worklist::isActiveForVM):
(JSC::DFG::Worklist::enqueue):
(JSC::DFG::Worklist::compilationState):
(JSC::DFG::Worklist::waitUntilAllPlansForVMAreReady):
(JSC::DFG::Worklist::removeAllReadyPlansForVM):
(JSC::DFG::Worklist::completeAllReadyPlansForVM):
(JSC::DFG::Worklist::visitWeakReferences):
(JSC::DFG::Worklist::removeDeadPlans):
(JSC::DFG::Worklist::queueLength):
(JSC::DFG::Worklist::dump):
(JSC::DFG::Worklist::runThread):
* dfg/DFGWorklist.h:
* disassembler/Disassembler.cpp:
* heap/CopiedSpace.cpp:
(JSC::CopiedSpace::doneFillingBlock):
(JSC::CopiedSpace::doneCopying):
* heap/CopiedSpace.h:
* heap/CopiedSpaceInlines.h:
(JSC::CopiedSpace::recycleBorrowedBlock):
(JSC::CopiedSpace::allocateBlockForCopyingPhase):
* heap/GCThread.cpp:
(JSC::GCThread::waitForNextPhase):
(JSC::GCThread::gcThreadMain):
* heap/GCThreadSharedData.cpp:
(JSC::GCThreadSharedData::GCThreadSharedData):
(JSC::GCThreadSharedData::~GCThreadSharedData):
(JSC::GCThreadSharedData::startNextPhase):
(JSC::GCThreadSharedData::endCurrentPhase):
(JSC::GCThreadSharedData::didStartMarking):
(JSC::GCThreadSharedData::didFinishMarking):
* heap/GCThreadSharedData.h:
* heap/HeapTimer.h:
* heap/MachineStackMarker.cpp:
(JSC::ActiveMachineThreadsManager::Locker::Locker):
(JSC::ActiveMachineThreadsManager::add):
(JSC::ActiveMachineThreadsManager::remove):
(JSC::ActiveMachineThreadsManager::ActiveMachineThreadsManager):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThreadIfFound):
(JSC::MachineThreads::tryCopyOtherThreadStack):
(JSC::MachineThreads::tryCopyOtherThreadStacks):
(JSC::MachineThreads::gatherConservativeRoots):
* heap/MachineStackMarker.h:
* heap/SlotVisitor.cpp:
(JSC::SlotVisitor::donateKnownParallel):
(JSC::SlotVisitor::drain):
(JSC::SlotVisitor::drainFromShared):
(JSC::SlotVisitor::mergeOpaqueRoots):
* heap/SlotVisitorInlines.h:
(JSC::SlotVisitor::containsOpaqueRootTriState):
* inspector/remote/RemoteInspectorDebuggableConnection.h:
* inspector/remote/RemoteInspectorDebuggableConnection.mm:
(Inspector::RemoteInspectorHandleRunSourceGlobal):
(Inspector::RemoteInspectorQueueTaskOnGlobalQueue):
(Inspector::RemoteInspectorInitializeGlobalQueue):
(Inspector::RemoteInspectorHandleRunSourceWithInfo):
(Inspector::RemoteInspectorDebuggableConnection::setup):
(Inspector::RemoteInspectorDebuggableConnection::closeFromDebuggable):
(Inspector::RemoteInspectorDebuggableConnection::close):
(Inspector::RemoteInspectorDebuggableConnection::sendMessageToBackend):
(Inspector::RemoteInspectorDebuggableConnection::queueTaskOnPrivateRunLoop):
* interpreter/JSStack.cpp:
(JSC::JSStack::JSStack):
(JSC::JSStack::releaseExcessCapacity):
(JSC::JSStack::addToCommittedByteCount):
(JSC::JSStack::committedByteCount):
(JSC::stackStatisticsMutex): Deleted.
(JSC::JSStack::initializeThreading): Deleted.
* interpreter/JSStack.h:
(JSC::JSStack::gatherConservativeRoots):
(JSC::JSStack::sanitizeStack):
(JSC::JSStack::size):
(JSC::JSStack::initializeThreading): Deleted.
* jit/ExecutableAllocator.cpp:
(JSC::DemandExecutableAllocator::DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::~DemandExecutableAllocator):
(JSC::DemandExecutableAllocator::bytesAllocatedByAllAllocators):
(JSC::DemandExecutableAllocator::bytesCommittedByAllocactors):
(JSC::DemandExecutableAllocator::dumpProfileFromAllAllocators):
(JSC::DemandExecutableAllocator::allocators):
(JSC::DemandExecutableAllocator::allocatorsMutex):
* jit/JITThunks.cpp:
(JSC::JITThunks::ctiStub):
* jit/JITThunks.h:
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::ensureBytecodesFor):
(JSC::Profiler::Database::notifyDestruction):
* profiler/ProfilerDatabase.h:
* runtime/InitializeThreading.cpp:
(JSC::initializeThreading):
* runtime/JSLock.cpp:
(JSC::GlobalJSLock::GlobalJSLock):
(JSC::GlobalJSLock::~GlobalJSLock):
(JSC::JSLockHolder::JSLockHolder):
(JSC::GlobalJSLock::initialize): Deleted.
* runtime/JSLock.h:

Source/WTF:

* wtf/Condition.h: "using WTF::Condition".
* wtf/Lock.h:
(WTF::LockBase::lock):
(WTF::LockBase::tryLock): Add tryLock() because it turns out that we use it sometimes.
(WTF::LockBase::try_lock): unique_lock needs this.
(WTF::LockBase::unlock):

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

4 years agoPerforming a Lookup on wrapped text puts the popover arrow in the wrong place (off...
timothy_horton@apple.com [Fri, 14 Aug 2015 06:31:24 +0000 (06:31 +0000)]
Performing a Lookup on wrapped text puts the popover arrow in the wrong place (off to the right)
https://bugs.webkit.org/show_bug.cgi?id=148012
<rdar://problem/19238094>

Reviewed by Simon Fraser.

* platform/spi/mac/LookupSPI.h:
Add some SPI.

* WebView/WebView.mm:
(-[WebView _animationControllerForDictionaryLookupPopupInfo:]):
(-[WebView _showDictionaryLookupPopup:]):
Adopt the new SPI, handing it the first text rect, instead of having it
guess where to put the popover.
Also, null-check the TextIndicator.

* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::didPerformDictionaryLookup):
* UIProcess/mac/WKImmediateActionController.mm:
(-[WKImmediateActionController _animationControllerForText]):
Adopt the new SPI, handing it the first text rect, instead of having it
guess where to put the popover.

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

4 years agoWeb Inspector: Can't resize split console when window is too narrow
nvasilyev@apple.com [Fri, 14 Aug 2015 06:21:03 +0000 (06:21 +0000)]
Web Inspector: Can't resize split console when window is too narrow
https://bugs.webkit.org/show_bug.cgi?id=147924

Make some items inside of the navigation bar click-through to incsease
the draggable area.

Reviewed by Timothy Hatcher.

* UserInterface/Views/Main.css:
(#split-content-browser > .navigation-bar > :matches(.hierarchical-path, .log-search-bar, .log-scope-bar)):
(#split-content-browser > .navigation-bar > :matches(.log-search-bar, .log-scope-bar) > :matches(li, input)):

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

4 years agoUnreviewed, rolling out r188418.
commit-queue@webkit.org [Fri, 14 Aug 2015 06:06:37 +0000 (06:06 +0000)]
Unreviewed, rolling out r188418.
https://bugs.webkit.org/show_bug.cgi?id=148017

Fix EFL after the rollout of r188404 (Requested by smfr on
#webkit).

Reverted changeset:

"[CMake] Unreviewed build fix after r188404"
http://trac.webkit.org/changeset/188418

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

4 years agoWindows build fix.
simon.fraser@apple.com [Fri, 14 Aug 2015 05:58:13 +0000 (05:58 +0000)]
Windows build fix.

* FullscreenVideoController.cpp:

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

4 years agoAnother Windows build fix.
simon.fraser@apple.com [Fri, 14 Aug 2015 05:48:07 +0000 (05:48 +0000)]
Another Windows build fix.

* platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:

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