Timeline
Jun 10, 2015:
- 11:55 PM Changeset in webkit [185449] by
-
- 2 edits in trunk/Tools
[EFL] dimmed area for popup does not cover the fullscreen mode.
https://bugs.webkit.org/show_bug.cgi?id=145133
Reviewed by Gyuyoung Kim.
By calling elm_win_resize_object_add(), popup was added as a resize object of elm_win.
as a result, popup can cover the fullscreen area when it enters a fullscreen mode.
- MiniBrowser/efl/main.c:
(on_fullscreen_accept):
(on_fullscreen_deny):
(on_fullscreen_enter):
- 10:48 PM Changeset in webkit [185448] by
-
- 2 edits in trunk/Source/WebKit2
Don't send touch events on link preview.
https://bugs.webkit.org/show_bug.cgi?id=145863
Disable web touch event recognizer on link preview. We do the same when finding nodes in inspector or when long press gesture
is recognized (by _cancelAllTouches).
Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2015-06-10
Reviewed by Beth Dakin.
- UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView willPresentPreviewViewController:forPosition:inSourceView:]): Remove touch event gesture recognizer on preview start.
(-[WKContentView didDismissPreviewViewController:committing:]): Add the gesture recognizer back on dismiss.
- 9:16 PM Changeset in webkit [185447] by
-
- 6 edits in trunk
Unreviewed, rolling out r185442.
https://bugs.webkit.org/show_bug.cgi?id=145871
seems to have broken WTF.StringOperators test (Requested by
alexchristensen on #webkit).
Reverted changeset:
"[Content Extensions] Limit number of rules."
https://bugs.webkit.org/show_bug.cgi?id=145663
http://trac.webkit.org/changeset/185442
- 7:57 PM Changeset in webkit [185446] by
-
- 4 edits in trunk/Source/WebCore
Update presentation mode JS API to using 'picture-in-picture'
https://bugs.webkit.org/show_bug.cgi?id=145826
rdar://problem/2131153
Reviewed by Anders Carlsson.
Update presentation modes to use 'picture-in-picture' in lieu of 'optimized'.
- html/HTMLVideoElement.idl: Update to "picture-in-picture".
- html/HTMLVideoElement.cpp:
(WebCore::presentationModePictureInPicture): Rename static function returning string.
(WebCore::presentationModeOptimized): Deleted.
(WebCore::HTMLVideoElement::webkitSupportsPresentationMode): Use the new static function name.
(WebCore::HTMLVideoElement::webkitSetPresentationMode): Ditto.
(WebCore::HTMLVideoElement::webkitPresentationMode): Ditto.
- Modules/mediacontrols/mediaControlsiOS.js: Update to 'picture-in-picture'.
(ControllerIOS.prototype.configureInlineControls):
(ControllerIOS.prototype.isFullScreen):
(ControllerIOS.prototype.handleOptimizedFullscreenButtonClicked):
(ControllerIOS.prototype.handlePresentationModeChange):
(ControllerIOS.prototype.controlsAlwaysVisible):
- 7:34 PM Changeset in webkit [185445] by
-
- 10 edits in trunk/Source/WebKit2
WKWebsiteDataStore should handle removing plug-in data for individual records
https://bugs.webkit.org/show_bug.cgi?id=145864
Reviewed by Beth Dakin.
- PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::deleteWebsiteDataForHostNames):
- PluginProcess/PluginProcess.h:
- PluginProcess/PluginProcess.messages.in:
- UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::deleteWebsiteDataForHostNames):
- UIProcess/Plugins/PluginProcessManager.h:
- UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::deleteWebsiteDataForHostNames):
(WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
(WebKit::PluginProcessProxy::didFinishLaunching):
(WebKit::PluginProcessProxy::didDeleteWebsiteDataForHostNames):
- UIProcess/Plugins/PluginProcessProxy.h:
- UIProcess/Plugins/PluginProcessProxy.messages.in:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
- 7:01 PM Changeset in webkit [185444] by
-
- 1 edit in trunk/Source/WebCore/ChangeLog
[Mobile Safari, WKWebView] increase DeviceOrientationEvent events emission frequency
https://bugs.webkit.org/show_bug.cgi?id=145814
Patch by Boris Smus <boris@smus.com> on 2015-06-10
Reviewed by Benjamin Poulain.
Increased the sampling rate of DeviceOrientationEvent from 20 Hz to 60
Hz to make good head tracking possible.
- platform/ios/WebCoreMotionManager.h:
- 6:57 PM Changeset in webkit [185443] by
-
- 2 edits in trunk/Source/WebCore
[Mobile Safari, WKWebView] increase DeviceOrientationEvent events emission frequency
https://bugs.webkit.org/attachment.cgi?bugid=145814
Patch by Boris Smus <boris@smus.com> on 2015-06-10
Reviewed by Benjamin Poulain.
Increased the sampling rate of DeviceOrientationEvent from 20 Hz to 60
Hz to make good head tracking possible.
- platform/ios/WebCoreMotionManager.h:
- 5:52 PM Changeset in webkit [185442] by
-
- 6 edits in trunk
Source/WebCore:
[Content Extensions] Limit number of rules.
https://bugs.webkit.org/show_bug.cgi?id=145663
rdar://problem/21242407
Reviewed by Benjamin Poulain.
Added an API test to make sure that parsing fails when there are too many rules.
- contentextensions/ContentExtensionError.cpp:
(WebCore::ContentExtensions::contentExtensionErrorCategory):
- contentextensions/ContentExtensionError.h:
- contentextensions/ContentExtensionParser.cpp:
(WebCore::ContentExtensions::loadEncodedRules):
Fail to parse a content extension with more than 50000 rules.
Tools:
[Content Extensions] Make max NFA size and max rule count user defaults.
https://bugs.webkit.org/show_bug.cgi?id=145663
rdar://problem/21242407
Reviewed by Benjamin Poulain.
- TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
(TestWebKitAPI::TEST_F):
- 5:45 PM Changeset in webkit [185441] by
-
- 2 edits in branches/safari-600.1.4.16-branch/Source/WebKit/mac
Merged r185436. rdar://problem/21309911
- 5:40 PM Changeset in webkit [185440] by
-
- 2 edits in trunk/Source/JavaScriptCore
ASSERTION FAILED: s.length() > 1 on LayoutTests/js/regexp-flags.html
https://bugs.webkit.org/show_bug.cgi?id=145599
Unreviewed, simple follow up patch.
use jsString instead of jsMakeNontrivialString
since the flag string may be trivial (0 or 1 length).
- runtime/RegExpPrototype.cpp:
(JSC::regExpProtoGetterFlags):
- 5:27 PM Changeset in webkit [185439] by
-
- 10 edits in trunk/Source/WebKit2
WKWebsiteDataStore should handle removing plug-in data
https://bugs.webkit.org/show_bug.cgi?id=145862
Reviewed by Sam Weinig.
- PluginProcess/PluginProcess.cpp:
(WebKit::PluginProcess::deleteWebsiteData):
- PluginProcess/PluginProcess.h:
- PluginProcess/PluginProcess.messages.in:
- UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::deleteWebsiteData):
- UIProcess/Plugins/PluginProcessManager.h:
- UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::PluginProcessProxy::~PluginProcessProxy):
(WebKit::PluginProcessProxy::deleteWebsiteData):
(WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
(WebKit::PluginProcessProxy::didFinishLaunching):
(WebKit::PluginProcessProxy::didDeleteWebsiteData):
- UIProcess/Plugins/PluginProcessProxy.h:
- UIProcess/Plugins/PluginProcessProxy.messages.in:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::removeData):
- 4:50 PM Changeset in webkit [185438] by
-
- 4 edits4 adds in trunk
REGRESSION (r184895): Vertical border elements ([-webkit]-border-image set to 'repeat') that used to render perfectly are now rendering incorrectly.
https://bugs.webkit.org/show_bug.cgi?id=145801
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-06-10
Reviewed by Simon Fraser.
Source/WebCore:
When using the tiling to draw the sides of an image-border, the image slice
is repeated only in one direction. For top and bottom sides, the slice is
repeated horizontally and for left and right sides, it's repeated vertically.
The tile might be scaled in the other direction of the tiling if the border
extent and the slice extent are different in this direction.
The bug happens because we were scaling the tile in the tiling direction.
Test: fast/borders/border-image-repeat-stretch.html
- rendering/style/NinePieceImage.cpp:
(WebCore::NinePieceImage::scaleSlicesIfNeeded): Fix the type and the name
of deviceScaleFactor.
(WebCore::NinePieceImage::computeIntrinsicSideTileScale): Fix the scaling
direction of the border image side tiling.
- rendering/style/NinePieceImage.h:
LayoutTests:
- fast/borders/border-image-repeat-stretch-expected.html: Added.
- fast/borders/border-image-repeat-stretch.html: Added.
- fast/borders/resources/border-image-repeat-stretch-expected.svg: Added.
- fast/borders/resources/border-image.svg: Added.
Ensure that the sides of a border-images are drawn correctly in the cases
of 'repeat' and 'stretch'.
- 4:43 PM Changeset in webkit [185437] by
-
- 3 edits1 add in trunk/Source/JavaScriptCore
JavaScript: Drop the “escaped reserved words as identifiers” compatibility measure
https://bugs.webkit.org/show_bug.cgi?id=90678
Reviewed by Darin Adler.
After ES6, escaped reserved words in identifiers are prohibited.
After parsing Identifier, we should performm_buffer16.shrink(0).
- parser/Lexer.cpp:
(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
- tests/mozilla/ecma_3/Unicode/uc-003.js:
(test): Deleted.
- tests/stress/reserved-word-with-escape.js: Added.
(testSyntax):
(testSyntaxError):
- 4:35 PM Changeset in webkit [185436] by
-
- 2 edits in trunk/Source/WebKit/mac
Meta refresh preference is not respected on fast path WebView
initialization
<https://bugs.webkit.org/show_bug.cgi?id=145861>
<rdar://problem/21309911>
Reviewed by Brady Eidson.
- WebView/WebView.mm:
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
Set the WebCore setting from the WebPreferences preference.
- 4:07 PM Changeset in webkit [185435] by
-
- 6 edits4 adds in trunk
ASSERT_WITH_SECURITY_IMPLICATION in WebCore::DocumentOrderedMap::getElementById
https://bugs.webkit.org/show_bug.cgi?id=145857
<rdar://problem/16798440>
Reviewed by Darin Adler.
Source/WebCore:
Make sure Node::insertedInto() gets called on the inserted node and its
descendants after its insertion into the tree but *before*
ContainerNode::childrenChanged() is called on the parent node. This is
needed so that the descendants know they've been inserted into the tree
(and their InDocumentFlag flag gets set) before the parent node does
anything with them in childrenChanged().
In the case of <rdar://problem/16798440>, executing HTMLScriptElement's
childrenChanged() after appending a child to a script element was causing
the script to be executed. The script would call getElementBy() which
would traverse the DOM tree and find a matching Element in the newly
inserted subtree. However, the matching Element's InDocumentFlag flag was
not set yet because the element's insertedInto() method has not been called
yet at this point. This would cause us to hit an assertion as
DocumentOrderedMap::getElementById() is only supposed to return elements
that are in a Document.
This patch is based on Blink r178976 by <esprehn@chromium.org>:
https://src.chromium.org/viewvc/blink?view=rev&revision=178976
Tests: fast/dom/script-getElementById-during-insertion.html
fast/dom/script-remove-child-id-map.html
- dom/ContainerNode.cpp:
(WebCore::ContainerNode::notifyChildInserted):
(WebCore::ContainerNode::notifyChildRemoved):
(WebCore::ContainerNode::removeChildren):
(WebCore::ContainerNode::parserInsertBefore): Deleted.
(WebCore::ContainerNode::removeChild): Deleted.
(WebCore::ContainerNode::parserRemoveChild): Deleted.
(WebCore::ContainerNode::parserAppendChild): Deleted.
(WebCore::ContainerNode::childrenChanged): Deleted.
(WebCore::ContainerNode::setAttributeEventListener): Deleted.
(WebCore::ContainerNode::querySelector): Deleted.
- dom/ContainerNodeAlgorithms.cpp:
(WebCore::ChildNodeInsertionNotifier::notifyDescendantInsertedIntoDocument):
(WebCore::ChildNodeInsertionNotifier::notifyDescendantInsertedIntoTree):
- dom/ContainerNodeAlgorithms.h:
(WebCore::ChildNodeInsertionNotifier::notifyNodeInsertedIntoDocument):
(WebCore::ChildNodeInsertionNotifier::notifyNodeInsertedIntoTree):
(WebCore::ChildNodeInsertionNotifier::notify):
(WebCore::ChildNodeRemovalNotifier::notifyNodeRemovedFromDocument): Deleted.
- dom/Element.cpp:
(WebCore::Element::addShadowRoot):
LayoutTests:
Add layout tests covering different crashes caused by the same bug.
- fast/dom/script-getElementById-during-insertion-expected.txt: Added.
- fast/dom/script-getElementById-during-insertion.html: Added.
Reduction test case for <rdar://problem/16798440>.
- fast/dom/script-remove-child-id-map-expected.txt: Added.
- fast/dom/script-remove-child-id-map.html: Added.
Test imported from Blink r178976.
- 3:53 PM Changeset in webkit [185434] by
-
- 3 edits in trunk/Source/WebCore
[Web Timing] Fix flaky test.
https://bugs.webkit.org/show_bug.cgi?id=145846
Patch by Alex Christensen <achristensen@webkit.org> on 2015-06-10
Reviewed by Alexey Proskuryakov.
The timing data is gathered in ResourceHandle::getConnectionTimingData as
millisecond deltas from the fetch start time, not the navigation start time.
The difference between navigation and fetch start time is usually so small that
it only caused one flaky test, but this should fix that flakiness. This patch
corrects how the millisecond deltas are used.
- page/PerformanceTiming.cpp:
(WebCore::PerformanceTiming::domainLookupStart):
(WebCore::PerformanceTiming::domainLookupEnd):
(WebCore::PerformanceTiming::connectStart):
(WebCore::PerformanceTiming::connectEnd):
(WebCore::PerformanceTiming::secureConnectionStart):
(WebCore::PerformanceTiming::requestStart):
(WebCore::PerformanceTiming::responseStart):
(WebCore::PerformanceTiming::responseEnd):
(WebCore::PerformanceTiming::documentLoadTiming):
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToFetchStart):
(WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds):
(WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute): Deleted.
- page/PerformanceTiming.h:
- 3:44 PM Changeset in webkit [185433] by
-
- 2 edits in trunk/Source/WTF
Unreviewed, fix an typo in unused template code.
- wtf/TinyPtrSet.h:
(WTF::TinyPtrSet::iterator::operator*): s/at(index)/at(m_index)/
- 3:32 PM Changeset in webkit [185432] by
-
- 7 edits3 adds in trunk
Implement RegExp.prototype.flags
https://bugs.webkit.org/show_bug.cgi?id=145599
Patch by Jordan Harband <ljharb@gmail.com> on 2015-06-10
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
Per https://people.mozilla.org/~jorendorff/es6-draft.html#sec-get-regexp.prototype.flags
- runtime/CommonIdentifiers.h:
- runtime/RegExpPrototype.cpp:
(JSC::flagsString):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterFlags):
- tests/stress/static-getter-in-names.js:
LayoutTests:
- js/Object-getOwnPropertyNames-expected.txt:
- js/regexp-flags-expected.txt: Added.
- js/regexp-flags.html: Added.
- js/script-tests/Object-getOwnPropertyNames.js:
- js/script-tests/regexp-flags.js: Added.
(.get shouldBe):
- 2:53 PM Changeset in webkit [185431] by
-
- 6 edits in trunk/Source/WebCore
Overriding the overlay scrollbar style on WKView doesn't take effect immediately
https://bugs.webkit.org/show_bug.cgi?id=145855
-and corresponding-
rdar://problem/20948706
Reviewed by Simon Fraser.
Since we opt into layer-per-part scrollbars in order to move the knob on the
secondary thread, AppKit is creating its own layers for the knob and track. To
invalidate them, we need to call into the ScrollbarPainter’s setNeedsDisplay.
New virtual function on ScrollAnimator to call into ScrollbarPainter’s
setNeedsDispay.
- platform/ScrollAnimator.h:
Call the new function when setting the overlay style.
- platform/ScrollableArea.cpp:
(WebCore::ScrollableArea::setScrollbarOverlayStyle):
Add setNeedsDisplay to the list of ScrollbarPainter methods.
- platform/mac/NSScrollerImpDetails.h:
Implement invalidateScrollbarPartLayers.
- platform/mac/ScrollAnimatorMac.h:
- platform/mac/ScrollAnimatorMac.mm:
(WebCore::ScrollAnimatorMac::invalidateScrollbarPartLayers):
- 2:30 PM Changeset in webkit [185430] by
-
- 1 edit4 copies1 delete in trunk/LayoutTests
Move all content extension tests to same directory to fix flakiness.
https://bugs.webkit.org/show_bug.cgi?id=145854
Reviewed by Alexey Proskuryakov.
- http/tests/contentextensions/loading/main-resource-redirect-blocked-expected.txt: Removed.
- http/tests/contentextensions/loading/main-resource-redirect-blocked.php: Removed.
- http/tests/contentextensions/loading/main-resource-redirect-blocked.php.json: Removed.
- http/tests/contentextensions/loading/resources/main-resource-redirect-blocked-target.html: Removed.
- http/tests/contentextensions/main-resource-redirect-blocked-expected.txt: Copied from http/tests/contentextensions/loading/main-resource-redirect-blocked-expected.txt.
- http/tests/contentextensions/main-resource-redirect-blocked.php: Copied from http/tests/contentextensions/loading/main-resource-redirect-blocked.php.
- http/tests/contentextensions/main-resource-redirect-blocked.php.json: Copied from http/tests/contentextensions/loading/main-resource-redirect-blocked.php.json.
- http/tests/contentextensions/resources/main-resource-redirect-blocked-target.html: Copied from http/tests/contentextensions/loading/resources/main-resource-redirect-blocked-target.html.
- 1:50 PM Changeset in webkit [185429] by
-
- 2 edits in trunk/Source/WebCore
MediaRemoteControls should be marked JSGenerateToJSObject.
https://bugs.webkit.org/show_bug.cgi?id=145849
Patch by Matt Rajca <mrajca@apple.com> on 2015-06-10
Reviewed by Eric Carlson.
Since MediaRemoteControls has a parent interface, we need to add the JSGenerateToJSObject attribute so the
toJS(...) function gets generated. This is required for event handling to work.
- Modules/mediasession/MediaRemoteControls.idl:
- 1:47 PM Changeset in webkit [185428] by
-
- 2 edits in trunk/Source/WebKit2
[WK2] Do not indicate Media Keys are present when they are not
https://bugs.webkit.org/show_bug.cgi?id=145713
<rdar://problem/19752566>
Reviewed by Dean Jackson.
Correct the reporting of Media Key presence by checking for the actual
media key file, not just the directory. Sometimes the directory will exist
with no media key files (e.g., if a user navigates to the directory using
the Finder).
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::computeMediaKeyFile): Moved earlier in file so it could be used by
the 'mediaKeyOrigins' method.
(WebKit::WebsiteDataStore::mediaKeyOrigins): Only indicate we have a media key
origin if the folder actually contains the media key file.
(WebKit::WebsiteDataStore::removeMediaKeys): Use the existing 'computeMediaKeyFile',
rather than manually building the file from strings.
- 1:35 PM Changeset in webkit [185427] by
-
- 2 edits in trunk/Source/JavaScriptCore
DFG ASSERTION FAILED: !iterate() on stress/singleton-scope-then-overwrite.js.ftl-eager
https://bugs.webkit.org/show_bug.cgi?id=145853
Unreviewed, remove the assertion.
- dfg/DFGCSEPhase.cpp:
- 12:18 PM WebKitGTK/2.8.x edited by
- Propose r184954 (diff)
- 11:56 AM Changeset in webkit [185426] by
-
- 2 edits in trunk/Source/WebCore
User can not scroll on page when dragging inside video
https://bugs.webkit.org/show_bug.cgi?id=145848
<rdar://problem/20997158>
Reviewed by Brent Fulgham.
Revert the change made in http://trac.webkit.org/changeset/183797
which breaks panning on pages if the touch starts inside the video.
- Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.handleWrapperTouchStart): Do not return true, which stops
the handleEvent call in the superclass from preventing the default action.
- 11:44 AM Changeset in webkit [185425] by
-
- 12 edits in trunk
JetStream should have a more rational story for jitter-oriented latency tests
https://bugs.webkit.org/show_bug.cgi?id=145762
Reviewed by Geoffrey Garen.
JetStream has some latency tests that are meant to measure jitter. Prior to this change, they
did this by computing the RMS. But the RMS is a pretty bad metric. The thing that it rewards
isn't really the thing that you'd want your browser to do. These RMS-based tests involve taking
the geomean of the RMS of some samples and the sample average. The lower the geomean, the better
(in the JetStream harness we then invert the scores so that higher is better, but let's ignore
that for this discussion and assume that lower is better). Here's an example of how this can go
bad. A browser that always computes a task in some horribly long time (say, 1000ms) but never
varies that time will perform better than a browser that usually computes the task super quickly
(say, 10ms) and sometimes just a little bit less quickly (say, 15ms). The former browser will
have an RMS of 0 and an average of 1000. The latter will have a RMS somewhere around 3.5 and an
average of 12.5 (assuming equal probability of 10ms and 15ms). The geomean of (0, 1000) is 0.
The geomean of (3.5, 12.5) is 6.6. Lower is better, so the former browser scores higher - even
though it's obviously never better to have a browser always complete a task in 1000ms when a
different browser can do it in 15ms in the worst case.
JetStream should not have this pathology. The right way of avoiding it is to replace RMS with
some other metric of how bad things get. A good metric is the average of the worst percentile.
The worst 1% or the worst 5% would be good things to average. This will catch cases where the VM
jittered due to JIT or GC, but it never have the pathology that we end up giving the better score
to a VM whose best case is worst than another VM's worst case.
For now, this change uses the highest samples above the 95% percentile. I'm not yet sure if that
is the best thing - it might include too many scores that are around the best-case performance -
but it's certainly better than RMS and it might be good enough to keep. But because of that
uncertainty, I'm setting the version to be "1.1-alpha1" to indicate that we aren't ready to
release this yet.
- JetStream/Octane2/base.js:
(.this.Setup.setup.setup):
(.this.TearDown.tearDown.tearDown):
(BenchmarkSuite.GeometricMeanTime):
(BenchmarkSuite.AverageAbovePercentile):
(BenchmarkSuite.GeometricMeanLatency):
(BenchmarkSuite.prototype.NotifyStep):
(BenchmarkSuite.prototype.RunSingleBenchmark):
- JetStream/Octane2/mandreel.js:
(setupMandreel):
(updateMandreelStats):
(startMandreelTimer):
(latencyMandreel):
(tearDownMandreel):
(RMSMandreel): Deleted.
- JetStream/Octane2/splay.js:
(GenerateKey):
(SplayUpdateStats):
(InsertNewNode):
(SplayTearDown):
(SplayRMS): Deleted.
- JetStream/create.rb:
- 11:43 AM Changeset in webkit [185424] by
-
- 4 edits in trunk/Source/WebCore
Explicitly keep track of active HTMLMediaElements in MediaSessions.
https://bugs.webkit.org/show_bug.cgi?id=145829
Patch by Matt Rajca <mrajca@apple.com> on 2015-06-10
Reviewed by Eric Carlson.
- Modules/mediasession/MediaSession.cpp: Add support for keeping track of active media elements.
(WebCore::MediaSession::addActiveMediaElement):
- Modules/mediasession/MediaSession.h:
- html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::playInternal): If the paused attribute is true and the readyState attribute has the
value HAVE_FUTURE_DATA or HAVE_ENOUGH_DATA, the media element becomes an active participating element of the
media session.
- 11:15 AM Changeset in webkit [185423] by
-
- 15 edits in trunk/Source/WebCore
Drop unused argument for Node::didNotifySubtreeInsertions()
https://bugs.webkit.org/show_bug.cgi?id=145845
Reviewed by Andreas Kling.
- dom/ContainerNodeAlgorithms.h:
(WebCore::ChildNodeInsertionNotifier::notify):
- dom/Node.h:
(WebCore::Node::didNotifySubtreeInsertions):
- html/HTMLFrameElementBase.cpp:
(WebCore::HTMLFrameElementBase::didNotifySubtreeInsertions):
- html/HTMLFrameElementBase.h:
- svg/SVGFEImageElement.cpp:
(WebCore::SVGFEImageElement::didNotifySubtreeInsertions):
- svg/SVGFEImageElement.h:
- svg/SVGMPathElement.cpp:
(WebCore::SVGMPathElement::didNotifySubtreeInsertions):
- svg/SVGMPathElement.h:
- svg/SVGTRefElement.cpp:
(WebCore::SVGTRefElement::didNotifySubtreeInsertions):
- svg/SVGTRefElement.h:
- svg/SVGTextPathElement.cpp:
(WebCore::SVGTextPathElement::didNotifySubtreeInsertions):
- svg/SVGTextPathElement.h:
- svg/animation/SVGSMILElement.cpp:
(WebCore::SVGSMILElement::didNotifySubtreeInsertions):
- svg/animation/SVGSMILElement.h:
- 10:42 AM Changeset in webkit [185422] by
-
- 5 edits in branches/safari-600.1.4.16-branch/Source
Versioning.
- 10:40 AM Changeset in webkit [185421] by
-
- 5 edits in branches/safari-600.7-branch/Source
Versioning.
- 9:57 AM Changeset in webkit [185420] by
-
- 3 edits in trunk/Source/WebKit2
Support fetching website data
https://bugs.webkit.org/show_bug.cgi?id=145828
Reviewed by Darin Adler.
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
(WebKit::WebsiteDataStore::plugins):
- UIProcess/WebsiteData/WebsiteDataStore.h:
- 9:43 AM Changeset in webkit [185419] by
-
- 2 edits1 delete in trunk/Source/JavaScriptCore
Unreviewed, rolling out r185414.
https://bugs.webkit.org/show_bug.cgi?id=145844
broke debug and jsc tests (Requested by alexchristensen on
#webkit).
Reverted changeset:
"JavaScript: Drop the “escaped reserved words as identifiers”
compatibility measure"
https://bugs.webkit.org/show_bug.cgi?id=90678
http://trac.webkit.org/changeset/185414
- 8:58 AM Changeset in webkit [185418] by
-
- 2 edits in trunk/Source/WebKit2
Unreviewed. Fixing the build for the GTK port with Clang.
- UIProcess/gtk/InputMethodFilter.h: Add the <functional> header inclusion
to avoid compilation errors due to missing std::function<>.
- 8:58 AM Changeset in webkit [185417] by
-
- 5 edits1 add in trunk/Source/WebCore
[EFL] Jpeg image export implementation for Canvas.
https://bugs.webkit.org/show_bug.cgi?id=145457
Reviewed by Gyuyoung Kim.
Add implementation of jpeg image export on Webkit EFL by using JPEGImageEncoder.
No new tests, fast/canvas/toDataURL-supportedTypes.html can be reused.
- PlatformEfl.cmake:
- platform/MIMETypeRegistry.cpp:
(WebCore::initializeSupportedImageMIMETypesForEncoding):
- platform/graphics/cairo/ImageBufferCairo.cpp:
- platform/graphics/efl/ImageBufferEfl.cpp: Added.
(WebCore::writeFunction):
(WebCore::encodeImage):
(WebCore::ImageBuffer::toDataURL):
- platform/image-encoders/JPEGImageEncoder.cpp:
(WebCore::compressRGBABigEndianToJPEG):
- 8:17 AM Changeset in webkit [185416] by
-
- 5 edits2 moves in trunk/Source
[GTK] Move KeyBindingTranslator from platform to WebKit2 layer
https://bugs.webkit.org/show_bug.cgi?id=145840
Reviewed by Martin Robinson.
It's currently used only by WebKit2 in the UI process and it's
another file built twice because of the GTK2 plugin process.
- PlatformGTK.cmake:
Source/WebKit2:
- UIProcess/API/gtk/WebKitWebViewBase.cpp:
- UIProcess/gtk/KeyBindingTranslator.cpp: Renamed from Source/WebCore/platform/gtk/KeyBindingTranslator.cpp.
(WebKit::backspaceCallback):
(WebKit::selectAllCallback):
(WebKit::cutClipboardCallback):
(WebKit::copyClipboardCallback):
(WebKit::pasteClipboardCallback):
(WebKit::toggleOverwriteCallback):
(WebKit::popupMenuCallback):
(WebKit::showHelpCallback):
(WebKit::deleteFromCursorCallback):
(WebKit::moveCursorCallback):
(WebKit::KeyBindingTranslator::KeyBindingTranslator):
(WebKit::KeyBindingTranslator::commandsForKeyEvent):
- UIProcess/gtk/KeyBindingTranslator.h: Renamed from Source/WebCore/platform/gtk/KeyBindingTranslator.h.
(WebKit::KeyBindingTranslator::addPendingEditorCommand):
- 6:32 AM Changeset in webkit [185415] by
-
- 21 edits in trunk/Source
[GTK] Get rid of GetEditorCommandsForKeyEvent sync message
https://bugs.webkit.org/show_bug.cgi?id=145598
Reviewed by Žan Doberšek.
Source/WebCore:
- platform/PlatformKeyboardEvent.h:
(WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
(WebCore::PlatformKeyboardEvent::commands):
- platform/gtk/KeyBindingTranslator.cpp: Use a single list of
custom key bindings. We don't need to distinguish between key down and
key press commands, since the web editor client already does that
when executing the commands.
(WebCore::KeyBindingTranslator::commandsForKeyEvent): This is
getEditorCommandsForKeyEvent() renamed as commandsForKeyEvent(),
since it now returns the list of commands to simplify the
code. Also simplify the custom key bindings handling, by using the
global list instead of moving it to a HashMap.
(WebCore::KeyBindingTranslator::getEditorCommandsForKeyEvent): Deleted.
- platform/gtk/KeyBindingTranslator.h:
Source/WebKit2:
We are sending GetEditorCommandsForKeyEvent sync message from web
process to the UI process for every key pressed. And if the
keydown event doesn't handle the key, the message is sent again
for the keypress event, so in many cases it happens twice per
keypress. We can get the list of commands when the key press event
happens in the web view, and send it to the web process as part of
the keyboard event like mac port does. In the web process,
commands not inserting text will be handled by keydown and the
rest in keypress without having to use any other IPC message for that.
- Shared/NativeWebKeyboardEvent.h: Add command list parameter to
the constructor.
- Shared/WebEvent.h: Add GTK specific constructor that receives a
list of commands and whether the event was handled by input methods.
(WebKit::WebKeyboardEvent::commands): Returns the list of commands.
- Shared/WebEventConversion.cpp:
(WebKit::WebKit2PlatformKeyboardEvent::WebKit2PlatformKeyboardEvent):
Also copy the commands and handledByInputMethod member.
- Shared/WebKeyboardEvent.cpp:
(WebKit::WebKeyboardEvent::WebKeyboardEvent): Implement GTK
specific constructor that receives a list of commands and whether
the event was handled by input methods.
(WebKit::WebKeyboardEvent::encode): Encode commands and handledByInputMethod.
(WebKit::WebKeyboardEvent::decode): Decode commands and handledByInputMethod.
- Shared/gtk/NativeWebKeyboardEventGtk.cpp:
(WebKit::NativeWebKeyboardEvent::NativeWebKeyboardEvent): Add
command list parameter to the constructor.
- Shared/gtk/WebEventFactory.cpp:
(WebKit::WebEventFactory::createWebKeyboardEvent): Use the new
WebKeyboardEvent constructor and simplify the code. We don't need
to explicitly set VK_PROCESSKEY as windows virtual key code when
the event was handled by input methods. The WebCore event handler
already does that.
- Shared/gtk/WebEventFactory.h:
- UIProcess/API/gtk/PageClientImpl.cpp:
(WebKit::PageClientImpl::getEditorCommandsForKeyEvent): Deleted.
- UIProcess/API/gtk/PageClientImpl.h:
- UIProcess/API/gtk/WebKitWebViewBase.cpp: Add a
KeyBindingTranslator member.
(webkitWebViewBaseKeyPressEvent): Use the new
InputMethodFilter::filterKeyEvent() API and get the list of
commands for the key when events was not handled by input methods.
(webkitWebViewBaseKeyReleaseEvent): Use the new
InputMethodFilter::filterKeyEvent() API.
- UIProcess/PageClient.h:
- UIProcess/WebPageProxy.messages.in: Remove GetEditorCommandsForKeyEvent message.
- UIProcess/gtk/InputMethodFilter.cpp:
(WebKit::InputMethodFilter::handleKeyboardEvent): Call the
completation handler.
(WebKit::InputMethodFilter::handleKeyboardEventWithCompositionResults): Ditto.
(WebKit::InputMethodFilter::filterKeyEvent): Use a completion
handler for the task, so that the caller (the web view) can handle
the keyboard event.
- UIProcess/gtk/InputMethodFilter.h:
- UIProcess/gtk/WebPageProxyGtk.cpp:
(WebKit::WebPageProxy::getEditorCommandsForKeyEvent): Deleted.
- WebProcess/WebCoreSupport/gtk/WebEditorClientGtk.cpp:
(WebKit::WebEditorClient::handleKeyboardEvent): Return earlier if
the event was handled by input methods. And get the list of
commands from the PlatformKeyboardEvent instead of sending a sync
message to the UI process.
(WebKit::WebEditorClient::handleInputMethodKeydown): If the event
was handled by inpout methods, set the event as default handled so
that the WebCore event handler sets VK_PROCESSKEY as windows
virtual key code.
(WebKit::WebEditorClient::getEditorCommandsForKeyEvent): Deleted.
- 6:25 AM Changeset in webkit [185414] by
-
- 2 edits1 add in trunk/Source/JavaScriptCore
JavaScript: Drop the “escaped reserved words as identifiers” compatibility measure
https://bugs.webkit.org/show_bug.cgi?id=90678
Reviewed by Darin Adler.
After ES6, escaped reserved words in identifiers are prohibited.
- parser/Lexer.cpp:
(JSC::Lexer<CharacterType>::parseIdentifierSlowCase):
- tests/stress/reserved-word-with-escape.js: Added.
(testSyntax):
(testSyntaxError):
- 6:07 AM Changeset in webkit [185413] by
-
- 2 edits in trunk/Source/WebKit2
Unreviewed. Fix GTK build after r185412.
Add missing include.
- NetworkProcess/cache/NetworkCacheFileSystem.cpp:
- 6:00 AM Changeset in webkit [185412] by
-
- 10 edits1 move1 add in trunk/Source/WebKit2
NetworkCache: Delete old cache versions
https://bugs.webkit.org/show_bug.cgi?id=145800
Reviewed by Darin Adler.
- CMakeLists.txt:
- NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
(WebKit::NetworkCache::BlobStorage::synchronize):
- NetworkProcess/cache/NetworkCacheFileSystem.cpp: Added.
(WebKit::NetworkCache::directoryEntryType):
(WebKit::NetworkCache::traverseDirectory):
Pass entry type as callback argument.
(WebKit::NetworkCache::deleteDirectoryRecursively):
Add helper.
(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
- NetworkProcess/cache/NetworkCacheFileSystem.h: Copied from Source/WebKit2/NetworkProcess/cache/NetworkCacheFileSystemPosix.h.
Move code to cpp.
(WebKit::NetworkCache::traverseDirectory): Deleted.
(WebKit::NetworkCache::traverseCacheFiles): Deleted.
(WebKit::NetworkCache::fileTimes): Deleted.
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded): Deleted.
- NetworkProcess/cache/NetworkCacheFileSystemPosix.h: Removed.
- NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:
- NetworkProcess/cache/NetworkCacheStatistics.cpp:
(WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache):
- NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::makeBlobDirectoryPath):
(WebKit::NetworkCache::traverseRecordsFiles):
Move cache hierarchy aware traversal code here from NetworkCacheFileSystem (for better layering).
Rename for clarity.
(WebKit::NetworkCache::deleteEmptyRecordsDirectories):
Factor to a function.
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::synchronize):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
Use traverseRecordsFiles for traversal.
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::deleteOldVersions):
Delete version subdirectories with version number less than the current version.
Remove code for clearing unversioned V1 caches. No one should have them.
- NetworkProcess/cache/NetworkCacheStorage.h:
- UIProcess/API/APIUserContentExtensionStore.cpp:
- WebKit2.xcodeproj/project.pbxproj:
- 4:29 AM Changeset in webkit [185411] by
-
- 2 edits in trunk/Source/WebCore
[WinCairo] Crash on exit when terminating egl
https://bugs.webkit.org/show_bug.cgi?id=145832
Reviewed by Carlos Garcia Campos.
Avoid terminating egl on exit for WinCairo.
- platform/graphics/PlatformDisplay.cpp:
(WebCore::PlatformDisplay::~PlatformDisplay):
- 3:33 AM Changeset in webkit [185410] by
-
- 2 edits in trunk/Source/WebKit2
[GTK] Web Inspector is broken
https://bugs.webkit.org/show_bug.cgi?id=145836
Reviewed by Carlos Garcia Campos.
- PlatformGTK.cmake: Thread the InspectorBackendCommands.js file as a separate
dependency of InspectorGResourceBundle.xml. It can't be listed under the InspectorFiles
variable and then searched via the CMake glob command because it probably won't exist
at the time the command is run (since it's copied into the specified path), so it won't
be listed among the dependencies at all.
- 3:15 AM Changeset in webkit [185409] by
-
- 2 edits in trunk/Source/JavaScriptCore
[JSC] InlineCallFrame::arguments should be sized-to-fit.
<https://webkit.org/b/145782>
Reviewed by Darin Adler.
I spotted this Vector<ValueRecovery> looking a bit chubby in Instruments,
with 354 kB of memory allocated on cnet.com.
Use resizeToFit() instead of resize() since we know the final size up front.
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
- 1:54 AM Changeset in webkit [185408] by
-
- 2 edits in trunk/LayoutTests
[EFL] Unreviewed, EFL gardening on Jun 10th
- platform/efl/TestExpectations: Mark fast tests to flaky since r183540.
- 1:10 AM Changeset in webkit [185407] by
-
- 6 edits in trunk/Source/WebCore
Refactor AudioContext implementation to enable automatic binding generation of promise-based methods
https://bugs.webkit.org/show_bug.cgi?id=145223
Reviewed by Darin Adler.
Introducing DOMPromise as a typed wrapper above DeferredWrapper.
This DOMPromise allows constraining Promise resolution/rejection to a single resolution type and rejection type.
This might be useful for typed callback usage of promise based APIs, like getUserMedia() or ReadableStreamReader.read().
Applying DOMPromise to AudioContext close, suspend and resume.
Changed binding code to represent what could be automatically generated by binding generator.
Fixing unneeded copies of std::function callbacks.
Disabling DOMPromise copy constructors to lower chances that resolution/rejection is done twice on the same object.
Covered by existing tests.
- Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::addReaction):
(WebCore::AudioContext::setState):
(WebCore::AudioContext::suspend):
(WebCore::AudioContext::resume):
(WebCore::AudioContext::close):
- Modules/webaudio/AudioContext.h:
- bindings/js/JSAudioContextCustom.cpp:
(WebCore::JSAudioContext::suspend):
(WebCore::JSAudioContext::resume):
(WebCore::JSAudioContext::close):
- bindings/js/JSDOMPromise.cpp:
(WebCore::DeferredWrapper::callFunction):
- bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::resolve):
(WebCore::DeferredWrapper::reject):
(WebCore::DOMPromise::DOMPromise):
(WebCore::DOMPromise::resolve):
(WebCore::DOMPromise::reject):
- 1:09 AM Changeset in webkit [185406] by
-
- 12 edits in trunk
[Streams API] Implement pulling of a source by a ReadableStream
https://bugs.webkit.org/show_bug.cgi?id=145262
Reviewed by Darin Adler
Source/WebCore:
Introduced abstract ReadableStream::doPull() which is overriden in ReadableJSStream.
Added support to call the "pull" JS callback in ReadableJSStream::doPull().
Added calls to pull as requested by the spec (when resolving a read callback, at start time...).
Fixed issue in ReadableStreamReader::read() (use of successCallback(JSValue()) in lieu of endCallback())
Covered by rebased tests.
- Modules/streams/ReadableStream.cpp:
(WebCore::ReadableStream::start): calling pull() once start.
(WebCore::ReadableStream::pull): calling doPull() if readableStream states requires to.
(WebCore::ReadableStream::read): calling pull() after resolving a read callback.
- Modules/streams/ReadableStream.h:
- Modules/streams/ReadableStreamReader.cpp:
(WebCore::ReadableStreamReader::read): fixed JSValue() bug.
- bindings/js/ReadableJSStream.cpp:
(WebCore::ReadableJSStream::doPull): calling of JS callback.
(WebCore::ReadableJSStream::storeException): catches exception and store them.
(WebCore::ReadableJSStream::storeError): refactoring for checkForException.
(WebCore::ReadableJSStream::enqueue):
- bindings/js/ReadableJSStream.h:
LayoutTests:
Rebased expectations, removed some "timeout: 50" parameters.
Removed a test from streams/reference-implementation/readable-stream.html that cannot pass
until promises returned to start and pull JS callbacks are handled.
Fixed bug in streams-utils.js (was using the old API replaced by controller).
- streams/reference-implementation/bad-underlying-sources-expected.txt:
- streams/reference-implementation/bad-underlying-sources.html:
- streams/reference-implementation/readable-stream-expected.txt:
- streams/reference-implementation/readable-stream.html:
- streams/reference-implementation/resources/streams-utils.js:
(.stream.new.ReadableStream.):
(.stream.new.ReadableStream):
(sequentialReadableStream):
- 12:29 AM Changeset in webkit [185405] by
-
- 2 edits in trunk/Tools
[EFL] Execute Javascript method in mini browser address bar.
https://bugs.webkit.org/show_bug.cgi?id=145725
Patch by Hyungwook Lee <hyungwook.lee@navercorp.com> on 2015-06-10
Reviewed by Gyuyoung Kim.
Support 'javascript:' scheme in WebKit EFL Mini Browser.
- MiniBrowser/efl/main.c:
(url_from_user_input):
(url_load_from_user_input):
(on_url_bar_activated):
(elm_main):
Jun 9, 2015:
- 11:26 PM Changeset in webkit [185404] by
-
- 7 edits in trunk/Source/WebCore
DeferredWrapper should clear its JS strong references once its promise is resolved/rejected
https://bugs.webkit.org/show_bug.cgi?id=145753
Reviewed by Darin Adler.
Clear strong references at the end of DeferredWrapper::resolve and DeferredWrapper::reject.
Added assertions to check that resolve or reject is called only once.
Removed DeferredWrapper constructor that creates internally its promise.
Reason is DeferredWrapper can be resolved synchronously and promise
will be lost when returning it at the end of the binding promise function.
Updated all custom bindings accordingly.
Covered by existing tests.
- bindings/js/JSAudioContextCustom.cpp:
(WebCore::JSAudioContext::suspend): Updated DeferredWrapper constructor to properly return the promise.
(WebCore::JSAudioContext::resume): Ditto.
(WebCore::JSAudioContext::close): Ditto.
- bindings/js/JSDOMPromise.cpp:
(WebCore::DeferredWrapper::resolve): Cleared strong references after promise resolution.
(WebCore::DeferredWrapper::reject): Cleared strong references after promise rejection.
- bindings/js/JSDOMPromise.h:
(WebCore::DeferredWrapper::resolve): Added ASSERT to check promise is not yet rejected/resolved.
(WebCore::DeferredWrapper::reject): Ditto.
(WebCore::DeferredWrapper::reject<ExceptionCode>): Ditto.
(WebCore::DeferredWrapper::resolve<String>): Ditto.
(WebCore::DeferredWrapper::resolve<bool>): Ditto.
(WebCore::DeferredWrapper::resolve<JSC::JSValue>): Ditto.
(WebCore::char>>):
(WebCore::DeferredWrapper::reject<String>): Ditto.
- bindings/js/JSMediaDevicesCustom.cpp:
(WebCore::JSMediaDevices::getUserMedia): Updated DeferredWrapper constructor to properly return the promise.
- bindings/js/JSReadableStreamReaderCustom.cpp:
(WebCore::JSReadableStreamReader::read): Ditto.
(WebCore::JSReadableStreamReader::closed): Ditto.
- bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::JSSubtleCrypto::encrypt): Ditto.
(WebCore::JSSubtleCrypto::decrypt): Ditto.
(WebCore::JSSubtleCrypto::sign): Ditto.
(WebCore::JSSubtleCrypto::verify): Ditto.
(WebCore::JSSubtleCrypto::digest): Ditto.
(WebCore::JSSubtleCrypto::generateKey): Ditto.
(WebCore::JSSubtleCrypto::importKey): Ditto.
(WebCore::JSSubtleCrypto::exportKey): Ditto.
(WebCore::JSSubtleCrypto::wrapKey): Ditto.
(WebCore::JSSubtleCrypto::unwrapKey): Ditto.
- 10:59 PM Changeset in webkit [185403] by
-
- 2 edits in trunk/Source/WebCore
Protect FrameView from being destroyed in Document::recalcStyle()
https://bugs.webkit.org/show_bug.cgi?id=143033
rdar://problem/20326871
Reviewed by Andreas Kling.
This patch ensures that FrameView stays valid in Document::recalcStyle().
It follows the defensive pattern we use to deal with the refcounted FrameView (see EventDispatcher::dispatchEvent)
When the iframe destroys itself in the onBeforeLoad callback (as the result of
PostResolutionCallbackDisabler -> HTMLObjectElement::updateWidget -> guardedDispatchBeforeLoadEvent),
we detach the frame and release the FrameView. However Document::recalcStyle() expects
the FrameView to stay valid.
Covered by fast/frames/flattening/crash-remove-iframe-during-object-beforeload.html.
- dom/Document.cpp:
(WebCore::Document::recalcStyle):
- 10:38 PM Changeset in webkit [185402] by
-
- 10 edits2 adds in trunk
3D-transformed video does not display on platforms without accelerated video rendering
https://bugs.webkit.org/show_bug.cgi?id=144782
Patch by Daegyu Lee <daegyu.lee@navercorp.com> on 2015-06-09
Reviewed by Simon Fraser.
Source/WebCore:
Video element does not get GraphicsLayer when MediaPlayerPrivate::supportsAcceleratedRendering() returns false
which means not using accelerated video decoding.
Although the video element gets GraphicsLayer by changing the CSS style of video element by javascript,
there is no way to set GraphicsLayer::setDrawsContent(true) for updating the video content.
As a result, after changing the CSS style, the video content does not show.
To avoid missing setDrawsContent(true), add conditions(!supportsAcceleratedRendering() && m_requiresOwnBackingStore).
Test: media/video-transformed-by-javascript.html
media/video-transformed-by-javascript-expected.html
- rendering/RenderLayerBacking.cpp:
(WebCore::RenderLayerBacking::containsPaintedContent):
LayoutTests:
Add layout test that is simply checking video transform by javascript works properly.
- media/video-transformed-by-javascript-expected.txt: Added.
- media/video-transformed-by-javascript.html: Added.
- platform/gtk/TestExpectations:
- platform/ios-simulator-wk1/TestExpectations:
- platform/ios-simulator-wk2/TestExpectations:
- platform/ios-simulator/TestExpectations:
- platform/mac-wk1/TestExpectations:
- platform/mac-wk2/TestExpectations:
- platform/mac/TestExpectations:
- 9:00 PM Changeset in webkit [185401] by
-
- 3 edits in trunk/LayoutTests
Update iOS TestExpectations files
- platform/ios-simulator-wk1/TestExpectations:
- platform/ios-simulator-wk2/TestExpectations:
- 8:34 PM Changeset in webkit [185400] by
-
- 7 edits in trunk
Implement dumpProgressFinishedCallback() for Win layoutTestController.
https://bugs.webkit.org/show_bug.cgi?id=66773
Patch by Hyungwook Lee <hyungwook.lee@navercorp.com> on 2015-06-09
Reviewed by Darin Adler.
Source/WebKit/win:
- WebView.cpp:
(WebView::setFrameLoadDelegatePrivate):
Tools:
- DumpRenderTree/win/FrameLoadDelegate.cpp:
- DumpRenderTree/win/FrameLoadDelegate.h:
LayoutTests:
- platform/win/TestExpectations:
- 7:00 PM Changeset in webkit [185399] by
-
- 2 edits in trunk/Websites/perf.webkit.org
Unreviewed build fix. Some builder names are really long.
- init-database.sql:
- 5:57 PM Changeset in webkit [185398] by
-
- 6 edits2 adds in trunk
REGRESSION(r180867): Tabbing to login field on iCloud.com doesn't have highlight for text
https://bugs.webkit.org/show_bug.cgi?id=145830
Reviewed by Darin Adler.
Source/WebCore:
The bug was caused by setSelection not updating RenderView when there is a style recalc scheduled
that doesn't trigger a layout. Fixed the bug by explicitly updating the selection in
Document::recalcStyle in that case.
Test: editing/selection/update-selection-by-style-change.html
- dom/Document.cpp:
(WebCore::Document::recalcStyle):
- editing/FrameSelection.cpp:
(WebCore::FrameSelection::updateAppearanceAfterLayout): Renamed from didLayout.
- editing/FrameSelection.h:
- page/FrameView.cpp:
(WebCore::FrameView::performPostLayoutTasks):
LayoutTests:
Added a regression test.
- editing/selection/update-selection-by-style-change-expected.html: Added.
- editing/selection/update-selection-by-style-change.html: Added.
- 5:53 PM Changeset in webkit [185397] by
-
- 4 edits in trunk/Source/WebCore
MediaControls: Reenable resize of controls on pinch zoom
https://bugs.webkit.org/show_bug.cgi?id=145824
<rdar://problem/21212778>
Reviewed by Darin Adler.
Reinstate the code that updated the scaling of the
controls in response to changes in page scale.
This time around we have to change both the controls
panel, and its blurry background.
- Modules/mediacontrols/mediaControlsApple.js:
(Controller.prototype.set pageScaleFactor): Deleted a comment.
- Modules/mediacontrols/mediaControlsiOS.css:
(video::-webkit-media-controls-panel-background): Set the background to pin
to the bottom of its view.
- Modules/mediacontrols/mediaControlsiOS.js:
(ControllerIOS.prototype.get pageScaleFactor): Basic getter, copied from mediaControlsApple.
(ControllerIOS.prototype.set pageScaleFactor): The setter that reacts to the page scale
and applies an inverse scaling on the control panel using a transform, and adjusts the
height on the background similarly.
- 5:46 PM Changeset in webkit [185396] by
-
- 3 edits in trunk/Source/WebCore
GraphicsContext state stack wasting lots of memory when empty.
<https://webkit.org/b/145817>
Reviewed by Geoffrey Garen.
Give the GraphicsContextState stack an inline capacity of 1, and make sure
to free any heap-allocated backing store when the stack goes empty.
The 1 is because HTMLCanvasElement keeps one "save" on the underlying
GraphicsContext at all times, and this prevents those canvases from always
sitting on an empty stack with 16 capacity.
This saves ~520 kB on cnet.com video pages.
- platform/graphics/GraphicsContext.cpp:
(WebCore::GraphicsContext::restore):
- platform/graphics/GraphicsContext.h:
- 5:45 PM Changeset in webkit [185395] by
-
- 8 edits2 adds in trunk
SVG Fragment is not rendered if it is the css background image of an HTML element
https://bugs.webkit.org/show_bug.cgi?id=91790
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-06-09
Reviewed by Darin Adler.
Source/WebCore:
To show an SVG fragment, the SVGImage has to scrollToFragment() using
the resource url. The changes http://trac.webkit.org/changeset/164804
and http://trac.webkit.org/changeset/164983 set the url of SVGImage to
to be used later in SVGImage::draw(). The problem is the SVGImage url
is only set when it is the src of an <img> tag. We did not do the same
thing when the SVGImage is the css background image of an HTML element.
The fix is to set the url of the SVGImage always when it's created by
the CachedImage. The CachedImage must have a valid url when the SVGImage
is created.
Test: svg/css/svg-resource-fragment-identifier-background.html
- loader/cache/CachedImage.cpp:
(WebCore::CachedImage::load):
(WebCore::CachedImage::checkShouldPaintBrokenImage):
Replace the calls resourceRequest().url() and m_resourceRequest.url() by
calling url() since they are all the same.
(WebCore::CachedImage::createImage): Pass the resource url to SVGImage
and change ImageObserver& by ImageObserver*, since null is not legal.
- svg/graphics/SVGImage.cpp:
(WebCore::SVGImage::SVGImage):
- svg/graphics/SVGImage.h: Add a url parameter to SVGImage constructor.
- svg/graphics/SVGImageCache.cpp:
(WebCore::SVGImageCache::findImageForRenderer): Add a new helper function.
(WebCore::SVGImageCache::imageSizeForRenderer):
(WebCore::SVGImageCache::imageForRenderer): Code clean up.
- svg/graphics/SVGImageCache.h: Make imageForRenderer() const.
- svg/graphics/SVGImageForContainer.cpp: Remove unneeded header file.
LayoutTests:
- svg/css/svg-resource-fragment-identifier-background-expected.html: Added.
- svg/css/svg-resource-fragment-identifier-background.html: Added.
Ensure that the SVG fragment is displayed correctly when it's used as a
css background image.
- 5:43 PM Changeset in webkit [185394] by
-
- 5 edits in trunk/Source/WebCore
Add support for toggling playback in MediaSessions and MediaSessionManagers.
https://bugs.webkit.org/show_bug.cgi?id=145822
Patch by Matt Rajca <mrajca@apple.com> on 2015-06-09
Reviewed by Eric Carlson.
- Modules/mediasession/MediaSession.cpp: Toggle playback of all active media elements.
(WebCore::MediaSession::togglePlayback):
- Modules/mediasession/MediaSession.h:
- Modules/mediasession/MediaSessionManager.cpp: Toggle playback of all media sessions as described in the Media Session spec.
(WebCore::MediaSessionManager::togglePlayback):
- Modules/mediasession/MediaSessionManager.h:
- 4:49 PM Changeset in webkit [185393] by
-
- 5 edits in trunk
Takes two delete key presses to delete pasted emoji up-pointing index finger with skin tone
https://bugs.webkit.org/show_bug.cgi?id=145823
Reviewed by Anders Carlsson.
Source/WebCore:
Tests: editing/deleting/delete-emoji.html
- rendering/RenderText.cpp:
(WebCore::isHangulLVT): Use constants instead of macros. Also changed to take a UChar since
the Hangul processing can work on UTF-16 code unit at a time and doesn't have to handle
surrogate pairs.
(WebCore::isMark): Use U_GC_M_MASK instead of writing the algorithm out another way.
(WebCore::isInArmenianToLimbuRange): Added.
(WebCore::RenderText::previousOffsetForBackwardDeletion): Refactored for clarity and to use
the U16_PREV macro instead of doing what it does in a sloppier way. Added code to allow a
variation selector before an emoji modifier to fix the bug. Changed Hangul logic to work a
code unit at a time, since it can, to use an enum class, and to use constants rather than
all capital macros. Also changed the "dumb" case to use a more appropriate ICU macro.
LayoutTests:
- editing/deleting/delete-emoji-expected.txt: Updated to expect a little more testing.
- editing/deleting/delete-emoji.html: Added a test case and streamlined the test a bit.
- 4:24 PM Changeset in webkit [185392] by
-
- 6 edits2 adds in trunk
feComposite filter does not clip the paint rect to its effect rect when the operator is 'in' or 'atop'
https://bugs.webkit.org/show_bug.cgi?id=137856
Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-06-09
Reviewed by Darin Adler.
Source/WebCore:
There was bug in calculating the absolutePaintRect of the feComposite filter
when the operator is equal to 'in' or 'atop'. The absolutePaintRect was set
to the absolutePaintRect of the background FilterEffect which is correct.
What was missing is clipping this rectangle to the maxEffectRect of the
filter which we do for other operators.
Tests: svg/filters/feComposite-background-rect-control-operators.svg
- platform/graphics/IntRect.h:
(WebCore::operator-=):
(WebCore::operator-): Add new operators to IntRect.
- platform/graphics/filters/FEComposite.cpp:
(WebCore::FEComposite::determineAbsolutePaintRect): Make sure the filter
absolutePaintRect is clipped to maxEffectRect for all operators.
(WebCore::FEComposite::platformApplySoftware): Code clean-up.
- platform/graphics/filters/FilterEffect.cpp:
(WebCore::FilterEffect::determineAbsolutePaintRect): Move the clipping
part to a separate function.
(WebCore::FilterEffect::clipAbsolutePaintRect): Clip the absolutePaintRect
to the maxEffectRect of the filter.
- platform/graphics/filters/FilterEffect.h:
LayoutTests:
- svg/filters/feComposite-background-rect-control-operators-expected.svg: Added.
- svg/filters/feComposite-background-rect-control-operators.svg: Added.
Ensure the painting rect of the feComposite filter with operator 'in' or
'atop' is clipped to its bounding rectangle
- 4:22 PM Changeset in webkit [185391] by
-
- 2 edits in trunk/Source/WebKit2
Fix build.
- UIProcess/Plugins/WebPluginSiteDataManager.cpp:
(WebKit::WebPluginSiteDataManager::GetSitesWithDataState::getSitesWithDataForNextPlugin):
- 4:09 PM Changeset in webkit [185390] by
-
- 6 edits in trunk/Source/WebKit2
Change the PluginProcessManager data fetching function to take a completion handler
https://bugs.webkit.org/show_bug.cgi?id=145821
Reviewed by Sam Weinig.
- UIProcess/Plugins/PluginProcessManager.cpp:
(WebKit::PluginProcessManager::fetchWebsiteData):
(WebKit::PluginProcessManager::getSitesWithData): Deleted.
- UIProcess/Plugins/PluginProcessManager.h:
- UIProcess/Plugins/PluginProcessProxy.cpp:
(WebKit::generateCallbackID):
(WebKit::PluginProcessProxy::~PluginProcessProxy):
(WebKit::PluginProcessProxy::fetchWebsiteData):
(WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch):
(WebKit::PluginProcessProxy::didFinishLaunching):
(WebKit::PluginProcessProxy::didGetSitesWithData):
(WebKit::PluginProcessProxy::getSitesWithData): Deleted.
- UIProcess/Plugins/PluginProcessProxy.h:
- UIProcess/Plugins/WebPluginSiteDataManager.cpp:
(WebKit::WebPluginSiteDataManager::GetSitesWithDataState::getSitesWithDataForNextPlugin):
- 3:57 PM Changeset in webkit [185389] by
-
- 3 edits2 copies in trunk/Source/WebCore
Implement MediaSessionManager to keep track of all MediaSessions.
https://bugs.webkit.org/show_bug.cgi?id=145806
Patch by Matt Rajca <mrajca@apple.com> on 2015-06-09
Reviewed by Eric Carlson.
- Modules/mediasession/MediaSession.cpp:
(WebCore::MediaSession::MediaSession): Add ourselves to the MediaSessionManager upon construction.
(WebCore::MediaSession::~MediaSession): Remove ourselves from the MediaSessionManager before destruction.
- Modules/mediasession/MediaSessionManager.cpp: Added to keep track of all living MediaSessions.
(WebCore::MediaSessionManager::singleton):
(WebCore::MediaSessionManager::addMediaSession):
(WebCore::MediaSessionManager::removeMediaSession):
- Modules/mediasession/MediaSessionManager.h: Added.
- WebCore.xcodeproj/project.pbxproj: Added new MediaSessionManager sources.
- 3:20 PM Changeset in webkit [185388] by
-
- 5 edits in trunk/Source/WebCore
[CoordinatedGraphics] Remove RefCounted from Tile
https://bugs.webkit.org/show_bug.cgi?id=145788
Reviewed by Darin Adler.
Since r185140, Tile does not need to be RefCounted.
No new tests, no behavior changes.
- platform/graphics/texmap/coordinated/Tile.cpp:
(WebCore::Tile::create): Deleted.
- platform/graphics/texmap/coordinated/Tile.h:
- platform/graphics/texmap/coordinated/TiledBackingStore.cpp:
(WebCore::TiledBackingStore::invalidate):
(WebCore::TiledBackingStore::updateTileBuffers): Simplifies not to use unnecessary Vector.
(WebCore::TiledBackingStore::coverageRatio):
(WebCore::TiledBackingStore::createTiles):
(WebCore::TiledBackingStore::resizeEdgeTiles):
(WebCore::TiledBackingStore::setKeepRect):
(WebCore::TiledBackingStore::tileAt): Deleted one line wrapper.
(WebCore::TiledBackingStore::setTile): Ditto.
(WebCore::TiledBackingStore::removeTile): Ditto.
- platform/graphics/texmap/coordinated/TiledBackingStore.h:
- 3:15 PM Changeset in webkit [185387] by
-
- 12 edits in trunk/Source
Allow one sync GC per gcTimer interval on critical memory pressure warning
https://bugs.webkit.org/show_bug.cgi?id=145773
Reviewed by Geoffrey Garen.
Source/JavaScriptCore:
On critical memory pressure warning, we were calling GCController::garbageCollectSoon(),
which does not offer any guarantee on when the garbage collection will actually take
place.
On critical memory pressure, we need to free up memory as soon as possible to avoid
getting killed so this is an issue. Also, the fact that we clear the PageCache on
critical memory pressure means a GC would likely be useful, even if the last
collection did not free much memory.
This patch adds a new GCController::garbageCollectNowIfNotDoneRecently() API that allows
one synchronous GC per gcTimer interval on critical memory pressure warning. This makes
us more responsive to critical memory pressure and avoids doing synchronous GCs too
often.
- heap/FullGCActivityCallback.cpp:
(JSC::FullGCActivityCallback::doCollection):
- heap/FullGCActivityCallback.h:
(JSC::GCActivityCallback::createFullTimer):
- heap/GCActivityCallback.h:
- heap/Heap.cpp:
(JSC::Heap::collectAllGarbageIfNotDoneRecently):
- heap/Heap.h:
- heap/IncrementalSweeper.cpp:
(JSC::IncrementalSweeper::doWork): Deleted.
- heap/IncrementalSweeper.h:
Drop fullSweep() API as it no longer seems useful. garbageCollectNow()
already does a sweep after the full collection.
Source/WebCore:
- bindings/js/GCController.cpp:
(WebCore::GCController::garbageCollectNowIfNotDoneRecently):
Add new GCController::garbageCollectNowIfNotDoneRecently() API that
allows one synchronous GC per full GC timer interval. If called more
than once per interval, it becomes equivalent to garbageCollectSoon()
and merely accelerates the next collection.
- bindings/js/GCController.h:
- platform/MemoryPressureHandler.cpp:
(WebCore::MemoryPressureHandler::releaseCriticalMemory):
Call the new GCController::garbageCollectNowIfNotDoneRecently() on
critical memory pressure instead of garbageCollectionSoon() to try
as do a synchronous GC if one wasn't already done recently.
Also drop call to fullSweep() as GCController::garbageCollectNow*()
already do a sweep after the collection.
- 3:12 PM Changeset in webkit [185386] by
-
- 6 edits in trunk/Source/WebKit2
Add code to keep track of plug-in data host names in website data records
https://bugs.webkit.org/show_bug.cgi?id=145818
Reviewed by Andreas Kling.
- Shared/WebsiteData/WebsiteData.cpp:
(WebKit::WebsiteData::encode):
(WebKit::WebsiteData::decode):
- Shared/WebsiteData/WebsiteData.h:
- UIProcess/WebsiteData/WebsiteDataRecord.cpp:
(WebKit::WebsiteDataRecord::displayNameForPluginDataHostName):
(WebKit::WebsiteDataRecord::addPluginDataHostName):
(WebKit::WebsiteDataRecord::displayNameForCookieHostName): Deleted.
- UIProcess/WebsiteData/WebsiteDataRecord.h:
- UIProcess/WebsiteData/WebsiteDataStore.cpp:
(WebKit::WebsiteDataStore::fetchData):
- 3:01 PM Changeset in webkit [185385] by
-
- 1 copy in tags/Safari-600.7.11
New tag.
- 3:01 PM Changeset in webkit [185384] by
-
- 1 copy in tags/Safari-600.1.4.16.6
New tag.
- 2:33 PM Changeset in webkit [185383] by
-
- 5 edits in trunk/Source/WebKit2
Add Plug-in type declarations to WKWebsiteDataRecord and friends
https://bugs.webkit.org/show_bug.cgi?id=145816
Reviewed by Andreas Kling.
- Shared/WebsiteData/WebsiteDataTypes.h:
- UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:
(dataTypesToString):
- UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h:
(WebKit::toWebsiteDataTypes):
(WebKit::toWKWebsiteDataTypes):
- UIProcess/API/Cocoa/WKWebsiteDataRecordPrivate.h:
- 2:25 PM Changeset in webkit [185382] by
-
- 5 edits in trunk/Source/JavaScriptCore
[JSC] CodeBlock::m_constantRegisters should be sized-to-fit.
<https://webkit.org/b/145784>
Reviewed by Darin Adler.
Spotted this Vector looking chubby on cnet.com, with 1.23 MB of memory
allocated below CodeBlock::setConstantRegisters().
Use resizeToFit() instead since we know the final size up front.
Also removed some unused functions that operated on this constants vector
and the corresponding one in UnlinkedCodeBlock.
- bytecode/CodeBlock.cpp:
(JSC::CodeBlock::addOrFindConstant): Deleted.
(JSC::CodeBlock::findConstant): Deleted.
- bytecode/CodeBlock.h:
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::numberOfConstantRegisters): Deleted.
- bytecode/UnlinkedCodeBlock.cpp:
(JSC::UnlinkedCodeBlock::addOrFindConstant): Deleted.
- bytecode/UnlinkedCodeBlock.h:
(JSC::UnlinkedCodeBlock::numberOfConstantRegisters): Deleted.
(JSC::UnlinkedCodeBlock::getConstant): Deleted.
- 2:23 PM Changeset in webkit [185381] by
-
- 3 edits in trunk/Source/JavaScriptCore
[JSC] Polymorphic{Get,Put}ByIdList::addAccess() should optimize for size, not speed.
<https://webkit.org/b/145786>
Reviewed by Darin Adler.
These functions already contained comments saying they optimize for size over speed,
but they were using Vector::resize() which adds the usual slack for faster append().
Switch them over to using Vector::resizeToFit() instead, which makes the Vector
allocate a perfectly sized backing store.
Spotted 670 kB of the GetById ones, and 165 kB of PutById on cnet.com, so these
Vectors are definitely worth shrink-wrapping.
- bytecode/PolymorphicGetByIdList.cpp:
(JSC::PolymorphicGetByIdList::addAccess):
- bytecode/PolymorphicPutByIdList.cpp:
(JSC::PolymorphicPutByIdList::addAccess):
- 2:21 PM Changeset in webkit [185380] by
-
- 2 edits in trunk/Source/JavaScriptCore
[JSC] JSPropertyNameEnumerator's property name vector should be sized-to-fit.
<https://webkit.org/b/145787>
Reviewed by Darin Adler.
Saw 108 kB worth of JSPropertyNameEnumerator backing store Vectors on cnet.com.
Use Vector::resizeToFit() since we know the perfect size up front.
- runtime/JSPropertyNameEnumerator.cpp:
(JSC::JSPropertyNameEnumerator::finishCreation):
- 2:20 PM Changeset in webkit [185379] by
-
- 7 edits in trunk/Source/JavaScriptCore
FunctionExecutable::isCompiling() is weird and wrong.
<https://webkit.org/b/145689>
Reviewed by Geoffrey Garen.
Remove FunctionExecutable::isCompiling() and the clearCodeIfNotCompiling() style
functions that called it before throwing away code.
isCompiling() would consider the executable to be "compiling" if it had a CodeBlock
but no JITCode. In practice, every executable gets a JITCode at the same time as it
gets a CodeBlock, by way of prepareForExecutionImpl().
- debugger/Debugger.cpp:
- heap/Heap.cpp:
(JSC::Heap::deleteAllCompiledCode):
(JSC::Heap::deleteAllUnlinkedFunctionCode):
- inspector/agents/InspectorRuntimeAgent.cpp:
(Inspector::TypeRecompiler::visit):
- runtime/Executable.cpp:
(JSC::FunctionExecutable::clearUnlinkedCodeForRecompilation):
(JSC::FunctionExecutable::clearCodeIfNotCompiling): Deleted.
(JSC::FunctionExecutable::clearUnlinkedCodeForRecompilationIfNotCompiling): Deleted.
- runtime/Executable.h:
- runtime/VM.cpp:
(JSC::StackPreservingRecompiler::visit):
- 2:19 PM Changeset in webkit [185378] by
-
- 1 edit in trunk/Source/WebCore/ChangeLog
no, it was not reviewed
- 2:18 PM Changeset in webkit [185377] by
-
- 5 edits in trunk/Source/WebCore
Follow-up fix for:
JavaScript bindings are unnecessarily checking for impossible empty JSValue arguments
https://bugs.webkit.org/show_bug.cgi?id=145811
Reviewed by Antti Koivisto.
There was one unusual case in the bindings generator that was depending on this.
- bindings/js/JSDOMBinding.h:
(WebCore::argumentOrNull): Deleted.
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateParametersCheck): Stop using argumentOrNull.
- bindings/scripts/test/JS/JSTestNamedConstructor.cpp: Updated.
- bindings/scripts/test/JS/JSTestObj.cpp: Updated.
- 1:23 PM Changeset in webkit [185376] by
-
- 18 edits3 copies in branches/safari-600.1.4.16-branch
Merged r183682. rdar://problem/21290700
- 1:22 PM Changeset in webkit [185375] by
-
- 18 edits3 copies in branches/safari-600.7-branch
Merged r183682. rdar://problem/21290693
- 1:12 PM Changeset in webkit [185374] by
-
- 2 edits in trunk/Source/WebKit2
REGRESSION(r185262): NetworkCache is in wrong location on OS X
https://bugs.webkit.org/show_bug.cgi?id=145812
Reviewed by Anders Carlsson.
- UIProcess/Cocoa/WebProcessPoolCocoa.mm:
(WebKit::WebProcessPool::legacyPlatformDefaultWebSQLDatabaseDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultLocalStorageDirectory):
(WebKit::WebProcessPool::legacyPlatformDefaultMediaKeysStorageDirectory):
(WebKit::WebProcessPool::isNetworkCacheEnabled):
Make sure static functions that use NSUserDefaults call registerUserDefaultsIfNeeded() first.
- 12:55 PM Changeset in webkit [185373] by
-
- 15 edits in trunk/Source/WebCore
JavaScript bindings are unnecessarily checking for impossible empty JSValue arguments
https://bugs.webkit.org/show_bug.cgi?id=145811
Reviewed by Antti Koivisto.
At some point, someone who didn't understand JSValue very well added checks for
isEmpty (and the function isEmpty itself) in JavaScript bindings. But the engine
never would pass an empty JSValue to a binding; that's used only inside the
engine itself. I think this was done by some Google V8 experts a while back, so
it's not entirely surprising they didn't understand this. But we don't want to
keep all that unneeded code.
- bindings/js/JSAudioTrackCustom.cpp:
(WebCore::JSAudioTrack::setKind): Removed the isEmpty clause here. I presume this
was copied and pasted from script-generated bindings. While I was at it, I used a
slightly more efficient code path that avoids doing a ref/deref on the string by
using auto&. That's trickier to do correctly for functions with more than one
argument, so I didn't do it in the bindings generator yet.
(WebCore::JSAudioTrack::setLanguage): Ditto.
- bindings/js/JSTextTrackCustom.cpp:
(WebCore::JSTextTrack::setKind): Ditto.
(WebCore::JSTextTrack::setLanguage): Ditto.
- bindings/js/JSVideoTrackCustom.cpp:
(WebCore::JSVideoTrack::setKind): Ditto.
(WebCore::JSVideoTrack::setLanguage): Ditto.
- bindings/scripts/CodeGeneratorJS.pm:
(GenerateImplementation): Use "=" syntax instead of constructor style syntax for
the argument processing. I think this is more readable.
(GenerateParametersCheck): For the enum code path, did the more efficient auto&
idiom to avoid ref/deref on a string. For the toExistingAtomicString path,
restructured so we don't have to check the flag indicating that something is atomic.
Later we could also avoid the ref/deref; added a FIXME about that.
(GetNativeType): Use String, not const String, for local variables. Sure, the
string is const, but so is every other local variable type we use! No need to be
wordy about it.
(JSValueToNative): Removed the uneeded calls to isEmpty. Since the call sites no
longer use construction syntax, used initializer syntax style for a couple classes
that are constructed with multiple arguments.
- bindings/scripts/test/JS/JSTestActiveDOMObject.cpp: Updated.
- bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp: Ditto.
- bindings/scripts/test/JS/JSTestEventTarget.cpp: Ditto.
- bindings/scripts/test/JS/JSTestInterface.cpp: Ditto.
- bindings/scripts/test/JS/JSTestNamedConstructor.cpp: Ditto.
- bindings/scripts/test/JS/JSTestNondeterministic.cpp: Ditto.
- bindings/scripts/test/JS/JSTestObj.cpp: Ditto.
- bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp: Ditto.
- bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp: Ditto.
- bindings/scripts/test/JS/JSTestTypedefs.cpp: Ditto.
- 12:29 PM Changeset in webkit [185372] by
-
- 3 edits in trunk/Source/WebCore
Fix unused private field warning in GraphicsLayerUpdater.h
https://bugs.webkit.org/show_bug.cgi?id=145757
Reviewed by Darin Adler.
- platform/graphics/GraphicsLayerUpdater.cpp:
(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):
- platform/graphics/GraphicsLayerUpdater.h:
- 12:29 PM Changeset in webkit [185371] by
-
- 5 edits in trunk/Tools
run-benchmark should either checkout JetStream 1.0.1 or support running the latest version
https://bugs.webkit.org/show_bug.cgi?id=145764
Reviewed by Darin Adler.
Added the support for checkout a subversion directory in run-benchmark and used in the plans for
JetStream and SunSpider.
- Scripts/webkitpy/benchmark_runner/benchmark_builder/generic_benchmark_builder.py:
(GenericBenchmarkBuilder):
(GenericBenchmarkBuilder.prepare): Instead of taking each argument from benchmark plan, just accept
the whole JSON as the input.
(GenericBenchmarkBuilder._checkoutWithSubverion): Added.
(GenericBenchmarkBuilder._applyPatch): Check the existence of benchmark_patch in prepare() instead.
- Scripts/webkitpy/benchmark_runner/benchmark_runner.py:
(BenchmarkRunner.execute): Removed the check for having either 'local_copy' or 'remote_archive' in
a benchmark plan now that it's checkedi in GenericBenchmarkBuilder.prepare.
- Scripts/webkitpy/benchmark_runner/data/plans/jetstream.plan:
- Scripts/webkitpy/benchmark_runner/data/plans/sunspider.plan:
- 11:42 AM Changeset in webkit [185370] by
-
- 41 edits9 adds in trunk
Introduce getter definition into static hash tables and use it for getters in RegExp.prototype.
https://bugs.webkit.org/show_bug.cgi?id=145705
Reviewed by Darin Adler.
Source/JavaScriptCore:
In this patch, we introduce Accessor type into property tables.
With Accessor type, create_hash_table creates a static getter property.
This getter property is reified as the same to the static functions.
In the mean time, we only support getter because
putEntryandlookupPut
only work with null setter currently. However, in the spec, there's
no need to add static setter properties. So we will add it if it becomes
necessary in the future.
And at the same time, this patch fixes the issue 145738. Before this patch,
putEntryinJSObject::deletePropertyaddsundefinedproperty if
isValidOffset(...)is false (deleted). As the result, deleting twice
revives the property withundefinedvalue.
If the static functions are reified and the entry is
BuiltinOrFunctionOrAccessor, there's no need to executeputEntrywith
static hash table entry. They should be handled in the normal structure's
looking up because they should be already reified. So added guard for this.
- CMakeLists.txt:
- DerivedSources.make:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
- JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
- JavaScriptCore.xcodeproj/project.pbxproj:
- create_hash_table:
- runtime/JSObject.cpp:
(JSC::getClassPropertyNames):
(JSC::JSObject::put):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::reifyStaticFunctionsForDelete):
- runtime/Lookup.cpp:
(JSC::reifyStaticAccessor):
(JSC::setUpStaticFunctionSlot):
- runtime/Lookup.h:
(JSC::HashTableValue::propertyGetter):
(JSC::HashTableValue::propertyPutter):
(JSC::HashTableValue::accessorGetter):
(JSC::HashTableValue::accessorSetter):
(JSC::getStaticPropertySlot):
(JSC::getStaticValueSlot):
(JSC::putEntry):
(JSC::reifyStaticProperties):
- runtime/PropertySlot.h:
- runtime/RegExpObject.cpp:
(JSC::RegExpObject::getOwnPropertySlot):
(JSC::regExpObjectGlobal): Deleted.
(JSC::regExpObjectIgnoreCase): Deleted.
(JSC::regExpObjectMultiline): Deleted.
(JSC::appendLineTerminatorEscape<LChar>): Deleted.
(JSC::appendLineTerminatorEscape<UChar>): Deleted.
(JSC::regExpObjectSourceInternal): Deleted.
(JSC::regExpObjectSource): Deleted.
- runtime/RegExpPrototype.cpp:
(JSC::RegExpPrototype::getOwnPropertySlot):
(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::appendLineTerminatorEscape<LChar>):
(JSC::appendLineTerminatorEscape<UChar>):
(JSC::regExpProtoGetterSourceInternal):
(JSC::regExpProtoGetterSource):
- tests/stress/static-function-delete.js: Added.
(shouldBe):
- tests/stress/static-function-put.js: Added.
(shouldBe):
- tests/stress/static-getter-delete.js: Added.
(shouldBe):
(shouldThrow):
- tests/stress/static-getter-descriptors.js: Added.
(shouldBe):
- tests/stress/static-getter-enumeration.js: Added.
(shouldBe):
- tests/stress/static-getter-get.js: Added.
(shouldBe):
- tests/stress/static-getter-in-names.js: Added.
(shouldBe):
- tests/stress/static-getter-names.js: Added.
(shouldBe):
- tests/stress/static-getter-put.js: Added.
(shouldBe):
(shouldThrow):
LayoutTests:
Adjust RegExp.prototype and instance's getter layout.
This is a breaking change from ES5.
So ES5 conformance tests like sputnik is needed to be fixed.
- ietestcenter/Javascript/15.2.3.3-4-212-expected.txt:
- ietestcenter/Javascript/15.2.3.3-4-213-expected.txt:
- ietestcenter/Javascript/15.2.3.3-4-214-expected.txt:
- ietestcenter/Javascript/15.2.3.3-4-215-expected.txt:
- ietestcenter/Javascript/TestCases/15.2.3.3-4-212.js:
(ES5Harness.registerTest):
- ietestcenter/Javascript/TestCases/15.2.3.3-4-213.js:
(ES5Harness.registerTest):
- ietestcenter/Javascript/TestCases/15.2.3.3-4-214.js:
(ES5Harness.registerTest):
- ietestcenter/Javascript/TestCases/15.2.3.3-4-215.js:
(ES5Harness.registerTest):
- js/Object-getOwnPropertyNames-expected.txt:
- js/dom/getOwnPropertyDescriptor-expected.txt:
- js/mozilla/strict/15.10.7-expected.txt:
- js/mozilla/strict/script-tests/15.10.7.js:
- js/pic/cached-named-property-getter.html:
- js/resources/getOwnPropertyDescriptor.js:
(.get descriptorShouldBe):
- js/script-tests/Object-getOwnPropertyNames.js:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A10.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A8.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.1_source/S15.10.7.1_A9.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A10.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A8.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.2_global/S15.10.7.2_A9.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A10.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A8.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.3_ignoreCase/S15.10.7.3_A9.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A10.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A8.html:
- sputnik/Conformance/15_Native_Objects/15.10_RegExp/15.10.7/15.10.7.4_multiline/S15.10.7.4_A9.html:
- 11:31 AM Changeset in webkit [185369] by
-
- 6 edits2 adds in trunk
Crash when passing Symbol to NPAPI plugin objects
https://bugs.webkit.org/show_bug.cgi?id=145798
Reviewed by Darin Adler.
Source/WebCore:
Test: plugins/npruntime/script-object-with-symbols.html
For C bridge APIs, we add guards for symbols.
This is the same to the existing guards in Objective-C APIs.
- bridge/c/c_class.cpp:
(JSC::Bindings::CClass::methodNamed):
(JSC::Bindings::CClass::fieldNamed):
- bridge/objc/objc_class.mm:
(JSC::Bindings::ObjcClass::methodNamed):
(JSC::Bindings::ObjcClass::fieldNamed):
(JSC::Bindings::ObjcClass::fallbackObject):
Source/WebKit2:
When the symbol is passed,
propertyName.publicName()becomes nullptr.
So dereferencing it causes null dereference errors.
At first, this bug appears in the https://bugs.webkit.org/show_bug.cgi?id=145556,
plugin[@@toStringTag] ("string" + plugin) causes SEGV in plugins/embed-inside-object.html test.
This patch avoids it by early returning when the symbols are passed.
Methods for symbols are not implemented in the NPObject side, so it works correctly.
- WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::npIdentifierFromIdentifier):
(WebKit::JSNPObject::callMethod):
(WebKit::JSNPObject::getOwnPropertySlot):
(WebKit::JSNPObject::put):
(WebKit::JSNPObject::deleteProperty):
(WebKit::JSNPObject::propertyGetter):
(WebKit::JSNPObject::methodGetter):
LayoutTests:
- plugins/npruntime/script-object-with-symbols-expected.txt: Added.
- plugins/npruntime/script-object-with-symbols.html: Added.
- 11:03 AM Changeset in webkit [185368] by
-
- 3 edits in trunk/Source/JavaScriptCore
[JSC] JSString::getIndex() should avoid reifying substrings.
<https://webkit.org/b/145803>
Reviewed by Darin Adler.
Implement getIndex() using JSString::view(), which cuts it down to a one-liner
and also avoids reifying substrings.
I saw 178 kB of reified substrings below operationGetByVal -> getIndex()
on cnet.com, so this should help.
- runtime/JSString.cpp:
(JSC::JSRopeString::getIndexSlowCase): Deleted.
- runtime/JSString.h:
(JSC::JSString::getIndex):
- 11:01 AM Changeset in webkit [185367] by
-
- 2 edits in trunk/Source/JavaScriptCore
[JSC] String.prototype.indexOf() should use StringView.
<https://webkit.org/b/145351>
Reviewed by Darin Adler.
Use StringView::find() to implement String.prototype.indexOf().
This avoids reifying the needle and haystack JSStrings in case they
are substrings.
Reduces malloc memory by ~190 kB on cnet.com.
- runtime/StringPrototype.cpp:
(JSC::stringProtoFuncIndexOf):
- 10:11 AM Changeset in webkit [185366] by
-
- 2 edits in trunk/Source/WebKit2
[SOUP] Network Cache: Give more priority to reads over writes in IO WorkQueue
https://bugs.webkit.org/show_bug.cgi?id=145791
Reviewed by Sergio Villar Senin.
Keep using G_PRIORITY_DEFAULT for reads, but use
G_PRIORITY_DEFAULT_IDLE for writes now.
- NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::outputStreamWriteReadyCallback): Use
G_PRIORITY_DEFAULT_IDLE for write async operations.
(WebKit::NetworkCache::IOChannel::write): Pass
G_PRIORITY_DEFAULT_IDLE to runTaskInQueue().
- 10:07 AM Changeset in webkit [185365] by
-
- 3 edits in trunk/Source/WebKit2
[SOUP] Network Cache: run the IO completion handler in the given queue instead of the whole operation
https://bugs.webkit.org/show_bug.cgi?id=145797
Reviewed by Žan Doberšek.
I misunderstood what the WorkQueue parameter meant in the IO
channel operations. It's the queue where the completion handler
should be run, not the whole operation. Since our operations are
already non-blocking, we can just run the read/writes in the main
thread, and schedule the completion handler in the given work
queue when the operation finishes.
- NetworkProcess/cache/NetworkCacheIOChannel.h:
- NetworkProcess/cache/NetworkCacheIOChannelSoup.cpp:
(WebKit::NetworkCache::inputStreamReadReadyCallback):
(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::readSync):
(WebKit::NetworkCache::outputStreamWriteReadyCallback):
(WebKit::NetworkCache::IOChannel::write):
- 9:56 AM Changeset in webkit [185364] by
-
- 3 edits in trunk/Source/WebKit/mac
Remove more unused SPI methods
https://bugs.webkit.org/show_bug.cgi?id=145804
Reviewed by Simon Fraser.
- Misc/WebNSURLRequestExtras.h:
- Misc/WebNSURLRequestExtras.m:
(-[NSURLRequest _web_HTTPReferrer]): Deleted.
(-[NSURLRequest _web_HTTPContentType]): Deleted.
(-[NSURLRequest _web_isConditionalRequest]): Deleted.
- 8:26 AM Changeset in webkit [185363] by
-
- 3 edits in trunk/LayoutTests
Update iOS TestExpectations files
- platform/ios-simulator-wk1/TestExpectations:
- platform/ios-simulator-wk2/TestExpectations:
- 6:26 AM Changeset in webkit [185362] by
-
- 2 edits in trunk/Source/WebKit2
REGRESSION (r185357): Fix build for iOS 8.x
- UIProcess/ios/forms/WKFileUploadPanel.mm:
(fallbackIconForFile): Add cast prior to iOS 9.
- 3:30 AM Changeset in webkit [185361] by
-
- 1 edit1 delete in trunk/Tools
Remove ewstool scripts used by chromium port
https://bugs.webkit.org/show_bug.cgi?id=145789
Reviewed by Csaba Osztrogonác.
- EWSTools/GoogleComputeEngine/build-chromium-ews.sh: Removed.
- EWSTools/GoogleComputeEngine/build-commit-queue.sh: Removed.
- EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh: Removed.
- EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh: Removed.
- EWSTools/GoogleComputeEngine/findzone.sh: Removed.
- 3:03 AM Changeset in webkit [185360] by
-
- 2 edits in trunk/Source/WebKit2
[EFL] Fix a crash on MiniBrowser when running on debug mode
https://bugs.webkit.org/show_bug.cgi?id=145793
Reviewed by Carlos Garcia Campos.
r185314 missed to initialize parameters.diskCacheDirectory with configuration's one.
- UIProcess/efl/WebProcessPoolEfl.cpp:
(WebKit::WebProcessPool::platformInitializeWebProcess):
- 2:56 AM Changeset in webkit [185359] by
-
- 2 edits in trunk/Tools
Unreviewed, updated my list of email addresses.
- Scripts/webkitpy/common/config/contributors.json:
- 2:46 AM Changeset in webkit [185358] by
-
- 20 edits in trunk
[cmake] Fix the style issues in cmake project files
https://bugs.webkit.org/show_bug.cgi?id=145755
Reviewed by Darin Adler.
Source/JavaScriptCore:
- CMakeLists.txt:
Source/WebCore:
- CMakeLists.txt:
- PlatformEfl.cmake:
- PlatformGTK.cmake:
- PlatformMac.cmake:
- PlatformWin.cmake:
- PlatformWinCairo.cmake:
Source/WebKit:
- PlatformMac.cmake:
Source/WebKit2:
- CMakeLists.txt:
- PlatformGTK.cmake:
- PlatformMac.cmake:
Source/WTF:
- wtf/CMakeLists.txt:
Tools:
- TestWebKitAPI/CMakeLists.txt:
- TestWebKitAPI/PlatformEfl.cmake:
- 1:18 AM Changeset in webkit [185357] by
-
- 2 edits in trunk/Source/WebKit2
[iOS] UI process memory spike, hang when uploading a very large JPEG
<https://bugs.webkit.org/show_bug.cgi?id=145567>
<rdar://problem/21206699>
When uploading an image, we generate a thumbnail to use for an icon
that sits next to the control. To do this, we load the image and draw
it into a thumbnail-sized canvas. This can be very expensive for large
images.
To fix this, we'll use CGImageSource API, which will allow us to get
any existing thumbnail that exists in the source file.
Reviewed by Darin Adler.
- UIProcess/ios/forms/WKFileUploadPanel.mm:
(squareCropRectForSize):
Use std::round, based on Darin's review feedback that a) rintf is
incorrect in 64-bit systems where CGFloat is a double, b) rintf uses a
variable rounding mode, which is undesirable.
(squareImage):
Changed to take a CGImageRef.
Use RetainPtr and +[UIImage imageWithCGImage:] to match other code in
this file.
(thumbnailSizedImageForImage):
Changed to take a CGImageRef and to use iconSideLength.
(iconForImageFile):
Create an image source for the file, then use CGImageSource API to
generate a thumbnail.
(-[_WKImageFileUploadItem initWithFileURL:originalImage:]): Deleted.
(-[_WKImageFileUploadItem displayImage]):
Use iconForImageFile() rather than trying to generate an icon from the
UIImage.
(-[WKFileUploadPanel _uploadItemForImageData:imageName:successBlock:failureBlock:]):
Removed originalImage parameter; _WKImageFileUploadItem no longer uses
it.
(-[WKFileUploadPanel _uploadItemForJPEGRepresentationOfImage:successBlock:failureBlock:]):
(-[WKFileUploadPanel _uploadItemForImage:withAssetURL:successBlock:failureBlock:]):
- 12:45 AM Changeset in webkit [185356] by
-
- 7 edits in trunk
[Streams API] ReadableJSStream should handle JS source getters that throw
https://bugs.webkit.org/show_bug.cgi?id=145600
Reviewed by Darin Adler.
Source/WebCore:
Checking whether there is an exception when trying to access to a source method.
If so, rethrowing it in case of "start".
Refactoring of code to prepare pulling, cancelling and additional parameter handling in ReadableStream construtor.
Fixed the case of ReadableStream constructor called with an undefined parameter.
Covered by rebased test expectation.
- bindings/js/JSReadableStreamCustom.cpp:
(WebCore::constructJSReadableStream): Refactoring to group all parameter check and exception handling in ReadableJSStream::create.
- bindings/js/ReadableJSStream.cpp:
(WebCore::getPropertyFromObject):
(WebCore::callFunction):
(WebCore::ReadableJSStream::invoke): Added method to be used also for pulling and cancelling.
(WebCore::ReadableJSStream::doStart):
(WebCore::ReadableJSStream::create):
- bindings/js/ReadableJSStream.h:
LayoutTests:
- streams/reference-implementation/bad-underlying-sources-expected.txt:
- streams/reference-implementation/readable-stream-expected.txt: