timothy_horton@apple.com [Wed, 4 Feb 2015 20:41:02 +0000 (20:41 +0000)]
Fix a misplaced include in CaptionUserPreferencesMediaAF
https://bugs.webkit.org/show_bug.cgi?id=141239
Reviewed by Jer Noble.
* page/CaptionUserPreferencesMediaAF.cpp:
CoreText is a system header, and there's already a good spot for it!
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179624
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 20:36:04 +0000 (20:36 +0000)]
Unreviewed build fix after r179611.
* public/v2/interactive-chart.js:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179623
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
dbates@webkit.org [Wed, 4 Feb 2015 20:26:23 +0000 (20:26 +0000)]
test-webkitpy fails on Mac without iphoneos SDK
https://bugs.webkit.org/show_bug.cgi?id=141255
<rdar://problem/
19619691>
Reviewed by David Kilzer and Alexey Proskuryakov.
Fixes an issue where test-webkitpy fails on a Mac without the iOS SDK. We should
should not require the iphoneos SDK to be installed to run the webkitpy tests.
* Scripts/webkitpy/common/system/platforminfo.py:
(PlatformInfo.xcode_sdk_version): Added; return the version of the specified SDK, if
installed. We take advantage of the behavior that xcrun --show-sdk-version only writes
to standard output if the SDK is installed to return the empty string if the SDK is
not installed.
* Scripts/webkitpy/common/system/platforminfo_mock.py:
(MockPlatformInfo.xcode_sdk_version): Added.
* Scripts/webkitpy/port/ios.py:
(IOSPort.determine_full_port_name): Modified to call PlatformInfo.xcode_sdk_version()
to get the version of the iphoneos SDK, if installed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179622
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
saambarati1@gmail.com [Wed, 4 Feb 2015 20:03:52 +0000 (20:03 +0000)]
TypeSet can use 1 byte instead of 4 bytes for its m_seenTypes member variable
https://bugs.webkit.org/show_bug.cgi?id=141204
Reviewed by Darin Adler.
There is no need to use 32 bits to store a TypeSet::RuntimeType set
bit-vector when the largest value for a single TypeSet::RuntimeType
is 0x80. 8 bits is enough to represent the set of seen types.
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupNode):
* runtime/TypeSet.cpp:
(JSC::TypeSet::doesTypeConformTo):
* runtime/TypeSet.h:
(JSC::TypeSet::seenTypes):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179621
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jer.noble@apple.com [Wed, 4 Feb 2015 19:37:36 +0000 (19:37 +0000)]
[WebAudio] AudioBufferSourceNodes should accurately play backwards if given a negative playbackRate.
https://bugs.webkit.org/show_bug.cgi?id=140955
Reviewed by Eric Carlson.
Source/WebCore:
Tests: webaudio/audiobuffersource-negative-playbackrate-interpolated.html
webaudio/audiobuffersource-negative-playbackrate.html
Add support for playing an AudioBufferSourceNode at a negative playbackRate. Change the meaning of
start() to set the initial playback position at the end of the play range if the rate of playback
is negtive.
* Modules/webaudio/AudioBufferSourceNode.cpp:
(WebCore::AudioBufferSourceNode::AudioBufferSourceNode): Allow the playbackRate AudioParam to range from [-32, 32].
(WebCore::AudioBufferSourceNode::renderFromBuffer): Change variable names from "start" and "end" to "min" and "max"
for clarity. Add a non-interpolated and interpolated render step for negative playback.
(WebCore::AudioBufferSourceNode::start): Drive-by fix: default value of grainDuration is not 0.02.
(WebCore::AudioBufferSourceNode::startPlaying): Start playing at the end of the buffer for negative playback.
(WebCore::AudioBufferSourceNode::totalPitchRate): Allow the pitch to be negative.
LayoutTests:
* webaudio/audiobuffersource-negative-playbackrate-expected.wav: Added.
* webaudio/audiobuffersource-negative-playbackrate-interpolated-expected.wav: Added.
* webaudio/audiobuffersource-negative-playbackrate-interpolated.html: Added.
* webaudio/audiobuffersource-negative-playbackrate.html: Added.
Get rid of extra HRTF padding as it's now unnecessary.
* webaudio/resources/note-grain-on-testing.js:
(createSignalBuffer):
(verifyStartAndEndFrames):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179618
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ap@apple.com [Wed, 4 Feb 2015 18:38:57 +0000 (18:38 +0000)]
run-webkit-tests doesn't always capture ASan violation reports
https://bugs.webkit.org/show_bug.cgi?id=141231
Reviewed by Darin Adler.
* Scripts/webkitpy/port/driver.py:
(Driver.run_test): Don't look for CrashReporter crash logs if a log was provided
by the driver already (as is the case with ASan violations, which are printed to
stderr).
(Driver._check_for_address_sanitizer_violation): Check if the line is a start of ASan
report.
(Driver._read_block): Give ASan enough time to symbolicate a crash, and put it into
a separate variable for reporting.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179616
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 18:16:39 +0000 (18:16 +0000)]
Perf dashboard doesn’t show the right unit for Safari UI tests
https://bugs.webkit.org/show_bug.cgi?id=141238
Reviewed by Darin Adler.
Safari UI tests use custom metrics that end with "Time". This patch teaches the perf dashboard how to
get the unit for a given metric based on the suffix of the metric name instead of hard-coding the mapping
between metrics and their units.
* public/js/helper-classes.js:
(PerfTestRuns): Use the suffix of the metric name to compute the unit.
* public/v2/manifest.js:
(App.Manifest.fetchRunsWithPlatformAndMetric): Ditto. Also set "useSI" property iff for "bytes".
* public/v2/interactive-chart.js:
(App.InteractiveChartComponent._constructGraphIfPossible): Respect useSI. Use toPrecision(3) otherwise.
(App.InteractiveChartComponent._relayoutDataAndAxes): Place the unit vertically on the left of ticks.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179613
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
eric.carlson@apple.com [Wed, 4 Feb 2015 18:16:06 +0000 (18:16 +0000)]
video.attribute should not return true just because of fullscreen
https://bugs.webkit.org/show_bug.cgi?id=141219
Reviewed by Dean Jackson.
Source/WebCore:
No new tests, updated media/video-fullscreeen-only-controls.html
* Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.shouldHaveControls):
* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.isFullScreen):
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::controls): Don't consider fullscreen status.
(WebCore::HTMLMediaElement::configureMediaControls): Create controls if a video element
isn't allowed to play inline, or if it is in fullscreen.
LayoutTests:
* media/video-fullscreeen-only-controls-expected.txt: Update.
* media/video-fullscreeen-only-controls.html: Ditto.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179612
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 18:08:38 +0000 (18:08 +0000)]
Interactive chart component provides two duplicate API for highlighting points
https://bugs.webkit.org/show_bug.cgi?id=141234
Reviewed by Chris Dumez.
Prior to this patch, the interactive chart component supported highlightedItems for finding commits
on the main charts page and markedPoints to show the two end points in the analysis task page.
This patch merges markedPoints into highlightedItems.
* public/v2/app.js:
(App.AnalysisTaskController._fetchedRuns): Use highlightedItems.
* public/v2/chart-pane.css:
* public/v2/index.html: Ditto.
* public/v2/interactive-chart.js:
(App.InteractiveChartComponent._constructGraphIfPossible): Make this._highlights an array instead of
array of arrays. Also call _highlightedItemsChanged at the end to fix the bug that we never highlight
items if highlightedItems was set before the initial layout.
(App.InteractiveChartComponent._relayoutDataAndAxes):
(App.InteractiveChartComponent._updateHighlightPositions): Now that highlights are circles instead of
vertical lines, just set cx and cy as done for other "dots".
(App.InteractiveChartComponent._highlightedItemsChanged): Exit early only if _clippedContainer wasn't
already set; i.e. _constructGraphIfPossible hasn't been called. Also updated the logic to accommodate
the fact this._highlights is an array of elements instead of an array of arrays of elements. Finally,
set the radius of highlight circles here.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179611
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 18:07:06 +0000 (18:07 +0000)]
[webkitpy] Add platform specific Skipped file mechanism for performance tests
https://bugs.webkit.org/show_bug.cgi?id=141152
Reviewed by Csaba Osztrogonác.
Support a test-expectation-like syntax in performance tests' skipped files.
e.g. [Mac] Parsed/BadTest.html will skip Parsed/BadTest.html on Mac ports.
* Scripts/webkitpy/port/base.py:
(Port.skipped_perf_tests): Implemented the syntax support by a regular expression.
* Scripts/webkitpy/port/base_unittest.py:
(PortTest.test_skipped_perf_tests): Test the new syntax.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179610
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mark.lam@apple.com [Wed, 4 Feb 2015 18:00:05 +0000 (18:00 +0000)]
Remove concept of makeUsableFromMultipleThreads().
<https://webkit.org/b/141221>
Reviewed by Mark Hahnenberg.
Source/JavaScriptCore:
Currently, we rely on VM::makeUsableFromMultipleThreads() being called before we
start acquiring the JSLock and entering the VM from different threads.
Acquisition of the JSLock will register the acquiring thread with the VM's thread
registry if not already registered. However, it will only do this if the VM's
thread specific key has been initialized by makeUsableFromMultipleThreads().
This is fragile, and also does not read intuitively because one would expect to
acquire the JSLock before calling any methods on the VM. This is exactly what
JSGlobalContextCreateInGroup() did (i.e. acquire the lock before calling
makeUsableFromMultipleThreads()), but is wrong. The result is that the invoking
thread will not have been registered with the VM during that first entry into
the VM.
The fix is to make it so that we initialize the VM's thread specific key on
construction of the VM's MachineThreads registry instead of relying on
makeUsableFromMultipleThreads() being called. With this, we can eliminate
makeUsableFromMultipleThreads() altogether.
Performance results are neutral in aggregate.
* API/JSContextRef.cpp:
(JSGlobalContextCreateInGroup):
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::MachineThreads):
(JSC::MachineThreads::~MachineThreads):
(JSC::MachineThreads::addCurrentThread):
(JSC::MachineThreads::removeThread):
(JSC::MachineThreads::gatherConservativeRoots):
(JSC::MachineThreads::makeUsableFromMultipleThreads): Deleted.
* heap/MachineStackMarker.h:
* runtime/VM.cpp:
(JSC::VM::sharedInstance):
* runtime/VM.h:
(JSC::VM::makeUsableFromMultipleThreads): Deleted.
Source/WebCore:
No new tests.
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::commonVM):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179609
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ap@apple.com [Wed, 4 Feb 2015 18:00:00 +0000 (18:00 +0000)]
When tests fail on leaks bot so much that there are no leaks detected, dashboard erroneously shows green
https://bugs.webkit.org/show_bug.cgi?id=141236
Reviewed by Sam Weinig.
* BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotLeaksQueueView.js:
(BuildbotLeaksQueueView.prototype.update.appendLeaksQueueStatus):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179608
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ap@apple.com [Wed, 4 Feb 2015 17:59:01 +0000 (17:59 +0000)]
inspector/css/selector-dynamic-specificity.html is very slow on Yosemite
https://bugs.webkit.org/show_bug.cgi?id=141252
* platform/mac-wk2/TestExpectations: Added an expectation.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179607
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
youenn.fablet@crf.canon.fr [Wed, 4 Feb 2015 17:49:18 +0000 (17:49 +0000)]
Unreviewew. Marked web-platform-tests as Skip until wpt server can be abruptly shutdown whenever needed.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179606
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Wed, 4 Feb 2015 17:49:05 +0000 (17:49 +0000)]
Build with seccomp filters broken since r179409
https://bugs.webkit.org/show_bug.cgi?id=141206
Patch by Michael Catanzaro <mcatanzaro@igalia.com> on 2015-02-04
Reviewed by Darin Adler.
Fix build by renaming SeccompBrokerClient::shared to SeccompBrokerClient::singleton.
* Shared/linux/SeccompFilters/SeccompBroker.cpp:
(WebKit::SeccompBrokerClient::singleton):
(WebKit::SeccompBroker::initialize):
(WebKit::SeccompBrokerClient::shared):
(WebKit::SeccompBroker::runLoop):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179605
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
simon.fraser@apple.com [Wed, 4 Feb 2015 17:13:59 +0000 (17:13 +0000)]
[iOS WK2] Assert in ScrollingTreeOverflowScrollingNodeIOS::updateAfterChildren() on tab switching
https://bugs.webkit.org/show_bug.cgi?id=141223
rdar://problem/
18458993
Reviewed by Tim Horton.
Source/WebCore:
It's possible to submit a RemoteLayerTree transaction that contains data
about a created layer, but doesn't have any properties for that layer. This
happens when the newly created layer isn't reached during the traversal that
gathers layer properties (i.e. it's not rooted). However, whether we create
a scrolling layer or not requires having properties; they are missing, so we
create a normal layer, but then the scrolling tree commit asserts that we
should have a scrolling layer.
Fix by making scrolling layers have a corresponding layer type, which is
stored in layer creation properties. This required exposing layer types
up through GraphicsLayer, but that allows for some nice cleanup:
1. No need to have the hokey shouldUseTiledBacking() GraphicsLayerClient hack
for creating the page tiled layer.
2. The notion of "custom behaviors" can be removed from GraphicsLayer entirely.
Not testable because it requires tab switching.
* WebCore.exp.in:
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::GraphicsLayer):
* platform/graphics/GraphicsLayer.h:
(WebCore::GraphicsLayer::initialize):
(WebCore::GraphicsLayer::setCustomBehavior): Deleted.
(WebCore::GraphicsLayer::customBehavior): Deleted.
* platform/graphics/GraphicsLayerClient.h:
(WebCore::GraphicsLayerClient::shouldUseTiledBacking): Deleted.
* platform/graphics/GraphicsLayerFactory.h:
* platform/graphics/ca/GraphicsLayerCA.cpp:
(WebCore::GraphicsLayer::create):
(WebCore::GraphicsLayerCA::GraphicsLayerCA):
(WebCore::GraphicsLayerCA::initialize):
(WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
(WebCore::GraphicsLayerCA::ensureStructuralLayer):
(WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
(WebCore::GraphicsLayerCA::updateCustomBehavior): Deleted.
(WebCore::GraphicsLayerCA::setCustomBehavior): Deleted.
* platform/graphics/ca/GraphicsLayerCA.h:
(WebCore::GraphicsLayerCA::moveAnimations):
(WebCore::GraphicsLayerCA::copyAnimations):
* platform/graphics/ca/PlatformCALayer.h:
* platform/graphics/ca/mac/PlatformCALayerMac.h:
* platform/graphics/ca/mac/PlatformCALayerMac.mm:
(PlatformCALayerMac::PlatformCALayerMac):
(PlatformCALayerMac::commonInit):
(PlatformCALayerMac::updateCustomBehavior): Deleted.
* rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::createGraphicsLayer):
(WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
(WebCore::RenderLayerBacking::updateScrollingLayers):
(WebCore::RenderLayerBacking::shouldUseTiledBacking): Deleted.
* rendering/RenderLayerBacking.h:
Source/WebKit2:
It's possible to submit a RemoteLayerTree transaction that contains data
about a created layer, but doesn't have any properties for that layer. This
happens when the newly created layer isn't reached during the traversal that
gathers layer properties (i.e. it's not rooted). However, whether we create
a scrolling layer or not requires having properties; they are missing, so we
create a normal layer, but then the scrolling tree commit asserts that we
should have a scrolling layer.
Fix by making scrolling layers have a corresponding layer type, which is
stored in layer creation properties. This required exposing layer types
up through GraphicsLayer, but that allows for some nice cleanup:
1. No need to have the hokey shouldUseTiledBacking() GraphicsLayerClient hack
for creating the page tiled layer.
2. The notion of "custom behaviors" can be removed from GraphicsLayer entirely.
* Shared/mac/RemoteLayerBackingStore.mm:
(WebKit::RemoteLayerBackingStore::drawInContext):
* Shared/mac/RemoteLayerTreeTransaction.h:
* Shared/mac/RemoteLayerTreeTransaction.mm:
(WebKit::RemoteLayerTreeTransaction::LayerProperties::LayerProperties):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::encode):
(WebKit::RemoteLayerTreeTransaction::LayerProperties::decode):
(WebKit::dumpChangedLayers):
(WebKit::RemoteLayerTreeTransaction::description):
* UIProcess/ios/RemoteLayerTreeHostIOS.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
* UIProcess/mac/RemoteLayerTreeHost.mm:
(WebKit::RemoteLayerTreeHost::createLayer):
* WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
* WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
(WebKit::PlatformCALayerRemote::customBehavior): Deleted.
(WebKit::PlatformCALayerRemote::updateCustomBehavior): Deleted.
* WebProcess/WebPage/mac/PlatformCALayerRemote.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
* WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
(WebKit::RemoteLayerTreeContext::createGraphicsLayer):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179604
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
gyuyoung.kim@samsung.com [Wed, 4 Feb 2015 17:03:58 +0000 (17:03 +0000)]
[EFL][WK2] Manage failing API tests
https://bugs.webkit.org/show_bug.cgi?id=141250
Reviewed by Csaba Osztrogonác.
* PlatformEfl.cmake: Skip to test test_ewk2_storage_manager.
* UIProcess/API/efl/tests/test_ewk2_view.cpp: Disable 2 unit test functions.
(TEST_F):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179603
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
dino@apple.com [Wed, 4 Feb 2015 16:36:00 +0000 (16:36 +0000)]
[Media] Fullscreen button should always come last in inline controls (141245)
https://bugs.webkit.org/show_bug.cgi?id=141245
<rdar://problem/
19714622>
Reviewed by Eric Carlson.
Make sure the optimizedFullscreen button is inserted before the
normal fullscreen button.
* Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.configureInlineControls):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179602
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
dino@apple.com [Wed, 4 Feb 2015 16:34:27 +0000 (16:34 +0000)]
REGRESSION: AirPlay button not visible but present in inline toolbar
https://bugs.webkit.org/show_bug.cgi?id=141244
<rdar://problem/
19328322>
Reviewed by Eric Carlson.
Replace the use of mask-image with a background-image (which matches
what the other buttons are doing).
* Modules/mediacontrols/mediaControlsiOS.css:
(::-webkit-media-controls):
(video::-webkit-media-controls-wireless-playback-picker-button):
(audio::-webkit-media-controls-wireless-playback-picker-button):
(video::-webkit-media-controls-wireless-playback-picker-button.active):
(audio::-webkit-media-controls-wireless-playback-picker-button.active):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179601
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
youenn.fablet@crf.canon.fr [Wed, 4 Feb 2015 08:39:25 +0000 (08:39 +0000)]
Unreviewed. Marking webb-platform-tests as failed until wpt server can be proper
ly relaunched.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179600
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Wed, 4 Feb 2015 08:39:20 +0000 (08:39 +0000)]
Add removeFirst(value) / removeAll(value) methods to WTF::Vector
https://bugs.webkit.org/show_bug.cgi?id=141192
Reviewed by Benjamin Poulain.
Source/JavaScriptCore:
Use new Vector::removeFirst(value) / removeAll(value) API to simplify the
code a bit.
* inspector/InspectorValues.cpp:
(Inspector::InspectorObjectBase::remove):
Source/WebCore:
Use new Vector::removeFirst(value) / removeAll(value) API to simplify the
code a bit.
* css/StyleSheetContents.cpp:
(WebCore::StyleSheetContents::unregisterClient):
* html/HTMLFormElement.cpp:
(WebCore::HTMLFormElement::removeFormElement):
(WebCore::HTMLFormElement::removeImgElement):
(WebCore::removeFromVector): Deleted.
* page/Chrome.cpp:
(WebCore::Chrome::unregisterPopupOpeningObserver):
* page/PageOverlayController.cpp:
(WebCore::PageOverlayController::uninstallPageOverlay):
* page/SecurityPolicy.cpp:
(WebCore::SecurityPolicy::removeOriginAccessWhitelistEntry):
* platform/graphics/GraphicsLayer.cpp:
(WebCore::GraphicsLayer::removeFromParent):
* platform/graphics/texmap/TextureMapperAnimation.cpp:
(WebCore::TextureMapperAnimations::remove):
* rendering/RenderSearchField.cpp:
(WebCore::RenderSearchField::addSearchResult):
* rendering/RenderTable.cpp:
(WebCore::RenderTable::removeCaption):
* rendering/svg/RenderSVGText.cpp:
(WebCore::RenderSVGText::subtreeChildWillBeRemoved):
* svg/SVGDocumentExtensions.cpp:
(WebCore::SVGDocumentExtensions::removeAllElementReferencesForTarget):
* svg/animation/SMILTimeContainer.cpp:
(WebCore::SMILTimeContainer::unschedule):
Source/WebKit2:
Use new Vector::removeFirst(value) / removeAll(value) API to simplify the
code a bit.
* UIProcess/Network/CustomProtocols/soup/WebSoupCustomProtocolRequestManager.cpp:
(WebKit::WebSoupCustomProtocolRequestManager::unregisterSchemeForCustomProtocol):
* UIProcess/PageLoadState.cpp:
(WebKit::PageLoadState::removeObserver):
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::~WebProcessPool):
(WebKit::WebProcessPool::disconnectProcess):
* WebProcess/InjectedBundle/API/efl/ewk_extension.cpp:
(EwkExtension::remove):
Source/WTF:
Add removeFirst(value) / removeAll(value) convenience methods to
WTF::Vector to reduce complexity a bit at call sites.
I am planning to add overloads for these taking a lambda function for
matching in a follow-up patch as well. I have seen quite a few
Vector::remove(index) call sites that would benefit from it.
* wtf/Vector.h:
(WTF::OverflowHandler>::removeFirst):
(WTF::OverflowHandler>::removeAll):
Tools:
Add API tests for Vector::removeFirst(value) and
Vector::removeAll(value).
* TestWebKitAPI/Tests/WTF/Vector.cpp:
(TestWebKitAPI::TEST):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179599
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
bfulgham@apple.com [Wed, 4 Feb 2015 07:37:18 +0000 (07:37 +0000)]
[Win] More test results gardening.
* platform/win/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179598
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mjs@apple.com [Wed, 4 Feb 2015 07:01:23 +0000 (07:01 +0000)]
Crash when printing snapshotted plugins
https://bugs.webkit.org/show_bug.cgi?id=141212
Reviewed by Simon Fraser.
Source/WebCore:
Test: plugins/snapshotting/print-snapshotted-plugin.html
* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::childShouldCreateRenderer): New
method. If the current renderer is a snapshotted plugin, only
allow children to create renderers if they are part of the
snapshot shadow dom. Otherwise RenderEmbeddedObject invariants
will be violated. This DOM class can have many other renderers, but they
can just follow their own rules.
(WebCore::HTMLPlugInImageElement::partOfSnapshotOverlay): Make this
const-correct, and don't create UA shadow DOM as a side effect if it doesn't
already exist.
* html/HTMLPlugInImageElement.h:
LayoutTests:
This test would crash without the fix due to a bad cast to RenderBox. <object>
is not prepared to have rendered inline children when rendering a plugin.
* plugins/snapshotting/print-snapshotted-plugin-expected.txt: Added.
* plugins/snapshotting/print-snapshotted-plugin.html: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179597
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Wed, 4 Feb 2015 06:51:46 +0000 (06:51 +0000)]
Unreviewed attempt to fix GTK/EFL build after r179588.
Add new files to CMakeLists.txt.
* CMakeLists.txt:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179596
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
bfulgham@apple.com [Wed, 4 Feb 2015 06:42:59 +0000 (06:42 +0000)]
[Win] Unreviewed. Activate more tests.
* platform/win/TestExpectations: Unskip the DOM4 constructor and cursor visibility
tests (since they work).
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179595
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
bfulgham@apple.com [Wed, 4 Feb 2015 06:40:54 +0000 (06:40 +0000)]
[Win] Unreviewed build fix. Turn on feature flags for items
we currently ship/test on Mac.
* win/tools/vsprops/FeatureDefines.props: Activate ENABLE_DOM4_EVENTS_CONSTRUCTOR
and CURSOR_VISIBILITY.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179594
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Wed, 4 Feb 2015 06:25:03 +0000 (06:25 +0000)]
Regression(r179584): Assertion hit in toResourceLoadPriority() on Yosemite
https://bugs.webkit.org/show_bug.cgi?id=141230
Reviewed by Alexey Proskuryakov.
Handle -1 priority value again in toResourceLoadPriority() as it seems to
be returned by CFNetwork on some configurations.
No new tests, already covered by existing tests.
* platform/network/cf/ResourceRequestCFNet.h:
(WebCore::toResourceLoadPriority):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179593
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
shiva.jm@samsung.com [Wed, 4 Feb 2015 06:16:37 +0000 (06:16 +0000)]
Fix build warning in WebKit2/Platform/IPC module.
https://bugs.webkit.org/show_bug.cgi?id=141229
Reviewed by Chris Dumez.
Fix build warning by using UNUSED_PARAM macro.
* Platform/IPC/Connection.cpp:
(IPC::Connection::sendMessage):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179592
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 05:40:34 +0000 (05:40 +0000)]
Don’t use repository names as id’s.
https://bugs.webkit.org/show_bug.cgi?id=141226
Reviewed by Chris Dumez.
Not using repository names as their id's reduces the need to fetch the entire repositories table.
Since names of repositories are available in manifest.json, we can resolve their names in the front end.
* Websites/perf.webkit.org/public/api/runs.php:
(parse_revisions_array): No longer uses $repository_id_to_name.
(main): No longer populates $repository_id_to_name.
* Websites/perf.webkit.org/public/api/triggerables.php:
(main): Don't resolve repository names.
* Websites/perf.webkit.org/public/include/manifest.php:
(ManifestGenerator::repositories): Use repositories ids as keys in the result and include their names.
(ManifestGenerator::bug_trackers): Don't resolve repository names.
* Websites/perf.webkit.org/public/js/helper-classes.js:
(TestBuild): Renamed repositoryName to repositoryId.
(TestBuild.revision): Ditto.
(TestBuild.formattedRevisions): Ditto. Continue to use the repository name in the formatted result
since this is the text shown to human.
* Websites/perf.webkit.org/public/v2/app.js:
(App.pane.searchCommit): Renamed repositoryName to repositoryId.
(App.PaneController._updateDetails): Ditto.
(App.AnalysisTaskController.updateRoots): Ditto.
* Websites/perf.webkit.org/public/v2/data.js:
(Measurement): Ditto.
(Measurement.prototype.commitTimeForRepository): Ditto.
(Measurement.prototype.formattedRevisions): Ditto.
* Websites/perf.webkit.org/public/v2/index.html: Use the repository name and the repository id as
select element's label and value respectively.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179591
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
sun.shin@webkit.org [Wed, 4 Feb 2015 05:06:15 +0000 (05:06 +0000)]
Add LG Electronics to team.html
https://bugs.webkit.org/show_bug.cgi?id=141227
Reviewed by Andreas Kling.
* team.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179590
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Wed, 4 Feb 2015 04:06:20 +0000 (04:06 +0000)]
Add WKPageNavigationClient as C SPI around API::NavigationClient, and adopt in WKTR
https://bugs.webkit.org/show_bug.cgi?id=141217
* UIProcess/API/C/WKPageRenderingProgressEventsInternal.h:
Include, not import.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179589
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Wed, 4 Feb 2015 04:02:50 +0000 (04:02 +0000)]
Add WKPageNavigationClient as C SPI around API::NavigationClient, and adopt in WKTR
https://bugs.webkit.org/show_bug.cgi?id=141217
Reviewed by Sam Weinig.
* Shared/API/c/WKBase.h:
* UIProcess/API/C/WKAPICast.h:
* UIProcess/API/C/WKFrameInfoRef.cpp: Added.
(WKFrameInfoGetTypeID):
* UIProcess/API/C/WKFrameInfoRef.h: Added.
* UIProcess/API/C/WKNavigationActionRef.cpp: Added.
(WKNavigationActionGetTypeID):
* UIProcess/API/C/WKNavigationActionRef.h: Added.
* UIProcess/API/C/WKNavigationRef.cpp: Added.
(WKNavigationGetTypeID):
* UIProcess/API/C/WKNavigationRef.h: Added.
* UIProcess/API/C/WKNavigationResponseRef.cpp: Added.
(WKNavigationResponseGetTypeID):
(WKNavigationResponseCanShowMIMEType):
* UIProcess/API/C/WKNavigationResponseRef.h: Added.
Add tiny C wrappers around API::{FrameInfo, NavigationAction, Navigation, NavigationResponse}.
* UIProcess/API/APINavigationClient.h:
(API::NavigationClient::decidePolicyForPluginLoad):
Add a default implementation of decidePolicyForPluginLoad.
* UIProcess/API/C/WKPage.cpp:
(WKPageSetPageNavigationClient):
* UIProcess/API/C/WKPage.h:
Add WKPageSetPageNavigationClient, which connects API::NavigationClient to
the new WKPageNavigationClient C SPI.
* UIProcess/API/C/WKPageNavigationClient.h: Added.
Add WKPageNavigationClient, which one can use in place of WKPageLoaderClient
and WKPagePolicyClient and which has the same semantics as the Modern ObjC API
(including things like API::Navigation as WKNavigationRef, etc.)
* UIProcess/API/C/WKPageLoaderClient.h:
* UIProcess/API/C/WKPageRenderingProgressEvents.h: Added.
* UIProcess/API/C/WKPageRenderingProgressEventsInternal.h: Added.
(pageRenderingProgressEvents):
* UIProcess/API/C/WKPluginLoadPolicy.h: Added.
Pull some enums out into their own files (WKPageRenderingProgressEvents is
duplicated from the Modern ObjC API's _WKRenderingProgressEvents, WKPluginLoadPolicy
is pulled out of WKPageLoaderClient).
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::findPlugin):
Add an equivalent of pluginLoadPolicy to the NavigationClient.
* WebKit2.xcodeproj/project.pbxproj:
* WebKitTestRunner/TestController.cpp:
(WTR::copyWebCryptoMasterKey):
(WTR::TestController::createOtherPage):
(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::ensureViewSupportsOptions):
(WTR::TestController::didCommitNavigation):
(WTR::TestController::didFinishNavigation):
(WTR::TestController::canAuthenticateAgainstProtectionSpace):
(WTR::TestController::didReceiveAuthenticationChallenge):
(WTR::TestController::decidePolicyForPluginLoad):
(WTR::TestController::decidePolicyForNavigationAction):
(WTR::TestController::decidePolicyForNavigationResponse):
(WTR::TestController::didCommitLoadForFrame): Deleted.
(WTR::TestController::didFinishLoadForFrame): Deleted.
* WebKitTestRunner/TestController.h:
Adopt WKPageNavigationClient and adjust to its semantics (navigations are main-frame-only, etc.)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179588
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 02:00:38 +0000 (02:00 +0000)]
Commit the forgotten expected result supposed to be added in r179569.
* editing/inserting/smart-quote-with-all-configurations-expected.txt: Added.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179587
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
timothy_horton@apple.com [Wed, 4 Feb 2015 01:58:24 +0000 (01:58 +0000)]
Every PageOverlayClientImpl leaks
https://bugs.webkit.org/show_bug.cgi?id=141224
<rdar://problem/
19652939>
Reviewed by Simon Fraser.
* WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(WKBundlePageOverlayCreate):
* WebProcess/WebPage/WebPageOverlay.cpp:
(WebKit::WebPageOverlay::create):
(WebKit::WebPageOverlay::WebPageOverlay):
(WebKit::WebPageOverlay::pageOverlayDestroyed):
(WebKit::WebPageOverlay::willMoveToPage):
(WebKit::WebPageOverlay::didMoveToPage):
(WebKit::WebPageOverlay::drawRect):
(WebKit::WebPageOverlay::mouseEvent):
(WebKit::WebPageOverlay::didScrollFrame):
(WebKit::WebPageOverlay::actionContextForResultAtPoint):
(WebKit::WebPageOverlay::dataDetectorsDidPresentUI):
(WebKit::WebPageOverlay::dataDetectorsDidChangeUI):
(WebKit::WebPageOverlay::dataDetectorsDidHideUI):
(WebKit::WebPageOverlay::copyAccessibilityAttributeStringValueForPoint):
(WebKit::WebPageOverlay::copyAccessibilityAttributeBoolValueForPoint):
(WebKit::WebPageOverlay::copyAccessibilityAttributeNames):
* WebProcess/WebPage/WebPageOverlay.h:
(WebKit::WebPageOverlay::client):
Keep the PageOverlayClientImpl as a unique_ptr instead of a leaked reference,
ensuring that it's cleaned up when the WebPageOverlay is torn down.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179586
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 01:26:13 +0000 (01:26 +0000)]
Unreviewed build fix. Declare $repository_id_to_name in the global scope.
* public/api/runs.php:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179585
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Wed, 4 Feb 2015 01:23:58 +0000 (01:23 +0000)]
Drop ResourceLoadPriorityUnresolved resource load priority and use Optional<> instead
https://bugs.webkit.org/show_bug.cgi?id=141186
Reviewed by Antti Koivisto.
Source/WebCore:
Drop ResourceLoadPriorityUnresolved resource load priority value and use
Optional<ResourceLoadPriority> when needed instead. If the Optional
doesn't have a value, then it means it is unresolved. Having
ResourceLoadPriorityUnresolved in ResourceLoadPriority was confusing
because this value is only valid in CachedResourceRequest, it is not
a valid value in CachedResource or in ResourceRequest. After this
refactoring, it now becomes more obvious.
Source/WebKit2:
Update code now that ResourceLoadPriorityUnresolved is not longer a
ResourceLoadPriority enum value.
* NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::retrieve):
* WebProcess/Network/WebResourceLoadScheduler.cpp:
(WebKit::WebResourceLoadScheduler::scheduleLoad):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179584
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
rniwa@webkit.org [Wed, 4 Feb 2015 01:17:44 +0000 (01:17 +0000)]
/api/runs.php should have main function
https://bugs.webkit.org/show_bug.cgi?id=141220
Reviewed by Benjamin Poulain.
Wrapped the code inside main function for clarity.
* public/api/runs.php:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179583
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
sun.shin@webkit.org [Wed, 4 Feb 2015 00:57:55 +0000 (00:57 +0000)]
Unreviewed. Add myself as a committer.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179582
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
cdumez@apple.com [Wed, 4 Feb 2015 00:51:08 +0000 (00:51 +0000)]
REGRESSION(176609): Very high memory usage in Canvas/reuse.html performance test
https://bugs.webkit.org/show_bug.cgi?id=139812
Reviewed by Geoffrey Garen.
Update DOMTimerFireState.elementsChangedOutsideViewport to keep only
weak pointers to the Elements, instead of ref'ing them, so as to not
extend their life unnecessarily (by preventing garbage-collection).
The same approach was already adopted in r176496 for
DOMTimer.m_elementsCausingThrottling to address the same issue.
No new tests, already covered by Canvas/reuse.html performance test.
* page/DOMTimer.cpp:
(WebCore::DOMTimerFireState::setScriptMadeNonUserObservableChangesToElement):
(WebCore::DOMTimerFireState::elementsChangedOutsideViewport):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179581
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
enrica@apple.com [Wed, 4 Feb 2015 00:23:53 +0000 (00:23 +0000)]
[iOS] Add support for deleteFromInputWithFlags.
https://bugs.webkit.org/show_bug.cgi?id=141216
rdar://problem/
19130081
Reviewed by Benjamin Poulain.
Adopts the new method as soon as it is available.
The patch also removes some obsolete code used for staging.
Source/WebKit/ios:
* DefaultDelegates/WebDefaultUIKitDelegate.m:
(-[WebDefaultUIKitDelegate addInputString:withFlags:]):
(-[WebDefaultUIKitDelegate deleteFromInput]):
(-[WebDefaultUIKitDelegate deleteFromInputwithFlags:]):
(-[WebDefaultUIKitDelegate addInputString:fromVariantKey:]): Deleted.
* WebView/WebUIKitDelegate.h:
Source/WebKit/mac:
* WebView/WebHTMLView.mm:
(-[WebHTMLView _handleEditingKeyEvent:]):
Source/WebKit2:
* Platform/spi/ios/UIKitSPI.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _interpretKeyEvent:isCharEvent:]):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179580
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
diorahman@rockybars.com [Wed, 4 Feb 2015 00:18:57 +0000 (00:18 +0000)]
Unreviewed. Add myself as a committer.
* Scripts/webkitpy/common/config/contributors.json:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179579
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Wed, 4 Feb 2015 00:18:40 +0000 (00:18 +0000)]
[iOS] Selection Callout should not immediately disappear on pages with frequent layouts
https://bugs.webkit.org/show_bug.cgi?id=141210
Patch by Joseph Pecoraro <pecoraro@apple.com> on 2015-02-03
Reviewed by Enrica Casucci.
In iOS WebKit2 in order to keep caret refreshes in sync with WebCore layouts
the selection assistant is told to update whenever WebKit's layer tree
commits. Unfortunately, for pages with JavaScript animation that are
frequently doing a layout / layer tree update, this would trigger very
frequent selection updates that would keep the caret from blinking and
dismiss any selection callouts.
This change tracks the last selection drawing information so that we can
avoid informing the assistant of a selection updates unless it has changed
visually or needs to redraw (zoom).
* Shared/EditorState.cpp:
Remove include already in header.
* UIProcess/ios/WKContentViewInteraction.h:
* UIProcess/ios/WKContentViewInteraction.mm:
(WebKit::WKSelectionDrawingInfo::WKSelectionDrawingInfo):
(WebKit::operator==):
(WebKit::operator!=):
(-[WKContentView observeValueForKeyPath:ofObject:change:context:]):
When zooming, force the selection update, even though the drawing
information hasn't changed, the views will need to be updated.
(-[WKContentView _updateChangedSelection]):
(-[WKContentView _updateChangedSelection:]):
Monitor EditorState for changes in selection drawing and avoid
informing the selection assistant unless necessary.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179578
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
jer.noble@apple.com [Wed, 4 Feb 2015 00:07:49 +0000 (00:07 +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 Alexey Proskuryakov.
Fixes http/tests/media/media-source/mediasource-config-change-mp4-v-framerate.html.
Only apply the timestamp offset to the actual sample after step 1.6, where we may loop back to
the top, to avoid double-offsetting the same sample.
* Modules/mediasource/SourceBuffer.cpp:
(WebCore::SourceBuffer::sourceBufferPrivateDidReceiveSample):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179577
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
mark.lam@apple.com [Wed, 4 Feb 2015 00:00:00 +0000 (00:00 +0000)]
Workaround a thread library bug where thread destructors may not get called.
<https://webkit.org/b/141209>
Reviewed by Michael Saboff.
There's a bug where thread destructors may not get called. As far as
we know, this only manifests on darwin ports. We will work around this
by checking at GC time if the platform thread is still valid. If not,
we'll purge it from the VM's registeredThreads list before proceeding
with thread scanning activity.
Note: it is important that we do this invalid thread detection during
suspension, because the validity (and liveness) of the other thread is
only guaranteed while it is suspended.
* API/tests/testapi.mm:
(threadMain):
- Added a test to enter the VM from another thread before we GC on
the main thread.
* heap/MachineStackMarker.cpp:
(JSC::MachineThreads::removeThreadWithLockAlreadyAcquired):
(JSC::MachineThreads::removeCurrentThread):
- refactored removeThreadWithLockAlreadyAcquired() out from
removeCurrentThread() so that we can also call it for purging invalid
threads.
(JSC::suspendThread):
- Added a return status to tell if the suspension succeeded or not.
(JSC::MachineThreads::tryCopyOtherThreadStacks):
- Check if the suspension failed, and purge the thread if we can't
suspend it. Failure to suspend implies that the thread has
terminated without calling its destructor.
* heap/MachineStackMarker.h:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179576
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Tue, 3 Feb 2015 23:45:31 +0000 (23:45 +0000)]
Restore interface before exiting optimized fullscreen mode.
https://bugs.webkit.org/show_bug.cgi?id=141167
Patch by Jeremy Jones <jeremyj@apple.com> on 2015-02-03
Reviewed by Simon Fraser.
This change allows the user interface to be restored before exiting optimized fullscreen mode.
* platform/ios/WebVideoFullscreenInterfaceAVKit.h: Add declaration.
* platform/ios/WebVideoFullscreenInterfaceAVKit.mm:
(-[WebAVPlayerController playerViewController:restoreUserInterfaceForOptimizedFullscreenStopWithCompletionHandler:]): Added.
(WebVideoFullscreenInterfaceAVKit::fullscreenMayReturnToInline): Added.
* platform/spi/ios/AVKitSPI.h: Add new SPI.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179575
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
commit-queue@webkit.org [Tue, 3 Feb 2015 23:41:47 +0000 (23:41 +0000)]
Prevent flicker when exiting fullscreen by synchronizing transactions.
https://bugs.webkit.org/show_bug.cgi?id=140897
Patch by Jeremy Jones <jeremyj@apple.com> on 2015-02-03
Reviewed by Tim Horton.
Source/WebCore:
Synchronize across CAContexts when moving the video layer between layer hierarchies.
Normally transactions involving multiple CAContexts are not synchronized.
* platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
(WebCore::MediaPlayerPrivateAVFoundationObjC::setVideoFullscreenLayer):
* platform/spi/cocoa/QuartzCoreSPI.h: add additional CAContext SPI declarations.
Source/WebKit2:
Flush transactions before removing layerHost. This allows existing transactions to be completed before the hosting layer disappears.
* UIProcess/ios/WebVideoFullscreenManagerProxy.mm:
(WebKit::WebVideoFullscreenManagerProxy::didCleanupFullscreen):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179574
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
burg@cs.washington.edu [Tue, 3 Feb 2015 23:21:47 +0000 (23:21 +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.
To support 32-bit Mac builds where WKWebView is not defined, share the stub
platformFoo() implementations with PLATFORM(IOS). The stubs are now located
in the platform-independent WebInspectorProxy.cpp.
* 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):
(WebKit::WebInspectorProxy::attach):
(WebKit::WebInspectorProxy::detach):
(WebKit::WebInspectorProxy::setAttachedWindowHeight):
(WebKit::WebInspectorProxy::setAttachedWindowWidth):
(WebKit::WebInspectorProxy::createInspectorPage):
(WebKit::WebInspectorProxy::shouldOpenAttached):
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::platformOpen):
(WebKit::WebInspectorProxy::platformDidClose):
(WebKit::WebInspectorProxy::platformInvalidate):
(WebKit::WebInspectorProxy::platformBringToFront):
(WebKit::WebInspectorProxy::platformHide):
(WebKit::WebInspectorProxy::platformIsFront):
(WebKit::WebInspectorProxy::platformInspectedURLChanged):
(WebKit::WebInspectorProxy::platformSave):
(WebKit::WebInspectorProxy::platformAppend):
(WebKit::WebInspectorProxy::platformInspectedWindowHeight):
(WebKit::WebInspectorProxy::platformInspectedWindowWidth):
(WebKit::WebInspectorProxy::platformAttach):
(WebKit::WebInspectorProxy::platformDetach):
(WebKit::WebInspectorProxy::platformSetAttachedWindowHeight):
(WebKit::WebInspectorProxy::platformSetToolbarHeight):
(WebKit::WebInspectorProxy::inspectorPageURL):
(WebKit::WebInspectorProxy::inspectorTestPageURL):
(WebKit::WebInspectorProxy::inspectorBaseURL):
(WebKit::WebInspectorProxy::platformSetAttachedWindowWidth):
(WebKit::WebInspectorProxy::platformAttachAvailabilityChanged):
* UIProcess/WebInspectorProxy.h:
* UIProcess/ios/WebInspectorProxyIOS.mm: Removed.
* 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.
* WebKit2.xcodeproj/project.pbxproj:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179573
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
ap@apple.com [Tue, 3 Feb 2015 23:02:40 +0000 (23:02 +0000)]
http/tests/xmlhttprequest/event-listener-gc.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=33342
Reviewed by Zalan Bujtas.
This failure means that the GC timer fires after readystatechange event. As a
speculative fix, start the timer before starting the load, so that it's certain to
finish earlier.
* http/tests/xmlhttprequest/event-listener-gc.html:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179572
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
bfulgham@apple.com [Tue, 3 Feb 2015 21:57:31 +0000 (21:57 +0000)]
[Win] Mark some debug assertion failures to be skipped.
* platform/win/TestExpectations:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@179570
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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