WebKit-https.git
5 years agoSmart quoting could move the caret backwards in some configurations
rniwa@webkit.org [Tue, 3 Feb 2015 21:52:49 +0000 (21:52 +0000)]
Smart quoting could move the caret backwards in some configurations
https://bugs.webkit.org/show_bug.cgi?id=141203
Source/WebCore:

<rdar://problem/17452543>

Reviewed by Enrica Casucci.

The bug was caused by markAndReplaceFor not running the code to preserve the selection after
text replacement only when smart quote is enabled. Furthermore, when smart link was disabled,
we never applied smart quote due to the following condition at line 2502:

if (!(shouldPerformReplacement || shouldCheckForCorrection || shouldMarkLink) || !doReplacement)
    continue;

This condition prevented the code to apply smart quote from running when both continuous
spellchecking, smart link, and text replacement are disabled.

Fixed the bug by treating smart quotes and smart dashes like any other text replacement and set
shouldPerformReplacement to true whenever either one of those text checking options are present.

Smart link didn't have this issue due to the explicit check for shouldMarkLink.

Smart dashes didn't suffer this problem either because dashes replacement happens only once
the caret has moved past the dashes but his patch makes go through the same code path to preserve
the selection as well for consistency.

Test: editing/inserting/smart-quote-with-all-configurations.html

* editing/Editor.cpp:
(WebCore::Editor::markAndReplaceFor):

LayoutTests:

Reviewed by Enrica Casucci.

Added a regression test for smart quote under all combinations of
spellchecking and substitution configurations.

* editing/inserting/smart-quote-with-all-configurations-expected.txt: Added.
* editing/inserting/smart-quote-with-all-configurations.html: Added.
* platform/efl/TestExpectations:
* platform/gtk/TestExpectations:
* platform/ios-simulator-wk2/TestExpectations:
* platform/win/TestExpectations:
* platform/wk2/TestExpectations:

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

5 years agoAdditional emoji support.
enrica@apple.com [Tue, 3 Feb 2015 21:37:56 +0000 (21:37 +0000)]
Additional emoji support.
https://bugs.webkit.org/show_bug.cgi?id=141047
rdar://problem/19045135

Reviewed by Darin Adler.

Source/WebCore:

Adds support for emoji modifiers and group emoji.

Test: editing/deleting/delete-emoji.html

* platform/graphics/FontCascade.cpp:
(WebCore::FontCascade::characterRangeCodePath):
* platform/text/TextBreakIterator.cpp:
(WebCore::cursorMovementIterator):
* rendering/RenderText.cpp:
(WebCore::isEmojiGroupCandidate):
(WebCore::isEmojiModifier):
(WebCore::RenderText::previousOffsetForBackwardDeletion):

LayoutTests:

* editing/deleting/delete-emoji.html: Added.
* editing/deleting/delete-emoji-expected.txt: Added.

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

5 years ago[Win] Lint cleanup of Windows TestExpectations (Unreviewed)
bfulgham@apple.com [Tue, 3 Feb 2015 21:29:02 +0000 (21:29 +0000)]
[Win] Lint cleanup of Windows TestExpectations (Unreviewed)

* platform/win/TestExpectations:

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

5 years agoPassing invalid values to OfflineAudioContext's constructor should not crash.
jer.noble@apple.com [Tue, 3 Feb 2015 21:10:13 +0000 (21:10 +0000)]
Passing invalid values to OfflineAudioContext's constructor should not crash.
https://bugs.webkit.org/show_bug.cgi?id=141197

Reviewed by Darin Adler.

Source/WebCore:

Test: webaudio/offlineaudiocontext-constructor.html

Throw a SYNTAX_ERR exception if passed in a zero for channelCount or numberOfSamples. This avoids
a crash where OfflineAudioDestinationNode is passed a null renderTarget.

* Modules/webaudio/OfflineAudioContext.cpp:
(WebCore::OfflineAudioContext::create):

LayoutTests:

* webaudio/offlineaudiocontext-constructor-expected.txt: Added.
* webaudio/offlineaudiocontext-constructor.html: Added.

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

5 years ago[MSE] Setting timestampOffset does not change the timestamps in the actual sample...
jer.noble@apple.com [Tue, 3 Feb 2015 21:09:15 +0000 (21:09 +0000)]
[MSE] Setting timestampOffset does not change the timestamps in the actual sample, leading to visual and audible errors.
https://bugs.webkit.org/show_bug.cgi?id=140929

Reviewed by Darin Adler.

Source/WebCore:

Test: media/media-source/media-source-timeoffset.html

Changing timestampOffset will correctly offset the presentation and decode times within SourceBuffer and
will correctly modify things like buffered ranges. But those changes need to be reflected in the underlying
MediaSample for decoders to decode and display the samples at the correct times.

Add a method to MediaSample which allows the caller to offset timestamps of the underlying PlatformMediaSample.

* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample): Call offsetTimestampsBy() on the sample.
* platform/MediaSample.h:
* platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
(WebCore::MediaSampleAVFObjC::offsetTimestampsBy): Create a new sample with the same underlying data
    but with a new timing info array, each timing info offset by the requested amount.
* platform/mock/mediasource/MockBox.h:
(WebCore::MockBox::offsetTimestampsBy): Offset m_presentationTimestamp and m_decodeTimestamp;
* platform/mock/mediasource/MockSourceBufferPrivate.cpp:
(WebCore::MockMediaSample::offsetTimestampsBy): Pass to MockBox.

LayoutTests:

* media/media-source/media-source-timeoffset-expected.txt: Added.
* media/media-source/media-source-timeoffset.html: Added.

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

5 years ago[Mac][EME] Crash in CDMSessionMediaSourceAVFObjC::layerDidReceiveError() - NSError...
jer.noble@apple.com [Tue, 3 Feb 2015 21:06:33 +0000 (21:06 +0000)]
[Mac][EME] Crash in CDMSessionMediaSourceAVFObjC::layerDidReceiveError() - NSError not KVO compliant for key NSUnderlyingError.
https://bugs.webkit.org/show_bug.cgi?id=140529

Reviewed by Darin Adler.

The underlying error should be fetched from the userInfo dictionary, not the error itself.

* platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:
(WebCore::systemCodeForError):

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

5 years agoWeb Inspector: ASSERT mainThreadPthread launching remote debuggable JSContext app...
joepeck@webkit.org [Tue, 3 Feb 2015 20:23:17 +0000 (20:23 +0000)]
Web Inspector: ASSERT mainThreadPthread launching remote debuggable JSContext app with Debug JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=141189

Reviewed by Michael Saboff.

* inspector/remote/RemoteInspector.mm:
(Inspector::RemoteInspector::singleton):
Ensure we call WTF::initializeMainThread() on the main thread so that
we can perform automatic String <-> NSString conversions.

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

5 years ago[WIn] Unreviewed test updates.
bfulgham@apple.com [Tue, 3 Feb 2015 20:01:31 +0000 (20:01 +0000)]
[WIn] Unreviewed test updates.

* platform/win/TestExpectations:

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

5 years ago[Win] Unreviewed test fix.
bfulgham@apple.com [Tue, 3 Feb 2015 19:43:11 +0000 (19:43 +0000)]
[Win] Unreviewed test fix.

* DumpRenderTree/win/PolicyDelegate.cpp:
(PolicyDelegate::unableToImplementPolicyWithError): The message was missing a linefeed,
so was not matching expected output.

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

5 years agoUnreviewed. Moving myself to the committer section, or trying to do so...
youenn.fablet@crf.canon.fr [Tue, 3 Feb 2015 19:42:00 +0000 (19:42 +0000)]
Unreviewed. Moving myself to the committer section, or trying to do so...

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

5 years agoWeb Platform Tests dirty a few untracked files
youenn.fablet@crf.canon.fr [Tue, 3 Feb 2015 19:34:47 +0000 (19:34 +0000)]
Web Platform Tests dirty a few untracked files
https://bugs.webkit.org/show_bug.cgi?id=141185

Reviewed by Darin Adler.

Added the empty file web-platform-tests/_certs/index.txt to .gitignore.

* web-platform-tests/.gitignore:

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

5 years ago[Win] Tests fail because DRT reports '(null)' instead of an empty string
bfulgham@apple.com [Tue, 3 Feb 2015 18:47:30 +0000 (18:47 +0000)]
[Win] Tests fail because DRT reports '(null)' instead of an empty string
https://bugs.webkit.org/show_bug.cgi?id=141205

Reviewed by Anders Carlsson.

* DumpRenderTree/win/HistoryDelegate.cpp:
(HistoryDelegate::didNavigateWithNavigationData): Deal with empty BSTR values
properly so that we match expected DumpRenderTree output.

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

5 years agoUnreviewed, rolling out r179548.
commit-queue@webkit.org [Tue, 3 Feb 2015 18:28:28 +0000 (18:28 +0000)]
Unreviewed, rolling out r179548.
https://bugs.webkit.org/show_bug.cgi?id=141201

Hits debug assertions in 50+ SVG tests (Requested by brrian on
#webkit).

Reverted changeset:

"Move InstanceInvalidationGuard/UpdateBlocker to SVGElement
from SVGElementInstance"
https://bugs.webkit.org/show_bug.cgi?id=141148
http://trac.webkit.org/changeset/179548

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

5 years ago[GTK] TestWebKitAccessibility is not skipped
commit-queue@webkit.org [Tue, 3 Feb 2015 18:25:48 +0000 (18:25 +0000)]
[GTK] TestWebKitAccessibility is not skipped
https://bugs.webkit.org/show_bug.cgi?id=141179

Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2015-02-03
Reviewed by Carlos Garcia Campos.

Don't attempt to skip TestWebKitAccessibility. This path is wrong so it was not being
skipped, and it apparently works reliably on the bots.

* Scripts/run-gtk-tests:
(TestRunner):

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

5 years agorun-perf-tests: allow to specify a wrapper command.
clopez@igalia.com [Tue, 3 Feb 2015 18:21:06 +0000 (18:21 +0000)]
run-perf-tests: allow to specify a wrapper command.
https://bugs.webkit.org/show_bug.cgi?id=141172

Reviewed by Ryosuke Niwa.

* Scripts/webkitpy/layout_tests/run_webkit_tests.py:
(parse_args): Update text to indicate is also valid for WTR.
* Scripts/webkitpy/performance_tests/perftestsrunner.py:
(PerfTestsRunner._parse_args): Add wrapper command.

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

5 years ago[Win] Project file cleanups after r179429.
bfulgham@apple.com [Tue, 3 Feb 2015 18:17:16 +0000 (18:17 +0000)]
[Win] Project file cleanups after r179429.

* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:

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

5 years ago[Win] Correct version parsing warning in update-webkit
bfulgham@apple.com [Tue, 3 Feb 2015 18:01:51 +0000 (18:01 +0000)]
[Win] Correct version parsing warning in update-webkit
https://bugs.webkit.org/show_bug.cgi?id=141200

Reviewed by Anders Carlsson.

* Scripts/webkitdirs.pm:
(setupAppleWinEnv): Strip out any specific version build level
from the Cygwin version information.

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

5 years ago[Win] Attempt to improve the reliability of HTTP service
bfulgham@apple.com [Tue, 3 Feb 2015 17:39:01 +0000 (17:39 +0000)]
[Win] Attempt to improve the reliability of HTTP service
https://bugs.webkit.org/show_bug.cgi?id=141191

Reviewed by Darin Adler.

* Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
(LayoutTestApacheHttpd.__init__): Use default XAMPP pidfile location.
(LayoutTestApacheHttpd._stop_running_server): Delete the abandoned PID file
when stopping the service doesn't do so on its own (for Windows runs).

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

5 years ago[Mac] HLS audio is not correctly selected according to system language
jer.noble@apple.com [Tue, 3 Feb 2015 17:27:55 +0000 (17:27 +0000)]
[Mac] HLS audio is not correctly selected according to system language
https://bugs.webkit.org/show_bug.cgi?id=140398
rdar://problem/19218487

Reviewed by Darin Adler.

Source/WebCore:

Test: http/tests/media/hls/hls-audio-tracks-locale-selection.html

When AVMediaSelectionOptions come and go and no explicit track selection choice has
been made, automatically pick the most appropriate track according to the user's
current preferred locale settings.

* platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.h:
* platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
(WebCore::MediaSelectionGroupAVFObjC::MediaSelectionGroupAVFObjC): Set m_shouldSelectOptionAutomatically
    to true by default.
(WebCore::MediaSelectionGroupAVFObjC::updateOptions): If m_shouldSelectOptionAutomatically is set
    pick the most appropriate media selection option.
(WebCore::MediaSelectionGroupAVFObjC::setSelectedOption): Set m_shouldSelectOptionAutomatically to false.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Remove these automatic selection
    requests as they are ineffective when -appliesMediaSelectionCriteriaAutomatically is NO.

LayoutTests:

* http/tests/media/hls/hls-audio-tracks-locale-selection-expected.txt: Added.
* http/tests/media/hls/hls-audio-tracks-locale-selection.html: Added.
* http/tests/media/resources/hls/audio-tracks.m3u8:

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

5 years agoMove InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
darin@apple.com [Tue, 3 Feb 2015 16:58:08 +0000 (16:58 +0000)]
Move InstanceInvalidationGuard/UpdateBlocker to SVGElement from SVGElementInstance
https://bugs.webkit.org/show_bug.cgi?id=141148

Reviewed by Brent Fulgham.

Inspired by this change Rob Buis made in Blink:

    http://src.chromium.org/viewvc/blink?view=revision&revision=173343

I actually wrote the whole thing and then discovered we did it almost identically.

* svg/SVGAnimatedTypeAnimator.cpp:
(WebCore::SVGElementAnimatedPropertyList::setInstanceUpdatesBlocked): Added this
helper function to get around a circular header dependency.
* svg/SVGAnimatedTypeAnimator.h:
(WebCore::SVGAnimatedTypeAnimator::executeAction): Use setInstanceUpdatesBlocked.

* svg/SVGElement.cpp:
(WebCore::SVGElement::removedFrom): Use invalidateInstances.
(WebCore::SVGElement::finishParsingChildren): Ditto.
(WebCore::SVGElement::svgAttributeChanged): Ditto.
(WebCore::SVGElement::childrenChanged): Ditto.
(WebCore::SVGElement::setInstanceUpdatesBlocked): Added an assertion that will
catch anyone who nests InstanceUpdateBlocker by accident.
(WebCore::SVGElement::invalidateInstances): Moved this here from
SVGElementInstance::invalidateAllInstancesOfElement. I had already modified this
so it had nothing to do with SVGElementInstance, so it was a simple matter of
converting this into a member function. Added a FIXME about the mysterious
updateStyleIfNeeded that makes multiple tests fail if it's removed.

* svg/SVGElement.h: Added public InstanceUpdateBlocker class, protected
InstanceInvalidationGuard class, and private invalidateInstances function.
Unlike the ones in SVGElementInstance these use references so they are then
not copyable without using the WTF_MAKE_NONCOPYABLE macro.

* svg/SVGElementInstance.cpp:
(WebCore::SVGElementInstance::invalidateAllInstancesOfElement): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::InstanceUpdateBlocker): Deleted.
(WebCore::SVGElementInstance::InstanceUpdateBlocker::~InstanceUpdateBlocker): Deleted.
* svg/SVGElementInstance.h: Removed InvalidationGuard, InstanceUpdateBlocker, and
invalidateAllInstancesOfElement. Didn't do any further cleanup since we soon will
delete this entire file.

* svg/SVGAElement.cpp:
(WebCore::SVGAElement::svgAttributeChanged): Updated to use new name and reference
instead of pointer.
* svg/SVGAnimateElementBase.cpp:
(WebCore::applyCSSPropertyToTargetAndInstances): Ditto.
(WebCore::removeCSSPropertyFromTargetAndInstances): Ditto.
(WebCore::notifyTargetAndInstancesAboutAnimValChange): Ditto.
* svg/SVGAnimatedPath.cpp:
(WebCore::SVGAnimatedPathAnimator::startAnimValAnimation): Ditto.
* svg/SVGCircleElement.cpp:
(WebCore::SVGCircleElement::svgAttributeChanged): Ditto.
* svg/SVGClipPathElement.cpp:
(WebCore::SVGClipPathElement::svgAttributeChanged): Ditto.
* svg/SVGComponentTransferFunctionElement.cpp:
(WebCore::SVGComponentTransferFunctionElement::svgAttributeChanged): Ditto.
* svg/SVGCursorElement.cpp:
(WebCore::SVGCursorElement::svgAttributeChanged): Ditto.
* svg/SVGEllipseElement.cpp:
(WebCore::SVGEllipseElement::svgAttributeChanged): Ditto.
* svg/SVGFEBlendElement.cpp:
(WebCore::SVGFEBlendElement::svgAttributeChanged): Ditto.
* svg/SVGFEColorMatrixElement.cpp:
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFECompositeElement.cpp:
(WebCore::SVGFECompositeElement::svgAttributeChanged): Ditto.
* svg/SVGFEConvolveMatrixElement.cpp:
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Ditto.
* svg/SVGFEDiffuseLightingElement.cpp:
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFEDisplacementMapElement.cpp:
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Ditto.
* svg/SVGFEDropShadowElement.cpp:
(WebCore::SVGFEDropShadowElement::svgAttributeChanged): Ditto.
* svg/SVGFEGaussianBlurElement.cpp:
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Ditto.
* svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::svgAttributeChanged): Ditto.
* svg/SVGFELightElement.cpp:
(WebCore::SVGFELightElement::svgAttributeChanged): Ditto.
* svg/SVGFEMergeNodeElement.cpp:
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Ditto.
* svg/SVGFEMorphologyElement.cpp:
(WebCore::SVGFEMorphologyElement::svgAttributeChanged): Ditto.
* svg/SVGFEOffsetElement.cpp:
(WebCore::SVGFEOffsetElement::svgAttributeChanged): Ditto.
* svg/SVGFESpecularLightingElement.cpp:
(WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Ditto.
* svg/SVGFETileElement.cpp:
(WebCore::SVGFETileElement::svgAttributeChanged): Ditto.
* svg/SVGFETurbulenceElement.cpp:
(WebCore::SVGFETurbulenceElement::svgAttributeChanged): Ditto.
* svg/SVGFilterElement.cpp:
(WebCore::SVGFilterElement::svgAttributeChanged): Ditto.
* svg/SVGFilterPrimitiveStandardAttributes.cpp:
(WebCore::SVGFilterPrimitiveStandardAttributes::svgAttributeChanged): Ditto.
* svg/SVGForeignObjectElement.cpp:
(WebCore::SVGForeignObjectElement::svgAttributeChanged): Ditto.
* svg/SVGGElement.cpp:
(WebCore::SVGGElement::svgAttributeChanged): Ditto.
* svg/SVGGradientElement.cpp:
(WebCore::SVGGradientElement::svgAttributeChanged): Ditto.
* svg/SVGGraphicsElement.cpp:
(WebCore::SVGGraphicsElement::svgAttributeChanged): Ditto.
* svg/SVGImageElement.cpp:
(WebCore::SVGImageElement::svgAttributeChanged): Ditto.
* svg/SVGLineElement.cpp:
(WebCore::SVGLineElement::svgAttributeChanged): Ditto.
* svg/SVGLinearGradientElement.cpp:
(WebCore::SVGLinearGradientElement::svgAttributeChanged): Ditto.
* svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::svgAttributeChanged): Ditto.
* svg/SVGMarkerElement.cpp:
(WebCore::SVGMarkerElement::svgAttributeChanged): Ditto.
* svg/SVGMaskElement.cpp:
(WebCore::SVGMaskElement::svgAttributeChanged): Ditto.
* svg/SVGPathElement.cpp:
(WebCore::SVGPathElement::svgAttributeChanged): Ditto.
* svg/SVGPatternElement.cpp:
(WebCore::SVGPatternElement::svgAttributeChanged): Ditto.
* svg/SVGPolyElement.cpp:
(WebCore::SVGPolyElement::svgAttributeChanged): Ditto.
* svg/SVGRadialGradientElement.cpp:
(WebCore::SVGRadialGradientElement::svgAttributeChanged): Ditto.
* svg/SVGRectElement.cpp:
(WebCore::SVGRectElement::svgAttributeChanged): Ditto.
* svg/SVGSVGElement.cpp:
(WebCore::SVGSVGElement::svgAttributeChanged): Ditto.
* svg/SVGScriptElement.cpp:
(WebCore::SVGScriptElement::svgAttributeChanged): Ditto.
* svg/SVGStopElement.cpp:
(WebCore::SVGStopElement::svgAttributeChanged): Ditto.
* svg/SVGSymbolElement.cpp:
(WebCore::SVGSymbolElement::svgAttributeChanged): Ditto.
* svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::svgAttributeChanged): Ditto.
* svg/SVGTextContentElement.cpp:
(WebCore::SVGTextContentElement::svgAttributeChanged): Ditto.
* svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::svgAttributeChanged): Ditto.
* svg/SVGTextPositioningElement.cpp:
(WebCore::SVGTextPositioningElement::svgAttributeChanged): Ditto.
* svg/SVGUseElement.cpp:
(WebCore::SVGUseElement::svgAttributeChanged): Ditto.
* svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::svgAttributeChanged): Ditto.

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

5 years agoMemory cache for resources pending disk write
antti@apple.com [Tue, 3 Feb 2015 14:17:12 +0000 (14:17 +0000)]
Memory cache for resources pending disk write
https://bugs.webkit.org/show_bug.cgi?id=141159

Reviewed by Andreas Kling.

If a resource was requested from the disk cache before it has been written we ended up
loading it again. Add a short lived memory cache to avoid this.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::decodeStorageEntry):
* NetworkProcess/cache/NetworkCacheStorage.h:
(WebKit::NetworkCacheStorage::Data::isMap):

    Add a way to know whether a Data is backed by map or not. SharedMemory does not work correctly
    if it is not a map.

* NetworkProcess/cache/NetworkCacheStorageCocoa.mm:
(WebKit::NetworkCacheStorage::Data::Data):
(WebKit::NetworkCacheStorage::initialize):

    Also do some renaming.

(WebKit::decodeEntry):
(WebKit::NetworkCacheStorage::removeEntry):
(WebKit::NetworkCacheStorage::retrieve):
(WebKit::NetworkCacheStorage::store):
(WebKit::NetworkCacheStorage::clear):
(WebKit::NetworkCacheStorage::shrinkIfNeeded):

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

5 years agoUpdate cache header after revalidation without rewriting the body data
antti@apple.com [Tue, 3 Feb 2015 12:41:52 +0000 (12:41 +0000)]
Update cache header after revalidation without rewriting the body data
https://bugs.webkit.org/show_bug.cgi?id=141182

Reviewed by Andreas Kling.

Currently we just rewrite the entire entry after revalidation.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::decodeStorageEntry):

    Include the strorage entry to the cache response so we can more easily update it.

(WebKit::NetworkCache::update):

    Call the storage update function with the new and the exisiting storage entry.

* NetworkProcess/cache/NetworkCache.h:
* NetworkProcess/cache/NetworkCacheStorage.h:
* NetworkProcess/cache/NetworkCacheStorageCocoa.mm:
(WebKit::openFileForKey):

    Added an option for opening a file for writing without creating a new one.
    Renamed for clarity.

(WebKit::encodeEntryHeader):

    Separate header encoding to a function.

(WebKit::encodeEntry):
(WebKit::NetworkCacheStorage::dispatchRetrieveOperation):
(WebKit::NetworkCacheStorage::store):
(WebKit::NetworkCacheStorage::update):

    New update function.
    If the page-rounded header size would stay unchanged we can just write the new header over the old one.
    In the unlikely event it doesn't we rewrite the whole thing.

(WebKit::createIOChannelForKey): Deleted.

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

5 years agoWeb platform test server should not need to create __init__.py files
youenn.fablet@crf.canon.fr [Tue, 3 Feb 2015 09:48:01 +0000 (09:48 +0000)]
Web platform test server should not need to create __init__.py files
https://bugs.webkit.org/show_bug.cgi?id=141030

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Updated __init__.py using TestImporter.
Removed added logs to serve.py to be the same as W3C repository.

* web-platform-tests/serve.py:
* web-platform-tests/tools/__init__.py:
* web-platform-tests/tools/scripts/__init__.py: Copied from LayoutTests/imported/w3c/web-platform-tests/tools/__init__.py.
* web-platform-tests/tools/webdriver/webdriver/__init__.py: Copied from LayoutTests/imported/w3c/web-platform-tests/tools/__init__.py.

Tools:

W3C TestImporter ensures that copied __init__.py files are not empty.
If needed, a comment is inserted in __init__.py files.
Added a unit test to check that web-platform-tests tools and scripts python modules can be imported.

* Scripts/webkitpy/common/system/filesystem.py:
(FileSystem.getsize):
* Scripts/webkitpy/layout_tests/servers/web_platform_test_server_unittest.py:
(TestWebPlatformTestServer.test_start_cmd):
(TestWebPlatformTestServer):
(TestWebPlatformTestServer.test_import_web_platform_test_modules):
* Scripts/webkitpy/w3c/test_importer.py:
(TestImporter.import_tests):

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

5 years agoUnreviewed. Moving myself to the committer queue.
youenn.fablet@crf.canon.fr [Tue, 3 Feb 2015 09:32:34 +0000 (09:32 +0000)]
Unreviewed. Moving myself to the committer queue.

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

5 years ago[EFL] fast/borders/mixed-border-style2.html fails due to missing -expected.txt
commit-queue@webkit.org [Tue, 3 Feb 2015 09:20:48 +0000 (09:20 +0000)]
[EFL] fast/borders/mixed-border-style2.html fails due to missing -expected.txt
https://bugs.webkit.org/show_bug.cgi?id=141080

Unreviewed EFL gardening

Wrong: Test has no expected result
Right: Test has an expected result as well as an image showing
       the correct page render

Patch by Piotr Krysiewicz <p.krysiewicz@samsung.com> on 2015-02-03

* platform/efl/fast/borders/mixed-border-style2-expected.png: Added.
* platform/efl/fast/borders/mixed-border-style2-expected.txt: Added.

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

5 years agoimported/w3c/web-platform-tests should contain top level files of the W3C web-platfor...
youenn.fablet@crf.canon.fr [Tue, 3 Feb 2015 08:45:14 +0000 (08:45 +0000)]
imported/w3c/web-platform-tests should contain top level files of the W3C web-platform-tests repository
https://bugs.webkit.org/show_bug.cgi?id=141151

Reviewed by Ryosuke Niwa.

* web-platform-tests/CONTRIBUTING.md: Added.
* web-platform-tests/LICENSE: Added.
* web-platform-tests/README.md: Added.
* web-platform-tests/server-side.md: Added.
* web-platform-tests/w3c-import.log:

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

5 years agoUnreviewed, rolling out r179540.
commit-queue@webkit.org [Tue, 3 Feb 2015 06:14:34 +0000 (06:14 +0000)]
Unreviewed, rolling out r179540.
https://bugs.webkit.org/show_bug.cgi?id=141190

need further investigation to fix !WK_API_ENABLED (32bit)
build. (Requested by brrian_ on #webkit).

Reverted changeset:

"Convert WebInspectorProxy to use WKWebView API for the
inspector view"
https://bugs.webkit.org/show_bug.cgi?id=141037
http://trac.webkit.org/changeset/179540

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

5 years agoConvert WebInspectorProxy to use WKWebView API for the inspector view
burg@cs.washington.edu [Tue, 3 Feb 2015 05:28:40 +0000 (05:28 +0000)]
Convert WebInspectorProxy to use WKWebView API for the inspector view
https://bugs.webkit.org/show_bug.cgi?id=141037

Reviewed by Timothy Hatcher.

Use the newer API for PLATFORM(MAC). The main difference is that the
WKWebView's page group cannot be set directly; instead, the group identifier
is passed. Also add some preference setters needed for the inspector.

Refactor some code to not use page groups directly. In a future patch,
the PageGroup-based inspector level system will be simplified. It is
it is no longer necessary to keep a static map of PageGroup instances,
since they are only used to save inspector window preferences. (These used
to prevent all levels of inspector from pausing together when a second-level
inspector hit a breakpoint. This is not necessary with multi-process
web inspectors.)

Also, adjust window resizing behavior when the inspector is docked to
the right. Window width resizes should not affect the width of the inspector
frame. This matches the behavior of height changes when docked to the bottom.

* UIProcess/API/Cocoa/WKPreferences.mm:
(-[WKPreferences _logsPageMessagesToSystemConsoleEnabled]): Added.
(-[WKPreferences _setLogsPageMessagesToSystemConsoleEnabled:]): Added.
(-[WKPreferences _allowFileAccessFromFileURLs]): Added.
(-[WKPreferences _setAllowFileAccessFromFileURLs:]): Added.
* UIProcess/API/Cocoa/WKPreferencesPrivate.h:
* UIProcess/WebInspectorProxy.cpp:
(WebKit::WebInspectorProxy::WebInspectorProxy):
(WebKit::WebInspectorProxy::inspectorPagePreferences): Added.
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::detach):
(WebKit::WebInspectorProxy::setAttachedWindowHeight):
(WebKit::WebInspectorProxy::setAttachedWindowWidth):
(WebKit::WebInspectorProxy::createInspectorPage):
(WebKit::WebInspectorProxy::shouldOpenAttached):
* UIProcess/WebInspectorProxy.h: Use default member initializers.
* UIProcess/mac/WebInspectorProxyMac.mm:
(-[WKWebInspectorWKWebView _didRelaunchProcess]):
WKWebView doesn't implement this, so remove the super call.
(WebKit::WebInspectorProxy::closeTimerFired):
(WebKit::createDockButton):
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::platformAttach):
(-[WKWebInspectorWKView _didRelaunchProcess]): Deleted.

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

5 years agoREGRESSION (r170576): Storage leaks in parsing of CSS image sizes
darin@apple.com [Tue, 3 Feb 2015 05:23:35 +0000 (05:23 +0000)]
REGRESSION (r170576): Storage leaks in parsing of CSS image sizes
https://bugs.webkit.org/show_bug.cgi?id=141026

Reviewed by Brent Fulgham.

Forgot to actually fix the leak in the successful parse case!

* css/CSSParser.cpp:
(WebCore::CSSParser::sourceSize): Added a call to destroy.

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

5 years agoarguments[-1] should have well-defined behavior
fpizlo@apple.com [Tue, 3 Feb 2015 05:20:59 +0000 (05:20 +0000)]
arguments[-1] should have well-defined behavior
https://bugs.webkit.org/show_bug.cgi?id=141183

Reviewed by Mark Lam.

According to JSC's internal argument numbering, 0 is "this" and 1 is the first argument.
In the "arguments[i]" expression, "this" is not accessible and i = 0 refers to the first
argument. Previously we handled the bounds check in "arguments[i]" - where "arguments" is
statically known to be the current function's arguments object - as follows:

    add 1, i
    branchAboveOrEqual i, callFrame.ArgumentCount, slowPath

The problem with this is that if i = -1, this passes the test, and we end up accessing
what would be the "this" argument slot. That's wrong, since we should really be bottoming
out in arguments["-1"], which is usually undefined but could be anything. It's even worse
if the function is inlined or if we're in a constructor - in that case the "this" slot
could be garbage.

It turns out that we had this bug in all of our engines.

This fixes the issue by changing the algorithm to:

    load32 callFrame.ArgumentCount, tmp
    sub 1, tmp
    branchAboveOrEqual i, tmp, slowPath

In some engines, we would have used the modified "i" (the one that had 1 added to it) for
the subsequent argument load; since we don't do this anymore I also had to change some of
the offsets on the BaseIndex arguments load.

This also includes tests that are written in such a way as to get coverage on LLInt and
Baseline JIT (get-my-argument-by-val-wrap-around-no-warm-up), DFG and FTL
(get-my-argument-by-val-wrap-around), and DFG when we're being paranoid about the user
overwriting the "arguments" variable (get-my-argument-by-val-safe-wrap-around). This also
includes off-by-1 out-of-bounds tests for each of these cases, since in the process of
writing the patch I broke the arguments[arguments.length] case in the DFG and didn't see
any test failures.

* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::compile):
* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
* jit/AssemblyHelpers.h:
(JSC::AssemblyHelpers::offsetOfArguments):
(JSC::AssemblyHelpers::offsetOfArgumentsIncludingThis): Deleted.
* jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_get_argument_by_val):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::emit_op_get_argument_by_val):
* llint/LowLevelInterpreter.asm:
* llint/LowLevelInterpreter32_64.asm:
* llint/LowLevelInterpreter64.asm:
* tests/stress/get-my-argument-by-val-out-of-bounds-no-warm-up.js: Added.
(foo):
* tests/stress/get-my-argument-by-val-out-of-bounds.js: Added.
(foo):
* tests/stress/get-my-argument-by-val-safe-out-of-bounds.js: Added.
(foo):
* tests/stress/get-my-argument-by-val-safe-wrap-around.js: Added.
(foo):
* tests/stress/get-my-argument-by-val-wrap-around-no-warm-up.js: Added.
(foo):
* tests/stress/get-my-argument-by-val-wrap-around.js: Added.
(foo):

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

5 years ago[Win] Activate HTTP tests
bfulgham@apple.com [Tue, 3 Feb 2015 05:06:45 +0000 (05:06 +0000)]
[Win] Activate HTTP tests

* platform/win/TestExpectations:
* platform/win/fast/dom/adopt-node-crash-2-expected.txt:

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

5 years agoMultiGetByOffset should be marked NodeMustGenerate
fpizlo@apple.com [Tue, 3 Feb 2015 04:29:24 +0000 (04:29 +0000)]
MultiGetByOffset should be marked NodeMustGenerate
https://bugs.webkit.org/show_bug.cgi?id=140137

Reviewed by Michael Saboff.

* dfg/DFGNode.h:
(JSC::DFG::Node::convertToGetByOffset): We were sloppy - we should also clear NodeMustGenerate once it's a GetByOffset.
(JSC::DFG::Node::convertToMultiGetByOffset): Assert that we converted from something that already had NodeMustGenerate.
* dfg/DFGNodeType.h: We shouldn't DCE a node that does checks and could be effectful in baseline. Making MultiGetByOffset as NodeMustGenerate prevents DCE. FTL could still DCE the actual loads, but the checks will stay.
* tests/stress/multi-get-by-offset-dce.js: Added. This previously failed because the getter wasn't called.
(foo):

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

5 years agoJIT Compile simple cases of :nth-last-child()
benjamin@webkit.org [Tue, 3 Feb 2015 04:11:42 +0000 (04:11 +0000)]
JIT Compile simple cases of :nth-last-child()
https://bugs.webkit.org/show_bug.cgi?id=141053

Reviewed by Andreas Kling.

Source/WebCore:

This patch adds the code generator for :nth-last-child(), skipping
any :nth-last-child(An+B of selector list).

The code generator is boring here, nothing fancy.
There is no optimization opportunity here so it is basically the same
speed as the code generated by Clang when the simple selector is alone.

The only reason to JIT compile this is to avoid going to slow-path
for every selector that contain :nth-last-child().

* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::addNthChildType):
The code creating the intermediate representation of :nth-child() is exactly
the same as what we need for :nth-last-child(). I extracted the code from addPseudoClassType()
and share it for both simple selectors.

(WebCore::SelectorCompiler::addPseudoClassType):
I fail :nth-last-child(An+B of selector list). Let's add it later.

(WebCore::SelectorCompiler::minimumRegisterRequirements):
Oops, there was a bug with nthChildOfFilters.

(WebCore::SelectorCompiler::hasAnyCombinators):
(WebCore::SelectorCompiler::computeBacktrackingMemoryRequirements):
(WebCore::SelectorCompiler::computeBacktrackingInformation):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementMatching):
(WebCore::SelectorCompiler::setChildrenAffectedByBackwardPositionalRules):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementIsNthLastChild):

LayoutTests:

There was almost no test coverage for :nth-last-child(). I copied the main tests
from :nth-child() and updated the expected results.

This is not ideal because we should have style update tests targetting
backward invalidation... Still better than nothing :)

* fast/selectors/nth-last-child-as-first-simple-selector-style-update-expected.txt: Added.
* fast/selectors/nth-last-child-as-first-simple-selector-style-update.html: Added.
* fast/selectors/nth-last-child-basics-expected.txt: Added.
* fast/selectors/nth-last-child-basics.html: Added.
* fast/selectors/nth-last-child-bounds-expected.txt: Added.
* fast/selectors/nth-last-child-bounds.html: Added.
* fast/selectors/nth-last-child-chained-expected.txt: Added.
* fast/selectors/nth-last-child-chained.html: Added.
* fast/selectors/nth-last-child-on-root-expected.txt: Added.
* fast/selectors/nth-last-child-on-root.html: Added.
* fast/selectors/nth-last-child-style-update-expected.txt: Added.
* fast/selectors/nth-last-child-style-update.html: Added.
* fast/selectors/nth-last-child-with-backtracking-expected.txt: Added.
* fast/selectors/nth-last-child-with-backtracking.html: Added.
* fast/selectors/several-nth-last-child-expected.txt: Added.
* fast/selectors/several-nth-last-child.html: Added.

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

5 years agoSimple line layout: Rename FlowContentsIterator to TextFragmentIterator.
zalan@apple.com [Tue, 3 Feb 2015 03:08:33 +0000 (03:08 +0000)]
Simple line layout: Rename FlowContentsIterator to TextFragmentIterator.
https://bugs.webkit.org/show_bug.cgi?id=141177

Rubber-stamped by Antti Koivisto

FlowContentsIterator is easy to confuse with FlowContents::Iterator.
TextFragmentIterator reflects the functionality better.

No change in functionality.

* CMakeLists.txt:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::LineState::setOverflowedFragment):
(WebCore::SimpleLineLayout::LineState::overflowedFragment):
(WebCore::SimpleLineLayout::LineState::appendFragment):
(WebCore::SimpleLineLayout::begin):
(WebCore::SimpleLineLayout::end):
(WebCore::SimpleLineLayout::preWrap):
(WebCore::SimpleLineLayout::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::splitFragmentToFitLine):
(WebCore::SimpleLineLayout::firstFragment):
(WebCore::SimpleLineLayout::createLineRuns):
(WebCore::SimpleLineLayout::closeLineEndingAndAdjustRuns):
(WebCore::SimpleLineLayout::splitRunsAtRendererBoundary):
(WebCore::SimpleLineLayout::createTextRuns):
* rendering/SimpleLineLayoutTextFragmentIterator.cpp: Renamed from Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.cpp.
(WebCore::SimpleLineLayout::TextFragmentIterator::Style::Style):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragmentIterator):
(WebCore::SimpleLineLayout::TextFragmentIterator::nextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::textWidth):
(WebCore::SimpleLineLayout::nextBreakablePosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextBreakablePosition):
(WebCore::SimpleLineLayout::findNextNonWhitespace):
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextNonWhitespacePosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::runWidth):
* rendering/SimpleLineLayoutTextFragmentIterator.h: Renamed from Source/WebCore/rendering/SimpleLineLayoutFlowContentsIterator.h.
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::TextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::start):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::end):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::width):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::type):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isCollapsed):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isBreakable):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isEmpty):
(WebCore::SimpleLineLayout::TextFragmentIterator::style):
(WebCore::SimpleLineLayout::TextFragmentIterator::segmentForPosition):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::split):
(WebCore::SimpleLineLayout::TextFragmentIterator::characterAt):
(WebCore::SimpleLineLayout::TextFragmentIterator::isLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isEnd):

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

5 years agoAdd diagnostic logging for ResourceResponse's source
cdumez@apple.com [Tue, 3 Feb 2015 02:22:51 +0000 (02:22 +0000)]
Add diagnostic logging for ResourceResponse's source
https://bugs.webkit.org/show_bug.cgi?id=141170
<rdar://problem/19632080>

Reviewed by Antti Koivisto.

Add diagnostic logging for ResourceResponse's source (network, disk
cache, disk cache after validation) to give us an idea of our network
cache efficacy.

* loader/ResourceLoader.cpp:
(WebCore::logResourceResponseSource):
(WebCore::ResourceLoader::didReceiveResponse):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::networkKey):
(WebCore::DiagnosticLoggingKeys::diskCacheKey):
(WebCore::DiagnosticLoggingKeys::diskCacheAfterValidationKey):
(WebCore::DiagnosticLoggingKeys::resourceResponseKey):
(WebCore::DiagnosticLoggingKeys::scriptKey):
(WebCore::DiagnosticLoggingKeys::sourceKey):
* page/DiagnosticLoggingKeys.h:

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

5 years agoOptimize matchesLangPseudoClass() of :lang()
commit-queue@webkit.org [Tue, 3 Feb 2015 02:22:07 +0000 (02:22 +0000)]
Optimize matchesLangPseudoClass() of :lang()
https://bugs.webkit.org/show_bug.cgi?id=140873

Patch by Dhi Aurrahman <diorahman@rockybars.com> on 2015-02-02
Reviewed by Darin Adler.

Source/WebCore:

Avoid unnecessary memory allocation.

No new tests, no behavior changed.

* css/SelectorCheckerTestFunctions.h:
(WebCore::equalIgnoringASCIICase):
(WebCore::containslanguageSubtagMatchingRange):
(WebCore::matchesLangPseudoClass):

Source/WTF:

Add some basic equality comparison operators.

* wtf/text/StringView.h:
(WTF::operator==):
(WTF::operator!=):
(WTF::equal):
(WTF::equalIgnoringASCIICase):

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

5 years agoWebGL2: Implement spec section 3.7.1 Setting and getting state (Part 2).
roger_fong@apple.com [Tue, 3 Feb 2015 01:33:49 +0000 (01:33 +0000)]
WebGL2: Implement spec section 3.7.1 Setting and getting state (Part 2).
https://bugs.webkit.org/show_bug.cgi?id=141096
<rdar://problem/15002469>
Reviewed by Brent Fulgham.
This patch handles some of the valid arguments that could be passed into getParameter.
The unhandled cases will be implemented as the associated WebGL2 features are implemented.
In addition, getParameter queries that return 64 bit integer currently just return 0 as
we need to use ::glGetInteger64v which is only available in GLES 3.0 headers.
I will be adding these headers in a future patch.
* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::toJS): Accept a 64 bit integer type.
* html/canvas/WebGL2RenderingContext.cpp: Handle various parameter inputs.
(WebCore::WebGL2RenderingContext::getParameter):
* html/canvas/WebGLGetInfo.cpp: Add a 64 bit integer type.
(WebCore::WebGLGetInfo::WebGLGetInfo):
(WebCore::WebGLGetInfo::getInt64):
* html/canvas/WebGLGetInfo.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::getInt64Parameter):
* html/canvas/WebGLRenderingContextBase.h:
* platform/graphics/GraphicsContext3D.h:
* platform/graphics/opengl/GraphicsContext3DOpenGLCommon.cpp:
(WebCore::GraphicsContext3D::getInteger64v):

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

5 years agoMake NetworkCache's constructor private
cdumez@apple.com [Tue, 3 Feb 2015 01:18:28 +0000 (01:18 +0000)]
Make NetworkCache's constructor private
https://bugs.webkit.org/show_bug.cgi?id=141181

Reviewed by Antti Koivisto.

Make NetworkCache's constructor private and mark its destructor as
deleted as it is a singleton class.

* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::NetworkCache): Deleted.
* NetworkProcess/cache/NetworkCache.h:

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

5 years ago[FTL] inlined GetMyArgumentByVal with no arguments passed causes instant crash
fpizlo@apple.com [Tue, 3 Feb 2015 00:43:25 +0000 (00:43 +0000)]
[FTL] inlined GetMyArgumentByVal with no arguments passed causes instant crash
https://bugs.webkit.org/show_bug.cgi?id=141180
rdar://problem/19677552

Reviewed by Benjamin Poulain.

If we do a GetMyArgumentByVal on an inlined call frame that has no arguments, then the
bounds check already terminates execution. This means we can skip the part where we
previously did an out-of-bound array access on the inlined call frame arguments vector.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::safelyInvalidateAfterTermination):
(JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
(JSC::FTL::LowerDFGToLLVM::terminate):
(JSC::FTL::LowerDFGToLLVM::didAlreadyTerminate):
(JSC::FTL::LowerDFGToLLVM::crash):
* tests/stress/get-my-argument-by-val-inlined-no-formal-parameters.js: Added.
(foo):
(bar):

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

5 years agoSimple line layout: use std::upper_bound in splitFragmentToFitLine()
zalan@apple.com [Mon, 2 Feb 2015 23:53:26 +0000 (23:53 +0000)]
Simple line layout: use std::upper_bound in splitFragmentToFitLine()
https://bugs.webkit.org/show_bug.cgi?id=141146

Reviewed by Antti Koivisto.

Replace the custom binary search implementation with std::upper_bound and
move splitting functionality to TextFragment.

No change in functionality.

* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::FragmentForwardIterator::FragmentForwardIterator):
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator++):
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator!=):
(WebCore::SimpleLineLayout::FragmentForwardIterator::operator*):
(WebCore::SimpleLineLayout::begin):
(WebCore::SimpleLineLayout::end):
(WebCore::SimpleLineLayout::splitFragmentToFitLine):
* rendering/SimpleLineLayoutFlowContentsIterator.cpp:
(WebCore::SimpleLineLayout::FlowContentsIterator::runWidth):
* rendering/SimpleLineLayoutFlowContentsIterator.h:
(WebCore::SimpleLineLayout::FlowContentsIterator::TextFragment::split):

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

5 years agoREGRESSION(r179477): arguments simplification no longer works
fpizlo@apple.com [Mon, 2 Feb 2015 23:36:45 +0000 (23:36 +0000)]
REGRESSION(r179477): arguments simplification no longer works
https://bugs.webkit.org/show_bug.cgi?id=141169

Reviewed by Mark Lam.

The operations involved in callee/scope access don't exit and shouldn't get in the way
of strength-reducing a Flush to a PhantomLocal. Then the PhantomLocal shouldn't get in
the way of further such strength-reduction. We also need to canonicalize PhantomLocal
before running arguments simplification.

* dfg/DFGMayExit.cpp:
(JSC::DFG::mayExit):
* dfg/DFGPlan.cpp:
(JSC::DFG::Plan::compileInThreadImpl):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):

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

5 years agoVirtualRegister should really know how to dump itself
fpizlo@apple.com [Mon, 2 Feb 2015 23:32:00 +0000 (23:32 +0000)]
VirtualRegister should really know how to dump itself
https://bugs.webkit.org/show_bug.cgi?id=141171

Reviewed by Geoffrey Garen.

Gives VirtualRegister a dump() method that pretty-prints the virtual register. The rest of
the patch is all about using this new power.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CodeBlock.cpp:
(JSC::constantName):
(JSC::CodeBlock::registerName):
* bytecode/CodeBlock.h:
(JSC::missingThisObjectMarker): Deleted.
* bytecode/VirtualRegister.cpp: Added.
(JSC::VirtualRegister::dump):
* bytecode/VirtualRegister.h:
(WTF::printInternal): Deleted.
* dfg/DFGArgumentPosition.h:
(JSC::DFG::ArgumentPosition::dump):
* dfg/DFGFlushedAt.cpp:
(JSC::DFG::FlushedAt::dump):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
* dfg/DFGPutLocalSinkingPhase.cpp:
* dfg/DFGSSAConversionPhase.cpp:
(JSC::DFG::SSAConversionPhase::run):
* dfg/DFGValidate.cpp:
(JSC::DFG::Validate::reportValidationContext):
* dfg/DFGValueSource.cpp:
(JSC::DFG::ValueSource::dump):
* dfg/DFGVariableEvent.cpp:
(JSC::DFG::VariableEvent::dump):
(JSC::DFG::VariableEvent::dumpSpillInfo):
* ftl/FTLExitArgumentForOperand.cpp:
(JSC::FTL::ExitArgumentForOperand::dump):
* ftl/FTLExitValue.cpp:
(JSC::FTL::ExitValue::dumpInContext):
* profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::BytecodeSequence):

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

5 years agoUnreviewed, EFL gardening. Update flakiness tests on W3C SVG 1.1 tests.
gyuyoung.kim@samsung.com [Mon, 2 Feb 2015 23:14:50 +0000 (23:14 +0000)]
Unreviewed, EFL gardening. Update flakiness tests on W3C SVG 1.1 tests.

* platform/efl/TestExpectations:

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

5 years agoWeb Inspector: CSS Autocompletion: Autodetect many color supporting properties
joepeck@webkit.org [Mon, 2 Feb 2015 22:44:51 +0000 (22:44 +0000)]
Web Inspector: CSS Autocompletion: Autodetect many color supporting properties
https://bugs.webkit.org/show_bug.cgi?id=141166

Reviewed by Timothy Hatcher.

* UserInterface/Base/Utilities.js:
Add String.prototype.endsWith. Group String extensions together.

* UserInterface/Models/CSSKeywordCompletions.js:
(WebInspector.CSSKeywordCompletions.forProperty):
If a property name ends in "color", provide CSS color completions.

(WebInspector.CSSKeywordCompletions.isColorAwareProperty): Deleted.
This was unused and disagrees slightly with the implementation above.

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

5 years agoUse FastMalloc (bmalloc) instead of BlockAllocator for GC pages
ggaren@apple.com [Mon, 2 Feb 2015 22:27:18 +0000 (22:27 +0000)]
Use FastMalloc (bmalloc) instead of BlockAllocator for GC pages
https://bugs.webkit.org/show_bug.cgi?id=140900

Reviewed by Mark Hahnenberg.

Re-landing just the HandleBlock piece of this patch.

Source/JavaScriptCore:

* heap/HandleBlock.h:
* heap/HandleBlockInlines.h:
(JSC::HandleBlock::create):
(JSC::HandleBlock::destroy):
(JSC::HandleBlock::HandleBlock):
(JSC::HandleBlock::payloadEnd):
* heap/HandleSet.cpp:
(JSC::HandleSet::~HandleSet):
(JSC::HandleSet::grow):

Source/WebCore:

* platform/cocoa/MemoryPressureHandlerCocoa.mm:
(WebCore::MemoryPressureHandler::install):

Source/WTF:

* wtf/FastMalloc.cpp:
(WTF::fastAlignedMalloc):
(WTF::fastAlignedFree):
(WTF::TCMalloc_ThreadCache::CreateCacheIfNecessary):
* wtf/FastMalloc.h:

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

5 years ago[Win] 64-bit build fix after r179492.
bfulgham@apple.com [Mon, 2 Feb 2015 22:22:48 +0000 (22:22 +0000)]
[Win] 64-bit build fix after r179492.

* WebCore.vcxproj/WebCore.vcxproj: Forgot to build these files
as standalone under 64-bit target.

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

5 years ago[Win] Unreviewed build fix after r179489.
bfulgham@apple.com [Mon, 2 Feb 2015 22:21:46 +0000 (22:21 +0000)]
[Win] Unreviewed build fix after r179489.

Correct symbol export definitions for 32-bit and 64-bit builds.
Also add some drive-by fixes for 64-bit symbols.

* WebKit.vcxproj/WebKitExportGenerator/WebKitExports.def.in:

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

5 years agoClean up attribute handling: part 2 - attributeNode
benjamin@webkit.org [Mon, 2 Feb 2015 22:00:50 +0000 (22:00 +0000)]
Clean up attribute handling: part 2 - attributeNode
https://bugs.webkit.org/show_bug.cgi?id=141109

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-02-02
Reviewed by Andreas Kling.

Source/WebCore:

Our implementation was covering some old legacy behaviors of Firefox,
even copying bugs in some cases.

The spec (https://dom.spec.whatwg.org) now defines the behavior precisely,
let's move a bit closer to that.

Tests: fast/dom/Element/attribute-ascii-case-insensitive-3.html
       fast/dom/Element/attribute-setAttributeNode-multiple-times.html
       fast/dom/Element/attribute-setAttributeNodeNS-multiple-times.html
       fast/dom/Element/mozilla-dom-base-tests/test_bug1075702.html
       fast/dom/Element/mozilla-dom-base-tests/test_bug339494.html
       fast/dom/Element/mozilla-dom-base-tests/test_bug364092.xhtml
       fast/dom/Element/setAttributeNode-overriding-lowercase-values.html

* dom/Element.cpp:
(WebCore::findAttrNodeInList):
New getter for the name-without-namespace case.

(WebCore::Element::setAttributeNode):
This one is the tricky one: https://dom.spec.whatwg.org/#dom-element-setattributenode

When setAttributeNode() is used with an AttributeNode without namespace,
getting the old value behaves like getAttribute(), with ASCII lowercase name matching.
When used with a namespace, getting the old value behaves like getAttributeNS().

Setting the value is a whole different story, the name used always keeps
the original case.

Now that's a bit tricky for us because AttributeNodes are just legacy stuff we don't
used internally.

We have 4 cases to handle:
1) The name being set is lowercase, there was no conflicting name on the element.
   That's easy, we just override any node that would exist, set the name otherwise.
2) The name is lowercase but there was an existing attribute for it.
   -We create a new AttributeNode for the name to represent the old name.
   -We check the names are the same with attribute.name().matches(attrNode->qualifiedName())
    and override the value.
3) The name has uppercase characters, there is no conflicting name.
   We would not find an element to remove, we just use setAttributeInternal() as usual
   to add the attribute;
4) The name has uppercase characters, there is a lowercase conflicing name.
   This is the weird behavior: we need to nuke the old attribute, then add the new attribute
   with a different case.

   First we remove the attribute with a lowercase name with removeAttributeInternal().
   That becomes the old node.

   There might still be an element of the same name as what we are trying to add. We don't want
   to add another version of the same attribute. We need to use findAttributeIndexByName() again
   to find if there is a conflicting attribute. Then we call setAttributeInternal() which handle
   the both the cases where there was an element or not.

(WebCore::Element::setAttributeNodeNS):
This should work like any "NS" method.

(WebCore::Element::removeAttributeNode):
The method removeAttributeNode() is supposed to be exact.

(WebCore::Element::getAttributeNode):
(WebCore::Element::hasAttribute):
(WebCore::Element::attrIfExists):
* dom/Element.h:
* dom/ElementData.cpp:
(WebCore::ElementData::findAttributeIndexByNameSlowCase): Deleted.
(WebCore::ElementData::findAttributeIndexByNameForAttributeNode): Deleted.
Kill the slow case, every caller has been updated now.
* dom/ElementData.h:
(WebCore::ElementData::findAttributeIndexByName):
* dom/QualifiedName.h:
(WebCore::QualifiedName::matchesIgnoringCaseForLocalName): Deleted.

LayoutTests:

Improve the coverage a little.

Not everything is right yet: some getters return an empty string when they
should return null.

* fast/dom/Element/attribute-ascii-case-insensitive-1-expected.txt:
This is now fixed :)

* fast/dom/Element/attribute-ascii-case-insensitive-3-expected.txt: Added.
* fast/dom/Element/attribute-ascii-case-insensitive-3.html: Added.
Test prefixed-like attribute defined through the parser.

* fast/dom/Element/attribute-setAttributeNode-multiple-times-expected.txt: Added.
* fast/dom/Element/attribute-setAttributeNode-multiple-times.html: Added.
Make sure we don't accumulate nodes.

* fast/dom/Element/attribute-setAttributeNodeNS-multiple-times-expected.txt: Added.
* fast/dom/Element/attribute-setAttributeNodeNS-multiple-times.html: Added.
Same without the crazy setter.

* fast/dom/Element/script-tests/getAttribute-check-case-sensitivity.js:
* fast/dom/Element/getAttribute-check-case-sensitivity-expected.txt:
With the latest spec, getting a node with any uppercase character through
getAttributeNode() always fails. Update the test to use .getAttributeNodeNS()
were needed.

* fast/dom/Element/mozilla-dom-base-tests/test_bug1075702-expected.txt: Added.
* fast/dom/Element/mozilla-dom-base-tests/test_bug1075702.html: Added.
* fast/dom/Element/mozilla-dom-base-tests/test_bug339494-expected.txt: Added.
* fast/dom/Element/mozilla-dom-base-tests/test_bug339494.html: Added.
* fast/dom/Element/mozilla-dom-base-tests/test_bug364092-expected.txt: Added.
* fast/dom/Element/mozilla-dom-base-tests/test_bug364092.xhtml: Added.
(testGetAttributeNodeMixedCase):
(testAttribNodeNamePreservesCaseGetNode):
(testAttribNodeNamePreservesCaseGetNode2):
Some related tests from Gecko, for completeness.

* fast/dom/Element/setAttributeNode-case-insensitivity-expected.txt:
* fast/dom/Element/setAttributeNode-case-insensitivity.html:
Test that the getAttribute part of setAttributeNode() do not ignore the prefix. The spec
says to use the name, not the localname.

* fast/dom/Element/setAttributeNode-for-existing-attribute-expected.txt:
* fast/dom/Element/setAttributeNode-for-existing-attribute.html:
This test was for legacy behavior that came from Firefox. Firefox does not do that anymore.
Keep the test around for regression catching, but add a sentence explaining the 'incorrect'
behavior.

* fast/dom/Element/setAttributeNode-overriding-lowercase-values-1-expected.txt: Added.
* fast/dom/Element/setAttributeNode-overriding-lowercase-values-1.html: Added.
* fast/dom/Element/setAttributeNode-overriding-lowercase-values-2-expected.txt: Added.
* fast/dom/Element/setAttributeNode-overriding-lowercase-values-2.html: Added.
Some coverage for the name overriding craziness.

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

5 years agoRebaseline test with new expected results.
joepeck@webkit.org [Mon, 2 Feb 2015 21:55:11 +0000 (21:55 +0000)]
Rebaseline test with new expected results.

* http/tests/inspector-protocol/access-inspected-object-expected.txt:

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

5 years agoMemory is written to after deallocated, in GraphicsLayer::setMaskLayer.
commit-queue@webkit.org [Mon, 2 Feb 2015 21:39:14 +0000 (21:39 +0000)]
Memory is written to after deallocated, in GraphicsLayer::setMaskLayer.
https://bugs.webkit.org/show_bug.cgi?id=141168

Patch by peavo@outlook.com <peavo@outlook.com> on 2015-02-02
Reviewed by Brent Fulgham.

Visual Studio detected that a deallocated heap block had been modified in GraphicsLayer::setMaskLayer,
when called from RenderLayerBacking::updateChildClippingStrategy.

* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::updateChildClippingStrategy):

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

5 years ago[Cocoa] Make decoded image data purgeable ASAP.
akling@apple.com [Mon, 2 Feb 2015 21:25:24 +0000 (21:25 +0000)]
[Cocoa] Make decoded image data purgeable ASAP.
<https://webkit.org/b/140298>
<rdar://problem/19623377>

Reviewed by Antti Koivisto.

Re-landing this patch since it turned out to not be the cause of
the memory regression we saw around that revision.

Mark decoded images as "transient" which makes CoreGraphics mark
the backing stores as purgeable shortly after they're used.

The decoded representation will remain in CoreGraphics's caches
indefinitely unless the kernel gets starved and needs the pages.

Most resources will now reach a state where the encoded data is
mmap'ed from disk cache (once the entire resource is downloaded)
and the decoded data is purgeable.

This also has the side effect of making the MemoryCache more
palatial since the decoded data cost can be deducted for images,
allowing us to cache more resources.

Note that the worst case for this new behavior would be something
like hovering below 100% memory utilization and constantly having
to drop and re-decode images. While churny, it still beats
crashing the process, plus there's tiling to remove many of the
reasons we'd need the decoded data.

* platform/graphics/cg/ImageSourceCG.cpp:
(WebCore::ImageSource::createFrameAtIndex):

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

5 years agoWeb Inspector: Support console.table
joepeck@webkit.org [Mon, 2 Feb 2015 21:07:39 +0000 (21:07 +0000)]
Web Inspector: Support console.table
https://bugs.webkit.org/show_bug.cgi?id=141058

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/InjectedScriptSource.js:
Include the firstLevelKeys filter when generating previews.

* runtime/ConsoleClient.cpp:
(JSC::appendMessagePrefix):
Differentiate console.table logs to system log.

Source/WebCore:

* inspector/CommandLineAPIModuleSource.js:
Include "table(foo)" as an alias of "console.table(foo)" on
the command line.

Source/WebInspectorUI:

* Localizations/en.lproj/localizedStrings.js:
New "Index", "(Index)", "Value", table header strings.

* UserInterface/Views/ConsoleMessage.js:
Add "Table", but add FIXMEs to consider using the protocol generated enums.

* UserInterface/Views/ConsoleMessageImpl.js:
(WebInspector.ConsoleMessageImpl.prototype._format):
Special case console.table messages.

(WebInspector.ConsoleMessageImpl.prototype._appendPropertyPreviews):
(WebInspector.ConsoleMessageImpl.prototype._propertyPreviewElement):
Factor out ProjectPreview printing. Also, replace newlines in strings
with return characters, like we did elsewhere.

(WebInspector.ConsoleMessageImpl.prototype._formatParameterAsTable):
Ultimately try to create a DataGrid from the output. Search first
for rich object data in the list. If no rich object data is found
just check for simple values. If the table is lossy, also do
a log of the object in case the user wants to see more data.

* UserInterface/Views/DataGrid.js:
(WebInspector.DataGrid):
The for..in enumeration is unordered and may not give us the
column ordering we wanted. So include an optional preferred
column names list to get the preferred order.

(WebInspector.DataGrid.createSortableDataGrid):
Numerous bug fixes here. Accidental globals, typos, and sorting failures.

(WebInspector.DataGrid.prototype.autoSizeColumns):
(WebInspector.DataGrid.prototype.textForDataGridNodeColumn):
(WebInspector.DataGrid.prototype._copyTextForDataGridNode):
Create a generic method to get the text for a datagrid node in a column.
This is important for getting the text from console.table previews which
contains Nodes.

* UserInterface/Views/LogContentView.css:
(.console-messages:focus .console-item.selected .data-grid tr.selected):
(.console-item .data-grid tr.selected):
DataGrid selection colors while in the console which may or may
not have selected console items.

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

5 years ago[Win] Build fix following r179482.
roger_fong@apple.com [Mon, 2 Feb 2015 21:04:08 +0000 (21:04 +0000)]
[Win] Build fix following r179482.

* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* bindings/js/JSBindingsAllInOne.cpp:
* platform/graphics/GraphicsContext3D.h:

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

5 years ago.:
fpizlo@apple.com [Mon, 2 Feb 2015 20:54:59 +0000 (20:54 +0000)]
.:
Revert accidental change in r179490.

* Makefile.shared:

Source/WebKit2:
Revert accidental (and super bad) change in r179490.

* WebProcess/com.apple.WebProcess.sb.in:

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

5 years agoBinarySwitch should be faster on average
fpizlo@apple.com [Mon, 2 Feb 2015 20:52:01 +0000 (20:52 +0000)]
BinarySwitch should be faster on average
https://bugs.webkit.org/show_bug.cgi?id=141046

Reviewed by Anders Carlsson.

This optimizes our binary switch using math. It's strictly better than what we had before
assuming we bottom out in some case (rather than fall through), assuming all cases get
hit with equal probability. The difference is particularly large for large switch
statements. For example, a switch statement with 1000 cases would previously require on
average 13.207 branches to get to some case, while now it just requires 10.464.

This is also a progression for the fall-through case, though we could shave off another
1/6 branch on average if we wanted to - though it would regress taking a case (not falling
through) by 1/6 branch. I believe it's better to bias the BinarySwitch for not falling
through.

This also adds some randomness to the algorithm to minimize the likelihood of us
generating a switch statement that is always particularly bad for some input. Note that
the randomness has no effect on average-case performance assuming all cases are equally
likely.

This ought to have no actual performance change because we don't rely on binary switches
that much. The main reason why this change is interesting is that I'm finding myself
increasingly relying on BinarySwitch, and I'd like to know that it's optimal.

* jit/BinarySwitch.cpp:
(JSC::BinarySwitch::BinarySwitch):
(JSC::BinarySwitch::~BinarySwitch):
(JSC::BinarySwitch::build):
* jit/BinarySwitch.h:

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

5 years agoAccess MemoryCache singleton using MemoryCache::singleton()
cdumez@apple.com [Mon, 2 Feb 2015 20:50:16 +0000 (20:50 +0000)]
Access MemoryCache singleton using MemoryCache::singleton()
https://bugs.webkit.org/show_bug.cgi?id=141104

Reviewed by Andreas Kling.

Access MemoryCache singleton using MemoryCache::singleton() static
member function, instead of a free function, as per the recent
coding style discussion on WebKit-dev.

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

5 years agoAmbiguous naming: Do not call replacedContentRect()'s return value paint rect.
zalan@apple.com [Mon, 2 Feb 2015 20:40:00 +0000 (20:40 +0000)]
Ambiguous naming: Do not call replacedContentRect()'s return value paint rect.
https://bugs.webkit.org/show_bug.cgi?id=141125

Reviewed by Simon Fraser.

It's the content box rect with the object-fit adjustment.

No change in functionality.

* rendering/RenderHTMLCanvas.cpp:
(WebCore::RenderHTMLCanvas::paintReplaced):
* rendering/RenderImage.cpp:
(WebCore::RenderImage::updateInnerContentRect):
(WebCore::RenderImage::paintReplaced):
* rendering/RenderReplaced.cpp:
(WebCore::RenderReplaced::replacedContentRect):
* rendering/SimpleLineLayout.cpp:
(WebCore::SimpleLineLayout::splitFragmentToFitLine):

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

5 years ago[Win] Build fix after r179476.
bfulgham@apple.com [Mon, 2 Feb 2015 20:29:41 +0000 (20:29 +0000)]
[Win] Build fix after r179476.
https://bugs.webkit.org/show_bug.cgi?id=141026

Reviewed by Anders Carlsson.

MSVC has a compiler bug that forces us to make some explicit statements about how
the passed pointer values are handled.

* css/CSSParser.cpp:
(WebCore::CSSParser::SourceSize::SourceSize):
(WebCore::CSSParser::sourceSize):
* css/CSSParser.h:

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

5 years agoUnreviewed, revert accidental change to Makefile.shared in r179478
fpizlo@apple.com [Mon, 2 Feb 2015 20:28:17 +0000 (20:28 +0000)]
Unreviewed, revert accidental change to Makefile.shared in r179478

* Makefile.shared:

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

5 years agoGet rid of invalidSelectorVector, use Bison's error recovery instead
benjamin@webkit.org [Mon, 2 Feb 2015 20:13:05 +0000 (20:13 +0000)]
Get rid of invalidSelectorVector, use Bison's error recovery instead
https://bugs.webkit.org/show_bug.cgi?id=141147

Reviewed by Darin Adler.

* css/CSSGrammar.y.in:
Instead of reducing a null selector, we can use a real parsing error
to get out of invalid selector endings.

When that happens, Bison will pop the stack until it can reduce any
valid error recovery rules.

The problem is to make sure there is no floating values because
none of the reduce block between the error and the recovery would
be executed.

In this case, "nth_selector_ending" is a non-recursive production of
the NTHCHILDFUNCTIONS. In turn, NTHCHILDFUNCTIONS are productions
of the non-recursive "pseudo". "pseudo" is only used as a trivial
production of "specifier". "specifier" is only used by "specifier_list".

"specifier_list" has error recovery code -> no production could have
generated a floating values between "specifier_list" and "nth_selector_ending".

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

5 years agoMultiple CSS plus selector not working after checkbox:checked
benjamin@webkit.org [Mon, 2 Feb 2015 20:10:17 +0000 (20:10 +0000)]
Multiple CSS plus selector not working after checkbox:checked
https://bugs.webkit.org/show_bug.cgi?id=110594

Reviewed by Darin Adler.

I fixed the bug not so long ago.

This patch adds coverage for :checked since internal states
tend to have tricky update behaviors.

* fast/selectors/checked-direct-adjacent-style-update-1-expected.txt: Added.
* fast/selectors/checked-direct-adjacent-style-update-1.html: Added.
* fast/selectors/checked-direct-adjacent-style-update-2-expected.txt: Added.
* fast/selectors/checked-direct-adjacent-style-update-2.html: Added.
* fast/selectors/checked-direct-adjacent-style-update-3-expected.txt: Added.
* fast/selectors/checked-direct-adjacent-style-update-3.html: Added.
* fast/selectors/checked-direct-adjacent-style-update-4-expected.txt: Added.
* fast/selectors/checked-direct-adjacent-style-update-4.html: Added.

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

5 years agoWeb Inspector: Extend CSS.getSupportedCSSProperties to provide values for properties...
commit-queue@webkit.org [Mon, 2 Feb 2015 20:07:02 +0000 (20:07 +0000)]
Web Inspector: Extend CSS.getSupportedCSSProperties to provide values for properties for CSS Augmented JSContext
https://bugs.webkit.org/show_bug.cgi?id=141064

Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-02-02
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

* inspector/protocol/CSS.json:

Source/WebInspectorUI:

* UserInterface/Models/CSSCompletions.js:
* UserInterface/Models/CSSKeywordCompletions.js:
(WebInspector.CSSKeywordCompletions.addCustomCompletions):
(WebInspector.CSSKeywordCompletions.addPropertyCompletionValues):
If a property is specified with custom values, extend the
keyword completions map to make those values available
in autocompletion.

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

5 years agoWebGL2: Implement spec section 3.7.1 Setting and getting state (Part 1).
roger_fong@apple.com [Mon, 2 Feb 2015 20:05:37 +0000 (20:05 +0000)]
WebGL2: Implement spec section 3.7.1 Setting and getting state (Part 1).
https://bugs.webkit.org/show_bug.cgi?id=141096
<rdar://problem/15002469>

Reviewed by Brent Fulgham.

This patch implements the WebGL2 versions of getParameter, getIndexedParameter and isEnabled.
It also removes the WebGL1 implementations from WebGLRenderingContextBase and moves it to WebGLRenderingContext.
I’ve stubbed out most of the parameters for now, some of which will be implemented in Part 2,
and the rest as the our WebGL2 implementation progresses.

* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::toJS):
(WebCore::JSWebGL2RenderingContext::getIndexedParameter):
* html/canvas/WebGL2RenderingContext.cpp:
(WebCore::WebGL2RenderingContext::getIndexedParameter):
(WebCore::WebGL2RenderingContext::getParameter):
(WebCore::WebGL2RenderingContext::validateCapability):
* html/canvas/WebGL2RenderingContext.h:
* html/canvas/WebGL2RenderingContext.idl:
* html/canvas/WebGLRenderingContext.cpp:
(WebCore::WebGLRenderingContext::getParameter):
(WebCore::WebGLRenderingContext::validateCapability):
* html/canvas/WebGLRenderingContext.h:
* html/canvas/WebGLRenderingContextBase.cpp:
(WebCore::WebGLRenderingContextBase::getParameter): Deleted.
(WebCore::WebGLRenderingContextBase::validateCapability): Deleted.
* html/canvas/WebGLRenderingContextBase.h:
* html/canvas/WebGLRenderingContextBase.idl:
* platform/graphics/GraphicsContext3D.h:
Two read format parameters were moved from the WebGL2 spec to the WebGL1 spec. Update tests accordingly.
* fast/canvas/webgl/constants.html:
* fast/canvas/webgl/webgl-specific-expected.txt:
* fast/canvas/webgl/webgl-specific.html:
* webgl/1.0.2/resources/webgl_test_files/conformance/misc/webgl-specific.html:

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

5 years ago[iOS] ASSERTION FAILED: m_scriptExecutionContext->isContextThread() in ContextDestruc...
dbates@webkit.org [Mon, 2 Feb 2015 19:47:06 +0000 (19:47 +0000)]
[iOS] ASSERTION FAILED: m_scriptExecutionContext->isContextThread() in ContextDestructionObserver::observeContext
https://bugs.webkit.org/show_bug.cgi?id=141057
<rdar://problem/19068790>

Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

* inspector/remote/RemoteInspector.mm:
(Inspector::RemoteInspector::receivedIndicateMessage): Modified to call WTF::callOnWebThreadOrDispatchAsyncOnMainThread().
(Inspector::dispatchAsyncOnQueueSafeForAnyDebuggable): Deleted; moved logic to common helper function,
WTF::callOnWebThreadOrDispatchAsyncOnMainThread() so that it can be called from both RemoteInspector::receivedIndicateMessage()
and CryptoKeyRSA::generatePair().

Source/WebCore:

Fixes an issue where we would create-/delete- the RSA crypto keys and dispatch callbacks on the wrong
thread in WebKit1 for iOS. In iOS WebKit1 we should perform such operations on thread WebThread.

This change is covered by existing layout tests.

* crypto/mac/CryptoKeyRSAMac.cpp:
(WebCore::CryptoKeyRSA::generatePair):

Source/WTF:

* wtf/MainThread.h:
* wtf/mac/MainThreadMac.mm:
(WTF::callOnWebThreadOrDispatchAsyncOnMainThread): Added.

LayoutTests:

Un-skip crypto tests. Also, group skip entries for tests crypto/subtle/{rsa-indexeddb, rsa-indexeddb-non-exportable}.html
with other skipped IndexedDB tests.

* platform/ios-simulator/TestExpectations:

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

5 years agoPrevent crash when accessing WebAVPlayerController.delegate.
commit-queue@webkit.org [Mon, 2 Feb 2015 19:40:57 +0000 (19:40 +0000)]
Prevent crash when accessing WebAVPlayerController.delegate.
https://bugs.webkit.org/show_bug.cgi?id=140893

Patch by Jeremy Jones <jeremyj@apple.com> on 2015-02-02
Reviewed by Darin Adler.

Source/WebCore:

This patch aims to prevent a null delegate access during invalidation by adding null checks before accessing the delegate, by making explicit the recreation of m_playerController, and by consolidating and correcting the teardown sequence.

* WebCore.exp.in:
* platform/ios/WebVideoFullscreenInterface.h: add resetMediaState()
* platform/ios/WebVideoFullscreenInterfaceAVKit.h: ditto.
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerController playerViewController:shouldExitFullScreenWithReason:]): Check for null before accessing delegate.
(-[WebAVPlayerController play:]): ditto.
(-[WebAVPlayerController pause:]): ditto.
(-[WebAVPlayerController togglePlayback:]): ditto.
(-[WebAVPlayerController setPlaying:]): ditto.
(-[WebAVPlayerController beginScrubbing:]): ditto.
(-[WebAVPlayerController endScrubbing:]): ditto.
(-[WebAVPlayerController seekToTime:]): ditto.
(-[WebAVPlayerController beginScanningForward:]): ditto.
(-[WebAVPlayerController endScanningForward:]): ditto.
(-[WebAVPlayerController beginScanningBackward:]): ditto.
(-[WebAVPlayerController endScanningBackward:]): ditto.
(-[WebAVPlayerController seekToBeginning:]): ditto.
(-[WebAVPlayerController seekToEnd:]): ditto.
(-[WebAVPlayerController setCurrentAudioMediaSelectionOption:]): ditto.
(-[WebAVPlayerController setCurrentLegibleMediaSelectionOption:]): ditto.
(-[WebAVPlayerController layoutSublayersOfLayer:]): ditto.
(WebVideoFullscreenInterfaceAVKit::WebVideoFullscreenInterfaceAVKit): initialize m_playerController
(WebVideoFullscreenInterfaceAVKit::resetMediaState): Added.
(WebVideoFullscreenInterfaceAVKit::setDuration): remove playerController()
(WebVideoFullscreenInterfaceAVKit::setCurrentTime): ditto.
(WebVideoFullscreenInterfaceAVKit::setRate): ditto.
(WebVideoFullscreenInterfaceAVKit::setVideoDimensions): ditto.
(WebVideoFullscreenInterfaceAVKit::setSeekableRanges): ditto.
(WebVideoFullscreenInterfaceAVKit::setCanPlayFastReverse): ditto.
(WebVideoFullscreenInterfaceAVKit::setAudioMediaSelectionOptions): ditto.
(WebVideoFullscreenInterfaceAVKit::setLegibleMediaSelectionOptions): ditto.
(WebVideoFullscreenInterfaceAVKit::setExternalPlayback): ditto.
(WebVideoFullscreenInterfaceAVKit::setupFullscreenInternal): ditto.
(WebVideoFullscreenInterfaceAVKit::enterFullscreenStandard): ditto.
(WebVideoFullscreenInterfaceAVKit::cleanupFullscreenInternal): consolidated cleanup code from invalidate()
(WebVideoFullscreenInterfaceAVKit::invalidate): consolidate cleanup code.
(WebVideoFullscreenInterfaceAVKit::playerController): Deleted.
* platform/ios/WebVideoFullscreenModelVideoElement.mm:
(WebVideoFullscreenModelVideoElement::setVideoElement): call resetMediaState()

Source/WebKit2:

Plumb new resetMediaState() through IPC interface WebVideoFullscreenManagerProxy.

* UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in:
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::invalidate): remove redundant set to nullptr.
* WebProcess/ios/WebVideoFullscreenManager.h:
* WebProcess/ios/WebVideoFullscreenManager.mm:
(WebKit::WebVideoFullscreenManager::resetMediaState):

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

5 years agoCreate tests for JSC's Control Flow Profiler
saambarati1@gmail.com [Mon, 2 Feb 2015 19:05:46 +0000 (19:05 +0000)]
Create tests for JSC's Control Flow Profiler
https://bugs.webkit.org/show_bug.cgi?id=141123

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

This patch creates a control flow profiler testing API in jsc.cpp
that accepts a function and a string as arguments. The string must
be a substring of the text of the function argument. The API returns
a boolean indicating whether or not the basic block that encloses the
substring has executed.

This patch uses this API to test that the control flow profiler
behaves as expected on basic block boundaries. These tests do not
provide full coverage for all JavaScript statements that can create
basic blocks boundaries. Full coverage will come in a later patch.

* jsc.cpp:
(GlobalObject::finishCreation):
(functionHasBasicBlockExecuted):
* runtime/ControlFlowProfiler.cpp:
(JSC::ControlFlowProfiler::hasBasicBlockAtTextOffsetBeenExecuted):
* runtime/ControlFlowProfiler.h:
* tests/controlFlowProfiler: Added.
* tests/controlFlowProfiler.yaml: Added.
* tests/controlFlowProfiler/driver: Added.
* tests/controlFlowProfiler/driver/driver.js: Added.
(assert):
* tests/controlFlowProfiler/if-statement.js: Added.
(testIf):
(noMatches):
* tests/controlFlowProfiler/loop-statements.js: Added.
(forRegular):
(forIn):
(forOf):
(whileLoop):
* tests/controlFlowProfiler/switch-statements.js: Added.
(testSwitch):
* tests/controlFlowProfiler/test-jit.js: Added.
(tierUpToBaseline):
(tierUpToDFG):
(baselineTest):
(dfgTest):

Tools:

* Scripts/run-javascriptcore-tests:
(runJSCStressTests):
* Scripts/run-jsc-stress-tests:

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

5 years agoPolymorphic call inlining should be based on polymorphic call inline caching rather...
fpizlo@apple.com [Mon, 2 Feb 2015 18:38:08 +0000 (18:38 +0000)]
Polymorphic call inlining should be based on polymorphic call inline caching rather than logging
https://bugs.webkit.org/show_bug.cgi?id=140660

Reviewed by Geoffrey Garen.

When we first implemented polymorphic call inlining, we did the profiling based on a call
edge log. The idea was to store each call edge (a tuple of call site and callee) into a
global log that was processed lazily. Processing the log would give precise counts of call
edges, and could be used to drive well-informed inlining decisions - polymorphic or not.
This was a speed-up on throughput tests but a slow-down for latency tests. It was a net win
nonetheless.

Experience with this code shows three things. First, the call edge profiler is buggy and
complex. It would take work to fix the bugs. Second, the call edge profiler incurs lots of
overhead for latency code that we care deeply about. Third, it's not at all clear that
having call edge counts for every possible callee is any better than just having call edge
counts for the limited number of callees that an inline cache would catch.

So, this patch removes the call edge profiler and replaces it with a polymorphic call inline
cache. If we miss the basic call inline cache, we inflate the cache to be a jump to an
out-of-line stub that cases on the previously known callees. If that misses again, then we
rewrite that stub to include the new callee. We do this up to some number of callees. If we
hit the limit then we switch to using a plain virtual call.

Substantial speed-up on V8Spider; undoes the slow-down that the original call edge profiler
caused. Might be a SunSpider speed-up (below 1%), depending on hardware.

Rolling this back in after fixing https://bugs.webkit.org/show_bug.cgi?id=141107.

* CMakeLists.txt:
* JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
* JavaScriptCore.xcodeproj/project.pbxproj:
* bytecode/CallEdge.h:
(JSC::CallEdge::count):
(JSC::CallEdge::CallEdge):
* bytecode/CallEdgeProfile.cpp: Removed.
* bytecode/CallEdgeProfile.h: Removed.
* bytecode/CallEdgeProfileInlines.h: Removed.
* bytecode/CallLinkInfo.cpp:
(JSC::CallLinkInfo::unlink):
(JSC::CallLinkInfo::visitWeak):
* bytecode/CallLinkInfo.h:
* bytecode/CallLinkStatus.cpp:
(JSC::CallLinkStatus::CallLinkStatus):
(JSC::CallLinkStatus::computeFor):
(JSC::CallLinkStatus::computeFromCallLinkInfo):
(JSC::CallLinkStatus::isClosureCall):
(JSC::CallLinkStatus::makeClosureCall):
(JSC::CallLinkStatus::dump):
(JSC::CallLinkStatus::computeFromCallEdgeProfile): Deleted.
* bytecode/CallLinkStatus.h:
(JSC::CallLinkStatus::CallLinkStatus):
(JSC::CallLinkStatus::isSet):
(JSC::CallLinkStatus::variants):
(JSC::CallLinkStatus::size):
(JSC::CallLinkStatus::at):
(JSC::CallLinkStatus::operator[]):
(JSC::CallLinkStatus::canOptimize):
(JSC::CallLinkStatus::edges): Deleted.
(JSC::CallLinkStatus::canTrustCounts): Deleted.
* bytecode/CallVariant.cpp:
(JSC::variantListWithVariant):
(JSC::despecifiedVariantList):
* bytecode/CallVariant.h:
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::~CodeBlock):
(JSC::CodeBlock::linkIncomingPolymorphicCall):
(JSC::CodeBlock::unlinkIncomingCalls):
(JSC::CodeBlock::noticeIncomingCall):
* bytecode/CodeBlock.h:
(JSC::CodeBlock::isIncomingCallAlreadyLinked): Deleted.
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::addCallWithoutSettingResult):
(JSC::DFG::ByteCodeParser::handleCall):
(JSC::DFG::ByteCodeParser::handleInlining):
* dfg/DFGClobberize.h:
(JSC::DFG::clobberize):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGDoesGC.cpp:
(JSC::DFG::doesGC):
* dfg/DFGDriver.cpp:
(JSC::DFG::compileImpl):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* dfg/DFGNode.h:
(JSC::DFG::Node::hasHeapPrediction):
* dfg/DFGNodeType.h:
* dfg/DFGOperations.cpp:
* dfg/DFGPredictionPropagationPhase.cpp:
(JSC::DFG::PredictionPropagationPhase::propagate):
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGTierUpCheckInjectionPhase.cpp:
(JSC::DFG::TierUpCheckInjectionPhase::run):
(JSC::DFG::TierUpCheckInjectionPhase::removeFTLProfiling): Deleted.
* ftl/FTLCapabilities.cpp:
(JSC::FTL::canCompile):
* heap/Heap.cpp:
(JSC::Heap::collect):
* jit/BinarySwitch.h:
* jit/ClosureCallStubRoutine.cpp: Removed.
* jit/ClosureCallStubRoutine.h: Removed.
* jit/JITCall.cpp:
(JSC::JIT::compileOpCall):
* jit/JITCall32_64.cpp:
(JSC::JIT::compileOpCall):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
(JSC::operationLinkPolymorphicCallFor):
(JSC::operationLinkClosureCallFor): Deleted.
* jit/JITStubRoutine.h:
* jit/JITWriteBarrier.h:
* jit/PolymorphicCallStubRoutine.cpp: Added.
(JSC::PolymorphicCallNode::~PolymorphicCallNode):
(JSC::PolymorphicCallNode::unlink):
(JSC::PolymorphicCallCase::dump):
(JSC::PolymorphicCallStubRoutine::PolymorphicCallStubRoutine):
(JSC::PolymorphicCallStubRoutine::~PolymorphicCallStubRoutine):
(JSC::PolymorphicCallStubRoutine::variants):
(JSC::PolymorphicCallStubRoutine::edges):
(JSC::PolymorphicCallStubRoutine::visitWeak):
(JSC::PolymorphicCallStubRoutine::markRequiredObjectsInternal):
* jit/PolymorphicCallStubRoutine.h: Added.
(JSC::PolymorphicCallNode::PolymorphicCallNode):
(JSC::PolymorphicCallCase::PolymorphicCallCase):
(JSC::PolymorphicCallCase::variant):
(JSC::PolymorphicCallCase::codeBlock):
* jit/Repatch.cpp:
(JSC::linkSlowFor):
(JSC::linkFor):
(JSC::revertCall):
(JSC::unlinkFor):
(JSC::linkVirtualFor):
(JSC::linkPolymorphicCall):
(JSC::linkClosureCall): Deleted.
* jit/Repatch.h:
* jit/ThunkGenerators.cpp:
(JSC::linkPolymorphicCallForThunkGenerator):
(JSC::linkPolymorphicCallThunkGenerator):
(JSC::linkPolymorphicCallThatPreservesRegsThunkGenerator):
(JSC::linkClosureCallForThunkGenerator): Deleted.
(JSC::linkClosureCallThunkGenerator): Deleted.
(JSC::linkClosureCallThatPreservesRegsThunkGenerator): Deleted.
* jit/ThunkGenerators.h:
(JSC::linkPolymorphicCallThunkGeneratorFor):
(JSC::linkClosureCallThunkGeneratorFor): Deleted.
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::jitCompileAndSetHeuristics):
* runtime/Options.h:
* runtime/VM.cpp:
(JSC::VM::prepareToDiscardCode):
(JSC::VM::ensureCallEdgeLog): Deleted.
* runtime/VM.h:

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

5 years agoConverting Flushes and PhantomLocals to Phantoms requires an OSR availability analysi...
fpizlo@apple.com [Mon, 2 Feb 2015 18:15:44 +0000 (18:15 +0000)]
Converting Flushes and PhantomLocals to Phantoms requires an OSR availability analysis rather than just using the SetLocal's child
https://bugs.webkit.org/show_bug.cgi?id=141107

Reviewed by Michael Saboff.

See the bugzilla for a discussion of the problem. This addresses the problem by ensuring
that Flushes are always strength-reduced to PhantomLocals, and CPS rethreading does a mini
OSR availability analysis to determine the right MovHint value to use for the Phantom.

* dfg/DFGCPSRethreadingPhase.cpp:
(JSC::DFG::CPSRethreadingPhase::CPSRethreadingPhase):
(JSC::DFG::CPSRethreadingPhase::freeUnnecessaryNodes):
(JSC::DFG::CPSRethreadingPhase::clearVariables):
(JSC::DFG::CPSRethreadingPhase::canonicalizeFlushOrPhantomLocalFor):
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlock):
(JSC::DFG::CPSRethreadingPhase::clearVariablesAtHeadAndTail): Deleted.
* dfg/DFGNode.h:
(JSC::DFG::Node::convertPhantomToPhantomLocal):
(JSC::DFG::Node::convertFlushToPhantomLocal):
(JSC::DFG::Node::convertToPhantomLocal): Deleted.
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* tests/stress/inline-call-that-doesnt-use-all-args.js: Added.
(foo):
(bar):
(baz):

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

5 years agoREGRESSION (r170576): Storage leaks in parsing of CSS image sizes
darin@apple.com [Mon, 2 Feb 2015 18:12:32 +0000 (18:12 +0000)]
REGRESSION (r170576): Storage leaks in parsing of CSS image sizes
https://bugs.webkit.org/show_bug.cgi?id=141026

Reviewed by Anders Carlsson.

* css/CSSGrammar.y.in: Fixed all the shift/reduce conflicts caused
by the ENABLE_PICTURE_SIZES code by removing all the redundant
maybe_space which caused them. Rearranged the productions for
ENABLE_PICTURE_SIZES to tighten up the code quite a bit. Changed
the code to build up the source size vector as a Vector instead of
a special class, and use the SourceSize struct from inside the
CSSParser class.'

* css/CSSParser.cpp:
(WebCore::CSSParser::setupParser): Changed this to take a StringView.
In the future we can change all the parsing functions to take StringView,
since they don't work with the String in place.
(WebCore::CSSParser::parseSizesAttribute): Changed to return a vector
of SourceSize instead of a SourceSizeList. This is better because it's
a real CSS data structure that does not contain a CSSParserValue.
(WebCore::CSSParser::sourceSize): Added. Helper that creates a
SourceSize, mapping parser data structures into real CSS ones.

* css/CSSParser.h: Updated for changes above.

* css/MediaQuery.cpp:
(WebCore::MediaQuery::MediaQuery): Use std::make_unique and the copy
constructor directly instead of using a MediaQuery::copy function.

* css/MediaQueryExp.cpp: Streamlined the class a little bit.
* css/MediaQueryExp.h: Removed unneeded includes. Moved functions out
of the class body so the class is easier to read. Removed the unneeded
copy function.

* css/SourceSizeList.cpp:
(WebCore::SourceSize::match): Changed to use WTF::move instead
of releasing and then re-creating the unique_ptr.
(WebCore::computeLength): Added a comment to explain this function
is using an incorrect strategy. Also added some type checking code
to handle cases where a null or non-primitive CSS value might be
returned. Probably dead code, but we don't want to risk a bad cast.
Worthe cleaning up when we fix the strategy.
(WebCore::SourceSizeList::getEffectiveSize): Updated since the
vector now contains actual SourceSize objects rather than pointers
to SourceSize objects on the heap.

* css/SourceSizeList.h: Changed the CSSParserValue argument to be
an rvalue reference to make it clearer that we take ownership of it
when it's moved in. Added a move constructor and a destructor. Added
comments explaining that it's not correct design to use a
CSSParserValue here, outside the parser. Changed SourceSizeList's
append function to move a SourceSize in rather than a unique_ptr.
Made getEffectiveSize private. Moved the various inline functions to
the bottom of the file to make the class definitions easier to read.

* css/SourceSizeList.cpp: Made almost everything about this private
to this source file instead of public in the header.
(WebCore::match): Made this a free function instead of a member function
and made it take the media query expression as an argument.
(WebCore::computeLength): Changed the argument type to CSSValue*,
rather than using CSSParserValue here outside the parser.
(WebCore::parseSizesAttribute): Streamlined and simplified this.
Now that the parser builds the list in the correct order, there was
no need to iterate backwards any more so we could use a modern for
loop.

* css/SourceSizeList.h: Removed almost everything in this header.

* html/HTMLImageElement.cpp:
(WebCore::HTMLImageElement::parseAttribute): Call the
parseSizesAttribute function as free function since it's no longer
a member of a SourceSizeList class.

* html/parser/HTMLPreloadScanner.cpp:
(WebCore::TokenPreloadScanner::StartTagScanner::processAttributes):
Ditto.

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

5 years agoRemove copy/paste code from run-jsc-stress-tests to determine numberOfTests
ossy@webkit.org [Mon, 2 Feb 2015 17:06:19 +0000 (17:06 +0000)]
Remove copy/paste code from run-jsc-stress-tests to determine numberOfTests
https://bugs.webkit.org/show_bug.cgi?id=141158

Reviewed by Darin Adler.

* Scripts/run-jsc-stress-tests:

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

5 years ago[GTK] MiniBrowser should close itself on Ctrl+W or Ctrl+Q
commit-queue@webkit.org [Mon, 2 Feb 2015 08:48:37 +0000 (08:48 +0000)]
[GTK] MiniBrowser should close itself on Ctrl+W or Ctrl+Q
https://bugs.webkit.org/show_bug.cgi?id=141142

Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2015-02-02
Reviewed by Carlos Garcia Campos.

* MiniBrowser/gtk/BrowserWindow.c:
(browser_window_init): Quit on Ctrl+W or Ctrl+Q

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

5 years agoFix some leaks found by the leak bot
darin@apple.com [Mon, 2 Feb 2015 08:27:03 +0000 (08:27 +0000)]
Fix some leaks found by the leak bot
https://bugs.webkit.org/show_bug.cgi?id=141149

Reviewed by Alexey Proskuryakov.

* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::importKey): Changed argument types to std::unique_ptr for better code clarity.
(WebCore::JSSubtleCrypto::importKey): Use WTF::move instead of release.
(WebCore::JSSubtleCrypto::wrapKey): Fixed leaks by adding missing delete calls to the
case where we get a DOM exception.
(WebCore::JSSubtleCrypto::unwrapKey): Ditto.

* dom/SelectorQuery.cpp:
(WebCore::SelectorQuery::SelectorQuery): Use WTF::move here. Not clear how this could
have caused the storage leak, but it does seem obviously missing. The leak is pretty big,
implying that we leak almost all CSSSelectorList objects we parse; not sure this fixes it.

* loader/WorkerThreadableLoader.cpp:
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse): Added code to
deleted the unguarded pointer if postTaskForModeToWorkerGlobalScope fails.
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveData): Ditto.
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFail): Ditto.
(WebCore::WorkerThreadableLoader::MainThreadBridge::didFailAccessControlCheck): Ditto.

* platform/graphics/avfoundation/MediaSelectionGroupAVFObjC.mm:
(WebCore::MediaSelectionGroupAVFObjC::updateOptions): Added missing adoptNS.

* platform/graphics/mac/GraphicsContextMac.mm:
(WebCore::GraphicsContext::updateDocumentMarkerResources): Added missing release.

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

5 years agoUse more references in HistoryItem
cdumez@apple.com [Mon, 2 Feb 2015 00:49:36 +0000 (00:49 +0000)]
Use more references in HistoryItem
https://bugs.webkit.org/show_bug.cgi?id=141133

Reviewed by Andreas Kling.

Use more references in HistoryItem instead of pointers.
Source/WebKit2:

* WebProcess/InjectedBundle/InjectedBundleBackForwardListItem.cpp:
(WebKit::InjectedBundleBackForwardListItem::children):
* WebProcess/WebCoreSupport/SessionStateConversion.cpp:
(WebKit::toFrameState):
(WebKit::applyFrameState):
* WebProcess/WebPage/WebBackForwardListProxy.cpp:
(WebKit::WebBackForwardListProxy::addItem):
* WebProcess/WebPage/WebBackForwardListProxy.h:

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

5 years agoUnreviewed, rolling out r179467 and r179470.
commit-queue@webkit.org [Sun, 1 Feb 2015 23:47:31 +0000 (23:47 +0000)]
Unreviewed, rolling out r179467 and r179470.
https://bugs.webkit.org/show_bug.cgi?id=141144

Broke svg/custom/use-events-crash.svg (Requested by ap on
#webkit).

Reverted changesets:

"Stop dispatching events with SVGElementInstance objects as
their targets"
https://bugs.webkit.org/show_bug.cgi?id=141108
http://trac.webkit.org/changeset/179467

"REGRESSION(r179467): svg/custom/use-events-crash.svg times
out"
http://trac.webkit.org/changeset/179470

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

5 years agoREGRESSION(r179467): svg/custom/use-events-crash.svg times out
ap@apple.com [Sun, 1 Feb 2015 22:05:52 +0000 (22:05 +0000)]
REGRESSION(r179467): svg/custom/use-events-crash.svg times out

Looks like the new test (svg/custom/use-event-retargeting.html) somehow breaks
subsequent one, let's try skipping it for now.

* TestExpectations:

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

5 years agoWeb platform test server is not always launching properly on Mac EWS bots
youenn.fablet@crf.canon.fr [Sun, 1 Feb 2015 21:23:07 +0000 (21:23 +0000)]
Web platform test server is not always launching properly on Mac EWS bots
https://bugs.webkit.org/show_bug.cgi?id=141141

Unreviewed.

* Scripts/webkitpy/layout_tests/servers/web_platform_test_launcher.py:
(create_wpt_empty_file_if_needed): Removed creation of empty __init.py__ files from AutoInstalled modules.

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

5 years agoRemove ViewGestureController tracing
mitz@apple.com [Sun, 1 Feb 2015 18:42:33 +0000 (18:42 +0000)]
Remove ViewGestureController tracing
https://bugs.webkit.org/show_bug.cgi?id=141137

Reviewed by Tim Horton.

Remove the tracing added in r176133, now that http://webkit.org/b/138750 is fixed.

* UIProcess/ios/ViewGestureControllerIOS.mm:
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::endSwipeGesture):
(WebKit::ViewGestureController::willCommitPostSwipeTransitionLayerTree):
(WebKit::ViewGestureController::removeSwipeSnapshot):
(WebKit::addLogEntry): Deleted.
(WebKit::dumpLogEntries): Deleted.
* UIProcess/mac/ViewGestureController.h:

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

5 years agoSource/WebCore:
darin@apple.com [Sun, 1 Feb 2015 15:22:57 +0000 (15:22 +0000)]
Source/WebCore:
Stop dispatching events to with SVGElementInstance objects as their targets
https://bugs.webkit.org/show_bug.cgi?id=141108

Reviewed by Anders Carlsson.

Test: svg/custom/use-event-retargeting.html

* dom/EventDispatcher.cpp:
(WebCore::eventTargetRespectingTargetRules): Replaced the code that retargeted
events at SVGElementInstance objects with code that retargets them at the use
element instead. Also wrote the code in a simpler way.

LayoutTests:
Stop dispatching events with SVGElementInstance objects as their targets
https://bugs.webkit.org/show_bug.cgi?id=141108

Reviewed by Anders Carlsson.

Many tests are no longer relevant once we aren't doing this any more.

* platform/gtk/svg/custom/use-instanceRoot-event-bubbling-expected.png: Removed.
* platform/gtk/svg/custom/use-instanceRoot-modifications-expected.png: Removed.
* platform/gtk/svg/custom/use-instanceRoot-modifications-expected.txt: Removed.
* platform/ios-sim-deprecated/svg/custom/use-instanceRoot-modifications-expected.txt: Removed.
* platform/ios-simulator/svg/custom/use-instanceRoot-modifications-expected.txt: Removed.
* platform/mac-mountainlion/svg/custom/use-instanceRoot-modifications-expected.txt: Removed.
* platform/mac/svg/custom/use-instanceRoot-event-bubbling-expected.png: Removed.
* platform/mac/svg/custom/use-instanceRoot-modifications-expected.png: Removed.
* platform/mac/svg/custom/use-instanceRoot-modifications-expected.txt: Removed.
* svg/custom/use-instanceRoot-modifications.svg: Removed.
* svg/custom/use-instanceRoot-with-use-removed-expected.txt: Removed.
* svg/custom/use-instanceRoot-with-use-removed.svg: Removed.

* svg/custom/resources/use-instanceRoot-event-bubbling.js: Updated this test to expect
the events to be dispatched with the SVGUseElement as the target. I talked this over with
Sam Weinig and we decided this is good behavior for now, and it almost matches what the
spec says. Might be worth refining later.
* svg/custom/use-instanceRoot-event-bubbling-expected.txt: Updated expected results.
* svg/custom/use-instanceRoot-event-bubbling.xhtml: Tweaked the test a little. It still
could use improvement; it's like half a "repaint test", which is strange.

* svg/custom/use-event-retargeting-expected.txt: Added. Got this test from Blink.
* svg/custom/use-event-retargeting.html: Added. Ditto.

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

5 years agoUnreviewd EFL gardening. Add new failing tests related to W3C SVG 1.1.
gyuyoung.kim@samsung.com [Sun, 1 Feb 2015 14:53:01 +0000 (14:53 +0000)]
Unreviewd EFL gardening. Add new failing tests related to W3C SVG 1.1.

* platform/efl/TestExpectations:

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

5 years agoUnreviewed EFL gardening. Update crash tests related to webgl because
gyuyoung.kim@samsung.com [Sun, 1 Feb 2015 13:02:05 +0000 (13:02 +0000)]
Unreviewed EFL gardening. Update crash tests related to webgl because
webgl isn't supported by EFL port at the moment.

* platform/efl/TestExpectations:

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

5 years agoUnreviewed EFL gardening. Update tests which don't have expectation result yet.
gyuyoung.kim@samsung.com [Sun, 1 Feb 2015 12:22:16 +0000 (12:22 +0000)]
Unreviewed EFL gardening. Update tests which don't have expectation result yet.

* platform/efl/TestExpectations:

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

5 years ago[TexMap] Optimize TextureMapperLayer::removeAllChildren()
zandobersek@gmail.com [Sun, 1 Feb 2015 10:25:15 +0000 (10:25 +0000)]
[TexMap] Optimize TextureMapperLayer::removeAllChildren()
https://bugs.webkit.org/show_bug.cgi?id=140734

Reviewed by Chris Dumez.

Instead of removing the children from the Vector member one by one,
move the Vector out and iterate through the ex-children, clearing
out the pointer to the parent.

* platform/graphics/texmap/TextureMapperLayer.cpp:
(WebCore::TextureMapperLayer::removeAllChildren):

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

5 years ago[TexMap] Avoid unnecessary TransformationMatrix copies in GraphicsLayerTransform
zandobersek@gmail.com [Sun, 1 Feb 2015 10:17:49 +0000 (10:17 +0000)]
[TexMap] Avoid unnecessary TransformationMatrix copies in GraphicsLayerTransform
https://bugs.webkit.org/show_bug.cgi?id=140735

Reviewed by Chris Dumez.

* platform/graphics/GraphicsLayerTransform.cpp:
(WebCore::GraphicsLayerTransform::combined): Return a const reference to the matrix.
(WebCore::GraphicsLayerTransform::combinedForChildren): Ditto.
(WebCore::GraphicsLayerTransform::combineTransforms): First copy the parent transform,
then apply the translation and multiplication. Previously this copied the parent
transform into a temporary object, performed the translation and multiplication, and
copied that temporary object again when assigning to the member variable.
(WebCore::GraphicsLayerTransform::combineTransformsForChildren): Mark const. m_childrenDirty
and m_combinedForChildren members are marked mutable.
* platform/graphics/GraphicsLayerTransform.h:

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

5 years agoUnreviewed EFL gardening. Update flaky tests regarding W3C SVG 1.1 tests.
gyuyoung.kim@samsung.com [Sun, 1 Feb 2015 07:30:31 +0000 (07:30 +0000)]
Unreviewed EFL gardening. Update flaky tests regarding W3C SVG 1.1 tests.

* platform/efl/TestExpectations:

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

5 years ago[Win] Unreviewed test machine configuration change.
bfulgham@apple.com [Sun, 1 Feb 2015 06:54:29 +0000 (06:54 +0000)]
[Win] Unreviewed test machine configuration change.

* http/conf/apache2.4-httpd-win.conf: Provide reasonable default PidFile location for xampp-based install.

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

5 years agoREGRESSION (r177689): Emoji variation sequences rendered incorrectly (as characters...
commit-queue@webkit.org [Sun, 1 Feb 2015 04:18:00 +0000 (04:18 +0000)]
REGRESSION (r177689): Emoji variation sequences rendered incorrectly (as characters from other non-emoji font)
https://bugs.webkit.org/show_bug.cgi?id=141112

Patch by Myles C. Maxfield <litherum@gmail.com> on 2015-01-31
Reviewed by Sam Weinig.

Source/WebCore:

Typo in r177689.

Test: platform/mac/fast/text/combining-mark-paint.html

* platform/graphics/mac/ComplexTextControllerCoreText.mm:
(WebCore::ComplexTextController::collectComplexTextRunsForCharacters):

LayoutTests:

* platform/mac/fast/text/combining-mark-paint-expected.html: Added.
* platform/mac/fast/text/combining-mark-paint.html: Added.

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

5 years agoUnreviewed, rolling out r178183.
commit-queue@webkit.org [Sun, 1 Feb 2015 04:03:43 +0000 (04:03 +0000)]
Unreviewed, rolling out r178183.
https://bugs.webkit.org/show_bug.cgi?id=141132

Caused more mallocing than the volatility saved. (Requested by
kling on #webkit).

Reverted changeset:

"[Cocoa] Make decoded image data purgeable ASAP."
https://bugs.webkit.org/show_bug.cgi?id=140298
http://trac.webkit.org/changeset/178183

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

5 years agoCrash (DFG assertion) beneath AbstractInterpreter::verifyEdge() @ http://experilous...
msaboff@apple.com [Sun, 1 Feb 2015 03:58:39 +0000 (03:58 +0000)]
Crash (DFG assertion) beneath AbstractInterpreter::verifyEdge() @ experilous.com/1/planet-generator/2014-09-28/version-1
https://bugs.webkit.org/show_bug.cgi?id=141111

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

In LowerDFGToLLVM::compileNode(), if we determine while compiling a node that we would have
exited, we don't need to process the OSR availability or abstract interpreter.

* ftl/FTLLowerDFGToLLVM.cpp:
(JSC::FTL::LowerDFGToLLVM::safelyInvalidateAfterTermination): Broke this out a a separate
method since we need to call it at the top and near the bottom of compileNode().
(JSC::FTL::LowerDFGToLLVM::compileNode):

LayoutTests:

New tests.

* js/regress-141111-expected.txt: Added.
* js/regress-141111.html: Added.
* js/script-tests/regress-141111.js: Added.
(MyObject):
(foo):
(.result):
(bar):

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

5 years agoUse simpler CachedResourceMap structure in MemoryCache with CACHE_PARTITIONING enabled
cdumez@apple.com [Sun, 1 Feb 2015 03:11:14 +0000 (03:11 +0000)]
Use simpler CachedResourceMap structure in MemoryCache with CACHE_PARTITIONING enabled
https://bugs.webkit.org/show_bug.cgi?id=141110

Reviewed by Antti Koivisto.

Use simpler CachedResourceMap structure in MemoryCache with CACHE_PARTITIONING
enabled. Previously, we would be using a HashMap of HashMap to store
CachedResources. The outer HashMap would use the URL as key and the inner
HashMap would use the partition name as key. This would make traversing the
structure overly complicated, especially considering that the code needs to
traverse a simple HashMap if CACHE_PARTITIONING is disabled.

This patch updates the CachedResourceMap structure to be a simple HashMap,
whose key is an std::pair<URL, String /* partitionName */>. Having a flat
structure simplifies the traversal code a lot and enables more code sharing
between CACHE_PARTITIONING and !CACHE_PARTITIONING. This shouldn't regress
performance because we always have both a URL and a partition name when we
need to look up a resource. We never need to retrieve all resources with
a particular URL.

This patch also switches to using a URL as key instead of a String as we
always have a URL has input.

* loader/cache/MemoryCache.cpp:
(WebCore::MemoryCache::add):
(WebCore::MemoryCache::revalidationSucceeded):
(WebCore::MemoryCache::resourceForRequestImpl):
(WebCore::MemoryCache::removeImageFromCache):
(WebCore::MemoryCache::remove):
After removing the resource from the CachedResourceMap, remove the
sessionID from m_sessionResources if the CachedResourceMap is now
empty. Previously, no code was removing sessionIDs from
m_sessionResources.

(WebCore::MemoryCache::removeResourcesWithOrigin):
(WebCore::MemoryCache::getOriginsWithCache):
(WebCore::MemoryCache::getStatistics):
(WebCore::MemoryCache::setDisabled):
* loader/cache/MemoryCache.h:

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

5 years agoMerge the iOS implementations of GraphicsContext::drawText and GraphicsContext::drawB...
commit-queue@webkit.org [Sun, 1 Feb 2015 03:04:21 +0000 (03:04 +0000)]
Merge the iOS implementations of GraphicsContext::drawText and GraphicsContext::drawBidiText with the platform independent ones
https://bugs.webkit.org/show_bug.cgi?id=141131

Patch by Sam Weinig <sam@webkit.org> on 2015-01-31
Reviewed by Antti Koivisto.

* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::drawText):
The only difference between the two implementation here was the iOS one returns the length of
the text that was drawn. As all platforms now support that, we can merge by keeping the iOS one.

(WebCore::GraphicsContext::drawBidiText):
This function had a few differences:
    - iOS returns the length of the text that was drawn.
        Since this is not used anywhere, I dropped this ability.
    - iOS took additional inputs of initial bidi status and run length (and returned the
      the final bidi status as an out parameter)
        Since this was also unused, I dropped it.
    - iOS used the fact that font.drawText() returns the length that was drawn, to avoid
      measuring the text twice.
        I kept this, since all platforms now support this.

* platform/graphics/GraphicsContext.h:
Update signatures. Remove WEBCORE_EXPORT for function that is not used outside of WebCore.

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

5 years agoShrink RenderBlock.
akling@apple.com [Sun, 1 Feb 2015 02:58:13 +0000 (02:58 +0000)]
Shrink RenderBlock.
<https://webkit.org/b/141129>

Reviewed by Antti Koivisto.

Get rid of the bitfield in RenderBlock by moving the essential bits to
RenderElement (plenty of space in the bitfield there.)

RenderBlock also had a cache of its line-height, but it doesn't appear
to help any of the benchmarks that we're tracking so I'd say it's okay
to lose this optimization.

This knocks 8 bytes off of RenderBlock (and all of its subclasses.)

* rendering/RenderBlock.cpp:
(WebCore::RenderBlock::RenderBlock):
(WebCore::RenderBlock::styleDidChange):
(WebCore::RenderBlock::recomputeLogicalWidth):
(WebCore::RenderBlock::lineHeight):
* rendering/RenderBlock.h:
(WebCore::RenderBlock::setHasMarginBeforeQuirk):
(WebCore::RenderBlock::setHasMarginAfterQuirk):
(WebCore::RenderBlock::setHasBorderOrPaddingLogicalWidthChanged):
(WebCore::RenderBlock::hasMarginBeforeQuirk):
(WebCore::RenderBlock::hasMarginAfterQuirk):
(WebCore::RenderBlock::hasBorderOrPaddingLogicalWidthChanged):
* rendering/RenderBlockFlow.cpp:
(WebCore::RenderBlockFlow::layoutInlineChildren):
(WebCore::RenderBlockFlow::invalidateLineLayoutPath):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):
(WebCore::RenderBlockFlow::ensureLineBoxes):
* rendering/RenderBlockFlow.h:
(WebCore::RenderBlockFlow::lineLayoutPath):
(WebCore::RenderBlockFlow::setLineLayoutPath):
(WebCore::RenderBlockFlow::setHasMarkupTruncation):
(WebCore::RenderBlockFlow::hasMarkupTruncation):
(WebCore::RenderBlockFlow::simpleLineLayout):
* rendering/RenderElement.cpp:
(WebCore::RenderElement::RenderElement):
* rendering/RenderElement.h:
(WebCore::RenderElement::setRenderBlockHasMarginBeforeQuirk):
(WebCore::RenderElement::setRenderBlockHasMarginAfterQuirk):
(WebCore::RenderElement::setRenderBlockHasBorderOrPaddingLogicalWidthChanged):
(WebCore::RenderElement::renderBlockHasMarginBeforeQuirk):
(WebCore::RenderElement::renderBlockHasMarginAfterQuirk):
(WebCore::RenderElement::renderBlockHasBorderOrPaddingLogicalWidthChanged):
(WebCore::RenderElement::setRenderBlockFlowLineLayoutPath):
(WebCore::RenderElement::setRenderBlockFlowHasMarkupTruncation):
(WebCore::RenderElement::renderBlockFlowLineLayoutPath):
(WebCore::RenderElement::renderBlockFlowHasMarkupTruncation):
* rendering/RenderFlowThread.cpp:
(WebCore::RenderFlowThread::removeLineRegionInfo):

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

5 years agoRemove useless PageCache::singleton() call from PageCache member function
cdumez@apple.com [Sun, 1 Feb 2015 02:06:44 +0000 (02:06 +0000)]
Remove useless PageCache::singleton() call from PageCache member function
https://bugs.webkit.org/show_bug.cgi?id=141127

Reviewed by Andreas Kling.

* history/PageCache.cpp:
(WebCore::PageCache::get):

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

5 years agoRemove empty #if/#endif
weinig@apple.com [Sun, 1 Feb 2015 00:38:19 +0000 (00:38 +0000)]
Remove empty #if/#endif

Rubber-stamped by Antti Koivisto.

* platform/graphics/FontPlatformData.h:

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

5 years agoRemove support for disabling drawing of emoji
weinig@apple.com [Sat, 31 Jan 2015 23:52:38 +0000 (23:52 +0000)]
Remove support for disabling drawing of emoji
https://bugs.webkit.org/show_bug.cgi?id=141126

Reviewed by Antti Koivisto.

Remove unused support for disabling the drawing of emoji.

* WebCore.exp.in:
* platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::emojiDrawingEnabled): Deleted.
(WebCore::GraphicsContext::setEmojiDrawingEnabled): Deleted.
* platform/graphics/GraphicsContext.h:
(WebCore::GraphicsContextState::GraphicsContextState):
* platform/graphics/cocoa/FontCascadeCocoa.mm:
(WebCore::FontCascade::drawGlyphs):

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

5 years agoRemove even more Mountain Lion support
weinig@apple.com [Sat, 31 Jan 2015 22:55:39 +0000 (22:55 +0000)]
Remove even more Mountain Lion support
https://bugs.webkit.org/show_bug.cgi?id=141124

Reviewed by Alexey Proskuryakov.

Source/bmalloc:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:

Source/JavaScriptCore:

* API/tests/DateTests.mm:
* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/Version.xcconfig:
* jit/ExecutableAllocatorFixedVMPool.cpp:

Source/WebCore:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/Version.xcconfig:
* accessibility/mac/WebAccessibilityObjectWrapperMac.mm:
(-[WebAccessibilityObjectWrapper accessibilityActionNames]):
(-[WebAccessibilityObjectWrapper subrole]):
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
(PlatformCALayer::drawLayerContents):
* platform/mac/ThemeMac.mm:
(-[WebCoreThemeView _focusRingVisibleRect]):

Source/WebKit/mac:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebKitLegacy.xcconfig:

Source/WebKit2:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* Configurations/FeatureDefines.xcconfig:
* Configurations/Version.xcconfig:
* Configurations/WebContentService.Development.xcconfig:
* Configurations/WebContentService.xcconfig:
* Configurations/WebKit.xcconfig:
* NetworkProcess/mac/com.apple.WebKit.NetworkProcess.sb.in:

Source/WTF:

* Configurations/Base.xcconfig:
* Configurations/DebugRelease.xcconfig:
* wtf/Assertions.cpp:
* wtf/FeatureDefines.h:
* wtf/Platform.h:

Tools:

* DumpRenderTree/mac/AccessibilityUIElementMac.mm:
(AccessibilityUIElement::attributedStringRangeIsMisspelled):
* DumpRenderTree/mac/Configurations/Base.xcconfig:
* DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
* DumpRenderTree/mac/DumpRenderTree.mm:
(activateTestingFonts):
(prepareConsistentTestingEnvironment):
* DumpRenderTree/mac/EventSendingController.mm:
(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]):
(-[EventSendingController contextClick]):
* DumpRenderTree/mac/TextInputController.m:
* LayoutTestRelay/Configurations/Base.xcconfig:
* LayoutTestRelay/Configurations/DebugRelease.xcconfig:
* MiniBrowser/Configurations/Base.xcconfig:
* MiniBrowser/Configurations/DebugRelease.xcconfig:
* MiniBrowser/mac/WK2BrowserWindowController.m:
(-[WK2BrowserWindowController webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[WK2BrowserWindowController webView:runJavaScriptConfirmPanelWithMessage:initiatedByFrame:completionHandler:]):
(-[WK2BrowserWindowController webView:runJavaScriptTextInputPanelWithPrompt:defaultText:initiatedByFrame:completionHandler:]):
* TestWebKitAPI/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/DebugRelease.xcconfig:
* TestWebKitAPI/Tests/WebKit2Cocoa/Download.mm:
(-[DownloadDelegate _downloadDidFinish:]):
* TestWebKitAPI/Tests/mac/StringTruncator.mm:
(TestWebKitAPI::TEST):
* TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
(TestWebKitAPI::InjectedBundleController::platformInitialize):
* WebKitLauncher/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/DebugRelease.xcconfig:
* WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
(WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
* WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
(WTR::activateFonts):
* WebKitTestRunner/TestController.cpp:
(WTR::TestController::initialize):
(WTR::TestController::webProcessName):
* WebKitTestRunner/mac/EventSenderProxy.mm:
* asan/asan.xcconfig:

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

5 years agoEnable WebKit disk cache on OS X
antti@apple.com [Sat, 31 Jan 2015 22:54:17 +0000 (22:54 +0000)]
Enable WebKit disk cache on OS X
https://bugs.webkit.org/show_bug.cgi?id=141022

Reviewed by Gavin Barraclough.

Source/WebKit2:

* config.h: Flip the switch.

LayoutTests:

* TestExpectations: Enable the test for cache functionality.

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

5 years agoUnreviewed, rolling out r179447.
antti@apple.com [Sat, 31 Jan 2015 22:51:19 +0000 (22:51 +0000)]
Unreviewed, rolling out r179447.

Forgot to include the test.

Reverted changeset:

"Enable WebKit disk cache on OS X"
https://bugs.webkit.org/show_bug.cgi?id=141022
http://trac.webkit.org/changeset/179447

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

5 years agoEnable WebKit disk cache on OS X
antti@apple.com [Sat, 31 Jan 2015 22:43:20 +0000 (22:43 +0000)]
Enable WebKit disk cache on OS X
https://bugs.webkit.org/show_bug.cgi?id=141022

Reviewed by Gavin Barraclough.

* config.h: Flip the switch.

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

5 years agoOSObjectPtr does not work with dispatch_data_t on Maverics
antti@apple.com [Sat, 31 Jan 2015 20:43:33 +0000 (20:43 +0000)]
OSObjectPtr does not work with dispatch_data_t on Maverics
https://bugs.webkit.org/show_bug.cgi?id=141081

Reviewed by Zalan Bujtas.

Previous attempt to special case dispatch_data_t in OSObjectPtr didn't work in all cases
probably due to the context sensitivity of the definition of the dispatch_data_t type.

For now, add DispatchPtr for the cache code and use it.

* NetworkProcess/cache/NetworkCacheStorage.h:
(WebKit::DispatchPtr::DispatchPtr):
(WebKit::DispatchPtr::~DispatchPtr):
(WebKit::DispatchPtr::operator=):
(WebKit::DispatchPtr::get):
(WebKit::DispatchPtr::operator bool):
(WebKit::adoptDispatch):
* NetworkProcess/cache/NetworkCacheStorageCocoa.mm:
(WebKit::NetworkCacheStorage::Data::Data):
(WebKit::NetworkCacheStorage::Data::data):
(WebKit::NetworkCacheStorage::NetworkCacheStorage):
(WebKit::createIOChannelForKey):
(WebKit::decodeEntry):
(WebKit::encodeEntryMetaData):
(WebKit::encodeEntry):

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

5 years agoMerge SimpleFontDataIOS.mm and SimpleFontDataMac.mm into FontCocoa.mm
weinig@apple.com [Sat, 31 Jan 2015 20:42:57 +0000 (20:42 +0000)]
Merge SimpleFontDataIOS.mm and SimpleFontDataMac.mm into FontCocoa.mm
https://bugs.webkit.org/show_bug.cgi?id=141101

Rubber-stamped by Dan Bernstein.

* WebCore.xcodeproj/project.pbxproj:
Remove SimpleFontDataIOS.mm and SimpleFontDataMac.mm. Add FontCocoa.mm.

* platform/graphics/Font.h:
Remove a few CG only functions from the header that can be implemented as static functions
in the implementation file.

* platform/graphics/cocoa/FontCocoa.mm: Copied from Source/WebCore/platform/graphics/mac/SimpleFontDataMac.mm.
(WebCore::fontFamilyShouldNotBeUsedForArabic):
(WebCore::Font::platformInit):
(WebCore::Font::platformCharWidthInit):
(WebCore::Font::platformCreateScaledFont):
(WebCore::Font::determinePitch):
(WebCore::renderingStyle):
(WebCore::advanceForColorBitmapFont):
(WebCore::hasCustomTracking):
(WebCore::canUseFastGlyphAdvanceGetter):
(WebCore::Font::platformWidthForGlyph):
(WebCore::Font::compositeFontReferenceFont):
(WebCore::copyFontTableForTag): Deleted.
(WebCore::Font::renderingStyle): Deleted.
Merge in the iOS specific parts.

* platform/graphics/ios/SimpleFontDataIOS.mm: Removed.
* platform/graphics/mac/SimpleFontDataMac.mm: Removed.

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