Timeline



Apr 18, 2015:

11:56 PM Changeset in webkit [182991] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.6.1

New tag.

9:20 PM Changeset in webkit [182990] by Nikita Vasilyev
  • 17 edits in trunk/Source/WebInspectorUI

Web Inspector: Pass multiple arguments to classList.add and classList.remove
https://bugs.webkit.org/show_bug.cgi?id=143914

classList.add and classList.remove can accept multiple arguments, use that.

Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.updateDockedState):

  • UserInterface/Views/DOMTreeDataGrid.js:

(WebInspector.DOMTreeDataGrid):

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):

  • UserInterface/Views/DataGrid.js:

(WebInspector.DataGridNode.prototype.set hasChildren):

  • UserInterface/Views/DatabaseContentView.js:

(WebInspector.DatabaseContentView):

  • UserInterface/Views/DetailsSection.js:

(WebInspector.DetailsSection):

  • UserInterface/Views/DetailsSectionPropertiesRow.js:

(WebInspector.DetailsSectionPropertiesRow):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.set classNames):

  • UserInterface/Views/NavigationItem.js:

(WebInspector.NavigationItem):

  • UserInterface/Views/ResourceContentView.js:

(WebInspector.ResourceContentView):

  • UserInterface/Views/ResourceTimelineDataGridNode.js:

(WebInspector.ResourceTimelineDataGridNode.prototype.createCellContent):

  • UserInterface/Views/Sidebar.js:

(WebInspector.Sidebar):

  • UserInterface/Views/SidebarPanel.js:

(WebInspector.SidebarPanel):

  • UserInterface/Views/SourceCodeTextEditor.js:
  • UserInterface/Views/TextEditor.js:

(WebInspector.TextEditor):

  • UserInterface/Views/TimelineRuler.js:
9:19 PM Changeset in webkit [182989] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Make prototype pill’s background semi-transparent
https://bugs.webkit.org/show_bug.cgi?id=143928

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property.prototype-property):

(.object-tree-property.prototype-property:hover, .object-tree-property.prototype-property:focus):
Slightly highlight the prototype pill when hovering over.

8:29 PM Changeset in webkit [182988] by jonlee@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Time elapsed should be right-aligned
https://bugs.webkit.org/show_bug.cgi?id=143927

Reviewed by Eric Carlson.

Current time is left-aligned, which is visually jarring when going from < 1 hour to > 1 hour.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-current-time-display): Set justify-content to flex-end.
(audio::-webkit-media-controls-time-remaining-display): Explicitly set justify-content to flex-start.

3:06 PM Changeset in webkit [182987] by Simon Fraser
  • 2 edits in trunk/Tools

Fix lldb_webkit.py to show StringImpls correctly
https://bugs.webkit.org/show_bug.cgi?id=143920

Reviewed by Andreas Kling.

Update WTFStringImplProvider's is_8bit to use the correct bitmask.

  • lldb/lldb_webkit.py:

(WTFStringImplProvider.is_8bit):

1:15 PM Changeset in webkit [182986] by Michał Pakuła vel Rutka
  • 8 edits
    1 add in trunk/LayoutTests

[EFL] Unreviewed gardening

Update test expectations for failing tests.

  • platform/efl/TestExpectations:
  • platform/efl/fast/css/text-overflow-ellipsis-bidi-expected.txt: Rebaseline after r182620.
  • platform/efl/fast/dom/focus-contenteditable-expected.txt: Ditto.
  • platform/efl/fast/forms/listbox-hit-test-zoomed-expected.txt: Ditto.
  • platform/efl/fast/parser/open-comment-in-textarea-expected.txt: Ditto.
  • platform/efl/fast/text/international/bidi-layout-across-linebreak-expected.txt: Ditto.
  • platform/efl/inspector-protocol/debugger/regress-133182-expected.txt: Rebaseline after r181810.
  • platform/efl/svg/wicd/test-rightsizing-b-expected.txt: Rebaseline after r182620.
12:39 PM Changeset in webkit [182985] by Simon Fraser
  • 25 edits
    2 adds in trunk

REGRESSION (r181656): Animated tiled layers are missing content
https://bugs.webkit.org/show_bug.cgi?id=143911
rdar://problem/20596328

Reviewed by Darin Adler.
Source/WebCore:

After r181656, all requestAnimationFrame was falling back to timers, and not
using the platform's DisplayRefreshMonitor, because of a Nullopt vs nullptr
fumble. As a result, GraphicsLayerUpdater (which updates tiled layers during
animations) was failing to do any updates.

Replace this confusing Optional<> code with simpler code that just forces the
clients to make a DisplayRefreshMonitor if they can, first asking
ChromeClient, and then falling back to createDefaultDisplayRefreshMonitor().

Make lots of things into references, and use C++11 initialization in some places.

Add Internals API to allow a test to get the number of layer flushes that have
occurred.

  • dom/ScriptedAnimationController.cpp:

(WebCore::ScriptedAnimationController::ScriptedAnimationController):
(WebCore::ScriptedAnimationController::windowScreenDidChange):
(WebCore::ScriptedAnimationController::scheduleAnimation):
(WebCore::ScriptedAnimationController::createDisplayRefreshMonitor):

  • dom/ScriptedAnimationController.h:
  • page/ChromeClient.h:
  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::createDefaultDisplayRefreshMonitor):
(WebCore::DisplayRefreshMonitor::create):
(WebCore::DisplayRefreshMonitor::addClient):
(WebCore::DisplayRefreshMonitor::removeClient):
(WebCore::DisplayRefreshMonitor::displayDidRefresh):

  • platform/graphics/DisplayRefreshMonitor.h:
  • platform/graphics/DisplayRefreshMonitorClient.cpp:

(WebCore::DisplayRefreshMonitorClient::~DisplayRefreshMonitorClient):

  • platform/graphics/DisplayRefreshMonitorClient.h:
  • platform/graphics/DisplayRefreshMonitorManager.cpp:

(WebCore::DisplayRefreshMonitorManager::createMonitorForClient):
(WebCore::DisplayRefreshMonitorManager::registerClient):
(WebCore::DisplayRefreshMonitorManager::unregisterClient):
(WebCore::DisplayRefreshMonitorManager::scheduleAnimation):
(WebCore::DisplayRefreshMonitorManager::displayDidRefresh):
(WebCore::DisplayRefreshMonitorManager::windowScreenDidChange):

  • platform/graphics/DisplayRefreshMonitorManager.h:
  • platform/graphics/GraphicsLayerUpdater.cpp:

(WebCore::GraphicsLayerUpdater::GraphicsLayerUpdater):
(WebCore::GraphicsLayerUpdater::scheduleUpdate):
(WebCore::GraphicsLayerUpdater::screenDidChange):
(WebCore::GraphicsLayerUpdater::displayRefreshFired):
(WebCore::GraphicsLayerUpdater::createDisplayRefreshMonitor):

  • platform/graphics/GraphicsLayerUpdater.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::RenderLayerCompositor):
(WebCore::RenderLayerCompositor::flushPendingLayerChanges):
(WebCore::RenderLayerCompositor::notifyFlushBeforeDisplayRefresh):
(WebCore::RenderLayerCompositor::flushLayersSoon):
(WebCore::RenderLayerCompositor::createDisplayRefreshMonitor):
(WebCore::RenderLayerCompositor::startTrackingLayerFlushes):
(WebCore::RenderLayerCompositor::layerFlushCount):

  • rendering/RenderLayerCompositor.h:
  • testing/Internals.cpp:

(WebCore::Internals::startTrackingLayerFlushes):
(WebCore::Internals::layerFlushCount):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit2:

After r181656, all requestAnimationFrame was falling back to timers, and not
using the platform's DisplayRefreshMonitor, because of a Nullopt vs nullptr
fumble.

Replace this confusing Optional<> code with simpler code that just forces the
clients to make a DisplayRefreshMonitor if they can, first asking
ChromeClient, and then falling back to createDefaultDisplayRefreshMonitor().

Make lots of things into references, and use C++11 initialization in some places.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::createDisplayRefreshMonitor):

  • WebProcess/WebCoreSupport/WebChromeClient.h:

LayoutTests:

Test that animates a tiled layer, and checks that layer flushes occur while the
animation is running.

  • compositing/animation/animation-backing-expected.txt: Added.
  • compositing/animation/animation-backing.html: Added.
7:57 AM Changeset in webkit [182984] by mitz@apple.com
  • 3 edits
    2 moves
    1 add in trunk/Source/WebKit2

SwipeShadow images are installed on iOS
https://bugs.webkit.org/show_bug.cgi?id=143915

Reviewed by Tim Horton.

  • Configurations/WebKit.xcconfig: Added Resources/Mac/* to

EXCLUDED_SOURCE_FILE_NAMES[sdk=iphone*]. We could move more resources there and remove
individual patterns.

  • Resources/SwipeShadow.png: Moved to mac.
  • Resources/SwipeShadow@2x.png: Moved to mac.
  • Resources/mac: Added.
  • Resources/mac/SwipeShadow.png: Moved from Source/WebKit2/Resources/SwipeShadow.png.
  • Resources/mac/SwipeShadow@2x.png: Moved from Source/WebKit2/Resources/SwipeShadow@2x.png.
  • WebKit2.xcodeproj/project.pbxproj: Created mac group in the Resources group and moved

SwipeShadow*.png into it. Updated for file moves.

7:42 AM Changeset in webkit [182983] by Chris Dumez
  • 4 edits in trunk/Source/WebKit2

Fix NetworkCache Statistics database bootstrapping after r182803
https://bugs.webkit.org/show_bug.cgi?id=143890

Reviewed by Darin Adler.

Update the NetworkCache Statistics database bootstrapping code to use
the records path instead of the version path. Also check that the
filenames in the folder are valid hashes to discard the *-body files.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::recordsPath):
(WebKit::NetworkCache::Cache::storagePath): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::Statistics::initialize):
(WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache):
(WebKit::NetworkCache::Statistics::shrinkIfNeeded):

Apr 17, 2015:

9:04 PM Changeset in webkit [182982] by jonowells@apple.com
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: All sans-serif font family rules should be set the same way.
https://bugs.webkit.org/show_bug.cgi?id=143909

Reviewed by Timothy Hatcher.

Update styles so that all uses of sans-serif font use -webkit-system-font consistently.

  • UserInterface/Views/DefaultDashboardView.css:

(body.mac-platform.legacy .toolbar .dashboard.default > .item):

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property .prototype-name):

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree-outline li .empty-message):

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css:

(.timeline-overview-graph.rendering-frame > .divider > .label):

7:55 PM Changeset in webkit [182981] by aestes@apple.com
  • 2 edits in branches/safari-600.6-branch/Source/WebCore

Merged r181409. rdar://problem/20540512

6:04 PM Changeset in webkit [182980] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

Clients sometimes block for 500ms in waitForPossibleGeometryUpdates
https://bugs.webkit.org/show_bug.cgi?id=143901
<rdar://problem/20488655>

Reviewed by Anders Carlsson.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::waitForMessage):
InterruptWaitingIfSyncMessageArrives already cancels waitForMessage if
a sync message arrives while waiting, but it should also avoid waiting
if there's a sync message already in the queue when the waiting starts,
as that will have the same nasty effect.

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.mm:

(WebKit::TiledCoreAnimationDrawingAreaProxy::waitForPossibleGeometryUpdate):
If a synchronous message comes in from the Web process while we're waiting,
cancel our synchronous wait for DidUpdateGeometry. This will cause the size
change to not synchronize with the Web process' painting, but that is better
than pointlessly blocking for 500ms.

5:46 PM Changeset in webkit [182979] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

Possible null pointer dereference in WebDiagnosticLoggingClient::logDiagnosticMessageWithValue()
https://bugs.webkit.org/show_bug.cgi?id=143899
<rdar://problem/20584215>

Reviewed by Anders Carlsson.

WebDiagnosticLoggingClient::logDiagnosticMessage*() methods failed to
check that m_page.corePage() was non-null before dereferencing, thus
causing crashes when it is null.

  • WebProcess/WebCoreSupport/WebDiagnosticLoggingClient.cpp:

(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessage):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithResult):
(WebKit::WebDiagnosticLoggingClient::logDiagnosticMessageWithValue):

5:12 PM Changeset in webkit [182978] by Lucas Forschler
  • 3 edits in branches/safari-600.6-branch

Rollout r182965.

3:45 PM Changeset in webkit [182977] by ap@apple.com
  • 2 edits in trunk/Source/WTF

Use ASan poisoning to taint moved-out-of Refs
https://bugs.webkit.org/show_bug.cgi?id=143894
rdar://problem/19443723

Reviewed by Darin Adler.

  • wtf/Ref.h: (WTF::Ref::~Ref):
3:29 PM Changeset in webkit [182976] by timothy@apple.com
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Have better inactive window color for pixel borders
https://bugs.webkit.org/show_bug.cgi?id=143888

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/FindBanner.css:

(body.window-inactive .find-banner):

  • UserInterface/Views/Main.css:

(body.window-inactive.docked.bottom):
(body.window-inactive.docked.right):
(body.window-inactive #split-content-browser):

  • UserInterface/Views/NavigationBar.css:

(body.window-inactive .navigation-bar):

  • UserInterface/Views/QuickConsole.css:

(body.window-inactive .quick-console):
(.quick-console.showing-log):

  • UserInterface/Views/Sidebar.css:

(body.window-inactive .sidebar.left):
(body.window-inactive .sidebar.right):

3:28 PM Changeset in webkit [182975] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

WebKit client should be able to add view controller for link preview.
https://bugs.webkit.org/show_bug.cgi?id=143686

Add delegate methods to WKUIDelegatePrivate so that a WebKit client can prepare a view controller
for link preview and react to the dismissal of this view controller. Also connect WKContentView to
preview gesture recognizer and forwards the delegate callbacks to corresponding delegate methods
in WKUIDelegatePrivate.

Patch by Yongjun Zhang <yongjun_zhang@apple.com> on 2015-04-17
Reviewed by Beth Dakin.

  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/API/Cocoa/WKUIDelegatePrivate.h:
  • UIProcess/ios/WKContentView.mm:

(-[WKContentView willMoveToWindow:]):

  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView cleanupInteraction]):
(-[WKContentView gestureRecognizer:canPreventGestureRecognizer:]):
(-[WKContentView gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
(-[WKContentView gestureRecognizerShouldBegin:]):
(-[WKContentView previewViewControllerForPosition:inSourceView:]):
(-[WKContentView commitPreviewViewController:]):
(-[WKContentView willPresentPreviewViewController:forPosition:inSourceView:]):
(-[WKContentView didDismissPreviewViewController:committing:]):

3:25 PM Changeset in webkit [182974] by Bem Jones-Bey
  • 3 edits
    2 adds in trunk

Large values for line-height cause integer overflow in RenderStyle::computedLineHeight
https://bugs.webkit.org/show_bug.cgi?id=143863

Reviewed by Rob Buis.

Source/WebCore:

When we compute huge values for line-height through percentage or CSS
calc, we'll overflow the integer and later on
ShapeOutsideInfo::computeDeltasForContainingBlockLine will ASSERT
because it expects non-negative line height. So for the computed
line-height, clamp to an integer range to avoid overflow. Note that
the code path for percentages here is safe because LayoutUnit clamps
to an int on conversion.

This is based on a Blink patch by Rob Buis.

Test: fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::computedLineHeight): Clamp line-height to an

int to avoid overflow.

LayoutTests:

Simplified test from a fuzzer.

  • fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-negative-line-height-crash.html: Added.
3:22 PM Changeset in webkit [182973] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Unexpected background at top of console when rubber-banding with selection
https://bugs.webkit.org/show_bug.cgi?id=140710

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-17
Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.css:

(.console-messages):
Remove the focus ring on the console's log view, only visible when rubber-banding.

2:59 PM Changeset in webkit [182972] by Lucas Forschler
  • 2 edits in branches/safari-600.6-branch/LayoutTests

Merged r182299. rdar://problem/20540450

2:58 PM Changeset in webkit [182971] by ap@apple.com
  • 7 edits
    1 delete in trunk/Source

Remove unused BoundsCheckedPointer
https://bugs.webkit.org/show_bug.cgi?id=143896

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • bytecode/SpeculatedType.cpp: The header was included here.

Source/WTF:

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/BoundsCheckedPointer.h: Removed.
  • wtf/CMakeLists.txt:
2:55 PM Changeset in webkit [182970] by Lucas Forschler
  • 2 edits in branches/safari-600.6-branch/Source/WebKit2

Merged r182285. rdar://problem/20540450

2:52 PM Changeset in webkit [182969] by Lucas Forschler
  • 5 edits in branches/safari-600.6-branch

Merged r182284. rdar://problem/20540450

2:46 PM Changeset in webkit [182968] by Lucas Forschler
  • 3 edits
    2 copies in branches/safari-600.6-branch

Merged r182051. rdar://problem/20540237

2:22 PM Changeset in webkit [182967] by Yusuke Suzuki
  • 5 edits in trunk

[ES6] Fix name enumeration of static functions for Symbol constructor
https://bugs.webkit.org/show_bug.cgi?id=143891

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Fix missing symbolPrototypeTable registration to the js class object.
This patch fixes name enumeration of static functions (Symbol.key, Symbol.keyFor) for Symbol constructor.

  • runtime/SymbolConstructor.cpp:

LayoutTests:

Add property names tests for Symbol constructor, Symbol object and Symbol.prototype.

  • js/Object-getOwnPropertyNames-expected.txt: Removed.
  • js/script-tests/Object-getOwnPropertyNames.js:
2:21 PM Changeset in webkit [182966] by Lucas Forschler
  • 4 edits in branches/safari-600.6-branch

Merged r181864. rdar://problem/20540342

2:18 PM Changeset in webkit [182965] by Lucas Forschler
  • 3 edits in branches/safari-600.6-branch

Merged r181409. rdar://problem/20540512

1:13 PM Changeset in webkit [182964] by dbates@webkit.org
  • 3 edits
    2 adds in trunk

Not able to build WebKit against iOS Simulator 8.3 SDK
https://bugs.webkit.org/show_bug.cgi?id=143883

Reviewed by David Kilzer.

Tools:

Copy libraries libWebKitSystemInterfaceIOS{Device, Simulator}8.3.a to the built product directory
so that Xcode uses them.

  • Scripts/copy-webkitlibraries-to-product-directory:

WebKitLibraries:

Add WebKitSystemInterface for iOS 8.3.

  • libWebKitSystemInterfaceIOSDevice8.3.a: Added.
  • libWebKitSystemInterfaceIOSSimulator8.3.a: Added.
12:55 PM Changeset in webkit [182963] by Beth Dakin
  • 39 edits
    6 adds in trunk

Force mouse events should go through normal mouse event handling code paths
https://bugs.webkit.org/show_bug.cgi?id=143749
-and corresponding-
rdar://problem/20472895

Reviewed by Dean Jackson.

Source/WebCore:

This patch moves all of the code to dispatch mouseforcedown, mouseforceup, and
mouseforcechanged into normal mouse event dispatching code. This patch leaves
behind the cancel and click events because we plan to remove those, and it also
leaves mouseforcewillbegin because that is necessarily a very different event more
tied to the NSImmediateActionGestureRecognizer than these other events which are
tied to NSResponder’s pressureChangeWithEvent.

New helper functions.

  • dom/Document.cpp:

(WebCore::Document::hasListenerTypeForEventType):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::isForceEvent):

Move the code to ensure the force events have listeners in order to fire to
dispatchMouseEvent, and delete the old implementations.
(WebCore::Element::dispatchMouseEvent):
(WebCore::Element::dispatchMouseForceChanged): Deleted.
(WebCore::Element::dispatchMouseForceDown): Deleted.
(WebCore::Element::dispatchMouseForceUp): Deleted.

  • dom/Element.h:

Perform a hit test and pipe the events through dispatchMouseEvent().

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseForceEvent):

  • page/EventHandler.h:

New types for the new events.

  • platform/PlatformEvent.h:

Forward to EventHandler.

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleMouseForceEvent):

  • replay/UserInputBridge.h:

Source/WebKit2:

This patch makes pressureChangeWithEvent create NativeWebMouseEvents with the
NSEventTypePressures that is gets and sends those down to the web process.

Re-name pressureEvent to lastPressureEvent. Now that event can sometimes be an
NSEventTypePressure, the new name makes it clear how the second parameter differs
from the first.

  • Shared/NativeWebMouseEvent.h:

New event types for the new types of events.

  • Shared/WebEvent.h:
  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/mac/NativeWebMouseEventMac.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • Shared/mac/WebEventFactory.h:

All of the square-peg, round-hole problems of massaging the NSEventTypePressures
events into WebMouseEvents is taken care of here.

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):

Instead of calling the old inputDeviceForceDidChange, create a NativeWebMouseEvent
and handle it.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

Handle the new types.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

Can delete inputDeviceForceDidChange since it’s no longer used.
(WebKit::WebPageProxy::inputDeviceForceDidChange): Deleted.

  • UIProcess/WebPageProxy.h:

Handle the new types of mouse events properly.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleMouseEvent):

Delete inputDeviceForceDidChange() and m_lastForceStage.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange): Deleted.

Handle new WebEvent types.

  • WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:

Tools:

Add mouseForceDown/mouseForceUp/mouseForceChanged support to WebKitTestRunner.
Since there is not a way to create an NSEventTypePressure from scratch, we
subclass NSEvent and override all of the critical methods.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::mouseForceDown):
(WTR::EventSendingController::mouseForceUp):
(WTR::EventSendingController::mouseForceChanged):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(-[EventSenderPressureEvent initAtLocation:globalLocation:stage:pressure:phase:time:eventNumber:]):
(-[EventSenderPressureEvent timestamp]):
(-[EventSenderPressureEvent type]):
(-[EventSenderPressureEvent locationInWindow]):
(-[EventSenderPressureEvent location]):
(-[EventSenderPressureEvent stage]):
(-[EventSenderPressureEvent pressure]):
(-[EventSenderPressureEvent phase]):
(-[EventSenderPressureEvent eventNumber]):
(WTR::EventSenderProxy::mouseForceDown):
(WTR::EventSenderProxy::mouseForceUp):
(WTR::EventSenderProxy::mouseForceChanged):

LayoutTests:

Just a few new tests. More to come.

  • fast/events/mouse-force-changed-expected.txt: Added.
  • fast/events/mouse-force-changed.html: Added.
  • fast/events/mouse-force-down-expected.txt: Added.
  • fast/events/mouse-force-down.html: Added.
  • fast/events/mouse-force-up-expected.txt: Added.
  • fast/events/mouse-force-up.html: Added.

Right now the new tests will only work on Mac 10.10.3 and beyond.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac-mavericks/TestExpectations:
  • platform/win/TestExpectations:
12:53 PM Changeset in webkit [182962] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

RenderTableCell::computeCollapsed*Border() should check if the cell is still attached to the render tree.
https://bugs.webkit.org/show_bug.cgi?id=143887
rdar://problem/20568989

Reviewed by Simon Fraser.

Detached table cell has no access to its parent table. This is a speculative fix to
avoid dereferencing the invalid table pointer.

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::computeCollapsedStartBorder):
(WebCore::RenderTableCell::computeCollapsedEndBorder):
(WebCore::RenderTableCell::computeCollapsedBeforeBorder):
(WebCore::RenderTableCell::computeCollapsedAfterBorder):

12:08 PM Changeset in webkit [182961] by Lucas Forschler
  • 12 edits
    6 copies in branches/safari-600.6-branch

Merged r180110. rdar://problem/20540540

12:08 PM Changeset in webkit [182960] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard still shows obsolete results for out of order builds sometimes
https://bugs.webkit.org/show_bug.cgi?id=143885

Reviewed by Tim Horton.

Fixed a case where we have two builds with the same revision(s). An in order build
is one for which the revision is strictly higher.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:

(BuildbotQueue.prototype._checkForInOrderResult):
(BuildbotQueue.prototype.compareIterationsByRevisions):

11:50 AM Changeset in webkit [182959] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Inline JSFunction allocation in DFG
https://bugs.webkit.org/show_bug.cgi?id=143858

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-17
Reviewed by Filip Pizlo.

Followup to my previous patch which inlines JSFunction allocation when
using FTL, now also enabled in DFG.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):

11:35 AM Changeset in webkit [182958] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Update fullscreen button visibility on fullscreen change.
https://bugs.webkit.org/show_bug.cgi?id=143861.
<rdar://problem/20143218>

Reviewed by Eric Carlson.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller): There is no need for hasVisualMedia to be a class variable.
(Controller.prototype.handleReadyStateChange):
(Controller.prototype.handleFullscreenChange):
(Controller.prototype.updateFullscreenButtons):

11:21 AM Changeset in webkit [182957] by dbates@webkit.org
  • 13 edits
    2 adds in trunk

REGRESSION: SVG does not support link dragging
https://bugs.webkit.org/show_bug.cgi?id=141597

Reviewed by Darin Adler.

Source/WebCore:

Fixes an issue where a SVG hyperlink cannot be dragged. We should support
dragging an SVG A element just as we support dragging an HTML A element.

Test: fast/events/drag-and-drop-link.html

  • page/DragController.cpp: Removed explicit include of header Element.h as it will

be ultimately included by HTMLAnchorElement.h, among other headers.
(WebCore::isDraggableLink): Added. Extracted code from HitTestResult::isLiveLink().
(WebCore::DragController::draggableElement): Call WebCore::isDraggableLink() to
determine whether a element is a hyperlink that can be dragged.

  • page/DragController.h:
  • page/EventHandler.cpp:

(WebCore::EventHandler::selectClosestWordOrLinkFromMouseEvent): Write code in terms of

WebCore::isDraggableLink().

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::isLiveLink): Deleted.

  • rendering/HitTestResult.h:

Source/WebKit/mac:

Write -[WebElementDictionary _isLiveLink] in terms of WebCore::isDraggableLink().

  • Misc/WebElementDictionary.mm:

(-[WebElementDictionary _isLiveLink]):

LayoutTests:

Add a test to ensure we do not regress dragging of a HTML hyperlink or a SVG hyperlink.

  • fast/events/drag-and-drop-link-expected.txt: Added.
  • fast/events/drag-and-drop-link.html: Added.
  • platform/efl/TestExpectations: Mark the test as "failure" since EFL does not support drag-and-drop.
  • platform/gtk/TestExpectations: Mark the test as "failure" until we implement drag-and-drop support for

GTK+ as part of fixing <https://bugs.webkit.org/show_bug.cgi?id=42194>.

  • platform/ios-simulator/TestExpectations: Skip the test since iOS does not implement

drag-and-drop support.

  • platform/mac-wk2/TestExpectations: Skip the test until we implement drag-and-drop support in EventSender

for Mac as part of fixing <https://bugs.webkit.org/show_bug.cgi?id=42194>.

10:33 AM Changeset in webkit [182956] by commit-queue@webkit.org
  • 38 edits
    6 deletes in trunk

Unreviewed, rolling out r182912 and r182920.
https://bugs.webkit.org/show_bug.cgi?id=143881

Build breakage in some configurations (Requested by ap on
#webkit).

Reverted changesets:

"Force mouse events should go through normal mouse event
handling code paths"
https://bugs.webkit.org/show_bug.cgi?id=143749
http://trac.webkit.org/changeset/182912

http://trac.webkit.org/changeset/182920

10:30 AM Changeset in webkit [182955] by Said Abou-Hallawa
  • 2 edits in trunk/Source/WebCore

Fix review comments for https://bugs.webkit.org/show_bug.cgi?id=143590
following http://trac.webkit.org/changeset/182876.

Reviewed by Daniel Bates.

  • ChangeLog:

Fixed typo.

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::computedFontSizeFromSpecifiedSize):
Fixed a typo in an enum definition and changed the name of an argument.

10:07 AM Changeset in webkit [182954] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

Network Cache: Read resource record and body in parallel
https://bugs.webkit.org/show_bug.cgi?id=143879

Reviewed by Chris Dumez.

We currently first fetch the record file and then fetch the body blob if needed.
We can do both operations in parallel to reduce latency.

  • NetworkProcess/cache/NetworkCacheFileSystemPosix.h:

(WebKit::NetworkCache::traverseCacheFiles):

Do all validation in the client.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::synchronize):

Maintain a bloom filter that contains the body blobs to avoid unnecessary IO attempts.
Delete any unknown file in cache directory.

(WebKit::NetworkCache::Storage::addToRecordFilter):

More informative name for record filter.

(WebKit::NetworkCache::Storage::mayContain):
(WebKit::NetworkCache::Storage::readRecord):
(WebKit::NetworkCache::Storage::storeBodyAsBlob):
(WebKit::NetworkCache::Storage::dispatchReadOperation):

Start record read IO and body blob read IO in parallel.

(WebKit::NetworkCache::Storage::finishReadOperation):

The read is finished when we have both the record and the blob.

(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::retrieve):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::addToContentsFilter): Deleted.
(WebKit::NetworkCache::Storage::decodeRecord): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::ReadOperation::ReadOperation):

ReadOperation is now mutable and gathers the read result.

9:49 AM Changeset in webkit [182953] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.27.2/Source

Versioning.

9:45 AM Changeset in webkit [182952] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Stop installing WebKit2.framework
https://bugs.webkit.org/show_bug.cgi?id=143860
rdar://problem/18298491

Reviewed by Dan Bernstein.

  • Configurations/WebKit2.xcconfig:

Set SKIP_INSTALL=YES for all SDKs except 10.9 where we still need it.

9:44 AM Changeset in webkit [182951] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.27.2

New tag.

8:32 AM Changeset in webkit [182950] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Gardening 17th April.
https://bugs.webkit.org/show_bug.cgi?id=143870

Unreviewed.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-04-17

  • platform/gtk/TestExpectations:
5:53 AM Changeset in webkit [182949] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Unreviewed EFL gardening on 17 April.

Mark 5 form tests and 3 navigation tests to failure.

  • platform/efl/TestExpectations:
5:00 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:58 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:14 AM Changeset in webkit [182948] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[GTK] One more unreviewed fix after r182882.

  • TestWebKitAPI/PlatformGTK.cmake: Added back the WebKit2's forwarding header generator dependency.
3:43 AM Changeset in webkit [182947] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] Silent WebAudio buffers support
https://bugs.webkit.org/show_bug.cgi?id=143869

Reviewed by Carlos Garcia Campos.

  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:

(webKitWebAudioSrcLoop): Set gap flag on silent buffers. The audio
sink can then drop them and avoid un-necessary buffer processing.

3:22 AM Changeset in webkit [182946] by Carlos Garcia Campos
  • 3 edits in trunk/Source/WebKit2

Unreviewed. Fix the build with ENABLE(NETWORK_CACHE) and !ENABLE(SHAREABLE_RESOURCE).

  • NetworkProcess/cache/NetworkCacheEntry.cpp:
  • NetworkProcess/cache/NetworkCacheFileSystemPosix.h:

(WebKit::NetworkCache::fileTimes): There's no st_birthtime in Linux.

3:19 AM Changeset in webkit [182945] by Csaba Osztrogonác
  • 3 edits in trunk/Tools

[GTK] Unreviewed speculative clean build fix after r182882.

TestWebKitAPI's forwarding header generator depended on WeKit2's
which generated SOUP related forwarding headers too.

This dependency isn't necessary and was removed by r182882 to make
forwarding header generators parallelizable. But in this case
TestWebKitAPI's and WebKitTestRunner's forwarding header generator
should generate SOUP related forwarding headers too similar to EFL.

  • TestWebKitAPI/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
3:16 AM Changeset in webkit [182944] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

[SOUP] ResourceRequest cache policy is not encoded/decoded in IPC messages
https://bugs.webkit.org/show_bug.cgi?id=143867

Reviewed by Sergio Villar Senin.

Encode/Decode the ResourceRequest cache policy.

  • Shared/soup/WebCoreArgumentCodersSoup.cpp:

(IPC::ArgumentCoder<ResourceRequest>::encodePlatformData):
(IPC::ArgumentCoder<ResourceRequest>::decodePlatformData):

3:13 AM Changeset in webkit [182943] by Carlos Garcia Campos
  • 4 edits in trunk

[SOUP] Redirect to non HTTP destination is broken
https://bugs.webkit.org/show_bug.cgi?id=143866

Reviewed by Sergio Villar Senin.

Source/WebCore:

This is because we are passing true unconditionally as
isHTTPFamilyRequest parameter of
createSoupRequestAndMessageForHandle in continueAfterWillSendRequest.
We don't actually need to pass isHTTPFamilyRequest parameter to
createSoupRequestAndMessageForHandle, since it can simply check
that from the given request.

Covered by unit tets and also cache/disk-cache/disk-cache-redirect-to-data.html.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::continueAfterWillSendRequest):
(WebCore::createSoupRequestAndMessageForHandle):
(WebCore::ResourceHandle::start):

Tools:

Add a unit test to check that redirect to a data URI works.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp:

(testRedirectToDataURI):
(serverCallback):
(beforeAll):

3:03 AM Changeset in webkit [182942] by calvaris@igalia.com
  • 7 edits in trunk/LayoutTests

streams/reference-implementation/readable-stream.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143778

Unreviewed.

Comment out flaky subtests while working on a more complete
solution.

The problem with these tests is that they set a timeout before the
calling done() and this causes some tests to behave
undeterministically, specilly code related to promise
resolution. This could even cause indetermination if the tests
were expected to run correctly.

We think it is better to comment them out and find a more long
term solution that could involve submitting change requests to the
reference tests in the spec. This will be tackled in bug 143774.

  • streams/reference-implementation/readable-stream-expected.txt:
  • streams/reference-implementation/readable-stream-reader-expected.txt:
  • streams/reference-implementation/readable-stream-reader.html:
  • streams/reference-implementation/readable-stream-templated-expected.txt:
  • streams/reference-implementation/readable-stream-templated.html:
  • streams/reference-implementation/readable-stream.html:

Apr 16, 2015:

11:50 PM Changeset in webkit [182941] by youenn.fablet@crf.canon.fr
  • 2 edits in trunk/LayoutTests

streams/readablestream-reader.html test should really test collected stream case.
https://bugs.webkit.org/show_bug.cgi?id=143818

Reviewed by Darin Adler.

Making the test async so that the stream start async callback is made and the stream be collected.

  • streams/readable-stream-reader.html:
11:06 PM Changeset in webkit [182940] by ap@apple.com
  • 3 edits in trunk/LayoutTests

http/tests/misc/DOMContentLoaded-event.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143382

Reviewed by Chris Dumez.

  • http/tests/misc/DOMContentLoaded-event-expected.txt:
  • http/tests/misc/DOMContentLoaded-event.html:

Don't race with a timer, just check if some time passes between DOMContentLoaded and load events.

7:10 PM Changeset in webkit [182939] by jonowells@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Breakpoint icons should not get pushed off of debugger sidebar due to long resource names
https://bugs.webkit.org/show_bug.cgi?id=142714

Reviewed by Timothy Hatcher.

Modify the styles for content and group containers inside the debugger sidebar panel's detail sections
such that the rules "display: table" and "display: table-row-group" no longer apply. This will make
the file names which use the rule "text-overflow: ellipsis" truncate as expected.

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger .details-section > .content):
(.sidebar > .panel.navigation.debugger .details-section.collapsed > .content):
(.sidebar > .panel.navigation.debugger .details-section > .content > .group):
(.sidebar > .panel.navigation.debugger .details-section.scripts):
(.sidebar > .panel.navigation.debugger .details-section.scripts .header):
(.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content):

6:36 PM Changeset in webkit [182938] by commit-queue@webkit.org
  • 10 edits in trunk

Number.parseInt is not === global parseInt in nightly r182673
https://bugs.webkit.org/show_bug.cgi?id=143799

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-16
Reviewed by Darin Adler.

Source/JavaScriptCore:

Ensuring parseInt === Number.parseInt, per spec
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.parseint

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::parseIntFunction):

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

LayoutTests:

  • js/number-constructor-expected.txt:
  • js/parseInt-expected.txt:
  • js/script-tests/number-constructor.js:
  • js/script-tests/parseInt.js:
6:28 PM Changeset in webkit [182937] by jacob_nielsen@apple.com
  • 3 edits in trunk/Tools

Changes method of quitting iOS Simulator to be more correct.
https://bugs.webkit.org/show_bug.cgi?id=143847
<rdar://problem/20530344>

Reviewed by Darin Adler.

Fixes by addressing the app by ID rather than by name.

  • Scripts/webkitdirs.pm:

(quitIOSSimulator):

  • Scripts/webkitpy/port/ios.py:

(IOSSimulatorPort.check_sys_deps):

6:25 PM Changeset in webkit [182936] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Use UNUSED_PARAM instead of the void casting to suppress unused parameter warnings.
https://bugs.webkit.org/show_bug.cgi?id=143750

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-16
Reviewed by Darin Adler.

No new tests, no behavior change.

  • WebProcess/Notifications/NotificationPermissionRequestManager.cpp:

(WebKit::NotificationPermissionRequestManager::NotificationPermissionRequestManager):

6:12 PM Changeset in webkit [182935] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Use less memory when compiling content extensions
https://bugs.webkit.org/show_bug.cgi?id=143857

Reviewed by Benjamin Poulain.

When compiling a content extension, we convert the rule list into several intermediate forms:

1) A String.
2) A JSValue from JSONParse in loadEncodedRules.
3) A Vector of ContentExtensionRules.
4) A CombinedURLFilters object representing the pieces of the regular expressions from the triggers.
5) A Vector of NFAs.
6) A DFA for each NFA.
7) A Vector of DFABytecode.

Each one of these contains all the information contained in the content extension,
so we do not need to keep them all in memory at the same time like we are doing now.
When we are done with one, we can free that memory to greatly reduce the maximum memory usage while compiling.
The next step will be to reduce the copies of the original JSON String and to generate NFAs one at a time.

  • contentextensions/CombinedURLFilters.cpp:

(WebCore::ContentExtensions::CombinedURLFilters::clear):

  • contentextensions/CombinedURLFilters.h:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Clear structures when finished using them.

6:03 PM Changeset in webkit [182934] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Gardening: fix CLOOP build after r182927.

Not reviewed.

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::print):

6:00 PM Changeset in webkit [182933] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Should include "Log Value" context menu item in Preview and Collapsed ObjectTree
https://bugs.webkit.org/show_bug.cgi?id=143845

Reviewed by Timothy Hatcher.

Give previews the same "Log Value" context menu so that if you just log
a bunch of objects to the console you can quickly turn that entire object
into a $n reference in the console to interact with.

  • UserInterface/Views/ObjectPreviewView.js:

(WebInspector.ObjectPreviewView.prototype.setOriginatingObjectInfo):
(WebInspector.ObjectPreviewView.prototype._contextMenuHandler):
Provide API to refer to a RemoteObject and optional PropertyPath
that can be used to give the preview a "Log Value" context menu.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
Include the RemoteObject without a path for a preview context menu.

  • UserInterface/Views/ObjectTreeView.js:

(WebInspector.ObjectTreeView):
Include the RemoteObject with a path if we knew it for a preview context menu.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
The context menu can never be empty, since we always added at least one item above.

5:53 PM Changeset in webkit [182932] by beidson@apple.com
  • 8 edits in trunk/Source

Compiling a content extension fails when user's home directory is on a different volume from /var/tmp.
https://bugs.webkit.org/show_bug.cgi?id=143834

Reviewed by Anders Carlsson.

Source/WebCore:

  • Add moveFile() for a WK2 call site to use.
  • Remove renameFile() as it is now dead code.
  • platform/FileSystem.h:
  • platform/gtk/FileSystemGtk.cpp:

(WebCore::renameFile): Deleted.

  • platform/mac/FileSystemMac.mm:

(WebCore::moveFile):

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::renameFile): Deleted.

  • platform/win/FileSystemWin.cpp:

(WebCore::renameFile): Deleted.

Source/WebKit2:

  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::compiledToFile): Use moveFile() instead of renameFile()

5:49 PM Changeset in webkit [182931] by timothy_horton@apple.com
  • 4 edits in trunk/LayoutTests

Rebaseline mouse-cursor-image-set results after r182869

  • fast/events/mouse-cursor-image-set-expected.txt:
  • platform/win/fast/events/mouse-cursor-image-set-expected.txt:
  • platform/mac/TestExpectations:

Un-skip and land new results.

5:46 PM Changeset in webkit [182930] by andersca@apple.com
  • 11 edits in trunk

Deprecate _WKWebsiteDataStore in favor of WKWebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=143844

Reviewed by Dan Bernstein.

Source/WebKit2:

  • Shared/API/Cocoa/WKFoundation.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _validate]):

  • UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
  • mac/postprocess-framework-headers.sh:

Tools:

  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate newPrivateWindow:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController initWithConfiguration:]):
(-[WK2BrowserWindowController fetchWebsiteData:]):
(-[WK2BrowserWindowController fetchAndClearWebsiteData:]):
(-[WK2BrowserWindowController clearWebsiteData:]):

5:44 PM Changeset in webkit [182929] by commit-queue@webkit.org
  • 4 edits in trunk/Source/JavaScriptCore

Inline JSFunction allocation in FTL
https://bugs.webkit.org/show_bug.cgi?id=143851

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

JSFunction allocation is a simple operation that should be inlined when possible.

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNewFunction):

  • runtime/JSFunction.h:

(JSC::JSFunction::allocationSize):

5:28 PM Changeset in webkit [182928] by weinig@apple.com
  • 5 edits in trunk/Source/WebKit/mac

Expose JavaScriptMarkupEnabled preference for WebKit1
<rdar://problem/19939450>
https://bugs.webkit.org/show_bug.cgi?id=143855

Reviewed by Dan Bernstein.

  • WebView/WebPreferenceKeysPrivate.h:

Add new key, WebKitJavaScriptMarkupEnabledPreferenceKey

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
Initialize WebKitJavaScriptMarkupEnabledPreferenceKey to YES.

(-[WebPreferences isJavaScriptMarkupEnabled]):
(-[WebPreferences setJavaScriptMarkupEnabled:]):
Implement getter/setter.

  • WebView/WebPreferencesPrivate.h:

Add new property, javaScriptMarkupEnabled.

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):
Map the new preference to WebCore's scriptMarkupEnabled setting.

5:25 PM Changeset in webkit [182927] by mark.lam@apple.com
  • 13 edits
    4 adds in trunk/Source/JavaScriptCore

Add $vm debugging tool.
https://bugs.webkit.org/show_bug.cgi?id=143809

Reviewed by Geoffrey Garen.

For debugging VM bugs, it would be useful to be able to dump VM data structures
from JS code that we instrument. To this end, let's introduce a
JS_enableDollarVM option that, if true, installs an $vm property into each JS
global object at creation time. The $vm property refers to an object that
provides a collection of useful utility functions. For this initial
implementation, $vm will have the following:

crash() - trigger an intentional crash.

dfgTrue() - returns true if the current function is DFG compiled, else returns false.
jitTrue() - returns true if the current function is compiled by the baseline JIT, else returns false.
llintTrue() - returns true if the current function is interpreted by the LLINT, else returns false.

gc() - runs a full GC.
edenGC() - runs an eden GC.

codeBlockForFrame(frameNumber) - gets the codeBlock at the specified frame (0 = current, 1 = caller, etc).
printSourceFor(codeBlock) - prints the source code for the codeBlock.
printByteCodeFor(codeBlock) - prints the bytecode for the codeBlock.

print(str) - prints a string to dataLog output.
printCallFrame() - prints the current CallFrame.
printStack() - prints the JS stack.
printInternal(value) - prints the JSC internal info for the specified value.

With JS_enableDollarVM=true, JS code can use the above functions like so:

$vm.print("Using $vm features\n");

(JSC::CodeBlock::printCallOp):

  • FTL compiled functions don't like it when we try to compute the CallLinkStatus. Hence, we skip this step if we're dumping an FTL codeBlock.
  • heap/Heap.cpp:

(JSC::Heap::collectAndSweep):
(JSC::Heap::collectAllGarbage): Deleted.

  • heap/Heap.h:

(JSC::Heap::collectAllGarbage):

  • Add ability to do an Eden collection and sweep.
  • interpreter/StackVisitor.cpp:

(JSC::printIndents):
(JSC::log):
(JSC::logF):
(JSC::StackVisitor::Frame::print):
(JSC::jitTypeName): Deleted.
(JSC::printif): Deleted.

  • Modernize the implementation of StackVisitor::Frame::print(), and remove some now redundant code.
  • Also fix it so that it downgrades gracefully when encountering inlined DFG and compiled FTL functions.

(DebugPrintFrameFunctor::DebugPrintFrameFunctor): Deleted.
(DebugPrintFrameFunctor::operator()): Deleted.
(debugPrintCallFrame): Deleted.
(debugPrintStack): Deleted.

  • these have been moved into JSDollarVMPrototype.cpp.
  • interpreter/StackVisitor.h:
  • StackVisitor::Frame::print() is now enabled for release builds as well so that we can call it from $vm.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:
  • Added the $vm instance to global objects conditional on the JSC_enableDollarVM option.
  • runtime/Options.h:
  • Added the JSC_enableDollarVM option.
  • tools/JSDollarVM.cpp: Added.
  • tools/JSDollarVM.h: Added.

(JSC::JSDollarVM::createStructure):
(JSC::JSDollarVM::create):
(JSC::JSDollarVM::JSDollarVM):

  • tools/JSDollarVMPrototype.cpp: Added.
  • This file contains 2 sets of functions:
  1. a C++ implementation of debugging utility functions that are callable when doing debugging from lldb. To the extent possible, these functions try to be cautious and not cause unintended crashes should the user call them with the wrong info. Hence, they are designed to be robust rather than speedy.
  1. the native implementations of JS functions in the $vm object. Where there is overlapping functionality, these are built on top of the C++ functions above to do the work.

Note: it does not make sense for all of the $vm functions to have a C++
counterpart for lldb debugging. For example, the $vm.dfgTrue() function is
only useful for JS code, and works via the DFG intrinsics mechanism.
When doing debugging via lldb, the optimization level of the currently
executing JS function can be gotten by dumping the current CallFrame instead.

(JSC::currentThreadOwnsJSLock):
(JSC::ensureCurrentThreadOwnsJSLock):
(JSC::JSDollarVMPrototype::addFunction):
(JSC::functionCrash): - $vm.crash()
(JSC::functionDFGTrue): - $vm.dfgTrue()
(JSC::CallerFrameJITTypeFunctor::CallerFrameJITTypeFunctor):
(JSC::CallerFrameJITTypeFunctor::operator()):
(JSC::CallerFrameJITTypeFunctor::jitType):
(JSC::functionLLintTrue): - $vm.llintTrue()
(JSC::functionJITTrue): - $vm.jitTrue()
(JSC::gc):
(JSC::functionGC): - $vm.gc()
(JSC::edenGC):
(JSC::functionEdenGC): - $vm.edenGC()
(JSC::isValidCodeBlock):
(JSC::codeBlockForFrame):
(JSC::functionCodeBlockForFrame): - $vm.codeBlockForFrame(frameNumber)
(JSC::codeBlockFromArg):
(JSC::functionPrintSourceFor): - $vm.printSourceFor(codeBlock)
(JSC::functionPrintByteCodeFor): - $vm.printBytecodeFor(codeBlock)
(JSC::functionPrint): - $vm.print(str)
(JSC::PrintFrameFunctor::PrintFrameFunctor):
(JSC::PrintFrameFunctor::operator()):
(JSC::printCallFrame):
(JSC::printStack):
(JSC::functionPrintCallFrame): - $vm.printCallFrame()
(JSC::functionPrintStack): - $vm.printStack()
(JSC::printValue):
(JSC::functionPrintValue): - $vm.printValue()
(JSC::JSDollarVMPrototype::finishCreation):

  • tools/JSDollarVMPrototype.h: Added.

(JSC::JSDollarVMPrototype::create):
(JSC::JSDollarVMPrototype::createStructure):
(JSC::JSDollarVMPrototype::JSDollarVMPrototype):

5:09 PM Changeset in webkit [182926] by achristensen@apple.com
  • 2 edits in trunk/Tools

32-bit build fix.

  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):
Added WK_API_ENABLED.

4:52 PM Changeset in webkit [182925] by Beth Dakin
  • 2 edits in trunk/LayoutTests

I will be investigating this in the short term, but skip these failing test for
now.

  • platform/mac-wk2/TestExpectations:
4:45 PM Changeset in webkit [182924] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Media element time displays shouldn't wrap.
https://bugs.webkit.org/show_bug.cgi?id=143854.
<rdar://problem/20284766>

Reviewed by Brent Fulgham.

  • Modules/mediacontrols/mediaControlsApple.css:

(::-webkit-media-controls): Don't wrap any text.
(audio::-webkit-media-controls-time-remaining-display): Also increase remaining time display width by 1.
(audio::-webkit-media-controls-time-remaining-display.five-digit-time): Ditto.
(audio::-webkit-media-controls-time-remaining-display.six-digit-time): Ditto.

4:41 PM Changeset in webkit [182923] by Chris Dumez
  • 4 edits in trunk/Source/WebCore

Add assertions to make sure ActiveDOMObject::suspend() / resume() / stop() overrides don't fire events
https://bugs.webkit.org/show_bug.cgi?id=143850

Reviewed by Alexey Proskuryakov.

Add assertions to make sure ActiveDOMObject::suspend() / resume() / stop()
overrides don't fire events as this is not allowed. This would cause
arbitrary JS execution which would be very dangerous in these stages.

Firing JS events from these functions is a common source of crashes.

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::suspendActiveDOMObjects):
(WebCore::ScriptExecutionContext::resumeActiveDOMObjects):
(WebCore::ScriptExecutionContext::stopActiveDOMObjects):

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::suspend):
(WebCore::XMLHttpRequest::resume):
(WebCore::XMLHttpRequest::stop):

4:41 PM Changeset in webkit [182922] by achristensen@apple.com
  • 10 edits
    2 deletes in trunk

Removed unused WKUserContentFilterRef.
https://bugs.webkit.org/show_bug.cgi?id=143852

Reviewed by Sam Weinig.

Source/WebKit2:

  • Shared/WebCompiledContentExtension.cpp:

(WebKit::LegacyContentExtensionCompilationClient::LegacyContentExtensionCompilationClient): Deleted.
(WebKit::LegacyContentExtensionCompilationClient::writeBytecode): Deleted.
(WebKit::LegacyContentExtensionCompilationClient::writeActions): Deleted.
(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData): Deleted.

  • Shared/WebCompiledContentExtension.h:
  • UIProcess/API/C/WKUserContentFilterRef.cpp: Removed.
  • UIProcess/API/C/WKUserContentFilterRef.h: Removed.
  • UIProcess/API/C/WebKit2_C.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.h:
  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter initWithName:serializedRules:]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:

Tools:

  • TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentExtensionStore.mm:
  • WebKitTestRunner/mac/TestControllerMac.mm:

(WTR::TestController::platformResetPreferencesToConsistentValues):
(WTR::TestController::platformConfigureViewForTest):

4:28 PM Changeset in webkit [182921] by benjamin@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Speculative fix after r182915
https://bugs.webkit.org/show_bug.cgi?id=143404

Patch by Geoffrey Garen <ggaren@apple.com> on 2015-04-16
Reviewed by Alexey Proskuryakov.

  • runtime/SymbolConstructor.h:
4:22 PM Changeset in webkit [182920] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Rubber-stamped by Tim Horton.

Fixing a small mistake in http://trac.webkit.org/changeset/182912 which should
make sure to use the most up-to-date pressure information when setting the force
on a WebMouseEvent.

  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):

4:21 PM Changeset in webkit [182919] by mark.lam@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fixed some typos in a comment.

Not reviewed.

  • dfg/DFGGenerationInfo.h:
4:04 PM Changeset in webkit [182918] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Media element can manipulate DOM during Document destruction.
rdar://problem/20553898 and https://bugs.webkit.org/show_bug.cgi?id=143780

Patch by Brady Eidson <beidson@apple.com> on 2015-04-16
Reviewed by Jer Noble.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::configureMediaControls): Bail if the element has no active document.

3:58 PM Changeset in webkit [182917] by jacob_nielsen@apple.com
  • 2 edits in trunk/Tools

Unreviewed. Adding myself as a commiter in contributers.json.

  • Scripts/webkitpy/common/config/contributors.json:
3:54 PM Changeset in webkit [182916] by ap@apple.com
  • 3 edits in trunk/Tools

It is very hard to attach a debugger to WebProcess to debug tests
https://bugs.webkit.org/show_bug.cgi?id=143837

Reviewed by Chris Dumez.

--no-timeout used to only affect waitUntilDone timeout, but not IPC timeout in
WebKitTestRunner, and not pipe reading timeout in run-webkit-tests.

Now it disables all timeouts in tools, as is best for debugging tests.

  • Scripts/webkitpy/port/driver.py: (Driver.run_test): Respect --no-timeout, so

that the script doesn't terminate DRT/WKTR when there is no output for a long time.

  • WebKitTestRunner/Options.cpp: Removed --no-timeout-at-all, as --no-timeout

now has the same functionality.

3:46 PM Changeset in webkit [182915] by Yusuke Suzuki
  • 17 edits
    1 copy
    5 adds in trunk

[ES6] Implement Symbol.for and Symbol.keyFor
https://bugs.webkit.org/show_bug.cgi?id=143404

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch implements Symbol.for and Symbol.keyFor.
SymbolRegistry maintains registered StringImpl* symbols.
And to make this mapping enabled over realms,
VM owns this mapping (not JSGlobalObject).

While there's Default AtomicStringTable per thread,
SymbolRegistry should not exist over VMs.
So everytime VM is created, SymbolRegistry is also created.

In SymbolRegistry implementation, we don't leverage WeakGCMap (or weak reference design).
Theres are several reasons.

  1. StringImpl* which represents identity of Symbols is not GC-managed object. So we cannot use WeakGCMap directly. While Symbol* is GC-managed object, holding weak reference to Symbol* doesn't maintain JS symbols (exposed primitive values to users) liveness, because distinct Symbol* can exist. Distinct Symbol* means the Symbol* object that pointer value (Symbol*) is different from weakly referenced Symbol* but held StringImpl* is the same.
  1. We don't use WTF::WeakPtr. If we add WeakPtrFactory into StringImpl's member, we can track StringImpl*'s liveness by WeakPtr. However there's problem about when we prune staled entries in SymbolRegistry. Since the memory allocated for the Symbol is typically occupied by allocated symbolized StringImpl*'s content, and it is not in GC-heap. While heavily registering Symbols and storing StringImpl* into SymbolRegistry, Heap's EdenSpace is not so occupied. So GC typically attempt to perform EdenCollection, and it doesn't call WeakGCMap's pruleStaleEntries callback. As a result, before pruning staled entries in SymbolRegistry, fast malloc-ed memory fills up the system memory.

So instead of using Weak reference, we take relatively easy design.
When we register symbolized StringImpl* into SymbolRegistry, symbolized StringImpl* is aware of that.
And when destructing it, it removes its reference from SymbolRegistry as if atomic StringImpl do so with AtomicStringTable.

  • CMakeLists.txt:
  • DerivedSources.make:
  • runtime/SymbolConstructor.cpp:

(JSC::SymbolConstructor::getOwnPropertySlot):
(JSC::symbolConstructorFor):
(JSC::symbolConstructorKeyFor):

  • runtime/SymbolConstructor.h:
  • runtime/VM.cpp:
  • runtime/VM.h:

(JSC::VM::symbolRegistry):

  • tests/stress/symbol-registry.js: Added.

(test):

Source/WTF:

When we register symbolized StringImpl* into SymbolRegistry, symbolized StringImpl* is aware of that.
And when destructing it, it removes its reference from SymbolRegistry as if atomic StringImpl do so with AtomicStringTable.
While AtomicStringTable (in WebCore case) exists in thread local storage,
SymbolRegistry exists per VM and StringImpl* has a reference to the registered SymbolRegistry.

Since StringImpl has isSymbol etc. members, it's class is aware of Symbol use cases.
So introduce SymbolRegistry in WTF layers as if AtomicStringTable.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/text/AtomicString.cpp:

(WTF::AtomicString::addSlowCase):
(WTF::AtomicString::findSlowCase):
(WTF::AtomicString::findInternal):
(WTF::AtomicString::find): Deleted.

  • wtf/text/AtomicString.h:

(WTF::AtomicString::find):

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createSymbolEmpty):

  • wtf/text/StringImpl.h:

(WTF::StringImpl::StringImpl):
(WTF::StringImpl::extractFoldedStringInSymbol):
(WTF::StringImpl::symbolRegistry):
(WTF::StringImpl::createSymbolEmpty): Deleted.

  • wtf/text/SymbolRegistry.cpp: Copied from Source/JavaScriptCore/runtime/SymbolConstructor.h.

(WTF::SymbolRegistry::~SymbolRegistry):
(WTF::SymbolRegistry::symbolForKey):
(WTF::SymbolRegistry::keyForSymbol):
(WTF::SymbolRegistry::remove):

  • wtf/text/SymbolRegistry.h: Added.

(WTF::SymbolRegistryKey::hash):
(WTF::SymbolRegistryKey::impl):
(WTF::SymbolRegistryKey::isHashTableDeletedValue):
(WTF::SymbolRegistryKey::hashTableDeletedValue):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::hash):
(WTF::DefaultHash<SymbolRegistryKey>::Hash::equal):
(WTF::HashTraits<SymbolRegistryKey>::isEmptyValue):
(WTF::SymbolRegistryKey::SymbolRegistryKey):

LayoutTests:

Add tests to check Symbol's identity over different realms.

  • js/dom/cross-frame-symbols-expected.txt: Added.
  • js/dom/cross-frame-symbols.html: Added.
  • js/dom/script-tests/cross-frame-symbols.js: Added.
3:42 PM Changeset in webkit [182914] by jer.noble@apple.com
  • 15 edits in trunk/Source

[iOS] When simultaneously exiting-and-entering fullscreen, WebVideoFullscreenManager/Proxy becomes confused about what video element it represents.
https://bugs.webkit.org/show_bug.cgi?id=143680

Reviewed by Simon Fraser.

Source/WebCore:

Add getters for the video's fullscreen layer, and be more tolerant about the order in which setVideoElement() and
setWebVideoFullscreenInterface are called.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::videoFullscreenLayer): Added simple getter.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/ios/WebVideoFullscreenModelVideoElement.h:

(WebCore::WebVideoFullscreenModelVideoElement::videoElement): Added simple getter.
(WebCore::WebVideoFullscreenModelVideoElement::setWebVideoFullscreenInterface): Deleted. Moved to .mm file.

  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::WebVideoFullscreenModelVideoElement): Initialize ivars in the .h file.
(WebVideoFullscreenModelVideoElement::setWebVideoFullscreenInterface): Call those methods skipped in setVideoElement()

if m_videoFullscreenInterface had not yet been set.

(WebVideoFullscreenModelVideoElement::setVideoElement): Null-check m_videoFullscreenInterface.

Source/WebKit2:

The original assumption of WebVideoFullscreenManager and -Proxy was that the two classes would represent a
single video element and its full screen state. With multiple animations in and out of fullscreen combined with
multiple fullscreen modes, this assumption no longer holds true.

Rather than having a WebVideoFullscreenManager which /isa/ WebVideoFullscreenModelVideoElement, the manager now
/hasa/ WebVideoFullscreenModelVideoElement (or has many such models). Ditto for WebVideoFullscreenManager and
WebVideoFullscreenInterfaceAVKit. The WebVideoFullscreenInterfaceAVKit still needs a WebVideoFullscreenModel to
communicate with, so a new wrapper class is used for that purpose, WebVideoFullscreenModelContext. Ditto for
WebVideoFullscreenModelVideoElement and the new class WebVideoFullscreenInterfaceContext. These context classes
are paired and share a contextId, allowing the manager and its proxy to route messages between the UIProcess's
WebVideoFullscreenInterfaceAVKit to-and-from the WebProcess's WebVideoFullscreenModelVideoElement.

Both the WebVideoFullscreenModelContext and the WebVideoFullscreenInterfaceContext take a back-pointer to their
manager or manager proxy, and each method on the context simply calls the matching method on the manager and
passes its contextId as a parameter.

Both the WebVideoFullscreenManager and the WebVideoFullscreenManagerProxy pass that contextId in each of their
cross-process messages.

On the other side, the manager and proxy also have a map between contextIds and their matching
WebVideoFullscreenModelVideoElement (in the case of WebVideoFullscreenManager) or
WebVideoFullscreenInterfaceAVKit (in the case of WebVideoFullscreenManagerProxy).

While this change is large by LoC, it is almost entirely boilerplate. The new and interesting pieces are these:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::WebVideoFullscreenManagerProxy): No longer a WebVideoFullscreenInterfaceAVKit.
(WebKit::WebVideoFullscreenManagerProxy::invalidate): Walk through the models and interfaces, invalidating each.
(WebKit::WebVideoFullscreenManagerProxy::createModelAndInterface): Added. Return a new model and interface tuple.
(WebKit::WebVideoFullscreenManagerProxy::ensureModelAndInterface): Added. Lazily create, and add to the m_contextMap

a new model and interface object.

(WebKit::WebVideoFullscreenManagerProxy::ensureModel): Return the model half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManagerProxy::ensureInterface): Return the interface half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManagerProxy::enterFullscreen): Walk through the outstanding interface objects, and if

any have a fullscreen mode which matches the about-to-be-fullscreen interface, request that that other interface
exit fullscreen.

  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::nextContextId): Static, incrementing counter used as a contextId source.
(WebKit::WebVideoFullscreenManager::WebVideoFullscreenManager): No longer a WebVideoFullscreenModelVideoElement.
(WebKit::WebVideoFullscreenManager::~WebVideoFullscreenManager): Walk through the models and interfaces, invalidating each.
(WebKit::WebVideoFullscreenManager::ensureModelAndInterface): Added. Return a new model and interface tuple.
(WebKit::WebVideoFullscreenManager::ensureModelAndInterface): Added. Lazily create, and add to the m_contextMap

a new model and interface object.

(WebKit::WebVideoFullscreenManager::ensureModel): Return the model half of ensureModelAndInterface().
(WebKit::WebVideoFullscreenManager::ensureInterface): Return the interface half of ensureModelAndInterface().

New classes and methods which just forward on to their owning objects:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.h:

(WebKit::WebVideoFullscreenModelContext::create):
(WebKit::WebVideoFullscreenModelContext::~WebVideoFullscreenModelContext):
(WebKit::WebVideoFullscreenModelContext::invalidate):
(WebKit::WebVideoFullscreenModelContext::layerHost):
(WebKit::WebVideoFullscreenModelContext::setLayerHost):
(WebKit::WebVideoFullscreenModelContext::setInitialVideoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::WebVideoFullscreenModelContext):

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenModelContext::play):
(WebKit::WebVideoFullscreenModelContext::pause):
(WebKit::WebVideoFullscreenModelContext::togglePlayState):
(WebKit::WebVideoFullscreenModelContext::beginScrubbing):
(WebKit::WebVideoFullscreenModelContext::endScrubbing):
(WebKit::WebVideoFullscreenModelContext::seekToTime):
(WebKit::WebVideoFullscreenModelContext::fastSeek):
(WebKit::WebVideoFullscreenModelContext::beginScanningForward):
(WebKit::WebVideoFullscreenModelContext::beginScanningBackward):
(WebKit::WebVideoFullscreenModelContext::endScanning):
(WebKit::WebVideoFullscreenModelContext::requestExitFullscreen):
(WebKit::WebVideoFullscreenModelContext::setVideoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::videoLayerFrame):
(WebKit::WebVideoFullscreenModelContext::setVideoLayerGravity):
(WebKit::WebVideoFullscreenModelContext::videoLayerGravity):
(WebKit::WebVideoFullscreenModelContext::selectAudioMediaOption):
(WebKit::WebVideoFullscreenModelContext::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenModelContext::fullscreenModeChanged):
(WebKit::WebVideoFullscreenModelContext::didSetupFullscreen):
(WebKit::WebVideoFullscreenModelContext::didEnterFullscreen):
(WebKit::WebVideoFullscreenModelContext::didExitFullscreen):
(WebKit::WebVideoFullscreenModelContext::didCleanupFullscreen):
(WebKit::WebVideoFullscreenModelContext::fullscreenMayReturnToInline):

  • WebProcess/ios/WebVideoFullscreenManager.h:

(WebKit::WebVideoFullscreenInterfaceContext::create):
(WebKit::WebVideoFullscreenInterfaceContext::invalidate):
(WebKit::WebVideoFullscreenInterfaceContext::layerHostingContext):
(WebKit::WebVideoFullscreenInterfaceContext::isAnimating):
(WebKit::WebVideoFullscreenInterfaceContext::setIsAnimating):
(WebKit::WebVideoFullscreenInterfaceContext::targetIsFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::setTargetIsFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::fullscreenMode):
(WebKit::WebVideoFullscreenInterfaceContext::setFullscreenMode):
(WebKit::WebVideoFullscreenInterfaceContext::isFullscreen):
(WebKit::WebVideoFullscreenInterfaceContext::setIsFullscreen):

  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenInterfaceContext::WebVideoFullscreenInterfaceContext):
(WebKit::WebVideoFullscreenInterfaceContext::~WebVideoFullscreenInterfaceContext):
(WebKit::WebVideoFullscreenInterfaceContext::setLayerHostingContext):
(WebKit::WebVideoFullscreenInterfaceContext::resetMediaState):
(WebKit::WebVideoFullscreenInterfaceContext::setDuration):
(WebKit::WebVideoFullscreenInterfaceContext::setCurrentTime):
(WebKit::WebVideoFullscreenInterfaceContext::setBufferedTime):
(WebKit::WebVideoFullscreenInterfaceContext::setRate):
(WebKit::WebVideoFullscreenInterfaceContext::setVideoDimensions):
(WebKit::WebVideoFullscreenInterfaceContext::setSeekableRanges):
(WebKit::WebVideoFullscreenInterfaceContext::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenInterfaceContext::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenInterfaceContext::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenInterfaceContext::setExternalPlayback):

Cross-process methods which now take a contextId parameter:

  • UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in:
  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID):
(WebKit::WebVideoFullscreenManagerProxy::resetMediaState):
(WebKit::WebVideoFullscreenManagerProxy::setCurrentTime):
(WebKit::WebVideoFullscreenManagerProxy::setBufferedTime):
(WebKit::WebVideoFullscreenManagerProxy::setVideoDimensions):
(WebKit::WebVideoFullscreenManagerProxy::setSeekableRangesVector):
(WebKit::WebVideoFullscreenManagerProxy::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenManagerProxy::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenManagerProxy::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenManagerProxy::setExternalPlaybackProperties):
(WebKit::WebVideoFullscreenManagerProxy::setDuration):
(WebKit::WebVideoFullscreenManagerProxy::setRate):
(WebKit::WebVideoFullscreenManagerProxy::exitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::cleanupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::preparedToReturnToInline):
(WebKit::WebVideoFullscreenManagerProxy::play):
(WebKit::WebVideoFullscreenManagerProxy::pause):
(WebKit::WebVideoFullscreenManagerProxy::togglePlayState):
(WebKit::WebVideoFullscreenManagerProxy::beginScrubbing):
(WebKit::WebVideoFullscreenManagerProxy::endScrubbing):
(WebKit::WebVideoFullscreenManagerProxy::seekToTime):
(WebKit::WebVideoFullscreenManagerProxy::fastSeek):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningForward):
(WebKit::WebVideoFullscreenManagerProxy::beginScanningBackward):
(WebKit::WebVideoFullscreenManagerProxy::endScanning):
(WebKit::WebVideoFullscreenManagerProxy::requestExitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didSetupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didExitFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didEnterFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::didCleanupFullscreen):
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame):
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerGravity):
(WebKit::WebVideoFullscreenManagerProxy::selectAudioMediaOption):
(WebKit::WebVideoFullscreenManagerProxy::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenModeChanged):
(WebKit::WebVideoFullscreenManagerProxy::fullscreenMayReturnToInline):
(WebKit::WebVideoFullscreenManagerProxy::videoLayerFrame): Deleted.
(WebKit::WebVideoFullscreenManagerProxy::videoLayerGravity): Deleted.

  • WebProcess/ios/WebVideoFullscreenManager.messages.in:
  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement):
(WebKit::WebVideoFullscreenManager::resetMediaState):
(WebKit::WebVideoFullscreenManager::setDuration):
(WebKit::WebVideoFullscreenManager::setCurrentTime):
(WebKit::WebVideoFullscreenManager::setBufferedTime):
(WebKit::WebVideoFullscreenManager::setRate):
(WebKit::WebVideoFullscreenManager::setVideoDimensions):
(WebKit::WebVideoFullscreenManager::setSeekableRanges):
(WebKit::WebVideoFullscreenManager::setCanPlayFastReverse):
(WebKit::WebVideoFullscreenManager::setAudioMediaSelectionOptions):
(WebKit::WebVideoFullscreenManager::setLegibleMediaSelectionOptions):
(WebKit::WebVideoFullscreenManager::setExternalPlayback):
(WebKit::WebVideoFullscreenManager::play):
(WebKit::WebVideoFullscreenManager::pause):
(WebKit::WebVideoFullscreenManager::togglePlayState):
(WebKit::WebVideoFullscreenManager::beginScrubbing):
(WebKit::WebVideoFullscreenManager::endScrubbing):
(WebKit::WebVideoFullscreenManager::seekToTime):
(WebKit::WebVideoFullscreenManager::fastSeek):
(WebKit::WebVideoFullscreenManager::beginScanningForward):
(WebKit::WebVideoFullscreenManager::beginScanningBackward):
(WebKit::WebVideoFullscreenManager::endScanning):
(WebKit::WebVideoFullscreenManager::requestExitFullscreen):
(WebKit::WebVideoFullscreenManager::selectAudioMediaOption):
(WebKit::WebVideoFullscreenManager::selectLegibleMediaOption):
(WebKit::WebVideoFullscreenManager::fullscreenModeChanged):
(WebKit::WebVideoFullscreenManager::didSetupFullscreen):
(WebKit::WebVideoFullscreenManager::didEnterFullscreen):
(WebKit::WebVideoFullscreenManager::didExitFullscreen):
(WebKit::WebVideoFullscreenManager::didCleanupFullscreen):
(WebKit::WebVideoFullscreenManager::setVideoLayerGravityEnum):
(WebKit::WebVideoFullscreenManager::fullscreenMayReturnToInline):
(WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced):
(WebKit::WebVideoFullscreenManager::exitVideoFullscreen): Deleted.

3:29 PM Changeset in webkit [182913] by Beth Dakin
  • 2 edits in trunk/LayoutTests

Forgot to edit this TestExpectation file for
http://trac.webkit.org/changeset/182912

  • platform/mac-wk1/TestExpectations:
3:18 PM Changeset in webkit [182912] by Beth Dakin
  • 38 edits
    6 adds in trunk

Force mouse events should go through normal mouse event handling code paths
https://bugs.webkit.org/show_bug.cgi?id=143749
-and corresponding-
rdar://problem/20472895

Reviewed by Dean Jackson.

Source/WebCore:

This patch moves all of the code to dispatch mouseforcedown, mouseforceup, and
mouseforcechanged into normal mouse event dispatching code. This patch leaves
behind the cancel and click events because we plan to remove those, and it also
leaves mouseforcewillbegin because that is necessarily a very different event more
tied to the NSImmediateActionGestureRecognizer than these other events which are
tied to NSResponder’s pressureChangeWithEvent.

New helper functions.

  • dom/Document.cpp:

(WebCore::Document::hasListenerTypeForEventType):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::isForceEvent):

Move the code to ensure the force events have listeners in order to fire to
dispatchMouseEvent, and delete the old implementations.
(WebCore::Element::dispatchMouseEvent):
(WebCore::Element::dispatchMouseForceChanged): Deleted.
(WebCore::Element::dispatchMouseForceDown): Deleted.
(WebCore::Element::dispatchMouseForceUp): Deleted.

  • dom/Element.h:

Perform a hit test and pipe the events through dispatchMouseEvent().

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseForceEvent):

  • page/EventHandler.h:

New types for the new events.

  • platform/PlatformEvent.h:

Forward to EventHandler.

  • replay/UserInputBridge.cpp:

(WebCore::UserInputBridge::handleMouseForceEvent):

  • replay/UserInputBridge.h:

Source/WebKit2:

This patch makes pressureChangeWithEvent create NativeWebMouseEvents with the
NSEventTypePressures that is gets and sends those down to the web process.

Re-name pressureEvent to lastPressureEvent. Now that event can sometimes be an
NSEventTypePressure, the new name makes it clear how the second parameter differs
from the first.

  • Shared/NativeWebMouseEvent.h:

New event types for the new types of events.

  • Shared/WebEvent.h:
  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/mac/NativeWebMouseEventMac.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • Shared/mac/WebEventFactory.h:

All of the square-peg, round-hole problems of massaging the NSEventTypePressures
events into WebMouseEvents is taken care of here.

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent):
(WebKit::globalPointForEvent):
(WebKit::pointForEvent):
(WebKit::WebEventFactory::createWebMouseEvent):

Instead of calling the old inputDeviceForceDidChange, create a NativeWebMouseEvent
and handle it.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

Handle the new types.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didReceiveEvent):

Can delete inputDeviceForceDidChange since it’s no longer used.
(WebKit::WebPageProxy::inputDeviceForceDidChange): Deleted.

  • UIProcess/WebPageProxy.h:

Handle the new types of mouse events properly.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::handleMouseEvent):

Delete inputDeviceForceDidChange() and m_lastForceStage.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange): Deleted.

Handle new WebEvent types.

  • WebProcess/Plugins/Netscape/x11/NetscapePluginX11.cpp:

Tools:

Add mouseForceDown/mouseForceUp/mouseForceChanged support to WebKitTestRunner.
Since there is not a way to create an NSEventTypePressure from scratch, we
subclass NSEvent and override all of the critical methods.

  • WebKitTestRunner/EventSenderProxy.h:
  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::mouseForceDown):
(WTR::EventSendingController::mouseForceUp):
(WTR::EventSendingController::mouseForceChanged):

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):

  • WebKitTestRunner/mac/EventSenderProxy.mm:

(-[EventSenderPressureEvent initAtLocation:globalLocation:stage:pressure:phase:time:eventNumber:]):
(-[EventSenderPressureEvent timestamp]):
(-[EventSenderPressureEvent type]):
(-[EventSenderPressureEvent locationInWindow]):
(-[EventSenderPressureEvent location]):
(-[EventSenderPressureEvent stage]):
(-[EventSenderPressureEvent pressure]):
(-[EventSenderPressureEvent phase]):
(-[EventSenderPressureEvent eventNumber]):
(WTR::EventSenderProxy::mouseForceDown):
(WTR::EventSenderProxy::mouseForceUp):
(WTR::EventSenderProxy::mouseForceChanged):

LayoutTests:

Just a few new tests. More to come.

  • fast/events/mouse-force-changed-expected.txt: Added.
  • fast/events/mouse-force-changed.html: Added.
  • fast/events/mouse-force-down-expected.txt: Added.
  • fast/events/mouse-force-down.html: Added.
  • fast/events/mouse-force-up-expected.txt: Added.
  • fast/events/mouse-force-up.html: Added.

Right now the new tests will only work on Mac 10.10.3 and beyond.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/ios-simulator/TestExpectations:
  • platform/mac-mavericks/TestExpectations:
  • platform/win/TestExpectations:
2:35 PM Changeset in webkit [182911] by Yusuke Suzuki
  • 18 edits
    2 adds
    6 deletes in trunk/Source/JavaScriptCore

[ES6] Use specific functions for @@iterator functions
https://bugs.webkit.org/show_bug.cgi?id=143838

Reviewed by Geoffrey Garen.

In ES6, some methods are defined with the different names.

For example,

Map.prototype[Symbol.iterator] === Map.prototype.entries
Set.prototype[Symbol.iterator] === Set.prototype.values
Array.prototype[Symbol.iterator] === Array.prototype.values
%Arguments%[Symbol.iterator] === Array.prototype.values

However, current implementation creates different function objects per name.
This patch fixes it by setting the object that is used for the other method to @@iterator.
e.g. Setting Array.prototype.values function object to Array.prototype[Symbol.iterator].

And we drop Arguments' iterator implementation and replace Argument[@@iterator] implementation
with Array.prototype.values to conform to the spec.

(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • runtime/ArgumentsIteratorConstructor.cpp: Removed.
  • runtime/ArgumentsIteratorConstructor.h: Removed.
  • runtime/ArgumentsIteratorPrototype.cpp: Removed.
  • runtime/ArgumentsIteratorPrototype.h: Removed.
  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/ArrayPrototype.h:
  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnPropertySlot):
(JSC::ClonedArguments::put):
(JSC::ClonedArguments::deleteProperty):
(JSC::ClonedArguments::defineOwnProperty):
(JSC::ClonedArguments::materializeSpecials):

  • runtime/ClonedArguments.h:
  • runtime/CommonIdentifiers.h:
  • runtime/DirectArguments.cpp:

(JSC::DirectArguments::overrideThings):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertySlot):
(JSC::GenericArguments<Type>::getOwnPropertyNames):
(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::deleteProperty):
(JSC::GenericArguments<Type>::defineOwnProperty):

  • runtime/JSArgumentsIterator.cpp: Removed.
  • runtime/JSArgumentsIterator.h: Removed.
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::visitChildren):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::arrayProtoValuesFunction):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • runtime/ScopedArguments.cpp:

(JSC::ScopedArguments::overrideThings):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

  • tests/stress/arguments-iterator.js: Added.

(test):
(testArguments):

  • tests/stress/iterator-functions.js: Added.

(test):
(argumentsTests):

2:24 PM Changeset in webkit [182910] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

Sites with both width=device-width and height=device-height load zoomed out
https://bugs.webkit.org/show_bug.cgi?id=143795
<rdar://problem/20369671>

Reviewed by Ben Poulain.

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::shouldIgnoreVerticalScalingConstraints):
Some sites specify both width=device-width and height=device-height, and
then lay out to device width but with a large amount of vertically scrollable content
(so, height=device-height was a lie).

In all other cases where we use device-width and device-height, we prefer
width=device-width over height=device-height, but in the code to ignore scaling constraints,
the two paths were completely separate. On sites that specify both, this
resulted in us attempting to zoom out to fit the entire height of the very tall page,
which isn't at all what we wanted. So, ignore height=device-height if a width is specified.

1:54 PM Changeset in webkit [182909] by Joseph Pecoraro
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: "Log Value" of a value inside of an array, does not log the innermost value
https://bugs.webkit.org/show_bug.cgi?id=143793

Reviewed by Brian Burg.

Context menu handlers were being handled in the capturing event phase, so
the outer most handler, instead of the inner most handler, was getting
first access. Change this so the events happen in the bubbling phase.

DOM Nodes may appear inside of Object Trees, for instance when shown
in a collection like an array or set. In an effort to standardize on
"inner most" behavior, change the DOMTreeOutline context handler
to also be in bubbling.

In the rare instances where a node object is in the console but
not displayed in an outline (console.dir(node)), then include a
Copy as HTML context menu like you would expect in a DOM tree.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.onattach):
(WebInspector.GeneralTreeElement.prototype.ondetach):

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype._appendMenusItemsForObject):
(WebInspector.ObjectTreeBaseTreeElement):

1:40 PM Changeset in webkit [182908] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.27.1/Source/WebKit2

Merged r182904. rdar://problem/20575744

1:37 PM Changeset in webkit [182907] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.27.1/Source

Versioning.

1:35 PM Changeset in webkit [182906] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.27.1

New tag.

1:32 PM Changeset in webkit [182905] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Allow toggling the edibility of a DOMTreeOutline
https://bugs.webkit.org/show_bug.cgi?id=143814

Reviewed by Brian Burg.

By default a DOMTreeOutline will not be editable, but it will
provide a setter to enable editability for DOMTreeContentViews.

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView):
Content Views always have editable DOM trees.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype.get editable):
(WebInspector.DOMTreeElement.prototype.onattach):
(WebInspector.DOMTreeElement.prototype.ondelete):
(WebInspector.DOMTreeElement.prototype.onenter):
(WebInspector.DOMTreeElement.prototype.ondblclick):
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):
(WebInspector.DOMTreeElement.prototype._populateTextContextMenu):
(WebInspector.DOMTreeElement.prototype._populateNodeContextMenu):
(WebInspector.DOMTreeElement.prototype._startEditing):
Do not provide editability options for shadow DOM or non-editable DOM tree.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype.get editable):
(WebInspector.DOMTreeOutline.prototype.set editable):
New state.

  • UserInterface/Views/FormattedValue.css:

(.formatted-node > .dom-tree-outline li):
Nodes inside object trees were showing text selection when you right
clicked them. Normal selection is not possible. So force no selection.

1:32 PM Changeset in webkit [182904] by mitz@apple.com
  • 2 edits in trunk/Source/WebKit2

<rdar://problem/20575744> Also include a definition of NSd_{current deployment target} in WKFoundation.h.

Reviewed by Tim Horton.

  • WebKit2.xcodeproj/project.pbxproj:
12:59 PM Changeset in webkit [182903] by mark.lam@apple.com
  • 8 edits
    2 adds in trunk/Source/JavaScriptCore

Add JSC_functionOverrides=<overrides file> debugging tool.
https://bugs.webkit.org/show_bug.cgi?id=143717

Reviewed by Geoffrey Garen.

This tool allows us to do runtime replacement of function bodies with alternatives
for debugging purposes. For example, this is useful when we need to debug VM bugs
which manifest in scripts executing in webpages downloaded from remote servers
that we don't control. The tool allows us to augment those scripts with logging
or test code to help isolate the bugs.

This tool works by substituting the SourceCode at FunctionExecutable creation
time. It identifies which SourceCode to substitute by comparing the source
string against keys in a set of key value pairs.

The keys are function body strings defined by 'override' clauses in the overrides
file specified by in the JSC_functionOverrides option. The values are function
body strings defines by 'with' clauses in the overrides file.
See comment blob at top of FunctionOverrides.cpp on the formatting
of the overrides file.

At FunctionExecutable creation time, if the SourceCode string matches one of the
'override' keys from the overrides file, the tool will replace the SourceCode with
a new one based on the corresponding 'with' value string. The FunctionExecutable
will then be created with the new SourceCode instead.

Some design decisions:

  1. We opted to require that the 'with' clause appear on a separate line than the 'override' clause because this makes it easier to read and write when the 'override' clause's function body is single lined and long.
  1. The user can use any sequence of characters for the delimiter (except for '{', '}' and white space characters) because this ensures that there can always be some delimiter pattern that does not appear in the function body in the clause e.g. in the body of strings in the JS code.

'{' and '}' are disallowed because they are used to mark the boundaries of the
function body string. White space characters are disallowed because they can
be error prone (the user may not be able to tell between spaces and tabs).

  1. The start and end delimiter must be an identical sequence of characters.

I had considered allowing the use of complementary characters like <>, [], and
() for making delimiter pairs like:

[[ ... ]]
<[([( ... )])]>

But in the end, decided against it because:

  1. These sequences of complementary characters can exists in JS code. In contrast, a repeating delimiter like %%%% is unlikely to appear in JS code.
  2. It can be error prone for the user to have to type the exact complement character for the end delimiter in reverse order. In contrast, a repeating delimiter like %%%% is much easier to type and less error prone. Even a sequence like @#$% is less error prone than a complementary sequence because it can be copy-pasted, and need not be typed in reverse order.
  3. It is easier to parse for the same delimiter string for both start and end.
  1. The tool does a lot of checks for syntax errors in the overrides file because we don't want any overrides to fail silently. If a syntax error is detected, the tool will print an error message and call exit(). This avoids the user wasting time doing debugging only to be surprised later that their specified overrides did not take effect because of some unnoticed typo.

(JSC::UnlinkedFunctionExecutable::link):

  • runtime/Executable.h:
  • runtime/Options.h:
  • tools/FunctionOverrides.cpp: Added.

(JSC::FunctionOverrides::overrides):
(JSC::FunctionOverrides::FunctionOverrides):
(JSC::initializeOverrideInfo):
(JSC::FunctionOverrides::initializeOverrideFor):
(JSC::hasDisallowedCharacters):
(JSC::parseClause):
(JSC::FunctionOverrides::parseOverridesInFile):

  • tools/FunctionOverrides.h: Added.
12:47 PM Changeset in webkit [182902] by Joseph Pecoraro
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Give DOM Nodes a Context Menu to Log Element to the console
https://bugs.webkit.org/show_bug.cgi?id=143813

Reviewed by Brian Burg.

Always give DOM Nodes a "Log Element" context menu to log it to the console.
This will give a $n reference, and is a convenient alternative to $0 or
the now removed $1-$9.

  • Localizations/en.lproj/localizedStrings.js:

New "Log Element" and "Selected Element" strings.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype._contextMenuEventFired):
(WebInspector.DOMTreeOutline.prototype._updateModifiedNodes):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.revealElement):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu.logElement):
(WebInspector.DOMTreeOutline.prototype._populateContextMenu):
Always include the "Log Element" context menu/

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForNode):
This uses all the defaults.

  • UserInterface/Views/DOMTreeContentView.js:

(WebInspector.DOMTreeContentView):
This enables all the extra behavior.

12:39 PM Changeset in webkit [182901] by Chris Dumez
  • 6 edits
    2 copies
    1 add in trunk

Regression(r182517): WebSocket::suspend() causes error event to be fired
https://bugs.webkit.org/show_bug.cgi?id=143806
<rdar://problem/20559812>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

WebSocket::suspend() causes an error event to be fired after r182517.
This is not allowed as firing the event could trigger arbitrary JS
execution, which is no longer allowed at this point.

This patch delays the error event firing until after
WebSocket::resume() is called, similarly to what we already do for
the close event.

Also add assertions in WebSocket::suspend() / WebSocket::resume()
that will be hit if JS events are fired from within these functions.
The pre-existing closed-when-entering-page-cache.html test is hitting
one of these assertions without the fix above.

Tests:

  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html
  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):
(WebCore::WebSocket::resumeTimerFired):
(WebCore::WebSocket::stop):
(WebCore::WebSocket::didReceiveMessageError):
(WebCore::WebSocket::didClose):
(WebCore::WebSocket::dispatchOrQueueEvent):

  • Modules/websockets/WebSocket.h:

LayoutTests:

  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache-expected.txt:
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html:

Extend WebSocket PageCache test to make sure that the error event is
fired after restoring the page from the PageCache and before the close
Event is fired.

  • http/tests/websocket/tests/hybi/resources/page-cache-websocket.html: Added.
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler-expected.txt: Copied from LayoutTests/http/tests/websocket/tests/hybi/closed-when-entering-page-cache-expected.txt.
  • http/tests/websocket/tests/hybi/stop-on-resume-in-error-handler.html: Copied from LayoutTests/http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html.

Add layout test to cover the case where WebSocket::stop() is called
while firing the pending events upon restoring the page from PageCache.

12:20 PM Changeset in webkit [182900] by roger_fong@apple.com
  • 3 edits in trunk/Source/WebCore

Adjustments to button graphics for media controls.
https://bugs.webkit.org/show_bug.cgi?id=143797.
<rdar://problem/20083708>

Reviewed by Dean Jackson.

These changes are visual in nature and mainly affect the buttons.
I've gotten rid of the text-shadow for all the buttons,
used plus-lighter blending mode and changed the button opacity to reflect the specs,
and made all the buttons turn opaque white when active.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-panel button):
(audio::-webkit-media-controls-rewind-button):
(audio::-webkit-media-controls-play-button):
(audio::-webkit-media-controls-play-button.paused):
(video::-webkit-media-controls-volume-max-button):
(video::-webkit-media-controls-volume-slider):
(video::-webkit-media-controls-volume-min-button):
(audio::-webkit-media-controls-wireless-playback-picker-button):
(audio::-webkit-media-controls-toggle-closed-captions-button):
(audio::-webkit-media-controls-closed-captions-container li.selected:hover::before):
(audio::-webkit-media-controls-fullscreen-button):
(audio::-webkit-media-controls-fullscreen-button.exit):
(audio::-webkit-media-controls-status-display):
(audio::-webkit-media-controls-timeline):
(audio::-webkit-media-controls-time-remaining-display):
(video:-webkit-full-screen::-webkit-media-controls-volume-max-button):
(video:-webkit-full-screen::-webkit-media-controls-volume-min-button):
(video:-webkit-full-screen::-webkit-media-controls-play-button):
(video:-webkit-full-screen::-webkit-media-controls-play-button.paused):
(video:-webkit-full-screen::-webkit-media-controls-seek-back-button):
(video:-webkit-full-screen::-webkit-media-controls-seek-forward-button):
(video::-webkit-media-controls-volume-max-button:active):
(video::-webkit-media-controls-volume-min-button:active):
(audio::-webkit-media-controls-toggle-closed-captions-button:active):
(audio::-webkit-media-controls-rewind-button:active):
(audio::-webkit-media-controls-play-button:active):
(video:-webkit-full-screen::-webkit-media-controls-volume-max-button:active):
(video:-webkit-full-screen::-webkit-media-controls-volume-min-button:active):
(video:-webkit-full-screen::-webkit-media-controls-play-button:active):
(video:-webkit-full-screen::-webkit-media-controls-seek-back-button:active):
(video:-webkit-full-screen::-webkit-media-controls-seek-forward-button:active):
(audio::-webkit-media-controls-fullscreen-button:active):

Using the pseudo id itself here currently does not work, which is why we rely on the button.* selector for these.
(video:-webkit-full-screen::-webkit-media-controls-panel button.paused:active):
(audio::-webkit-media-controls-panel button.paused:active):
(audio::-webkit-media-controls-panel button.exit:active):

Draw volume slider knob as opaque white when active.
Adjust colors of timeline and volume sliders now that we are using plus-lighter blending.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller):
(Controller.prototype.createControls):
(Controller.prototype.handleVolumeSliderMouseDown):
(Controller.prototype.handleVolumeSliderMouseUp):
(Controller.prototype.drawTimelineBackground):
(Controller.prototype.drawVolumeBackground):

12:15 PM Changeset in webkit [182899] by commit-queue@webkit.org
  • 24 edits
    2 adds in trunk

Extract the allocation profile from JSFunction into a rare object
https://bugs.webkit.org/show_bug.cgi?id=143807
.:

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

  • WebKit.xcworkspace/contents.xcworkspacedata:

Source/JavaScriptCore:

Patch by Basile Clement <basile_clement@apple.com> on 2015-04-16
Reviewed by Filip Pizlo.

The allocation profile is only needed for those functions that are used
to create objects with [new].
Extracting it into its own JSCell removes the need for JSFunction and
JSCallee to be JSDestructibleObjects, which should improve performances in most
cases at the cost of an extra pointer dereference when the allocation profile
is actually needed.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOperations.cpp:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_this):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_this):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/FunctionRareData.cpp: Added.

(JSC::FunctionRareData::create):
(JSC::FunctionRareData::destroy):
(JSC::FunctionRareData::createStructure):
(JSC::FunctionRareData::visitChildren):
(JSC::FunctionRareData::FunctionRareData):
(JSC::FunctionRareData::~FunctionRareData):
(JSC::FunctionRareData::finishCreation):

  • runtime/FunctionRareData.h: Added.

(JSC::FunctionRareData::offsetOfAllocationProfile):
(JSC::FunctionRareData::allocationProfile):
(JSC::FunctionRareData::allocationStructure):
(JSC::FunctionRareData::allocationProfileWatchpointSet):

  • runtime/JSBoundFunction.cpp:

(JSC::JSBoundFunction::destroy): Deleted.

  • runtime/JSBoundFunction.h:
  • runtime/JSCallee.cpp:

(JSC::JSCallee::destroy): Deleted.

  • runtime/JSCallee.h:
  • runtime/JSFunction.cpp:

(JSC::JSFunction::JSFunction):
(JSC::JSFunction::createRareData):
(JSC::JSFunction::visitChildren):
(JSC::JSFunction::put):
(JSC::JSFunction::defineOwnProperty):
(JSC::JSFunction::destroy): Deleted.
(JSC::JSFunction::createAllocationProfile): Deleted.

  • runtime/JSFunction.h:

(JSC::JSFunction::offsetOfRareData):
(JSC::JSFunction::rareData):
(JSC::JSFunction::allocationStructure):
(JSC::JSFunction::allocationProfileWatchpointSet):
(JSC::JSFunction::offsetOfAllocationProfile): Deleted.
(JSC::JSFunction::allocationProfile): Deleted.

  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::JSFunction):

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
11:47 AM Changeset in webkit [182898] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Pull emoji-position adjustment code into its own function
https://bugs.webkit.org/show_bug.cgi?id=143592

Reviewed by Myles C. Maxfield.

First step to cleaning up FontCascade::drawGlyphs(). Pull iOS-only code related to
emoji positioning into its own function.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::pointAdjustedForEmoji):
(WebCore::FontCascade::drawGlyphs):

11:31 AM Changeset in webkit [182897] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit2

Provide a mechanism through the legacy SPI to know when swipe gestures begin and end
https://bugs.webkit.org/show_bug.cgi?id=143740
<rdar://problem/20468540>

Reviewed by Dan Bernstein.

In the C SPI, add three WKPageLoaderClient callbacks for the three
navigation gesture events (did begin, will end, did end).

  • UIProcess/API/C/WKPageLoaderClient.h:

Add the callbacks.

  • UIProcess/API/APILoaderClient.h:

(API::LoaderClient::navigationGestureDidBegin):
(API::LoaderClient::navigationGestureWillEnd):
(API::LoaderClient::navigationGestureDidEnd):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::navigationGestureDidBegin):
(WebKit::WebPageProxy::navigationGestureWillEnd):
(WebKit::WebPageProxy::navigationGestureDidEnd):
Dispatch navigation gesture events to the loader client as well as
(after a bounce through the PageClient) the navigation delegate.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageLoaderClient):
Call the callbacks.

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::trackSwipeGesture):
(WebKit::ViewGestureController::willEndSwipeGesture):
While we were already informing WebPageProxy of 'did begin' and 'did end'
navigation gesture events, we were missing 'will end'. Add it.

11:25 AM Changeset in webkit [182896] by timothy_horton@apple.com
  • 8 edits in trunk/Source/WebKit2

Dispatching multiple asynchronous animated resizes in parallel causes page scale to detach from reality
https://bugs.webkit.org/show_bug.cgi?id=143812
<rdar://problem/19866038>

Reviewed by Simon Fraser.

  • Shared/VisibleContentRectUpdateInfo.h:

(WebKit::VisibleContentRectUpdateInfo::VisibleContentRectUpdateInfo):
No cats in transaction (more of these below, too).

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::dynamicViewportSizeUpdate):
(WebKit::WebPageProxy::dynamicViewportUpdateChangedTarget):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::handleTap):
(WebKit::WebPage::commitPotentialTap):
(WebKit::WebPage::dynamicViewportSizeUpdate):
Add an incrementing ID to dynamicViewportSizeUpdates. The UI process keeps
the current ID, and it is bounced through the Web process (dynamicViewportSizeUpdates)
back to the UI process (dynamicViewportUpdateChangedTarget). If we have
dispatched another dynamicViewportSizeUpdate in the interim, ignore
the intermediate target.

10:44 AM Changeset in webkit [182895] by Antti Koivisto
  • 5 edits in trunk/Source/WTF

Use CommonCrypto for SHA1 and MD5
https://bugs.webkit.org/show_bug.cgi?id=143826

Reviewed by Anders Carlsson.

CommonCrypto SHA1 implementation is ~4x faster than the naive WTF one. Use it when available.

These are covered by existing API tests.

  • wtf/MD5.cpp:

(WTF::MD5::MD5):
(WTF::MD5::addBytes):
(WTF::MD5::checksum):

  • wtf/MD5.h:
  • wtf/SHA1.cpp:

(WTF::SHA1::SHA1):
(WTF::SHA1::addBytes):
(WTF::SHA1::computeHash):

Remove the side effect where computeHash resets the state. No one relies on it.

(WTF::SHA1::hexDigest):
(WTF::SHA1::computeHexDigest):

  • wtf/SHA1.h:
10:32 AM Changeset in webkit [182894] by mmaxfield@apple.com
  • 10 edits in trunk

[iOS] Delete hardcoded font fallback tables
https://bugs.webkit.org/show_bug.cgi?id=143583

Reviewed by Darin Adler

Source/WebCore:

Instead of hardcoding which font to use for a particular character, use
CTFontCreatePhysicalFontDescriptorForCharactersWithLanguage().

Updated test expected results:

editing/selection/vertical-rl-rtl-extend-line-backward-br.html
editing/selection/vertical-rl-rtl-extend-line-backward-p.html
editing/selection/vertical-rl-rtl-extend-line-forward-br.html
editing/selection/vertical-rl-rtl-extend-line-forward-p.html
fast/text/international/danda-space.html
fast/text/international/thai-baht-space.html

  • platform/graphics/ios/FontCacheIOS.mm:

(WebCore::FontCache::getSystemFontFallbackForCharacters):
(WebCore::FontCache::systemFallbackForCharacters):

  • platform/spi/cocoa/CoreTextSPI.h:

LayoutTests:

Updating expected results.

  • editing/selection/vertical-rl-rtl-extend-line-backward-br.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-backward-p.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-forward-br.html: Updating expected results
  • editing/selection/vertical-rl-rtl-extend-line-forward-p.html: Updating expected results
  • fast/text/international/danda-space.html: Updating expected results
  • fast/text/international/thai-baht-space.html: Updating expected results
10:30 AM Changeset in webkit [182893] by ap@apple.com
  • 12 edits in trunk/LayoutTests

More flaky tests in http/tests/security/mixedContent
https://bugs.webkit.org/show_bug.cgi?id=143804

Reviewed by Csaba Osztrogonác.

Start secondary window loading in onload, so that it doesn't race with main document
finishing to load.

  • http/tests/security/mixedContent/about-blank-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/about-blank-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-audio-video-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/insecure-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-image-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-xhr-in-main-frame.html:
  • http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/redirect-http-to-https-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/redirect-https-to-http-iframe-in-main-frame.html:
10:28 AM Changeset in webkit [182892] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

Remove PluginController::isPluginVisible().
https://bugs.webkit.org/show_bug.cgi?id=143830

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-16
Reviewed by Darin Adler.

PluginController::isPluginVisible() was introduced by http://webkit.org/b/60285.
This method had been used only for WebKit2 on Windows, and no one uses it now.
So we can remove it.

No new tests, no behavior change.

  • PluginProcess/PluginControllerProxy.cpp:

(WebKit::PluginControllerProxy::isPluginVisible): Deleted.

  • PluginProcess/PluginControllerProxy.h:
  • WebProcess/Plugins/PluginController.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::isPluginVisible): Deleted.

  • WebProcess/Plugins/PluginView.h:
10:03 AM Changeset in webkit [182891] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo] Compile error when environment variable WEBKITLIBRARIESDIR is not defined.
https://bugs.webkit.org/show_bug.cgi?id=143828

Reviewed by Brent Fulgham.

Python throws an exception when calling os.environWEBKITLIBRARIESDIR and
WEBKITLIBRARIESDIR is not defined. WEBKITLIBRARIESDIR is obsolete, we can remove it.

  • AVFoundationSupport.py:

(lookFor):

9:53 AM Changeset in webkit [182890] by Csaba Osztrogonác
  • 4 edits in trunk/Source

Remove the unnecessary WTF_CHANGES define
https://bugs.webkit.org/show_bug.cgi?id=143825

Reviewed by Andreas Kling.

  • config.h:
9:19 AM Changeset in webkit [182889] by ap@apple.com
  • 4 edits in trunk/Source/WebCore

Minor AudioContext cleanup
https://bugs.webkit.org/show_bug.cgi?id=143816

Reviewed by Jer Noble.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::~AudioContext):
(WebCore::AudioContext::lazyInitialize):
(WebCore::AudioContext::stop):
(WebCore::AudioContext::derefNode):
(WebCore::AudioContext::scheduleNodeDeletion):
(WebCore::AudioContext::deleteMarkedNodes):
(WebCore::AudioContext::stopDispatch): Deleted.
(WebCore::AudioContext::deleteMarkedNodesDispatch): Deleted.

  • Modules/webaudio/AudioContext.h:
  • Modules/webaudio/AudioNode.cpp: (WebCore::AudioNode::~AudioNode):
8:43 AM Changeset in webkit [182888] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unnecessary intermediate object from DOMTreeOutline
https://bugs.webkit.org/show_bug.cgi?id=143811

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-16
Reviewed by Brian Burg.

  • UserInterface/Views/DOMTreeOutline.js:

(WebInspector.DOMTreeOutline):
(WebInspector.DOMTreeOutline.prototype._selectedNodeChanged):
(WebInspector.DOMTreeOutline.prototype.addEventListener): Deleted.
(WebInspector.DOMTreeOutline.prototype.removeEventListener): Deleted.
This object used to be used to handle event dispatching, but
TreeOutlines themselves are now WebInspector.Objects so we
can remove the intermediary.

8:18 AM Changeset in webkit [182887] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed attempt to fix Windows build after r182881.

Add missing header include.

  • page/PageConsoleClient.h:
6:55 AM Changeset in webkit [182886] by Gyuyoung Kim
  • 2 edits in trunk/Source/WebKit2

[EFL] Disable a flaky ewk_context_network_process_model() API test
https://bugs.webkit.org/show_bug.cgi?id=143824

Reviewed by Csaba Osztrogonác.

ewk_context_network_process_model has been often failed. Though Bug 142967
was filed to fix this issue, it is not solved yet. To maintain EFL bot, this patch
disables it until fixing it.

  • UIProcess/API/efl/tests/test_ewk2_context.cpp:

(TEST_F):

6:39 AM Changeset in webkit [182885] by Csaba Osztrogonác
  • 6 edits
    1 add
    2 deletes in trunk

[EFL] Bump LLVM to version 3.6.0 on X86_64
https://bugs.webkit.org/show_bug.cgi?id=143604

Reviewed by Gyuyoung Kim.

.:

  • Source/cmake/FindLLVM.cmake: Added version handling.
  • Source/cmake/OptionsEfl.cmake: Require LLVM 3.6.0 on X86_64 and patched LLVM 3.5.0 on AArch64.

Tools:

  • efl/jhbuild.modules:
  • efl/patches/llvm-elf-add-stackmaps-arm64.patch: Added the necessary part of llvm-elf-add-stackmaps.patch.
  • efl/patches/llvm-elf-add-stackmaps.patch: Removed, it is included in LLVM 3.6.0 release.
  • efl/patches/llvm-elf-allow-fde-references-outside-the-2gb-range.patch: Removed, it is included in LLVM 3.6.0 release.
  • efl/patches/llvm-version-arm64.patch: Added. Set PACKAGE_VERSION to "3.5.0ftl" to be able to ensure we use patched LLVM on AArch64.
6:37 AM Changeset in webkit [182884] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[WK2] Forwarding headers generator shouldn't generate unnecessary headers
https://bugs.webkit.org/show_bug.cgi?id=143820

Reviewed by Carlos Garcia Campos.

  • Scripts/generate-forwarding-headers.pl:

(collectNeededHeaders):

6:27 AM Changeset in webkit [182883] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[EFL] Remove an unnecessary workaround from jhbuildrc
https://bugs.webkit.org/show_bug.cgi?id=143823

Reviewed by Gyuyoung Kim.

  • efl/jhbuildrc:
4:46 AM Changeset in webkit [182882] by Csaba Osztrogonác
  • 5 edits in trunk

[GTK] Run forwarding headers generator unconditionally
https://bugs.webkit.org/show_bug.cgi?id=143819

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

  • PlatformGTK.cmake:

Tools:

  • TestWebKitAPI/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
12:47 AM Changeset in webkit [182881] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Tests introduced in r182877 are flaky
https://bugs.webkit.org/show_bug.cgi?id=143784

Reviewed by Alexey Proskuryakov.

Tests introduced in r182877 are flaky as the line number sometimes
appears in the console messages. This patch updates the console
logging code so that no Document is provided when logging. Therefore,
no line number will ever be displayed. In this case, I don't think
having the line number is terribly useful anyway.

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

Apr 15, 2015:

10:59 PM Changeset in webkit [182880] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

We should dump GraphicsLayer's anchorPoint z component
https://bugs.webkit.org/show_bug.cgi?id=143815

Reviewed by Tim Horton.

We didn't include the z component of a layer's anchor point when dumping.
Dump if it's non-zero (to avoid having to change lots of test output).
No test with non-zero z appears to dump layers.

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties):

  • rendering/style/RenderStyle.cpp:

(WebCore::requireTransformOrigin): Remove a FIXME which, on further consideration,
is wrong.

8:57 PM Changeset in webkit [182879] by Brent Fulgham
  • 6 edits in trunk/Source

[Mac] Disable "Save to Downloads" option for local files
https://bugs.webkit.org/show_bug.cgi?id=143794

Reviewed by Tim Horton.

Disable the Image and Media download options if the download
target is a local file. We can only download web resources;
anything else is actually a no-op.

Source/WebCore:

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::checkOrEnableIfNeeded): Disable
menu item if appropriate.

Source/WebKit/mac:

  • WebView/WebActionMenuController.mm:

(-[WebActionMenuController _defaultMenuItemsForImage]):
(-[WebActionMenuController _defaultMenuItemsForVideo]):

Source/WebKit2:

  • UIProcess/mac/WKActionMenuController.mm:

(-[WKActionMenuController _defaultMenuItemsForVideo]):
(-[WKActionMenuController _defaultMenuItemsForImage]):

8:40 PM Changeset in webkit [182878] by akling@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Make MarkedBlock and WeakBlock 4x smaller.
<https://webkit.org/b/143802>

Reviewed by Mark Hahnenberg.

To reduce GC heap fragmentation and generally use less memory, reduce the size of MarkedBlock
and its buddy WeakBlock by 4x, bringing them from 64kB+4kB to 16kB+1kB.

In a sampling of cool web sites, I'm seeing ~8% average reduction in overall GC heap size.
Some examples:

apple.com: 6.3MB -> 5.5MB (14.5% smaller)

reddit.com: 4.5MB -> 4.1MB ( 9.7% smaller)

twitter.com: 23.2MB -> 21.4MB ( 8.4% smaller)

cuteoverload.com: 24.5MB -> 23.6MB ( 3.8% smaller)

Benchmarks look mostly neutral.
Some small slowdowns on Octane, some slightly bigger speedups on Kraken and SunSpider.

  • heap/MarkedBlock.h:
  • heap/WeakBlock.h:
  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
7:53 PM Changeset in webkit [182877] by Chris Dumez
  • 12 edits
    16 adds
    2 deletes in trunk

Add a console message when a stylesheet is not parsed due to invalid MIME type
https://bugs.webkit.org/show_bug.cgi?id=143784

Reviewed by Joseph Pecoraro.

Source/WebCore:

After r180020, we no longer have a quirks mode exception for CSS MIME
types. This means that we'll start rejecting stylesheets that were
previously accepted due to this quirk. In this case we log a console
message to help Web developers understand why their stylesheet is being
rejected.

  • css/StyleRuleImport.cpp:

(WebCore::StyleRuleImport::setCSSStyleSheet):

  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • Initialize hasValidMIMEType to true so that it ends up being false only when canUseSheet(hasValidMIMEType) is called and we've determined the MIME type is indeed invalid. Otherwise, hasValidMIMEType would also be false when m_data is null or empty in CachedCSSStyleSheet::sheetText() and we don't want to display the MIME type error in this case.
  • If hasValidMIMEType is false, display the console message and abort early. We don't need to execute the rest of the function in this case as sheetText is a null String and there is no point in trying to parse it.
  • Drop handling of !hasValidMIMEType && !hasSyntacticallyValidCSSHeader() as this can no longer be reached. This handling no longer makes sense after r180020 as sheetText() will now always return a null String if the MIME type is invalid (as we no longer support the CSS MIME type quirks mode).
  • css/StyleSheetContents.h:
  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::setCSSStyleSheet):

LayoutTests:

Update expectations for tests that are using stylesheets served with wrong
MIME type as we now display a console message in this case.

  • http/tests/inspector/css/bad-mime-type-expected.txt:
  • http/tests/mime/standard-mode-does-not-load-stylesheet-with-text-plain-and-css-extension-expected.txt:
  • http/tests/mime/standard-mode-does-not-load-stylesheet-with-text-plain-expected.txt:
  • http/tests/misc/css-accept-any-type-expected.txt:
  • http/tests/misc/css-reject-any-type-in-strict-mode-expected.txt:
  • http/tests/security/cross-origin-css-1-expected.txt: Added.
  • http/tests/security/cross-origin-css-1.html: Added.
  • http/tests/security/cross-origin-css-2-expected.txt: Added.
  • http/tests/security/cross-origin-css-2.html: Added.
  • http/tests/security/cross-origin-css-3-expected.txt: Added.
  • http/tests/security/cross-origin-css-3.html: Added.
  • http/tests/security/cross-origin-css-4-expected.txt: Added.
  • http/tests/security/cross-origin-css-4.html: Added.
  • http/tests/security/cross-origin-css-5-expected.txt: Added.
  • http/tests/security/cross-origin-css-5.html: Added.
  • http/tests/security/cross-origin-css-6-expected.txt: Added.
  • http/tests/security/cross-origin-css-6.html: Added.
  • http/tests/security/cross-origin-css-7-expected.txt: Added.
  • http/tests/security/cross-origin-css-7.html: Added.
  • http/tests/security/cross-origin-css-8-expected.txt: Added.
  • http/tests/security/cross-origin-css-8.html: Added.
  • http/tests/security/cross-origin-css-expected.txt: Removed.
  • http/tests/security/cross-origin-css.html: Removed.

Split http/tests/security/cross-origin-css.html into several tests. The
test would be flaky otherwise as console messages could appear in
different order for every run.

  • platform/mac/http/tests/misc/acid3-expected.txt:
7:50 PM Changeset in webkit [182876] by Said Abou-Hallawa
  • 4 edits
    4 adds in trunk

Minimum font size pref breaks SVG text very badly.
https://bugs.webkit.org/show_bug.cgi?id=143590.

Reviewed by Simon Fraser.

Source/WebCore:

When enabling the minimum font size perf, the computed font size is set
to the minimum font size if the computed value is smaller than the minimum.
The bug happens because the SVG text element applies its scaling on the
computed value after applying the minimum fort size rule. This means the
final computed value for the font size will be the scaling of the minimum
font size and not minimum font size itself. What we need is to postpone
applying the minimum font size rules, till the SVG scaling is applied.

Tests: svg/text/font-small-enlarged-minimum-larger.svg

svg/text/font-small-enlarged-minimum-smaller.svg

  • rendering/svg/RenderSVGInlineText.cpp:

(WebCore::RenderSVGInlineText::computeNewScaledFontForStyle): Call
computedFontSizeFromSpecifiedSizeForSVGInlineText() even if scalingFactor
is 1. We need to make sure the minimum font size rules are applied. This
function was assuming the mininum font size rule was applied when resolving
the style. This is not true anymore for the SVG text.

  • style/StyleFontSizeFunctions.cpp:

(WebCore::Style::computedFontSizeFromSpecifiedSize): Do not apply the
minimum size rules for the SVG element until it applies its scaling to
the font size.

LayoutTests:

When enabling the minimum font size perf, the SVG text element should
apply the minimum font size rules on the scaled font.

  • svg/text/font-small-enlarged-minimum-larger-expected.svg: Added.
  • svg/text/font-small-enlarged-minimum-larger.svg: Added.

Minimum font size is larger than the scaled font size. Also the expected
file makes sure the minimum font size rules are still applied if no scaling
is applied.

  • svg/text/font-small-enlarged-minimum-smaller-expected.svg: Added.
  • svg/text/font-small-enlarged-minimum-smaller.svg: Added.

Minimum font size is smaller than the scaled font size. So the minimim font
size rule should not have any effect on the final computed font size.

7:25 PM Changeset in webkit [182875] by andersca@apple.com
  • 4 edits in trunk/Source/WebKit2

Make websiteDataStore on WKWebViewConfiguration public
https://bugs.webkit.org/show_bug.cgi?id=143810

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.h:
  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration websiteDataStore]):
(-[WKWebViewConfiguration setWebsiteDataStore:]):
(-[WKWebViewConfiguration _websiteDataStore]):
(-[WKWebViewConfiguration _setWebsiteDataStore:]):

5:45 PM Changeset in webkit [182874] by Gyuyoung Kim
  • 3 edits in trunk/Tools

[EFL] Add gnutls to jhbuild.module
https://bugs.webkit.org/show_bug.cgi?id=143777

Reviewed by Csaba Osztrogonác.

EFL port has required at least 3.0.0 version of gnutls since r176712.
However some old linux distributions don't support 3.0.0 version. Besides
other projects sometimes need to use lower version of gnutls.

This patch supports to download gnutls through jhbuild, and use it.

  • efl/install-dependencies: Add nettle-dev dependency and remove libgnutls28-dev.
  • efl/jhbuild.modules: Download 3.3 version because 3.3 version is stable version.
5:45 PM Changeset in webkit [182873] by andersca@apple.com
  • 8 edits
    2 copies
    1 move in trunk/Source/WebKit2

Make WKWebsiteDataStore public
https://bugs.webkit.org/show_bug.cgi?id=143805

Reviewed by Dan Bernstein.

Rename the current _WKWebsiteDataStore to WKWebsiteDataStore. Make init unavailable and tighten up the
types of the defaultDataStore and nonPersistentDataStore class methods.

Add a new _WKWebsiteDataStore @interface and @implementation that derives from WKWebsiteDataStore
and forwards the defaultDataStore and nonPersistentDataStore method calls.

  • Shared/API/Cocoa/WebKit.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView initWithFrame:configuration:]):

  • UIProcess/API/Cocoa/WKWebViewConfiguration.mm:

(-[WKWebViewConfiguration _websiteDataStore]):

  • UIProcess/API/Cocoa/WKWebsiteDataStore.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.h.
  • UIProcess/API/Cocoa/WKWebsiteDataStore.mm: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStore.mm.

(+[WKWebsiteDataStore defaultDataStore]):
(+[WKWebsiteDataStore nonPersistentDataStore]):
(-[WKWebsiteDataStore dealloc]):
(-[WKWebsiteDataStore isNonPersistent]):
(toSystemClockTime):
(-[WKWebsiteDataStore fetchDataRecordsOfTypes:completionHandler:]):
(-[WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]):
(toWebsiteDataRecords):
(-[WKWebsiteDataStore removeDataOfTypes:forDataRecords:completionHandler:]):
(-[WKWebsiteDataStore _apiObject]):

  • UIProcess/API/Cocoa/WKWebsiteDataStoreInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataStoreInternal.h.

(WebKit::wrapper):

  • UIProcess/API/Cocoa/_WKWebsiteDataStore.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:

(+[_WKWebsiteDataStore defaultDataStore]):
(+[_WKWebsiteDataStore nonPersistentDataStore]):
(-[_WKWebsiteDataStore dealloc]): Deleted.
(-[_WKWebsiteDataStore isNonPersistent]): Deleted.
(toWebsiteDataTypes): Deleted.
(toSystemClockTime): Deleted.
(-[_WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:]): Deleted.
(-[_WKWebsiteDataStore _apiObject]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:
5:15 PM Changeset in webkit [182872] by commit-queue@webkit.org
  • 5 edits in trunk

String.prototype.startsWith/endsWith/includes have wrong length in r182673
https://bugs.webkit.org/show_bug.cgi?id=143659

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-15
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Fix lengths of String.prototype.{includes,startsWith,endsWith} per spec
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.includes
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.startswith
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-string.prototype.endswith

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):

LayoutTests:

  • js/script-tests/string-includes.js:
  • js/string-includes-expected.txt:
5:10 PM Changeset in webkit [182871] by mark.lam@apple.com
  • 13 edits
    4 deletes in trunk

Remove obsolete VMInspector debugging tool.
https://bugs.webkit.org/show_bug.cgi?id=143798

Reviewed by Michael Saboff.

Source/JavaScriptCore:

I added the VMInspector tool 3 years ago to aid in VM hacking work. Some of it
has bit rotted, and now the VM also has better ways to achieve its functionality.
Hence this code is now obsolete and should be removed.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • interpreter/CallFrame.h:
  • interpreter/VMInspector.cpp: Removed.
  • interpreter/VMInspector.h: Removed.
  • llint/LowLevelInterpreter.cpp:

Source/WebCore:

No new tests needed. Just removing obsolete code.

  • ForwardingHeaders/interpreter/VMInspector.h: Removed.

Tools:

  • TestWebKitAPI/CMakeLists.txt:
  • TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
  • TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters:
  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp: Removed.
4:21 PM Changeset in webkit [182870] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: InspectorTest frontend console methods redirected to the frontend are wrong
https://bugs.webkit.org/show_bug.cgi?id=143801

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-15
Reviewed by Brian Burg.

  • UserInterface/Base/Test.js:

(InspectorTest.evaluateInPage):
Properly if check for the existence of an agent.

(global):
Properly hook up console redirect handlers so they
will output the right type and arguments strings.

4:21 PM Changeset in webkit [182869] by timothy_horton@apple.com
  • 7 edits
    1 add in trunk

Custom CSS cursors do not use -webkit-image-set on retina displays
https://bugs.webkit.org/show_bug.cgi?id=120783
.:

Reviewed by Beth Dakin.

Add a manual test for custom CSS cursors on retina displays.

  • ManualTests/retina-cursors.html: Added.

Source/WebCore:

<rdar://problem/14921432>

Reviewed by Beth Dakin.

Scale NSCursor images correctly so custom CSS cursors work with
-webkit-image-set on retina displays.

  • WebCore.exp.in:
  • page/EventHandler.cpp:

(WebCore::EventHandler::selectCursor):

  • platform/mac/CursorMac.mm:

(WebCore::createCustomCursor):
(WebCore::Cursor::ensurePlatformCursor):

Source/WebKit2:

Reviewed by Beth Dakin.

Serialize the cursor image scale for SetCursor messages so custom
CSS cursors work with -webkit-image-set on retina displays.

  • Shared/WebCoreArgumentCoders.cpp:

(CoreIPC::ArgumentCoder<Cursor>::encode):
(CoreIPC::ArgumentCoder<Cursor>::decode):

4:14 PM Changeset in webkit [182868] by commit-queue@webkit.org
  • 5 edits in trunk

Math.imul has wrong length in Safari 8.0.4
https://bugs.webkit.org/show_bug.cgi?id=143658

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-15
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Correcting function length from 1, to 2, to match spec
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-math.imul

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

LayoutTests:

  • js/script-tests/math.js:
4:09 PM Changeset in webkit [182867] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Handle all possible Console message Source types in IssueMessage
https://bugs.webkit.org/show_bug.cgi?id=143803

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-15
Reviewed by Brian Burg.

  • UserInterface/Models/IssueMessage.js:

(WebInspector.IssueMessage):
Update the switch to handle all possible console message sources.
"wml" was legacy and no longer supported.

3:56 PM Changeset in webkit [182866] by ap@apple.com
  • 5 edits in trunk/Source/WebCore

No thread safety when passing ThreadableLoaderOptions from a worker thread
https://bugs.webkit.org/show_bug.cgi?id=143790

Reviewed by Geoffrey Garen.

  • loader/ThreadableLoader.h:
  • loader/ThreadableLoader.cpp: (WebCore::ThreadableLoaderOptions::isolatedCopy): Added.
  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge): Don't just send
a structure with strings to a different thread, that's bad.

  • platform/CrossThreadCopier.h: I think that this is dead code, but for this bug,

just removing a clearly wrong specialization.

3:45 PM Changeset in webkit [182865] by achristensen@apple.com
  • 16 edits in trunk

Progress towards CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=143785

Reviewed by Csaba Osztrogonác.

.:

  • CMakeLists.txt:
  • Source/cmake/OptionsMac.cmake:
  • Source/cmake/WebKitFS.cmake:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformMac.cmake:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKit/mac:

  • WebView/WebPDFDocumentExtras.mm:
  • WebView/WebPDFView.mm:

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
3:35 PM Changeset in webkit [182864] by dbates@webkit.org
  • 4 edits in trunk/Source/WebCore

Clean up: Have SVGTextLayoutEngine::beginTextPathLayout() take a reference to a
RenderSVGTextPath instead of a pointer
https://bugs.webkit.org/show_bug.cgi?id=143787

Reviewed by Andreas Kling.

SVGTextLayoutEngine::beginTextPathLayout() assumes that the passed RenderObject is a
non-null pointer to a RenderSVGTextPath object. Instead we should have this function take a
reference to a RenderSVGTextPath object to help callers catch bad usage and better document
the expectation of a valid RenderSVGTextPath object.

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::layoutCharactersInTextBoxes): Downcast the renderer of the
inline box to a RenderSVGTextPath object and pass it to SVGTextLayoutEngine::beginTextPathLayout().
We ensured that this cast is safe earlier in this function.
SVGTextLayoutEngine::beginTextPathLayout().

  • rendering/svg/SVGTextLayoutEngine.cpp:

(WebCore::SVGTextLayoutEngine::beginTextPathLayout): Change type of first parameter from
RenderObject* to RenderSVGTextPath. Remove ASSERT() that was checking for a non-null
RenderObject pointer since we are passing the renderer by reference and a well-formed
reference must refer to a valid object.

  • rendering/svg/SVGTextLayoutEngine.h: Substitute RenderSVGTextPath& for RenderObject*.
2:49 PM Changeset in webkit [182863] by commit-queue@webkit.org
  • 5 edits in trunk

Number.parseInt in nightly r182673 has wrong length
https://bugs.webkit.org/show_bug.cgi?id=143657

Patch by Jordan Harband <ljharb@gmail.com> on 2015-04-15
Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Correcting funciton length from 1, to 2, to match spec
https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.parseint

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

LayoutTests:

  • js/number-constructor-expected.txt:
  • js/script-tests/number-constructor.js:
2:48 PM Changeset in webkit [182862] by andersca@apple.com
  • 6 edits
    1 copy
    2 moves in trunk/Source/WebKit2

Make WKWebsiteDataRecord public
https://bugs.webkit.org/show_bug.cgi?id=143796

Reviewed by Dan Bernstein.

Rename _WKWebsiteDataRecord and associated files to WKWebsiteDataRecord and
add a new _WKWebsiteDataRecord.h with a class @interface declaration that just
inherits from WKWebsiteDataRecord. We don't need an @implementation since nobody is expected
to allocate _WKWebsiteDataRecord objects.

  • Shared/API/Cocoa/WebKit.h:
  • Shared/Cocoa/APIObject.mm:

(API::Object::newObject):

  • UIProcess/API/Cocoa/WKWebsiteDataRecord.h: Copied from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataRecord.h.
  • UIProcess/API/Cocoa/WKWebsiteDataRecord.mm: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataRecord.mm.

(-[WKWebsiteDataRecord dealloc]):
(dataTypesToString):
(-[WKWebsiteDataRecord description]):
(-[WKWebsiteDataRecord displayName]):
(-[WKWebsiteDataRecord dataTypes]):
(-[WKWebsiteDataRecord _apiObject]):

  • UIProcess/API/Cocoa/WKWebsiteDataRecordInternal.h: Renamed from Source/WebKit2/UIProcess/API/Cocoa/_WKWebsiteDataRecordInternal.h.

(WebKit::wrapper):
(WebKit::toWebsiteDataTypes):
(WebKit::toWKWebsiteDataTypes):

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataStore.mm:

(toWebsiteDataRecords):

  • WebKit2.xcodeproj/project.pbxproj:
2:38 PM Changeset in webkit [182861] by bshafiei@apple.com
  • 3 edits in tags/Safari-601.1.27/Source/WebKit2

Merged r182846. rdar://problem/20549298

1:59 PM Changeset in webkit [182860] by jer.noble@apple.com
  • 16 edits in trunk/Source

[Fullscreen] ChromeClient::exitVideoFullscreen() should take a pointer to a HTMLVideoElement.
https://bugs.webkit.org/show_bug.cgi?id=143674

Reviewed by Darin Adler.

Source/WebCore:

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::enterFullscreen): Pass a reference.
(WebCore::HTMLMediaElement::exitFullscreen): exitVideoFullscreen() -> exitVideoFullscreenForVideoElement(...).

  • page/ChromeClient.h:

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::enterVideoFullscreenForVideoElement): Takes a reference.
(WebChromeClient::exitVideoFullscreenForVideoElement): Renamed from exitVideoFullscreen().
(WebChromeClient::exitVideoFullscreen): Deleted.

Source/WebKit/win:

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::enterVideoFullscreenForVideoElement): Takes a reference.
(WebChromeClient::exitVideoFullscreenForVideoElement): Renamed from exitVideoFullscreen().
(WebChromeClient::exitVideoFullscreen): Deleted.

  • WebCoreSupport/WebChromeClient.h:
  • WebView.cpp:

(WebView::enterVideoFullscreenForVideoElement): Takes a reference.
(WebView::exitVideoFullscreenForVideoElement): Renamed from exitVideoFullscreen().
(WebView::exitVideoFullscreen): Deleted.

  • WebView.h:

Source/WebKit2:

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::enterVideoFullscreenForVideoElement): Takes a reference.
(WebKit::WebChromeClient::exitVideoFullscreenForVideoElement): Renamed from exitVideoFullscreen().
(WebKit::WebChromeClient::exitVideoFullscreen): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/ios/WebVideoFullscreenManager.h:
  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::enterVideoFullscreenForVideoElement): Ditto.
(WebKit::WebVideoFullscreenManager::exitVideoFullscreenForVideoElement): Renamed from exitVideoFullscreen().
(WebKit::WebVideoFullscreenManager::didEnterFullscreen): Pass a reference.
(WebKit::WebVideoFullscreenManager::didCleanupFullscreen): Ditto.
(WebKit::WebVideoFullscreenManager::exitVideoFullscreen): Deleted.

1:54 PM Changeset in webkit [182859] by jer.noble@apple.com
  • 2 edits in trunk/Tools

Unreviewed gardening; Make the previous commit apply only _post_ Yosemite.

  • TestWebKitAPI/Tests/mac/FullscreenZoomInitialFrame.mm:
1:50 PM Changeset in webkit [182858] by jer.noble@apple.com
  • 2 edits in trunk/Tools

Unreviewed gardening; disable FullscreenZoomInitialFrame.WebKit2 API test post-Yosemite.

  • TestWebKitAPI/Tests/mac/FullscreenZoomInitialFrame.mm:

(TestWebKitAPI::TEST_F):

1:32 PM Changeset in webkit [182857] by fpizlo@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Harden DFGForAllKills
https://bugs.webkit.org/show_bug.cgi?id=143792

Reviewed by Geoffrey Garen.

Unfortunately, we don't have a good way to test this yet - but it will be needed to prevent
bugs in https://bugs.webkit.org/show_bug.cgi?id=143734.

Previously ForAllKills used the bytecode kill analysis. That seemed like a good idea because
that analysis is cheaper than the full liveness analysis. Unfortunately, it's probably wrong:

  • It looks for kill sites at forExit origin boundaries. But, something might have been killed by an operation that was logically in between the forExit origins at the boundary, but was removed from the DFG for whatever reason. The DFG is allowed to have bytecode instruction gaps.


  • It overlooked the fact that a MovHint that addresses a local that is always live kills that local. For example, storing to an argument means that the prior value of the argument is killed.


This fixes the analysis by making it handle MovHints directly, and making it define kills in
the most conservative way possible: it asks if you were live before but dead after. If we
have the compile time budget to afford this more direct approach, then it's definitel a good
idea since it's so fool-proof.

  • dfg/DFGArgumentsEliminationPhase.cpp:
  • dfg/DFGForAllKills.h:

(JSC::DFG::forAllKilledOperands):
(JSC::DFG::forAllKilledNodesAtNodeIndex):
(JSC::DFG::forAllDirectlyKilledOperands): Deleted.

12:54 PM Changeset in webkit [182856] by Antti Koivisto
  • 5 edits in trunk/Source/WebKit2

Network Cache: Inline small body data to record file
https://bugs.webkit.org/show_bug.cgi?id=143783

Reviewed by Chris Dumez.

We currently save all body data as separate files. We can improve space efficiency and do less reads and writes
by inlining smaller resource bodies with the header.

  • NetworkProcess/cache/NetworkCacheIOChannel.h:
  • NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:

(WebKit::NetworkCache::IOChannel::read):
(WebKit::NetworkCache::IOChannel::readSync):
(WebKit::NetworkCache::IOChannel::write):

Add WorkQueue argument to allow specifying which queue the result is submitted to.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::decodeRecordMetaData):

Add a boolean indicating whether the body is inlined.

(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::Storage::decodeRecord):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::Storage::storeBodyAsBlob):
(WebKit::NetworkCache::Storage::encodeRecord):
(WebKit::NetworkCache::Storage::dispatchReadOperation):

Read the record first, then read the blob if needed.
Submit the read operation directly from the main queue. Only thing we do is opening an IO channel
and that uses O_NONBLOCK.
Process the read results in the IO work queue where we now do the blob retrieval.

(WebKit::NetworkCache::shouldStoreBodyAsBlob):

The current threshold for saving a separate blob is 16KB.

(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::createRecord): Deleted.
(WebKit::NetworkCache::encodeRecordHeader): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:
12:43 PM Changeset in webkit [182855] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

Non-local keyboards don't update scroll view parameters
https://bugs.webkit.org/show_bug.cgi?id=143791
<rdar://problem/18974020>

  • Platform/spi/ios/UIKitSPI.h:

Fix the build.

12:41 PM Changeset in webkit [182854] by bshafiei@apple.com
  • 3 edits in tags/Safari-601.1.26.1/Source/WebKit2

Merged r182846. rdar://problem/20549298

12:30 PM Changeset in webkit [182853] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.26.1/Source

Versioning.

12:26 PM Changeset in webkit [182852] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.26.1

New tag.

12:18 PM Changeset in webkit [182851] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

Non-local keyboards don't update scroll view parameters
https://bugs.webkit.org/show_bug.cgi?id=143791
<rdar://problem/18974020>

Reviewed by Enrica Casucci.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _shouldUpdateKeyboardWithInfo:]):
(-[WKWebView _keyboardWillChangeFrame:]):
(-[WKWebView _keyboardWillShow:]):
Make sure that we update scroll view parameters (obscured insets, etc.)
if we have a non-local keyboard, in addition to the cases where we have an assisted node.

12:10 PM Changeset in webkit [182850] by Chris Dumez
  • 2 edits in trunk/LayoutTests

Unreviewed, skip http/tests/inspector/css/bad-mime-type.html on Windows

Skip http/tests/inspector/css/bad-mime-type.html on Windows as it times
out. This is already the case for a lot of inspector tests on Windows.

  • platform/win/TestExpectations:
12:03 PM Changeset in webkit [182849] by Joseph Pecoraro
  • 4 edits in trunk/Source/JavaScriptCore

Provide SPI to allow changing whether JSContexts are remote debuggable by default
https://bugs.webkit.org/show_bug.cgi?id=143681

Reviewed by Darin Adler.

  • API/JSRemoteInspector.h:
  • API/JSRemoteInspector.cpp:

(JSRemoteInspectorGetInspectionEnabledByDefault):
(JSRemoteInspectorSetInspectionEnabledByDefault):
Provide SPI to toggle the default enabled inspection state of debuggables.

  • API/JSContextRef.cpp:

(JSGlobalContextCreateInGroup):
Respect the default setting.

11:22 AM Changeset in webkit [182848] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WTF

Harmonize binary semaphore ifdefs

They should be either OS(WINDOWS) (in which case we'd need
BinarySemaphoreWin.cpp, which is not shipped by WebKitGTK)
or PLATFORM(WIN) (in which case Mutex/ThreadCondition-based
implementation is used).

This fixes errors like:

CXX Source/WTF/wtf/threads/libWTF_la-BinarySemaphore.lo

../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In constructor 'WTF::BinarySemaphore::BinarySemaphore()':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:34:7: error: class 'WTF::BinarySemaphore' does not have any field named 'm_isSet'

: m_isSet(false)


../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In member function 'void WTF::BinarySemaphore::signal()':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:44:24: error: 'm_mutex' was not declared in this scope

MutexLocker locker(m_mutex);


../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:46:5: error: 'm_isSet' was not declared in this scope

m_isSet = true;

../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:47:5: error: 'm_condition' was not declared in this scope

m_condition.signal();

../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp: In member function 'bool WTF::BinarySemaphore::wait(double)':
../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:52:24: error: 'm_mutex' was not declared in this scope

MutexLocker locker(m_mutex);


../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:55:13: error: 'm_isSet' was not declared in this scope

while (!m_isSet) {


../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:56:21: error: 'm_condition' was not declared in this scope

timedOut = !m_condition.timedWait(m_mutex, absoluteTime);


../webkitgtk-2.4.8/Source/WTF/wtf/threads/BinarySemaphore.cpp:62:5: error: 'm_isSet' was not declared in this scope

m_isSet = false;

GNUmakefile:52762: recipe for target 'Source/WTF/wtf/threads/libWTF_la-BinarySemaphore.lo' failed

[W32] Inconsistent ifdefs in BinarySemaphore.h and BinarySemaphore.cpp
https://bugs.webkit.org/show_bug.cgi?id=143756

Patch by Руслан Ижбулатов <lrn1986@gmail.com> on 2015-04-15
Reviewed by Darin Adler.

  • wtf/threads/BinarySemaphore.h:
10:55 AM Changeset in webkit [182847] by commit-queue@webkit.org
  • 3 edits in trunk/Source/JavaScriptCore

JavaScriptCore: Use kCFAllocatorDefault where possible
https://bugs.webkit.org/show_bug.cgi?id=143747

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-15
Reviewed by Darin Adler.

  • heap/HeapTimer.cpp:

(JSC::HeapTimer::HeapTimer):

  • inspector/remote/RemoteInspectorDebuggableConnection.mm:

(Inspector::RemoteInspectorInitializeGlobalQueue):
(Inspector::RemoteInspectorDebuggableConnection::setupRunLoop):
For consistency and readability use the constant instead of
different representations of null.

10:50 AM Changeset in webkit [182846] by mitz@apple.com
  • 3 edits in trunk/Source/WebKit2

<rdar://problem/20549298> No matching NSi_ definition for postprocessed value of WK_{MAC,IOS}_TBA
https://bugs.webkit.org/show_bug.cgi?id=143786

Reviewed by Anders Carlsson.

  • Shared/API/Cocoa/WKFoundation.h: Added a placeholder for the postprocessing script to

insert a definition of NSi_* for the current deployment target. Import CoreFoundation.h so
that we can check if the macro is already defined.

  • WebKit2.xcodeproj/project.pbxproj: In the Postprocess WKFoundation.h script build phase,

replace the placeholder with a definition of NSi_{current deployment target} if not
already defined.

10:32 AM Changeset in webkit [182845] by andersca@apple.com
  • 5 edits in trunk/Source

Make creating send rights from shared memory more robust
https://bugs.webkit.org/show_bug.cgi?id=143730
rdar://problem/16595870

Reviewed by Darin Adler.

Source/WebCore:

Add a bool conversion operator to MachSendRight and tidy up the default constructor.

  • platform/cocoa/MachSendRight.h:

(WebCore::MachSendRight::operator bool):
(WebCore::MachSendRight::MachSendRight): Deleted.

Source/WebKit2:

This cleans up creation of handles and send rights and also fixes a bug where it would be impossible
to send more than 128 MB of shared memory in a single object.

  • Platform/SharedMemory.h:
  • Platform/mac/SharedMemoryMac.cpp:

(WebKit::makeMemoryEntry):
New helper function that creates a memory entry send right. This uses MAP_MEM_VM_SHARE which ensures
that memory objects larger than 128 MB will be handled correctly.

(WebKit::SharedMemory::create):
Call makeMemoryEntry.

(WebKit::SharedMemory::createHandle):
Call createSendRight.

(WebKit::SharedMemory::createSendRight):
Call makeMemoryEntry and add the necessary assertions.

9:54 AM Changeset in webkit [182844] by Chris Dumez
  • 2 edits in trunk/Tools

[Win] DRT does not seem to reset the 'UsesPageCache' setting between tests
https://bugs.webkit.org/show_bug.cgi?id=143779

Reviewed by Brent Fulgham.

Reset the 'UsesPageCache' setting to FALSE between tests on Windows,
similarly to what is done on Mac / WK1. Without this, PageCache could
stay enabled after page cache tests and cause weird behaviors.

  • DumpRenderTree/win/DumpRenderTree.cpp:

(resetWebPreferencesToConsistentValues):

9:36 AM Changeset in webkit [182843] by ap@apple.com
  • 2 edits in trunk/LayoutTests

streams/reference-implementation/readable-stream.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143778

9:19 AM Changeset in webkit [182842] by eric.carlson@apple.com
  • 22 edits in trunk/Source

Generalize "isPlayingAudio" to include other media characteristics
https://bugs.webkit.org/show_bug.cgi?id=143713

Reviewed by Jer Noble.

Source/WebCore:

No new functionality.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::stop): updateIsPlayingAudio -> updateIsPlayingMedia.
(WebCore::AudioContext::isPlayingAudioDidChange): Ditto.

  • dom/Document.cpp:

(WebCore::Document::addAudioProducer): Ditto.
(WebCore::Document::removeAudioProducer): Ditto.
(WebCore::Document::updateIsPlayingMedia): Renamed.
(WebCore::Document::updateIsPlayingAudio): Deleted.

  • dom/Document.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setMuted): updateIsPlayingAudio -> updateIsPlayingMedia.
(WebCore::HTMLMediaElement::setPlaying): Ditto.

  • page/ChromeClient.h:
  • page/Page.cpp:

(WebCore::Page::updateIsPlayingMedia): Renamed.
(WebCore::Page::updateIsPlayingAudio): Deleted.

  • page/Page.h:

Source/WebKit2:

  • UIProcess/API/C/WKPage.cpp:

(toGenericCallbackFunction): Scope CallbackBase.
(WKPageForceRepaint): Ditto.
(WKPageValidateCommand): Ditto.
(WKPageComputePagesForPrinting): Ditto.

  • UIProcess/API/Cocoa/_WKThumbnailView.mm:

(-[_WKThumbnailView _requestSnapshotIfNeeded]): Ditto.

  • UIProcess/API/mac/WKView.mm:

(-[WKView becomeFirstResponder]): Ditto.
(-[WKView updateFontPanelIfNeeded]): Ditto.
(-[WKView validateUserInterfaceItem:]): Ditto.
(-[WKView startSpeaking:]): Ditto.
(-[WKView selectedRangeWithCompletionHandler:]): Ditto.
(-[WKView markedRangeWithCompletionHandler:]): Ditto.
(-[WKView hasMarkedTextWithCompletionHandler:]): Ditto.
(-[WKView attributedSubstringForProposedRange:completionHandler:]): Ditto.
(-[WKView firstRectForCharacterRange:completionHandler:]): Ditto.
(-[WKView characterIndexForPoint:completionHandler:]): Ditto.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::isPlayingMediaDidChange): Rename from isPlayingAudioDidChange.
(WebKit::WebPageProxy::isPlayingAudioDidChange): Deleted.

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController dealloc]): Scope CallbackBase.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Ditto.

  • UIProcess/mac/WKPrintingView.mm:

(-[WKPrintingView _preparePDFDataForPrintingOnSecondaryThread]): Ditto.
(-[WKPrintingView _askPageToComputePageRects]): Ditto.
(-[WKPrintingView _drawPreview:]): Ditto.

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::setPluginIsPlayingAudio):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::isPlayingMediaDidChange):
(WebKit::WebChromeClient::isPlayingAudioDidChange): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
4:19 AM Changeset in webkit [182841] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

Network Cache: Add thread-safe accessors for storage paths
https://bugs.webkit.org/show_bug.cgi?id=143668

Reviewed by Darin Adler.

Less need to use StringCapture.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::dumpFilePath):
(WebKit::NetworkCache::Cache::storagePath):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::makeRecordsDirectoryPath):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::basePath):
(WebKit::NetworkCache::Storage::versionPath):
(WebKit::NetworkCache::Storage::recordsPath):
(WebKit::NetworkCache::Storage::synchronize):
(WebKit::NetworkCache::Storage::remove):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::Storage::finishReadOperation):
(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::deleteOldVersions):
(WebKit::NetworkCache::makeRecordDirectoryPath): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::baseDirectoryPath): Deleted.
(WebKit::NetworkCache::Storage::directoryPath): Deleted.

2:52 AM Changeset in webkit [182840] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix Debug build error 'comparison of unsigned expression >= 0 is always true [-Werror=type-limits]'
https://bugs.webkit.org/show_bug.cgi?id=143751

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-15
Reviewed by Csaba Osztrogonác.

No new tests, no new behaviors.

  • rendering/svg/SVGTextChunk.cpp:

(WebCore::SVGTextChunk::SVGTextChunk):

Apr 14, 2015:

10:44 PM Changeset in webkit [182839] by ap@apple.com
  • 2 edits in trunk/LayoutTests

inspector/console/console-api.html is very slow, frequently timing out
https://bugs.webkit.org/show_bug.cgi?id=143719

10:28 PM Changeset in webkit [182838] by ap@apple.com
  • 2 edits in trunk/LayoutTests

fast/dom/Window/timer-resume-on-navigation-back.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=33685

Reviewed by Brady Eidson.

If the timer fired before navigation, the test passed without going down the code
path that it was supposed to test. If it fired when navigation was in provisional
state, then dumping results was delayed until the navigation was finished, and
thus the intermediate page got dumped, and the test failed.

  • fast/dom/Window/timer-resume-on-navigation-back.html:
9:43 PM Changeset in webkit [182837] by Lucas Forschler
  • 5 edits in branches/safari-600.6-branch/Source

Versioning.

9:37 PM Changeset in webkit [182836] by Lucas Forschler
  • 1 copy in branches/safari-600.6-branch

New branch.

9:24 PM Changeset in webkit [182835] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Make inline continuation style change logic consistent.
https://bugs.webkit.org/show_bug.cgi?id=143737
rdar://problem/20486596

Reviewed by Simon Fraser.

Do not force RenderBlock type-casting on the first sibling of the continuation's container.
The first sibling of the container of a continuation should be handled as the rest of the siblings.

Source/WebCore:

Test: fast/inline/inline-with-column-span-and-remove-block-child-crash.html

  • rendering/RenderInline.cpp:

(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::styleDidChange):

LayoutTests:

  • fast/inline/inline-with-column-span-and-remove-block-child-crash-expected.txt: Added.
  • fast/inline/inline-with-column-span-and-remove-block-child-crash.html: Added.
8:57 PM Changeset in webkit [182834] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception in JSContext inspector when opening
https://bugs.webkit.org/show_bug.cgi?id=143741

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-14
Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.shouldShowViewForTimeline):
(WebInspector.TimelineManager.prototype._loadNewRecording):
Before using TimelineAgent, check for its existence first. It may
not exist in JSContext inspection.

7:29 PM Changeset in webkit [182833] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

7:27 PM Changeset in webkit [182832] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.27

New tag.

7:16 PM Changeset in webkit [182831] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Remove JavaScriptCoreUseJIT default from JavaScriptCore
https://bugs.webkit.org/show_bug.cgi?id=143746

Reviewed by Mark Lam.

  • runtime/VM.cpp:

(JSC::enableAssembler):

6:59 PM Changeset in webkit [182830] by dbates@webkit.org
  • 5 edits
    2 moves in trunk/LayoutTests

Rename test LayoutTests/fast/events/drag-link.html to drag-and-drop-link-into-focused-contenteditable.html
https://bugs.webkit.org/show_bug.cgi?id=143683

Reviewed by Alexey Proskuryakov.

The name of the test LayoutTests/fast/events/drag-link.html is too generic given its purpose, which is
to test that we do not cause an assertion failure when dragging and dropping an HTML hyperlink into
a focused content editable element. We should come up with a more descriptive name for this test that
better describes what it tests.

  • fast/events/drag-and-drop-link-into-focused-contenteditable-expected.txt: Renamed from LayoutTests/fast/events/drag-link-expected.txt.
  • fast/events/drag-and-drop-link-into-focused-contenteditable.html: Renamed from LayoutTests/fast/events/drag-link.html.
  • platform/efl/TestExpectations: Update file because of the rename.
  • platform/gtk/TestExpectations: Ditto.
  • platform/ios-simulator/TestExpectations: Ditto.
  • platform/mac-wk2/TestExpectations: Ditto.
6:39 PM Changeset in webkit [182829] by Chris Dumez
  • 7 edits
    1 move
    3 adds in trunk

Regression(r180020): Web Inspector crashes on pages that have a stylesheet with an invalid MIME type
https://bugs.webkit.org/show_bug.cgi?id=143745
<rdar://problem/20243916>

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

Add assertion in ContentSearchUtilities::findMagicComment() to make
sure the content String is not null or we would crash in
JSC::Yarr::interpret() later.

  • inspector/ContentSearchUtilities.cpp:

(Inspector::ContentSearchUtilities::findMagicComment):

Source/WebCore:

After r180020, we are stricter and no longer accept CSS resources that
are not served with a CSS MIME type. Showing Web inspector on a page
with such bad resource would crash because
InspectorPageAgent::cachedResourceContent() would return true but
the result String would be null. This null String would then later
be passed to the Yarr interpreter and crash on a String::is8Bit()
call.

cachedResourceContent() calls CachedCSSStyleSheet::sheetText(). Before
r180020, it would return the text, even if the MIME type was incorrect.
However, this is no longer the case and we now need to make sure that
cachedResourceContent() returns false if sheetText() returns a null
String.

Test: http/tests/inspector/css/bad-mime-type.html

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourceContent):

LayoutTests:

Add layout test that shows the Web inspector on a page that has
a stylesheet with an invalid MIME type, to make sure we don't
crash.

  • http/tests/inspector/css/bad-mime-type-expected.txt: Added.
  • http/tests/inspector/css/bad-mime-type.html: Added.
  • http/tests/misc/css-accept-any-type.html:
  • http/tests/misc/css-reject-any-type-in-strict-mode.html:
  • http/tests/misc/resources/stylesheet-bad-mime-type.php: Renamed from LayoutTests/http/tests/misc/resources/stylesheet.php.
6:34 PM Changeset in webkit [182828] by commit-queue@webkit.org
  • 15 edits
    2 adds in trunk

textPath layout performance improvement.
https://bugs.webkit.org/show_bug.cgi?id=141570.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-04-14
Reviewed by Darin Adler.

PerformanceTests:

Cut down the time spent in traversing the path for text by 50%. Instead
of traversing the path twice at a certain length: one time for the position
and the second time for the angle, we can merge these two passes into one.

  • SVG/TextOnPathSimple.html: Added.
  • SVG/resources/TextOnPathSimple.svg: Added.

Source/WebCore:

The bottleneck of the text-on-path performance is the position and angle
calculations for every single character. If the number of characters is
'n' and the number of path elements is 'm', the total number of processing
the path elements is O(2 x n x m). What makes it really worse is, for every
curve we keep splitting the curve till the split curve is almost a straight
line. The changes we need to do are:

  1. Merge the position and the angle traversals in one pass since they are returning info for the same length on the path. There is a degenerate case for the starting point when calculating the angle. The original code was solving this problem by passing an epsilon instead of zero but because traversing the path for position and angle are now merged, we will pass zero for the starting point as is. All we need is to move one step ahead without moving the position. We need the extra step forward to calculate the slope of the path at the starting point.
  2. We need to add a new mode to traversing a path. The new mode will take a vector of lengths and returns a vector of arrow vectors. Every arrow vector represents a position and an angle on the path at a certain length. This requires changing the SVGTextLayoutEngine to calculate the lengths of the characters on the curve first and then passing all of them to the path traversal function. Instead of traversing the path for every length, we are going to get the required point and angle from the vector of arrow vectors.

This patch is addressing the first fix only. The second one will require
refactoring the SVGTextLayoutEngine so I am going to address it in a
different patch.

  • platform/graphics/Path.cpp:

(WebCore::pathLengthApplierFunction): It is cleaner to move the function
of this method to PathTraversalState::processPathElement().

(WebCore::Path::length): Use new enum Action value and access methods.

(WebCore::Path::traversalStateAtLength): New function which returns the
traversalState at a certain length on a path.

(WebCore::Path::pointAtLength):
(WebCore::Path::normalAngleAtLength): Use traversalStateAtLength() to get
the traversalState and from it return either the position or the angle.

  • platform/graphics/Path.h: Define traversalStateAtLength().
  • platform/graphics/PathTraversalState.cpp:

(WebCore::distanceLine): Code clean up.

(WebCore::curveLength): Make the setting of m_previous and m_current happens
only in this function.

(WebCore::PathTraversalState::PathTraversalState): Add an optional parameter
for the desired length and move the initialization of the other members to
the class definition.

(WebCore::PathTraversalState::closeSubpath):
(WebCore::PathTraversalState::moveTo):
(WebCore::PathTraversalState::lineTo): Add the distance to the m_totalLength
instead of returning it since this is what all the callers were doing.

(WebCore::PathTraversalState::quadraticBezierTo):
(WebCore::PathTraversalState::cubicBezierTo): Add the distance to the
m_totalLength. Move the setting of m_previous and m_current to curveLength().
Remove unused members m_control1 and m_control2.

(WebCore::PathTraversalState::processSegment): Deleted.
(WebCore::PathTraversalState::finalizeAppendPathElement): Create a new
name for the function. Handle the case of the angle at the starting point
where m_desiredLength is set to zero. The new flag m_isZeroVector will be
set to notify the caller that the next iteration will be the last one and
it is only needed for the calculating the angle of a zero vector. m_current
should not change by this last iteration.

(WebCore::PathTraversalState::appendPathElement): This code is moved from
pathLengthApplierFunction().

(WebCore::PathTraversalState::processPathElement): This function is used
by the class Path. It is a wrapper for appendPathElement(). If m_isZeroVector
is set we append the new element to a copy for the PathTraversalState just
to get the angle for the zero vector.

  • platform/graphics/PathTraversalState.h: Change the enum values to not

not include the class or the enum class. Make the data members private and
expose the needed ones through access methods. Make all the internal methods
to be private.

(WebCore::PathTraversalState::processPathElement): Another wrapper for
appendPathElement() which is used by SVGPathTraversalStateBuilder.

(WebCore::PathTraversalState::action):
(WebCore::PathTraversalState::setAction):
(WebCore::PathTraversalState::desiredLength):
(WebCore::PathTraversalState::setDesiredLength):
(WebCore::PathTraversalState::success):
(WebCore::PathTraversalState::totalLength):
(WebCore::PathTraversalState::current):
(WebCore::PathTraversalState::normalAngle): New access methods which are now
needed after making the data members private.

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::layoutCharactersInTextBoxes): Make the casting
of the renderer on the caller side.

  • rendering/svg/SVGTextChunk.cpp:

(WebCore::SVGTextChunk::SVGTextChunk): The constructor should append the
elements of m_boxes instead of making this from outside the class.

(WebCore::SVGTextChunk::totalCharacters):
(WebCore::SVGTextChunk::totalLength):
(WebCore::SVGTextChunk::calculateLength): Deleted.
Replace calculateLength() by totalCharacters() and totalLength() to make
the interface cleaner.

(WebCore::SVGTextChunk::totalAnchorShift):
(WebCore::SVGTextChunk::calculateTextAnchorShift): Deleted.
Rename the function name.

(WebCore::SVGTextChunk::layout):
(WebCore::SVGTextChunk::processTextLengthSpacingCorrection):
(WebCore::SVGTextChunk::buildBoxTransformations):
(WebCore::SVGTextChunk::boxSpacingAndGlyphsTransform):
(WebCore::SVGTextChunk::processTextAnchorCorrection):
Move the chunk layout code from SVGTextChunkBuilder::layoutTextChunks()
to the SVGTextChunk::layout(). Move all the helper functions as well.

  • rendering/svg/SVGTextChunk.h:

(WebCore::SVGTextChunk::hasTextAnchor):
(WebCore::SVGTextChunk::boxes): Deleted.
Add the new methods and change most of the public methods to be private.

  • rendering/svg/SVGTextChunkBuilder.cpp:

(WebCore::SVGTextChunkBuilder::totalCharacters):
(WebCore::SVGTextChunkBuilder::totalLength):
(WebCore::SVGTextChunkBuilder::totalAnchorShift): This code is moved from
SVGTextLayoutEngine. It scans the boxes stored in the SVGTextChunkBuilder
and sums up the total values.

(WebCore::SVGTextChunkBuilder::transformationForTextBox):
(WebCore::SVGTextChunkBuilder::buildTextChunks):
(WebCore::SVGTextChunkBuilder::layoutTextChunks): Code clean up.

(WebCore::SVGTextChunkBuilder::addTextChunk): Deleted.
(WebCore::SVGTextChunkBuilder::processTextChunk): Deleted.
(WebCore::SVGTextChunkBuilder::processTextLengthSpacingCorrection): Deleted.
(WebCore::SVGTextChunkBuilder::processTextAnchorCorrection): Deleted.
(WebCore::SVGTextChunkBuilder::buildSpacingAndGlyphsTransform): Deleted.
This code now lives in SVGTextChunk.

  • rendering/svg/SVGTextChunkBuilder.h: Add new methods for code which was

moved from SVGTextLayoutEngine and remove methods for code which was removed
to SVGTextChunk.

  • rendering/svg/SVGTextLayoutEngine.cpp:

(WebCore::SVGTextLayoutEngine::beginTextPathLayout): Use the sum up methods
from SVGTextChunkBuilder instead of looping through the chunks. Also get a
clean order for defining variables and doing the calculations.

(WebCore::SVGTextLayoutEngine::finalizeTransformMatrices): Code clean up.

(WebCore::SVGTextLayoutEngine::layoutTextOnLineOrPath): Do a single path
traversal to get the position and the angle for a length on a path.

  • svg/SVGAnimateMotionElement.cpp:

(WebCore::SVGAnimateMotionElement::buildTransformForProgress): Do a single
path traversal to get the position and the angle at a length on a path.

  • svg/SVGPathTraversalStateBuilder.cpp:

(WebCore::SVGPathTraversalStateBuilder::SVGPathTraversalStateBuilder):
(WebCore::SVGPathTraversalStateBuilder::moveTo):
(WebCore::SVGPathTraversalStateBuilder::lineTo):
(WebCore::SVGPathTraversalStateBuilder::curveToCubic):
(WebCore::SVGPathTraversalStateBuilder::closePath):
(WebCore::SVGPathTraversalStateBuilder::setDesiredLength):
(WebCore::SVGPathTraversalStateBuilder::continueConsuming):
(WebCore::SVGPathTraversalStateBuilder::totalLength):
(WebCore::SVGPathTraversalStateBuilder::currentPoint):
(WebCore::SVGPathTraversalStateBuilder::incrementPathSegmentCount): Deleted.
(WebCore::SVGPathTraversalStateBuilder::pathSegmentIndex): Deleted.

  • svg/SVGPathTraversalStateBuilder.h:

(WebCore::SVGPathTraversalStateBuilder::pathSegmentIndex):
Code clean up.

  • svg/SVGPathUtilities.cpp:

(WebCore::getSVGPathSegAtLengthFromSVGPathByteStream):
(WebCore::getTotalLengthOfSVGPathByteStream):
(WebCore::getPointAtLengthOfSVGPathByteStream): Use new TraversalState::Action
enum values.

5:49 PM Changeset in webkit [182827] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

DFG register fillSpeculate*() functions should validate incoming spill format is compatible with requested fill format
https://bugs.webkit.org/show_bug.cgi?id=143727

Reviewed by Geoffrey Garen.

Used the result of AbstractInterpreter<>::filter() to check that the current spill format is compatible
with the requested fill format. If filter() reports a contradiction, then we force an OSR exit.
Removed individual checks made redundant by the new check.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):
(JSC::DFG::SpeculativeJIT::fillSpeculateInt52):
(JSC::DFG::SpeculativeJIT::fillSpeculateCell):
(JSC::DFG::SpeculativeJIT::fillSpeculateBoolean):

5:47 PM Changeset in webkit [182826] by Joseph Pecoraro
  • 5 edits in trunk/Source/JavaScriptCore

Replace JavaScriptCoreOutputConsoleMessagesToSystemConsole default with an SPI
https://bugs.webkit.org/show_bug.cgi?id=143691

Reviewed by Geoffrey Garen.

  • API/JSRemoteInspector.h:
  • API/JSRemoteInspector.cpp:

(JSRemoteInspectorSetLogToSystemConsole):
Add SPI to enable/disable logging to the system console.
This only affects JSContext console logs and warnings.

  • inspector/JSGlobalObjectConsoleClient.h:
  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::logToSystemConsole):
(Inspector::JSGlobalObjectConsoleClient::setLogToSystemConsole):
(Inspector::JSGlobalObjectConsoleClient::messageWithTypeAndLevel):
(Inspector::JSGlobalObjectConsoleClient::initializeLogToSystemConsole): Deleted.
Simplify access to the setting now that it doesn't need to
initialize its value from preferences.

5:27 PM Changeset in webkit [182825] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

Web Inspector: Auto-attach fails after r179562, initialization too late after dispatch
https://bugs.webkit.org/show_bug.cgi?id=143682

Reviewed by Timothy Hatcher.

  • inspector/remote/RemoteInspector.mm:

(Inspector::RemoteInspector::singleton):
If we are on the main thread, run the initialization immediately.
Otherwise dispatch to the main thread. This way if the first JSContext
was created on the main thread it can get auto-attached if applicable.

5:26 PM Changeset in webkit [182824] by Simon Fraser
  • 10 edits in trunk

Re-enable custom dilation for antialiased fonts
https://bugs.webkit.org/show_bug.cgi?id=143738

Reviewed by Tim Horton.

Enabling custom dilation for antialised fonts broke layout tests, so re-land it,
but disable in WebKitTestRunner and DumpRenderTree. The latter requires adding
a private WebKit pref. This pref defaults to YES, enabling the feature by default
in WK1 as we do for WK2.

Source/WebCore:

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::dilationSizeForTextColor):
(WebCore::FontCascade::drawGlyphs):

Source/WebKit/mac:

  • WebView/WebPreferenceKeysPrivate.h:
  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]):
(-[WebPreferences setAntialiasedFontDilationEnabled:]):
(-[WebPreferences antialiasedFontDilationEnabled]):

  • WebView/WebPreferencesPrivate.h:
  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]):

Tools:

  • DumpRenderTree/mac/DumpRenderTree.mm:

(resetWebPreferencesToConsistentValues):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::resetPreferencesToConsistentValues):

5:20 PM Changeset in webkit [182823] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Content Filtering] Use ASSERT_WITH_SECURITY_IMPLICATION for verifying types from NEFilterSource
https://bugs.webkit.org/show_bug.cgi?id=143742

Reviewed by David Kilzer.

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(replacementDataFromDecisionInfo): ASSERT_WITH_SECURITY_IMPLICATION that decisionInfo is really a NSDictionary.
(WebCore::NetworkExtensionContentFilter::handleDecision): ASSERT_WITH_SECURITY_IMPLICATION that replacementData is really a NSData.

5:02 PM Changeset in webkit [182822] by timothy_horton@apple.com
  • 4 edits
    2 adds in trunk/Source/WebKit2

Update gesture swipe shadow style
https://bugs.webkit.org/show_bug.cgi?id=143616
<rdar://problem/19295843>

Reviewed by Darin Adler.

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::beginSwipeGesture):
For the modern shadow style, use a layer stretched along the edge of the swiping content
with the newly added PNGs as the layer contents.

Add a dimming layer over the lower layer of content which fades in/out
during the swipe.

(WebKit::ViewGestureController::handleSwipeGesture):
Fade the dimming layer in and out during the entire swipe.
Fade the shadow layer out during the last few pixels of the swipe.

(WebKit::ViewGestureController::removeSwipeSnapshot):
Unparent the new layers.

  • WebKit2.xcodeproj/project.pbxproj:
  • Resources/SwipeShadow.png:
  • Resources/SwipeShadow@2x.png:

Add the new resources.

4:48 PM Changeset in webkit [182821] by Brent Fulgham
  • 5 edits in trunk

Correct layering violation in DumpRenderTree Build
https://bugs.webkit.org/show_bug.cgi?id=143732

Reviewed by Simon Fraser.

Source/WebCore:

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::monitorWheelEvents): Added. Provides a wrapper around
the internal WebCore objects needed to implement this function.
(WebCoreTestSupport::setTestCallbackAndStartNotificationTimer): Ditto.

  • testing/js/WebCoreTestSupport.h:

Tools:

Correct a layering violation in DumpRenderTree by calling functions on the
WebCoreTestSupport library, rather than attempting to work with WebCore
types directly.

  • DumpRenderTree/mac/EventSendingController.mm:

(-[EventSendingController monitorWheelEvents]): Call methods on WebCoreTestSupport, rather
than WebCore itself.,
(-[EventSendingController callAfterScrollingCompletes:]): Ditto.

4:47 PM Changeset in webkit [182820] by beidson@apple.com
  • 3 edits
    6 adds in trunk

Make sure media element loads hit content filter extensions.
<rdar://problem/20014012> and https://bugs.webkit.org/show_bug.cgi?id=143731

Reviewed by Jer Noble.

Source/WebCore:

Tests: http/tests/contentextensions/media-filtered.html

http/tests/contentextensions/text-track-blocked.html

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::parseAttribute): Skip loads that are filtered.

LayoutTests:

  • http/tests/contentextensions/media-filtered-expected.txt: Added.
  • http/tests/contentextensions/media-filtered.html: Added.
  • http/tests/contentextensions/media-filtered.html.json: Added.
  • http/tests/contentextensions/text-track-blocked-expected.txt: Added.
  • http/tests/contentextensions/text-track-blocked.html: Added.
  • http/tests/contentextensions/text-track-blocked.html.json: Added.
4:45 PM Changeset in webkit [182819] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix for Mavericks.

Mavericks includes this file but does not enable ENABLE_REMOTE_INSPECTOR
so the Inspector namespace is not available when compiling this file.

  • API/JSRemoteInspector.cpp:
4:36 PM Changeset in webkit [182818] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Skip failling test due to list box scroll behavior.
https://bugs.webkit.org/show_bug.cgi?id=143739

  • platform/win/TestExpectations:
4:34 PM Changeset in webkit [182817] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Unreviewed test correction after r182737.

New test expectation was missing a newline at the end of the file.

  • platform/win/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
4:26 PM Changeset in webkit [182816] by Joseph Pecoraro
  • 2 edits
    2 adds in trunk/Source/JavaScriptCore

Web Inspector: Expose private APIs to interact with RemoteInspector instead of going through WebKit
https://bugs.webkit.org/show_bug.cgi?id=143729

Reviewed by Timothy Hatcher.

  • API/JSRemoteInspector.h: Added.
  • API/JSRemoteInspector.cpp: Added.

(JSRemoteInspectorDisableAutoStart):
(JSRemoteInspectorStart):
(JSRemoteInspectorSetParentProcessInformation):
Add the new SPIs for basic remote inspection behavior.

Add the new files to Mac only, since remote inspection is only
enabled there anyways.

3:56 PM Changeset in webkit [182815] by bweinstein@apple.com
  • 7 edits in trunk/Source

Add SPI to clear HSTS hosts added since a date.
https://bugs.webkit.org/show_bug.cgi?id=143726
and
rdar://problem/16664597

Source/WebCore:

Declare _CFNetworkResetHSTSHostsSinceDate in CFNetworkSPI.h.

Reviewed by Anders Carlsson.

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

Reviewed by Anders Carlsson.

  • UIProcess/API/C/mac/WKContextPrivateMac.h:
  • UIProcess/API/C/mac/WKContextPrivateMac.mm:

(WKContextResetHSTSHostsAddedAfterDate): Call into the WebProcessPool.

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::resetHSTSHostsAddedAfterDate): Call CFNetwork SPI to clear HSTS hosts added
after the given date.

  • UIProcess/WebProcessPool.h:
2:55 PM Changeset in webkit [182814] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Set the font size to 11px explicitly to try to fix this test on Windows.

  • fast/forms/listbox-visible-size.html:
2:42 PM Changeset in webkit [182813] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Time numbers on media controls move as they update on OSX.
<rdar://problem/20141790>.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-current-time-display):
(audio::-webkit-media-controls-time-remaining-display):
Don't bother justifying content to end. We size the box to fit the time displays exactly anyways.

2:35 PM Changeset in webkit [182812] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Insert volume control in correct place after exiting wireless play.

https://bugs.webkit.org/show_bug.cgi?id=143721.
<rdar://problem/20526106>

Reviewed by Darin Adler.

  • Modules/mediacontrols/mediaControlsApple.js: (Controller.prototype.updateWirelessPlaybackStatus):
2:25 PM Changeset in webkit [182811] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Rename JSC_dfgFunctionWhitelistFile to JSC_dfgWhitelist.
https://bugs.webkit.org/show_bug.cgi?id=143722

Reviewed by Michael Saboff.

Renaming JSC_dfgFunctionWhitelistFile to JSC_dfgWhitelist so that it is
shorter, and easier to remember (without having to look it up) and to
type. JSC options now support descriptions, and one can always look up
the description if the option's purpose is not already obvious.

  • dfg/DFGFunctionWhitelist.cpp:

(JSC::DFG::FunctionWhitelist::ensureGlobalWhitelist):
(JSC::DFG::FunctionWhitelist::contains):

  • runtime/Options.h:
2:24 PM Changeset in webkit [182810] by beidson@apple.com
  • 2 edits in trunk/Source/WebCore

Media elements not in a page shouldn't load.
https://bugs.webkit.org/show_bug.cgi?id=143720

Reviewed by Jer Noble.

No new tests (Theoretical problem noticed in code review).

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource): Make sure the frame is in a page.

2:14 PM Changeset in webkit [182809] by Simon Fraser
  • 7 edits in trunk/Source/WebCore

[iOS] Clean up registration of layers with the ScrollingCoordinator
https://bugs.webkit.org/show_bug.cgi?id=143725

Reviewed by Tim Horton.

Simplify a couple of bits of code related to the registration of layers with
the ScrollingCoordinator in RenderLayerCompositor.

First, RenderLayerBacking was using ScrollingNodeTypes to choose which scrolling
roles a layer has, which let to ambiguous code where we hardcoded a ScrollingNodeType
with knowledge of what RenderLayerBacking did with it. Clean up by using LayerScrollCoordinationRole,
which is moved to RenderLayer.h so that RenderLayerCompositor.h and RenderLayerBacking.h
both see it.

Secondly, avoid having both detachFromScrollingCoordinator() and detachFromScrollingCoordinatorForRole()
by passing in the bitmask of roles.

  • page/FrameView.cpp:

(WebCore::FrameView::scrollLayerID):

  • rendering/RenderLayer.h:
  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::~RenderLayerBacking):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinator):
(WebCore::RenderLayerBacking::detachFromScrollingCoordinatorForRole): Deleted.

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateScrollCoordinatedStatus):
(WebCore::RenderLayerCompositor::removeFromScrollCoordinatedLayers):
(WebCore::scrollCoordinationRoleForNodeType):
(WebCore::RenderLayerCompositor::attachScrollingNode):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
(WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerForRole): Deleted.

  • rendering/RenderLayerCompositor.h:
2:08 PM Changeset in webkit [182808] by benjamin@webkit.org
  • 12 edits
    3 adds in trunk

Add a conservative DFA minimizer for the content extension matcher
https://bugs.webkit.org/show_bug.cgi?id=143501

Reviewed by Alex Christensen.

Source/WebCore:

This patch adds a simple minimizer for DFA graphs. It is not a perfect minimizer:
some indistinguishable are not merged, but no two distinguishable are merged.

The general idea of the algorithm is to put all the state into a single set
and partition iteratively until it is impossible to split any subset by using
a transition to distinguish two states.

Let's ignore fallback transition for now, and I'll explain later how they fit in
the big picture.

The first thing we do is create a partition of the transition by grouping every
transition by the same character in the same subset. This partition of transitions
is the base by which we will partition the states.

Each subset in the transition partition is a "distinguisher" by which we can
separate the state partition.

We also create a second partition, the state partition. This is where we keep
all the subsets of states that have been split so far.

Let say we have the following graph.

1 --a--> 2
1 --b--> 3
2 --c--> 4 (final)
3 --c--> 4 (final)

The partition of transition would start with:
Set 0:

1 --a--> 2

Set 1:

1 --b--> 3

Set 2:

2 --c--> 4
3 --c--> 4

The state partition would have a single set with { 1, 2, 3, 4 }.

Next, we split the state partition by distinguishable final states. In this case,
we would split it into { 1, 2, 3 }, { 4 }.

We then refine the transition partition by splitting it by the states that have
been distinguished. Here, the only transitions to 4 are both is the same set (set 2),
so the transition partition remains the same.

We can now execute the main loop of the algorithm:
1) Split the states by the transitions.
2) Split the transitions that are now reaching two different sets of the state partition.
3) Add any newly discovered "distinguisher" (the ones we split) to the list of "distinguisher"

to process.

In this case, we just iterate over the partition set in order, and add newly split transitions
to the end of the list.

In the example, we would first visit set 0. We have that state 1 is distinguishable
by "a", and the state partition would become { 1 }, { 2, 3 }, { 4 }.

We then visit transition set 1, it distinguishes state 1 which is already alone -> nothing to do.

Finally, we process the transition set 2, it distinguishes 2 and 3, they are already in the same
set -> nothing to do.

There is no more transition to process, we have 3 unique subsets and we should merge 2 and 3.

---

Okay, now how to we fit fallback transition in this model. In this patch, I take the conservative
approach: we split everything assuming fallback transition do not exist, then we refine
by the fallback transitions.

Let's take the following example:

1 --a--> 3
2 --a--> 3
1 -[f]-> 4
2 -[f]-> 5

and at this stage in the algorithm, we have the sets { 1, 2 }, { 3 }, { 4 }, { 5 }.
The states 1 and 2 are together because they cannot be distinguished by 'a', but
the fallback transition distinguishes them.

Since we have done every other split, we have one useful property: we know that every
state in every set transition with the exact set of characters within that set.
If that was not true, there would be one "distinguisher" 'x' that could spit the set
into two subsets: the one with the transition 'x' and the ones without.

Since all the transitions are the same, there is no overlap between the defined transition
and the fallback transition. Consequently, we can use the fallback transition as a whole
transition and use it to distinguish the states.

The fallback transitions are handled like any other transition, we have a partition of such
transitions and split by each of them. BUT, we can only use them after every unique transition
has been covered.

This trick is also what makes the minimization imperfect: it should be possible to merge
states with overlap in their fallback transitions but we would split them.

---

Antti Valmari, Petri Lehtinen, Marie-Pierre Béal and Maxime Crochemore deserve credit for their indirect
work on this patch. Thanks for your wonderful papers about DFA minimization.

  • WebCore.xcodeproj/project.pbxproj:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/DFA.cpp:

(WebCore::ContentExtensions::DFA::minimize):
(WebCore::ContentExtensions::DFA::debugPrintDot):

  • contentextensions/DFA.h:
  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::DFABytecodeCompiler::compileNode):

  • contentextensions/DFAMinimizer.cpp: Added.

(WebCore::ContentExtensions::DFAMinimizer::simplifyTransitions):
(WebCore::ContentExtensions::DFAMinimizer::Partition::initialize):
(WebCore::ContentExtensions::DFAMinimizer::Partition::markElementInCurrentGeneration):
(WebCore::ContentExtensions::DFAMinimizer::Partition::refineGeneration):
(WebCore::ContentExtensions::DFAMinimizer::Partition::iterateSet):
(WebCore::ContentExtensions::DFAMinimizer::Partition::setIndex):
(WebCore::ContentExtensions::DFAMinimizer::Partition::firstElementInSet):
(WebCore::ContentExtensions::DFAMinimizer::Partition::size):
(WebCore::ContentExtensions::DFAMinimizer::Partition::SetDescriptor::indexAfterMarkedElements):
(WebCore::ContentExtensions::DFAMinimizer::Partition::SetDescriptor::end):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::FullGraphPartition):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::markNode):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::refinePartitions):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::splitByUniqueTransitions):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::splitByFallbackTransitions):
(WebCore::ContentExtensions::DFAMinimizer::FullGraphPartition::nodeReplacement):
(WebCore::ContentExtensions::DFAMinimizer::ActionKey::ActionKey):
(WebCore::ContentExtensions::DFAMinimizer::ActionKey::isEmptyValue):
(WebCore::ContentExtensions::DFAMinimizer::ActionKey::isDeletedValue):
(WebCore::ContentExtensions::DFAMinimizer::ActionKeyHash::hash):
(WebCore::ContentExtensions::DFAMinimizer::ActionKeyHash::equal):
(WebCore::ContentExtensions::DFAMinimizer::minimize):

  • contentextensions/DFAMinimizer.h: Copied from Source/WebCore/contentextensions/DFA.h.
  • contentextensions/DFANode.h:
  • contentextensions/NFAToDFA.cpp:

(WebCore::ContentExtensions::NFAToDFA::convert):
(WebCore::ContentExtensions::simplifyTransitions): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
  • TestWebKitAPI/Tests/WebCore/DFAMinimizer.cpp:
1:54 PM Changeset in webkit [182807] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

ASSERT(frame().view() == this) assertion hit in FrameView::windowClipRect() on Windows bots
https://bugs.webkit.org/show_bug.cgi?id=143723

Reviewed by Brent Fulgham.

ASSERT(frame().view() == this) in FrameView::windowClipRect() can be hit
if the post layout timer timer fires after the page has entered page
cache. Upon entering page cache, we call FrameView::unscheduleRelayout()
to stop the layout timer if it is active, however, we don't stop the
post-layout timer. Therefore, there was nothing preventing the
post-layout timer from firing after entering page cache.

In this patch, we unschedule the post-layout timer in
FrameView::unscheduleRelayout() to protect ourselves against this.

I think we were only seeing the assertion hit on Windows because this
timer probably gets scheduled more frequently on Windows. On Mac, I
rarely see it getting scheduled.

No new tests, should fix crashing tests on the bots.

  • page/FrameView.cpp:

(WebCore::FrameView::unscheduleRelayout):

12:35 PM Changeset in webkit [182806] by ap@apple.com
  • 2 edits in trunk/LayoutTests

inspector/console/console-api.html is very slow, frequently timing out
https://bugs.webkit.org/show_bug.cgi?id=143719

12:22 PM Changeset in webkit [182805] by Chris Dumez
  • 3 edits in trunk/Source/WebCore

FrameView::m_frame should be a Ref<Frame>
https://bugs.webkit.org/show_bug.cgi?id=143716

Reviewed by Andreas Kling.

FrameView::m_frame should be a Ref<Frame> instead of a RefPtr<Frame> as
it can never be null.

  • page/FrameView.cpp:

(WebCore::FrameView::FrameView):
(WebCore::FrameView::flushCompositingStateForThisFrame):
(WebCore::FrameView::hasCompositedContentIncludingDescendants):
(WebCore::FrameView::flushCompositingStateIncludingSubframes):
(WebCore::FrameView::updateCanBlitOnScrollRecursively):
(WebCore::FrameView::setIsOverlapped):
(WebCore::FrameView::shouldUpdateCompositingLayersAfterScrolling):
(WebCore::FrameView::renderedCharactersExceed):
(WebCore::FrameView::updateLayerFlushThrottling):
(WebCore::FrameView::serviceScriptedAnimations):
(WebCore::FrameView::updateBackgroundRecursively):
(WebCore::FrameView::adjustScrollStepForFixedContent):
(WebCore::FrameView::paintContentsForSnapshot):
(WebCore::FrameView::notifyWidgetsInAllFrames):
(WebCore::FrameView::setExposedRect):
(WebCore::FrameView::setViewportSizeForCSSViewportUnits):

  • page/FrameView.h:
12:15 PM Changeset in webkit [182804] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

More work on making the SharedMemory interface more sane
https://bugs.webkit.org/show_bug.cgi?id=143718

Reviewed by Andreas Kling.

Get rid of m_shouldVMDeallocateData. The idea is that shared memory created by calling
SharedMemory::allocate has a non-null m_data pointer, and a null m_port. Shared memory created
by calling SharedMemory::create with a pointer and a length has a non-null port but a null m_data
since the data can be unmapped by the caller and we don't want to hold on to dangling pointers.

  • Platform/SharedMemory.h:

(WebKit::SharedMemory::data):

  • Platform/mac/SharedMemoryMac.cpp:

(WebKit::SharedMemory::allocate):
(WebKit::SharedMemory::create):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::~SharedMemory):
(WebKit::SharedMemory::createHandle):

11:40 AM Changeset in webkit [182803] by Antti Koivisto
  • 10 edits
    2 adds in trunk/Source/WebKit2

Network Cache: Deduplicate body data
https://bugs.webkit.org/show_bug.cgi?id=143652

Reviewed by Darin Adler.

It is common to have cache entries with identical body data. This happens when the same resource is loaded from
a different URL (https vs http, slash vs no-slash at end, etc.). It also happens when the same URL is
referenced from different cache partitions.

We can improve disk space efficiency and use less memory by sharing identical body data between cache entries.

This patch splits the body data out from the record file. The new record file contains meta data and response
headers only. Body data is stored using the new BlobStorage interface. Files are deduplicated by computing
SHA1 hash over the data and looking for an existing blob with the same hash. If found the existing entry
is reused by creating a hard link to it.

The new disk structure looks like this:

WebKitCache/

Version 3/

Blobs/

0A3C9A970ADA27FAE9BD7BC630BAD0B929C293C0
0A6B8060BA77DF92C82A2FD7AF58F79524D8F34C
...

Records/

apple.com/

0B8645B04E7EC78C178B7460052601C2
0B8645B04E7EC78C178B7460052601C2-body
0CB1A3638D1C5A09C5E3283A74FA040B
0CB1A3638D1C5A09C5E3283A74FA040B-body
...

Each record file has an associated -body which is a hard link to a file in the Blobs directory.

The patch increases effective capacity by 10-20% with a typical cache. It also saves memory especially when identical
resources are used in multiple tabs.

Currently all >0 sized resources are stored as shared blobs. In future small resources should be integrated into record
files and blobs used for larger files only.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::update):

Adopt the new storage interface.

(WebKit::NetworkCache::Cache::dumpContentsToFile):

  • NetworkProcess/cache/NetworkCacheBlobStorage.cpp: Added.

(WebKit::NetworkCache::BlobStorage::BlobStorage):
(WebKit::NetworkCache::BlobStorage::synchronize):

Compute size and delete unused files from the Blobs directory (link count == 1).

(WebKit::NetworkCache::BlobStorage::blobPath):
(WebKit::NetworkCache::BlobStorage::add):
(WebKit::NetworkCache::BlobStorage::get):

Interface for storing and retrieving data blobs. Blobs are deduplicated on add.

(WebKit::NetworkCache::BlobStorage::remove):

Removes the link but doesn't remove the blob even if there are no other clients. That happens on next synchronize().

(WebKit::NetworkCache::BlobStorage::shareCount):

Checks the link count to get the number of clients.

  • NetworkProcess/cache/NetworkCacheBlobStorage.h: Added.

(WebKit::NetworkCache::BlobStorage::approximateSize):

  • NetworkProcess/cache/NetworkCacheCoders.cpp:

(WebKit::NetworkCache::Coder<SHA1::Digest>::encode):
(WebKit::NetworkCache::Coder<SHA1::Digest>::decode):

  • NetworkProcess/cache/NetworkCacheCoders.h:
  • NetworkProcess/cache/NetworkCacheData.h:

(WebKit::NetworkCache::Data::isEmpty):

  • NetworkProcess/cache/NetworkCacheDataCocoa.mm:

(WebKit::NetworkCache::Data::empty):
(WebKit::NetworkCache::Data::fromMap):
(WebKit::NetworkCache::mapFile):
(WebKit::NetworkCache::computeSHA1):
(WebKit::NetworkCache::bytesEqual):

Add some helpers.

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::asJSON):

  • NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:

(WebKit::NetworkCache::IOChannel::IOChannel):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::makeRecordDirectoryPath):
(WebKit::NetworkCache::makeBlobDirectoryPath):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::approximateSize):
(WebKit::NetworkCache::Storage::synchronize):
(WebKit::NetworkCache::partitionPathForKey):
(WebKit::NetworkCache::recordPathForKey):
(WebKit::NetworkCache::bodyPath):
(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::createRecord):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::encodeRecordHeader):
(WebKit::NetworkCache::Storage::remove):
(WebKit::NetworkCache::Storage::updateFileModificationTime):
(WebKit::NetworkCache::Storage::dispatchReadOperation):

Read both the blob and the record entry.

(WebKit::NetworkCache::Storage::finishReadOperation):

Factor to a function.

(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
(WebKit::NetworkCache::Storage::dispatchWriteOperation):

We don't need separate full write and header write paths anymore. Everything is treated
as a full write and deduplication stops us writing the body again.

This simplifies the code and data structures.

(WebKit::NetworkCache::Storage::finishWriteOperation):

Factor to a function.

(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::deletionProbability):

Take the sharing count into account when computing deletion probability.
It is less useful to delete a record that shares its body with others as data won't get deleted.

(WebKit::NetworkCache::Storage::shrinkIfNeeded):
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::deleteOldVersions):
(WebKit::NetworkCache::directoryPathForKey): Deleted.
(WebKit::NetworkCache::filePathForKey): Deleted.
(WebKit::NetworkCache::openFileForKey): Deleted.
(WebKit::NetworkCache::decodeRecord): Deleted.
(WebKit::NetworkCache::Storage::update): Deleted.

No need for separate update interface anymore. Regular store() avoids unnecessary body write.

(WebKit::NetworkCache::Storage::dispatchFullWriteOperation): Deleted.
(WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • WebKit2.xcodeproj/project.pbxproj:
10:57 AM Changeset in webkit [182802] by dbates@webkit.org
  • 2 edits in trunk/Tools

Skip failing test Tests/WebKit2Cocoa/FixedLayoutSize.mm on iOS
https://bugs.webkit.org/show_bug.cgi?id=143693
<rdar://problem/20530316>

Reviewed by Tim Horton.

Skip the test Tests/WebKit2Cocoa/FixedLayoutSize.mm as we do not plan
to use the fixed layout code on iOS at this time.

  • TestWebKitAPI/Tests/WebKit2Cocoa/FixedLayoutSize.mm: Add !PLATFORM(IOS)-guard.
10:34 AM Changeset in webkit [182801] by ap@apple.com
  • 2 edits in trunk/LayoutTests

fast/sub-pixel/input-caret-on-subpixel-bound.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143697

Reviewed by Anders Carlsson.

  • fast/sub-pixel/input-caret-on-subpixel-bound.html: Don't wait for a timer to fire

after removing the last character.

10:30 AM Changeset in webkit [182800] by ap@apple.com
  • 5 edits in trunk/LayoutTests

Two flaky tests in http/tests/security/mixedContent
https://bugs.webkit.org/show_bug.cgi?id=143695

Reviewed by Csaba Osztrogonác.

Speculative fix. Do not start opening a secondary window until fully done with the
main document.

  • http/tests/security/mixedContent/data-url-iframe-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/data-url-iframe-in-main-frame.html:
  • http/tests/security/mixedContent/insecure-css-in-main-frame-expected.txt:
  • http/tests/security/mixedContent/insecure-css-in-main-frame.html:
10:25 AM Changeset in webkit [182799] by Simon Fraser
  • 6 edits
    3 adds in trunk

[iOS WK2] Interactive elements of developer.apple.com are broken
https://bugs.webkit.org/show_bug.cgi?id=143692
Source/WebCore:

rdar://problem/19320087

Reviewed by Sam Weinig.

When a composited RenderLayer had nodes in the scrolling tree by virtue of
both position and overflow:scroll, and one of those reasons disappeared,
we'd fail to remove the corresponding node from the scrolling tree. This
could leave an overflow:scroll element behaving as if it were position:fixed.

Fix by having RenderLayerCompositor::updateScrollCoordinationForThisFrame()
detach the layer on a per-role basis.

Test: platform/ios-simulator-wk2/scrolling/remove-scrolling-role.html

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::detachFromScrollingCoordinatorForRole):

  • rendering/RenderLayerBacking.h:
  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayerForRole):
(WebCore::RenderLayerCompositor::detachScrollCoordinatedLayer): Just moved.
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer): Call detachScrollCoordinatedLayerForRole()
if the layer doesn't have the relevant scrolling reasons.

  • rendering/RenderLayerCompositor.h:

LayoutTests:

Reviewed by Sam Weinig.

  • platform/ios-simulator-wk2/scrolling/remove-scrolling-role-expected.txt: Added.
  • platform/ios-simulator-wk2/scrolling/remove-scrolling-role.html: Added.
10:07 AM Changeset in webkit [182798] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

REGRESSION(r182603): [GTK] More than 500 crashes on the layout tests with the debug build.
https://bugs.webkit.org/show_bug.cgi?id=143715

Reviewed by Darin Adler.

Enable assertions checking that calling editorState() does not cause a
synchronous layout only on Mac and iOS. This assertion does not
necessarily hold true on other ports as each one as its own
platformEditorState() implementation. In particular, this assertion
was being hit on GTK.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::didChangeSelection):

9:54 AM WebKitGTK/SpeedUpBuild edited by calvaris@igalia.com
(diff)
9:13 AM Changeset in webkit [182797] by commit-queue@webkit.org
  • 11 edits in trunk

Unreviewed, rolling out r182794.
https://bugs.webkit.org/show_bug.cgi?id=143714

readable-stream-templated.html fails on Debug bots (Requested
by youenn on #webkit).

Reverted changeset:

"[Streams API] ReadableStream constructor start function
should be able to close the stream"
https://bugs.webkit.org/show_bug.cgi?id=143363
http://trac.webkit.org/changeset/182794

8:15 AM Changeset in webkit [182796] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Align array's indices and set's bullet points under the property icon
https://bugs.webkit.org/show_bug.cgi?id=143698

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.css:

(.object-tree-array-index.object-tree-map-entry > .titles > .title > .index-name):

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.object-tree-array-index .index-name):
Right align array's and set's indices.

(.object-tree-map-entry):
Overwrite left property from .object-tree-array-index.

(.object-tree-property + ol .object-tree-map-entry):
Overwrite left property from .object-tree-property + ol .object-tree-array-index.

6:59 AM Changeset in webkit [182795] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[WinCairo] Unreviewed build fix after r182707.

  • platform/network/curl/MultipartHandle.cpp:

(WebCore::MultipartHandle::didReceiveResponse):

6:52 AM Changeset in webkit [182794] by youenn.fablet@crf.canon.fr
  • 11 edits in trunk

[Streams API] ReadableStream constructor start function should be able to close the stream
https://bugs.webkit.org/show_bug.cgi?id=143363

Reviewed by Benjamin Poulain.

Source/WebCore:

Implements https://streams.spec.whatwg.org/#close-readable-stream.
When the "close" JS function is called, the stream is getting closed.
The stream state is changed to close and if it has a reader, the reader gets closed as well:
The reader resolves the closed promise and release the stream.

Enabled the possibility to resolve a promise with any JS value.
This is used to resolve closed promise with jsUndefined and will be used for read promises.

Covered by reference tests that are now passing.

  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::changeStateToClosed): Called by the JS function 'close'.

  • Modules/streams/ReadableStream.h:
  • Modules/streams/ReadableStreamReader.cpp:

(WebCore::ReadableStreamReader::ReadableStreamReader):
(WebCore::ReadableStreamReader::initialize): Added to handle state change at constructor time (in particular closed/errored state).
(WebCore::ReadableStreamReader::releaseStream):
(WebCore::ReadableStreamReader::closed): Storing the closed promise callbacks.
(WebCore::ReadableStreamReader::changeStateToClosed): Resolution of closed promise.

  • Modules/streams/ReadableStreamReader.h:
  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredWrapper::resolve<JSC::JSValue>):

  • bindings/js/JSReadableStreamReaderCustom.cpp:

(WebCore::JSReadableStreamReader::closed):

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::readableStreamSlotName):
(WebCore::getReadableJSStream): Helper function to retrieve the stream from the exec state.
(WebCore::closeReadableStreamFunction):
(WebCore::createReadableStreamCloseFunction):
(WebCore::createReadableStreamController):
(WebCore::ReadableStreamJSSource::start):
(WebCore::ReadableJSStreamReader::ReadableJSStreamReader): Deleted.

LayoutTests:

Rebased tests as some are now passing.

  • streams/reference-implementation/readable-stream-reader-expected.txt:
  • streams/reference-implementation/readable-stream-templated-expected.txt:
6:10 AM Changeset in webkit [182793] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

[GTK] Gardening 14th April
https://bugs.webkit.org/show_bug.cgi?id=143701

Unreviewed.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-04-14

  • platform/gtk/TestExpectations:
  • platform/gtk/http/tests/w3c/webperf/approved/navigation-timing/html/test_timing_xserver_redirect-expected.txt:
6:08 AM Changeset in webkit [182792] by commit-queue@webkit.org
  • 30 edits in trunk/LayoutTests

[GTK] Gardening: Rebaseline tests after r182620
https://bugs.webkit.org/show_bug.cgi?id=143700

Unreviewed.

This revision updates some tests after changing the way <br> is
rendered. We need to change the GTK+ expectations for these tests.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-04-14

  • platform/gtk/fast/css/text-overflow-ellipsis-bidi-expected.txt:
  • platform/gtk/fast/dom/focus-contenteditable-expected.txt:
  • platform/gtk/fast/forms/listbox-hit-test-zoomed-expected.png:
  • platform/gtk/fast/forms/listbox-hit-test-zoomed-expected.txt:
  • platform/gtk/fast/forms/range/slider-padding-expected.txt:
  • platform/gtk/fast/forms/textarea-scroll-height-expected.txt:
  • platform/gtk/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/gtk/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/gtk/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/gtk/http/tests/navigation/postredirect-basic-expected.txt:
  • platform/gtk/http/tests/navigation/postredirect-goback1-expected.txt:
  • platform/gtk/svg/wicd/test-rightsizing-b-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1224-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug131020-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug131020_iframe-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug1430-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug19599-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/gtk/tables/mozilla/bugs/bug92143-expected.txt:
  • platform/gtk/tables/mozilla/marvin/tables_cellpadding-expected.txt:
  • platform/gtk/tables/mozilla/marvin/tables_cellspacing-expected.txt:
  • platform/gtk/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/gtk/tables/mozilla_expected_failures/other/test4-expected.txt:
5:14 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:27 AM Changeset in webkit [182791] by dominik.rottsches@intel.com
  • 2 edits in trunk/Tools

Remove myself from watchlist, remove empty Cairo and HarfBuzz watchlists
https://bugs.webkit.org/show_bug.cgi?id=143705

Unreviewed change to watchlist file.

  • Scripts/webkitpy/common/config/watchlist:
4:01 AM Changeset in webkit [182790] by hyuki.kim@samsung.com
  • 2 edits in trunk/Tools

[EFL] favicon wasn't updated for google.com sometimes.
https://bugs.webkit.org/show_bug.cgi?id=141940

Reviewed by Gyuyoung Kim.

As elm_entry_utf8_to_markup can include additional characters, parameter for the
on_icon_changed_cb was just set by using url string retrieved by ewk_view_url_get().

  • MiniBrowser/efl/main.c:

(on_url_changed):

3:21 AM Changeset in webkit [182789] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.8.1

WebKitGTK+ 2.8.1

3:20 AM Changeset in webkit [182788] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.8.1 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.8.1.
2:01 AM Changeset in webkit [182787] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182773 - Regression: Scrolling on popsci.com spends too much time in FrameView::viewportsContentsChanged()
https://bugs.webkit.org/show_bug.cgi?id=143675

Reviewed by Simon Fraser.

Optimize resumeVisibleImageAnimationsIncludingSubframes() so that the FrameViews'
windowClipRect gets computed less often:

  • Cache the FrameView's windowClipRect before resuming image animations in subframes as calling windowClipRect() on those subframes' view is going to call windowClipRect() on their ancestors. This avoids a lot of unnecessary windowClipRect recomputations in deep frame trees.
  • Stop traversing the Frame tree if the current frame does not have a content renderer, as this means the subframes won't have one either.
  • Stop traversing the Frame tree if the current frame's view has an empty windowClipRect() as this means the windowClipRect will be empty for those subframes as well.

On popsci.com, this cuts down the number of uncached windowClipRect() calls by
approximately half. I see viewportsContentsChanged() at ~0.4% when scrolling
on popsci.com after this change.

  • page/FrameView.cpp:

(WebCore::FrameView::resumeVisibleImageAnimationsIncludingSubframes):
(WebCore::FrameView::windowClipRect):

  • page/FrameView.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::resumePausedImageAnimationsIfNeeded):

  • rendering/RenderView.h:
1:40 AM Changeset in webkit [182786] by Carlos Garcia Campos
  • 3 edits
    4 adds in releases/WebKitGTK/webkit-2.8

Merge r182750 - Canvas drawImage() has a security hole when the image isn't yet fully loaded.
https://bugs.webkit.org/show_bug.cgi?id=58681.

Reviewed by Darin Adler.

Source/WebCore:

There is a race condition which may happen if an image from a different
origin is drawn on a canvas before it finishes loading. The check to taint
the canvas comes before drawing it. This check returns false if the image
is not completely loaded because we check the URL of the resource response.
If after this check and before the drawing, the image finishes loading, the
canvas will not be tainted but the image will be drawn.

The fix is to move the check to taint the canvas after drawing the image.
The only problem with this solution is basically the opposite of this bug:
we will become stricter than before with images which are from a different
origin and before they finish loading. The image has not finished loading,
so we do not draw it. Before we check for tainting, the image finishes
loading. So we decide to taint the canvas even the image is not drawn.

But this should not be a security issue anymore. I personally do not know
if it is even a correctness issue or not.

Test: http/tests/canvas/canvas-tainted-after-draw-image.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawImage):

LayoutTests:

This test confirms when we load an image from a different origin and try
drawing it on a canvas, the canvas is tainted if the image is completely
loaded and drawn. Otherwise the image is not drawn.

  • http/tests/canvas/canvas-tainted-after-draw-image-expected.txt: Added.
  • http/tests/canvas/canvas-tainted-after-draw-image.html: Added.
  • http/tests/canvas/resources: Added.
  • http/tests/canvas/resources/100x100-lime-rect.svg: Added.
1:37 AM Changeset in webkit [182785] by Carlos Garcia Campos
  • 4 edits
    1 add in releases/WebKitGTK/webkit-2.8

Merge r182743 - Fixed position element is truncated if moved onscreen by a transform
https://bugs.webkit.org/show_bug.cgi?id=143655
Source/WebCore:

rdar://problem/15020044

Reviewed by Darin Adler.

Our "don't do layout if transform changes" code was too aggressive.
If an element changes between having a transform and not having one, we
really need to do a layout since so much else depends on transforms. In
this particular case, we clip position:fixed elements to the viewport if
they are not transformed, and were failing to re-evaluate this when a
transform was added. Doing a layout fixes this.

Test: compositing/geometry/fixed-transformed.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout):

  • rendering/style/StyleTransformData.h:

(WebCore::StyleTransformData::hasTransform):

LayoutTests:

Reviewed by Darin Adler.

Test that moves a position:fixed element on-screen using a transform.

  • compositing/geometry/fixed-transformed.html: Added.
1:27 AM Changeset in webkit [182784] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182734 - Remove needless recreation of URL in NavigationScheduler::scheduleLocationChange
https://bugs.webkit.org/show_bug.cgi?id=143662

Reviewed by Sam Weinig.

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::scheduleLocationChange): Removed unnecessary code
to convert a URL to a String and then back into a URL.

1:20 AM Changeset in webkit [182783] by calvaris@igalia.com
  • 5 edits
    4 adds in trunk/LayoutTests

Sync Streams API tests with spec
https://bugs.webkit.org/show_bug.cgi?id=143669

Reviewed by Darin Adler.

Some tests were moved from the spec tests to our custom ones
because they were not approved (yet, or they won't be).

Some nuances from the spec tests were also fixed.

  • streams/readable-stream-expected.txt: Added.
  • streams/readable-stream-reader-expected.txt: Added.
  • streams/readable-stream-reader.html: Added.
  • streams/readable-stream.html: Added.
  • streams/reference-implementation/readable-stream-expected.txt:
  • streams/reference-implementation/readable-stream-reader-expected.txt:
  • streams/reference-implementation/readable-stream-reader.html:
  • streams/reference-implementation/readable-stream.html: Nuances

fixed and tests moved to custom.

1:06 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)

Apr 13, 2015:

10:48 PM Changeset in webkit [182782] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Use modern for-loops in Document
https://bugs.webkit.org/show_bug.cgi?id=143600

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-13
Reviewed by Darin Adler.

No new tests, no behavior changes.

  • dom/Document.cpp:

(WebCore::Document::visibilityStateChanged):
(WebCore::Document::processBaseElement):
(WebCore::Document::moveNodeIteratorsToNewDocument):
(WebCore::Document::updateRangesAfterChildrenChanged):
(WebCore::Document::nodeChildrenWillBeRemoved):
(WebCore::Document::nodeWillBeRemoved):
(WebCore::Document::textInserted):
(WebCore::Document::textRemoved):
(WebCore::Document::textNodesMerged):
(WebCore::Document::textNodeSplit):
(WebCore::Document::documentWillSuspendForPageCache):
(WebCore::Document::documentDidResumeFromPageCache):
(WebCore::Document::mediaVolumeDidChange):
(WebCore::Document::privateBrowsingStateDidChange):
(WebCore::Document::captionPreferencesChanged):
(WebCore::Document::validateAutoSizingNodes):
(WebCore::Document::resetAutoSizingNodes):
(WebCore::Document::webkitExitFullscreen):
(WebCore::Document::absoluteRegionForEventTargets):

10:10 PM Changeset in webkit [182781] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Build fixes after r182772.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _updateAutomaticallyComputedFixedLayoutSize]): Make a CGSize, not an NSSize.
(-[WKView _setAutomaticallyComputesFixedLayoutSizeFromViewScale:]): Moved implementation
to the correct place.
(-[WKView _automaticallyComputesFixedLayoutSizeFromViewScale]): Ditto.
(-[WKView _layoutMode]): Use a memeber from _data directly, not via a method.

9:59 PM Changeset in webkit [182780] by Manuel Rego Casasnovas
  • 8 edits
    4 adds in trunk

[CSS Grid Layout] Columns set in percentages collapse to auto width
https://bugs.webkit.org/show_bug.cgi?id=141435

Reviewed by David Hyatt.

Source/WebCore:

Based on a patch by Sergio Villar Senin <svillar@igalia.com>.

This patch adds 2 new new methods in RenderBox to determine if the grid
has a definite size or not.

RenderGrid::gridTrackSize() was not checking properly if the grid has or
not an indefinite size.
The condition was including auto which is not indefinite per se. For
example, auto is definite if the containing block is definite.
As the new method is more expensive, we just call it when it's really
needed to avoid performance regressions.

Finally we were setting the override logical width/height to -1 (no
possible resolution) for all the items regardless if they've a relative
width/height or a fixed one.
Added the condition, including not only items with percentage logical
width/height but also relative, to avoid overriding the value for items
with fixed width/height as it's not needed.

Tests: fast/css-grid-layout/grid-item-with-percent-height-in-auto-height-grid-resolution.html

fast/css-grid-layout/percent-intrinsic-track-breadth.html
fast/css-grid-layout/percent-track-breadths-regarding-container-size.html

  • rendering/RenderBox.cpp:

(WebCore::logicalWidthIsResolvable):
(WebCore::RenderBox::hasDefiniteLogicalWidth):
(WebCore::RenderBox::percentageLogicalHeightIsResolvableFromBlock):
(WebCore::RenderBox::hasRelativeLogicalWidth):

  • rendering/RenderBox.h:
  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::hasDefiniteLogicalSize):
(WebCore::RenderGrid::gridTrackSize):
(WebCore::RenderGrid::logicalContentHeightForChild):
(WebCore::RenderGrid::minContentForChild):
(WebCore::RenderGrid::maxContentForChild):

  • rendering/RenderGrid.h:

LayoutTests:

Added new tests to check that percentage track breadths are properly
calculated under different sizing conditions.
Modified one test to include relative sizes too.

  • fast/css-grid-layout/grid-item-with-percent-height-in-auto-height-grid-resolution-expected.txt:
  • fast/css-grid-layout/grid-item-with-percent-height-in-auto-height-grid-resolution.html:
  • fast/css-grid-layout/percent-intrinsic-track-breadth-expected.txt: Added.
  • fast/css-grid-layout/percent-intrinsic-track-breadth.html: Added.
  • fast/css-grid-layout/percent-track-breadths-regarding-container-size-expected.txt: Added.
  • fast/css-grid-layout/percent-track-breadths-regarding-container-size.html: Added.
8:24 PM Changeset in webkit [182779] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

More build fix.

  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::setDragImage):

8:02 PM Changeset in webkit [182778] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Expanding window.navigator.mimeTypes in ObjectTree shows no native properties
https://bugs.webkit.org/show_bug.cgi?id=143690

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-13
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreePropertyTreeElement.js:

(WebInspector.ObjectTreePropertyTreeElement):
Fix a typo that resulted in hiding properties of native objects
in the Properties section of an Object Tree.

8:00 PM Changeset in webkit [182777] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unnecessary 3 second delay when archiving page
https://bugs.webkit.org/show_bug.cgi?id=143688

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-13
Reviewed by Timothy Hatcher.

  • UserInterface/Base/Main.js:

(WebInspector.archiveMainFrame):
The delay is unnecessary and was probably just debugging code.

7:44 PM Changeset in webkit [182776] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

[EFL][GTK] Fix build break after r182753
https://bugs.webkit.org/show_bug.cgi?id=143689

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-13
Reviewed by Anders Carlsson.

  • Platform/IPC/unix/ConnectionUnix.cpp:

(IPC::Connection::processMessage):
(IPC::Connection::sendOutgoingMessage):

  • Platform/unix/SharedMemoryUnix.cpp:

(WebKit::SharedMemory::allocate):
(WebKit::accessModeMMap):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::create): Deleted.

6:36 PM Changeset in webkit [182775] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Build fix.

  • UIProcess/mac/PageClientImpl.mm: (WebKit::PageClientImpl::setDragImage):
6:33 PM Changeset in webkit [182774] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Keep track of each shared memory object's protection when deciding whether to return our existing port
https://bugs.webkit.org/show_bug.cgi?id=143687

Reviewed by Tim Horton.

  • Platform/SharedMemory.h:
  • Platform/mac/SharedMemoryMac.cpp:

(WebKit::machProtection):
(WebKit::SharedMemory::create):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::createHandle):

5:45 PM Changeset in webkit [182773] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Regression: Scrolling on popsci.com spends too much time in FrameView::viewportsContentsChanged()
https://bugs.webkit.org/show_bug.cgi?id=143675

Reviewed by Simon Fraser.

Optimize resumeVisibleImageAnimationsIncludingSubframes() so that the FrameViews'
windowClipRect gets computed less often:

  • Cache the FrameView's windowClipRect before resuming image animations in subframes as calling windowClipRect() on those subframes' view is going to call windowClipRect() on their ancestors. This avoids a lot of unnecessary windowClipRect recomputations in deep frame trees.
  • Stop traversing the Frame tree if the current frame does not have a content renderer, as this means the subframes won't have one either.
  • Stop traversing the Frame tree if the current frame's view has an empty windowClipRect() as this means the windowClipRect will be empty for those subframes as well.

On popsci.com, this cuts down the number of uncached windowClipRect() calls by
approximately half. I see viewportsContentsChanged() at ~0.4% when scrolling
on popsci.com after this change.

  • page/FrameView.cpp:

(WebCore::FrameView::resumeVisibleImageAnimationsIncludingSubframes):
(WebCore::FrameView::windowClipRect):

  • page/FrameView.h:
  • rendering/RenderView.cpp:

(WebCore::RenderView::resumePausedImageAnimationsIfNeeded):

  • rendering/RenderView.h:
5:27 PM Changeset in webkit [182772] by timothy_horton@apple.com
  • 21 edits in trunk

Add a persistent, fixed scale factor to make it easy to scale down WK(Web)Views
https://bugs.webkit.org/show_bug.cgi?id=143560
<rdar://problem/16302047>

Reviewed by Darin Adler.

Add a new "view" scale factor to WKView and WKWebView.

Unlike page scale (or "magnification" in the API), view scale:

  • persists between page loads
  • persists between Web process crashes
  • is not user adjustable
  • can reliably be < 1

The page scale and view scale are multiplied together whenever we push
a new page scale down into WebCore, so the implementation of view scale
is transparent to WebCore, and acts effectively as a constant multiplier
for the (user-adjustable) page scale factor.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::scaleView):
Add scaleView, which updates our cached viewScaleFactor and pushes it to the Web process.

(WebKit::WebPageProxy::creationParameters):
Plumb viewScaleFactor through the page creation parameters.

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::viewScaleFactor): Added.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):
If the viewScaleFactor is not 1 at creation time, call scalePage with a page scale of 1.
Internally, scalePage will multiply in the viewScaleFactor and push it all to the Web process.

(WebKit::WebPage::scalePage):
Multiply the page scale factor by the view scale factor before passing it to WebCore.

(WebKit::WebPage::scalePageInViewCoordinates):
Early returns need to check the total scale, not just the new page scale.

(WebKit::WebPage::totalScaleFactor):
The scale that we get back from WebCore::Page::pageScaleFactor is the product
of WebKit2's view and page scales. So, here we'll call that the totalScaleFactor.
(Might need a different name because it seems like "total" should include deviceScale too).

(WebKit::WebPage::pageScaleFactor):
WebKit2's notion of the pageScaleFactor does not include the view scale, so
divide it out of WebCore's page scale.

(WebKit::WebPage::scaleView):
Apply a new view scale, maintaining the current scroll position.

  • WebProcess/WebPage/WebPage.h:

(WebKit::WebPage::viewScaleFactor):

  • WebProcess/WebPage/WebPage.messages.in:
  • Shared/WebPageCreationParameters.cpp:

(WebKit::WebPageCreationParameters::encode):
(WebKit::WebPageCreationParameters::decode):

  • Shared/WebPageCreationParameters.h:

Plumb viewScaleFactor through the page creation parameters.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _viewScale]):
(-[WKWebView _setViewScale:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView _viewScale]):
(-[WKView _setViewScale:]):
Push the new view scale to WebPage.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setAutomaticallyComputesFixedLayoutSizeFromViewScale:]):
(-[WKWebView _automaticallyComputesFixedLayoutSizeFromViewScale]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView setFrameSize:]):
(-[WKView _updateAutomaticallyComputedFixedLayoutSize]):
(-[WKView _setAutomaticallyComputesFixedLayoutSizeFromViewScale:]):
(-[WKView _automaticallyComputesFixedLayoutSizeFromViewScale]):

  • UIProcess/API/mac/WKViewInternal.h:

Add a new layout mode, "DynamicSizeComputedFromViewScale",
which turns on fixed layout size mode, and sets the fixed layout size
based on the view's frame and view scale. The fixed layout size is maintained
as the frame of the view scaled by the inverse of the view scale. This
makes it very easy to maintain a WK(Web)View that is scaled down by
a constant amount, but is laid out as if it were not.

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::adjustTransientZoom):
(WebKit::TiledCoreAnimationDrawingArea::commitTransientZoom):
(WebKit::TiledCoreAnimationDrawingArea::applyTransientZoomToPage):
Because the transient zoom mechanism touches layers that WebCore owns,
it mostly need to operate with totalScaleFactor, because that is what WebCore sees.

  • MiniBrowser/mac/BrowserWindowController.h:
  • MiniBrowser/mac/MainMenu.xib:
  • MiniBrowser/mac/WK1BrowserWindowController.m:

(-[WK1BrowserWindowController setScale:]):

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(viewScaleForMenuItemTag):
(-[WK2BrowserWindowController setScale:]):
(-[WK2BrowserWindowController validateMenuItem:]):
Add a submenu with four view scale options: 100%, 75%, 50%, and 25%.
When in use, we resize the window so that the view fits correctly, and
use automaticallyComputesFixedlayoutSizeFromViewScale so that the page's
layout size will not change when scaling down (but will update appropriately
when the view is resized).

5:11 PM Changeset in webkit [182771] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed. Set the title text of the placard added in r182631.
https://bugs.webkit.org/show_bug.cgi?id=143585.
<rdar://problem/12067439>

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.updateWirelessPlaybackStatus):

5:08 PM Changeset in webkit [182770] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard shows obsolete results when builds are substantially out of order
https://bugs.webkit.org/show_bug.cgi?id=138630

Reviewed by Tim Horton.

Make sure that we always load at least one in order productive iteration.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotQueue.js:

(BuildbotQueue): Added _hasLoadedIterationForInOrderResult to track whether the queue
is done loading at least one iteration that wasn't an out of order build.
(BuildbotQueue.prototype.loadMoreHistoricalIterations): Listen for iteration load
when that's needed to check for out of order builds.
(BuildbotQueue.prototype.update): Ditto.
(BuildbotQueue.prototype._checkForInOrderResult): Check if the queue has an in order
result, and if it does not, load more iterations.
(BuildbotQueue.prototype.loadAll): We have everything loaded, so we certainly have
an in order iteration loaded too.
(BuildbotQueue.prototype.compareIterations): Extracted from sortIterations(), and
corrected to always sort loaded iterations before unloaded ones.

5:07 PM Changeset in webkit [182769] by ap@apple.com
  • 3 edits
    2 adds in trunk/LayoutTests/imported/w3c

imported/w3c/canvas/2d.text.measure.width.empty.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143671

Reviewed by Tim Horton.

  • canvas/2d.text.measure.width.empty.html:
  • canvas/2d.text.measure.width.empty-expected.txt:

Updated the test to trunk, where it uses testharness, which knows about waitUntilDone.

  • fonts: Added.
  • fonts/CanvasTest.ttf: Added.

While at it, added a font that this test includes (probably for no good reason).
This avoids hitting a sandbox violation.

5:05 PM Changeset in webkit [182768] by Brent Fulgham
  • 21 edits
    4 adds in trunk

Expand test infrastructure to support scrolling tests
https://bugs.webkit.org/show_bug.cgi?id=143286
<rdar://problem/20375516>

Reviewed by Simon Fraser.

Source/WebCore:

No new functionality.

This series of changes adds a new singleton class, 'WheelEventTestTrigger', which encapsulates a
function object to be fired when scroll events are finished. The object also keeps track of reasons
why the test should not yet fire (e.g., 'rubberbanding' is active) so that tests do not incorrectly
check rendering state in the middle of an animation.

This code is not yet hooked up to the rendering system, and so does not have any effect on behavior.

  • CMakeLists.txt: Add new WheelEventTestTrigger files.
  • WebCore.vcxproj/WebCore.vcxproj: Ditto.
  • WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • page/MainFrame.cpp:

(WebCore::MainFrame::MainFrame): Add new member to constructor.
(WebCore::MainFrame::testTrigger): Added.
(WebCore::MainFrame::ensureTestTrigger): Added.
(WebCore::MainFrame::clearTrigger): Added.

  • page/MainFrame.h:
  • page/WheelEventTestTrigger.cpp: Added.

(WebCore::WheelEventTestTrigger::WheelEventTestTrigger):
(WebCore::WheelEventTestTrigger::createWeakPtr):
(WebCore::WheelEventTestTrigger::clearAllTestDeferrals):
(WebCore::WheelEventTestTrigger::setTestNotificationCallback):
(WebCore::WheelEventTestTrigger::deferTestsForReason):
(WebCore::WheelEventTestTrigger::removeTestDeferralForReason):
(WebCore::WheelEventTestTrigger::triggerTestTimerFired):

  • page/WheelEventTestTrigger.h: Added.

Source/WebKit2:

Extend the WK2 testing API to include a method for setting a JSC callback function to be triggered
by the new WebCore::WheelEventTestTrigger singleton.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePageStartMonitoringScrollOperations): WK2 method that causes the testing system to begin tracking wheel events.
(WKBundlePageRegisterScrollOperationCompletionCallback): WK2 method to set the callback function for testing.

  • WebProcess/InjectedBundle/API/c/WKBundlePage.h:

Tools:

Extend the WK1 and WK2 test programs to support two new EventSender commands:
(1) monitorWheelEvents: Tells DRT and WKTR to track the wheel event and animation state, so that we can
block executing tests until WebKit has completed any rubberband, scroll, or scroll-snap animations.
(2) callAfterScrollingCompletes: Provide a callback method to be executed when WebKit determines that
relevant rubberband, scroll, and scroll-snap animations are finished.

  • DumpRenderTree/mac/EventSendingController.mm:

(+[EventSendingController isSelectorExcludedFromWebScript:]): Update to recognize 'callAfterScrollingCompletes:'
and 'monitorWheelEvents'.
(+[EventSendingController webScriptNameForSelector:]): Ditto.
(-[EventSendingController mouseScrollByX:andY:continuously:]): Add some stderr logging to help when
debugging test failures.
(-[EventSendingController mouseScrollByX:andY:withWheel:andMomentumPhases:]): Ditto.
(-[EventSendingController callAfterScrollingCompletes:]): Added. Protects the JSObject representing the callback
function, then passes it to WebCore to be called once the test deferrals have been cleared.
(-[EventSendingController monitorWheelEvents:]): Added. Activates the wheel event tracking used by the
'callAfterScrollingCompletes' method.

  • WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl: Added signatures for 'callAfterScrollingCompletes'

and 'monitorWheelEvents'.

  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::callAfterScrollingCompletes): Added. Protects the JSObject representing the
callback function, then passes it to WebCore to be called once the test deferrals have been cleared
(WTR::EventSendingController::monitorWheelEvents): Added. Activates the wheel event tracking used by the
'callAfterScrollingComplates' method.

  • WebKitTestRunner/InjectedBundle/EventSendingController.h:

LayoutTests:

Correct a scrolling test that had not been issuing wheel events to a valid
view. This was found by some new logging in this patch.

  • platform/mac/fast/scrolling/scroll-div-latched-div-expected.txt:
  • platform/mac/fast/scrolling/scroll-div-latched-div.html:
  • platform/mac-wk1/scrollbars/scrollevent-iframe-no-scrolling-wheel-expected.txt: Added.*
4:51 PM Changeset in webkit [182767] by Said Abou-Hallawa
  • 3 edits in trunk/LayoutTests

Fix LayoutTests/http/tests/canvas/canvas-tainted-after-draw-image.html on all bots
following http://trac.webkit.org/changeset/182750.

Reviewed by Daniel Bates.

  • http/tests/canvas/canvas-tainted-after-draw-image-expected.txt:
  • http/tests/canvas/canvas-tainted-after-draw-image.html:

Set window.jsTestIsAsync true and call finishJSTest() to make the test
asynchronous, so the "TEST COMPLETE" message will be output after all the
test messages. Also delete the synchronous tests for data url image and
same-domain image since they can't be reliably tested.

4:41 PM Changeset in webkit [182766] by jer.noble@apple.com
  • 4 edits in trunk/Source/WebCore

[iOS] When entering optimized fullscreen, standard fullscreen view should exit.
https://bugs.webkit.org/show_bug.cgi?id=143615

Reviewed by Simon Fraser.

When entering optimized fullscreen from standard fullscreen, the original fullscreen
view should animate out.

The original method for entering optimized fullscreen is deprecated, so replace it with
the new method (which doesn't take completion blocks) and use delegate methods to detect
when the animation transition completes.

  • platform/Logging.h:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.h:
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(boolString): Added; use for logging boolean parameters.
(-[WebAVPlayerController playerViewControllerWillStartOptimizedFullscreen:]): Pass to WebVideoFullscreenInterfaceAVKit.
(-[WebAVPlayerController playerViewControllerDidStartOptimizedFullscreen:]): Ditto.
(-[WebAVPlayerController playerViewControllerWillStopOptimizedFullscreen:]): Ditto.
(-[WebAVPlayerController playerViewControllerDidStopOptimizedFullscreen:]): Ditto.
(-[WebAVPlayerController playerViewControllerWillCancelOptimizedFullscreen:]): Ditto.
(-[WebAVPlayerController playerViewControllerDidCancelOptimizedFullscreen:]): Ditto.
(-[WebAVPlayerController playerViewController:restoreUserInterfaceForOptimizedFullscreenStopWithCompletionHandler:]): Ditto.
(-[WebAVVideoLayer setPlayerViewController:]): Remove the KVO registration; now handled by above delegate methods.
(WebVideoFullscreenInterfaceAVKit::setupFullscreenInternal): Add logging.
(WebVideoFullscreenInterfaceAVKit::enterFullscreen): Ditto.
(WebVideoFullscreenInterfaceAVKit::enterFullscreenOptimized): Use new -startOptimizedFullscreen method.
(WebVideoFullscreenInterfaceAVKit::enterFullscreenStandard): Add logging.
(WebVideoFullscreenInterfaceAVKit::exitFullscreenInternal): Ditto.
(WebVideoFullscreenInterfaceAVKit::cleanupFullscreenInternal): Use hasMode() & isMode() rather than checking m_mode directly.
(WebVideoFullscreenInterfaceAVKit::requestHideAndExitFullscreen): Ditto.
(WebVideoFullscreenInterfaceAVKit::preparedToReturnToInline): Callback now stored on this object rather than the WebAVPlayerController.
(WebVideoFullscreenInterfaceAVKit::mayAutomaticallyShowVideoOptimized): Moved.
(WebVideoFullscreenInterfaceAVKit::fullscreenMayReturnToInline): Added; store the passed callback.
(WebVideoFullscreenInterfaceAVKit::willStartOptimizedFullscreen): Exit out of standard fullscreen mode if necessary.
(WebVideoFullscreenInterfaceAVKit::didStartOptimizedFullscreen): Moved from the start lambda in enterFullscreenOptimized().
(WebVideoFullscreenInterfaceAVKit::willStopOptimizedFullscreen): Call the model's requestExitFullscreen() method.
(WebVideoFullscreenInterfaceAVKit::didStopOptimizedFullscreen): Moved from the stop lambda in enterFullscreenOptimized().
(WebVideoFullscreenInterfaceAVKit::willCancelOptimizedFullscreen): Call the model's requestExitFullscreen() method.
(WebVideoFullscreenInterfaceAVKit::didCancelOptimizedFullscreen): Moved from the stop lambda in enterFullscreenOptimized().
(WebVideoFullscreenInterfaceAVKit::prepareForOptimizedFullscreenStopWithCompletionHandler): Moved from -playerViewController:shouldExitFullScreenWithReason:.
(WebVideoFullscreenInterfaceAVKit::setMode): Added; Call fullscreenModeChanged() if necessary.
(WebVideoFullscreenInterfaceAVKit::clearMode): Ditto.
(-[WebAVVideoLayer observeValueForKeyPath:ofObject:change:context:]): Deleted.
(WebVideoFullscreenInterfaceAVKit::setIsOptimized): Deleted.

4:23 PM Changeset in webkit [182765] by enrica@apple.com
  • 5 edits in trunk/Source/WebKit2

Clients of WKWebView should be able to override drag functions.
https://bugs.webkit.org/show_bug.cgi?id=143618

Reviewed by Darin Adler.

WKWebView now implements the drag protocol functions and
forwards the calls to the inner WKView.
In the page client, when we receive a request to start drag
from the WebProcess, we call _dragImageForView in WKView with
the target view. The function calls dragImage on the given view,
so that its clients can override the dragImage function.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView draggingEntered:]):
(-[WKWebView draggingUpdated:]):
(-[WKWebView draggingExited:]):
(-[WKWebView prepareForDragOperation:]):
(-[WKWebView performDragOperation:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView _dragImageForView:withImage:at:linkDrag:]):
(-[WKView _setDragImage:at:linkDrag:]): Deleted.

  • UIProcess/API/mac/WKViewInternal.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::setDragImage):

4:20 PM Changeset in webkit [182764] by achristensen@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] Unreviewed build fix after r182760.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::encodeSharedBuffer):
(IPC::decodeSharedBuffer):
Update SharedMemory function names.

3:57 PM Changeset in webkit [182763] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix Windows build. Windows doesn't take kindly to private classes that use FAST_ALLOCATED.

  • runtime/InferredValue.h:
3:33 PM Changeset in webkit [182762] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix build. I introduced a new cell type at the same time as kling changed how new cell types are written.

  • runtime/InferredValue.h:
3:31 PM Changeset in webkit [182761] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Fix compositing/geometry/fixed-transformed.html on Mavericks.

To get consistent results on Mavericks, call
internals.settings.setAcceleratedCompositingForFixedPositionEnabled(true);

  • compositing/geometry/fixed-transformed.html:
3:26 PM Changeset in webkit [182760] by andersca@apple.com
  • 19 edits in trunk/Source/WebKit2

Rename SharedMemory::create overloads
https://bugs.webkit.org/show_bug.cgi?id=143679

Reviewed by Beth Dakin.

Rename the SharedMemory::create overload that allocates memory to SharedMemory::allocate,
and the SharedMemory::create overload that maps in a handle to SharedMemory::map.

  • Platform/SharedMemory.h:
  • Platform/mac/SharedMemoryMac.cpp:

(WebKit::SharedMemory::allocate):
(WebKit::SharedMemory::map):
(WebKit::SharedMemory::create): Deleted.

  • Shared/ShareableBitmap.cpp:

(WebKit::ShareableBitmap::createShareable):
(WebKit::ShareableBitmap::create):

  • Shared/ShareableResource.cpp:

(WebKit::ShareableResource::create):

  • Shared/ShareableResource.h:
  • Shared/WebCompiledContentExtension.cpp:

(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):

  • Shared/WebCompiledContentExtensionData.cpp:

(WebKit::WebCompiledContentExtensionData::decode):

  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::Data):
(WebKit::WebHitTestResult::Data::decode):

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):

  • UIProcess/VisitedLinkProvider.cpp:

(WebKit::VisitedLinkProvider::resizeTable):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::dataSelectionForPasteboard):
(WebKit::WebPageProxy::setPromisedDataForImage):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::writeItemsToPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::setBufferForType):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):

  • WebProcess/WebPage/VisitedLinkTableController.cpp:

(WebKit::VisitedLinkTableController::setVisitedLinkTable):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getDataSelectionForPasteboard):

3:13 PM Changeset in webkit [182759] by fpizlo@apple.com
  • 65 edits
    17 adds
    3 deletes in trunk

JSC should detect singleton functions
https://bugs.webkit.org/show_bug.cgi?id=143232

Source/JavaScriptCore:

Reviewed by Geoffrey Garen.

This started out as an attempt to make constructors faster by detecting when a constructor is a
singleton. The idea is that each FunctionExecutable has a VariableWatchpointSet - a watchpoint
along with an inferred value - that detects if only one JSFunction has been allocated for that
executable, and if so, what that JSFunction is. Then, inside the code for the FunctionExecutable,
if the watchpoint set has an inferred value (i.e. it's been initialized and it is still valid),
we can constant-fold GetCallee.

Unfortunately, constructors don't use GetCallee anymore, so that didn't pan out. But in the
process I realized a bunch of things:

  • This allows us to completely eliminate the GetCallee/GetScope sequence that we still sometimes had even in code where our singleton-closure detection worked. That's because singleton-closure inference worked at the op_resolve_scope, and that op_resolve_scope still needed to keep alive the incoming scope in case we OSR exit. But by constant-folding GetCallee, that sequence disappears. OSR exit can rematerialize the callee or the scope by just knowing their constant values.


  • Singleton detection should be a reusable thing. So, I got rid of VariableWatchpointSet and created InferredValue. InferredValue is a cell, so it can handle its own GC magic. FunctionExecutable uses an InferredValue to tell you about singleton JSFunctions.


  • The old singleton-scope detection in op_resolve_scope is better abstracted as a SymbolTable detecting a singleton JSSymbolTableObject. So, SymbolTable uses an InferredValue to tell you about singleton JSSymbolTableObjects. It's curious that we want to have singleton detection in SymbolTable if we already have it in FunctionExecutable. This comes into play in two ways. First, it means that the DFG can realize sooner that a resolve_scope resolves to a constant scope. Ths saves compile times and it allows prediction propagation to benefit from the constant folding. Second, it means that we will detect a singleton scope even if it is referenced from a non-singleton scope that is nearer to us in the scope chain. This refactoring allows us to eliminate the function reentry watchpoint.


  • This allows us to use a normal WatchpointSet, instead of a VariableWatchpointSet, for inferring constant values in scopes. Previously when the DFG inferred that a closure variable was constant, it wouldn't know which closure that variable was in and so it couldn't just load that value. But now we are first inferring that the function is a singleton, which means that we know exactly what scope it points to, and we can load the value from the scope. Using a WatchpointSet instead of a VariableWatchpointSet saves some memory and simplifies a bunch of code. This also means that now, the only user of VariableWatchpointSet is FunctionExecutable. I've tweaked the code of VariableWatchpointSet to reduce its power to just be what FunctionExecutable wants.


This also has the effect of simplifying the implementation of block scoping. Prior to this
change, block scoping would have needed to have some story for the function reentry watchpoint on
any nested symbol table. That's totally weird to think about; it's not really a function reentry
but a scope reentry. Now we don't have to think about this. Constant inference on nested scopes
will "just work": if we prove that we know the constant value of the scope then the machinery
kicks in, otherwise it doesn't.

This is a small Octane and AsmBench speed-up. AsmBench sees 1% while Octane sees sub-1%.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::finalizeUnconditionally):
(JSC::CodeBlock::valueProfileForBytecodeOffset):

  • bytecode/CodeBlock.h:

(JSC::CodeBlock::valueProfileForBytecodeOffset): Deleted.

  • bytecode/CodeOrigin.cpp:

(JSC::InlineCallFrame::calleeConstant):
(JSC::InlineCallFrame::visitAggregate):

  • bytecode/CodeOrigin.h:

(JSC::InlineCallFrame::calleeConstant): Deleted.
(JSC::InlineCallFrame::visitAggregate): Deleted.

  • bytecode/Instruction.h:
  • bytecode/VariableWatchpointSet.cpp: Removed.
  • bytecode/VariableWatchpointSet.h: Removed.
  • bytecode/VariableWatchpointSetInlines.h: Removed.
  • bytecode/VariableWriteFireDetail.cpp: Added.

(JSC::VariableWriteFireDetail::dump):
(JSC::VariableWriteFireDetail::touch):

  • bytecode/VariableWriteFireDetail.h: Added.

(JSC::VariableWriteFireDetail::VariableWriteFireDetail):

  • bytecode/Watchpoint.h:

(JSC::WatchpointSet::stateOnJSThread):
(JSC::WatchpointSet::startWatching):
(JSC::WatchpointSet::fireAll):
(JSC::WatchpointSet::touch):
(JSC::WatchpointSet::invalidate):
(JSC::InlineWatchpointSet::stateOnJSThread):
(JSC::InlineWatchpointSet::state):
(JSC::InlineWatchpointSet::hasBeenInvalidated):
(JSC::InlineWatchpointSet::invalidate):
(JSC::InlineWatchpointSet::touch):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::getScope): Deleted.

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDesiredWatchpoints.cpp:

(JSC::DFG::InferredValueAdaptor::add):
(JSC::DFG::DesiredWatchpoints::addLazily):
(JSC::DFG::DesiredWatchpoints::reallyAdd):
(JSC::DFG::DesiredWatchpoints::areStillValid):

  • dfg/DFGDesiredWatchpoints.h:

(JSC::DFG::InferredValueAdaptor::hasBeenInvalidated):
(JSC::DFG::DesiredWatchpoints::isWatched):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantClosureVar):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasWatchpointSet):
(JSC::DFG::Node::watchpointSet):
(JSC::DFG::Node::hasVariableWatchpointSet): Deleted.
(JSC::DFG::Node::variableWatchpointSet): Deleted.

  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileNotifyWrite):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGVarargsForwardingPhase.cpp:
  • ftl/FTLIntrinsicRepository.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileCreateActivation):
(JSC::FTL::LowerDFGToLLVM::compileNewFunction):
(JSC::FTL::LowerDFGToLLVM::compileNotifyWrite):

  • interpreter/Interpreter.cpp:

(JSC::StackFrame::friendlySourceURL):
(JSC::StackFrame::friendlyFunctionName):

  • interpreter/Interpreter.h:

(JSC::StackFrame::friendlySourceURL): Deleted.
(JSC::StackFrame::friendlyFunctionName): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::emitNotifyWrite):
(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_touch_entry): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emitNotifyWrite): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitPutGlobalVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emitNotifyWrite): Deleted.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL): Deleted.

  • runtime/CommonSlowPaths.h:
  • runtime/Executable.cpp:

(JSC::FunctionExecutable::finishCreation):
(JSC::FunctionExecutable::visitChildren):

  • runtime/Executable.h:

(JSC::FunctionExecutable::singletonFunction):

  • runtime/InferredValue.cpp: Added.

(JSC::InferredValue::create):
(JSC::InferredValue::destroy):
(JSC::InferredValue::createStructure):
(JSC::InferredValue::visitChildren):
(JSC::InferredValue::InferredValue):
(JSC::InferredValue::~InferredValue):
(JSC::InferredValue::notifyWriteSlow):
(JSC::InferredValue::ValueCleanup::ValueCleanup):
(JSC::InferredValue::ValueCleanup::~ValueCleanup):
(JSC::InferredValue::ValueCleanup::finalizeUnconditionally):

  • runtime/InferredValue.h: Added.

(JSC::InferredValue::inferredValue):
(JSC::InferredValue::state):
(JSC::InferredValue::isStillValid):
(JSC::InferredValue::hasBeenInvalidated):
(JSC::InferredValue::add):
(JSC::InferredValue::notifyWrite):
(JSC::InferredValue::invalidate):

  • runtime/JSEnvironmentRecord.cpp:

(JSC::JSEnvironmentRecord::visitChildren):

  • runtime/JSEnvironmentRecord.h:

(JSC::JSEnvironmentRecord::isValid):
(JSC::JSEnvironmentRecord::finishCreation):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::create):

  • runtime/JSFunction.h:

(JSC::JSFunction::createWithInvalidatedReallocationWatchpoint):
(JSC::JSFunction::createImpl):
(JSC::JSFunction::create): Deleted.

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::addGlobalVar):
(JSC::JSGlobalObject::addFunction):

  • runtime/JSGlobalObject.h:
  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::symbolTablePut):

  • runtime/JSScope.h:

(JSC::ResolveOp::ResolveOp):

  • runtime/JSSegmentedVariableObject.h:

(JSC::JSSegmentedVariableObject::finishCreation):

  • runtime/JSSymbolTableObject.h:

(JSC::JSSymbolTableObject::JSSymbolTableObject):
(JSC::JSSymbolTableObject::setSymbolTable):
(JSC::symbolTablePut):
(JSC::symbolTablePutWithAttributes):

  • runtime/PutPropertySlot.h:
  • runtime/SymbolTable.cpp:

(JSC::SymbolTableEntry::prepareToWatch):
(JSC::SymbolTable::SymbolTable):
(JSC::SymbolTable::finishCreation):
(JSC::SymbolTable::visitChildren):
(JSC::SymbolTableEntry::inferredValue): Deleted.
(JSC::SymbolTableEntry::notifyWriteSlow): Deleted.
(JSC::SymbolTable::WatchpointCleanup::WatchpointCleanup): Deleted.
(JSC::SymbolTable::WatchpointCleanup::~WatchpointCleanup): Deleted.
(JSC::SymbolTable::WatchpointCleanup::finalizeUnconditionally): Deleted.

  • runtime/SymbolTable.h:

(JSC::SymbolTableEntry::disableWatching):
(JSC::SymbolTableEntry::watchpointSet):
(JSC::SymbolTable::singletonScope):
(JSC::SymbolTableEntry::notifyWrite): Deleted.

  • runtime/TypeProfiler.cpp:
  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • tests/stress/infer-uninitialized-closure-var.js: Added.

(foo.f):
(foo):

  • tests/stress/singleton-scope-then-overwrite.js: Added.

(foo.f):
(foo):

  • tests/stress/singleton-scope-then-realloc-and-overwrite.js: Added.

(foo):

  • tests/stress/singleton-scope-then-realloc.js: Added.

(foo):

LayoutTests:

Reviewed by Geoffrey Garen and Michael Saboff.

  • js/regress/create-lots-of-functions-expected.txt: Added.
  • js/regress/create-lots-of-functions.html: Added.
  • js/regress/no-inline-constructor-expected.txt: Added.
  • js/regress/no-inline-constructor.html: Added.
  • js/regress/script-tests/create-lots-of-functions.js: Added.
  • js/regress/script-tests/no-inline-constructor.js: Added.
  • js/regress/script-tests/singleton-scope.js: Added.
  • js/regress/singleton-scope-expected.txt: Added.
  • js/regress/singleton-scope.html: Added.
2:42 PM Changeset in webkit [182758] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

[Win] Unreviewed fix after r182757.

  • platform/win/FileSystemWin.cpp:

(WebCore::renameFile): Checked in wrong version.

2:37 PM Changeset in webkit [182757] by Brent Fulgham
  • 3 edits in trunk/Source/WebCore

[Win] Unreviewed fix after r182161.

The change caused Windows to lose Media UI, since the new 'getFileSize'
signature was being improperly used for a 'UInt8'-based string.

Fix was to provide implementations for the two new methods, and to make
sure RenderThemeWin was using the proper signature.

This should actually be a little more efficient, since we have the file
handle when we call this new method. Previously, a Windows 'find file' was
being done with the requested path, which was unnecessary work.

  • platform/win/FileSystemWin.cpp:

(WebCore::getFileSizeFromByHandleFileInformationStructure): Added helper function.
(WebCore::getFileSize): Provide implementation.
(WebCore::renameFile):

  • rendering/RenderThemeWin.cpp:

(WebCore::RenderThemeWin::stringWithContentsOfFile): Use the file handle to
get the file size, rather than using the path-based size lookup (which involves
performing an unnecessary file search.

2:23 PM Changeset in webkit [182756] by beidson@apple.com
  • 17 edits
    2 adds in trunk/Source

Share sheets from Share menus appear outside the browser window.
<rdar://problem/20455592> and https://bugs.webkit.org/show_bug.cgi?id=143620

Reviewed by Darin Adler.

Source/WebCore:

  • page/ContextMenuController.h:

(WebCore::ContextMenuController::client):

Source/WebKit/mac:

Refactor existing Sharing Service Picker code to also be used for the Share menu NSMenuItem.

  • Misc/WebSharingServicePickerController.h:

(WebSharingServicePickerClient::webView):

  • Misc/WebSharingServicePickerController.mm:

(WebSharingServicePickerClient::WebSharingServicePickerClient):
(WebSharingServicePickerClient::sharingServicePickerWillBeDestroyed):
(WebSharingServicePickerClient::pageForSharingServicePicker):
(WebSharingServicePickerClient::windowForSharingServicePicker):
(WebSharingServicePickerClient::screenRectForCurrentSharingServicePickerItem):
(WebSharingServicePickerClient::imageForCurrentSharingServicePickerItem):
(-[WebSharingServicePickerController initWithItems:includeEditorServices:client:style:]):
(-[WebSharingServicePickerController initWithSharingServicePicker:client:]):
(-[WebSharingServicePickerController sharingService:didShareItems:]):

  • WebCoreSupport/WebContextMenuClient.h:

(WebContextMenuClient::webView): Deleted.

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::WebContextMenuClient):
(WebContextMenuClient::pageForSharingServicePicker): Deleted.
(WebContextMenuClient::windowForSharingServicePicker): Deleted.

  • WebCoreSupport/WebSelectionServiceController.h:
  • WebCoreSupport/WebSelectionServiceController.mm:

(WebSelectionServiceController::WebSelectionServiceController):
(WebSelectionServiceController::handleSelectionServiceClick):
(WebSelectionServiceController::pageForSharingServicePicker): Deleted.
(WebSelectionServiceController::windowForSharingServicePicker): Deleted.
(WebSelectionServiceController::screenRectForCurrentSharingServicePickerItem): Deleted.
(WebSelectionServiceController::imageForCurrentSharingServicePickerItem): Deleted.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView menuForEvent:]):

  • WebView/WebViewData.h:

Source/WebKit2:

Refactor existing Sharing Service Picker code to also be used for the Share menu NSMenuItem.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::internalShowContextMenu):
(WebKit::WebPageProxy::platformInitializeShareMenuItem):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/WKSharingServicePickerDelegate.h: Added.
  • UIProcess/mac/WKSharingServicePickerDelegate.mm: Added.

(+[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate]):
(-[WKSharingServicePickerDelegate menuProxy]):
(-[WKSharingServicePickerDelegate setMenuProxy:]):
(-[WKSharingServicePickerDelegate setPicker:]):
(-[WKSharingServicePickerDelegate setFiltersEditingServices:]):
(-[WKSharingServicePickerDelegate setHandlesEditingReplacement:]):
(-[WKSharingServicePickerDelegate sharingServicePicker:sharingServicesForItems:mask:proposedSharingServices:]):
(-[WKSharingServicePickerDelegate sharingServicePicker:delegateForSharingService:]):
(-[WKSharingServicePickerDelegate sharingService:willShareItems:]):
(-[WKSharingServicePickerDelegate sharingService:didShareItems:]):
(-[WKSharingServicePickerDelegate sharingService:sourceWindowForShareItems:sharingContentScope:]):

  • UIProcess/mac/WebContextMenuProxyMac.mm:

(WebKit::WebContextMenuProxyMac::setupServicesMenu):
(+[WKSharingServicePickerDelegate sharedSharingServicePickerDelegate]): Deleted.
(-[WKSharingServicePickerDelegate menuProxy]): Deleted.
(-[WKSharingServicePickerDelegate setMenuProxy:]): Deleted.
(-[WKSharingServicePickerDelegate setPicker:]): Deleted.
(-[WKSharingServicePickerDelegate setIncludeEditorServices:]): Deleted.
(-[WKSharingServicePickerDelegate sharingServicePicker:sharingServicesForItems:mask:proposedSharingServices:]): Deleted.
(-[WKSharingServicePickerDelegate sharingServicePicker:delegateForSharingService:]): Deleted.
(-[WKSharingServicePickerDelegate sharingService:willShareItems:]): Deleted.
(-[WKSharingServicePickerDelegate sharingService:didShareItems:]): Deleted.
(-[WKSharingServicePickerDelegate sharingService:sourceWindowForShareItems:sharingContentScope:]): Deleted.

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::platformInitializeShareMenuItem):

  • WebKit2.xcodeproj/project.pbxproj:
2:18 PM Changeset in webkit [182755] by Simon Fraser
  • 1 edit
    1 add in trunk/LayoutTests

Add missing layout test result.

  • compositing/geometry/fixed-transformed-expected.txt: Added.
1:53 PM Changeset in webkit [182754] by akling@apple.com
  • 8 edits in trunk/Source/WebCore

Rebaseline bindings tests.

  • bindings/scripts/test/JS/JSTestActiveDOMObject.h:
  • bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bindings/scripts/test/JS/JSTestException.h:
  • bindings/scripts/test/JS/JSTestInterface.h:
  • bindings/scripts/test/JS/JSTestObj.h:
  • bindings/scripts/test/JS/JSTestTypedefs.h:
1:26 PM Changeset in webkit [182753] by andersca@apple.com
  • 28 edits in trunk/Source/WebKit2

Begin cleaning up the shared memory interface
https://bugs.webkit.org/show_bug.cgi?id=143677

Reviewed by Andreas Kling.

Rename createFromVMBuffer to create and add a protection parameter (which is currently unused).
Also, turn SharedMemory::Protection into a proper enum class.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::store):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::initializeBufferFromStorageRecord):

  • NetworkProcess/mac/NetworkResourceLoaderMac.mm:

(WebKit::tryGetShareableHandleFromCFData):

  • Platform/SharedMemory.h:
  • Platform/mac/SharedMemoryMac.cpp:

(WebKit::SharedMemory::create):
(WebKit::machProtection):
(WebKit::SharedMemory::createHandle):
(WebKit::SharedMemory::createFromVMBuffer): Deleted.

  • Shared/ContextMenuContextData.cpp:

(WebKit::ContextMenuContextData::encode):
(WebKit::ContextMenuContextData::decode):

  • Shared/ShareableBitmap.h:
  • Shared/ShareableResource.cpp:

(WebKit::ShareableResource::create):
(WebKit::ShareableResource::createHandle):

  • Shared/WebCompiledContentExtensionData.cpp:

(WebKit::WebCompiledContentExtensionData::encode):
(WebKit::WebCompiledContentExtensionData::decode):

  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::encode):
(WebKit::WebHitTestResult::Data::decode):

  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::createExtension):

  • UIProcess/Cocoa/WebPasteboardProxyCocoa.mm:

(WebKit::WebPasteboardProxy::getPasteboardBufferForType):
(WebKit::WebPasteboardProxy::setPasteboardBufferForType):
(WebKit::WebPasteboardProxy::readBufferFromPasteboard):

  • UIProcess/VisitedLinkProvider.cpp:

(WebKit::VisitedLinkProvider::sendTable):

  • UIProcess/mac/WKPrintingView.mm:

(pageDidDrawToImage):

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::dataSelectionForPasteboard):
(WebKit::WebPageProxy::setPromisedDataForImage):

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::writeItemsToPasteboard):

  • WebProcess/WebCoreSupport/WebPlatformStrategies.cpp:

(WebKit::WebPlatformStrategies::bufferForType):
(WebKit::WebPlatformStrategies::setBufferForType):
(WebKit::WebPlatformStrategies::readBufferFromPasteboard):

  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteDragImage):

  • WebProcess/WebPage/VisitedLinkTableController.cpp:

(WebKit::VisitedLinkTableController::setVisitedLinkTable):

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::takeSnapshot):
(WebKit::WebPage::drawRectToImage):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::getDataSelectionForPasteboard):

1:16 PM Changeset in webkit [182752] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Treat a 'not found' media option index as the 'off' track.
https://bugs.webkit.org/show_bug.cgi?id=143672

Reviewed by Eric Carlson.

The UIProcess will pass in UINT64_MAX for the index of the legible option to select. Treat this
as if the captionOffMenuItem() had been selected to avoid a null dereference.

  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::selectLegibleMediaOption):

1:02 PM Changeset in webkit [182751] by commit-queue@webkit.org
  • 3 edits
    3 adds in trunk

list-style-image with SVG image renders at incorrect size.
https://bugs.webkit.org/show_bug.cgi?id=141367.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-04-13
Reviewed by Darin Adler.
Source/WebCore:

This patch imports https://codereview.chromium.org/197203003.

When using an SVG as list marker image, don't unconditionally set the
dimensions to a square with the dimensions of ascent / 2, but rather
determine a suitable size using intrinsic dimensions (and ratio).

Test: svg/as-list-image/svg-list-image-intrinsic-size-1.html

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::updateContent):

LayoutTests:

Ensure the SVG image gets the correct size when used as an image list.

  • svg/as-list-image: Added.
  • svg/as-list-image/svg-list-image-intrinsic-size-1-expected.html: Added.
  • svg/as-list-image/svg-list-image-intrinsic-size-1.html: Added.
12:53 PM Changeset in webkit [182750] by Said Abou-Hallawa
  • 3 edits
    4 adds in trunk

Canvas drawImage() has a security hole when the image isn't yet fully loaded.
https://bugs.webkit.org/show_bug.cgi?id=58681.

Reviewed by Darin Adler.

Source/WebCore:

There is a race condition which may happen if an image from a different
origin is drawn on a canvas before it finishes loading. The check to taint
the canvas comes before drawing it. This check returns false if the image
is not completely loaded because we check the URL of the resource response.
If after this check and before the drawing, the image finishes loading, the
canvas will not be tainted but the image will be drawn.

The fix is to move the check to taint the canvas after drawing the image.
The only problem with this solution is basically the opposite of this bug:
we will become stricter than before with images which are from a different
origin and before they finish loading. The image has not finished loading,
so we do not draw it. Before we check for tainting, the image finishes
loading. So we decide to taint the canvas even the image is not drawn.

But this should not be a security issue anymore. I personally do not know
if it is even a correctness issue or not.

Test: http/tests/canvas/canvas-tainted-after-draw-image.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawImage):

LayoutTests:

This test confirms when we load an image from a different origin and try
drawing it on a canvas, the canvas is tainted if the image is completely
loaded and drawn. Otherwise the image is not drawn.

  • http/tests/canvas/canvas-tainted-after-draw-image-expected.txt: Added.
  • http/tests/canvas/canvas-tainted-after-draw-image.html: Added.
  • http/tests/canvas/resources: Added.
  • http/tests/canvas/resources/100x100-lime-rect.svg: Added.
12:52 PM Changeset in webkit [182749] by jhoneycutt@apple.com
  • 3 edits
    1 add in trunk

Cannot click "Next" button on Google two-factor auth setup page

<https://bugs.webkit.org/show_bug.cgi?id=143624>
<rdar://problem/19175714>

.:

Reviewed by Darin Adler.

  • ManualTests/button-that-focuses-itself-on-click.html: Added.

Source/WebKit2:

This issue occurs when this site focuses the submit button. When it
receives focus, we try to assist it. While we consider ourselves to be
assisting it, we ignore further gesture inputs for that node, including
the tap gesture.

To fix this, only assist input types that we know are assistable,
including text fields, select and date elements, etc.

Reviewed by Darin Adler.

  • UIProcess/ios/WKContentViewInteraction.mm:

(isAssistableInputType):
If the type is a known-assistable type, return true.
(-[WKContentView _startAssistingNode:userIsInteracting:blurPreviousNode:userObject:]):
Call isAssistableInputType() to determine whether we should do any kind
of assistance for this node.

12:17 PM Changeset in webkit [182748] by Beth Dakin
  • 46 edits
    3 deletes in trunk

Add force property to MouseEvents
https://bugs.webkit.org/show_bug.cgi?id=143569
-and corresponding-
rdar://problem/20472954

Reviewed by Darin Adler.

Source/WebCore:

This patch removes WebKitMouseForceEvent and uses a MouseEvent everywhere that it
was used. That’s possible because this patch also adds a force property to all
MouseEvents and to PlatformMouseEvent.

Remove WebKitMouseForceEvent.

  • CMakeLists.txt:
  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/DOMAllInOne.cpp:

Create MouseEvents with the appropriate force instead of WebKitMouseForceEvents.
This patch also gets rid of the PlatformMouseEvent parameter for these events.
They were re-using the cached mousedown event before, which they never should have
done. Instead, we create PlatformMouseEvents inside these functions and then use
that to make MouseEvents.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseForceWillBegin):
(WebCore::Element::dispatchMouseForceChanged):
(WebCore::Element::dispatchMouseForceDown):
(WebCore::Element::dispatchMouseForceUp):
(WebCore::Element::dispatchMouseForceClick):
(WebCore::Element::dispatchMouseForceCancelled):

  • dom/Element.h:

No More WebKitMouseForceEvent.

  • dom/EventNames.in:

Add force to MouseEvent.

  • dom/MouseEvent.cpp:

(WebCore::MouseEvent::create):
(WebCore::MouseEvent::MouseEvent):
(WebCore::MouseEvent::cloneFor):
(WebCore::SimulatedMouseEvent::SimulatedMouseEvent):

  • dom/MouseEvent.h:

(WebCore::MouseEvent::force):
(WebCore::MouseEvent::setForce):

  • dom/MouseEvent.idl:

No More WebKitMouseForceEvent.

  • dom/WebKitMouseForceEvent.cpp: Removed.
  • dom/WebKitMouseForceEvent.h: Removed.
  • dom/WebKitMouseForceEvent.idl: Removed.

PlatformMouseEvent now takes a force parameter.

  • dom/WheelEvent.cpp:

(WebCore::WheelEvent::WheelEvent):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::showContextMenuAt):

  • page/DragController.cpp:

(WebCore::createMouseEvent):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dispatchDragEvent):
(WebCore::EventHandler::sendContextMenuEventForKey):
(WebCore::EventHandler::fakeMouseMoveEventTimerFired):

We don’t need lastMouseDownEvent() anymore. We were using it to avoid creating new
PlatformMouseEvents for the force events, but we fix that in this patch.
(WebCore::EventHandler::lastMouseDownEvent): Deleted.

  • page/EventHandler.h:

At force to PlatformMouseEvent.

  • platform/PlatformMouseEvent.h:

(WebCore::PlatformMouseEvent::PlatformMouseEvent):
(WebCore::PlatformMouseEvent::force):

  • replay/SerializationMethods.cpp:

(JSC::EncodingTraits<PlatformMouseEvent>::encodeValue):
(JSC::EncodingTraits<PlatformMouseEvent>::decodeValue):

Source/WebKit/ios:

Send the appropriate force with this simulated click event.

  • WebView/WebPDFViewPlaceholder.mm:

(-[WebPDFViewPlaceholder simulateClickOnLinkToURL:]):

Source/WebKit/mac:

PlatformMouseEvent and MouseEvent now take force parameters.

  • WebView/WebFrame.mm:

(-[WebFrame _dragSourceEndedAt:operation:]):

  • WebView/WebPDFView.mm:

(-[WebPDFView PDFViewWillClickOnLink:withURL:]):

Source/WebKit/win:

PlatformMouseEvent takes a force parameter.

  • WebDropSource.cpp:

(generateMouseEvent):

Source/WebKit2:

In order to accommodate adding force to all PlatformMouseEvents, we have to add it
to pass a caches pressure event to NativeWebMouseEvent and add force to
WebMouseEvent.

NativeWebMouseEvent now requires a second NSEvent for the pressureEvent.

  • Shared/NativeWebMouseEvent.h:

WebMouseEvent takes a force parameter.

  • Shared/WebEvent.h:

(WebKit::WebMouseEvent::force):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/WebMouseEvent.cpp:

(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode):
(WebKit::WebMouseEvent::decode):

  • Shared/mac/NativeWebMouseEventMac.mm:

(WebKit::NativeWebMouseEvent::NativeWebMouseEvent):

  • Shared/mac/WebEventFactory.h:
  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):

Cache the most recent pressureEvent in _data so that it can be sent along to the
NativeWebMouseEvent constructor.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):
(-[WKView acceptsFirstMouse:]):
(-[WKView shouldDelayWindowOrderingForEvent:]):
(-[WKView _postFakeMouseMovedEventForFlagsChangedEvent:]):
(-[WKView initWithFrame:processPool:configuration:webView:]):

WebMouseEvent takes a force parameter.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::showContextMenuAtPoint):

  • WebProcess/Plugins/PluginView.cpp:

(WebKit::PluginView::createWebEvent):

MouseEvent and PlatformMouseEvent both take force parameters too.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::navigateToURLWithSimulatedClick):
(WebKit::WebPage::contextMenuAtPointInWindow):
(WebKit::WebPage::dragEnded):
(WebKit::WebPage::simulateMouseDown):
(WebKit::WebPage::simulateMouseUp):
(WebKit::WebPage::simulateMouseMotion):

The functions that dispatch the force events no longer take a PlatformMouseEvent
as a parameter.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange):
(WebKit::WebPage::immediateActionDidCancel):

LayoutTests:

  • platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:
12:12 PM Changeset in webkit [182747] by akling@apple.com
  • 96 edits in trunk/Source

Don't segregate heap objects based on Structure immortality.
<https://webkit.org/b/143638>

Reviewed by Darin Adler.

Source/JavaScriptCore:

Put all objects that need a destructor call into the same MarkedBlock.
This reduces memory consumption in many situations, while improving locality,
since much more of the MarkedBlock space can be shared.

Instead of branching on the MarkedBlock type, we now check a bit in the
JSCell's inline type flags (StructureIsImmortal) to see whether it's safe
to access the cell's Structure during destruction or not.

Performance benchmarks look mostly neutral. Maybe a small regression on
SunSpider's date objects.

On the amazon.com landing page, this saves us 50 MarkedBlocks (3200kB) along
with a bunch of WeakBlocks that were hanging off of them. That's on the higher
end of savings we can get from this, but still a very real improvement.

Most of this patch is removing the "hasImmortalStructure" constant from JSCell
derived classes and passing that responsibility to the StructureIsImmortal flag.
StructureFlags is made public so that it's accessible from non-member functions.
I made sure to declare it everywhere and make classes final to try to make it
explicit what each class is doing to its inherited flags.

  • API/JSCallbackConstructor.h:
  • API/JSCallbackObject.h:
  • bytecode/UnlinkedCodeBlock.h:
  • debugger/DebuggerScope.h:
  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileMakeRope):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileMakeRope):

  • heap/Heap.h:

(JSC::Heap::subspaceForObjectDestructor):
(JSC::Heap::allocatorForObjectWithDestructor):
(JSC::Heap::subspaceForObjectNormalDestructor): Deleted.
(JSC::Heap::subspaceForObjectsWithImmortalStructure): Deleted.
(JSC::Heap::allocatorForObjectWithNormalDestructor): Deleted.
(JSC::Heap::allocatorForObjectWithImmortalStructureDestructor): Deleted.

  • heap/HeapInlines.h:

(JSC::Heap::allocateWithDestructor):
(JSC::Heap::allocateObjectOfType):
(JSC::Heap::subspaceForObjectOfType):
(JSC::Heap::allocatorForObjectOfType):
(JSC::Heap::allocateWithNormalDestructor): Deleted.
(JSC::Heap::allocateWithImmortalStructureDestructor): Deleted.

  • heap/MarkedAllocator.cpp:

(JSC::MarkedAllocator::allocateBlock):

  • heap/MarkedAllocator.h:

(JSC::MarkedAllocator::needsDestruction):
(JSC::MarkedAllocator::MarkedAllocator):
(JSC::MarkedAllocator::init):
(JSC::MarkedAllocator::destructorType): Deleted.

  • heap/MarkedBlock.cpp:

(JSC::MarkedBlock::create):
(JSC::MarkedBlock::MarkedBlock):
(JSC::MarkedBlock::callDestructor):
(JSC::MarkedBlock::specializedSweep):
(JSC::MarkedBlock::sweep):
(JSC::MarkedBlock::sweepHelper):

  • heap/MarkedBlock.h:

(JSC::MarkedBlock::needsDestruction):
(JSC::MarkedBlock::destructorType): Deleted.

  • heap/MarkedSpace.cpp:

(JSC::MarkedSpace::MarkedSpace):
(JSC::MarkedSpace::resetAllocators):
(JSC::MarkedSpace::forEachAllocator):
(JSC::MarkedSpace::isPagedOut):
(JSC::MarkedSpace::clearNewlyAllocated):

  • heap/MarkedSpace.h:

(JSC::MarkedSpace::subspaceForObjectsWithDestructor):
(JSC::MarkedSpace::destructorAllocatorFor):
(JSC::MarkedSpace::allocateWithDestructor):
(JSC::MarkedSpace::forEachBlock):
(JSC::MarkedSpace::subspaceForObjectsWithNormalDestructor): Deleted.
(JSC::MarkedSpace::subspaceForObjectsWithImmortalStructure): Deleted.
(JSC::MarkedSpace::immortalStructureDestructorAllocatorFor): Deleted.
(JSC::MarkedSpace::normalDestructorAllocatorFor): Deleted.
(JSC::MarkedSpace::allocateWithImmortalStructureDestructor): Deleted.
(JSC::MarkedSpace::allocateWithNormalDestructor): Deleted.

  • inspector/JSInjectedScriptHost.h:
  • inspector/JSInjectedScriptHostPrototype.h:
  • inspector/JSJavaScriptCallFrame.h:
  • inspector/JSJavaScriptCallFramePrototype.h:
  • jsc.cpp:
  • runtime/ArrayBufferNeuteringWatchpoint.h:
  • runtime/ArrayConstructor.h:
  • runtime/ArrayIteratorPrototype.h:
  • runtime/BooleanPrototype.h:
  • runtime/ClonedArguments.h:
  • runtime/CustomGetterSetter.h:
  • runtime/DateConstructor.h:
  • runtime/DatePrototype.h:
  • runtime/ErrorPrototype.h:
  • runtime/ExceptionHelpers.h:
  • runtime/Executable.h:
  • runtime/GenericArguments.h:
  • runtime/GetterSetter.h:
  • runtime/InternalFunction.h:
  • runtime/JSAPIValueWrapper.h:
  • runtime/JSArgumentsIterator.h:
  • runtime/JSArray.h:
  • runtime/JSArrayBuffer.h:
  • runtime/JSArrayBufferView.h:
  • runtime/JSBoundFunction.h:
  • runtime/JSCallee.h:
  • runtime/JSCell.h:
  • runtime/JSCellInlines.h:

(JSC::JSCell::classInfo):

  • runtime/JSDataViewPrototype.h:
  • runtime/JSEnvironmentRecord.h:
  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayView.h:
  • runtime/JSGlobalObject.h:
  • runtime/JSLexicalEnvironment.h:
  • runtime/JSNameScope.h:
  • runtime/JSNotAnObject.h:
  • runtime/JSONObject.h:
  • runtime/JSObject.h:

(JSC::JSFinalObject::JSFinalObject):

  • runtime/JSPromiseConstructor.h:
  • runtime/JSPromiseDeferred.h:
  • runtime/JSPromisePrototype.h:
  • runtime/JSPromiseReaction.h:
  • runtime/JSPropertyNameEnumerator.h:
  • runtime/JSProxy.h:
  • runtime/JSScope.h:
  • runtime/JSString.h:
  • runtime/JSSymbolTableObject.h:
  • runtime/JSTypeInfo.h:

(JSC::TypeInfo::structureIsImmortal):

  • runtime/MathObject.h:
  • runtime/NumberConstructor.h:
  • runtime/NumberPrototype.h:
  • runtime/ObjectConstructor.h:
  • runtime/PropertyMapHashTable.h:
  • runtime/RegExp.h:
  • runtime/RegExpConstructor.h:
  • runtime/RegExpObject.h:
  • runtime/RegExpPrototype.h:
  • runtime/ScopedArgumentsTable.h:
  • runtime/SparseArrayValueMap.h:
  • runtime/StrictEvalActivation.h:
  • runtime/StringConstructor.h:
  • runtime/StringIteratorPrototype.h:
  • runtime/StringObject.h:
  • runtime/StringPrototype.h:
  • runtime/Structure.cpp:

(JSC::Structure::Structure):

  • runtime/Structure.h:
  • runtime/StructureChain.h:
  • runtime/StructureRareData.h:
  • runtime/Symbol.h:
  • runtime/SymbolPrototype.h:
  • runtime/SymbolTable.h:
  • runtime/WeakMapData.h:

Source/WebCore:

  • bindings/js/JSDOMBinding.h:
  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):
(GeneratePrototypeDeclaration):

  • bridge/objc/objc_runtime.h:
  • bridge/runtime_array.h:
  • bridge/runtime_method.h:
  • bridge/runtime_object.h:

Source/WebKit2:

  • WebProcess/Plugins/Netscape/JSNPObject.h:
11:38 AM Changeset in webkit [182746] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

javascript: links in inline PDFs shouldn't execute JavaScript in the context of the host website
https://bugs.webkit.org/show_bug.cgi?id=143642
<rdar://problem/18259355>

Reviewed by Darin Adler.

  • WebProcess/Plugins/PDF/PDFPlugin.mm:

(WebKit::PDFPlugin::clickedLink):
Don't follow javascript: URLs.

11:08 AM Changeset in webkit [182745] by mark.lam@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

DFG inlining of op_call_varargs should keep the callee alive in case of OSR exit.
https://bugs.webkit.org/show_bug.cgi?id=143407

Reviewed by Filip Pizlo.

DFG inlining of a varargs call / construct needs to keep the local
containing the callee alive with a Phantom node because the LoadVarargs
node may OSR exit. After the OSR exit, the baseline JIT executes the
op_call_varargs with that callee in the local.

Previously, because that callee local was not explicitly kept alive,
the op_call_varargs case can OSR exit a DFG function and leave an
undefined value in that local. As a result, the baseline observes the
side effect of an op_call_varargs on an undefined value instead of the
function it expected.

Note: this issue does not manifest with op_construct_varargs because
the inlined constructor will have an op_create_this which operates on
the incoming callee value, thereby keeping it alive.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleInlining):

  • tests/stress/call-varargs-with-different-arguments-length-after-warmup.js: Added.

(foo):
(Foo):
(doTest):

11:04 AM Changeset in webkit [182744] by Alan Bujtas
  • 2 edits in trunk/PerformanceTests

Clear up the test content when test is done.

Unreviewed fix.

  • Layout/simple-line-layout-innertext.html:
10:55 AM Changeset in webkit [182743] by Simon Fraser
  • 4 edits
    1 add in trunk

Fixed position element is truncated if moved onscreen by a transform
https://bugs.webkit.org/show_bug.cgi?id=143655
Source/WebCore:

rdar://problem/15020044

Reviewed by Darin Adler.

Our "don't do layout if transform changes" code was too aggressive.
If an element changes between having a transform and not having one, we
really need to do a layout since so much else depends on transforms. In
this particular case, we clip position:fixed elements to the viewport if
they are not transformed, and were failing to re-evaluate this when a
transform was added. Doing a layout fixes this.

Test: compositing/geometry/fixed-transformed.html

  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::changeRequiresLayout):

  • rendering/style/StyleTransformData.h:

(WebCore::StyleTransformData::hasTransform):

LayoutTests:

Reviewed by Darin Adler.

Test that moves a position:fixed element on-screen using a transform.

  • compositing/geometry/fixed-transformed.html: Added.
10:54 AM Changeset in webkit [182742] by achristensen@apple.com
  • 4 edits in trunk/Source/WebKit2

[Content Extensions] Don't unmap shared memory while using it.
https://bugs.webkit.org/show_bug.cgi?id=143625

Reviewed by Darin Adler.

  • Shared/WebCompiledContentExtension.cpp:

(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):

  • Shared/WebCompiledContentExtensionData.h:

(WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData):

  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::createExtension):
Keep the Data object alive as long as the SharedMemory that uses it.

10:50 AM Changeset in webkit [182741] by ap@apple.com
  • 2 edits in trunk/LayoutTests

js/regress-141098.html often times out in debug builds.

This test is slow in debug, sometimes barely passing, and other times timing out.

10:42 AM Changeset in webkit [182740] by Michael Catanzaro
  • 2 edits in trunk

[cmake] REGRESSION(182663): It broke feature dependency handling
https://bugs.webkit.org/show_bug.cgi?id=143665

Reviewed by Csaba Osztrogonác.

Don't try to check the value of options before defining the options.

  • Source/cmake/WebKitFeatures.cmake:
10:42 AM Changeset in webkit [182739] by Brent Fulgham
  • 3 edits in trunk/LayoutTests

[Win] Unreviewed test correction after r182635.

Two Windows test expectation files were missing newlines at the end of the file.

  • platform/win/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt:
  • platform/win/fast/backgrounds/selection-background-color-of-list-style-expected.txt:
10:28 AM Changeset in webkit [182738] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard: Crash-only queues should show failure when testing fails to start
https://bugs.webkit.org/show_bug.cgi?id=143656

Reviewed by Darin Adler.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:

(BuildbotTesterQueueView.prototype.update.appendBuilderQueueStatus):

10:28 AM Changeset in webkit [182737] by Alan Bujtas
  • 26 edits
    1 add in trunk/LayoutTests

[Win] Unreviewed gardening after r182620. (<br> updates mostly)

  • platform/win/fast/dom/focus-contenteditable-expected.txt:
  • platform/win/fast/forms/listbox-hit-test-zoomed-expected.txt:
  • platform/win/fast/forms/range/slider-padding-expected.txt:
  • platform/win/fast/forms/textarea-scroll-height-expected.txt:
  • platform/win/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/win/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/win/fast/text/svg-font-face-with-kerning-expected.txt: Added.
  • platform/win/http/tests/navigation/postredirect-basic-expected.txt:
  • platform/win/http/tests/navigation/postredirect-goback1-expected.txt:
  • platform/win/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
  • platform/win/svg/wicd/test-rightsizing-b-expected.txt:
  • platform/win/tables/mozilla/bugs/bug1224-expected.txt:
  • platform/win/tables/mozilla/bugs/bug131020-expected.txt:
  • platform/win/tables/mozilla/bugs/bug131020_iframe-expected.txt:
  • platform/win/tables/mozilla/bugs/bug1430-expected.txt:
  • platform/win/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/win/tables/mozilla/bugs/bug19599-expected.txt:
  • platform/win/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/win/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/win/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/win/tables/mozilla/bugs/bug92143-expected.txt:
  • platform/win/tables/mozilla/marvin/tables_cellpadding-expected.txt:
  • platform/win/tables/mozilla/marvin/tables_cellspacing-expected.txt:
  • platform/win/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/win/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/win/tables/mozilla_expected_failures/other/test4-expected.txt:
9:22 AM Changeset in webkit [182736] by peavo@outlook.com
  • 2 edits in trunk/Source/WebKit/win

[Win] Incorrect parameter order in call to WebView::repaint.
https://bugs.webkit.org/show_bug.cgi?id=143666

Reviewed by Brent Fulgham.

The 'immediate' default parameter has been forgotten.

  • WebCoreSupport/WebChromeClient.cpp:

(WebChromeClient::invalidateRootView):
(WebChromeClient::invalidateContentsAndRootView):
(WebChromeClient::invalidateContentsForSlowScroll):

8:41 AM Changeset in webkit [182735] by Darin Adler
  • 7 edits in trunk/Source

[Cocoa] Localizable strings are inconsistent and need to be regenerated
https://bugs.webkit.org/show_bug.cgi?id=143661
Source/WebCore:

rdar://problem/19634388

Reviewed by Dan Bernstein.

  • English.lproj/Localizable.strings: Updated by running the

update-webkit-localizable-strings script.

Source/WebKit/mac:

rdar://problem/19634388

Reviewed by Dan Bernstein.

  • Misc/WebLocalizableStrings.mm:

(LoadWebLocalizedStringsTimerCallback): Moved the comment, useful for programmers but
not for localization, into a C++ source code comment, and made the localizer comment
consistent with the place this localizable string is used for actual localization.

  • WebCoreSupport/WebEditorClient.mm:

(undoNameForEditAction): Changed the localizer comments for Delete and Dictation
to match the ones in WebKit2; no need to specify that these are iOS only, and if we do
want to specify that, we should not be using the term PLATFORM(IOS) since there is no
reason for us to expect localizers to understand that terminology. Also added a comment
about the fact that we have two copies of all the localizable strings.

Source/WebKit2:

Reviewed by Dan Bernstein.

  • UIProcess/WebEditCommandProxy.cpp:

(WebKit::WebEditCommandProxy::nameForEditAction): Also added a comment
about the fact that we have two copies of all the localizable strings.

8:40 AM Changeset in webkit [182734] by Darin Adler
  • 2 edits in trunk/Source/WebCore

Remove needless recreation of URL in NavigationScheduler::scheduleLocationChange
https://bugs.webkit.org/show_bug.cgi?id=143662

Reviewed by Sam Weinig.

  • loader/NavigationScheduler.cpp:

(WebCore::NavigationScheduler::scheduleLocationChange): Removed unnecessary code
to convert a URL to a String and then back into a URL.

8:06 AM Changeset in webkit [182733] by svillar@igalia.com
  • 2 edits in trunk/Tools

REGRESSION(r181134): [GTK] Test /webkit2/WebKitWebView/insecure-content is failing after r181134
https://bugs.webkit.org/show_bug.cgi?id=142387

Reviewed by Carlos Garcia Campos.

Running mixed content is blocked by default since r181134. Updated
the test case to reflect the new default settings.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp:

(testInsecureContent):

7:46 AM Changeset in webkit [182732] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Fix wrong value variable in ENABLE_NAVIGATOR_HWCONCURRENCY
https://bugs.webkit.org/show_bug.cgi?id=143667

Reviewed by Csaba Osztrogonác.

ENABLE_NAVIGATOR_HWCONCURRENCY has used $registerProtocolHandlerSupport value variable
since r169017. Added $hardwareConcurrencySupport for it.

Additionally networkInfoSupport is removed because this feature was removed due to spec out.

  • Scripts/webkitperl/FeatureList.pm:
7:11 AM Changeset in webkit [182731] by Csaba Osztrogonác
  • 10 edits in trunk

[cmake] Add ENABLE(ATTACHMENT_ELEMENT) to the build system
https://bugs.webkit.org/show_bug.cgi?id=143664

Reviewed by Gyuyoung Kim.

.:

  • Source/cmake/OptionsEfl.cmake:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFeatures.cmake:
  • Source/cmakeconfig.h.cmake:

Source/WebCore:

  • page/efl/DragControllerEfl.cpp:

(WebCore::DragController::declareAndWriteAttachment): Added stub implementation to fix the build.

  • page/gtk/DragControllerGtk.cpp:

(WebCore::DragController::declareAndWriteAttachment): Added stub implementation to fix the build.

Tools:

  • Scripts/webkitperl/FeatureList.pm:
7:08 AM Changeset in webkit [182730] by Csaba Osztrogonác
  • 37 edits
    1 add in trunk/LayoutTests

[EFL] Update table/mozilla expected files after r182620
https://bugs.webkit.org/show_bug.cgi?id=143626

Unreviewed gardening.

  • platform/efl/TestExpectations:
  • platform/efl/tables/mozilla/bugs/bug106795-expected.png:
  • platform/efl/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug1224-expected.png:
  • platform/efl/tables/mozilla/bugs/bug1224-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug131020-expected.png:
  • platform/efl/tables/mozilla/bugs/bug131020-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug131020_iframe-expected.png:
  • platform/efl/tables/mozilla/bugs/bug131020_iframe-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug1430-expected.png:
  • platform/efl/tables/mozilla/bugs/bug1430-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug157890-expected.png:
  • platform/efl/tables/mozilla/bugs/bug157890-expected.txt: Added.
  • platform/efl/tables/mozilla/bugs/bug16252-expected.png:
  • platform/efl/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug19599-expected.png:
  • platform/efl/tables/mozilla/bugs/bug19599-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug20579-expected.png:
  • platform/efl/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug32205-3-expected.png:
  • platform/efl/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug82946-2-expected.png:
  • platform/efl/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/efl/tables/mozilla/bugs/bug92143-expected.png:
  • platform/efl/tables/mozilla/bugs/bug92143-expected.txt:
  • platform/efl/tables/mozilla/marvin/tables_cellpadding-expected.png:
  • platform/efl/tables/mozilla/marvin/tables_cellpadding-expected.txt:
  • platform/efl/tables/mozilla/marvin/tables_cellspacing-expected.png:
  • platform/efl/tables/mozilla/marvin/tables_cellspacing-expected.txt:
  • platform/efl/tables/mozilla/other/wa_table_thtd_rowspan-expected.png:
  • platform/efl/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/efl/tables/mozilla_expected_failures/bugs/bug1262-expected.png:
  • platform/efl/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
  • platform/efl/tables/mozilla_expected_failures/bugs/bug56024-expected.png:
  • platform/efl/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/efl/tables/mozilla_expected_failures/other/test4-expected.png:
  • platform/efl/tables/mozilla_expected_failures/other/test4-expected.txt:
7:05 AM Changeset in webkit [182729] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

[Curl] Small improvements to CurlCacheEntry::parseResponseHeaders()
https://bugs.webkit.org/show_bug.cgi?id=143597

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-13
Reviewed by Csaba Osztrogonác.

Most lines of code in CurlCacheEntry::parseResponseHeaders() don't need to be
executed if the response has "no-cache" or "no-store" directive, but we are
checking these conditions in the middle of the method. We can move this to the
beginning of the method for efficiency.

No new tests, no behavior change.

  • platform/network/curl/CurlCacheEntry.cpp:

(WebCore::CurlCacheEntry::parseResponseHeaders):

6:59 AM Changeset in webkit [182728] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] Unreviewed gardening, skip fast/attachment tests, there is
no reason to run these tests before enabling ATTACHMENT_ELEMENT.

  • platform/efl/TestExpectations:
6:38 AM Changeset in webkit [182727] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WTF

Merge r182676 - Fix -Wparentheses warning with GCC 5 in SaturatedArithmetic.h
https://bugs.webkit.org/show_bug.cgi?id=143457

Reviewed by Benjamin Poulain.

Tested by WTF.SaturatedArithmeticAddition and WTF.SaturatedArithmeticSubtraction.

  • wtf/SaturatedArithmetic.h:

(signedAddOverflows): Use && instead of & to avoid triggering -Wparentheses in newer
versions of GCC and Clang, and to improve the clarity of the function.
(signedSubtractOverflows): Changed correspondingly, although there was no warning here.

6:20 AM Changeset in webkit [182726] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, build fix after r182704.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForItems):

6:06 AM Changeset in webkit [182725] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r182672 - Selects don't scroll at some aspect ratios
https://bugs.webkit.org/show_bug.cgi?id=143649
rdar://problem/19365694

Reviewed by Darin Adler.
Source/WebCore:

Fix width/height flip in RenderListBox which caused us to fail to scroll when
the list was wider than the scroll height.

We're generally confused about RenderListBox scroll offsets (webkit.org/b/143648)
but this fixes the immediate problem.

Test: fast/forms/listbox-visible-size.html

  • rendering/RenderListBox.h:

LayoutTests:

  • fast/forms/listbox-visible-size-expected.txt: Added.
  • fast/forms/listbox-visible-size.html: Added.
6:04 AM Changeset in webkit [182724] by Carlos Garcia Campos
  • 3 edits
    1 delete in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182671 - Remove PluginModuleInfo.cpp from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=143643

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-12
Reviewed by Darin Adler.

Remove PluginModuleInfo.cpp from WebKit2 because it is totally empty.

No new tests, no behavior change.

  • CMakeLists.txt:
  • Shared/Plugins/PluginModuleInfo.cpp: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
5:58 AM Changeset in webkit [182723] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r182634 - [ARM] Fix calleeSaveRegisters() on non iOS platforms after r180516
https://bugs.webkit.org/show_bug.cgi?id=143368

Reviewed by Michael Saboff.

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::calleeSaveRegisters):

5:52 AM Changeset in webkit [182722] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r182609 - Text-combine erroneously draws vertically after non-layout-causing style change
https://bugs.webkit.org/show_bug.cgi?id=143461
<rdar://problem/19285490>

Reviewed by Darin Adler.

Source/WebCore:

RenderCombineText::styleDidChange() unconditionally uncombines its text. Layout then
recombines it. However, if there is a style change that does not cause layout, the
RenderCombineText will be left uncombined until the next layout.

Test: fast/text/text-combine-style-change-no-layout.html

  • rendering/RenderCombineText.cpp:

(WebCore::RenderCombineText::styleDidChange):

LayoutTests:

  • fast/text/text-combine-style-change-no-layout-expected.html: Added.
  • fast/text/text-combine-style-change-no-layout.html: Added.
5:51 AM Changeset in webkit [182721] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r182643 - REGRESSION (182567): regress/script-tests/sorting-benchmark.js fails on 32 bit dfg-eager tests
https://bugs.webkit.org/show_bug.cgi?id=143582

Reviewed by Mark Lam.

For 32 bit builds, we favor spilling unboxed values. The ASSERT at the root of this bug doesn't
fire for 64 bit builds, because we spill an "Other" value as a full JS value (DataFormatJS).
For 32 bit builds however, if we are able, we spill Other values as JSCell* (DataFormatCell).
The fix is to add a check in fillSpeculateInt32Internal() before the ASSERT that always OSR exits
if the spillFormat is DataFormatCell. Had we spilled in DataFormatJS and the value was a JSCell*,
we would still OSR exit after the speculation check.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode): Fixed an error in a comment while debugging.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):

5:47 AM Changeset in webkit [182720] by Carlos Garcia Campos
  • 3 edits
    4 adds in releases/WebKitGTK/webkit-2.8

Merge r182567 - JSArray::sortNumeric should handle ArrayWithUndecided
https://bugs.webkit.org/show_bug.cgi?id=143535

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

ArrayWithUndecided is what you get if you haven't stored anything into the array yet. We need to handle it.

  • runtime/JSArray.cpp:

(JSC::JSArray::sortNumeric):

  • tests/stress/sort-array-with-undecided.js: Added.

LayoutTests:

Upload the original test that first spotted this. Shortened it a bit so that it runs fast enough.

  • js/regress/script-tests/sorting-benchmark.js: Added.

(log):
(bottom_up_merge_sort):
(aMinusB):
(verify):
(benchmark):
(makeArrays):

  • js/regress/sorting-benchmark-expected.txt: Added.
  • js/regress/sorting-benchmark.html: Added.
5:43 AM Changeset in webkit [182719] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8

Merge r182562 - DFG::IntegerCheckCombiningPhase's wrap-around check shouldn't trigger C++ undef behavior on wrap-around
https://bugs.webkit.org/show_bug.cgi?id=143532

Reviewed by Gavin Barraclough.

Oh the irony! We were protecting an optimization that only worked if there was no wrap-around in JavaScript.
But the C++ code had wrap-around, which is undef in C++. So, if the compiler was smart enough, our compiler
would think that there never was wrap-around.

This fixes a failure in stress/tricky-array-boiunds-checks.js when JSC is compiled with bleeding-edge clang.

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::isValid):

5:39 AM Changeset in webkit [182718] by Carlos Garcia Campos
  • 4 edits
    4 adds in releases/WebKitGTK/webkit-2.8

Merge r182560 - [CSS Shapes] Properly handle negative reference box widths and center coordinates
https://bugs.webkit.org/show_bug.cgi?id=142610

Reviewed by Rob Buis.
Source/WebCore:

Fix a few cases where values that should not be negative end up that
way.

This patch is based on a couple of Blink patches by Rob Buis.

Tests: fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash.html

fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash.html

  • rendering/shapes/ShapeOutsideInfo.cpp:

(WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine): A

negative margin box width means that the shape has no extent, so
clamp to zero.

  • rendering/style/BasicShapes.cpp:

(WebCore::BasicShapeCircle::floatValueForRadiusInBox): When computing

the radii, take the absolute value, since the radii is based on
the distance, which is always positive.

(WebCore::BasicShapeEllipse::floatValueForRadiusInBox): Ditto.

LayoutTests:

Tests for the cases that trigger asserts.

  • fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash.html: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash.html: Added.
5:35 AM Changeset in webkit [182717] by Carlos Garcia Campos
  • 3 edits
    10 adds in releases/WebKitGTK/webkit-2.8

Merge r182546 - Fill list style background with same color with that of list background.
https://bugs.webkit.org/show_bug.cgi?id=143483

Reviewed by Simon Fraser.

Source/WebCore:

LayoutListMarker does not have a node so its selectionBackgroundColor alway returns
the default theme color for selection. We can make it more natural by filling
the same color with that of LayoutListItem into it.

Tests: fast/backgrounds/selection-background-color-of-image-list-style.html

fast/backgrounds/selection-background-color-of-list-style.html

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):

LayoutTests:

  • fast/backgrounds/selection-background-color-of-image-list-style.html: Added.
  • fast/backgrounds/selection-background-color-of-list-style.html: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
5:33 AM Changeset in webkit [182716] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.8

Merge r182537 - [GTK] Crash in DOMObjectCache when a wrapped object owned by the cache is unreffed by the user
https://bugs.webkit.org/show_bug.cgi?id=143521

Reviewed by Martin Robinson.

This is a case we claim to support, but it only works if the
object has only one reference. In that case, when the user unrefs
it, the weak ref notify callback removes the object from the
cache. However, if the object has more than one ref, the cache
doesn't know the user unreffed it, and when clearing the cache we
try to remove more references than what the object actually has,
causing a crash in g_object_unref.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::clearObject):

5:30 AM Changeset in webkit [182715] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182534 - [GStreamer] compress property for the HTTP source element
https://bugs.webkit.org/show_bug.cgi?id=143518

Reviewed by Carlos Garcia Campos.

Added a compress property so the default behavior or not
requesting content encoded to the server can be overridden if
needed. This is useful for adaptive streaming playback.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStart):

5:24 AM Changeset in webkit [182714] by Carlos Garcia Campos
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182523 - [GStreamer] extra-headers and keep-alive properties for HTTP source element
https://bugs.webkit.org/show_bug.cgi?id=143480

Reviewed by Carlos Garcia Campos.

Keep the resource loader around when persistent HTTP connection
support is enabled. The keep-alive property is set to false by
default. Also before sending the HTTP request we now check the
contents of the extra-headers GstStructure and set additional
headers based on the structure contents.

Patch inspired by GStreamer's souphttpsrc element.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_init):
(webKitWebSrcFinalize):
(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStop): Clear resource loader only for non-persistent connections.
(webKitWebSrcSetExtraHeader): Utility function to append headers
to an existing request based on a GValue contents.
(webKitWebSrcProcessExtraHeaders): Parse a GValue and set headers
based on its contents.
(webKitWebSrcStart): Extra headers and persistent connection
support. The resource loader is now lazily initialized here.

5:01 AM Changeset in webkit [182713] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8

Merge r182450 - [GTK] Fix HPPA build
https://bugs.webkit.org/show_bug.cgi?id=143453

Reviewed by Darin Adler.

Add HPPA to the list of supported CPUs.

  • CMakeLists.txt:
4:39 AM Changeset in webkit [182712] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182447 - Create the web inspector process pool lazily
https://bugs.webkit.org/show_bug.cgi?id=143456
rdar://problem/20146520

Reviewed by Mark Lam.

Add and implement WebInspectorProxy::isInspectorProcessPool instead of always creating the inspector process pool
when trying to determine if a given process pool is the inspector process pool.

This should speed up initialization somewhat and avoid creating a storage manager for example.

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::inspectorProcessPool):
(WebKit::WebInspectorProxy::isInspectorProcessPool):

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getLaunchOptions):

4:32 AM Changeset in webkit [182711] by Carlos Garcia Campos
  • 3 edits
    1 add in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r182444 - In the 64-bit DFG and FTL, Array::Double case for HasIndexedProperty should set its result to true when all is well.
<https://webkit.org/b/143396>

Reviewed by Filip Pizlo.

The DFG was neglecting to set the result boolean. The FTL was setting it with
an inverted value. Both of these are now resolved.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileHasIndexedProperty):

  • tests/stress/for-in-array-mode.js: Added.

(.):
(test):

4:24 AM Changeset in webkit [182710] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182388 - [WK2] API::Array::copy() should move the resulting Vector<> of copies into the Array::create() call
https://bugs.webkit.org/show_bug.cgi?id=143413

Reviewed by Darin Adler.

Move the Vector<> object containing the copied elements into the Array::create()
call, avoiding copying all the elements again.

While here, change the Vector<> parameters for Array::create() and the Array
constructor to rvalue references. This will ensure that the passed-in object
is moved into the Array::create() call if possible, or explicitly copied
otherwise. The constructor is moved into the header for inlining opportunities
and the unnecessary parameter in the create(Vector<>&&) method declaration
removed.

  • Shared/API/APIArray.cpp:

(API::Array::create):
(API::Array::copy):
(API::Array::Array): Deleted.

  • Shared/API/APIArray.h:
4:22 AM Changeset in webkit [182709] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182379 - FileList constructor should move the passed-in Vector<> rvalue reference into the member variable
https://bugs.webkit.org/show_bug.cgi?id=143412

Reviewed by Darin Adler.

  • fileapi/FileList.h:

(WebCore::FileList::FileList): An explicit move of the passed-in rvalue
reference into the member variable is required, otherwise a copy is
performed since an rvalue reference is just an lvalue.

4:20 AM Changeset in webkit [182708] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.8/Source

Merge r182378 - UserScript, UserStyleSheet constructors should take in Vector<String> rvalue references
https://bugs.webkit.org/show_bug.cgi?id=143411

Reviewed by Darin Adler.

Have the UserScript and UserStyleSheet constructors take in Vector<String>
rvalue references for the whitelist and blacklist parameters. Both classes
store these Vector<String> objects, so the referenced objects can simply be
moved into the member variable.

Because the constructor is now demanding an rvalue, it's up to the caller
to move in the desired object if possible, or create an explicit copy
otherwise.

  • page/UserScript.h:

(WebCore::UserScript::UserScript):

  • page/UserStyleSheet.h:

(WebCore::UserStyleSheet::UserStyleSheet):

Source/WebKit2:
UserScript, UserStyleSheet constructors should take in Vector<String> rvalues
https://bugs.webkit.org/show_bug.cgi?id=143411

Reviewed by Darin Adler.

Move the whitelist and blacklist Vector<String> objects into the
UserScript and UserStyleSheet constructors in ArgumentCoder<T>::decode
functions.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<UserStyleSheet>::decode):
(IPC::ArgumentCoder<UserScript>::decode):

4:18 AM Changeset in webkit [182707] by commit-queue@webkit.org
  • 8 edits in trunk/Source/WebCore

Use std::unique_ptr instead of PassOwnPtr|OwnPtr for ResourceResponse
https://bugs.webkit.org/show_bug.cgi?id=143056

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-13
Reviewed by Gyuyoung Kim.

No new tests, no behavior changes.

  • loader/WorkerThreadableLoader.cpp:

(WebCore::WorkerThreadableLoader::MainThreadBridge::MainThreadBridge):
(WebCore::WorkerThreadableLoader::MainThreadBridge::didReceiveResponse):

  • platform/CrossThreadCopier.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::adopt):
(WebCore::ResourceResponseBase::copyData):

  • platform/network/ResourceResponseBase.h:
  • platform/network/cf/ResourceResponse.h:

(WebCore::ResourceResponse::doPlatformCopyData):
(WebCore::ResourceResponse::doPlatformAdopt):

  • platform/network/curl/ResourceResponse.h:

(WebCore::ResourceResponse::doPlatformCopyData):
(WebCore::ResourceResponse::doPlatformAdopt):

  • platform/network/soup/ResourceResponse.h:

(WebCore::ResourceResponse::doPlatformCopyData):
(WebCore::ResourceResponse::doPlatformAdopt):

4:16 AM Changeset in webkit [182706] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182374 - FrameView code uses page() without null checking
https://bugs.webkit.org/show_bug.cgi?id=143425
rdar://problem/18920601

Reviewed by Anders Carlsson.

While we don't have tests that cover this, we are seeing crashes coming in
that indicate the shouldEnableSpeculativeTilingDuringLoading function is
being called when the page is null. This patch adds null checks to all the
places in FrameView that use page() without doing null checking.

  • page/FrameView.cpp:

(WebCore::FrameView::layout): If page is null, don't try to do the
auto-sizing logic that involves the textAutosizingWidth value from the page.
(WebCore::FrameView::setFixedVisibleContentRect): Get settings from the
frame rather than the page to avoid possible null-dereference.
(WebCore::FrameView::scrollPositionChanged): Check the page for null when
getting the event throttling delay.
(WebCore::FrameView::updateLayerFlushThrottling): Check the page for null,
and return early if it is null.
(WebCore::shouldEnableSpeculativeTilingDuringLoading): Check the page for
null, and return false if it is null.
(WebCore::FrameView::performPostLayoutTasks): Guard the code that calls
didLayout on the page client by a check if the page is null.
(WebCore::FrameView::pagination): Don't call Page::pagination on a null
page here.
(WebCore::FrameView::visibleContentScaleFactor): Use a scale factor of 1
if the page is null.
(WebCore::FrameView::setVisibleScrollerThumbRect): Don't call through to
the page client if the page is null.
(WebCore::FrameView::scrollbarStyleChanged): Ditto.
(WebCore::FrameView::setScrollPinningBehavior): Check the page for null
before asking it for the scrolling coordinator.

4:14 AM Changeset in webkit [182705] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r182370 - URI encoding/escaping should use efficient string building instead of calling snprintf().
<https://webkit.org/b/143426>

Reviewed by Gavin Barraclough.

I saw 0.5% of main thread time in snprintf() on <http://polymerlabs.github.io/benchmarks/>
which seemed pretty silly. This change gets that down to nothing in favor of using our
existing JSStringBuilder and HexNumber.h facilities.

These APIs are well-exercised by our existing test suite.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::encode):
(JSC::globalFuncEscape):

3:49 AM Changeset in webkit [182704] by svillar@igalia.com
  • 4 edits
    2 adds in trunk

[CSS Grid Layout] Support marking/unmarking tracks as infinitely growable
https://bugs.webkit.org/show_bug.cgi?id=141431

Reviewed by Darin Adler.

Source/WebCore:

As explained here
http://lists.w3.org/Archives/Public/www-style/2014Mar/0512.html we
sometimes need to consider that some tracks are infinitely
growable even when they are really not, in order to produce more
"natural" results.

For example the following case:

grid-template-columns: auto auto;
item 1 in column 1 with min-content = max-content = 10px;
item 2 in columns 1-2 with min-content = 30, max-content = 100px;

will produce (45px, 55px) without this patch. But considering the
second column as infinitely growable the result is (10px, 90px), a
more "natural" result because column 1 just needs to be 10px to
accommodate item 1. From now on we can flag GridTracks so that
they can infinitely grow even when the growth limit is finite.

Apart from that distributeSpaceToTracks() is now unconditionally
called even though the extra space is 0. That's because it
computes the plannedSize value.

Test: fast/css-grid-layout/mark-as-infinitely-growable.html

  • rendering/RenderGrid.cpp:

(WebCore::GridTrack::infiniteGrowthPotential):
(WebCore::GridTrack::infinitelyGrowable):
(WebCore::GridTrack::setInfinitelyGrowable):
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::trackSizeForTrackSizeComputationPhase): Updated with new phase.
(WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::updateTrackSizeForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::currentItemSizeForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::markAsInfinitelyGrowableForTrackSizeComputationPhase):
New helper method which does the mark/unmark just for growth limits.
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForItems):
(WebCore::sortByGridTrackGrowthPotential): Use
infiniteGrowthPotential() for sorting.
(WebCore::RenderGrid::distributeSpaceToTracks):

  • rendering/RenderGrid.h:

LayoutTests:

New test that to check that tracks whose growth limit changes from
infinite to finite when evaluating "intrinsic maximums" are marked
as infinitely growable for the "max-content maximums" step.

  • fast/css-grid-layout/mark-as-infinitely-growable-expected.txt: Added.
  • fast/css-grid-layout/mark-as-infinitely-growable.html: Added.
3:41 AM Changeset in webkit [182703] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182285 - Make checkURLReceivedFromWebProcess not rely on details of platform URL implementation.
https://bugs.webkit.org/show_bug.cgi?id=143222
rdar://problem/19978997

Reviewed by Sam Weinig.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::checkURLReceivedFromWebProcess):

3:34 AM Changeset in webkit [182702] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182235 - Lots of time spent querying table cell borders, when there are none.
https://bugs.webkit.org/show_bug.cgi?id=143277

Reviewed by Simon Fraser.

This patch speeds up collapsed border queries by using existing collapsed border
cache to calculate repaint rects and by introducing a fast path for zero width collapsed borders.

It reduces the number of calls to recompute collapsed borders from 36 000 to 1 600, while loading a page with a table of 400 rows (1 cell per row).
When scrolling the same page all the way down to the bottom, the number of calls to recompute collapsed borders falls from 290 000 to 0.

Covered by existing tests.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::styleDidChange): This moves invalidation time from RenderTable::layout() to styleDidChange().
(WebCore::RenderTable::invalidateCollapsedBorders):
(WebCore::RenderTable::recalcCollapsedBorders):

  • rendering/RenderTable.h:

(WebCore::RenderTable::collapsedBordersAreValid):
(WebCore::RenderTable::invalidateCollapsedBorders): Deleted.

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::RenderTableCell):
(WebCore::RenderTableCell::willBeRemovedFromTree): Invalidate caches so that when repaint rect is calculated, we don't end up using stale values.
(WebCore::RenderTableCell::styleDidChange): Same as willBeRemovedFromTree.
(WebCore::RenderTableCell::collapsedStartBorder): Check if collapsed border is zero -also query cache.
(WebCore::RenderTableCell::collapsedEndBorder):
(WebCore::RenderTableCell::collapsedBeforeBorder):
(WebCore::RenderTableCell::collapsedAfterBorder):
(WebCore::RenderTableCell::cachedCollapsedLeftBorder):
(WebCore::RenderTableCell::cachedCollapsedRightBorder):
(WebCore::RenderTableCell::cachedCollapsedTopBorder):
(WebCore::RenderTableCell::cachedCollapsedBottomBorder):
(WebCore::RenderTableCell::paintCollapsedBorders):
(WebCore::RenderTableCell::cellAtLeft): Deleted.
(WebCore::RenderTableCell::cellAtRight): Deleted.
(WebCore::RenderTableCell::cellAtTop): Deleted.
(WebCore::RenderTableCell::cellAtBottom): Deleted.

  • rendering/RenderTableCell.h:

(WebCore::RenderTableCell::invalidateHasEmptyCollapsedBorders):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::styleDidChange):

  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::styleDidChange):
(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::styleDidChange):
(WebCore::RenderTableSection::clearCachedCollapsedBorders): This is just an extra safety to invalidate collapsed border cache. This is always
called together with RenderTable::invalidateCollapsedBorders() -and that should prevent the RenderCells to use the cache.
(WebCore::RenderTableSection::removeCachedCollapsedBorders):
(WebCore::RenderTableSection::setCachedCollapsedBorder):
(WebCore::RenderTableSection::cachedCollapsedBorder):

  • rendering/RenderTableSection.h:
3:29 AM Changeset in webkit [182701] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r180241 - Minor RenderTable* class cleanups.
https://bugs.webkit.org/show_bug.cgi?id=141707

Reviewed by Andreas Kling.

Use in-class initializer where possible.
Remove redundant code.
Move multiline implementations out of class declaration.

No change in functionality.

  • rendering/RenderTableCaption.cpp:

(WebCore::RenderTableCaption::insertedIntoTree):
(WebCore::RenderTableCaption::willBeRemovedFromTree):
(WebCore::RenderTableCaption::containingBlockLogicalWidthForContent): Deleted.

  • rendering/RenderTableCaption.h:
  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::RenderTableCell):

  • rendering/RenderTableCell.h:

(WebCore::RenderTableCell::colSpan):
(WebCore::RenderTableCell::rowSpan):
(WebCore::RenderTableCell::setCol):
(WebCore::RenderTableCell::col):
(WebCore::RenderTableCell::section):
(WebCore::RenderTableCell::table):
(WebCore::RenderTableCell::rowIndex):
(WebCore::RenderTableCell::styleOrColLogicalWidth):
(WebCore::RenderTableCell::logicalHeightForRowSizing):
(WebCore::RenderTableCell::isBaselineAligned):
(WebCore::RenderTableCell::borderAdjoiningTableStart):
(WebCore::RenderTableCell::borderAdjoiningTableEnd):
(WebCore::RenderTableCell::borderAdjoiningCellBefore):
(WebCore::RenderTableCell::borderAdjoiningCellAfter):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::RenderTableCol):

  • rendering/RenderTableCol.h:

(WebCore::RenderTableCol::enclosingColumnGroupIfAdjacentBefore):
(WebCore::RenderTableCol::enclosingColumnGroupIfAdjacentAfter):

  • rendering/RenderTableRow.h:

(WebCore::RenderTableRow::setRowIndex):
(WebCore::RenderTableRow::rowIndex):
(WebCore::RenderTableRow::borderAdjoiningTableStart):
(WebCore::RenderTableRow::borderAdjoiningTableEnd):
(WebCore::RenderTableRow::table):
(WebCore::RenderTableSection::firstRow):
(WebCore::RenderTableSection::lastRow):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::RenderTableSection):
(WebCore::RenderTableSection::dirtiedRows):
(WebCore::RenderTableSection::dirtiedColumns):
(WebCore::RenderTableSection::paintObject):
(WebCore::RenderTableSection::nodeAtPoint):

  • rendering/RenderTableSection.h:

(WebCore::CellSpan::CellSpan):
(WebCore::RenderTableSection::borderAdjoiningTableStart):
(WebCore::RenderTableSection::borderAdjoiningTableEnd):
(WebCore::RenderTableSection::cellAt):
(WebCore::RenderTableSection::primaryCellAt):
(WebCore::RenderTableSection::rowRendererAt):
(WebCore::RenderTableSection::outerBorderLeft):
(WebCore::RenderTableSection::outerBorderRight):
(WebCore::RenderTableSection::outerBorderTop):
(WebCore::RenderTableSection::outerBorderBottom):
(WebCore::RenderTableSection::numRows):
(WebCore::RenderTableSection::recalcCellsIfNeeded):
(WebCore::RenderTableSection::rowBaseline):
(WebCore::RenderTableSection::fullTableRowSpan):
(WebCore::CellSpan::start): Deleted.
(WebCore::CellSpan::end): Deleted.

3:27 AM Changeset in webkit [182700] by Csaba Osztrogonác
  • 5 edits in trunk/LayoutTests

[EFL] Unreviewed gardening, update platform specifix expected files after r181889.

  • platform/efl/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
  • platform/efl/css3/selectors3/xml/css3-modsel-15c-expected.txt:
  • platform/efl/plugins/npruntime/object-from-destroyed-plugin-expected.txt:
  • platform/efl/plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt:
3:21 AM Changeset in webkit [182699] by Csaba Osztrogonác
  • 1 edit
    1 add in trunk/LayoutTests

[EFL] Rebaseline accessibility/aria-toggle-button-with-title.html
https://bugs.webkit.org/show_bug.cgi?id=143229

Unreviewed gardening after r182012.

  • platform/efl/accessibility/aria-toggle-button-with-title-expected.txt: Added.
3:20 AM Changeset in webkit [182698] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182232 - [CMake][GTK] Use the right variable to include the Wayland headers.
https://bugs.webkit.org/show_bug.cgi?id=143304

Reviewed by Carlos Garcia Campos.

No new tests, no behavior changes.

  • PlatformGTK.cmake: Use the right variable WAYLAND_INCLUDE_DIRS.
3:17 AM Changeset in webkit [182697] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] accessibility/plugin.html fails
https://bugs.webkit.org/show_bug.cgi?id=143663

Unreviewed gardening, mark accessibility/plugin.html as failing test.

  • platform/efl/TestExpectations:
3:13 AM Changeset in webkit [182696] by Carlos Garcia Campos
  • 8 edits
    7 adds in releases/WebKitGTK/webkit-2.8

Merge r182197 - border-image with 'fill' keyword does not fill the middle area unless the border width is greater than zero.
https://bugs.webkit.org/show_bug.cgi?id=142650.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-03-31
Reviewed by Simon Fraser.

Source/WebCore:

The decoration of a RenderBox, a RenderTable or an InlineFlowBox should be
drawn if its RenderStyle has a non-zero width border or the border-image
has the keyword fill.

Tests: fast/borders/border-image-fill-inline-no-border.html

fast/borders/border-image-fill-no-border.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintBoxDecorations):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintBoxDecorations):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasBoxDecorationStyle):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::paintBoxDecorations):

  • rendering/style/BorderData.h:

(WebCore::BorderData::hasFill):

  • rendering/style/RenderStyle.h:

LayoutTests:

Add tests to ensure the middle area of a RenderBox is going to be drawn
even if the border width is not greater than zero.

  • fast/borders/border-image-fill-inline-no-border-expected.html: Added.
  • fast/borders/border-image-fill-inline-no-border.html: Added.
  • fast/borders/border-image-fill-no-border-expected.html: Added.
  • fast/borders/border-image-fill-no-border.html: Added.
  • fast/borders/resources/button-border-cropped.svg: Added.
  • fast/borders/resources/button-border.svg: Added.
  • fast/borders/resources/svg-100x100-intrinsic.svg: Added.
3:04 AM Changeset in webkit [182695] by Carlos Garcia Campos
  • 3 edits
    4 adds in releases/WebKitGTK/webkit-2.8

Merge r182191 - REGRESSION (r173484): Reducing content of scrollable region does not reset scroll
position
https://bugs.webkit.org/show_bug.cgi?id=138525
-and corresponding-
rdar://problem/18166043

Reviewed by Simon Fraser.

Source/WebCore:

The change that caused this regression was correct. That change does not allow
RenderLayer to update scroll position after a layout if a rubber-band is currently
happening. The change caused this regression because all of the member variables
in ScrollController that attempt to keep track of the current state of the scroll
gesture (m_inScrollGesture, m_momentumScrollInProgress, and
m_snapRubberbandTimerIsActive) all indicated that a momentum scroll gesture was
still in action for this div even though it very much is not when the bug happens.
Those variables were never properly re-set because the
PlatformWheelEventPhaseEnded events never got dispatched to the ScrollController,
which brought the investigation back to Element.

We must still dispatch events that have zero delta so that the default event
handlers can handle them, but we should stopPropagation() so that these events are
not sent to the DOM. Websites will break if they get wheel events with no delta.

  • dom/Element.cpp:

(WebCore::Element::dispatchWheelEvent):

LayoutTests:

  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-reduced-content-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-reduced-content.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-zero-delta-wheel-events-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-zero-delta-wheel-events.html: Added.
3:00 AM Changeset in webkit [182694] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182176 - Unreviewed. Fix GTK+ build with REDIRECTED_XCOMPOSITE_WINDOW disabled in X11 platform.

Also fix some unused parameter warnings when
REDIRECTED_XCOMPOSITE_WINDOW is disabled.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewRenderAcceleratedCompositingResults):
(resizeWebKitWebViewBaseFromAllocation):

2:53 AM Changeset in webkit [182693] by Carlos Garcia Campos
  • 5 edits
    6 adds in releases/WebKitGTK/webkit-2.8

Merge r182130 - currentColor computes to the same colour on all elements, even if 'color' is inherited differently
https://bugs.webkit.org/show_bug.cgi?id=133420

Reviewed by Darin Adler.

Source/WebCore:

When resolving a style with the help of the property cache, we were
completely ignoring currentColor.

Since you can set currentColor on properties that are not inherited,
those properties would just be copied from the cached style, which
may have a completely different inherited color.

This pacth fixes the issue by preventing any MatchResult from hitting
the cache if it contains any non-inherited property that would require
resolution by the cache:
-Using the inherit value.
-Using the currentColor value.

Tests: fast/css/currentColor-on-before-after-pseudo-elements.html

fast/css/currentColor-style-update-reftest.html
fast/css/currentColor-value-style-update.html

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::addElementStyleProperties):
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchUserRules):
(WebCore::ElementRuleCollector::matchUARules):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::MatchResult::addMatchedProperties):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::findFromMatchedPropertiesCache):
(WebCore::StyleResolver::addToMatchedPropertiesCache):
(WebCore::extractDirectionAndWritingMode):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::CascadedProperties::addStyleProperties):
(WebCore::StyleResolver::CascadedProperties::addMatches):

  • css/StyleResolver.h:

(WebCore::StyleResolver::MatchResult::matchedProperties):

LayoutTests:

  • fast/css/currentColor-on-before-after-pseudo-elements-expected.html: Added.
  • fast/css/currentColor-on-before-after-pseudo-elements.html: Added.
  • fast/css/currentColor-style-update-reftest-expected.html: Added.
  • fast/css/currentColor-style-update-reftest.html: Added.
  • fast/css/currentColor-value-style-update-expected.txt: Added.
  • fast/css/currentColor-value-style-update.html: Added.
2:51 AM Changeset in webkit [182692] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r182125 - HTMLCollection caches incorrect length if item(0) is called before length on an empty collection
https://bugs.webkit.org/show_bug.cgi?id=143203
Source/WebCore:

rdar://problem/18460462

Reviewed by Antti Koivisto.

Test: fast/dom/htmlcollection-length-after-item-2.html

  • dom/CollectionIndexCache.h:

(CollectionIndexCache::nodeAt): If we hit the end looking for index 0, cache a length
of 0, not a length of 1.

LayoutTests:

Reviewed by Antti Koivisto.

  • fast/dom/htmlcollection-length-after-item-2-expected.txt: Added.
  • fast/dom/htmlcollection-length-after-item-2.html: Added.
2:46 AM Changeset in webkit [182691] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182116 - Optimize RenderLayer::intersectsDamageRect() slightly
https://bugs.webkit.org/show_bug.cgi?id=143186

Reviewed by Zalan Bujtas.

We can early return from RenderLayer::intersectsDamageRect() if the
damageRect is empty, since nothing will intersect with the empty rect.

Slight performance gain when scrolling overflow-scroll with lots of nested,
clipping layers.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

2:45 AM Changeset in webkit [182690] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r182098 - load8Signed() and load16Signed() should be renamed to avoid confusion
https://bugs.webkit.org/show_bug.cgi?id=143168

Reviewed by Benjamin Poulain.

Renamed load8Signed() to load8SignedExtendTo32() and load16Signed() to load16SignedExtendTo32().

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::load8SignedExtendTo32):
(JSC::MacroAssemblerARM::load16SignedExtendTo32):
(JSC::MacroAssemblerARM::load8Signed): Deleted.
(JSC::MacroAssemblerARM::load16Signed): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::load16Signed): Deleted.
(JSC::MacroAssemblerARM64::load8Signed): Deleted.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load16Signed): Deleted.
(JSC::MacroAssemblerARMv7::load8Signed): Deleted.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::load8SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load16SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load8Signed): Deleted.
(JSC::MacroAssemblerMIPS::load16Signed): Deleted.

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::load8SignedExtendTo32):
(JSC::MacroAssemblerSH4::load8):
(JSC::MacroAssemblerSH4::load16SignedExtendTo32):
(JSC::MacroAssemblerSH4::load16):
(JSC::MacroAssemblerSH4::load8Signed): Deleted.
(JSC::MacroAssemblerSH4::load16Signed): Deleted.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::load8SignedExtendTo32):
(JSC::MacroAssemblerX86Common::load16SignedExtendTo32):
(JSC::MacroAssemblerX86Common::load8Signed): Deleted.
(JSC::MacroAssemblerX86Common::load16Signed): Deleted.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitIntTypedArrayGetByVal):

2:09 AM Changeset in webkit [182689] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8

Merge r182091 - Fix flakey dfg-int8array.js and dfg-int16array.js tests for ARM64
https://bugs.webkit.org/show_bug.cgi?id=138390

Reviewed by Mark Lam.

Source/JavaScriptCore:

Changed load8Signed() and load16Signed() to only sign extend the loaded value to 32 bits
instead of 64 bits. This is what X86-64 does.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16Signed):
(JSC::MacroAssemblerARM64::load8Signed):

LayoutTests:

Reenabled the tests for ARM64/iOS. Left the tests disabled for ARM64/linux and will let linux
developers test and reenable under existing but https://bugs.webkit.org/show_bug.cgi?id=142629.

  • js/script-tests/dfg-int16array.js:
  • js/script-tests/dfg-int8array.js:
1:58 AM Changeset in webkit [182688] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182084 - WebProcessProxy should not retain WebBackForwardListItems forever.
<https://webkit.org/b/143152>
<rdar://problem/19925709>

Reviewed by Anders Carlsson.

Have WebProcessProxy actually forget about a WebBackForwardListItem after it's removed from
the WebBackForwardList.

This ensures that we don't accumulate too many of these objects, which can get quite large
due to the session state encoded in them.

We already have graceful handling of the case where an incoming IPC message references
a removed back/forward list item.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::didRemoveItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::backForwardRemovedItem):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::removeBackForwardItem):

  • UIProcess/WebProcessProxy.h:
1:46 AM Changeset in webkit [182687] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge 182069 - HTMLMediaElement will fire 'seeked' before seek completes, leading to currentTime discontinuities.
https://bugs.webkit.org/show_bug.cgi?id=143132

Reviewed by Eric Carlson.

When seeking, if the ready state rises to >= HAVE_CURRENT_DATA, we will fire the 'seeked'
event and continue playback. However, if a media engine updates the ready state before its
seek operation actually completes, the currentTime it returns may still be the time before
the seek.

Wait until both the ready state rises to HAVE_CURRENT_DATA and m_player->seeking() returns
false before firing the 'seeked' event.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::parseAttribute):

1:45 AM Changeset in webkit [182686] by Carlos Garcia Campos
  • 28 edits in releases/WebKitGTK/webkit-2.8/Source

Merge r182068 - Make some more objects use FastMalloc
https://bugs.webkit.org/show_bug.cgi?id=143122

Reviewed by Csaba Osztrogonác.

Source/JavaScriptCore:

  • API/JSCallbackObject.h:
  • heap/IncrementalSweeper.h:
  • jit/JITThunks.h:
  • runtime/JSGlobalObjectDebuggable.h:
  • runtime/RegExpCache.h:

Source/WebCore:

  • Modules/geolocation/GeolocationController.h:
  • Modules/geolocation/NavigatorGeolocation.h:
  • Modules/indexeddb/DOMWindowIndexedDatabase.h:
  • Modules/notifications/NotificationController.h:
  • Modules/webdatabase/DatabaseServer.h:
  • css/CSSFontFaceSource.h:
  • html/HTMLMediaSession.h:
  • inspector/InspectorIndexedDBAgent.h:
  • inspector/InspectorReplayAgent.h:
  • page/CaptionUserPreferencesMediaAF.h:
  • page/PageConsoleClient.h:
  • page/PageDebuggable.h:
  • page/animation/CSSPropertyAnimation.cpp:
  • page/mac/ServicesOverlayController.h:
  • platform/RemoteCommandListener.h:
  • platform/Timer.h:
  • platform/audio/MediaSessionManager.h:
  • platform/mac/SystemSleepListenerMac.h:
  • platform/mac/ThemeMac.h:
  • rendering/svg/RenderSVGResourceSolidColor.h:
  • replay/ReplayController.h:
1:15 AM Changeset in webkit [182685] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r182067 - FEMorphology::platformApplyGeneric() should bail out if the radius is less than or equal to zero.
https://bugs.webkit.org/show_bug.cgi?id=142885.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-03-27
Reviewed by Dean Jackson.

Source/WebCore:

FEMorphology class implementation code clean up.

Tests: svg/filters/feMorphology-radius-cases.svg

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::shouldSupersedeExtremum): Reuse code instead of repeating it and
use < and > instead of =< and >=.

(WebCore::pixelArrayIndex): Returns the array index of a pixel in an image
buffer, given: position(x, y), image width and the color channel.

(WebCore::columnExtremum): Returns the extremum of a column of pixels.

(WebCore::kernelExtremum): Returns the extremum of a filter kernel.

(WebCore::FEMorphology::platformApplyGeneric): Apply some code clean-up.
The kernel size should be equal to radius of the filter. The extra pixel
was causing the resulted image to be asymmetric in some cases.

(WebCore::FEMorphology::platformApplyDegenerate):
(WebCore::FEMorphology::platformApplySoftware): After applying scaling, we
still need to check the resulted radius is negative (overflow case) or less
than one (zero radius case) and treat these cases differently.

(WebCore::FEMorphology::morphologyOperator): Deleted.
(WebCore::FEMorphology::radiusX): Deleted.
(WebCore::FEMorphology::radiusY): Deleted.

  • platform/graphics/filters/FEMorphology.h:

(WebCore::FEMorphology::morphologyOperator):
(WebCore::FEMorphology::radiusX):
(WebCore::FEMorphology::radiusY):
Move a single line functions from the source file to the header file.

LayoutTests:

  • svg/filters/feMorphology-radius-cases-expected.svg: Added.
  • svg/filters/feMorphology-radius-cases.svg: Added.

Test different cases for radius of the feMorphology filter. There are three
cases for the radius:

  1. radius < 0: This is an error case, the source image should not be rendered.
  2. radius = 0: This case is treated as if the filter never exists.
  3. radius > 0: If the scaled radius is > 0, the filter is applied.
1:12 AM Changeset in webkit [182684] by Carlos Garcia Campos
  • 3 edits
    3 adds in releases/WebKitGTK/webkit-2.8

Merge r182058 - Objects with numeric properties intermittently get a phantom 'length' property
https://bugs.webkit.org/show_bug.cgi?id=142792

Reviewed by Csaba Osztrogonác.

Source/JavaScriptCore:

Fixed a > (greater than) that should be a >> (right shift) in the code that disassembles
test and branch instructions. This function is used for linking tbz/tbnz branches between
two seperately JIT'ed sections of code. Sometime we'd create a bogus tbz instruction in
the failure case checks in the GetById array length stub created for "obj.length" access.
If the failure case code address was at a negative offset from the stub, we'd look for bit 1
being set when we should have been looking for bit 0.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::disassembleTestAndBranchImmediate):

LayoutTests:

New regression test.

  • js/regress-142792-expected.txt: Added.
  • js/regress-142792.html: Added.
  • js/script-tests/regress-142792.js: Added.

(isArrayLike):
(filter):

1:02 AM Changeset in webkit [182683] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r182015 - Crash when laying out (char)0
https://bugs.webkit.org/show_bug.cgi?id=143103

Reviewed by Dean Jackson.

We currently cache a character -> Font mapping in a HashMap.
However, keys in Hashmaps can't be 0. This patch simply skips
the cache in this case.

No new tests, for now. I'm having trouble creating a test because
the site that causes this bug generates their page using script,
and the script is all minified, and difficult to understand. I
will contact the owner of the site and ask for and unminified
version of their sources. However, I don't want to that to block
this tiny fix from going in.

  • platform/graphics/Font.cpp:

(WebCore::Font::systemFallbackFontForCharacter):

12:59 AM Changeset in webkit [182682] by Carlos Garcia Campos
  • 9 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r182005 - Avoid the Vector<> copy in WebTouchEvent constructor
https://bugs.webkit.org/show_bug.cgi?id=143043

Reviewed by Carlos Garcia Campos.

Have the WebTouchEvent accept a Vector<> rvalue.
The relevant code is updated so the Vector<> object is moved
through the call chain and finally into the WebTouchEvent constructor.

  • Shared/NativeWebTouchEvent.h:
  • Shared/WebEvent.h:
  • Shared/WebTouchEvent.cpp:

(WebKit::WebTouchEvent::WebTouchEvent):

  • Shared/efl/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/gtk/NativeWebTouchEventGtk.cpp:

(WebKit::NativeWebTouchEvent::NativeWebTouchEvent):

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/gtk/WebEventFactory.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchEvent):

12:54 AM Changeset in webkit [182681] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181991 - [WK2] WebFrameLoaderClient::dispatchDecidePolicyForResponse() should always call the FramePolicyFunction
https://bugs.webkit.org/show_bug.cgi?id=143036
<rdar://problem/20252438>
<rdar://problem/13811738>

Reviewed by Alexey Proskuryakov.

WebFrameLoaderClient::dispatchDecidePolicyForResponse() should always
call the FramePolicyFunction. Previously, it would fail to do in 2
cases:

  • m_frame->page() returns null

or

  • webPage->sendSync() returns false

If the FramePolicyFunction is not called, we will fail to clear the
callback in the PolicyChecker and
DocumentLoader::continueAfterContentPolicy() will not be called.

DocumentLoader::continueAfterContentPolicy() is in charge of resetting
m_waitingForContentPolicy flag to false. This could therefore explain
the following assertion being hit in DocumentLoader::detachFromFrame()
(see <rdar://problem/20252438>):
RELEASE_ASSERT(!m_waitingForContentPolicy)

Also, as the PolicyChecker callback is not cleared, it could make it
possible for DocumentLoader::continueAfterContentPolicy() to be called
*after* the load is finished, when later canceling the PolicyCallback:
FrameLoader::stopAllLoaders()

-> PolicyChecker::stopCheck()

-> PolicyCallback::cancel()

-> DocumentLoader::continueAfterContentPolicy(PolicyIgnore)

Calling continueAfterContentPolicy(PolicyIgnore) after the load is
finished would be bad and could explain some of the crashes we've seen
in DocumentLoader::continueAfterContentPolicy() ->
DocumentLoader:: stopLoadingForPolicyChange() (see
<rdar://problem/13811738>).

This patch also applies the same fix to
dispatchDecidePolicyForNewWindowAction() and
dispatchDecidePolicyForNavigationAction() as they use the same pattern.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

12:46 AM Changeset in webkit [182680] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r181981 - REGRESSION(169139): LLINT intermittently fails JSC testapi tests.
<https://webkit.org/b/135719>

Reviewed by Geoffrey Garen.

This is a regression introduced in http://trac.webkit.org/changeset/169139 which
changed VM::watchdog from an embedded field into a std::unique_ptr, but did not
update the LLINT to access it as such.

The issue has only manifested so far on the CLoop tests because those are LLINT
only. In the non-CLoop cases, the JIT kicks in and does the right thing, thereby
hiding the bug in the LLINT.

  • API/JSContextRef.cpp:

(createWatchdogIfNeeded):
(JSContextGroupSetExecutionTimeLimit):
(JSContextGroupClearExecutionTimeLimit):

  • llint/LowLevelInterpreter.asm:
12:11 AM Changeset in webkit [182679] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.8

Merge r181925 - Scripts running in isolated world should not subject to a page's CSP about 'eval'.
https://bugs.webkit.org/show_bug.cgi?id=141316.

Patch by Zhuo Li <zachli@apple.com> on 2015-03-24
Reviewed by Geoffrey Garen.

Source/WebCore:

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initScript):
We should not impose the main world Content Security Policy onto the isolated world.

LayoutTests:

I added a new Content Security Policy directive, "script-src", so that we do not
allow 'unsafe-eval' in the main world.

Also I have to copy the whole function instead of using eval because
eval is subject to the main world Content Security Policy now.

  • http/tests/security/isolatedWorld/bypass-main-world-csp-expected.txt:
  • http/tests/security/isolatedWorld/bypass-main-world-csp.html:

Apr 12, 2015:

11:43 PM Changeset in webkit [182678] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebInspectorUI

Merge r181916 - Web Inspector: REGRESSION (r179286): ReferenceError: Can't find variable: selector
https://bugs.webkit.org/show_bug.cgi?id=143022

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-03-24
Reviewed by Timothy Hatcher.

Fix a regression where a missing variable statement causes a ReferenceError.

  • UserInterface/Models/DOMNodeStyles.js:
9:42 PM Changeset in webkit [182677] by benjamin@webkit.org
  • 4 edits
    12 adds in trunk

Legacy scroll behavior on HTMLBodyElement should only apply to the first body element of a document
https://bugs.webkit.org/show_bug.cgi?id=143651

Source/WebCore:

Reviewed by Sam Weinig.

WebKit has some very weird behaviors for the scroll methods on body. This patch
address the first bug: only the first body element should have the legacy behavior.

The relevant text in spec:
-http://dev.w3.org/csswg/cssom-view/#dom-element-scrollleft
-http://dev.w3.org/csswg/cssom-view/#dom-element-scrolltop
-http://dev.w3.org/csswg/cssom-view/#dom-element-scrollwidth
-http://dev.w3.org/csswg/cssom-view/#dom-element-scrollheight

Tests: fast/dom/Element/body-scrollHeight-basics-quirks.html

fast/dom/Element/body-scrollLeft-basics-quirks.html
fast/dom/Element/body-scrollTop-basics-quirks.html
fast/dom/Element/body-scrollWidth-basics-quirks.html
fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollLeft.html
fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollTop.html

  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::isFirstBodyElementOfDocument):
(WebCore::HTMLBodyElement::scrollLeft):
(WebCore::HTMLBodyElement::setScrollLeft):
(WebCore::HTMLBodyElement::scrollTop):
(WebCore::HTMLBodyElement::setScrollTop):
(WebCore::HTMLBodyElement::scrollHeight):
(WebCore::HTMLBodyElement::scrollWidth):

  • html/HTMLBodyElement.h:

LayoutTests:

Patch by Benjamin Poulain <benjamin@webkit.org> and Diego Perini <diego.perini@gmail.com> on 2015-04-12
Reviewed by Sam Weinig.

  • fast/dom/Element/body-scrollHeight-basics-quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollHeight-basics-quirks.html: Added.
  • fast/dom/Element/body-scrollLeft-basics-quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollLeft-basics-quirks.html: Added.
  • fast/dom/Element/body-scrollTop-basics-quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollTop-basics-quirks.html: Added.
  • fast/dom/Element/body-scrollWidth-basics-quirks-expected.txt: Added.
  • fast/dom/Element/body-scrollWidth-basics-quirks.html: Added.

Test the various behaviors.

  • fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollLeft-expected.txt: Added.
  • fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollLeft.html: Added.
  • fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollTop-expected.txt: Added.
  • fast/dom/Element/detached-body-element-does-not-scroll-main-frame-with-scrollTop.html: Added.

Those tests target specifically the bug.

6:29 PM Changeset in webkit [182676] by Michael Catanzaro
  • 2 edits in trunk/Source/WTF

Fix -Wparentheses warning with GCC 5 in SaturatedArithmetic.h
https://bugs.webkit.org/show_bug.cgi?id=143457

Reviewed by Benjamin Poulain.

Tested by WTF.SaturatedArithmeticAddition and WTF.SaturatedArithmeticSubtraction.

  • wtf/SaturatedArithmetic.h:

(signedAddOverflows): Use && instead of & to avoid triggering -Wparentheses in newer
versions of GCC and Clang, and to improve the clarity of the function.
(signedSubtractOverflows): Changed correspondingly, although there was no warning here.

5:54 PM Changeset in webkit [182675] by Gyuyoung Kim
  • 6 edits in trunk

[EFL] Enable Media Source
https://bugs.webkit.org/show_bug.cgi?id=143635

Reviewed by Csaba Osztrogonác.

.:

  • Source/cmake/OptionsEfl.cmake: Add ENABLE_MEDIA_SOURCE switch.

Tools:

  • Scripts/webkitperl/FeatureList.pm: Enable media source on efl port.

LayoutTests:

  • platform/efl/TestExpectations: Update failing tests.
3:33 PM Changeset in webkit [182674] by commit-queue@webkit.org
  • 9 edits
    8 moves in trunk

Fix trival typos related to the word "coordinate".
https://bugs.webkit.org/show_bug.cgi?id=143644

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-12
Reviewed by Alexey Proskuryakov.

No new tests, no behavior change.

Source/WebCore:

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::layoutOverflowRectForPropagation):

Source/WebKit2:

  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::encode):
(WebKit::WebHitTestResult::Data::decode):

  • Shared/WebHitTestResult.h:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):
(WebKit::WebPage::lookupTextAtLocation):

LayoutTests:

  • css3/scroll-snap/scroll-snap-property-computed-style-expected.txt:
  • css3/scroll-snap/scroll-snap-property-computed-style.js:
  • platform/gtk/svg/custom/svg-curve-with-relative-cordinates-expected.png: Removed.
  • platform/gtk/svg/custom/svg-curve-with-relative-cordinates-expected.txt: Removed.
  • platform/ios-sim-deprecated/svg/custom/svg-curve-with-relative-cordinates-expected.txt: Removed.
  • platform/ios-simulator/svg/custom/svg-curve-with-relative-cordinates-expected.txt: Removed.
  • platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.png: Removed.
  • platform/mac/svg/custom/svg-curve-with-relative-cordinates-expected.txt: Removed.
  • platform/win/svg/custom/svg-curve-with-relative-cordinates-expected.txt: Removed.
  • svg/custom/svg-curve-with-relative-cordinates.html: Removed.
1:28 PM Changeset in webkit [182673] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Scrollbars in composited overflow and iframes fail to render on Mac
https://bugs.webkit.org/show_bug.cgi?id=143647
rdar://problem/20340544

Reviewed by Darin Adler.

When adding support for drawing scrollbars on the scrolling thread, we inadvertently
disabled scrollbar drawing in other composited, main-thread scrolling configurations.

Fix by having Scrollbar::supportsUpdateOnSecondaryThread() only return true if
the scrollable area is using async scrolling.

Sadly, we can't layout-test this.

  • platform/Scrollbar.cpp:

(WebCore::Scrollbar::supportsUpdateOnSecondaryThread):

1:18 PM Changeset in webkit [182672] by Simon Fraser
  • 3 edits
    2 adds in trunk

Selects don't scroll at some aspect ratios
https://bugs.webkit.org/show_bug.cgi?id=143649
rdar://problem/19365694

Reviewed by Darin Adler.
Source/WebCore:

Fix width/height flip in RenderListBox which caused us to fail to scroll when
the list was wider than the scroll height.

We're generally confused about RenderListBox scroll offsets (webkit.org/b/143648)
but this fixes the immediate problem.

Test: fast/forms/listbox-visible-size.html

  • rendering/RenderListBox.h:

LayoutTests:

  • fast/forms/listbox-visible-size-expected.txt: Added.
  • fast/forms/listbox-visible-size.html: Added.
1:08 PM Changeset in webkit [182671] by commit-queue@webkit.org
  • 3 edits
    1 delete in trunk/Source/WebKit2

Remove PluginModuleInfo.cpp from WebKit2
https://bugs.webkit.org/show_bug.cgi?id=143643

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-12
Reviewed by Darin Adler.

Remove PluginModuleInfo.cpp from WebKit2 because it is totally empty.

No new tests, no behavior change.

  • CMakeLists.txt:
  • Shared/Plugins/PluginModuleInfo.cpp: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
1:04 PM Changeset in webkit [182670] by ap@apple.com
  • 2 edits in trunk/Tools

build.webkit.org/dashboard: Crash-only queues should show failure when failure limit is exceeded
https://bugs.webkit.org/show_bug.cgi?id=143646

Reviewed by David Kilzer.

  • BuildSlaveSupport/build.webkit.org-config/public_html/dashboard/Scripts/BuildbotTesterQueueView.js:

(BuildbotTesterQueueView.prototype.update.appendBuilderQueueStatus):

10:30 AM Changeset in webkit [182669] by Simon Fraser
  • 4 edits
    19 adds in trunk

Too much repainting on scrolling with fixed backgrounds
https://bugs.webkit.org/show_bug.cgi?id=143637
rdar://problem/20245243

Reviewed by Darin Adler.

Source/WebCore:

FrameView::scrollContentsSlowPath() would repaint the entire viewport if there were
any slow-repaint objects (those with background-attachment: fixed) and the contents
were using compositing for scrolling.

This is wrong; we only need to issue repaint for the slow-repaint renderers,
and, if the frame is hosted in a compositing layer and not using compositing for scrolling,
repaint that hosting layer.

Tests: compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint.html

compositing/repaint/iframes/compositing-iframe-scroll-repaint.html
compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint.html
platform/mac-wk2/tiled-drawing/fixed-background-scroll-repaint.html

  • page/FrameView.cpp:

(WebCore::FrameView::scrollContentsSlowPath):

LayoutTests:

Tests with various configurations of iframes and compositing, which dump layer trees with
repaint rectangles.

Also tiled-scrolling test that exercises the simple case.

Put WebKit1-specific results in platform/mac-wk1, since they are very different from
WK2 and other platforms, due to WK1-specific layer hosting and repaint behaviors.

  • compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt: Added.
  • compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint.html: Added.
  • compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt: Added.
  • compositing/repaint/iframes/compositing-iframe-scroll-repaint.html: Added.
  • compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt: Added.
  • compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint.html: Added.
  • compositing/repaint/iframes/resources/compositing-document.html: Added.
  • compositing/repaint/iframes/resources/compositing-fixed-background-document.html: Added.
  • compositing/repaint/iframes/resources/fixed-background-document.html: Added.
  • platform/mac-wk1/compositing/repaint/iframes/composited-iframe-with-fixed-background-doc-repaint-expected.txt: Added.
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-scroll-repaint-expected.txt: Added.
  • platform/mac-wk1/compositing/repaint/iframes/compositing-iframe-with-fixed-background-doc-repaint-expected.txt: Added.
  • platform/mac-wk2/compositing/repaint/fixed-background-scroll-expected.txt:
  • platform/mac-wk2/tiled-drawing/fixed-background-scroll-repaint-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/fixed-background-scroll-repaint.html: Added.
2:50 AM Changeset in webkit [182668] by Yusuke Suzuki
  • 10 edits
    1 add in trunk

[ES6] Implement Array.prototype.values
https://bugs.webkit.org/show_bug.cgi?id=143633

Reviewed by Darin Adler.

Source/JavaScriptCore:

Symbol.unscopables is implemented, so we can implement Array.prototype.values
without largely breaking the web. The following script passes.

var array = [];
var values = 42;
with (array) {

assert(values, 42);

}

  • runtime/ArrayPrototype.cpp:
  • tests/stress/array-iterators-next.js:
  • tests/stress/map-iterators-next.js:
  • tests/stress/set-iterators-next.js:
  • tests/stress/values-unscopables.js: Added.

(test):

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/array-iterators-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:
  • js/script-tests/array-iterators.js:

Apr 11, 2015:

10:12 PM Changeset in webkit [182667] by ap@apple.com
  • 5 edits in trunk/LayoutTests

editing/spelling/spelling-marker-description.html times out on Mac
https://bugs.webkit.org/show_bug.cgi?id=143639

Reviewed by Darin Adler.

  • editing/spelling/spelling-marker-description-expected.txt:
  • editing/spelling/spelling-marker-description.html:

Changed the test to match reality.

  • platform/mac-wk2/TestExpectations:
  • platform/mac/TestExpectations:

Removed expectations.

10:05 PM Changeset in webkit [182666] by ap@apple.com
  • 3 edits in trunk/Tools

Use en_US spell checker for tests on Mac instead of Multilingual
https://bugs.webkit.org/show_bug.cgi?id=143641

Reviewed by Dan Bernstein.

  • DumpRenderTree/mac/DumpRenderTree.mm: (setDefaultsToConsistentValuesForTesting):

While at it, override NSUserDictionaryReplacementItems, so that user replacements
cannot affect tests.

  • WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm: (WTR::InjectedBundle::platformInitialize):

Made this more like WebKit1 version.

7:23 PM Changeset in webkit [182665] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Hide Frames Timeline if the backend doesn't support it
https://bugs.webkit.org/show_bug.cgi?id=142800

Patch by Matt Baker <Matt Baker> on 2015-04-11
Reviewed by Timothy Hatcher.

Fallback to showing the layout timeline if the backend doesn't support the rendering frames timeline.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.shouldShowViewForTimeline):
(WebInspector.TimelineManager.prototype._loadNewRecording):
Added iOS 8 compatibility check for RenderingFrame timeline record type.

  • UserInterface/Views/LayoutTimelineDataGridNode.js:

(WebInspector.LayoutTimelineDataGridNode.prototype.get data):
Restored fields used by Layout timeline view.

  • UserInterface/Views/LayoutTimelineView.js:

Updated to be compatible with both RenderingFrame and Layout timeline views.

4:52 PM Changeset in webkit [182664] by Michael Catanzaro
  • 2 edits in trunk

[CMake] Miscellaneous issues in WebKitFeatures.cmake
https://bugs.webkit.org/show_bug.cgi?id=143636

Reviewed by Martin Robinson.

Rename _WEBKIT_AVAILABLE_OPTIONS_INITIALVALUE_ variables to
_WEBKIT_AVAILABLE_OPTIONS_INITIAL_VALUE_

Rename _WEBKIT_AVAILABLE_OPTIONS_ISPUBLIC_ variables to
_WEBKIT_AVAILABLE_OPTIONS_IS_PUBLIC_

Rename _SHOULD_PRINT_POINTS to _SHOULD_PRINT_DOTS

Update USE_SYSTEM_MALLOC description to not mention TCmalloc

Fix ENABLE_TOUCH_SLIDER so that it can be used

Add a comment

  • Source/cmake/WebKitFeatures.cmake:
2:28 PM Changeset in webkit [182663] by Michael Catanzaro
  • 3 edits in trunk

[CMake] Print sorted feature list at the very end of the configure process
https://bugs.webkit.org/show_bug.cgi?id=143596

Reviewed by Martin Robinson.

  • CMakeLists.txt: Call PRINT_WEBKIT_OPTIONS at the bottom of the file.
  • Source/cmake/WebKitFeatures.cmake: Split option printing into PRINT_WEBKIT_OPTIONS macro,

and sort the options before printing. Reorder some code so that features still get
propagated to the bindings generators.

1:55 PM Changeset in webkit [182662] by jonowells@apple.com
  • 6 edits
    3 adds in trunk/Source/WebInspectorUI

Web Inspector: Debugger sidebar should show errors underneath scripts
https://bugs.webkit.org/show_bug.cgi?id=143464

Reviewed by Timothy Hatcher.

Add a new tree element called IssueTreeElement. This shows warnings and errors in the debugger sidebar. These
can be clicked to jump to the line of source code for which the error was thrown. BreakpointTreeElement and
IssueTreeElement now inherit from DebuggerTreeElement to support any needed commonalities among the interfaces
of elements in the debugger sidebar panel.

  • Localizations/en.lproj/localizedStrings.js: Updated.
  • UserInterface/Main.html: Add new files.
  • UserInterface/Models/IssueMessage.js:

(WebInspector.IssueMessage):
(WebInspector.IssueMessage.prototype.get source):
(WebInspector.IssueMessage.prototype.get lineNumber):
(WebInspector.IssueMessage.prototype.get columnNumber):
(WebInspector.IssueMessage.prototype.get displayLineNumber):
(WebInspector.IssueMessage.prototype.get displayColumnNumber):
(WebInspector.IssueMessage.prototype.get sourceCodeLocation):
(WebInspector.IssueMessage.prototype.saveIdentityToCookie):
(WebInspector.IssueMessage.prototype._sourceCodeLocationDisplayLocationChanged):
Convert to use a backing SourceCodeLocation. Expand API.

  • UserInterface/Views/BreakpointTreeElement.js: Inherits now from DebuggerTreeElement.
  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.showResourcesWithBreakpointsOnlyFilterFunction):
(WebInspector.DebuggerSidebarPanel.showResourcesWithIssuesOnlyFilterFunction):
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointRemoved):
(WebInspector.DebuggerSidebarPanel.prototype._handleDebuggerObjectDisplayLocationDidChange):
(WebInspector.DebuggerSidebarPanel.prototype._removeDebuggerTreeElement):
(WebInspector.DebuggerSidebarPanel.prototype._treeElementSelected):
(WebInspector.DebuggerSidebarPanel.prototype._compareDebuggerTreeElements):
(WebInspector.DebuggerSidebarPanel.prototype._addDebuggerObject):
(WebInspector.DebuggerSidebarPanel.prototype._addIssue):
(WebInspector.DebuggerSidebarPanel.prototype._handleIssueAdded):
(WebInspector.DebuggerSidebarPanel.prototype._handleIssuesCleared):
(WebInspector.DebuggerSidebarPanel.prototype._breakpointDisplayLocationDidChange): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._removeBreakpointTreeElement): Deleted.
(WebInspector.DebuggerSidebarPanel.prototype._compareBreakpointTreeElements): Deleted.
Add IssueTreeElements to the sidebar whenever a warning or error corresponding to a line of code is found.
Add a filter function and button to filter down to just these. Ensure issue and breakpoint elements can be
properly compared.

  • UserInterface/Views/DebuggerTreeElement.js: Added.

(WebInspector.DebuggerTreeElement):
(WebInspector.DebuggerTreeElement.prototype.get debuggerObject):

  • UserInterface/Views/IssueTreeElement.css: Added.

(.issue .icon):
(.issue.error .icon):
(.navigation-sidebar-panel-content-tree-outline .item.small.issue .icon):

  • UserInterface/Views/IssueTreeElement.js: Added.

(WebInspector.IssueTreeElement):
(WebInspector.IssueTreeElement.prototype.get issueMessage):
(WebInspector.IssueTreeElement.prototype._updateTitles):

12:43 PM Changeset in webkit [182661] by Yusuke Suzuki
  • 2 edits in trunk/Source/JavaScriptCore

Run flaky conservative GC related test first before polluting stack and registers
https://bugs.webkit.org/show_bug.cgi?id=143634

Reviewed by Ryosuke Niwa.

After r182653, JSC API tests fail. However, it's not related to the change.
After investigating the cause of this failure, I've found that the failed test is flaky
because JSC's GC is conservative. If previously allocated JSGlobalObject is accidentally alive
due to conservative roots in C stack and registers, this test fails.

Since GC marks C stack and registers as roots conservatively,
objects not referenced logically can be accidentally marked and alive.
To avoid this situation as possible as we can,

  1. run this test first before stack is polluted,
  2. extract this test as a function to suppress stack height.
  • API/tests/testapi.mm:

(testWeakValue):
(testObjectiveCAPIMain):
(testObjectiveCAPI):

12:36 PM Changeset in webkit [182660] by commit-queue@webkit.org
  • 27 edits
    4 copies
    3 moves
    5 adds in trunk/Source

Web Inspector: create content view and details sidebar for Frames timeline
https://bugs.webkit.org/show_bug.cgi?id=143533

Patch by Matt Baker <Matt Baker> on 2015-04-11
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Refactoring: RunLoop prefix changed to RenderingFrame.

  • inspector/protocol/Timeline.json:

Source/WebCore:

Refactoring: RunLoop prefix changed to RenderingFrame.

  • inspector/InspectorTimelineAgent.cpp:

(WebCore::InspectorTimelineAgent::internalStart):
(WebCore::toProtocol):

  • inspector/InspectorTimelineAgent.h:

Source/WebInspectorUI:

Added new Rendering Frames timeline content view and details sidebar, and added minor visual tweeks to the
timeline graph such as ensuring 60 FPS budget line is always visible, and large combined frames are split
up once they reach a maximum pixel width.

  • Localizations/en.lproj/localizedStrings.js:

New UI strings.

  • UserInterface/Base/Main.js:

(WebInspector.contentLoaded):
Support for new details sidebar panel.

  • UserInterface/Controllers/TimelineManager.js:

(WebInspector.TimelineManager.shouldShowViewForTimeline):
(WebInspector.TimelineManager.prototype._processRecord):
(WebInspector.TimelineManager.prototype._loadNewRecording):
Layout timeline is no longer added to timeline graphs, skip Rendering Frame records that have no child events.

  • UserInterface/Images/NavigationItemDoughnutChart.svg: Added.
  • UserInterface/Images/TimelineRecordRenderingFrame.svg: Added.

New artwork.

  • UserInterface/Main.html:
  • UserInterface/Test.html:

New files.

  • UserInterface/Models/RenderingFrameTimelineRecord.js: Renamed from Source/WebInspectorUI/UserInterface/Models/RunLoopTimelineRecord.js.

(WebInspector.RenderingFrameTimelineRecord):
(WebInspector.RenderingFrameTimelineRecord.resetFrameNumber):
(WebInspector.RenderingFrameTimelineRecord.prototype.get frameNumber):
(WebInspector.RenderingFrameTimelineRecord.prototype.get children):
(WebInspector.RenderingFrameTimelineRecord.prototype.get durationRemainder):
(WebInspector.RenderingFrameTimelineRecord.prototype.durationForRecords.get var):
Added frame numbering and improved the accuracy of sub-frame duratation calculation.
Refactoring: RunLoop prefix changed to RenderingFrame.

  • UserInterface/Models/Timeline.js:

(WebInspector.Timeline):
(WebInspector.Timeline.create):
(WebInspector.Timeline.prototype.get recording):
(WebInspector.Timeline.prototype.get displayName):
(WebInspector.Timeline.prototype.get iconClassName):
Added up-pointer to parent recording.

  • UserInterface/Models/TimelineRecord.js:

Refactoring: RunLoop prefix changed to RenderingFrame.

  • UserInterface/Models/TimelineRecording.js:

(WebInspector.TimelineRecording.prototype.reset):
Support for new timeline type.

  • UserInterface/Views/ChartDetailsSectionLegendRow.js: Added.

(WebInspector.ChartDetailsSectionLegendRow):
New details section row type for chart legend items.

  • UserInterface/Views/ChartDetailsSectionRow.css: Added.

(.details-section .row.chart):
(.details-section .row.chart canvas):
(.details-section .row.chart.empty canvas):
(.details-section > .content > .group > .row.legend-item > .label > .color-swatch):

  • UserInterface/Views/ChartDetailsSectionRow.js: Added.

(WebInspector.ChartDetailsSectionRow):
(WebInspector.ChartDetailsSectionRow.prototype.get legendGroup):
(WebInspector.ChartDetailsSectionRow.prototype.set innerLabel):
(WebInspector.ChartDetailsSectionRow.prototype.addChartValue):
(WebInspector.ChartDetailsSectionRow.prototype.clearChart):
(WebInspector.ChartDetailsSectionRow.prototype._refresh.drawSlice):
(WebInspector.ChartDetailsSectionRow.prototype._refresh):
New details section row type for pie/doughnut charts.

  • UserInterface/Views/ContentView.js:

(WebInspector.ContentView):
Support for new timeline view type.

  • UserInterface/Views/LayoutTimelineDataGridNode.js:

(WebInspector.LayoutTimelineDataGridNode.prototype.get data):
(WebInspector.LayoutTimelineDataGridNode.prototype.createCellContent):
Updated for use in rendering frame timeline view.

  • UserInterface/Views/LayoutTimelineView.js:

(WebInspector.LayoutTimelineView.prototype._layoutTimelineRecordAdded):
Removed references to old RunLoop objects.

  • UserInterface/Views/RenderingFrameDetailsSidebarPanel.js: Added.

(WebInspector.RenderingFrameDetailsSidebarPanel.formatChartValue):
(WebInspector.RenderingFrameDetailsSidebarPanel):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.inspect):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.updateRangeSelection):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.get renderingFrameTimeline):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.set renderingFrameTimeline):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.refresh.durationForRecordType):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype.refresh):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype._resetAll):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype._recordAdded):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype._timelineReset):
(WebInspector.RenderingFrameDetailsSidebarPanel.prototype._getSelectedRecords):
New sidebar panel for showing time breakdown for current frame selection.

  • UserInterface/Views/RenderingFrameTimelineDataGridNode.js: Added.

(WebInspector.RenderingFrameTimelineDataGridNode):
(WebInspector.RenderingFrameTimelineDataGridNode.prototype.get record):
(WebInspector.RenderingFrameTimelineDataGridNode.prototype.get records):
(WebInspector.RenderingFrameTimelineDataGridNode.prototype.get data):
(WebInspector.RenderingFrameTimelineDataGridNode.prototype.createCellContent):
New data grid row type.

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.css.

(.timeline-overview-graph.rendering-frame > .divider):
(.timeline-overview-graph.rendering-frame > .divider > .label):

  • UserInterface/Views/RenderingFrameTimelineOverviewGraph.js: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.js.

(WebInspector.RenderingFrameTimelineOverviewGraph):
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype.get graphHeightSeconds):
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype.updateLayout.createFrame):
(WebInspector.RenderingFrameTimelineOverviewGraph.prototype._updateDividers.createDividerAtPosition.get if):

  • UserInterface/Views/RenderingFrameTimelineView.css: Renamed from Source/WebInspectorUI/UserInterface/Views/RunLoopTimelineOverviewGraph.css.

(.timeline-view.rendering-frame > .data-grid):
(.sidebar > .panel.navigation.timeline.timeline-recording-content-view-showing .navigation-sidebar-panel-content-tree-outline.rendering-frame .item .subtitle):
Visual tweeks.
Refactoring: RunLoop prefix changed to RenderingFrame.

  • UserInterface/Views/RenderingFrameTimelineView.js: Added.

(WebInspector.RenderingFrameTimelineView):
(WebInspector.RenderingFrameTimelineView.prototype.get navigationSidebarTreeOutlineLabel):
(WebInspector.RenderingFrameTimelineView.prototype.shown):
(WebInspector.RenderingFrameTimelineView.prototype.hidden):
(WebInspector.RenderingFrameTimelineView.prototype.updateLayout):
(WebInspector.RenderingFrameTimelineView.prototype.get selectionPathComponents):
(WebInspector.RenderingFrameTimelineView.prototype.filterDidChange):
(WebInspector.RenderingFrameTimelineView.prototype.matchTreeElementAgainstCustomFilters):
(WebInspector.RenderingFrameTimelineView.prototype.reset):
(WebInspector.RenderingFrameTimelineView.prototype.treeElementPathComponentSelected):
(WebInspector.RenderingFrameTimelineView.prototype.dataGridNodeForTreeElement):
(WebInspector.RenderingFrameTimelineView.prototype._processPendingRecords):
(WebInspector.RenderingFrameTimelineView.prototype._renderingFrameTimelineRecordAdded):
(WebInspector.RenderingFrameTimelineView.prototype._dataGridNodeSelected):
New content view type.

  • UserInterface/Views/TimelineIcons.css:

(.rendering-frame-icon .icon):
(.rendering-frame-icon.large .icon):
(.rendering-frame-record .icon):
(.runloop-record .icon):
(.runloop-icon .icon): Deleted.
(.runloop-icon.large .icon): Deleted.
Refactoring: runloop prefix changed to rendering-frame.

  • UserInterface/Views/TimelineOverview.js:

(WebInspector.TimelineOverview.prototype._timelineRemoved):
Support for timelines without associated views.

  • UserInterface/Views/TimelineOverviewGraph.js:

(WebInspector.TimelineOverviewGraph):
Refactoring: RunLoop prefix changed to RenderingFrame.

  • UserInterface/Views/TimelineRecordFrame.css:

(.timeline-record-frame):
(.timeline-record-frame > .frame):

  • UserInterface/Views/TimelineRecordFrame.js:

(WebInspector.TimelineRecordFrame.createCombinedFrames):
Visual tweeks, splitting up large combined frames.

  • UserInterface/Views/TimelineRecordTreeElement.js:

(WebInspector.TimelineRecordTreeElement):
Refactoring: runloop prefix changed to rendering-frame.

  • UserInterface/Views/TimelineRecordingContentView.js:

(WebInspector.TimelineRecordingContentView.prototype._timelineRemoved):
(WebInspector.TimelineRecordingContentView.prototype._timelineCountChanged):
(WebInspector.TimelineRecordingContentView.prototype._timeRangeSelectionChanged):
Added support for new details sidebar and timelines without associated views.

  • UserInterface/Views/TimelineSidebarPanel.js:

(WebInspector.TimelineSidebarPanel._timelineAdded.set this):
Support for timelines without associated views.
Refactoring: runloop prefix changed to rendering-frame.

  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:

New files.

11:25 AM Changeset in webkit [182659] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Stop referring to outdated RFC2616 in CacheValidation.cpp
https://bugs.webkit.org/show_bug.cgi?id=143619

Reviewed by Darin Adler.

Stop referring to outdated RFC2616 in CacheValidation.cpp and refer to
the newer RFC7230 & RFC7234. Also update some variables to match the
naming in the RFC for clarity.

No behavior change.

  • platform/network/CacheValidation.cpp:

(WebCore::updateResponseHeadersAfterRevalidation):
(WebCore::computeCurrentAge):
(WebCore::computeFreshnessLifetimeForHTTPFamily):
(WebCore::isCacheHeaderSeparator):
(WebCore::parseCacheControlDirectives):

11:13 AM Changeset in webkit [182658] by Michael Catanzaro
  • 2 edits in trunk

[CMake] Options should be marked as advanced by default
https://bugs.webkit.org/show_bug.cgi?id=143572

Reviewed by Gyuyoung Kim.

Options defined with WEBKIT_OPTION_DEFINE are now advanced so that they are hidden from
users by default, unless WEBKIT_OPTION_DEFAULT_PORT_VALUE is used. Add new macros
WEBKIT_OPTION_DEFINE_PUBLIC to define an option that's not hidden by default, to be used
for adding port-specific options, and WEBKIT_OPTION_PRIVATE_PORT_VALUE to override an
option without making it public.

  • Source/cmake/WebKitFeatures.cmake:
10:05 AM Changeset in webkit [182657] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Unskip media test on EFL port

Unreviewed, media tests are being passed except for 25 tests.
The failing tests need to be investigated by Bug 131044.

  • platform/efl/TestExpectations:
9:03 AM Changeset in webkit [182656] by rniwa@webkit.org
  • 2 edits
    2 adds in trunk

WebKit places caret in front of pasted Numbers cells instead of behind
https://bugs.webkit.org/show_bug.cgi?id=143627

Reviewed by Darin Adler.

The bug was caused by Position::downstream not respecting modern position types inside a table.
Fixed it by using Position::atStartOfNode which respects before/after positions.

This bug doesn't reproduce when there is no whitespace after td element in the pasted content
because positionAtEndOfInsertedContent() will be inside the last pasted cell inside
ReplaceSelectionCommand::completeHTMLReplacement in those cases. This related but separate bug
is tracked in https://webkit.org/b/143628.

Tests: editing/pasteboard/paste-table-with-unrendered-text-nodes.html

  • dom/Position.cpp:

(WebCore::Position::downstream):

7:40 AM Changeset in webkit [182655] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Use semi-transparent map item dividers
https://bugs.webkit.org/show_bug.cgi?id=143630

Reviewed by Timothy Hatcher.

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.css:

(.object-tree-map-entry.key:not(:first-child)):
(.object-tree-map-entry.key): Deleted.
(.object-tree-map-entry.key:first-of-type): Deleted.
Use one selector instead of two.

7:37 AM Changeset in webkit [182654] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Objects are vertically misaligned by 1px
https://bugs.webkit.org/show_bug.cgi?id=143629

Reviewed by Timothy Hatcher.

  • UserInterface/Views/FormattedValue.css:

(.formatted-object, .formatted-node, .formatted-error, .formatted-map, .formatted-set, .formatted-weakmap):

3:02 AM Changeset in webkit [182653] by Yusuke Suzuki
  • 18 edits in trunk/Source

[ES6] Enable Symbol in web pages
https://bugs.webkit.org/show_bug.cgi?id=143375

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Expose Symbol to web pages.
Symbol was exposed, but it was hidden since it breaks Facebook comments.
This is because at that time Symbol is implemented,
but methods for Symbol.iterator and Object.getOwnPropertySymbols are not implemented yet
and it breaks React.js and immutable.js.

Now methods for Symbol.iterator and Object.getOwnPropertySymbols are implemented
and make sure that Facebook comment input functionality is not broken with exposed Symbol.

So this patch replaces runtime flags SymbolEnabled to SymbolDisabled
and makes enabling symbols by default.

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/RuntimeFlags.h:

Source/WebCore:

  • inspector/InspectorFrontendClientLocal.cpp:

(WebCore::InspectorFrontendClientLocal::InspectorFrontendClientLocal):

Source/WebKit/mac:

  • WebView/WebPreferencesPrivate.h:

Source/WebKit/win:

  • Interfaces/IWebPreferencesPrivate.idl:

Source/WebKit2:

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • UIProcess/efl/WebInspectorProxyEfl.cpp:

(WebKit::WebInspectorProxy::platformCreateInspectorPage):

  • UIProcess/gtk/WebInspectorProxyGtk.cpp:

(WebKit::WebInspectorProxy::platformCreateInspectorPage):

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformCreateInspectorPage):

Apr 10, 2015:

11:23 PM Changeset in webkit [182652] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Hide volume controls when playing wirelessly.
https://bugs.webkit.org/show_bug.cgi?id=143621.
<rdar://problem/20490673>

Reviewed by Darin Adler.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.updateWirelessPlaybackStatus):

10:07 PM Changeset in webkit [182651] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Unreviewed build fix. Updated config.json after recent changes.

  • config.json:
10:07 PM Changeset in webkit [182650] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • WebCore.xcodeproj/project.pbxproj: Make LaunchServicesSPI.h a private header

instead of project, as it's used in WebKit.

8:52 PM Changeset in webkit [182649] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Unreviewed, EFL gardening on 11th April.

Mark 18 table/mozilla tests to failure. The tests have been failed since r182620.

  • platform/efl/TestExpectations:
6:45 PM Changeset in webkit [182648] by weinig@apple.com
  • 10 edits
    1 add in trunk/Source

Allow LaunchServices to handle URLs on link navigations
<rdar://problem/19446826>
https://bugs.webkit.org/show_bug.cgi?id=143544

Reviewed by Anders Carlsson.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:
  • platform/spi/ios/LaunchServicesSPI.h: Added.

Add new SPI header.

Source/WebKit/mac:

  • Configurations/WebKitLegacy.xcconfig:

Link MobileCoreServices.

  • WebCoreSupport/WebFrameLoaderClient.h:
  • WebCoreSupport/WebFrameLoaderClient.mm:

(shouldTryAppLink):
(WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):
(WebFrameLoaderClient::setUpPolicyListener):
Only let LaunchServices have a crack at the URL if the navigation is:

1) a main frame navigation
2) a result of a user gesture

Source/WebKit2:

  • UIProcess/Cocoa/NavigationState.mm:

(WebKit::tryAppLink):
(WebKit::NavigationState::NavigationClient::decidePolicyForNavigationAction):
Only let LaunchServices have a crack at the URL if the navigation is:

1) a main frame navigation
2) a result of a user gesture

Source/WTF:

  • wtf/Platform.h:

Add HAVE macro for this functionality.

6:00 PM Changeset in webkit [182647] by Yusuke Suzuki
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

ES6: Iterator toString names should be consistent
https://bugs.webkit.org/show_bug.cgi?id=142424

Reviewed by Geoffrey Garen.

Iterator Object Names in the spec right now have spaces.
In our implementation some do and some don't.
This patch aligns JSC to the spec.

  • runtime/JSArrayIterator.cpp:
  • runtime/JSStringIterator.cpp:
  • tests/stress/iterator-names.js: Added.

(test):
(iter):
(check):

5:50 PM Changeset in webkit [182646] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Fix Console Message Toggle

Unreviewed. Correct a post-review comment fix that went too far.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype.set expandable):
The handler needed to be bound to the object.

5:46 PM Changeset in webkit [182645] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Fix Console Filter Search, Uncaught Exception

Rubber-stamped by Timothy Hatcher.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype._performSearch):
This regressed with recent refactoring. Fix up the property and class names.

5:40 PM Changeset in webkit [182644] by Joseph Pecoraro
  • 13 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Improve Console Message Formatting
https://bugs.webkit.org/show_bug.cgi?id=143623

Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Main.html:

Misc.

  • UserInterface/Views/ConsoleMessageView.css: Added.

(.console-message.expandable .console-top-level-message::before):
(.console-message.expandable.expanded .console-top-level-message::before):
(.console-message.expandable.expanded :matches(.console-message-preview, .console-message-preview-divider)):
(.console-message-preview-divider):
(.console-message-enclosed):
(.console-message .console-message-stack-trace-container):
(.console-message.expandable.expanded .console-message-stack-trace-container):
(.console-message .console-message-stack-trace-container > li):
(.console-message .console-message-extra-parameters-container > li::before):
New styles for the new ConsoleMessageView children.
Handle console message expansion, a list of extra parameters
and a potential list of stack frames.

(.console-message, .console-user-command):
(.console-message .repeat-count):
(.console-message-text):
(.console-message-text > span):
(.console-error-level):
(.console-error-level .console-message-text):
(.console-debug-level .console-message-text):
(.console-warning-level):
(.console-warning-level .console-message-text):
(.console-user-command .console-message):
(.console-error-level::before):
(.console-warning-level::before):
(.console-user-command::before):
(.console-debug-level::before):
(:matches(.console-warning-level, .console-error-level, .console-log-level).console-message):
(:matches(.console-warning-level, .console-error-level, .console-log-level)::before):
(.console-user-command > .console-message-text):
(.console-message-url):
(.console-saved-variable):
(.console-user-command-result):
(.console-user-command-result.console-log-level::before):
Moved from LogContentView.css to here where it is more appropriate
since ConsoleMessageView added them.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView):
(WebInspector.ConsoleMessageView.prototype.get expandable):
(WebInspector.ConsoleMessageView.set expandable.this._boundExpandClickHandler):
(WebInspector.ConsoleMessageView.prototype.set expandable):
(WebInspector.ConsoleMessageView.prototype.expand):
(WebInspector.ConsoleMessageView.prototype.collapse):
(WebInspector.ConsoleMessageView.prototype.toggle):
Provide high level constructs for making a ConsoleMessageView
expandable, and APIs to expand/collapse.

(WebInspector.ConsoleMessageView.prototype._appendExtraParameters):
Add and style the new list of extra parameters.

(WebInspector.ConsoleMessageView.prototype._appendStackTrace):
Add and style the new list stack frames.

(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
(WebInspector.ConsoleMessageView.prototype._shouldConsiderObjectLossless):
Handling the top level message text line for all the different cases.

  • UserInterface/Views/DOMTreeElement.js:

(WebInspector.DOMTreeElement.prototype._startEditingTarget):
(WebInspector.DOMTreeElement.prototype._populateTagContextMenu):

  • UserInterface/Views/DOMTreeOutline.css:

(.dom-tree-outline .add-attribute): Deleted.
CSS class .add-attribute was not used. Remove all references.

(.webkit-html-fragment.shadow):
Moved from LogContentView.css to a more appropriate place.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createObjectPreviewOrFormattedValueForRemoteObject):
Helper to create a preview or a formatted value for a given object.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView):
(WebInspector.LogContentView.prototype._updateMessagesSelection):
(WebInspector.LogContentView.prototype._leftArrowWasPressed):
(WebInspector.LogContentView.prototype._rightArrowWasPressed):
(WebInspector.LogContentView.prototype._rightArrowWasPressed.else.outlineTitle.treeElement.onexpand): Deleted.
(WebInspector.LogContentView.prototype._propertiesSectionDidUpdateContent): Deleted.
Lots of this code no longer makes sense. Delete some and put FIXMEs
where it makes sense to re-add back useful features.

  • UserInterface/Views/ObjectPreviewView.css:

(.object-preview > .size):

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.object-tree-array-index .index-value .object-tree): Deleted.

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree):
Tweak styles. Opacity instead of a specific gray to better work
with other colors. Always make objects be inline-block.

  • UserInterface/Views/LogContentView.css:

(.console-error-level + .console-item):
(.console-warning-level + .console-item):
(.console-item::before):
(.console-user-command-result): Deleted.
(.console-user-command-result.console-log-level::before): Deleted.
(.console-message, .console-user-command): Deleted.
(.console-message .repeat-count): Deleted.
(.console-message-text): Deleted.
(.console-message-text > span): Deleted.
(.console-error-level): Deleted.
(.console-error-level .section .header .title): Deleted.
(.console-debug-level .console-message-text): Deleted.
(.console-debug-level::before): Deleted.
(.console-error-level::before): Deleted.
(.console-warning-level): Deleted.
(.console-warning-level .console-message-text): Deleted.
(.console-warning-level::before): Deleted.
(.console-user-command .console-message): Deleted.
(.console-user-command::before): Deleted.
(:matches(.console-warning-level, .console-error-level, .console-log-level).console-message): Deleted.
(:matches(.console-warning-level, .console-error-level, .console-log-level)::before): Deleted.
(.console-user-command > .console-message-text): Deleted.
(.console-saved-variable): Deleted.
(.console-message-url): Deleted.
(.console-group-messages .section): Deleted.
(.console-group-messages .section .header): Deleted.
(.console-group-messages .section .header::before): Deleted.
(.console-group-messages .section .header .title): Deleted.
(.console-group-messages .section .properties li .info): Deleted.
(.console-group-messages .outline-disclosure): Deleted.
(.console-group-messages .outline-disclosure > ol): Deleted.
(.console-group-messages .outline-disclosure li .selection): Deleted.
(.console-group-messages .add-attribute): Deleted.
(.error-message): Deleted.
(.auto-complete-text, .editing .auto-complete-text): Deleted.
(.outline-disclosure li.hovered:not(.selected) .selection): Deleted.
(.outline-disclosure li.highlighted .highlight): Deleted.
(.outline-disclosure li.selected.highlighted .highlight): Deleted.
(.outline-disclosure li .selection): Deleted.
(.outline-disclosure li.selected .selection): Deleted.
(.outline-disclosure li.elements-drag-over .selection): Deleted.
(.outline-disclosure ol:focus li.selected .selection): Deleted.
(.outline-disclosure ol.search-match-not-found li.selected .selection): Deleted.
(.outline-disclosure > ol): Deleted.
(.outline-disclosure, .outline-disclosure ol): Deleted.
(.outline-disclosure li): Deleted.
(.outline-disclosure .expanded li): Deleted.
(.outline-disclosure > li.parent): Deleted.
(.outline-disclosure li .webkit-html-tag.close): Deleted.
(.outline-disclosure > li.parent::before): Deleted.
(.outline-disclosure li.parent.expanded::before): Deleted.
(.outline-disclosure ol.children): Deleted.
(.outline-disclosure ol.children.expanded): Deleted.
(.webkit-html-fragment.shadow): Deleted.
Delete now unused styles and move other styles to more appropriate places.

5:00 PM Changeset in webkit [182643] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

REGRESSION (182567): regress/script-tests/sorting-benchmark.js fails on 32 bit dfg-eager tests
https://bugs.webkit.org/show_bug.cgi?id=143582

Reviewed by Mark Lam.

For 32 bit builds, we favor spilling unboxed values. The ASSERT at the root of this bug doesn't
fire for 64 bit builds, because we spill an "Other" value as a full JS value (DataFormatJS).
For 32 bit builds however, if we are able, we spill Other values as JSCell* (DataFormatCell).
The fix is to add a check in fillSpeculateInt32Internal() before the ASSERT that always OSR exits
if the spillFormat is DataFormatCell. Had we spilled in DataFormatJS and the value was a JSCell*,
we would still OSR exit after the speculation check.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode): Fixed an error in a comment while debugging.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::fillSpeculateInt32Internal):

3:09 PM Changeset in webkit [182642] by Bem Jones-Bey
  • 2 edits in trunk/Source/WebCore

Unreviewed, added CSS Shapes to features.json file.

  • features.json:
2:04 PM Changeset in webkit [182641] by rniwa@webkit.org
  • 6 edits in trunk/Websites/perf.webkit.org

Make the analysis page more useful
https://bugs.webkit.org/show_bug.cgi?id=143617

Reviewed by Chris Dumez.

  • public/api/analysis-tasks.php:

(fetch_and_push_bugs_to_tasks): Added total and finished numbers of build requests associated
with the fetched analysis tasks as buildRequestCount and finishedBuildRequestCount respectively.

  • public/v2/analysis.js:

(App.AnalysisTask.formattedCreatedAt): Added.
(App.AnalysisTask._addLeadingZero): Added.
(App.AnalysisTask.buildRequestCount): Added.
(App.AnalysisTask.finishedBuildRequestCount): Added.
(App.AnalysisTask.statusLabel): Added. Status total and finished numbers of build requests.
(App.AnalysisTask.testGroups):
(App.AnalysisTask.triggerable):
(App.AnalysisTask.label):

  • public/v2/app.css: Tweaked style rules for the analysis page.
  • public/v2/app.js:

(App.buildPopup): Sort the list of platforms by name.
(App.AnalysisRoute.model): Sort the list of analysis tasks by the order they are created.
(App.AnalysisTaskController._fetchedManifest): Added elementId to associate bug tracker names
such as "Bugzilla" with the corresponding text field.

  • public/v2/index.html: Added a bunch of columns to the analysis page and also wrapped the table

showing A/B testing results in a div with overflow: scroll so that it always leaves enough space
for the accompanying graph.

1:22 PM Changeset in webkit [182640] by timothy_horton@apple.com
  • 8 edits
    2 adds in trunk

Replace setFixedLayoutSizeEnabled: with an enum of layout modes
https://bugs.webkit.org/show_bug.cgi?id=143576

Reviewed by Simon Fraser.

  • UIProcess/API/C/WKLayoutMode.h: Added.
  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _layoutMode]):
(-[WKWebView _setLayoutMode:]):
(-[WKWebView _isFixedLayoutEnabled]): Deleted.
(-[WKWebView _setFixedLayoutEnabled:]): Deleted.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKLayoutMode.h: Added.
  • UIProcess/API/mac/WKView.mm:

(-[WKView _layoutMode]):
(-[WKView _setLayoutMode:]):
(-[WKView _isFixedLayoutEnabled]): Deleted.
(-[WKView _setFixedLayoutEnabled:]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:

Add enums for "layout mode". Currently we have two values: "ViewSize",
which is the normal behavior, and "FixedSize", which is fixed layout mode.
More values will come in the future.

  • TestWebKitAPI/Tests/WebKit2Cocoa/FixedLayoutSize.mm:

(TEST):
Adopt.

12:39 PM Changeset in webkit [182639] by andersca@apple.com
  • 6 edits in trunk/Source/WebKit2

_WKWebsiteDataStore doesn't track and remove offline application cache entries
https://bugs.webkit.org/show_bug.cgi?id=143614
rdar://problem/20243235

Reviewed by Andreas Kling.

  • Shared/WebsiteData/WebsiteDataTypes.h:

Add WebsiteDataTypeOfflineWebApplicationCache.

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:
  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.mm:

(dataTypesToString):

  • UIProcess/API/Cocoa/_WKWebsiteDataRecordInternal.h:

(WebKit::toWebsiteDataTypes):
(WebKit::toWKWebsiteDataTypes):
Add WKWebsiteDataTypeOfflineWebApplicationCache.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::fetchData):
Create a custom application cache storage and fetch the origins from it.

(WebKit::WebsiteDataStore::removeData):
Delete either all the cache entries (since we don't track time in the application cache),
or the ones specified by the given entries.

12:09 PM Changeset in webkit [182638] by ap@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Build fix.

  • Misc/WebNSURLExtras.mm: (-[NSString _webkit_unescapedQueryValue]): Ignore a deprecation.
12:00 PM Changeset in webkit [182637] by aestes@apple.com
  • 25 edits
    2 copies
    4 adds in trunk

[Content Filtering] Support modifying request URLs
https://bugs.webkit.org/show_bug.cgi?id=143599
rdar://problem/20442560

Reviewed by Darin Adler.

Source/WebCore:

Tests: contentfiltering/modify-request-url.html

http/tests/contentfiltering/modify-redirect-request-url.html

Allow NEFilterSource to modifiy request URLs. Also teach MockContentFilter to do the same for testing.

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::willSendRequest): If NEFilterSource provided a string representing a
valid URL in decisionInfo[NEFilterSourceOptionsRedirectURL], then used that as the request URL.

  • platform/spi/cocoa/NEFilterSourceSPI.h: Temporarily defined NEFilterSourceOptionsRedirectURL.
  • testing/MockContentFilter.cpp:

(WebCore::MockContentFilter::willSendRequest): If settings() has a valid modifiedRequestURL, use it as the
request URL. Only do so once MockContentFilter has reached its decision point so that both initial requests and
redirect requests can be tested.

  • testing/MockContentFilterSettings.h: Added modifiedRequestURL.

(WebCore::MockContentFilterSettings::modifiedRequestURL): Ditto.
(WebCore::MockContentFilterSettings::setModifiedRequestURL): Ditto.

  • testing/MockContentFilterSettings.idl: Ditto.

LayoutTests:

  • contentfiltering/allow-after-add-data-expected.html: Changed to use pass.html.
  • contentfiltering/allow-after-finished-adding-data-expected.html: Ditto.
  • contentfiltering/allow-after-response-expected.html: Ditto.
  • contentfiltering/allow-after-will-send-request-expected.html: Ditto.
  • contentfiltering/block-after-add-data-expected.html: Ditto.
  • contentfiltering/block-after-add-data-then-allow-unblock-expected.html: Ditto.
  • contentfiltering/block-after-add-data-then-deny-unblock-expected.html: Ditto.
  • contentfiltering/block-after-finished-adding-data-expected.html: Ditto.
  • contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.html: Ditto.
  • contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.html: Ditto.
  • contentfiltering/block-after-response-expected.html: Ditto.
  • contentfiltering/block-after-response-then-allow-unblock-expected.html: Ditto.
  • contentfiltering/block-after-response-then-deny-unblock-expected.html: Ditto.
  • contentfiltering/block-after-will-send-request-expected.html: Ditto.
  • contentfiltering/block-after-will-send-request-then-allow-unblock-expected.html: Ditto.
  • contentfiltering/block-after-will-send-request-then-deny-unblock-expected.html: Ditto.
  • contentfiltering/modify-request-url-expected.html: Added.
  • contentfiltering/modify-request-url.html: Added.
  • contentfiltering/resources/fail.html: Added.
  • contentfiltering/resources/pass.html: Added.
  • http/tests/contentfiltering/allow-after-redirect-expected.html: Removed the body tag.
  • http/tests/contentfiltering/block-after-redirect-expected.html: Ditto.
  • http/tests/contentfiltering/modify-redirect-request-url-expected.html: Added.
  • http/tests/contentfiltering/modify-redirect-request-url.html: Added.
11:55 AM Changeset in webkit [182636] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Disable Linux-specific code in a Windows build
https://bugs.webkit.org/show_bug.cgi?id=137973

Patch by Milan Crha <mcrha@redhat.com> on 2015-04-10
Reviewed by Joseph Pecoraro.

  • inspector/JSGlobalObjectInspectorController.cpp:

(Inspector::JSGlobalObjectInspectorController::appendAPIBacktrace):

11:14 AM Changeset in webkit [182635] by ChangSeok Oh
  • 2 edits
    4 adds in trunk/LayoutTests

[Win] Layout Test fast/backgrounds/selection-background-color-of-list-style.html is failing
https://bugs.webkit.org/show_bug.cgi?id=143543

Reviewed by Brent Fulgham.

Added missing test results after r182546 for windows.

  • platform/win/TestExpectations:
  • platform/win/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/win/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/win/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/win/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
11:11 AM Changeset in webkit [182634] by Csaba Osztrogonác
  • 2 edits in trunk/Source/JavaScriptCore

[ARM] Fix calleeSaveRegisters() on non iOS platforms after r180516
https://bugs.webkit.org/show_bug.cgi?id=143368

Reviewed by Michael Saboff.

  • jit/RegisterSet.cpp:

(JSC::RegisterSet::calleeSaveRegisters):

11:07 AM Changeset in webkit [182633] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

showRenderTree: Include the render object to the inlinebox output.
https://bugs.webkit.org/show_bug.cgi?id=143610

This helps to match the inlinebox and its renderer.

Reviewed by Antti Koivisto.

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::showLineBox):

11:07 AM Changeset in webkit [182632] by peavo@outlook.com
  • 2 edits in trunk/Source/WebKit/win

[Win] Implement some methods in DOMHTMLDocument interface.
https://bugs.webkit.org/show_bug.cgi?id=143602

Reviewed by Alex Christensen.

  • DOMHTMLClasses.cpp:

(DOMHTMLDocument::open):
(DOMHTMLDocument::close):
(DOMHTMLDocument::write):
(DOMHTMLDocument::writeln):

10:22 AM Changeset in webkit [182631] by roger_fong@apple.com
  • 3 edits in trunk/Source/WebCore

Update wireless player placard for OSX.
https://bugs.webkit.org/show_bug.cgi?id=143585.
<rdar://problem/12067439>

Reviewed by Eric Carlson.

  • Modules/mediacontrols/mediaControlsApple.css:

Adjust button positioning and svg.
(audio::-webkit-media-controls-wireless-playback-picker-button):
(audio::-webkit-media-controls-wireless-playback-picker-button.playing):
Style the wireless playback status placard, small and big versions.
(audio::-webkit-media-controls-wireless-playback-status):
(audio::-webkit-media-controls-wireless-playback-text):
(audio::-webkit-media-controls-wireless-playback-text-top):
(audio::-webkit-media-controls-wireless-playback-text-bottom):
(audio::-webkit-media-controls-wireless-playback-status.small):
(audio::-webkit-media-controls-wireless-playback-text-top.small):
(audio::-webkit-media-controls-wireless-playback-text-bottom.small):

  • Modules/mediacontrols/mediaControlsApple.js:

Add new wireless player placard elements.
(Controller.prototype.createControls):
(Controller.prototype.configureInlineControls):
Make sure to switch between small and big placards when switching between fullscreen and small videos.
(Controller.prototype.configureFullScreenControls):
(Controller.prototype.handleFullscreenChange):
(Controller.prototype.updateWirelessPlaybackStatus):

7:31 AM Changeset in webkit [182630] by eric.carlson@apple.com
  • 37 edits
    2 adds in trunk/Source

[Mac] Refactor MediaPlaybackTarget
https://bugs.webkit.org/show_bug.cgi?id=143571

Reviewed by Jer Noble.

Source/WebCore/:

  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::addPlaybackTargetPickerClient): Don't call client if page playback target

is NULL.

(WebCore::Document::didChoosePlaybackTarget): MediaPlaybackTarget is passed as a Ref<>

  • dom/Document.h:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::setWirelessPlaybackTarget): MediaPlaybackTarget is passed as a Ref<>

  • html/HTMLMediaElement.h:
  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::HTMLMediaSession): Don't initialize m_playbackTarget.
(WebCore::HTMLMediaSession::didChoosePlaybackTarget): MediaPlaybackTarget is passed as a Ref<>

  • html/HTMLMediaSession.h:
  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::playbackTarget): m_playbackTarget is a RefPtr<MediaPlaybackTarget>
(WebCore::Page::didChoosePlaybackTarget): Ditto.

  • page/Page.h:
  • platform/audio/MediaSession.h:

(WebCore::MediaSessionClient::setWirelessPlaybackTarget): Take a Ref<MediaPlaybackTarget>&&.

Make MediaPlaybackTarget RefCounted, and don't require it to be serializable so it can be
subclassed to keep port-specific iformation out of the base class.

  • platform/graphics/MediaPlaybackTarget.h:

(WebCore::MediaPlaybackTarget::targetType):
(WebCore::MediaPlaybackTarget::targetContext):
(WebCore::MediaPlaybackTarget::hasActiveRoute):
(WebCore::MediaPlaybackTarget::MediaPlaybackTarget):
(WebCore::MediaPlaybackTarget::setDevicePickerContext): Deleted.
(WebCore::MediaPlaybackTarget::devicePickerContext): Deleted.

MediaPlaybackTargetContext is the struct that is serialized to pass across the process boudary.
It has union to hold port-specific data.

  • platform/graphics/MediaPlaybackTargetContext.h: Added.
  • platform/graphics/MediaPlaybackTargetPicker.h: didChoosePlaybackTarget takes a Ref<MediaPlaybackTarget>&&
  • platform/graphics/MediaPlaybackTargetPickerClient.h: Ditto.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::setWirelessPlaybackTarget): Ditto.

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::setWirelessPlaybackTarget):

  • platform/graphics/avfoundation/MediaPlaybackTargetMac.h: Added.

(WebCore::MediaPlaybackTargetMac::targetType):
(WebCore::MediaPlaybackTargetMac::outputContext):

  • platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:

(WebCore::MediaPlaybackTargetMac::create):
(WebCore::MediaPlaybackTargetMac::MediaPlaybackTargetMac):
(WebCore::MediaPlaybackTargetMac::~MediaPlaybackTargetMac):
(WebCore::MediaPlaybackTargetMac::targetContext):
(WebCore::MediaPlaybackTargetMac::hasActiveRoute):
(WebCore::toMediaPlaybackTargetMac):
(WebCore::MediaPlaybackTarget::encode): Deleted.
(WebCore::MediaPlaybackTarget::decode): Deleted.
(WebCore::MediaPlaybackTarget::hasActiveRoute): Deleted.

  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:

(WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange): Allocate and pass a MediaPlaybackTargetMac

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget): Take a Ref<MediaPlaybackTarget&&

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget): Ditto.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.h:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::setWirelessPlaybackTarget): Ditto.

Source/WebKit2:

Pass a MediaPlaybackTargetContext across process boundary instead of a MediaPlaybackTarget.

  • Shared/WebCoreArgumentCoders.h:

(IPC::ArgumentCoder<MediaPlaybackTargetContext>::encode): New.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::decode): New.

  • Shared/mac/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<MediaPlaybackTargetContext>::encodePlatformData): New.
(IPC::ArgumentCoder<MediaPlaybackTargetContext>::decodePlatformData): New.
(IPC::ArgumentCoder<MediaPlaybackTarget>::encode): Deleted.
(IPC::ArgumentCoder<MediaPlaybackTarget>::decode): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChoosePlaybackTarget): Take a Ref<MediaPlaybackTarget>&&.

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::playbackTargetSelected): Take a Ref<MediaPlaybackTarget>&&.

Source/WebKit/mac/:

  • WebView/WebMediaPlaybackTargetPicker.h:
  • WebView/WebMediaPlaybackTargetPicker.mm:

(WebMediaPlaybackTargetPicker::didChoosePlaybackTarget): Take a Ref<MediaPlaybackTarget>&&.

4:20 AM Changeset in webkit [182629] by calvaris@igalia.com
  • 6 edits in trunk/LayoutTests

Add total test test of Streams API
https://bugs.webkit.org/show_bug.cgi?id=142682

Unreviewed.

Increased the callbacks timeouts to make tests pass in slower bots
like Yosemite Debug.

  • streams/reference-implementation/resources/streams-utils.js:

Created a standardTimeout variable with 100 as default.

  • streams/reference-implementation/readable-stream-cancel.html:
  • streams/reference-implementation/readable-stream-reader.html:
  • streams/reference-implementation/readable-stream-templated.html:
  • streams/reference-implementation/readable-stream.html: Used

standardTimeout for the test timeout callbacks.

3:51 AM Changeset in webkit [182628] by svillar@igalia.com
  • 3 edits in trunk/Source/WebCore

[CSS Grid Layout] Fix raw function pointer usages
https://bugs.webkit.org/show_bug.cgi?id=143481

Reviewed by Antti Koivisto.

The argument list of
resolveContentBasedTrackSizingFunctionsForItems() became too long
and rather incomprehensible as it included up to 6 function
pointers. This replaces all of them by an enum which describes the
phase of the algorithm that is currently running. With that phase
we have enough information to select the right function to call.

In order not to tangle up too much the method, the new explicit
switch statements where moved to static helper functions.

No new tests as this is just a code refactoring.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions):
(WebCore::RenderGrid::trackSizeForTrackSizeComputationPhase): New helper function.
(WebCore::RenderGrid::shouldProcessTrackForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::trackShouldGrowBeyondGrowthLimitsForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::updateTrackSizeForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::currentItemSizeForTrackSizeComputationPhase): Ditto.
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForItems):
(WebCore::RenderGrid::distributeSpaceToTracks):

  • rendering/RenderGrid.h:
3:48 AM Changeset in webkit [182627] by adam.bergkvist@ericsson.com
  • 7 edits
    6 deletes in trunk/Source/WebCore

WebRTC: Remove AudioStreamTrack and VideoStreamTrack (removed in spec)
https://bugs.webkit.org/show_bug.cgi?id=143336

Reviewed by Philippe Normand.

The specific MediaStreamTrakc types (AudioStreamTrack and VideoStreamTrack) have been
removed from the Media Capture and Streams [1] specification.

[1] http://w3c.github.io/mediacapture-main/archives/20150324/getusermedia.html

There are no test for this feature to remove.

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/AudioStreamTrack.cpp: Removed.
  • Modules/mediastream/AudioStreamTrack.h: Removed.
  • Modules/mediastream/AudioStreamTrack.idl: Removed.
  • Modules/mediastream/MediaStream.cpp:

(WebCore::MediaStream::MediaStream):
(WebCore::MediaStream::addRemoteTrack):
(WebCore::MediaStream::active): Deleted.

  • Modules/mediastream/MediaStreamTrack.cpp:

(WebCore::MediaStreamTrack::create):
(WebCore::MediaStreamTrack::MediaStreamTrack):
(WebCore::MediaStreamTrack::kind):
(WebCore::MediaStreamTrack::clone):
(WebCore::MediaStreamTrack::trackEnded): Deleted.

  • Modules/mediastream/MediaStreamTrack.h:
  • Modules/mediastream/VideoStreamTrack.cpp: Removed.
  • Modules/mediastream/VideoStreamTrack.h: Removed.
  • Modules/mediastream/VideoStreamTrack.idl: Removed.
  • WebCore.xcodeproj/project.pbxproj:
2:23 AM Changeset in webkit [182626] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebKit2

Fix some minor typos related to the WebProcessCreationParameter.
https://bugs.webkit.org/show_bug.cgi?id=143598

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-10
Reviewed by Csaba Osztrogonác.

No new tests, no behavior change.

  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::createNewWebProcess):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeWebProcess):

2:00 AM Changeset in webkit [182625] by youenn.fablet@crf.canon.fr
  • 2 edits
    19 adds
    6 deletes in trunk/LayoutTests

Add total test test of Streams API
https://bugs.webkit.org/show_bug.cgi?id=142682

Reviewed by Benjamin Poulain.

This is the full test set that we have for the implementation of
Streams API. When we add more features/code the number of passing
tests will increase.

We have the tests translated from the reference implementation at
streams/reference-implementation and our own tests for some other
things at the streams upper level.

We removed testharness stacktrace in case of failure because it
dumps the filenames with paths. You can activate it for a specific
test by setting its dumpStack attribute to true.

All our former custom tests were integrated in the spec so we they
are now in their appropriate places in the reference
implementation ones. Some of them were changed to match the actual
spec and they are failing now, but we only have to progressively
fix them.

  • resources/testharnessreport.js: Avoid printing the stack in case

of test failure to be able to have failing tests as expected
unless commanded otherwise.

  • streams/readablestream-constructor-expected.txt: Removed.
  • streams/readablestream-constructor.html: Removed.
  • streams/readablestream-start-expected.txt: Removed.
  • streams/readablestream-start.html: Removed.
  • streams/readablestreamreader-constructor-expected.txt: Removed.
  • streams/readablestreamreader-constructor.html: Removed.
  • streams/reference-implementation/bad-underlying-sources-expected.txt: Added.
  • streams/reference-implementation/bad-underlying-sources.html: Added.
  • streams/reference-implementation/brand-checks-expected.txt: Added.
  • streams/reference-implementation/brand-checks.html: Added.
  • streams/reference-implementation/count-queuing-strategy-expected.txt: Added.
  • streams/reference-implementation/count-queuing-strategy.html: Added.
  • streams/reference-implementation/readable-stream-cancel-expected.txt: Added.
  • streams/reference-implementation/readable-stream-cancel.html: Added.
  • streams/reference-implementation/readable-stream-expected.txt: Added.
  • streams/reference-implementation/readable-stream-reader-expected.txt: Added.
  • streams/reference-implementation/readable-stream-reader.html: Added.
  • streams/reference-implementation/readable-stream-templated-expected.txt: Added.
  • streams/reference-implementation/readable-stream-templated.html: Added.
  • streams/reference-implementation/readable-stream.html: Added.
  • streams/reference-implementation/resources/byte-length-queuing-strategy.js: Added.
  • streams/reference-implementation/resources/count-queuing-strategy.js: Added.
  • streams/reference-implementation/resources/streams-utils.js: Added.
1:36 AM Changeset in webkit [182624] by Gyuyoung Kim
  • 5 edits in trunk

[CMake] Remove unnecessary ENABLE_WEBCORE switch
https://bugs.webkit.org/show_bug.cgi?id=143584

Reviewed by Csaba Osztrogonác.

WebCore should be built for all ports. So ENABLE_WEBCORE switch looks be redundant.
Remove it.

  • CMakeLists.txt:
  • Source/CMakeLists.txt:
  • Source/cmake/OptionsGTK.cmake:
  • Source/cmake/WebKitFS.cmake:
1:33 AM Changeset in webkit [182623] by aestes@apple.com
  • 14 edits in trunk/Source

[Cocoa] Add a HAVE(AVKIT) and use it
https://bugs.webkit.org/show_bug.cgi?id=143593

Reviewed by David Kilzer.

Source/WebCore:

  • page/Settings.h: Only defined setAVKitEnabled() if HAVE(AVKIT).
  • platform/ios/WebVideoFullscreenControllerAVKit.mm: Only compiled if HAVE(AVKIT).
  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm: Ditto.

Source/WebKit/mac:

  • WebView/WebPreferences.mm:

(+[WebPreferences initialize]): Only set WebKitAVKitEnabled to YES if HAVE(AVKIT).
(-[WebPreferences setAVKitEnabled:]): Only set value for WebKitAVKitEnabled if HAVE(AVKIT).

  • WebView/WebView.mm:

(-[WebView _preferencesChanged:]): Only called Settings::setAVKitEnabled() if HAVE(AVKIT).

Source/WebKit2:

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _mayAutomaticallyShowVideoOptimized]): Returned false if !HAVE(AVKIT).

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::WebPageProxy): Removed the check for < iOS 8.2.
(WebKit::WebPageProxy::reattachToWebProcess): Ditto.

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::create): Created a version of this function that returns nullptr if
the minimum required version of iOS is less than 8.2 or if !HAVE(AVKIT).

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences): Only called Settings::setAVKitEnabled(true) if HAVE(AVKIT).

Source/WTF:

  • wtf/Platform.h: Defined HAVE(AVKIT) to be true on all Cocoa platforms except Watch OS.

Apr 9, 2015:

11:07 PM Changeset in webkit [182622] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Use modern loops in WebProcess
https://bugs.webkit.org/show_bug.cgi?id=143302

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-09
Reviewed by Darin Adler.

Use modern range for-loops in WebProcess.

No new tests, no behavior change.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection):
(WebKit::WebProcess::initializeWebProcess):
(WebKit::WebProcess::focusedWebPage):
(WebKit::WebProcess::webPageGroup):
(WebKit::WebProcess::setTextCheckerState):
(WebKit::WebProcess::resetAllGeolocationPermissions):

10:21 PM Changeset in webkit [182621] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Some CSS3 filters tests crash under iOS testing
https://bugs.webkit.org/show_bug.cgi?id=143594
rdar://problem/20491140

Reviewed by David Kilzer.

Some tests disable accelerated compositing via testRunner.overridePreference(). In this case,
we'd not create a root scrolling tree node, so null-check it in AsyncScrollingCoordinator::updateNonFastScrollableRegion().

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::updateNonFastScrollableRegion):

8:15 PM Changeset in webkit [182620] by Alan Bujtas
  • 46 edits
    5 adds in trunk

Simple line layout: Add <br> support.
https://bugs.webkit.org/show_bug.cgi?id=139012

This patch enables RenderBlockFlows to use simple line layout on text content when <br> is present.
Simple text with <br> is a fairly common pattern on discussion(forum)-like web pages. This patch reduces memory usage
and speeds up layout for such content.

Source/WebCore:

PerformanceTest/layout/line-layout-simple.html shows more than 2x speedup, when each paragraph is modified by appending <br> to the end.
With <br> support enabled:

mean: 70.02391461289068 runs/s
median: 70.47986488932318 runs/s

While with <br> support disabled:

mean: 30.417295049468184 runs/s
median: 30.36517778760357 runs/s

Reviewed by Antti Koivisto.

Test: fast/text/simple-line-with-br.html

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::setSelectionState):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderLineBreak.cpp:

(WebCore::simpleLineLayout):
(WebCore::ensureLineBoxes):
(WebCore::RenderLineBreak::deleteLineBoxesBeforeSimpleLineLayout):
(WebCore::RenderLineBreak::positionForPoint):
(WebCore::RenderLineBreak::setSelectionState):
(WebCore::RenderLineBreak::linesBoundingBox):
(WebCore::RenderLineBreak::absoluteRects):
(WebCore::RenderLineBreak::absoluteQuads):
(WebCore::RenderLineBreak::collectSelectionRects):

  • rendering/RenderLineBreak.h:
  • rendering/RenderText.cpp:

(WebCore::RenderText::absoluteRects):
(WebCore::RenderText::absoluteQuadsClippedToEllipsis):
(WebCore::RenderText::absoluteQuads):
(WebCore::RenderText::linesBoundingBox):
(WebCore::RenderText::caretMinOffset):
(WebCore::RenderText::caretMaxOffset):
(WebCore::RenderText::containsCaretOffset):
(WebCore::RenderText::hasRenderedText):

  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseFor):
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::consumeLineBreakIfNeeded):
(WebCore::SimpleLineLayout::skipWhitespaceIfNeeded):
(WebCore::SimpleLineLayout::firstFragment):
(WebCore::SimpleLineLayout::forceFragmentToLine):
(WebCore::SimpleLineLayout::createLineRuns):
(WebCore::SimpleLineLayout::create):

  • rendering/SimpleLineLayoutFlowContents.cpp:

(WebCore::SimpleLineLayout::initializeSegments):
(WebCore::SimpleLineLayout::FlowContents::segmentForRenderer): Deleted.

  • rendering/SimpleLineLayoutFlowContents.h:
  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::hitTestFlow):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::RunResolver::RunResolver):
(WebCore::SimpleLineLayout::RunResolver::rangeForRenderer):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator--):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::TextFragmentIterator::nextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::findNextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::revertToFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLastInRenderer):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isEmpty):
(WebCore::SimpleLineLayout::TextFragmentIterator::isSoftLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isHardLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isLineBreak): Deleted.

LayoutTests:

Test output changes in 2 different ways:

  1. Repositioned RenderLineBreak elements. (1px wide <br> is the result of integral pixel snapping)
  2. Removed empty content (<br>).

Reviewed by Antti Koivisto.

  • fast/text/simple-line-with-br-expected.html: Added.
  • fast/text/simple-line-with-br.html: Added.
  • platform/mac-mavericks/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac-mavericks/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/mac/editing/pasteboard/5761530-1-expected.txt: Added.
  • platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
  • platform/mac/fast/dom/focus-contenteditable-expected.txt:
  • platform/mac/fast/forms/range/slider-padding-expected.txt: Added.
  • platform/mac/fast/forms/textarea-scroll-height-expected.txt:
  • platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/mac/fast/text/svg-font-face-with-kerning-expected.txt: Added.
  • platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/mac/http/tests/navigation/postredirect-basic-expected.txt:
  • platform/mac/http/tests/navigation/postredirect-goback1-expected.txt:
  • platform/mac/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
  • platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1224-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug131020-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug131020_iframe-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1430-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug19599-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug92143-expected.txt:
  • platform/mac/tables/mozilla/marvin/tables_cellpadding-expected.txt:
  • platform/mac/tables/mozilla/marvin/tables_cellspacing-expected.txt:
  • platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/other/test4-expected.txt:
5:39 PM Changeset in webkit [182619] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r182603): editing/selection/selection-invalid-offset.html is crashing
https://bugs.webkit.org/show_bug.cgi?id=143591

Reviewed by Ryosuke Niwa.

Add missing null-check for m_frame->editor().client() in
FrameSelection::updateAndRevealSelection().

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAndRevealSelection):

5:36 PM Changeset in webkit [182618] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception using console.table with filter argument
https://bugs.webkit.org/show_bug.cgi?id=143579

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-09
Reviewed by Timothy Hatcher.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._userProvidedColumnNames):
Reordering in the refactoring would have already converted this argument
to a RemoteObject. Assert that here instead of trying to convert.

5:30 PM Changeset in webkit [182617] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

Minor cleanups to WebCore/plugins
https://bugs.webkit.org/show_bug.cgi?id=143509

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-09
Reviewed by Anders Carlsson.

  1. Remove unnecessary #includes.
  2. Fix some wrong namespace comments for consistency.

No new tests, no behavior change.

  • plugins/DOMMimeType.cpp:
  • plugins/DOMMimeType.h:
  • plugins/DOMMimeTypeArray.h:
  • plugins/DOMPlugin.h:
  • plugins/DOMPluginArray.h:
  • plugins/PluginData.cpp:
  • plugins/PluginData.h:
  • plugins/PluginMainThreadScheduler.cpp:
  • plugins/PluginViewBase.h:
5:21 PM Changeset in webkit [182616] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: ObjectTree Property Path tooltip has a few issues
https://bugs.webkit.org/show_bug.cgi?id=143587

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-09
Reviewed by Timothy Hatcher.

  • UserInterface/Models/PropertyPath.js:

(WebInspector.PropertyPath.prototype.appendSymbolProperty):
(WebInspector.PropertyPath.prototype.appendPropertyDescriptor):
Handle Symbol properties. They are treated as an impossible path
because we cannot guarentee a reference to the Symbol right now.

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView.prototype._rootPropertyPathForObject):
The savedResultIndex is on message.

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.js:

(WebInspector.ObjectTreeMapEntryTreeElement):
(WebInspector.ObjectTreeMapKeyTreeElement):
(WebInspector.ObjectTreeMapValueTreeElement):
In order for "key" to be available setup the mainTitle after
the call to the base's constructor.

5:17 PM Changeset in webkit [182615] by Gyuyoung Kim
  • 2 edits in trunk/Tools

Update my email address and expertise.
https://bugs.webkit.org/show_bug.cgi?id=143586

Unreviewed, just update my info.

  • Scripts/webkitpy/common/config/contributors.json:
4:42 PM Changeset in webkit [182614] by mmirman@apple.com
  • 5 edits in trunk/LayoutTests

Updated expectations on a few tests to account for error
info not being added at throw time anymore.
https://bugs.webkit.org/show_bug.cgi?id=143542
rdar://problem/20475871

Reviewed by Michael Saboff.

Because sourceURL is now being appended at error construction time rather than when thrown,
the tests now attempt to append it during the code run by InspectorTest.sendCommand which I assume uses an eval.
Because this code is generated on the fly, it has no URL and thus sourceURL makes no sense.
Also since they are generated in a new locations, they will have a new lines and columns.

  • inspector-protocol/debugger/setPauseOnExceptions-all-expected.txt:
  • inspector-protocol/debugger/setPauseOnExceptions-none-expected.txt:
  • inspector-protocol/debugger/setPauseOnExceptions-uncaught-expected.txt:
  • platform/win/TestExpectations: Enabled the above tests on windows.
4:36 PM Changeset in webkit [182613] by jfernandez@igalia.com
  • 17 edits
    3 adds in trunk

[CSS Grid Layout] Implement justify-self and justify-item css properties.
https://bugs.webkit.org/show_bug.cgi?id=133281

Reviewed by David Hyatt.

Implement the new property 'justify-items', defined in the CSS Box Alignment
Source/WebCore:

specification to describe the container's alignment behavior, in the same way
the 'align-items' property does. The 'justify-self' 'auto' value of any relative
positioned element will be resolved to its container's 'justify-items' value.

Test: fast/css/parse-justify-items.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::resolveContainerAlignmentAuto): Function to resolve 'auto' values for 'align-items' or 'justify-items'.
(WebCore::resolveSelfAlignmentAuto): Function to resolve 'auto' values for 'align-self' or 'justify-self'.
(WebCore::valueForItemPositionWithOverflowAlignment): Take into account the 'legacy' keyword.
(WebCore::ComputedStyleExtractor::propertyValue):
(WebCore::resolveAlignmentAuto): Deleted (renamed to resolveContainerAlignmentAuto).

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValue): Refactoring to share logic between justify-xxx and align-xxx properties.
(WebCore::CSSParser::parseLegacyPosition): Parsing logic of 'legacy' keyword,
(WebCore::CSSParser::parseItemPositionOverflowPosition): Take into account the 'legacy' keyword.

  • css/CSSParser.h:
  • css/CSSPropertyNames.in:
  • css/CSSValueKeywords.in:
  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyInheritJustifyItems): Added.
(WebCore::StyleBuilderCustom::applyInitialJustifyItems): Added.
(WebCore::StyleBuilderCustom::applyValueJustifyItems): Added.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle): Resolve 'auto' values for justify-items when parents have the 'legacy' keyword.

  • rendering/style/RenderStyle.h: Managing the new ItemPositionType fields.
  • rendering/style/RenderStyleConstants.h: Added the ItemPositionType enumeration for handling the 'legacy' keyword.
  • rendering/style/StyleRareNonInheritedData.cpp: Managing the new ItemPositionType fields.

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData):
(WebCore::StyleRareNonInheritedData::operator==):

  • rendering/style/StyleRareNonInheritedData.h:

LayoutTests:

specification to desribe the container's alignment behavior, in the same way
the 'align-items' property does.

  • fast/css/parse-justify-items-expected.txt: Added.
  • fast/css/parse-justify-items.html: Added.
  • fast/css/resources/alignment-parsing-utils.js: Added.

(checkValues):
(checkBadValues):
(checkInitialValues):
(checkInheritValues):
(checkLegacyValues):

4:32 PM Changeset in webkit [182612] by andersca@apple.com
  • 3 edits in trunk/Source/WebCore

Make it possible to create an application cache storage with custom directories
https://bugs.webkit.org/show_bug.cgi?id=143588

Reviewed by Sam Weinig.

Add cache directory and flat file directory name parameters to ApplicationCacheStorage::create.

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):
(WebCore::ApplicationCacheStorage::flatFileAreaSize):
(WebCore::ApplicationCacheStorage::ApplicationCacheStorage):
(WebCore::ApplicationCacheStorage::create):
(WebCore::ApplicationCacheStorage::singleton):

  • loader/appcache/ApplicationCacheStorage.h:
3:57 PM Changeset in webkit [182611] by rniwa@webkit.org
  • 6 edits in trunk/Websites/perf.webkit.org

Perf dashboard should automatically select ranges for A/B testing
https://bugs.webkit.org/show_bug.cgi?id=143580

Reviewed by Chris Dumez.

Added a new statistics option for picking a A/B test range selection strategy.
The selected ranges are shown in the graph using the same UI to show analysis tasks.

  • public/v2/app.js:

(App.DashboardPaneProxyForPicker._platformOrMetricIdChanged): Updated the query parameters for
charts page used by the dashboard since we've added a new parameter at the end.
(App.Pane.ranges): Added. Merges ranges created for analysis tasks and A/B testing.
(App.Pane.updateStatisticsTools): Clone and set the test range selection strategies.
(App.Pane._cloneStrategy): Copy isSegmentation.
(App.Pane._updateMovingAverageAndEnvelope): Set testRangeCandidates.
(App.Pane._movingAverageOrEnvelopeStrategyDidChange): Update the charts when a new text range
selection strategy is picked by the user.
(App.Pane._computeMovingAverageAndOutliers): Compute the test ranges using the chosen strategy.
Avoid going through isAnomalyArray when no anomaly detection strategy is enabled. Also changed
the return value from the moving average time series to a dictionary that contains the moving
average time series, a dictionary of anomalies, and an array of test ranges.
(App.ChartsController._parsePaneList): Parse the test range selection strategy configuration.
(App.ChartsController._serializePaneList): Ditto for serialization.
(App.ChartsController._scheduleQueryStringUpdate): Update the URL hash when the user picks a new
test range selection strategy.

  • public/v2/chart-pane.css: Fixed a typo as well as added a CSS rule for test ranges markers.
  • public/v2/index.html: Added UI for selecting a test range selection strategy.
  • public/v2/interactive-chart.js:

(App.InteractiveChartComponent._rangesChanged): Pass down "status" to be used as a class name.

  • public/v2/js/statistics.js:

(Statistics.MovingAverageStrategies): Added isSegmentation to segmentation strategies.
(Statistics.TestRangeSelectionStrategies): Added.

3:37 PM Changeset in webkit [182610] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebKit2

Track IconDatabase retain counts for WebContent processes. Balance retain/releases for processes that terminate before successfully doing it themselves.
https://bugs.webkit.org/show_bug.cgi?id=143517.

Patch by Gordon Sheridan <gordon_sheridan@apple.com> on 2015-04-09
Reviewed by Brady Eidson.

  • UIProcess/WebIconDatabase.messages.in:

Move RetainIconForPageURL and ReleaseIconForPageURL messages to WebProcessProxy so they can be associated with the appropriate web process.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::connectionDidClose):
Call releaseRemainingIconsForPageURLs() to balance retains/releases for this process.

(WebKit::WebProcessProxy::retainIconForPageURL):
Track retain counts for page URLs and call through to WebIconDatabase.

(WebKit::WebProcessProxy::releaseIconForPageURL):
Ditto.

(WebKit::WebProcessProxy::releaseRemainingIconsForPageURLs):
Call releaseIconForPageURL() once for each outstanding retain count, for each page URL.

  • UIProcess/WebProcessProxy.h:

Declare methods for retainIconForPageURL(), releaseIconForPageURL(), and releaseRemainingIconsForPageURLs().
Declare hash map to track number of retains per page URL.

  • UIProcess/WebProcessProxy.messages.in:

Moved RetainIconForPageURL and ReleaseIconForPageURL messages here from WebIconDatabase.

  • WebProcess/IconDatabase/WebIconDatabaseProxy.cpp:

(WebKit::WebIconDatabaseProxy::retainIconForPageURL):
Modify the receiver of the message to be WebProcessProxy.

(WebKit::WebIconDatabaseProxy::releaseIconForPageURL):
Ditto.

3:36 PM Changeset in webkit [182609] by mmaxfield@apple.com
  • 3 edits
    2 adds in trunk

Text-combine erroneously draws vertically after non-layout-causing style change
https://bugs.webkit.org/show_bug.cgi?id=143461
<rdar://problem/19285490>

Reviewed by Darin Adler.

Source/WebCore:

RenderCombineText::styleDidChange() unconditionally uncombines its text. Layout then
recombines it. However, if there is a style change that does not cause layout, the
RenderCombineText will be left uncombined until the next layout.

Test: fast/text/text-combine-style-change-no-layout.html

  • rendering/RenderCombineText.cpp:

(WebCore::RenderCombineText::styleDidChange):

LayoutTests:

  • fast/text/text-combine-style-change-no-layout-expected.html: Added.
  • fast/text/text-combine-style-change-no-layout.html: Added.
3:19 PM Changeset in webkit [182608] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

[WK2] Regression(r182194): The NetworkProcess is calling the wrong memory pressure handler before suspending
https://bugs.webkit.org/show_bug.cgi?id=143575
<rdar://problem/20484338>

Reviewed by Andreas Kling.

After r182194, the NetworkProcess is calling the memory pressure
handler before getting suspended to free-up as much memory as possible
at this point.

However, we were calling the default memory pressure handling code
instead of the custom handler registered by the NetworkProcess. This
patch fixes the problem.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::lowMemoryHandler):
(WebKit::NetworkProcess::initializeNetworkProcess):
(WebKit::NetworkProcess::processWillSuspend):

  • NetworkProcess/NetworkProcess.h:
2:32 PM Changeset in webkit [182607] by beidson@apple.com
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r182573): Action Menus no longer appear for WebKit2 views displaying an image
rdar://problem/20486551 and https://bugs.webkit.org/show_bug.cgi?id=143574

Reviewed by Brent Fulgham.

  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::Data): Clear up a name scoping issue.

1:03 PM Changeset in webkit [182606] by Joseph Pecoraro
  • 3 edits in trunk/Tools

Flakiness Dashboard not loading insecure content if loaded with https URL
https://bugs.webkit.org/show_bug.cgi?id=143570

Reviewed by Alexey Proskuryakov.

  • TestResultServer/app.yaml:
  • TestResultServer/static-dashboards/loader.js:

Switch to https scheme.

12:03 PM Changeset in webkit [182605] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Revert part of 182516: it broke tests
https://bugs.webkit.org/show_bug.cgi?id=143568
rdar://problem/20484578

Reviewed by Myles Maxfield.

Revert the FontCascadeCocoa parts of r182516, since it broke some CSS shapes tests.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawGlyphs):
(WebCore::dilationSizeForTextColor): Deleted.

11:57 AM Changeset in webkit [182604] by Alan Bujtas
  • 7 edits
    1 add in trunk

Simple line layout(regression): Calling innerText on RenderFlow with multiple children is slow.
https://bugs.webkit.org/show_bug.cgi?id=143554

Reviewed by Antti Koivisto.

Initialize render flow's segments only when the render flow changes in TextIterator.
The included performance test shows 6x speedup. (from ~10 runs/sec to ~60 runs/sec)

PerformanceTests:

  • Layout/simple-line-layout-innertext.html: Added.

Source/WebCore:

Test: PerformanceTests/Layout/simple-line-layout-innertext.html.

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):

  • editing/TextIterator.h:
  • rendering/SimpleLineLayoutFlowContents.cpp: Instruments log shows that vector's expandCapacity could be expensive when flow has large amount of children.

(WebCore::SimpleLineLayout::initializeSegments):

11:31 AM Changeset in webkit [182603] by Chris Dumez
  • 21 edits in trunk/Source

[WK2][iOS] editorState() should not cause a synchronous layout
https://bugs.webkit.org/show_bug.cgi?id=142536
<rdar://problem/20041506>

Reviewed by Enrica Casucci.

Source/WebCore:

Add didChangeSelectionAndUpdateLayout() callback to EditorClient
that is called at the end of FrameSelection::updateAndRevealSelection().

  • editing/FrameSelection.cpp:

(WebCore::FrameSelection::updateAndRevealSelection):

  • loader/EmptyClients.h:
  • page/EditorClient.h:

Source/WebKit/mac:

Provide implementation for EditorClient::didChangeSelectionAndUpdateLayout().

  • WebCoreSupport/WebEditorClient.h:

Source/WebKit/win:

Provide implementation for EditorClient::didChangeSelectionAndUpdateLayout().

  • WebCoreSupport/WebEditorClient.h:

Source/WebKit2:

platformEditorState() on iOS does a synchronous layout to compute some
of the EditorState members (e.g. caretRectAtStart / caretRectAtEnd).
This is bad for performance as this is called every time the selection
is changed (which happens for e.g. when you set the value of a focused
HTMLInputElement).

This patch updates the behavior on iOS to only send a partial EditorState
on selection change so that the UIProcess gets most of the information
(the ones that do not require style recalc or layout) ASAP. A full Editor
state is then sent after the asynchronous layout is done.

With this change, I see a 38% improvement on Speedometer (26.4 +/- 0.37
-> 36.5 +/- 0.54) on iPhone 6 Plus.

  • Shared/EditorState.cpp:

(WebKit::EditorState::encode):
(WebKit::EditorState::decode):
(WebKit::EditorState::PostLayoutData::encode):
(WebKit::EditorState::PostLayoutData::decode):

  • Shared/EditorState.h:

(WebKit::EditorState::EditorState): Deleted.

  • UIProcess/ios/WKContentView.mm:

(-[WKContentView _didCommitLayerTree:]):

  • UIProcess/ios/WKContentViewInteraction.mm:

(WebKit::WKSelectionDrawingInfo::WKSelectionDrawingInfo):
(-[WKContentView webSelectionRects]):
(-[WKContentView _addShortcut:]):
(-[WKContentView selectedText]):
(-[WKContentView isReplaceAllowed]):
(-[WKContentView _promptForReplace:]):
(-[WKContentView _transliterateChinese:]):
(-[WKContentView textStylingAtPosition:inDirection:]):
(-[WKContentView canPerformAction:withSender:]):
(-[WKContentView _showDictionary:]):
(-[WKContentView _characterBeforeCaretSelection]):
(-[WKContentView _characterInRelationToCaretSelection:]):
(-[WKContentView _selectionAtDocumentStart]):
(-[WKContentView selectedTextRange]):
(-[WKContentView hasContent]):

  • WebProcess/WebCoreSupport/WebEditorClient.cpp:

(WebKit::WebEditorClient::didChangeSelectionAndUpdateLayout):

  • WebProcess/WebCoreSupport/WebEditorClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::editorState):
(WebKit::WebPage::didChangeSelection):
(WebKit::WebPage::sendPostLayoutEditorStateIfNeeded):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/efl/WebPageEfl.cpp:

(WebKit::WebPage::platformEditorState):

  • WebProcess/WebPage/gtk/WebPageGtk.cpp:

(WebKit::WebPage::platformEditorState):

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::platformEditorState):

9:20 AM Changeset in webkit [182602] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Network Cache: Crash in WebCore::CachedResource::tryReplaceEncodedData
https://bugs.webkit.org/show_bug.cgi?id=143562

Reviewed by Anders Carlsson.

If another thread comes and truncates the file before we map it we end up with a map that crashes when accessed.

  • NetworkProcess/cache/NetworkCacheIOChannelCocoa.mm:

(WebKit::NetworkCache::IOChannel::IOChannel):

When creating a new file unlink any existing file instead of using O_TRUNC.

9:13 AM Changeset in webkit [182601] by andersca@apple.com
  • 4 edits in trunk/Source/WebCore

Give each cache group a storage and use it in place of the singleton
https://bugs.webkit.org/show_bug.cgi?id=143540

Reviewed by Sam Weinig.

This is another step towards making the cache storage be per page.

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::ApplicationCacheGroup):
(WebCore::ApplicationCacheGroup::~ApplicationCacheGroup):
(WebCore::ApplicationCacheGroup::cacheForMainRequest):
(WebCore::ApplicationCacheGroup::fallbackCacheForMainRequest):
(WebCore::ApplicationCacheGroup::selectCache):
(WebCore::ApplicationCacheGroup::makeObsolete):
(WebCore::ApplicationCacheGroup::didReachMaxAppCacheSize):
(WebCore::ApplicationCacheGroup::recalculateAvailableSpaceInQuota):
(WebCore::ApplicationCacheGroup::checkIfLoadIsComplete):

  • loader/appcache/ApplicationCacheGroup.h:
  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::loadCacheGroup):
(WebCore::ApplicationCacheStorage::findOrCreateCacheGroup):
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):

8:42 AM Changeset in webkit [182600] by commit-queue@webkit.org
  • 4 edits in trunk/LayoutTests

[EFL] fast/css/vertical-text-overflow-ellipsis-text-align-center.html is failing
https://bugs.webkit.org/show_bug.cgi?id=142571

Unreviewed EFL Gardening.

Rebaseline the fast/css/vertical-text-overflow-ellipsis-text-align-center.html.

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-09

  • platform/efl/TestExpectations:
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-center-expected.png:
  • platform/efl/fast/css/vertical-text-overflow-ellipsis-text-align-center-expected.txt:
8:39 AM Changeset in webkit [182599] by commit-queue@webkit.org
  • 1 edit
    4 adds in trunk/LayoutTests

Unreviewed EFL gardening. Added missing results after r182546.
https://bugs.webkit.org/show_bug.cgi?id=143557

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-09

  • platform/efl/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/efl/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/efl/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/efl/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
4:51 AM Changeset in webkit [182598] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[EFL][GTK] WebKit2's generate-forwarding-headers.pl runs too many times
https://bugs.webkit.org/show_bug.cgi?id=142907

Unreviewed typo fix after r182595.

  • PlatformGTK.cmake:
2:26 AM Changeset in webkit [182597] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

Try to fix the Mac build after r182596.

I was wrong to replace PLATFORM(IOS) with HAVE(PARENTAL_CONTROLS) in ContentFilterUnblockHandler.
The conditional should be HAVE(PARENTAL_CONTROLS) && PLATFORM(IOS).

  • platform/ContentFilterUnblockHandler.h:
  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::wrapWithDecisionHandler):
(WebCore::ContentFilterUnblockHandler::needsUIProcess):
(WebCore::ContentFilterUnblockHandler::encode):
(WebCore::ContentFilterUnblockHandler::decode):
(WebCore::ContentFilterUnblockHandler::canHandleRequest):
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync):

1:54 AM Changeset in webkit [182596] by aestes@apple.com
  • 7 edits in trunk/Source

[Content Filtering] Add a HAVE(PARENTAL_CONTROLS) and use it
https://bugs.webkit.org/show_bug.cgi?id=143559

Reviewed by David Kilzer.

Source/WebCore:

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::types): Only registered ParentalControlsContentFilter if HAVE(PARENTAL_CONTROLS).

  • platform/ContentFilterUnblockHandler.h: Changed PLATFORM(IOS) to HAVE(PARENTAL_CONTROLS).
  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::wrapWithDecisionHandler): Ditto.
(WebCore::ContentFilterUnblockHandler::needsUIProcess): Ditto.
(WebCore::ContentFilterUnblockHandler::encode): Ditto.
(WebCore::ContentFilterUnblockHandler::decode): Ditto.
(WebCore::ContentFilterUnblockHandler::canHandleRequest): Ditto.
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync): Ditto.

  • platform/cocoa/ParentalControlsContentFilter.mm: Wrapped the file with HAVE(PARENTAL_CONTROLS)

Source/WTF:

Added PLATFORM(WATCHOS). Used PLATFORM() since Watch OS is just a variant of OS(IOS).
Defined HAVE(PARENTAL_CONTROLS) to be true on all Cocoa platforms except Watch OS.

  • wtf/Platform.h:
1:11 AM Changeset in webkit [182595] by Csaba Osztrogonác
  • 9 edits in trunk

[EFL][GTK] WebKit2's generate-forwarding-headers.pl runs too many times
https://bugs.webkit.org/show_bug.cgi?id=142907

Reviewed by Carlos Garcia Campos.

Source/WebKit2:

  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • Scripts/generate-forwarding-headers.pl: Make it work with more path and platform arguments.

Tools:

  • TestWebKitAPI/PlatformEfl.cmake:
  • TestWebKitAPI/PlatformGTK.cmake:
  • WebKitTestRunner/PlatformEfl.cmake:
  • WebKitTestRunner/PlatformGTK.cmake:
12:33 AM Changeset in webkit [182594] by aestes@apple.com
  • 3 edits in trunk/LayoutTests

Skip http/tests/contentfiltering/ on all the platforms that skipped contentfiltering/
https://bugs.webkit.org/show_bug.cgi?id=143460

  • platform/efl/TestExpectations:
  • platform/win/TestExpectations:
12:26 AM Changeset in webkit [182593] by svillar@igalia.com
  • 2 edits in trunk/Source/WebCore

Unreviewed, added CSS Grid Layout to features.json file.

  • features.json:

Apr 8, 2015:

11:57 PM Changeset in webkit [182592] by commit-queue@webkit.org
  • 5 edits in trunk/Source/WebInspectorUI

Web Inspector: Simplify Legacy Tips support
https://bugs.webkit.org/show_bug.cgi?id=143551

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-08
Reviewed by Timothy Hatcher.

  • UserInterface/Models/ConsoleMessage.js:
  • UserInterface/Protocol/ConsoleObserver.js:

(WebInspector.ConsoleObserver.prototype.messageAdded):

  • UserInterface/Views/ConsoleMessageView.js:

(WebInspector.ConsoleMessageView):
(WebInspector.ConsoleMessageView.prototype._levelString):

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype._filterMessageElements):

11:48 PM Changeset in webkit [182591] by youenn.fablet@crf.canon.fr
  • 8 edits
    2 adds in trunk

[Streams API] Support the start function parameter in ReadableStream constructor
https://bugs.webkit.org/show_bug.cgi?id=141160

Source/WebCore:

Reviewed by Benjamin Poulain.

Stores the JS source object in ReadableStreamJSSource and calls its "start" function.
This function takes a controller object that has three JS functions as members: close, enqueue and error.
This controller is stored in ReadableStreamJSSource as it will be reused as "pull" parameter.
All three JS functions do not currently do anything.

Test: streams/readablestream-start.html

  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::start): Place holder for step 11 of https://streams.spec.whatwg.org/#rs-constructor.

  • Modules/streams/ReadableStream.h:
  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::constructJSReadableStream):

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::getPropertyFromObject): Helper function to get a public property from an object.
(WebCore::setPropertyToObject): Helper function to set a public property to an object.
(WebCore::callFunction): Helper function to call a JS function from C++.
(WebCore::ReadableStreamJSSource::ReadableStreamJSSource):
(WebCore::notImplementedFunction):
(WebCore::createReadableStreamEnqueueFunction): Creates the JS function for enqueue.
(WebCore::createReadableStreamCloseFunction): Creates the JS function for close.
(WebCore::createReadableStreamErrorFunction): Creates the JS function for error.
(WebCore::startReadableStreamAsync): Equivalent of promise resolution for start.
(WebCore::ReadableStreamJSSource::start): Calls the "start" function of the JS source with all three JS functions (enqueue, close, error) as parameters.

  • bindings/js/ReadableStreamJSSource.h:

LayoutTests:

Reviewed by Benjamin Poulain.

Added tests to check that start JS function is called with the right parameters and can throw errors.

  • streams/readablestream-start-expected.txt: Added.
  • streams/readablestream-start.html: Added.
11:34 PM Changeset in webkit [182590] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

Exception in console and broken right click after attempting to show context menu in Inspector
https://bugs.webkit.org/show_bug.cgi?id=143556

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-08
Reviewed by Brady Eidson.

  • Shared/mac/NativeContextMenuItem.mm:

(WebKit::NativeContextMenuItem::NativeContextMenuItem):
Add an ASSERT to immediately catch a menu item created with a nil native menu item.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::internalShowContextMenu):
Gracefully handle a null share context menu item.

10:38 PM Changeset in webkit [182589] by Brent Fulgham
  • 7 edits in trunk

[Mac] Unreviewed test fix after r182584
https://bugs.webkit.org/show_bug.cgi?id=143452

Source/WebCore:

Correct bit comparison to use the correct value for the Control-key

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::typeForEvent):

Source/WebKit2:

Correct bit comparison to use the correct value for the Control-key

  • Shared/mac/WebEventFactory.mm:

(WebKit::typeForEvent):

Tools:

Put both of these tests back to their original state now that the underlying
problem is fixed.

  • TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:

(TestWebKitAPI::TEST):

10:22 PM Changeset in webkit [182588] by ljaehun.lim@samsung.com
  • 2 edits in trunk/Source/WebKit2

[EFL] Create PageUIClientEfl after sending CreateWebPage message
https://bugs.webkit.org/show_bug.cgi?id=143514

Reviewed by Gyuyoung Kim.

UIProcess sends some messages to WebPage before WebPage is created. It makes some error logs on debug build.
So this patch moves the initialization of m_pageUIClient after calling WKViewInitialize().

  • UIProcess/API/efl/EwkView.cpp:

(EwkView::EwkView):

9:58 PM Changeset in webkit [182587] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

The results of A/B testing should state statistical significance
https://bugs.webkit.org/show_bug.cgi?id=143552

Reviewed by Chris Dumez.

Added statistical comparisons between results for each configuration on analysis task page using
Welch's t-test. The probability as well as t-statistics and the degrees of freedoms are reported.

  • public/v2/app.js:

(App.TestGroupPane._populate): Report the list of statistical comparison between every pair of
root configurations in the results. e.g. if we've got A, B, C configurations then compare A/B, A/C
and B/C.
(App.TestGroupPane._computeStatisticalSignificance): Compute the statistical significance using
Welch's t-test. Report the probability by which two samples do not come from the same distribution.
(App.TestGroupPane._createConfigurationSummary): Include the array of results for this configuration.
Also renamed "items" to "requests" for clarity.

  • public/v2/index.html: Added the template for showing statistical comparisons.
  • public/v2/js/statistics.js: Renamed tDistributionQuantiles to tDistributionByOneSidedProbability

for clarity. Also factored out the functions to convert from one-sided probability to two-sided
probability and vice versa.
(Statistics.supportedConfidenceIntervalProbabilities):
(Statistics.confidenceIntervalDelta):
(Statistics.probabilityRangeForWelchsT): Added. Computes the lower bound and the upper bound for
the probability that two values are sampled from distinct distributions using Welch's t-test.
(Statistics.computeWelchsT): This function now takes two-sided probability like all other functions.
(.tDistributionByOneSidedProbability): Renamed from tDistributionQuantiles.
(.oneSidedToTwoSidedProbability): Extracted.
(.twoSidedToOneSidedProbability): Extracted.
(Statistics.MovingAverageStrategies): Converted the one-sided probability to the two-sided probability
now that computeWelchsT takes two-sided probability.

9:47 PM Changeset in webkit [182586] by fpizlo@apple.com
  • 2 edits in trunk/Tools

run-jsc-benchmarks geomean of preferred means shouldn't print the VMs header twice
https://bugs.webkit.org/show_bug.cgi?id=143553

Reviewed by Ryosuke Niwa.

Remove the spurious printVMs left over from an earlier change.

  • Scripts/run-jsc-benchmarks:
8:44 PM Changeset in webkit [182585] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Add a debug assertion that will fire if we try to paint layer contents on a background thread
https://bugs.webkit.org/show_bug.cgi?id=143547

Reviewed by Alexey Proskuryakov.

New assertion to catch cases where other frameworks erroneously trigger painting
on a non-main (or non-Web) thread.

  • platform/graphics/mac/WebLayer.mm:

(-[WebSimpleLayer display]):
(-[WebSimpleLayer drawInContext:]):

8:42 PM Changeset in webkit [182584] by Brent Fulgham
  • 3 edits in trunk/Tools

[Mac] Unreviewed test fix after r182581

The behavior of control-left-click is controlled by a system preference.
Our test bots have this turned off.

  • TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp:

(TestWebKitAPI::TEST):

  • TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm:

(TestWebKitAPI::TEST):

8:21 PM Changeset in webkit [182583] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Unreviewed Test Fix after r182579. Add missing include.

  • UserInterface/Test.html:

Missing file was causing inspector/page/main-frame-resource.html to fail.

7:50 PM Changeset in webkit [182582] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Layout Test inspector/console/console-api.html is failing
https://bugs.webkit.org/show_bug.cgi?id=143548

  • platform/win/TestExpectations: Skipped new timeout.
7:41 PM Changeset in webkit [182581] by Brent Fulgham
  • 16 edits
    3 adds in trunk

[Mac] WebKit is not honoring OS preferences for secondary click behaviors
https://bugs.webkit.org/show_bug.cgi?id=143452
<rdar://problem/20437483>

Reviewed by Tim Horton.

Source/WebCore:

We cannot rely on the event's button number to decide behavior. The OS settings might have
mapped middle button to context menu, etc. Instead, we should ask the OS (via NSMenu) what
the proper button press behavior is.

  • platform/mac/PlatformEventFactoryMac.mm:

(WebCore::mouseButtonForEvent): Ask NSMenu what kind of button press we have received.

Source/WebKit/mac:

We were improperly intercepting contextual menu clicks and passing them through
the mouseDown handler, rather than processing via NSView's menu handling code.

  • WebView/WebHTMLView.mm:

(-[WebHTMLView otherMouseDown:]): Treat context menu events the same as the action
menu case, and pass it to AppKit for normal menu processing.

Source/WebKit2:

We cannot rely on the event's button number to decide behavior. The OS settings might have
mapped middle button to context menu, etc. Instead, we should ask the OS (via NSMenu) what
the proper button press behavior is.

  • Shared/mac/WebEventFactory.mm:

(WebKit::mouseButtonForEvent): Ask NSMenu what kind of button press we have received.

Tools:

Add a new API test to confirm that Cocoa mouse button press events are properly
tagged with the desired menu behavior (i.e., 'None', 'Context', or 'Action'.)

The WK2 test dispatches mouse down events to a PlatformWebView, and checks with
some registered event handlers that the expected button press and context menu
events are received.

The WK1 unit test creates an NSEvent with the desired button press state, and then
uses WebCore::PlatformEventFactory::createPlatformMouseEvent to create a WebCore event.
We check the resulting PlatformMouseEvent for proper state.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new test files.
  • TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp: Added.

(TestWebKitAPI::buildAndPerformTest): Helper function to build/run an individual test.

  • TestWebKitAPI/Tests/WebKit2/mouse-button-listener.html: Added.
  • TestWebKitAPI/Tests/mac/MenuTypesForMouseEvents.mm: Added.

(TestWebKitAPI::canCallMenuTypeForEvent): Helper function.
(TestWebKitAPI::buildAndPerformTest): Helper function to build/run an individual test.

  • TestWebKitAPI/mac/PlatformWebViewMac.mm:

(TestWebKitAPI::PlatformWebView::simulateButtonClick): Added method to support firing
mouse down events.

  • TestWebKitAPI/mac/PlatformWebViewMac.h:
7:15 PM Changeset in webkit [182580] by Michael Catanzaro
  • 2 edits in trunk/Source/WebCore

Fix -Wformat in AnimationBase.cpp
https://bugs.webkit.org/show_bug.cgi?id=143541

Reviewed by Simon Fraser.

  • page/animation/AnimationBase.cpp:

(WebCore::nameForStateInput): Added. Converts an AnimationBase::AnimationStateInput to a
string.
(WebCore::AnimationBase::updateStateMachine): Print AnimationBase::AnimationStateInput as a
string, instead of passing it to %d and assuming that works, to silence GCC's -Wformat.

6:37 PM Changeset in webkit [182579] by Joseph Pecoraro
  • 14 edits
    2 moves
    5 adds
    2 deletes in trunk

Web Inspector: Split ConsoleMessageImpl into the View and the Model
https://bugs.webkit.org/show_bug.cgi?id=142599

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/Models/ConsoleMessage.js: Added.

(WebInspector.ConsoleMessage):
(WebInspector.ConsoleMessage.prototype.get source):
(WebInspector.ConsoleMessage.prototype.get level):
(WebInspector.ConsoleMessage.prototype.get messageText):
(WebInspector.ConsoleMessage.prototype.get type):
(WebInspector.ConsoleMessage.prototype.get url):
(WebInspector.ConsoleMessage.prototype.get line):
(WebInspector.ConsoleMessage.prototype.get column):
(WebInspector.ConsoleMessage.prototype.get repeatCount):
(WebInspector.ConsoleMessage.prototype.get parameters):
(WebInspector.ConsoleMessage.prototype.get stackTrace):
(WebInspector.ConsoleMessage.prototype.get request):
New readonly model object for console messages.

  • UserInterface/Main.html:
  • UserInterface/Test.html:
  • UserInterface/Base/Test.js:

(WebInspector.loaded):
Load the new files in the main / test page.

  • UserInterface/Views/LegacyConsoleMessage.js: Removed.
  • UserInterface/Views/LegacyConsoleMessageImpl.js: Removed.

Remove Legacy versions.

  • UserInterface/Controllers/JavaScriptRuntimeCompletionProvider.js:
  • UserInterface/Controllers/JavaScriptLogViewController.js:

(WebInspector.JavaScriptLogViewController):
(WebInspector.JavaScriptLogViewController.prototype.startNewSession):
(WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult.saveResultCallback):
(WebInspector.JavaScriptLogViewController.prototype.appendImmediateExecutionWithResult):
(WebInspector.JavaScriptLogViewController.prototype.appendConsoleMessage):
(WebInspector.JavaScriptLogViewController.prototype.updatePreviousMessageRepeatCount):
(WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted.printResult):
(WebInspector.JavaScriptLogViewController.prototype.consolePromptTextCommitted):
(WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessageView):
(WebInspector.JavaScriptLogViewController.prototype._appendConsoleMessage): Deleted.
Update LogViewController to create ConsoleMessageViews from ConsoleMessages when applicable.
Also clarify when we have a view versus model object.

  • UserInterface/Protocol/ConsoleObserver.js:

(WebInspector.ConsoleObserver.prototype.messageAdded):

  • UserInterface/Controllers/LogManager.js:

(WebInspector.LogManager.prototype.messageWasAdded):
(WebInspector.LogManager.prototype.messagesCleared):
(WebInspector.LogManager.prototype._mainResourceDidChange):
Create model objects and issue events for the model objects.

  • UserInterface/Models/DefaultDashboard.js:

(WebInspector.DefaultDashboard.prototype._consoleMessageAdded):
(WebInspector.DefaultDashboard.prototype._incrementConsoleMessageType):
Update now that the event gives us a model object.

  • UserInterface/Views/ConsoleMessageView.js: Added.

(WebInspector.ConsoleMessageView):
(WebInspector.ConsoleMessageView.prototype.get element):
(WebInspector.ConsoleMessageView.prototype.get message):
(WebInspector.ConsoleMessageView.prototype.get repeatCount):
(WebInspector.ConsoleMessageView.prototype.set repeatCount):
(WebInspector.ConsoleMessageView.prototype.toClipboardString):
(WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
(WebInspector.ConsoleMessageView.prototype._appendSavedResultIndex):
(WebInspector.ConsoleMessageView.prototype._appendLocationLink):
(WebInspector.ConsoleMessageView.prototype._appendParameters):
(WebInspector.ConsoleMessageView.prototype._appendStackTrace):
(WebInspector.ConsoleMessageView.prototype._appendFormattedArguments):
(WebInspector.ConsoleMessageView.prototype._formatParameter):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsValue):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsString):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsNode):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsObject):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsArray):
(WebInspector.ConsoleMessageView.prototype._rootPropertyPathForObject):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.parameterFormatter):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.stringFormatter):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.floatFormatter):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.integerFormatter):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.styleFormatter):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.isWhitelistedProperty):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString.append):
(WebInspector.ConsoleMessageView.prototype._formatWithSubstitutionString):
(WebInspector.ConsoleMessageView.prototype._shouldShowStackTrace):
(WebInspector.ConsoleMessageView.prototype._shouldHideURL):
(WebInspector.ConsoleMessageView.prototype._firstNonNativeCallFrame):
(WebInspector.ConsoleMessageView.prototype._linkifyLocation):
(WebInspector.ConsoleMessageView.prototype._linkifyCallFrame):
(WebInspector.ConsoleMessageView.prototype._userProvidedColumnNames):
(WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
(WebInspector.ConsoleMessageView.prototype._levelString):
(WebInspector.ConsoleMessageView.prototype._enforcesClipboardPrefixString):
(WebInspector.ConsoleMessageView.prototype._clipboardPrefixString):
New View class for a ConsoleMessage. This is a near direct port of the old code
to a view class that has a root element.

  • UserInterface/Models/ConsoleCommandResultMessage.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleCommandResult.js.

(WebInspector.ConsoleCommandResultMessage):
(WebInspector.ConsoleCommandResultMessage.clearMaximumSavedResultIndex):
(WebInspector.ConsoleCommandResultMessage.prototype.get savedResultIndex):
Rename, as this is a ConsoleMessage subclass with a specific type for console evaluation results.

  • UserInterface/Views/ConsoleCommandView.js: Renamed from Source/WebInspectorUI/UserInterface/Views/ConsoleCommand.js.

(WebInspector.ConsoleCommandView):
(WebInspector.ConsoleCommandView.prototype.get element):
(WebInspector.ConsoleCommandView.prototype.get commandText):
(WebInspector.ConsoleCommandView.prototype.get message):
(WebInspector.ConsoleCommandView.prototype.toClipboardString):

  • UserInterface/Views/ConsoleGroup.js:

(WebInspector.ConsoleGroup):
(WebInspector.ConsoleGroup.prototype.get parentGroup):
(WebInspector.ConsoleGroup.prototype.render):
(WebInspector.ConsoleGroup.prototype.addMessageView):
(WebInspector.ConsoleGroup.prototype.append):
(WebInspector.ConsoleGroup.prototype._titleMouseDown):
(WebInspector.ConsoleGroup.prototype.addMessage): Deleted.
(WebInspector.ConsoleGroup.prototype._titleClicked): Deleted.

  • UserInterface/Views/ConsoleSession.js:

(WebInspector.ConsoleSession):
(WebInspector.ConsoleSession.prototype.addMessageView):
(WebInspector.ConsoleSession.prototype.append):
(WebInspector.ConsoleSession.prototype.addMessage): Deleted.
(WebInspector.ConsoleSession.prototype.hasMessages): Deleted.
Convert to classes, and clarify these deal with View objects.

  • UserInterface/Views/LogContentView.css:

(.console-message .repeat-count):
(.console-message .bubble): Deleted.
Better class name for the repeat count element.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype.didAppendConsoleMessageView):
(WebInspector.LogContentView.prototype._formatMessagesAsData):
(WebInspector.LogContentView.prototype._messageAdded):
(WebInspector.LogContentView.prototype._updateMessagesSelection):
(WebInspector.LogContentView.prototype._selectAllMessages):
(WebInspector.LogContentView.prototype._allMessageElements):
(WebInspector.LogContentView.prototype._unfilteredMessageElements):
(WebInspector.LogContentView.prototype._visibleMessageElements):
(WebInspector.LogContentView.prototype._scopeBarSelectionDidChange):
(WebInspector.LogContentView.prototype._filterMessageElements):
(WebInspector.LogContentView.prototype._upArrowWasPressed):
(WebInspector.LogContentView.prototype._downArrowWasPressed):
(WebInspector.LogContentView.prototype._previousMessage):
(WebInspector.LogContentView.prototype._nextMessage):
(WebInspector.LogContentView.prototype._performSearch):
(WebInspector.LogContentView.prototype._highlightRanges):
(WebInspector.LogContentView.prototype._reappendProvisionalMessages):
(WebInspector.LogContentView.prototype.didAppendConsoleMessage): Deleted.
(WebInspector.LogContentView.prototype._allMessages): Deleted.
(WebInspector.LogContentView.prototype._unfilteredMessages): Deleted.
(WebInspector.LogContentView.prototype._visibleMessages): Deleted.
(WebInspector.LogContentView.prototype._filterMessages): Deleted.
Rename lots of things to make it clear when we are dealing with
elements, model objects, or view objects. This class is still heavily
dealing with elements, and needs to be cleaned up later.

LayoutTests:

  • inspector/console/console-api-expected.txt: Added.
  • inspector/console/console-api.html: Added.

Add a basic test for console APIs creating the new ConsoleMessage model objects.

6:37 PM Changeset in webkit [182578] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebInspectorUI

Fix uncaught exception seen in Inspector.

Reviewed by Timothy Hatcher.

  • UserInterface/Views/TreeOutline.js:

(WebInspector.TreeOutline.prototype.removeChild):
Add a null check. Everywhere else null checks this member variable
which may not exist yet, this case was missing the check.

6:37 PM Changeset in webkit [182577] by Joseph Pecoraro
  • 4 edits in trunk/Source/JavaScriptCore

Use jsNontrivialString in more places if the string is guaranteed to be 2 or more characters
https://bugs.webkit.org/show_bug.cgi?id=143430

Reviewed by Darin Adler.

  • runtime/ExceptionHelpers.cpp:

(JSC::errorDescriptionForValue):

  • runtime/NumberPrototype.cpp:

(JSC::numberProtoFuncToExponential):
(JSC::numberProtoFuncToPrecision):
(JSC::numberProtoFuncToString):

  • runtime/SymbolPrototype.cpp:

(JSC::symbolProtoFuncToString):

6:02 PM Changeset in webkit [182576] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression: Showing of color swatches no longer works in Details Sidebar
https://bugs.webkit.org/show_bug.cgi?id=143539

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-04-08
Reviewed by Timothy Hatcher.

Fix a regression where due to an ESLint error the whole line instead of just
the variable declaration was removed.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

(WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches.update):
(WebInspector.CSSStyleDeclarationTextEditor.prototype._createColorSwatches):

5:32 PM Changeset in webkit [182575] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Document some test failures.
https://bugs.webkit.org/show_bug.cgi?id=143542
https://bugs.webkit.org/show_bug.cgi?id=143543

  • platform/win/TestExpectations: Mark as failing.
4:14 PM Changeset in webkit [182574] by Michael Catanzaro
  • 2 edits in trunk/Tools

[GTK] Add pango to jhbuild-optional.modules
https://bugs.webkit.org/show_bug.cgi?id=143537

Reviewed by Martin Robinson.

  • gtk/jhbuild-optional.modules: Add pango.
4:11 PM Changeset in webkit [182573] by beidson@apple.com
  • 26 edits in trunk/Source

Expose the "Share" menu for links, images, and media.
<rdar://problem/20435340> and https://bugs.webkit.org/show_bug.cgi?id=143502

Reviewed by Tim Horton.

Source/WebCore:

  • loader/EmptyClients.h:
  • page/ContextMenuClient.h:

(WebCore::ContextMenuClient::shareSelectedTextMenuItem): Deleted.

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::populate):
(WebCore::selectionContainsPossibleWord): Deleted.

  • page/ContextMenuController.h:

(WebCore::ContextMenuController::page):

  • platform/ContextMenuItem.cpp:

(WebCore::ContextMenuItem::ContextMenuItem):
(WebCore::ContextMenuItem::isNull):
(WebCore::ContextMenuItem::shareMenuItem):
(WebCore::ContextMenuItem::supportsShareMenu): Deleted.
(WebCore::ContextMenuItem::shareSelectedTextMenuItem): Deleted.

  • platform/ContextMenuItem.h:
  • platform/gtk/ContextMenuItemGtk.cpp:

(WebCore::ContextMenuItem::shareMenuItem): Return a null item.
(WebCore::ContextMenuItem::supportsShareMenu): Deleted.
(WebCore::ContextMenuItem::shareSelectedTextMenuItem): Deleted.

  • platform/mac/ContextMenuItemMac.mm:

(WebCore::ContextMenuItem::shareMenuItem): Create a full-featured Share menu item instead of just for selected text.
(WebCore::ContextMenuItem::supportsShareMenu): Deleted.
(WebCore::ContextMenuItem::shareSelectedTextMenuItem): Deleted.

  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::selectedText): Instead of calculating selected text outside the HitTestResult, let the

HitTestResult do what it does best: Calculate things!

  • rendering/HitTestResult.h:

Source/WebKit/mac:

  • WebCoreSupport/WebContextMenuClient.h:
  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::shareMenuItem):

Source/WebKit/win:

  • WebCoreSupport/WebContextMenuClient.cpp:

(WebContextMenuClient::shareMenuItem):

  • WebCoreSupport/WebContextMenuClient.h:

Source/WebKit2:

  • Shared/ContextMenuContextData.cpp:

(WebKit::ContextMenuContextData::ContextMenuContextData):

  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::Data):

  • Shared/WebHitTestResult.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::internalShowContextMenu):

  • WebProcess/WebCoreSupport/WebContextMenuClient.cpp:

(WebKit::WebContextMenuClient::shareMenuItem):

  • WebProcess/WebCoreSupport/WebContextMenuClient.h:
  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:

(WebKit::WebContextMenuClient::shareSelectedTextMenuItem): Deleted.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):

3:47 PM Changeset in webkit [182572] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Add encoding and decoding of ints to WKRemoteObjectCoder
https://bugs.webkit.org/show_bug.cgi?id=143538

Reviewed by Tim Horton.

  • Shared/API/Cocoa/WKRemoteObjectCoder.mm:

(-[WKRemoteObjectEncoder encodeInt:forKey:]):
(-[WKRemoteObjectDecoder decodeIntForKey:]):

3:21 PM Changeset in webkit [182571] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[Curl] Compile error in CurlCacheEntry::parseResponseHeaders method.
https://bugs.webkit.org/show_bug.cgi?id=143531

Reviewed by Alex Christensen.

Cache related methods in ResourceResponse have changed return type.

  • platform/network/curl/CurlCacheEntry.cpp:

(WebCore::CurlCacheEntry::parseResponseHeaders):

2:25 PM Changeset in webkit [182570] by andersca@apple.com
  • 4 edits in trunk/Source/WebCore

Remove ApplicationCacheGroup::m_isCopy
https://bugs.webkit.org/show_bug.cgi?id=143536

Reviewed by Tim Horton.

Code that used to set m_isCopy to true is long gone.

  • loader/appcache/ApplicationCache.cpp:

(WebCore::ApplicationCache::~ApplicationCache):

  • loader/appcache/ApplicationCacheGroup.cpp:

(WebCore::ApplicationCacheGroup::ApplicationCacheGroup):
(WebCore::ApplicationCacheGroup::~ApplicationCacheGroup):

  • loader/appcache/ApplicationCacheGroup.h:

(WebCore::ApplicationCacheGroup::isCopy): Deleted.

2:17 PM Changeset in webkit [182569] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed, update more test expectations

Remove some expected failures from tests that are passing. Also, copypaste some
expectations to more appropriate locations in the expectations file.

  • platform/gtk/TestExpectations:
2:16 PM Changeset in webkit [182568] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

Unreviewed fix after r182496 for when the cached runs JSON doesn't exist.

  • public/v2/app.js:

(App.Pane._fetch):
(App.Pane.refetchRuns):

2:14 PM Changeset in webkit [182567] by fpizlo@apple.com
  • 3 edits
    4 adds in trunk

JSArray::sortNumeric should handle ArrayWithUndecided
https://bugs.webkit.org/show_bug.cgi?id=143535

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

ArrayWithUndecided is what you get if you haven't stored anything into the array yet. We need to handle it.

  • runtime/JSArray.cpp:

(JSC::JSArray::sortNumeric):

  • tests/stress/sort-array-with-undecided.js: Added.

LayoutTests:

Upload the original test that first spotted this. Shortened it a bit so that it runs fast enough.

  • js/regress/script-tests/sorting-benchmark.js: Added.

(log):
(bottom_up_merge_sort):
(aMinusB):
(verify):
(benchmark):
(makeArrays):

  • js/regress/sorting-benchmark-expected.txt: Added.
  • js/regress/sorting-benchmark.html: Added.
2:12 PM Changeset in webkit [182566] by clopez@igalia.com
  • 3 edits in trunk/Tools

[XvfbDriver] Regular expression used to match running X servers fails on Fedora 22.
https://bugs.webkit.org/show_bug.cgi?id=143530

Reviewed by Žan Doberšek.

Assume that the default value for display (:0) is reserved and start checking on :1
Adjust webkitpy test and include two new test cases for this bug (display number not specified)
and for X server named Xorg.bin (previous bug 1376599)

  • Scripts/webkitpy/port/xvfbdriver.py:

(XvfbDriver._next_free_display)

  • Scripts/webkitpy/port/xvfbdriver_unittest.py:

(XvfbDriverTest.test_start_no_pixel_tests):
(XvfbDriverTest.test_start_pixel_tests):
(XvfbDriverTest.test_start_arbitrary_worker_number):
(XvfbDriverTest.test_next_free_display):
(XvfbDriverTest.test_start_next_worker):

2:00 PM Changeset in webkit [182565] by andersca@apple.com
  • 6 edits in trunk/Source

Delete ApplicationCache static member functions
https://bugs.webkit.org/show_bug.cgi?id=143534

Reviewed by Tim Horton.

Source/WebCore:

  • loader/appcache/ApplicationCache.cpp:

(WebCore::ApplicationCache::deleteCacheForOrigin): Deleted.
(WebCore::ApplicationCache::deleteAllCaches): Deleted.
(WebCore::ApplicationCache::diskUsageForOrigin): Deleted.

  • loader/appcache/ApplicationCache.h:

Source/WebKit2:

  • WebProcess/ApplicationCache/WebApplicationCacheManager.cpp:

(WebKit::WebApplicationCacheManager::deleteEntriesForOrigin):
(WebKit::WebApplicationCacheManager::deleteAllEntries):

  • WebProcess/InjectedBundle/InjectedBundle.cpp:

(WebKit::InjectedBundle::clearApplicationCacheForOrigin):
(WebKit::InjectedBundle::appCacheUsageForOrigin):

1:26 PM Changeset in webkit [182564] by achristensen@apple.com
  • 9 edits
    3 adds in trunk

Block popups from content extensions.
https://bugs.webkit.org/show_bug.cgi?id=143497

Reviewed by Brady Eidson.

Source/WebCore:

Test: http/tests/contentextensions/popups.html

  • loader/ResourceLoadInfo.cpp:

(WebCore::readResourceType):

  • loader/ResourceLoadInfo.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::open):

  • page/UserContentController.cpp:

(WebCore::UserContentController::actionsForResourceLoad):

  • page/UserContentController.h:

Check content extensions before opening a window.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):
Added popup test.

LayoutTests:

  • http/tests/contentextensions/popups-expected.txt: Added.
  • http/tests/contentextensions/popups.html: Added.
  • http/tests/contentextensions/popups.html.json: Added.
1:24 PM Changeset in webkit [182563] by fpizlo@apple.com
  • 2 edits in trunk

Unreviewed, revert accidental commit.

  • Makefile.shared:
1:22 PM Changeset in webkit [182562] by fpizlo@apple.com
  • 3 edits in trunk

DFG::IntegerCheckCombiningPhase's wrap-around check shouldn't trigger C++ undef behavior on wrap-around
https://bugs.webkit.org/show_bug.cgi?id=143532

Reviewed by Gavin Barraclough.

Oh the irony! We were protecting an optimization that only worked if there was no wrap-around in JavaScript.
But the C++ code had wrap-around, which is undef in C++. So, if the compiler was smart enough, our compiler
would think that there never was wrap-around.

This fixes a failure in stress/tricky-array-boiunds-checks.js when JSC is compiled with bleeding-edge clang.

  • dfg/DFGIntegerCheckCombiningPhase.cpp:

(JSC::DFG::IntegerCheckCombiningPhase::isValid):

1:09 PM Changeset in webkit [182561] by Michael Catanzaro
  • 2 edits in trunk/LayoutTests

[GTK] Unreviewed test expectation sanity-check

Remove duplicate expectation, and some expectations for tests that no longer exist.

  • platform/gtk/TestExpectations:
12:40 PM Changeset in webkit [182560] by Bem Jones-Bey
  • 4 edits
    4 adds in trunk

[CSS Shapes] Properly handle negative reference box widths and center coordinates
https://bugs.webkit.org/show_bug.cgi?id=142610

Reviewed by Rob Buis.
Source/WebCore:

Fix a few cases where values that should not be negative end up that
way.

This patch is based on a couple of Blink patches by Rob Buis.

Tests: fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash.html

fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash.html

  • rendering/shapes/ShapeOutsideInfo.cpp:

(WebCore::ShapeOutsideInfo::computeDeltasForContainingBlockLine): A

negative margin box width means that the shape has no extent, so
clamp to zero.

  • rendering/style/BasicShapes.cpp:

(WebCore::BasicShapeCircle::floatValueForRadiusInBox): When computing

the radii, take the absolute value, since the radii is based on
the distance, which is always positive.

(WebCore::BasicShapeEllipse::floatValueForRadiusInBox): Ditto.

LayoutTests:

Tests for the cases that trigger asserts.

  • fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-circle-negative-radius-crash.html: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash-expected.txt: Added.
  • fast/shapes/shape-outside-floats/shape-outside-floats-ellipse-negative-width-crash.html: Added.
12:28 PM Changeset in webkit [182559] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit/win

Add a WebApplicationCache::storage() and use it instead of the WebCore singleton
https://bugs.webkit.org/show_bug.cgi?id=143525

Reviewed by Antti Koivisto.

  • WebApplicationCache.cpp:

(WebApplicationCache::storage):
(WebApplicationCache::maximumSize):
(WebApplicationCache::setMaximumSize):
(WebApplicationCache::defaultOriginQuota):
(WebApplicationCache::setDefaultOriginQuota):
(WebApplicationCache::diskUsageForOrigin):
(WebApplicationCache::deleteAllApplicationCaches):
(WebApplicationCache::deleteCacheForOrigin):
(WebApplicationCache::originsWithCache):

  • WebApplicationCache.h:
12:11 PM BuildingGtk edited by Joone Hur
Changed the wayland jhbuild module name. (diff)
11:48 AM WebKitGTK/Debugging edited by clopez@igalia.com
(diff)
11:44 AM Changeset in webkit [182558] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Unreviewed, rolling out r182522.
https://bugs.webkit.org/show_bug.cgi?id=143529

Not needed any more (Requested by ap on #webkit).

Reverted changeset:

"Fix the build."
http://trac.webkit.org/changeset/182522

11:30 AM Changeset in webkit [182557] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

32-bit build fix after r182554.

  • UIProcess/API/mac/WKView.mm:

(-[WKView resignFirstResponder]):

11:25 AM Changeset in webkit [182556] by Beth Dakin
  • 8 edits in trunk/Source

Force events should not require preventDefault in order to fire
https://bugs.webkit.org/show_bug.cgi?id=143503
-and corresponding-
rdar://problem/20458916

Reviewed by Tim Horton.

Source/WebCore:

Since these events will fire whether or not preventDefault was set on the
willBegin event, we should make sure we only send them when there are registered
event listeners. These are new events, so we don’t want to spam the vast majority
of web content that doesn’t use them yet.

  • dom/Document.cpp:

(WebCore::Document::addListenerTypeIfNeeded):

  • dom/Document.h:
  • dom/Element.cpp:

(WebCore::Element::dispatchMouseForceWillBegin):
(WebCore::Element::dispatchMouseForceChanged):
(WebCore::Element::dispatchMouseForceDown):
(WebCore::Element::dispatchMouseForceUp):
(WebCore::Element::dispatchMouseForceClick):
(WebCore::Element::dispatchMouseForceCancelled):

Source/WebKit2:

We no longer need m_lastActionMenuHitTestPreventsDefault since we’ll always
dispatch the events to Element.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):
(WebKit::WebPage::inputDeviceForceDidChange):
(WebKit::WebPage::immediateActionDidCancel):

11:12 AM Changeset in webkit [182555] by jer.noble@apple.com
  • 5 edits in trunk/Source/WebCore

[Mac][WebAudio] Update the AVAudioMix in the AudioSourceProviderAVFObjC when the list of enabled audio tracks change.
https://bugs.webkit.org/show_bug.cgi?id=143332

Reviewed by Eric Carlson.

Some media assets (notably, mp3s) will not have an enabled audio track when the AVAsset is
first loaded, so the AVAudioMix will have no trackID in it's parameters. Whenever the list
of enabled tracks change, recreate the AVAudioMix with the new first enabled audio trackID.

To facilitate this, add a new setter to AudioSourceProviderAVFObjC taking an AVAssetTrack to
use with the AVAudioMix. Whenever this parameter changes, the AVAudioMix is destroyed and
recreated.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::mediaPlayerEngineUpdated): Drive-by fix: when the media

player switches engines, re-associate the audio source node with its provider.

  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.h:
  • platform/graphics/avfoundation/AudioSourceProviderAVFObjC.mm:

(WebCore::AudioSourceProviderAVFObjC::setPlayerItem): Only create the mix if there is a valid AVPlayerItem and AVAssetTrack
(WebCore::AudioSourceProviderAVFObjC::setAudioTrack): Ditto.
(WebCore::AudioSourceProviderAVFObjC::createMix): Don't iterate over the AVPlayerItem's tracks,

just use the one passed in through setAudioTrack().

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Clear the provider's track.
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayerItem): Set the provider's track.
(WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::audioSourceProvider): Ditto.

11:06 AM Changeset in webkit [182554] by enrica@apple.com
  • 3 edits in trunk/Source/WebKit2

Calling makeFirstResponder on WKWebView doesn't work.
https://bugs.webkit.org/show_bug.cgi?id=143482
rdar://problem/20298166

Reviewed by Dan Bernstein.

Adding forwarding of the responder status to the WKView.
We also need to avoid doing any cleanup in resignFirstResponder
if we know we are about to regain responder status again.
Same goes for becomeFirstResponder.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView becomeFirstResponder]):
(-[WKWebView acceptsFirstResponder]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView becomeFristResponder]):
(-[WKView resignFirstResponder]):

10:53 AM Changeset in webkit [182553] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.26/Source/WebCore

Merged r182521. rdar://problem/20113980

10:52 AM Changeset in webkit [182552] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.26/Source/WebCore

Merged r182519. rdar://problem/20113980

10:52 AM Changeset in webkit [182551] by andersca@apple.com
  • 6 edits in trunk/Source

Move some ApplicationCache static member functions to ApplicationCacheStorage
https://bugs.webkit.org/show_bug.cgi?id=143524

Reviewed by Antti Koivisto.

Source/WebCore:

This is yet another step towards eliminating ApplicationCacheStorage::singleton() and making the storage be per page instead.

  • loader/appcache/ApplicationCache.cpp:

(WebCore::ApplicationCache::deleteCacheForOrigin):
(WebCore::ApplicationCache::deleteAllCaches):
(WebCore::ApplicationCache::diskUsageForOrigin):

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::deleteAllCaches):
(WebCore::ApplicationCacheStorage::deleteCacheForOrigin):
(WebCore::ApplicationCacheStorage::diskUsageForOrigin):

  • loader/appcache/ApplicationCacheStorage.h:

Source/WebKit/mac:

  • WebCoreSupport/WebApplicationCache.mm:

(+[WebApplicationCache diskUsageForOrigin:]):
(+[WebApplicationCache deleteAllApplicationCaches]):
(+[WebApplicationCache deleteCacheForOrigin:]):

10:51 AM Changeset in webkit [182550] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.26/Source/WebCore

Merged r182518. rdar://problem/20113980

10:49 AM Changeset in webkit [182549] by bshafiei@apple.com
  • 11 edits in tags/Safari-601.1.26/Source/WebCore

Merged r182516. rdar://problem/20113980

10:27 AM Changeset in webkit [182548] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

10:25 AM Changeset in webkit [182547] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.26

New tag.

10:14 AM Changeset in webkit [182546] by ChangSeok Oh
  • 3 edits
    10 adds in trunk

Fill list style background with same color with that of list background.
https://bugs.webkit.org/show_bug.cgi?id=143483

Reviewed by Simon Fraser.

Source/WebCore:

LayoutListMarker does not have a node so its selectionBackgroundColor alway returns
the default theme color for selection. We can make it more natural by filling
the same color with that of LayoutListItem into it.

Tests: fast/backgrounds/selection-background-color-of-image-list-style.html

fast/backgrounds/selection-background-color-of-list-style.html

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::paint):

LayoutTests:

  • fast/backgrounds/selection-background-color-of-image-list-style.html: Added.
  • fast/backgrounds/selection-background-color-of-list-style.html: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/gtk/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-image-list-style-expected.png: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-image-list-style-expected.txt: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-list-style-expected.png: Added.
  • platform/mac/fast/backgrounds/selection-background-color-of-list-style-expected.txt: Added.
9:47 AM Changeset in webkit [182545] by achristensen@apple.com
  • 15 edits
    1 add in trunk

Add CMake build system for WinCairo port.
https://bugs.webkit.org/show_bug.cgi?id=115944

Patch by Alex Christensen <achristensen@webkit.org> and Patrick Gansterer <Patrick Gansterer> on 2015-04-08
Reviewed by Chris Dumez.

.:

  • Source/cmake/OptionsWindows.cmake:
  • Source/cmake/WebKitMacros.cmake:

Make ADD_PRECOMPILED_HEADER more like http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake

Source/WebCore:

  • CMakeLists.txt:
  • PlatformWin.cmake:
  • PlatformWinCairo.cmake:
  • platform/graphics/texmap/TextureMapperGL.cpp:

(WebCore::TextureMapperGL::TextureMapperGL):

Source/WebKit:

  • CMakeLists.txt:

Source/WTF:

  • wtf/FeatureDefines.h:
  • wtf/PlatformWin.cmake:

Tools:

  • CMakeLists.txt:
  • WinLauncher/CMakeLists.txt: Added.
9:45 AM Changeset in webkit [182544] by Chris Dumez
  • 71 edits in trunk/Source

Rename ActiveDOMObject::canSuspend() to canSuspendForPageCache() for clarity
https://bugs.webkit.org/show_bug.cgi?id=143513

Reviewed by Andreas Kling.

Source/WebCore:

Rename ActiveDOMObject::canSuspend() to canSuspendForPageCache() for
clarity as it is only used for the page cache. Also rename the
'DocumentWillBecomeInactive' value of the ReasonForSuspension enum to
'PageCache' as it is only used by CachedFrame for the page cache and it
is a lot more understandable.

Source/WebKit/mac:

Update ScriptExecutionContext::canSuspendActiveDOMObjects() to
canSuspendActiveDOMObjectsForPageCache() as the method was renamed.

  • WebView/WebFrame.mm:

(-[WebFrame _cacheabilityDictionary]):

9:31 AM Changeset in webkit [182543] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.4

Merge r182537 - [GTK] Crash in DOMObjectCache when a wrapped object owned by the cache is unreffed by the user
https://bugs.webkit.org/show_bug.cgi?id=143521

Reviewed by Martin Robinson.

This is a case we claim to support, but it only works if the
object has only one reference. In that case, when the user unrefs
it, the weak ref notify callback removes the object from the
cache. However, if the object has more than one ref, the cache
doesn't know the user unreffed it, and when clearing the cache we
try to remove more references than what the object actually has,
causing a crash in g_object_unref.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::clearObject):

9:25 AM Changeset in webkit [182542] by commit-queue@webkit.org
  • 46 edits
    5 deletes in trunk

Unreviewed, rolling out r182536.
https://bugs.webkit.org/show_bug.cgi?id=143523

Made accessibility/table-sections.html time out on debug bots
(Requested by ap on #webkit).

Reverted changeset:

"Simple line layout: Add <br> support."
https://bugs.webkit.org/show_bug.cgi?id=139012
http://trac.webkit.org/changeset/182536

9:24 AM Changeset in webkit [182541] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r180216 - Use HashMap::add instead of get/contains + set in DOMObjectCache
https://bugs.webkit.org/show_bug.cgi?id=141558

Rubber-stamped by Žan Doberšek.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::getOrCreateDOMObjectCacheFrameObserver):
(WebKit::DOMObjectCache::put):

9:10 AM Changeset in webkit [182540] by andersca@apple.com
  • 7 edits
    1 copy in trunk/Source/WebKit

Get rid of uses of ApplicationCacheStorage::singleton() from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=143504

Reviewed by Sam Weinig.

Source/WebKit:

  • WebKit.xcodeproj/project.pbxproj:

Add WebApplicationCacheInternal.h.

Source/WebKit/mac:

Add a webApplicationCacheStorage() function and use it throughout WebKitLegacy.
In the future, webApplicationCacheStorage will return a custom singleton, but for now
it just returns ApplicationCacheStorage::singleton().

  • Misc/WebCache.mm:

(+[WebCache empty]):

  • WebCoreSupport/WebApplicationCache.mm:

(+[WebApplicationCache maximumSize]):
(+[WebApplicationCache setMaximumSize:]):
(+[WebApplicationCache defaultOriginQuota]):
(+[WebApplicationCache setDefaultOriginQuota:]):
(+[WebApplicationCache originsWithCache]):
(webApplicationCacheStorage):

  • WebCoreSupport/WebApplicationCacheInternal.h: Added.
  • WebCoreSupport/WebApplicationCacheQuotaManager.mm:

(-[WebApplicationCacheQuotaManager usage]):
(-[WebApplicationCacheQuotaManager quota]):
(-[WebApplicationCacheQuotaManager setQuota:]):

  • WebView/WebView.mm:

(WebKitInitializeApplicationCachePathIfNecessary):

8:59 AM Changeset in webkit [182539] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.6

Merge r182537 - [GTK] Crash in DOMObjectCache when a wrapped object owned by the cache is unreffed by the user
https://bugs.webkit.org/show_bug.cgi?id=143521

Reviewed by Martin Robinson.

This is a case we claim to support, but it only works if the
object has only one reference. In that case, when the user unrefs
it, the weak ref notify callback removes the object from the
cache. However, if the object has more than one ref, the cache
doesn't know the user unreffed it, and when clearing the cache we
try to remove more references than what the object actually has,
causing a crash in g_object_unref.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::clearObject):

8:54 AM Changeset in webkit [182538] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180216 - Use HashMap::add instead of get/contains + set in DOMObjectCache
https://bugs.webkit.org/show_bug.cgi?id=141558

Rubber-stamped by Žan Doberšek.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::getOrCreateDOMObjectCacheFrameObserver):
(WebKit::DOMObjectCache::put):

8:29 AM Changeset in webkit [182537] by Carlos Garcia Campos
  • 7 edits in trunk

[GTK] Crash in DOMObjectCache when a wrapped object owned by the cache is unreffed by the user
https://bugs.webkit.org/show_bug.cgi?id=143521

Reviewed by Martin Robinson.

This is a case we claim to support, but it only works if the
object has only one reference. In that case, when the user unrefs
it, the weak ref notify callback removes the object from the
cache. However, if the object has more than one ref, the cache
doesn't know the user unreffed it, and when clearing the cache we
try to remove more references than what the object actually has,
causing a crash in g_object_unref.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::clearObject):

8:11 AM Changeset in webkit [182536] by Alan Bujtas
  • 46 edits
    5 adds in trunk

Simple line layout: Add <br> support.
https://bugs.webkit.org/show_bug.cgi?id=139012

This patch enables RenderBlockFlows to use simple line layout on text content when <br> is present.
Simple text with <br> is a fairly common pattern on discussion(forum)-like web pages. This patch reduces memory usage
and speeds up layout for such content.

Source/WebCore:

PerformanceTest/layout/line-layout-simple.html shows more than 2x speedup, when each paragraph is modified by appending <br> to the end.
With <br> support enabled:

mean: 70.02391461289068 runs/s
median: 70.47986488932318 runs/s

While with <br> support disabled:

mean: 30.417295049468184 runs/s
median: 30.36517778760357 runs/s

Reviewed by Antti Koivisto.

Test: fast/text/simple-line-with-br.html

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):

  • rendering/RenderBlock.h:
  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::setSelectionState):
(WebCore::RenderBlockFlow::deleteLineBoxesBeforeSimpleLineLayout):

  • rendering/RenderBlockFlow.h:
  • rendering/RenderLineBreak.cpp:

(WebCore::simpleLineLayout):
(WebCore::ensureLineBoxes):
(WebCore::RenderLineBreak::deleteLineBoxesBeforeSimpleLineLayout):
(WebCore::RenderLineBreak::positionForPoint):
(WebCore::RenderLineBreak::setSelectionState):
(WebCore::RenderLineBreak::linesBoundingBox):
(WebCore::RenderLineBreak::absoluteRects):
(WebCore::RenderLineBreak::absoluteQuads):
(WebCore::RenderLineBreak::collectSelectionRects):

  • rendering/RenderLineBreak.h:
  • rendering/SimpleLineLayout.cpp:

(WebCore::SimpleLineLayout::canUseFor):
(WebCore::SimpleLineLayout::LineState::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::removeTrailingWhitespace):
(WebCore::SimpleLineLayout::consumeLineBreakIfNeeded):
(WebCore::SimpleLineLayout::skipWhitespaceIfNeeded):
(WebCore::SimpleLineLayout::firstFragment):
(WebCore::SimpleLineLayout::forceFragmentToLine):
(WebCore::SimpleLineLayout::createLineRuns):
(WebCore::SimpleLineLayout::create):

  • rendering/SimpleLineLayoutFlowContents.cpp:

(WebCore::SimpleLineLayout::initializeSegments):
(WebCore::SimpleLineLayout::FlowContents::segmentForRenderer): Deleted.

  • rendering/SimpleLineLayoutFlowContents.h:
  • rendering/SimpleLineLayoutFunctions.cpp:

(WebCore::SimpleLineLayout::paintFlow):
(WebCore::SimpleLineLayout::hitTestFlow):
(WebCore::SimpleLineLayout::showLineLayoutForFlow):

  • rendering/SimpleLineLayoutResolver.cpp:

(WebCore::SimpleLineLayout::RunResolver::Run::rect):
(WebCore::SimpleLineLayout::RunResolver::RunResolver):
(WebCore::SimpleLineLayout::RunResolver::rangeForRenderer):

  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Iterator::inQuirksMode):
(WebCore::SimpleLineLayout::RunResolver::Iterator::operator--):

  • rendering/SimpleLineLayoutTextFragmentIterator.cpp:

(WebCore::SimpleLineLayout::EndOfSegmentSetter::EndOfSegmentSetter):
(WebCore::SimpleLineLayout::EndOfSegmentSetter::~EndOfSegmentSetter):
(WebCore::SimpleLineLayout::TextFragmentIterator::nextTextFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::revertToFragment):
(WebCore::SimpleLineLayout::TextFragmentIterator::skipToNextPosition):

  • rendering/SimpleLineLayoutTextFragmentIterator.h:

(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLastInRenderer):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::TextFragment::isEmpty):
(WebCore::SimpleLineLayout::TextFragmentIterator::isSoftLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isHardLineBreak):
(WebCore::SimpleLineLayout::TextFragmentIterator::isLineBreak): Deleted.

LayoutTests:

Test output changes in 2 different ways:

  1. Repositioned RenderLineBreak elements. (1px wide <br> is the result of integral pixel snapping)
  2. Removed empty content (<br>).

Reviewed by Antti Koivisto.

  • fast/text/simple-line-with-br-expected.html: Added.
  • fast/text/simple-line-with-br.html: Added.
  • platform/mac-mavericks/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac-mavericks/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/mac/fast/css/text-overflow-ellipsis-bidi-expected.txt:
  • platform/mac/fast/dom/focus-contenteditable-expected.txt:
  • platform/mac/fast/forms/range/slider-padding-expected.txt: Added.
  • platform/mac/fast/forms/textarea-scroll-height-expected.txt:
  • platform/mac/fast/parser/open-comment-in-textarea-expected.txt:
  • platform/mac/fast/text/international/bidi-layout-across-linebreak-expected.txt:
  • platform/mac/fast/text/svg-font-face-with-kerning-expected.txt: Added.
  • platform/mac/http/tests/navigation/javascriptlink-frames-expected.txt:
  • platform/mac/http/tests/navigation/postredirect-basic-expected.txt:
  • platform/mac/http/tests/navigation/postredirect-goback1-expected.txt:
  • platform/mac/printing/single-line-must-not-be-split-into-two-pages-expected.txt:
  • platform/mac/svg/wicd/test-rightsizing-b-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug106795-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1224-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug131020-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug131020_iframe-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug1430-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug16252-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug19599-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug20579-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug32205-3-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug82946-2-expected.txt:
  • platform/mac/tables/mozilla/bugs/bug92143-expected.txt:
  • platform/mac/tables/mozilla/marvin/tables_cellpadding-expected.txt:
  • platform/mac/tables/mozilla/marvin/tables_cellspacing-expected.txt:
  • platform/mac/tables/mozilla/other/wa_table_thtd_rowspan-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug1262-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/bugs/bug56024-expected.txt:
  • platform/mac/tables/mozilla_expected_failures/other/test4-expected.txt:
7:03 AM Changeset in webkit [182535] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Lazily initialize LogToSystemConsole flag to reduce memory usage
https://bugs.webkit.org/show_bug.cgi?id=143506

Reviewed by Mark Lam.

Only call into CF preferences code when we need to in order to reduce memory usage.

  • inspector/JSGlobalObjectConsoleClient.cpp:

(Inspector::JSGlobalObjectConsoleClient::logToSystemConsole):
(Inspector::JSGlobalObjectConsoleClient::setLogToSystemConsole):
(Inspector::JSGlobalObjectConsoleClient::initializeLogToSystemConsole):
(Inspector::JSGlobalObjectConsoleClient::JSGlobalObjectConsoleClient):

3:32 AM Changeset in webkit [182534] by Philippe Normand
  • 2 edits in trunk/Source/WebCore

[GStreamer] compress property for the HTTP source element
https://bugs.webkit.org/show_bug.cgi?id=143518

Reviewed by Carlos Garcia Campos.

Added a compress property so the default behavior or not
requesting content encoded to the server can be overridden if
needed. This is useful for adaptive streaming playback.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStart):

3:12 AM Changeset in webkit [182533] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r175088 - Do not include GraphicsContext3D.h when 3D_GRAPHICS is not used.
<https://webkit.org/b/137969>.

Patch by Milan Crha <mcrha@redhat.com> on 2014-10-22
Reviewed by Carlos Garcia Campos.

  • platform/graphics/cairo/GraphicsContext3DCairo.cpp:
1:44 AM Changeset in webkit [182532] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r175087 - Do not build WidgetBackingStoreGtkX11 when not used.
<https://webkit.org/b/137972>.

Patch by Milan Crha <mcrha@redhat.com> on 2014-10-22
Reviewed by Carlos Garcia Campos.

  • platform/gtk/WidgetBackingStoreGtkX11.cpp:
  • platform/gtk/WidgetBackingStoreGtkX11.h:
1:20 AM Changeset in webkit [182531] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r174922 - Ensure attached frame count doesn't exceed the maximum allowed frames
https://bugs.webkit.org/show_bug.cgi?id=136457

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Test: fast/frames/exponential-frames.html

  • html/HTMLFrameElementBase.cpp:

(WebCore::HTMLFrameElementBase::isURLAllowed):

LayoutTests:

  • fast/frames/exponential-frames-expected.txt: Added.
  • fast/frames/exponential-frames.html: Added.
1:16 AM Changeset in webkit [182530] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r174807 - REGRESSION (r169024): Undetermined text is not displayed in the search field of Adobe Help Website
https://bugs.webkit.org/show_bug.cgi?id=137679
rdar://problem/18450335

Reviewed by Enrica Casucci.

Source/WebCore:

Test: platform/mac/editing/input/selected-composed-text-painting.html

  • rendering/InlineTextBox.cpp: (WebCore::InlineTextBox::paint): We do not paint

selection beckground for unconfirmed text with underlines, so we should use a regular
style for text painting, as well.

LayoutTests:

  • platform/mac/editing/input/selected-composed-text-painting-expected.html: Added.
  • platform/mac/editing/input/selected-composed-text-painting.html: Added.
1:14 AM Changeset in webkit [182529] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r174720 - REGRESSION (r159208): Crash when clicking scrubber after navigating away/back to video
https://bugs.webkit.org/show_bug.cgi?id=137715

Reviewed by Darin Adler.

Simple null-check of m_player in refreshCachedTime.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::refreshCachedTime):

1:08 AM Changeset in webkit [182528] by Carlos Garcia Campos
  • 10 edits in releases/WebKitGTK/webkit-2.4

Merge r174712 - URLs that start with http:/// and https:/// lose two slashes when parsed, causing assertion failure and inconsistent behavior
https://bugs.webkit.org/show_bug.cgi?id=137718

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Added cases to fast/loader/url-parse-1.html.

  • platform/URL.cpp:

(WebCore::URL::parse): In hierarchical schemes other than file:, ignore any additional
slashes after the :, as prescribed by the authority-ignore-slashes state in the current
URL spec.

LayoutTests:

  • fast/loader/url-parse-1-expected.txt: Updated results.
  • fast/loader/url-parse-1.html: Added a few test cases.
  • fast/url/file-http-base-expected.txt: Updated results.
  • fast/url/host-expected.txt: Ditto.
  • fast/url/invalid-urls-utf8-expected.txt: Ditto.
  • fast/url/relative-expected.txt: Ditto.
  • fast/url/standard-url-expected.txt: Ditto.
1:04 AM Changeset in webkit [182527] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r174684 - [XHR] Abort method execution when m_loader->cancel() in internalAbort() caused reentry
https://bugs.webkit.org/show_bug.cgi?id=126975

Patch by Youenn Fablet <youennf@gmail.com> on 2014-10-14
Reviewed by Alexey Proskuryakov.

Source/WebCore:

Merging https://chromium.googlesource.com/chromium/blink/+/0d75daf2053631518606ae15daaece701a25b2c4
Ensuring new test from https://codereview.chromium.org/76133002/ is passing.

Test: http/tests/xmlhttprequest/reentrant-cancel-abort.html

  • xml/XMLHttpRequest.cpp:

(WebCore::XMLHttpRequest::open): exit early if internalAbort asks so
(WebCore::XMLHttpRequest::abort): exit early if internalAbort asks so
(WebCore::XMLHttpRequest::internalAbort): ask calling function to exit early if a new loader is created during the cancellation of the loader (potential reentrant case through window.onload callback)
(WebCore::XMLHttpRequest::didTimeout): exit early if internalAbort asks so

  • xml/XMLHttpRequest.h:

LayoutTests:

Adding reentrant-cancel-abort.html (from https://codereview.chromium.org/76133002/)
that crashes without the patch
Updated reentrant-cancel.html test to expect the exception
that is now hit in initSend function (since a XHR open() call is aborted)

  • http/tests/xmlhttprequest/reentrant-cancel-abort-expected.txt: Added.
  • http/tests/xmlhttprequest/reentrant-cancel-abort.html: Added.
  • http/tests/xmlhttprequest/reentrant-cancel.html:
12:46 AM Changeset in webkit [182526] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r174137 - Stack overflow with enormous SVG filter
https://bugs.webkit.org/show_bug.cgi?id=63290

Prevent building an SVG filter if it has more than 200 FilterEffect nodes in its map
regardless whether they will be connected to its lastEffect or not. Also discard any
filter which has more 100 contributing FilterEffect nodes in its tree.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2014-09-30
Reviewed by Dean Jackson.

Tests: svg/filters/svg-deeply-nested-crash.html

  • platform/graphics/filters/FilterEffect.cpp:

(WebCore::collectEffects):
(WebCore::FilterEffect::totalNumberOfEffectInputs):

  • platform/graphics/filters/FilterEffect.h:

-- Add a method to return the total number of input FilterEffect's contributing to a FilterEffect.

  • rendering/svg/RenderSVGResourceFilter.cpp:

(WebCore::RenderSVGResourceFilter::buildPrimitives):
-- Do not build a filter if it has more than 200 FilterEffects in its map.
(WebCore::RenderSVGResourceFilter::applyResource):
-- Discard a filter after it was built if it has more than 100 FilterEffects in its tree.

LayoutTests:
Stack overflow with enormous SVG filter.
https://bugs.webkit.org/show_bug.cgi?id=63290.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2014-09-30
Reviewed by Dean Jackson.

Test if an SVG filter with deeply nested tree of FilterEffects can be loaded
with no crash. Make sure other valid filters can still be referenced by SVG
drawing elements. An SVG Filter will be ignored if the number of effects in
its map is greater than 200 or the total number of effects connected to its
last effect is greater than 100.

  • svg/filters/svg-deeply-nested-crash-expected.txt: Added.
  • svg/filters/svg-deeply-nested-crash.html: Added.
12:44 AM Changeset in webkit [182525] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

Remove CSS functions min() and max() which had been dropped from specification
https://bugs.webkit.org/show_bug.cgi?id=143440

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-08
Reviewed by Darin Adler.

No new tests, No Behavior changes.

  • css/CSSCalculationValue.cpp:

(WebCore::CSSCalcValue::create):

  • css/CSSParser.cpp:

(WebCore::CSSParser::isCalculation):

12:29 AM Changeset in webkit [182524] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r173848 - WebSocket crash when a connection is closed from server side
https://bugs.webkit.org/show_bug.cgi?id=137009
rdar://problem/18333977
rdar://problem/12708225

Reviewed by Brady Eidson.

I don't think that this can be tested with our test server.

  • Modules/websockets/WebSocketChannel.cpp:

(WebCore::WebSocketChannel::WebSocketChannel): Added logging.
(WebCore::WebSocketChannel::~WebSocketChannel): Ditto.
(WebCore::WebSocketChannel::close): Protect self, because startClosingHandshake
can release the last reference.
(WebCore::WebSocketChannel::fail): Added an assertion that the channel is always
closed after this function.
(WebCore::WebSocketChannel::startClosingHandshake): Protect self, and don't change
the stack from closed back to closing if after failing to send closing handshake.
(WebCore::WebSocketChannel::processOutgoingFrameQueue): Protect self.

12:09 AM Changeset in webkit [182523] by Philippe Normand
  • 2 edits
    1 add in trunk/Source/WebCore

[GStreamer] extra-headers and keep-alive properties for HTTP source element
https://bugs.webkit.org/show_bug.cgi?id=143480

Reviewed by Carlos Garcia Campos.

Keep the resource loader around when persistent HTTP connection
support is enabled. The keep-alive property is set to false by
default. Also before sending the HTTP request we now check the
contents of the extra-headers GstStructure and set additional
headers based on the structure contents.

Patch inspired by GStreamer's souphttpsrc element.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webkit_web_src_init):
(webKitWebSrcFinalize):
(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStop): Clear resource loader only for non-persistent connections.
(webKitWebSrcSetExtraHeader): Utility function to append headers
to an existing request based on a GValue contents.
(webKitWebSrcProcessExtraHeaders): Parse a GValue and set headers
based on its contents.
(webKitWebSrcStart): Extra headers and persistent connection
support. The resource loader is now lazily initialized here.

12:02 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)

Apr 7, 2015:

11:41 PM Changeset in webkit [182522] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Fix the build.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::drawGlyphs):

  • platform/spi/cg/CoreGraphicsSPI.h:
11:03 PM Changeset in webkit [182521] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, another iOS build fix after r182516.

I missed another use of MAC_OS_X_VERSION_MIN_REQUIRED without a
PLATFORM(MAC) check.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:
10:57 PM Changeset in webkit [182520] by commit-queue@webkit.org
  • 3 edits
    2 adds in trunk

Bug 142887 - role progress bar does not support indeterminate state
https://bugs.webkit.org/show_bug.cgi?id=142887

Patch by Michael Peechatt <mpeechatt@gmail.com> on 2015-04-07
Reviewed by Chris Fleizach.

Source/WebCore:

Test: platform/mac/accessibility/progressbar-indeterminate.html

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):
When getting min or max value of an indeterminate progress indicator, return 0.
This is so VoiceOver will recognize it as indeterminate.

LayoutTests:

  • platform/mac/accessibility/progressbar-indeterminate-expected.txt: Added.
  • platform/mac/accessibility/progressbar-indeterminate.html: Added.

Test that checks if 0 is returned for indetermiate progress indicators when
aria min and max values are non zero.

10:44 PM Changeset in webkit [182519] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, speculative iOS build fix after r182516.

Add #if PLATFORM(MAC) checks.

  • platform/spi/cg/CoreGraphicsSPI.h:
10:31 PM Changeset in webkit [182518] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Try to fix incremental builds by forcing *InternalSettings* to get
regenerated.

  • testing/InternalSettings.idl:
9:24 PM Changeset in webkit [182517] by Chris Dumez
  • 4 edits
    2 adds in trunk

Open WebSockets should not prevent a page from entering PageCache
https://bugs.webkit.org/show_bug.cgi?id=143505
<rdar://problem/19923085>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Open WebSockets should not prevent a page from entering PageCache. This
is currently causing mobile.nytimes.com to not be page-cacheable.

In this patch, We close open WebSockets when entering the page cache
and fire the "close" events after resuming, similarly to what we did
for XMLHttpRequest in r181480. This gives a chance for the content to
handle the 'close' event (with wasClean being false and code being
1006) in order to reopen the connection if necessary.

Test: http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html

  • Modules/websockets/WebSocket.cpp:

(WebCore::WebSocket::WebSocket):
(WebCore::WebSocket::canSuspend):
(WebCore::WebSocket::suspend):
(WebCore::WebSocket::resume):
(WebCore::WebSocket::resumeTimerFired):
(WebCore::WebSocket::didClose):

  • Modules/websockets/WebSocket.h:

LayoutTests:

Add a layout test to check that an open WebSocket does not prevent a
page from entering page cache and that a 'close' event is fired after
resuming (restoring from the page cache).

  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache-expected.txt: Added.
  • http/tests/websocket/tests/hybi/closed-when-entering-page-cache.html: Added.
9:15 PM Changeset in webkit [182516] by Simon Fraser
  • 11 edits in trunk/Source/WebCore

Add experimental code to use custom font dilation when rendering into non-opaque contexts
https://bugs.webkit.org/show_bug.cgi?id=143508

Reviewed by Sam Weinig.

Add GraphicsContext::setAntialiasedFontDilationEnabled(), and set it to true
when rendering into a compositing layer which is not opaque (at the same location
where we disable font smoothing).

If Settings::antialiasedFontDilationEnabled() is true, when rendering non-smoothed
text (and if CSS hasn't opted into antialiased mode), use custom font dilation
parameters, chosen using a light/medium/dark heuristic, to make this text
match more closely with LCD-smoothed text.

  • page/Settings.cpp:

(WebCore::Settings::Settings):
(WebCore::Settings::setAntialiasedFontDilationEnabled): Set global state
in FontCascade (which can't easily get at Settings). This it not ideal,
but is temporary.

  • page/Settings.h:

(WebCore::Settings::antialiasedFontDilationEnabled):

  • page/Settings.in: Can't autogenerate this setting any more.
  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::setAntialiasedFontDilationEnabled): Set the global.
(WebCore::FontCascade::antialiasedFontDilationEnabled):

  • platform/graphics/FontCascade.h:
  • platform/graphics/GraphicsContext.cpp:

(WebCore::GraphicsContext::setAntialiasedFontDilationEnabled): Set graphics state
to say that we should do dilation of antialiased text.

  • platform/graphics/GraphicsContext.h:

(WebCore::GraphicsContextState::GraphicsContextState):
(WebCore::GraphicsContext::antialiasedFontDilationEnabled):

  • platform/graphics/ca/mac/PlatformCALayerMac.mm:

(PlatformCALayer::drawLayerContents): If the layer is not opaque, enable the
dilated text code path.

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::dilationSizeForTextColor): Heuristic (values chosen empirically) to
computed custom dilation based on foreground color.
(WebCore::FontCascade::drawGlyphs): Set the custom dilation parameters, and the
antialiasing state if we're not doing smoothing, and CSS hasn't opted into the
antialiased path.

  • platform/spi/cg/CoreGraphicsSPI.h: New SPI.
8:40 PM Changeset in webkit [182515] by ap@apple.com
  • 2 edits in trunk/Tools

PageVisibilityStateWithWindowChanges should only be enabled on Yosemite
rdar://problem/20461342

  • TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm:
8:39 PM Changeset in webkit [182514] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Perf dashboard should have a way of marking outliers
https://bugs.webkit.org/show_bug.cgi?id=143466

Reviewed by Chris Dumez.

Address kling's in-person comment to notify users when the new run status is saved in the database.

  • public/v2/app.js:

(App.PaneController._selectedItemIsMarkedOutlierDidChange)

  • public/v2/chart-pane.css: Fixed a typo.
6:51 PM Changeset in webkit [182513] by commit-queue@webkit.org
  • 9 edits
    3 deletes in trunk

Unreviewed, rolling out r182511.
https://bugs.webkit.org/show_bug.cgi?id=143507

caused debug test failures (Requested by alexchristensen on
#webkit).

Reverted changeset:

"Block popups from content extensions."
https://bugs.webkit.org/show_bug.cgi?id=143497
http://trac.webkit.org/changeset/182511

6:08 PM Changeset in webkit [182512] by mmaxfield@apple.com
  • 5 edits in trunk/Source/WebCore

[Cocoa] System fonts do not get correct tracking
https://bugs.webkit.org/show_bug.cgi?id=143395

Reviewed by Ryosuke Niwa.

Inside FontPlatformData, we have two CTFonts. If the user has specified
-webkit-system-font, we will pass in a CTFont, and the FontPlatformData
will wrap it. However, we will then roundtrip through CGFont in order
to create a second CTFont. We were basing our tracking and system
font knowledge off of this round-tripped font instead of the original font.

Note that this design is terrible and needs to be overhauled.
FontPlatformData should only have a single platform font inside it.

This patch also caches whether or not a font is a system font.

No new tests because it is impossible to test the tracking of the
system font in a robust way.

  • platform/graphics/Font.cpp:

(WebCore::Font::Font): Rearrange member variables.

  • platform/graphics/Font.h: Move member variables around for better

packing, and cache whether or not the font is a system font.

  • platform/graphics/FontData.h: Add comment
  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformInit): Cache whether or not the font is a system
font.
(WebCore::hasCustomTracking): Use cached value.
(WebCore::canUseFastGlyphAdvanceGetter):
(WebCore::Font::platformWidthForGlyph):

5:38 PM Changeset in webkit [182511] by commit-queue@webkit.org
  • 9 edits
    3 adds in trunk

Block popups from content extensions.
https://bugs.webkit.org/show_bug.cgi?id=143497

Patch by Alex Christensen <achristensen@webkit.org> on 2015-04-07
Reviewed by Brady Eidson.

Source/WebCore:

Test: http/tests/contentextensions/popups.html

  • loader/ResourceLoadInfo.cpp:

(WebCore::readResourceType):

  • loader/ResourceLoadInfo.h:
  • page/DOMWindow.cpp:

(WebCore::DOMWindow::open):

  • page/UserContentController.cpp:

(WebCore::UserContentController::actionsForResourceLoad):

  • page/UserContentController.h:

Check content extensions before opening a window.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):
Added popup test.

LayoutTests:

  • http/tests/contentextensions/popups-expected.txt: Added.
  • http/tests/contentextensions/popups.html: Added.
  • http/tests/contentextensions/popups.html.json: Added.
4:53 PM Changeset in webkit [182510] by bshafiei@apple.com
  • 5 edits in branches/safari-600.5.17-branch/Source

Versioning.

4:42 PM Changeset in webkit [182509] by benjamin@webkit.org
  • 6 edits in trunk

Get the features.json files ready for open contributions
https://bugs.webkit.org/show_bug.cgi?id=143436

Reviewed by Darin Adler.

Source/JavaScriptCore:

  • features.json:

Source/WebCore:

  • features.json:

Tools:

  • Scripts/webkitpy/style/checkers/jsonchecker.py:

(JSONFeaturesChecker.check):
Extend the syntax checking a bit, but leave everything non-mandatory
very loose until we figure what fields are important.

4:37 PM Changeset in webkit [182508] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

More unreviewed fixing API tests.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Don't check for javascript protocol.

4:33 PM Changeset in webkit [182507] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.5.17.1

New tag.

4:27 PM Changeset in webkit [182506] by bshafiei@apple.com
  • 7 edits in branches/safari-600.5.17-branch/Source

Merged r181628. rdar://problem/20394343

4:21 PM Changeset in webkit [182505] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[Mac] never update caption user style sheet during parsing
https://bugs.webkit.org/show_bug.cgi?id=143499

Reviewed by Jer Noble.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::CaptionUserPreferencesMediaAF::setInterestedInCaptionPreferenceChanges):
(WebCore::CaptionUserPreferencesMediaAF::captionPreferencesChanged): Ignore a

"preferences changed" notification fired while registering for said notification, we
already create and insert the style sheet after a brief delay anyway.

  • page/CaptionUserPreferencesMediaAF.h:
4:14 PM Changeset in webkit [182504] by bshafiei@apple.com
  • 5 edits in branches/safari-600.5.17-branch/Source

Versioning.

4:10 PM Changeset in webkit [182503] by bshafiei@apple.com
  • 1 copy in branches/safari-600.5.17-branch

New Branch.

4:09 PM Changeset in webkit [182502] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Unreviewed build fix after r182494.

  • platform/win/ContextMenuItemWin.cpp:

(WebCore::ContextMenuItem::ContextMenuItem): Deleted.

3:56 PM Changeset in webkit [182501] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix the build.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _setFixedLayoutSize:]):

3:49 PM Changeset in webkit [182500] by achristensen@apple.com
  • 4 edits in trunk/Source/WebCore

Unreviewed fixing API tests.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):

  • platform/URL.cpp:

(WebCore::URL::init):

  • platform/URL.h:

(WebCore::URL::protocolIsData):
(WebCore::URL::protocolIsJavaScript): Deleted.
Revert part of r182492 that changed URL.h.

3:37 PM Changeset in webkit [182499] by timothy_horton@apple.com
  • 10 edits
    1 add in trunk

Expose and test fixedLayoutSize via modern WebKit SPI
https://bugs.webkit.org/show_bug.cgi?id=143500

Reviewed by Simon Fraser.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _isFixedLayoutEnabled]):
(-[WKWebView _setFixedLayoutEnabled:]):
(-[WKWebView _fixedLayoutSize]):
(-[WKWebView _setFixedLayoutSize:]):

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView _isFixedLayoutEnabled]):
(-[WKView _setFixedLayoutEnabled:]):
(-[WKView _fixedLayoutSize]):
(-[WKView _setFixedLayoutSize:]):
Add API for adjusting the fixed layout size, and whether or not we use it.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::transitionToCommittedForNewPage):
Repair a mistake I made in r139822, where I brought odd TILED_BACKING_STORE-only
logic (which disables scrollbars if fixedLayoutSize is enabled) to the rest of the ports.
Put it back as TILED_BACKING_STORE-only.

Persist the fixedLayoutSize through view creation; we already persist the enabled state,
but not the size, which doesn't make any sense.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::fixedLayoutSize):

  • WebProcess/WebPage/WebPage.h:

Add a fixedLayoutSize() getter.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/FixedLayoutSize.mm: Added.

(-[FixedLayoutSizeNavigationDelegate webView:didFinishNavigation:]):
(TEST):
Add a test that verifies that fixedLayoutSize works at all, that
it persists through a navigation, and that turning it back off reverts to
laying out at the size of the view.

3:09 PM Changeset in webkit [182498] by fpizlo@apple.com
  • 20 edits
    1 add in trunk/Source/JavaScriptCore

Constant folding of typed array properties should be handled by AI rather than strength reduction
https://bugs.webkit.org/show_bug.cgi?id=143496

Reviewed by Geoffrey Garen.

Handling constant folding in AI is better because it precludes us from having to fixpoint the CFA
phase and whatever other phase did the folding in order to find all constants.

This also removes the TypedArrayWatchpoint node type because we can just set the watchpoint
directly.

This also fixes a bug in FTL lowering of GetTypedArrayByteOffset. The bug was previously not
found because all of the tests for it involved the property getting constant folded. I found that
the codegen was bad because an earlier version of the patch broke that constant folding. This
adds a new test for that node type, which makes constant folding impossible by allocating a new
typed array every type. The lesson here is: if you write a test for something, run the test with
full IR dumps to make sure it's actually testing the thing you want it to test.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetFoldableView):
(JSC::DFG::Graph::tryGetFoldableViewForChild1): Deleted.

  • dfg/DFGGraph.h:
  • dfg/DFGNode.h:

(JSC::DFG::Node::hasTypedArray): Deleted.
(JSC::DFG::Node::typedArray): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::jumpForTypedArrayOutOfBounds):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):
(JSC::DFG::StrengthReductionPhase::foldTypedArrayPropertyToConstant): Deleted.
(JSC::DFG::StrengthReductionPhase::prepareToFoldTypedArray): Deleted.

  • dfg/DFGWatchpointCollectionPhase.cpp:

(JSC::DFG::WatchpointCollectionPhase::handle):
(JSC::DFG::WatchpointCollectionPhase::addLazily):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileGetTypedArrayByteOffset):
(JSC::FTL::LowerDFGToLLVM::typedArrayLength):

  • tests/stress/fold-typed-array-properties.js:

(foo):

  • tests/stress/typed-array-byte-offset.js: Added.

(foo):

2:42 PM Changeset in webkit [182497] by andersca@apple.com
  • 7 edits in trunk/Source/WebCore

More work on making the application cache storage be per page
https://bugs.webkit.org/show_bug.cgi?id=143498

Reviewed by Andreas Kling.

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::create):
(WebCore::ApplicationCacheStorage::singleton):

  • loader/appcache/ApplicationCacheStorage.h:
  • page/Page.cpp:

(WebCore::Page::Page):

  • page/Page.h:

(WebCore::Page::applicationCacheStorage):

  • page/PageConfiguration.cpp:

(WebCore::PageConfiguration::PageConfiguration): Deleted.

  • page/PageConfiguration.h:
2:42 PM Changeset in webkit [182496] by rniwa@webkit.org
  • 14 edits
    1 add in trunk/Websites/perf.webkit.org

Perf dashboard should have a way of marking outliers
https://bugs.webkit.org/show_bug.cgi?id=143466

Reviewed by Chris Dumez.

Added UI to mark a data point as an outlier as well as a button to toggle the visibility of outliers.
Added a new privileged API /privileged-api/update-run-status to store this boolean flag.

  • init-database.sql: Added run_marked_outlier column to test_runs table.
  • public/admin/tests.php:
  • public/api/runs.php:

(main): Only emit Cache-Control and Expires headers in v1 UI.
(RunsGenerator::format_run): Emit markedOutlier.

  • public/include/admin-header.php:
  • public/include/db.php:

(Database::is_true): Made it static.

  • public/include/manifest.php:

(Manifest::platforms):

  • public/index.html: Call into /api/runs/ with ?cache=true.
  • public/privileged-api/update-run-status.php: Added.

(main): Updates the newly added column in test_runs table.

  • public/v2/app.js:

(App.Pane._fetch):
(App.Pane.refetchRuns): Extracted from App.Pane._fetch.
(App.Pane._didFetchRuns): Renamed from _updateChartData.
(App.Pane._setNewChartData): Added. Pick the right time series based based on the value of showOutlier.
Cloning chartData is necessary when toggling the outlier visibility or using statistics tools because
the interactive chart component only observes changes to chartData and not individual properties of it.
(App.Pane._highlightPointsMarkedAsOutlier): Added. Highlight points marked as outliers.
(App.Pane._movingAverageOrEnvelopeStrategyDidChange): Call to _setNewChartData replaced the code to
clone chartData here.

(App.PaneController.actions.toggleShowOutlier): Toggle the visibility of points marked as outliers by
invoking App.Pane._setNewChartData.
(App.PaneController._detailsChanged): Don't hide the analysis pane when details changed since keep
opening the pane for marking points as outliers would be annoying.
(App.PaneController._updateCanAnalyze): Update 'cannotMarkOutlier' as well as 'cannotAnalyze'.
(App.PaneController.selectedMeasurement): Added.
(App.PaneController.showOutlierTitle): Added.
(App.PaneController._selectedItemIsMarkedOutlierDidChange): Added. Call out to setMarkedOutlier to
mark the selected point as an outlier via the newly added privileged API.

  • public/v2/chart-pane.css: Updated styles.
  • public/v2/data.js:

(PrivilegedAPI._post): Report the semantic errors.
(Measurement.prototype.markedOutlier): Added.
(Measurement.prototype.setMarkedOutlier): Added. Uses PrivilegedAPI to update the database.
(RunsData.prototype.timeSeriesByCommitTime): Added a new argument, includeOutliers, to indicate
whether the time series should include measurements marked as outliers or not.
(RunsData.prototype.timeSeriesByBuildTime): Ditto.
(RunsData.prototype._timeSeriesByTimeInternal): Extracted from timeSeriesByCommitTime and
timeSeriesByBuildTime to share code. Now ignores measurements marked as outliers if needed.

  • public/v2/index.html: Added an icon for showing and hiding outliers. Also added a checkbox to

mark individual points as outliers.

  • public/v2/interactive-chart.js:

(App.InteractiveChartComponent._selectClosestPointToMouseAsCurrentItem): Re-enable the distance
heuristics that takes vertical closeness into account. This heuristics is more useful when marking
some points as outliers. This heuristics was disabled because the behavior was unpredictable but
with the arrow key navigation support, this is no longer an issue.

  • public/v2/manifest.js:

(App.Manifest._formatFetchedData): Added showOutlier to the chart data. This function dynamically
updates the time series in this chart data in order to include or exclude outliers.

2:34 PM Changeset in webkit [182495] by mmirman@apple.com
  • 33 edits
    1 add in trunk

Source and stack information should get appended only to native errors
Source/JavaScriptCore:

and should be added directly after construction rather than when thrown.
This fixes frozen objects being unfrozen when thrown while conforming to
ecma script standard and other browser behavior.
rdar://problem/19927293
https://bugs.webkit.org/show_bug.cgi?id=141871

Reviewed by Geoffrey Garen.

Appending stack, source, line, and column information to an object whenever that object is thrown
is incorrect because it violates the ecma script standard for the behavior of throw. Suppose for example
that the object being thrown already has one of these properties or is frozen. Adding the properties
would then violate the frozen contract or overwrite those properties. Other browsers do not do this,
and doing this causes unnecessary performance hits in code with heavy use of the throw construct as
a control flow construct rather than just an error reporting mechanism.

Because WebCore adds "native" errors which do not inherit from any JSC native error,
appending the error properties as a seperate call after construction of the error is required
to avoid having to manually truncate the stack and gather local source information due to
the stack being extended by a nested call to construct one of the native jsc error.

  • interpreter/Interpreter.cpp:

(JSC::Interpreter::execute):

  • interpreter/Interpreter.h:
  • parser/ParserError.h:

(JSC::ParserError::toErrorObject):

  • runtime/CommonIdentifiers.h:
  • runtime/Error.cpp:

(JSC::createError):
(JSC::createEvalError):
(JSC::createRangeError):
(JSC::createReferenceError):
(JSC::createSyntaxError):
(JSC::createTypeError):
(JSC::createNotEnoughArgumentsError):
(JSC::createURIError):
(JSC::createOutOfMemoryError):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::FindFirstCallerFrameWithCodeblockFunctor):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator()):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::foundCallFrame):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::index):
(JSC::addErrorInfoAndGetBytecodeOffset): Added.
(JSC::addErrorInfo): Added special case for appending complete error info
to a newly constructed error object.

  • runtime/Error.h:
  • runtime/ErrorConstructor.cpp:

(JSC::Interpreter::constructWithErrorConstructor):
(JSC::Interpreter::callErrorConstructor):

  • runtime/ErrorInstance.cpp:

(JSC::appendSourceToError): Moved from VM.cpp
(JSC::FindFirstCallerFrameWithCodeblockFunctor::FindFirstCallerFrameWithCodeblockFunctor):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator()):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::foundCallFrame):
(JSC::FindFirstCallerFrameWithCodeblockFunctor::index):
(JSC::addErrorInfoAndGetBytecodeOffset):
(JSC::ErrorInstance::finishCreation):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::create):

  • runtime/ErrorPrototype.cpp:

(JSC::ErrorPrototype::finishCreation):

  • runtime/ExceptionFuzz.cpp:

(JSC::doExceptionFuzzing):

  • runtime/ExceptionHelpers.cpp:

(JSC::createError):
(JSC::createInvalidFunctionApplyParameterError):
(JSC::createInvalidInParameterError):
(JSC::createInvalidInstanceofParameterError):
(JSC::createNotAConstructorError):
(JSC::createNotAFunctionError):
(JSC::createNotAnObjectError):
(JSC::throwOutOfMemoryError):
(JSC::createStackOverflowError): Deleted.
(JSC::createOutOfMemoryError): Deleted.

  • runtime/ExceptionHelpers.h:
  • runtime/JSArrayBufferConstructor.cpp:

(JSC::constructArrayBuffer):

  • runtime/JSArrayBufferPrototype.cpp:

(JSC::arrayBufferProtoFuncSlice):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::create):
(JSC::JSGenericTypedArrayView<Adaptor>::createUninitialized):

  • runtime/NativeErrorConstructor.cpp:

(JSC::Interpreter::constructWithNativeErrorConstructor):
(JSC::Interpreter::callNativeErrorConstructor):

  • runtime/VM.cpp:

(JSC::VM::throwException):
(JSC::appendSourceToError): Moved to Error.cpp
(JSC::FindFirstCallerFrameWithCodeblockFunctor::FindFirstCallerFrameWithCodeblockFunctor): Deleted.
(JSC::FindFirstCallerFrameWithCodeblockFunctor::operator()): Deleted.
(JSC::FindFirstCallerFrameWithCodeblockFunctor::foundCallFrame): Deleted.
(JSC::FindFirstCallerFrameWithCodeblockFunctor::index): Deleted.

  • tests/stress/freeze_leek.js: Added.

Source/WebCore:

and should be added directly after construction rather than when thrown.
This fixes frozen objects being unfrozen when thrown while conforming to
ecma script standard and other browser behavior.
rdar://problem/19927293
https://bugs.webkit.org/show_bug.cgi?id=141871

Reviewed by Geoffrey Garen.

Covered by existing tests.

Sets line, column, source and stack information for DOMExceptions as
expected by the webinspector for native errors.

  • bindings/js/JSDOMBinding.cpp:

(WebCore::setDOMException):

LayoutTests:

and should be added after construction rather than when thrown.
This fixes frozen objects being unfrozen when thrown while conforming to
ecma script standard and other browser behavior.
rdar://problem/19927293
https://bugs.webkit.org/show_bug.cgi?id=141871

Reviewed by Geoffrey Garen.

Fixes tests to throw new Errors such that they will contain line, column, and stack information
as expected, and fixes the column in the error in the expected output.

  • http/tests/w3c/resources/testharness.js: Other browsers don't expect stack information

with this test, but we do, and so the AssertionError should include stack information gathered from Error.
This could also have been fixed by changing expectations, but its a good idea to check the stack anyway.

  • js/dom/exception-linenums-in-html-1.html: Throw "new Error()" rather than "{}".
  • js/dom/exception-linenums-in-html-2.html: ditto.
  • js/dom/exception-linenums-in-html-3.html: ditto.
  • js/dom/script-tests/stack-trace.js: ditto.

(throwError): ditto.
(h): ditto.
(inlineableThrow): ditto.
(dfgThing.get willThrow): ditto.
(dfgThing.willThrowFunc): ditto.

  • js/dom/stack-trace-expected.txt: fixed error column expectation.
  • js/exception-properties-expected.txt: ditto.
  • js/script-tests/exception-linenums.js:

(exceptionInFunction): throw "new Error()" rather than "{}".
(firstPropIsGetter.get getter): ditto
(secondPropIsGetter.get getter): ditto
(firstPropIsSetter.set setter): ditto
(secondPropIsSetter.set setter): ditto

  • js/script-tests/exception-properties.js: now checking that column, line, and sourceURL are existant on a "new Error"

since we now add these at error construction rather than at error throwing.

  • platform/mac/http/tests/media/media-source/mediasource-addsourcebuffer-expected.txt: fixed expectation to match.
  • platform/mac/http/tests/media/media-source/mediasource-sourcebuffer-mode-expected.txt: ditto.
2:29 PM Changeset in webkit [182494] by beidson@apple.com
  • 10 edits in trunk/Source

ContextMenuItem refactoring
https://bugs.webkit.org/show_bug.cgi?id=143485

Reviewed by Beth Dakin.

Source/WebCore:

  • platform/ContextMenuItem.h:

(WebCore::ContextMenuItem::isNull):

  • platform/gtk/ContextMenuItemGtk.cpp:

(WebCore::ContextMenuItem::ContextMenuItem):

  • platform/mac/ContextMenuItemMac.mm:

(WebCore::ContextMenuItem::ContextMenuItem):
(WebCore::ContextMenuItem::platformDescription):
(WebCore::ContextMenuItem::setSubMenu):
(WebCore::ContextMenuItem::releasePlatformDescription): Deleted.
(WebCore::ContextMenuItem::getPlatformDescription): Deleted.

  • platform/mac/ContextMenuMac.mm:

(WebCore::ContextMenu::appendItem):
(WebCore::ContextMenu::insertItem):
(WebCore::platformMenuDescription):

  • platform/win/ContextMenuItemWin.cpp:

(WebCore::ContextMenuItem::ContextMenuItem):

Source/WebKit/mac:

  • WebCoreSupport/WebContextMenuClient.mm:

(WebContextMenuClient::contextMenuItemSelected):

Source/WebKit2:

  • Shared/mac/NativeContextMenuItem.mm:

(WebKit::NativeContextMenuItem::NativeContextMenuItem):

2:28 PM Changeset in webkit [182493] by Joseph Pecoraro
  • 15 edits in trunk

Web Inspector: ES6: Show Symbol properties on Objects
https://bugs.webkit.org/show_bug.cgi?id=141279

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Runtime.json:

Give PropertyDescriptor a reference to the Symbol RemoteObject
if the property is a symbol property.

  • inspector/InjectedScriptSource.js:

Enumerate symbol properties on objects.

Source/WebInspectorUI:

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Models/PropertyDescriptor.js:

(WebInspector.PropertyDescriptor.get symbol):

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject.wrappedCallback):
Update new PropertyDescriptor call site.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement._logSymbolProperty):
Provide a context menu for rows with Symbol properties to log
the Symbol property, and therefore get a reference to it.

  • UserInterface/Views/ObjectTreeView.js:

(WebInspector.ObjectTreeView.comparePropertyDescriptors):
Better handle symbol properties in sorting.

  • UserInterface/Views/TypePropertiesSection.js:

(WebInspector.TypePropertiesSection.PropertyComparator):
Return better value when values are equal.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/remote-object-get-properties-expected.txt:
  • inspector/model/remote-object-get-properties.html:
  • inspector/model/remote-object.html:

Update tests to include objects with Symbol properties.

2:17 PM Changeset in webkit [182492] by achristensen@apple.com
  • 7 edits in trunk/Source/WebCore

Optimize content extensions interpreting speed.
https://bugs.webkit.org/show_bug.cgi?id=143490

Reviewed by Brady Eidson.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Measure total time added by content extensions.

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::DFABytecodeCompiler::compileNode):
(WebCore::ContentExtensions::DFABytecodeCompiler::compile):
When jumping to the root, don't re-add all the actions.

  • contentextensions/DFABytecodeCompiler.h:
  • platform/URL.cpp:

(WebCore::URL::init):

  • platform/URL.h:

(WebCore::URL::protocolIsJavaScript): Added.

2:11 PM Changeset in webkit [182491] by Simon Fraser
  • 9 edits in trunk/Source

Add a new setting, AntialiasedFontDilationEnabled, exposed via WK2.
https://bugs.webkit.org/show_bug.cgi?id=143495

Reviewed by Tim Horton.
Source/WebCore:

Add a new Setting, antialiasedFontDilationEnabled, which defaults to true. This
will be used in an upcoming patch.

  • page/Settings.in:

Source/WebKit2:

Exposed the antialiasedFontDilationEnabled setting via WK C SPI and Objective-C SPI.

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetAntialiasedFontDilationEnabled):
(WKPreferencesGetAntialiasedFontDilationEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • UIProcess/API/Cocoa/WKPreferences.mm:

(-[WKPreferences _antialiasedFontDilationEnabled]):
(-[WKPreferences _setAntialiasedFontDilationEnabled:]):

  • UIProcess/API/Cocoa/WKPreferencesPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

1:50 PM Changeset in webkit [182490] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.25.1/Source/WebCore

Merged r182292. rdar://problem/20407648

1:48 PM Changeset in webkit [182489] by aestes@apple.com
  • 7 edits in trunk/Source/WebCore

[Content Filtering] Add logging
https://bugs.webkit.org/show_bug.cgi?id=143470

Reviewed by Daniel Bates.

Added a new ContentFiltering logging channel, and started logging some useful diagnostic messages.

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::~ContentFilter):
(WebCore::ContentFilter::willSendRequest):
(WebCore::ContentFilter::startFilteringMainResource):
(WebCore::ContentFilter::responseReceived):
(WebCore::ContentFilter::dataReceived):
(WebCore::ContentFilter::notifyFinished):
(WebCore::ContentFilter::didDecide):

  • platform/Logging.h:
  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::canHandleRequest):
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync):

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::enabled):
(WebCore::NetworkExtensionContentFilter::unblockHandler):
(WebCore::NetworkExtensionContentFilter::handleDecision):

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::enabled):
(WebCore::ParentalControlsContentFilter::updateFilterState):

  • testing/MockContentFilter.cpp:

(WebCore::MockContentFilter::enabled):
(WebCore::MockContentFilter::unblockHandler):
(WebCore::MockContentFilter::maybeDetermineStatus):

1:45 PM Changeset in webkit [182488] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.25.1/Source

Versioning.

1:42 PM Changeset in webkit [182487] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.25.1

New tag.

1:23 PM Changeset in webkit [182486] by eric.carlson@apple.com
  • 16 edits in trunk/Source/WebCore

[Mac] video playing to external device should not be interrupted
https://bugs.webkit.org/show_bug.cgi?id=143492

Reviewed by Jer Noble.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.handlePanelTransitionEnd): Drive-by fix to make sure the controls are

not hidden if the opacity timer is primed before they go into a state where they should
never be hidden.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::canPlayToWirelessPlaybackTarget): Make it const.
(WebCore::HTMLMediaElement::isPlayingToWirelessPlaybackTarget): New.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::canPlayToWirelessPlaybackTarget): New. Short-circuit call to

client when we already know the answer.

(WebCore::HTMLMediaSession::isPlayingToWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaSession::startPlayingToPlaybackTarget): Ditto.
(WebCore::HTMLMediaSession::stopPlayingToPlaybackTarget): Ditto.

  • html/HTMLMediaSession.h:
  • platform/audio/MediaSession.cpp:

(WebCore::MediaSession::canPlayToWirelessPlaybackTarget): Deleted, moved inline and neutered

because only HTMLMediaSession needs to use them.

(WebCore::MediaSession::startPlayingToPlaybackTarget): Ditto.
(WebCore::MediaSession::stopPlayingToPlaybackTarget): Ditto.

  • platform/audio/MediaSession.h:

(WebCore::MediaSession::canPlayToWirelessPlaybackTarget):
(WebCore::MediaSession::isPlayingToWirelessPlaybackTarget):
(WebCore::MediaSession::startPlayingToPlaybackTarget):
(WebCore::MediaSession::stopPlayingToPlaybackTarget):
(WebCore::MediaSessionClient::canPlayToWirelessPlaybackTarget):
(WebCore::MediaSessionClient::isPlayingToWirelessPlaybackTarget):

  • platform/audio/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::MediaSessionManager):
(WebCore::MediaSessionManager::sessionShouldBeginPlayingToWirelessPlaybackTarget): New.
(WebCore::MediaSessionManager::sessionWillBeginPlayback): Don't interrupt an active session

playing to a target device.

  • platform/audio/MediaSessionManager.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::isPlayingToWirelessPlaybackTarget): New, passthrough.

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::isPlayingToWirelessPlaybackTarget):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:

(WebCore::MediaPlayerPrivateAVFoundationObjC::canPlayToWirelessPlaybackTarget):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget): Explicitly call

when passed a nil or inactive target context.

(WebCore::MediaPlayerPrivateAVFoundationObjC::startPlayingToPlaybackTarget): Add logging.
(WebCore::MediaPlayerPrivateAVFoundationObjC::stopPlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateAVFoundationObjC::isPlayingToWirelessPlaybackTarget): New. Return

true when playing with an active context.

(WebCore::playerKVOProperties): "outputContext" is not observable.

1:14 PM Changeset in webkit [182485] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Should only propagate pressure events with relevant phases
https://bugs.webkit.org/show_bug.cgi?id=143494
-and corresponding-
rdar://problem/20453738

Reviewed by Tim Horton.

We only care about the changed, began, and ended phases.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

12:50 PM Changeset in webkit [182484] by Michael Catanzaro
  • 2 edits in trunk/Tools

Unreviewed. Add myself as a committer.

  • Scripts/webkitpy/common/config/contributors.json:
12:41 PM Changeset in webkit [182483] by fpizlo@apple.com
  • 13 edits in trunk/Source/JavaScriptCore

Make it possible to enable LLVM FastISel
https://bugs.webkit.org/show_bug.cgi?id=143489

Reviewed by Michael Saboff.

The decision to enable FastISel is made by Options.h|cpp, but the LLVM library can disable it if it finds that it is built
against a version of LLVM that doesn't support it. Thereafter, JSC::enableLLVMFastISel is the flag that tells the system
if we should enable it.

  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection):

  • llvm/InitializeLLVM.cpp:

(JSC::initializeLLVMImpl):

  • llvm/InitializeLLVM.h:
  • llvm/InitializeLLVMLinux.cpp:

(JSC::getLLVMInitializerFunction):
(JSC::initializeLLVMImpl): Deleted.

  • llvm/InitializeLLVMMac.cpp:

(JSC::getLLVMInitializerFunction):
(JSC::initializeLLVMImpl): Deleted.

  • llvm/InitializeLLVMPOSIX.cpp:

(JSC::getLLVMInitializerFunctionPOSIX):
(JSC::initializeLLVMPOSIX): Deleted.

  • llvm/InitializeLLVMPOSIX.h:
  • llvm/InitializeLLVMWin.cpp:

(JSC::getLLVMInitializerFunction):
(JSC::initializeLLVMImpl): Deleted.

  • llvm/LLVMAPI.cpp:
  • llvm/LLVMAPI.h:
  • llvm/library/LLVMExports.cpp:

(initCommandLine):
(initializeAndGetJSCLLVMAPI):

  • runtime/Options.cpp:

(JSC::Options::initialize):

11:49 AM CommitterTips edited by Michael Catanzaro
WebKit2 owners exist now, so don't advise reviewers otherwise (diff)
11:35 AM Changeset in webkit [182482] by timothy@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: HierarchicalPathNavigationItem's additionalClassNames should be _additionalClassNames
https://bugs.webkit.org/show_bug.cgi?id=143487

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/HierarchicalPathNavigationItem.js:

(WebInspector.HierarchicalPathNavigationItem.prototype.get _additionalClassNames):

11:06 AM Changeset in webkit [182481] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Bots complain about missing /etc/catalog
https://bugs.webkit.org/show_bug.cgi?id=143484

Reviewed by Chris Dumez.

The libxml2 build on Mac, iOS, and Windows does not provide the set
of default catalog files. We do not actually need these for our
purposes, but we get warnings and some bot flakiness because they
are not present.

We can avoid both problems the same way the Mac and iOS ports do,
by setting the XML_CATALOG_FILES environment variable to 'empty string',
which avoid the warnings and bot problems.

  • Scripts/webkitpy/port/win.py:

(WinPort.setup_environ_for_server): Added.

10:50 AM Changeset in webkit [182480] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r181643 - [GTK] Wrong transfer annotations used in GObject DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=142780

Reviewed by Gustavo Noronha Silva.

We are using transfer none for all methods returning a GObject DOM
Object. That's not true. Only objects derived from Node are
automatically released by the DOM object cache and can be transfer
none. All other objects are added to the cache only to avoid
creating the same wrapper twice for the same core object, but
caller should release the returned reference.

  • bindings/scripts/CodeGeneratorGObject.pm:

(GetTransferTypeForReturnType):
(GenerateFunction):

10:38 AM Changeset in webkit [182479] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.4/Source

Merge r180214 - [GTK] GObject DOM bindings object are cached forever
https://bugs.webkit.org/show_bug.cgi?id=141558

Reviewed by Sergio Villar Senin.

Source/WebCore:

Rework the DOMObjectCache to avoid having to manually clear the
objects when the frame is destroyed, using a FrameDestructionObserver
instead. When a new object associated to a Frame is added to the
cache, a FrameDestructionObserver is created for the frame if
needed, and the DOM object is tracked by the observer too. When
the frame is detached from the page all its objects are cleared,
and if the aren't additional references, the object is finalized
and removed from the cache normally.
This patch also simplifies and modernizes the code to make it
easier to read an maintain.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::DOMObjectCacheData): Add constructor
to initialize its members and simplify the callers.
(WebKit::DOMObjectCacheData::clearObject): Remove the references
added by the cache, ensuring the GObject is not finalized until
the method returns.
(WebKit::DOMObjectCacheData::refObject): Adds a reference owned by
the cache.
(WebKit::domObjectCacheFrameObservers): Map a frame to a FrameDestructionObserver.
(WebKit::getOrCreateDOMObjectCacheFrameObserver): Create a new
FrameDestructionObserver for the given Frame or return the
existing one.
(WebKit::domObjects): Map wrapped object to wrapper object.
(WebKit::DOMObjectCache::forget): Remove the wrapped object from
the cache.
(WebKit::DOMObjectCache::get): Return the wrapped object if it is
in the cache, increasing the cache references.
(WebKit::DOMObjectCache::put): Add the wrapper object to the cache
for the given wrapped object. If it's a Node and has a frame add
the node to the FrameDestructionObserver corresponding to the frame.
(WebKit::getFrameFromHandle): Deleted.
(WebKit::weakRefNotify): Deleted.
(WebKit::DOMObjectCache::clearByFrame): Deleted.
(WebKit::DOMObjectCache::~DOMObjectCache): Deleted.

  • bindings/gobject/DOMObjectCache.h:

Merge r181631 - [GTK] WebKitDOM objects leaking
https://bugs.webkit.org/show_bug.cgi?id=118788

Reviewed by Darin Adler and Sergio Villar Senin.

Source/WebCore:

Use a DOMwindowObserver class, derived from DOMWindowProperty to
be notified when the window object is detached from the frame to
clear the DOM objects associated to that frame in that case too.

  • bindings/gobject/DOMObjectCache.cpp:
10:22 AM Changeset in webkit [182478] by weinig@apple.com
  • 2 edits in trunk/Source/WebCore

Re-add JSReadableStream and JSReadableStreamReader the Xcode project to
make Xcode happy.

  • WebCore.xcodeproj/project.pbxproj:
10:18 AM Changeset in webkit [182477] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit2

Unreviewed build fix; make calls to new SPI conditional on iOS version.

  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame):

10:07 AM Changeset in webkit [182476] by achristensen@apple.com
  • 5 edits
    3 adds in trunk/Tools

Use content extensions in MiniBrowser.
https://bugs.webkit.org/show_bug.cgi?id=143446

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

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.h:
  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate init]):
(-[BrowserAppDelegate showExtensionsManager:]):
(-[BrowserAppDelegate userContentContoller]):

  • MiniBrowser/mac/ExtensionManagerWindowController.h: Added.
  • MiniBrowser/mac/ExtensionManagerWindowController.m: Added.

(-[ExtensionManagerWindowController init]):
(-[ExtensionManagerWindowController windowDidLoad]):
(-[ExtensionManagerWindowController add:]):
(-[ExtensionManagerWindowController remove:]):

  • MiniBrowser/mac/ExtensionManagerWindowController.xib: Added.
  • MiniBrowser/mac/MainMenu.xib:
9:32 AM Changeset in webkit [182475] by Carlos Garcia Campos
  • 11 edits
    2 deletes in releases/WebKitGTK/webkit-2.4/Tools

Merge r176563 - [GTK] Use custom JavaScript instead of DBus to implement WebProcess tests
https://bugs.webkit.org/show_bug.cgi?id=138834

Reviewed by Sergio Villar Senin.

It makes everyting simpler and the tests run faster too, since we
don't need to spawn the private bus and wait until the DBus name
is registered. The web extension registers a new JavaSCript class
with a status method to run the tests, similar to the DBus
method. In the UI process side, tests use webkit_web_view_run_java_script()
instead of sending a DBus message.

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp:

(WebKitDOMNodeFilterTest::create):
(WebKitDOMNodeFilterTest::testTreeWalker):
(WebKitDOMNodeFilterTest::testNodeIterator):
(WebKitDOMNodeFilterTest::webPageFromArgs): Deleted.
(WebKitDOMNodeFilterTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:

(WebKitDOMNodeTest::create):
(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::testTagNames):
(WebKitDOMNodeTest::webPageFromArgs): Deleted.
(WebKitDOMNodeTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp:

(WebKitDOMXPathNSResolverTest::create):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverNative):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverCustom):
(WebKitDOMXPathNSResolverTest::webPageFromArgs): Deleted.
(WebKitDOMXPathNSResolverTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp:

(WebKitFrameTest::create):
(WebKitFrameTest::testMainFrame):
(WebKitFrameTest::testURI):
(WebKitFrameTest::testJavaScriptContext):
(WebKitFrameTest::webPageFromArgs): Deleted.
(WebKitFrameTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:

(testWebKitDOMNodeHierarchyNavigation):
(testWebKitDOMNodeInsertion):
(testWebKitDOMNodeTagNames):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp:

(runTest):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp:

(testWebKitDOMXPathNSResolverNative):
(testWebKitDOMXPathNSResolverCustom):
(beforeAll):
(afterAll):
(runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp:

(webkitFrameTestRun):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:

(testsMap):
(WebProcessTest::add):
(WebProcessTest::create):
(runTest):
(windowObjectClearedCallback):
(webkit_web_extension_initialize):
(methodCallCallback): Deleted.
(webkit_web_extension_initialize_with_user_data): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.h: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::runWebProcessTest):

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
9:05 AM Changeset in webkit [182474] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.4/Tools

Merge r178644 - [GTK] [WK2] TestWebKitWebView snapshot fails
https://bugs.webkit.org/show_bug.cgi?id=120404

Reviewed by Žan Doberšek.

Rework the test to make sure the snapshot is always created at the
desired size.

  • Scripts/run-gtk-tests:

(TestRunner): Unskip /webkit2/WebKitWebView/snapshot.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewSnapshot): Use a fixed size for the document, and
disable scrollbars to make sure the visible area is always the
WebView size.

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::showInWindowAndWaitUntilMapped): Add optional width
and height parameters to create the window with a given size.

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
9:01 AM Changeset in webkit [182473] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Tools

Merge r173832 - [GTK] Test /webkit2/WebKitWebView/can-show-mime-type fails if evince browser plugin is installed
https://bugs.webkit.org/show_bug.cgi?id=136998

Reviewed by Philippe Normand.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewCanShowMIMEType): Remove the check of PDF as
unsupported MIME type.

7:53 AM Changeset in webkit [182472] by svillar@igalia.com
  • 6 edits
    2 adds in trunk

[CSS Grid Layout] Update track sizes after distributing extra space
https://bugs.webkit.org/show_bug.cgi?id=141422

Reviewed by Antti Koivisto.

Source/WebCore:

Both old and new tracks sizing algorithms instruct us to update
the sizes of the content sized tracks only after distributing the
extra space for all the items in the same span group. So far we
were doing it inside distributeSpaceToTracks(), i.e., once for
every single item. That is wrong because it makes the algorithm
order dependent.

Our old implementation looked something like this (pseudocode):

resolveContentBasedTrackSizingFunctions()

foreach item

resolveContentBasedTrackSizingFunctionsForItems() (x4)

distributeSpaceToTracks()

updateTrackSizes()

Now it's done this way (pseudocode):

resolveContentBasedTrackSizingFunctions()

foreach spanGroup

resolveContentBasedTrackSizingFunctionsForItems() (x4)

foreach item in spanGroup

distributeSpaceToTracks()

updateTrackSizes()

As it can be seen the update of track sizes only happens after
processing all the items of a given span group. In order to
accomplish this a new field was added to GridTrack called
tempIncrease which stores per-track increases while distributing
the extra space among the items in the same span group. That
temporal increase could eventually be used to update the
plannedIncrease which is the one we use to finally set the new
size of the track.

This change makes our implementation closer to the spec, removes
the order dependency and ensures that every track satisfies their
min track sizing functions before starting to consider the max
track sizing functions.

Test: fast/css-grid-layout/grid-update-sizes-after-distributing-all.html

  • rendering/RenderGrid.cpp:

(WebCore::GridTrack::plannedSize):
(WebCore::GridTrack::setPlannedSize): New setter.
(WebCore::GridTrack::tempSize): New attribute.
(WebCore::RenderGrid::computeUsedBreadthOfGridTracks):
RenderGrid::distributeSpaceToTracks() no longer updates the track
sizes so we have to do it after the call returns.
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctions):
Call RenderGrid::resolveContentBasedTrackSizingFunctionsForItems()
passing a span group instead of a single item.
(WebCore::RenderGrid::resolveContentBasedTrackSizingFunctionsForItems):
It now receives a span group instead of a single item. Apart from
that we need an extra function to get the unaltered track size (as
the current one returns the base size whenever the growth limit is
infinity).
(WebCore::RenderGrid::distributeSpaceToTracks): This no longer
updates track sizes but only the track's planned size;

  • rendering/RenderGrid.h:

LayoutTests:

  • fast/css-grid-layout/grid-content-sized-columns-resolution-expected.txt:
  • fast/css-grid-layout/grid-content-sized-columns-resolution.html:
  • fast/css-grid-layout/grid-update-sizes-after-distributing-all-expected.txt: Added.
  • fast/css-grid-layout/grid-update-sizes-after-distributing-all.html: Added.
6:28 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
6:28 AM Changeset in webkit [182471] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.4/Source/WTF

Merge r178725 - Fix failed to build for Linux/MIPS64EL
https://bugs.webkit.org/show_bug.cgi?id=124370

Patch by YunQiang Su <wzssyqa@gmail.com> on 2015-01-20
Reviewed by Darin Adler.

Add MIPS64EL support.

  • wtf/Platform.h:
  • wtf/dtoa/utils.h:
6:25 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
6:24 AM Changeset in webkit [182470] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

[GTK] [WebKit1] Crash under WebCore::ScrollView::contentsToWindow()
https://bugs.webkit.org/show_bug.cgi?id=142343

Patch by Milan Crha <mcrha@redhat.com> on 2015-04-07
Reviewed by Carlos Garcia Campos.

Return early from frameRectsChanged() if the plugin widget doesn't
have a parent.

  • platform/gtk/GtkPluginWidget.cpp:

(WebCore::GtkPluginWidget::frameRectsChanged):

6:10 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
6:09 AM Changeset in webkit [182469] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebKit/gtk

[GTK] Memory leak from webkit_web_policy_decision_new()
https://bugs.webkit.org/show_bug.cgi?id=141564

Patch by Milan Crha <mcrha@redhat.com> on 2015-02-16
Reviewed by Carlos Garcia Campos.

  • webkit/webkitwebpolicydecision.cpp:
6:03 AM Changeset in webkit [182468] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r180141 - [GTK] Loading page into WebView shows g_closure_unref warning
https://bugs.webkit.org/show_bug.cgi?id=127474

Patch by Milan Crha <mcrha@redhat.com> on 2015-02-16
Reviewed by Carlos Garcia Campos.

  • bindings/gobject/GObjectEventListener.cpp:

(WebCore::GObjectEventListener::gobjectDestroyed):

6:01 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
6:01 AM Changeset in webkit [182467] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r178231 - Calling clearSelection on a detached RenderObject leads to segfault.
https://bugs.webkit.org/show_bug.cgi?id=140275

Reviewed by Simon Fraser.

We collect selection rects and compute selection gaps in order to
paint/clear selection. With certain content, we need to be able
to walk the tree up to a particular container to compute the selection rect.
However this container might not be available when the selection is part of a detached tree.
This is a null-check fix to ensure we don't crash in such cases, but in the long run
selection gaps and rect should be cached between two layouts so that we don't need to
keep collecting/recomputing them. Tracked here: webkit.org/b/140321

Source/WebCore:

Test: editing/selection/clearselection-on-detached-subtree-crash.html

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::containingBlockLogicalWidthForContent):
(WebCore::RenderBox::containingBlockLogicalHeightForContent):

  • rendering/RenderView.cpp:

(WebCore::RenderView::clearSelection):

LayoutTests:

  • editing/selection/clearselection-on-detached-subtree-crash-expected.txt: Added.
  • editing/selection/clearselection-on-detached-subtree-crash.html: Added.
5:57 AM Changeset in webkit [182466] by commit-queue@webkit.org
  • 4 edits
    1 add in trunk/LayoutTests

[GTK] Gardening 7th April
https://bugs.webkit.org/show_bug.cgi?id=143467

Unreviewed

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-04-07

  • platform/gtk/TestExpectations:
  • platform/gtk/editing/deleting/regional-indicators-expected.txt: Rebaselined after r182137.
  • platform/gtk/editing/pasteboard/emacs-ctrl-k-y-001-expected.txt: Rebaselined after r181889.
  • platform/gtk/inspector-protocol/debugger/regress-133182-expected.txt: Added. Rebaselined after r181810.
5:27 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
5:27 AM Changeset in webkit [182465] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r176254 - AX: [ATK] Crash getting the orientation of a MenuListOption after the MenuList was removed from the document
https://bugs.webkit.org/show_bug.cgi?id=138727

Reviewed by Chris Fleizach.

Source/WebCore:

AccessibilityMenuListOption::elementRect() returns the value of the
grandparent MenuList, asserting that the grandparent exists with that
role. But it is possible to have an existing MenuListOption and remove
the element which had been backing that MenuList from the document.
Adding null checks prior to the assertions prevents our crashing if the
parent or grandparent was removed.

Test: platform/gtk/accessibility/combobox-descendants-orientation-crash.html

  • accessibility/AccessibilityMenuListOption.cpp:

(WebCore::AccessibilityMenuListOption::elementRect):

LayoutTests:

  • platform/gtk/accessibility/combobox-descendants-orientation-crash-expected.txt: Added.
  • platform/gtk/accessibility/combobox-descendants-orientation-crash.html: Added.
5:25 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
5:25 AM Changeset in webkit [182464] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r176091 - AX: [ATK] Do not return ATK_ROLE_UNKNOWN for null or otherwise invalid accessible objects
https://bugs.webkit.org/show_bug.cgi?id=137867

Reviewed by Chris Fleizach.

Source/WebCore:

Return ATK_ROLE_INVALID for null or otherwise invalid accessible objects.

Test: platform/gtk/accessibility/detached-object-role.html

  • accessibility/atk/WebKitAccessibleWrapperAtk.cpp:

(webkitAccessibleGetRole):

Tools:

Add ATK_ROLE_INVALID to roleToString. Remove the null AtkRole check in
AccessibilityUIElement::role: ATK_ROLE_INVALID = 0, and we need to be
able to test for the presence of ATK_ROLE_INVALID.

  • WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:

(WTR::AccessibilityUIElement::role):

LayoutTests:

  • platform/gtk/accessibility/detached-object-role-expected.txt: Added.
  • platform/gtk/accessibility/detached-object-role.html: Added.
5:23 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
5:23 AM Changeset in webkit [182463] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.4

Merge r176076 - AX: [ATK] Accessible focus events are emitted when the selection is changed in non-focused combo boxes
https://bugs.webkit.org/show_bug.cgi?id=137866

Reviewed by Mario Sanchez Prada.

Source/WebCore:

Check that the AccessibilityMenuList is really focused before notifying
the platform that it is focused. Likewise, only notify the platform of
an AccessibilityMenuListOption focus gain if the AccessibilityMenuList
containing that option is expanded.

Test: platform/gtk/accessibility/menu-list-unfocused-notifications.html

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::notifyChildrenSelectionChange):
(WebCore::AXObjectCache::postPlatformNotification):

LayoutTests:

  • platform/gtk/accessibility/menu-list-unfocused-notifications-expected.txt: Added.
  • platform/gtk/accessibility/menu-list-unfocused-notifications.html: Added.
5:12 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
5:12 AM Changeset in webkit [182462] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r175347 - Notify Settings object when its Page object goes away.
https://bugs.webkit.org/show_bug.cgi?id=138183
rdar://problem/18786900

Reviewed by Andreas Kling.

I could not make a test for this issue.

  • page/Page.cpp:

(WebCore::Page::~Page):

  • page/Settings.cpp:

(WebCore::setImageLoadingSettings):
(WebCore::Settings::Settings):
(WebCore::Settings::setTextAutosizingEnabled):
(WebCore::Settings::setTextAutosizingWindowSizeOverride):
(WebCore::Settings::setTextAutosizingFontScaleFactor):
(WebCore::Settings::setMediaTypeOverride):
(WebCore::Settings::setScriptEnabled):
(WebCore::Settings::setUserStyleSheetLocation):
(WebCore::Settings::setMinDOMTimerInterval):
(WebCore::Settings::minDOMTimerInterval):
(WebCore::Settings::domTimerAlignmentInterval):
(WebCore::Settings::setUsesPageCache):
(WebCore::Settings::setScreenFontSubstitutionEnabled):
(WebCore::Settings::setFontRenderingMode):
(WebCore::Settings::setDNSPrefetchingEnabled):
(WebCore::Settings::setStorageBlockingPolicy):
(WebCore::Settings::setBackgroundShouldExtendBeyondPage):
(WebCore::Settings::setScrollingPerformanceLoggingEnabled):
(WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled):
(WebCore::Settings::setHiddenPageCSSAnimationSuspensionEnabled):
(WebCore::Settings::setFontFallbackPrefersPictographs):

  • page/Settings.h:

(WebCore::Settings::pageDestroyed):

4:58 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
4:18 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
4:18 AM Changeset in webkit [182461] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r175277 - FrameProgressTracker expects Page to not have detached
https://bugs.webkit.org/show_bug.cgi?id=138061

Reviewed by Alexey Proskuryakov.

In some cases, a Page may be detached from a Frame before its
FrameLoader is torn down, causing FrameProgressTracker's destructor
to hit a null pointer.

No new tests; it is impossible to reliably simulate the null pointer
case without intrusive code changes.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::FrameProgressTracker::~FrameProgressTracker):

3:49 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
3:49 AM Changeset in webkit [182460] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

Merge r175158 - WebContent crash at WebCore::RenderTextControl::textFormControlElement const.
https://bugs.webkit.org/show_bug.cgi?id=138035

Reviewed by Antti Koivisto.

NULL-check element().renderer() before using it.

  • html/SearchInputType.cpp:

(WebCore::SearchInputType::didSetValueByUserEdit):

3:33 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
3:33 AM Changeset in webkit [182459] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.4/Source

Merge r172759 - TEXTREL in libjavascriptcoregtk-1.0.so.0.11.0 on x86 (or i586)
https://bugs.webkit.org/show_bug.cgi?id=70610

Patch by Magnus Granberg <zorry@gentoo.org> on 2014-08-19
Reviewed by Darin Adler.

Source/JavaScriptCore:

Setup %ebx so we can use the plt.

  • jit/ThunkGenerators.cpp:

Source/WTF:

Add PLT if we're building with PIC.

  • wtf/InlineASM.h:
3:08 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
3:07 AM Changeset in webkit [182458] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4/Source/WebCore

REGRESSION(r177885): [GTK][WK1] Cannot compile 2.4.8 when WK2 is disabled
https://bugs.webkit.org/show_bug.cgi?id=140241

Patch by Tomas Popela <tpopela@redhat.com> on 2015-04-07
Reviewed by Carlos Garcia Campos.

We have to compile the PluginPackageNone.cpp and PluginViewNone.cpp
just when WebKit2 is enabled and we are not building for X11.

  • GNUmakefile.list.am:
2:29 AM WebKitGTK/2.4.x edited by Carlos Garcia Campos
(diff)
2:28 AM Changeset in webkit [182457] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.4

configure check for clang version is incorrect
https://bugs.webkit.org/show_bug.cgi?id=126324

Patch by Philip Chimento <philip.chimento@gmail.com> on 2015-04-07
Reviewed by Carlos Garcia Campos.

  • Source/autotools/CheckSystemAndBasicDependencies.m4:

Change compiler version checks of Clang and GCC so that they
handle major/minor versions correctly.

2:23 AM Changeset in webkit [182456] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.4/Source

Unreviewed. Fix the build with newer GLib.

Source/WebCore:

Use WTF::GMutexLocker.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::updateTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::paint):

  • platform/graphics/gstreamer/VideoSinkGStreamer.cpp:

(webkitVideoSinkTimeoutCallback):
(webkitVideoSinkRender):
(unlockBufferMutex):
(webkitVideoSinkUnlockStop):
(webkitVideoSinkStart):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcSetProperty):
(webKitWebSrcGetProperty):
(webKitWebSrcStop):
(webKitWebSrcStart):
(webKitWebSrcChangeState):
(webKitWebSrcQueryWithParent):
(webKitWebSrcGetUri):
(webKitWebSrcSetUri):
(webKitWebSrcNeedDataMainCb):
(webKitWebSrcNeedDataCb):
(webKitWebSrcEnoughDataMainCb):
(webKitWebSrcEnoughDataCb):
(webKitWebSrcSeekMainCb):
(webKitWebSrcSeekDataCb):
(webKitWebSrcSetMediaPlayer):
(StreamingClient::createReadBuffer):
(StreamingClient::handleResponseReceived):
(StreamingClient::handleDataReceived):
(StreamingClient::handleNotifyFinished):
(ResourceHandleStreamingClient::wasBlocked):
(ResourceHandleStreamingClient::cannotShowURL):

Source/WTF:

  • wtf/gobject/GMutexLocker.h: Move to the WTF namespace.
1:11 AM Changeset in webkit [182455] by youenn.fablet@crf.canon.fr
  • 2 edits in trunk/Tools

web-platform-tests server should retrieve the modules file relatively to its docroot path
https://bugs.webkit.org/show_bug.cgi?id=142742

Reviewed by Darin Adler.

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer._install_modules): Compute the modules description file path according wpt server doc root path.

1:06 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
12:45 AM Changeset in webkit [182454] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.6.6

WebKitGTK+ 2.6.6

12:44 AM Changeset in webkit [182453] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.6

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.6.6 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.6.6.
12:26 AM Changeset in webkit [182452] by Yusuke Suzuki
  • 5 edits
    1 add in trunk/Source/JavaScriptCore

put_by_val_direct need to check the property is index or not for using putDirect / putDirectIndex
https://bugs.webkit.org/show_bug.cgi?id=140426

Reviewed by Darin Adler.

In the put_by_val_direct operation, we use JSObject::putDirect.
However, it only accepts non-index property. For index property, we need to use JSObject::putDirectIndex.
This patch checks toString-ed Identifier is index or not to choose putDirect / putDirectIndex.

  • dfg/DFGOperations.cpp:

(JSC::DFG::putByVal):
(JSC::DFG::operationPutByValInternal):

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/Identifier.h:

(JSC::isIndex):
(JSC::parseIndex):

  • tests/stress/dfg-put-by-val-direct-with-edge-numbers.js: Added.

(lookupWithKey):
(toStringThrowsError.toString):

Apr 6, 2015:

11:52 PM Changeset in webkit [182451] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.6

Merge r182450 - [GTK] Fix HPPA build
https://bugs.webkit.org/show_bug.cgi?id=143453

Reviewed by Darin Adler.

Add HPPA to the list of supported CPUs.

  • CMakeLists.txt:
11:25 PM Changeset in webkit [182450] by berto@igalia.com
  • 4 edits in trunk

[GTK] Fix HPPA build
https://bugs.webkit.org/show_bug.cgi?id=143453

Reviewed by Darin Adler.

Add HPPA to the list of supported CPUs.

  • CMakeLists.txt:
11:22 PM Changeset in webkit [182449] by Chris Dumez
  • 8 edits
    4 adds in trunk

Bing video search result pages are not PageCacheable
https://bugs.webkit.org/show_bug.cgi?id=143463
<rdar://problem/20440916>

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Bing video search result pages are not PageCacheable (tested on iOS).
It both:

  • is bad for power usage as it causes a reload when clicking one of the results then navigating back in history.
  • degrades user experience because the results page uses infinite scrolling and the scroll position is not properly restored when navigating back, not to mention the user has to wait for the reload to complete.

The issue was that the bing search page was doing a ping load when
clicking on one of the search results. The ping load was done by
create an image and its 'src' attribute to the ping URL. This load
usually did not have time to complete when navigating away so we would
cancel it and the main document would end up with an error that would
prevent the page from entering the page cache. We already have code
making sure load cancellations do not prevent page caching as long as
the loads are for XHR or images. However, the latter check was broken
in the case where the ResourceRequest's cachePartition was non-empty.
This is because the check was using the MemoryCache::ResourceForUrl()
API which rarely does what we want because it will request a dummy
ResourceRequest (without cachePartition) and then call
MemoryCache::resourceForRequest(). This patch updates the check
to use resourceForRequest() directly as we have the ResourceRequest
at this point.

This patch also gets rid of the MemoryCache::ResourceForUrl() API as
it rarely does what we want and it is bug prone. It was only used in
2 places, one of them causing this bug and the other in Internals.

Tests: http/tests/navigation/page-cache-pending-image-load-cache-partition.html

http/tests/navigation/page-cache-pending-image-load.html

  • loader/DocumentLoader.cpp:

(WebCore::areAllLoadersPageCacheAcceptable):
Use MemoryCache::resourceForRequest() instead of resourceForUrl() as
we have the ResourceRequest and calling resourceForUrl() would loose
the cachePartition.

  • loader/cache/MemoryCache.cpp:

(WebCore::MemoryCache::resourceForURL): Deleted.
Drop this API as it is bug prone and rarely does what we want.

  • testing/Internals.cpp:

(WebCore::Internals::isLoadingFromMemoryCache):
Update call to create a dummy ResourceRequest and call
resourceForRequest() instead of resourceForUrl(), as this API no
longer exists. The new code also set the cachePartition on the
dummy request so that this function actually behaves as expected
if the cachePartition in the memory cache is non-empty.

Source/WebKit/mac:

Fix the iOS / WK1 build by using MemoryCache::resourceForRequest()
instead of resourceForUrl().

  • Misc/WebCache.mm:

(+[WebCache imageForURL:]):

LayoutTests:

Add layout tests to confirm that a pending image load does not prevent
a page from entering the page cache. There are 2 tests, once that cover
the case where the request's cachePartion is empty (passing without the
fix), and another where the request's cachePartition is non-empty
(which only passes with the fix).

  • http/tests/navigation/page-cache-pending-image-load-cache-partition-expected.txt: Added.
  • http/tests/navigation/page-cache-pending-image-load-cache-partition.html: Added.
  • http/tests/navigation/page-cache-pending-image-load-expected.txt: Added.
  • http/tests/navigation/page-cache-pending-image-load.html: Added.
5:29 PM Changeset in webkit [182448] by aestes@apple.com
  • 2 edits in trunk/LayoutTests

http/tests/contentfiltering/block-after-redirect.html fails on Windows
https://bugs.webkit.org/show_bug.cgi?id=143460

  • platform/win/TestExpectations: Marked test as ImageOnlyFailure.
5:05 PM Changeset in webkit [182447] by andersca@apple.com
  • 4 edits in trunk/Source/WebKit2

Create the web inspector process pool lazily
https://bugs.webkit.org/show_bug.cgi?id=143456
rdar://problem/20146520

Reviewed by Mark Lam.

Add and implement WebInspectorProxy::isInspectorProcessPool instead of always creating the inspector process pool
when trying to determine if a given process pool is the inspector process pool.

This should speed up initialization somewhat and avoid creating a storage manager for example.

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::inspectorProcessPool):
(WebKit::WebInspectorProxy::isInspectorProcessPool):

  • UIProcess/WebInspectorProxy.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::getLaunchOptions):

4:24 PM Changeset in webkit [182446] by achristensen@apple.com
  • 5 edits
    3 deletes in trunk/Tools

Unreviewed, rolling out r182445.
https://bugs.webkit.org/show_bug.cgi?id=143459

broke 32 bit build (Requested by alexchristensen on #webkit).

Reverted changeset:

"Use content extensions in MiniBrowser."
https://bugs.webkit.org/show_bug.cgi?id=143446
http://trac.webkit.org/changeset/182445

Patch by Commit Queue <commit-queue@webkit.org> on 2015-04-06

4:15 PM Changeset in webkit [182445] by achristensen@apple.com
  • 5 edits
    3 adds in trunk/Tools

Use content extensions in MiniBrowser.
https://bugs.webkit.org/show_bug.cgi?id=143446

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

  • MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
  • MiniBrowser/mac/AppDelegate.h:
  • MiniBrowser/mac/AppDelegate.m:

(-[BrowserAppDelegate init]):
(-[BrowserAppDelegate showExtensionsManager:]):
(-[BrowserAppDelegate userContentContoller]):

  • MiniBrowser/mac/ExtensionManagerWindowController.h: Added.
  • MiniBrowser/mac/ExtensionManagerWindowController.m: Added.

(-[ExtensionManagerWindowController init]):
(-[ExtensionManagerWindowController windowDidLoad]):
(-[ExtensionManagerWindowController add:]):
(-[ExtensionManagerWindowController remove:]):

  • MiniBrowser/mac/ExtensionManagerWindowController.xib: Added.
  • MiniBrowser/mac/MainMenu.xib:
3:53 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
3:48 PM Changeset in webkit [182444] by mark.lam@apple.com
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

In the 64-bit DFG and FTL, Array::Double case for HasIndexedProperty should set its result to true when all is well.
<https://webkit.org/b/143396>

Reviewed by Filip Pizlo.

The DFG was neglecting to set the result boolean. The FTL was setting it with
an inverted value. Both of these are now resolved.

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileHasIndexedProperty):

  • tests/stress/for-in-array-mode.js: Added.

(.):
(test):

3:39 PM Changeset in webkit [182443] by mmaxfield@apple.com
  • 2 edits in trunk/WebKitLibraries

[Win] [SVG -> OTF Converter] Turn off on Windows until I can get the tests under control

Unreviewed.

  • win/tools/vsprops/FeatureDefines.props:
3:33 PM Changeset in webkit [182442] by beidson@apple.com
  • 17 edits
    1 add
    2 deletes in trunk/Source/WebKit2

Combine ActionMenuHitTestResult with WebHitTestResult
https://bugs.webkit.org/show_bug.cgi?id=143444

Reviewed by Beth Dakin.

  • Shared/mac/ActionMenuHitTestResult.h: Removed.
  • Shared/mac/ActionMenuHitTestResult.mm: Removed.
  • Shared/WebHitTestResult.cpp:

(WebKit::WebHitTestResult::Data::Data):
(WebKit::WebHitTestResult::Data::encode):
(WebKit::WebHitTestResult::Data::decode):
(WebKit::WebHitTestResult::Data::platformEncode):
(WebKit::WebHitTestResult::Data::platformDecode):

  • Shared/WebHitTestResult.h:
  • Shared/mac/WebHitTestResult.mm: Added.

(WebKit::WebHitTestResult::Data::platformEncode):
(WebKit::WebHitTestResult::Data::platformDecode):

  • UIProcess/API/mac/WKView.mm:

(-[WKView _didPerformActionMenuHitTest:forImmediateAction:contentPreventsDefault:userData:]):
(-[WKView _didPerformActionMenuHitTest:forImmediateAction:userData:]): Deleted.

  • UIProcess/API/mac/WKViewInternal.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didPerformActionMenuHitTest):

  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didPerformActionMenuHitTest):

  • UIProcess/mac/WKActionMenuController.h:
  • UIProcess/mac/WKActionMenuController.mm:

(-[WKActionMenuController willDestroyView:]):
(-[WKActionMenuController _clearActionMenuState]):
(-[WKActionMenuController didPerformActionMenuHitTest:userData:]):
(-[WKActionMenuController _hitTestResultDataImage]):
(-[WKActionMenuController _defaultMenuItemsForImage]):
(-[WKActionMenuController _copyImage:]):
(-[WKActionMenuController _addImageToPhotos:]):
(-[WKActionMenuController _defaultMenuItemsForDataDetectedText]):
(-[WKActionMenuController _defaultMenuItemsForEditableTextWithSuggestions]):
(-[WKActionMenuController _defaultMenuItemsForDataDetectableLink]):
(-[WKActionMenuController _webHitTestResult]):
(-[WKActionMenuController _defaultMenuItems]):
(-[WKActionMenuController _hitTestResultImage]): Deleted.

  • UIProcess/mac/WKImmediateActionController.h:
  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController willDestroyView:]):
(-[WKImmediateActionController _clearImmediateActionState]):
(-[WKImmediateActionController didPerformActionMenuHitTest:contentPreventsDefault:userData:]):
(-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):
(-[WKImmediateActionController _webHitTestResult]):
(-[WKImmediateActionController _defaultAnimationController]):
(-[WKImmediateActionController _updateImmediateActionItem]):
(-[WKImmediateActionController _menuItemForDataDetectedText]):
(-[WKImmediateActionController _animationControllerForText]):
(-[WKImmediateActionController didPerformActionMenuHitTest:userData:]): Deleted.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):

3:27 PM Changeset in webkit [182441] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] install-dependencies should prefer dnf to yum
https://bugs.webkit.org/show_bug.cgi?id=143441

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-04-06
Reviewed by Martin Robinson.

Test for the existance of dnf before yum, and only try to use yum if dnf does not exist.

  • gtk/install-dependencies:
3:16 PM Changeset in webkit [182440] by aestes@apple.com
  • 2 edits in trunk/Tools

[iOS] 'make clean' fails in Tools/WebKitTestRunner
https://bugs.webkit.org/show_bug.cgi?id=143455

Reviewed by Dan Bernstein.

This Makefile adds '-target WebKitTestRunnerApp' to OTHER_OPTIONS during iOS builds, but the top-level
Makefile.shared adds '-alltargets' for clean builds, and xcodebuild does not allow both -target and -alltargets.

  • WebKitTestRunner/Makefile: Don't add '-target WebKitTestRunerApp' to OTHER_OPTIONS on clean builds.
3:02 PM Changeset in webkit [182439] by jer.noble@apple.com
  • 12 edits
    1 add in trunk/Source

Synchronize fullscreen animation between processes.
https://bugs.webkit.org/show_bug.cgi?id=143131

Reviewed by Simon Fraser.

Source/WebCore:

Rather than attempt to synchcronize animations across the WebProcess / UIProcess boundary,
do the bounds-change animation in-process by applying a sublayer transformation to the
video layer. This gives the same visual effect as a synchronized bounds animation, but
without needing a synchronization fence. Resolve the difference between the transformation
and bounds by doing a fence-synchronized bounds change after the current animation is
scheduled to complete.

To do this calculation correctly, WebAVPlayer needs to query both the effective
videoLayerFrame and the videoLayerGravity. To that end, add getter methods for
videoLayerFrame() and videoLayerGravity().

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::videoFullscreenGravity):

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(-[WebAVVideoLayer dealloc]): Cancel outstanding performSelector requests.
(-[WebAVVideoLayer setBounds:]): Add a scale transform to simulate a bonuds change.
(-[WebAVVideoLayer resolveBounds]): Reset the scale transform and set the bounds.
(WebVideoFullscreenInterfaceAVKit::setupFullscreenInternal): Set the initial video frame bounds.
(-[WebAVPlayerController layoutSublayersOfLayer:]): Deleted.

  • platform/ios/WebVideoFullscreenModel.h:
  • platform/ios/WebVideoFullscreenModelVideoElement.h:
  • platform/ios/WebVideoFullscreenModelVideoElement.mm:

(WebVideoFullscreenModelVideoElement::videoLayerFrame): Added; simple getter.
(WebVideoFullscreenModelVideoElement::videoLayerGravity): Ditto.

Source/WebKit2:

Support synchronize resizing by animating within the UIProcess. Since setVideoLayerFrameFenced() is now only
ever called from within a 0-duration transaction, make that the official contract of the function and wrap
the WebProcess side of that method in its own 0-duration transaction.

  • Platform/spi/ios/BackBoardServicesSPI.h: Added.
  • Platform/spi/ios/UIKitSPI.h:
  • UIProcess/ios/WebVideoFullscreenManagerProxy.h:
  • UIProcess/ios/WebVideoFullscreenManagerProxy.mm:

(WebKit::WebVideoFullscreenManagerProxy::setupFullscreenWithID): Remember the initial rect.
(WebKit::WebVideoFullscreenManagerProxy::videoLayerFrame): Added; simple getter.
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerFrame): Use a different synchronization fence primative.

Save the cached frame value.

(WebKit::WebVideoFullscreenManagerProxy::videoLayerGravity): Added; simple getter.
(WebKit::WebVideoFullscreenManagerProxy::setVideoLayerGravity): Save the cached gravity value.

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/ios/WebVideoFullscreenManager.mm:

(WebKit::WebVideoFullscreenManager::setVideoLayerFrameFenced): Wrap in a 0-length transaction.

2:08 PM Changeset in webkit [182438] by rniwa@webkit.org
  • 6 edits in trunk/Websites/perf.webkit.org

Perf dashboard should be able to trigger A/B testing jobs for iOS
https://bugs.webkit.org/show_bug.cgi?id=143398

Reviewed by Chris Dumez.

Fix various bugs in the perf dashboard so that it can schedule A/B testing jobs for iOS.

Also generalized sync-with-buildbot.py slightly to meet the requirements of iOS builders.

  • public/api/triggerables.php:

(main): Avoid spitting a warning when $id_to_triggerable doesn't contain the triggerable.

  • public/v2/analysis.js:

(App.AnalysisTask.triggerable): Log an error when failed to fetch triggerables for debugging purposes.

  • public/v2/app.js:

(App.AnalysisTaskController.updateRootConfigurations): Show 'None' when a revision is missing from
some of the data points. This will happen when we modify the list of projects we build for iOS.
(App.AnalysisTaskController.actions.createTestGroup): Gracefully fail by showing alerts when an user
attempts to create an invalid test group; when there is already another test group of the same or when
only either configuration specifies the revision for some repository.
(App.AnalysisTaskController._updateRootsBySelectedPoints): Fixed a typo: sets[i] -> set.

  • public/v2/index.html: Don't show the form to create a new test group if it's not available.
  • tools/sync-with-buildbot.py:

(find_request_updates):
(schedule_request): iOS builders take a JSON that contains the list of roots. Generate this JSON when
a dictionary of the form {rootsExcluding: WebKit} is specified. Also replaced the way we refer to
a revision from $-based text replacements to an explicit dictionary of the form {root: "WebKit"}.
(request_id_from_build): Don't hard code the parameter name here. Retrieve the name from the config.

1:49 PM Changeset in webkit [182437] by Chris Dumez
  • 5 edits in trunk/Source/WebKit2

[WK2][iOS] Regression(r182323): ASSERTION FAILED: WebCore::SQLiteDatabaseTracker::hasTransactionInProgress() in NetworkCache::Statistics::initialize()
https://bugs.webkit.org/show_bug.cgi?id=143451
<rdar://problem/20437994>

Reviewed by Anders Carlsson.

Initialize WebProcess::m_webSQLiteDatabaseTracker and
NetworkProcess::m_webSQLiteDatabaseTracker in their respective class
constructors instead of doing it later in the initializeWebProcess() /
initializeNetworkProcess() methods.

If we do it later, it can happen that the tracker gets set after
a SQLiteTransactionInProgressAutoCounter initialization and before
the actual transaction. When this happens, the
SQLiteTransactionInProgressAutoCounter variable fails to increment the
transaction count. Then when the transaction is executed,
SQLiteDatabaseTracker::hasTransactionInProgress() can return false.
This would lead to possible assertions on start up on iOS.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::NetworkProcess):
(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):
(WebKit::WebProcess::initializeConnection):

  • WebProcess/WebProcess.h:
1:39 PM Changeset in webkit [182436] by Alan Bujtas
  • 2 edits in trunk/Source/WebCore

Simple line layout: RunResolver::Iterator class cleanup.
https://bugs.webkit.org/show_bug.cgi?id=143445

Reviewed by Antti Koivisto.

  1. SimpleLineLayout::Run is an intermediate structure and should not be publicly accessible through RunResolver::Iterator.

RunResolver::Run is the class to use to access run properties.

  1. Also move advance()/advanceLine() to private. Callers should use LineResolver to advance on lines.

No change in functionality.

  • rendering/SimpleLineLayoutResolver.h:
1:26 PM Changeset in webkit [182435] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

https://trac.webkit.org/changeset/182338 introduced a build failure that I
attempted to fix with https://trac.webkit.org/changeset/182341 , but that disabled
the feature accidentally. This should do the right thing.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

12:58 PM Changeset in webkit [182434] by ap@apple.com
  • 2 edits in trunk/Tools

WebKit1.SetAndUpdateCacheModelPreferencesChangeMix fails on some machines
https://bugs.webkit.org/show_bug.cgi?id=143450

Reviewed by Anders Carlsson.

  • TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm: (TestWebKitAPI::TEST):

Make sure that the view is actually closed, regardless of anything else that happens beneath.
Also, removed unnecessary get() calls.

12:07 PM Changeset in webkit [182433] by Yusuke Suzuki
  • 21 edits
    1 add in trunk/Source/JavaScriptCore

[ES6] DFG and FTL should be aware of that StringConstructor behavior for symbols becomes different from ToString
https://bugs.webkit.org/show_bug.cgi?id=143424

Reviewed by Geoffrey Garen.

In ES6, StringConstructor behavior becomes different from ToString abstract operations in the spec. (and JSValue::toString).

ToString(symbol) throws a type error.
However, String(symbol) produces SymbolDescriptiveString(symbol).

So, in DFG and FTL phase, they should not inline StringConstructor to ToString.

Now, in the template literals patch, ToString DFG operation is planned to be used.
And current ToString behavior is aligned to the spec (and JSValue::toString) and it's better.
So intead of changing ToString behavior, this patch adds CallStringConstructor operation into DFG and FTL.
In CallStringConstructor, all behavior in DFG analysis is the same.
Only the difference from ToString is, when calling DFG operation functions, it calls
operationCallStringConstructorOnCell and operationCallStringConstructor instead of
operationToStringOnCell and operationToString.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handleConstantInternalFunction):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):
(JSC::DFG::FixupPhase::fixupToStringOrCallStringConstructor):
(JSC::DFG::FixupPhase::attemptToMakeFastStringAdd):
(JSC::DFG::FixupPhase::fixupToString): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileToStringOrCallStringConstructorOnCell):
(JSC::DFG::SpeculativeJIT::compileToStringOnCell): Deleted.

  • dfg/DFGSpeculativeJIT.h:
  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::run):

  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileToStringOrCallStringConstructor):
(JSC::FTL::LowerDFGToLLVM::compileToString): Deleted.

  • runtime/StringConstructor.cpp:

(JSC::stringConstructor):
(JSC::callStringConstructor):

  • runtime/StringConstructor.h:
  • tests/stress/symbol-and-string-constructor.js: Added.

(performString):

11:37 AM Changeset in webkit [182432] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebKit2

Unreviewed, rolling out r182296.
https://bugs.webkit.org/show_bug.cgi?id=143448

This will disturb network cache efficacy logging, we should
reland this later. (Requested by cdumez on #webkit).

Reverted changeset:

"[WK2][NetworkCache] Drop HTTP method from NetworkCache::Key"
https://bugs.webkit.org/show_bug.cgi?id=143348
http://trac.webkit.org/changeset/182296

10:00 AM Changeset in webkit [182431] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

Use a RenderObject bit for isRenderFlowThread()
https://bugs.webkit.org/show_bug.cgi?id=143439

Reviewed by Darin Adler.

Turning isRenderFlowThread() into a bit in rare data rather than a virtual function reduces
the time under RenderLayer::scrollTo() on a large overflow:scroll table from 56% to 44%.

  • rendering/RenderFlowThread.cpp:

(WebCore::RenderFlowThread::RenderFlowThread):

  • rendering/RenderFlowThread.h:
  • rendering/RenderObject.cpp:

(WebCore::RenderObject::setIsRenderFlowThread):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isDragging):
(WebCore::RenderObject::hasReflection):
(WebCore::RenderObject::isRenderFlowThread):
(WebCore::RenderObject::RenderObjectRareData::RenderObjectRareData):

9:32 AM Changeset in webkit [182430] by Carlos Garcia Campos
  • 6 edits
    2 deletes in releases/WebKitGTK/webkit-2.8/Source

Merge r182175 - [GTK] DnD icon/widget has odd background
https://bugs.webkit.org/show_bug.cgi?id=143217

Reviewed by Martin Robinson.

Source/WebCore:

Remove DragIcon class since it's no longer needed with GTK+3 and
the GTK+2 code there is unused. GTK+ knows what to do with a cairo
surface, I guess we migrated the GTK+2 code to GTK+3 without
realizing that using the surface was enough.

  • PlatformGTK.cmake:
  • platform/gtk/DragIcon.cpp: Removed.
  • platform/gtk/DragIcon.h: Removed.

Source/WebKit2:

Use gtk_drag_set_icon_surface() to set the drag icon image,
instead of DragIcon class.

  • UIProcess/API/gtk/WebKitWebView.cpp:
  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::startDrag):

  • UIProcess/gtk/DragAndDropHandler.h:
9:30 AM Changeset in webkit [182429] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r182051 - Inline continuation code should not take anonymous containing wrapper granted.
https://bugs.webkit.org/show_bug.cgi?id=133312

Reviewed by Dave Hyatt.

It's wrong to assume that when RenderInline is part of an inline continuation, its containing block
is an anonymous wrapper and its sibling might be a block level renderer.
When the inline continuation is no longer needed, for example when the block level renderer that initiated the continuation
is detached from the render tree, the inline renderes still continue to form continuation.(however they no longer require
anonymous wrappers)

Source/WebCore:

Test: fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html

  • rendering/RenderInline.cpp:

(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::styleDidChange):

LayoutTests:

  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation-expected.txt: Added.
  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html: Added.
9:28 AM Changeset in webkit [182428] by ap@apple.com
  • 18 edits
    1 delete in trunk

Reduce the dependency on Flash in regression tests
https://bugs.webkit.org/show_bug.cgi?id=143391

Reviewed by Anders Carlsson.

Tools:

  • WebKitTestRunner/TestController.cpp: (WTR::TestController::decidePolicyForPluginLoad):

Only allow QuickTime and the test plug-in.

LayoutTests:

  • accessibility/inline-block-assertion.html:
  • accessibility/plugin.html:
  • compositing/geometry/empty-embed-rects.html:
  • fast/history/resources/subframe-with-plugin.html:
  • fast/images/embed-does-not-propagate-dimensions-to-object-ancestor.html:
  • fast/loader/loadInProgress.html:
  • fast/replaced/border-radius-clip.html:
  • fast/replaced/embed-display-none.html:
  • plugins/crash-restoring-plugin-page-from-page-cache.html:
  • plugins/object-embed-plugin-scripting.html:
  • plugins/resources/plugin-frame.html:

Use TestNetscapePlugin, as the tests don't appear to have any real need for Flash.

  • plugins/iframe-shims.html: Removed. This was a test for a chromium only feature

that never existed in WebKit.

  • platform/mac/TestExpectations:
  • platform/wincairo/TestExpectations:

Removed the deleted plugins/iframe-shims.html.

  • platform/mac-wk2/TestExpectations: Skip snapshotting tests that use Flash,

because they make WebKitTestRunner crash now. Marked all other snapshotting tests
as Pass/Failure, because they don't really make any sense, and are only useful for
finsing crashes.

  • platform/wk2/TestExpectations: Skipped a few remaining tests that use Flash.

These tests still run (and pass) under WebKit1, regardless of whether Flash is
installed, so they don't seem like very accurate tests.

9:28 AM Changeset in webkit [182427] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.6

Merge r182051 - Inline continuation code should not take anonymous containing wrapper granted.
https://bugs.webkit.org/show_bug.cgi?id=133312

Reviewed by Dave Hyatt.

It's wrong to assume that when RenderInline is part of an inline continuation, its containing block
is an anonymous wrapper and its sibling might be a block level renderer.
When the inline continuation is no longer needed, for example when the block level renderer that initiated the continuation
is detached from the render tree, the inline renderes still continue to form continuation.(however they no longer require
anonymous wrappers)

Source/WebCore:

Test: fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html

  • rendering/RenderInline.cpp:

(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::styleDidChange):

LayoutTests:

  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation-expected.txt: Added.
  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html: Added.
9:16 AM Changeset in webkit [182426] by Carlos Garcia Campos
  • 11 edits in releases/WebKitGTK/webkit-2.6

Merge r180020 - Drop the quirks-mode exception for CSS MIME types
https://bugs.webkit.org/show_bug.cgi?id=141501

Reviewed by Alexey Proskuryakov.

Source/WebCore:

Drop the quirks-mode exception for CSS MIME types.
This matches Firefox's behavior.

This patch is based on the following Blink revision:
http://src.chromium.org/viewvc/blink?view=revision&revision=189669

Tests:

  • http/tests/misc/css-accept-any-type.html
  • http/tests/security/cross-origin-css.html
  • css/StyleSheetContents.cpp:

(WebCore::StyleSheetContents::parseAuthorStyleSheet):

  • dom/ProcessingInstruction.cpp:

(WebCore::ProcessingInstruction::setCSSStyleSheet):

  • inspector/InspectorPageAgent.cpp:

(WebCore::InspectorPageAgent::cachedResourceContent):

  • loader/cache/CachedCSSStyleSheet.cpp:

(WebCore::CachedCSSStyleSheet::sheetText):
(WebCore::CachedCSSStyleSheet::canUseSheet):

  • loader/cache/CachedCSSStyleSheet.h:

LayoutTests:

Update a couple of layout tests now that we dropped the quirks-mode
exception for CSS MIME types.

  • http/tests/misc/css-accept-any-type-expected.txt:
  • http/tests/misc/css-accept-any-type.html:
  • http/tests/security/cross-origin-css-expected.txt:
  • http/tests/security/cross-origin-css.html:
9:04 AM Changeset in webkit [182425] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.6/Source/WTF

Merge r178725 - Fix failed to build for Linux/MIPS64EL
https://bugs.webkit.org/show_bug.cgi?id=124370

Patch by YunQiang Su <wzssyqa@gmail.com> on 2015-01-20
Reviewed by Darin Adler.

Add MIPS64EL support.

  • wtf/Platform.h:
  • wtf/dtoa/utils.h:
8:49 AM Changeset in webkit [182424] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Unreviewed test update after r182369.

New test does not pass on Windows.

  • platform/win/TestExpectations: Skip.
8:30 AM Changeset in webkit [182423] by mmaxfield@apple.com
  • 6 edits in trunk

[Win] [SVG -> OTF Converter] Support the SVG -> OTF Font Converter
https://bugs.webkit.org/show_bug.cgi?id=143402

Patch by Myles C. Maxfield <mmaxfield@apple.com> on 2015-04-06
Reviewed by Darin Adler.

Source/WebCore:

There are a few pieces to the converter that Windows requires that we haven't already
implemented:

  1. Checksums were being calculated with the wrong endianness
  2. Windows requires a format 4 'cmap' subtable in addition to the format 12 one we already

were using

  1. Windows requires a reference to a Private DICT inside the CFF table, even if the DICT

is of 0 length.

Covered by all our existing SVG font tests.

  • svg/SVGFontFaceElement.h: Add capHeight accessor.
  • svg/SVGFontFaceElement.cpp:

(WebCore::SVGFontFaceElement::capHeight): Ditto.

  • svg/SVGToOTFConversion.cpp: Update the conversion process according to the above

requirements.
(WebCore::SVGToOTFFontConverter::appendFormat12CMAPTable):
(WebCore::SVGToOTFFontConverter::appendFormat4CMAPTable):
(WebCore::SVGToOTFFontConverter::appendCMAPTable): Use helpers.
(WebCore::SVGToOTFFontConverter::appendHHEATable): Use member variables.
(WebCore::SVGToOTFFontConverter::appendOS2Table): Update to version 2.
(WebCore::SVGToOTFFontConverter::appendCFFTable): Create a reference to a
zero-sized Private DICT
(WebCore::SVGToOTFFontConverter::SVGToOTFFontConverter): Populate member
variables.
(WebCore::SVGToOTFFontConverter::calculateChecksum): Flip endianness

WebKitLibraries:

  • win/tools/vsprops/FeatureDefines.props: Enable the define.
8:25 AM Changeset in webkit [182422] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.6

Merge r181864 - Source/WebKit2:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again.
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

Add plug-in destruction protectors around message receiver code that can call out to NPObjects or JavaScript
where we need the plug-in to stay around after the call.

  • Shared/Plugins/NPObjectMessageReceiver.cpp:

(WebKit::NPObjectMessageReceiver::invoke):
(WebKit::NPObjectMessageReceiver::invokeDefault):
(WebKit::NPObjectMessageReceiver::getProperty):
(WebKit::NPObjectMessageReceiver::setProperty):
(WebKit::NPObjectMessageReceiver::construct):

LayoutTests:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

  • platform/mac-wk2/TestExpectations:

Unskip test.

8:23 AM Changeset in webkit [182421] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.6/Source/JavaScriptCore

Merge r181835 - DFG OSR exit shouldn't assume that the frame count for exit is greater than the frame count in DFG
https://bugs.webkit.org/show_bug.cgi?id=142948

Reviewed by Sam Weinig.

It's necessary to ensure that the stack pointer accounts for the extent of our stack usage
since a signal may clobber the area below the stack pointer. When the DFG is executing,
the stack pointer accounts for the DFG's worst-case stack usage. When we OSR exit back to
baseline, we will use a different amount of stack. This is because baseline is a different
compiler. It will make different decisions. So it will use a different amount of stack.

This gets tricky when we are in the process of doing an OSR exit, because we are sort of
incrementally transforming the stack from how it looked in the DFG to how it will look in
baseline. The most conservative approach would be to set the stack pointer to the max of
DFG and baseline.

When this code was written, a reckless assumption was made: that the stack usage in
baseline is always at least as large as the stack usage in DFG. Based on this incorrect
assumption, the code first adjusts the stack pointer to account for the baseline stack
usage. This sort of usually works, because usually baseline does happen to use more stack.
But that's not an invariant. Nobody guarantees this. We will never make any changes that
would make this be guaranteed, because that would be antithetical to how optimizing
compilers work. The DFG should be allowed to use however much stack it decides that it
should use in order to get good performance, and it shouldn't try to guarantee that it
always uses less stack than baseline.

As such, we must always assume that the frame size for DFG execution (i.e.
frameRegisterCount) and the frame size in baseline once we exit (i.e.
requiredRegisterCountForExit) are two independent quantities and they have no
relationship.

Fortunately, though, this code can be made correct by just moving the stack adjustment to
just before we do conversions. This is because we have since changed the OSR exit
algorithm to first lift up all state from the DFG state into a scratch buffer, and then to
drop it out of the scratch buffer and into the stack according to the baseline layout. The
point just before conversions is the point where we have finished reading the DFG frame
and will not read it anymore, and we haven't started writing the baseline frame. So, at
this point it is safe to set the stack pointer to account for the frame size at exit.

This is benign because baseline happens to create larger frames than DFG.

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::adjustAndJumpToTarget):

8:19 AM Changeset in webkit [182420] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.6

Merge r181773 - Source/WebCore:
REGRESSION (r109593): Clicking after last inline element could cause a crash.
https://bugs.webkit.org/show_bug.cgi?id=142880
rdar://problem/17222294

Reviewed by Ryosuke Niwa.

Test: editing/selection/click-after-last-inline-crash.html

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::closestLeafChildForLogicalLeftPosition):

8:18 AM Changeset in webkit [182419] by Carlos Garcia Campos
  • 9 edits
    4 adds in releases/WebKitGTK/webkit-2.6

Merge r181691 - Flex and grid items should be painted as inline-blocks
https://bugs.webkit.org/show_bug.cgi?id=142266

Reviewed by Darin Adler.

Source/WebCore:

Based on Blink r157004 by <cbiesinger@chromium.org>.
https://src.chromium.org/viewvc/blink?revision=157004&view=revision

Both flexbox and grid specs define that the painting order of flex/grid
items is the same as inline blocks. See
http://dev.w3.org/csswg/css-flexbox/#painting and
http://dev.w3.org/csswg/css-grid/#z-order.

Extracted inline blocks painting code from InlineElementBox and moved to
a helper method that will be reused for flexboxes and grids.

Tests: css3/flexbox/flex-item-text-background-not-interleaved.html

fast/css-grid-layout/grid-item-text-background-not-interleaved.html

  • rendering/InlineElementBox.cpp:

(WebCore::InlineElementBox::paint): Move code to
RenderElement::paintAsInlineBlock().

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintChild): Add new argument to paint children
as inline blocks.

  • rendering/RenderBlock.h: Define PaintType enmu and modify paintChild()

signature to add the new argument.

  • rendering/RenderElement.cpp:

(WebCore::paintPhase): Paint element in a phase.
(WebCore::RenderElement::paintAsInlineBlock): Code extracted from
InlineElementBox::paint().

  • rendering/RenderElement.h: Add new method signature.
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::paintChildren): Call
RenderBlock::paintChild() with the new argument.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::paintChildren): Ditto.

LayoutTests:

  • css3/flexbox/flex-item-text-background-not-interleaved-expected.html: Added.
  • css3/flexbox/flex-item-text-background-not-interleaved.html: Added.
  • fast/css-grid-layout/float-not-protruding-into-next-grid-item-expected.html:

Add some vertical space to avoid issues with backgrounds.

  • fast/css-grid-layout/float-not-protruding-into-next-grid-item.html:

Ditto.

  • fast/css-grid-layout/grid-item-text-background-not-interleaved-expected.html: Added.
  • fast/css-grid-layout/grid-item-text-background-not-interleaved.html: Added.
8:09 AM Changeset in webkit [182418] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181787 - [GTK] Crash due to empty drag image during drag-and-drop
https://bugs.webkit.org/show_bug.cgi?id=142671

Reviewed by Philippe Normand.

Return early from ImageBuffer constructor if an empty size is
given. This is a speculative fix for a crash while starting a drag
and drop operation, that I haven't been able to reproduce.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer):

8:07 AM Changeset in webkit [182417] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.6

Merge r181600 - AX: Crash viewing http://www.last.fm/
https://bugs.webkit.org/show_bug.cgi?id=142309

Reviewed by Chris Fleizach.

Source/WebCore:

The crash occurs when a not-yet-rendered object emits a children-changed
signal. If an assistive technology is listening, AT-SPI2 will attempt to
create and cache the state set for the child being added and the creation
of the state set assumes a rendered object.

Test: platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html

  • accessibility/atk/AXObjectCacheAtk.cpp:

(WebCore::AXObjectCache::attachWrapper):

LayoutTests:

This test doesn't verify the absence of the crash because the crash seems
to require that an assistive technology is listening for events, and that
AT-SPI2 is caching the tree for that assistive technology -- something we
cannot count on being the case on our bots. (I suspect that the reason non-
assistive technology users of Epiphany were getting hit by this is because
Caribou was listening for events in the background, thus they were AT users
without realizing it. That Caribou issue is in theory now resolved.) What
this test does verify is the absence of children-changed:add accessibility
signals for non-rendered objects, which is the source of the crash given
the aforementioned environment.

  • platform/gtk/accessibility/no-notification-for-unrendered-iframe-children-expected.txt: Added.
  • platform/gtk/accessibility/no-notification-for-unrendered-iframe-children.html: Added.
8:06 AM Changeset in webkit [182416] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebKit2

Merge r181599 - ASSERT(m_plugin) on plugins/snapshotting/snapshot-plugin-not-quite-blocked-by-image.html
https://bugs.webkit.org/show_bug.cgi?id=142637

Reviewed by Dean Jackson.

  • WebProcess/Plugins/PluginView.cpp: (WebKit::PluginView::pluginSnapshotTimerFired):

m_plugin can be legitimately null.

8:05 AM Changeset in webkit [182415] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181565 - URLs visited during private browsing show up in WebpageIcons.db
rdar://problem/11254910 and https://bugs.webkit.org/show_bug.cgi?id=142733

Patch by Sam Weinig. Reviewed by Brady Eidson.

  • loader/icon/IconController.cpp:

(WebCore::IconController::startLoader): Bail early here if the page is using an ephemeral session.
(WebCore::IconController::continueLoadWithDecision): Instead of here.

8:03 AM Changeset in webkit [182414] by Carlos Garcia Campos
  • 7 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181449 - Stop using single-include headers that are only available since GStreamer >= 1.2.

https://bugs.webkit.org/show_bug.cgi?id=142537

Patch by Sebastian Dröge <sebastian@centricular.com> on 2015-03-12
Reviewed by Philippe Normand.

  • platform/audio/gstreamer/AudioDestinationGStreamer.cpp:
  • platform/audio/gstreamer/AudioFileReaderGStreamer.cpp:
  • platform/audio/gstreamer/AudioSourceProviderGStreamer.cpp:
  • platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:
  • platform/graphics/gstreamer/GStreamerUtilities.cpp:
  • platform/graphics/gstreamer/GStreamerUtilities.h:
  • platform/graphics/gstreamer/ImageGStreamer.h:

Instead of using single-include headers for the GStreamer libraries,
directly include the headers we need. The single-include headers were
only added in 1.2, and this would be the only reason why we would
depend on 1.2.

7:56 AM Changeset in webkit [182413] by Carlos Garcia Campos
  • 7 edits
    1 add in releases/WebKitGTK/webkit-2.6/Source

Merge r181305 - 8-bit version of weakCompareAndSwap() can cause an infinite loop.
https://webkit.org/b/142513>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Added a test that exercises the 8-bit CAS from multiple threads. The threads
will contend to set bits in a large array of bytes using the CAS function.

  • API/tests/CompareAndSwapTest.cpp: Added.

(Bitmap::Bitmap):
(Bitmap::numBits):
(Bitmap::clearAll):
(Bitmap::concurrentTestAndSet):
(setBitThreadFunc):
(testCompareAndSwap):

  • API/tests/testapi.c:

(main):

Source/WTF:

Presently, Bitmap::concurrentTestAndSet() uses the 8-bit version of
weakCompareAndSwap() (which compares and swaps an uint8_t value).
Bitmap::concurrentTestAndSet() has a loop that checks if a bit in the
byte of interest has been set. If not, it will call the 8-bit CAS
function to set the bit.

Under the covers, for ARM, the 8-bit CAS function actually works with a
32-bit CAS. The 8-bit CAS will first fetch the 32-bit value in memory
that should contain the 8-bit value, and check if it contains the
expected byte. If the value in memory doesn't have the expected byte,
it will return early to its caller. The expectation is that the caller
will reload the byte from memory and call the 8-bit CAS again.

Unfortunately, this code path that returns early does not have a
compiler fence. Without a compiler fence, the C++ compiler can
optimize away the reloading of the expected byte value, leaving it
unchanged. As a result, we'll have a infinite loop here that checks a
value that will never change, and the loop will not terminate until the
value changes.

The fix is to eliminate the early return check in the 8-bit CAS, and
have it always call down to the 32-bit CAS. The 32-bit CAS has a
compiler fence which will prevent this issue.

  • wtf/Atomics.h:

(WTF::weakCompareAndSwap):

6:35 AM Changeset in webkit [182412] by Carlos Garcia Campos
  • 18 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180772 - Use NeverDestroyed for JS wrapper owners.
<https://webkit.org/b/142090>

Reviewed by Chris Dumez.

Using NeverDestroyed puts these objects in BSS which is preferable
since that prevents them from pinning down entire malloc pages forever.

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader): Use NeverDestroyed instead of DEPRECATED_DEFINE_STATIC_LOCAL.

  • bindings/scripts/test/JS/*: Rebaseline bindings tests for this change.
6:13 AM Changeset in webkit [182411] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.6

Merge r180767 - Use after free in WebCore::RenderNamedFlowFragment::restoreRegionObjectsOriginalStyle
https://bugs.webkit.org/show_bug.cgi?id=138366

Reviewed by Dave Hyatt.

This patch ensures that we clean up RenderNamedFlowFragment::m_renderObjectRegionStyle when embedded flow content is getting destroyed.

In m_renderObjectRegionStyle hash map, we store style information about the named flow's descendant children.
When a child is being detached from the tree, it removes itself from this hashmap.
We do it by traversing up on the ancestor chain and call removeFlowChildInfo() on the parent flow.
However in case of embedded flows (for example multicolumn content inside a region), we need to check whether the parent flow
is inside a flow too and continue the cleanup accordingly.

Source/WebCore:

Test: fast/regions/region-with-multicolumn-embedded-crash.html

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::removeFromRenderFlowThreadIncludingDescendants):

LayoutTests:

  • fast/regions/region-with-multicolumn-embedded-crash-expected.txt: Added.
  • fast/regions/region-with-multicolumn-embedded-crash.html: Added.
5:54 AM Changeset in webkit [182410] by Carlos Garcia Campos
  • 2 edits
    1 add in releases/WebKitGTK/webkit-2.6/Source/JavaScriptCore

Merge r180505 - Crash in DFGFrozenValue
https://bugs.webkit.org/show_bug.cgi?id=141883

Reviewed by Benjamin Poulain.

If a value might be a cell, then we have to have Graph freeze it rather than trying to
create the FrozenValue directly. Creating it directly is just an optimization for when you
know for sure that it cannot be a cell.

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • tests/stress/regress-141883.js: Added. Hacked the original test to be faster while still crashing before this fix.
5:47 AM Changeset in webkit [182409] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180503 - [GStreamer] Redundant track language notifications
https://bugs.webkit.org/show_bug.cgi?id=141908

Reviewed by Žan Doberšek.

Invoke languageChanged only if the language code actually
changed.

  • platform/graphics/gstreamer/TrackPrivateBaseGStreamer.cpp:

(WebCore::TrackPrivateBaseGStreamer::notifyTrackOfTagsChanged):

5:45 AM Changeset in webkit [182408] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6

Merge r180502 - [GTK] Fails to compile with cmake 3.2.x
https://bugs.webkit.org/show_bug.cgi?id=141796

With cmake 3.2.x we have to explicitly ask for X11 otherwise the
X11_X11_LIB variable won't be set thus the X11 linker flags won't be
added and the build will fail.

Patch by Tomas Popela <tpopela@redhat.com> on 2015-02-23
Reviewed by Martin Robinson.

  • Source/cmake/OptionsGTK.cmake:
5:42 AM Changeset in webkit [182407] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WTF

Merge r180434 - RunLoop::dispatch() should drop the mutex before calling wakeUp().
https://bugs.webkit.org/show_bug.cgi?id=141820

Reviewed by Alexey Proskuryakov.

RunLoop::wakeUp() calls into CoreFoundation which could take time,
so scope the mutex just to protect m_functionQueue.

  • wtf/RunLoop.cpp:

(WTF::RunLoop::dispatch):

5:40 AM Changeset in webkit [182406] by Yusuke Suzuki
  • 28 edits in trunk/Source

Return Optional<uint32_t> from PropertyName::asIndex
https://bugs.webkit.org/show_bug.cgi?id=143422

Reviewed by Darin Adler.

Source/JavaScriptCore:

PropertyName::asIndex returns uint32_t and use UINT_MAX as NotAnIndex.
But it's not obvious to callers.

This patch changes

  1. PropertyName::asIndex() to return Optional<uint32_t> and
  2. function name asIndex() to parseIndex().

It forces callers to check the value is index or not explicitly.

  • bytecode/GetByIdStatus.cpp:

(JSC::GetByIdStatus::computeFor):

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFor):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitDirectPutById):

  • jit/Repatch.cpp:

(JSC::emitPutTransitionStubAndGetOldStructure):

  • jsc.cpp:
  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSort):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertySlot):
(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::deleteProperty):
(JSC::GenericArguments<Type>::defineOwnProperty):

  • runtime/Identifier.h:

(JSC::parseIndex):
(JSC::Identifier::isSymbol):

  • runtime/JSArray.cpp:

(JSC::JSArray::defineOwnProperty):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::putToPrimitive):

  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::getOwnPropertySlot):
(JSC::JSGenericTypedArrayView<Adaptor>::put):
(JSC::JSGenericTypedArrayView<Adaptor>::defineOwnProperty):
(JSC::JSGenericTypedArrayView<Adaptor>::deleteProperty):

  • runtime/JSObject.cpp:

(JSC::JSObject::put):
(JSC::JSObject::putDirectAccessor):
(JSC::JSObject::putDirectCustomAccessor):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::putDirectMayBeIndex):
(JSC::JSObject::defineOwnProperty):

  • runtime/JSObject.h:

(JSC::JSObject::getOwnPropertySlot):
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::putDirectInternal):

  • runtime/JSString.cpp:

(JSC::JSString::getStringPropertyDescriptor):

  • runtime/JSString.h:

(JSC::JSString::getStringPropertySlot):

  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::parse):

  • runtime/PropertyName.h:

(JSC::parseIndex):
(JSC::toUInt32FromCharacters): Deleted.
(JSC::toUInt32FromStringImpl): Deleted.
(JSC::PropertyName::asIndex): Deleted.

  • runtime/PropertyNameArray.cpp:

(JSC::PropertyNameArray::add):

  • runtime/StringObject.cpp:

(JSC::StringObject::deleteProperty):

  • runtime/Structure.cpp:

(JSC::Structure::prototypeChainMayInterceptStoreTo):

Source/WebCore:

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlot):
(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):

  • bindings/js/JSHTMLAllCollectionCustom.cpp:

(WebCore::callHTMLAllCollection):
(WebCore::JSHTMLAllCollection::item):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateGetOwnPropertySlotBody):
(GenerateImplementation):

  • bindings/scripts/test/JS/JSFloat64Array.cpp:

(WebCore::JSFloat64Array::getOwnPropertySlot):
(WebCore::JSFloat64Array::getOwnPropertyDescriptor):
(WebCore::JSFloat64Array::put):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertySlot):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertySlot):
(JSC::RuntimeArray::put):

5:38 AM Changeset in webkit [182405] by Carlos Garcia Campos
  • 4 edits
    2 adds in releases/WebKitGTK/webkit-2.6

Merge r180328 - REGRESSION(r174761) Dangling spanner pointer in RenderMultiColumnSpannerPlaceholder.
https://bugs.webkit.org/show_bug.cgi?id=138224

Reviewed by Dave Hyatt.

It's wrong to call flowThreadRelativeWillBeRemoved(child).
RenderMultiColumnFlowThread::removeFlowChildInfo() does not mean that the child is actually about to be removed.
Should this introduce any regressions, we need to deal with those separately.

Source/WebCore:

Test: fast/multicol/crash-when-spanner-gets-moved-around.html

  • rendering/RenderMultiColumnFlowThread.cpp:

(WebCore::RenderMultiColumnFlowThread::removeFlowChildInfo): Deleted.

  • rendering/RenderMultiColumnFlowThread.h:

LayoutTests:

  • fast/multicol/crash-when-spanner-gets-moved-around-expected.txt: Added.
  • fast/multicol/crash-when-spanner-gets-moved-around.html: Added.
5:33 AM WebKitGTK/2.6.x edited by Carlos Garcia Campos
(diff)
5:33 AM Changeset in webkit [182404] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180928 - [SOUP] Use SoupMessage::starting instead of SoupSession::request-started
https://bugs.webkit.org/show_bug.cgi?id=142164

Reviewed by Sergio Villar Senin.

SoupSession::request-started is deprecated in libsoup 2.50. Both
signals are equivalent, but SoupMessage::starting is also emitted
for resources loaded from the disk cache. This fixes web timing
calculations for cached resources, since we were not initializing
m_requestStart.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::startingCallback):
(WebCore::createSoupMessageForHandleAndRequest):

  • platform/network/soup/SoupNetworkSession.cpp:

(WebCore::SoupNetworkSession::SoupNetworkSession):

5:30 AM Changeset in webkit [182403] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180997 - [GStreamer] the GST_SCHEDULING_FLAG_BANDWIDTH_LIMITED should be wrapped by a ifdef
https://bugs.webkit.org/show_bug.cgi?id=142274

Patch by Philippe Normand <pnormand@igalia.com> on 2015-03-04
Reviewed by Carlos Garcia Campos.

Don't handle scheduling queries if building against versions of
GStreamer older than 1.2.0.

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcQueryWithParent):

5:29 AM Changeset in webkit [182402] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r180141 - [GTK] Loading page into WebView shows g_closure_unref warning
https://bugs.webkit.org/show_bug.cgi?id=127474

Patch by Milan Crha <mcrha@redhat.com> on 2015-02-16
Reviewed by Carlos Garcia Campos.

  • bindings/gobject/GObjectEventListener.cpp:

(WebCore::GObjectEventListener::gobjectDestroyed):

5:27 AM WebKitGTK/2.6.x edited by Carlos Garcia Campos
(diff)
5:20 AM Changeset in webkit [182401] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181074 - [SOUP] Check TLS errors as soon as they are set in the SoupMessage
https://bugs.webkit.org/show_bug.cgi?id=142244

Reviewed by Sergio Villar Senin.

Source/WebCore:

Connect to the notify::tls-errors signal of SoupMessage to cancel
the load earlier in case of TLS failure, preventing any private
data from being sent to the server before the TLS errors are checked.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::tlsErrorsChangedCallback):
(WebCore::gotHeadersCallback):
(WebCore::createSoupMessageForHandleAndRequest):

5:15 AM Changeset in webkit [182400] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Tools

Merge r181159 - [GTK] Test /webkit2/WebKitWebView/sync-request-on-max-conns might fail after finished
https://bugs.webkit.org/show_bug.cgi?id=142385

Reviewed by Sergio Villar Senin.

Use stack allocated GMainLoopSources to make sure they are
cancelled automatically if the test finishes before they have
been processed.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp:

(testWebViewSyncRequestOnMaxConns):

5:14 AM Changeset in webkit [182399] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6

Merge r180927 - [SOUP] Synchronous XMLHttpRequests can time out when we reach the max connections limit
https://bugs.webkit.org/show_bug.cgi?id=141508

Reviewed by Sergio Villar Senin.

Source/WebCore:

Use SOUP_MESSAGE_IGNORE_CONNECTION_LIMITS flag when loading a
synchronous message instead of increasing the maximum number of
connections allowed if the soup version is recent enough.
The current solution of increasing/decreasing the limits doesn't
always work, because connections are not marked as IDLE in libsoup
until the message is unqueued, but we don't wait for the message
to be unqueued to finish our loads in WebKit, we finish them as
soon as we have finished reading the stream. This causes that
synchronous loads keep blocked in the nested main loop until the
timeout of 10 seconds is fired and the load fails.
Also marked WebCoreSynchronousLoader class as final, the virtual
methods as override and removed the unsused method isSynchronousClient.

  • platform/network/soup/ResourceHandleSoup.cpp:

(WebCore::createSoupMessageForHandleAndRequest):
(WebCore::WebCoreSynchronousLoader::WebCoreSynchronousLoader):
(WebCore::WebCoreSynchronousLoader::isSynchronousClient): Deleted.
(WebCore::WebCoreSynchronousLoader::didReceiveResponse):
(WebCore::WebCoreSynchronousLoader::didReceiveData):
(WebCore::WebCoreSynchronousLoader::didReceiveBuffer):
(WebCore::WebCoreSynchronousLoader::didFinishLoading):
(WebCore::WebCoreSynchronousLoader::didFail):
(WebCore::WebCoreSynchronousLoader::didReceiveAuthenticationChallenge):
(WebCore::WebCoreSynchronousLoader::shouldUseCredentialStorage):

Tools:

Add a unit test to check that synchronous XHRs load even if the
maximum connection limits are reached.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp:

(testWebViewSyncRequestOnMaxConns):
(serverCallback):
(beforeAll):

  • gtk/jhbuild.modules: Bump libsoup version to 2.49.91.
5:11 AM Changeset in webkit [182398] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6

Merge r180565 - Crash loading local file with WebPageProxy::loadAlternateHTMLString
https://bugs.webkit.org/show_bug.cgi?id=141867

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-02-24
Reviewed by Anders Carlsson.

Source/WebKit2:

WebPageProxy::loadAlternateHTMLString needs to assume read access to unreachableURL as well
as baseURL, because unreachableURL will get added to the back/forward list, causing us to
crash later on when we notice the unexpected URL received in checkURLReceivedFromWebProcess.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::loadAlternateHTMLString):

Tools:

  • TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp:

(TestWebKitAPI::loadAlternateHTMLString): Split most of this test into a function so it can
be shared with the new test.
(TestWebKitAPI::TEST): Add a cross-platform test for this crash.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp: Add a GTK+ test for this crash.

(testLoadAlternateHTMLForLocalPage):
(beforeAll):

5:08 AM Changeset in webkit [182397] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181643 - [GTK] Wrong transfer annotations used in GObject DOM bindings
https://bugs.webkit.org/show_bug.cgi?id=142780

Reviewed by Gustavo Noronha Silva.

We are using transfer none for all methods returning a GObject DOM
Object. That's not true. Only objects derived from Node are
automatically released by the DOM object cache and can be transfer
none. All other objects are added to the cache only to avoid
creating the same wrapper twice for the same core object, but
caller should release the returned reference.

  • bindings/scripts/CodeGeneratorGObject.pm:

(GetTransferTypeForReturnType):
(GenerateFunction):

5:03 AM Changeset in webkit [182396] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6

Merge r181631 - [GTK] WebKitDOM objects leaking
https://bugs.webkit.org/show_bug.cgi?id=118788

Reviewed by Darin Adler and Sergio Villar Senin.

Source/WebCore:

Use a DOMwindowObserver class, derived from DOMWindowProperty to
be notified when the window object is detached from the frame to
clear the DOM objects associated to that frame in that case too.

  • bindings/gobject/DOMObjectCache.cpp:

Tools:

Update DOMObjectCache unit test to check that DOM objects are also
released when new contents are loaded in the web view, and the old
document is detached from the frame.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:

(testWebKitDOMObjectCache):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:

(runTest):

5:00 AM Changeset in webkit [182395] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Tools

Merge r180215 - Unreviewed. Fix /webkit2/WebKitDOMNode/dom-cache after r180214.

I forgot to add the return of a bool function.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:

(WebKitDOMNodeTest::testDOMCache):

4:59 AM Changeset in webkit [182394] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.6

Merge r180214 - [GTK] GObject DOM bindings object are cached forever
https://bugs.webkit.org/show_bug.cgi?id=141558

Reviewed by Sergio Villar Senin.

Source/WebCore:

Rework the DOMObjectCache to avoid having to manually clear the
objects when the frame is destroyed, using a FrameDestructionObserver
instead. When a new object associated to a Frame is added to the
cache, a FrameDestructionObserver is created for the frame if
needed, and the DOM object is tracked by the observer too. When
the frame is detached from the page all its objects are cleared,
and if the aren't additional references, the object is finalized
and removed from the cache normally.
This patch also simplifies and modernizes the code to make it
easier to read an maintain.

  • bindings/gobject/DOMObjectCache.cpp:

(WebKit::DOMObjectCacheData::DOMObjectCacheData): Add constructor
to initialize its members and simplify the callers.
(WebKit::DOMObjectCacheData::clearObject): Remove the references
added by the cache, ensuring the GObject is not finalized until
the method returns.
(WebKit::DOMObjectCacheData::refObject): Adds a reference owned by
the cache.
(WebKit::domObjectCacheFrameObservers): Map a frame to a FrameDestructionObserver.
(WebKit::getOrCreateDOMObjectCacheFrameObserver): Create a new
FrameDestructionObserver for the given Frame or return the
existing one.
(WebKit::domObjects): Map wrapped object to wrapper object.
(WebKit::DOMObjectCache::forget): Remove the wrapped object from
the cache.
(WebKit::DOMObjectCache::get): Return the wrapped object if it is
in the cache, increasing the cache references.
(WebKit::DOMObjectCache::put): Add the wrapper object to the cache
for the given wrapped object. If it's a Node and has a frame add
the node to the FrameDestructionObserver corresponding to the frame.
(WebKit::getFrameFromHandle): Deleted.
(WebKit::weakRefNotify): Deleted.
(WebKit::DOMObjectCache::clearByFrame): Deleted.
(WebKit::DOMObjectCache::~DOMObjectCache): Deleted.

  • bindings/gobject/DOMObjectCache.h:

Tools:

Add checks for all DOM objects to ensure they are not leaked. Also
add a dedicated test for the DOM Object Cache.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp:

(WebKitDOMNodeFilterTest::testTreeWalker):
(WebKitDOMNodeFilterTest::testNodeIterator):

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:

(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::testTagNames):
(WebKitDOMNodeTest::testDOMCache):
(registerTests):

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp:

(WebKitDOMXPathNSResolverTest::evaluateFooChildTextAndCheckResult):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverNative):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverCustom):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:

(testWebKitDOMObjectCache):
(beforeAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp:

(documentLoadedCallback):

4:06 AM Changeset in webkit [182393] by Carlos Garcia Campos
  • 8 edits in releases/WebKitGTK/webkit-2.6

Merge r180211 - [GTK] WebKitFrame objects are never released
https://bugs.webkit.org/show_bug.cgi?id=141641

Reviewed by Martin Robinson.

Source/WebKit2:

Use a FrameDestructionObserver derived class to wrap our
WebKitFrame objects and delete them when the frame is destroyed,
instead of using willDestroyFrame callback of WKBundlePageLoaderClient
that has never worked.

  • WebProcess/InjectedBundle/API/gtk/WebKitFrame.cpp:

(webkitFrameGetWebFrame):

  • WebProcess/InjectedBundle/API/gtk/WebKitFramePrivate.h:
  • WebProcess/InjectedBundle/API/gtk/WebKitWebPage.cpp:

(webkitFrameGetOrCreate):
(webkitFrameDestroy):
(webkitWebPageCreate):
(willDestroyFrame): Deleted.

Tools:

Add a way to check GObjects leaks for WebProcess tests and check
WebKitFrame objects are not leaked.

  • TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp:

(WebKitFrameTest::testMainFrame):
(WebKitFrameTest::testURI):
(WebKitFrameTest::testJavaScriptContext):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:

(WebProcessTest::assertObjectIsDeletedWhenTestFinishes):
(runTest):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:
4:03 AM Changeset in webkit [182392] by Carlos Garcia Campos
  • 14 edits
    2 deletes in releases/WebKitGTK/webkit-2.6/Tools

Merge r176563 - [GTK] Use custom JavaScript instead of DBus to implement WebProcess tests
https://bugs.webkit.org/show_bug.cgi?id=138834

Reviewed by Sergio Villar Senin.

It makes everyting simpler and the tests run faster too, since we
don't need to spawn the private bus and wait until the DBus name
is registered. The web extension registers a new JavaSCript class
with a status method to run the tests, similar to the DBus
method. In the UI process side, tests use webkit_web_view_run_java_script()
instead of sending a DBus message.

  • TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt:
  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp:

(WebKitDOMNodeFilterTest::create):
(WebKitDOMNodeFilterTest::testTreeWalker):
(WebKitDOMNodeFilterTest::testNodeIterator):
(WebKitDOMNodeFilterTest::webPageFromArgs): Deleted.
(WebKitDOMNodeFilterTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp:

(WebKitDOMNodeTest::create):
(WebKitDOMNodeTest::testHierarchyNavigation):
(WebKitDOMNodeTest::testInsertion):
(WebKitDOMNodeTest::testTagNames):
(WebKitDOMNodeTest::webPageFromArgs): Deleted.
(WebKitDOMNodeTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp:

(WebKitDOMXPathNSResolverTest::create):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverNative):
(WebKitDOMXPathNSResolverTest::testXPathNSResolverCustom):
(WebKitDOMXPathNSResolverTest::webPageFromArgs): Deleted.
(WebKitDOMXPathNSResolverTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp:

(WebKitFrameTest::create):
(WebKitFrameTest::testMainFrame):
(WebKitFrameTest::testURI):
(WebKitFrameTest::testJavaScriptContext):
(WebKitFrameTest::webPageFromArgs): Deleted.
(WebKitFrameTest::runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp:

(testWebKitDOMNodeHierarchyNavigation):
(testWebKitDOMNodeInsertion):
(testWebKitDOMNodeTagNames):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp:

(runTest):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp:

(testWebKitDOMXPathNSResolverNative):
(testWebKitDOMXPathNSResolverCustom):
(beforeAll):
(afterAll):
(runTest): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp:

(webkitFrameTestRun):
(beforeAll):
(afterAll):

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp:

(testsMap):
(WebProcessTest::add):
(WebProcessTest::create):
(runTest):
(windowObjectClearedCallback):
(webkit_web_extension_initialize):
(methodCallCallback): Deleted.
(webkit_web_extension_initialize_with_user_data): Deleted.

  • TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h:
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.cpp: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebProcessTestRunner.h: Removed.
  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::runWebProcessTest):

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
3:06 AM Changeset in webkit [182391] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.6/Tools

Merge r179248 - [GTK] Unit test /webkit2/WebKitWebView/page-visibility from WebKit2Gtk/TestWebKitWebView fails
https://bugs.webkit.org/show_bug.cgi?id=131731

Reviewed by Žan Doberšek.

A web page loaded offscreen is in prerender state not hidden.

  • Scripts/run-gtk-tests:

(TestRunner): Unskip /webkit2/WebKitWebView/page-visibility.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewPageVisibility):

3:02 AM Changeset in webkit [182390] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6/Tools

Merge r178644 - [GTK] [WK2] TestWebKitWebView snapshot fails
https://bugs.webkit.org/show_bug.cgi?id=120404

Reviewed by Žan Doberšek.

Rework the test to make sure the snapshot is always created at the
desired size.

  • Scripts/run-gtk-tests:

(TestRunner): Unskip /webkit2/WebKitWebView/snapshot.

  • TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp:

(testWebViewSnapshot): Use a fixed size for the document, and
disable scrollbars to make sure the visible area is always the
WebView size.

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp:

(WebViewTest::showInWindowAndWaitUntilMapped): Add optional width
and height parameters to create the window with a given size.

  • TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.h:
2:56 AM Changeset in webkit [182389] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6/Source

Merge r179397 - [GTK] Resize the redirected XComposite again after leaving accelerated compositing mode
https://bugs.webkit.org/show_bug.cgi?id=140935

Reviewed by Sergio Villar Senin.

Since r178414 we don't resize the redirected XComposite window
until we enter accelerated compositing mode, but after leaving it
the redirected window keeps its size. We should resize it to 1x1
again and free the XPixmap and cairo surface to save that memory
while not in accelerated compositing mode.

  • UIProcess/API/gtk/PageClientImpl.cpp:

(WebKit::PageClientImpl::enterAcceleratedCompositingMode): Notify
the WebKitWebViewBase.
(WebKit::PageClientImpl::exitAcceleratedCompositingMode): Ditto.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseEnterAcceleratedCompositingMode): Resize the
XComposite window to the current drawing area size.
(webkitWebViewBaseExitAcceleratedCompositingMode): Resize the
XComposite window to and empty size.

  • UIProcess/API/gtk/WebKitWebViewBasePrivate.h:
  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:

(WebKit::RedirectedXCompositeWindow::RedirectedXCompositeWindow):
Do not initialize m_size since we now handle the empty size as a
especial case. Make sure we always create the X window with at
least 1x1 size.
(WebKit::RedirectedXCompositeWindow::resize): Resize the window to
at least 1x1, but when en empty size is given, call
cleanupPixmapAndPixmapSurface() to release those resources.
(WebKit::RedirectedXCompositeWindow::surface): Create the cairo
surface with at least 1x1 size.

2:55 AM Changeset in webkit [182388] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebKit2

[WK2] API::Array::copy() should move the resulting Vector<> of copies into the Array::create() call
https://bugs.webkit.org/show_bug.cgi?id=143413

Reviewed by Darin Adler.

Move the Vector<> object containing the copied elements into the Array::create()
call, avoiding copying all the elements again.

While here, change the Vector<> parameters for Array::create() and the Array
constructor to rvalue references. This will ensure that the passed-in object
is moved into the Array::create() call if possible, or explicitly copied
otherwise. The constructor is moved into the header for inlining opportunities
and the unnecessary parameter in the create(Vector<>&&) method declaration
removed.

  • Shared/API/APIArray.cpp:

(API::Array::create):
(API::Array::copy):
(API::Array::Array): Deleted.

  • Shared/API/APIArray.h:
2:39 AM Changeset in webkit [182387] by Carlos Garcia Campos
  • 5 edits in releases/WebKitGTK/webkit-2.6/Source/WebKit2

Merge r179744 - ASSERTION FAILED: !m_adoptionIsRequired in WTF::RefCountedBase::ref
https://bugs.webkit.org/show_bug.cgi?id=141035

Reviewed by Sergio Villar Senin.

Rename PrinterListGtk::singleton() as PrinterListGtk::getOrCreate(), and
make it return nullptr when the shared PrinterListGtk object is
still being created. This can happen if the nested loop used by
gtk_enumerate_printers dispatches a GSource that starts a new
synchronous print operation. In that case we just ignore the
second print operation, since there's already one ongoing.

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::print): Return early if
PrinterListGtk::getOrCreate() return nullptr.

  • WebProcess/WebPage/gtk/PrinterListGtk.cpp:

(WebKit::PrinterListGtk::getOrCreate): Return nullptr if the
PrinterListGtk is still enumerating the printers.
(WebKit::PrinterListGtk::PrinterListGtk): Initialize
m_enumeratingPrinters to true before calling
gtk_enumerate_printers, and to false once it finishes.
(WebKit::PrinterListGtk::singleton): Deleted.
(WebKit::PrinterListGtk::enumeratePrintersFunction): Deleted.

  • WebProcess/WebPage/gtk/PrinterListGtk.h:
  • WebProcess/WebPage/gtk/WebPrintOperationGtk.cpp: Add an

assertion here since PrinterListGtk::getOrCreate() should never
return nullptr at this point.

2:06 AM Changeset in webkit [182386] by youenn.fablet@crf.canon.fr
  • 7 edits
    1 add
    1 delete in trunk

W3C test importer should generate the modules installed dynamically to run wpt tests
https://bugs.webkit.org/show_bug.cgi?id=142738

Reviewed by Ryosuke Niwa.

LayoutTests/imported/w3c:

Renamed WPTModules to web-platform-test-modules.json
Updated TestRepositories to ask the importer to generate web-platform-test-modules.json at import time.

  • resources/TestRepositories:
  • resources/WPTModules: Removed.
  • resources/web-platform-tests-modules.json: Added.

Tools:

The test importer can now generate the submodules description file based on information extracted from the corresponding git repository.
The implementation is done within TestDownloader and it is activated for the WPT repository.
LayoutTests/imported/w3c/resources/WPTModules is renamed as LayoutTests/imported/w3c/resources/web-platform-tests-modules.json for that reason.

  • Scripts/webkitpy/layout_tests/servers/web_platform_test_server.py:

(WebPlatformTestServer._install_modules): Updated to cope with path as array.

  • Scripts/webkitpy/w3c/test_downloader.py:

(TestDownloader._git_submodules_status): Added so that it can be overriden for unit tests.
(TestDownloader):
(TestDownloader._git_submodules_description): Computes submodule description.
(TestDownloader.generate_git_submodules_description): Write submodule description in a file.

  • Scripts/webkitpy/w3c/test_importer.py:

(TestImporter.do_import): Added the possibility to post process the tests.
(TestImporter):
(TestImporter.generate_git_submodules_description_for_all_repositories): Enable generating module description file.
(TestImporter.should_convert_test_harness_links): Updated according new options format.

  • Scripts/webkitpy/w3c/test_importer_unittest.py:

(TestImporterTest.import_downloaded_tests): Making use of TestDownloaderMock.
(TestImporterTest.import_downloaded_tests.TestDownloaderMock): Added to override submodule status gathering.
(TestImporterTest.import_downloaded_tests.TestDownloaderMock.init):
(TestImporterTest.import_downloaded_tests.TestDownloaderMock._git_submodules_status):
(TestImporterTest.test_submodules_generation): Added to check that modules description files works.

2:01 AM Changeset in webkit [182385] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebCore

Merge r181744 - [GTK] Scrollbars look bad with GTK+ 3.16
https://bugs.webkit.org/show_bug.cgi?id=140800

Reviewed by Sergio Villar Senin.

Take margin into account when rendering scrollbars. This fixes the
huge scrollbars rendered with GTK+ 3.16. We don't need to check
the GTK+ version because in previous versions the marging were 0,
so the same code just works.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::adjustRectAccordingToMargin):
(WebCore::ScrollbarThemeGtk::paintTrackBackground):
(WebCore::ScrollbarThemeGtk::paintThumb):

1:43 AM Changeset in webkit [182384] by Carlos Garcia Campos
  • 6 edits
    2 deletes in releases/WebKitGTK/webkit-2.6/Source

Merge r182175 - [GTK] DnD icon/widget has odd background
https://bugs.webkit.org/show_bug.cgi?id=143217

Reviewed by Martin Robinson.

Source/WebCore:

Remove DragIcon class since it's no longer needed with GTK+3 and
the GTK+2 code there is unused. GTK+ knows what to do with a cairo
surface, I guess we migrated the GTK+2 code to GTK+3 without
realizing that using the surface was enough.

  • PlatformGTK.cmake:
  • platform/gtk/DragIcon.cpp: Removed.
  • platform/gtk/DragIcon.h: Removed.

Source/WebKit2:

Use gtk_drag_set_icon_surface() to set the drag icon image,
instead of DragIcon class.

  • UIProcess/API/gtk/WebKitWebView.cpp:
  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::startDrag):

  • UIProcess/gtk/DragAndDropHandler.h:
1:37 AM Changeset in webkit [182383] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.6/Source/WebKit2

Unreviewed. Fix typo in API doc comment.

  • UIProcess/API/gtk/WebKitUserContent.cpp:
1:34 AM Changeset in webkit [182382] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.6/Source

Merge r179866 - [GTK] GMutexLocker build issue
https://bugs.webkit.org/show_bug.cgi?id=141381

Reviewed by Žan Doberšek.

Source/WebCore:

Use always WTF::GMutexLocker because newer glib versions have a
GMutexLocker in the public API.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::MediaPlayerPrivateGStreamerBase::naturalSize):
(WebCore::MediaPlayerPrivateGStreamerBase::updateTexture):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::paint):

  • platform/graphics/gstreamer/VideoSinkGStreamer.cpp:

(webkitVideoSinkTimeoutCallback):
(webkitVideoSinkRender):
(unlockSampleMutex):
(webkitVideoSinkUnlockStop):
(webkitVideoSinkStart):

  • platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:

(webKitWebSrcGetProperty):
(webKitWebSrcStop):
(webKitWebSrcStart):
(webKitWebSrcChangeState):
(webKitWebSrcQueryWithParent):
(webKitWebSrcGetUri):
(webKitWebSrcSetUri):
(webKitWebSrcNeedDataMainCb):
(webKitWebSrcNeedDataCb):
(webKitWebSrcEnoughDataMainCb):
(webKitWebSrcEnoughDataCb):
(webKitWebSrcSeekDataCb):
(webKitWebSrcSetMediaPlayer):
(StreamingClient::createReadBuffer):
(StreamingClient::handleResponseReceived):
(StreamingClient::handleDataReceived):
(StreamingClient::handleNotifyFinished):
(ResourceHandleStreamingClient::wasBlocked):
(ResourceHandleStreamingClient::cannotShowURL):

Source/WTF:

Remove using WTF::GMutexLocker from the header, since newer glib
versions have a GMutexLocker in the public API.

  • wtf/gobject/GMutexLocker.h:
12:51 AM Changeset in webkit [182381] by Carlos Garcia Campos
  • 10 edits
    2 moves in releases/WebKitGTK/webkit-2.6

Merge r179111 - [GTK] gtkdoc does not appear in DevHelp
https://bugs.webkit.org/show_bug.cgi?id=139369

.:

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-01-26
Reviewed by Philippe Normand.

Expect the gtkdoc to be generated in folders named with the API version.

  • Source/PlatformGTK.cmake:

Source/WebCore:

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-01-26
Reviewed by Philippe Normand.

  • PlatformGTK.cmake: Include the API version in the gtkdoc filenames.

Source/WebKit2:

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-01-26
Reviewed by Philippe Normand.

  • PlatformGTK.cmake: Include the API version in the gtkdoc filenames.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0-sections.txt: Renamed from Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt.
  • UIProcess/API/gtk/docs/webkit2gtk-4.0.types: Renamed from Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk.types.

Tools:

Patch by Michael Catanzaro <Michael Catanzaro> and Carlos Garcia Campos <cgarcia@igalia.com> on 2015-01-26
Reviewed by Philippe Normand.

  • gtk/generate-gtkdoc: Create the generators in the main function

and use them to get the local cross renference dependencies. Also
pass the generator module name to webkitdom.write_doc_files().
(get_gtkdoc_module_paths): Receive a list of local cross reference
dependencies.
(get_generator_for_config): Set the main_sgml_file property of the
GtkDoc object from the configuration file.
(generate_documentation): Generate the documentation for the given
generator.
(generate_documentation_for_config): Deleted.

  • gtk/manifest.txt.in: Expect the API version in the gtkdoc filenames.
  • gtk/webkitdom.py:

(write_doc_files): Receive the module name used to build the
-sections.txt filename.

12:46 AM Changeset in webkit [182380] by Carlos Garcia Campos
  • 4 edits
    1 move in releases/WebKitGTK/webkit-2.6

Merge r178672 - [GTK] Generate the make dist manifest from a CMake template file
https://bugs.webkit.org/show_bug.cgi?id=139387

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-01-19
Reviewed by Martin Robinson.

.:

Generate manifest.txt from manifest.txt.in. Only expose the dist and
distcheck targets for developer builds, as they won't work when
building from a tarball because the manifest is not distributed.

  • Source/PlatformGTK.cmake:

Tools:

Remove the code that performs variable substitution on manifest.txt.
Replace the custom variables used in that file with CMake variables.

  • gtk/make-dist.py:

(Manifest.add_directory):
(Manifest.get_full_source_path):
(Manifest.process_line):
(Manifest.resolve_variables): Deleted.
(Manifest.get_full_tarball_path): Deleted.

  • gtk/manifest.txt.in: Renamed from Tools/gtk/manifest.txt.
12:39 AM WebKitGTK/2.6.x edited by Carlos Garcia Campos
(diff)
12:22 AM Changeset in webkit [182379] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

FileList constructor should move the passed-in Vector<> rvalue reference into the member variable
https://bugs.webkit.org/show_bug.cgi?id=143412

Reviewed by Darin Adler.

  • fileapi/FileList.h:

(WebCore::FileList::FileList): An explicit move of the passed-in rvalue
reference into the member variable is required, otherwise a copy is
performed since an rvalue reference is just an lvalue.

12:21 AM Changeset in webkit [182378] by zandobersek@gmail.com
  • 5 edits in trunk/Source

Source/WebCore:
UserScript, UserStyleSheet constructors should take in Vector<String> rvalue references
https://bugs.webkit.org/show_bug.cgi?id=143411

Reviewed by Darin Adler.

Have the UserScript and UserStyleSheet constructors take in Vector<String>
rvalue references for the whitelist and blacklist parameters. Both classes
store these Vector<String> objects, so the referenced objects can simply be
moved into the member variable.

Because the constructor is now demanding an rvalue, it's up to the caller
to move in the desired object if possible, or create an explicit copy
otherwise.

  • page/UserScript.h:

(WebCore::UserScript::UserScript):

  • page/UserStyleSheet.h:

(WebCore::UserStyleSheet::UserStyleSheet):

Source/WebKit2:
UserScript, UserStyleSheet constructors should take in Vector<String> rvalues
https://bugs.webkit.org/show_bug.cgi?id=143411

Reviewed by Darin Adler.

Move the whitelist and blacklist Vector<String> objects into the
UserScript and UserStyleSheet constructors in ArgumentCoder<T>::decode
functions.

  • Shared/WebCoreArgumentCoders.cpp:

(IPC::ArgumentCoder<UserStyleSheet>::decode):
(IPC::ArgumentCoder<UserScript>::decode):

Apr 5, 2015:

10:24 PM Changeset in webkit [182377] by aestes@apple.com
  • 2 edits in trunk/Source/WebCore

[Content Filtering] Only pass http(s) requests to -[NEFilterSource willSendRequest:...]
https://bugs.webkit.org/show_bug.cgi?id=143437

Reviewed by Dan Bernstein.

No new tests. We can't test NEFilterSource directly.

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::willSendRequest): Immediately allow requests with url schemes other than http and https.

9:48 PM Changeset in webkit [182376] by aestes@apple.com
  • 1 edit
    6 copies
    4 moves
    6 adds in trunk/LayoutTests

[Content Filtering] Add some additional unblock tests
https://bugs.webkit.org/show_bug.cgi?id=143435

Reviewed by Dan Bernstein.

  • contentfiltering/block-after-add-data-then-allow-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-add-data-then-allow-unblock.html: Added.
  • contentfiltering/block-after-add-data-then-deny-unblock-expected.html: Renamed from LayoutTests/contentfiltering/allow-after-unblock-request-expected.html.
  • contentfiltering/block-after-add-data-then-deny-unblock.html: Added.
  • contentfiltering/block-after-finished-adding-data-then-allow-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-finished-adding-data-then-allow-unblock.html: Renamed from LayoutTests/contentfiltering/allow-after-unblock-request.html.
  • contentfiltering/block-after-finished-adding-data-then-deny-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-finished-adding-data-then-deny-unblock.html: Renamed from LayoutTests/contentfiltering/block-after-unblock-request.html.
  • contentfiltering/block-after-response-then-allow-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-response-then-allow-unblock.html: Added.
  • contentfiltering/block-after-response-then-deny-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-response-then-deny-unblock.html: Added.
  • contentfiltering/block-after-will-send-request-then-allow-unblock-expected.html: Copied from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-will-send-request-then-allow-unblock.html: Added.
  • contentfiltering/block-after-will-send-request-then-deny-unblock-expected.html: Renamed from LayoutTests/contentfiltering/block-after-unblock-request-expected.html.
  • contentfiltering/block-after-will-send-request-then-deny-unblock.html: Added.
9:01 PM Changeset in webkit [182375] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add String/Array "includes" parameter display string
https://bugs.webkit.org/show_bug.cgi?id=143434

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-05
Reviewed by Darin Adler.

  • UserInterface/Models/NativeFunctionParameters.js:
8:29 PM Changeset in webkit [182374] by Darin Adler
  • 2 edits in trunk/Source/WebCore

FrameView code uses page() without null checking
https://bugs.webkit.org/show_bug.cgi?id=143425
rdar://problem/18920601

Reviewed by Anders Carlsson.

While we don't have tests that cover this, we are seeing crashes coming in
that indicate the shouldEnableSpeculativeTilingDuringLoading function is
being called when the page is null. This patch adds null checks to all the
places in FrameView that use page() without doing null checking.

  • page/FrameView.cpp:

(WebCore::FrameView::layout): If page is null, don't try to do the
auto-sizing logic that involves the textAutosizingWidth value from the page.
(WebCore::FrameView::setFixedVisibleContentRect): Get settings from the
frame rather than the page to avoid possible null-dereference.
(WebCore::FrameView::scrollPositionChanged): Check the page for null when
getting the event throttling delay.
(WebCore::FrameView::updateLayerFlushThrottling): Check the page for null,
and return early if it is null.
(WebCore::shouldEnableSpeculativeTilingDuringLoading): Check the page for
null, and return false if it is null.
(WebCore::FrameView::performPostLayoutTasks): Guard the code that calls
didLayout on the page client by a check if the page is null.
(WebCore::FrameView::pagination): Don't call Page::pagination on a null
page here.
(WebCore::FrameView::visibleContentScaleFactor): Use a scale factor of 1
if the page is null.
(WebCore::FrameView::setVisibleScrollerThumbRect): Don't call through to
the page client if the page is null.
(WebCore::FrameView::scrollbarStyleChanged): Ditto.
(WebCore::FrameView::setScrollPinningBehavior): Check the page for null
before asking it for the scrolling coordinator.

7:59 PM Changeset in webkit [182373] by Simon Fraser
  • 4 edits in trunk/Source/WebCore

Free up some bits in RenderObject by moving rarely used bits into a side table
https://bugs.webkit.org/show_bug.cgi?id=143432

Reviewed by Darin Adler.

Add a side table (global hash) on RenderObject to store data that is rarely
used. Move the "isDragging" and "hasReflection" bits there. Re-use one of
those bits for "hasRareData", and leave the other unused (I have plans for it).

  • rendering/RenderBlock.cpp:

(WebCore::getBlockRareData): Renamed for consistency.
(WebCore::ensureBlockRareData): Renamed to avoid conflict with RenderObject::ensureRareData().
(WebCore::RenderBlock::cachedFlowThreadContainingBlock):
(WebCore::RenderBlock::cachedFlowThreadContainingBlockNeedsUpdate):
(WebCore::RenderBlock::setCachedFlowThreadContainingBlockNeedsUpdate):
(WebCore::RenderBlock::updateCachedFlowThreadContainingBlock):
(WebCore::RenderBlock::locateFlowThreadContainingBlock):
(WebCore::RenderBlock::paginationStrut):
(WebCore::RenderBlock::pageLogicalOffset):
(WebCore::RenderBlock::setPaginationStrut):
(WebCore::RenderBlock::setPageLogicalOffset):
(WebCore::getRareData): Deleted.
(WebCore::ensureRareData): Deleted.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::~RenderObject): Assert that rare data hasn't been resurrected
since willBeDestroyed().
(WebCore::RenderObject::willBeDestroyed): Clear the rare data.
(WebCore::RenderObject::setIsDragging): If setting, ensure that we have rare data and
set the bit. Otherwise, only clear the bit of we have rare data.
(WebCore::RenderObject::setHasReflection): Ditto.
(WebCore::RenderObject::rareDataMap):
(WebCore::RenderObject::rareData):
(WebCore::RenderObject::ensureRareData):
(WebCore::RenderObject::clearRareData):

  • rendering/RenderObject.h:

(WebCore::RenderObject::isDragging): Fast-fail on the hasRareData() bit, then do the
slower lookup in rare data.
(WebCore::RenderObject::hasReflection): Ditto.
(WebCore::RenderObject::setEverHadLayout): Moved up to group with other bit setters.
(WebCore::RenderObject::hasRareData):
(WebCore::RenderObject::setHasRareData):
(WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
(WebCore::RenderObject::RenderObjectRareData::RenderObjectRareData):
(WebCore::RenderObject::setHasReflection): Deleted. Out of line now.
(WebCore::RenderObject::setIsDragging): Deleted. Ditto.

6:56 PM Changeset in webkit [182372] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression: Map instances don't expand
https://bugs.webkit.org/show_bug.cgi?id=143428

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-04-05
Reviewed by Brian Burg.

Fix uses of "this" in super() calls. Also fix a style name
that no longer exists and was intended to be inlined.

  • UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:

(WebInspector.IndexedDatabaseObjectStoreTreeElement):

  • UserInterface/Views/IndexedDatabaseTreeElement.js:

(WebInspector.IndexedDatabaseTreeElement):

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.js:

(WebInspector.ObjectTreeMapEntryTreeElement):

6:43 PM Changeset in webkit [182371] by Darin Adler
  • 2 edits in trunk/Source/WebCore

REGRESSION (r181778): Crash after scrolling Google search result page
https://bugs.webkit.org/show_bug.cgi?id=143431

Reviewed by Simon Fraser.

I can't reproduce this crash, nor was I able to make a regression test,
but the crash data makes it clear this is a null dereference.

  • page/animation/AnimationController.cpp:

(WebCore::AnimationControllerPrivate::scrollWasUpdated): Check the result
of Frame::view for null. We know this is only called when there is a
valid FrameView, but it can be called after Frame::m_view is already null.

6:32 PM Changeset in webkit [182370] by akling@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

URI encoding/escaping should use efficient string building instead of calling snprintf().
<https://webkit.org/b/143426>

Reviewed by Gavin Barraclough.

I saw 0.5% of main thread time in snprintf() on <http://polymerlabs.github.io/benchmarks/>
which seemed pretty silly. This change gets that down to nothing in favor of using our
existing JSStringBuilder and HexNumber.h facilities.

These APIs are well-exercised by our existing test suite.

  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::encode):
(JSC::globalFuncEscape):

5:23 PM Changeset in webkit [182369] by aestes@apple.com
  • 20 edits
    12 adds in trunk

[Content Filtering] Tell the filter about requests and redirects
https://bugs.webkit.org/show_bug.cgi?id=143414
rdar://problem/19239549

Reviewed by Darin Adler.

Source/WebCore:

Tests: contentfiltering/allow-after-will-send-request.html

contentfiltering/block-after-will-send-request.html
http/tests/contentfiltering/allow-after-redirect.html
http/tests/contentfiltering/block-after-redirect.html

NEFilterSource supports making filter decisions based on NSURLRequests, so this patch adds support for telling
ContentFilter about the original main resource request as well as redirect requests.

  • bindings/js/JSMockContentFilterSettingsCustom.cpp: Updated decisionPoint values to include AfterWillSendRequest and AfterRedirect.

(WebCore::JSMockContentFilterSettings::decisionPoint):
(WebCore::JSMockContentFilterSettings::setDecisionPoint):

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::willSendRequest): Called willSendRequest() on each filter using forEachContentFilterUntilBlocked().
(WebCore::ContentFilter::redirectReceived): Called willSendRequest().

  • loader/ContentFilter.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::willSendRequest): Called ContentFilter::willSendRequest() if there is a content filter.
Asserted that this is not a redirect, and that ContentFilter does not set the request to null.

  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::willSendRequest): Called redirectReceived() instead of willSendRequest().

  • loader/cache/CachedRawResource.cpp:

(WebCore::CachedRawResource::redirectReceived): Renamed from willSendRequest(), since this function is only called during redirects.
(WebCore::CachedRawResource::willSendRequest): Deleted.

  • loader/cache/CachedRawResource.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::redirectReceived): Renamed from willSendRequest(), since this function is only called during redirects.
(WebCore::CachedResource::willSendRequest): Deleted.

  • loader/cache/CachedResource.h:
  • platform/PlatformContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::willSendRequest): Called responseReceived() if there was a redirectResponse.
Then called -[NEFilterSource willSendRequest:decisionHandler:].

  • platform/cocoa/ParentalControlsContentFilter.h:
  • platform/spi/cocoa/NEFilterSourceSPI.h: Added a #define for NEFilterSourceOptionsPageData.
  • testing/MockContentFilter.cpp:

(WebCore::MockContentFilter::willSendRequest): Added support for willSendRequest.

  • testing/MockContentFilter.h: Added decision points for AfterWillSendRequest and AfterRedirect.
  • testing/MockContentFilterSettings.h:
  • testing/MockContentFilterSettings.idl:

LayoutTests:

  • contentfiltering/allow-after-will-send-request-expected.html: Added.
  • contentfiltering/allow-after-will-send-request.html: Added.
  • contentfiltering/block-after-will-send-request-expected.html: Added.
  • contentfiltering/block-after-will-send-request.html: Added.
  • http/tests/contentfiltering/allow-after-redirect-expected.html: Added.
  • http/tests/contentfiltering/allow-after-redirect.html: Added.
  • http/tests/contentfiltering/block-after-redirect-expected.html: Added.
  • http/tests/contentfiltering/block-after-redirect.html: Added.
  • http/tests/contentfiltering/resources/fail.html: Added.
  • http/tests/contentfiltering/resources/pass.html: Added.
4:41 PM Changeset in webkit [182368] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

documentation for ES Promises points to the wrong one
https://bugs.webkit.org/show_bug.cgi?id=143263

Patch by Masataka Yakura <masataka.yakura@gmail.com> on 2015-04-05
Reviewed by Darin Adler.

  • features.json:
4:31 PM Changeset in webkit [182367] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Remove DocumentLoader::requestURL().
https://bugs.webkit.org/show_bug.cgi?id=140001

Patch by Sungmann Cho <sungmann.cho@navercorp.com> on 2015-04-05
Reviewed by Darin Adler.

No new tests, no behavior change.

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::documentURL):
(WebCore::DocumentLoader::requestURL): Deleted.

  • loader/DocumentLoader.h:
  • loader/ResourceLoadNotifier.cpp:

(WebCore::ResourceLoadNotifier::dispatchWillSendRequest):

3:24 PM Changeset in webkit [182366] by Darin Adler
  • 2 edits in trunk/Source/WebKit2

[Mac] Spins seen in WKSetApplicationInformationItem, so it should not be called on the main thread
https://bugs.webkit.org/show_bug.cgi?id=143423
rdar://problem/18773785

Reviewed by Alexey Proskuryakov.

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::origin): Factored out this helper function from updateActivePages below, so
the function below is easier to read.
(WebKit::WebProcess::updateActivePages): Refactored to use the new origin function.
Use dispatch_async to call WKSetApplicationInformationItem without blocking.

1:44 PM Changeset in webkit [182365] by commit-queue@webkit.org
  • 24 edits in trunk/Source

Use constants of sqlite3 directly for status of SQL result in webdatabase
https://bugs.webkit.org/show_bug.cgi?id=143329

Patch by Gyuyoung Kim <gyuyoung.kim@samsung.com> on 2015-04-05
Reviewed by Darin Adler.

Source/WebCore:

In webdatabase, it has used own constant vairables as well as using sqlite3 constants directly.
It causes to use if~else statement which consumes more cpu cycles compared to switch~case. This
patch makes to use constants of sqlite3. Additionally if~else statment is changed to switch~case
to save cpu cycles.

No new tests, no behavior changes.

  • Modules/webdatabase/Database.cpp:

(WebCore::Database::performGetTableNames):

  • Modules/webdatabase/DatabaseBackendBase.cpp:

(WebCore::retrieveTextResultFromDatabase):
(WebCore::setTextValueInDatabase):
(WebCore::DatabaseBackendBase::incrementalVacuumIfNeeded):

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::hasEntryForOriginNoLock):
(WebCore::DatabaseTracker::hasEntryForDatabase):
(WebCore::DatabaseTracker::fullPathForDatabaseNoLock):
(WebCore::DatabaseTracker::origins):
(WebCore::DatabaseTracker::databaseNamesForOriginNoLock):
(WebCore::DatabaseTracker::detailsForNameAndOrigin):
(WebCore::DatabaseTracker::setDatabaseDetails):
(WebCore::DatabaseTracker::quotaForOriginNoLock):
(WebCore::DatabaseTracker::setQuota):
(WebCore::DatabaseTracker::addDatabase):
(WebCore::DatabaseTracker::deleteOrigin):
(WebCore::DatabaseTracker::deleteDatabase):
(WebCore::DatabaseTracker::removeDeletedOpenedDatabases):
(WebCore::DatabaseTracker::deleteDatabaseFileIfEmpty):

  • Modules/webdatabase/SQLStatementBackend.cpp:

(WebCore::SQLStatementBackend::execute):

  • Modules/webdatabase/SQLStatementBackend.h:
  • Modules/webdatabase/SQLTransactionBackend.cpp:

(WebCore::SQLTransactionBackend::runCurrentStatementAndGetNextState):
Change to use a reference instead of a pointer in arguemnt of execute().

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::loadCacheGroup):
(WebCore::ApplicationCacheStorage::loadManifestHostHashes):
(WebCore::ApplicationCacheStorage::cacheGroupForURL):
(WebCore::ApplicationCacheStorage::fallbackCacheGroupForURL):
(WebCore::ApplicationCacheStorage::calculateQuotaForOrigin):
(WebCore::ApplicationCacheStorage::calculateUsageForOrigin):
(WebCore::ApplicationCacheStorage::calculateRemainingSizeForOriginExcludingCache):
(WebCore::ApplicationCacheStorage::storeUpdatedQuotaForOrigin):
(WebCore::ApplicationCacheStorage::verifySchemaVersion):
(WebCore::ApplicationCacheStorage::store):
(WebCore::ApplicationCacheStorage::storeUpdatedType):
(WebCore::ApplicationCacheStorage::ensureOriginRecord):
(WebCore::ApplicationCacheStorage::storeNewestCache):
(WebCore::ApplicationCacheStorage::loadCache):
(WebCore::ApplicationCacheStorage::remove):
(WebCore::ApplicationCacheStorage::getManifestURLs):
(WebCore::ApplicationCacheStorage::cacheGroupSize):
(WebCore::ApplicationCacheStorage::deleteCacheGroupRecord):
(WebCore::ApplicationCacheStorage::checkForMaxSizeReached):
(WebCore::ApplicationCacheStorage::checkForDeletedResources):
(WebCore::ApplicationCacheStorage::flatFileAreaSize):

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::checkIntegrity):
(WebCore::IconDatabase::performURLImport):
(WebCore::IconDatabase::pruneUnretainedIcons):
(WebCore::readySQLiteStatement):
(WebCore::IconDatabase::setIconIDForPageURLInSQLDatabase):
(WebCore::IconDatabase::removePageURLFromSQLDatabase):
(WebCore::IconDatabase::getIconIDForIconURLFromSQLDatabase):
(WebCore::IconDatabase::addIconURLToSQLDatabase):
(WebCore::IconDatabase::getImageDataForIconURLFromSQLDatabase):
(WebCore::IconDatabase::removeIconFromSQLDatabase):
(WebCore::IconDatabase::writeIconSnapshotToSQLDatabase):

  • platform/sql/SQLiteDatabase.cpp:

(WebCore::SQLiteDatabase::setMaximumSize):

  • platform/sql/SQLiteDatabase.h:
  • platform/sql/SQLiteFileSystem.cpp:

(WebCore::SQLiteFileSystem::getFileNameForNewDatabase):

  • platform/sql/SQLiteStatement.cpp:

(WebCore::SQLiteStatement::step):
(WebCore::SQLiteStatement::returnIntResults):
(WebCore::SQLiteStatement::returnInt64Results):

Source/WebKit:

In webdatabase, it has used own constants vairables as well as using sqlite3 constants directly.
It causes to use if~else statement which consumes more cpu cycles compared to switch~case. This
patch makes to use constants of sqlite3.

  • Storage/StorageAreaSync.cpp:

(WebCore::StorageAreaSync::performImport):
(WebCore::StorageAreaSync::sync):
(WebCore::StorageAreaSync::deleteEmptyDatabase):

  • Storage/StorageTracker.cpp:

(WebCore::StorageTracker::syncImportOriginIdentifiers):
(WebCore::StorageTracker::syncSetOriginDetails):
(WebCore::StorageTracker::syncDeleteAllOrigins):
(WebCore::StorageTracker::syncDeleteOrigin):
(WebCore::StorageTracker::databasePathForOrigin):

  • WebKit.vcxproj/WebKit/WebKitCommon.props: Add sqlite include path.

Source/WebKit2:

In webdatabase, it has used own constant variables as well as using sqlite3 constants directly.
If sqlite3 constants are changed in the library, we should modify many files as well. Besides
it can cause to use if~else statement which consumes more cpu cycles compared to switch~case.

  • DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:

(WebKit::SQLiteIDBCursor::createSQLiteStatement):
(WebKit::SQLiteIDBCursor::resetAndRebindStatement):
(WebKit::SQLiteIDBCursor::bindArguments):
(WebKit::SQLiteIDBCursor::internalAdvanceOnce):

  • DatabaseProcess/IndexedDB/sqlite/UniqueIDBDatabaseBackingStoreSQLite.cpp:

(WebKit::createOrMigrateRecordsTableIfNecessary):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::createAndPopulateInitialMetadata):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::extractExistingMetadata):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::changeDatabaseVersion):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::createObjectStore):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteObjectStore):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::clearObjectStore):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::createIndex):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteIndex):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::generateKeyNumber):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::updateKeyGeneratorNumber):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::keyExistsInObjectStore):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::putRecord):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::uncheckedPutIndexRecord):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::deleteRecord):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRecordFromObjectStore):
(WebKit::UniqueIDBDatabaseBackingStoreSQLite::getKeyRangeRecordFromObjectStore):

  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::executeSQLStatement):
(WebKit::NetworkCache::Statistics::initialize):
(WebKit::NetworkCache::Statistics::queryWasEverRequested):
(WebKit::NetworkCache::Statistics::addHashesToDatabase):
(WebKit::NetworkCache::Statistics::addStoreDecisionsToDatabase):

  • UIProcess/Storage/LocalStorageDatabase.cpp:

(WebKit::LocalStorageDatabase::importItems):
(WebKit::LocalStorageDatabase::updateDatabaseWithChangedItems):
(WebKit::LocalStorageDatabase::databaseIsEmpty):

  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::deleteAllDatabases):
(WebKit::LocalStorageDatabaseTracker::importOriginIdentifiers):
(WebKit::LocalStorageDatabaseTracker::addDatabaseWithOriginIdentifier):
(WebKit::LocalStorageDatabaseTracker::removeDatabaseWithOriginIdentifier):
(WebKit::LocalStorageDatabaseTracker::pathForDatabaseWithOriginIdentifier):

  • WebProcess/Cookies/soup/WebKitSoupCookieJarSqlite.cpp:

(webkitSoupCookieJarSqliteLoad):
(webkitSoupCookieJarSqliteInsertCookie):
(webkitSoupCookieJarSqliteDeleteCookie):

1:17 PM Changeset in webkit [182364] by Simon Fraser
  • 39 edits in trunk/Source

Remove "go ahead and" from comments
https://bugs.webkit.org/show_bug.cgi?id=143421

Reviewed by Darin Adler, Benjamin Poulain.

Remove the phrase "go ahead and" from comments where it doesn't add
anything (which is almost all of them).

Source/JavaScriptCore:

  • interpreter/JSStack.cpp:

(JSC::JSStack::growSlowCase):

Source/WebCore:

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::deleteOriginLockFor):

  • css/CSSFontFaceSrcValue.cpp:

(WebCore::CSSFontFaceSrcValue::isSupportedFormat):

  • css/CSSPrimitiveValue.h:
  • css/StyleResolver.cpp:

(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::applyMatchedProperties):

  • editing/ApplyStyleCommand.cpp:

(WebCore::ApplyStyleCommand::pushDownInlineStyleAroundNode):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::detachFromFrame):

  • loader/cache/CachedImage.cpp:

(WebCore::CachedImage::addIncrementalDataBuffer):

  • loader/icon/IconDatabase.cpp:

(WebCore::IconDatabase::performURLImport):

  • page/PageOverlay.cpp:

(WebCore::PageOverlay::fadeAnimationTimerFired):

  • platform/ScrollView.cpp:

(WebCore::ScrollView::updateScrollbars):
(WebCore::ScrollView::scrollContents):

  • platform/graphics/DisplayRefreshMonitor.cpp:

(WebCore::DisplayRefreshMonitor::create):

  • platform/graphics/GraphicsContext.cpp:
  • platform/graphics/mac/ComplexTextController.cpp:

(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/network/HTTPParsers.cpp:

(WebCore::parseHTTPRefresh):

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::removeChild):
(WebCore::RenderBlock::layoutPositionedObjects):
(WebCore::RenderBlock::selectionGaps):
(WebCore::RenderBlock::blockSelectionGaps):
(WebCore::RenderBlock::absoluteRects):
(WebCore::RenderBlock::absoluteQuads):
(WebCore::RenderBlock::addFocusRingRects):

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::layoutBlockChild):
(WebCore::RenderBlockFlow::handleAfterSideOfBlock):
(WebCore::RenderBlockFlow::adjustBlockChildForPagination):
(WebCore::RenderBlockFlow::insertFloatingObject):
(WebCore::RenderBlockFlow::addOverhangingFloats):
(WebCore::RenderBlockFlow::inlineSelectionGaps):
(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths):

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::appendRunsForObject):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::positionLineBox):
(WebCore::RenderBox::sizesLogicalWidthToFitContent):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::updateLayerPositions):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::calculateClipRects):

  • rendering/RenderLayerModelObject.cpp:

(WebCore::RenderLayerModelObject::styleWillChange):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::dirtyLinesFromChangedChild):

  • rendering/RenderTextLineBoxes.cpp:

(WebCore::RenderTextLineBoxes::dirtyRange):

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::handleOutOfFlowPositioned):
(WebCore::BreakingContext::handleText):

  • rendering/line/LineBreaker.cpp:

(WebCore::LineBreaker::nextLineBreak):

  • style/StyleResolveTree.cpp:

(WebCore::Style::resolveLocal):

  • xml/XMLHttpRequestProgressEventThrottle.cpp:

(WebCore::XMLHttpRequestProgressEventThrottle::dispatchThrottledProgressEvent):

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::append):

Source/WebKit/mac:

  • WebView/WebDynamicScrollBarsView.mm:

(-[WebDynamicScrollBarsView updateScrollers]):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView insertText:]):

Source/WebKit2:

  • Platform/unix/EnvironmentUtilities.cpp:

(WebKit::EnvironmentUtilities::stripValuesEndingWithString):

  • PluginProcess/PluginProcess.cpp:

(WebKit::PluginProcess::didClose):

  • UIProcess/API/mac/WKView.mm:

(-[WKView insertText:replacementRange:]):
(-[WKView _pluginFocusOrWindowFocusChanged:pluginComplexTextInputIdentifier:]):

  • UIProcess/Storage/LocalStorageDatabaseTracker.cpp:

(WebKit::LocalStorageDatabaseTracker::removeDatabaseWithOriginIdentifier):

11:45 AM Changeset in webkit [182363] by Antti Koivisto
  • 8 edits in trunk

Bloom filter should support longer hashes
https://bugs.webkit.org/show_bug.cgi?id=143419

Reviewed by Dan Bernstein.

Source/WebKit2:

Use the hash digest directly in the contents filter instead of going via shortHash.

  • NetworkProcess/cache/NetworkCacheKey.h:

(WebKit::NetworkCache::Key::hash):
(WebKit::NetworkCache::Key::shortHash): Deleted.
(WebKit::NetworkCache::Key::toShortHash): Deleted.

No longer needed.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::synchronize):
(WebKit::NetworkCache::Storage::addToContentsFilter):
(WebKit::NetworkCache::Storage::mayContain):

  • NetworkProcess/cache/NetworkCacheStorage.h:

Source/WTF:

It currently supports 'unsigned' hash only which is inconvenient and doesn't have enough independent bits for larger filters.

Support arbitrarily sized hashes of type std::array<uint8_t, hashSize> (like SHA1::Digest and MD5::Digest).

  • wtf/BloomFilter.h:

(WTF::BloomFilter<keyBits>::keysFromHash):
(WTF::BloomFilter<keyBits>::mayContain):
(WTF::BloomFilter<keyBits>::add):

Tools:

  • TestWebKitAPI/Tests/WTF/BloomFilter.cpp:

(TestWebKitAPI::generateRandomDigests):
(TestWebKitAPI::TEST):

11:39 AM Changeset in webkit [182362] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Network cache Bloom filter is too big
https://bugs.webkit.org/show_bug.cgi?id=143400

Follow-up: Fix an ineffective assert.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::setMaximumSize): Average resource size is closer to 50KB than 50MB.

11:35 AM Changeset in webkit [182361] by Antti Koivisto
  • 6 edits in trunk/Source/WebKit2

Rename Cache::setMaximumSize to setCapacity
https://bugs.webkit.org/show_bug.cgi?id=143418

Reviewed by Dan Bernstein.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::setCapacity):
(WebKit::NetworkCache::Cache::setMaximumSize): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::retrieve):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::update):
(WebKit::NetworkCache::Storage::setCapacity):
(WebKit::NetworkCache::Storage::shrinkIfNeeded):
(WebKit::NetworkCache::Storage::shrink):
(WebKit::NetworkCache::Storage::setMaximumSize): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformSetCacheModel):

11:18 AM Changeset in webkit [182360] by Simon Fraser
  • 2 edits in trunk/LayoutTests

Skip fast/fixed-layout/fixed-layout.html on Windows.

  • platform/win/TestExpectations:
9:52 AM Changeset in webkit [182359] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: ObjectTree array index hints are clipped when shown in popover
https://bugs.webkit.org/show_bug.cgi?id=143309

Reviewed by Brian Burg.

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.object-tree-array-index .index-name):
Add left margin that equals the width of the expand/collapse icon.

8:34 AM Changeset in webkit [182358] by Gyuyoung Kim
  • 2 edits in trunk/LayoutTests

[EFL] Gardening on 5th April. Mark 2 tests to ImageOnlyFailure.
https://bugs.webkit.org/show_bug.cgi?id=143417

Unreviewed. Mark 2 tests to ImageOnlyFailure.

  • platform/efl/TestExpectations:
8:18 AM Changeset in webkit [182357] by Antti Koivisto
  • 3 edits in trunk/Source/WebKit2

Network cache Bloom filter is too big
https://bugs.webkit.org/show_bug.cgi?id=143400

Reviewed by Chris Dumez.

It is currently 1MB.

This patch switches the cache from a counting filter (CountingBloomFilter) to a bit filter (BloomFilter).

It also reduces the filter size from 220 to 218 elements which is good for ~26000 cache entries while
still keeping false positive rate below 1%. The current cache capacity allows around 4000 entries
with typical web contents.

The new filter size is 32KB.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::synchronize):

Turn initialization function into general purpose synchronization function.

(WebKit::NetworkCache::Storage::addToContentsFilter):

Collect newly added hashes so we don't miss entries that were added during synchronization.

(WebKit::NetworkCache::Storage::mayContain):
(WebKit::NetworkCache::Storage::remove):
(WebKit::NetworkCache::Storage::retrieve):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
(WebKit::NetworkCache::Storage::dispatchFullWriteOperation):
(WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation):
(WebKit::NetworkCache::Storage::setMaximumSize):
(WebKit::NetworkCache::Storage::clear):
(WebKit::NetworkCache::Storage::shrinkIfNeeded):
(WebKit::NetworkCache::Storage::shrink):

Non-counting Bloom filter does not support removals so this requires a new strategy.

Shrink code now simply deletes entries. The filter is updated by calling synchronize() at the end.
While we could synchronize the filter during traversal it is better to just have one function for that.

(WebKit::NetworkCache::Storage::initialize): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::mayContain):
(WebKit::NetworkCache::Storage::cacheMayContain): Deleted.

12:52 AM Changeset in webkit [182356] by aestes@apple.com
  • 28 edits in trunk

[Content Filtering] Blocked page is not always displayed when it should be
https://bugs.webkit.org/show_bug.cgi?id=143410
Source/WebCore:

rdar://problem/20211099

Reviewed by Andreas Kling.

These tests now pass: contentfiltering/block-after-add-data.html

contentfiltering/block-after-response.html

There were several problems with how ContentFilter loaded replacement data:
(1) Replacement data was delivered to DocumentLoader as if it were the original document's data. This assumes

that the original data was a UTF-8 encoded HTML document, which is not always true. We had a way to reset
the encoding, but not the content type.

(2) Replacement data was never delivered when the filter blocks in DocumentLoader::responseReceived().
(3) The main resource load was cancelled before the replacement data could be rendered when the filter blocks

in DocumentLoader::dataReceived().

The result was that only when the load was blocked after DocumentLoader::notifyFinished() would the replacement
data be shown properly, and only when problem (1) wasn't occurring.

This patch addresses these issues by using the substitute data mechanism to deliver replacement data. By using
substitute data, we can ensure that the original load is cancelled at the earliest opportunity and that the
replacement data is loaded with the proper content type and encoding.

Accomplishing this required changing the way ContentFilter interacts with DocumentLoader. Instead of placing
ContentFilter hooks throughout DocumentLoader, this patch makes ContentFilter itself the client of the
CachedRawResource for the duration of the filtering. If the filter decides to allow the load, DocumentLoader
adds itself as a client causing CachedRawResource to deliver to it the response and buffered data. If the
filter decides to block the load, DocumentLoader schedules a substitute data load. An added benefit of this
approach is that ContentFilter can reuse CachedRawResource's original data buffer instead of keeping its own.

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::createIfNeeded): Changed to take a DecisionFunction rather than a ResourceResponse and DocumentLoader.
(WebCore::ContentFilter::ContentFilter): Ditto.
(WebCore::ContentFilter::~ContentFilter): Removed ourself as a CachedRawResource client if needed.
(WebCore::ContentFilter::startFilteringMainResource): Became the client of the CachedRawResource in order to start the filtering process.
(WebCore::ContentFilter::unblockHandler): Returned the unblock handler.
(WebCore::ContentFilter::replacementData): Returned the replacement data.
(WebCore::ContentFilter::unblockRequestDeniedScript): Returned the unblock request denied script.
(WebCore::ContentFilter::responseReceived): Called responseReceived() on each filter using forEachContentFilterUntilBlocked().
(WebCore::ContentFilter::dataReceived): Ditto for dataReceived().
(WebCore::ContentFilter::notifyFinished): Ditto for finishedLoading().
(WebCore::ContentFilter::forEachContentFilterUntilBlocked): For each filter that needs more data, called the function.
If the filter blocked the load, called didDecide() with State::Blocked.
If all filters allowed the load, called didDecide() with State::Allowed.
(WebCore::ContentFilter::didDecide): Set m_state and called m_decisionFunction().
(WebCore::ContentFilter::addData): Deleted.
(WebCore::ContentFilter::finishedAddingData): Deleted.
(WebCore::ContentFilter::needsMoreData): Deleted.
(WebCore::ContentFilter::didBlockData): Deleted.
(WebCore::ContentFilter::getReplacementData): Deleted.

  • loader/ContentFilter.h:

(WebCore::ContentFilter::type):

  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::DocumentLoader): Called ContentFilter::createIfNeeded() if not loading substitute data.
(WebCore::DocumentLoader::finishedLoading): Removed old ContentFilter code.
(WebCore::DocumentLoader::responseReceived): Ditto.
(WebCore::DocumentLoader::commitData): Ditto.
(WebCore::DocumentLoader::dataReceived): Ditto.
(WebCore::DocumentLoader::detachFromFrame): Set m_contentFilter to nullptr.
(WebCore::DocumentLoader::startLoadingMainResource): Called becomeMainResourceClientIfFilterAllows() instead of
becoming m_mainResource's client.
(WebCore::DocumentLoader::clearMainResource): Set m_contentFilter to nullptr.
(WebCore::DocumentLoader::becomeMainResourceClientIfFilterAllows): If ContentFilter is initialized, called
ContentFilter::startFilteringMainResource(). Otherwise added ourself as a client of m_mainResource.
(WebCore::DocumentLoader::installContentFilterUnblockHandler): Added a helper for creating and notifying
FrameLoaderClient of the unblock handler.
(WebCore::DocumentLoader::contentFilterDidDecide): Set m_contentFilter to nullptr. If the content filter
allowed the load, then added ourself as the CachedRawResource's client. Otherwise, installed the unblock handler
and scheduled a substitute data load with the replacement data.

  • loader/DocumentLoader.h:
  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::prepareForLoadStart): Removed call to PolicyChecker::prepareForLoadStart().

  • loader/NavigationScheduler.cpp:

(WebCore::ScheduledSubstituteDataLoad::ScheduledSubstituteDataLoad): Added a ScheduledNavigation subclass that
calls FrameLoader::load() with a FrameLoadRequest containing substitute data.
(WebCore::NavigationScheduler::scheduleSubstituteDataLoad): Scheduled a substitute data load.

  • loader/NavigationScheduler.h:
  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::checkNavigationPolicy): Reset m_contentFilterUnblockHandler if it couldn't handle the request.
(WebCore::PolicyChecker::prepareForLoadStart): Deleted.

  • loader/PolicyChecker.h:
  • platform/ContentFilterUnblockHandler.h:

(WebCore::ContentFilterUnblockHandler::unreachableURL):
(WebCore::ContentFilterUnblockHandler::setUnreachableURL):
(WebCore::ContentFilterUnblockHandler::unblockURLScheme): Renamed to ContentFilter::urlScheme().

  • platform/PlatformContentFilter.h:
  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::wrapWithDecisionHandler): Added a helper to wrap the unblock handler with an outer DecisionHandlerFunction.
(WebCore::ContentFilterUnblockHandler::encode): Added m_unreachableURL to the encoding.
(WebCore::ContentFilterUnblockHandler::decode): Ditto for the decoding.
(WebCore::ContentFilterUnblockHandler::canHandleRequest): Changed to call ContentFilter::urlScheme().

  • platform/cocoa/NetworkExtensionContentFilter.h:
  • platform/cocoa/NetworkExtensionContentFilter.mm:

(replacementDataFromDecisionInfo): Added a helper to extract replacement data from the decisionInfo dictionary.
(WebCore::NetworkExtensionContentFilter::enabled): Renamed from canHandleReponse(); only checks if the filter is enabled.
(WebCore::NetworkExtensionContentFilter::create): Created a new object.
(WebCore::NetworkExtensionContentFilter::NetworkExtensionContentFilter): Created a NEFilterSource immediately when using the modern API.
(WebCore::NetworkExtensionContentFilter::responseReceived): Created a NEFilterSource when using the legacy API.
Called -[NEFilterSource receivedResponse:decisionHandler:] when using the modern API.
(WebCore::NetworkExtensionContentFilter::addData): Stopped buffering the original data.
(WebCore::NetworkExtensionContentFilter::replacementData): Returned a SharedBuffer instead of a char* and int&.
(WebCore::NetworkExtensionContentFilter::canHandleResponse): Deleted.
(WebCore::createNEFilterSource): Deleted.
(WebCore::NetworkExtensionContentFilter::getReplacementData): Deleted.

  • platform/cocoa/ParentalControlsContentFilter.h:
  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::enabled): Renamed from canHandleReponse(); only checks if the filter is enabled.
(WebCore::ParentalControlsContentFilter::create): Created a new object.
(WebCore::ParentalControlsContentFilter::ParentalControlsContentFilter): Initialized m_filterState to kWFEStateBuffering.
(WebCore::canHandleResponse): Added a helper to check if the response can be filtered.
(WebCore::ParentalControlsContentFilter::responseReceived): If !canHandleResponse(), set m_filterState to kWFEStateAllowed and return.
Otherwise created a new WebFilterEvaluator with the response.
(WebCore::ParentalControlsContentFilter::addData): Called updateFilterState().
(WebCore::ParentalControlsContentFilter::finishedAddingData): Ditto.
(WebCore::ParentalControlsContentFilter::needsMoreData): Changed to check m_filterState.
(WebCore::ParentalControlsContentFilter::didBlockData): Ditto.
(WebCore::ParentalControlsContentFilter::replacementData): Returned a SharedBuffer instead of a char* and int&.
(WebCore::ParentalControlsContentFilter::updateFilterState): Updated m_filterState by calling -[WebFilterEvaluator filterState].
(WebCore::ParentalControlsContentFilter::canHandleResponse): Deleted.
(WebCore::ParentalControlsContentFilter::getReplacementData): Deleted.

  • platform/spi/cocoa/NEFilterSourceSPI.h:
  • platform/spi/cocoa/WebFilterEvaluatorSPI.h:
  • testing/MockContentFilter.cpp:

(WebCore::MockContentFilter::enabled): Renamed from canHandleReponse(); only checks if the filter is enabled.
(WebCore::MockContentFilter::create): Created a new object.
(WebCore::MockContentFilter::responseReceived): Called maybeDetermineStatus().
(WebCore::MockContentFilter::addData): Stopped buffering the original data.
(WebCore::MockContentFilter::replacementData): Returned a SharedBuffer instead of a char* and int&.
(WebCore::MockContentFilter::unblockHandler): Asserted that we blocked data.
(WebCore::MockContentFilter::canHandleResponse): Deleted.
(WebCore::MockContentFilter::MockContentFilter): Deleted.
(WebCore::MockContentFilter::getReplacementData): Deleted.

  • testing/MockContentFilter.h:
  • testing/MockContentFilterSettings.cpp:

(WebCore::MockContentFilterSettings::unblockRequestURL): Changed to use a StringBuilder.

Source/WebKit2:

Reviewed by Andreas Kling.

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::didStartProvisionalLoad): Stopped clearing m_contentFilterUnblockHandler here.
(WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation): Started doing it here instead.

LayoutTests:

Reviewed by Andreas Kling.

  • TestExpectations: Unskipped block-after-add-data.html.
  • contentfiltering/block-after-add-data-expected.html: Added a passing expectation.
  • contentfiltering/block-after-response-expected.html: Ditto.

Apr 4, 2015:

11:51 PM Changeset in webkit [182355] by Chris Fleizach
  • 3 edits
    2 adds
    2 deletes in trunk

AX: Heuristic: Avoid exposing an element as clickable if mouse event delegation is handled on an AXElement with more than one descendant AXElement
https://bugs.webkit.org/show_bug.cgi?id=136247

Reviewed by Mario Sanchez Prada.

Source/WebCore:

Modify the logic for determining whether an element supports the press action by trying to filter out objects being handled by event delegation.
The heuristic is if an element handles click actions and has more than one of a {static text, image, control, link, heading}, then we think
it's using event delegation, and do not expose the press action.

Test: platform/mac/accessibility/press-action-not-exposed-for-event-delegation.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::supportsPressAction):

LayoutTests:

  • platform/mac/accessibility/press-action-not-exposed-when-body-is-click-handler-expected.txt: Removed.
  • platform/mac/accessibility/press-action-not-exposed-when-body-is-click-handler.html: Removed.
  • platform/mac/accessibility/press-action-not-exposed-for-event-delegation-expected.txt: Added.
  • platform/mac/accessibility/press-action-not-exposed-for-event-delegation.html: Added.
11:11 PM Changeset in webkit [182354] by Simon Fraser
  • 5 edits in trunk/Source/WebCore

More const in CSSToStyleMap
https://bugs.webkit.org/show_bug.cgi?id=143409

Reviewed by Andreas Kling.

The CSSValues passed to CSSToStyleMap functions can mostly be treated
as |const|, except for CSSImageValues which have special behavior.

This makes it clearer what the inputs and outputs of these
functions are.

  • css/CSSPrimitiveValue.cpp:

(WebCore::CSSPrimitiveValue::computeDegrees):

  • css/CSSPrimitiveValue.h:

(WebCore::CSSPrimitiveValue::computeTime):

  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapFillAttachment):
(WebCore::CSSToStyleMap::mapFillClip):
(WebCore::CSSToStyleMap::mapFillComposite):
(WebCore::CSSToStyleMap::mapFillBlendMode):
(WebCore::CSSToStyleMap::mapFillOrigin):
(WebCore::CSSToStyleMap::mapFillRepeatX):
(WebCore::CSSToStyleMap::mapFillRepeatY):
(WebCore::CSSToStyleMap::mapFillSize):
(WebCore::CSSToStyleMap::mapFillXPosition):
(WebCore::CSSToStyleMap::mapFillYPosition):
(WebCore::CSSToStyleMap::mapFillMaskSourceType):
(WebCore::CSSToStyleMap::mapAnimationDelay):
(WebCore::CSSToStyleMap::mapAnimationDirection):
(WebCore::CSSToStyleMap::mapAnimationDuration):
(WebCore::CSSToStyleMap::mapAnimationFillMode):
(WebCore::CSSToStyleMap::mapAnimationIterationCount):
(WebCore::CSSToStyleMap::mapAnimationName):
(WebCore::CSSToStyleMap::mapAnimationPlayState):
(WebCore::CSSToStyleMap::mapAnimationProperty):
(WebCore::CSSToStyleMap::mapAnimationTimingFunction):
(WebCore::CSSToStyleMap::mapAnimationTrigger):

  • css/CSSToStyleMap.h:
8:09 PM Changeset in webkit [182353] by Simon Fraser
  • 4 edits in trunk/LayoutTests

Fix some bad test results committed earlier.

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-element-with-multiple-handlers-crash-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-crash-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-parent-crash-expected.txt:
8:01 PM Changeset in webkit [182352] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Tried to fix the build.

  • loader/icon/IconController.cpp:

(WebCore::iconsFromLinkElements):

6:01 PM Changeset in webkit [182351] by Darin Adler
  • 26 edits
    3 deletes in trunk

Streamline icon-related code, mostly unused
https://bugs.webkit.org/show_bug.cgi?id=143306

Reviewed by Antti Koivisto.

Source/WebCore:

I started on this path because Document::iconURLs had a poor implementation,
storing results in a data member with no benefit, using HTMLCollection for
iteration of the children of the head element instead of using the simpler
faster technique we use inside the engine. Then, I discovered this function was
mostly-unused code left over from before the Blink fork. I removed most of it.
We can add this back later if someone finds a use for it, but if we do we
should do a higher quality implementation without the quirks of the old one.

Refactoring also made it clear that logic isn't exactly sensible. There's a
set of rules about what order to return the list in that is not followed by
the code that tries to find the "default touch icon". Later we could add some
more test coverage and tighten up the logic. But the reality is that at this
time, with some small exceptions, icon logic is in the web browsers, not in WebKit.

  • CMakeLists.txt: Removed IconURL.cpp.
  • WebCore.vcxproj/WebCore.vcxproj: Ditto.
  • WebCore.vcxproj/WebCore.vcxproj.filters: Ditto.
  • WebCore.xcodeproj/project.pbxproj: Ditto.
  • dom/DOMAllInOne.cpp: Ditto.
  • dom/Document.cpp:

(WebCore::Document::evaluate): Tweaked formatting.
(WebCore::Document::shortcutIconURLs): Removed. Unused function.
(WebCore::Document::iconURLs): Removed. Moved code to IconController.
(WebCore::Document::addIconURL): Removed. Moved code to LinkLoader.

  • dom/Document.h: Removed shortcutIconURLs, iconURLs, addIconURL,

and m_iconURLs.

  • dom/IconURL.cpp: Removed.
  • dom/IconURL.h: Removed everything from this header except for the

IconType enum. Added a FIXME about possibly renaming the header.

  • html/HTMLLinkElement.cpp:

(WebCore::HTMLLinkElement::HTMLLinkElement): Pass a reference when creating
the link loading.
(WebCore::HTMLLinkElement::setDisabledState): Access members of the struct
LinkRelElement without "m_" prefix.
(WebCore::HTMLLinkElement::parseAttribute): Changed to use early return style,
and made the part of this for parsing title use a more normal idiom.
(WebCore::HTMLLinkElement::process): Removed many unneeded arguments, made the
logic of the code a little easier to follow.
(WebCore::HTMLLinkElement::removedFrom): Removed a call to a function that had
an empty body.
(WebCore::HTMLLinkElement::iconType): Updated for change to LinkRelElement.
(WebCore::HTMLLinkElement::addSubresourceAttributeURLs): Ditto.

  • html/HTMLLinkElement.h: More of the same.
  • html/LinkRelAttribute.cpp:

(WebCore::LinkRelAttribute::LinkRelAttribute): Initialize data members in the
struct itself. Got rid of "m_" prefix since this is a struct, not a class.
Changed code to use modern for loop; even better would be to eliminate the
splitting into a vector entirely and use StringView (do that next time).

  • html/LinkRelAttribute.h: See above.
  • html/parser/HTMLPreloadScanner.cpp:

(WebCore::TokenPreloadScanner::StartTagScanner::relAttributeIsStyleSheet):
Updated for chnages to LinkRelAttribute and give the local variable a clearer name.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::didChangeIcons): Removed.

  • loader/FrameLoader.h: Removed didChangeIcons.
  • loader/FrameLoaderClient.h: Added include for String since it's no longer

taken care of by IconURLs.h.

  • loader/LinkLoader.cpp:

(WebCore::LinkLoader::LinkLoader): Take a reference instead of a pointer.
(WebCore::LinkLoader::linkLoadTimerFired): Use m_client reference instead of pointer.
(WebCore::LinkLoader::linkLoadingErrorTimerFired): Ditto.
(WebCore::LinkLoader::notifyFinished): Use nullptr.
(WebCore::LinkLoader::loadLink): Tweak formatting. Move the dispatchDidChangeIcons
call in here instead of going through Document to FrameLoader and then FrameLoader to
FrameLoaderClient, and passing extra unused arguments, the way the old code did.
Use a reference instead of a pointer for the document.
(WebCore::LinkLoader::released): Removed. Empty function.

  • loader/LinkLoader.h: Changed constructor argument to be a reference. Made more

things private. Removed empty released function.

  • loader/icon/IconController.cpp:

(WebCore::IconController::IconController): Moved initialization of data members to
the class definition in the header.
(WebCore::iconsFromLinkElements): Added. This function replaces the existing
Document::iconURLs function, but has a simpler implementation and interface.
It focuses on exactly what the code in this file needs. If we want to add some
more features to the icon controller we might make this more complex again.
Even now, building a vector is not necessarily helpful; the only client of this
function ends up extracting only one of the URLs this function returns.
(WebCore::IconController::url): Rewrote this. It's the only function actually
using the icon URLs. This contains a combination of the logic from the various
functions in this class before, including iconURL, urlsForTypes, appendToIconURLs,
and defaultURL. Among other improvements, replaced the unusual code to construct
the icon URL with a call to Document::completeURL.
(WebCore::IconController::startLoader): Refactored a bit to remove a local variable.
(WebCore::IconController::continueLoadWithDecision): Ditto.

  • loader/icon/IconController.h: Removed unneeded includes, unneeded use of

WTF_MAKE_NONCOPYABLE (since classes with data members of reference type are
automatically noncopyable), unused fucntions. Also initialize m_waitingForLoadDecision.

  • testing/Internals.cpp:

(WebCore::Internals::iconURLs): Removed.
(WebCore::Internals::shortcutIconURLs): Left this in place since it is used by
tests. Changed it to return the actual value from the IconController::url function,
since that's the interface to our icon machinery that is actually exposed on some
platforms. That means this returns only a single URL.
(WebCore::Internals::allIconURLs): Removed.

  • testing/Internals.h: Removed allIconURLs and iconURLs.
  • testing/Internals.idl: Removed allIconURLs.

LayoutTests:

  • fast/dom/icon-url-list-apple-touch-expected.txt: Removed.
  • fast/dom/icon-url-list-apple-touch.html: Removed. This tested code that was

not actually used in any WebKit port.

  • fast/dom/icon-url-list.html: Updated to expect only a single icon URL;

the icon machinery in WebKit doesn't return arrays at this time. It's better to
test what we actually expose.

5:53 PM Changeset in webkit [182350] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix EFL and Gtk build.

  • dom/Document.cpp:

(WebCore::Document::didRemoveTouchEventHandler):

5:51 PM Changeset in webkit [182349] by Simon Fraser
  • 5 edits
    6 adds in trunk

Crash under Document::absoluteRegionForEventTargets on build.webkit.org/dashboard
https://bugs.webkit.org/show_bug.cgi?id=143406
rdar://problem/20407080

Reviewed by Ryosuke Niwa.

Source/WebCore:

We failed to remove elements from Document's m_wheelEventTargets HashSet when the
elements were destroyed with wheel handlers still on them. Fix by removing the
node from the set via Node::willBeDeletedFrom().

Tests: platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-element-with-multiple-handlers-crash.html

platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-crash.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-parent-crash.html

  • dom/Document.cpp:

(WebCore::removeHandlerFromSet): Helper to remove one or all handlers on the given node.
(WebCore::Document::didRemoveWheelEventHandler): Add a parameter to specify whether we're
removing all handlers on the given node.
(WebCore::Document::didRemoveTouchEventHandler): Use removeHandlerFromSet().

  • dom/Document.h:
  • dom/Node.cpp:

(WebCore::Node::willBeDeletedFrom): Tell the document we're removing all handlers
for this node.

LayoutTests:

Test configurations of elements with different parenting and event handlers adding orders, and multiple handlers on
the same node.

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-element-with-multiple-handlers-crash-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-element-with-multiple-handlers-crash.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-crash-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-crash.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-parent-crash-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/destroy-wheel-element-parent-crash.html: Added.
5:19 PM Changeset in webkit [182348] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2][Cocoa] Add a way to temporarily disable the WebKit Network Cache for testing
https://bugs.webkit.org/show_bug.cgi?id=143392
<rdar://problem/20315669>

Reviewed by Antti Koivisto.

Add a way to temporarily disable the WebKit Network Cache for testing.
It will be used temporarily for comparing page load times with and
without the WebKit network disk cache enabled.

This is in addition to the existing "WebKitNetworkCacheEnabled"
NSUserDefaults:
webkitNetworkCacheIsEnabled = [defaults boolForKey:WebKitNetworkCacheEnabledDefaultsKey]

&& ![defaults boolForKey:WebKitNetworkCacheTemporarilyDisabledForTestingKey];

  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeNetworkProcess):

4:16 PM Changeset in webkit [182347] by akling@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Logically empty WeakBlocks should not pin down their MarkedBlocks indefinitely.
<https://webkit.org/b/143210>

Reviewed by Geoffrey Garen.

Since a MarkedBlock cannot be destroyed until all the WeakBlocks pointing into it are gone,
we had a little problem where WeakBlocks with only null pointers would still keep their
MarkedBlock alive.

This patch fixes that by detaching WeakBlocks from their MarkedBlock once a sweep discovers
that the WeakBlock contains no pointers to live objects. Ownership of the WeakBlock is passed
to the Heap, which will sweep the list of these detached WeakBlocks as part of a full GC,
destroying them once they're fully dead.

This allows the garbage collector to reclaim the 64kB MarkedBlocks much sooner, and resolves
a mysterious issue where doing two full garbage collections back-to-back would free additional
memory in the second collection.

Management of detached WeakBlocks is implemented as a Vector<WeakBlock*> in Heap, along with
an index of the next block in that vector that needs to be swept. The IncrementalSweeper then
calls into Heap::sweepNextLogicallyEmptyWeakBlock() to sweep one block at a time.

  • heap/Heap.h:
  • heap/Heap.cpp:

(JSC::Heap::collectAllGarbage): Add a final pass where we sweep the logically empty WeakBlocks
owned by Heap, after everything else has been swept.

(JSC::Heap::notifyIncrementalSweeper): Set up an incremental sweep of logically empty WeakBlocks
after a full garbage collection ends. Note that we don't do this after Eden collections, since
they are unlikely to cause entire WeakBlocks to go empty.

(JSC::Heap::addLogicallyEmptyWeakBlock): Added. Interface for passing ownership of a WeakBlock
to the Heap when it's detached from a WeakSet.

(JSC::Heap::sweepAllLogicallyEmptyWeakBlocks): Helper for collectAllGarbage() that sweeps all
of the logically empty WeakBlocks owned by Heap.

(JSC::Heap::sweepNextLogicallyEmptyWeakBlock): Sweeps one logically empty WeakBlock if needed
and updates the next-logically-empty-weak-block-to-sweep index.

(JSC::Heap::lastChanceToFinalize): call sweepAllLogicallyEmptyWeakBlocks() here, since there
won't be another chance after this.

  • heap/IncrementalSweeper.h:

(JSC::IncrementalSweeper::hasWork): Deleted.

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::fullSweep):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock): Restructured IncrementalSweeper a bit to simplify
adding a new sweeping stage for the Heap's logically empty WeakBlocks. sweepNextBlock() is
changed to return a bool (true if there's more work to be done.)

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::sweep): This now figures out if the WeakBlock is logically empty, i.e doesn't
contain any pointers to live objects. The answer is stored in a new SweepResult member.

  • heap/WeakBlock.h:

(JSC::WeakBlock::isLogicallyEmptyButNotFree): Added. Can be queried after a sweep to determine
if the WeakBlock could be detached from the MarkedBlock.

(JSC::WeakBlock::SweepResult::SweepResult): Deleted in favor of initializing member variables
when declaring them.

3:39 PM Changeset in webkit [182346] by Simon Fraser
  • 10 edits
    2 adds in trunk

REGRESSION (r182215): Feedly crashes when closing article
https://bugs.webkit.org/show_bug.cgi?id=143405
rdar://problem/20382734, rdar://problem/20395497

Reviewed by Tim Horton.

Source/WebCore:

Calling computeNonFastScrollableRegion() eagerly when scrollable areas come and go
is bad, because it can cause FrameView::layout() to get called in the middle of
RenderObject destruction, which leaves the render tree in a bad state.

Fix by calling computeNonFastScrollableRegion() lazily, just before scrolling tree commit.

AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged() now just sets
a flag to say that the non-fast region needs to be recomputed, and that schedules
a scrolling tree commit. When the commit happens, we recompute the region. If the
region didn't change, and no other changes are pending, there's no need to commit.

Test: platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/compute-region-inside-delete-renderer-crash.html

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::setNonFastScrollableRegionDirty):
(WebCore::AsyncScrollingCoordinator::willCommitTree):
(WebCore::AsyncScrollingCoordinator::updateNonFastScrollableRegion):
(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
(WebCore::AsyncScrollingCoordinator::scrollingStateTreeAsText): Need to eagerly update
the non-fast scrollable region.

  • page/scrolling/AsyncScrollingCoordinator.h:

(WebCore::AsyncScrollingCoordinator::nonFastScrollableRegionDirty):

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::ScrollingCoordinator):
(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::willCommitTree):

  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::commitTreeStateIfNeeded):
(WebCore::ScrollingCoordinatorMac::scheduleTreeStateCommit):
(WebCore::ScrollingCoordinatorMac::commitTreeState):

Source/WebKit2:

Calling computeNonFastScrollableRegion() eagerly when scrollable areas come and go
is bad, because it can cause FrameView::layout() to get called in the middle of
RenderObject destruction, which leaves the render tree in a bad state.

Fix by calling computeNonFastScrollableRegion() lazily, just before scrolling tree commit.

AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged() now just sets
a flag to say that the non-fast region needs to be recomputed, and that schedules
a scrolling tree commit. When the commit happens, we recompute the region. If the
region didn't change, and no other changes are pending, there's no need to commit.

  • WebProcess/Scrolling/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::buildTransaction):

  • WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:

(WebKit::TiledCoreAnimationDrawingArea::flushLayers): Outdent #ifdefs.

LayoutTests:

Test that triggers a crash without the fix (thanks to Zalan for the test).

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/compute-region-inside-delete-renderer-crash-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/compute-region-inside-delete-renderer-crash.html: Added.
12:24 PM Changeset in webkit [182345] by Simon Fraser
  • 11 edits in trunk

Differentiate between composited scrolling, and async scrolling
https://bugs.webkit.org/show_bug.cgi?id=143291

Reviewed by Sam Weinig.

Source/WebCore:

ScrollableArea::usesCompositedScrolling() meant "uses aysnc scrolling", but
FrameView::contentsInCompositedLayer() covered a related concept, that scrolling
happens by moving compositing layers around.

Make the difference between these more explicit by adding ScrollableArea::usesAsyncScrolling(),
which means that scrolling for that ScrollableArea is asynchronous and managed
by a ScrollingCoordinator. This is the meaning that ScrollingCoordinator::computeNonFastScrollableRegion()
understands.

ScrollableArea::usesCompositedScrolling() is now repurposed to mean "scrolling
occurs by moving layers around, not requiring repaint". FrameView::contentsInCompositedLayer()
is renamed to usesCompositedScrolling(), and overrides the base class function.

This only changes behavior in tests that call setScrollingTreeIncludesFrames(true).

  • page/FrameView.cpp:

(WebCore::FrameView::useSlowRepaints):
(WebCore::FrameView::usesCompositedScrolling):
(WebCore::FrameView::usesAsyncScrolling):
(WebCore::FrameView::scrollContentsFastPath):
(WebCore::FrameView::scrollContentsSlowPath):
(WebCore::FrameView::contentsInCompositedLayer): Deleted.

  • page/FrameView.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):

  • platform/ScrollableArea.h:

(WebCore::ScrollableArea::usesAsyncScrolling):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::usesAsyncScrolling):

  • rendering/RenderLayer.h:

LayoutTests:

Rebaseline tests that call setScrollingTreeIncludesFrames(true), where those subframes
are now excluded from the non-fast scrollable region.

  • platform/mac-wk2/tiled-drawing/scrolling/frames/coordinated-frame-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/frames/coordinated-frame-in-fixed-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/frames/fixed-inside-frame-expected.txt:
10:16 AM Changeset in webkit [182344] by youenn.fablet@crf.canon.fr
  • 8 edits in trunk

[Streams API] Collecting a ReadableStreamReader should not unlock its stream
https://bugs.webkit.org/show_bug.cgi?id=143333

Reviewed by Benjamin Poulain.

Source/WebCore:

This patch stores as a boolean whether the stream is locked to a reader.
In case the reader forget to unlock the stream, the reader can be collected and destructor called.
In that case, the link between reader and stream will be reset but the stream will remain in locked state.

Covered by new test in streams/readablestreamreader-constructor.html.

  • Modules/streams/ReadableStream.h:

(WebCore::ReadableStream::isLocked):
(WebCore::ReadableStream::lock):
(WebCore::ReadableStream::release):
(WebCore::ReadableStream::releaseButKeepLocked): Introduced to cut the link between reader and stream but stil keeping the stream locked.

  • Modules/streams/ReadableStreamReader.cpp:

(WebCore::ReadableStreamReader::~ReadableStreamReader):

  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::JSReadableStream::getReader):

  • bindings/js/JSReadableStreamReaderCustom.cpp:

(WebCore::constructJSReadableStreamReader):

LayoutTests:

  • streams/readablestreamreader-constructor-expected.txt:
  • streams/readablestreamreader-constructor.html:
7:32 AM Changeset in webkit [182343] by Yusuke Suzuki
  • 16 edits
    5 adds in trunk

Implement ES6 Object.getOwnPropertySymbols
https://bugs.webkit.org/show_bug.cgi?id=141106

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

This patch implements Object.getOwnPropertySymbols.
One technical issue is that, since we use private symbols (such as @Object) in the
privileged JS code in builtins/, they should not be exposed.
To distinguish them from the usual symbols, check the target StringImpl* is a not private name
before adding it into PropertyNameArray.

To check the target StringImpl* is a private name, we leverage privateToPublic map in BuiltinNames
since all private symbols are held in this map.

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutableInternal):

  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::isPrivateName):

  • runtime/CommonIdentifiers.cpp:

(JSC::CommonIdentifiers::isPrivateName):

  • runtime/CommonIdentifiers.h:
  • runtime/EnumerationMode.h:

(JSC::EnumerationMode::EnumerationMode):
(JSC::EnumerationMode::includeSymbolProperties):

  • runtime/ExceptionHelpers.cpp:

(JSC::createUndefinedVariableError):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):

  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):
(JSC::objectConstructorGetOwnPropertySymbols):
(JSC::defineProperties):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):

  • runtime/ObjectConstructor.h:

(JSC::ObjectConstructor::create):

  • runtime/Structure.cpp:

(JSC::Structure::getPropertyNamesFromStructure):

  • tests/stress/object-get-own-property-symbols-perform-to-object.js: Added.

(compare):

  • tests/stress/object-get-own-property-symbols.js: Added.

(forIn):

  • tests/stress/symbol-define-property.js: Added.

(testSymbol):

  • tests/stress/symbol-seal-and-freeze.js: Added.
  • tests/stress/symbol-with-json.js: Added.

LayoutTests:

  • js/Object-getOwnPropertyNames-expected.txt:
  • js/script-tests/Object-getOwnPropertyNames.js:

Apr 3, 2015:

11:08 PM Changeset in webkit [182342] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebCore

MediaDevices possesses a vtable despite using ImplementationLacksVTable IDL attribute
https://bugs.webkit.org/show_bug.cgi?id=143367

Reviewed by Eric Carlson.

  • Modules/mediastream/MediaDevices.idl: MediaDevices ends up with a vtable

because of inheriting from ContextDestructionObserver. This collides with
the ImplementationLacksVTable IDL attribute, causing compilation errors
with Clang. Since MediaDevices isn't being inherited from, but will still
end up with a vtable, the IDL attribute should be removed.

6:55 PM Changeset in webkit [182341] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

Attempted build fix.

  • UIProcess/API/mac/WKView.mm:
5:42 PM Changeset in webkit [182340] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Fix the firing of the ReachedSessionRestorationRenderTreeSizeThreshold milestone on iOS
https://bugs.webkit.org/show_bug.cgi?id=143394

Reviewed by Tim Horton.

A client reshuffle at some point broke the dispatch of the ReachedSessionRestorationRenderTreeSizeThreshold
milestone. Fix by using WebPageProxy::didLayout() to fire the milestone.

  • UIProcess/ios/WebPageProxyIOS.mm:

(WebKit::WebPageProxy::didCommitLayerTree):

5:07 PM Changeset in webkit [182339] by timothy_horton@apple.com
  • 4 edits in trunk/LayoutTests

fast/fixed-layout/fixed-layout.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143379

Reviewed by Simon Fraser.

Un-flakify the fixed layout test.

  • fast/css-grid-layout/flex-content-sized-columns-resize-expected.html:

Remove a mistaken line in the original test; this function doesn't exist in WebKit
and was presumably ported directly from the Blink test (and then never noticed because
JS exceptions thrown in -expected files go nowhere).

  • fast/fixed-layout/fixed-layout.html:

Make the fixed layout test less racy by waiting for the resize event (which can be
very asynchronous). Also, force a layout before resizing to ensure that we
always do get a resize event.

4:52 PM Changeset in webkit [182338] by Beth Dakin
  • 8 edits in trunk/Source/WebKit2

https://bugs.webkit.org/show_bug.cgi?id=143387
Improvements to webkitmouseforce web API
-and corresponding-
rdar://problem/20281808
rdar://problem/20281853

Reviewed by Darin Adler.

This patch:

  1. Dispatches webkitmouseforceup and webkitmouseforceclick at the right time.
  2. Dispatches webkitmouseforcechanged from mousedown all the way through through

mouseup.

  1. Uses force values from pressureChangeWithEvent instead of the immediate action

gesture recognizer.

Listen for this NSResponder method, and pass the relevant info to WebPageProxy to
dispatch to the web process.

  • UIProcess/API/mac/WKView.mm:

(-[WKView pressureChangeWithEvent:]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::inputDeviceForceDidChange):
(WebKit::WebPageProxy::immediateActionDidUpdate):

  • UIProcess/WebPageProxy.h:

The web process still needs to know when the immediate action gesture recognizer
is updating, but it doesn’t need the force information. That will come from
pressureChangeWithEvent.

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):

Cache m_lastForceStage so that we can determine if we are
transitioning to a new stage.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:

New message for InputDeviceForceDidChange and modified message for
ImmediateActionDidUpdate

  • WebProcess/WebPage/WebPage.messages.in:

inputDeviceForceDidChange now takes care of dispatching mouseforcechanged,
mouseforcedown, mouseforceup, and mouseforceclick.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::inputDeviceForceDidChange):

We still need to keep track of the ImmediateActionStages in WebCore::EventHandler
so that we can have the right default behavior on mouseup based on whether or not
that action began and was completed. (In other words, to ensure we don’t navigate
to a link after force clicking it.)
(WebKit::WebPage::immediateActionDidUpdate):
(WebKit::WebPage::immediateActionDidComplete):

3:52 PM Changeset in webkit [182337] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Add Options::jitPolicyScale() as a single knob to make all compilations happen sooner.
<https://webkit.org/b/143385>

Reviewed by Geoffrey Garen.

For debugging purposes, sometimes, we want to be able to make compilation happen
sooner to see if we can accelerate the manifestation of certain events / bugs.
Currently, in order to achieve this, we'll have to tweak multiple JIT thresholds
which make up the compilation policy. Let's add a single knob that can tune all
the thresholds up / down in one go proportionately so that we can easily tweak
how soon compilation occurs.

  • runtime/Options.cpp:

(JSC::scaleJITPolicy):
(JSC::recomputeDependentOptions):

  • runtime/Options.h:
3:18 PM Changeset in webkit [182336] by ggaren@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

is* API methods should be @properties
https://bugs.webkit.org/show_bug.cgi?id=143388

Reviewed by Mark Lam.

This appears to be the preferred idiom in WebKit, CA, AppKit, and
Foundation.

  • API/JSValue.h: Be @properties.
  • API/tests/testapi.mm:

(testObjectiveCAPI): Use the @properties.

2:44 PM Changeset in webkit [182335] by achristensen@apple.com
  • 9 edits in trunk/Source/WebCore

[Content Extensions] Add memory reporting.
https://bugs.webkit.org/show_bug.cgi?id=143386

Reviewed by Benjamin Poulain.

  • contentextensions/CompiledContentExtension.cpp:

(WebCore::ContentExtensions::CompiledContentExtension::globalDisplayNoneSelectors):

  • contentextensions/CompiledContentExtension.h:
  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::globalDisplayNoneStyleSheet):

  • contentextensions/ContentExtension.h:
  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):

  • contentextensions/ContentExtensionsDebugging.h:
  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::getBits):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpretAppendAction):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpretTestFlagsAndAppendAction):
(WebCore::ContentExtensions::DFABytecodeInterpreter::actionsFromDFARoot):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):

  • contentextensions/DFABytecodeInterpreter.h:

(WebCore::ContentExtensions::DFABytecodeInterpreter::DFABytecodeInterpreter):
(WebCore::ContentExtensions::DFABytecodeInterpreter::~DFABytecodeInterpreter):
Keep track of which memory pages in the bytecode are being hit if CONTENT_EXTENSIONS_MEMORY_REPORTING is 1.
When CONTENT_EXTENSIONS_MEMORY_REPORTING is 0, this makes an empty vector in ContentExtension
and passes some pointers on the stack, many of which can be optimized out by the C++ compiler.

2:32 PM Changeset in webkit [182334] by Brent Fulgham
  • 10 edits in trunk/Source/WebCore

Expand test infrastructure to support scrolling tests
https://bugs.webkit.org/show_bug.cgi?id=143383

Reviewed by Darin Adler.

No new tests: No change in behavior.

This is an initial set of changes that clean up a few things I noticed while extending testing support
for scroll animations and wheel event gestures.

  1. Reduce the amount of #ifdef code in EventHandler{Mac}.
  2. Consolidate the idea of an "End Gesture" in the PlatformWheelEvent class.
  3. Remove a number of unneeded null checks in EventHandler.
  4. ScrollController must always have a client, so hold a reference instead of using a pointer.
  • page/EventHandler.cpp:

(WebCore::EventHandler::platformNotifyIfEndGesture): Renamed from 'platformNotifySnapIfNecessary'.
(WebCore::EventHandler::handleWheelEvent): Call 'platformNotifySnapIfNecessary' at method exit points.
(WebCore::EventHandler::platformNotifySnapIfNecessary): Deleted.

  • page/EventHandler.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::EventHandler::platformCompleteWheelEvent): Remove unneeded null checks for 'view'. Remove
CSS_SNAP-specific call to 'platformNotifySnapIfNecessary'. This logic is now handled in the new
'platformNotifyIfEndGesture' method.
(WebCore::EventHandler::platformNotifyIfEndGesture): Renamed from 'platformNotifySnapIfNecessary'.
(WebCore::EventHandler::platformNotifySnapIfNecessary): Deleted.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac): Pass 'this' as
reference to ScrollController constructor.

  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::shouldResetLatching): Call new 'isEndGesture' method.
(WebCore::PlatformWheelEvent::isEndGesture): Added method to encapsulate some code that was duplicated
in a number of places.

  • platform/ScrollAnimator.cpp:

(WebCore::ScrollAnimator::ScrollAnimator): Pass 'this' as reference to ScrollController constructor.

  • platform/cocoa/ScrollController.h:
  • platform/cocoa/ScrollController.mm:

(WebCore::ScrollController::ScrollController): Update to reflect m_client is now a reference.
(WebCore::ScrollController::handleWheelEvent): Ditto.
(WebCore::ScrollController::snapRubberBandTimerFired): Ditto. Also, a drive-by fix for ending rubberband
snapping. This end-state wasn't deactivating the timer (even when the animation finished). This isn't a
huge problem, but I (will) rely on the state of the animation timer in a future patch to decide if
tests should run or continue waiting.
(WebCore::ScrollController::isRubberBandInProgress): Ditto.
(WebCore::ScrollController::startSnapRubberbandTimer): Ditto.
(WebCore::ScrollController::stopSnapRubberbandTimer): Ditto.
(WebCore::ScrollController::shouldRubberBandInHorizontalDirection): Ditto.
(WebCore::ScrollController::processWheelEventForScrollSnapOnAxis): Ditto.
(WebCore::ScrollController::startScrollSnapTimer): Ditto.
(WebCore::ScrollController::stopScrollSnapTimer): Ditto.
(WebCore::ScrollController::scrollSnapAnimationUpdate): Ditto.
(WebCore::ScrollController::beginScrollSnapAnimation): Ditto.
(WebCore::ScrollController::computeSnapDelta): Ditto.
(WebCore::ScrollController::computeGlideDelta): Ditto.

  • platform/mac/ScrollAnimatorMac.mm:

(WebCore::gestureShouldBeginSnap): Use new PlatformWheelEvent::isEndGesture() method.

2:21 PM Changeset in webkit [182333] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: Toggling check box state not speaking using plain space, not VO space.
https://bugs.webkit.org/show_bug.cgi?id=143356

Reviewed by Darin Adler.

Source/WebCore:

The checkbox state change needs to result in a value change being generated, otherwise accessibility won't know the value has changed through keyboard usage.

Test: platform/mac/accessibility/checkbox-posts-value-change-notification-after-activation-with-space.html

  • accessibility/mac/AXObjectCacheMac.mm:

(WebCore::AXObjectCache::postPlatformNotification):

LayoutTests:

  • platform/mac/accessibility/checkbox-posts-value-change-notification-after-activation-with-space-expected.txt: Added.
  • platform/mac/accessibility/checkbox-posts-value-change-notification-after-activation-with-space.html: Added.
2:20 PM Changeset in webkit [182332] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

run-jsc-stress-tests --remote should add libllvmForJSC.so to the bundle on Linux
https://bugs.webkit.org/show_bug.cgi?id=143372

Reviewed by Darin Adler.

  • Scripts/run-jsc-stress-tests:
2:01 PM Changeset in webkit [182331] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Some JSC Options refactoring and enhancements.
<https://webkit.org/b/143384>

Rubber stamped by Benjamin Poulain.

Create a better encapsulated Option class to make working with options easier. This
is a building block towards a JIT policy scaling debugging option I will introduce later.

This work entails:

  1. Convert Options::Option into a public class Option (who works closely with Options).
  2. Convert Options::EntryType into an enum class Options::Type and make it public.
  3. Renamed Options::OPT_<option name> to Options::<option name>ID because it reads better.
  4. Add misc methods to class Option to make it more useable.
  • runtime/Options.cpp:

(JSC::Options::dumpOption):
(JSC::Option::dump):
(JSC::Option::operator==):
(JSC::Options::Option::dump): Deleted.
(JSC::Options::Option::operator==): Deleted.

  • runtime/Options.h:

(JSC::Option::Option):
(JSC::Option::operator!=):
(JSC::Option::name):
(JSC::Option::description):
(JSC::Option::type):
(JSC::Option::isOverridden):
(JSC::Option::defaultOption):
(JSC::Option::boolVal):
(JSC::Option::unsignedVal):
(JSC::Option::doubleVal):
(JSC::Option::int32Val):
(JSC::Option::optionRangeVal):
(JSC::Option::optionStringVal):
(JSC::Option::gcLogLevelVal):
(JSC::Options::Option::Option): Deleted.
(JSC::Options::Option::operator!=): Deleted.

1:46 PM Changeset in webkit [182330] by rniwa@webkit.org
  • 3 edits in trunk/Websites/perf.webkit.org

Add time series segmentation algorithms as moving averages
https://bugs.webkit.org/show_bug.cgi?id=143362

Reviewed by Chris Dumez.

This patch implements two preliminary time series segmentation algorithms as moving averages.

Recursive t-test: Compute Welch's t-statistic at each point in a given segment of the time series.
If Welch's t-test implicates a statistically significance difference, then split the segment into two
sub segments with the maximum t-statistic (i.e. the point at which if split would yield the highest
probability that two segments do not share the same "underlying" mean in classical / frequentist sense).
We repeat this process recursively. See [1] for the evaluation of this particular algorithm.

Schwarz criterion: Use Schwarz or Bayesian information criterion to heuristically find the optimal
segmentation. Intuitively, the problem of finding the best segmentation comes down to minimizing the
residual sum of squares in each segment as in linear regressions. That is, for a given segment with
values y_1 through y_n with mean y_avg, we want to minimize the sum of (y_i - y_avg)2 over i = 1
through i = n. However, we also don't want to split every data point into a separate segment so we need
to account the "cost" of introducing new segments. We use a cost function that's loosely based on two
models discussed in [2] for simplicity. We will tune this cost function further in the future.

The problem of finding the best segmentation then reduces to a search problem. Unfortunately, our problem
space is exponential with respect to the size of the time series since we could split at each data point.
We workaround this problem by first splitting the time series into a manageable smaller grids, and only
considering segmentation of a fixed size (i.e. the number of segments is constant). Since time series
tend to contain a lot more data points than segments, this strategy finds the optimal solution without
exploring much of the problem space.

Finding the optimal segmentation of a fixed size is, itself, another search problem that is equivalent to
finding the shortest path of a fixed length in DAG. Here, we use dynamic programming with a matrix of size
n by n where n is the length of the time series (grid). Each entry in this matrix at (i, k) stores
the minimum cost of segmenting data points 1 through i using k segments. We start our search at i = 1.
Clearly C(1, 0) = 0 (note the actual code uses 0-based index). In i-th iteration, we compute the cost
S(i, j) of each segment starting at i and ending at another point j after i and update C(j, k + 1) by
min( C(j, k + 1), C(i, k) + S(i, j) ) for all values of j above i.

[1] Kensuke Fukuda, H. Eugene Stanley, and Luis A. Nunes Amaral, "Heuristic segmentation of
a nonstationary time series", Physical Review E 69, 021108 (2004)

[2] Marc Lavielle, Gilles Teyssi`ere, "Detection of Multiple Change–Points in Multivariate Time Series"
Lithuanian Mathematical Journal, vol 46, 2006

  • public/v2/index.html: Show the optional description for the chosen moving average strategy.
  • public/v2/js/statistics.js:

(Statistics.testWelchsT):
(Statistics.computeWelchsT): Extracted from testWelchsT. Generalized to take the offset and the length
of each value array between which Welch's t-statistic is computed. This generalization helps the
Schwarz criterion segmentation algorithm avoid splitting values array O(n2) times.
(.sampleMeanAndVarianceForValues): Ditto for the generalization.
(.recursivelySplitIntoTwoSegmentsAtMaxTIfSignificantlyDifferent): Added. Implements recursive t-test.
(.splitIntoSegmentsUntilGoodEnough): Added. Implements Schwarz criterion.
(.findOptimalSegmentation): Added. Implements the algorithm to find the optimal segmentation of a fixed
segment count.
(.SampleVarianceUpperTriangularMatrix): Added. Stores S(i, j) used by findOptimalSegmentation.
(.SampleVarianceUpperTriangularMatrix.prototype.costBetween): Added.

1:43 PM Changeset in webkit [182329] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

REGRESSION: Perf dashboard sometimes fails to update zooming level
https://bugs.webkit.org/show_bug.cgi?id=143359

Reviewed by Darin Adler.

The bug was caused by various bugs that ended up in an exception.

  • public/v2/app.js:

(App.Pane._handleFetchErrors): Removed superfluous console.log.
(App.Pane.computeStatus): Fixed the bug in r182185 that previousPoint could be null.
(App.PaneController.actions.zoomed): Update the overview when the main chart triggered a zoom.

  • public/v2/index.html: Replaced all instances of href="#" by href="javascript:false" to avoid navigating

to # when Ember.js fails to attach event listeners on time.

  • public/v2/interactive-chart.js:

(App.InteractiveChartComponent._updateDimensionsIfNeeded): Avoid using a negative width or height when
the containing element's size is 0.
(App.InteractiveChartComponent._updateBrush): Ditto.

1:16 PM Changeset in webkit [182328] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

2015-04-03 Geoffrey Garen <ggaren@apple.com>

JavaScriptCore API should support type checking for Array and Date
https://bugs.webkit.org/show_bug.cgi?id=143324

Follow-up to address a comment by Dan.

  • API/WebKitAvailability.h: MAC_OS_X_VERSION_MIN_REQUIRED <= 101100 is wrong, since this API is available when MAC_OS_X_VERSION_MIN_REQUIRED is equal to 101100.
1:12 PM Changeset in webkit [182327] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebKit2

InjectedBundleNodeHandle::renderedImage() needs to be exposed from the Cocoa WebAPI layer.
https://bugs.webkit.org/show_bug.cgi?id=143341.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-04-03
Reviewed by Anders Carlsson.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.h:
  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInNodeHandle.mm:

(-[WKWebProcessPlugInNodeHandle renderedImageWithOptions:]): Expose rendered
image injected bundle API from the Cocoa layer. A node in the page can be
rendered to an NSImage on MacOS and to a UIImage on iOS.

11:49 AM Changeset in webkit [182326] by Csaba Osztrogonác
  • 2 edits in trunk

Unreviewed, kick the GTK bots to fix an incremental build issue.

  • Source/cmake/OptionsGTK.cmake:
11:27 AM Changeset in webkit [182325] by Alan Bujtas
  • 4 edits in trunk/Source/WebCore

Simple line layout: Use pre-computed simple line runs to produce innerText content.
https://bugs.webkit.org/show_bug.cgi?id=143351

Reviewed by Antti Koivisto.

This is in preparation to cover <br> with simple line layout.
Runs provide line layout information that can be used to cover hard line break cases.
(similar to TextIterator::handleTextBox())

Covered by existing tests.

  • editing/TextIterator.cpp:

(WebCore::TextIterator::handleTextNode):
(WebCore::TextIterator::emitCharacter):
(WebCore::TextIterator::emitText):

  • editing/TextIterator.h:
  • rendering/SimpleLineLayoutResolver.h:

(WebCore::SimpleLineLayout::RunResolver::Run::isEndOfLine):

10:55 AM Changeset in webkit [182324] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

2015-04-03 Geoffrey Garen <ggaren@apple.com>

JavaScriptCore API should support type checking for Array and Date
https://bugs.webkit.org/show_bug.cgi?id=143324

Follow-up to address a comment by Dan.

  • API/WebKitAvailability.h: Do use 10.0 because it was right all along. Added a comment explaining why.
10:54 AM Changeset in webkit [182323] by Chris Dumez
  • 9 edits
    2 moves in trunk/Source/WebKit2

[WK2][iOS] We should prevent NetworkProcess suspension while it has pending SQL transactions
https://bugs.webkit.org/show_bug.cgi?id=143278
<rdar://problem/20180799>

Reviewed by Anders Carlsson.

Prevent NetworkProcess suspension while it has pending SQL transactions,
similarly to what we already did for WebProcesses. This patch moves the
WebSQLiteDatabaseTracker from WebProcess/ to Shared/ and make it usable
by the NetworkProcess class as well.

Whenever there are locked files to due SQL transactions, the
NetworkProcess will send an IPC message to the NetworkProcessProxy
which will hold a background process assertion until the NetworkProcess'
SQL transactions are complete. This way, it is no longer possible for
the NetworkProcess to get suspended while SQL transactions are running
and a database file is locked.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • Shared/WebSQLiteDatabaseTracker.cpp: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebSQLiteDatabaseTracker.cpp.

(WebKit::WebSQLiteDatabaseTracker::WebSQLiteDatabaseTracker):
(WebKit::m_childProcessType):
(WebKit::WebSQLiteDatabaseTracker::willBeginFirstTransaction):
(WebKit::WebSQLiteDatabaseTracker::didFinishLastTransaction):
(WebKit::WebSQLiteDatabaseTracker::hysteresisUpdated):

  • Shared/WebSQLiteDatabaseTracker.h: Renamed from Source/WebKit2/WebProcess/WebCoreSupport/WebSQLiteDatabaseTracker.h.
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::didClose):
(WebKit::NetworkProcessProxy::setIsHoldingLockedFiles):

  • UIProcess/Network/NetworkProcessProxy.h:
  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::WebProcess):
(WebKit::WebProcess::initializeConnection):

  • WebProcess/WebProcess.h:
10:24 AM Changeset in webkit [182322] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Re-skip tests that got recently enabled, but time out.

  • platform/mac-wk2/TestExpectations:
10:23 AM Changeset in webkit [182321] by Antti Koivisto
  • 9 edits
    1 add in trunk

Source/WebCore:
Add non-counting bloom filter class
https://bugs.webkit.org/show_bug.cgi?id=143366

Reviewed by Sam Weinig.

  • css/SelectorFilter.cpp:

(WebCore::SelectorFilter::setupParentStack):

  • css/SelectorFilter.h:

Update names.

Source/WebKit2:
Add non-counting Bloom filter implementation
https://bugs.webkit.org/show_bug.cgi?id=143366

Reviewed by Sam Weinig.

  • NetworkProcess/cache/NetworkCacheStorage.h:

Source/WTF:
Add non-counting Bloom filter implementation
https://bugs.webkit.org/show_bug.cgi?id=143366

Reviewed by Sam Weinig.

Add a traditional single-bit-per-bucket Bloom filter in addition to the existing counting implementation.

  • wtf/BloomFilter.h:

(WTF::BloomFilter::BloomFilter):
(WTF::BloomFilter::add):

Also support merging.

(WTF::BloomFilter::mayContain):
(WTF::BloomFilter::arrayIndex):
(WTF::BloomFilter::bitMask):
(WTF::BloomFilter<keyBits>::mayContain):
(WTF::BloomFilter<keyBits>::add):
(WTF::BloomFilter<keyBits>::isBitSet):
(WTF::BloomFilter<keyBits>::setBit):
(WTF::BloomFilter<keyBits>::clear):
(WTF::CountingBloomFilter::CountingBloomFilter):
(WTF::CountingBloomFilter::mayContain):
(WTF::CountingBloomFilter::firstBucket):
(WTF::CountingBloomFilter::secondBucket):
(WTF::CountingBloomFilter<keyBits>::add):
(WTF::CountingBloomFilter<keyBits>::remove):
(WTF::CountingBloomFilter<keyBits>::clear):
(WTF::CountingBloomFilter<keyBits>::likelyEmpty):
(WTF::CountingBloomFilter<keyBits>::isClear):
(WTF::BloomFilter::maximumCount): Deleted.
(WTF::BloomFilter::firstSlot): Deleted.
(WTF::BloomFilter::secondSlot): Deleted.
(WTF::BloomFilter<keyBits>::remove): Deleted.
(WTF::BloomFilter<keyBits>::likelyEmpty): Deleted.
(WTF::BloomFilter<keyBits>::isClear): Deleted.

Tools:
Add non-counting bloom filter class
https://bugs.webkit.org/show_bug.cgi?id=143366

Reviewed by Sam Weinig.

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WTF/BloomFilter.cpp: Added.

(TestWebKitAPI::generateRandomHashes):
(TestWebKitAPI::TEST):

9:46 AM Changeset in webkit [182320] by commit-queue@webkit.org
  • 7 edits in trunk/Source/WebCore

Remove dead code.
https://bugs.webkit.org/show_bug.cgi?id=143352

Patch by Alex Christensen <achristensen@webkit.org> on 2015-04-03
Reviewed by Gyuyoung Kim.

  • html/BaseChooserOnlyDateAndTimeInputType.cpp:

(WebCore::BaseChooserOnlyDateAndTimeInputType::handleDOMActivateEvent):

  • loader/EmptyClients.cpp:

(WebCore::EmptyChromeClient::openDateTimeChooser): Deleted.

  • loader/EmptyClients.h:
  • page/Chrome.cpp:

(WebCore::Chrome::openDateTimeChooser): Deleted.

  • page/Chrome.h:
  • page/ChromeClient.h:

Remove ChromeClient::openDateTimeChooser.

9:38 AM Changeset in webkit [182319] by ap@apple.com
  • 2 edits in trunk/LayoutTests

fast/fixed-layout/fixed-layout.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143379

9:01 AM Changeset in webkit [182318] by Csaba Osztrogonác
  • 5 edits in trunk

FTL JIT tests should fail if LLVM library isn't available
https://bugs.webkit.org/show_bug.cgi?id=143374

Reviewed by Mark Lam.

Source/JavaScriptCore:

  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • runtime/Options.h:

Tools:

  • Scripts/run-jsc-stress-tests:
5:52 AM Changeset in webkit [182317] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[EFL] Speedup jhbuild with disable running autogen.sh
https://bugs.webkit.org/show_bug.cgi?id=143369

Reviewed by Gyuyoung Kim.

  • efl/jhbuild.modules:
5:30 AM Changeset in webkit [182316] by Csaba Osztrogonác
  • 3 edits in trunk/LayoutTests

[WK2] Unskip now passing tests after r135595
https://bugs.webkit.org/show_bug.cgi?id=127428

Unreviewed gardening.

  • platform/mac-wk2/TestExpectations: Mark editing/selection/context-menu-text-selection.html as timeouting test.
  • platform/wk2/TestExpectations: Unskip now passing tests.
5:23 AM Changeset in webkit [182315] by zandobersek@gmail.com
  • 6 edits in trunk

Fix the EFL and GTK build after r182243
https://bugs.webkit.org/show_bug.cgi?id=143361

Reviewed by Csaba Osztrogonác.

.:

  • Source/PlatformEfl.cmake: Add a custom command that copies

the InspectorBackendCommands.js file into the proper directory
under DerivedSources/WebInspectorUI/.

Source/JavaScriptCore:

  • CMakeLists.txt: InspectorBackendCommands.js is generated in the

DerivedSources/JavaScriptCore/inspector/ directory.

Source/WebKit2:

  • PlatformGTK.cmake: Add a custom command that copies the

InspectorBackendCommands.js file into the proper directory
under DerivedSources/WebInspectorUI/.

5:20 AM Changeset in webkit [182314] by zandobersek@gmail.com
  • 4 edits in trunk/Source

Unreviewed, fixing Clang builds of the GTK port on Linux.

Source/JavaScriptCore:

  • runtime/Options.cpp:

Include the <math.h> header for isnan().

Source/WebCore:

  • Modules/mediastream/MediaDevices.h:

Include the <functional> header for uses of std::function<>.

4:23 AM Changeset in webkit [182313] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] Fix 18 crashing compositing tests after r182101
https://bugs.webkit.org/show_bug.cgi?id=143214

Unreviewed gardening, comment out the original expectations after r182311.

  • platform/efl/TestExpectations:
3:55 AM Changeset in webkit [182312] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

[EFL] Fix 18 crashing compositing tests after r182101
https://bugs.webkit.org/show_bug.cgi?id=143214

Unreviewed gardening, add crash expectations until proper fix.

  • platform/efl/TestExpectations:
3:27 AM Changeset in webkit [182311] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

Unreviewed gardening. Skip fast/fixed-layout, because it made the following tests fail.

  • platform/efl/TestExpectations:
2:17 AM Changeset in webkit [182310] by Philippe Normand
  • 4 edits in trunk/Source/WebKit2

Unreviewed, GTK build fix.

  • UIProcess/API/gtk/WebKitContextMenuClient.cpp:
  • UIProcess/gtk/WebContextMenuProxyGtk.cpp:
  • UIProcess/gtk/WebContextMenuProxyGtk.h:
1:07 AM Changeset in webkit [182309] by youenn.fablet@crf.canon.fr
  • 10 edits in trunk/Source/WebCore

[Streams API] Split ReadableStream/Reader implementation according source type (JS vs native)
https://bugs.webkit.org/show_bug.cgi?id=143130

Reviewed by Benjamin Poulain.

Introduce ReadableJSStream and ReadableJSStreamReader as subclasses of ReadableStream and ReadableStreamReader.
These classes manage JS based sources: ReadableStream JS constructor instantiates ReadableJStream.
These classes are expected to handle JS source specific handling, in particular JSValue error storage and JSValue chunk queue.
Making ReadableStream and ReadableStreamReader abstract, to be subclassed for native sources.

Current tests cover the changes.

  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::ReadableStream): Moved suspendIfNeeded inside constructor to ease subclassing.
(WebCore::ReadableStream::create): Deleted as ReadableStream is now abstarct.

  • Modules/streams/ReadableStream.h: Made createReader virtual pure.
  • Modules/streams/ReadableStream.idl: Skipping VTable validation as subclasses of ReadableStream may be JS wrapped.
  • Modules/streams/ReadableStreamReader.cpp: Removed ReadableStreamReader::create.
  • Modules/streams/ReadableStreamReader.h: Ditto.
  • Modules/streams/ReadableStreamReader.idl: Skipping VTable validation as subclasses of ReadableStreamReader may be JS wrapped.
  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::constructJSReadableStream): Instantiating ReadableJSStream in lieu of ReadableStream within JS constructor.

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::ReadableJSStream::create):
(WebCore::ReadableJSStream::createReader): Instantiating ReadableJSStreamReader.
(WebCore::ReadableJSStream::ReadableJSStream):
(WebCore::ReadableJSStreamReader::create):
(WebCore::ReadableJSStreamReader::ReadableJSStreamReader):

  • bindings/js/ReadableStreamJSSource.h: Definition of ReadableJSStream and ReadableJSStreamReader.

Apr 2, 2015:

11:39 PM Changeset in webkit [182308] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Typo fix.

  • PlatformGTK.cmake:
11:37 PM Changeset in webkit [182307] by timothy_horton@apple.com
  • 6 edits
    4 adds in trunk

Scrollbars are left in the wrong position when resizing a fixed layout view
https://bugs.webkit.org/show_bug.cgi?id=143360

Reviewed by Beth Dakin.

Test: fast/fixed-layout/fixed-layout.html

  • platform/ScrollView.cpp:

(WebCore::ScrollView::setFrameRect):
Update scrollbars when the ScrollView frameRect changes. We were previously
depending on the layout that always happens after this to update scrollbars,
but with fixed layout mode, there won't be a layout! Also, FrameView's
setFrameRect override will sync this scrollbar update with the scrollbar
layers (via RenderLayerCompositor::frameViewDidChangeSize) immediately afterwards.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
Turn off fixed layout when resetting state.

(WebCore::Internals::setUseFixedLayout):
(WebCore::Internals::setFixedLayoutSize):

  • testing/Internals.h:
  • testing/Internals.idl:

Add internals functions to set the fixed layout size and to turn on fixed layout.

  • fast/fixed-layout/fixed-layout-expected.png: Added.
  • fast/fixed-layout/fixed-layout-expected.txt: Added.
  • fast/fixed-layout/fixed-layout.html: Added.

Add a simple fixed layout test. We can add more (or recover some from
when the Qt tests were purged) now that it's testable again.

This test also happens to test the aforementioned setFrameRect change,
because without it, the RenderView's layer would be left at the wrong
size (800x600) because the scrollbars would be left behind in the resize.

11:36 PM Changeset in webkit [182306] by Csaba Osztrogonác
  • 3 edits
    2 adds in trunk/Source/WebKit2

URTBF after r182303, stub NativeContextMenuItem implemetations added for EFL and GTK.

  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • Shared/efl/NativeContextMenuItemEfl.cpp: Added.

(WebKit::NativeContextMenuItem::NativeContextMenuItem):

  • Shared/gtk/NativeContextMenuItemGtk.cpp: Added.

(WebKit::NativeContextMenuItem::NativeContextMenuItem):

10:02 PM Changeset in webkit [182305] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

De-PLATFORM(IOS)-ify LayerHostingContext::setFencePort
https://bugs.webkit.org/show_bug.cgi?id=143342

  • Platform/mac/LayerHostingContext.h:
  • Platform/mac/LayerHostingContext.mm:

Actually, not available on Mavericks. Fix the build.

8:51 PM JSC edited by mark.lam@apple.com
(diff)
8:46 PM Changeset in webkit [182304] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

Enhance ability to dump JSC Options.
<https://webkit.org/b/143357>

Reviewed by Benjamin Poulain.

Some enhancements to how the JSC options work:

  1. Add a JSC_showOptions option which take values: 0 = None, 1 = Overridden only, 2 = All, 3 = Verbose.

The default is 0 (None). This dumps nothing.
With the Overridden setting, at VM initialization time, we will dump all
option values that have been changed from their default.
With the All setting, at VM initialization time, we will dump all option values.
With the Verbose setting, at VM initialization time, we will dump all option
values along with their descriptions (if available).

  1. We now store a copy of the default option values.

We later use this for comparison to tell if an option has been overridden, and
print the default value for reference. As a result, we no longer need the
didOverride flag since we can compute whether the option is overridden at any time.

  1. Added description strings to some options to be printed when JSC_showOptions=3 (Verbose).

This will come in handy later when we want to rename some of the options to more sane
names that are easier to remember. For example, we can change
Options::dfgFunctionWhitelistFile() to Options::dfgWhiteList(), and
Options::slowPathAllocsBetweenGCs() to Options::forcedGcRate(). With the availability
of the description, we can afford to use shorter and less descriptive option names,
but they will be easier to remember and use for day to day debugging work.

In this patch, I did not change the names of any of the options yet. I only added
description strings for options that I know about, and where I think the option name
isn't already descriptive enough.

  1. Also deleted some unused code.
  • jsc.cpp:

(CommandLine::parseArguments):

  • runtime/Options.cpp:

(JSC::Options::initialize):
(JSC::Options::setOption):
(JSC::Options::dumpAllOptions):
(JSC::Options::dumpOption):
(JSC::Options::Option::dump):
(JSC::Options::Option::operator==):

  • runtime/Options.h:

(JSC::OptionRange::rangeString):
(JSC::Options::Option::Option):
(JSC::Options::Option::operator!=):

6:16 PM Changeset in webkit [182303] by Brent Fulgham
  • 31 edits
    2 adds in trunk/Source

Source/WebCore:
Unreviewed: Reapplied Change after rollout.

Expose the "Share" menu for text selections on platforms where it's available.
rdar://problem/20034174 and https://bugs.webkit.org/show_bug.cgi?id=143318

Patch by Brady Eidson <beidson@apple.com> on 2015-04-02

  • page/ContextMenuClient.h:

(WebCore::ContextMenuClient::shareSelectedTextMenuItem):

  • page/ContextMenuContext.h:

(WebCore::ContextMenuContext::setSelectedText):
(WebCore::ContextMenuContext::selectedText):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::populate): Add a Share menu item returned from the client.
(WebCore::ContextMenuController::checkOrEnableIfNeeded):

  • platform/ContextMenuItem.cpp:

(WebCore::ContextMenuItem::shareSelectedTextMenuItem):

  • platform/ContextMenuItem.h:

(WebCore::ContextMenuItem::supportsShareMenu):

  • platform/gtk/ContextMenuItemGtk.cpp:

(WebCore::ContextMenuItem::shareSelectedTextMenuItem):

  • platform/mac/ContextMenuItemMac.mm:

(WebCore::ContextMenuItem::releasePlatformDescription):
(WebCore::ContextMenuItem::getPlatformDescription):
(WebCore::ContextMenuItem::supportsShareMenu):
(WebCore::ContextMenuItem::shareSelectedTextMenuItem): Use NSMenu SPI to get the Share menu.

  • platform/spi/mac/NSMenuSPI.h: Forward declare instead of #include

Source/WebKit/mac:
Unreviewed: Reland change after rollout.

Expose the "Share" menu for text selections on platforms where it's available.
rdar://problem/20034174 and https://bugs.webkit.org/show_bug.cgi?id=143318

Patch by Brady Eidson <beidson@apple.com> on 2015-04-02

  • WebView/WebImmediateActionController.mm: Update for required #include

Source/WebKit2:
Unreviewed: Re-applied change after rollout.

Expose the "Share" menu for text selections on platforms where it's available.
rdar://problem/20034174 and https://bugs.webkit.org/show_bug.cgi?id=143318

Patch by Brady Eidson <beidson@apple.com> on 2015-04-02

  • Shared/API/c/WKContextMenuItemTypes.h: Add a constant for the Share menu.
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):

  • Shared/ContextMenuContextData.cpp:

(WebKit::ContextMenuContextData::ContextMenuContextData):
(WebKit::ContextMenuContextData::encode):
(WebKit::ContextMenuContextData::decode):

  • Shared/ContextMenuContextData.h:

(WebKit::ContextMenuContextData::selectedText):

Add a "cross platform" menu item wrapper, right now only for NSMenuItem.

  • Shared/NativeContextMenuItem.h:

(WebKit::NativeContextMenuItem::~NativeContextMenuItem):
(WebKit::NativeContextMenuItem::nsMenuItem):

  • Shared/mac/NativeContextMenuItem.mm:

(WebKit::NativeContextMenuItem::NativeContextMenuItem):

Let WebContextMenuItem hold on to a NativeContextMenuItem to maintain full fidelity of the platform.

  • Shared/WebContextMenuItem.cpp:

(WebKit::WebContextMenuItem::WebContextMenuItem):

  • Shared/WebContextMenuItem.h:

(WebKit::WebContextMenuItem::create):
(WebKit::WebContextMenuItem::nativeContextMenuItem):

  • UIProcess/API/APIContextMenuClient.h:

(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::showContextMenu):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageContextMenuClient):

  • UIProcess/WebContextMenuProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::internalShowContextMenu): Translate the placeholder item from the web process into the

native Share menu before consulting the context menu client. Also create the API items here so the native NSMenuItem
can be attached to them.

  • UIProcess/mac/WebContextMenuProxyMac.h:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKMenuTarget forwardContextMenuAction:]):
(WebKit::nsMenuItem):
(WebKit::nsMenuItemVector):
(WebKit::WebContextMenuProxyMac::populate):
(WebKit::WebContextMenuProxyMac::showContextMenu):

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebContextMenuClient.h:
  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:

(WebKit::WebContextMenuClient::shareSelectedTextMenuItem): In the web process, mark the Share menu's place in the

context menu with a placeholder item. It will be translated into the real Share menu in the UI process.

6:07 PM Changeset in webkit [182302] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

Perf dashboard should have UI to test out anomaly detection strategies
https://bugs.webkit.org/show_bug.cgi?id=143290

Reviewed by Benjamin Poulain.

Added the UI to select anomaly detection strategies. The detected anomalies are highlighted in the graph.

Implemented the Western Electric Rules 1 through 4 in http://en.wikipedia.org/wiki/Western_Electric_rules
as well as Welch's t-test that compares the last five points to the prior twenty points.

The latter is what Mozilla uses (or at least did in the past) to detect performance regressions on their
performance tests although they compare medians instead of means.

All of these strategies don't quite work for us since our data points are too noisy but this is a good start.

  • public/v2/app.js:

(App.Pane.updateStatisticsTools): Clone anomaly detection strategies.
(App.Pane._updateMovingAverageAndEnvelope): Highlight anomalies detected by the enabled strategies.
(App.Pane._movingAverageOrEnvelopeStrategyDidChange): Observe changes to anomaly detection strategies.
(App.Pane._computeMovingAverageAndOutliers): Detect anomalies by each strategy and aggregate results.
Only report the first data point when multiple consecutive data points are detected as anomalies.

  • public/v2/chart-pane.css: Updated styles.
  • public/v2/index.html: Added the pane for selecting anomaly detection strategies.
  • public/v2/js/statistics.js:

(Statistics.testWelchsT): Added. Implements Welch's t-test.
(.sampleMeanAndVarianceForValues): Added.
(.createWesternElectricRule): Added.
(.countValuesOnSameSide): Added.
(Statistics.AnomalyDetectionStrategy): Added.

5:53 PM Changeset in webkit [182301] by commit-queue@webkit.org
  • 31 edits
    2 deletes in trunk/Source

Unreviewed, rolling out r182293.
https://bugs.webkit.org/show_bug.cgi?id=143355

Broke GTK and EFL builds. (Requested by bfulgham on #webkit).

Reverted changeset:

"Expose the "Share" menu for text selections on platforms
where it's available."
https://bugs.webkit.org/show_bug.cgi?id=143318
http://trac.webkit.org/changeset/182293

5:43 PM Changeset in webkit [182300] by Brent Fulgham
  • 4 edits in trunk/LayoutTests

New ruby tests are failing on all non-Mac platforms.
https://bugs.webkit.org/show_bug.cgi?id=143354

Add skip commands for these new tests.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/win/TestExpectations:
5:40 PM Changeset in webkit [182299] by ap@apple.com
  • 3 edits in trunk/LayoutTests

http/tests/security/cross-frame-access-call.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143344

Reviewed by Anders Carlsson.

Correct the results. Not sure where I got the different results from.

5:27 PM Changeset in webkit [182298] by Brent Fulgham
  • 3 edits in trunk/Source/WebCore

REGRESSION: Caption Menus show language codes instead of display names.
https://bugs.webkit.org/show_bug.cgi?id=143350
<rdar://problem/20094145>

Reviewed by Jer Noble.

The generic caption/track label handling in CaptionUserPreferences does not convert language codes
(e.g. 'fr-CA') into display names (e.g., 'French (Canada)'). Because we did not have an AudioTrack
override to process these types of menu items, they were being handled using the generic code.

  • page/CaptionUserPreferencesMediaAF.cpp:

(WebCore::buildStringForTrackBase): Helper function to share code with the two flavors
of 'trackDisplayName'.
(WebCore::trackDisplayName): Add a version to support AudioTracks, and modify the TextTrack
version to use the new 'buildStringForTrackBase' function.
(WebCore::CaptionUserPreferencesMediaAF::displayNameForTrack): Add an AudioTrack override so
our AVFoundation tracks are processed in our CaptionUserPreferencesMediaAF implementation, not the
generic version.
(WebCore::CaptionUserPreferencesMediaAF::sortedTrackListForMenu): Add an AudioTrack override so
that the menu items are sorted in order of display name, not language code.

  • page/CaptionUserPreferencesMediaAF.h:
5:09 PM Changeset in webkit [182297] by ggaren@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

JavaScriptCore API should support type checking for Array and Date
https://bugs.webkit.org/show_bug.cgi?id=143324

Reviewed by Darin Adler, Sam Weinig, Dan Bernstein.

  • API/JSValue.h:
  • API/JSValue.mm:

(-[JSValue isArray]):
(-[JSValue isDate]): Added an ObjC API.

  • API/JSValueRef.cpp:

(JSValueIsArray):
(JSValueIsDate):

  • API/JSValueRef.h: Added a C API.
  • API/WebKitAvailability.h: Brought our availability macros up to date

and fixed a harmless bug where "10_10" translated to "10.0".

  • API/tests/testapi.c:

(main): Added a test and corrected a pre-existing leak.

  • API/tests/testapi.mm:

(testObjectiveCAPI): Added a test.

4:19 PM Changeset in webkit [182296] by Chris Dumez
  • 4 edits in trunk/Source/WebKit2

[WK2][NetworkCache] Drop HTTP method from NetworkCache::Key
https://bugs.webkit.org/show_bug.cgi?id=143348

Reviewed by Antti Koivisto.

Drop HTTP method from NetworkCache::Key as we only cache GET responses
for now. Even when we start caching HEAD responses, we likely will not
want the method to be part of the key because:

  • A HEAD response can be used to update the headers of a previously cached response to GET
  • A cached GET response may be used to satisfy subsequent HEAD requests
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeCacheKey):

  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::Key::Key):
(WebKit::NetworkCache::Key::operator=):
(WebKit::NetworkCache::Key::computeHash):
(WebKit::NetworkCache::Key::operator==):
(WebKit::NetworkCache::Key::encode):
(WebKit::NetworkCache::Key::decode):

  • NetworkProcess/cache/NetworkCacheKey.h:

(WebKit::NetworkCache::Key::method): Deleted.

3:50 PM Changeset in webkit [182295] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebKit2

[Mac][WK2] Fullscreen animation incorrect when initiated on non-primary monitor
https://bugs.webkit.org/show_bug.cgi?id=143237

Reviewed by Brent Fulgham.

The animation calculations have an implicit assumptions of a screen whose origin is 0,0. Account
for the screen origin by passing the window's screen's frame into the zoomAnimation() and maskAnimation()
methods.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController initWithWindow:webView:]):
(zoomAnimation):
(maskAnimation):
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]):
(-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]):

3:46 PM Changeset in webkit [182294] by mark.lam@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Add Options::dumpSourceAtDFGTime().
<https://webkit.org/b/143349>

Reviewed by Oliver Hunt, and Michael Saboff.

Sometimes, we will want to see the JS source code that we're compiling, and it
would be nice to be able to do this without having to jump thru a lot of hoops.
So, let's add a Options::dumpSourceAtDFGTime() option just like we have a
Options::dumpBytecodeAtDFGTime() option.

Also added versions of CodeBlock::dumpSource() and CodeBlock::dumpBytecode()
that explicitly take no arguments (instead of relying on the version that takes
the default argument). These versions are friendlier to use when we want to call
them from an interactive debugging session.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpSource):
(JSC::CodeBlock::dumpBytecode):

  • bytecode/CodeBlock.h:
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseCodeBlock):

  • runtime/Options.h:
3:40 PM Changeset in webkit [182293] by beidson@apple.com
  • 31 edits
    2 copies in trunk/Source

Expose the "Share" menu for text selections on platforms where it's available.
rdar://problem/20034174 and https://bugs.webkit.org/show_bug.cgi?id=143318

Reviewed by Sam Weinig.

Source/WebCore:

  • page/ContextMenuClient.h:

(WebCore::ContextMenuClient::shareSelectedTextMenuItem):

  • page/ContextMenuContext.h:

(WebCore::ContextMenuContext::setSelectedText):
(WebCore::ContextMenuContext::selectedText):

  • page/ContextMenuController.cpp:

(WebCore::ContextMenuController::populate): Add a Share menu item returned from the client.
(WebCore::ContextMenuController::checkOrEnableIfNeeded):

  • platform/ContextMenuItem.cpp:

(WebCore::ContextMenuItem::shareSelectedTextMenuItem):

  • platform/ContextMenuItem.h:

(WebCore::ContextMenuItem::supportsShareMenu):

  • platform/gtk/ContextMenuItemGtk.cpp:

(WebCore::ContextMenuItem::shareSelectedTextMenuItem):

  • platform/mac/ContextMenuItemMac.mm:

(WebCore::ContextMenuItem::releasePlatformDescription):
(WebCore::ContextMenuItem::getPlatformDescription):
(WebCore::ContextMenuItem::supportsShareMenu):
(WebCore::ContextMenuItem::shareSelectedTextMenuItem): Use NSMenu SPI to get the Share menu.

  • platform/spi/mac/NSMenuSPI.h: Forward declare instead of #include

Source/WebKit/mac:

  • WebView/WebImmediateActionController.mm: Update for required #include

Source/WebKit2:

  • Shared/API/c/WKContextMenuItemTypes.h: Add a constant for the Share menu.
  • Shared/API/c/WKSharedAPICast.h:

(WebKit::toAPI):
(WebKit::toImpl):

  • Shared/ContextMenuContextData.cpp:

(WebKit::ContextMenuContextData::ContextMenuContextData):
(WebKit::ContextMenuContextData::encode):
(WebKit::ContextMenuContextData::decode):

  • Shared/ContextMenuContextData.h:

(WebKit::ContextMenuContextData::selectedText):

Add a "cross platform" menu item wrapper, right now only for NSMenuItem.

  • Shared/NativeContextMenuItem.h:

(WebKit::NativeContextMenuItem::~NativeContextMenuItem):
(WebKit::NativeContextMenuItem::nsMenuItem):

  • Shared/mac/NativeContextMenuItem.mm:

(WebKit::NativeContextMenuItem::NativeContextMenuItem):

Let WebContextMenuItem hold on to a NativeContextMenuItem to maintain full fidelity of the platform.

  • Shared/WebContextMenuItem.cpp:

(WebKit::WebContextMenuItem::WebContextMenuItem):

  • Shared/WebContextMenuItem.h:

(WebKit::WebContextMenuItem::create):
(WebKit::WebContextMenuItem::nativeContextMenuItem):

  • UIProcess/API/APIContextMenuClient.h:

(API::ContextMenuClient::getContextMenuFromProposedMenu):
(API::ContextMenuClient::showContextMenu):

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageContextMenuClient):

  • UIProcess/WebContextMenuProxy.h:
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::internalShowContextMenu): Translate the placeholder item from the web process into the

native Share menu before consulting the context menu client. Also create the API items here so the native NSMenuItem
can be attached to them.

  • UIProcess/mac/WebContextMenuProxyMac.h:
  • UIProcess/mac/WebContextMenuProxyMac.mm:

(-[WKMenuTarget forwardContextMenuAction:]):
(WebKit::nsMenuItem):
(WebKit::nsMenuItemVector):
(WebKit::WebContextMenuProxyMac::populate):
(WebKit::WebContextMenuProxyMac::showContextMenu):

  • WebKit2.xcodeproj/project.pbxproj:
  • WebProcess/WebCoreSupport/WebContextMenuClient.h:
  • WebProcess/WebCoreSupport/mac/WebContextMenuClientMac.mm:

(WebKit::WebContextMenuClient::shareSelectedTextMenuItem): In the web process, mark the Share menu's place in the

context menu with a placeholder item. It will be translated into the real Share menu in the UI process.

3:31 PM Changeset in webkit [182292] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Only pass in the AVURLAssetClientBundleIdentifierKey on iOS.
https://bugs.webkit.org/show_bug.cgi?id=143347

Reviewed by Brent Fulgham.

Only pass in the main app bundle id into AVURLAsset via the AVURLAssetClientBundleIdentifierKey option
on iOS. On OS X, setting this key can cause media playback to fail.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVAssetForURL):

3:23 PM Changeset in webkit [182291] by timothy_horton@apple.com
  • 3 edits in trunk/Source/WebKit2

De-PLATFORM(IOS)-ify LayerHostingContext::setFencePort
https://bugs.webkit.org/show_bug.cgi?id=143342

Reviewed by Myles C. Maxfield.

  • Platform/mac/LayerHostingContext.h:
  • Platform/mac/LayerHostingContext.mm:

(WebKit::LayerHostingContext::setFencePort):
There's nothing iOS specific about this.

3:22 PM Changeset in webkit [182290] by mmaxfield@apple.com
  • 3 edits in trunk/LayoutTests

Test gardening.

Unreviewed.

  • fast/ruby/ruby-expansion-cjk-4-expected.html:
  • fast/ruby/ruby-expansion-cjk-4.html:
2:52 PM Changeset in webkit [182289] by oliver@apple.com
  • 2 edits in trunk/Source/WebKit2

Ensure that we always set network ATS context in the network process
https://bugs.webkit.org/show_bug.cgi?id=143343

Reviewed by Dan Bernstein.

If a custom cache location or size we were early returning before setting
the CFNetwork ATS context. This is clearly an error.

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

2:48 PM Changeset in webkit [182288] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Show audio media controls on OSX.
https://bugs.webkit.org/show_bug.cgi?id=143346.
<rdar://problem/20306240>

Reviewed by Dean Jackson.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-panel:hover):
Revert part of r180893.

2:25 PM Changeset in webkit [182287] by andersca@apple.com
  • 2 edits in trunk/LayoutTests

http/tests/security/cross-frame-access-call.html is flaky.

Skip this test for now. Fixing it is being tracked by webkit.org/b/143344.

1:29 PM Changeset in webkit [182286] by mmaxfield@apple.com
  • 12 edits
    13 adds in trunk

Disallow ruby base from having leading or trailing expansions
https://bugs.webkit.org/show_bug.cgi?id=142608

Reviewed by David Hyatt.

Source/WebCore:

If we determine that a ruby base should have either a leading or trailing expansion,
we shunt that expansion over to the neighboring RenderText, assuming one exists. This
requires that we teach RenderText how to force leading or trailing expansions if one
wouldn't naturally be present.

Tests: fast/ruby/ruby-expansion-cjk-2.html

fast/ruby/ruby-expansion-cjk-3.html
fast/ruby/ruby-expansion-cjk-4.html
fast/ruby/ruby-expansion-cjk-5.html
fast/ruby/ruby-expansion-cjk.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::removeChild): Delete contentIsKnownToFollow.

  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::expansionBehavior): Support forced leading and trailing
expansions.

  • rendering/InlineTextBox.h:

(WebCore::InlineTextBox::expansionBehavior): Moved to .cpp

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::updateRubyForJustifiedText): Perform relayout even if
there are no expansions left. This is so that ruby bases with no expansions will get
centered.
(WebCore::expansionBehaviorForInlineTextBox): Update to inspect neighboring rubies.
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment): Use updated
expansionBehaviorForInlineTextBox(). Also center ruby bases if they have no expansion
opportunities.
(WebCore::RenderBlockFlow::createLineBoxesFromBidiRuns): Use nullptr.
(WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange): Ditto.

  • rendering/RenderText.cpp:

(WebCore::RenderText::RenderText): Delete contentIsKnownToFollow.

  • rendering/RenderText.h:

(WebCore::RenderText::contentIsKnownToFollow): Deleted.
(WebCore::RenderText::setContentIsKnownToFollow): Deleted.

LayoutTests:

Test combinations of CJK, Latin, ruby-in-ruby, simple text codepath, complex
text codepath, RTL, and LTR codepaths.

  • fast/ruby/positioned-ruby-text-expected.txt:
  • fast/ruby/positioned-ruby-text.html:
  • fast/ruby/resources/green.png: Added.
  • fast/ruby/resources/ruby-expansion.svg: Added.
  • fast/ruby/ruby-expansion-cjk-2-expected.html: Added.
  • fast/ruby/ruby-expansion-cjk-2.html: Added.
  • fast/ruby/ruby-expansion-cjk-3-expected.html: Added.
  • fast/ruby/ruby-expansion-cjk-3.html: Added.
  • fast/ruby/ruby-expansion-cjk-4-expected.html: Added.
  • fast/ruby/ruby-expansion-cjk-4.html: Added.
  • fast/ruby/ruby-expansion-cjk-5-expected.html: Added.
  • fast/ruby/ruby-expansion-cjk-5.html: Added.
  • fast/ruby/ruby-expansion-cjk-expected.html: Added.
  • fast/ruby/ruby-expansion-cjk.html: Added.
  • fast/ruby/ruby-justification-expected.html:
  • fast/ruby/ruby-justification.html:
12:53 PM Changeset in webkit [182285] by ap@apple.com
  • 2 edits in trunk/Source/WebKit2

Make checkURLReceivedFromWebProcess not rely on details of platform URL implementation.
https://bugs.webkit.org/show_bug.cgi?id=143222
rdar://problem/19978997

Reviewed by Sam Weinig.

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::checkURLReceivedFromWebProcess):

12:50 PM Changeset in webkit [182284] by ap@apple.com
  • 5 edits in trunk

Clean up access checks in JSHistoryCustom.cpp
https://bugs.webkit.org/show_bug.cgi?id=143227

Reviewed by Sam Weinig.

Source/WebCore:

  • bindings/js/JSHistoryCustom.cpp:

(WebCore::JSHistory::putDelegate):
(WebCore::JSHistory::deleteProperty):
(WebCore::JSHistory::deletePropertyByIndex):
(WebCore::JSHistory::getOwnPropertyNames):
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):

LayoutTests:

  • http/tests/security/cross-frame-access-call-expected.txt:
  • http/tests/security/cross-frame-access-call.html:
12:46 PM Changeset in webkit [182283] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

[Content Extensions] Only add unique universal action locations.
https://bugs.webkit.org/show_bug.cgi?id=143325

Reviewed by Benjamin Poulain.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Use a HashSet instead of a Vector for the universal action locations to remove duplicates.

12:41 PM Changeset in webkit [182282] by roger_fong@apple.com
  • 2 edits in trunk/Source/WebCore

Fix slider colors for media controls on OSX.
https://bugs.webkit.org/show_bug.cgi?id=143328.
<rdar://problem/20357858>

Reviewed by Darin Adler.

Fill in bottom portion of volume slider.
Adjust colors to make slider controls look better. Will likely be tweaked later.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.drawTimelineBackground):
(Controller.prototype.drawVolumeBackground):

12:14 PM Changeset in webkit [182281] by ap@apple.com
  • 2 edits in trunk/LayoutTests

media/track/track-forced-subtitles-in-band.html times out

  • platform/mac/TestExpectations: Update the expectations - the test doens't only fail

flakily, it times out too.

11:53 AM Changeset in webkit [182280] by Yusuke Suzuki
  • 35 edits in trunk/Source

Clean up EnumerationMode to easily extend
https://bugs.webkit.org/show_bug.cgi?id=143276

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

To make the followings easily,

  1. Adding new flag Include/ExcludeSymbols in the Object.getOwnPropertySymbols patch
  2. Make ExcludeSymbols implicitly default for the existing flags

we encapsulate EnumerationMode flags into EnumerationMode class.

And this class manages 2 flags. Later it will be extended to 3.

  1. DontEnumPropertiesMode (default is Exclude)
  2. JSObjectPropertiesMode (default is Include)
  3. SymbolPropertiesMode (default is Exclude)

SymbolPropertiesMode will be added in Object.getOwnPropertySymbols patch.

This patch replaces places using ExcludeDontEnumProperties
to EnumerationMode() value which represents default mode.

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames):

  • API/JSObjectRef.cpp:

(JSObjectCopyPropertyNames):

  • bindings/ScriptValue.cpp:

(Deprecated::jsToInspectorValue):

  • bytecode/ObjectAllocationProfile.h:

(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):

  • runtime/ArrayPrototype.cpp:

(JSC::arrayProtoFuncSort):

  • runtime/EnumerationMode.h:

(JSC::EnumerationMode::EnumerationMode):
(JSC::EnumerationMode::includeDontEnumProperties):
(JSC::EnumerationMode::includeJSObjectProperties):
(JSC::shouldIncludeDontEnumProperties): Deleted.
(JSC::shouldExcludeDontEnumProperties): Deleted.
(JSC::shouldIncludeJSObjectPropertyNames): Deleted.
(JSC::modeThatSkipsJSObject): Deleted.

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertyNames):

  • runtime/JSArray.cpp:

(JSC::JSArray::getOwnNonIndexPropertyNames):

  • runtime/JSArrayBuffer.cpp:

(JSC::JSArrayBuffer::getOwnNonIndexPropertyNames):

  • runtime/JSArrayBufferView.cpp:

(JSC::JSArrayBufferView::getOwnNonIndexPropertyNames):

  • runtime/JSFunction.cpp:

(JSC::JSFunction::getOwnNonIndexPropertyNames):

  • runtime/JSFunction.h:
  • runtime/JSGenericTypedArrayViewInlines.h:

(JSC::JSGenericTypedArrayView<Adaptor>::getOwnNonIndexPropertyNames):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):

  • runtime/JSONObject.cpp:

(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):

  • runtime/JSObject.cpp:

(JSC::getClassPropertyNames):
(JSC::JSObject::getOwnPropertyNames):
(JSC::JSObject::getOwnNonIndexPropertyNames):
(JSC::JSObject::getGenericPropertyNames):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::propertyNameEnumerator):

  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyNames):
(JSC::objectConstructorKeys):
(JSC::defineProperties):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):

  • runtime/RegExpObject.cpp:

(JSC::RegExpObject::getOwnNonIndexPropertyNames):
(JSC::RegExpObject::getPropertyNames):
(JSC::RegExpObject::getGenericPropertyNames):

  • runtime/StringObject.cpp:

(JSC::StringObject::getOwnPropertyNames):

  • runtime/Structure.cpp:

(JSC::Structure::getPropertyNamesFromStructure):

Source/WebCore:

Use default EnumerationMode().

  • bindings/js/Dictionary.cpp:

(WebCore::Dictionary::getOwnPropertiesAsStringHashMap):
(WebCore::Dictionary::getOwnPropertyNames):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateHeader):

  • bindings/scripts/test/JS/JSFloat64Array.h:
  • bindings/scripts/test/JS/JSTestEventTarget.h:
  • bridge/NP_jsobject.cpp:

(_NPN_Enumerate):

  • bridge/runtime_array.cpp:

(JSC::RuntimeArray::getOwnPropertyNames):

Source/WebKit/mac:

Use default EnumerationMode().

  • Plugins/Hosted/NetscapePluginInstanceProxy.mm:

(WebKit::NetscapePluginInstanceProxy::enumerate):

Source/WebKit2:

Use default EnumerationMode().

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::NPJSObject::enumerate):

11:34 AM Changeset in webkit [182279] by hyatt@apple.com
  • 17 edits
    6 adds in trunk

[New Block-Inside-Inline Model] Implement the correct paint order for blocks inside inlines.
https://bugs.webkit.org/show_bug.cgi?id=143320

Reviewed by Darin Adler.

Source/WebCore:

Added new tests in fast/block/inside-inlines.

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::nodeAtPoint):

  • rendering/EllipsisBox.h:
  • rendering/InlineBox.h:
  • rendering/InlineElementBox.cpp:

(WebCore::InlineElementBox::paint):
(WebCore::InlineElementBox::nodeAtPoint):

  • rendering/InlineElementBox.h:
  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::nodeAtPoint):
(WebCore::InlineFlowBox::paint):

  • rendering/InlineFlowBox.h:
  • rendering/InlineTextBox.cpp:

(WebCore::InlineTextBox::nodeAtPoint):

  • rendering/InlineTextBox.h:

The HitTestAction has to be passed to nodeAtPoint so that hit test actions can be honored. All the nodeAtPoint
functions have been patched to include this argument. Painting and hit testing have been patched for InlineElementBox
to honor phases/actions when the element is an anonymous inline block.

The phase filter on RenderLineBoxList has been pushed in to InlineFlowBox::paint and InlineFlowBox::nodeAtPoint so that
we can respect it properly when inlines are painting by themselves (e.g., because they have a layer).

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::createLineBoxes):
(WebCore::RenderBlockFlow::constructLine):
Go ahead and include all of the inline flow boxes between the root and the anonymous inline block if it turns out they
need to be constructed. This will end up being relevant for outlines and for self-painting layers (e.g., opacity).

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::paint):
(WebCore::RenderLineBoxList::hitTest):
Remove the filters here, since they get pushed in to InlineFlowBox.

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::nodeAtPoint):

  • rendering/RootInlineBox.h:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::nodeAtPoint):

  • rendering/svg/SVGInlineTextBox.h:

More patching to pass the HitTestAction into nodeAtPoint.

LayoutTests:

  • fast/block/inside-inlines/new-model/paint-order-expected.html: Added.
  • fast/block/inside-inlines/new-model/paint-order.html: Added.
  • fast/block/inside-inlines/opacity-on-inline-expected.html: Added.
  • fast/block/inside-inlines/opacity-on-inline.html: Added.
  • fast/block/inside-inlines/paint-order-expected.html: Added.
  • fast/block/inside-inlines/paint-order.html: Added.
11:31 AM Changeset in webkit [182278] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2][iOS] Update the WebContent process' sandbox profile for AWD
https://bugs.webkit.org/show_bug.cgi?id=143340
<rdar://problem/20375170>

Reviewed by Alexey Proskuryakov.

Update the WebContent process' sandbox profile for AWD.

  • Resources/SandboxProfiles/ios/com.apple.WebKit.WebContent.sb:
10:50 AM Changeset in webkit [182277] by bshafiei@apple.com
  • 5 edits in branches/safari-600.5-branch/Source

Versioning.

10:38 AM Changeset in webkit [182276] by bshafiei@apple.com
  • 3 edits in tags/Safari-601.1.25/Source/WebCore

Merged r182274. rdar://problem/20391647

10:37 AM Changeset in webkit [182275] by adam.bergkvist@ericsson.com
  • 9 edits
    9 adds in trunk

WebRTC: Add support for Promise-based MediaDevices.getUserMedia()
https://bugs.webkit.org/show_bug.cgi?id=143255

Reviewed by Eric Carlson.

Source/WebCore:

The MediaDevices object collects functionality related to local media
devices. This patch adds the Promise-based version of getUserMedia()
(unprefixed). Other functionality, like enumerateDevices(), will be
added in later patches.

The old callback-based webkitGetUserMedia() (on Navigator) is kept for
legacy purposes (according to the Media Capture and Streams API spec [1]).
Both versions of getUserMedia are backed up by UserMediaRequest where
the callbacks from the callback-based version are wrapped inside c++
lambda functions. The new Promise-based getUserMedia() uses the lambda
functions directly as created by the Promise bindings.

[1] http://w3c.github.io/mediacapture-main/archives/20150324/getusermedia.html#navigatorusermedia-interface-extensions

Test: fast/mediastream/MediaDevices-getUserMedia.html

  • CMakeLists.txt:
  • DerivedSources.make:
  • Modules/mediastream/MediaDevices.cpp: Added.

(WebCore::MediaDevices::create):
(WebCore::MediaDevices::MediaDevices):
(WebCore::MediaDevices::~MediaDevices):
(WebCore::MediaDevices::document):
(WebCore::MediaDevices::getUserMedia):

  • Modules/mediastream/MediaDevices.h: Added.
  • Modules/mediastream/MediaDevices.idl: Added.
  • Modules/mediastream/NavigatorMediaDevices.cpp: Added.

(WebCore::NavigatorMediaDevices::NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::~NavigatorMediaDevices):
(WebCore::NavigatorMediaDevices::from):
(WebCore::NavigatorMediaDevices::mediaDevices):
(WebCore::NavigatorMediaDevices::supplementName):

  • Modules/mediastream/NavigatorMediaDevices.h: Added.
  • Modules/mediastream/NavigatorMediaDevices.idl: Added.
  • Modules/mediastream/UserMediaRequest.cpp:

(WebCore::UserMediaRequest::create):
(WebCore::UserMediaRequest::UserMediaRequest):
(WebCore::UserMediaRequest::didCreateStream):
(WebCore::UserMediaRequest::failedToCreateStreamWithConstraintsError):
(WebCore::UserMediaRequest::failedToCreateStreamWithPermissionError):

  • Modules/mediastream/UserMediaRequest.h:
  • PlatformGTK.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSMediaDevicesCustom.cpp: Added.

(WebCore::JSMediaDevices::getUserMedia):

LayoutTests:

Added test for new Promise-based getUserMedia() (on MediaDevices).

  • fast/dom/navigator-detached-no-crash.html:
  • fast/mediastream/MediaDevices-getUserMedia-expected.txt: Added.
  • fast/mediastream/MediaDevices-getUserMedia.html: Added.
10:15 AM Changeset in webkit [182274] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

[iOS] Fix AirPlay problem caused by r182240
https://bugs.webkit.org/show_bug.cgi?id=143337

Reviewed by Jer Noble.

  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::wirelessVideoPlaybackDisabled): Return false if the legacy attribute

"x-webkit-airplay" has the value "allow".

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::parseAttribute): Don't call webkitWirelessVideoPlaybackDisabled when

processing "x-webkit-airplay" and "x-webkit-wirelessvideoplaybackdisabled", just consider
the attribute/value.

9:44 AM Changeset in webkit [182273] by ap@apple.com
  • 2 edits in trunk/LayoutTests

Reinstate expectations for fast/events/mouse-cursor-image-set.html now that r182247
was rolled out.

  • platform/mac/TestExpectations:
9:43 AM Changeset in webkit [182272] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r182265.
https://bugs.webkit.org/show_bug.cgi?id=143338

Caused an assertion on
http/tests/contentextensions/whitelist.html (Requested by ap
on #webkit).

Reverted changeset:

"[Content Extensions] Only add unique universal action
locations."
https://bugs.webkit.org/show_bug.cgi?id=143325
http://trac.webkit.org/changeset/182265

8:45 AM Changeset in webkit [182271] by Antti Koivisto
  • 19 edits in trunk/Source

Use std::chrono types to represent time in response and cache classes
https://bugs.webkit.org/show_bug.cgi?id=143316

Reviewed by Andreas Kling.

Source/WebCore:

Use std::chrono::system_clock::time_point to represent clock times and std::chrono::microseconds to
represent durations. Also use WTF::Optional for optional values (instead of coding them as NaNs).

  • dom/Document.cpp:

(WebCore::Document::lastModified):

  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::CachedResource):
(WebCore::CachedResource::freshnessLifetime):
(WebCore::CachedResource::responseReceived):
(WebCore::CachedResource::updateResponseAfterRevalidation):

  • loader/cache/CachedResource.h:
  • platform/network/CacheValidation.cpp:

(WebCore::computeCurrentAge):
(WebCore::computeFreshnessLifetimeForHTTPFamily):
(WebCore::updateRedirectChainStatus):
(WebCore::redirectChainAllowsReuse):
(WebCore::parseCacheControlDirectives):

  • platform/network/CacheValidation.h:

(WebCore::RedirectChainCacheStatus::RedirectChainCacheStatus):

  • platform/network/HTTPParsers.cpp:

(WebCore::parseHTTPDate):
(WebCore::parseDate): Deleted.

  • platform/network/HTTPParsers.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::cacheControlMaxAge):
(WebCore::parseDateValueInHeader):
(WebCore::ResourceResponseBase::date):
(WebCore::ResourceResponseBase::age):
(WebCore::ResourceResponseBase::expires):
(WebCore::ResourceResponseBase::lastModified):

  • platform/network/ResourceResponseBase.h:

Source/WebKit2:

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didFinishLoading):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::responseNeedsRevalidation):
(WebKit::NetworkCache::makeStoreDecision):
(WebKit::NetworkCache::Cache::store):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::asJSON):

  • NetworkProcess/cache/NetworkCacheEntry.h:

(WebKit::NetworkCache::Entry::timeStamp):

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecord):

Sanity check the timestamp on decode.

(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::encodeRecordHeader):
(WebKit::NetworkCache::Storage::traverse):

  • NetworkProcess/cache/NetworkCacheStorage.h:
  • WebProcess/Plugins/PluginView.cpp:

(WebKit::lastModifiedDateMS):
(WebKit::PluginView::Stream::didReceiveResponse):
(WebKit::PluginView::manualLoadDidReceiveResponse):
(WebKit::lastModifiedDate): Deleted.

1:51 AM Changeset in webkit [182270] by commit-queue@webkit.org
  • 6 edits
    2 adds in trunk

[CSS MultiColumn] Parse "columns: auto <length>" shorthand property value properly
https://bugs.webkit.org/show_bug.cgi?id=143248

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-02
Reviewed by Darin Adler.

Source/WebCore:

Test: fast/multicol/columns-shorthand-parsing-2.html

The two longhands for the 'columns' property ('column-count' and
'column-width') may both take 'auto' as a value. When we encounter
'auto' during parsing the value list of a declaration, we cannot just
make a guess at which property/properties that's meant for. Instead,
don't assign anything to 'auto' right away, but wait until all values
have been processed and at that point set the still unassigned
properties to 'auto'. If 'auto' isn't in the value list at all, set
unassigned properties to 'initial' for the 'columns' property, just
like we do for any other property.

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseColumnWidth):
(WebCore::CSSParser::parseColumnCount):
(WebCore::CSSParser::parseColumnsShorthand):

  • css/CSSParser.h:

LayoutTests:

  • fast/css/getPropertyValue-columns-expected.txt:
  • fast/css/getPropertyValue-columns.html:
  • fast/multicol/columns-shorthand-parsing-2-expected.txt: Added.
  • fast/multicol/columns-shorthand-parsing-2.html: Added.

Apr 1, 2015:

11:29 PM Changeset in webkit [182269] by ap@apple.com
  • 2 edits in trunk/Tools

filter-webkit-build should filter out "created by an unsupported XCDependencyGraph build" lines
https://bugs.webkit.org/show_bug.cgi?id=143282

Reviewed by Daniel Bates.

  • Scripts/filter-build-webkit: (shouldIgnoreLine): Do it.
11:28 PM Changeset in webkit [182268] by ap@apple.com
  • 5 edits in trunk/Tools

When LayoutTestHelper fails to start, we continue to run the tests, ending up with mysterious failures
https://bugs.webkit.org/show_bug.cgi?id=143240
rdar://problem/19990425

Reviewed by Tim Horton.

  • DumpRenderTree/mac/LayoutTestHelper.m:

(colorProfileURLForDisplay):
(saveDisplayColorProfiles):
Gracefully handle it when the current profile cannot be retrieved, fixing at
least one case when LayoutTestHelper couldn't start.

  • Scripts/webkitpy/layout_tests/controllers/manager.py:

(Manager._set_up_run):
(Manager._force_pixel_tests_if_needed):

  • Scripts/webkitpy/port/base.py: (Port.to.start_helper):
  • Scripts/webkitpy/port/mac.py: (MacPort.start_helper):

Return and check an error from start_helper().

10:58 PM Changeset in webkit [182267] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

[WK2][Cocoa] Add didFailProvisionalLoadWithErrorForFrame callback to WKWebProcessPlugInLoadDelegate
https://bugs.webkit.org/show_bug.cgi?id=143319
<rdar://problem/19463834>

Reviewed by Dan Bernstein.

Add didFailProvisionalLoadWithErrorForFrame callback to
WKWebProcessPlugInLoadDelegate so that the client side can track all
types page load completions:

  • didFailProvisionalLoadWithErrorForFrame
  • didFailLoadWithErrorForFrame
  • didFinishLoadForFrame

Note that this event is already exposed on UIProcess side via the
WKPageLoaderClient.didFailLoadWithErrorForFrame callback.

  • WebProcess/InjectedBundle/API/Cocoa/WKWebProcessPlugInLoadDelegate.h:
  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(didFailProvisionalLoadWithErrorForFrame):
(setUpPageLoaderClient):

5:22 PM Changeset in webkit [182266] by commit-queue@webkit.org
  • 24 edits
    4 deletes in trunk

Unreviewed, rolling out r182247.
https://bugs.webkit.org/show_bug.cgi?id=143326

unfortunately broke some tests (Requested by dino on #webkit).

Reverted changeset:

"Async loading of image resources"
https://bugs.webkit.org/show_bug.cgi?id=134488
http://trac.webkit.org/changeset/182247

5:16 PM Changeset in webkit [182265] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

[Content Extensions] Only add unique universal action locations.
https://bugs.webkit.org/show_bug.cgi?id=143325

Reviewed by Benjamin Poulain.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Use a HashSet instead of a Vector for the universal action locations to remove duplicates.

4:59 PM Changeset in webkit [182264] by dino@apple.com
  • 2 edits in trunk/LayoutTests

fast/events/mouse-cursor-image-set.html is timing out on Apple platforms
https://bugs.webkit.org/show_bug.cgi?id=143323

Removing old flakiness setting now that we should be skipping.

  • platform/mac/TestExpectations:
4:47 PM Changeset in webkit [182263] by roger_fong@apple.com
  • 3 edits in trunk/Source/WebCore

Fixes to material of inline media controls on OSX.
https://bugs.webkit.org/show_bug.cgi?id=143317
<rdar://problem/20357847>

Reviewed by Dean Jackson.

There are many existing tests for the media controls appearance.
They are currently skipped while we are still updating the controls.

Expand backgrounds of control panel and volume box.
Clip the darker edges away.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-panel):
(audio::-webkit-media-controls-panel-background-container):
(audio::-webkit-media-controls-panel-tint):
(audio::-webkit-media-controls-panel-background):
(audio::-webkit-media-controls-panel .volume-box):
(audio::-webkit-media-controls-volume-slider-container-background):
(audio::-webkit-media-controls-volume-slider-container-tint):
(audio::-webkit-media-controls-panel .volume-box:active):
(video::-webkit-media-controls-volume-slider):
This needs to be above the background so it can be interacted with.
(video:-webkit-full-screen::-webkit-media-controls-panel .volume-box):

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.createControls): Create a new div for the control material.
We need to clip the material and not the controls themselves.
(Controller.prototype.configureInlineControls): Use new div.
Remove some unnecessary logic involving hiding materials here.
It just causes the materials to turn on and off at the wrong times.
(Controller.prototype.handlePanelTransitionEnd):
(Controller.prototype.setPlaying):
(Controller.prototype.showControls):
(Controller.prototype.hideControls):

4:43 PM Changeset in webkit [182262] by eric.carlson@apple.com
  • 3 edits in trunk/Source/WebCore

Media controls should not always auto-hide
https://bugs.webkit.org/show_bug.cgi?id=143322

Reviewed by Dean Jackson.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller): Intialize new properties.
(Controller.prototype.hideControls): Do nothing if controlsAlwaysVisible() returns true;
(Controller.prototype.controlsAlwaysVisible): New.
(Controller.prototype.controlsAreHidden): Consult controlsAlwaysVisible().
(Controller.prototype.currentPlaybackTargetIsWireless): Use new properties.
(Controller.prototype.updateWirelessTargetAvailable): Cache video.webkitCurrentPlaybackTargetIsWireless

and video.webkitWirelessVideoPlaybackDisabled because we know when they change and
use them frequently.

  • Modules/mediacontrols/mediaControlsiOS.js:

(ControllerIOS.prototype.controlsAlwaysVisible): New.

  • platform/graphics/MediaPlaybackTarget.h:
4:43 PM Changeset in webkit [182261] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Run test-webkitpy as part of EWS (just like we do on other platforms)
https://bugs.webkit.org/show_bug.cgi?id=143321

Reviewed by Alexey Proskuryakov.

  • EWSTools/start-queue-win.sh: Add commands to run 'test-webkitpy' during processing loop.
4:22 PM Changeset in webkit [182260] by enrica@apple.com
  • 22 edits
    3 adds in trunk

Injected bundle messages should be at the page level.
https://bugs.webkit.org/show_bug.cgi?id=143283

Reviewed by Alexey Proskuryakov.

Source/WebKit2:

All the messages between the injected bundle and the UI
process should be page level messages instead of context.
The author of this patch is Tim Horton, I just finished it.

  • UIProcess/API/C/WKPage.cpp:

(WKPageSetPageInjectedBundleClient):

  • UIProcess/API/C/WKPage.h:
  • UIProcess/API/C/WKPageInjectedBundleClient.h: Added.
  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _pageForTesting]):

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/WebPageInjectedBundleClient.cpp: Added.

(WebKit::WebPageInjectedBundleClient::didReceiveMessageFromInjectedBundle):
(WebKit::WebPageInjectedBundleClient::didReceiveSynchronousMessageFromInjectedBundle):

  • UIProcess/WebPageInjectedBundleClient.h: Added.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setInjectedBundleClient):
(WebKit::WebPageProxy::handleMessage):
(WebKit::WebPageProxy::handleSynchronousMessage):

  • UIProcess/WebPageProxy.h:

(WebKit::WebPageProxy::injectedBundleClient):

  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::handleMessage):

  • WebKit2.xcodeproj/project.pbxproj:
  • CMakeLists.txt:
  • WebProcess/InjectedBundle/API/c/WKBundlePage.cpp:

(WKBundlePagePostMessage):
(WKBundlePagePostSynchronousMessage):

  • WebProcess/InjectedBundle/API/c/WKBundlePage.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::postMessage):
(WebKit::WebPage::postSynchronousMessage):

  • WebProcess/WebPage/WebPage.h:

Tools:

Updating WebKitTestRunner to use the new page level messaging.
The author of this patch is Tim Horton, I just finished it.

  • WebKitTestRunner/InjectedBundle/EventSendingController.cpp:

(WTR::EventSendingController::mouseDown):
(WTR::EventSendingController::mouseUp):
(WTR::EventSendingController::mouseMoveTo):
(WTR::EventSendingController::leapForward):
(WTR::EventSendingController::scheduleAsynchronousClick):
(WTR::EventSendingController::keyDown):
(WTR::EventSendingController::scheduleAsynchronousKeyDown):
(WTR::EventSendingController::mouseScrollBy):
(WTR::EventSendingController::mouseScrollByWithWheelAndMomentumPhases):
(WTR::EventSendingController::continuousMouseScrollBy):
(WTR::EventSendingController::addTouchPoint):
(WTR::EventSendingController::updateTouchPoint):
(WTR::EventSendingController::setTouchModifier):
(WTR::EventSendingController::setTouchPointRadius):
(WTR::EventSendingController::touchStart):
(WTR::EventSendingController::touchMove):
(WTR::EventSendingController::touchEnd):
(WTR::EventSendingController::touchCancel):
(WTR::EventSendingController::clearTouchPoints):
(WTR::EventSendingController::releaseTouchPoint):
(WTR::EventSendingController::cancelTouchPoint):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessage):
(WTR::InjectedBundle::didReceiveMessageToPage):
(WTR::InjectedBundle::done):
(WTR::InjectedBundle::outputText):
(WTR::InjectedBundle::postNewBeforeUnloadReturnValue):
(WTR::InjectedBundle::postAddChromeInputField):
(WTR::InjectedBundle::postRemoveChromeInputField):
(WTR::InjectedBundle::postFocusWebView):
(WTR::InjectedBundle::postSetBackingScaleFactor):
(WTR::InjectedBundle::postSetWindowIsKey):
(WTR::InjectedBundle::postSimulateWebNotificationClick):
(WTR::InjectedBundle::postSetAddsVisitedLinks):
(WTR::InjectedBundle::setGeolocationPermission):
(WTR::InjectedBundle::setMockGeolocationPosition):
(WTR::InjectedBundle::setMockGeolocationPositionUnavailableError):
(WTR::InjectedBundle::setUserMediaPermission):
(WTR::InjectedBundle::setCustomPolicyDelegate):
(WTR::InjectedBundle::setHidden):
(WTR::InjectedBundle::setCacheModel):
(WTR::InjectedBundle::shouldProcessWorkQueue):
(WTR::InjectedBundle::processWorkQueue):
(WTR::InjectedBundle::queueBackNavigation):
(WTR::InjectedBundle::queueForwardNavigation):
(WTR::InjectedBundle::queueLoad):
(WTR::InjectedBundle::queueLoadHTMLString):
(WTR::InjectedBundle::queueReload):
(WTR::InjectedBundle::queueLoadingScript):
(WTR::InjectedBundle::queueNonLoadingScript):

  • WebKitTestRunner/InjectedBundle/TestRunner.cpp:

(WTR::TestRunner::setHandlesAuthenticationChallenges):
(WTR::TestRunner::setAuthenticationUsername):
(WTR::TestRunner::setAuthenticationPassword):
(WTR::TestRunner::secureEventInputIsEnabled):
(WTR::TestRunner::setBlockAllPlugins):

  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::createWebViewWithOptions):
(WTR::TestController::resetStateToConsistentValues):
(WTR::TestController::didReceivePageMessageFromInjectedBundle):
(WTR::TestController::didReceiveSynchronousPageMessageFromInjectedBundle):

  • WebKitTestRunner/TestController.h:
  • WebKitTestRunner/TestInvocation.cpp:

(WTR::TestInvocation::invoke):
(WTR::TestInvocation::didReceiveMessageFromInjectedBundle):

3:50 PM Changeset in webkit [182259] by ap@apple.com
  • 10 edits in trunk/Source/WebKit2

[iOS] WebContent should have access to the entirety of its caches directory
https://bugs.webkit.org/show_bug.cgi?id=143312
rdar://problem/20314916

Reviewed by Oliver Hunt.

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • Shared/Network/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • Shared/Network/NetworkProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::networkingCachesDirectory):
(WebKit::WebProcessPool::webContentCachesDirectory):
(WebKit::WebProcessPool::openGLCacheDirectory): Deleted.
(WebKit::WebProcessPool::networkingHSTSDatabasePath): Deleted.
(WebKit::WebProcessPool::webContentHSTSDatabasePath): Deleted.

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):
(WebKit::WebProcessPool::createNewWebProcess):

  • UIProcess/WebProcessPool.h:
  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

3:48 PM Changeset in webkit [182258] by dino@apple.com
  • 2 edits in trunk/LayoutTests

fast/events/mouse-cursor-image-set.html is timing out on Apple platforms
https://bugs.webkit.org/show_bug.cgi?id=143323

The change r182247 has caused this test to timeout. Rather than rollout
the commit I'm skipping the test and will contact Yoav.

  • platform/mac/TestExpectations:
3:37 PM Changeset in webkit [182257] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.25/Source/WebCore

Merged r182255. rdar://problem/19130597

3:13 PM Changeset in webkit [182256] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

REGRESSION (r182121): SVG animation macros cause warnings in MSVC
https://bugs.webkit.org/show_bug.cgi?id=143313

Reviewed by Darin Adler.

  • svg/SVGExternalResourcesRequired.h: Undo the change that caused a type mismatch.
2:26 PM Changeset in webkit [182255] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Another attempt to fixi the iOS build after r182240.

Reviewed by Dean Jackson.

  • platform/graphics/MediaPlaybackTarget.h:

(WebCore::MediaPlaybackTarget::hasActiveRoute):

2:01 PM Changeset in webkit [182254] by Antti Koivisto
  • 2 edits in trunk/Source/WTF

015-04-01 Antti Koivisto <Antti Koivisto>

Value assignment operator of Optional should be stricter
https://bugs.webkit.org/show_bug.cgi?id=143303

Reviewed by Andreas Kling.

struct Foo { mutable Optional<std::chrono::seconds> s; };
Foo foo, foo2;
foo = foo2;

doesn't build because it tries to use wrong operator=.

  • wtf/Optional.h:

Add enable_if test similar to std::experimental::optional.

12:58 PM Changeset in webkit [182253] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.25/Source/WebCore

Merged r182250. rdar://problem/19130597

12:55 PM Changeset in webkit [182252] by dino@apple.com
  • 2 edits in trunk/LayoutTests

accessibility/textarea-selected-text-range.html failing on Windows WK1 Release
https://bugs.webkit.org/show_bug.cgi?id=143315

Removing clashing entry but changing the old entry to Skip.

  • platform/win/TestExpectations:
12:51 PM Changeset in webkit [182251] by bshafiei@apple.com
  • 27 edits in tags/Safari-601.1.25/Source/WebCore

Merged r182240. rdar://problem/19130597

12:49 PM Changeset in webkit [182250] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

Fix the iOS build after r182240.

  • platform/graphics/MediaPlaybackTarget.h:
12:33 PM Changeset in webkit [182249] by dino@apple.com
  • 2 edits in trunk/LayoutTests

accessibility/textarea-selected-text-range.html failing on Windows WK1 Release
https://bugs.webkit.org/show_bug.cgi?id=143315

Skipping this on Windows.

  • platform/win/TestExpectations:
12:20 PM Changeset in webkit [182248] by commit-queue@webkit.org
  • 6 edits
    1 delete in trunk/Tools

Unreviewed, rolling out r182174 and r182177.
https://bugs.webkit.org/show_bug.cgi?id=143314

Try to correct EWS failures (Requested by bfulgham on
#webkit).

Reverted changesets:

"Python SCM should be able to retrieve untracked files"
https://bugs.webkit.org/show_bug.cgi?id=143135
http://trac.webkit.org/changeset/182174

"[buildbot] clean-build script should remove untracked files
and revert local changes too"
https://bugs.webkit.org/show_bug.cgi?id=142400
http://trac.webkit.org/changeset/182177

12:02 PM Changeset in webkit [182247] by yoav@yoav.ws
  • 24 edits
    4 adds in trunk

Async loading of image resources
https://bugs.webkit.org/show_bug.cgi?id=134488

Reviewed by Dean Jackson.

Source/WebCore:

This patch changes image loading to be asynchronous (per spec), in order
for it to be agnostic to property setting order when it comes to src, srcset and crossorigin,
as well as to enable future hooking of the <picture>-based selection logic on top of it.

Tests: fast/dom/HTMLImageElement/image-load-post-onload.html
fast/dom/HTMLImageElement/sizes/image-sizes-js-change-reverse.html

  • WebCore.xcodeproj/project.pbxproj: Change MicroTask.h to be private.
  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent): Add a microtask checkpoint after event handling.

  • bindings/js/ScheduledAction.cpp:

(WebCore::ScheduledAction::execute): Add a microtask checkpoint after running of a scheduled action.

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::didMoveToNewDocument): Add the old document to call of elementDidMoveToNewDocument.

  • html/HTMLImageLoader.cpp:

(WebCore::HTMLImageLoader::notifyFinished): Avoid a crash when notifyFinished is called and there's no CachedImage.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::didMoveToNewDocument): Add the old document to call of elementDidMoveToNewDocument.

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didMoveToNewDocument): Add the old document to call of elementDidMoveToNewDocument.

  • html/HTMLVideoElement.cpp:

(WebCore::HTMLVideoElement::didMoveToNewDocument): Add the old document to call of elementDidMoveToNewDocument.

  • html/parser/HTMLDocumentParser.cpp:

(WebCore::HTMLDocumentParser::attemptToRunDeferredScriptsAndEnd): Add a microtask checkpoint.

  • loader/ImageLoader.cpp: Move image resource loading to be asynchronous.

(WebCore::ImageLoader::ImageLoaderTask::create):
(WebCore::ImageLoader::ImageLoaderTask::run): Run the image loading microtask and called doUpdateFromElement.
(WebCore::ImageLoader::ImageLoaderTask::ImageLoaderTask):
(WebCore::ImageLoader::ImageLoader):
(WebCore::ImageLoader::doUpdateFromElement): This is split from the previous updateFromElement, and performs the actual resource loading.
(WebCore::ImageLoader::updateFromElement): Now only prepares the stage for the actual image resource loading.
(WebCore::ImageLoader::shouldLoadImmediately): If this returns true, the image resource is loaded immediately, without queueing a microtask.
(WebCore::ImageLoader::notifyFinished): Add asserts.
(WebCore::ImageLoader::elementDidMoveToNewDocument): Handle document load event counters decrementing and incrementing.

  • loader/ImageLoader.h:

(WebCore::ImageLoader::imageComplete): Make sure that the image is complete only if there aren't any pending tasks.
(WebCore::ImageLoader::hasPendingActivity): Make sure that pending activity takes pending tasks into account.
(WebCore::ImageLoader::hasPendingTask): Getter to know if an ImageLoader has a pending task. (Used by the image loading microtask)
(WebCore::ImageLoader::createWeakPtr): Create a weakPtr to be used by the microtask, so it can called back the loader if it's still alive.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::canRequest): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag and act upon it.
(WebCore::CachedResourceLoader::requestImage): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag.
(WebCore::CachedResourceLoader::requestResource): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag.

  • loader/cache/CachedResourceLoader.h:

(WebCore::CachedResourceLoader::canRequest): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag and act upon it.
(WebCore::CachedResourceLoader::requestImage): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag.
(WebCore::CachedResourceLoader::requestResource): Add a 'shouldBypassMainWorldContentSecurityPolicy' flag.

  • svg/SVGImageElement.cpp:

(WebCore::SVGImageElement::didMoveToNewDocument): Add the old document to call of elementDidMoveToNewDocument.

  • xml/parser/XMLDocumentParser.cpp:

(WebCore::XMLDocumentParser::end): Add a microtask checkpoint after XML finishes parsing.

LayoutTests:

  • fast/dom/HTMLImageElement/image-load-post-onload-expected.txt: Added.
  • fast/dom/HTMLImageElement/image-load-post-onload.html: Added.
  • fast/dom/HTMLImageElement/image-loading-gc.html: Cosmetic changes.
  • fast/dom/HTMLImageElement/sizes/image-sizes-js-change-reverse-expected.txt: Added.
  • fast/dom/HTMLImageElement/sizes/image-sizes-js-change-reverse.html: Added.
  • fast/dom/image-object.html: Cosmetic changes.
  • http/tests/misc/image-blocked-src-change-expected.txt: Removed line numbers from console.
  • http/tests/misc/image-blocked-src-no-change-expected.txt: Removed line numbers from console.
  • http/tests/security/contentSecurityPolicy/report-blocked-file-uri-expected.txt: Removed line numbers from console.
  • http/tests/security/frame-loading-via-document-write-expected.txt: Removed line numbers from console.
  • http/tests/security/local-image-from-remote-expected.txt: Removed line numbers from console.
12:00 PM Changeset in webkit [182246] by Simon Fraser
  • 2 edits in trunk/Source/WebKit/win

Fix Windows build.

  • WebCoreSupport/WebChromeClient.h:

(WebChromeClient::numWheelEventHandlersChanged): Deleted.

11:57 AM Changeset in webkit [182245] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

Smart magnification gesture sometimes shoots to the middle of the page
https://bugs.webkit.org/show_bug.cgi?id=143296
<rdar://problem/18209280>

Reviewed by Dean Jackson.

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::didCollectGeometryForSmartMagnificationGesture):
Constrain the target rect to the viewport, and if it had overflowed the viewport,
scroll halfway towards the gesture origin.

11:42 AM Changeset in webkit [182244] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix when using content extensions performance reporting.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Time how long it takes to build the DFAs.

11:36 AM Changeset in webkit [182243] by achristensen@apple.com
  • 35 edits
    1 add in trunk

Progress towards CMake on Windows and Mac.
https://bugs.webkit.org/show_bug.cgi?id=143293

Reviewed by Filip Pizlo.

.:

  • CMakeLists.txt:

Set DERIVED_SOURCES_WTF_DIR for Windows.

  • Source/CMakeLists.txt:

Don't compile bmalloc on Windows.

  • Source/cmake/OptionsCommon.cmake:

Use the absolute path of the C preprocessor.

  • Source/cmake/OptionsWinCairo.cmake:

Added needed definitions.

  • Source/cmake/OptionsWindows.cmake:

Set some default values and removed support for old Visual Studio versions before /MP.

  • Source/cmake/WebKitFS.cmake:

Make WTF DerivedSources directory.

  • Source/cmake/WebKitMacros.cmake:

Added ADD_PRECOMPILED_HEADER macro based on
http://stackoverflow.com/questions/148570/using-pre-compiled-headers-with-cmake

Source/bmalloc:

  • bmalloc/BAssert.h:

Removed ellipses from macros to appease Visual Studio.

Source/JavaScriptCore:

  • CMakeLists.txt:

Enabled using assembly on Windows.
Replaced unix commands with CMake commands.

  • PlatformMac.cmake:

Tell open source builders where to find unicode headers.

Source/ThirdParty/ANGLE:

  • include/GLES2/gl2.h:

Temporarily disabled WebGL on Windows CMake builds.

Source/WebCore:

  • PlatformMac.cmake:

Tell open source builders where to find unicode headers.

  • PlatformWin.cmake:

Include PlatformWinCairo.cmake.

  • PlatformWinCairo.cmake:

Added from bug 115944 by Patrick Gansterer.

  • bindings/js/JSDOMStringListCustom.cpp:
  • bindings/js/JSDOMWrapper.cpp:
  • bindings/js/JSMessageChannelCustom.cpp:
  • bindings/js/JSPopStateEventCustom.cpp:
  • bindings/js/JSReadableStreamCustom.cpp:
  • bindings/js/ReadableStreamJSSource.cpp:
  • bindings/js/ScriptController.cpp:
  • css/CSSComputedStyleDeclaration.cpp:
  • dom/Attr.cpp:
  • dom/CollectionIndexCache.cpp:
  • platform/graphics/ANGLEWebKitBridge.h:

Fixed include quirks.

Source/WebKit:

  • PlatformMac.cmake:

Fixed some include directories.

Source/WTF:

  • wtf/CMakeLists.txt:

Don't use bmalloc on Windows yet.

  • wtf/FeatureDefines.h:

Temporarily disabled WebGL on Windows CMake builds.

  • wtf/PlatformMac.cmake:

Tell open source builders where to find unicode headers.

11:30 AM Changeset in webkit [182242] by Simon Fraser
  • 29 edits in trunk

Remove scrolling tree dependency on wheel event handler counts, and use fast scrolling even when there are wheel handlers
https://bugs.webkit.org/show_bug.cgi?id=143288
rdar://problem/16049624

Reviewed by Beth Dakin.

Remove the wheel event counting that Document does, and passes into the scrolling tree.
The ScrollingTree now just uses the non-fast scrollable region to determine when to
fast scroll on pages with wheel event handlers.

If a handler includes position:fixed renderers, we just cover the whole document
with the slow-scrolling region currently. This could be improved.

  • dom/Document.cpp:

(WebCore::Document::Document):
(WebCore::Document::didBecomeCurrentDocumentInFrame):
(WebCore::Document::wheelEventHandlersChanged):
(WebCore::Document::didAddWheelEventHandler):
(WebCore::Document::didRemoveWheelEventHandler):
(WebCore::Document::wheelEventHandlerCount):
(WebCore::Document::touchEventHandlerCount):
(WebCore::Document::absoluteRegionForEventTargets): Changed to return a pair<Region, bool>
where the bool indicates whether any handler includes position:fixed content.
(WebCore::pageWheelEventHandlerCountChanged): Deleted.
(WebCore::wheelEventHandlerCountChanged): Deleted.

  • dom/Document.h:

(WebCore::Document::wheelEventHandlerCount): Deleted.

  • loader/EmptyClients.h:
  • page/ChromeClient.h:
  • page/DebugPageOverlays.cpp:

(WebCore::MouseWheelRegionOverlay::updateRegion):

  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
(WebCore::AsyncScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView): Deleted.

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):
(WebCore::ScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::ScrollingCoordinator::computeCurrentWheelEventHandlerCount): Deleted.
(WebCore::ScrollingCoordinator::frameViewWheelEventHandlerCountChanged): Deleted.

  • page/scrolling/ScrollingCoordinator.h:

(WebCore::ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView): Deleted.

  • page/scrolling/ScrollingStateFrameScrollingNode.cpp:

(WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
(WebCore::ScrollingStateFrameScrollingNode::setWheelEventHandlerCount): Deleted.

  • page/scrolling/ScrollingStateFrameScrollingNode.h:
  • page/scrolling/ScrollingTree.cpp:

(WebCore::ScrollingTree::ScrollingTree):
(WebCore::ScrollingTree::shouldHandleWheelEventSynchronously):
(WebCore::ScrollingTree::commitNewTreeState):

  • page/scrolling/ScrollingTree.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::updateTiledScrollingIndicator):

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):
(WebCore::logWheelEventHandlerCountChanged): Deleted.

  • testing/Internals.cpp:

(WebCore::Internals::touchEventHandlerCount):

Source/WebKit/mac:
Remove scrolling tree dependency on wheel event handler counts, and use fast scrolling even when there are wheel handlers
https://bugs.webkit.org/show_bug.cgi?id=143288

Reviewed by Beth Dakin.

Remove the wheel event counting that Document does, and passes into the scrolling tree.
The ScrollingTree now just uses the non-fast scrollable region to determine when to
fast scroll on pages with wheel event handlers.

  • WebCoreSupport/WebChromeClient.h:

Source/WebKit2:
Remove scrolling tree dependency on wheel event handler counts, and use fast scrolling even when there are wheel handlers
https://bugs.webkit.org/show_bug.cgi?id=143288
rdar://problem/16049624

Reviewed by Beth Dakin.

Remove the wheel event counting that Document does, and passes into the scrolling tree.
The ScrollingTree now just uses the non-fast scrollable region to determine when to
fast scroll on pages with wheel event handlers.

If a handler includes position:fixed renderers, we just cover the whole document
with the slow-scrolling region currently. This could be improved.

  • Shared/Scrolling/RemoteScrollingCoordinatorTransaction.cpp:

(ArgumentCoder<ScrollingStateFrameScrollingNode>::encode):
(ArgumentCoder<ScrollingStateFrameScrollingNode>::decode):
(WebKit::RemoteScrollingTreeTextStream::dump):

  • WebProcess/WebCoreSupport/WebChromeClient.cpp:

(WebKit::WebChromeClient::wheelEventHandlersChanged):
(WebKit::WebChromeClient::numWheelEventHandlersChanged): Deleted.

  • WebProcess/WebCoreSupport/WebChromeClient.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):
(WebKit::WebPage::wheelEventHandlersChanged):
(WebKit::WebPage::recomputeShortCircuitHorizontalWheelEventsState):
(WebKit::WebPage::numWheelEventHandlersChanged): Deleted.

  • WebProcess/WebPage/WebPage.h:

LayoutTests:
Make it possible to compute a region for elements on the page that have wheel event handlers
https://bugs.webkit.org/show_bug.cgi?id=142807

Reviewed by Beth Dakin.

Update results, since any handler with position:fixed now causes the region to cover the document.

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed-expected.txt:
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed-expected.txt:
11:10 AM Changeset in webkit [182241] by hyatt@apple.com
  • 9 edits
    4 adds in trunk

[New Block-Inside-Inline Model] Floats need to be allowed to intrude into anonymous inline-blocks.
https://bugs.webkit.org/show_bug.cgi?id=143307

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/block/inside-inlines/basic-float-intrusion.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::placeBoxesInBlockDirection):
Make sure to exclude the margins of an anonymous inline-block when considering the height of the line.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::lineHeight):
(WebCore::RenderBlock::baselinePosition):
Anonymous inline-block lines ignore line-height and just return the height of the block. For baseline position, the baseline
is considered to be at the bottom border edge of the anonymous inline-block.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::rebuildFloatingObjectSetFromIntrudingFloats):
(WebCore::RenderBlockFlow::addIntrudingFloats):

  • rendering/RenderBlockFlow.h:

Patch float intrusion to handle the case of anonymous inline-blocks. Instead of collecting the floats from our parent(), we
collect them from the containingBlock() in the anonymous inline-block case. Patch addIntrudingFloats to pass in the container
that acts as the "parent", since it is not the parent() in the anonymous inline-block case.

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::updateLogicalInlinePositions):
Make sure to use the full available width for content always in the anonymous inline-block case, since we don't avoid the
floats, but instead let them intrude into the inline-block.

(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForLine):
Patch callers of updateLogicalInlinePositions to pass in the root line box that we're checking for.

(WebCore::RenderBlockFlow::layoutLineBoxes):
Defer the layout of anonymous inline-blocks, since they need to only lay out once the vertical position to lay them out
at is known.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::createsNewFormattingContext):
(WebCore::RenderBox::avoidsFloats):
Anonymous inline-blocks do not establish a new block formatting context, nor do they avoid floats.

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::handleReplaced):
Add code to do a just-in-time layout of the anonymous inline-block at the time it is being examined (after the break before
it was handled).

LayoutTests:

  • fast/block/inside-inlines/basic-float-intrusion-expected.html: Added.
  • fast/block/inside-inlines/basic-float-intrusion.html: Added.
  • fast/block/inside-inlines/new-model/basic-float-intrusion-expected.html: Added.
  • fast/block/inside-inlines/new-model/basic-float-intrusion.html: Added.
11:07 AM Changeset in webkit [182240] by eric.carlson@apple.com
  • 27 edits in trunk/Source/WebCore

[Mac] Do not include route button if element does not support target playback
https://bugs.webkit.org/show_bug.cgi?id=143251

Reviewed by Jer Noble.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.currentPlaybackTargetIsWireless): Return false if target playback is disabled.
(Controller.prototype.updateWirelessTargetAvailable): Do not show the picker if target

playback is disabled.

(Controller.prototype.handleWirelessPlaybackChange): Call updateWirelessTargetAvailable.

  • dom/Document.cpp:

(WebCore::Document::showPlaybackTargetPicker): Update for Page::showPlaybackTargetPicker change.
(WebCore::Document::didChoosePlaybackTarget): Notify clients in vector-order, lower level code

now tracks which one requested the picker.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::loadResource): Don't call applyMediaPlayerRestrictions, it is done

in mediaPlayerEngineFailedToLoad.

(WebCore::HTMLMediaElement::setReadyState): Enqueue a target availability event if there are

listeners readyState reaches HAVE_METADATA so controls are setup correctly.

(WebCore::HTMLMediaElement::mediaPlayerEngineFailedToLoad): Call applyMediaPlayerRestrictions.
(WebCore::HTMLMediaElement::clearMediaPlayer): Enqueue a target availability event in so controls

have a chance to hide the picker.

(WebCore::HTMLMediaElement::webkitCurrentPlaybackTargetIsSupported): New, passthrough to the

media engine.

(WebCore::HTMLMediaElement::canPlayToWirelessPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::startPlayingToPlaybackTarget): Ditto.
(WebCore::HTMLMediaElement::stopPlayingToPlaybackTarget): Ditto.

  • html/HTMLMediaElement.h:
  • html/HTMLMediaElement.idl:
  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::HTMLMediaSession): Initialize m_playbackTarget.
(WebCore::HTMLMediaSession::currentPlaybackTargetIsSupported): New.
(WebCore::HTMLMediaSession::showPlaybackTargetPicker): Pull logic from showingPlaybackTargetPickerPermitted

inline. Don't refuse to show a picker if the element doesn't support target playback, it is up
to script to decide which elements can display a picker.

(WebCore::HTMLMediaSession::wirelessVideoPlaybackDisabled): Return true if there is no player.
(WebCore::HTMLMediaSession::didChoosePlaybackTarget): Call startPlayingToPlaybackTarget or

stopPlayingToPlaybackTarget because setWirelessPlaybackTarget doesn't apply the target.

(WebCore::HTMLMediaSession::externalOutputDeviceAvailableDidChange): Add logging.
(WebCore::HTMLMediaSession::showingPlaybackTargetPickerPermitted): Deleted.

  • html/HTMLMediaSession.h:
  • page/Page.cpp:

(WebCore::Page::Page): Initialize m_playbackTarget.
(WebCore::Page::showPlaybackTargetPicker): Don't set m_documentRequestingPlaybackTargetPicker.
(WebCore::Page::didChoosePlaybackTarget): Notify Pages in vector-order, lower level code

now tracks which one requested the picker.

(WebCore::Page::configurePlaybackTargetMonitoring): Don't track m_requiresPlaybackTargetMonitoring, it

is too easy for it to get out of sync with the UI process state.

  • page/Page.h:
  • platform/audio/MediaSession.cpp:

(WebCore::MediaSession::canPlayToWirelessPlaybackTarget): New, client passthrough.
(WebCore::MediaSession::startPlayingToPlaybackTarget): Ditto.
(WebCore::MediaSession::stopPlayingToPlaybackTarget): Ditto.

  • platform/audio/MediaSession.h:

(WebCore::MediaSessionClient::canPlayToWirelessPlaybackTarget):
(WebCore::MediaSessionClient::startPlayingToPlaybackTarget):
(WebCore::MediaSessionClient::stopPlayingToPlaybackTarget):

  • platform/audio/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::sessionWillBeginPlayback): Call startPlayingToPlaybackTarget &

stopPlayingToPlaybackTarget as necessary.

  • platform/audio/MediaSessionManager.h:
  • platform/graphics/MediaPlaybackTarget.h:

(WebCore::MediaPlaybackTarget::hasActiveRoute): New.

  • platform/graphics/MediaPlaybackTargetPickerClient.h:
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::isCurrentPlaybackTargetSupported): New, engine passthrough.
(WebCore::MediaPlayer::canPlayToWirelessPlaybackTarget): Ditto.
(WebCore::MediaPlayer::startPlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayer::stopPlayingToPlaybackTarget): Ditto.

  • platform/graphics/MediaPlayer.h:
  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::isCurrentPlaybackTargetSupported):
(WebCore::MediaPlayerPrivateInterface::wirelessVideoPlaybackDisabled):
(WebCore::MediaPlayerPrivateInterface::canPlayToWirelessPlaybackTarget):
(WebCore::MediaPlayerPrivateInterface::startPlayingToPlaybackTarget):
(WebCore::MediaPlayerPrivateInterface::stopPlayingToPlaybackTarget):

  • platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:

(WebCore::MediaPlaybackTarget::hasActiveRoute): New.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:

(WebCore::MediaPlayerPrivateAVFoundationObjC::canPlayToWirelessPlaybackTarget):

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Use playerKVOProperties. Drive-by

code cleanup.

(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): Use playerKVOProperties.
(WebCore::MediaPlayerPrivateAVFoundationObjC::wirelessPlaybackTargetName): Implement for Mac.
(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessVideoPlaybackDisabled): Delay callbacks

while setting AVPlayer property.

(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget): Add logging. Don't set

the AVPlayer outputContext immediately.

(WebCore::MediaPlayerPrivateAVFoundationObjC::startPlayingToPlaybackTarget): New.
(WebCore::MediaPlayerPrivateAVFoundationObjC::stopPlayingToPlaybackTarget): New.
(WebCore::playerKVOProperties): New.
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): Notify when

allowsExternalPlayback changes.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::isCurrentPlaybackTargetSupported): New.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::setWirelessPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::togglePlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::startPlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::stopPlayingToPlaybackTarget): Ditto.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.h:
  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::isCurrentPlaybackTargetSupported): Ditto.
(WebCore::MediaPlayerPrivateQTKit::setWirelessPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateQTKit::togglePlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateQTKit::startPlayingToPlaybackTarget): Ditto.
(WebCore::MediaPlayerPrivateQTKit::stopPlayingToPlaybackTarget): Ditto.

10:48 AM Changeset in webkit [182239] by achristensen@apple.com
  • 6 edits in trunk

[Content Extensions] Properly handle regexes that match everything.
https://bugs.webkit.org/show_bug.cgi?id=143281

Reviewed by Benjamin Poulain.

Source/WebCore:

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Make sure we always have at least one NFA for rule lists with triggers that all match everything.

  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::interpretAppendAction):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpretTestFlagsAndAppendAction):
Add helper functions to reduce duplicate code.
(WebCore::ContentExtensions::DFABytecodeInterpreter::actionsFromDFARoot):
Get all actions without flags from the DFA root.
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):
Remove branches when interpreting.

  • contentextensions/DFABytecodeInterpreter.h:

Add helper functions to reduce duplicate code.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::testRequest):
(TestWebKitAPI::makeBackend):
(TestWebKitAPI::TEST_F):
Removed duplicate code and added test.

10:43 AM Changeset in webkit [182238] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Addressing post-review comments.
https://bugs.webkit.org/show_bug.cgi?id=143292

Unreviewed.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::leadingExpansionOpportunity):
(WebCore::FontCascade::trailingExpansionOpportunity):

10:32 AM Changeset in webkit [182237] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

[WinCairo] Link errors, unresolved texture mapper methods.
https://bugs.webkit.org/show_bug.cgi?id=143308

Patch by Per Arne Vollan <peavo@outlook.com> on 2015-04-01
Reviewed by Alex Christensen.

New texture mapper files should be included in the project.

  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
9:58 AM Changeset in webkit [182236] by mmaxfield@apple.com
  • 13 edits in trunk/Source/WebCore

Support forcing expansion opportunities at the beginning and ending of a run
https://bugs.webkit.org/show_bug.cgi?id=143292

Reviewed by David Hyatt.

Migrate ExpansionBehavior to an enum comprised of two values: one for leading behavior
and one for trailing behavior. Each of these two values can take on a value of
"force," "forbid," and neither. All calls that interact with justification are
migrated to use this new structure.

Note that in this terminology, "leading" and "trailing" are with respect to the order
that elements get laid out in a line. Therefore, leading is always on the left, since
lines get laid out that way regardless of their bidi attributes.

This is getting ready for https://bugs.webkit.org/show_bug.cgi?id=142608

No new tests because there is no behavior change.

  • platform/graphics/FontCascade.cpp:

(WebCore::FontCascade::expansionOpportunityCountInternal): Migrate to these new
values.
(WebCore::FontCascade::expansionOpportunityCount): Ditto.
(WebCore::FontCascade::leadingExpansionOpportunity): Returns whether one is present
or not.
(WebCore::FontCascade::trailingExpansionOpportunity): Ditto.

  • platform/graphics/FontCascade.h:
  • platform/graphics/GlyphBuffer.h: New leading expansion field.

(WebCore::GlyphBuffer::setLeadingExpansion):
(WebCore::GlyphBuffer::leadingExpansion):

  • platform/graphics/TextRun.h: m_expansionBehavior needs more bits.

(WebCore::TextRun::expansionBehavior):
(WebCore::TextRun::allowsLeadingExpansion): Deleted.
(WebCore::TextRun::allowsTrailingExpansion): Deleted.

  • platform/graphics/WidthIterator.cpp: Update to support new type.

(WebCore::WidthIterator::WidthIterator):
(WebCore::expansionLocation): Where should we insert expansions?
(WebCore::WidthIterator::advanceInternal): Use expansionLocation()

  • platform/graphics/cocoa/FontCascadeCocoa.mm:

(WebCore::FontCascade::adjustSelectionRectForComplexText):
(WebCore::FontCascade::getGlyphsAndAdvancesForComplexText):

  • platform/graphics/mac/ComplexTextController.cpp: Same as WidthIterator

(WebCore::ComplexTextController::ComplexTextController):
(WebCore::ComplexTextController::advance):
(WebCore::expansionLocation):
(WebCore::ComplexTextController::adjustGlyphsAndAdvances):

  • platform/graphics/mac/ComplexTextController.h:

(WebCore::ComplexTextController::leadingExpansion):

  • platform/text/TextFlags.h: Add new enum values
  • rendering/InlineBox.h: Update to include new values.

(WebCore::InlineBox::InlineBoxBitfields::InlineBoxBitfields):
(WebCore::InlineBox::canHaveTrailingExpansion):
(WebCore::InlineBox::setCanHaveTrailingExpansion):
(WebCore::InlineBox::setForceTrailingExpansion):
(WebCore::InlineBox::forceTrailingExpansion):
(WebCore::InlineBox::setForceLeadingExpansion):
(WebCore::InlineBox::forceLeadingExpansion):

  • rendering/InlineTextBox.h:
  • rendering/RenderBlockLineLayout.cpp: Update to use new FontCascade signatures.

(WebCore::expansionBehaviorForInlineTextBox):
(WebCore::applyExpansionBehavior):
(WebCore::RenderBlockFlow::computeInlineDirectionPositionsForSegment):

8:56 AM Changeset in webkit [182235] by Alan Bujtas
  • 9 edits in trunk/Source/WebCore

Lots of time spent querying table cell borders, when there are none.
https://bugs.webkit.org/show_bug.cgi?id=143277

Reviewed by Simon Fraser.

This patch speeds up collapsed border queries by using existing collapsed border
cache to calculate repaint rects and by introducing a fast path for zero width collapsed borders.

It reduces the number of calls to recompute collapsed borders from 36 000 to 1 600, while loading a page with a table of 400 rows (1 cell per row).
When scrolling the same page all the way down to the bottom, the number of calls to recompute collapsed borders falls from 290 000 to 0.

Covered by existing tests.

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::styleDidChange): This moves invalidation time from RenderTable::layout() to styleDidChange().
(WebCore::RenderTable::invalidateCollapsedBorders):
(WebCore::RenderTable::recalcCollapsedBorders):

  • rendering/RenderTable.h:

(WebCore::RenderTable::collapsedBordersAreValid):
(WebCore::RenderTable::invalidateCollapsedBorders): Deleted.

  • rendering/RenderTableCell.cpp:

(WebCore::RenderTableCell::RenderTableCell):
(WebCore::RenderTableCell::willBeRemovedFromTree): Invalidate caches so that when repaint rect is calculated, we don't end up using stale values.
(WebCore::RenderTableCell::styleDidChange): Same as willBeRemovedFromTree.
(WebCore::RenderTableCell::collapsedStartBorder): Check if collapsed border is zero -also query cache.
(WebCore::RenderTableCell::collapsedEndBorder):
(WebCore::RenderTableCell::collapsedBeforeBorder):
(WebCore::RenderTableCell::collapsedAfterBorder):
(WebCore::RenderTableCell::cachedCollapsedLeftBorder):
(WebCore::RenderTableCell::cachedCollapsedRightBorder):
(WebCore::RenderTableCell::cachedCollapsedTopBorder):
(WebCore::RenderTableCell::cachedCollapsedBottomBorder):
(WebCore::RenderTableCell::paintCollapsedBorders):
(WebCore::RenderTableCell::cellAtLeft): Deleted.
(WebCore::RenderTableCell::cellAtRight): Deleted.
(WebCore::RenderTableCell::cellAtTop): Deleted.
(WebCore::RenderTableCell::cellAtBottom): Deleted.

  • rendering/RenderTableCell.h:

(WebCore::RenderTableCell::invalidateHasEmptyCollapsedBorders):

  • rendering/RenderTableCol.cpp:

(WebCore::RenderTableCol::styleDidChange):

  • rendering/RenderTableRow.cpp:

(WebCore::RenderTableRow::styleDidChange):
(WebCore::RenderTableRow::addChild):

  • rendering/RenderTableSection.cpp:

(WebCore::RenderTableSection::styleDidChange):
(WebCore::RenderTableSection::clearCachedCollapsedBorders): This is just an extra safety to invalidate collapsed border cache. This is always
called together with RenderTable::invalidateCollapsedBorders() -and that should prevent the RenderCells to use the cache.
(WebCore::RenderTableSection::removeCachedCollapsedBorders):
(WebCore::RenderTableSection::setCachedCollapsedBorder):
(WebCore::RenderTableSection::cachedCollapsedBorder):

  • rendering/RenderTableSection.h:
8:41 AM Changeset in webkit [182234] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.25

New tag.

8:39 AM Changeset in webkit [182233] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

7:30 AM Changeset in webkit [182232] by clopez@igalia.com
  • 2 edits in trunk/Source/WebCore

[CMake][GTK] Use the right variable to include the Wayland headers.
https://bugs.webkit.org/show_bug.cgi?id=143304

Reviewed by Carlos Garcia Campos.

No new tests, no behavior changes.

  • PlatformGTK.cmake: Use the right variable WAYLAND_INCLUDE_DIRS.
6:39 AM Changeset in webkit [182231] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening. Remove warning message in layoutTest.
https://bugs.webkit.org/show_bug.cgi?id=143268

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-04-01

  • platform/efl/TestExpectations:
4:15 AM Changeset in webkit [182230] by yoon@igalia.com
  • 2 edits in trunk

Use colored diagnostics when building with cmake + ninja + clang
https://bugs.webkit.org/show_bug.cgi?id=143297

Reviewed by Žan Doberšek.

Because that ninja sets subprocess stdout/stderr to a pipe, clang
disables colored output.
This patch forces clang to use colored diagnostics when we are using
the ninja.

  • Source/cmake/OptionsCommon.cmake:
3:46 AM Changeset in webkit [182229] by Philippe Normand
  • 5 edits in trunk/Source/WebCore

[GStreamer] Move synchronous message handler to MediaPlayerPrivateGStreamerBase
https://bugs.webkit.org/show_bug.cgi?id=143218

Reviewed by Carlos Garcia Campos.

Moved the pipeline pointer to the base class, sub-classes should
now invoke setPipeline() when loading a resource. The base class
now takes care of configuring the GL shared context, this is more
logical because video rendering is also managed by this class.

No new tests, this is only a code refactoring.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::~MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::load):
(WebCore::MediaPlayerPrivateGStreamer::playbackPosition):
(WebCore::MediaPlayerPrivateGStreamer::changePipelineState):
(WebCore::MediaPlayerPrivateGStreamer::pause):
(WebCore::MediaPlayerPrivateGStreamer::duration):
(WebCore::MediaPlayerPrivateGStreamer::currentTime):
(WebCore::MediaPlayerPrivateGStreamer::seek):
(WebCore::MediaPlayerPrivateGStreamer::doSeek):
(WebCore::MediaPlayerPrivateGStreamer::updatePlaybackRate):
(WebCore::MediaPlayerPrivateGStreamer::paused):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfVideo):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfAudio):
(WebCore::MediaPlayerPrivateGStreamer::notifyPlayerOfText):
(WebCore::MediaPlayerPrivateGStreamer::setRate):
(WebCore::MediaPlayerPrivateGStreamer::buffered):
(WebCore::MediaPlayerPrivateGStreamer::handleMessage):
(WebCore::MediaPlayerPrivateGStreamer::fillTimerFired):
(WebCore::MediaPlayerPrivateGStreamer::didLoadingProgress):
(WebCore::MediaPlayerPrivateGStreamer::sourceChanged):
(WebCore::MediaPlayerPrivateGStreamer::cancelLoad):
(WebCore::MediaPlayerPrivateGStreamer::asyncStateChangeDone):
(WebCore::MediaPlayerPrivateGStreamer::updateStates):
(WebCore::MediaPlayerPrivateGStreamer::loadNextLocation):
(WebCore::MediaPlayerPrivateGStreamer::cacheDuration):
(WebCore::MediaPlayerPrivateGStreamer::setDownloadBuffering):
(WebCore::MediaPlayerPrivateGStreamer::audioSink):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
(WebCore::MediaPlayerPrivateGStreamer::simulateAudioInterruption):
(WebCore::mediaPlayerPrivateSyncMessageCallback): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage): Deleted.
(WebCore::MediaPlayerPrivateGStreamer::ensureGstGLContext): Deleted.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::mediaPlayerPrivateNeedContextMessageCallback):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::setPipeline):
(WebCore::MediaPlayerPrivateGStreamerBase::handleNeedContextMessage):
(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
3:38 AM Changeset in webkit [182228] by commit-queue@webkit.org
  • 2 edits in trunk/Source/ThirdParty

[CMake] Make gtest/CMakeLists.txt more readable
https://bugs.webkit.org/show_bug.cgi?id=143295

Patch by Gyuyoung Kim <Gyuyoung Kim> on 2015-04-01
Reviewed by Csaba Osztrogonác.

gtest/CMakeLists.txt has used add_library() and include_directory() directly.
This patch adds GTEST_INCLUDE_DIRECTORIES and GTEST_SOURCES, and use it.

  • gtest/CMakeLists.txt:
3:19 AM Changeset in webkit [182227] by Philippe Normand
  • 4 edits in trunk/Source/WebCore

[GStreamer] GstGL support in the video sink
https://bugs.webkit.org/show_bug.cgi?id=138562

Use GStreamer's glimagesink for video rendering instead of our
custom video sink if a recent-enough version of GstGL is found
during the build. When glimagesink is used it passes a texture to
the media player which then wraps it inside a TextureMapper
texture later used for actual rendering.

Using this new code path will allow us to remove our custom sink
entirely in the long term.

Patch by Philippe Normand <philn@igalia.com> on 2015-03-24
Reviewed by Carlos Garcia Campos.

No new test, existing media tests cover video rendering already.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

(WebCore::mediaPlayerPrivateDrawCallback): client-draw signal callback.
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::naturalSize): Better
check for sample validity.
(WebCore::MediaPlayerPrivateGStreamerBase::updateTexture): Ditto.
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint): Trigger a
repaint and wait its completion.
(WebCore::MediaPlayerPrivateGStreamerBase::paintToTextureMapper):
Extract texture ID and video dimensions from the sample and do actual paint.
(WebCore::MediaPlayerPrivateGStreamerBase::createVideoSink): Use
glimagesink if GstGL is available.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
2:36 AM Changeset in webkit [182226] by Yusuke Suzuki
  • 4 edits
    2 adds in trunk/Source/JavaScriptCore

IteratorClose should be called when jumping over the target for-of loop
https://bugs.webkit.org/show_bug.cgi?id=143140

Reviewed by Geoffrey Garen.

This patch fixes labeled break/continue behaviors with for-of and iterators.

  1. Support IteratorClose beyond multiple loop contexts

Previously, IteratorClose is only executed in for-of's breakTarget().
However, this misses IteratorClose execution when statement roll-ups multiple control flow contexts.
For example,
outer: for (var e1 of outer) {

inner: for (var e2 of inner) {

break outer;

}

}
In this case, return method of inner should be called.
We leverage the existing system for finally to execute inner.return method correctly.
Leveraging finally system fixes break, continue and return cases.
throw case is already supported by emitting try-catch handlers in for-of.

  1. Incorrect LabelScope creation is done in ForOfNode

ForOfNode creates duplicated LabelScope.
It causes infinite loop when executing the following program that contains
explicitly labeled for-of loop.
For example,
inner: for (var elm of array) {

continue inner;

}

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::pushFinallyContext):
(JSC::BytecodeGenerator::pushIteratorCloseContext):
(JSC::BytecodeGenerator::popFinallyContext):
(JSC::BytecodeGenerator::popIteratorCloseContext):
(JSC::BytecodeGenerator::emitComplexPopScopes):
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::emitIteratorClose):

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForOfNode::emitBytecode):

  • tests/stress/iterator-return-beyond-multiple-iteration-scopes.js: Added.

(createIterator.iterator.return):
(createIterator):

  • tests/stress/raise-error-in-iterator-close.js: Added.

(createIterator.iterator.return):
(createIterator):

2:03 AM Changeset in webkit [182225] by Yusuke Suzuki
  • 6 edits
    2 adds in trunk/Source/JavaScriptCore

[ES6] Implement Symbol.unscopables
https://bugs.webkit.org/show_bug.cgi?id=142829

Reviewed by Geoffrey Garen.

This patch introduces Symbol.unscopables functionality.
In ES6, some generic names (like keys, values) are introduced
as Array's method name. And this breaks the web since some web sites
use like the following code.

var values = ...;
with (array) {

values; This values is trapped by array's method "values".

}

To fix this, Symbol.unscopables introduces blacklist
for with scope's trapping. When resolving scope,
if name is found in the target scope and the target scope is with scope,
we check Symbol.unscopables object to filter generic names.

This functionality is only active for with scopes.
Global scope does not have unscopables functionality.

And since
1) op_resolve_scope for with scope always return Dynamic resolve type,
2) in that case, JSScope::resolve is always used in JIT and LLInt,
3) the code which contains op_resolve_scope that returns Dynamic cannot be compiled with DFG and FTL,
to implement this functionality, we just change JSScope::resolve and no need to change JIT code.
So performance regression is only visible in Dynamic resolving case, and it is already much slow.

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):

  • runtime/CommonIdentifiers.h:
  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::runtimeFlags):

  • runtime/JSScope.cpp:

(JSC::isUnscopable):
(JSC::JSScope::resolve):

  • runtime/JSScope.h:

(JSC::ScopeChainIterator::scope):

  • tests/stress/global-environment-does-not-trap-unscopables.js: Added.

(test):

  • tests/stress/unscopables.js: Added.

(test):
(.):

12:24 AM Changeset in webkit [182224] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebCore

nullptr cleanup in StyleResolver
https://bugs.webkit.org/show_bug.cgi?id=143260

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-04-01
Reviewed by Ryosuke Niwa.

No new tests, no behavior changes

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::State::initForStyleResolve):
(WebCore::StyleResolver::locateCousinList):
(WebCore::StyleResolver::locateSharedStyle):
(WebCore::StyleResolver::keyframeStylesForAnimation):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::pseudoStyleRulesForElement):
(WebCore::StyleResolver::findFromMatchedPropertiesCache):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::applyPropertyToStyle):
(WebCore::StyleResolver::MatchedProperties::MatchedProperties):

  • css/StyleResolver.h:

(WebCore::PseudoStyleRequest::PseudoStyleRequest):
(WebCore::StyleResolverParentPusher::StyleResolverParentPusher):

12:07 AM Changeset in webkit [182223] by ap@apple.com
  • 6 edits in trunk/LayoutTests

REGRESSION (r179820): accessibility/textarea-selected-text-range.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=142976

Reviewed by Chris Fleizach.

  • platform/mac/TestExpectations: Removed an expectation.
  • accessibility/textarea-selected-text-range-expected.txt:
  • accessibility/textarea-selected-text-range.html:

Don't race a timer with an internal dispatch_async.

  • platform/mac/accessibility/select-element-selection-with-optgroups-expected.txt:
  • platform/mac/accessibility/select-element-selection-with-optgroups.html:

This test had the same issue.

Mar 31, 2015:

11:18 PM Changeset in webkit [182222] by ap@apple.com
  • 2 edits in trunk/Source/WTF

Fix the build after <http://trac.webkit.org/changeset/182205>.

  • wtf/text/StringImpl.h: (WTF::StringImpl::extractFoldedStringInSymbol):

A function cannot be both exported and inline.

11:16 PM Changeset in webkit [182221] by Nikita Vasilyev
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: console.error(object) has double disclosure triangles
https://bugs.webkit.org/show_bug.cgi?id=142069

Use inline-block instead of "float: left" or "position: absolute" to
make layout more predictable and easier to understand.

Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.css:

(.outline-disclosure, .outline-disclosure ol):
(.outline-disclosure > li.parent):
(.outline-disclosure > li.parent::before):
(.outline-disclosure li.parent): Deleted.
(.outline-disclosure li.parent::before): Deleted.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property > .titles):
(.object-tree-property > .disclosure-button):
(.object-tree-property > .icon):

  • UserInterface/Views/ObjectTreeView.css:

(.object-tree > :matches(.title, .object-preview)::before):
(.object-tree:not(.lossless-preview) > :matches(.title, .object-preview)):

10:00 PM Changeset in webkit [182220] by jonowells@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION: Filtering no longer works
https://bugs.webkit.org/show_bug.cgi?id=143099

Reviewed by Brian Burg.

Add a check for an empty array of filter functions and return true in this case to ensure text
and timeline filters work correctly.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstFilterFunctions):

9:06 PM Changeset in webkit [182219] by mitz@apple.com
  • 5 edits in trunk/Source/WebKit2

<rdar://problem/20365675> [iOS] Include Add to Reading List link action only where supported
https://bugs.webkit.org/show_bug.cgi?id=143289

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/_WKElementAction.h: Excluded _WKElementActionTypeAddToReadingList from

the _WKElementActionType enum when Reading List is not supported.

  • UIProcess/API/Cocoa/_WKElementAction.mm:

(+[_WKElementAction elementActionWithType:customTitle:]): Made Add to Reading List code
conditional on HAVE(SAFARI_SERVICES_FRAMEWORK).

  • UIProcess/ios/WKActionSheetAssistant.mm:

(-[WKActionSheetAssistant showImageSheet]): Ditto.
(-[WKActionSheetAssistant showLinkSheet]): Ditto.

  • config.h: Defined HAVE_SAFARI_SERVICES_FRAMEWORK.
7:35 PM Changeset in webkit [182218] by rniwa@webkit.org
  • 7 edits in trunk

ES6 class syntax should allow static setters and getters
https://bugs.webkit.org/show_bug.cgi?id=143180

Source/JavaScriptCore:

Reviewed by Filip Pizlo

Apparently I misread the spec when I initially implemented parseClass.
ES6 class syntax allows static getters and setters so just allow that.

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):

LayoutTests:

Reviewed by Filip Pizlo.

Added test cases.

  • js/class-syntax-declaration-expected.txt:
  • js/class-syntax-expression-expected.txt:
  • js/script-tests/class-syntax-declaration.js:
  • js/script-tests/class-syntax-expression.js:
7:05 PM Changeset in webkit [182217] by timothy_horton@apple.com
  • 4 edits in trunk/Source

TextIndicator for <span> inside an <a> only highlights the <span>, should highlight the whole <a>
https://bugs.webkit.org/show_bug.cgi?id=143287
<rdar://problem/20318342>

Reviewed by Beth Dakin.

  • WebView/WebImmediateActionController.mm:

(-[WebImmediateActionController _defaultAnimationController]):
Instead of just highlighting the hit element, highlight the whole
element that the link URL comes from.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):
Instead of just highlighting the hit element, highlight the whole
element that the link URL comes from.

6:51 PM EFLWebKitReleasePlan edited by ryuan.choi@navercorp.com
(diff)
6:15 PM Changeset in webkit [182216] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit2

WKView should stop using endGestureWithEvent
https://bugs.webkit.org/show_bug.cgi?id=143285
<rdar://problem/20357007>

Reviewed by Simon Fraser.

  • UIProcess/API/mac/WKView.mm:

(-[WKView magnifyWithEvent:]):
(-[WKView endGestureWithEvent:]): Deleted.

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::endMagnificationGesture):
(WebKit::ViewGestureController::endActiveGesture): Deleted.
While there is no visible symptom, it is recommended that we check
the phase of normal magnification events instead of using the
special gesture end events.

4:42 PM Changeset in webkit [182215] by Simon Fraser
  • 12 edits
    23 adds in trunk

Make it possible to compute a region for elements on the page that have wheel event handlers
https://bugs.webkit.org/show_bug.cgi?id=142807

Reviewed by David Hyatt.

Source/WebCore:

Make it possible to compute a region that covers the elements on the page that have
a wheel event handler. This region may overestimate, but must not underestimate the area.

Elements with wheel handlers are registered on the document, and when a document gains
its first wheel handler, it registers the ownerElement in the parent document. Thus, on
the main frame, the region encompasses elements with handlers, and iframes whose subdocuments
have handlers.

Element gains some functions that allow it to return a rect which is the bounds of the element's
renderer, and renders for its descendant elements, which is the size or larger than the event
handling region for that element. Some configurations (e.g. position:fixed) require special
treatment.

Document::absoluteRegionForEventTargets() can then iterate over all elements in the given set,
and build a Region for those (short-circuiting if the document itself has a handler).

The new code is exercised for the debug MouseWheelRegionOverlay, and also added to the
non-fast scrollable region, used by threaded scrolling.

Tests: platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/handlers-in-iframes.html

platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-columns.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-region.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-document.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed.html
platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic.html

  • dom/ContainerNode.h:

(WebCore::ContainerNode::absoluteEventHandlerBounds): Base class implementation; returns empty rect.

  • dom/Document.cpp:

(WebCore::Document::prepareForDestruction): Unregister from the parent document.
(WebCore::Document::didAddWheelEventHandler): Add to the wheel handler set. Tell the parent
document if we are adding wheel handlers for the first time. Eventually the wheelEventHandlerCountChanged()
code will be removed, now we have the set. Tell debug overlays that we changed.
(WebCore::Document::didRemoveWheelEventHandler): Remove from the set, and unregister with the parent
document if necessary. Tell debug overlays that we changed.
(WebCore::Document::didAddTouchEventHandler): Minor cleanup.
(WebCore::Document::didRemoveTouchEventHandler): Ditto.
(WebCore::Document::didRemoveEventTargetNode): Remove from wheel targets.
(WebCore::Document::absoluteEventHandlerBounds): Implementation of the ContainerNode
function, just return the document bounds.
(WebCore::Document::absoluteRegionForEventTargets): Iterate over the given event targets,
and call absoluteEventHandlerBounds() on each.

  • dom/Document.h:

(WebCore::Document::wheelEventTargets):

  • dom/Element.cpp:

(WebCore::layoutOverflowRectContainsAllDescendants): Return true if we can determine that the
layoutOverflow bounds of the given renderer contains the renderers of all descendant elements.
(WebCore::Element::eventBounds): Get the "event handling" bounds of this element (excluding
descendants), and while doing so, compute whether any descendants are position:fixed, and whether
these bounds are known to include descendants.
(WebCore::Element::eventBoundsOfElementAndDescendants): Recursive function that short-circuits
if it can determine that descendants are enclosed by the bounds.
(WebCore::Element::absoluteEventHandlerBounds):

  • dom/Element.h:
  • page/DebugPageOverlays.cpp:

(WebCore::MouseWheelRegionOverlay::updateRegion): Ask the document for the region of wheel
event handlers.

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion): Add the wheel handler region
to the non-fast scrollable region.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::scrollTo): Overflow scrolling needs to dirty event regions.

  • rendering/RenderObject.cpp:

(WebCore::RenderObject::absoluteBoundingBoxRect): Need to pass the "wasFixed" flag out
of this function.
(WebCore::RenderObject::localToAbsolute): Ditto.

  • rendering/RenderObject.h:

LayoutTests:

Tests that dump the non-fast-scrollable region, for various rendering configurations.

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/handlers-in-iframes-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/handlers-in-iframes.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/resources/gain-wheel-handler.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/resources/lose-wheel-handler.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/resources/wheel-handler-region-helper.js: Added.

(rectsAsString):
(dumpRegion):

  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-fixed-child.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-columns.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-in-region.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-inside-fixed.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-document-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-document.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-on-fixed.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/non-fast-region/wheel-handler-region-basic.html: Added.
4:38 PM Changeset in webkit [182214] by timothy_horton@apple.com
  • 4 edits in trunk/Source/WebKit2

Swipes occur in the wrong direction in RTL
https://bugs.webkit.org/show_bug.cgi?id=143257
<rdar://problem/20300862>

Reviewed by Simon Fraser.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(-[WKSwipeTransitionController gestureRecognizerForInteractiveTransition:WithTarget:action:]):
When choosing which edge to attach our gesture recognizers to,
flip them in RTL.

(-[WKSwipeTransitionController directionForTransition:]):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::canSwipeInDirection):

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::scrollEventCanBecomeSwipe):
(WebKit::ViewGestureController::trackSwipeGesture):
(WebKit::ViewGestureController::determineLayerAdjacentToSnapshotForParent):
(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::handleSwipeGesture):
Adjust SwipeDirection to be in logical back-forward list direction
instead of physical edge direction.

4:15 PM Changeset in webkit [182213] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

PutClosureVar CSE def() rule has a wrong base
https://bugs.webkit.org/show_bug.cgi?id=143280

Reviewed by Michael Saboff.

I think that this code was incorrect in a benign way, since the base of a
PutClosureVar is not a JS-visible object. But it was preventing some optimizations.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

4:07 PM Changeset in webkit [182212] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Fix bindings tests results after <http://trac.webkit.org/changeset/182205>.

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::setJSTestObjConditionalAttr4Constructor):
(WebCore::setJSTestObjConditionalAttr5Constructor):
(WebCore::setJSTestObjConditionalAttr6Constructor):
(WebCore::setJSTestObjReplaceableAttribute):

3:59 PM Changeset in webkit [182211] by benjamin@webkit.org
  • 10 edits
    3 adds in trunk

Content Extensions: split the state machines to minimize prefix states
https://bugs.webkit.org/show_bug.cgi?id=143253

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-03-31
Reviewed by Alex Christensen.

Source/WebCore:

With this patch, we refine how the URLs are partitioned to make
multiple small machines instead of a big one.

Here, considering each pattern as a language, I took the simplest
partitioning: take the union minimizing the states
that differentiate languages.

The idea is the following: every time a subgraph can be skipped
or repeated, it is an opportunity for a merged language to start
with a distinguishable state.
To avoid accumulating those differences, we only merge languages
that share the exact same "variable" subgraph as a prefix.

A side effect is that we could create as many machines as we have patterns.
We'll have to address that in a follow-up by merging small machines
until they reach a certain size.
In the common cases, patterns look very much alike so that is not a problem
at the moment.

  • WebCore.xcodeproj/project.pbxproj:
  • contentextensions/CombinedURLFilters.cpp: Added.

I moved the prefix tree and graph construction out of URLFilterParser for clarity.

CombinedURLFilters maintain the term prefix tree. Instead of generating on the fly
as we build the prefix tree, we first generate the entire tree of terms, then generate
NFAs for each branch without a variable prefix.

(WebCore::ContentExtensions::CombinedURLFilters::CombinedURLFilters):
(WebCore::ContentExtensions::CombinedURLFilters::~CombinedURLFilters):

(WebCore::ContentExtensions::CombinedURLFilters::addPattern):
Note here that we keep track of which subtree contains a any variable length term.
Instead of anotating the edges, the destination vertex is anotated with the information
from the edge.

The flag "inVariableLengthPrefix" is there to simplify traversal.

(WebCore::ContentExtensions::generateNFAForSubtree):
(WebCore::ContentExtensions::CombinedURLFilters::createNFAs):
Since we are traversing a tree generated by string, using the stack for recursion
is out of the question.

Fortunately, the entire state is very simple when going depth first: we only need
the active vertex and edge, and traverse the edges in order.

To do keep track of the edges, I used the HashTable iterator on the current term.
Since no vertex is modified for generation, storing the iterators is safe.

  • contentextensions/CombinedURLFilters.h:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/NFA.cpp:

(WebCore::ContentExtensions::NFA::setActions):
(WebCore::ContentExtensions::NFA::debugPrintDot):
(WebCore::ContentExtensions::NFA::setFinal): Deleted.
(WebCore::ContentExtensions::NFA::addRuleId): Deleted.

  • contentextensions/NFA.h:
  • contentextensions/NFAGraphBuilder.cpp: Added.
  • contentextensions/NFAGraphBuilder.h: Added.
  • contentextensions/NFANode.h:
  • contentextensions/Term.h: Added.

Move the Term to its own file since it is now shared between the parser
and the CombinedURLFilters.

(WebCore::ContentExtensions::Term::CharacterSet::operator==):
(WebCore::ContentExtensions::Term::CharacterSet::hash):
(WebCore::ContentExtensions::Term::Group::operator==):
(WebCore::ContentExtensions::Term::Group::hash):
(WebCore::ContentExtensions::TermHash::hash):
(WebCore::ContentExtensions::TermHash::equal):
(WebCore::ContentExtensions::Term::Term):
(WebCore::ContentExtensions::Term::~Term):
(WebCore::ContentExtensions::Term::isValid):
(WebCore::ContentExtensions::Term::addCharacter):
(WebCore::ContentExtensions::Term::extendGroupSubpattern):
(WebCore::ContentExtensions::Term::quantify):
(WebCore::ContentExtensions::Term::Term::generateGraph):
(WebCore::ContentExtensions::Term::isEndOfLineAssertion):
(WebCore::ContentExtensions::Term::matchesAtLeastOneCharacter):
(WebCore::ContentExtensions::Term::isKnownToMatchAnyString):
(WebCore::ContentExtensions::Term::hasFixedLength):
(WebCore::ContentExtensions::Term::operator=):
(WebCore::ContentExtensions::Term::operator==):
(WebCore::ContentExtensions::Term::hash):
(WebCore::ContentExtensions::Term::isEmptyValue):
(WebCore::ContentExtensions::Term::isDeletedValue):
(WebCore::ContentExtensions::Term::isUniversalTransition):
(WebCore::ContentExtensions::Term::generateSubgraphForAtom):
(WebCore::ContentExtensions::Term::destroy):

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::PatternParser::PatternParser):
(WebCore::ContentExtensions::PatternParser::finalize):
(WebCore::ContentExtensions::PatternParser::assertionBOL):
(WebCore::ContentExtensions::URLFilterParser::URLFilterParser):
(WebCore::ContentExtensions::URLFilterParser::addPattern):
(WebCore::ContentExtensions::Term::Term): Deleted.
(WebCore::ContentExtensions::Term::~Term): Deleted.
(WebCore::ContentExtensions::Term::isValid): Deleted.
(WebCore::ContentExtensions::Term::addCharacter): Deleted.
(WebCore::ContentExtensions::Term::extendGroupSubpattern): Deleted.
(WebCore::ContentExtensions::Term::quantify): Deleted.
(WebCore::ContentExtensions::Term::generateGraph): Deleted.
(WebCore::ContentExtensions::Term::isEndOfLineAssertion): Deleted.
(WebCore::ContentExtensions::Term::matchesAtLeastOneCharacter): Deleted.
(WebCore::ContentExtensions::Term::isKnownToMatchAnyString): Deleted.
(WebCore::ContentExtensions::Term::operator=): Deleted.
(WebCore::ContentExtensions::Term::operator==): Deleted.
(WebCore::ContentExtensions::Term::hash): Deleted.
(WebCore::ContentExtensions::Term::isEmptyValue): Deleted.
(WebCore::ContentExtensions::Term::isDeletedValue): Deleted.
(WebCore::ContentExtensions::Term::isUniversalTransition): Deleted.
(WebCore::ContentExtensions::Term::generateSubgraphForAtom): Deleted.
(WebCore::ContentExtensions::Term::destroy): Deleted.
(WebCore::ContentExtensions::Term::CharacterSet::operator==): Deleted.
(WebCore::ContentExtensions::Term::CharacterSet::hash): Deleted.
(WebCore::ContentExtensions::Term::Group::operator==): Deleted.
(WebCore::ContentExtensions::Term::Group::hash): Deleted.
(WebCore::ContentExtensions::TermHash::hash): Deleted.
(WebCore::ContentExtensions::TermHash::equal): Deleted.
(WebCore::ContentExtensions::GraphBuilder::GraphBuilder): Deleted.
(WebCore::ContentExtensions::GraphBuilder::finalize): Deleted.
(WebCore::ContentExtensions::GraphBuilder::assertionBOL): Deleted.

  • contentextensions/URLFilterParser.h:

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::TEST_F):
(TestWebKitAPI::testPatternStatus):

3:58 PM Changeset in webkit [182210] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.5.17

New tag.

3:45 PM Changeset in webkit [182209] by commit-queue@webkit.org
  • 8 edits in trunk/Source/JavaScriptCore

Unreviewed, rolling out r182200.
https://bugs.webkit.org/show_bug.cgi?id=143279

Probably causing assertion extravaganza on bots. (Requested by
kling on #webkit).

Reverted changeset:

"Logically empty WeakBlocks should not pin down their
MarkedBlocks indefinitely."
https://bugs.webkit.org/show_bug.cgi?id=143210
http://trac.webkit.org/changeset/182200

3:15 PM Changeset in webkit [182208] by bshafiei@apple.com
  • 2 edits in branches/safari-600.5-branch/Source/WebCore

Merged r182204. rdar://problem/20371107

2:34 PM Changeset in webkit [182207] by mmaxfield@apple.com
  • 47 edits
    1 move in trunk/Source

Move ExpansionBehaviorFlags and TextDirection to their own file
https://bugs.webkit.org/show_bug.cgi?id=143273

Reviewed by Simon Fraser.

This is a mechanical change. It just moves code around.

This is getting ready for https://bugs.webkit.org/show_bug.cgi?id=142608

Source/WebCore:

No new tests because there is no behavior change.

  • Modules/notifications/Notification.h:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • css/CSSPrimitiveValueMappings.h:
  • css/CSSProperty.h:
  • dom/Position.h:
  • editing/VisiblePosition.h:
  • editing/VisibleUnits.h:
  • editing/htmlediting.h:
  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2D.h:
  • platform/LengthBox.h:
  • platform/PopupMenuStyle.h:
  • platform/graphics/FontCascade.h:
  • platform/graphics/LayoutBoxExtent.h:
  • platform/graphics/TextRun.h:
  • platform/ios/SelectionRect.h:
  • platform/text/BidiResolver.h:
  • platform/text/StringWithDirection.h:
  • platform/text/TextHelpers.h: Renamed from Source/WebCore/platform/text/TextDirection.h.

(WebCore::isLeftToRightDirection):

  • platform/win/PopupMenuWin.cpp:

(WebCore::PopupMenuWin::paint):

  • rendering/EllipsisBox.cpp:

(WebCore::EllipsisBox::paint):
(WebCore::EllipsisBox::selectionRect):
(WebCore::EllipsisBox::paintSelection):

  • rendering/HitTestLocation.h:
  • rendering/HitTestResult.h:
  • rendering/InlineBox.h:
  • rendering/InlineTextBox.h:

(WebCore::InlineTextBox::expansionBehavior):

  • rendering/RenderBlock.cpp:

(WebCore::constructTextRunInternal):
(WebCore::RenderBlock::constructTextRun):

  • rendering/RenderBlock.h:
  • rendering/RenderFileUploadControl.cpp:

(WebCore::RenderFileUploadControl::paintObject):
(WebCore::RenderFileUploadControl::computeIntrinsicLogicalWidths):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::updateFromElement):
(WebCore::RenderListBox::paintItemForeground):

  • rendering/RenderListMarker.cpp:

(WebCore::RenderListMarker::computePreferredLogicalWidths):
(WebCore::RenderListMarker::getRelativeMarkerRect):

  • rendering/RenderMenuList.cpp:

(RenderMenuList::updateOptionsWidth):

  • rendering/RenderTextControl.cpp:

(WebCore::RenderTextControl::getAverageCharWidth):

  • rendering/RenderThemeIOS.mm:
  • rendering/style/RenderStyle.h:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::constructTextRun):

  • rendering/svg/SVGTextMetrics.cpp:

(WebCore::SVGTextMetrics::constructTextRun):

Source/WebKit/ios:

  • WebCoreSupport/WebFrameIOS.mm:
  • WebCoreSupport/WebVisiblePosition.mm:

Source/WebKit2:

  • Shared/WebPopupItem.h:
  • UIProcess/API/C/efl/WKAPICastEfl.h:
  • UIProcess/API/efl/EwkView.h:
  • UIProcess/WebPopupMenuProxy.h:
  • UIProcess/efl/WebUIPopupMenuClient.h:
2:34 PM Changeset in webkit [182206] by jonowells@apple.com
  • 2 deletes in trunk/Source/WebInspectorUI/WebInspectorUI.esproj

Remove user project file left in tree by accident.

  • WebInspectorUI.esproj/Project.espressostorage: Removed.
  • WebInspectorUI.esproj/user.jonowells.espressostorage: Removed.
2:25 PM Changeset in webkit [182205] by Yusuke Suzuki
  • 119 edits in trunk

Clean up Identifier factories to clarify the meaning of StringImpl*
https://bugs.webkit.org/show_bug.cgi?id=143146

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

In the a lot of places, Identifier(VM*/ExecState*, StringImpl*) constructor is used.
However, it's ambiguous because StringImpl* has 2 different meanings.
1) normal string, it is replacable with WTFString and
2) uid, which holds isSymbol information to represent Symbols.
So we dropped Identifier constructors for strings and instead, introduced 2 factory functions.
+ Identifier::fromString(VM*/ExecState*, const String&).
Just construct Identifier from strings. The symbol-ness of StringImpl* is not kept.
+ Identifier::fromUid(VM*/ExecState*, StringImpl*).
This function is used for 2) uid. So symbol-ness of StringImpl* is kept.

And to clean up StringImpl which is used as uid,
we introduce StringKind into StringImpl. There's 3 kinds

  1. StringNormal (non-atomic, non-symbol)
  2. StringAtomic (atomic, non-symbol)
  3. StringSymbol (non-atomic, symbol)

They are mutually exclusive. And (atomic, symbol) case should not exist.

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::getOwnNonIndexPropertyNames):

  • API/JSObjectRef.cpp:

(JSObjectMakeFunction):

  • API/OpaqueJSString.cpp:

(OpaqueJSString::identifier):

  • bindings/ScriptFunctionCall.cpp:

(Deprecated::ScriptFunctionCall::call):

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutableInternal):

  • builtins/BuiltinNames.h:

(JSC::BuiltinNames::BuiltinNames):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitThrowReferenceError):
(JSC::BytecodeGenerator::emitThrowTypeError):
(JSC::BytecodeGenerator::emitReadOnlyExceptionIfNeeded):
(JSC::BytecodeGenerator::emitEnumeration):

  • dfg/DFGDesiredIdentifiers.cpp:

(JSC::DFG::DesiredIdentifiers::reallyAdd):

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::functionDetails):
(Inspector::constructInternalProperty):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):

  • inspector/JSInjectedScriptHostPrototype.cpp:

(Inspector::JSInjectedScriptHostPrototype::finishCreation):

  • inspector/JSJavaScriptCallFramePrototype.cpp:
  • inspector/ScriptCallStackFactory.cpp:

(Inspector::extractSourceInformationFromException):

  • jit/JITOperations.cpp:
  • jsc.cpp:

(GlobalObject::finishCreation):
(GlobalObject::addFunction):
(GlobalObject::addConstructableFunction):
(functionRun):
(runWithScripts):

  • llint/LLIntData.cpp:

(JSC::LLInt::Data::performAssertions):

  • llint/LowLevelInterpreter.asm:
  • parser/ASTBuilder.h:

(JSC::ASTBuilder::addVar):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseInner):
(JSC::Parser<LexerType>::createBindingPattern):

  • parser/ParserArena.h:

(JSC::IdentifierArena::makeIdentifier):
(JSC::IdentifierArena::makeIdentifierLCharFromUChar):
(JSC::IdentifierArena::makeNumericIdentifier):

  • runtime/ArgumentsIteratorPrototype.cpp:

(JSC::ArgumentsIteratorPrototype::finishCreation):

  • runtime/ArrayIteratorPrototype.cpp:

(JSC::ArrayIteratorPrototype::finishCreation):

  • runtime/ArrayPrototype.cpp:

(JSC::ArrayPrototype::finishCreation):
(JSC::arrayProtoFuncPush):

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::getOwnPropertySlot):

  • runtime/CommonIdentifiers.cpp:

(JSC::CommonIdentifiers::CommonIdentifiers):

  • runtime/CommonIdentifiers.h:
  • runtime/Error.cpp:

(JSC::addErrorInfo):
(JSC::hasErrorInfo):

  • runtime/ExceptionHelpers.cpp:

(JSC::createUndefinedVariableError):

  • runtime/GenericArgumentsInlines.h:

(JSC::GenericArguments<Type>::getOwnPropertySlot):

  • runtime/Identifier.h:

(JSC::Identifier::isSymbol):
(JSC::Identifier::Identifier):
(JSC::Identifier::from): Deleted.

  • runtime/IdentifierInlines.h:

(JSC::Identifier::Identifier):
(JSC::Identifier::fromUid):
(JSC::Identifier::fromString):

  • runtime/JSCJSValue.cpp:

(JSC::JSValue::dumpInContextAssumingStructure):

  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toPropertyKey):

  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):

  • runtime/JSObject.cpp:

(JSC::getClassPropertyNames):
(JSC::JSObject::reifyStaticFunctionsForDelete):

  • runtime/JSObject.h:

(JSC::makeIdentifier):

  • runtime/JSPromiseConstructor.cpp:

(JSC::JSPromiseConstructorFuncRace):
(JSC::JSPromiseConstructorFuncAll):

  • runtime/JSString.h:

(JSC::JSString::toIdentifier):

  • runtime/JSSymbolTableObject.cpp:

(JSC::JSSymbolTableObject::getOwnNonIndexPropertyNames):

  • runtime/LiteralParser.cpp:

(JSC::LiteralParser<CharType>::tryJSONPParse):
(JSC::LiteralParser<CharType>::makeIdentifier):

  • runtime/Lookup.h:

(JSC::reifyStaticProperties):

  • runtime/MapConstructor.cpp:

(JSC::constructMap):

  • runtime/MapIteratorPrototype.cpp:

(JSC::MapIteratorPrototype::finishCreation):

  • runtime/MapPrototype.cpp:

(JSC::MapPrototype::finishCreation):

  • runtime/MathObject.cpp:

(JSC::MathObject::finishCreation):

  • runtime/NumberConstructor.cpp:

(JSC::NumberConstructor::finishCreation):

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructor::finishCreation):

  • runtime/PrivateName.h:

(JSC::PrivateName::PrivateName):

  • runtime/PropertyMapHashTable.h:

(JSC::PropertyTable::find):
(JSC::PropertyTable::get):

  • runtime/PropertyName.h:

(JSC::PropertyName::PropertyName):
(JSC::PropertyName::publicName):
(JSC::PropertyName::asIndex):

  • runtime/PropertyNameArray.cpp:

(JSC::PropertyNameArray::add):

  • runtime/PropertyNameArray.h:

(JSC::PropertyNameArray::addKnownUnique):

  • runtime/RegExpConstructor.cpp:

(JSC::RegExpConstructor::finishCreation):

  • runtime/SetConstructor.cpp:

(JSC::constructSet):

  • runtime/SetIteratorPrototype.cpp:

(JSC::SetIteratorPrototype::finishCreation):

  • runtime/SetPrototype.cpp:

(JSC::SetPrototype::finishCreation):

  • runtime/StringIteratorPrototype.cpp:

(JSC::StringIteratorPrototype::finishCreation):

  • runtime/StringPrototype.cpp:

(JSC::StringPrototype::finishCreation):

  • runtime/Structure.cpp:

(JSC::Structure::getPropertyNamesFromStructure):

  • runtime/SymbolConstructor.cpp:
  • runtime/VM.cpp:

(JSC::VM::throwException):

  • runtime/WeakMapConstructor.cpp:

(JSC::constructWeakMap):

Source/WebCore:

Just change Identifier creations.

  1. If the code creates Identifier from StringImpl*

which is treated as symbol or string(unique id), use Identifier::fromUid.

  1. If the code creates Identifier from string, use Identifier::fromString.
  • Modules/plugins/QuickTimePluginReplacement.mm:

(WebCore::QuickTimePluginReplacement::ensureReplacementScriptInjected):
(WebCore::QuickTimePluginReplacement::installReplacement):

  • bindings/js/IDBBindingUtilities.cpp:

(WebCore::get):
(WebCore::set):

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::JSCSSStyleDeclaration::getOwnPropertyNames):

  • bindings/js/JSCallbackData.cpp:

(WebCore::JSCallbackData::invokeCallback):

  • bindings/js/JSCommandLineAPIHostCustom.cpp:

(WebCore::getJSListenerFunctions):
(WebCore::JSCommandLineAPIHost::getEventListeners):

  • bindings/js/JSCryptoAlgorithmBuilder.cpp:

(WebCore::JSCryptoAlgorithmBuilder::add):

  • bindings/js/JSCryptoAlgorithmDictionary.cpp:

(WebCore::getProperty):
(WebCore::getHashAlgorithm):

  • bindings/js/JSCryptoKeySerializationJWK.cpp:

(WebCore::getJSArrayFromJSON):
(WebCore::getStringFromJSON):
(WebCore::getBooleanFromJSON):
(WebCore::addToJSON):
(WebCore::buildJSONForRSAComponents):
(WebCore::addBoolToJSON):
(WebCore::addUsagesToJSON):

  • bindings/js/JSCustomXPathNSResolver.cpp:

(WebCore::JSCustomXPathNSResolver::lookupNamespaceURI):

  • bindings/js/JSDOMStringMapCustom.cpp:

(WebCore::JSDOMStringMap::getOwnPropertyNames):

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::defineOwnProperty):
(WebCore::JSDOMWindow::setLocation):
(WebCore::DialogHandler::dialogCreated):
(WebCore::DialogHandler::returnValue):

  • bindings/js/JSDeviceMotionEventCustom.cpp:

(WebCore::readAccelerationArgument):
(WebCore::readRotationRateArgument):
(WebCore::createAccelerationObject):
(WebCore::createRotationRateObject):

  • bindings/js/JSDictionary.cpp:

(WebCore::JSDictionary::tryGetProperty):

  • bindings/js/JSEventListener.cpp:

(WebCore::JSEventListener::handleEvent):

  • bindings/js/JSHTMLAllCollectionCustom.cpp:

(WebCore::callHTMLAllCollection):
(WebCore::JSHTMLAllCollection::item):
(WebCore::JSHTMLAllCollection::namedItem):

  • bindings/js/JSHTMLDocumentCustom.cpp:

(WebCore::JSHTMLDocument::all):
(WebCore::JSHTMLDocument::setAll):
(WebCore::JSHTMLDocument::open):

  • bindings/js/JSHTMLFormControlsCollectionCustom.cpp:

(WebCore::JSHTMLFormControlsCollection::namedItem):

  • bindings/js/JSIDBDatabaseCustom.cpp:

(WebCore::JSIDBDatabase::createObjectStore):

  • bindings/js/JSIDBObjectStoreCustom.cpp:

(WebCore::JSIDBObjectStore::createIndex):

  • bindings/js/JSImageDataCustom.cpp:

(WebCore::toJS):

  • bindings/js/JSInspectorFrontendHostCustom.cpp:

(WebCore::populateContextMenuItems):

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::initializeJSFunction):

  • bindings/js/JSNodeFilterCondition.cpp:

(WebCore::JSNodeFilterCondition::acceptNode):

  • bindings/js/JSSQLResultSetRowListCustom.cpp:

(WebCore::JSSQLResultSetRowList::item):

  • bindings/js/JSStorageCustom.cpp:

(WebCore::JSStorage::getOwnPropertyNames):

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::setInternalSlotToObject):
(WebCore::getInternalSlotFromObject):

  • bindings/js/ScriptGlobalObject.cpp:

(WebCore::ScriptGlobalObject::set):
(WebCore::ScriptGlobalObject::get):
(WebCore::ScriptGlobalObject::remove):

  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::CloneSerializer):
(WebCore::CloneSerializer::write):
(WebCore::CloneDeserializer::deserialize):

  • bindings/objc/WebScriptObject.mm:

(-[WebScriptObject callWebScriptMethod:withArguments:]):
(-[WebScriptObject setValue:forKey:]):
(-[WebScriptObject valueForKey:]):
(-[WebScriptObject removeWebScriptKey:]):
(-[WebScriptObject hasWebScriptKey:]):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSFloat64Array.cpp:

(WebCore::JSFloat64Array::getOwnPropertyNames):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertyNames):

  • bindings/scripts/test/JS/JSTestObj.cpp:

(WebCore::setJSTestObjTestSubObjEnabledBySettingConstructor):
(WebCore::setJSTestObjConditionalAttr4Constructor):
(WebCore::setJSTestObjConditionalAttr5Constructor):
(WebCore::setJSTestObjConditionalAttr6Constructor):
(WebCore::setJSTestObjReplaceableAttribute):

  • bridge/c/c_utility.cpp:

(JSC::Bindings::identifierFromNPIdentifier):

  • bridge/objc/objc_runtime.mm:

(JSC::Bindings::ObjcFallbackObjectImp::defaultValue):

  • bridge/testbindings.cpp:

(main):

  • bridge/testbindings.mm:

(main):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::parseAttribute):

  • html/HTMLPlugInImageElement.cpp:

(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):

  • testing/js/WebCoreTestSupport.cpp:

(WebCoreTestSupport::injectInternalsObject):

Source/WebKit/mac:

Just change to Identifier::fromString.

  • Plugins/Hosted/NetscapePluginHostProxy.mm:

(identifierFromIdentifierRep):

  • Plugins/Hosted/ProxyInstance.mm:

(WebKit::ProxyInstance::getPropertyNames):

Source/WebKit2:

Just change to Identifier::fromString.

  • WebProcess/Plugins/Netscape/JSNPObject.cpp:

(WebKit::JSNPObject::getOwnPropertyNames):

  • WebProcess/Plugins/Netscape/NPJSObject.cpp:

(WebKit::identifierFromIdentifierRep):

Source/WTF:

Introduce StringKind into StringImpl. There's 3 kinds

  1. StringNormal (non-atomic, non-symbol)
  2. StringAtomic (atomic, non-symbol)
  3. StringSymbol (non-atomic, symbol)

They are mutually exclusive.

  • wtf/text/AtomicString.cpp:

(WTF::AtomicString::addSlowCase):
(WTF::AtomicString::findSlowCase):
When registering a string into AtomicStringTable,
it should not be a symbol string
because symbol and atomic types are mutually exclusive.
When a symbol string comes, we extract an owner string
from a symbol string by using StringImpl::extractFoldedStringInSymbol().
It always succeeds because a symbol (non empty) string
is always BufferSubstring and has an owner string.
Empty symbol string doesn't have an owner string.
This case is filtered by !string.length() guard.

  • wtf/text/AtomicString.h:

(WTF::AtomicString::add):
(WTF::AtomicString::addWithStringTableProvider):

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::~StringImpl):
(WTF::StringImpl::createSymbol):
(WTF::StringImpl::createUnique): Deleted.

  • wtf/text/StringImpl.h:

(WTF::StringImpl::StringImpl):
(WTF::StringImpl::createSymbolEmpty):
(WTF::StringImpl::flagIsAtomic):
(WTF::StringImpl::flagIsSymbol):
(WTF::StringImpl::maskStringKind):
(WTF::StringImpl::stringKind):
(WTF::StringImpl::isSymbol):
(WTF::StringImpl::isAtomic):
(WTF::StringImpl::setIsAtomic):
(WTF::StringImpl::extractFoldedStringInSymbol):
(WTF::StringImpl::createUniqueEmpty): Deleted.
(WTF::StringImpl::flagIsUnique): Deleted.
(WTF::StringImpl::isUnique): Deleted.

  • wtf/text/StringStatics.cpp:

(WTF::StringImpl::hashAndFlagsForSymbol):
(WTF::StringImpl::hashAndFlagsForUnique): Deleted.

Tools:

Simple API tests for StringImpl are added.

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::TEST):

2:18 PM Changeset in webkit [182204] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Songza.com fails to play; QTKit path reports it is always "seeking".
https://bugs.webkit.org/show_bug.cgi?id=143274

Rubber-stamped by Eric Carlson.

MediaTime::invalidTime() is always greater than any valid time. So when
checking to see if MediaPlayerPrivateQTKit is seeking, first check if the
m_seekTo time is valid before checking whether it's > 0.

  • platform/graphics/mac/MediaPlayerPrivateQTKit.mm:

(WebCore::MediaPlayerPrivateQTKit::seeking):

1:53 PM Changeset in webkit [182203] by timothy_horton@apple.com
  • 16 edits in trunk/Source/WebKit2

WebKit briefly shows wrong webpage after swiping back (gigaom.com, or any site on a slow network)
https://bugs.webkit.org/show_bug.cgi?id=143256
<rdar://problem/19458648>

Reviewed by Dan Bernstein.

Instead of allowing a flash of the previous page when the swipe snapshot
timeouts fire (removing the snapshot before the new page is loaded), show
the snapshotted background color.

This fixes the problem on iOS, where UI-side compositing makes it easy to fix,
but not yet on OS X.

  • UIProcess/API/Cocoa/WKWebView.mm:

(baseScrollViewBackgroundColor):
(scrollViewBackgroundColor):
If the ViewGestureController returns a valid background color, use that
instead of the page's background color.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:

Expose _updateScrollViewBackground.

  • UIProcess/PageClient.h:
  • UIProcess/ios/PageClientImplIOS.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didChangeBackgroundColor):

  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::didChangeBackgroundColor):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::didChangeBackgroundColor):

  • UIProcess/WebPageProxy.h:

Add and plumb didChangeBackgroundColor, which calls
_updateScrollViewBackground on iOS.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::endSwipeGesture):
Hide the content of the drawing area until the next commit. This way,
even if the snapshot is removed (say, because a timeout fired), we won't
ever show the old page content (but we will show background color).

Store the background color associated with the current snapshot.

Let WKWebView know that it needs to recompute the background color.

(WebKit::ViewGestureController::removeSwipeSnapshot):
Clear the background color so that the next time we commit, WKWebView
will get an invalid color from ViewGestureController and fall back
to the page's extended background color instead.

  • UIProcess/mac/ViewGestureController.h:

(WebKit::ViewGestureController::backgroundColorForCurrentSnapshot):

  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::beginSwipeGesture):
(WebKit::ViewGestureController::removeSwipeSnapshot):
Keep backgroundColorForCurrentSnapshot up to date on Mac too, even
though we don't use it yet.

1:50 PM Changeset in webkit [182202] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] Rotating PDF in Safari scrolls to the wrong position
https://bugs.webkit.org/show_bug.cgi?id=143259
<rdar://problem/19872693>

Reviewed by Dan Bernstein.

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView web_setMinimumSize:]):
Maintan the relative top/left within the rescaled document.

1:37 PM Changeset in webkit [182201] by dino@apple.com
  • 2 edits in trunk/LayoutTests

accessibility/aria-hidden-hides-all-elements.html fails on Windows
https://bugs.webkit.org/show_bug.cgi?id=143275

Mark as Pass/Fail.

  • platform/win/TestExpectations:
1:01 PM Changeset in webkit [182200] by akling@apple.com
  • 8 edits in trunk/Source/JavaScriptCore

Logically empty WeakBlocks should not pin down their MarkedBlocks indefinitely.
<https://webkit.org/b/143210>

Reviewed by Geoffrey Garen.

Since a MarkedBlock cannot be destroyed until all the WeakBlocks pointing into it are gone,
we had a little problem where WeakBlocks with only null pointers would still keep their
MarkedBlock alive.

This patch fixes that by detaching WeakBlocks from their MarkedBlock once a sweep discovers
that the WeakBlock contains no pointers to live objects. Ownership of the WeakBlock is passed
to the Heap, which will sweep the list of these detached WeakBlocks as part of a full GC,
destroying them once they're fully dead.

This allows the garbage collector to reclaim the 64kB MarkedBlocks much sooner, and resolves
a mysterious issue where doing two full garbage collections back-to-back would free additional
memory in the second collection.

Management of detached WeakBlocks is implemented as a Vector<WeakBlock*> in Heap, along with
an index of the next block in that vector that needs to be swept. The IncrementalSweeper then
calls into Heap::sweepNextLogicallyEmptyWeakBlock() to sweep one block at a time.

  • heap/Heap.h:
  • heap/Heap.cpp:

(JSC::Heap::collectAllGarbage): Add a final pass where we sweep the logically empty WeakBlocks
owned by Heap, after everything else has been swept.

(JSC::Heap::notifyIncrementalSweeper): Set up an incremental sweep of logically empty WeakBlocks
after a full garbage collection ends. Note that we don't do this after Eden collections, since
they are unlikely to cause entire WeakBlocks to go empty.

(JSC::Heap::addLogicallyEmptyWeakBlock): Added. Interface for passing ownership of a WeakBlock
to the Heap when it's detached from a WeakSet.

(JSC::Heap::sweepAllLogicallyEmptyWeakBlocks): Helper for collectAllGarbage() that sweeps all
of the logically empty WeakBlocks owned by Heap.

(JSC::Heap::sweepNextLogicallyEmptyWeakBlock): Sweeps one logically empty WeakBlock if needed
and updates the next-logically-empty-weak-block-to-sweep index.

(JSC::Heap::lastChanceToFinalize): call sweepAllLogicallyEmptyWeakBlocks() here, since there
won't be another chance after this.

  • heap/IncrementalSweeper.h:

(JSC::IncrementalSweeper::hasWork): Deleted.

  • heap/IncrementalSweeper.cpp:

(JSC::IncrementalSweeper::fullSweep):
(JSC::IncrementalSweeper::doSweep):
(JSC::IncrementalSweeper::sweepNextBlock): Restructured IncrementalSweeper a bit to simplify
adding a new sweeping stage for the Heap's logically empty WeakBlocks. sweepNextBlock() is
changed to return a bool (true if there's more work to be done.)

  • heap/WeakBlock.cpp:

(JSC::WeakBlock::sweep): This now figures out if the WeakBlock is logically empty, i.e doesn't
contain any pointers to live objects. The answer is stored in a new SweepResult member.

  • heap/WeakBlock.h:

(JSC::WeakBlock::isLogicallyEmptyButNotFree): Added. Can be queried after a sweep to determine
if the WeakBlock could be detached from the MarkedBlock.

(JSC::WeakBlock::SweepResult::SweepResult): Deleted in favor of initializing member variables
when declaring them.

12:43 PM Changeset in webkit [182199] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

REGRESSION: Searching commits can highlight wrong data points
https://bugs.webkit.org/show_bug.cgi?id=143272

Reviewed by Antti Koivisto.

The bug was caused by /api/commits returning commit times with millisecond precision whereas /api/runs
return commit times with only second precision. This resulted in the frontend code to match a commit
with the data point that included the next commit when the millisecond component of commit's timestamp
wasn't identically 0.

This discrepancy was caused by the fact PHP's strtotime only ignores milliseconds and /api/commits
was returning timestamp as string instead of parsing via Database::to_js_time as done in /api/runs
so miliseconds component was only preserved in /api/commits.

Fixed the bug by always using Database::to_js_time to return commit time. Also fixed to_js_time so that
it returns time in milisecond precision.

  • public/api/commits.php:

(fetch_commits_between): Use Database::to_js_time for format commit times.
(format_commit): Ditto.

  • public/include/db.php:

(Database::to_js_time): Parse and append millisecond component. Ignore sub-milliseconds for simplicity.

  • public/v2/data.js:

(CommitLogs.fetchForTimeRange): The commit time is now an integer so don't call "replace" on it.

12:42 PM Changeset in webkit [182198] by rniwa@webkit.org
  • 19 edits
    2 adds in trunk/Source/JavaScriptCore

eval("this.foo") causes a crash if this had not been initialized in a derived class's constructor
https://bugs.webkit.org/show_bug.cgi?id=142883

Reviewed by Filip Pizlo.

The crash was caused by eval inside the constructor of a derived class not checking TDZ.

Fixed the bug by adding a parser flag that forces the TDZ check to be always emitted when accessing "this"
in eval inside a derived class' constructor.

  • bytecode/EvalCodeCache.h:

(JSC::EvalCodeCache::getSlow):

  • bytecompiler/NodesCodegen.cpp:

(JSC::ThisNode::emitBytecode):

  • debugger/DebuggerCallFrame.cpp:

(JSC::DebuggerCallFrame::evaluate):

  • interpreter/Interpreter.cpp:

(JSC::eval):

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::thisExpr):

  • parser/NodeConstructors.h:

(JSC::ThisNode::ThisNode):

  • parser/Nodes.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::Parser):
(JSC::Parser<LexerType>::parsePrimaryExpression):

  • parser/Parser.h:

(JSC::parse):

  • parser/ParserModes.h:
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::thisExpr):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):
(JSC::CodeCache::getProgramCodeBlock):
(JSC::CodeCache::getEvalCodeBlock):

  • runtime/CodeCache.h:

(JSC::SourceCodeKey::SourceCodeKey):

  • runtime/Executable.cpp:

(JSC::EvalExecutable::create):

  • runtime/Executable.h:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::createEvalCodeBlock):

  • runtime/JSGlobalObject.h:
  • runtime/JSGlobalObjectFunctions.cpp:

(JSC::globalFuncEval):

  • tests/stress/class-syntax-no-tdz-in-eval.js: Added.
  • tests/stress/class-syntax-tdz-in-eval.js: Added.
12:32 PM Changeset in webkit [182197] by commit-queue@webkit.org
  • 8 edits
    7 adds in trunk

border-image with 'fill' keyword does not fill the middle area unless the border width is greater than zero.
https://bugs.webkit.org/show_bug.cgi?id=142650.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-03-31
Reviewed by Simon Fraser.

Source/WebCore:

The decoration of a RenderBox, a RenderTable or an InlineFlowBox should be
drawn if its RenderStyle has a non-zero width border or the border-image
has the keyword fill.

Tests: fast/borders/border-image-fill-inline-no-border.html

fast/borders/border-image-fill-no-border.html

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintBoxDecorations):

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintBoxDecorations):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::hasBoxDecorationStyle):

  • rendering/RenderTable.cpp:

(WebCore::RenderTable::paintBoxDecorations):

  • rendering/style/BorderData.h:

(WebCore::BorderData::hasFill):

  • rendering/style/RenderStyle.h:

LayoutTests:

Add tests to ensure the middle area of a RenderBox is going to be drawn
even if the border width is not greater than zero.

  • fast/borders/border-image-fill-inline-no-border-expected.html: Added.
  • fast/borders/border-image-fill-inline-no-border.html: Added.
  • fast/borders/border-image-fill-no-border-expected.html: Added.
  • fast/borders/border-image-fill-no-border.html: Added.
  • fast/borders/resources/button-border-cropped.svg: Added.
  • fast/borders/resources/button-border.svg: Added.
  • fast/borders/resources/svg-100x100-intrinsic.svg: Added.
12:25 PM Changeset in webkit [182196] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Unreviewed build fix.

  • WebCore.vcxproj/WebCore.vcxproj:

Don't include inspector files twice in debug builds.
InspectorAllInOne.cpp is now used on debug builds.

12:14 PM Changeset in webkit [182195] by hyatt@apple.com
  • 3 edits
    4 adds in trunk

[New Block-Inside-Inline Model] Anonymous inline-blocks should size as though they are block-level.
https://bugs.webkit.org/show_bug.cgi?id=143271

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/block/inside-inlines/block-width-check.html.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::sizesLogicalWidthToFitContent):
Return false when an anonymous inline-block is encountered, since we want to treat it like a regular
block instead.

LayoutTests:

  • fast/block/inside-inlines/block-width-check-expected.html: Added.
  • fast/block/inside-inlines/block-width-check.html: Added.
  • fast/block/inside-inlines/new-model/block-width-check-expected.html: Added.
  • fast/block/inside-inlines/new-model/block-width-check.html: Added.
12:03 PM Changeset in webkit [182194] by Chris Dumez
  • 14 edits
    1 add in trunk/Source/WebKit2

[WK2][iOS] Extend ProcessThrottler use to the NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=143249
<rdar://problem/20231539>

Reviewed by Gavin Barraclough.

Extend ProcessThrottler use to the NetworkProcess instead of only the
WebProcesses. This is needed so that the NetworkProcess gets notified
before suspension. We now use this notification to free-up memory
before suspending by calling the critical memory pressure handler, as
we already do for WebProcesses (rdar://problem/20231539). In the
future, this infrastructure will be used to delay suspension until the
pending SQL transactions are done as well (rdar://problem/20180799).

Previously, the NetworkProcessProxy would hold a foreground assertion
on behalf of the NetworkProcess but would never release that assertion.
In this patch, we change this so that WebProcessProxies hold assertions
on behalf of the NetworkProcess, and release those assertions before
suspending. As a result, the NetworkProcess gets suspended when all
WebProcesses are suspended.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::processWillSuspend):
(WebKit::NetworkProcess::cancelProcessWillSuspend):
(WebKit::NetworkProcess::processDidResume):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/NetworkProcess.messages.in:
  • UIProcess/Network/NetworkProcessProxy.cpp:

(WebKit::NetworkProcessProxy::NetworkProcessProxy):
(WebKit::NetworkProcessProxy::didFinishLaunching):
(WebKit::NetworkProcessProxy::sendProcessWillSuspend):
(WebKit::NetworkProcessProxy::sendCancelProcessWillSuspend):
(WebKit::NetworkProcessProxy::didCancelProcessSuspension):
(WebKit::NetworkProcessProxy::sendProcessDidResume):
(WebKit::NetworkProcessProxy::processReadyToSuspend):

  • UIProcess/Network/NetworkProcessProxy.h:

(WebKit::NetworkProcessProxy::throttler):

  • UIProcess/Network/NetworkProcessProxy.messages.in:
  • UIProcess/ProcessThrottler.cpp:

(WebKit::ProcessThrottler::ProcessThrottler):
(WebKit::ProcessThrottler::didConnectToProcess):
(WebKit::ProcessThrottler::didConnnectToProcess): Deleted.

  • UIProcess/ProcessThrottler.h:
  • UIProcess/ProcessThrottlerClient.h: Added.

(WebKit::ProcessThrottlerClient::~ProcessThrottlerClient):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebProcessPool.h:
  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::didFinishLaunching):
(WebKit::WebProcessProxy::initializeNetworkProcessActivityToken):
(WebKit::WebProcessProxy::sendProcessDidResume):
(WebKit::WebProcessProxy::processReadyToSuspend):

  • UIProcess/WebProcessProxy.h:
  • WebKit2.xcodeproj/project.pbxproj:
12:01 PM Changeset in webkit [182193] by commit-queue@webkit.org
  • 27 edits
    13 deletes in trunk/Source

Unreviewed, rolling out r182186.
https://bugs.webkit.org/show_bug.cgi?id=143270

it crashes all the WebGL tests on the Debug bots (Requested by
dino on #webkit).

Reverted changeset:

"Web Inspector: add 2D/WebGL canvas instrumentation
infrastructure"
https://bugs.webkit.org/show_bug.cgi?id=137278
http://trac.webkit.org/changeset/182186

11:53 AM Changeset in webkit [182192] by mmaxfield@apple.com
  • 3 edits in trunk/Source/WebCore

Crash in CGContextShowGlyphsWithAdvances when passing kCGFontIndexInvalid
https://bugs.webkit.org/show_bug.cgi?id=143114

This is a workaround for <rdar://problem/20230073>. Please remove when it is no longer necessary.

Reviewed by Alexey Proskuryakov.

Covered by:
compositing/regions/floated-region-with-transformed-child.html
compositing/regions/floated-region-with-transformed-child-expected.html
fast/regions/counters/extract-ordered-lists-in-regions-explicit-counters-005.html
fast/regions/counters/extract-ordered-lists-in-regions-explicit-counters-005-expected.html
fast/regions/overflow/overflow-content-transform-rotate.html
fast/regions/overflow/overflow-content-transform-rotate-expected.html

  • platform/graphics/GlyphBuffer.h:

(WebCore::GlyphBuffer::shrink): Performing shaping may remove glyphs, so we need to shrink the GlyphBuffer.

  • platform/graphics/WidthIterator.cpp:

(WebCore::applyFontTransforms): Filter out kCGFontIndexInvalid.
(WebCore::WidthIterator::advanceInternal): Moved code into applyFontTransforms, and trigger the
shrink of the GlyphBuffer.

11:26 AM Changeset in webkit [182191] by Beth Dakin
  • 3 edits
    4 adds in trunk

REGRESSION (r173484): Reducing content of scrollable region does not reset scroll
position
https://bugs.webkit.org/show_bug.cgi?id=138525
-and corresponding-
rdar://problem/18166043

Reviewed by Simon Fraser.

Source/WebCore:

The change that caused this regression was correct. That change does not allow
RenderLayer to update scroll position after a layout if a rubber-band is currently
happening. The change caused this regression because all of the member variables
in ScrollController that attempt to keep track of the current state of the scroll
gesture (m_inScrollGesture, m_momentumScrollInProgress, and
m_snapRubberbandTimerIsActive) all indicated that a momentum scroll gesture was
still in action for this div even though it very much is not when the bug happens.
Those variables were never properly re-set because the
PlatformWheelEventPhaseEnded events never got dispatched to the ScrollController,
which brought the investigation back to Element.

We must still dispatch events that have zero delta so that the default event
handlers can handle them, but we should stopPropagation() so that these events are
not sent to the DOM. Websites will break if they get wheel events with no delta.

  • dom/Element.cpp:

(WebCore::Element::dispatchWheelEvent):

LayoutTests:

  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-reduced-content-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-reduced-content.html: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-zero-delta-wheel-events-expected.txt: Added.
  • platform/mac-wk2/tiled-drawing/scrolling/overflow-scroll-zero-delta-wheel-events.html: Added.
11:22 AM Changeset in webkit [182190] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

[Win] Unreviewed debug build fix after r182186.

  • WebCore.vcxproj/WebCore.vcxproj:

Include InspectorAllInOne.cpp in debug builds.

10:44 AM Changeset in webkit [182189] by Yusuke Suzuki
  • 8 edits
    10 adds in trunk

[ES6] Object type restrictions on a first parameter of several Object.* functions are relaxed
https://bugs.webkit.org/show_bug.cgi?id=142937

Reviewed by Darin Adler.

Source/JavaScriptCore:

In ES6, Object type restrictions on a first parameter of several Object.* functions are relaxed.
In ES5 or prior, when a first parameter is not object type, these functions raise TypeError.
But now, several functions perform ToObject onto a non-object parameter.
And others behaves as if a parameter is a non-extensible ordinary object with no own properties.
It is described in ES6 Annex E.
Functions different from ES5 are following.

  1. An attempt is make to coerce the argument using ToObject.

Object.getOwnPropertyDescriptor
Object.getOwnPropertyNames
Object.getPrototypeOf
Object.keys

  1. Treated as if it was a non-extensible ordinary object with no own properties.

Object.freeze
Object.isExtensible
Object.isFrozen
Object.isSealed
Object.preventExtensions
Object.seal

  • runtime/ObjectConstructor.cpp:

(JSC::ObjectConstructorGetPrototypeOfFunctor::operator()):
(JSC::objectConstructorGetPrototypeOf):
(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorGetOwnPropertyNames):
(JSC::objectConstructorKeys):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorPreventExtensions):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):
(JSC::objectConstructorIsExtensible):

  • tests/stress/object-freeze-accept-non-object.js: Added.
  • tests/stress/object-get-own-property-descriptor-perform-to-object.js: Added.

(canary):

  • tests/stress/object-get-own-property-names-perform-to-object.js: Added.

(compare):

  • tests/stress/object-get-prototype-of-perform-to-object.js: Added.
  • tests/stress/object-is-extensible-accept-non-object.js: Added.
  • tests/stress/object-is-frozen-accept-non-object.js: Added.
  • tests/stress/object-is-sealed-accept-non-object.js: Added.
  • tests/stress/object-keys-perform-to-object.js: Added.

(compare):

  • tests/stress/object-prevent-extensions-accept-non-object.js: Added.
  • tests/stress/object-seal-accept-non-object.js: Added.

LayoutTests:

Several LayoutTests are updated with the new behavior.
Test cases in IETestCenter contain test for the outdated behavior.
But IETestCenter is brought from the external source, so instead of modifying it,
we mark them as Failure in TestExpectations.

  • TestExpectations:
  • js/dom/getOwnPropertyDescriptor-expected.txt:
  • js/prototypes-expected.txt:
  • js/resources/getOwnPropertyDescriptor.js:
  • js/script-tests/prototypes.js:
10:42 AM Changeset in webkit [182188] by hyatt@apple.com
  • 8 edits
    4 adds in trunk

[New Block-Inside-Inline Model] Make sure line breaks occur before and after the anonymous inline-block.
https://bugs.webkit.org/show_bug.cgi?id=143238.

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/blocks/inside-inlines/breaking-behavior.html (and new-model equivalent).

  • rendering/InlineFlowBox.h:

(WebCore::InlineFlowBox::InlineFlowBox):
(WebCore::InlineFlowBox::hasAnonymousInlineBlock):
(WebCore::InlineFlowBox::setHasAnonymousInlineBlock):
Add a bit to root line boxes (stored in the InlineFlowBox since it has free bits) that indicates whether
or not a line is an anonymous inline-block line.

  • rendering/RenderBlockFlow.cpp:

(WebCore::RenderBlockFlow::computeInlinePreferredLogicalWidths):
Patch the preferred logical width computation to break both before and after an anonymous inline-block.
Also make sure to strip trailing spaces from the line before the anonymous inline-block.

  • rendering/RenderBlockLineLayout.cpp:

(WebCore::RenderBlockFlow::constructLine):
Patch line construction so that no intermediate boxes are constructed between the InlineBox for the anonymous
inline-block and the root line box.

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::ascentAndDescentForBox):
The height of a "line" that holds an anonymous inline-block should ignore line-box-contain and also make sure
that the margins of the replaced element are "outside" the line, since those margins will collapse.

  • rendering/line/BreakingContext.h:

(WebCore::BreakingContext::handleReplaced):
Patch handleReplaced to make sure breaks occur both before and after an anonymous inline-block. In the case of
a break after the block, we setPreviousLineBrokeCleanly to true so that <br>s that follow the anonymous inline-block
are respected.

LayoutTests:

  • fast/block/inside-inlines/breaking-behavior-expected.html: Added.
  • fast/block/inside-inlines/breaking-behavior.html: Added.
  • fast/block/inside-inlines/new-model/breaking-behavior-expected.html: Added.
  • fast/block/inside-inlines/new-model/breaking-behavior.html: Added.
  • fast/block/inside-inlines/new-model/empty-block.html:
10:32 AM Changeset in webkit [182187] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebCore

[EFL] Add nullptr check to GraphicsContext3D::makeContextCurrent()
https://bugs.webkit.org/show_bug.cgi?id=143214

Reviewed by Žan Doberšek.

  • platform/graphics/efl/GraphicsContext3DEfl.cpp:

(WebCore::GraphicsContext3D::makeContextCurrent):

10:23 AM Changeset in webkit [182186] by commit-queue@webkit.org
  • 27 edits
    13 adds in trunk/Source

Web Inspector: add 2D/WebGL canvas instrumentation infrastructure
https://bugs.webkit.org/show_bug.cgi?id=137278

Patch by Matt Baker <Matt Baker> on 2015-03-31
Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

Added Canvas protocol which defines types used by InspectorCanvasAgent.

  • CMakeLists.txt:
  • DerivedSources.make:
  • inspector/protocol/Canvas.json: Added.
  • inspector/scripts/codegen/generator.py:

(Generator.stylized_name_for_enum_value):
Added special handling for 2D (always uppercase) and WebGL (rename mapping) enum strings.

Source/WebCore:

Added backend agent for canvas inspection. A canvas is instrumented once its CanvasRenderingContext has been
created. WebGLRenderingContext is instrumented to track the lifetime of shader program objects.

To instrument off-screen rendering contexts (CSS canvases and detached canvas elements), the canvas agent must
track all CanvasRenderingContexts as they are created, even in the absense of the frontend. As far as I know,
there is no practical way to identify rendering contexts belonging to a frame that are not in the DOM. In the
absence of the inspector frontend the agent does only the minimum required to track the lifetime of rendering
contexts and their resources, to avoid creating a negative performance impact.

Tests: inspector/canvas/canvas-add-remove-events.html

inspector/canvas/canvas-context-attributes.html
inspector/canvas/canvas-css-name.html

  • CMakeLists.txt:
  • WebCore.xcodeproj/project.pbxproj:
  • dom/Document.cpp:

(WebCore::Document::getCSSCanvasElement):
Instrumentation for CSS canvases.

  • html/HTMLCanvasElement.cpp:

(WebCore::HTMLCanvasElement::getContext):
Instrumentation for context creation.

  • html/canvas/WebGLRenderingContextBase.cpp:

(WebCore::WebGLRenderingContextBase::attachShader):
(WebCore::WebGLRenderingContextBase::createProgram):
(WebCore::WebGLRenderingContextBase::deleteProgram):
(WebCore::WebGLRenderingContextBase::detachShader):
Instrumentation for programs and shaders.

  • inspector/InspectorAllInOne.cpp:
  • inspector/InspectorCanvasAgent.cpp: Added.

(WebCore::InspectorCanvasAgent::InspectorCanvasAgent):
(WebCore::InspectorCanvasAgent::didCreateFrontendAndBackend):
(WebCore::InspectorCanvasAgent::willDestroyFrontendAndBackend):
(WebCore::InspectorCanvasAgent::frameNavigated):
(WebCore::InspectorCanvasAgent::didCreateCSSCanvas):
(WebCore::InspectorCanvasAgent::didCreateCanvasRenderingContext):
(WebCore::InspectorCanvasAgent::didAttachShader):
(WebCore::InspectorCanvasAgent::didDetachShader):
(WebCore::InspectorCanvasAgent::didCreateProgram):
(WebCore::InspectorCanvasAgent::didDeleteProgram):
(WebCore::InspectorCanvasAgent::getCanvases):
(WebCore::InspectorCanvasAgent::canvasDestroyed):
(WebCore::InspectorCanvasAgent::canvasDestroyedTimerFired):
(WebCore::InspectorCanvasAgent::reset):
(WebCore::InspectorCanvasAgent::getCanvasEntry):
(WebCore::InspectorCanvasAgent::getProgramEntry):
(WebCore::InspectorCanvasAgent::removeShaderFromShaderMap):
(WebCore::InspectorCanvasAgent::contextTypeJson):
(WebCore::InspectorCanvasAgent::buildObjectForCanvas):

  • inspector/InspectorCanvasAgent.h: Added.

New backend agent.

  • inspector/InspectorController.cpp:

(WebCore::InspectorController::InspectorController):
Support for new backend agent.

  • inspector/InspectorInstrumentation.cpp:

(WebCore::InspectorInstrumentation::didCommitLoadImpl):
(WebCore::InspectorInstrumentation::didCreateCSSCanvasImpl):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContextImpl):
(WebCore::InspectorInstrumentation::didAttachShaderImpl):
(WebCore::InspectorInstrumentation::didDetachShaderImpl):
(WebCore::InspectorInstrumentation::didCreateProgramImpl):
(WebCore::InspectorInstrumentation::didDeleteProgramImpl):
(WebCore::InspectorInstrumentation::instrumentingAgentsForRenderingContext):
Plumbing for canvas instrumentation.

  • inspector/InspectorInstrumentation.h:

(WebCore::InspectorInstrumentation::didCreateCSSCanvas):
(WebCore::InspectorInstrumentation::didCreateCanvasRenderingContext):
(WebCore::InspectorInstrumentation::didAttachShader):
(WebCore::InspectorInstrumentation::didDetachShader):
(WebCore::InspectorInstrumentation::didCreateProgram):
(WebCore::InspectorInstrumentation::didDeleteProgram):

  • inspector/InstrumentingAgents.cpp:

(WebCore::InstrumentingAgents::InstrumentingAgents):
(WebCore::InstrumentingAgents::reset):

  • inspector/InstrumentingAgents.h:

(WebCore::InstrumentingAgents::inspectorCanvasAgent):
(WebCore::InstrumentingAgents::setInspectorCanvasAgent):
Support for new backend agent.

Source/WebInspectorUI:

Added models, views, and controller classes for 2D and WebGL canvas inspection. Each canvas is shown in the
Resources navigation sidebar under its parent frame. Shader programs are displayed as child nodes of
their respective canvas. Canvases will get an associated content view and details sidebar in a later patch
(see https://bugs.webkit.org/show_bug.cgi?id=138941).

Shader programs will get an associated content view for editing shader source in a later patch (see
https://bugs.webkit.org/show_bug.cgi?id=138593). Individual shaders are not shown in the Resource navigation
sidebar, and at this time there are no plans to instrument shaders that aren't attached to a program.

  • Localizations/en.lproj/localizedStrings.js:
  • UserInterface/Base/Main.js:

(WebInspector.loaded):
(WebInspector.sidebarPanelForRepresentedObject):

  • UserInterface/Base/Test.js:

(WebInspector.loaded):

  • UserInterface/Main.html:
  • UserInterface/Test.html:

Updated for new canvas/shader program types.

  • UserInterface/Controllers/CanvasManager.js: Added.

(WebInspector.CanvasManager):
(WebInspector.CanvasManager.prototype.canvasesForFrame):
(WebInspector.CanvasManager.prototype.canvasAdded.set this):
(WebInspector.CanvasManager.prototype.canvasAdded):
(WebInspector.CanvasManager.prototype.canvasRemoved):
(WebInspector.CanvasManager.programDeleted.get console):
(WebInspector.CanvasManager.prototype.programCreated.get console):
(WebInspector.CanvasManager.prototype.programCreated):
(WebInspector.CanvasManager.prototype._mainResourceDidChange):
Frontend controller for canvases and their shader programs.

  • UserInterface/Images/Canvas.svg: Added.
  • UserInterface/Images/DocumentGL.png: Added.
  • UserInterface/Images/DocumentGL@2x.png: Added.

New art for canvas and shader program tree elements.

  • UserInterface/Models/Canvas.js: Added.

(WebInspector.Canvas):
(WebInspector.Canvas.prototype.set fromPayload):
(WebInspector.Canvas.displayNameForContextType):
(WebInspector.Canvas.resetUniqueDisplayNameNumbers):
(WebInspector.Canvas.prototype.get id):
(WebInspector.Canvas.prototype.get parentFrame):
(WebInspector.Canvas.prototype.get name):
(WebInspector.Canvas.prototype.get cssCanvas):
(WebInspector.Canvas.prototype.get contextType):
(WebInspector.Canvas.prototype.get contextAttributes):
(WebInspector.Canvas.prototype.get programs):
(WebInspector.Canvas.prototype.get displayName):
(WebInspector.Canvas.programForId):
(WebInspector.Canvas.get programWasCreated.set this):
(WebInspector.Canvas.prototype.get programWasCreated):
(WebInspector.Canvas.prototype.programWasDeleted):
(WebInspector.Canvas.prototype.saveIdentityToCookie):
Model for DOM or CSS canvas (2D or WebGL).

  • UserInterface/Models/ShaderProgram.js: Added.

(WebInspector.ShaderProgram):
(WebInspector.ShaderProgram.prototype.get id):
(WebInspector.ShaderProgram.prototype.get canvas):
(WebInspector.ShaderProgram.prototype.get displayName):
(WebInspector.ShaderProgram.prototype.saveIdentityToCookie):
(WebInspector.ShaderProgram.prototype.updateCanvas):

  • UserInterface/Models/WebGLContextAttributes.js: Added.

(WebInspector.WebGLContextAttributes):
(WebInspector.WebGLContextAttributes.fromPayload):
(WebInspector.WebGLContextAttributes.prototype.get alpha):
(WebInspector.WebGLContextAttributes.prototype.get depth):
(WebInspector.WebGLContextAttributes.prototype.get stencil):
(WebInspector.WebGLContextAttributes.prototype.get antialias):
(WebInspector.WebGLContextAttributes.prototype.get premultipliedAlpha):
(WebInspector.WebGLContextAttributes.prototype.get preserveDrawingBuffer):
Model for WebGL canvas context attributes.

  • UserInterface/Protocol/CanvasObserver.js: Added.

(WebInspector.CanvasObserver.prototype.canvasAdded):
(WebInspector.CanvasObserver.prototype.canvasRemoved):
(WebInspector.CanvasObserver.prototype.programCreated):
(WebInspector.CanvasObserver.prototype.programDeleted):
(WebInspector.CanvasObserver):
Model for WebGL canvas shader program.

  • UserInterface/Views/CanvasTreeElement.js: Added.

(WebInspector.CanvasTreeElement.validateRepresentedObject):
(WebInspector.CanvasTreeElement.countChildren):
(WebInspector.CanvasTreeElement):
(WebInspector.CanvasTreeElement.prototype.onexpand):
(WebInspector.CanvasTreeElement.prototype.oncollapse):
(WebInspector.CanvasTreeElement.prototype.onpopulate):
(WebInspector.CanvasTreeElement.prototype._programWasCreated):
(WebInspector.CanvasTreeElement.prototype._programWasDeleted):
Folderized tree element for canvases and their child objects (shader programs).

  • UserInterface/Views/FrameTreeElement.js:

(WebInspector.FrameTreeElement.prototype.onattach):
(WebInspector.FrameTreeElement.prototype.ondetach):
(WebInspector.FrameTreeElement.prototype.onpopulate):
(WebInspector.FrameTreeElement.prototype._canvasesAvailable):
(WebInspector.FrameTreeElement.prototype._canvasWasAdded):
(WebInspector.FrameTreeElement.prototype._canvasWasRemoved):
Updated to support canvas tree elements.

  • UserInterface/Views/ResourceIcons.css:

(.canvas-icon .icon):
(.shader-program-icon .icon):
Styles for new canvas and shader program icons.

  • UserInterface/Views/ResourceSidebarPanel.js:

(WebInspector.ResourceSidebarPanel.prototype._treeElementSelected):
Updated for new tree element types.

  • UserInterface/Views/ShaderProgramTreeElement.js: Added.

(WebInspector.ShaderProgramTreeElement):
Tree element for shader programs. Shown as children of CanvasTreeElement.

  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj:
  • WebInspectorUI.vcxproj/WebInspectorUI.vcxproj.filters:
10:17 AM Changeset in webkit [182185] by rniwa@webkit.org
  • 4 edits in trunk/Websites/perf.webkit.org

Perf dashboard should show relative change in values
https://bugs.webkit.org/show_bug.cgi?id=143252

Reviewed by Antti Koivisto.

When a range of values are selected, show the percentage difference between the start and the end
in addition to the absolute value difference. When a single point is selected, show the relative
difference with respect to the previous point. Use two significant figures and always show plus sign
when the difference is positive.

  • public/v2/app.js: Compute and format the relative difference.
  • public/v2/chart-pane.css: Don't let commits view shrink itself when they're all collapsed.
  • public/v2/index.html: Show the relative difference.
10:16 AM Changeset in webkit [182184] by rniwa@webkit.org
  • 2 edits in trunk/Websites/perf.webkit.org

REGRESSION(r180000): Changing moving average or enveloping strategy doesn't update the graph
https://bugs.webkit.org/show_bug.cgi?id=143254

Reviewed by Antti Koivisto.

The bug was caused by App.Pane no longer replacing 'chartData' property when updating the moving average
or the enveloping values. Fixed the bug by creating a new chartData object when the strategy is changed
so that the interactive chart component will observe a change to 'chartData'.

  • public/v2/app.js:

(App.Pane._movingAverageOrEnvelopeStrategyDidChange): Added.

5:35 AM Changeset in webkit [182183] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

GTK+ Gardening 30th March
https://bugs.webkit.org/show_bug.cgi?id=143220

Unreviewed.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-31

  • platform/gtk/TestExpectations:
5:23 AM Changeset in webkit [182182] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

Unreviewed, revert accidental change by r182138.

  • Scripts/generate-forwarding-headers.pl:

(createForwardingHeadersForFramework):

3:59 AM Changeset in webkit [182181] by Antti Koivisto
  • 1 edit
    1 add in trunk/LayoutTests

http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy.html failing on Mavericks wk2 debug
https://bugs.webkit.org/show_bug.cgi?id=143258

The test relies on resource priorities. Those don't roundtrip when serializing via NSURLRequest on Mavericks due
to ResourceRequest::resourcePrioritiesEnabled() returning false.

It is bit surprising it works on release but not on debug. I suspect some debug code forces NSURLRequest construction
and so we end up on the roundtrip code path.

  • platform/mac-mavericks/TestExpectations: Added.

Skip the test on Mavericks.

3:09 AM Changeset in webkit [182180] by youenn.fablet@crf.canon.fr
  • 20 edits
    3 copies
    3 adds in trunk

[Streams API] Implement a barebone ReadableStreamReader interface
https://bugs.webkit.org/show_bug.cgi?id=142866

Reviewed by Benjamin Poulain.

Source/WebCore:

This patch implements a barebone ReadableStreamReader as described in https://streams.spec.whatwg.org/#reader-class.
It implements the IDL without implementing most of the functionality behind.
It implements ReadableStreamReader JS constructor and the link with ReadableStream.getReader:

  • Raise an error if stream is already locked
  • Set the stream reader to the newly created ReadableStreamReader instance.

Test: streams/readablestreamreader-constructor.html

  • CMakeLists.txt: Adding ReadableStreamReader files.
  • DerivedSources.cpp: Ditto.
  • DerivedSources.make: Ditto.
  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::createReader): Used by JS binding to get access to the reader.

  • Modules/streams/ReadableStream.h: Declaration of createReader, reader and lock.

(WebCore::ReadableStream::reader):
(WebCore::ReadableStream::lock):

  • Modules/streams/ReadableStream.idl: Cleaning-up the IDL.
  • Modules/streams/ReadableStreamReader.cpp: Added.

(WebCore::ReadableStreamReader::create):
(WebCore::ReadableStreamReader::ReadableStreamReader):
(WebCore::ReadableStreamReader::~ReadableStreamReader):
(WebCore::ReadableStreamReader::closed):
(WebCore::ReadableStreamReader::activeDOMObjectName):
(WebCore::ReadableStreamReader::canSuspend):

  • Modules/streams/ReadableStreamReader.h: Added.

(WebCore::ReadableStreamReader::stream):

  • Modules/streams/ReadableStreamReader.idl: Added.
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSBindingsAllInOne.cpp:
  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::JSReadableStream::getReader):

  • bindings/js/JSReadableStreamReaderCustom.cpp: Added.

(WebCore::JSReadableStreamReader::read):
(WebCore::getOrCreatePromiseDeferredFromObject):
(WebCore::closedPromiseSlotName):
(WebCore::JSReadableStreamReader::closed):
(WebCore::JSReadableStreamReader::cancel):
(WebCore::JSReadableStreamReader::releaseLock):
(WebCore::constructJSReadableStreamReader):

LayoutTests:

Adding tests to check API, constructor and link with ReadableStream.getReader.
Rebasing of global-constructors-attributes.html to include ReadableStreamReader.

  • js/dom/global-constructors-attributes-expected.txt:
  • platform/efl/js/dom/global-constructors-attributes-expected.txt:
  • platform/gtk/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
  • platform/win/js/dom/global-constructors-attributes-expected.txt:
  • streams/readablestreamreader-constructor-expected.txt: Added.
  • streams/readablestreamreader-constructor.html: Added.
3:05 AM Changeset in webkit [182179] by Lucas Forschler
  • 1 edit in trunk/Tools/BuildSlaveSupport/build.webkit.org-config/config.json

unreviewed config fix after r182178.

2:19 AM Changeset in webkit [182178] by Csaba Osztrogonác
  • 4 edits in trunk/Tools

[EFL] Add AArch64 builder and tester bot to build.webkit.org
https://bugs.webkit.org/show_bug.cgi?id=143092

Reviewed by Gyuyoung Kim.

  • BuildSlaveSupport/build.webkit.org-config/config.json:
  • BuildSlaveSupport/build.webkit.org-config/master.cfg:

(Factory.init):

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
1:58 AM Changeset in webkit [182177] by youenn.fablet@crf.canon.fr
  • 4 edits
    1 add in trunk/Tools

[buildbot] clean-build script should remove untracked files and revert local changes too
https://bugs.webkit.org/show_bug.cgi?id=142400

Reviewed by Ryosuke Niwa.

This patch cleans the WebKit folder by reverting tracked files changes and deleting SCM untracked files, including SCM ignored files.
A helper routine SCM.discard_untracked_files is added for that purpose.

  • BuildSlaveSupport/clean-build:

(main): Making call to Scripts/clean-webkit

  • Scripts/clean-webkit: Added.

(main): Revert changes and delete untracked files.

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.discard_untracked_files): Helper function to discard untracked files or folders found by SCM.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SCMTest._shared_test_discard_untracked_files):
(test_discard_untracked_files): Tests that untracked file and untracked folder get discarded correctly.

1:37 AM Changeset in webkit [182176] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebKit2

Unreviewed. Fix GTK+ build with REDIRECTED_XCOMPOSITE_WINDOW disabled in X11 platform.

Also fix some unused parameter warnings when
REDIRECTED_XCOMPOSITE_WINDOW is disabled.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewRenderAcceleratedCompositingResults):
(resizeWebKitWebViewBaseFromAllocation):

12:49 AM Changeset in webkit [182175] by Carlos Garcia Campos
  • 6 edits
    2 deletes in trunk/Source

[GTK] DnD icon/widget has odd background
https://bugs.webkit.org/show_bug.cgi?id=143217

Reviewed by Martin Robinson.

Source/WebCore:

Remove DragIcon class since it's no longer needed with GTK+3 and
the GTK+2 code there is unused. GTK+ knows what to do with a cairo
surface, I guess we migrated the GTK+2 code to GTK+3 without
realizing that using the surface was enough.

  • PlatformGTK.cmake:
  • platform/gtk/DragIcon.cpp: Removed.
  • platform/gtk/DragIcon.h: Removed.

Source/WebKit2:

Use gtk_drag_set_icon_surface() to set the drag icon image,
instead of DragIcon class.

  • UIProcess/API/gtk/WebKitWebView.cpp:
  • UIProcess/gtk/DragAndDropHandler.cpp:

(WebKit::DragAndDropHandler::startDrag):

  • UIProcess/gtk/DragAndDropHandler.h:
12:34 AM Changeset in webkit [182174] by youenn.fablet@crf.canon.fr
  • 5 edits in trunk/Tools

Python SCM should be able to retrieve untracked files
https://bugs.webkit.org/show_bug.cgi?id=143135

Reviewed by Ryosuke Niwa.

This patch introduces SCM.untracked_files to retrieve a list of untracked files.
Ignored files may be included or not in this list according boolean passed to the function.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.untracked_files):

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.untracked_files):

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SCMTest._shared_test_untracked_files):
(test_untracked_files):
(GitSVNTest.test_untracked_files):

  • Scripts/webkitpy/common/checkout/scm/svn.py:

(SVN.untracked_files):

Mar 30, 2015:

8:27 PM Changeset in webkit [182173] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

Unreviewed, rolling out r182172.
https://bugs.webkit.org/show_bug.cgi?id=143250

Since this class is an API object, we don't know for sure when
it will be destroyed. (Requested by kling on #webkit).

Reverted changeset:

"WebBackForwardList doesn't need to manually clear the
snapshot of an entry when removing it."
https://bugs.webkit.org/show_bug.cgi?id=143231
http://trac.webkit.org/changeset/182172

8:02 PM Changeset in webkit [182172] by akling@apple.com
  • 2 edits in trunk/Source/WebKit2

WebBackForwardList doesn't need to manually clear the snapshot of an entry when removing it.
<https://webkit.org/b/143231>

Reviewed by Tim Horton.

Now that we don't keep WebBackForwardListItem objects alive forever, it's not necessary
to clear the snapshot when removing them from the WebBackForwardList, since the entire
object will be deleted shortly after that anyway.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::didRemoveItem):

6:59 PM Changeset in webkit [182171] by rniwa@webkit.org
  • 9 edits in trunk

Extending null should set proto to null
https://bugs.webkit.org/show_bug.cgi?id=142882

Reviewed by Geoffrey Garen and Benjamin Poulain.

Source/JavaScriptCore:

Set Derived.prototype.proto to null when extending null.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ClassExprNode::emitBytecode):

LayoutTests:

Added more test cases for extending from null, and added checks for prototypes.

Also rebaselined existing tests.

  • js/class-syntax-call-expected.txt:
  • js/class-syntax-extends-expected.txt:
  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-call.js:
  • js/script-tests/class-syntax-extends.js:
  • js/script-tests/class-syntax-super.js:
6:21 PM Changeset in webkit [182170] by msaboff@apple.com
  • 2 edits in trunk/PerformanceTests/SunSpider

Fix failing v8-deltablue.js for ARM
https://bugs.webkit.org/show_bug.cgi?id=138392

Rubber-stamped by Mark Lam.

Re-enable this test for ARM32 on iOS as the tests now run without issues.

  • tests/v8-v6/v8-deltablue.js:
6:09 PM Changeset in webkit [182169] by achristensen@apple.com
  • 2 edits in trunk/Source/WebCore

Unreviewed build fix after r182168.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Explicitly cast to unsigned.

5:48 PM Changeset in webkit [182168] by achristensen@apple.com
  • 13 edits
    3 adds in trunk

[Content Extensions] Correctly handle regular expressions matching everything
https://bugs.webkit.org/show_bug.cgi?id=143235

Reviewed by Benjamin Poulain.

Source/WebCore:

Test: http/tests/contentextensions/whitelist.html

  • contentextensions/CompiledContentExtension.cpp:

(WebCore::ContentExtensions::CompiledContentExtension::globalDisplayNoneSelectors):
Global actions can have non-css actions. Only put the selectors into the list of selectors.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::serializeSelector):
(WebCore::ContentExtensions::serializeActions):
Merge sequential css selectors with identical triggers (usually .*) into one action to reduce the number of actions.
(WebCore::ContentExtensions::compileRuleList):
Fail if a regular expression matches everything after ignore-previous-rules.

  • contentextensions/ContentExtensionError.cpp:

(WebCore::ContentExtensions::contentExtensionErrorCategory):

  • contentextensions/ContentExtensionError.h:

Add more failure cases.

  • contentextensions/ContentExtensionRule.h:

(WebCore::ContentExtensions::Trigger::operator==):
Allow comparing of Triggers to determine if sequential triggers are equal.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Put non-css actions that match everything into the list of actions if ignore-previous-rules was not hit.
These actions will be out of order, but order only matters when determining if ignore-previous-rules, and this case is handled correctly.

  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::actionsFromDFARoot):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):
Added an assertion that all actions that match everything should be in the first DFA root.
We should catch them all with URLFilterParser::MatchesEverything.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::checkCompilerError):
(TestWebKitAPI::TEST_F):
Test ContentExtensionErrors.

LayoutTests:

  • http/tests/contentextensions/css-display-none.html:
  • http/tests/contentextensions/css-display-none.html.json:

Test multiple selectors with triggers that match everything.

  • http/tests/contentextensions/whitelist-expected.txt: Added.
  • http/tests/contentextensions/whitelist.html: Added.
  • http/tests/contentextensions/whitelist.html.json: Added.
5:43 PM Changeset in webkit [182167] by mark.lam@apple.com
  • 8 edits in trunk

REGRESSION (r181993): inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html crashes.
<https://webkit.org/b/143105>

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

With r181993, the DFG and FTL may elide the storing of the scope register. As a result,
on OSR exits from DFG / FTL frames where this elision has take place, we may get baseline
JIT frames that may have its scope register not set. The Debugger's current implementation
which relies on the scope register is not happy about this. For example, this results in a
crash in the layout test inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html.

The fix is to disable inlining when the debugger is in use. Also, we add Flush nodes to
ensure that the scope register value is flushed to the register in the stack frame.

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::setLocal):
(JSC::DFG::ByteCodeParser::flush):

  • Add code to flush the scope register.

(JSC::DFG::ByteCodeParser::inliningCost):

  • Pretend that all codeBlocks are too expensive to inline if the debugger is in use, thereby disabling inlining whenever the debugger is in use.
  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::Graph):

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::hasDebuggerEnabled):

  • dfg/DFGStackLayoutPhase.cpp:

(JSC::DFG::StackLayoutPhase::run):

  • Update the DFG codeBlock's scopeRegister since it can be moved during stack layout.
  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection):

  • Update the FTL codeBlock's scopeRegister since it can be moved during stack layout.

LayoutTests:

5:33 PM Changeset in webkit [182166] by ap@apple.com
  • 2 edits in trunk/Tools

DumpRenderTree should set NSWindowDisplayWithRunLoopObserver
https://bugs.webkit.org/show_bug.cgi?id=143241
rdar://problem/20351297

Reviewed by Mark Lam.

  • DumpRenderTree/mac/DumpRenderTree.mm: (setDefaultsToConsistentValuesForTesting):
5:29 PM Changeset in webkit [182165] by gyuyoung.kim@samsung.com
  • 4 edits in trunk

[CMake][EFL] Remove redundant library link and include path
https://bugs.webkit.org/show_bug.cgi?id=143221

Reviewed by Csaba Osztrogonác.

Source/WTF:

  • wtf/PlatformEfl.cmake: Remove unnecessary library link and include path.

Tools:

  • ImageDiff/PlatformEfl.cmake: Remove unnecessary library link and include path.
4:59 PM Changeset in webkit [182164] by mmaxfield@apple.com
  • 7 edits
    1 move in trunk/Source/WebCore

Allow building on Windows without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=143219

Reviewed by Brent Fulgham.

  • AVFoundationSupport.py: Renamed from Source/WebCore/WebCore.vcxproj/MigrateScripts.

Move logic from DerivedSources.make to its own script
(lookFor):

  • DerivedSources.make: Paths like /usr/bin don't exist on Windows.

Windows uses del instead of rm -f
Windows doesn't have printf

  • WebCore.vcxproj/WebCoreGenerated.make: Pass the CC executable to

build-generated-files.pl

  • WebCore.vcxproj/build-generated-files.pl: Export the CC executable as an environment

variable. Don't use /usr/bin.

  • WebCore.vcxproj/migrate-scripts.pl: Deleted the MigrateScripts makefile. We don't

need a whole Makefile just to copy 5 files. Moved this logic into migrate-scripts.pl.
(copyFile):

  • bindings/scripts/preprocessor.pm:

(applyPreprocessor): Support passing preprocessing flags to the Visual Studio
compiler.

  • dom/make_names.pl: Ditto.
4:54 PM Changeset in webkit [182163] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Build fix.

  • platform/spi/mac/AVFoundationSPI.h:
4:25 PM Changeset in webkit [182162] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] WebContent crashing at WebCore: WebCore::Range::collectSelectionRects.
https://bugs.webkit.org/show_bug.cgi?id=143234
<rdar://problem/18571345>

Reviewed by Tim Horton.

This is a speculative fix that adds a null check before referencing the range.
In both places where the check has been added the range returned by the call
that should create it could be null.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::platformEditorState):

4:22 PM Changeset in webkit [182161] by commit-queue@webkit.org
  • 18 edits
    2 copies
    1 add in trunk

[Content Extensions] Flesh out the UserContentExtensionStore
https://bugs.webkit.org/show_bug.cgi?id=143123

Patch by Sam Weinig <sam@webkit.org> on 2015-03-30
Reviewed by Benjamin Poulain.

Source/WebCore:

  • Adds a variant of getFileSize() that takes a PlatformFileHandle.
  • Adds a new file system function, rename() which operates as the POSIX rename function does.
  • platform/FileSystem.h:

Add new functions.

  • platform/posix/FileSystemPOSIX.cpp:

(WebCore::renameFile):
(WebCore::getFileSize):
Add implementations.

  • platform/gtk/FileSystemGtk.cpp:

(WebCore::renameFile):
(WebCore::getFileSize):

  • platform/win/FileSystemWin.cpp:

(WebCore::getFileSize):
(WebCore::renameFile):
Add stubs.

Source/WebKit2:

  • Shared/WebCompiledContentExtension.cpp:

(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):

  • Shared/WebCompiledContentExtensionData.cpp:

(WebKit::WebCompiledContentExtensionData::encode):
(WebKit::WebCompiledContentExtensionData::decode):

  • Shared/WebCompiledContentExtensionData.h:

(WebKit::WebCompiledContentExtensionData::WebCompiledContentExtensionData):
Switch the order in memory of actions and bytecode (and switch the order of the
variables as well, to keep it clear). This will become necessary when streaming
the data to disk, as actions are created before the bytecode and we would have to keep them
in memory until the bytecode was finished compiling if they didn't come before in the file.

  • UIProcess/API/APIUserContentExtensionStore.h:
  • UIProcess/API/APIUserContentExtensionStore.cpp:

(API::UserContentExtensionStore::defaultStore):
Add accessor for the processes default shared store.

(API::constructedPath):
Helper for constructing the path to a file in the store based on identifier.

(API::encodeContentExtensionMetaData):
(API::decodeContentExtensionMetaData):
Helpers for encoding/decoding the file metadata (version, bytecode size, actions size).

(API::openAndMapContentExtension):
Helper to open and map a filed back content extension.

(API::writeDataToFile):
Helper to write a Data object to a file.

(API::compiledToFile):
Helper to run the content extension compiler and write it to disk. It first
writes it to a temporary file and then does an atomic rename operation to put
the file in the final location. Doing this means that if the process crashes while
the compile is taking place, the partially written file won't end up in the cache,
but rather, will be cleaned up by the OS.

(API::UserContentExtensionStore::lookupContentExtension):
API entry point to lookup an extension that has been compiled to disk. On a background queue,
it attempts to open and map the extension (based on the identifier passed in) and return it
to the caller via the callback function passed in.

(API::UserContentExtensionStore::compileContentExtension):
API entry point to compile an extension and write it to store. On a background queue, it
compiles the file to disk and if successful, returns the memory mapped data via the callback
function passed in.

(API::UserContentExtensionStore::removeContentExtension):
API entry point to remove an extension from the store. On a background queue, it
unlinks the extension (based on the identifier passed in) and tells the caller it completed
the action vial the callback function passed in.

(API::UserContentExtensionStore::synchronousRemoveAllContentExtensions):
Helper for testing which synchronously unlinks all the files in the store.

(API::userContentExtensionStoreErrorCategory):
std::error_code adaptor for some generic errors that can happen in the store. We will want
to flesh these out further.

  • UIProcess/API/Cocoa/APIUserContentExtensionStoreCocoa.mm: Added.

(API::UserContentExtensionStore::defaultStorePath):
Helper to get the platform specific path for the store.

  • UIProcess/API/C/WKUserContentExtensionStoreRef.cpp:

(WKUserContentExtensionStoreGetTypeID):
Add ENABLE(CONTENT_EXTENSIONS) guards.

  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.h:
  • UIProcess/API/Cocoa/_WKUserContentExtensionStore.mm:

(-[_WKUserContentExtensionStore dealloc]):
(+[_WKUserContentExtensionStore defaultStore]):
(-[_WKUserContentExtensionStore compileContentExtensionForIdentifier:encodedContentExtension:completionHandler:]):
(-[_WKUserContentExtensionStore lookupContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore removeContentExtensionForIdentifier:completionHandler:]):
(-[_WKUserContentExtensionStore _removeAllContentExtensions]):
(-[_WKUserContentExtensionStore init]): Deleted.

  • UIProcess/API/Cocoa/_WKUserContentExtensionStoreInternal.h:
  • UIProcess/API/Cocoa/_WKUserContentExtensionStorePrivate.h: Added.

SPI wrappers for the store.

  • WebKit2.xcodeproj/project.pbxproj:

Add new files.

Tools:

  • TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
  • TestWebKitAPI/Tests/WebKit2Cocoa/_WKUserContentExtensionStore.mm: Added.

Add tests for _WKUserContentExtensionStore.

4:01 PM Changeset in webkit [182160] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[WinCairo] Crash when closing window while video is loading
https://bugs.webkit.org/show_bug.cgi?id=143088

Reviewed by Mark Lam.

When the media player is destroyed, we have to cancel possible calls on the
main thread made by a worker thread. Otherwise the destroyed media player
will be accessed when performing the call.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::~MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::endCreatedMediaSource):
(WebCore::MediaPlayerPrivateMediaFoundation::endGetEvent):
(WebCore::MediaPlayerPrivateMediaFoundation::onTopologySet):
(WebCore::MediaPlayerPrivateMediaFoundation::onCreatedMediaSourceCallback):
(WebCore::MediaPlayerPrivateMediaFoundation::onTopologySetCallback):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
3:59 PM Changeset in webkit [182159] by yoon@igalia.com
  • 13 edits in trunk/Source/WebCore

[Threaded Compositor] Crash when animation changes frequently.
https://bugs.webkit.org/show_bug.cgi?id=143213

Reviewed by Simon Fraser.

CompositingCoordinator copies CoordinatedGraphicsLayerState when
flushing GraphicsLayer changes, and ThreadedCoordinatedCompositor passes
it to compositing thread.

To ensure thread-safety, we need to provide copy constructor to copy
Animation object in TextureMapperAnimation instead of referencing it.

Since TimingFunction and TransformOperation used by KeyframeValueList are
not ThreadSafeRefCounted, these should be cloned also.

No new tests needed.

  • platform/graphics/GraphicsLayer.h:

(WebCore::AnimationValue::AnimationValue):
(WebCore::FloatAnimationValue::FloatAnimationValue):
(WebCore::TransformAnimationValue::TransformAnimationValue):
(WebCore::FilterAnimationValue::FilterAnimationValue):
Adds deep copy constructor.

  • platform/graphics/texmap/TextureMapperAnimation.cpp:

(WebCore::TextureMapperAnimation::TextureMapperAnimation):
Because the name of the animation can be AtomicString, we need to create
isolated version of string to ensure thread safty.

  • platform/graphics/texmap/TextureMapperAnimation.h:
  • platform/graphics/transforms/IdentityTransformOperation.h:
  • platform/graphics/transforms/Matrix3DTransformOperation.h:
  • platform/graphics/transforms/MatrixTransformOperation.h:
  • platform/graphics/transforms/PerspectiveTransformOperation.h:
  • platform/graphics/transforms/RotateTransformOperation.h:
  • platform/graphics/transforms/ScaleTransformOperation.h:
  • platform/graphics/transforms/SkewTransformOperation.h:
  • platform/graphics/transforms/TransformOperation.h:
  • platform/graphics/transforms/TranslateTransformOperation.h:

Adds TransformOperation::clone() for threadsafety.

3:58 PM Changeset in webkit [182158] by msaboff@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Fix flakey float32-repeat-out-of-bounds.js and int8-repeat-out-of-bounds.js tests for ARM64
https://bugs.webkit.org/show_bug.cgi?id=138391

Reviewed by Mark Lam.

Re-enabling these tests as I can't get them to fail on local iOS test devices.
There have been many changes since these tests were disabled.
I'll watch automated test results for failures. If there are failures running automated
testing, it might be due to the device's relative CPU performance.

  • tests/stress/float32-repeat-out-of-bounds.js:
  • tests/stress/int8-repeat-out-of-bounds.js:
3:47 PM Changeset in webkit [182157] by Chris Dumez
  • 5 edits
    2 adds in trunk

Cached "Expires" header is not updated upon successful resource revalidation
https://bugs.webkit.org/show_bug.cgi?id=143228
<rdar://problem/20348059>

Reviewed by Antti Koivisto.

Source/WebCore:

Cached "Expires" header was not updated upon successful resource
revalidation. This affected both our disk cache and our memory cache.
This was caused by shouldUpdateHeaderAfterRevalidation() in
CacheValidation.cpp returning false for the "Expires" header.

There is a comment there stating that the list of ignored headers
matches Chromium's net library but that's not the case, at least not
anymore:
http://osxr.org/android/source/external/chromium/net/http/http_response_headers.cc

HTTP servers such as Apache return an "Expires" header in their 304
responses and the "Expires" header is potentially a new one. However,
our caches were ignoring the updated expiration date and kept using the
old one, which meant that the cached resource expired sooner than it
should have.

See the following Apache bugs that explain the issue:
https://bz.apache.org/bugzilla/show_bug.cgi?id=24884
https://bz.apache.org/bugzilla/show_bug.cgi?id=25123

Test: http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header.html

  • platform/network/CacheValidation.cpp:

LayoutTests:

Add layout test to check that a cached response's "Expires" header is
updated from the 304 response's headers upon successful revalidation.

  • http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-revalidation-new-expire-header.html: Added.
  • http/tests/cache/disk-cache/resources/cache-test.js:

(generateTestURL):
(loadResource):

  • http/tests/cache/disk-cache/resources/generate-response.cgi:
3:43 PM Changeset in webkit [182156] by commit-queue@webkit.org
  • 5 edits in trunk

Web Inspector: Regression: Preview for null shouldn't be []
https://bugs.webkit.org/show_bug.cgi?id=143208

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-30
Reviewed by Mark Lam.

Source/JavaScriptCore:

  • inspector/InjectedScriptSource.js:

Handle null when generating simple object previews.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/remote-object.html:
3:41 PM Changeset in webkit [182155] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Regression: null shouldn't be expandable in object outline
https://bugs.webkit.org/show_bug.cgi?id=143209

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-30
Reviewed by Mark Lam.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
When creating an object tree or formatted value, choose just a formatted value
for "null", since it does not have properties.

3:00 PM Changeset in webkit [182154] by Antti Koivisto
  • 4 edits in trunk

Don't cache resources that are very unlikely to be reused
https://bugs.webkit.org/show_bug.cgi?id=143226

Reviewed by Chris Dumez.

Source/WebKit2:

Follow-up to cover Cache-control: no-cache case which also has zero cache lifetime.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeStoreDecision):

LayoutTests:

  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy-expected.txt:
2:25 PM Changeset in webkit [182153] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Include cache entry worth to json dump
https://bugs.webkit.org/show_bug.cgi?id=143202

Follow-up fix.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::computeRecordWorth):

This accidentally gave the error case worth 1 rather than 0 as it should be.

2:09 PM Changeset in webkit [182152] by Antti Koivisto
  • 17 edits in trunk

Don't cache resources that are very unlikely to be reused
https://bugs.webkit.org/show_bug.cgi?id=143226
<rdar://problem/20347160>

Reviewed by Geoff Garen.

Source/WebCore:

Allow overriding resource load priorities via Internals for testing.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::addExtraFieldsToRequest):
(WebCore::FrameLoader::clearTestingOverrides):

  • loader/FrameLoader.h:

(WebCore::FrameLoader::setOverrideResourceLoadPriorityForTesting):
(WebCore::FrameLoader::clearOverrideCachePolicyForTesting): Deleted.

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::unlikelyToReuseKey):

  • page/DiagnosticLoggingKeys.h:

Add a key.

  • testing/Internals.cpp:

(WebCore::Internals::resetToConsistentState):
(WebCore::stringToResourceLoadPriority):
(WebCore::Internals::setOverrideResourceLoadPriority):

  • testing/Internals.h:
  • testing/Internals.idl:

Source/WebKit2:

We are writing lots of resources to the cache that are never used again.

In browse-around-randomly test this reduced number of cache entries created by ~20% and bytes written by ~5%.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::makeUseDecision):
(WebKit::NetworkCache::makeRetrieveDecision):

Rename for clarity.

(WebKit::NetworkCache::makeStoreDecision):

Store only if the resource has non-zero expiration or has validation headers.

Very High priority resources (main resources) keep the existing policy to minimize impact
on back navigation and tab restore.

(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::canUse): Deleted.
(WebKit::NetworkCache::canRetrieve): Deleted.
(WebKit::NetworkCache::canStore): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStatistics.cpp:

(WebKit::NetworkCache::storeDecisionToDiagnosticKey):

LayoutTests:

  • http/tests/cache/disk-cache/disk-cache-request-max-stale-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-request-max-stale-expected.html:

Keep max-age: 0 cacheable in this test by adding a validation header.

  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy.html:

Rebase and expand to cover the high priority resource case.

1:12 PM Changeset in webkit [182151] by peavo@outlook.com
  • 3 edits in trunk/Source/JavaScriptCore

Avoid using hardcoded values for JSValue::Int32Tag, if possible.
https://bugs.webkit.org/show_bug.cgi?id=143134

Reviewed by Geoffrey Garen.

  • jit/JSInterfaceJIT.h:
  • jit/Repatch.cpp:

(JSC::tryCacheGetByID):

12:52 PM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
12:02 PM Changeset in webkit [182150] by timothy_horton@apple.com
  • 7 edits in trunk/Source/WebKit2

Swipe snapshot removed too early (jumps around) on arstechnica and NYT
https://bugs.webkit.org/show_bug.cgi?id=143199
<rdar://problem/18420467>

Reviewed by Dan Bernstein.

Make ViewGestureControllerIOS's snapshot removal timing behave more like the Mac version.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _didCommitLayerTree:]):
Let ViewGestureController know when the page has finished state restoration.

(-[WKWebView _didFinishLoadForMainFrame]):
(-[WKWebView _didSameDocumentNavigationForMainFrame:]):
Forward these to ViewGestureController.

  • UIProcess/API/Cocoa/WKWebViewInternal.h:
  • UIProcess/ios/PageClientImplIOS.mm:

(WebKit::PageClientImpl::didFinishLoadForMainFrame):
Forward didFinishLoadForMainFrame to WKWebView.

  • UIProcess/ios/ViewGestureControllerIOS.mm:

(WebKit::ViewGestureController::ViewGestureController):
(WebKit::ViewGestureController::endSwipeGesture):
Split the swipe snapshot removal state into a bunch of bools.

(WebKit::ViewGestureController::willCommitPostSwipeTransitionLayerTree):
(WebKit::ViewGestureController::setRenderTreeSize):
(WebKit::ViewGestureController::removeSwipeSnapshotIfReady):
(WebKit::ViewGestureController::removeSwipeSnapshot):
Unify the snapshot removal logic into one function; removeSwipeSnapshotIfReady
completely owns the decision. For now, we're waiting for everything, but
we can do better in the future (using firstVisuallyNonEmptyLayout like Mac used to).

(WebKit::ViewGestureController::didRestoreScrollPosition):
(WebKit::ViewGestureController::didFinishLoadForMainFrame):
(WebKit::ViewGestureController::didSameDocumentNavigationForMainFrame):
(WebKit::ViewGestureController::activeLoadMonitoringTimerFired):
Add more conditions for swipe snapshot removal. We'll now wait for
didFinishLoadForMainFrame (or didSameDocumentNavigationForMainFrame),
for active loads to finish, and for the scroll position to be restored.
This brings the iOS implementation in line with the slightly better Mac
implementation, and also sets the stage for deduplication of all of this code.

  • UIProcess/mac/ViewGestureController.h:
  • UIProcess/mac/ViewGestureControllerMac.mm:

(WebKit::ViewGestureController::ViewGestureController):

11:58 AM Changeset in webkit [182149] by commit-queue@webkit.org
  • 1 edit
    1 add in trunk/LayoutTests

Rebaseline accessibility/aria-toggle-button-with-title.html
https://bugs.webkit.org/show_bug.cgi?id=143229

Unreviewed.

Revision r182012 updates the way a role=button + aria-pressed object should be exposed as AXCheckbox. We need to create a new baseline.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-30

  • platform/gtk/accessibility/aria-toggle-button-with-title-expected.txt: Added.
11:52 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
11:36 AM Changeset in webkit [182148] by fpizlo@apple.com
  • 4 edits
    5 adds in trunk/Source/JavaScriptCore

REGRESSION: js/regress/inline-arguments-local-escape.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=143104

Reviewed by Geoffrey Garen.

Created a test that is a 100% repro of the flaky failure. This test is called
get-my-argument-by-val-for-inlined-escaped-arguments.js. It fails all of the time because it
always causes the compiler to emit a GetMyArgumentByVal of the arguments object returned by
the inlined function. Other than that, it's the same as inline-arguments-local-escape.

Also created three more tests for three similar, but not identical, failures.

Then fixed the bug: PreciseLocalClobberize was assuming that if we read(Stack) then we are
only reading those parts of the stack that are relevant to the current semantic code origin.
That's false after ArgumentsEliminationPhase - we might have operations on phantom arguments,
like GetMyArgumentByVal, ForwardVarargs, CallForwardVarargs, and ConstructForwardVarargs, that
read parts of the stack associated with the inline call frame for the phantom arguments. This
may not be subsumed by the current semantic origin's stack area in cases that the arguments
were allowed to "locally" escape.

The higher-order lesson here is that in DFG SSA IR, the current semantic origin's stack area
is not really a meaningful concept anymore. It is only meaningful for nodes that will read
the stack due to function.arguments, but there are a bunch of other ways that we could also
read the stack and those operations may read any stack slot. I believe that this change makes
PreciseLocalClobberize right: it will refine a read(Stack) from Clobberize correctly by casing
on node type. In future, if we add a read(Stack) to Clobberize, we'll have to make sure that
readTop() in PreciseLocalClobberize does the right thing.

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):

  • dfg/DFGPutStackSinkingPhase.cpp:
  • tests/stress/call-forward-varargs-for-inlined-escaped-arguments.js: Added.
  • tests/stress/construct-forward-varargs-for-inlined-escaped-arguments.js: Added.
  • tests/stress/forward-varargs-for-inlined-escaped-arguments.js: Added.
  • tests/stress/get-my-argument-by-val-for-inlined-escaped-arguments.js: Added.
  • tests/stress/real-forward-varargs-for-inlined-escaped-arguments.js: Added.
11:33 AM Changeset in webkit [182147] by jfernandez@igalia.com
  • 34 edits
    5 adds in trunk

[CSS Grid Layout] Upgrade align-self and align-items parsing to CSS 3
https://bugs.webkit.org/show_bug.cgi?id=133359

Reviewed by David Hyatt.

From Blink r164817 and r165264 by <jchaffraix@chromium.org>

Source/WebCore:

Broaden justify-self's parsing name

This is in preparation of migrating align-self, align-items
and justify-items to the CSS 3 Alignment syntax.

The current naming was too tied to justify-self and needs to
be broadened. This will reduce the follow-up implementations'
patches.

Upgrade align-self and align-items parsing to CSS 3

This change migrates the 2 properties to the CSS 3 Alignment
parsing. The new parsing is identical to how we parse
'justify-self'. The 2 properties need to be migrated together
as they are used in tandem in CSSComputedStyleDeclaration.

This change also removes EAlignItems as it is now unused.

Tests: css3/parse-align-items.html

css3/parse-align-self.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::resolveAlignmentAuto): Added. Resolves the "auto" value for the alignment properties.
(WebCore::valueForItemPositionWithOverflowAlignment): Added. Builds the CSSValue for the for the alignment properties.
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp: (WebCore::isValidKeywordPropertyAndValue): Removed align-self, align-items and justify-items.

(WebCore::isKeywordPropertyID): Removed align-self, align-items and justify-items.
(WebCore::isBaselinePositionKeyword): Added. Set of keywords related to baseline value.
(WebCore::CSSParser::parseItemPositionOverflowPosition): Generic parsing fuction for the alignment properties.
(WebCore::CSSParser::parseJustifySelf): Deleted.
(WebCore::CSSParser::parseValue): Added align-items and align-self to the list and call to the generic parsing fuction for the alignment properties.

  • css/CSSParser.h:
  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue): Added.
(WebCore::CSSPrimitiveValue::operator ItemPosition): Added. Replace the old EAlignItems enumeration.
(WebCore::CSSPrimitiveValue::operator OverflowAlignment): Added.
(WebCore::CSSPrimitiveValue::operator EAlignItems): Deleted.
(WebCore::CSSPrimitiveValue::operator EJustifySelf): Deleted.
(WebCore::CSSPrimitiveValue::operator EJustifySelfOverflowAlignment): Deleted.

  • css/CSSPropertyNames.in:
  • css/CSSValueKeywords.in:
  • css/StyleBuilderCustom.h:

(WebCore::StyleBuilderCustom::applyInheritAlignSelf): Added.
(WebCore::StyleBuilderCustom::applyInitialAlignSelf): Added.
(WebCore::StyleBuilderCustom::applyValueAlignSelf): Added.
(WebCore::StyleBuilderCustom::applyInheritAlignItems): Added.
(WebCore::StyleBuilderCustom::applyInitialAlignItems): Added.
(WebCore::StyleBuilderCustom::applyValueAlignItems): Added.
(WebCore::StyleBuilderCustom::applyInheritJustifySelf): Added.
(WebCore::StyleBuilderCustom::applyInitialJustifySelf): Added.
(WebCore::StyleBuilderCustom::applyValueJustifySelf): Added.
(WebCore::StyleBuilderCustom::applyValueWebkitJustifySelf): Deleted.

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::adjustRenderStyle): isDisplayFlexibleOrGridBox now a RenderStyle function.
(WebCore::isDisplayFlexibleBox): Deleted. Moved to RenderStyle.
(WebCore::isDisplayGridBox): Deleted. Moved to RenderStyle.
(WebCore::isDisplayFlexibleOrGridBox): Deleted. Moved to RenderStyle.

  • rendering/RenderBox.cpp:

(WebCore::flexItemHasStretchAlignment): Adapted to the new ItemPostition enum.

  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::firstLineBaseline): Adapted to the new ItemPostition enum.
(WebCore::RenderFlexibleBox::styleDidChange): Adapted to the new ItemPostition enum.
(WebCore::RenderFlexibleBox::alignmentForChild): Adapted to the new ItemPostition enum.
(WebCore::RenderFlexibleBox::needToStretchChild): Adapted to the new ItemPostition enum.
(WebCore::RenderFlexibleBox::layoutAndPlaceChildren): Adapted to the new ItemPostition enum.
(WebCore::RenderFlexibleBox::alignChildren): Adapted to the new ItemPostition enum.
(WebCore::resolveAlignment): Deleted. Moved to RenderStyle.

  • rendering/RenderFlexibleBox.h:
  • rendering/RenderFullScreen.cpp:

(WebCore::createFullScreenStyle): Adapted to the new ItemPostition enum.

  • rendering/RenderMenuList.cpp:

(WebCore::RenderMenuList::adjustInnerStyle): Adapted to the new ItemPostition enum.

  • rendering/mathml/RenderMathMLRoot.cpp:

(WebCore::RenderMathMLRoot::updateStyle): Adapted to the new ItemPostition enum.

  • rendering/mathml/RenderMathMLScripts.cpp:

(WebCore::RenderMathMLScripts::fixAnonymousStyleForSubSupPair): Adapted to the new ItemPostition enum.
(WebCore::RenderMathMLScripts::fixAnonymousStyles): Adapted to the new ItemPostition enum.

  • rendering/style/ContentData.h:
  • rendering/style/RenderStyle.cpp:

(WebCore::RenderStyle::resolveAlignment): Added.

  • rendering/style/RenderStyle.h: Adapted to the new ItemPostition enum.
  • rendering/style/RenderStyleConstants.h: Adapted to the new ItemPostition enum.
  • rendering/style/StyleRareNonInheritedData.cpp: Adapted to the new ItemPostition enum.

(WebCore::StyleRareNonInheritedData::StyleRareNonInheritedData): Adapted to the new ItemPostition enum.
(WebCore::StyleRareNonInheritedData::operator==): Adapted to the new ItemPostition enum.

  • rendering/style/StyleRareNonInheritedData.h: Adapted to the new ItemPostition enum.
  • style/StyleResolveTree.cpp:

(WebCore::Style::determineChange): Changes in the alignItems property cause a Detach.

LayoutTests:

Broaden justify-self's parsing name and upgrade align-self and
align-items parsing to CSS 3.

  • TestExpectations:
  • css3/flexbox/css-properties-expected.txt:
  • css3/flexbox/css-properties.html:
  • css3/parse-align-items-expected.txt: Added.
  • css3/parse-align-items.html: Added.
  • css3/parse-align-self-expected.txt: Added.
  • css3/parse-align-self.html: Added.
  • css3/resources/alignment-parsing-utils.js: Added.

(checkValues):
(checkBadValues):
(checkInitialValues):
(checkInheritValues):
(checkLegacyValues):

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/resources/property-names.js:
  • fast/css/parse-justify-self-expected.txt:
  • fast/css/parse-justify-self.html:
  • svg/css/getComputedStyle-basic-expected.txt:
11:02 AM Changeset in webkit [182146] by hyatt@apple.com
  • 5 edits
    6 adds in trunk

[New Block-Inside-Inline Model] Create anonymous inline blocks to hold blocks-inside-inlines.
https://bugs.webkit.org/show_bug.cgi?id=143145

Reviewed by Dean Jackson.

Source/WebCore:

Added fast/block/inside-inlines/ tests.

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::renderName):
Add support for labeling anonymous inline-blocks when dumped by the render tree.

  • rendering/RenderInline.cpp:

(WebCore::RenderInline::addChildIgnoringContinuation):
When the pref is set to use the new block-inside-inline model, create an anonymous inline block to
hold block children of RenderInlines instead of splitting flows or creating continuations.

  • rendering/RenderObject.h:

(WebCore::RenderObject::isAnonymousInlineBlock):
Add the definition of isAnonymousInlineBlock (note the exclusion of Ruby, since Ruby creates anonymous
inline-blocks also).

LayoutTests:

  • fast/block/inside-inlines: Added.
  • fast/block/inside-inlines/empty-block-expected.html: Added.
  • fast/block/inside-inlines/empty-block.html: Added.
  • fast/block/inside-inlines/new-model: Added.
  • fast/block/inside-inlines/new-model/empty-block-expected.html: Added.
  • fast/block/inside-inlines/new-model/empty-block.html: Added.
10:35 AM Changeset in webkit [182145] by Chris Dumez
  • 6 edits
    2 adds in trunk

[WK2][NetworkCache] Add support for "Cache-Control: max-stale" request header
https://bugs.webkit.org/show_bug.cgi?id=143159
<rdar://problem/20333296>

Reviewed by Antti Koivisto.

Source/WebCore:

Add support for "Cache-Control: max-stale" request header:
https://tools.ietf.org/html/rfc7234#section-5.2.1.2

Test: http/tests/cache/disk-cache/disk-cache-request-max-stale.html

  • platform/network/CacheValidation.cpp:

(WebCore::parseCacheControlDirectives):

  • platform/network/CacheValidation.h:

Source/WebKit2:

Add support for "Cache-Control: max-stale" request header:
https://tools.ietf.org/html/rfc7234#section-5.2.1.2

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::requestRequiresRevalidation):
(WebKit::NetworkCache::canUse):

LayoutTests:

Add layout test to cover support for "Cache-Control: max-stale" request
header.

  • http/tests/cache/disk-cache/disk-cache-request-max-stale-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-request-max-stale.html: Added.
10:06 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
10:04 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
10:01 AM Changeset in webkit [182144] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Update install-dependencies Fedora packages after r181624
https://bugs.webkit.org/show_bug.cgi?id=143215

Add json-glib, libv4l, openssl and pulseaudio development packages to
the Fedora list providing we need them to build WebKit dependencies
for this distribution.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-30
Reviewed by Philippe Normand.

  • gtk/install-dependencies:
10:01 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
9:45 AM Changeset in webkit [182143] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Fix iOS internal build after r182132.

  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):

9:34 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
9:30 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
9:29 AM Changeset in webkit [182142] by commit-queue@webkit.org
  • 20 edits in trunk/Source/WebInspectorUI

Web Inspector: Add more ESLint rules that reflect the current state of the code base
https://bugs.webkit.org/show_bug.cgi?id=143212

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-03-30
Reviewed by Timothy Hatcher.

  • .eslintrc:

Define some utilities as globals.
Replace "no-comma-dangle" with "comma-dangle". "no-comma-dangle" is deprecated and does not trigger in ESLint v.0.17.1
Set "new-cap" to 0 due to the usage of "WebInspector.UIString".
Disable "no-redeclare" for now and enable it back as soon as block scoped let is used.
Disable "dot-notation", "no-shadow" and "no-use-before-define" due to a lot of hits.
Disable "no-inner-declarations" as this is a common pattern to save memory.

  • UserInterface/Views/ObjectTreePropertyTreeElement.js:
  • UserInterface/Models/SourceCodeLocation.js:

It's not necessary to initialize x to undefined.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:
  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
  • UserInterface/Views/TextEditor.js:
  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:

Remove unused variable x.

  • UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
  • UserInterface/Models/PropertyPath.js:
  • UserInterface/Views/RadioButtonNavigationItem.js:
  • UserInterface/Views/ReplayDashboardView.js:
  • UserInterface/Models/ScriptSyntaxTree.js:
  • UserInterface/Views/SourceCodeTextEditor.js:
  • UserInterface/Views/SourceCodeTreeElement.js:

Remove trailing and unexpected whitespace.

  • UserInterface/Views/ProbeSetDataGrid.js:
  • UserInterface/Views/TimelineRuler.js:

Add missing semicolon.

  • UserInterface/Views/TimelineDataGrid.js:
  • UserInterface/Views/TimelineRecordFrame.js:

Add missing var statement.

  • UserInterface/Views/TypeTokenView.js:

Remove unnecessary bind.

9:15 AM Changeset in webkit [182141] by jer.noble@apple.com
  • 31 edits
    4 adds in trunk

[iOS] When Web Audio is interrupted by a phone call, it cannot be restarted.
https://bugs.webkit.org/show_bug.cgi?id=143190

Reviewed by Darin Adler.

Source/WebCore:

Tests: webaudio/audiocontext-state-interrupted.html

webaudio/audiocontext-state.html

Implement the following methods and properties from the Web Audio spec:
close(), suspend(), resume(), onstatechange.

AudioContext will take more responsibility for tracking state and interruptions (and
AudioDestination will give up that responsibility). This means AudioContext must be a
MediaSessionClient, and own its own MediaSession. In return, AudioDestinationIOS and
AudioDestinationMac relinquish both.

  • Modules/webaudio/AudioContext.cpp:

(WebCore::AudioContext::AudioContext): Set default values in header.
(WebCore::AudioContext::uninitialize): Call setState() instead of setting m_state.
(WebCore::AudioContext::addReaction): Added. Append the callback to the appropriate vector for the state.
(WebCore::AudioContext::setState): Added. Fire events and resolve the appropriate reaction callbacks for the new state.
(WebCore::AudioContext::state): Return a string representing the context's state.
(WebCore::AudioContext::stop): Close the event queue.
(WebCore::AudioContext::startRendering): Call setState().
(WebCore::AudioContext::fireCompletionEvent): Call setState().
(WebCore::AudioContext::suspendContext): Added. Add reaction callback and call suspend() on the destination node.
(WebCore::AudioContext::resumeContext): Added. Add reaction callback and call resume() on the destination node.
(WebCore::AudioContext::closeContext): Added. Add reaction callback and call close() on the destination node.
(WebCore::AudioContext::suspendPlayback): Added. Suspend playback and set state to interrupted.
(WebCore::AudioContext::mayResumePlayback): Added. Conditionally resume playback.

  • bindings/js/JSAudioContextCustom.cpp:

(WebCore::JSAudioContext::suspend): Added. Create and return a new Promise object.
(WebCore::JSAudioContext::resume): Ditto.
(WebCore::JSAudioContext::close): Ditto.

  • Modules/webaudio/AudioContext.idl: Add new methods and properties.

Extensive organizational changes were made to AudioContext.h to group instance
variables together and add C++11 initializers in their declarations:

  • Modules/webaudio/AudioContext.h:

(WebCore::AudioContext::mediaType): Moved from AudioDestinationNode.
(WebCore::AudioContext::presentationType): Ditto.
(WebCore::AudioContext::canReceiveRemoteControlCommands): Ditto.
(WebCore::AudioContext::didReceiveRemoteControlCommand): Ditto.
(WebCore::AudioContext::overrideBackgroundPlaybackRestriction): Ditto.

Other changes to support the new AudioContext methods:

  • Modules/webaudio/AudioDestinationNode.h:

(WebCore::AudioDestinationNode::resume): Add empty default virtual method.
(WebCore::AudioDestinationNode::suspend): Ditto.
(WebCore::AudioDestinationNode::close): Ditto.

  • Modules/webaudio/DefaultAudioDestinationNode.cpp:

(WebCore::DefaultAudioDestinationNode::resume): Added. Pass to AudioDestination.
(WebCore::DefaultAudioDestinationNode::suspend): Ditto.
(WebCore::DefaultAudioDestinationNode::close): Ditto.

  • Modules/webaudio/DefaultAudioDestinationNode.h:
  • bindings/js/JSDOMPromise.h:

(WebCore::DeferredWrapper::resolve): Add an overload for a nullptr resolve value.

  • dom/EventNames.h: Added 'statechange'.
  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::Task::Task): Add a constructor which takes a void() callback.

Modify MediaSession, AudioSession, and MediaSessionManager to support the new
interruption behavior.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::suspendPlayback): Renamed from pausePlayback().
(WebCore::HTMLMediaElement::mayResumePlayback): Renamed from resumePlayback().

  • html/HTMLMediaElement.h:
  • platform/audio/AudioSession.cpp:

(WebCore::AudioSession::tryToSetActive): Renamed from setActive. Return true by default.
(WebCore::AudioSession::setActive): Deleted.

  • platform/audio/AudioSession.h:
  • platform/audio/MediaSession.cpp:

(WebCore::MediaSession::beginInterruption): pausePlayback() was renamed to suspendPlayback().
(WebCore::MediaSession::endInterruption): Always notify the client, telling it whether to resume.
(WebCore::MediaSession::clientWillBeginPlayback): Bail early if reentrant. Check the (new)

return value of sessionWillBeginPlayback() and remember to resume once the interruption ends.

(WebCore::MediaSession::clientWillPausePlayback): Bail early if reentrant.
(WebCore::MediaSession::pauseSession): pausePlayback() was renamed to suspendPlayback().

  • platform/audio/MediaSession.h:
  • platform/audio/MediaSessionManager.cpp:

(WebCore::MediaSessionManager::sessionWillBeginPlayback): Return false if not allowed to break interruption or

if activating the audio session failed. Otherwise, end the interruption.

  • platform/audio/MediaSessionManager.h:
  • platform/audio/ios/AudioDestinationIOS.cpp:

(WebCore::AudioDestinationIOS::AudioDestinationIOS): m_mediaSession was removed.
(WebCore::AudioDestinationIOS::start): Ditto.

  • platform/audio/ios/AudioDestinationIOS.h:
  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSession::tryToSetActive): Renamed from setActive. Return false if the AVAudioSession could not be activated.
(WebCore::AudioSession::setActive): Deleted.

  • platform/audio/ios/MediaSessionManagerIOS.h:
  • platform/audio/ios/MediaSessionManagerIOS.mm:

(WebCore::MediaSessionManageriOS::sessionWillBeginPlayback): Do not update the now playing info if session playback was blocked.

  • platform/audio/mac/AudioDestinationMac.cpp:

(WebCore::AudioDestinationMac::AudioDestinationMac): m_mediaSession was removed.

  • platform/audio/mac/AudioDestinationMac.h:
  • platform/audio/mac/AudioSessionMac.cpp:

(WebCore::AudioSession::tryToSetActive): Renamed from setActive(). Return true by default.
(WebCore::AudioSession::setActive): Deleted.

  • platform/audio/mac/MediaSessionManagerMac.cpp:

(MediaSessionManager::updateSessionState): No longer attempt to activate the session, as this is done

MediaSessionManager::sessionWillBeginPlayback().

  • testing/Internals.cpp:

(WebCore::Internals::setMediaSessionRestrictions): Add "InterruptedPlaybackNotPermitted".

LayoutTests:

  • webaudio/audiocontext-state-expected.txt: Added.
  • webaudio/audiocontext-state-interrupted-expected.txt: Added.
  • webaudio/audiocontext-state-interrupted.html: Added.
  • webaudio/audiocontext-state.html: Added.
8:32 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
8:23 AM Changeset in webkit [182140] by youenn.fablet@crf.canon.fr
  • 7 edits in trunk

[Streams API] Error storage should be moved from source to stream/reader
https://bugs.webkit.org/show_bug.cgi?id=143048

Reviewed by Benjamin Poulain.

This patch removes error storage from the source as it should be stored at the stream level as error access goes through the reader.
It removes abstract ReadableStreamSource::isErrored and the storage of JavaScript errors from ReadableStreamJSSource.

Existing tests cover most of the changes.
Added test case for creating readable stream from empty JS object.

  • Modules/streams/ReadableStreamSource.h: Removing isErrored().
  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::constructJSReadableStream): Added JS stream constructor parameters checking.

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::ReadableStreamJSSource::ReadableStreamJSSource): Removed JS stream constructor parameters checking.
(WebCore::ReadableStreamJSSource::start): Changed prototype of start so that start can throw errors directly.
(WebCore::ReadableStreamJSSource::setInternalError): Deleted.

  • bindings/js/ReadableStreamJSSource.h: Removed m_error, setInternalError and updated start declaration.
8:22 AM Changeset in webkit [182139] by Philippe Normand
  • 5 edits in trunk/Source/WebCore

[GStreamer] More GL shared context fixes
https://bugs.webkit.org/show_bug.cgi?id=143216

Reviewed by Carlos Garcia Campos.

Moved the GLX/EGL context tests to be done at runtime rather than
using build-time macros because in the GTK port at least, both EGL
and GLX support are mutually exclusive. Also fixed a couple wrong
defines (USE(GLES2) doesn't exist).

  • platform/graphics/GLContext.h: Simple utility method to check if

the platform context is compatible with EGL APIs or not.

  • platform/graphics/egl/GLContextEGL.h:

(WebCore::GLContextEGL::isEGLContext):

  • platform/graphics/glx/GLContextGLX.h:

(WebCore::GLContextGLX::isEGLContext):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::ensureGstGLContext): Do
runtime checks and properly ensure GLES2/GL API usage.

6:17 AM Changeset in webkit [182138] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[EFL][GTK] WebKit2's generate-forwarding-headers.pl should fail if clashing headers found
https://bugs.webkit.org/show_bug.cgi?id=142909

Reviewed by Philippe Normand.

  • Scripts/generate-forwarding-headers.pl:

(createForwardingHeadersForFramework):

5:41 AM Changeset in webkit [182137] by commit-queue@webkit.org
  • 4 edits in trunk

Source/WebCore:
Add support for deleting emoji on GTK
https://bugs.webkit.org/show_bug.cgi?id=141419

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-30
Reviewed by Gustavo Noronha Silva.

The code for deleting special group of characters was specific for
COCOA and EFL platforms. The fix consists on add GTK to the #if
preprocessor directive.

  • rendering/RenderText.cpp:

(WebCore::RenderText::previousOffsetForBackwardDeletion):

LayoutTests:
Update expectations for delete-emoji test since the bug is fixed now.
https://bugs.webkit.org/show_bug.cgi?id=141419

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-30
Reviewed by Gustavo Noronha Silva.

  • platform/gtk/TestExpectations:
5:22 AM Changeset in webkit [182136] by Antti Koivisto
  • 6 edits in trunk/Source/WebKit2

Include cache entry worth to json dump
https://bugs.webkit.org/show_bug.cgi?id=143202

Reviewed by Darin Adler.

This is useful for analyzing cache performance.
Also include the body size, total item count and average worth.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::asJSON):

  • NetworkProcess/cache/NetworkCacheEntry.h:
  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::traverse):

Add flags for specificying what sort of information is needed.

(WebKit::NetworkCache::computeRecordWorth):

Factor to a function.

(WebKit::NetworkCache::deletionProbability):

  • NetworkProcess/cache/NetworkCacheStorage.h:
12:25 AM Changeset in webkit [182135] by commit-queue@webkit.org
  • 6 edits
    1 delete in trunk/Tools

Unreviewed, rolling out r182119.
https://bugs.webkit.org/show_bug.cgi?id=143196

problem with syntax (Requested by youenn on #webkit).

Reverted changeset:

"[buildbot] clean-build script should remove untracked files
and revert local changes too"
https://bugs.webkit.org/show_bug.cgi?id=142400
http://trac.webkit.org/changeset/182119

12:20 AM Changeset in webkit [182134] by benjamin@webkit.org
  • 5 edits
    2 adds in trunk

Start the features.json files
https://bugs.webkit.org/show_bug.cgi?id=143207

Reviewed by Darin Adler.

Source/JavaScriptCore:

Start the features.json files to have something to experiment
with for the UI.

  • features.json: Added.

Source/WebCore:

  • features.json: Added.

Tools:

I kept the style checking light. We'll have to figure
what is the best format for each field.

  • Scripts/webkitpy/style/checker.py:

(CheckerDispatcher._create_checker):

  • Scripts/webkitpy/style/checkers/jsonchecker.py:

(JSONContributorsChecker.check):
(JSONFeaturesChecker):
(JSONFeaturesChecker.check):

12:11 AM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)

Mar 29, 2015:

9:17 PM Changeset in webkit [182133] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Fix iOS scrollperf crash after a web process crash
https://bugs.webkit.org/show_bug.cgi?id=143110

Reviewed by Dean Jackson.

When we destroy the drawing area after a web process crash, we also need to destroy
the scrollingPerformanceData which has a reference to the drawing area.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::resetState):

9:13 PM Changeset in webkit [182132] by Simon Fraser
  • 24 edits in trunk/Source

Convert arguments to ScrollingCoordinator functions to references
https://bugs.webkit.org/show_bug.cgi?id=143198

Reviewed by Darin Adler.

Convert all the FrameView* and ScrollableArea* arguments to ScrollingCoordinator functions to
references, and use references in a few other places.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::wheelEventHandlerCountChanged):

  • loader/HistoryController.cpp:

(WebCore::HistoryController::restoreScrollPositionAndViewState):

  • page/DebugPageOverlays.cpp:

(WebCore::NonFastScrollableRegionOverlay::updateRegion):

  • page/Frame.cpp:

(WebCore::Frame::willDetachPage):

  • page/FrameView.cpp:

(WebCore::FrameView::prepareForDetach):
(WebCore::FrameView::addSlowRepaintObject):
(WebCore::FrameView::removeSlowRepaintObject):
(WebCore::FrameView::addViewportConstrainedObject):
(WebCore::FrameView::removeViewportConstrainedObject):
(WebCore::FrameView::requestScrollPositionUpdate):
(WebCore::FrameView::performPostLayoutTasks):
(WebCore::FrameView::scrollableAreaSetChanged):
(WebCore::FrameView::wheelEvent):

  • page/Page.cpp:

(WebCore::Page::nonFastScrollableRects):

  • page/Page.h:
  • page/scrolling/AsyncScrollingCoordinator.cpp:

(WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::AsyncScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
(WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::AsyncScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
(WebCore::AsyncScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
(WebCore::AsyncScrollingCoordinator::ensureRootStateNodeForFrameView):
(WebCore::AsyncScrollingCoordinator::updateMainFrameScrollLayerPosition):
(WebCore::AsyncScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView):

  • page/scrolling/AsyncScrollingCoordinator.h:
  • page/scrolling/ScrollingCoordinator.cpp:

(WebCore::ScrollingCoordinator::pageDestroyed):
(WebCore::ScrollingCoordinator::coordinatesScrollingForFrameView):
(WebCore::ScrollingCoordinator::computeNonFastScrollableRegion):
(WebCore::ScrollingCoordinator::frameViewWheelEventHandlerCountChanged):
(WebCore::ScrollingCoordinator::frameViewHasSlowRepaintObjectsDidChange):
(WebCore::ScrollingCoordinator::frameViewFixedObjectsDidChange):
(WebCore::ScrollingCoordinator::scrollLayerForScrollableArea):
(WebCore::ScrollingCoordinator::scrollLayerForFrameView):
(WebCore::ScrollingCoordinator::headerLayerForFrameView):
(WebCore::ScrollingCoordinator::footerLayerForFrameView):
(WebCore::ScrollingCoordinator::counterScrollingLayerForFrameView):
(WebCore::ScrollingCoordinator::insetClipLayerForFrameView):
(WebCore::ScrollingCoordinator::contentShadowLayerForFrameView):
(WebCore::ScrollingCoordinator::rootContentLayerForFrameView):
(WebCore::ScrollingCoordinator::frameViewRootLayerDidChange):
(WebCore::ScrollingCoordinator::hasVisibleSlowRepaintViewportConstrainedObjects):
(WebCore::ScrollingCoordinator::synchronousScrollingReasons):
(WebCore::ScrollingCoordinator::updateSynchronousScrollingReasons):
(WebCore::ScrollingCoordinator::setForceSynchronousScrollLayerPositionUpdates):
(WebCore::ScrollingCoordinator::shouldUpdateScrollLayerPositionSynchronously):
(WebCore::ScrollingCoordinator::replaySessionStateDidChange):
(WebCore::ScrollingCoordinator::synchronousScrollingReasonsAsText):

  • page/scrolling/ScrollingCoordinator.h: Align the bitmask enums to make mistakes easier to spot.

(WebCore::ScrollingCoordinator::frameViewLayoutUpdated):
(WebCore::ScrollingCoordinator::frameViewNonFastScrollableRegionChanged):
(WebCore::ScrollingCoordinator::requestScrollPositionUpdate):
(WebCore::ScrollingCoordinator::handleWheelEvent):
(WebCore::ScrollingCoordinator::willDestroyScrollableArea):
(WebCore::ScrollingCoordinator::scrollableAreaScrollLayerDidChange):
(WebCore::ScrollingCoordinator::scrollableAreaScrollbarLayerDidChange):
(WebCore::ScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView):

  • page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.cpp:

(WebCore::ScrollingCoordinatorCoordinatedGraphics::scrollableAreaScrollLayerDidChange):
(WebCore::ScrollingCoordinatorCoordinatedGraphics::willDestroyScrollableArea):
(WebCore::ScrollingCoordinatorCoordinatedGraphics::requestScrollPositionUpdate):

  • page/scrolling/coordinatedgraphics/ScrollingCoordinatorCoordinatedGraphics.h:
  • page/scrolling/ios/ScrollingCoordinatorIOS.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.h:
  • page/scrolling/mac/ScrollingCoordinatorMac.mm:

(WebCore::ScrollingCoordinatorMac::handleWheelEvent):

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::~RenderLayer):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateOverflowControlsLayers):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::updateBacking):
(WebCore::RenderLayerCompositor::hasCoordinatedScrolling):
(WebCore::RenderLayerCompositor::scrollingLayerDidChange):
(WebCore::RenderLayerCompositor::updateLayerForHeader):
(WebCore::RenderLayerCompositor::updateLayerForFooter):
(WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
(WebCore::RenderLayerCompositor::destroyRootLayer):
(WebCore::RenderLayerCompositor::updateScrollCoordinationForThisFrame):
(WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
(WebCore::RenderLayerCompositor::willRemoveScrollingLayerWithBacking):
(WebCore::RenderLayerCompositor::didAddScrollingLayer):

  • testing/Internals.cpp:

(WebCore::Internals::nonFastScrollableRects):

Source/WebKit2:

  • WebProcess/Scrolling/RemoteScrollingCoordinator.h:
  • WebProcess/Scrolling/RemoteScrollingCoordinator.mm:

(WebKit::RemoteScrollingCoordinator::coordinatesScrollingForFrameView):

8:43 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
8:12 PM Changeset in webkit [182131] by benjamin@webkit.org
  • 4 edits in trunk/Source/WebCore

Use :matches() instead of :-webkit-any() for the sections and headings default style
https://bugs.webkit.org/show_bug.cgi?id=143197

Reviewed by Darin Adler.

We no longer need to use the :-webkit-any() hack in the default stylesheet.

The pseudo class :matches() also support correct specificity. This is not observable
since those selector do not conflict with any other rule in the default stylesheet.

  • css/CSSSelector.h:
  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::determineLinkMatchType):

  • css/html.css:

(:matches(article, aside, nav, section) h1):
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) h1):
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1):
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1):
(:matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) :matches(article, aside, nav, section) h1):
(:-webkit-any(article,aside,nav,section) h1): Deleted.
(:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1): Deleted.
(:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1): Deleted.
(:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1): Deleted.
(:-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) :-webkit-any(article,aside,nav,section) h1): Deleted.

8:10 PM Changeset in webkit [182130] by benjamin@webkit.org
  • 5 edits
    6 adds in trunk

currentColor computes to the same colour on all elements, even if 'color' is inherited differently
https://bugs.webkit.org/show_bug.cgi?id=133420

Reviewed by Darin Adler.

Source/WebCore:

When resolving a style with the help of the property cache, we were
completely ignoring currentColor.

Since you can set currentColor on properties that are not inherited,
those properties would just be copied from the cached style, which
may have a completely different inherited color.

This pacth fixes the issue by preventing any MatchResult from hitting
the cache if it contains any non-inherited property that would require
resolution by the cache:
-Using the inherit value.
-Using the currentColor value.

Tests: fast/css/currentColor-on-before-after-pseudo-elements.html

fast/css/currentColor-style-update-reftest.html
fast/css/currentColor-value-style-update.html

  • css/ElementRuleCollector.cpp:

(WebCore::ElementRuleCollector::addElementStyleProperties):
(WebCore::ElementRuleCollector::matchAuthorRules):
(WebCore::ElementRuleCollector::matchUserRules):
(WebCore::ElementRuleCollector::matchUARules):

  • css/StyleResolver.cpp:

(WebCore::StyleResolver::MatchResult::addMatchedProperties):
(WebCore::StyleResolver::styleForKeyframe):
(WebCore::StyleResolver::pseudoStyleForElement):
(WebCore::StyleResolver::styleForPage):
(WebCore::StyleResolver::findFromMatchedPropertiesCache):
(WebCore::StyleResolver::addToMatchedPropertiesCache):
(WebCore::extractDirectionAndWritingMode):
(WebCore::StyleResolver::applyMatchedProperties):
(WebCore::StyleResolver::CascadedProperties::addStyleProperties):
(WebCore::StyleResolver::CascadedProperties::addMatches):

  • css/StyleResolver.h:

(WebCore::StyleResolver::MatchResult::matchedProperties):

LayoutTests:

  • fast/css/currentColor-on-before-after-pseudo-elements-expected.html: Added.
  • fast/css/currentColor-on-before-after-pseudo-elements.html: Added.
  • fast/css/currentColor-style-update-reftest-expected.html: Added.
  • fast/css/currentColor-style-update-reftest.html: Added.
  • fast/css/currentColor-value-style-update-expected.txt: Added.
  • fast/css/currentColor-value-style-update.html: Added.
8:05 PM Changeset in webkit [182129] by benjamin@webkit.org
  • 10 edits in trunk/Source/WebCore

Enable :any-link by default
https://bugs.webkit.org/show_bug.cgi?id=143201

Reviewed by Sam Weinig.

The pseudo class :any-link has been stable for a while. This patch enables
it by default and remove the -webkit- prefix on the default style.

  • css/CSSDefaultStyleSheets.cpp:
  • css/CSSSelector.cpp:

(WebCore::CSSSelector::selectorText):

  • css/CSSSelector.h:
  • css/RuleSet.cpp:

(WebCore::RuleSet::addRule):

  • css/SelectorChecker.cpp:

(WebCore::SelectorChecker::checkOne):

  • css/SelectorChecker.h:

(WebCore::SelectorChecker::isCommonPseudoClassSelector):

  • css/SelectorPseudoClassAndCompatibilityElementMap.in:
  • css/html.css:

(a:any-link):
(a:any-link:active):
(:any-link img):
(a:-webkit-any-link): Deleted.
(a:-webkit-any-link:active): Deleted.
(:-webkit-any-link img): Deleted.

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::addPseudoClassType):
(WebCore::SelectorCompiler::SelectorCodeGenerator::generateElementLinkMatching):

7:27 PM Changeset in webkit [182128] by gyuyoung.kim@samsung.com
  • 4 edits
    1 delete in trunk

[CMake] Update old CMakeList.txt in gtest
https://bugs.webkit.org/show_bug.cgi?id=143192

Reviewed by Darin Adler.

CMake ports have used cmake/gtest/CMakeLists.txt instead of ThirdParty/test/CMakeLists.txt
in order to build gtest. However it looks ThirdParty/test/CMakeLists.txt won't be used anymore.
So this patch moves cmake/gtest/CMakeLists.txt to ThirdPart/test/CMakeLists.txt, and use it.

.:

  • Source/CMakeLists.txt:
  • Source/cmake/gtest/CMakeLists.txt: Removed.

Source/ThirdParty:

  • gtest/CMakeLists.txt:
7:00 PM Changeset in webkit [182127] by commit-queue@webkit.org
  • 12 edits in trunk/Source/WebCore

nullptr cleanup in RenderFooBox classes
https://bugs.webkit.org/show_bug.cgi?id=143182

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-03-29
Reviewed by Ryosuke Niwa.

No new tests, no behavior changes

Replace 0 with nullptr in RenderFooBox classes.

  • rendering/RenderBox.cpp:

(WebCore::RenderBox::RenderBox):
(WebCore::RenderBox::paintFillLayer):
(WebCore::RenderBox::shrinkLogicalWidthToAvoidFloats):
(WebCore::RenderBox::containingBlockAvailableLineWidthInRegion):
(WebCore::RenderBox::renderBoxRegionInfo):
(WebCore::RenderBox::computePositionedLogicalWidthUsing):
(WebCore::RenderBox::computePositionedLogicalHeightUsing):
(WebCore::RenderBox::computePositionedLogicalWidthReplaced):
(WebCore::RenderBox::positionForPoint):
(WebCore::RenderBox::layoutOverflowRectForPropagation):

  • rendering/RenderBox.h:

(WebCore::RenderBox::setMarginBefore):
(WebCore::RenderBox::setMarginAfter):
(WebCore::RenderBox::setMarginStart):
(WebCore::RenderBox::setMarginEnd):
(WebCore::RenderBox::createAnonymousBoxWithSameTypeAs):
(WebCore::RenderBox::setInlineBoxWrapper):

  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::willBeDestroyed):
(WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
(WebCore::RenderBoxModelObject::paintBorderSides):
(WebCore::RenderBoxModelObject::firstLetterRemainingText):

  • rendering/RenderBoxModelObject.h:

(WebCore::RenderBoxModelObject::moveChildTo):
(WebCore::RenderBoxModelObject::moveAllChildrenTo):
(WebCore::RenderBoxModelObject::moveChildrenTo):

  • rendering/RenderDeprecatedFlexibleBox.cpp:

(WebCore::FlexBoxIterator::reset):
(WebCore::FlexBoxIterator::next):

  • rendering/RenderDeprecatedFlexibleBox.h:
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::firstLineBaseline):
(WebCore::RenderFlexibleBox::computeMainAxisExtentForChild):

  • rendering/RenderLineBoxList.cpp:

(WebCore::RenderLineBoxList::deleteLineBoxTree):
(WebCore::RenderLineBoxList::extractLineBox):
(WebCore::RenderLineBoxList::deleteLineBoxes):
(WebCore::RenderLineBoxList::checkConsistency):

  • rendering/RenderLineBoxList.h:

(WebCore::RenderLineBoxList::RenderLineBoxList):

  • rendering/RenderListBox.cpp:

(WebCore::RenderListBox::enclosingScrollableArea):
(WebCore::RenderListBox::setHasVerticalScrollbar):

  • rendering/RenderListBox.h:
6:03 PM Changeset in webkit [182126] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS WK2] WKContentView should implement _selectionClipRect
https://bugs.webkit.org/show_bug.cgi?id=143143
rdar://problem/20330075

Reviewed by Benjamin Poulain.

UIKit checks if the text delegate responds to this selector
to retrieve the clipping rectangle for the editable element
where the selection is being create.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _selectionClipRect]):

5:33 PM Changeset in webkit [182125] by Darin Adler
  • 3 edits
    2 adds in trunk

HTMLCollection caches incorrect length if item(0) is called before length on an empty collection
https://bugs.webkit.org/show_bug.cgi?id=143203
Source/WebCore:

rdar://problem/18460462

Reviewed by Antti Koivisto.

Test: fast/dom/htmlcollection-length-after-item-2.html

  • dom/CollectionIndexCache.h:

(CollectionIndexCache::nodeAt): If we hit the end looking for index 0, cache a length
of 0, not a length of 1.

LayoutTests:

Reviewed by Antti Koivisto.

  • fast/dom/htmlcollection-length-after-item-2-expected.txt: Added.
  • fast/dom/htmlcollection-length-after-item-2.html: Added.
4:43 PM Changeset in webkit [182124] by Antti Koivisto
  • 4 edits in trunk/Source/WebKit2

Use st_mtime instead of st_atime to track file access time
https://bugs.webkit.org/show_bug.cgi?id=143200

Reviewed by Darin Adler.

On OS X atime updates automatically on read so calling Storage::traverse() would always ends up updating access times
for all cache entries to the current time. This would make entry worth computation produce unexpected results.
We update mtime manually on successful cache retrieve only so switching to it fixes the problem.

  • NetworkProcess/cache/NetworkCacheFileSystemPosix.h:

(WebKit::NetworkCache::fileTimes):
(WebKit::NetworkCache::updateFileModificationTimeIfNeeded):
(WebKit::NetworkCache::updateFileAccessTimeIfNeeded): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::updateFileModificationTime):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::deletionProbability):
(WebKit::NetworkCache::Storage::updateFileAccessTime): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:
2:54 PM Changeset in webkit [182123] by mmaxfield@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[Win] Addresing post-review comment after r182122
https://bugs.webkit.org/show_bug.cgi?id=143189

Unreviewed.

1:56 PM Changeset in webkit [182122] by mmaxfield@apple.com
  • 8 edits
    1 copy in trunk/Source/JavaScriptCore

[Win] Allow building JavaScriptCore without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=143189

Reviewed by Brent Fulgham.

Paths like /usr/bin/ don't exist on Windows.
Hashbangs don't work on Windows. Instead we must explicitly call the executable.
Prefixing commands with environment variables doesn't work on Windows.
Windows doesn't have 'cmp'
Windows uses 'del' instead of 'rm'
Windows uses 'type NUL' intead of 'touch'

  • DerivedSources.make:
  • JavaScriptCore.vcxproj/JavaScriptCoreGenerated.make:
  • JavaScriptCore.vcxproj/LLInt/LLIntAssembly/LLIntAssembly.make:
  • JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.pl:
  • JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/LLIntDesiredOffsets.make:
  • JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.pl:
  • JavaScriptCore.vcxproj/build-generated-files.pl:
  • UpdateContents.py: Copied from Source/JavaScriptCore/JavaScriptCore.vcxproj/LLInt/LLIntDesiredOffsets/build-LLIntDesiredOffsets.pl.
1:40 PM Changeset in webkit [182121] by Darin Adler
  • 124 edits in trunk/Source/WebCore

Remove unneeded SVG code, including most isSupportedAttribute functions
https://bugs.webkit.org/show_bug.cgi?id=143194

Reviewed by Antti Koivisto.

  • Removed most implementations of isSupportedAttribute. Others can be removed in future patches. The ones left behind are now all private static member functions. It's dangerous for them to be public because they tend to indicate which attributes are supported at a particular level in the class hierarchy and they are not virtual functions; might want to rethink the function name if we keep any of these long term.
  • Removed unneeded includes, especially of Attr.h and Attribute.h.
  • Changed most parseAttribute and svgAttributeChanged functions so they no longer rely on checking attribute names against a set. Also removed lots of unneeded calls to SVGLangSpace::parseAttribute, which is called by SVGElement::parseAttribute and need not be called by derived classes.
  • Removed return values from parseAttribute functions. Skipping other parseAttribute logic is not an important optimization and makes functions needlessly complex.
  • Moved use of InstanceInvalidationGuard closer to where they are needed. Eventually we may be able to remove many of these.
  • Used auto in a few places where the same type is repeated twice on the same line of code, and auto makes it a bit smaller.
  • Got rid of protected sections in some final classes; doesn't make sense to combine these two. Also moved a few functions from protected to private in other classes.
  • Made a number of functions into static member functions in the base classes such as SVGLangSpace; they were not making any use of the object, and so it was wasteful to compile them as non-static member functions.
  • rendering/svg/RenderSVGImage.cpp: Removed unneeded includes.
  • svg/SVGAElement.cpp: Removed unneeded includes.

(WebCore::SVGAElement::isSupportedAttribute): Deleted.
(WebCore::SVGAElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGAElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGAElement.h: Removed isSupportedAttribute.
  • svg/SVGAnimateMotionElement.cpp: Removed unneeded includes.

(WebCore::SVGAnimateMotionElement::isSupportedAttribute): Deleted.
(WebCore::SVGAnimateMotionElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGAnimateMotionElement.h: Removed isSupportedAttribute.
  • svg/SVGAnimateTransformElement.cpp:

(WebCore::SVGAnimateTransformElement::isSupportedAttribute): Deleted.
(WebCore::SVGAnimateTransformElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGAnimateTransformElement.h: Removed isSupportedAttribute.
  • svg/SVGAnimationElement.cpp:

(WebCore::SVGAnimationElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGCircleElement.cpp:

(WebCore::SVGCircleElement::isSupportedAttribute): Deleted.
(WebCore::SVGCircleElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGCircleElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGCircleElement.h: Removed isSupportedAttribute.
  • svg/SVGClipPathElement.cpp: Removed unneeded includes.

(WebCore::SVGClipPathElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGComponentTransferFunctionElement.cpp:

(WebCore::SVGComponentTransferFunctionElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGCursorElement.cpp: Removed unneeded includes.

(WebCore::SVGCursorElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGCursorElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGElement.cpp: Removed unneeded includes.
  • svg/SVGEllipseElement.cpp: Removed unneeded includes.

(WebCore::SVGEllipseElement::isSupportedAttribute): Deleted.
(WebCore::SVGEllipseElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGEllipseElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGEllipseElement.h: Removed isSupportedAttribute.
  • svg/SVGExternalResourcesRequired.cpp: Removed unneeded includes.

(WebCore::SVGExternalResourcesRequired::parseAttribute): Don't return a boolean.

  • svg/SVGExternalResourcesRequired.h: Don't return a boolean.
  • svg/SVGFEBlendElement.cpp: Removed unneeded includes.

(WebCore::SVGFEBlendElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEBlendElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEBlendElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEBlendElement.h: Removed isSupportedAttribute.
  • svg/SVGFEColorMatrixElement.cpp: Removed unneeded includes.

(WebCore::SVGFEColorMatrixElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEColorMatrixElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEColorMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEColorMatrixElement.h: Removed isSupportedAttribute.
  • svg/SVGFEComponentTransferElement.cpp: Removed unneeded includes.

(WebCore::SVGFEComponentTransferElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEComponentTransferElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGFEComponentTransferElement.h: Removed unneeded includes.
  • svg/SVGFECompositeElement.cpp: Removed unneeded includes.

(WebCore::SVGFECompositeElement::isSupportedAttribute): Deleted.
(WebCore::SVGFECompositeElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFECompositeElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFECompositeElement.h:
  • svg/SVGFEConvolveMatrixElement.cpp: Removed unneeded includes.

(WebCore::SVGFEConvolveMatrixElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEConvolveMatrixElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEConvolveMatrixElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEConvolveMatrixElement.h:
  • svg/SVGFEDiffuseLightingElement.cpp: Removed unneeded includes.

(WebCore::SVGFEDiffuseLightingElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDiffuseLightingElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDiffuseLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEDiffuseLightingElement.h:
  • svg/SVGFEDisplacementMapElement.cpp: Removed unneeded includes.

(WebCore::SVGFEDisplacementMapElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDisplacementMapElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDisplacementMapElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEDisplacementMapElement.h:
  • svg/SVGFEDropShadowElement.cpp: Removed unneeded includes.

(WebCore::SVGFEDropShadowElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEDropShadowElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEDropShadowElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEDropShadowElement.h:
  • svg/SVGFEFloodElement.cpp: Removed unneeded includes.
  • svg/SVGFEGaussianBlurElement.cpp: Removed unneeded includes.

(WebCore::SVGFEGaussianBlurElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEGaussianBlurElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEGaussianBlurElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEGaussianBlurElement.h:
  • svg/SVGFEImageElement.cpp: Removed unneeded includes.

(WebCore::SVGFEImageElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEImageElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEImageElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEImageElement.h:
  • svg/SVGFELightElement.cpp: Removed unneeded includes.

(WebCore::SVGFELightElement::isSupportedAttribute): Deleted.
(WebCore::SVGFELightElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFELightElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFELightElement.h:
  • svg/SVGFEMergeNodeElement.cpp: Removed unneeded includes.

(WebCore::SVGFEMergeNodeElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEMergeNodeElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEMergeNodeElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEMergeNodeElement.h:
  • svg/SVGFEMorphologyElement.cpp: Removed unneeded includes.

(WebCore::SVGFEMorphologyElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEMorphologyElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEMorphologyElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEMorphologyElement.h:
  • svg/SVGFEOffsetElement.cpp: Removed unneeded includes.

(WebCore::SVGFEOffsetElement::isSupportedAttribute): Deleted.
(WebCore::SVGFEOffsetElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFEOffsetElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFEOffsetElement.h:
  • svg/SVGFESpecularLightingElement.cpp: Removed unneeded includes.

(WebCore::SVGFESpecularLightingElement::isSupportedAttribute): Deleted.
(WebCore::SVGFESpecularLightingElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFESpecularLightingElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFESpecularLightingElement.h:
  • svg/SVGFETileElement.cpp: Removed unneeded includes.

(WebCore::SVGFETileElement::isSupportedAttribute): Deleted.
(WebCore::SVGFETileElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFETileElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFETileElement.h:
  • svg/SVGFETurbulenceElement.cpp: Removed unneeded includes.

(WebCore::SVGFETurbulenceElement::isSupportedAttribute): Deleted.
(WebCore::SVGFETurbulenceElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGFETurbulenceElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGFETurbulenceElement.h:
  • svg/SVGFilterElement.cpp: Removed unneeded includes.

(WebCore::SVGFilterElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGFilterPrimitiveStandardAttributes.cpp: Removed unneeded includes.

(WebCore::SVGFilterPrimitiveStandardAttributes::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGFilterPrimitiveStandardAttributes.h: Removed isSupportedAttribute and also moved a

couple functions out of the class definition.

  • svg/SVGFitToViewBox.cpp: Removed unneeded includes.
  • svg/SVGFontFaceElement.cpp: Removed unneeded includes.
  • svg/SVGFontFaceUriElement.cpp: Removed unneeded includes.
  • svg/SVGForeignObjectElement.cpp: Removed unneeded includes.

(WebCore::SVGForeignObjectElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGGElement.cpp: Removed unneeded includes.

(WebCore::SVGGElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGGlyphElement.cpp: Removed unneeded includes.
  • svg/SVGGlyphRefElement.cpp: Removed unneeded includes.

(WebCore::SVGGlyphRefElement::hasValidGlyphElement): Rewrote to use is<> instead of hasTagName.
(WebCore::SVGGlyphRefElement::parseAttribute): Don't use return value from SVGURIReference::parseAttribute.

  • svg/SVGGradientElement.cpp: Removed unneeded includes.

(WebCore::SVGGradientElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGGraphicsElement.cpp: Removed unneeded includes.

(WebCore::SVGGraphicsElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGImageElement.cpp: Removed unneeded includes.

(WebCore::SVGImageElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGLangSpace.cpp: Removed unneeded includes.

(WebCore::SVGLangSpace::parseAttribute): Removed the return value.

  • svg/SVGLangSpace.h: Converted functions to static member functions and removed the

return value from parseAttribute.

  • svg/SVGLineElement.cpp: Removed unneeded includes.

(WebCore::SVGLineElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGLinearGradientElement.cpp: Removed unneeded includes.

(WebCore::SVGLinearGradientElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGMPathElement.cpp: Removed unneeded includes.

(WebCore::SVGMPathElement::isSupportedAttribute): Deleted.
(WebCore::SVGMPathElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGMPathElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGMPathElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions

private instead of protected.

  • svg/SVGMarkerElement.cpp: Removed unneeded includes.

(WebCore::SVGMarkerElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGMaskElement.cpp: Removed unneeded includes.

(WebCore::SVGMaskElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGPathElement.cpp: Removed unneeded includes.

(WebCore::SVGPathElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGPatternElement.cpp: Removed unneeded includes.

(WebCore::SVGPatternElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGPolyElement.cpp: Removed unneeded includes.

(WebCore::SVGPolyElement::isSupportedAttribute): Deleted.
(WebCore::SVGPolyElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGPolyElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGPolyElement.h:
  • svg/SVGRadialGradientElement.cpp: Removed unneeded includes.

(WebCore::SVGRadialGradientElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGRectElement.cpp: Removed unneeded includes.

(WebCore::SVGRectElement::isSupportedAttribute): Deleted.
(WebCore::SVGRectElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGRectElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGRectElement.h:
  • svg/SVGSVGElement.cpp: Removed unneeded includes.

(WebCore::SVGSVGElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGScriptElement.cpp: Removed unneeded includes.
  • svg/SVGStopElement.cpp: Removed unneeded includes.

(WebCore::SVGStopElement::isSupportedAttribute): Deleted.
(WebCore::SVGStopElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGStopElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGStopElement.h: Removed isSupportedAttribute.
  • svg/SVGStyleElement.cpp: Removed unneeded includes.

(WebCore::SVGStyleElement::isSupportedAttribute): Deleted.
(WebCore::SVGStyleElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGStyleElement.h: Removed isSupportedAttribute.
  • svg/SVGSymbolElement.cpp: Removed unneeded includes.

(WebCore::SVGSymbolElement::isSupportedAttribute): Deleted.
(WebCore::SVGSymbolElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGSymbolElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGSymbolElement.h: Removed isSupportedAttribute.
  • svg/SVGTRefElement.cpp: Removed unneeded includes.

(WebCore::SVGTRefElement::isSupportedAttribute): Deleted.
(WebCore::SVGTRefElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTRefElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGTRefElement.h: Removed isSupportedAttribute and made didNotifySubtreeInsertions

private instead of protected.

  • svg/SVGTests.cpp: Removed unneeded includes.

(WebCore::SVGTests::parseAttribute): Removed return value.

  • svg/SVGTests.h: Removed return value of parseAttribute.
  • svg/SVGTextContentElement.cpp: Removed unneeded includes.

(WebCore::SVGTextContentElement::collectStyleForPresentationAttribute): Don't use
isSupportedAttribute. Also removed global to optimize comparing attribute value against
the string "preserve".
(WebCore::SVGTextContentElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTextContentElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGTextContentElement.h: Made isSupportedAttribute private instead of protected.
  • svg/SVGTextElement.cpp: Removed unneeded includes.
  • svg/SVGTextPathElement.cpp: Removed unneeded includes.

(WebCore::SVGTextPathElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGTextPositioningElement.cpp: Removed unneeded includes.

(WebCore::SVGTextPositioningElement::isSupportedAttribute): Deleted.
(WebCore::SVGTextPositioningElement::parseAttribute): Don't use isSupportedAttribute.
(WebCore::SVGTextPositioningElement::svgAttributeChanged): Don't use isSupportedAttribute.

  • svg/SVGTextPositioningElement.h: Removed isSupportedAttribute and made some functions

private insetad of protected.

  • svg/SVGURIReference.cpp: Removed unneeded includes.

(WebCore::SVGURIReference::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGURIReference.h:

(WebCore::SVGURIReference::isExternalURIReference):

  • svg/SVGUseElement.cpp: Removed unneeded includes.

(WebCore::SVGUseElement::parseAttribute): Don't use isSupportedAttribute.

  • svg/SVGViewElement.h: Removed isSupportedAttribute.
  • svg/animation/SVGSMILElement.cpp: Removed unneeded includes.
1:38 PM Changeset in webkit [182120] by Darin Adler
  • 42 edits in trunk/Source/WebCore

Remove unneeded includes of "Attribute.h"
https://bugs.webkit.org/show_bug.cgi?id=143195

Reviewed by Antti Koivisto.

  • css/StyleResolver.cpp:
  • html/HTMLAnchorElement.cpp:
  • html/HTMLAreaElement.cpp:
  • html/HTMLBRElement.cpp:
  • html/HTMLBaseElement.cpp:
  • html/HTMLBodyElement.cpp:
  • html/HTMLButtonElement.cpp:
  • html/HTMLCanvasElement.cpp:
  • html/HTMLDivElement.cpp:
  • html/HTMLElement.cpp:
  • html/HTMLEmbedElement.cpp:
  • html/HTMLFontElement.cpp:
  • html/HTMLFormControlElement.cpp:
  • html/HTMLFormElement.cpp:
  • html/HTMLFrameElement.cpp:
  • html/HTMLFrameElementBase.cpp:
  • html/HTMLFrameSetElement.cpp:
  • html/HTMLHRElement.cpp:
  • html/HTMLIFrameElement.cpp:
  • html/HTMLImageElement.cpp:
  • html/HTMLOListElement.cpp:
  • html/HTMLOptionElement.cpp:
  • html/HTMLParagraphElement.cpp:
  • html/HTMLParamElement.cpp:
  • html/HTMLPlugInElement.cpp:
  • html/HTMLPreElement.cpp:
  • html/HTMLProgressElement.cpp:
  • html/HTMLScriptElement.cpp:
  • html/HTMLSelectElement.cpp:
  • html/HTMLStyleElement.cpp:
  • html/HTMLTableCaptionElement.cpp:
  • html/HTMLTableCellElement.cpp:
  • html/HTMLTableColElement.cpp:
  • html/HTMLTableElement.cpp:
  • html/HTMLTablePartElement.cpp:
  • html/HTMLTextAreaElement.cpp:
  • html/HTMLTextFormControlElement.cpp:
  • html/HTMLUListElement.cpp:
  • html/HTMLVideoElement.cpp:
  • html/parser/HTMLScriptRunner.cpp:
  • inspector/InspectorNodeFinder.cpp:

Removed includes of "Attribute.h".

11:47 AM Changeset in webkit [182119] by youenn.fablet@crf.canon.fr
  • 6 edits
    1 add in trunk/Tools

[buildbot] clean-build script should remove untracked files and revert local changes too
https://bugs.webkit.org/show_bug.cgi?id=142400

Reviewed by Ryosuke Niwa.

This patch cleans the WebKit folder by deleting SCM untracked files and reverting changes for tracked files.

  • BuildSlaveSupport/clean-build:

(main): Adding call to Tools/Scripts/clean-webkit.

  • Scripts/clean-webkit: Added.

(main): Removes untracked and changed files.

  • Scripts/webkitpy/common/checkout/scm/git.py:

(Git.untracked_files): Retrieves GIT untracked files.

  • Scripts/webkitpy/common/checkout/scm/scm.py:

(SCM.untracked_files): Retrieves SVN untracked files.
(SCM):
(SCM.discard_untracked_files): Deletes untracked files/folders.

  • Scripts/webkitpy/common/checkout/scm/scm_unittest.py:

(SCMTest._shared_test_untracked_files): Unit testing for untracked files.
(test_untracked_files):
(GitSVNTest.test_untracked_files):

  • Scripts/webkitpy/common/checkout/scm/svn.py:

(SVN.untracked_files):

Mar 28, 2015:

11:58 PM Changeset in webkit [182118] by commit-queue@webkit.org
  • 6 edits in trunk/Source/JavaScriptCore

Clean up JavaScriptCore/builtins
https://bugs.webkit.org/show_bug.cgi?id=143177

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-28
Reviewed by Ryosuke Niwa.

  • builtins/ArrayConstructor.js:

(from):

  • We can compare to undefined instead of using a typeof undefined check.
  • Converge on double quoted strings everywhere.
  • builtins/ArrayIterator.prototype.js:

(next):

  • builtins/StringIterator.prototype.js:

(next):

  • Use shorthand object construction to avoid duplication.
  • Improve grammar in error messages.
  • tests/stress/array-iterators-next-with-call.js:
  • tests/stress/string-iterators.js:
  • Update for new error message strings.
7:07 PM Changeset in webkit [182117] by eric.carlson@apple.com
  • 8 edits
    1 move
    1 add in trunk/Source/WebCore

[Mac] Update for output device API change
https://bugs.webkit.org/show_bug.cgi?id=143187

Reviewed by Zalan Bujtas.

The API used for output device is being deprecated, update to the replacement.

  • WebCore.xcodeproj/project.pbxproj: Add SPI headers.
  • platform/graphics/MediaPlaybackTarget.h:

(WebCore::MediaPlaybackTarget::MediaPlaybackTarget): Update for API change.
(WebCore::MediaPlaybackTarget::setDevicePickerContext):
(WebCore::MediaPlaybackTarget::devicePickerContext):

  • platform/graphics/avfoundation/MediaPlaybackTargetMac.mm:

(WebCore::MediaPlaybackTarget::encode):
(WebCore::MediaPlaybackTarget::decode):

  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:

(WebCore::MediaPlaybackTargetPickerMac::MediaPlaybackTargetPickerMac):
(WebCore::MediaPlaybackTargetPickerMac::~MediaPlaybackTargetPickerMac):
(WebCore::MediaPlaybackTargetPickerMac::outputeDeviceAvailabilityChangedTimerFired):
(WebCore::MediaPlaybackTargetPickerMac::devicePicker):
(WebCore::MediaPlaybackTargetPickerMac::currentDeviceDidChange):
(WebCore::MediaPlaybackTargetPickerMac::stopMonitoringPlaybackTargets):
(-[WebAVOutputDeviceMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]):
(-[WebAVOutputDevicePickerMenuControllerHelper observeValueForKeyPath:ofObject:change:context:]): Deleted.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
  • platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:

(WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad):
(WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer):
(WebCore::MediaPlayerPrivateAVFoundationObjC::setWirelessPlaybackTarget):
(-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]):

  • platform/spi/cocoa/AVKitSPI.h: Copied from Source/WebCore/platform/spi/ios/AVKitSPI.h. Moved

from ios directory, added Mac includes and prototypes.

  • platform/spi/ios/AVKitSPI.h: Removed.
  • platform/spi/mac/AVFoundationSPI.h: Added.
4:17 PM Changeset in webkit [182116] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

Optimize RenderLayer::intersectsDamageRect() slightly
https://bugs.webkit.org/show_bug.cgi?id=143186

Reviewed by Zalan Bujtas.

We can early return from RenderLayer::intersectsDamageRect() if the
damageRect is empty, since nothing will intersect with the empty rect.

Slight performance gain when scrolling overflow-scroll with lots of nested,
clipping layers.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::calculateClipRects):

1:44 PM Changeset in webkit [182115] by andersca@apple.com
  • 6 edits in trunk/Source

Remove an unused SPI method from WebKitLegacy
https://bugs.webkit.org/show_bug.cgi?id=143185

Reviewed by Sam Weinig.

Source/WebCore:

  • loader/appcache/ApplicationCacheStorage.cpp:

(WebCore::ApplicationCacheStorage::storeCopyOfCache): Deleted.

  • loader/appcache/ApplicationCacheStorage.h:

Source/WebKit/mac:

  • WebView/WebDataSource.mm:

(-[WebDataSource _transferApplicationCache:]): Deleted.

  • WebView/WebDataSourcePrivate.h:
10:28 AM Changeset in webkit [182114] by saambarati1@gmail.com
  • 12 edits
    1 add in trunk/Source

Web Inspector: ES6: Better support for Symbol types in Type Profiler
https://bugs.webkit.org/show_bug.cgi?id=141257

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

ES6 introduces the new primitive type Symbol. This patch makes JSC's
type profiler support this new primitive type.

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • inspector/protocol/Runtime.json:
  • runtime/RuntimeType.cpp:

(JSC::runtimeTypeForValue):

  • runtime/RuntimeType.h:

(JSC::runtimeTypeIsPrimitive):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::addTypeInformation):
(JSC::TypeSet::dumpTypes):
(JSC::TypeSet::doesTypeConformTo):
(JSC::TypeSet::displayName):
(JSC::TypeSet::inspectorTypeSet):
(JSC::TypeSet::toJSONString):

  • runtime/TypeSet.h:

(JSC::TypeSet::seenTypes):

  • tests/typeProfiler/driver/driver.js:
  • tests/typeProfiler/symbol.js: Added.

(wrapper.foo):
(wrapper.bar):
(wrapper.bar.bar.baz):
(wrapper):

Source/WebInspectorUI:

The Web Inspector's visualization of JSC's type profiler
should have support for the Symbol type.

  • UserInterface/Models/TypeSet.js:

(WebInspector.TypeSet):
(WebInspector.TypeSet.prototype.get primitiveTypeNames):

  • UserInterface/Views/TypeTokenView.css:

TypeTokenView will display Symbol type tokens using the same color that
Symbol values are displayed as formatted values.

(.type-token-symbol):

  • UserInterface/Views/TypeTokenView.js:

(WebInspector.TypeTokenView.prototype._displayTypeName):
(WebInspector.TypeTokenView):

9:38 AM Changeset in webkit [182113] by commit-queue@webkit.org
  • 27 edits in trunk

Web Inspector: Adopt Array.prototype.includes and String.prototype.includes
https://bugs.webkit.org/show_bug.cgi?id=143176

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-28
Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • UserInterface/Base/Utilities.js:

Remove our custom implementations of Array/String contains functions.

  • UserInterface/Base/Main.js:

(WebInspector._updateContentViewForCurrentNavigationSidebar):
(WebInspector._contentBrowserCurrentContentViewDidChange):

  • UserInterface/Controllers/CodeMirrorCompletionController.js:

(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions.):
(WebInspector.CodeMirrorCompletionController.prototype._generateJavaScriptCompletions):

  • UserInterface/Controllers/CodeMirrorTokenTrackingController.js:

(WebInspector.CodeMirrorTokenTrackingController.prototype._updateHoveredTokenInfo):
(WebInspector.CodeMirrorTokenTrackingController.prototype._processJavaScriptExpression):

  • UserInterface/Controllers/FrameResourceManager.js:

(WebInspector.FrameResourceManager.prototype._extraDomainsActivated):
(WebInspector.FrameResourceManager):

  • UserInterface/Controllers/LayerTreeManager.js:

(WebInspector.LayerTreeManager.prototype.layerTreeMutations):

  • UserInterface/Controllers/StorageManager.js:

(WebInspector.StorageManager.prototype._extraDomainsActivated):
(WebInspector.StorageManager):

  • UserInterface/Models/Branch.js:

(WebInspector.Branch.prototype.addRevision):

  • UserInterface/Models/CSSKeywordCompletions.js:

(WebInspector.CSSKeywordCompletions.forProperty):

  • UserInterface/Models/CSSRule.js:

(WebInspector.CSSRule.prototype.get matchedSelectors):

  • UserInterface/Models/CSSStyleDeclaration.js:
  • UserInterface/Models/Color.js:

(WebInspector.Color.fromString):

  • UserInterface/Models/DOMNode.js:
  • UserInterface/Models/DOMNodeStyles.js:

(WebInspector.DOMNodeStyles.prototype._parseStyleDeclarationPayload):

  • UserInterface/Views/CSSStyleDeclarationSection.js:

(WebInspector.CSSStyleDeclarationSection.prototype.refresh):

  • UserInterface/Views/CSSStyleDetailsSidebarPanel.js:

(WebInspector.CSSStyleDetailsSidebarPanel.prototype._updatePseudoClassCheckboxes):
(WebInspector.CSSStyleDetailsSidebarPanel):

  • UserInterface/Views/ContentBrowser.js:

(WebInspector.ContentBrowser.prototype._updateContentViewSelectionPathNavigationItem):

  • UserInterface/Views/DOMTreeElement.js:
  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.prototype._resourceAdded):

  • UserInterface/Views/GeneralTreeElement.js:

(WebInspector.GeneralTreeElement.prototype.addClassName):
(WebInspector.GeneralTreeElement.prototype.removeClassName):

  • UserInterface/Views/LegacyConsoleMessageImpl.js:

(WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype._updateMessagesSelection):

  • UserInterface/Views/NavigationBar.js:

(WebInspector.NavigationBar.prototype._findNavigationItem):

  • UserInterface/Views/Sidebar.js:

(WebInspector.Sidebar.prototype.findSidebarPanel):
Replace contains with includes where appropriate.

LayoutTests:

  • inspector/css/pseudo-element-matches.html:
9:33 AM Changeset in webkit [182112] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Tweak node styles in ObjectTreeView
https://bugs.webkit.org/show_bug.cgi?id=143179

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-28
Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.css:

(.console-group-messages .outline-disclosure.single-node li):

  • UserInterface/Views/DOMTreeOutline.css:

(.dom-tree-outline.single-node li):
This style makes sense as a generic DOMTreeOutline style.

  • UserInterface/Views/FormattedValue.css:

(.formatted-node > .dom-tree-outline):
(.formatted-node > .dom-tree-outline ol):
(.formatted-node > .dom-tree-outline li.hovered:not(.selected) .selection):
Style for nodes in ObjectTreeView.

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.css:

(.object-tree-array-index .index-value .formatted-node .dom-tree-outline):
Styles for node in Array value.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForNode):
Address the FIXME.

4:59 AM Changeset in webkit [182111] by commit-queue@webkit.org
  • 10 edits in trunk/Source/WebCore

nullptr cleanup in InlineFooBox classes
https://bugs.webkit.org/show_bug.cgi?id=143178

Patch by Joonghun Park <jh718.park@samsung.com> on 2015-03-28
Reviewed by Csaba Osztrogonác.

No new tests, no behavior changes

Replace 0 with nullptr in InlineFooBox classes.

  • rendering/InlineBox.cpp:

(WebCore::InlineBox::prevLeafChildIgnoringLineBreak):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::removeChild):
(WebCore::InlineFlowBox::deleteLine):
(WebCore::InlineFlowBox::placeBoxesInInlineDirection):
(WebCore::InlineFlowBox::addTextBoxVisualOverflow):

  • rendering/InlineFlowBox.h:

(WebCore::InlineFlowBox::InlineFlowBox):

  • rendering/InlineTextBox.h:

(WebCore::InlineTextBox::InlineTextBox):

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::getLogicalStartBoxWithNode):
(WebCore::RootInlineBox::getLogicalEndBoxWithNode):

  • rendering/RootInlineBox.h:
  • rendering/svg/SVGInlineTextBox.cpp:

(WebCore::SVGInlineTextBox::SVGInlineTextBox):
(WebCore::SVGInlineTextBox::releasePaintingResource):
(WebCore::SVGInlineTextBox::restoreGraphicsContextAfterTextPainting):

  • rendering/svg/SVGRootInlineBox.cpp:

(WebCore::SVGRootInlineBox::closestLeafChildForPosition):
(WebCore::findFirstAndLastAttributesInVector):

  • rendering/svg/SVGRootInlineBox.h:
2:57 AM Changeset in webkit [182110] by Csaba Osztrogonác
  • 3 edits in trunk/LayoutTests

REGRESSION(r181326): It made dfg-int16array.js and dfg-int8array.js fail on AArch64 Linux
https://bugs.webkit.org/show_bug.cgi?id=142629

Unreviewed gardening, unskip now passing tests after r182091.

  • js/script-tests/dfg-int16array.js:
  • js/script-tests/dfg-int8array.js:

Mar 27, 2015:

11:01 PM Changeset in webkit [182109] by saambarati1@gmail.com
  • 3 edits
    3 adds in trunk

Deconstruction parameters are bound too late
https://bugs.webkit.org/show_bug.cgi?id=143148

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Currently, a deconstruction pattern named with the same
name as a function will shadow the function. This is
wrong. It should be the other way around.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):

LayoutTests:

  • js/regress/deconstructing-parameters-overridden-by-function-expected.txt: Added.
  • js/regress/deconstructing-parameters-overridden-by-function.html: Added.
  • js/regress/script-tests/deconstructing-parameters-overridden-by-function.js: Added.

(f):
(test):
(.arg):

10:45 PM Changeset in webkit [182108] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

More modern loops in RenderLayer.cpp
https://bugs.webkit.org/show_bug.cgi?id=143175

Reviewed by Ryosuke Niwa.

Use modern loops in more places in RenderLayer.app.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::update3DTransformedDescendantStatus):
(WebCore::RenderLayer::paint):
(WebCore::performOverlapTests):
(WebCore::RenderLayer::paintFixedLayersInNamedFlows):
(WebCore::RenderLayer::paintList):
(WebCore::RenderLayer::collectFragments):
(WebCore::RenderLayer::updatePaintingInfoForFragments):
(WebCore::RenderLayer::paintTransformedLayerIntoFragments):
(WebCore::RenderLayer::calculateClipRects):

10:45 PM Changeset in webkit [182107] by Simon Fraser
  • 2 edits in trunk/Source/WebCore

nullptr cleanup in RenderLayer
https://bugs.webkit.org/show_bug.cgi?id=143174

Reviewed by Ryosuke Niwa.

Replace 0 with nullptr in RenderLayer.cpp.

  • rendering/RenderLayer.cpp:

(WebCore::RenderLayer::filterRenderer):
(WebCore::RenderLayer::updateLayerPositionsAfterLayout):
(WebCore::RenderLayer::updateLayerPositionsAfterOverflowScroll):
(WebCore::RenderLayer::positionNewlyCreatedOverflowControls):
(WebCore::RenderLayer::enclosingOverflowClipLayer):
(WebCore::RenderLayer::enclosingCompositingLayer):
(WebCore::RenderLayer::enclosingCompositingLayerForRepaint):
(WebCore::RenderLayer::enclosingFilterLayer):
(WebCore::RenderLayer::enclosingFilterRepaintLayer):
(WebCore::RenderLayer::clippingRootForPainting):
(WebCore::RenderLayer::transparentPaintingAncestor):
(WebCore::transparencyClipBox):
(WebCore::RenderLayer::removeChild):
(WebCore::RenderLayer::removeOnlyThisLayer):
(WebCore::RenderLayer::insertOnlyThisLayer):
(WebCore::accumulateOffsetTowardsAncestor):
(WebCore::RenderLayer::enclosingScrollableArea):
(WebCore::RenderLayer::enclosingPaginationLayerInSubtree):
(WebCore::RenderLayer::enclosingElement):
(WebCore::RenderLayer::enclosingFlowThreadAncestor):
(WebCore::RenderLayer::hitTestFixedLayersInNamedFlows):
(WebCore::RenderLayer::hitTestLayer):
(WebCore::RenderLayer::hitTestTransformedLayerInFragments):
(WebCore::RenderLayer::hitTestLayerByApplyingTransform):
(WebCore::RenderLayer::hitTestList):
(WebCore::RenderLayer::updateClipRects):
(WebCore::RenderLayer::clipRects):
(WebCore::RenderLayer::calculateClipRects):

10:04 PM Changeset in webkit [182106] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: TypeProfiler doesn't work on files with ES6 Class Syntax
https://bugs.webkit.org/show_bug.cgi?id=143169

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
(WebInspector.ScriptSyntaxTree):
Add basic support for Esprima's ES6 Class/Method/Spread nodes.
There are more ES6 features that should be covered, but this
covers all the features we use in Web Inspector source, so
Type Profiling can work with our own source.

Treat Methods like getters / setters right now because their
syntax is very similiar to getters/setters. There is a bug
handling generic ES6 cleanup to better name things.

9:42 PM Changeset in webkit [182105] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught TDZ Exception with Type Profiler
https://bugs.webkit.org/show_bug.cgi?id=143167

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Views/TypePropertiesSection.js:

(WebInspector.TypePropertyTreeElement):
Avoid TDZ issue by not using "this" before "super".

  • UserInterface/Models/ScriptSyntaxTree.js:

(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
(WebInspector.ScriptSyntaxTree):
Better handle unsupported node types by returning null and avoiding an exception.

  • UserInterface/Views/SourceCodeTextEditor.js:

Fix an issue I saw once where the sourceCode was a Script itself.

9:41 PM Changeset in webkit [182104] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught exception while debugging, after performSearch callback line does not exists
https://bugs.webkit.org/show_bug.cgi?id=143172

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype.customPerformSearch.searchResultCallback):
(WebInspector.SourceCodeTextEditor.prototype.customPerformSearch):
Gracefully handle if the line does not exist.

9:18 PM Changeset in webkit [182103] by gyuyoung.kim@samsung.com
  • 6 edits in trunk

.:
[CMake] Remove unnecessary INCLUDE_IF_EXISTS macro
https://bugs.webkit.org/show_bug.cgi?id=143138

Reviewed by Csaba Osztrogonác.

INCLUDE_IF_EXISTS isn't used except for 2 places. However those uses can
be replaced with WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS.

  • Source/cmake/OptionsWindows.cmake:

Set "PORT" instead of "PORT_FALLBACK" because there is no benefit to define PORT_FALLBACK.

  • Source/cmake/WebKitMacros.cmake:

Tools:
[CMake] Remove unnecessary INCLUDE_IF_EXISTS macro
https://bugs.webkit.org/show_bug.cgi?id=143138

Reviewed by Csaba Osztrogonác.

INCLUDE_IF_EXISTS isn't used except for 2 places. However those uses can
be replaced with WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS.

  • ImageDiff/CMakeLists.txt:

Use WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS() instead of INCLUDE_IF_EXISTS.

  • WebKitTestRunner/CMakeLists.txt: ditto.
9:02 PM Changeset in webkit [182102] by rniwa@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

parse doesn't initialize the 16-bit version of the JSC parser with defaultConstructorKind
https://bugs.webkit.org/show_bug.cgi?id=143170

Reviewed by Benjamin Poulain.

Assert that we never use 16-bit version of the parser to parse a default constructor
since both base and derived default constructors should be using a 8-bit string.

  • parser/Parser.h:

(JSC::parse):

8:15 PM Changeset in webkit [182101] by yoon@igalia.com
  • 12 edits
    8 adds in trunk/Source

[TexMap] Seperate BitmapTexture related classes implementations from TextureMapper
https://bugs.webkit.org/show_bug.cgi?id=142386

Reviewed by Žan Doberšek.

TextureMapper and TextureMapperGL are bloated and tightly coupled with
BitmapTexture. We should move these classes to seperated file of their own.
Also, this patch removes friend relationship from TextureMapperGL and its
subsidiary classes.

The main purpose of this refactoring is to expose BitmapTexturePool to
renderers of platformlayers like Video and Canvas. By doing this, each
renderer can acquire textures from the global texture pool to paint
their contents directly.

Source/WebCore:

No new tests needed.

  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:

Include BitmapTextureGL and BitmapTexturePool explicitly

  • platform/graphics/texmap/BitmapTexture.cpp: Added.
  • platform/graphics/texmap/BitmapTexture.h: Added.

(WebCore::BitmapTexture::updateContents):
Exclude BitmapTexture class from TextureMapper

  • platform/graphics/texmap/BitmapTextureGL.cpp: Added.
  • platform/graphics/texmap/BitmapTextureGL.h: Added.

Exclude BitmapTextureGL class from TextureMapperGL
(WebCore::BitmapTextureGL::clipStack): Added.
Add the getter for clipStack for TextureMapperGL
(WebCore::BitmapTextureGL::Bind): Deleted.
(WebCore::BitmapTextureGL::BindAsSurface): Added.
Bind used TextureMapperGL's internal data directly to compute projection matrix as a friend class,
However, TextureMapperGL can compute projection matrix itself after binding job, so this
friend ship is not needed. Also, this patch renames Bind to BindAsSurface to remove ambiguity.

  • platform/graphics/texmap/BitmapTextureImageBuffer.cpp: Added.
  • platform/graphics/texmap/BitmapTextureImageBuffer.h: Added.

Exclude BitmapTextureImageBuffer class from TextureMapperImageBuffer

  • platform/graphics/texmap/BitmapTexturePool.cpp: Added.
  • platform/graphics/texmap/BitmapTexturePool.h: Added.

Exclude BitmapTexturePool class from TextureMapperGL
(WebCore::BitmapTexturePool::acquireTexture):
Modified to use passed GraphicsContext3D instead of TextureMapperGL to remove redundant coupling

  • platform/graphics/texmap/TextureMapper.cpp:
  • platform/graphics/texmap/TextureMapper.h:

Remove BitmapTexturePool and BitmapTexture from its implementation.

  • platform/graphics/texmap/TextureMapperGL.cpp:
  • platform/graphics/texmap/TextureMapperGL.h:

Remove BitmapTextureGL from its implementation.
(WebCore::TextureMapperGL::TextureMapperGL):
(WebCore::TextureMapperGL::clipStack):
(WebCore::TextureMapperGL::bindSurface):
(WebCore::TextureMapperGL::currentSurface):
Add a getter of the current surface for filtering operation in BitmapTextureGL.
It would be clear to move filtering operation from BitmapTextureGL to TextureMapperGL later.

(WebCore::TextureMapperGL::ClipStack):
Move inner class declaration to public.

  • platform/graphics/texmap/TextureMapperImageBuffer.cpp:
  • platform/graphics/texmap/TextureMapperImageBuffer.h:

Remove BitmapTextureImageBuffer from its implementation.

Source/WebKit2:

  • Shared/CoordinatedGraphics/WebCoordinatedSurface.cpp: Include BitmapTextureGL.h explicitly
8:09 PM Changeset in webkit [182100] by rniwa@webkit.org
  • 7 edits
    1 add in trunk/Source

ES6 Classes: Runtime error in JIT'd class calling super() with arguments and superclass has default constructor
https://bugs.webkit.org/show_bug.cgi?id=142862

Reviewed by Benjamin Poulain.

Source/JavaScriptCore:

Add a test that used to fail in DFG now that the bug has been fixed by r181993.

  • tests/stress/class-syntax-derived-default-constructor.js: Added.

Source/WebInspectorUI:

Removed the workaround for the bug since it has been fixed by r181993.

  • UserInterface/Base/Object.js:
  • UserInterface/Models/DebuggerDashboard.js:
  • UserInterface/Models/NetworkTimeline.js:
  • UserInterface/Models/ReplayDashboard.js:
  • UserInterface/Models/Revision.js:
7:56 PM Changeset in webkit [182099] by Joseph Pecoraro
  • 6 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: Add Setter Icon for ObjectTreeView
https://bugs.webkit.org/show_bug.cgi?id=143129

Reviewed by Timothy Hatcher.

  • UserInterface/Images/Pencil.svg: Added.

New icon used to indicate setter properties.

  • Localizations/en.lproj/localizedStrings.js:

Remove "Read only" and replace with "Setter".

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:

(WebInspector.ObjectTreeArrayIndexTreeElement.prototype._titleFragment):
(WebInspector.ObjectTreeArrayIndexTreeElement):

  • UserInterface/Views/ObjectTreePropertyTreeElement.js:

(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitlePropertyStyle):
(WebInspector.ObjectTreePropertyTreeElement.prototype._createTitleAPIStyle):
Update cases that created setter / getter elements.

  • UserInterface/Views/ObjectTreeBaseTreeElement.js:

(WebInspector.ObjectTreeBaseTreeElement.prototype.createGetterElement):
(WebInspector.ObjectTreeBaseTreeElement.prototype.createInteractiveGetterElement): Deleted.

  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property :matches(.getter, .setter)):
(.object-tree-property .spacer):
(.object-tree-property .getter):
(.object-tree-property .setter):
(.object-tree-property .getter + .setter):
New setter element and styles. Setters are always non-interactable right now.

7:55 PM Changeset in webkit [182098] by msaboff@apple.com
  • 9 edits in trunk/Source/JavaScriptCore

load8Signed() and load16Signed() should be renamed to avoid confusion
https://bugs.webkit.org/show_bug.cgi?id=143168

Reviewed by Benjamin Poulain.

Renamed load8Signed() to load8SignedExtendTo32() and load16Signed() to load16SignedExtendTo32().

  • assembler/MacroAssemblerARM.h:

(JSC::MacroAssemblerARM::load8SignedExtendTo32):
(JSC::MacroAssemblerARM::load16SignedExtendTo32):
(JSC::MacroAssemblerARM::load8Signed): Deleted.
(JSC::MacroAssemblerARM::load16Signed): Deleted.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16SignedExtendTo32):
(JSC::MacroAssemblerARM64::load8SignedExtendTo32):
(JSC::MacroAssemblerARM64::load16Signed): Deleted.
(JSC::MacroAssemblerARM64::load8Signed): Deleted.

  • assembler/MacroAssemblerARMv7.h:

(JSC::MacroAssemblerARMv7::load16SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load8SignedExtendTo32):
(JSC::MacroAssemblerARMv7::load16Signed): Deleted.
(JSC::MacroAssemblerARMv7::load8Signed): Deleted.

  • assembler/MacroAssemblerMIPS.h:

(JSC::MacroAssemblerMIPS::load8SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load16SignedExtendTo32):
(JSC::MacroAssemblerMIPS::load8Signed): Deleted.
(JSC::MacroAssemblerMIPS::load16Signed): Deleted.

  • assembler/MacroAssemblerSH4.h:

(JSC::MacroAssemblerSH4::load8SignedExtendTo32):
(JSC::MacroAssemblerSH4::load8):
(JSC::MacroAssemblerSH4::load16SignedExtendTo32):
(JSC::MacroAssemblerSH4::load16):
(JSC::MacroAssemblerSH4::load8Signed): Deleted.
(JSC::MacroAssemblerSH4::load16Signed): Deleted.

  • assembler/MacroAssemblerX86Common.h:

(JSC::MacroAssemblerX86Common::load8SignedExtendTo32):
(JSC::MacroAssemblerX86Common::load16SignedExtendTo32):
(JSC::MacroAssemblerX86Common::load8Signed): Deleted.
(JSC::MacroAssemblerX86Common::load16Signed): Deleted.

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitIntTypedArrayGetByVal):

6:57 PM Changeset in webkit [182097] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Use a typedef for the WKPluginLoadClientPolicy enum
https://bugs.webkit.org/show_bug.cgi?id=143161

Reviewed by Tim Horton.

  • UIProcess/API/C/WKPluginLoadPolicy.h:
5:59 PM Changeset in webkit [182096] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exceptions with Context Menus
https://bugs.webkit.org/show_bug.cgi?id=143162

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.contextMenuCleared):

5:57 PM Changeset in webkit [182095] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Disable editing in Metrics section while it is not working
https://bugs.webkit.org/show_bug.cgi?id=143165

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Views/BoxModelDetailsSectionRow.js:

(WebInspector.BoxModelDetailsSectionRow.prototype._updateMetrics.createElement):
(WebInspector.BoxModelDetailsSectionRow.prototype._applyUserInput):
Disable double click to edit while it is not working. The value setter
and add methods no longer exist.

5:56 PM Changeset in webkit [182094] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exceptions evaluating code while paused
https://bugs.webkit.org/show_bug.cgi?id=143163

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Models/CallFrame.js:

(WebInspector.CallFrame.prototype.collectScopeChainVariableNames):
We define a property named "valueForCaseInsensitiveKey" on Object.prototype
that is readonly. So we should avoid Object.prototype when building our
result list. This should probably move to a Map object eventually.

5:54 PM Changeset in webkit [182093] by commit-queue@webkit.org
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Remove unused testing properties
https://bugs.webkit.org/show_bug.cgi?id=143156

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

  • UserInterface/Views/LegacyConsoleMessageImpl.js:

(WebInspector.LegacyConsoleMessageImpl.prototype._formatMessage):

  • UserInterface/Views/Section.js:

(WebInspector.Section.prototype.get subtitleAsTextForTest): Deleted.

5:51 PM Changeset in webkit [182092] by commit-queue@webkit.org
  • 6 edits in trunk/Source/WebInspectorUI

Web Inspector: Uncaught Exception: TypeError: Attempted to assign to readonly - DOMNodeDetailsSidebarPanel.js
https://bugs.webkit.org/show_bug.cgi?id=143139

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-27
Reviewed by Timothy Hatcher.

DataGridNodes do not have a selectable setter. TreeElements do.
DataGridNodes are always selectable. Match current behavior by
removing all instances of attempting to set the selectability
which would, under strict mode, result in an error.

  • UserInterface/Views/ApplicationCacheFrameContentView.js:

(WebInspector.ApplicationCacheFrameContentView.prototype._populateDataGrid):

  • UserInterface/Views/CookieStorageContentView.js:

(WebInspector.CookieStorageContentView.prototype._rebuildTable):

  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:

(WebInspector.DOMNodeDetailsSidebarPanel.prototype._createAttributesDataGrid):
(WebInspector.DOMNodeDetailsSidebarPanel):

  • UserInterface/Views/DOMStorageContentView.js:

(WebInspector.DOMStorageContentView.prototype.reset):

  • UserInterface/Views/DataGrid.js:
5:40 PM Changeset in webkit [182091] by msaboff@apple.com
  • 5 edits in trunk

Fix flakey dfg-int8array.js and dfg-int16array.js tests for ARM64
https://bugs.webkit.org/show_bug.cgi?id=138390

Reviewed by Mark Lam.

Source/JavaScriptCore:

Changed load8Signed() and load16Signed() to only sign extend the loaded value to 32 bits
instead of 64 bits. This is what X86-64 does.

  • assembler/MacroAssemblerARM64.h:

(JSC::MacroAssemblerARM64::load16Signed):
(JSC::MacroAssemblerARM64::load8Signed):

LayoutTests:

Reenabled the tests for ARM64/iOS. Left the tests disabled for ARM64/linux and will let linux
developers test and reenable under existing but https://bugs.webkit.org/show_bug.cgi?id=142629.

  • js/script-tests/dfg-int16array.js:
  • js/script-tests/dfg-int8array.js:
4:49 PM Changeset in webkit [182090] by Chris Dumez
  • 3 edits
    1 move in trunk/Source/WebKit2

[WK2][NetworkCache] Use WTF::WorkQueue abstraction inside NetworkCacheStatistics
https://bugs.webkit.org/show_bug.cgi?id=143154

Reviewed by Antti Koivisto.

Use WTF::WorkQueue abstraction inside NetworkCacheStatistics, like we
already do in NetworkCacheStorage.

  • NetworkProcess/cache/NetworkCacheStatistics.cpp: Renamed from Source/WebKit2/NetworkProcess/cache/NetworkCacheStatisticsCocoa.mm.

(WebKit::NetworkCache::executeSQLCommand):
(WebKit::NetworkCache::executeSQLStatement):
(WebKit::NetworkCache::Statistics::open):
(WebKit::NetworkCache::Statistics::Statistics):
(WebKit::NetworkCache::Statistics::initialize):
(WebKit::NetworkCache::Statistics::bootstrapFromNetworkCache):
(WebKit::NetworkCache::Statistics::shrinkIfNeeded):
(WebKit::NetworkCache::Statistics::recordRetrievalRequest):
(WebKit::NetworkCache::Statistics::recordNotCachingResponse):
(WebKit::NetworkCache::retrieveDecisionToDiagnosticKey):
(WebKit::NetworkCache::Statistics::recordNotUsingCacheForRequest):
(WebKit::NetworkCache::storeDecisionToDiagnosticKey):
(WebKit::NetworkCache::Statistics::recordRetrievalFailure):
(WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
(WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):
(WebKit::NetworkCache::Statistics::markAsRequested):
(WebKit::NetworkCache::Statistics::writeTimerFired):
(WebKit::NetworkCache::Statistics::queryWasEverRequested):
(WebKit::NetworkCache::Statistics::clear):
(WebKit::NetworkCache::Statistics::addHashesToDatabase):
(WebKit::NetworkCache::Statistics::addStoreDecisionsToDatabase):

  • NetworkProcess/cache/NetworkCacheStatistics.h:

(WebKit::NetworkCache::Statistics::serialBackgroundIOQueue):

  • WebKit2.xcodeproj/project.pbxproj:
4:08 PM Changeset in webkit [182089] by mmaxfield@apple.com
  • 6 edits in trunk

Support building WTF on Windows without Cygwin
https://bugs.webkit.org/show_bug.cgi?id=143084

Reviewed by Brent Fulgham.

Tools:
Windows without Cygwin doesn't have curl, unzip, or grep. Luckily, Perl does all of these things.
This patch also migrates to using File::Spec->catfile() for directory separators.

  • Scripts/update-webkit-dependency:

(wanted):

  • Scripts/update-webkit-support-libs:

(wanted):
(downloadExpectedVersionNumber):
(zipFileVersion):
(toUnixPath): Deleted.

  • Scripts/webkitdirs.pm:

(determineSourceDir):
(windowsSourceSourceDir):
(windowsLibrariesDir):
(windowsOutputDir):
(checkInstalledTools):
(buildVisualStudioProject):

Source/WTF:
Windows doesn't have "touch".

  • WTF.vcxproj/WTFGenerated.make:
4:01 PM Changeset in webkit [182088] by timothy_horton@apple.com
  • 2 edits in trunk/Source/WebCore

WebProcess started by editable WKWebView spends 15% of its initialization time loading DataDetectors
https://bugs.webkit.org/show_bug.cgi?id=143142
<rdar://problem/20324495>

Reviewed by Anders Carlsson.

Calling DataDetectorsLibrary() is expensive; we should avoid doing it
until actually necessary. When loading a page that makes a caret selection,
ServicesOverlayController was calling DataDetectorsLibrary() (ignoring the fact
that a caret selection can't have any services associated with it) to avoid
crashing on systems where DataDetectors is not available. Instead, we should
first check if there's anything to do, and then check for the existence
of DataDetectors.

  • page/mac/ServicesOverlayController.mm:

(WebCore::ServicesOverlayController::buildPhoneNumberHighlights):
Build the list of phone number ranges, and bail (clearing the potential highlights)
if it is empty, before calling DataDetectorsLibrary().

(WebCore::ServicesOverlayController::buildSelectionHighlight):
Check the list of selection rects, and bail (clearing the potential highlights)
if it is empty, before calling DataDetectorsLibrary().

3:56 PM Changeset in webkit [182087] by rniwa@webkit.org
  • 5 edits in trunk/Source/WebKit2

Safari clears selection when its window gets activated via mouse down
https://bugs.webkit.org/show_bug.cgi?id=143157

Reviewed by Anders Carlsson.

The bug was caused by PlatformMouseEvent created in WebKit2 not having its event number
even though we were correctly calling setActivationEventNumber in WebPage::acceptsFirstMouse.

Fixed the bug by storing [NSEvent eventNumber] in WebMouseEvent on Mac in WebKit2 as done in WebKit1.

  • Shared/WebEvent.h:

(WebKit::WebMouseEvent::eventNumber):

  • Shared/WebEventConversion.cpp:

(WebKit::WebKit2PlatformMouseEvent::WebKit2PlatformMouseEvent):

  • Shared/WebMouseEvent.cpp:

(WebKit::WebMouseEvent::WebMouseEvent):
(WebKit::WebMouseEvent::encode):
(WebKit::WebMouseEvent::decode):

  • Shared/mac/WebEventFactory.mm:

(WebKit::WebEventFactory::createWebMouseEvent):

3:39 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
3:07 PM Changeset in webkit [182086] by andersca@apple.com
  • 5 edits in trunk/Source/WebKit2

Only do the Connection::setShouldCloseConnectionOnMachExceptions() hack where necessary
https://bugs.webkit.org/show_bug.cgi?id=143141
rdar://problem/19471284

Reviewed by Andreas Kling.

  • Platform/IPC/Connection.h:
  • Platform/IPC/mac/ConnectionMac.mm:

(IPC::Connection::platformInvalidate):
(IPC::Connection::platformInitialize):
(IPC::Connection::open):

  • Shared/ChildProcessProxy.cpp:

(WebKit::ChildProcessProxy::didFinishLaunching):

  • UIProcess/Plugins/PluginProcessProxy.cpp:

(WebKit::PluginProcessProxy::didFinishLaunching):

3:04 PM Changeset in webkit [182085] by timothy_horton@apple.com
  • 7 edits
    1 add in trunk/Source/WebKit2

Implement iOS WebKit2 PDF Find-in-Page
https://bugs.webkit.org/show_bug.cgi?id=143065
<rdar://problem/16793370>

Reviewed by Dan Bernstein.

  • Platform/spi/ios/CorePDFSPI.h:

Add some SPI.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _countStringMatches:options:maxCount:]):
(-[WKWebView _findString:options:maxCount:]):
(-[WKWebView _hideFindUI]):
If we have a custom content view, forward find-in-page methods to it.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/Cocoa/_WKFindOptions.h:

Move _WKFindOptions into its own file.

  • UIProcess/Cocoa/WKWebViewContentProvider.h:

Add find-related methods to the WKWebViewContentProvider protocol.

  • UIProcess/ios/WKPDFView.mm:

(-[WKPDFView web_initWithFrame:webView:]):
(-[WKPDFView dealloc]):
Maintain a dispatch queue for searching the PDF.

(-[WKPDFView web_setContentProviderData:suggestedFilename:]):
Fix a type.

(-[WKPDFView _ensureViewForPage:]):
Split the code to create/parent a page view out from _revalidateViews,
so that the find code can create/parent the targetted UIPDFPageView
in order to install the find highlight in it, but before it is scrolled into view.

(-[WKPDFView _revalidateViews]):
Use the stored page index instead of counting again.
Don't unparent page views that have find-in-page highlights in them, because
we won't know enough to recreate them later.

(-[WKPDFView _computePageAndDocumentFrames]):
Put the page index in PDFPageInfo, for reference elsewhere.

(-[WKPDFView _stringCompareOptionsFromWKFindOptions:]):
(-[WKPDFView _computeMatchesForString:options:maxCount:completionHandler:]):
Asynchronously (and on our serial queue) search the PDF for the given string.
We'll cache the most recent results to avoid searching more than once,
cancel existing searches when another begins (since it's a serial queue,
this ensures we'll only have one search active at a time).

(-[WKPDFView web_countStringMatches:options:maxCount:]):
Count the number of matches for the given string, and inform the FindClient
of the result.

(-[WKPDFView _didFindMatch:]):
When we find a match, create a view for it, highlight the match, and
zoom so that it's in-view.

(-[WKPDFView web_findString:options:maxCount:]):
Incrementally search the document for the given string. We do an incremental
search even if we have all of the results so that we can anchor the search
in the right place if the new string is a prefix of the old string, etc.
Wrap around appropriately when searching past the beginning or end of the
document. If we have all of the results (there were less than maxCount results),
look through the cached matches for the incrementally-found result and
report its index to the client.

(-[WKPDFView web_hideFindUI]):
Dismiss the selection and clear some state so we start the next search afresh.

  • WebKit2.xcodeproj/project.pbxproj:
3:01 PM Changeset in webkit [182084] by akling@apple.com
  • 5 edits in trunk/Source/WebKit2

WebProcessProxy should not retain WebBackForwardListItems forever.
<https://webkit.org/b/143152>
<rdar://problem/19925709>

Reviewed by Anders Carlsson.

Have WebProcessProxy actually forget about a WebBackForwardListItem after it's removed from
the WebBackForwardList.

This ensures that we don't accumulate too many of these objects, which can get quite large
due to the session state encoded in them.

We already have graceful handling of the case where an incoming IPC message references
a removed back/forward list item.

  • UIProcess/WebBackForwardList.cpp:

(WebKit::WebBackForwardList::didRemoveItem):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::backForwardRemovedItem):

  • UIProcess/WebProcessProxy.cpp:

(WebKit::WebProcessProxy::removeBackForwardItem):

  • UIProcess/WebProcessProxy.h:
2:56 PM Changeset in webkit [182083] by saambarati1@gmail.com
  • 2 edits in trunk/Source/JavaScriptCore

Add back previously broken assert from bug 141869
https://bugs.webkit.org/show_bug.cgi?id=143005

Reviewed by Michael Saboff.

  • runtime/ExceptionHelpers.cpp:

(JSC::invalidParameterInSourceAppender):

2:56 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
2:49 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
2:38 PM Changeset in webkit [182082] by Simon Fraser
  • 2 edits in trunk/Source/WebKit2

Use the correct timebase to log scrollperf blank pixel counts on iOS
https://bugs.webkit.org/show_bug.cgi?id=143149

Reviewed by Tim Horton.

MobileSafari and WebKit need to collect scrollperf data using the same timebase;
MobileSafari can't call WTF::monotonicallyIncreasingTime(), so use CFAbsoluteTimeGetCurrent()
everywhere.

  • UIProcess/Cocoa/RemoteLayerTreeScrollingPerformanceData.mm:

(WebKit::RemoteLayerTreeScrollingPerformanceData::appendBlankPixelCount):

2:32 PM Changeset in webkit [182081] by jer.noble@apple.com
  • 4 edits
    2 adds in trunk

[Mac] Safari fails to fire page "load" event with video[preload=none]
https://bugs.webkit.org/show_bug.cgi?id=143147

Reviewed by Simon Fraser.

Source/WebCore:

Test: media/video-page-load-preload-none.html

When told to load() when preload == None, set the networkState to Idle.
This causes HTMLMediaElement to set the shouldDelayLoadEvent flag to
false, and allows the page's 'load' event to fire.

Drive-by fix: add setNetworkState() and setReadyState() methods to
MediaPlayerPrivateAVFoundation, reducing a bunch of code duplication.

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.cpp:

(WebCore::MediaPlayerPrivateAVFoundation::load):
(WebCore::MediaPlayerPrivateAVFoundation::setNetworkState):
(WebCore::MediaPlayerPrivateAVFoundation::setReadyState):
(WebCore::MediaPlayerPrivateAVFoundation::updateStates):

  • platform/graphics/avfoundation/MediaPlayerPrivateAVFoundation.h:

LayoutTests:

  • media/video-page-load-preload-none-expected.txt: Added.
  • media/video-page-load-preload-none.html: Added.
2:10 PM Changeset in webkit [182080] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.4/Source/WebKit2

Merged r182045. rdar://problem/20233711

2:08 PM Changeset in webkit [182079] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.4/Source/WebKit2

Merged r182044. rdar://problem/20233711

2:07 PM Changeset in webkit [182078] by bshafiei@apple.com
  • 4 edits in tags/Safari-601.1.23.4/Source/WebKit2

Merged r182037. rdar://problem/20233711

2:02 PM Changeset in webkit [182077] by ap@apple.com
  • 2 edits in trunk/Source/WebCore

Calling crypto.webkitSubtle.generateKey causes page memory to never be released
https://bugs.webkit.org/show_bug.cgi?id=143151
rdar://problem/18940687

Reviewed by Tim Horton.

  • crypto/mac/CryptoKeyRSAMac.cpp: (WebCore::CryptoKeyRSA::generatePair): Don't.
1:41 PM Changeset in webkit [182076] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Null dereference in InbandMetadataTextTrack handling
https://bugs.webkit.org/show_bug.cgi?id=143144
<rdar://problem/18983250>

Reviewed by Eric Carlson.

  • platform/graphics/avfoundation/InbandMetadataTextTrackPrivateAVF.cpp:

(WebCore::InbandMetadataTextTrackPrivateAVF::updatePendingCueEndTimes): Check for null return value from
'client()', just like we do in all other methods.

1:39 PM Changeset in webkit [182075] by Brent Fulgham
  • 2 edits
    2 deletes in trunk/LayoutTests

Correct test results after r182012.

The test now produces identical results on all platforms, so update the root test result,
and remove custom non-matching expectations. This corrects Windows, GTK, and EFL builds, and
should not harm the Mac build.

  • accessibility/aria-toggle-button-with-title-expected.txt:
  • platform/mac/accessibility/aria-toggle-button-with-title-expected.txt: Removed.
  • platform/win/accessibility/aria-toggle-button-with-title-expected.txt: Removed.
1:17 PM Changeset in webkit [182074] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2][NetworkCache] Rename requestNeedsRevalidation() to requestRequiresRevalidation()
https://bugs.webkit.org/show_bug.cgi?id=143137

Reviewed by Antti Koivisto.

Rename requestNeedsRevalidation() to requestRequiresRevalidation() as I
think it is more accurate. It is not the request that needs revalidating.
The requests just requires us to revalidate the response.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::requestRequiresRevalidation):
(WebKit::NetworkCache::canUse):
(WebKit::NetworkCache::requestNeedsRevalidation): Deleted.

12:44 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
12:34 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
12:04 PM Changeset in webkit [182073] by oliver@apple.com
  • 13 edits in trunk/Source

Forward additional CFNetwork ATS information to child processes
https://bugs.webkit.org/show_bug.cgi?id=143136

Reviewed by Anders Carlsson.

Source/WebCore:

Declare SPI.

  • platform/spi/cf/CFNetworkSPI.h:

Source/WebKit2:

Add additional process creation parameter information, and pass it
to the child processes that actually use CFNetwork.

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformInitializeNetworkProcessCocoa):

  • Shared/Network/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • Shared/Network/NetworkProcessCreationParameters.h:
  • Shared/Plugins/PluginProcessCreationParameters.cpp:

(WebKit::PluginProcessCreationParameters::encode):
(WebKit::PluginProcessCreationParameters::decode):

  • Shared/Plugins/PluginProcessCreationParameters.h:
  • Shared/WebProcessCreationParameters.cpp:

(WebKit::WebProcessCreationParameters::encode):
(WebKit::WebProcessCreationParameters::decode):

  • Shared/WebProcessCreationParameters.h:
  • UIProcess/Cocoa/WebProcessPoolCocoa.mm:

(WebKit::WebProcessPool::platformInitializeWebProcess):
(WebKit::WebProcessPool::platformInitializeNetworkProcess):

  • UIProcess/Plugins/mac/PluginProcessProxyMac.mm:

(WebKit::PluginProcessProxy::platformInitializePluginProcess):

  • WebProcess/cocoa/WebProcessCocoa.mm:

(WebKit::WebProcess::platformInitializeWebProcess):

12:04 PM Changeset in webkit [182072] by mark.lam@apple.com
  • 2 edits in trunk/LayoutTests

Gardening: skipping inspector-protocol/debugger/setBreakpoint-dfg-and-modify-local.html until crash is fixed.
<https://webkit.org/b/143105>

Not reviewed.

11:24 AM Changeset in webkit [182071] by Chris Dumez
  • 9 edits
    2 adds in trunk

[WK2][NetworkCache] We only cache responses with status codes that are cacheable by default
https://bugs.webkit.org/show_bug.cgi?id=143125
<rdar://problem/20321172>

Reviewed by Antti Koivisto.

Source/WebCore:

Export a couple of extra symbols.

  • platform/network/ResourceResponseBase.h:

Source/WebKit2:

We Previously only cached responses with status codes that are cacheable
by default [1]. However, RFC 7234 [2] allows us to cache responses with
other status codes, as long as they have explicit headers allowing
caching:

  • 'Expires' header field
  • 'max-age' response directive

This patch updates our caching policy accordingly to improve efficiency.

[1] http://tools.ietf.org/html/rfc7231#page-48
[2] http://tools.ietf.org/html/rfc7234#section-4.3.2

Test: http/tests/cache/disk-cache/disk-cache-307-status-code.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canStore):

LayoutTests:

Add layout test to check that responses with status code 307 (which is not
cacheable by default) are cached if they have explicit expiration headers.

Also update a couple of other disk cache tests to cover heuristic
freshness (http://tools.ietf.org/html/rfc7234#section-4.2.2), relying on
'Last-Modified' header to estimate freshness if usual expiration headers
are not available.

  • http/tests/cache/disk-cache/disk-cache-204-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-204-status-code.html:
  • http/tests/cache/disk-cache/disk-cache-307-status-code-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-307-status-code.html: Added.
  • http/tests/cache/disk-cache/disk-cache-404-status-code-expected.txt:
  • http/tests/cache/disk-cache/disk-cache-404-status-code.html:
11:00 AM Changeset in webkit [182070] by Csaba Osztrogonác
  • 2 edits in trunk/LayoutTests

Unreviewed gardening.

  • js/script-tests/array-length-shortening.js: Unskip, r182058 fixed it.
10:30 AM Changeset in webkit [182069] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

HTMLMediaElement will fire 'seeked' before seek completes, leading to currentTime discontinuities.
https://bugs.webkit.org/show_bug.cgi?id=143132

Reviewed by Eric Carlson.

When seeking, if the ready state rises to >= HAVE_CURRENT_DATA, we will fire the 'seeked'
event and continue playback. However, if a media engine updates the ready state before its
seek operation actually completes, the currentTime it returns may still be the time before
the seek.

Wait until both the ready state rises to HAVE_CURRENT_DATA and m_player->seeking() returns
false before firing the 'seeked' event.

  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::parseAttribute):

10:27 AM Changeset in webkit [182068] by ggaren@apple.com
  • 28 edits in trunk/Source

Make some more objects use FastMalloc
https://bugs.webkit.org/show_bug.cgi?id=143122

Reviewed by Csaba Osztrogonác.

Source/JavaScriptCore:

  • API/JSCallbackObject.h:
  • heap/IncrementalSweeper.h:
  • jit/JITThunks.h:
  • runtime/JSGlobalObjectDebuggable.h:
  • runtime/RegExpCache.h:

Source/WebCore:

  • Modules/geolocation/GeolocationController.h:
  • Modules/geolocation/NavigatorGeolocation.h:
  • Modules/indexeddb/DOMWindowIndexedDatabase.h:
  • Modules/notifications/NotificationController.h:
  • Modules/webdatabase/DatabaseServer.h:
  • css/CSSFontFaceSource.h:
  • html/HTMLMediaSession.h:
  • inspector/InspectorIndexedDBAgent.h:
  • inspector/InspectorReplayAgent.h:
  • page/CaptionUserPreferencesMediaAF.h:
  • page/PageConsoleClient.h:
  • page/PageDebuggable.h:
  • page/animation/CSSPropertyAnimation.cpp:
  • page/mac/ServicesOverlayController.h:
  • platform/RemoteCommandListener.h:
  • platform/Timer.h:
  • platform/audio/MediaSessionManager.h:
  • platform/mac/SystemSleepListenerMac.h:
  • platform/mac/ThemeMac.h:
  • rendering/svg/RenderSVGResourceSolidColor.h:
  • replay/ReplayController.h:
10:02 AM Changeset in webkit [182067] by commit-queue@webkit.org
  • 4 edits
    2 adds in trunk

FEMorphology::platformApplyGeneric() should bail out if the radius is less than or equal to zero.
https://bugs.webkit.org/show_bug.cgi?id=142885.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-03-27
Reviewed by Dean Jackson.

Source/WebCore:

FEMorphology class implementation code clean up.

Tests: svg/filters/feMorphology-radius-cases.svg

  • platform/graphics/filters/FEMorphology.cpp:

(WebCore::shouldSupersedeExtremum): Reuse code instead of repeating it and
use < and > instead of =< and >=.

(WebCore::pixelArrayIndex): Returns the array index of a pixel in an image
buffer, given: position(x, y), image width and the color channel.

(WebCore::columnExtremum): Returns the extremum of a column of pixels.

(WebCore::kernelExtremum): Returns the extremum of a filter kernel.

(WebCore::FEMorphology::platformApplyGeneric): Apply some code clean-up.
The kernel size should be equal to radius of the filter. The extra pixel
was causing the resulted image to be asymmetric in some cases.

(WebCore::FEMorphology::platformApplyDegenerate):
(WebCore::FEMorphology::platformApplySoftware): After applying scaling, we
still need to check the resulted radius is negative (overflow case) or less
than one (zero radius case) and treat these cases differently.

(WebCore::FEMorphology::morphologyOperator): Deleted.
(WebCore::FEMorphology::radiusX): Deleted.
(WebCore::FEMorphology::radiusY): Deleted.

  • platform/graphics/filters/FEMorphology.h:

(WebCore::FEMorphology::morphologyOperator):
(WebCore::FEMorphology::radiusX):
(WebCore::FEMorphology::radiusY):
Move a single line functions from the source file to the header file.

LayoutTests:

  • svg/filters/feMorphology-radius-cases-expected.svg: Added.
  • svg/filters/feMorphology-radius-cases.svg: Added.

Test different cases for radius of the feMorphology filter. There are three
cases for the radius:

  1. radius < 0: This is an error case, the source image should not be rendered.
  2. radius = 0: This case is treated as if the filter never exists.
  3. radius > 0: If the scaled radius is > 0, the filter is applied.
10:00 AM Changeset in webkit [182066] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.4/Source/WebCore

Merged r182052. rdar://problem/20263463

9:59 AM Changeset in webkit [182065] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

Fix WinCairo bot.
https://bugs.webkit.org/show_bug.cgi?id=143086

Patch by Alex Christensen <achristensen@webkit.org> on 2015-03-27
Reviewed by Brent Fulgham.

  • Scripts/webkitdirs.pm:

(buildVisualStudioProject):
(runSvnUpdateAndResolveChangeLogs):
Use ActivePerl-friendly perl.

9:49 AM Changeset in webkit [182064] by Antti Koivisto
  • 4 edits
    2 moves in trunk/Source/WebCore

Move CacheValidation to platform
https://bugs.webkit.org/show_bug.cgi?id=143133

Reviewed by Chris Dumez.

It deals with platform types only and is currently violating layering.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/cache/CacheValidation.cpp: Removed.
  • loader/cache/CacheValidation.h: Removed.
  • platform/network/CacheValidation.cpp: Copied from Source/WebCore/loader/cache/CacheValidation.cpp.
  • platform/network/CacheValidation.h: Copied from Source/WebCore/loader/cache/CacheValidation.h.
9:42 AM Changeset in webkit [182063] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

URTBF after r182059 to fix the EFL build.

  • TestWebKitAPI/CMakeLists.txt:
9:15 AM Changeset in webkit [182062] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Unreviewed, rolling out r177896.
https://bugs.webkit.org/show_bug.cgi?id=142978

Loading libgstclutter.so in-process hangs web process
(Requested by mcatanzaro on #webkit).

Reverted changeset:

"[GStreamer] Disable gst-plugin-scanner if seccomp filters are
enabled"
https://bugs.webkit.org/show_bug.cgi?id=140069
http://trac.webkit.org/changeset/177896

8:29 AM Changeset in webkit [182061] by bshafiei@apple.com
  • 5 edits in tags/Safari-601.1.23.4/Source

Versioning.

8:26 AM Changeset in webkit [182060] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.23.4

New tag.

8:13 AM Changeset in webkit [182059] by Antti Koivisto
  • 11 edits
    2 adds in trunk

Respect cache-control directives in request
https://bugs.webkit.org/show_bug.cgi?id=143121
Source/WebCore:

rdar://problem/19714040

Reviewed by Chris Dumez.

Test: http/tests/cache/disk-cache/disk-cache-request-headers.html

  • loader/cache/CacheValidation.cpp:

(WebCore::isCacheHeaderSeparator):
(WebCore::isControlCharacter):
(WebCore::trimToNextSeparator):
(WebCore::parseCacheHeader):
(WebCore::parseCacheControlDirectives):

Factor Cache-control parsing here so it can be used for both requests and responses.

  • loader/cache/CacheValidation.h:
  • platform/network/ResourceRequestBase.h:
  • platform/network/ResourceResponseBase.cpp:

(WebCore::ResourceResponseBase::ResourceResponseBase):
(WebCore::ResourceResponseBase::parseCacheControlDirectives):
(WebCore::ResourceResponseBase::cacheControlContainsNoCache):
(WebCore::ResourceResponseBase::cacheControlContainsNoStore):
(WebCore::ResourceResponseBase::cacheControlContainsMustRevalidate):
(WebCore::ResourceResponseBase::cacheControlMaxAge):
(WebCore::isCacheHeaderSeparator): Deleted.
(WebCore::isControlCharacter): Deleted.
(WebCore::trimToNextSeparator): Deleted.
(WebCore::parseCacheHeader): Deleted.

  • platform/network/ResourceResponseBase.h:

Source/WebKit2:

rdar://problem/19714040

Reviewed by Chris Dumez.

Better support for https://tools.ietf.org/html/rfc7234#section-5.2.1

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canUse):

Consider requests with Cache-control: no-cache and max-age=0 expired.

(WebKit::NetworkCache::canStore):

Don't store requests with Cache-control: no-store.

(WebKit::NetworkCache::Cache::store):

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheStatisticsCocoa.mm:

(WebKit::NetworkCache::storeDecisionToDiagnosticKey):

LayoutTests:

Reviewed by Chris Dumez.

  • http/tests/cache/disk-cache/disk-cache-request-headers-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-request-headers.html: Added.
7:28 AM Changeset in webkit [182058] by msaboff@apple.com
  • 3 edits
    3 adds in trunk

Objects with numeric properties intermittently get a phantom 'length' property
https://bugs.webkit.org/show_bug.cgi?id=142792

Reviewed by Csaba Osztrogonác.

Source/JavaScriptCore:

Fixed a > (greater than) that should be a >> (right shift) in the code that disassembles
test and branch instructions. This function is used for linking tbz/tbnz branches between
two seperately JIT'ed sections of code. Sometime we'd create a bogus tbz instruction in
the failure case checks in the GetById array length stub created for "obj.length" access.
If the failure case code address was at a negative offset from the stub, we'd look for bit 1
being set when we should have been looking for bit 0.

  • assembler/ARM64Assembler.h:

(JSC::ARM64Assembler::disassembleTestAndBranchImmediate):

LayoutTests:

New regression test.

  • js/regress-142792-expected.txt: Added.
  • js/regress-142792.html: Added.
  • js/script-tests/regress-142792.js: Added.

(isArrayLike):
(filter):

4:08 AM Changeset in webkit [182057] by Yusuke Suzuki
  • 8 edits
    2 adds in trunk/Source/JavaScriptCore

Insert exception check around toPropertyKey call
https://bugs.webkit.org/show_bug.cgi?id=142922

Reviewed by Geoffrey Garen.

In some places, exception check is missing after/before toPropertyKey.
However, since it calls toString, it's observable to users,

Missing exception checks in Object.prototype methods can be
observed since it would be overridden with toObject(null/undefined) errors.
We inserted exception checks after toPropertyKey.

Missing exception checks in GetById related code can be
observed since it would be overridden with toObject(null/undefined) errors.
In this case, we need to insert exception checks before/after toPropertyKey
since RequireObjectCoercible followed by toPropertyKey can cause exceptions.

JSValue::get checks null/undefined and raise an exception if |this| is null or undefined.
However, we need to check whether the baseValue is object coercible before executing JSValue::toPropertyKey.
According to the spec, we first perform RequireObjectCoercible and check the exception.
And second, we perform ToPropertyKey and check the exception.
Since JSValue::toPropertyKey can cause toString call, this is observable to users.
For example, if the target is not object coercible,
ToPropertyKey should not be executed, and toString should not be executed by ToPropertyKey.
So the order of observable actions (RequireObjectCoercible and ToPropertyKey) should be correct to the spec.

This patch introduces JSValue::requireObjectCoercible and use it because of the following 2 reasons.

  1. Using toObject instead of requireObjectCoercible produces unnecessary wrapper object.

toObject converts primitive types into wrapper objects.
But it is not efficient since wrapper objects are not necessary
if we look up methods from primitive values's prototype. (using synthesizePrototype is better).

  1. Using the result of toObject is not correct to the spec.

To align to the spec correctly, we cannot use JSObject::get
by using the wrapper object produced by the toObject suggested in (1).
If we use JSObject that is converted by toObject, getter will be called by using this JSObject as |this|.
It is not correct since getter should be called with the original |this| value that may be primitive types.

So in this patch, we use JSValue::requireObjectCoercible
to check the target is object coercible and raise an error if it's not.

  • dfg/DFGOperations.cpp:
  • jit/JITOperations.cpp:

(JSC::getByVal):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::requireObjectCoercible):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncPropertyIsEnumerable):

  • tests/stress/exception-in-to-property-key-should-be-handled-early-in-object-methods.js: Added.

(shouldThrow):
(if):

  • tests/stress/exception-in-to-property-key-should-be-handled-early.js: Added.

(shouldThrow):
(.):

3:31 AM Changeset in webkit [182056] by vjaquez@igalia.com
  • 5 edits in trunk

[GStreamer] share GL context in pipeline, part 2
https://bugs.webkit.org/show_bug.cgi?id=143049

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/OptionsGTK.cmake: USE_GSTREAMER_GL is set only if

OpenGL/ES2 is found and GLX/EGL is found too.

Source/WebCore:

This patch, instead of cluttering the GstGL attributes creation in
::handleSyncMessage(), creates a new method ::ensureGstGLContext(),
where those attributes are defined. This method is guarded by
USE(GSTREAMER_GL)

::handlSyncMessage() shall return nothing, according to GStreamer
documentation, not a boolean.

The GstGL attributes are now GRefPtr<> to avoid memory leaks.

The GstGLAPI and GstGLPlatform are now set given by the pre-processor
directives, and the code in ::ensureGstGLContext() is simpler.

No new tests because this is platform specific and it depends in the
run-time availability and configurations of GstGL elements.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
Don't initialise the GstGL attributes since are GRefPtr<>
(WebCore::MediaPlayerPrivateGStreamer::handleSyncMessage): Changed the
signature to use void instead of gboolean.
(WebCore::MediaPlayerPrivateGStreamer::ensureGstGLContext): New method.

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
12:26 AM Changeset in webkit [182055] by timothy@apple.com
  • 15 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert more misc View classes to ES6
https://bugs.webkit.org/show_bug.cgi?id=143128

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/CompletionSuggestionsView.js:
  • UserInterface/Views/ComputedStyleDetailsPanel.js:
  • UserInterface/Views/DashboardContainerView.js:
  • UserInterface/Views/DashboardView.js:
  • UserInterface/Views/DebuggerDashboardView.js:
  • UserInterface/Views/DefaultDashboardView.js:
  • UserInterface/Views/FilterBarButton.js:
  • UserInterface/Views/MetricsStyleDetailsPanel.js:
  • UserInterface/Views/ObjectPreviewView.js:
  • UserInterface/Views/ObjectTreeView.js:
  • UserInterface/Views/QuickConsole.js:
  • UserInterface/Views/ReplayDashboardView.js:
  • UserInterface/Views/RulesStyleDetailsPanel.js:
  • UserInterface/Views/StyleDetailsPanel.js:

Converted to ES6 classes.

12:26 AM Changeset in webkit [182054] by timothy@apple.com
  • 4 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert TextEditor classes to ES6
https://bugs.webkit.org/show_bug.cgi?id=143127

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

Removed a comment about const, we can't use it in strict mode / classes.

  • UserInterface/Views/SourceCodeTextEditor.js:
  • UserInterface/Views/TextEditor.js:

Converted to ES6 classes.

Mar 26, 2015:

11:48 PM Changeset in webkit [182053] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: clicking on console record while REPL is focused does not select a new record
https://bugs.webkit.org/show_bug.cgi?id=142171

Reviewed by Timothy Hatcher.

  • UserInterface/Views/LogContentView.js:

(WebInspector.LogContentView.prototype._mousedown):

11:36 PM Changeset in webkit [182052] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebCore

Optimized Fullscreen fails to cleanup because of no longer necessary release of m_playerController in exitFullscreen()
https://bugs.webkit.org/show_bug.cgi?id=143120

Patch by Jeremy Jones <jeremyj@apple.com> on 2015-03-26
Reviewed by Eric Carlson.

We used to release m_playerController in WebVideoFullscreenInterfaceAVKit::exitFullscreen() in order to make sure
media state was reset. This is no longer necessary as we now have a way the model can explicitly request resetting the
media state via resetMediaState(). m_playerController is already released in
WebVideoFullscreenInterfaceAVKit::cleanupFullscreenInternal(). Releasing it prematurely can actually prevent the exit
fullscreen process from completing successfully.

  • platform/ios/WebVideoFullscreenInterfaceAVKit.mm:

(WebVideoFullscreenInterfaceAVKit::exitFullscreen):

9:41 PM Changeset in webkit [182051] by Alan Bujtas
  • 3 edits
    2 adds in trunk

Inline continuation code should not take anonymous containing wrapper granted.
https://bugs.webkit.org/show_bug.cgi?id=133312

Reviewed by Dave Hyatt.

It's wrong to assume that when RenderInline is part of an inline continuation, its containing block
is an anonymous wrapper and its sibling might be a block level renderer.
When the inline continuation is no longer needed, for example when the block level renderer that initiated the continuation
is detached from the render tree, the inline renderes still continue to form continuation.(however they no longer require
anonymous wrappers)

Source/WebCore:

Test: fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html

  • rendering/RenderInline.cpp:

(WebCore::updateStyleOfAnonymousBlockContinuations):
(WebCore::RenderInline::styleDidChange):

LayoutTests:

  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation-expected.txt: Added.
  • fast/inline/crash-when-position-property-is-changed-and-no-longer-in-continuation.html: Added.
7:55 PM Changeset in webkit [182050] by Joseph Pecoraro
  • 3 edits
    1 add in trunk/Source/JavaScriptCore

WebContent Crash when instantiating class with Type Profiling enabled
https://bugs.webkit.org/show_bug.cgi?id=143037

Reviewed by Ryosuke Niwa.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::emitMoveEmptyValue):
We cannot profile the type of an uninitialized empty JSValue.
Nor do we expect this to be necessary, since it is effectively
an unseen undefined value. So add a way to put the empty value
without profiling.

(JSC::BytecodeGenerator::emitMove):
Add an assert to try to catch this issue early on, and force
callers to explicitly use emitMoveEmptyValue instead.

  • tests/typeProfiler/classes.js: Added.

(wrapper.Base):
(wrapper.Derived):
(wrapper):
Add test coverage both for this case and classes in general.

7:24 PM Changeset in webkit [182049] by jhoneycutt@apple.com
  • 3 edits in trunk/Source/WebKit2

iOS file upload panel menu items need icons
<https://bugs.webkit.org/show_bug.cgi?id=143042>
<rdar://problem/20178678>

Reviewed by Andy Estes.

  • Platform/spi/ios/UIKitSPI.h:

Declare new SPI methods _UIImageGetWebKitTakePhotoOrVideoIcon and
_UIImageGetWebKitPhotoLibraryIcon().

  • UIProcess/ios/forms/WKFileUploadPanel.mm:

(photoLibraryIcon):
(cameraIcon):
If UIKit SPI exists, use it. Otherwise, return nil.

(-[WKFileUploadPanel _showDocumentPickerMenu]):
Use icons.

6:53 PM Changeset in webkit [182048] by Andres Gomez
  • 2 edits
    14 adds in trunk/Source/WebInspectorUI

[GTK] Web Inspector: New Images for Console Types
https://bugs.webkit.org/show_bug.cgi?id=142301

Reviewed by Joseph Pecoraro.

Add more free icons and for the Web Inspector in GTK+.

  • UserInterface/Images/gtk/Eye.svg: Added.
  • UserInterface/Images/gtk/Frames.png: Added.
  • UserInterface/Images/gtk/Frames@2x.png: Added.
  • UserInterface/Images/gtk/FramesLarge.png: Added.
  • UserInterface/Images/gtk/FramesLarge@2x.png: Added.
  • UserInterface/Images/gtk/Reload.svg:
  • UserInterface/Images/gtk/ReloadFull.svg: Added.
  • UserInterface/Images/gtk/TypeBoolean.svg: Added.
  • UserInterface/Images/gtk/TypeNull.svg: Added.
  • UserInterface/Images/gtk/TypeNumber.svg: Added.
  • UserInterface/Images/gtk/TypeObject.svg: Added.
  • UserInterface/Images/gtk/TypeRegex.svg: Added.
  • UserInterface/Images/gtk/TypeString.svg: Added.
  • UserInterface/Images/gtk/TypeSymbol.svg: Added.
  • UserInterface/Images/gtk/TypeUndefined.svg: Added.
6:42 PM Changeset in webkit [182047] by Joseph Pecoraro
  • 22 edits in trunk

Web Inspector: ES6: Provide a better view for Classes in the console
https://bugs.webkit.org/show_bug.cgi?id=142999

Reviewed by Timothy Hatcher.

Source/JavaScriptCore:

  • inspector/protocol/Runtime.json:

Provide a new subtype enum "class". This is a subtype of type
"function", all other subtypes are subtypes of object types.
For a class, the frontend will immediately want to get the prototype
to enumerate its methods, so include the classPrototype.

  • inspector/JSInjectedScriptHost.cpp:

(Inspector::JSInjectedScriptHost::subtype):
Denote class construction functions as "class" subtypes.

  • inspector/InjectedScriptSource.js:

Handling for the new "class" type.

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedFunctionExecutable::isClassConstructorFunction):

  • runtime/Executable.h:

(JSC::FunctionExecutable::isClassConstructorFunction):

  • runtime/JSFunction.h:
  • runtime/JSFunctionInlines.h:

(JSC::JSFunction::isClassConstructorFunction):
Check if this function is a class constructor function. That information
is on the UnlinkedFunctionExecutable, so plumb it through to JSFunction.

Source/WebInspectorUI:

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject):
(WebInspector.RemoteObject.fromPrimitiveValue):
(WebInspector.RemoteObject.fromPayload):
(WebInspector.RemoteObject.prototype.get classPrototype):
(WebInspector.RemoteObject.prototype.isClass):
Update our RemoteObject model object for the new subtype
and its unique properties.

  • UserInterface/Views/FormattedValue.js:

(WebInspector.FormattedValue.createElementForTypesAndValue):
(WebInspector.FormattedValue.createObjectTreeOrFormattedValueForRemoteObject):
Better handle "class", as it is a new function subtype.

  • UserInterface/Views/LegacyConsoleMessageImpl.js:

(WebInspector.LegacyConsoleMessageImpl):
(WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsObject):
Format a "class" with ObjectTreeView.

  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
  • UserInterface/Views/ObjectTreeBaseTreeElement.js:
  • UserInterface/Views/ObjectTreePropertyTreeElement.css:

(.object-tree-property .getter.disabled):
(.object-tree-property .getter:not(.disabled):hover):
(.object-tree-property .getter:hover): Deleted.

  • UserInterface/Views/ObjectTreePropertyTreeElement.js:

In ClassAPI mode, you cannot invoke a getter since we don't have
an instance to invoke it on. So disable interactivity with getters.

  • UserInterface/Views/ObjectTreeView.js:

(WebInspector.ObjectTreeView):
Update the modes to include an API mode for instances and classes.

(WebInspector.ObjectTreeView.defaultModeForObject):

  • UserInterface/Views/SourceCodeTextEditor.js:

(WebInspector.SourceCodeTextEditor.prototype._showPopoverForObject):
Simplify ObjectTree construction to automatically determine mode based
on the RemoteObject that was provided.

  • Localizations/en.lproj/localizedStrings.js:

"Getter" tooltip.

LayoutTests:

  • inspector/model/remote-object-expected.txt:
  • inspector/model/remote-object.html:

Update the test to include coverage of the new "class" subtype of "function".

6:02 PM Changeset in webkit [182046] by timothy_horton@apple.com
  • 11 edits in trunk

REGRESSION (r181358 and r181507): Lots of sites think that we support touch events on OS X
https://bugs.webkit.org/show_bug.cgi?id=142888
<rdar://problem/20227304>

Reviewed by Beth Dakin.

  • dom/Document.idl:
  • dom/Element.idl:
  • html/HTMLBodyElement.idl:
  • html/HTMLFrameSetElement.idl:
  • page/DOMWindow.idl:

Re-conditionalize a lot of event listeners; sites test ("ontouchstart" in window), which
is not covered by NotEnumerable, and so r181358 and r181507 broke a bunch of sites
(apple.com, blaze.com, anything using nicescroll.js, etc.) by causing them to think
that (Mac) Safari was touch-enabled.

  • fast/dom/event-handler-attributes-expected.txt:
  • fast/dom/event-handler-attributes.html:
  • fast/events/event-attribute-expected.txt:
  • platform/win/fast/events/event-attribute-expected.txt:

Revert some changes to these tests and their results.

5:13 PM Changeset in webkit [182045] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

OS X build fix after r182037.

Unreviewed.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _addFontPanelObserver]):
(-[WKView removeWindowObservers]):
(-[WKView observeValueForKeyPath:ofObject:change:context:]):

5:08 PM Changeset in webkit [182044] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

iOS build fix after r182037.

Unreviewed.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setEditable:]):

4:41 PM Changeset in webkit [182043] by ggaren@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Function.prototype.toString should not decompile the AST
https://bugs.webkit.org/show_bug.cgi?id=142853

Reviewed by Darin Adler.

Following up on Darin's review comments.

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

4:38 PM Changeset in webkit [182042] by timothy@apple.com
  • 45 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert TreeElement classes to ES6
https://bugs.webkit.org/show_bug.cgi?id=143111

Reviewed by Joseph Pecoraro.

  • UserInterface/Views/ApplicationCacheFrameTreeElement.js:
  • UserInterface/Views/ApplicationCacheManifestTreeElement.js:
  • UserInterface/Views/BreakpointTreeElement.js:
  • UserInterface/Views/CallFrameTreeElement.js:
  • UserInterface/Views/ContentFlowTreeElement.js:
  • UserInterface/Views/CookieStorageTreeElement.js:
  • UserInterface/Views/DOMStorageTreeElement.js:
  • UserInterface/Views/DOMTreeElement.js:
  • UserInterface/Views/DOMTreeOutline.js:
  • UserInterface/Views/DatabaseHostTreeElement.js:
  • UserInterface/Views/DatabaseTableTreeElement.js:
  • UserInterface/Views/DatabaseTreeElement.js:
  • UserInterface/Views/FolderTreeElement.js:
  • UserInterface/Views/FolderizedTreeElement.js:
  • UserInterface/Views/FrameTreeElement.js:
  • UserInterface/Views/GeneralTreeElement.js:
  • UserInterface/Views/IndexedDatabaseHostTreeElement.js:
  • UserInterface/Views/IndexedDatabaseObjectStoreIndexTreeElement.js:
  • UserInterface/Views/IndexedDatabaseObjectStoreTreeElement.js:
  • UserInterface/Views/IndexedDatabaseTreeElement.js:
  • UserInterface/Views/LegacyConsoleMessageImpl.js:
  • UserInterface/Views/LogTreeElement.js:
  • UserInterface/Views/NavigationSidebarPanel.js:
  • UserInterface/Views/ObjectTreeArrayIndexTreeElement.js:
  • UserInterface/Views/ObjectTreeBaseTreeElement.js:
  • UserInterface/Views/ObjectTreeMapEntryTreeElement.js:
  • UserInterface/Views/ObjectTreePropertyTreeElement.js:
  • UserInterface/Views/ObjectTreeSetIndexTreeElement.js:
  • UserInterface/Views/ObjectTreeView.js:
  • UserInterface/Views/ProfileNodeTreeElement.js:
  • UserInterface/Views/PropertiesSection.js:
  • UserInterface/Views/ResourceTreeElement.js:
  • UserInterface/Views/ScriptTreeElement.js:
  • UserInterface/Views/SearchResultTreeElement.js:
  • UserInterface/Views/SourceCodeTimelineTreeElement.js:
  • UserInterface/Views/SourceCodeTreeElement.js:
  • UserInterface/Views/SourceMapResourceTreeElement.js:
  • UserInterface/Views/StorageTreeElement.js:
  • UserInterface/Views/TimelineDataGrid.js:
  • UserInterface/Views/TimelineRecordTreeElement.js:
  • UserInterface/Views/TreeElementStatusButton.js:
  • UserInterface/Views/TreeOutline.js:
  • UserInterface/Views/TreeOutlineDataGridSynchronizer.js:
  • UserInterface/Views/TypePropertiesSection.js:

Converted to ES6 classes where possible.

4:37 PM Changeset in webkit [182041] by timothy@apple.com
  • 17 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert sidebar classes to ES6
https://bugs.webkit.org/show_bug.cgi?id=143108

Reviewed by Joseph Pecoraro.

  • UserInterface/Models/KeyboardShortcut.js:

(WebInspector.KeyboardShortcut._handleKeyDown): Continue if callback is null.
(WebInspector.KeyboardShortcut.prototype.set callback): Added.

  • UserInterface/Views/ApplicationCacheDetailsSidebarPanel.js:
  • UserInterface/Views/CSSStyleDetailsSidebarPanel.js:
  • UserInterface/Views/DOMDetailsSidebarPanel.js:
  • UserInterface/Views/DOMNodeDetailsSidebarPanel.js:
  • UserInterface/Views/DebuggerSidebarPanel.js:
  • UserInterface/Views/DetailsSidebarPanel.js:
  • UserInterface/Views/LayerTreeDetailsSidebarPanel.js:
  • UserInterface/Views/NavigationSidebarPanel.js:
  • UserInterface/Views/ProbeDetailsSidebarPanel.js:
  • UserInterface/Views/ResourceDetailsSidebarPanel.js:
  • UserInterface/Views/ResourceSidebarPanel.js:
  • UserInterface/Views/ScopeChainDetailsSidebarPanel.js:
  • UserInterface/Views/Sidebar.js:
  • UserInterface/Views/SidebarPanel.js:
  • UserInterface/Views/TimelineSidebarPanel.js:

Converted to ES6 classes.

4:37 PM Changeset in webkit [182040] by timothy@apple.com
  • 37 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert some View classes to ES6 classes
https://bugs.webkit.org/show_bug.cgi?id=143107

Reviewed by Joseph Pecoraro.

  • UserInterface/Protocol/InspectorBackend.js:
  • UserInterface/Protocol/InspectorFrontendAPI.js:

(InspectorFrontendAPI.contextMenuItemSelected): Updated to the right function path.

  • UserInterface/Views/BoxModelDetailsSectionRow.js:
  • UserInterface/Views/BreakpointActionView.js:
  • UserInterface/Views/CodeMirrorAdditions.js:
  • UserInterface/Views/ColorPicker.js:
  • UserInterface/Views/ColorWheel.js:
  • UserInterface/Views/ContextMenu.js:
  • UserInterface/Views/DOMTreeElementPathComponent.js:
  • UserInterface/Views/DetailsSection.js:
  • UserInterface/Views/DetailsSectionDataGridRow.js:
  • UserInterface/Views/DetailsSectionGroup.js:
  • UserInterface/Views/DetailsSectionPropertiesRow.js:
  • UserInterface/Views/DetailsSectionRow.js:
  • UserInterface/Views/DetailsSectionSimpleRow.js:
  • UserInterface/Views/DetailsSectionTextRow.js:
  • UserInterface/Views/EditingSupport.js:
  • UserInterface/Views/EventListenerSection.js:
  • UserInterface/Views/EventListenerSectionGroup.js:
  • UserInterface/Views/FilterBar.js:
  • UserInterface/Views/FindBanner.js:
  • UserInterface/Views/GeneralTreeElementPathComponent.js:
  • UserInterface/Views/GoToLineDialog.js:
  • UserInterface/Views/GradientSlider.js:
  • UserInterface/Views/HierarchicalPathComponent.js:
  • UserInterface/Views/HierarchicalPathNavigationItem.js:
  • UserInterface/Views/HoverMenu.js:
  • UserInterface/Views/Popover.js:
  • UserInterface/Views/ProbeSetDetailsSection.js:
  • UserInterface/Views/ResourceTimelineDataGridNodePathComponent.js:
  • UserInterface/Views/SearchBar.js:
  • UserInterface/Views/Slider.js:

Converted to ES6 ckasses.

4:37 PM Changeset in webkit [182039] by timothy@apple.com
  • 20 edits in trunk/Source/WebInspectorUI

Web Inspector: Convert Base and Protocol files to ES6 classes
https://bugs.webkit.org/show_bug.cgi?id=143106

Reviewed by Joseph Pecoraro.

  • UserInterface/Base/EventListener.js:
  • UserInterface/Base/EventListenerSet.js:
  • UserInterface/Protocol/ApplicationCacheObserver.js:
  • UserInterface/Protocol/CSSObserver.js:
  • UserInterface/Protocol/ConsoleObserver.js:
  • UserInterface/Protocol/DOMObserver.js:
  • UserInterface/Protocol/DOMStorageObserver.js:
  • UserInterface/Protocol/DatabaseObserver.js:
  • UserInterface/Protocol/DebuggerObserver.js:
  • UserInterface/Protocol/InspectorBackend.js:
  • UserInterface/Protocol/InspectorObserver.js:
  • UserInterface/Protocol/LayerTreeObserver.js:
  • UserInterface/Protocol/MessageDispatcher.js:
  • UserInterface/Protocol/NetworkObserver.js:
  • UserInterface/Protocol/PageObserver.js:
  • UserInterface/Protocol/RemoteObject.js:
  • UserInterface/Protocol/ReplayObserver.js:
  • UserInterface/Protocol/RuntimeObserver.js:
  • UserInterface/Protocol/TimelineObserver.js:

Converted to ES6 classes where possible.

4:35 PM Changeset in webkit [182038] by ggaren@apple.com
  • 23 edits in trunk/Source

"lineNo" does not match WebKit coding style guidelines
https://bugs.webkit.org/show_bug.cgi?id=143119

Reviewed by Michael Saboff.

We can afford to use whole words.

Source/JavaScriptCore:

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::lineNumberForBytecodeOffset):
(JSC::CodeBlock::expressionRangeForBytecodeOffset):

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::link):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):

  • bytecode/UnlinkedCodeBlock.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::WhileNode::emitBytecode):

  • debugger/Debugger.cpp:

(JSC::Debugger::toggleBreakpoint):

  • interpreter/Interpreter.cpp:

(JSC::StackFrame::computeLineAndColumn):
(JSC::GetStackTraceFunctor::operator()):
(JSC::Interpreter::execute):

  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::computeLineAndColumn):

  • parser/Nodes.h:

(JSC::Node::firstLine):
(JSC::Node::lineNo): Deleted.
(JSC::StatementNode::firstLine): Deleted.

  • parser/ParserError.h:

(JSC::ParserError::toErrorObject):

  • profiler/LegacyProfiler.cpp:

(JSC::createCallIdentifierFromFunctionImp):

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getGlobalCodeBlock):

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::FunctionExecutable::fromGlobalCode):

  • runtime/Executable.h:

(JSC::ScriptExecutable::firstLine):
(JSC::ScriptExecutable::setOverrideLineNumber):
(JSC::ScriptExecutable::hasOverrideLineNumber):
(JSC::ScriptExecutable::overrideLineNumber):
(JSC::ScriptExecutable::lineNo): Deleted.
(JSC::ScriptExecutable::setOverrideLineNo): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNo): Deleted.
(JSC::ScriptExecutable::overrideLineNo): Deleted.

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/FunctionConstructor.h:
  • tools/CodeProfile.cpp:

(JSC::CodeProfile::report):

  • tools/CodeProfile.h:

(JSC::CodeProfile::CodeProfile):

Source/WebCore:

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::initializeJSFunction):

  • bindings/js/JSMainThreadExecStateInstrumentation.h:

(WebCore::JSMainThreadExecState::instrumentFunctionCall):

  • inspector/InspectorDOMAgent.cpp:

(WebCore::InspectorDOMAgent::buildObjectForEventListener):

  • testing/Internals.cpp:

(WebCore::Internals::parserMetaData):

4:24 PM Changeset in webkit [182037] by enrica@apple.com
  • 4 edits in trunk/Source/WebKit2

REGRESSION(r1807689): Slower startup time for WKWebView.
https://bugs.webkit.org/show_bug.cgi?id=143115
rdar://problem/20233711

Reviewed by Anders Carlsson.

In http://trac.webkit.org/changeset/180768 we added an observer to
track visibility of the NSFontPanel to ensure we could fetch the font
information for the current selection when the panel first becomes visible.
It turns out that adding the observer requires the shared font panel
object to be created.
That is apparently a very expensive operation that is regressing
the initialization time for the WKWebView.
We should initialize the NSFontPanel lazily, only when we make the entire
view editable.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _setEditable:]):

  • UIProcess/API/mac/WKView.mm:

(-[WKView addWindowObserversForWindow:]):
(-[WKView _addFontPanelObserver]):
(-[WKView removeWindowObservers]):
(-[WKView observeValueForKeyPath:ofObject:change:context:]):

  • UIProcess/API/mac/WKViewInternal.h:
4:23 PM Changeset in webkit [182036] by roger_fong@apple.com
  • 5 edits in trunk

Apply blur effect to media control background.
https://bugs.webkit.org/show_bug.cgi?id=143116.
<rdar://problem/20316964>.

Reviewed by Brent Fulgham.

There are still a few issues, like the borders of the controls being blurred with black,
and the volume slider background not showing the blur effect. Will fix those separately.
Add CSS for new divs to create blur effect using back drop filters and blend modes.

  • Modules/mediacontrols/mediaControlsApple.css:

(audio::-webkit-media-controls-panel):
(audio::-webkit-media-controls-panel-tint):
(audio::-webkit-media-controls-panel-background):
(audio::-webkit-media-controls-panel .volume-box):
(audio::-webkit-media-controls-volume-slider-container-background):
(audio::-webkit-media-controls-volume-slider-container-tint):
(audio::-webkit-media-controls-toggle-closed-captions-button): Adjust fill.
(audio::-webkit-media-controls-fullscreen-button): Adjust fill.
(audio::-webkit-media-controls-fullscreen-button.exit): Adjust fill.
(video:-webkit-full-screen::-webkit-media-controls-panel):
(audio:-webkit-full-screen::-webkit-media-controls-panel-tint):
(audio:-webkit-full-screen::-webkit-media-controls-panel-background):
(video:-webkit-full-screen::-webkit-media-controls-panel .volume-box):
(video:-webkit-full-screen::-webkit-media-controls-play-button):
(video:-webkit-full-screen::-webkit-media-controls-seek-back-button):
(video:-webkit-full-screen::-webkit-media-controls-seek-forward-button):
(video:-webkit-full-screen::-webkit-media-controls-timeline-container):
(video:-webkit-full-screen::-webkit-media-controls-status-display):
(audio::-webkit-media-controls-panel .volume-box:active): Deleted.

  • Modules/mediacontrols/mediaControlsApple.js:

(Controller.prototype.createControls):
(Controller.prototype.configureInlineControls): Add new divs for blurred background effect.
(Controller.prototype.configureFullScreenControls): Ditto.
(Controller.prototype.handlePanelMouseDown): The tint div is now in front.
(Controller.prototype.drawTimelineBackground): Adjust colors to make border look better with new background.
(Controller.prototype.drawVolumeBackground): Ditto.

4:22 PM Changeset in webkit [182035] by bshafiei@apple.com
  • 5 edits in branches/safari-600.5-branch/Source

Versioning.

4:12 PM Changeset in webkit [182034] by ggaren@apple.com
  • 19 edits
    2 adds in trunk

Assertion firing in JavaScriptCore/parser/parser.h for statesman.com site
https://bugs.webkit.org/show_bug.cgi?id=142974

Reviewed by Joseph Pecoraro.

Source/JavaScriptCore:

This patch does two things:

(1) Restore JavaScriptCore's sanitization of line and column numbers to
one-based values.

We need this because WebCore sometimes provides huge negative column
numbers.

(2) Solve the attribute event listener line numbering problem a different
way: Rather than offseting all line numbers by -1 in an attribute event
listener in order to arrange for a custom result, instead use an explicit
feature for saying "all errors in this code should map to this line number".

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::link):
(JSC::UnlinkedFunctionExecutable::fromGlobalCode):

  • bytecode/UnlinkedCodeBlock.h:
  • interpreter/Interpreter.cpp:

(JSC::StackFrame::computeLineAndColumn):
(JSC::GetStackTraceFunctor::operator()):

  • interpreter/Interpreter.h:
  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::computeLineAndColumn):

  • parser/ParserError.h:

(JSC::ParserError::toErrorObject): Plumb through an override line number.
When a function has an override line number, all syntax and runtime
errors in the function will map to it. This is useful for attribute event
listeners.

  • parser/SourceCode.h:

(JSC::SourceCode::SourceCode): Restore the old sanitization of line and
column numbers to one-based integers. It was kind of a hack to remove this.

  • runtime/Executable.cpp:

(JSC::ScriptExecutable::ScriptExecutable):
(JSC::FunctionExecutable::fromGlobalCode):

  • runtime/Executable.h:

(JSC::ScriptExecutable::setOverrideLineNo):
(JSC::ScriptExecutable::hasOverrideLineNo):
(JSC::ScriptExecutable::overrideLineNo):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck):

  • runtime/FunctionConstructor.h: Plumb through an override line number.

Source/WebCore:

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::initializeJSFunction): Use the new override
line number API to guarantee that errors will map to the .html file locations
that we like.

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::eventHandlerPosition): Added a FIXME to cover
some cases where our line and column numbers are still nonsense.

LayoutTests:

No test covering this ASSERT because I couldn't design a way to reproduce
it after trying for a few hours. Simply loading the original ASSERTing
content from disk is not enough to reproduce this bug.

  • fast/profiler/dead-time-expected.txt:
  • fast/profiler/inline-event-handler-expected.txt:
  • fast/profiler/stop-profiling-after-setTimeout-expected.txt: These are

progressions, where we used to get the line number wrong.

  • fast/dom/attribute-event-listener-errors-expected.txt: Added.
  • fast/dom/attribute-event-listener-errors.html: Added. This test covers

a subtle way in which the new mechanism for attribute event listener
line numbers is more accurate than the old one.

4:06 PM Changeset in webkit [182033] by Beth Dakin
  • 4 edits in trunk/Source/WebCore

Relevant repainted objects callback is inaccurate and inconsistent for PDF
documents
https://bugs.webkit.org/show_bug.cgi?id=143118
-and corresponding-
rdar://problem/13371582

Reviewed by Tim Horton.

Investigating this bug resulted in finding two things that should change for the
relevant repainted objects heuristic. First, we should not count any objects
painted while updating control tints. And secondly, we should not use it at all
for plugin documents. In other documents, we count the plugin area as “painted”
when we get to paint whether or not the plugin has actually loaded. This is
intentional because it allows us to account for chunks of the page that will be
filled in by possibly slow-loading ads. However, if the plugin is the whole
document, then the heuristic just doesn’t make any sense and it leads to
inconsistent behavior at different window sizes. So we’ll only count plugins when
the document is not a plugin document.

Don’t count objects during this paint!

  • page/FrameView.cpp:

(WebCore::FrameView::updateControlTints):

  • page/Page.h:

(WebCore::Page::setIsCountingRelevantRepaintedObjects):

Make sure the document is not a plugin document.

  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paint):

3:53 PM Changeset in webkit [182032] by commit-queue@webkit.org
  • 18 edits in trunk

Progress towards CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=143112

Patch by Alex Christensen <achristensen@webkit.org> on 2015-03-26
Reviewed by Chris Dumez.

.:

  • Source/cmake/OptionsMac.cmake:

Source/WebCore:

  • CMakeLists.txt:
  • PlatformEfl.cmake:
  • PlatformGTK.cmake:
  • PlatformMac.cmake:
  • platform/graphics/mac/IconMac.mm:

Source/WebKit:

  • PlatformMac.cmake:

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.h:

Source/WebKit2:

  • CMakeLists.txt:
  • PlatformMac.cmake:
  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

Source/WTF:

  • wtf/PlatformMac.cmake:
3:52 PM Changeset in webkit [182031] by Chris Dumez
  • 12 edits in trunk/Source/WebKit2

[WK2][Cocoa] Add private API to override the network disk cache size
https://bugs.webkit.org/show_bug.cgi?id=143113
<rdar://problem/20315669>

Reviewed by Antti Koivisto.

Add private API to let the client override the network disk cache size.
By default, the network disk cache is automatically determined based on
the CacheModel and the available disk space. However, for testing
purposes, it can be used for the client-side to be able to override
the disk cache size.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::NetworkProcess::initializeNetworkProcess):

  • NetworkProcess/NetworkProcess.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::setMaximumSize):

  • NetworkProcess/cocoa/NetworkProcessCocoa.mm:

(WebKit::NetworkProcess::platformSetCacheModel):

  • Shared/Network/NetworkProcessCreationParameters.cpp:

(WebKit::NetworkProcessCreationParameters::encode):
(WebKit::NetworkProcessCreationParameters::decode):

  • Shared/Network/NetworkProcessCreationParameters.h:
  • UIProcess/API/APIProcessPoolConfiguration.cpp:

(API::ProcessPoolConfiguration::copy):

  • UIProcess/API/APIProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:
  • UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm:

(-[_WKProcessPoolConfiguration diskCacheSizeOverride]):
(-[_WKProcessPoolConfiguration setDiskCacheSizeOverride:]):

  • UIProcess/WebProcessPool.cpp:

(WebKit::WebProcessPool::WebProcessPool):
(WebKit::WebProcessPool::ensureNetworkProcess):

  • UIProcess/WebProcessPool.h:
3:35 PM Changeset in webkit [182030] by ap@apple.com
  • 2 edits in trunk/Tools

Layout test results URL loads in WK1 but not WK2 minibrowser
https://bugs.webkit.org/show_bug.cgi?id=143117

Reviewed by Tim Horton.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController fetch:]): Fix this, international domain names, and
everything.
(-[WK2BrowserWindowController updateTextFieldFromURL:]): Ditto.

3:31 PM Changeset in webkit [182029] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Accessibility crashing because MediaPlayer is laying out UI off the main thread
https://bugs.webkit.org/show_bug.cgi?id=142970

Reviewed by Eric Carlson.

isMainThread() will (ironically) return true if called from the web thread. Rather than dispatch
synchronously to the main thread to allocate the _volumeView, dispatch asynchronously and handle
the case where the MPVolumeView has not yet been created.

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(-[WebMediaSessionHelper allocateVolumeView]): Dispatch to the main thread to allocate. Move notification

registration to -setVolumeView:.

(-[WebMediaSessionHelper setVolumeView:]): Added. Register/Unregister for route availablitiy notifications.
(-[WebMediaSessionHelper hasWirelessTargetsAvailable]): Handle the possibility of a nil _volumeView.

3:20 PM Changeset in webkit [182028] by akling@apple.com
  • 6 edits in trunk/Source/WebKit2

[Darwin] Boost the web process QoS level while handling a synchronous IPC message.
<https://webkit.org/b/142988>
<rdar://problem/20264346>

Reviewed by Antti Koivisto and Anders Carlsson.

Add a mechanism for IPC::Connection to boost the main thread for the duration
of processing a synchronous message.

This fixes an issue where the UI process would block on a synchronous request
to the web process that was being carried out at a lower QoS level.

  • Platform/IPC/Connection.cpp:

(IPC::Connection::Connection): Save the main thread's pthread_t while we have
a chance to retreive it.

(IPC::Connection::processIncomingMessage): Optionally boost the main thread when
processing an incoming message with the IsSyncMessage flag set.

  • Platform/IPC/Connection.h:

(IPC::Connection::setShouldBoostMainThreadOnSyncMessage): Added. When this mode is
enabled, Connection will give a temporary QoS override to the main thread when
receiving a synchronous message. Ownership of the override is handed to the
MessageDecoder, which resets the main thread QoS in its destructor.

  • Platform/IPC/MessageDecoder.cpp:

(IPC::MessageDecoder::~MessageDecoder): Remove any QoS override owned by this message.

  • Platform/IPC/MessageDecoder.h:

(IPC::MessageDecoder::setQOSClassOverride): Added. Takes ownership of a QoS override
to make sure it stays in effect until this message has been dispatched.

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::initializeConnection): Set up main thread QoS boosting for the
web process's connection to the UI process.

3:09 PM Changeset in webkit [182027] by bshafiei@apple.com
  • 1 copy in tags/Safari-600.5.16

New tag.

2:43 PM Changeset in webkit [182026] by rniwa@webkit.org
  • 5 edits in trunk/Source

Cursor doesn't change back to pointer when leaving Mail
https://bugs.webkit.org/show_bug.cgi?id=132038

Reviewed by Anders Carlsson.

Fixed the bug by adding a cursor rect and making the primary tracking area update the cursor so that
AppKit will reset the cursor as it leaves the WebView.

We use nil cursor here since we manually update the cursor by calling [NSCursor set].

Source/WebKit/mac:

  • WebView/WebHTMLView.mm:

(-[WebHTMLView setDataSource:]): Use NSTrackingCursorUpdate option in creating the primary tracking area.

Source/WebKit2:

  • UIProcess/API/mac/WKView.mm:

(-[WKView initWithFrame:processPool:configuration:webView:]):

  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::recommendedScrollbarStyleDidChange):

2:30 PM Changeset in webkit [182025] by bshafiei@apple.com
  • 2 edits in branches/safari-600.5-branch/Source/WebCore

Merged r182014. rdar://problem/20313011

2:02 PM Changeset in webkit [182024] by benjamin@webkit.org
  • 2 edits in trunk/Source/WebCore

Fix state maching debugging after r181964
https://bugs.webkit.org/show_bug.cgi?id=143082

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-03-26
Reviewed by Alex Christensen.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

1:48 PM Changeset in webkit [182023] by fpizlo@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

If we're in code for accessing scoped arguments, we should probably check if the object is a scoped arguments rather than checking if it's a direct arguments.

Reviewed by Michael Saboff.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitScopedArgumentsGetByVal):

  • tests/stress/scoped-then-direct-arguments-get-by-val-in-baseline.js: Added.
12:09 PM Changeset in webkit [182022] by hyatt@apple.com
  • 4 edits in trunk/Source/WebCore

Improve the offsetWidth/Height layout optimization
https://bugs.webkit.org/show_bug.cgi?id=143008

Reviewed by Zalan Bujtas.

  • dom/Document.cpp:

(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

  • dom/Document.h:

Change Element* to Element&. Clean up the dimension bits to use shifting. Remove both the inline and
the positioning restrictions on the optimization check.

  • dom/Element.cpp:

(WebCore::Element::offsetWidth):
(WebCore::Element::offsetHeight):
Change to use Element& instead of Element*.

(WebCore::Element::clientWidth):
(WebCore::Element::clientHeight):
(WebCore::Element::scrollWidth):
(WebCore::Element::scrollHeight):
Turn on the optimization for clientWidth/Height and scrollWidth/Height.

12:00 PM Changeset in webkit [182021] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebKit2

[Linux] SeccompFilters: improve the port-agnostic whitelist
https://bugs.webkit.org/show_bug.cgi?id=140064

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-03-26
Reviewed by Žan Doberšek.

Allow the web process to access several files and directories that it
was previously prohibited from accessing. This makes the web process
much less likely to break.

  • Shared/linux/SeccompFilters/SyscallPolicy.cpp:

(WebKit::SyscallPolicy::addDefaultWebProcessPolicy):

11:49 AM Changeset in webkit [182020] by Antti Koivisto
  • 2 edits in trunk/Source/WebKit2

Remove unneeded isConditionalRequest check from NetworkResourceLoader
https://bugs.webkit.org/show_bug.cgi?id=143096

Reviewed by Anders Carlsson.

This check is leftover from implementation that allowed disk cache to validate conditional
request itself. The case can't happen as NetworkCache canRetrieve test does not allow
conditional requests in the first place.

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::NetworkResourceLoader::didReceiveResponseAsync):
(WebKit::isConditionalRequest): Deleted.

11:39 AM Changeset in webkit [182019] by Antti Koivisto
  • 6 edits in trunk/Source/WebKit2

Rename Storage::Entry to Storage::Record
https://bugs.webkit.org/show_bug.cgi?id=143101

Reviewed by Chris Dumez.

Lets have just one type called Entry in the cache code.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::update):
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::Cache::dumpContentsToFile):

  • NetworkProcess/cache/NetworkCacheEntry.cpp:

(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::encodeAsStorageRecord):
(WebKit::NetworkCache::Entry::decodeStorageRecord):
(WebKit::NetworkCache::Entry::initializeBufferFromStorageRecord):
(WebKit::NetworkCache::Entry::buffer):
(WebKit::NetworkCache::Entry::shareableResourceHandle):
(WebKit::NetworkCache::Entry::encode): Deleted.
(WebKit::NetworkCache::Entry::decode): Deleted.
(WebKit::NetworkCache::Entry::initializeBufferFromStorageEntry): Deleted.

  • NetworkProcess/cache/NetworkCacheEntry.h:

(WebKit::NetworkCache::Entry::sourceStorageRecord):
(WebKit::NetworkCache::Entry::sourceStorageEntry): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::RecordMetaData::RecordMetaData):
(WebKit::NetworkCache::decodeRecordMetaData):
(WebKit::NetworkCache::decodeRecordHeader):
(WebKit::NetworkCache::decodeRecord):
(WebKit::NetworkCache::encodeRecordMetaData):
(WebKit::NetworkCache::encodeRecordHeader):
(WebKit::NetworkCache::Storage::dispatchReadOperation):
(WebKit::NetworkCache::retrieveFromMemory):
(WebKit::NetworkCache::Storage::store):
(WebKit::NetworkCache::Storage::update):
(WebKit::NetworkCache::Storage::traverse):
(WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
(WebKit::NetworkCache::Storage::dispatchFullWriteOperation):
(WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation):
(WebKit::NetworkCache::EntryMetaData::EntryMetaData): Deleted.
(WebKit::NetworkCache::decodeEntryMetaData): Deleted.
(WebKit::NetworkCache::decodeEntryHeader): Deleted.
(WebKit::NetworkCache::decodeEntry): Deleted.
(WebKit::NetworkCache::encodeEntryMetaData): Deleted.
(WebKit::NetworkCache::encodeEntryHeader): Deleted.

  • NetworkProcess/cache/NetworkCacheStorage.h:
11:16 AM Changeset in webkit [182018] by jer.noble@apple.com
  • 4 edits in trunk/Tools

Add --allowed-host support to run-webkit-tests
https://bugs.webkit.org/show_bug.cgi?id=142938

Reviewed by Brent Fulgham.

Accept --allowed-host arguments from run-webkit-tests and pass them through to
DumpRenderTree and WebKitTestRunner.

Drive-by fix: Depending on the value of the --layout-test-dir parameter, layout test results
are placed in the wrong location. The argument is compared with each tests's path, and if a
relative path or a path with '..' was used, results are placed alongside the test. Take the
absolute path of the --layout-test-dir argument, collapsing path components like '..'.

  • Scripts/webkitpy/layout_tests/run_webkit_tests.py:

(parse_args):

  • Scripts/webkitpy/port/base.py:

(Port.init):
(Port.allowed_hosts):

  • Scripts/webkitpy/port/driver.py:

(Driver.cmd_line):

11:12 AM Changeset in webkit [182017] by jer.noble@apple.com
  • 12 edits in trunk/Tools

[Mac] Add an --allowed-host argument to DRT and WKTR to allow tests to connect to non-localhost servers
https://bugs.webkit.org/show_bug.cgi?id=142931

Reviewed by Brent Fulgham.

Currently, both DRT and WKTR will refuse to allow network connections to non-localhost servers
over HTTP/HTTPS. For certain testing scenarios, however, it would be useful if both DRT and
WKTR could be allowed to make HTTP/HTTPS connections to certain, specific servers defined at
runtime.

To allow this, add an optional argument to DRT and WKTR, --allowed-host, which will add the specified
hostname to a whitelist; requests to these hosts will allowed to proceed normally.

Drive-by fix: in InjectedBundlePage::willSendRequestForFrame, we get the top loading frame from the
injected bundle. But after the main resource load completes, the bundle nulls out it's pointer to the
top loading frame, which causes a subsequent crash when further resources are requested. Instead, get
the top loading frame from the page, as we do elsewhere in this class.

  • DumpRenderTree/TestRunner.h:

(TestRunner::allowedHosts):
(TestRunner::setAllowedHosts):

  • DumpRenderTree/mac/DumpRenderTree.mm:

(initializeGlobalsFromCommandLineOptions):
(runTest):

  • DumpRenderTree/mac/ResourceLoadDelegate.mm:

(isAllowedHost):
(-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:

(WTR::InjectedBundle::didReceiveMessage):
(WTR::InjectedBundle::isAllowedHost):

  • WebKitTestRunner/InjectedBundle/InjectedBundle.h:
  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::isAllowedHost):
(WTR::InjectedBundlePage::willSendRequestForFrame):

  • WebKitTestRunner/InjectedBundle/TestRunner.h:
  • WebKitTestRunner/Options.cpp:

(WTR::handleOptionAllowedHost):
(WTR::OptionsHandler::OptionsHandler):

  • WebKitTestRunner/Options.h:
  • WebKitTestRunner/TestController.cpp:

(WTR::TestController::initialize):
(WTR::TestController::resetStateToConsistentValues):

  • WebKitTestRunner/TestController.h:
10:45 AM Changeset in webkit [182016] by beidson@apple.com
  • 15 edits
    10 adds in trunk

Apply ContentExtension actions after redirects.
<rdar://problem/20062613> and https://bugs.webkit.org/show_bug.cgi?id=143055

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/contentextensions/loading/main-resource-redirect-blocked.php

http/tests/contentextensions/subresource-redirect-blocked.html

This patch moves the "run a URL against the content extension" code from CachedResourceLoader to
the ContentExtensionsBackend.

That allows it to be shared between the CachedResourceLoader where loads are initiated and
ResourceLoader where redirects are handled.

  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::globalDisplayNoneStyleSheet):

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::processContentExtensionRulesForLoad):
(WebCore::ContentExtensions::ContentExtensionsBackend::displayNoneCSSRule):

  • contentextensions/ContentExtensionsBackend.h:
  • loader/NetscapePlugInStreamLoader.cpp:

(WebCore::NetscapePlugInStreamLoader::NetscapePlugInStreamLoader):

  • loader/ResourceLoadInfo.h:
  • loader/ResourceLoader.cpp:

(WebCore::ResourceLoader::ResourceLoader):
(WebCore::ResourceLoader::willSendRequest):

  • loader/ResourceLoader.h:
  • loader/SubresourceLoader.cpp:

(WebCore::SubresourceLoader::SubresourceLoader):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • page/UserContentController.cpp:

(WebCore::UserContentController::processContentExtensionRulesForLoad):
(WebCore::UserContentController::actionsForResourceLoad): Deleted.
(WebCore::UserContentController::globalDisplayNoneStyleSheet): Deleted.
(WebCore::UserContentController::displayNoneCSSRule): Deleted.

  • page/UserContentController.h:

Tools:

  • WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:

(WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame): Dump the fact that the load error is kWKErrorCodeCannotShowURL

which is specifically interesting to a new test.

LayoutTests:

  • http/tests/contentextensions/loading/main-resource-redirect-blocked-expected.txt: Added.
  • http/tests/contentextensions/loading/main-resource-redirect-blocked.php: Added.
  • http/tests/contentextensions/loading/main-resource-redirect-blocked.php.json: Added.
  • http/tests/contentextensions/loading/resources/main-resource-redirect-blocked-target.html: Added.
  • http/tests/contentextensions/resources/subresource-redirect.php: Added.
  • http/tests/contentextensions/subresource-redirect-blocked-expected.txt: Added.
  • http/tests/contentextensions/subresource-redirect-blocked.html: Added.
  • http/tests/contentextensions/subresource-redirect-blocked.html.json: Added.
10:29 AM Changeset in webkit [182015] by mmaxfield@apple.com
  • 2 edits in trunk/Source/WebCore

Crash when laying out (char)0
https://bugs.webkit.org/show_bug.cgi?id=143103

Reviewed by Dean Jackson.

We currently cache a character -> Font mapping in a HashMap.
However, keys in Hashmaps can't be 0. This patch simply skips
the cache in this case.

No new tests, for now. I'm having trouble creating a test because
the site that causes this bug generates their page using script,
and the script is all minified, and difficult to understand. I
will contact the owner of the site and ask for and unminified
version of their sources. However, I don't want to that to block
this tiny fix from going in.

  • platform/graphics/Font.cpp:

(WebCore::Font::systemFallbackFontForCharacter):

10:24 AM Changeset in webkit [182014] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac][EME] Crash at com.apple.WebCore: WebCore::CDMSessionMediaSourceAVFObjC::releaseKeys + 177
https://bugs.webkit.org/show_bug.cgi?id=143080

Reviewed by Eric Carlson.

Null-check m_certificate before dereferencing.

  • platform/graphics/avfoundation/objc/CDMSessionMediaSourceAVFObjC.mm:

(WebCore::CDMSessionMediaSourceAVFObjC::releaseKeys):

10:04 AM Changeset in webkit [182013] by msaboff@apple.com
  • 2 edits in trunk/LayoutTests

js/promises-tests/promises-tests-2-3-3.html sometimes crashes under DFG::SpeculativeJIT::compile
https://bugs.webkit.org/show_bug.cgi?id=139865

Reviewed by Alexey Proskuryakov.

It appears that r181993 fixed this test as it removed the code where the crash occurred.

  • TestExpectations: Re-enabled js/promises-tests/promises-tests-2-3-3 including marking it as Slow.
9:35 AM Changeset in webkit [182012] by Chris Fleizach
  • 7 edits
    2 adds in trunk

AX: [role="button"][aria-pressed] should be exposed as AXCheckbox:AXToggleButton, with role description of "toggle button"
https://bugs.webkit.org/show_bug.cgi?id=115298

Reviewed by Mario Sanchez Prada.

Source/WebCore:

A role=button + aria-pressed object should be exposed as AXCheckbox on Mac now. It should also convert the
aria-pressed state into a 0, 1, 2 number value for the Mac.

Test: platform/mac/accessibility/aria-pressed-button-attributes.html

  • accessibility/AccessibilityObject.cpp:

(WebCore::AccessibilityObject::checkboxOrRadioValue):

  • accessibility/AccessibilityObject.h:

(WebCore::AccessibilityObject::isToggleButton):

  • accessibility/mac/WebAccessibilityObjectWrapperMac.mm:

(-[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames]):
(createAccessibilityRoleMap):
(-[WebAccessibilityObjectWrapper subrole]):
(-[WebAccessibilityObjectWrapper accessibilityAttributeValue:]):

LayoutTests:

  • accessibility/aria-toggle-button-with-title.html:

Bad path for post test resources file, so that is fixed.

  • platform/mac/accessibility/aria-pressed-button-attributes-expected.txt: Added.
  • platform/mac/accessibility/aria-pressed-button-attributes.html: Added.
  • platform/mac/accessibility/aria-toggle-button-with-title-expected.txt:

Updated to reflect the new role of this object.

9:24 AM Changeset in webkit [182011] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

[WK2] Let the compiler generate the NetworkCache::Key move constructor
https://bugs.webkit.org/show_bug.cgi?id=143079

Reviewed by Antti Koivisto.

Let the compiler generate the NetworkCache::Key move constructor. The
generated one will do exactly the same thing as the one we had except
that it will move the m_hash member as well. I don't see any reason why
we weren't moving this member before (it is an std::array<uint8_t, 16>).

Also have the compiler generate a move assignment operator for
consistency. Although it is not currently useful, it could be at some
point.

  • NetworkProcess/cache/NetworkCacheKey.cpp:

(WebKit::NetworkCache::Key::Key): Deleted.

  • NetworkProcess/cache/NetworkCacheKey.h:
9:21 AM Changeset in webkit [182010] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2][NetworkCache] Compute if a cached response has expired only when actually needed
https://bugs.webkit.org/show_bug.cgi?id=143070

Reviewed by Antti Koivisto.

Compute if a cached response has expired only when actually needed:

  • This is not a history navigation

and

  • It does not have "Cache-Control: no-cache" header

Previously, we would always determine if the response has expired and
we often end up not using this information.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::responseHasExpired):
(WebKit::NetworkCache::canUse):

8:29 AM Changeset in webkit [182009] by fpizlo@apple.com
  • 2 edits
    1 add in trunk/Source/JavaScriptCore

FTL ScopedArguments GetArrayLength generates incorrect code and crashes in LLVM
https://bugs.webkit.org/show_bug.cgi?id=143098

Reviewed by Csaba Osztrogonác.

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileGetArrayLength): Fix a typo.

  • tests/stress/scoped-arguments-array-length.js: Added. This test previously always crashed in ftl-no-cjit mode.
5:23 AM Changeset in webkit [182008] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[EFL] Disable building libseccomp on AArch64
https://bugs.webkit.org/show_bug.cgi?id=143094

Reviewed by Gyuyoung Kim.

  • efl/jhbuildrc:
5:21 AM Changeset in webkit [182007] by Csaba Osztrogonác
  • 2 edits in trunk/Tools

[jhbuild] git should use only 1 thread for cloning jhbuild
https://bugs.webkit.org/show_bug.cgi?id=143095

Reviewed by Gyuyoung Kim.

  • jhbuild/jhbuild-wrapper:

(clone_jhbuild):

3:47 AM Changeset in webkit [182006] by Csaba Osztrogonác
  • 8 edits in trunk

Unreviewed gardening, skip failing tests on AArch64 Linux.

Source/JavaScriptCore:

  • tests/mozilla/mozilla-tests.yaml:
  • tests/stress/cached-prototype-setter.js:

LayoutTests:

  • js/script-tests/array-from.js:
  • js/script-tests/array-length-shortening.js:
  • js/script-tests/dfg-int16array.js:
  • js/script-tests/dfg-int8array.js:
12:51 AM Changeset in webkit [182005] by zandobersek@gmail.com
  • 9 edits in trunk/Source/WebKit2

Avoid the Vector<> copy in WebTouchEvent constructor
https://bugs.webkit.org/show_bug.cgi?id=143043

Reviewed by Carlos Garcia Campos.

Have the WebTouchEvent accept a Vector<> rvalue.
The relevant code is updated so the Vector<> object is moved
through the call chain and finally into the WebTouchEvent constructor.

  • Shared/NativeWebTouchEvent.h:
  • Shared/WebEvent.h:
  • Shared/WebTouchEvent.cpp:

(WebKit::WebTouchEvent::WebTouchEvent):

  • Shared/efl/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/gtk/NativeWebTouchEventGtk.cpp:

(WebKit::NativeWebTouchEvent::NativeWebTouchEvent):

  • Shared/gtk/WebEventFactory.cpp:

(WebKit::WebEventFactory::createWebTouchEvent):

  • Shared/gtk/WebEventFactory.h:
  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseTouchEvent):

12:17 AM Changeset in webkit [182004] by fpizlo@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

Unreviewed, fixes to silly things. While landing fixes to r181993, I introduced crashes. This fixes them.

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants): I landed a fix for a VS warning. It broke this. Now I'm fixing it.

  • ftl/FTLCompile.cpp:

(JSC::FTL::compile): Make sure we pass the module when dumping. This makes FTL debugging possible again.

  • ftl/FTLState.cpp:

(JSC::FTL::State::dumpState): New overload that takes a module, so that we can call this after FTL::compile() clears State's module.

  • ftl/FTLState.h:
12:00 AM Changeset in webkit [182003] by ap@apple.com
  • 2 edits in trunk/LayoutTests

media/track/track-mode.html flakily times out
https://bugs.webkit.org/show_bug.cgi?id=143085

Mar 25, 2015:

11:01 PM Changeset in webkit [182002] by Chris Fleizach
  • 4 edits in trunk/LayoutTests

AX: table cells that use display:block render the table inaccessible to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=143007

Unreviewed, layout test fix.

Skip associated accessibility/table-cell-display-block.html on failing platforms.

  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:

Specific platform changes in children ordering need to be updated to make this test pass.

  • platform/win/TestExpectations:

Need to implement cellForRowAndColumn.

10:32 PM Changeset in webkit [182001] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix obvious goof that was causing 32-bit debug crashes. The 64-bit version did it
right, so this just makes 32-bit do the same.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):

10:23 PM Changeset in webkit [182000] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Fix a typo that ggaren found but that I didn't fix before.

  • runtime/DirectArgumentsOffset.h:
9:58 PM Changeset in webkit [181999] by fpizlo@apple.com
  • 2 edits in trunk/Source/WTF

Unreviewed, we have edited this file in 2015.

  • wtf/Platform.h:
9:52 PM Changeset in webkit [181998] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, VC found a bug. This fixes the bug.

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

9:50 PM Changeset in webkit [181997] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, try to fix Windows build.

  • runtime/ClonedArguments.cpp:

(JSC::ClonedArguments::createWithInlineFrame):

9:37 PM Changeset in webkit [181996] by commit-queue@webkit.org
  • 4 edits in trunk/Tools

Update prepare-ChangeLog to work with ES6 Class syntax
https://bugs.webkit.org/show_bug.cgi?id=143069

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-25
Reviewed by Timothy Hatcher.

  • Scripts/prepare-ChangeLog:

(get_function_line_ranges_for_javascript):
Better handle ES6 Class syntax.

  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt:
  • Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js:

(BaseClass):
(DerivedClass):
(DerivedClass.staticMethod):
(DerivedClass.prototype.method.nestedFunctionInsideMethod):
(DerivedClass.prototype.method):
(DerivedClass.prototype.get getter):
(namespace.MyClass):
(namespace.MyClass.staticMethod):
(namespace.MyClass.prototype.method.nestedFunctionInsideMethod):
(namespace.MyClass.prototype.method):
(namespace.MyClass.prototype.get getter):
Proof!

9:35 PM Changeset in webkit [181995] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix debug build.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ConstDeclNode::emitCodeSingle):

9:34 PM Changeset in webkit [181994] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed, fix CLOOP build.

  • dfg/DFGMinifiedID.h:
9:28 PM Changeset in webkit [181993] by fpizlo@apple.com
  • 181 edits
    88 adds
    4 deletes in trunk

Heap variables shouldn't end up in the stack frame
https://bugs.webkit.org/show_bug.cgi?id=141174

Reviewed by Geoffrey Garen.
Source/JavaScriptCore:


This is a major change to how JavaScriptCore handles declared variables (i.e. "var"). It removes
any ambiguity about whether a variable should be in the heap or on the stack. A variable will no
longer move between heap and stack during its lifetime. This enables a bunch of optimizations and
simplifications:

  • Accesses to variables no longer need checks or indirections to determine where the variable is at that moment in time. For example, loading a closure variable now takes just one load instead of two. Loading an argument by index now takes a bounds check and a load in the fastest case (when no arguments object allocation is required) while previously that same operation required a "did I allocate arguments yet" check, a bounds check, and then the load.


  • Reasoning about the allocation of an activation or arguments object now follows the same simple logic as the allocation of any other kind of object. Previously, those objects were lazily allocated - so an allocation instruction wasn't the actual allocation site, since it might not allocate anything at all. This made the implementation of traditional escape analyses really awkward, and ultimately it meant that we missed important cases. Now, we can reason about the arguments object using the usual SSA tricks which allows for more comprehensive removal.


  • The allocations of arguments objects, functions, and activations are now much faster. While this patch generally expands our ability to eliminate arguments object allocations, an earlier version of the patch - which lacked that functionality - was a progression on some arguments- and closure-happy benchmarks because although no allocations were eliminated, all allocations were faster.


  • There is no tear-off. The runtime no loner needs to know about where on the stack a frame keeps its arguments objects or activations. The runtime doesn't have to do things to the arguments objects and activations that a frame allocated, when the frame is unwound. We always had horrid bugs in that code, so it's good to see it go. This removes *a ton* of machinery from the DFG, FTL, CodeBlock, and other places. All of the things having to do with "captured variables" is now gone. This also enables implementing block-scoping. Without this change, block-scope support would require telling CodeBlock and all of the rest of the runtime about all of the variables that store currently-live scopes. That would have been so disastrously hard that it might as well be impossible. With this change, it's fair game for the bytecode generator to simply allocate whatever activations it wants, wherever it wants, and to keep them live for however long it wants. This all works, because after bytecode generation, an activation is just an object and variables that refer to it are just normal variables.


  • SymbolTable can now tell you explicitly where a variable lives. The answer is in the form of a VarOffset object, which has methods like isStack(), isScope(), etc. VirtualRegister is never used for offsets of non-stack variables anymore. We now have shiny new objects for other kinds of offsets - ScopeOffset for offsets into scopes, and DirectArgumentsOffset for offsets into an arguments object.


  • Functions that create activations can now tier-up into the FTL. Previously they couldn't. Also, using activations used to prevent inlining; now functions that use activations can be inlined just fine.


This is a >1% speed-up on Octane. This is a >2% speed-up on CompressionBench. This is a tiny
speed-up on AsmBench (~0.4% or something). This looks like it might be a speed-up on SunSpider.
It's only a slow-down on very short-running microbenchmarks we had previously written for our old
style of tear-off-based arguments optimization. Those benchmarks are not part of any major suite.

The easiest way of understanding this change is to start by looking at the changes in runtime/,
and then the changes in bytecompiler/, and then sort of work your way up the compiler tiers.

  • CMakeLists.txt:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • assembler/AbortReason.h:
  • assembler/AbstractMacroAssembler.h:

(JSC::AbstractMacroAssembler::BaseIndex::withOffset):

  • bytecode/ByValInfo.h:

(JSC::hasOptimizableIndexingForJSType):
(JSC::hasOptimizableIndexing):
(JSC::jitArrayModeForJSType):
(JSC::jitArrayModePermitsPut):
(JSC::jitArrayModeForStructure):

  • bytecode/BytecodeKills.h: Added.

(JSC::BytecodeKills::BytecodeKills):
(JSC::BytecodeKills::operandIsKilled):
(JSC::BytecodeKills::forEachOperandKilledAt):
(JSC::BytecodeKills::KillSet::KillSet):
(JSC::BytecodeKills::KillSet::add):
(JSC::BytecodeKills::KillSet::forEachLocal):
(JSC::BytecodeKills::KillSet::contains):

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeLivenessAnalysis.cpp:

(JSC::isValidRegisterForLiveness):
(JSC::stepOverInstruction):
(JSC::BytecodeLivenessAnalysis::runLivenessFixpoint):
(JSC::BytecodeLivenessAnalysis::getLivenessInfoAtBytecodeOffset):
(JSC::BytecodeLivenessAnalysis::operandIsLiveAtBytecodeOffset):
(JSC::BytecodeLivenessAnalysis::computeFullLiveness):
(JSC::BytecodeLivenessAnalysis::computeKills):
(JSC::indexForOperand): Deleted.
(JSC::BytecodeLivenessAnalysis::getLivenessInfoForNonCapturedVarsAtBytecodeOffset): Deleted.
(JSC::getLivenessInfo): Deleted.

  • bytecode/BytecodeLivenessAnalysis.h:
  • bytecode/BytecodeLivenessAnalysisInlines.h:

(JSC::operandIsAlwaysLive):
(JSC::operandThatIsNotAlwaysLiveIsLive):
(JSC::operandIsLive):

  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
(JSC::CodeBlock::CodeBlock):
(JSC::CodeBlock::nameForRegister):
(JSC::CodeBlock::validate):
(JSC::CodeBlock::isCaptured): Deleted.
(JSC::CodeBlock::framePointerOffsetToGetActivationRegisters): Deleted.
(JSC::CodeBlock::machineSlowArguments): Deleted.

  • bytecode/CodeBlock.h:

(JSC::unmodifiedArgumentsRegister): Deleted.
(JSC::CodeBlock::setArgumentsRegister): Deleted.
(JSC::CodeBlock::argumentsRegister): Deleted.
(JSC::CodeBlock::uncheckedArgumentsRegister): Deleted.
(JSC::CodeBlock::usesArguments): Deleted.
(JSC::CodeBlock::captureCount): Deleted.
(JSC::CodeBlock::captureStart): Deleted.
(JSC::CodeBlock::captureEnd): Deleted.
(JSC::CodeBlock::argumentIndexAfterCapture): Deleted.
(JSC::CodeBlock::hasSlowArguments): Deleted.
(JSC::ExecState::argumentAfterCapture): Deleted.

  • bytecode/CodeOrigin.h:
  • bytecode/DataFormat.h:

(JSC::dataFormatToString):

  • bytecode/FullBytecodeLiveness.h:

(JSC::FullBytecodeLiveness::getLiveness):
(JSC::FullBytecodeLiveness::operandIsLive):
(JSC::FullBytecodeLiveness::FullBytecodeLiveness): Deleted.
(JSC::FullBytecodeLiveness::getOut): Deleted.

  • bytecode/Instruction.h:

(JSC::Instruction::Instruction):

  • bytecode/Operands.h:

(JSC::Operands::virtualRegisterForIndex):

  • bytecode/SpeculatedType.cpp:

(JSC::dumpSpeculation):
(JSC::speculationToAbbreviatedString):
(JSC::speculationFromClassInfo):

  • bytecode/SpeculatedType.h:

(JSC::isDirectArgumentsSpeculation):
(JSC::isScopedArgumentsSpeculation):
(JSC::isActionableMutableArraySpeculation):
(JSC::isActionableArraySpeculation):
(JSC::isArgumentsSpeculation): Deleted.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedCodeBlock::UnlinkedCodeBlock):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedCodeBlock::setArgumentsRegister): Deleted.
(JSC::UnlinkedCodeBlock::usesArguments): Deleted.
(JSC::UnlinkedCodeBlock::argumentsRegister): Deleted.

  • bytecode/ValueRecovery.cpp:

(JSC::ValueRecovery::dumpInContext):

  • bytecode/ValueRecovery.h:

(JSC::ValueRecovery::directArgumentsThatWereNotCreated):
(JSC::ValueRecovery::outOfBandArgumentsThatWereNotCreated):
(JSC::ValueRecovery::nodeID):
(JSC::ValueRecovery::argumentsThatWereNotCreated): Deleted.

  • bytecode/VirtualRegister.h:

(JSC::VirtualRegister::operator==):
(JSC::VirtualRegister::operator!=):
(JSC::VirtualRegister::operator<):
(JSC::VirtualRegister::operator>):
(JSC::VirtualRegister::operator<=):
(JSC::VirtualRegister::operator>=):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::generate):
(JSC::BytecodeGenerator::BytecodeGenerator):
(JSC::BytecodeGenerator::initializeNextParameter):
(JSC::BytecodeGenerator::visibleNameForParameter):
(JSC::BytecodeGenerator::emitMove):
(JSC::BytecodeGenerator::variable):
(JSC::BytecodeGenerator::createVariable):
(JSC::BytecodeGenerator::emitResolveScope):
(JSC::BytecodeGenerator::emitGetFromScope):
(JSC::BytecodeGenerator::emitPutToScope):
(JSC::BytecodeGenerator::initializeVariable):
(JSC::BytecodeGenerator::emitInstanceOf):
(JSC::BytecodeGenerator::emitNewFunction):
(JSC::BytecodeGenerator::emitNewFunctionInternal):
(JSC::BytecodeGenerator::emitCall):
(JSC::BytecodeGenerator::emitReturn):
(JSC::BytecodeGenerator::emitConstruct):
(JSC::BytecodeGenerator::isArgumentNumber):
(JSC::BytecodeGenerator::emitEnumeration):
(JSC::BytecodeGenerator::addVar): Deleted.
(JSC::BytecodeGenerator::emitInitLazyRegister): Deleted.
(JSC::BytecodeGenerator::initializeCapturedVariable): Deleted.
(JSC::BytecodeGenerator::resolveCallee): Deleted.
(JSC::BytecodeGenerator::addCallee): Deleted.
(JSC::BytecodeGenerator::addParameter): Deleted.
(JSC::BytecodeGenerator::willResolveToArgumentsRegister): Deleted.
(JSC::BytecodeGenerator::uncheckedLocalArgumentsRegister): Deleted.
(JSC::BytecodeGenerator::createLazyRegisterIfNecessary): Deleted.
(JSC::BytecodeGenerator::isCaptured): Deleted.
(JSC::BytecodeGenerator::local): Deleted.
(JSC::BytecodeGenerator::constLocal): Deleted.
(JSC::BytecodeGenerator::emitResolveConstantLocal): Deleted.
(JSC::BytecodeGenerator::emitGetArgumentsLength): Deleted.
(JSC::BytecodeGenerator::emitGetArgumentByVal): Deleted.
(JSC::BytecodeGenerator::emitLazyNewFunction): Deleted.
(JSC::BytecodeGenerator::createArgumentsIfNecessary): Deleted.

  • bytecompiler/BytecodeGenerator.h:

(JSC::Variable::Variable):
(JSC::Variable::isResolved):
(JSC::Variable::ident):
(JSC::Variable::offset):
(JSC::Variable::isLocal):
(JSC::Variable::local):
(JSC::Variable::isSpecial):
(JSC::BytecodeGenerator::argumentsRegister):
(JSC::BytecodeGenerator::emitNode):
(JSC::BytecodeGenerator::registerFor):
(JSC::Local::Local): Deleted.
(JSC::Local::operator bool): Deleted.
(JSC::Local::get): Deleted.
(JSC::Local::isSpecial): Deleted.
(JSC::ResolveScopeInfo::ResolveScopeInfo): Deleted.
(JSC::ResolveScopeInfo::isLocal): Deleted.
(JSC::ResolveScopeInfo::localIndex): Deleted.
(JSC::BytecodeGenerator::hasSafeLocalArgumentsRegister): Deleted.
(JSC::BytecodeGenerator::captureMode): Deleted.
(JSC::BytecodeGenerator::shouldTearOffArgumentsEagerly): Deleted.
(JSC::BytecodeGenerator::shouldCreateArgumentsEagerly): Deleted.
(JSC::BytecodeGenerator::hasWatchableVariable): Deleted.
(JSC::BytecodeGenerator::watchableVariableIdentifier): Deleted.

  • bytecompiler/NodesCodegen.cpp:

(JSC::ResolveNode::isPure):
(JSC::ResolveNode::emitBytecode):
(JSC::BracketAccessorNode::emitBytecode):
(JSC::DotAccessorNode::emitBytecode):
(JSC::EvalFunctionCallNode::emitBytecode):
(JSC::FunctionCallResolveNode::emitBytecode):
(JSC::CallFunctionCallDotNode::emitBytecode):
(JSC::ApplyFunctionCallDotNode::emitBytecode):
(JSC::PostfixNode::emitResolve):
(JSC::DeleteResolveNode::emitBytecode):
(JSC::TypeOfResolveNode::emitBytecode):
(JSC::PrefixNode::emitResolve):
(JSC::ReadModifyResolveNode::emitBytecode):
(JSC::AssignResolveNode::emitBytecode):
(JSC::ConstDeclNode::emitCodeSingle):
(JSC::EmptyVarExpression::emitBytecode):
(JSC::ForInNode::tryGetBoundLocal):
(JSC::ForInNode::emitLoopHeader):
(JSC::ForOfNode::emitBytecode):
(JSC::ArrayPatternNode::emitDirectBinding):
(JSC::BindingNode::bindValue):
(JSC::getArgumentByVal): Deleted.

  • dfg/DFGAbstractHeap.h:
  • dfg/DFGAbstractInterpreter.h:
  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::clobberWorld):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::clobberCapturedVars): Deleted.

  • dfg/DFGAbstractValue.h:
  • dfg/DFGArgumentPosition.h:

(JSC::DFG::ArgumentPosition::addVariable):

  • dfg/DFGArgumentsEliminationPhase.cpp: Added.

(JSC::DFG::performArgumentsElimination):

  • dfg/DFGArgumentsEliminationPhase.h: Added.
  • dfg/DFGArgumentsSimplificationPhase.cpp: Removed.
  • dfg/DFGArgumentsSimplificationPhase.h: Removed.
  • dfg/DFGArgumentsUtilities.cpp: Added.

(JSC::DFG::argumentsInvolveStackSlot):
(JSC::DFG::emitCodeToGetArgumentsArrayLength):

  • dfg/DFGArgumentsUtilities.h: Added.
  • dfg/DFGArrayMode.cpp:

(JSC::DFG::ArrayMode::refine):
(JSC::DFG::ArrayMode::alreadyChecked):
(JSC::DFG::arrayTypeToString):

  • dfg/DFGArrayMode.h:

(JSC::DFG::ArrayMode::canCSEStorage):
(JSC::DFG::ArrayMode::modeForPut):

  • dfg/DFGAvailabilityMap.cpp:

(JSC::DFG::AvailabilityMap::prune):

  • dfg/DFGAvailabilityMap.h:

(JSC::DFG::AvailabilityMap::closeOverNodes):
(JSC::DFG::AvailabilityMap::closeStartingWithLocal):

  • dfg/DFGBackwardsPropagationPhase.cpp:

(JSC::DFG::BackwardsPropagationPhase::propagate):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::newVariableAccessData):
(JSC::DFG::ByteCodeParser::getLocal):
(JSC::DFG::ByteCodeParser::setLocal):
(JSC::DFG::ByteCodeParser::getArgument):
(JSC::DFG::ByteCodeParser::setArgument):
(JSC::DFG::ByteCodeParser::flushDirect):
(JSC::DFG::ByteCodeParser::flush):
(JSC::DFG::ByteCodeParser::noticeArgumentsUse):
(JSC::DFG::ByteCodeParser::handleVarargsCall):
(JSC::DFG::ByteCodeParser::attemptToInlineCall):
(JSC::DFG::ByteCodeParser::handleInlining):
(JSC::DFG::ByteCodeParser::parseBlock):
(JSC::DFG::ByteCodeParser::InlineStackEntry::InlineStackEntry):
(JSC::DFG::ByteCodeParser::parseCodeBlock):

  • dfg/DFGCPSRethreadingPhase.cpp:

(JSC::DFG::CPSRethreadingPhase::canonicalizeGetLocalFor):
(JSC::DFG::CPSRethreadingPhase::canonicalizeLocalsInBlock):

  • dfg/DFGCSEPhase.cpp:
  • dfg/DFGCallCreateDirectArgumentsSlowPathGenerator.h: Added.

(JSC::DFG::CallCreateDirectArgumentsSlowPathGenerator::CallCreateDirectArgumentsSlowPathGenerator):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::isSupportedForInlining):
(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGCommon.h:
  • dfg/DFGCommonData.h:

(JSC::DFG::CommonData::CommonData):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::foldConstants):

  • dfg/DFGDCEPhase.cpp:

(JSC::DFG::DCEPhase::cleanVariables):

  • dfg/DFGDisassembler.h:
  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGFlushFormat.cpp:

(WTF::printInternal):

  • dfg/DFGFlushFormat.h:

(JSC::DFG::resultFor):
(JSC::DFG::useKindFor):
(JSC::DFG::dataFormatFor):

  • dfg/DFGForAllKills.h: Added.

(JSC::DFG::forAllLiveNodesAtTail):
(JSC::DFG::forAllDirectlyKilledOperands):
(JSC::DFG::forAllKilledOperands):
(JSC::DFG::forAllKilledNodesAtNodeIndex):
(JSC::DFG::forAllKillsInBlock):

  • dfg/DFGGraph.cpp:

(JSC::DFG::Graph::Graph):
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::substituteGetLocal):
(JSC::DFG::Graph::livenessFor):
(JSC::DFG::Graph::killsFor):
(JSC::DFG::Graph::tryGetConstantClosureVar):
(JSC::DFG::Graph::tryGetRegisters): Deleted.

  • dfg/DFGGraph.h:

(JSC::DFG::Graph::symbolTableFor):
(JSC::DFG::Graph::uses):
(JSC::DFG::Graph::bytecodeRegisterForArgument): Deleted.
(JSC::DFG::Graph::capturedVarsFor): Deleted.
(JSC::DFG::Graph::usesArguments): Deleted.
(JSC::DFG::Graph::argumentsRegisterFor): Deleted.
(JSC::DFG::Graph::machineArgumentsRegisterFor): Deleted.
(JSC::DFG::Graph::uncheckedArgumentsRegisterFor): Deleted.

  • dfg/DFGHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGHeapLocation.h:
  • dfg/DFGInPlaceAbstractState.cpp:

(JSC::DFG::InPlaceAbstractState::initialize):
(JSC::DFG::InPlaceAbstractState::mergeStateAtTail):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::link):

  • dfg/DFGMayExit.cpp:

(JSC::DFG::mayExit):

  • dfg/DFGMinifiedID.h:
  • dfg/DFGMinifiedNode.cpp:

(JSC::DFG::MinifiedNode::fromNode):

  • dfg/DFGMinifiedNode.h:

(JSC::DFG::belongsInMinifiedGraph):
(JSC::DFG::MinifiedNode::hasInlineCallFrame):
(JSC::DFG::MinifiedNode::inlineCallFrame):

  • dfg/DFGNode.cpp:

(JSC::DFG::Node::convertToIdentityOn):

  • dfg/DFGNode.h:

(JSC::DFG::Node::hasConstant):
(JSC::DFG::Node::constant):
(JSC::DFG::Node::hasScopeOffset):
(JSC::DFG::Node::scopeOffset):
(JSC::DFG::Node::hasDirectArgumentsOffset):
(JSC::DFG::Node::capturedArgumentsOffset):
(JSC::DFG::Node::variablePointer):
(JSC::DFG::Node::hasCallVarargsData):
(JSC::DFG::Node::hasLoadVarargsData):
(JSC::DFG::Node::hasHeapPrediction):
(JSC::DFG::Node::hasCellOperand):
(JSC::DFG::Node::objectMaterializationData):
(JSC::DFG::Node::isPhantomAllocation):
(JSC::DFG::Node::willHaveCodeGenOrOSR):
(JSC::DFG::Node::shouldSpeculateDirectArguments):
(JSC::DFG::Node::shouldSpeculateScopedArguments):
(JSC::DFG::Node::isPhantomArguments): Deleted.
(JSC::DFG::Node::hasVarNumber): Deleted.
(JSC::DFG::Node::varNumber): Deleted.
(JSC::DFG::Node::registerPointer): Deleted.
(JSC::DFG::Node::shouldSpeculateArguments): Deleted.

  • dfg/DFGNodeType.h:
  • dfg/DFGOSRAvailabilityAnalysisPhase.cpp:

(JSC::DFG::OSRAvailabilityAnalysisPhase::run):
(JSC::DFG::LocalOSRAvailabilityCalculator::executeNode):

  • dfg/DFGOSRExitCompiler.cpp:

(JSC::DFG::OSRExitCompiler::emitRestoreArguments):

  • dfg/DFGOSRExitCompiler.h:

(JSC::DFG::OSRExitCompiler::badIndex): Deleted.
(JSC::DFG::OSRExitCompiler::initializePoisoned): Deleted.
(JSC::DFG::OSRExitCompiler::poisonIndex): Deleted.

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::reifyInlinedCallFrames):
(JSC::DFG::ArgumentsRecoveryGenerator::ArgumentsRecoveryGenerator): Deleted.
(JSC::DFG::ArgumentsRecoveryGenerator::~ArgumentsRecoveryGenerator): Deleted.
(JSC::DFG::ArgumentsRecoveryGenerator::generateFor): Deleted.

  • dfg/DFGOSRExitCompilerCommon.h:
  • dfg/DFGOperations.cpp:
  • dfg/DFGOperations.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • dfg/DFGPreciseLocalClobberize.h:

(JSC::DFG::PreciseLocalClobberizeAdaptor::read):
(JSC::DFG::PreciseLocalClobberizeAdaptor::write):
(JSC::DFG::PreciseLocalClobberizeAdaptor::def):
(JSC::DFG::PreciseLocalClobberizeAdaptor::readTop):
(JSC::DFG::preciseLocalClobberize):
(JSC::DFG::PreciseLocalClobberizeAdaptor::writeTop): Deleted.
(JSC::DFG::forEachLocalReadByUnwind): Deleted.

  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::run):
(JSC::DFG::PredictionPropagationPhase::propagate):
(JSC::DFG::PredictionPropagationPhase::doRoundOfDoubleVoting):
(JSC::DFG::PredictionPropagationPhase::propagateThroughArgumentPositions):

  • dfg/DFGPromoteHeapAccess.h:

(JSC::DFG::promoteHeapAccess):

  • dfg/DFGPromotedHeapLocation.cpp:

(WTF::printInternal):

  • dfg/DFGPromotedHeapLocation.h:
  • dfg/DFGSSAConversionPhase.cpp:

(JSC::DFG::SSAConversionPhase::run):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::emitAllocateJSArray):
(JSC::DFG::SpeculativeJIT::emitGetLength):
(JSC::DFG::SpeculativeJIT::emitGetCallee):
(JSC::DFG::SpeculativeJIT::emitGetArgumentStart):
(JSC::DFG::SpeculativeJIT::checkArray):
(JSC::DFG::SpeculativeJIT::compileGetByValOnDirectArguments):
(JSC::DFG::SpeculativeJIT::compileGetByValOnScopedArguments):
(JSC::DFG::SpeculativeJIT::compileGetArrayLength):
(JSC::DFG::SpeculativeJIT::compileNewFunction):
(JSC::DFG::SpeculativeJIT::compileForwardVarargs):
(JSC::DFG::SpeculativeJIT::compileCreateActivation):
(JSC::DFG::SpeculativeJIT::compileCreateDirectArguments):
(JSC::DFG::SpeculativeJIT::compileGetFromArguments):
(JSC::DFG::SpeculativeJIT::compilePutToArguments):
(JSC::DFG::SpeculativeJIT::compileCreateScopedArguments):
(JSC::DFG::SpeculativeJIT::compileCreateClonedArguments):
(JSC::DFG::SpeculativeJIT::emitAllocateArguments): Deleted.
(JSC::DFG::SpeculativeJIT::compileGetByValOnArguments): Deleted.
(JSC::DFG::SpeculativeJIT::compileGetArgumentsLength): Deleted.
(JSC::DFG::SpeculativeJIT::compileNewFunctionNoCheck): Deleted.
(JSC::DFG::SpeculativeJIT::compileNewFunctionExpression): Deleted.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObjectWithKnownSize):
(JSC::DFG::SpeculativeJIT::emitAllocateJSObject):
(JSC::DFG::SpeculativeJIT::framePointerOffsetToGetActivationRegisters): Deleted.

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGStackLayoutPhase.cpp:

(JSC::DFG::StackLayoutPhase::run):

  • dfg/DFGStrengthReductionPhase.cpp:

(JSC::DFG::StrengthReductionPhase::handleNode):

  • dfg/DFGStructureRegistrationPhase.cpp:

(JSC::DFG::StructureRegistrationPhase::run):

  • dfg/DFGUnificationPhase.cpp:

(JSC::DFG::UnificationPhase::run):

  • dfg/DFGValidate.cpp:

(JSC::DFG::Validate::validateCPS):

  • dfg/DFGValueSource.cpp:

(JSC::DFG::ValueSource::dump):

  • dfg/DFGValueSource.h:

(JSC::DFG::dataFormatToValueSourceKind):
(JSC::DFG::valueSourceKindToDataFormat):
(JSC::DFG::ValueSource::ValueSource):
(JSC::DFG::ValueSource::forFlushFormat):
(JSC::DFG::ValueSource::valueRecovery):

  • dfg/DFGVarargsForwardingPhase.cpp: Added.

(JSC::DFG::performVarargsForwarding):

  • dfg/DFGVarargsForwardingPhase.h: Added.
  • dfg/DFGVariableAccessData.cpp:

(JSC::DFG::VariableAccessData::VariableAccessData):
(JSC::DFG::VariableAccessData::flushFormat):
(JSC::DFG::VariableAccessData::mergeIsCaptured): Deleted.

  • dfg/DFGVariableAccessData.h:

(JSC::DFG::VariableAccessData::shouldNeverUnbox):
(JSC::DFG::VariableAccessData::shouldUseDoubleFormat):
(JSC::DFG::VariableAccessData::isCaptured): Deleted.
(JSC::DFG::VariableAccessData::mergeIsArgumentsAlias): Deleted.
(JSC::DFG::VariableAccessData::isArgumentsAlias): Deleted.

  • dfg/DFGVariableAccessDataDump.cpp:

(JSC::DFG::VariableAccessDataDump::dump):

  • dfg/DFGVariableAccessDataDump.h:
  • dfg/DFGVariableEventStream.cpp:

(JSC::DFG::VariableEventStream::tryToSetConstantRecovery):

  • dfg/DFGVariableEventStream.h:
  • ftl/FTLAbstractHeap.cpp:

(JSC::FTL::AbstractHeap::dump):
(JSC::FTL::AbstractField::dump):
(JSC::FTL::IndexedAbstractHeap::dump):
(JSC::FTL::NumberedAbstractHeap::dump):
(JSC::FTL::AbsoluteAbstractHeap::dump):

  • ftl/FTLAbstractHeap.h:
  • ftl/FTLAbstractHeapRepository.cpp:
  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection):

  • ftl/FTLExitArgument.cpp:

(JSC::FTL::ExitArgument::dump):

  • ftl/FTLExitPropertyValue.cpp:

(JSC::FTL::ExitPropertyValue::withLocalsOffset):

  • ftl/FTLExitPropertyValue.h:
  • ftl/FTLExitTimeObjectMaterialization.cpp:

(JSC::FTL::ExitTimeObjectMaterialization::ExitTimeObjectMaterialization):
(JSC::FTL::ExitTimeObjectMaterialization::accountForLocalsOffset):

  • ftl/FTLExitTimeObjectMaterialization.h:

(JSC::FTL::ExitTimeObjectMaterialization::origin):

  • ftl/FTLExitValue.cpp:

(JSC::FTL::ExitValue::withLocalsOffset):
(JSC::FTL::ExitValue::valueFormat):
(JSC::FTL::ExitValue::dumpInContext):

  • ftl/FTLExitValue.h:

(JSC::FTL::ExitValue::isArgument):
(JSC::FTL::ExitValue::argumentsObjectThatWasNotCreated): Deleted.
(JSC::FTL::ExitValue::isArgumentsObjectThatWasNotCreated): Deleted.
(JSC::FTL::ExitValue::valueFormat): Deleted.

  • ftl/FTLInlineCacheSize.cpp:

(JSC::FTL::sizeOfCallForwardVarargs):
(JSC::FTL::sizeOfConstructForwardVarargs):
(JSC::FTL::sizeOfICFor):

  • ftl/FTLInlineCacheSize.h:
  • ftl/FTLIntrinsicRepository.h:
  • ftl/FTLJSCallVarargs.cpp:

(JSC::FTL::JSCallVarargs::JSCallVarargs):
(JSC::FTL::JSCallVarargs::emit):

  • ftl/FTLJSCallVarargs.h:
  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::lower):
(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compilePutStack):
(JSC::FTL::LowerDFGToLLVM::compileGetArrayLength):
(JSC::FTL::LowerDFGToLLVM::compileGetByVal):
(JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentByVal):
(JSC::FTL::LowerDFGToLLVM::compilePutByVal):
(JSC::FTL::LowerDFGToLLVM::compileArrayPush):
(JSC::FTL::LowerDFGToLLVM::compileArrayPop):
(JSC::FTL::LowerDFGToLLVM::compileCreateActivation):
(JSC::FTL::LowerDFGToLLVM::compileNewFunction):
(JSC::FTL::LowerDFGToLLVM::compileCreateDirectArguments):
(JSC::FTL::LowerDFGToLLVM::compileCreateScopedArguments):
(JSC::FTL::LowerDFGToLLVM::compileCreateClonedArguments):
(JSC::FTL::LowerDFGToLLVM::compileStringCharAt):
(JSC::FTL::LowerDFGToLLVM::compileStringCharCodeAt):
(JSC::FTL::LowerDFGToLLVM::compileGetGlobalVar):
(JSC::FTL::LowerDFGToLLVM::compilePutGlobalVar):
(JSC::FTL::LowerDFGToLLVM::compileGetArgumentCount):
(JSC::FTL::LowerDFGToLLVM::compileGetClosureVar):
(JSC::FTL::LowerDFGToLLVM::compilePutClosureVar):
(JSC::FTL::LowerDFGToLLVM::compileGetFromArguments):
(JSC::FTL::LowerDFGToLLVM::compilePutToArguments):
(JSC::FTL::LowerDFGToLLVM::compileCallOrConstructVarargs):
(JSC::FTL::LowerDFGToLLVM::compileForwardVarargs):
(JSC::FTL::LowerDFGToLLVM::compileGetEnumeratorPname):
(JSC::FTL::LowerDFGToLLVM::ArgumentsLength::ArgumentsLength):
(JSC::FTL::LowerDFGToLLVM::getArgumentsLength):
(JSC::FTL::LowerDFGToLLVM::getCurrentCallee):
(JSC::FTL::LowerDFGToLLVM::getArgumentsStart):
(JSC::FTL::LowerDFGToLLVM::baseIndex):
(JSC::FTL::LowerDFGToLLVM::allocateObject):
(JSC::FTL::LowerDFGToLLVM::allocateVariableSizedObject):
(JSC::FTL::LowerDFGToLLVM::isArrayType):
(JSC::FTL::LowerDFGToLLVM::emitStoreBarrier):
(JSC::FTL::LowerDFGToLLVM::buildExitArguments):
(JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
(JSC::FTL::LowerDFGToLLVM::exitValueForNode):
(JSC::FTL::LowerDFGToLLVM::loadStructure):
(JSC::FTL::LowerDFGToLLVM::compilePhantomArguments): Deleted.
(JSC::FTL::LowerDFGToLLVM::compileGetMyArgumentsLength): Deleted.
(JSC::FTL::LowerDFGToLLVM::compileGetClosureRegisters): Deleted.
(JSC::FTL::LowerDFGToLLVM::compileCheckArgumentsNotCreated): Deleted.
(JSC::FTL::LowerDFGToLLVM::checkArgumentsNotCreated): Deleted.

  • ftl/FTLOSRExitCompiler.cpp:

(JSC::FTL::compileRecovery):
(JSC::FTL::compileStub):

  • ftl/FTLOperations.cpp:

(JSC::FTL::operationMaterializeObjectInOSR):

  • ftl/FTLOutput.h:

(JSC::FTL::Output::aShr):
(JSC::FTL::Output::lShr):
(JSC::FTL::Output::zeroExtPtr):

  • heap/CopyToken.h:
  • interpreter/CallFrame.h:

(JSC::ExecState::getArgumentUnsafe):

  • interpreter/Interpreter.cpp:

(JSC::sizeOfVarargs):
(JSC::sizeFrameForVarargs):
(JSC::loadVarargs):
(JSC::unwindCallFrame):

  • interpreter/Interpreter.h:
  • interpreter/StackVisitor.cpp:

(JSC::StackVisitor::Frame::createArguments):
(JSC::StackVisitor::Frame::existingArguments): Deleted.

  • interpreter/StackVisitor.h:
  • jit/AssemblyHelpers.h:

(JSC::AssemblyHelpers::storeValue):
(JSC::AssemblyHelpers::loadValue):
(JSC::AssemblyHelpers::storeTrustedValue):
(JSC::AssemblyHelpers::branchIfNotCell):
(JSC::AssemblyHelpers::branchIsEmpty):
(JSC::AssemblyHelpers::argumentsStart):
(JSC::AssemblyHelpers::baselineArgumentsRegisterFor): Deleted.
(JSC::AssemblyHelpers::offsetOfLocals): Deleted.
(JSC::AssemblyHelpers::offsetOfArguments): Deleted.

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgument):

  • jit/GPRInfo.h:

(JSC::JSValueRegs::withTwoAvailableRegs):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):
(JSC::JIT::privateCompileSlowCases):

  • jit/JIT.h:
  • jit/JITCall.cpp:

(JSC::JIT::compileSetupVarargsFrame):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileSetupVarargsFrame):

  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_lexical_environment):
(JSC::JIT::emit_op_new_func):
(JSC::JIT::emit_op_create_direct_arguments):
(JSC::JIT::emit_op_create_scoped_arguments):
(JSC::JIT::emit_op_create_out_of_band_arguments):
(JSC::JIT::emit_op_tear_off_arguments): Deleted.
(JSC::JIT::emit_op_create_arguments): Deleted.
(JSC::JIT::emit_op_init_lazy_reg): Deleted.
(JSC::JIT::emit_op_get_arguments_length): Deleted.
(JSC::JIT::emitSlow_op_get_arguments_length): Deleted.
(JSC::JIT::emit_op_get_argument_by_val): Deleted.
(JSC::JIT::emitSlow_op_get_argument_by_val): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_lexical_environment):
(JSC::JIT::emit_op_tear_off_arguments): Deleted.
(JSC::JIT::emit_op_create_arguments): Deleted.
(JSC::JIT::emit_op_init_lazy_reg): Deleted.
(JSC::JIT::emit_op_get_arguments_length): Deleted.
(JSC::JIT::emitSlow_op_get_arguments_length): Deleted.
(JSC::JIT::emit_op_get_argument_by_val): Deleted.
(JSC::JIT::emitSlow_op_get_argument_by_val): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitGetClosureVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emit_op_init_global_const):
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::emitDirectArgumentsGetByVal):
(JSC::JIT::emitScopedArgumentsGetByVal):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitGetClosureVar):
(JSC::JIT::emitPutClosureVar):
(JSC::JIT::emit_op_get_from_arguments):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emit_op_init_global_const):

  • jit/SetupVarargsFrame.cpp:

(JSC::emitSetupVarargsFrameFastCase):

  • llint/LLIntOffsetsExtractor.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter.asm:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • parser/Nodes.h:

(JSC::ScopeNode::captures):

  • runtime/Arguments.cpp: Removed.
  • runtime/Arguments.h: Removed.
  • runtime/ArgumentsMode.h: Added.
  • runtime/DirectArgumentsOffset.cpp: Added.

(JSC::DirectArgumentsOffset::dump):

  • runtime/DirectArgumentsOffset.h: Added.

(JSC::DirectArgumentsOffset::DirectArgumentsOffset):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • runtime/ConstantMode.cpp: Added.

(WTF::printInternal):

  • runtime/ConstantMode.h:

(JSC::modeForIsConstant):

  • runtime/DirectArguments.cpp: Added.

(JSC::DirectArguments::DirectArguments):
(JSC::DirectArguments::createUninitialized):
(JSC::DirectArguments::create):
(JSC::DirectArguments::createByCopying):
(JSC::DirectArguments::visitChildren):
(JSC::DirectArguments::copyBackingStore):
(JSC::DirectArguments::createStructure):
(JSC::DirectArguments::overrideThings):
(JSC::DirectArguments::overrideThingsIfNecessary):
(JSC::DirectArguments::overrideArgument):
(JSC::DirectArguments::copyToArguments):
(JSC::DirectArguments::overridesSize):

  • runtime/DirectArguments.h: Added.

(JSC::DirectArguments::internalLength):
(JSC::DirectArguments::length):
(JSC::DirectArguments::canAccessIndexQuickly):
(JSC::DirectArguments::getIndexQuickly):
(JSC::DirectArguments::setIndexQuickly):
(JSC::DirectArguments::callee):
(JSC::DirectArguments::argument):
(JSC::DirectArguments::overrodeThings):
(JSC::DirectArguments::offsetOfCallee):
(JSC::DirectArguments::offsetOfLength):
(JSC::DirectArguments::offsetOfMinCapacity):
(JSC::DirectArguments::offsetOfOverrides):
(JSC::DirectArguments::storageOffset):
(JSC::DirectArguments::offsetOfSlot):
(JSC::DirectArguments::allocationSize):
(JSC::DirectArguments::storage):

  • runtime/FunctionPrototype.cpp:
  • runtime/GenericArguments.h: Added.

(JSC::GenericArguments::GenericArguments):

  • runtime/GenericArgumentsInlines.h: Added.

(JSC::GenericArguments<Type>::getOwnPropertySlot):
(JSC::GenericArguments<Type>::getOwnPropertySlotByIndex):
(JSC::GenericArguments<Type>::getOwnPropertyNames):
(JSC::GenericArguments<Type>::put):
(JSC::GenericArguments<Type>::putByIndex):
(JSC::GenericArguments<Type>::deleteProperty):
(JSC::GenericArguments<Type>::deletePropertyByIndex):
(JSC::GenericArguments<Type>::defineOwnProperty):
(JSC::GenericArguments<Type>::copyToArguments):

  • runtime/GenericOffset.h: Added.

(JSC::GenericOffset::GenericOffset):
(JSC::GenericOffset::operator!):
(JSC::GenericOffset::offsetUnchecked):
(JSC::GenericOffset::offset):
(JSC::GenericOffset::operator==):
(JSC::GenericOffset::operator!=):
(JSC::GenericOffset::operator<):
(JSC::GenericOffset::operator>):
(JSC::GenericOffset::operator<=):
(JSC::GenericOffset::operator>=):
(JSC::GenericOffset::operator+):
(JSC::GenericOffset::operator-):
(JSC::GenericOffset::operator+=):
(JSC::GenericOffset::operator-=):

  • runtime/JSArgumentsIterator.cpp:

(JSC::JSArgumentsIterator::finishCreation):
(JSC::argumentsFuncIterator):

  • runtime/JSArgumentsIterator.h:

(JSC::JSArgumentsIterator::create):
(JSC::JSArgumentsIterator::next):

  • runtime/JSEnvironmentRecord.cpp:

(JSC::JSEnvironmentRecord::visitChildren):

  • runtime/JSEnvironmentRecord.h:

(JSC::JSEnvironmentRecord::variables):
(JSC::JSEnvironmentRecord::isValid):
(JSC::JSEnvironmentRecord::variableAt):
(JSC::JSEnvironmentRecord::offsetOfVariables):
(JSC::JSEnvironmentRecord::offsetOfVariable):
(JSC::JSEnvironmentRecord::allocationSizeForScopeSize):
(JSC::JSEnvironmentRecord::allocationSize):
(JSC::JSEnvironmentRecord::JSEnvironmentRecord):
(JSC::JSEnvironmentRecord::finishCreationUninitialized):
(JSC::JSEnvironmentRecord::finishCreation):
(JSC::JSEnvironmentRecord::registers): Deleted.
(JSC::JSEnvironmentRecord::registerAt): Deleted.
(JSC::JSEnvironmentRecord::addressOfRegisters): Deleted.
(JSC::JSEnvironmentRecord::offsetOfRegisters): Deleted.

  • runtime/JSFunction.cpp:
  • runtime/JSGlobalObject.cpp:

(JSC::JSGlobalObject::init):
(JSC::JSGlobalObject::addGlobalVar):
(JSC::JSGlobalObject::addFunction):
(JSC::JSGlobalObject::visitChildren):
(JSC::JSGlobalObject::addStaticGlobals):

  • runtime/JSGlobalObject.h:

(JSC::JSGlobalObject::directArgumentsStructure):
(JSC::JSGlobalObject::scopedArgumentsStructure):
(JSC::JSGlobalObject::outOfBandArgumentsStructure):
(JSC::JSGlobalObject::argumentsStructure): Deleted.

  • runtime/JSLexicalEnvironment.cpp:

(JSC::JSLexicalEnvironment::symbolTableGet):
(JSC::JSLexicalEnvironment::symbolTablePut):
(JSC::JSLexicalEnvironment::getOwnNonIndexPropertyNames):
(JSC::JSLexicalEnvironment::symbolTablePutWithAttributes):
(JSC::JSLexicalEnvironment::visitChildren): Deleted.

  • runtime/JSLexicalEnvironment.h:

(JSC::JSLexicalEnvironment::create):
(JSC::JSLexicalEnvironment::JSLexicalEnvironment):
(JSC::JSLexicalEnvironment::registersOffset): Deleted.
(JSC::JSLexicalEnvironment::storageOffset): Deleted.
(JSC::JSLexicalEnvironment::storage): Deleted.
(JSC::JSLexicalEnvironment::allocationSize): Deleted.
(JSC::JSLexicalEnvironment::isValidIndex): Deleted.
(JSC::JSLexicalEnvironment::isValid): Deleted.
(JSC::JSLexicalEnvironment::registerAt): Deleted.

  • runtime/JSNameScope.cpp:

(JSC::JSNameScope::visitChildren): Deleted.

  • runtime/JSNameScope.h:

(JSC::JSNameScope::create):
(JSC::JSNameScope::value):
(JSC::JSNameScope::finishCreation):
(JSC::JSNameScope::JSNameScope):

  • runtime/JSScope.cpp:

(JSC::abstractAccess):

  • runtime/JSSegmentedVariableObject.cpp:

(JSC::JSSegmentedVariableObject::findVariableIndex):
(JSC::JSSegmentedVariableObject::addVariables):
(JSC::JSSegmentedVariableObject::visitChildren):
(JSC::JSSegmentedVariableObject::findRegisterIndex): Deleted.
(JSC::JSSegmentedVariableObject::addRegisters): Deleted.

  • runtime/JSSegmentedVariableObject.h:

(JSC::JSSegmentedVariableObject::variableAt):
(JSC::JSSegmentedVariableObject::assertVariableIsInThisObject):
(JSC::JSSegmentedVariableObject::registerAt): Deleted.
(JSC::JSSegmentedVariableObject::assertRegisterIsInThisObject): Deleted.

  • runtime/JSSymbolTableObject.h:

(JSC::JSSymbolTableObject::offsetOfSymbolTable):
(JSC::symbolTableGet):
(JSC::symbolTablePut):
(JSC::symbolTablePutWithAttributes):

  • runtime/JSType.h:
  • runtime/Options.h:
  • runtime/ClonedArguments.cpp: Added.

(JSC::ClonedArguments::ClonedArguments):
(JSC::ClonedArguments::createEmpty):
(JSC::ClonedArguments::createWithInlineFrame):
(JSC::ClonedArguments::createWithMachineFrame):
(JSC::ClonedArguments::createByCopyingFrom):
(JSC::ClonedArguments::createStructure):
(JSC::ClonedArguments::getOwnPropertySlot):
(JSC::ClonedArguments::getOwnPropertyNames):
(JSC::ClonedArguments::put):
(JSC::ClonedArguments::deleteProperty):
(JSC::ClonedArguments::defineOwnProperty):
(JSC::ClonedArguments::materializeSpecials):
(JSC::ClonedArguments::materializeSpecialsIfNecessary):

  • runtime/ClonedArguments.h: Added.

(JSC::ClonedArguments::specialsMaterialized):

  • runtime/ScopeOffset.cpp: Added.

(JSC::ScopeOffset::dump):

  • runtime/ScopeOffset.h: Added.

(JSC::ScopeOffset::ScopeOffset):

  • runtime/ScopedArguments.cpp: Added.

(JSC::ScopedArguments::ScopedArguments):
(JSC::ScopedArguments::finishCreation):
(JSC::ScopedArguments::createUninitialized):
(JSC::ScopedArguments::create):
(JSC::ScopedArguments::createByCopying):
(JSC::ScopedArguments::createByCopyingFrom):
(JSC::ScopedArguments::visitChildren):
(JSC::ScopedArguments::createStructure):
(JSC::ScopedArguments::overrideThings):
(JSC::ScopedArguments::overrideThingsIfNecessary):
(JSC::ScopedArguments::overrideArgument):
(JSC::ScopedArguments::copyToArguments):

  • runtime/ScopedArguments.h: Added.

(JSC::ScopedArguments::internalLength):
(JSC::ScopedArguments::length):
(JSC::ScopedArguments::canAccessIndexQuickly):
(JSC::ScopedArguments::getIndexQuickly):
(JSC::ScopedArguments::setIndexQuickly):
(JSC::ScopedArguments::callee):
(JSC::ScopedArguments::overrodeThings):
(JSC::ScopedArguments::offsetOfOverrodeThings):
(JSC::ScopedArguments::offsetOfTotalLength):
(JSC::ScopedArguments::offsetOfTable):
(JSC::ScopedArguments::offsetOfScope):
(JSC::ScopedArguments::overflowStorageOffset):
(JSC::ScopedArguments::allocationSize):
(JSC::ScopedArguments::overflowStorage):

  • runtime/ScopedArgumentsTable.cpp: Added.

(JSC::ScopedArgumentsTable::ScopedArgumentsTable):
(JSC::ScopedArgumentsTable::~ScopedArgumentsTable):
(JSC::ScopedArgumentsTable::destroy):
(JSC::ScopedArgumentsTable::create):
(JSC::ScopedArgumentsTable::clone):
(JSC::ScopedArgumentsTable::setLength):
(JSC::ScopedArgumentsTable::set):
(JSC::ScopedArgumentsTable::createStructure):

  • runtime/ScopedArgumentsTable.h: Added.

(JSC::ScopedArgumentsTable::length):
(JSC::ScopedArgumentsTable::get):
(JSC::ScopedArgumentsTable::lock):
(JSC::ScopedArgumentsTable::offsetOfLength):
(JSC::ScopedArgumentsTable::offsetOfArguments):
(JSC::ScopedArgumentsTable::at):

  • runtime/SymbolTable.cpp:

(JSC::SymbolTableEntry::prepareToWatch):
(JSC::SymbolTable::SymbolTable):
(JSC::SymbolTable::visitChildren):
(JSC::SymbolTable::localToEntry):
(JSC::SymbolTable::entryFor):
(JSC::SymbolTable::cloneScopePart):
(JSC::SymbolTable::prepareForTypeProfiling):
(JSC::SymbolTable::uniqueIDForOffset):
(JSC::SymbolTable::globalTypeSetForOffset):
(JSC::SymbolTable::cloneCapturedNames): Deleted.
(JSC::SymbolTable::uniqueIDForRegister): Deleted.
(JSC::SymbolTable::globalTypeSetForRegister): Deleted.

  • runtime/SymbolTable.h:

(JSC::SymbolTableEntry::varOffsetFromBits):
(JSC::SymbolTableEntry::scopeOffsetFromBits):
(JSC::SymbolTableEntry::Fast::varOffset):
(JSC::SymbolTableEntry::Fast::scopeOffset):
(JSC::SymbolTableEntry::Fast::isDontEnum):
(JSC::SymbolTableEntry::Fast::getAttributes):
(JSC::SymbolTableEntry::SymbolTableEntry):
(JSC::SymbolTableEntry::varOffset):
(JSC::SymbolTableEntry::isWatchable):
(JSC::SymbolTableEntry::scopeOffset):
(JSC::SymbolTableEntry::setAttributes):
(JSC::SymbolTableEntry::constantMode):
(JSC::SymbolTableEntry::isDontEnum):
(JSC::SymbolTableEntry::disableWatching):
(JSC::SymbolTableEntry::pack):
(JSC::SymbolTableEntry::isValidVarOffset):
(JSC::SymbolTable::createNameScopeTable):
(JSC::SymbolTable::maxScopeOffset):
(JSC::SymbolTable::didUseScopeOffset):
(JSC::SymbolTable::didUseVarOffset):
(JSC::SymbolTable::scopeSize):
(JSC::SymbolTable::nextScopeOffset):
(JSC::SymbolTable::takeNextScopeOffset):
(JSC::SymbolTable::add):
(JSC::SymbolTable::set):
(JSC::SymbolTable::argumentsLength):
(JSC::SymbolTable::setArgumentsLength):
(JSC::SymbolTable::argumentOffset):
(JSC::SymbolTable::setArgumentOffset):
(JSC::SymbolTable::arguments):
(JSC::SlowArgument::SlowArgument): Deleted.
(JSC::SymbolTableEntry::Fast::getIndex): Deleted.
(JSC::SymbolTableEntry::getIndex): Deleted.
(JSC::SymbolTableEntry::isValidIndex): Deleted.
(JSC::SymbolTable::captureStart): Deleted.
(JSC::SymbolTable::setCaptureStart): Deleted.
(JSC::SymbolTable::captureEnd): Deleted.
(JSC::SymbolTable::setCaptureEnd): Deleted.
(JSC::SymbolTable::captureCount): Deleted.
(JSC::SymbolTable::isCaptured): Deleted.
(JSC::SymbolTable::parameterCount): Deleted.
(JSC::SymbolTable::parameterCountIncludingThis): Deleted.
(JSC::SymbolTable::setParameterCountIncludingThis): Deleted.
(JSC::SymbolTable::slowArguments): Deleted.
(JSC::SymbolTable::setSlowArguments): Deleted.

  • runtime/VM.cpp:

(JSC::VM::VM):

  • runtime/VM.h:
  • runtime/VarOffset.cpp: Added.

(JSC::VarOffset::dump):
(WTF::printInternal):

  • runtime/VarOffset.h: Added.

(JSC::VarOffset::VarOffset):
(JSC::VarOffset::assemble):
(JSC::VarOffset::isValid):
(JSC::VarOffset::operator!):
(JSC::VarOffset::kind):
(JSC::VarOffset::isStack):
(JSC::VarOffset::isScope):
(JSC::VarOffset::isDirectArgument):
(JSC::VarOffset::stackOffsetUnchecked):
(JSC::VarOffset::scopeOffsetUnchecked):
(JSC::VarOffset::capturedArgumentsOffsetUnchecked):
(JSC::VarOffset::stackOffset):
(JSC::VarOffset::scopeOffset):
(JSC::VarOffset::capturedArgumentsOffset):
(JSC::VarOffset::rawOffset):
(JSC::VarOffset::checkSanity):
(JSC::VarOffset::operator==):
(JSC::VarOffset::operator!=):
(JSC::VarOffset::hash):
(JSC::VarOffset::isHashTableDeletedValue):
(JSC::VarOffsetHash::hash):
(JSC::VarOffsetHash::equal):

  • tests/stress/arguments-exit-strict-mode.js: Added.
  • tests/stress/arguments-exit.js: Added.
  • tests/stress/arguments-inlined-exit-strict-mode-fixed.js: Added.
  • tests/stress/arguments-inlined-exit-strict-mode.js: Added.
  • tests/stress/arguments-inlined-exit.js: Added.
  • tests/stress/arguments-interference.js: Added.
  • tests/stress/arguments-interference-cfg.js: Added.
  • tests/stress/dead-get-closure-var.js: Added.
  • tests/stress/get-declared-unpassed-argument-in-direct-arguments.js: Added.
  • tests/stress/get-declared-unpassed-argument-in-scoped-arguments.js: Added.
  • tests/stress/varargs-closure-inlined-exit-strict-mode.js: Added.
  • tests/stress/varargs-closure-inlined-exit.js: Added.
  • tests/stress/varargs-exit.js: Added.
  • tests/stress/varargs-inlined-exit.js: Added.
  • tests/stress/varargs-inlined-simple-exit-aliasing-weird-reversed-args.js: Added.
  • tests/stress/varargs-inlined-simple-exit-aliasing-weird.js: Added.
  • tests/stress/varargs-inlined-simple-exit-aliasing.js: Added.
  • tests/stress/varargs-inlined-simple-exit.js: Added.
  • tests/stress/varargs-too-few-arguments.js: Added.
  • tests/stress/varargs-varargs-closure-inlined-exit.js: Added.
  • tests/stress/varargs-varargs-inlined-exit-strict-mode.js: Added.
  • tests/stress/varargs-varargs-inlined-exit.js: Added.

Source/WTF:

  • wtf/FastBitVector.h:

(WTF::FastBitVector::resize): Small change: don't resize if you don't have to resize.

LayoutTests:

  • js/function-apply-aliased-expected.txt:
  • js/function-dot-arguments-expected.txt:
  • js/regress/arguments-expected.txt: Added.
  • js/regress/arguments-named-and-reflective-expected.txt: Added.
  • js/regress/arguments-named-and-reflective.html: Added.
  • js/regress/arguments-strict-mode-expected.txt: Added.
  • js/regress/arguments-strict-mode.html: Added.
  • js/regress/arguments.html: Added.
  • js/regress/script-tests/arguments-named-and-reflective.js: Added.
  • js/regress/script-tests/arguments-strict-mode.js: Added.
  • js/regress/script-tests/arguments.js: Added.
  • js/regress/script-tests/try-catch-get-by-val-cloned-arguments.js: Added.
  • js/regress/script-tests/try-catch-get-by-val-direct-arguments.js: Added.
  • js/regress/script-tests/try-catch-get-by-val-scoped-arguments.js: Added.
  • js/regress/script-tests/varargs-call.js: Added.
  • js/regress/script-tests/varargs-construct-inline.js: Added.
  • js/regress/script-tests/varargs-construct.js: Added.
  • js/regress/script-tests/varargs-inline.js: Added.
  • js/regress/script-tests/varargs-strict-mode.js: Added.
  • js/regress/script-tests/varargs.js: Added.
  • js/regress/try-catch-get-by-val-cloned-arguments-expected.txt: Added.
  • js/regress/try-catch-get-by-val-cloned-arguments.html: Added.
  • js/regress/try-catch-get-by-val-direct-arguments-expected.txt: Added.
  • js/regress/try-catch-get-by-val-direct-arguments.html: Added.
  • js/regress/try-catch-get-by-val-scoped-arguments-expected.txt: Added.
  • js/regress/try-catch-get-by-val-scoped-arguments.html: Added.
  • js/regress/varargs-call-expected.txt: Added.
  • js/regress/varargs-call.html: Added.
  • js/regress/varargs-construct-expected.txt: Added.
  • js/regress/varargs-construct-inline-expected.txt: Added.
  • js/regress/varargs-construct-inline.html: Added.
  • js/regress/varargs-construct.html: Added.
  • js/regress/varargs-expected.txt: Added.
  • js/regress/varargs-inline-expected.txt: Added.
  • js/regress/varargs-inline.html: Added.
  • js/regress/varargs-strict-mode-expected.txt: Added.
  • js/regress/varargs-strict-mode.html: Added.
  • js/regress/varargs.html: Added.
  • js/script-tests/function-apply-aliased.js:
  • js/script-tests/function-dot-arguments.js:
8:11 PM Changeset in webkit [181992] by aestes@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

[Cocoa] RemoteInspectorXPCConnection::deserializeMessage() leaks a NSDictionary under Objective-C GC
https://bugs.webkit.org/show_bug.cgi?id=143068

Reviewed by Dan Bernstein.

  • inspector/remote/RemoteInspectorXPCConnection.mm:

(Inspector::RemoteInspectorXPCConnection::deserializeMessage): Used RetainPtr::autorelease(), which does the right thing under GC.

7:36 PM Changeset in webkit [181991] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2] WebFrameLoaderClient::dispatchDecidePolicyForResponse() should always call the FramePolicyFunction
https://bugs.webkit.org/show_bug.cgi?id=143036
<rdar://problem/20252438>
<rdar://problem/13811738>

Reviewed by Alexey Proskuryakov.

WebFrameLoaderClient::dispatchDecidePolicyForResponse() should always
call the FramePolicyFunction. Previously, it would fail to do in 2
cases:

  • m_frame->page() returns null

or

  • webPage->sendSync() returns false

If the FramePolicyFunction is not called, we will fail to clear the
callback in the PolicyChecker and
DocumentLoader::continueAfterContentPolicy() will not be called.

DocumentLoader::continueAfterContentPolicy() is in charge of resetting
m_waitingForContentPolicy flag to false. This could therefore explain
the following assertion being hit in DocumentLoader::detachFromFrame()
(see <rdar://problem/20252438>):
RELEASE_ASSERT(!m_waitingForContentPolicy)

Also, as the PolicyChecker callback is not cleared, it could make it
possible for DocumentLoader::continueAfterContentPolicy() to be called
*after* the load is finished, when later canceling the PolicyCallback:
FrameLoader::stopAllLoaders()

-> PolicyChecker::stopCheck()

-> PolicyCallback::cancel()

-> DocumentLoader::continueAfterContentPolicy(PolicyIgnore)

Calling continueAfterContentPolicy(PolicyIgnore) after the load is
finished would be bad and could explain some of the crashes we've seen
in DocumentLoader::continueAfterContentPolicy() ->
DocumentLoader:: stopLoadingForPolicyChange() (see
<rdar://problem/13811738>).

This patch also applies the same fix to
dispatchDecidePolicyForNewWindowAction() and
dispatchDecidePolicyForNavigationAction() as they use the same pattern.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForResponse):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
(WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction):

6:26 PM Changeset in webkit [181990] by fpizlo@apple.com
  • 22 edits
    6 adds in trunk

Use JITCompilationCanFail in more places, and make the fail path of JITCompilationMustSucceed a crash instead of attempting GC
https://bugs.webkit.org/show_bug.cgi?id=142993

Source/JavaScriptCore:

Reviewed by Geoffrey Garen and Mark Lam.

This changes the most commonly invoked paths that relied on JITCompilationMustSucceed
into using JITCompilationCanFail and having a legit fallback path. This mostly involves
having the FTL JIT do the same trick as the DFG JIT in case of any memory allocation
failure, but also involves adding the same kind of thing to the stub generators in
Repatch.

Because of that change, there are relatively few uses of JITCompilationMustSucceed. Most
of those uses cannot handle a GC, and so cannot do releaseExecutableMemory(). Only a few,
like host call stub generation, could handle a GC, but those get invoked very rarely. So,
this patch changes the releaseExecutableMemory() call into a crash with some diagnostic
printout.

Also add a way of inducing executable allocation failure, so that we can test this.

(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
(JSC::DFG::JITCompiler::link): Deleted.
(JSC::DFG::JITCompiler::linkFunction): Deleted.

  • dfg/DFGJITCompiler.h:
  • dfg/DFGPlan.cpp:

(JSC::DFG::Plan::compileInThreadImpl):

  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateCodeSection):
(JSC::FTL::mmAllocateDataSection):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • ftl/FTLState.h:
  • jit/ArityCheckFailReturnThunks.cpp:

(JSC::ArityCheckFailReturnThunks::returnPCsFor):

  • jit/ExecutableAllocationFuzz.cpp: Added.

(JSC::numberOfExecutableAllocationFuzzChecks):
(JSC::doExecutableAllocationFuzzing):

  • jit/ExecutableAllocationFuzz.h: Added.

(JSC::doExecutableAllocationFuzzingIfEnabled):

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::ExecutableAllocator::allocate):

  • jit/JIT.cpp:

(JSC::JIT::privateCompile):

  • jit/JITCompilationEffort.h:
  • jit/Repatch.cpp:

(JSC::generateByIdStub):
(JSC::tryCacheGetByID):
(JSC::tryBuildGetByIDList):
(JSC::emitPutReplaceStub):
(JSC::emitPutTransitionStubAndGetOldStructure):
(JSC::tryCachePutByID):
(JSC::tryBuildPutByIdList):
(JSC::tryRepatchIn):
(JSC::linkPolymorphicCall):

  • jsc.cpp:

(jscmain):

  • runtime/Options.h:
  • runtime/TestRunnerUtils.h:
  • runtime/VM.cpp:
  • tests/executableAllocationFuzz: Added.
  • tests/executableAllocationFuzz.yaml: Added.
  • tests/executableAllocationFuzz/v8-raytrace.js: Added.

Tools:

Reviewed by Mark Lam.

Bunch of support for testing executable allocation failure.

  • Scripts/jsc-stress-test-helpers/js-executable-allocation-fuzz: Added.

(fail):

  • Scripts/run-javascriptcore-tests:

(runJSCStressTests):

  • Scripts/run-jsc-stress-tests:
6:05 PM Changeset in webkit [181989] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

CSS blend modes do not parse when in the shadow tree
https://bugs.webkit.org/show_bug.cgi?id=143067
<rdar://problem/20302662>

Reviewed by Anders Carlson.

The media controls style sheets are injected as UA stylesheets
when we come across a <video> or <audio> element. These stylesheets
have a different parsing context than the document stylesheets -
one that uses the default constructor, which initializes some
features like cssCompositingEnabled to false without checking
the runtime state.

The easy fix is to use the global state to initialize the context.

Unfortunately we can't test this since it only occurs in the shadow
tree.

  • css/CSSParser.cpp:

(WebCore::CSSParserContext::CSSParserContext): Check the state
of RuntimeEnabledFeatures to initialize CSS Regions and
CSS Compositing (Blending).

5:53 PM Changeset in webkit [181988] by Chris Fleizach
  • 3 edits
    2 adds in trunk

AX: table cells that use display:block render the table inaccessible to VoiceOver
https://bugs.webkit.org/show_bug.cgi?id=143007

Reviewed by Mario Sanchez Prada.

Source/WebCore:

When display:block is used on a table cell, it was being ignored because it was anonymous.
This is still a valid scenario however if it's still inside of a valid table.

Test: accessibility/table-cell-display-block.html

  • accessibility/AccessibilityTableCell.cpp:

(WebCore::AccessibilityTableCell::computeAccessibilityIsIgnored):

LayoutTests:

  • accessibility/table-cell-display-block-expected.txt: Added.
  • accessibility/table-cell-display-block.html: Added.
5:46 PM Changeset in webkit [181987] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Add ESLint "Disallow Undeclared Variables" rule and enable ES6 env
https://bugs.webkit.org/show_bug.cgi?id=143062

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-03-25
Reviewed by Joseph Pecoraro.

ESLint: Add support for es6 environment and "no-undef" rule which disallows
use of undeclared variables unless mentioned in a /*global */ block.

  • .eslintrc:
5:03 PM Changeset in webkit [181986] by timothy_horton@apple.com
  • 6 edits in trunk/Source

Add a preference to prevent "user-scalable=no" from having any effect
https://bugs.webkit.org/show_bug.cgi?id=143032

Reviewed by Sam Weinig.

  • Shared/WebPreferencesDefinitions.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):
Add a preference and push it to the ViewportConfiguration.

  • page/ViewportConfiguration.cpp:

(WebCore::ViewportConfiguration::ViewportConfiguration):
(WebCore::ViewportConfiguration::allowsUserScaling):

  • page/ViewportConfiguration.h:

(WebCore::ViewportConfiguration::setForceAlwaysUserScalable):
If forceAlwaysUserScalable is set to true, force "user-scalable=yes".

4:37 PM Changeset in webkit [181985] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

REGRESSION (r181660): Force click url preview doesn't have a TextIndicator in Mail
https://bugs.webkit.org/show_bug.cgi?id=143064
-and corresponding-
rdar://problem/20251440

Reviewed by Tim Horton.

The TextIndicator was getting set to nil by the call to
_dismissContentRelativeChildWindows in mouseDown. That line of code was added by
http://trac.webkit.org/changeset/177242 to work around a bug in another component
that has now been resolved, so it no longer appears to be necessary.

  • UIProcess/API/mac/WKView.mm:

(-[WKView mouseDown:]):

4:37 PM Changeset in webkit [181984] by andersca@apple.com
  • 6 edits
    1 add in trunk

Add network and application cache directories to WebsiteDataStore
https://bugs.webkit.org/show_bug.cgi?id=143063

Reviewed by Sam Weinig.

Create a WebKit directory under ~/Library/Caches/<Bundle ID> for non-sandboxed applications,
and ~/Library/Caches for sandboxed applications. Create NetworkCache and OfflineWebApplicationCache
subdirectories. These directories will be used with the modern WebKit API.

  • UIProcess/API/APIWebsiteDataStore.h:
  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::cacheDirectoryFileSystemRepresentation):
(API::WebsiteDataStore::defaultDataStoreConfiguration):

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):

  • UIProcess/WebsiteData/WebsiteDataStore.h:
4:33 PM Changeset in webkit [181983] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Another attempt to get the iOS EWS building again.

  • WebCore.xcodeproj/project.pbxproj:
4:25 PM Changeset in webkit [181982] by mmaxfield@apple.com
  • 2 edits in trunk/Tools

Fix Windows build from r181977.

Unreviewed.

  • Scripts/update-webkit-dependency:
4:15 PM Changeset in webkit [181981] by mark.lam@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

REGRESSION(169139): LLINT intermittently fails JSC testapi tests.
<https://webkit.org/b/135719>

Reviewed by Geoffrey Garen.

This is a regression introduced in http://trac.webkit.org/changeset/169139 which
changed VM::watchdog from an embedded field into a std::unique_ptr, but did not
update the LLINT to access it as such.

The issue has only manifested so far on the CLoop tests because those are LLINT
only. In the non-CLoop cases, the JIT kicks in and does the right thing, thereby
hiding the bug in the LLINT.

  • API/JSContextRef.cpp:

(createWatchdogIfNeeded):
(JSContextGroupSetExecutionTimeLimit):
(JSContextGroupClearExecutionTimeLimit):

  • llint/LowLevelInterpreter.asm:
4:05 PM Changeset in webkit [181980] by achristensen@apple.com
  • 5 edits in trunk/Source/WebCore

Add case-insensitive checks to DFA bytecode.
https://bugs.webkit.org/show_bug.cgi?id=142977

Reviewed by Benjamin Poulain.

  • contentextensions/DFABytecode.h:

(WebCore::ContentExtensions::instructionSizeWithArguments):

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::DFABytecodeCompiler::emitCheckValue):
(WebCore::ContentExtensions::DFABytecodeCompiler::emitCheckValueRange):
Add case-insensitive bytecode.
(WebCore::ContentExtensions::DFABytecodeCompiler::compileNodeTransitions):
Check to see if case-insensitive bytecodes can be used.
(WebCore::ContentExtensions::DFABytecodeCompiler::compileCheckForRange):

  • contentextensions/DFABytecodeCompiler.h:

(WebCore::ContentExtensions::DFABytecodeCompiler::Range::Range):
Added Range structure to be able to count the ranges in a future patch deciding if we want to use jump tables.

  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):
Interpret case-insensitive bytecodes.

3:56 PM Changeset in webkit [181979] by fpizlo@apple.com
  • 6 edits in trunk/Source

Change Atomic methods from using the_wrong_naming_conventions to using theRightNamingConventions. Also make seq_cst the default.

Rubber stamped by Geoffrey Garen.

Source/JavaScriptCore:

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::visitAggregate):

Source/WTF:

  • wtf/Atomics.h:

(WTF::Atomic::load):
(WTF::Atomic::store):
(WTF::Atomic::compareExchangeWeak):
(WTF::Atomic::compareExchangeStrong):
(WTF::Atomic::compare_exchange_weak): Deleted.
(WTF::Atomic::compare_exchange_strong): Deleted.

  • wtf/ByteSpinLock.h:

(WTF::ByteSpinLock::lock):

  • wtf/SpinLock.h:

(WTF::SpinLockBase::lock):

3:56 PM Changeset in webkit [181978] by weinig@apple.com
  • 10 edits in trunk

Address additional review feedback from https://bugs.webkit.org/show_bug.cgi?id=143059.

Source/WebCore:

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionCompiler.h:
  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getTypeFlags):

Source/WebKit2:

  • Shared/WebCompiledContentExtension.cpp:

(WebKit::WebCompiledContentExtension::createFromCompiledContentExtensionData):

  • UIProcess/API/C/WKUserContentFilterRef.cpp:

(WKUserContentFilterCreate):

  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter initWithName:serializedRules:]):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter):

3:46 PM Changeset in webkit [181977] by mmaxfield@apple.com
  • 3 edits in trunk/Tools

Migrate update-webkit for Windows to not require Cygwin
https://bugs.webkit.org/show_bug.cgi?id=143040

Reviewed by Brent Fulgham.

  • Scripts/update-webkit-dependency:

(wanted):
(toUnixPath): Deleted.

  • Scripts/webkitdirs.pm:

(fontExists):
(checkInstalledTools):
(setupAppleWinEnv):

3:42 PM Changeset in webkit [181976] by commit-queue@webkit.org
  • 2 edits in trunk/Source/JavaScriptCore

Fix formatting in BuiltinExecutables
https://bugs.webkit.org/show_bug.cgi?id=143061

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-25
Reviewed by Ryosuke Niwa.

  • builtins/BuiltinExecutables.cpp:

(JSC::BuiltinExecutables::createExecutableInternal):

3:41 PM Changeset in webkit [181975] by commit-queue@webkit.org
  • 3 edits in trunk/LayoutTests

Add a few more tests for Class names
https://bugs.webkit.org/show_bug.cgi?id=143060

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-25
Reviewed by Ryosuke Niwa.

Add a few more class name tests:

  • const class name binding inside class expression
  • mutable class name binding from class statement
  • js/script-tests/class-syntax-name.js:
3:38 PM Changeset in webkit [181974] by weinig@apple.com
  • 13 edits
    2 adds in trunk

[Content Extensions] Convert content extension compiling to return error codes and write its output using a client
https://bugs.webkit.org/show_bug.cgi?id=143059

Reviewed by Alex Christensen.

Source/WebCore:

  • WebCore.xcodeproj/project.pbxproj:

Add ContentExtensionError.h/cpp.

  • contentextensions/ContentExtensionError.cpp: Added.

(WebCore::ContentExtensions::contentExtensionErrorCategory):

  • contentextensions/ContentExtensionError.h: Added.

(WebCore::ContentExtensions::make_error_code):
Add ContentExtensionError enum and std::error_code adaptor.

  • contentextensions/ContentExtensionCompiler.h:

Instead of returning CompiledContentExtensionData, use a client interface
to pass data. Eventually, this should be turned into a direct streaming
interface so we can write directly to a file.

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::getTypeFlags):
(WebCore::ContentExtensions::loadTrigger):
(WebCore::ContentExtensions::loadAction):
(WebCore::ContentExtensions::loadRule):
(WebCore::ContentExtensions::loadEncodedRules):
(WebCore::ContentExtensions::parseRuleList):

  • contentextensions/ContentExtensionParser.h:

Convert to return an error.

Source/WebKit2:

  • Shared/WebCompiledContentExtension.cpp:
  • Shared/WebCompiledContentExtension.h:

(WebKit::LegacyContentExtensionCompilationClient::LegacyContentExtensionCompilationClient):
(WebKit::LegacyContentExtensionCompilationClient::writeBytecode):
(WebKit::LegacyContentExtensionCompilationClient::writeActions):
Add subclass of ContentExtensionCompilationClient for use with the non-file backed content
extensions.

  • UIProcess/API/C/WKUserContentFilterRef.cpp:

(WKUserContentFilterCreate):

  • UIProcess/API/Cocoa/_WKUserContentFilter.mm:

(-[_WKUserContentFilter initWithName:serializedRules:]):
Update to use the new interface of compileRuleList().

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::InMemoryCompiledContentExtension::createFromFilter):
Update for new interface of compileRuleList().

2:33 PM Changeset in webkit [181973] by Joseph Pecoraro
  • 11 edits
    3 adds in trunk

ES6: Classes: Program level class statement throws exception in strict mode
https://bugs.webkit.org/show_bug.cgi?id=143038

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

Classes expose a name to the current lexical environment. This treats
"class X {}" like "var X = class X {}". Ideally it would be "let X = class X {}".
Also, improve error messages for class statements where the class is missing a name.

  • parser/Parser.h:
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
Fill name in info parameter if needed. Better error message if name is needed and missing.

(JSC::Parser<LexerType>::parseClassDeclaration):
Pass info parameter to get name, and expose the name as a variable name.

(JSC::Parser<LexerType>::parsePrimaryExpression):
Pass info parameter that is ignored.

  • parser/ParserFunctionInfo.h:

Add a parser info for class, to extract the name.

LayoutTests:

This updates a number of existing tests that were relying on
poor behavior. shouldBe and friends use eval within a function
not at the global scope. This means shouldBe('class X { ... }')
behaves like shouldBe('var x = ...') not shouldBe('x = ...').
This means x will not be available in the next shouldBe call.

Add a test specifically to cover the scoping of the class name
in regular and strict mode code. Currently we treat it like var
with one failing test that would pass when we treat it like let.

  • js/class-syntax-name.html: Added.
  • js/script-tests/class-syntax-name.js: Added.

(runTestShouldBe):
(runTestShouldBeTrue):
(runTestShouldThrow):
(runTestShouldNotThrow):
Test class name scoping.

  • js/class-syntax-call-expected.txt:
  • js/class-syntax-declaration-expected.txt:
  • js/class-syntax-default-constructor-expected.txt:
  • js/class-syntax-name-expected.txt: Added.
  • js/script-tests/class-syntax-call.js:
  • js/script-tests/class-syntax-declaration.js:
  • js/script-tests/class-syntax-default-constructor.js:
2:19 PM Changeset in webkit [181972] by rniwa@webkit.org
  • 7 edits in trunk/Source/WebKit2

Web Inspector: Switching tabs to window with inspector open prohibits typing into console
https://bugs.webkit.org/show_bug.cgi?id=126800

Reviewed by Anders Carlsson.

This is a regression from r85356 and r83814. These two patches made WKWebView clear its selection
when WKView resigns the first responder without ever restoring it even if WKView later becomes
the first responder again. This is problematic when a text field or a editing host element had been
focused and selected prior to the resignation since the editing code uses the selection to determine
the editability of the element.

Fixed the bug by restoring selection in [WKView becomeFirstResponder] if the selection is empty.

  • UIProcess/API/mac/WKView.mm:

(-[WKView becomeFirstResponder]):

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::restoreSelectionInFocusedEditableElement):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::restoreSelectionInFocusedEditableElement):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
2:09 PM Changeset in webkit [181971] by Beth Dakin
  • 6 edits in trunk/Source

REGRESSION (r181660): Safari navigates to link after a starting and canceling a
force preview
https://bugs.webkit.org/show_bug.cgi?id=143057
-and corresponding-
rdar://problem/20251436

Reviewed by Tim Horton.

Source/WebCore:

This patch adds a value for ActionUpdated to the ImmediateActionStage enum. Now if
m_immediateActionStage indicates that an immediate action has either begun or
completed then we can have the same behavior.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleMouseReleaseEvent):

  • page/EventHandler.h:

Source/WebKit2:

Always call _page->immediateActionDidUpdate() so that the EventHandler’s
ImmediateActionStage is appropriately updated.

  • UIProcess/mac/WKImmediateActionController.mm:

(-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):

Update the EventHandler’s ImmediateActionStage.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::immediateActionDidUpdate):

1:59 PM Changeset in webkit [181970] by Antti Koivisto
  • 9 edits
    2 adds in trunk/Source/WebKit2

Separate entry decoding from validation
https://bugs.webkit.org/show_bug.cgi?id=143052

Reviewed by Chris Dumez.

Make NetworkCache::Cache a class and move it to a file of its own.
Move the encoding/decoding code there.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::fetchDiskCacheEntries):
(WebKit::clearDiskCacheEntries):

  • NetworkProcess/NetworkResourceLoader.cpp:

(WebKit::sendReplyToSynchronousRequest):
(WebKit::NetworkResourceLoader::start):
(WebKit::NetworkResourceLoader::sendBufferMaybeAborting):
(WebKit::NetworkResourceLoader::didRetrieveCacheEntry):
(WebKit::NetworkResourceLoader::validateCacheEntry):

  • NetworkProcess/NetworkResourceLoader.h:
  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::collectVaryingRequestHeaders):
(WebKit::NetworkCache::canUse):

Focused function for deciding if we can use a cache entry and if it needs validation.

(WebKit::NetworkCache::Cache::retrieve):
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::update):
(WebKit::NetworkCache::Cache::traverse):
(WebKit::NetworkCache::encodeStorageEntry): Deleted.
(WebKit::NetworkCache::decodeStorageEntry): Deleted.

  • NetworkProcess/cache/NetworkCache.h:
  • NetworkProcess/cache/NetworkCacheEntry.cpp: Added.

(WebKit::NetworkCache::Entry::Entry):
(WebKit::NetworkCache::Entry::encode):
(WebKit::NetworkCache::Entry::decode):
(WebKit::NetworkCache::Entry::initializeBufferFromStorageEntry):
(WebKit::NetworkCache::Entry::buffer):
(WebKit::NetworkCache::Entry::shareableResourceHandle):
(WebKit::NetworkCache::Entry::needsValidation):
(WebKit::NetworkCache::Entry::setNeedsValidation):

  • NetworkProcess/cache/NetworkCacheEntry.h: Added.

(WebKit::NetworkCache::Entry::key):
(WebKit::NetworkCache::Entry::timeStamp):
(WebKit::NetworkCache::Entry::response):
(WebKit::NetworkCache::Entry::varyingRequestHeaders):
(WebKit::NetworkCache::Entry::sourceStorageEntry):

  • NetworkProcess/cache/NetworkCacheStatistics.h:
  • NetworkProcess/cache/NetworkCacheStatisticsCocoa.mm:

(WebKit::NetworkCache::cachedEntryReuseFailureToDiagnosticKey):
(WebKit::NetworkCache::Statistics::recordRetrievedCachedEntry):

  • WebKit2.xcodeproj/project.pbxproj:
12:35 PM Changeset in webkit [181969] by mark.lam@apple.com
  • 2 edits in trunk/LayoutTests

Gardening: rebaseline after r181907.

Not reviewed.

  • platform/win/js/dom/global-constructors-attributes-expected.txt:
11:37 AM Changeset in webkit [181968] by ggaren@apple.com
  • 5 edits in trunk/Source/JavaScriptCore

New map and set modification tests in r181922 fails
https://bugs.webkit.org/show_bug.cgi?id=143031

Reviewed and tweaked by Geoffrey Garen.

When packing Map/Set backing store, we need to decrement Map/Set iterator's m_index
to adjust for the packed backing store.

Consider the following map data.

x: deleted, o: exists
0 1 2 3 4
x x x x o

And iterator with m_index 3.

When packing the map data, map data will become,

0
o

At that time, we perfom didRemoveEntry 4 times on iterators.
times => m_index/index/result
1 => 3/0/dec
2 => 2/1/dec
3 => 1/2/nothing
4 => 1/3/nothing

After iteration, iterator's m_index becomes 1. But we expected that becomes 0.
This is because if we use decremented m_index for comparison,
while provided deletedIndex is the index in old storage, m_index is the index in partially packed storage.

In this patch, we compare against the packed index instead.
times => m_index/packedIndex/result
1 => 3/0/dec
2 => 2/0/dec
3 => 1/0/dec
4 => 0/0/nothing

So m_index becomes 0 as expected.

And according to the spec, once the iterator is closed (becomes done: true),
its internal Map/Set is set to undefined.
So after the iterator is finished, we don't revive the iterator (e.g. by clearing m_index = 0).

In this patch, we change 2 things.
1.
Compare an iterator's index against the packed index when removing an entry.

2.
If the iterator is closed (isFinished()), we don't apply adjustment to the iterator.

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2015-03-25

  • runtime/MapData.h:

(JSC::MapDataImpl::IteratorData::finish):
(JSC::MapDataImpl::IteratorData::isFinished):
(JSC::MapDataImpl::IteratorData::didRemoveEntry):
(JSC::MapDataImpl::IteratorData::didRemoveAllEntries):
(JSC::MapDataImpl::IteratorData::startPackBackingStore):

  • runtime/MapDataInlines.h:

(JSC::JSIterator>::replaceAndPackBackingStore):

  • tests/stress/modify-map-during-iteration.js:
  • tests/stress/modify-set-during-iteration.js:
11:29 AM Changeset in webkit [181967] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.24/Source/WebCore

Merged r181958.

10:55 AM Changeset in webkit [181966] by peavo@outlook.com
  • 3 edits in trunk/Source/WebKit/win

[WinCairo] Crash when plugin window is destroyed.
https://bugs.webkit.org/show_bug.cgi?id=142905

Reviewed by Alex Christensen.

When a plugin window is destroyed with the Win32 api function DestroyWindow,
the system will send a synchronous WM_PARENTNOTIFY message to the WebView.
The WebView window procedure will, when processing the WM_PARENTNOTIFY message,
call UpdateWindow to paint synchronously. This will cause reentrancy problems,
since we're already called from WebCore code, and then reenter WebCore painting code.
We should avoid calling UpdateWindow when handling the WM_PARENTNOTIFY message.

  • WebView.cpp:

(WebView::WebViewWndProc):
(WebView::updateWindowIfNeeded):

  • WebView.h:
10:43 AM Changeset in webkit [181965] by dino@apple.com
  • 9 edits in trunk

MediaControls: Use font with fixed number width
https://bugs.webkit.org/show_bug.cgi?id=143018
<rdar://problem/20245415>

Reviewed by Eric Carlson.

Source/WebCore:

Add a new font-family, specific to Apple platforms,
called -apple-system-font-monospaced-numbers. This is
a special variant of the system font which uses monospaced
forms for the number glyphs - allowing a time reading that
doesn't bounce around as the time changes.

  • Modules/mediacontrols/mediaControlsApple.css: Media controls should

use the new font.
(audio::-webkit-media-controls-time-remaining-display):

  • Modules/mediacontrols/mediaControlsiOS.css:

(audio::-webkit-media-controls-time-remaining-display):

  • platform/graphics/ios/FontCacheIOS.mm: Request a new CTFontRef with

the appropriate attributes.
(WebCore::createCTFontWithFamilyNameAndWeight):

  • platform/graphics/mac/FontCacheMac.mm: Ditto, but NSFont.

(WebCore::fontWithFamily):

  • platform/spi/cocoa/CoreTextSPI.h: Expose the constants for

the new form so that the public SDK can build.

LayoutTests:

Add some results for the new font family "-apple-system-font-monospaced-numbers".

  • platform/mac/fast/text/systemFont.html:
  • platform/mac/fast/text/systemFont-expected.txt:
10:31 AM Changeset in webkit [181964] by achristensen@apple.com
  • 7 edits in trunk

[Content Extensions] Add multi-DFA compiling and interpreting.
https://bugs.webkit.org/show_bug.cgi?id=143010

Reviewed by Benjamin Poulain.

Source/WebCore:

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Compile multiple NFAs to DFAs.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Fixed a bug when there are no non-universal actions.
We still need to report that no ignore-previous-rules was hit to apply the
universal actions which are now accessed through DFABytecodeInterpreter::actionsFromDFARoot
and skipped in DFABytecodeInterpreter::interpret.

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::DFABytecodeCompiler::compile):
Add a header for each DFA.

  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::actionsFromDFARoot):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):
Interpret as many DFAs as there are in the bytecode.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::testRequest):
(TestWebKitAPI::TEST_F):
Add some tests for ignore-previous-rules and large rulesets.

10:18 AM Changeset in webkit [181963] by peavo@outlook.com
  • 2 edits in trunk/Source/WebCore

[Win] Illegal character in project file.
https://bugs.webkit.org/show_bug.cgi?id=143051

Reviewed by Brent Fulgham.

There is an illegal character in the WebCore project filter.
WebCore files are shown unfiltered.

  • WebCore.vcxproj/WebCore.vcxproj.filters:
10:00 AM Changeset in webkit [181962] by ap@apple.com
  • 3 edits in trunk/Tools

Mavericks WK1 still runs JSC tests
https://bugs.webkit.org/show_bug.cgi?id=143035

Reviewed by Csaba Osztrogonác.

  • BuildSlaveSupport/build.webkit.org-config/config.json: Bring Mavericks WK1 in line

with other bots.

  • BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Updated the tests

accordingly.

9:49 AM Changeset in webkit [181961] by Nikita Vasilyev
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: console.table with source code location look poor
https://bugs.webkit.org/show_bug.cgi?id=142068

Reviewed by Timothy Hatcher.

  • UserInterface/Views/LegacyConsoleMessageImpl.js:

(WebInspector.LegacyConsoleMessageImpl.prototype._formatParameterAsTable):
Remove dataGridContainer as it is an unnecessary span element.

  • UserInterface/Views/LogContentView.css:

(.console-messages .data-grid):

9:45 AM Changeset in webkit [181960] by bshafiei@apple.com
  • 1 copy in tags/Safari-601.1.24

New tag.

9:28 AM Changeset in webkit [181959] by hyatt@apple.com
  • 7 edits in trunk/Source

Add a pref to enable the new block-inside-inline model
https://bugs.webkit.org/show_bug.cgi?id=143050

Reviewed by Sam Weinig.

Source/WebCore:

  • page/Settings.in:

Source/WebKit2:

  • Shared/WebPreferencesDefinitions.h:
  • UIProcess/API/C/WKPreferences.cpp:

(WKPreferencesSetNewBlockInsideInlineModelEnabled):
(WKPreferencesGetNewBlockInsideInlineModelEnabled):

  • UIProcess/API/C/WKPreferencesRefPrivate.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updatePreferences):

6:51 AM Changeset in webkit [181958] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

iOS Simulator build fix.

  • platform/spi/cocoa/IOSurfaceSPI.h:
5:56 AM Changeset in webkit [181957] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181943 - [WK2] WebUserMediaClient::pageDestroyed() virtual method should be marked as override
https://bugs.webkit.org/show_bug.cgi?id=143046

Reviewed by Carlos Garcia Campos.

  • WebProcess/WebCoreSupport/WebUserMediaClient.h: Mark the WebUserMediaClient::pageDestroyed()

method, inherited from the WebCore::UserMediaClient, as an override.

5:55 AM Changeset in webkit [181956] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181938 - [GTK][WK2] WebPageProxy::failedToShowPopupMenu() virtual method should be marked as override
https://bugs.webkit.org/show_bug.cgi?id=143045

Reviewed by Carlos Garcia Campos.

  • UIProcess/WebPageProxy.h: Mark the failedToShowPopupMenu(), inherited from

the WebPopupMenuProxy::Client class, as overridden.

5:53 AM Changeset in webkit [181955] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181937 - [WK2] Clean up DrawingAreaImpl vtable overrides
https://bugs.webkit.org/show_bug.cgi?id=143044

Reviewed by Carlos Garcia Campos.

Declare virtual methods of the DrawingAreaImpl class as overridden where necessary.

  • WebProcess/WebPage/DrawingAreaImpl.h:

(WebKit::DrawingAreaImpl::layerTreeStateIsFrozen): Deleted.
(WebKit::DrawingAreaImpl::layerTreeHost): Deleted.

5:48 AM Changeset in webkit [181954] by Carlos Garcia Campos
  • 4 edits
    8 adds
    1 delete in releases/WebKitGTK/webkit-2.8

Merge r181897 - Stop image from displaying when src attribute is removed or emptied
https://bugs.webkit.org/show_bug.cgi?id=142677

Reviewed by Chris Dumez.

Source/WebCore:

Previously, we ignored empty attribute as failed URL, and didn't update the
renderer when an image was removed. This patch fixes that.

Tests: fast/dom/HTMLImageElement/image-empty-src.html

fast/dom/HTMLImageElement/image-remove-src.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

LayoutTests:

  • fast/dom/HTMLImageElement/image-empty-src-expected.html: Added.
  • fast/dom/HTMLImageElement/image-empty-src.html: Added.
  • fast/dom/HTMLImageElement/image-remove-src-expected.html: Added.
  • fast/dom/HTMLImageElement/image-remove-src.html: Added.
  • fast/dom/HTMLImageElement/image-empty-srcset-expected.html: Added.
  • fast/dom/HTMLImageElement/image-empty-srcset.html: Added.
  • fast/dom/HTMLImageElement/image-remove-srcset-expected.html: Added.
  • fast/dom/HTMLImageElement/image-remove-srcset.html: Added.
4:53 AM Changeset in webkit [181953] by commit-queue@webkit.org
  • 6 edits in trunk/LayoutTests

GTK+ Gardening 24th March
https://bugs.webkit.org/show_bug.cgi?id=143003

Unreviewed.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-25

  • platform/gtk/TestExpectations:
  • platform/gtk/css3/selectors3/xhtml/css3-modsel-15c-expected.txt: Rebaselined after r181889.
  • platform/gtk/css3/selectors3/xml/css3-modsel-15c-expected.txt: Rebaselined after r181889.
  • platform/gtk/plugins/npruntime/object-from-destroyed-plugin-expected.txt: Rebaselined after r181889.
  • platform/gtk/plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt: Rebaselined after r181889.
4:40 AM Changeset in webkit [181952] by Carlos Garcia Campos
  • 5 edits
    10 adds
    9 deletes in releases/WebKitGTK/webkit-2.8

Merge r181888 - Update empty image canvas tests and fix a related bug
https://bugs.webkit.org/show_bug.cgi?id=142694

Reviewed by Chris Dumez.

Source/WebCore:

During the work on https://bugs.webkit.org/show_bug.cgi?id=142677
we encountered an issue with canvas tests related to empty image handling
when drawn or used as a pattern. After updating these tests, an issue with
pattern handling was encountered.

The spec, as well as Chrome's implementation, say that when an empty image
is used as a pattern, createPattern should return null. See
https://html.spec.whatwg.org/multipage/scripting.html#fill-and-stroke-styles:check-the-usability-of-the-image-argument
Instead, createPattern returned an exception in this case.
This patch fixes that and makes sure that it returns a null when image loading hasn't started.

Tests: canvas/philip/tests/2d.drawImage.incomplete.emptysrc.html

canvas/philip/tests/2d.drawImage.incomplete.nosrc.html
canvas/philip/tests/2d.drawImage.incomplete.removedsrc.html
canvas/philip/tests/2d.pattern.image.incomplete.emptysrc.html
canvas/philip/tests/2d.pattern.image.incomplete.removedsrc.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::createPattern): Return "null" if image is not fully decodeable.

LayoutTests:

Tests below imported from https://github.com/w3c/web-platform-tests/tree/master/2dcontext/drawing-images-to-the-canvas

  • canvas/philip/tests/2d.drawImage.incomplete-expected.txt: Removed.
  • canvas/philip/tests/2d.drawImage.incomplete.emptysrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.emptysrc.html: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.html: Removed.
  • canvas/philip/tests/2d.drawImage.incomplete.nosrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.nosrc.html: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.removedsrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.removedsrc.html: Added.

Tests below imported from https://github.com/w3c/web-platform-tests/tree/master/2dcontext/fill-and-stroke-styles

  • canvas/philip/tests/2d.pattern.image.incomplete-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.empty-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.empty.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.emptysrc-expected.txt: Added.
  • canvas/philip/tests/2d.pattern.image.incomplete.emptysrc.html: Added.
  • canvas/philip/tests/2d.pattern.image.incomplete.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.omitted-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.omitted.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.removedsrc-expected.txt: Added.

This test currently fails and will be fixed in https://bugs.webkit.org/show_bug.cgi?id=142677

  • canvas/philip/tests/2d.pattern.image.incomplete.removedsrc.html: Added.

Test below imported from https://chromium.googlesource.com/chromium/blink/+/master/LayoutTests/fast/canvas/

  • fast/canvas/canvas-empty-image-pattern.html: Aligned with spec/Chrome.
  • fast/canvas/canvas-empty-image-pattern-expected.txt: Aligned with spec/Chrome.
  • TestExpectations: Added 2d.pattern.image.incomplete.removedsrc.html as an expected failure.
4:32 AM Changeset in webkit [181951] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8

Merge r181864 - Source/WebKit2:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again.
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

Add plug-in destruction protectors around message receiver code that can call out to NPObjects or JavaScript
where we need the plug-in to stay around after the call.

  • Shared/Plugins/NPObjectMessageReceiver.cpp:

(WebKit::NPObjectMessageReceiver::invoke):
(WebKit::NPObjectMessageReceiver::invokeDefault):
(WebKit::NPObjectMessageReceiver::getProperty):
(WebKit::NPObjectMessageReceiver::setProperty):
(WebKit::NPObjectMessageReceiver::construct):

LayoutTests:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

  • platform/mac-wk2/TestExpectations:

Unskip test.

4:27 AM Changeset in webkit [181950] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181851 - [GTK] Use std::abs() in ClickCounter::currentClickCountForGdkButtonEvent()
https://bugs.webkit.org/show_bug.cgi?id=142964

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(ClickCounter::currentClickCountForGdkButtonEvent): Use the STL's std::abs()
instead of C's abs(). The templated nature of std::abs() ensures the proper
computation that matches the types of the passed-in values, and shuts down
a warning when compiling with Clang.

4:25 AM Changeset in webkit [181949] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181850 - [GTK][WK2] webkitBackForwardListChanged() should operate on a Vector reference
https://bugs.webkit.org/show_bug.cgi?id=142963

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitBackForwardList.cpp:

(webkitBackForwardListChanged): This function only reads from the passed-in
Vector of removed items, so only a const lvalue reference to the Vector
is needed.

  • UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
4:23 AM Changeset in webkit [181948] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r181835 - DFG OSR exit shouldn't assume that the frame count for exit is greater than the frame count in DFG
https://bugs.webkit.org/show_bug.cgi?id=142948

Reviewed by Sam Weinig.

It's necessary to ensure that the stack pointer accounts for the extent of our stack usage
since a signal may clobber the area below the stack pointer. When the DFG is executing,
the stack pointer accounts for the DFG's worst-case stack usage. When we OSR exit back to
baseline, we will use a different amount of stack. This is because baseline is a different
compiler. It will make different decisions. So it will use a different amount of stack.

This gets tricky when we are in the process of doing an OSR exit, because we are sort of
incrementally transforming the stack from how it looked in the DFG to how it will look in
baseline. The most conservative approach would be to set the stack pointer to the max of
DFG and baseline.

When this code was written, a reckless assumption was made: that the stack usage in
baseline is always at least as large as the stack usage in DFG. Based on this incorrect
assumption, the code first adjusts the stack pointer to account for the baseline stack
usage. This sort of usually works, because usually baseline does happen to use more stack.
But that's not an invariant. Nobody guarantees this. We will never make any changes that
would make this be guaranteed, because that would be antithetical to how optimizing
compilers work. The DFG should be allowed to use however much stack it decides that it
should use in order to get good performance, and it shouldn't try to guarantee that it
always uses less stack than baseline.

As such, we must always assume that the frame size for DFG execution (i.e.
frameRegisterCount) and the frame size in baseline once we exit (i.e.
requiredRegisterCountForExit) are two independent quantities and they have no
relationship.

Fortunately, though, this code can be made correct by just moving the stack adjustment to
just before we do conversions. This is because we have since changed the OSR exit
algorithm to first lift up all state from the DFG state into a scratch buffer, and then to
drop it out of the scratch buffer and into the stack according to the baseline layout. The
point just before conversions is the point where we have finished reading the DFG frame
and will not read it anymore, and we haven't started writing the baseline frame. So, at
this point it is safe to set the stack pointer to account for the frame size at exit.

This is benign because baseline happens to create larger frames than DFG.

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::adjustAndJumpToTarget):

4:19 AM Changeset in webkit [181947] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r181828 - Make UnlinkedFunctionExecutable fit in a 128-byte cell.
<https://webkit.org/b/142939>

Reviewed by Mark Hahnenberg.

Re-arrange the members of UnlinkedFunctionExecutable so it can fit inside
a 128-byte heap cell instead of requiring a 256-byte one.

Threw in a static_assert to catch anyone pushing it over the limit again.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedFunctionExecutable::functionMode):

4:06 AM Changeset in webkit [181946] by Carlos Garcia Campos
  • 16 edits in releases/WebKitGTK/webkit-2.8/Source

Merge r181814 - REGRESSION (r179429): Potential Use after free in JavaScriptCore`WTF::StringImpl::ref + 83
https://bugs.webkit.org/show_bug.cgi?id=142410

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Before this patch, added function JSValue::toPropertyKey returns PropertyName.
Since PropertyName doesn't have AtomicStringImpl ownership,
if Identifier is implicitly converted to PropertyName and Identifier is destructed,
PropertyName may refer freed AtomicStringImpl*.

This patch changes the result type of JSValue::toPropertyName from PropertyName to Identifier,
to keep AtomicStringImpl* ownership after the toPropertyName call is done.
And receive the result value as Identifier type to keep ownership in the caller side.

To catch the result of toPropertyKey as is, we catch the result of toPropertyName as auto.

However, now we don't need to have both Identifier and PropertyName.
So we'll merge PropertyName to Identifier in the subsequent patch.

  • dfg/DFGOperations.cpp:

(JSC::DFG::operationPutByValInternal):

  • jit/JITOperations.cpp:

(JSC::getByVal):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::opIn):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toPropertyKey):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorDefineProperty):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncPropertyIsEnumerable):

Source/WebCore:

The same issues are found in the existing code; PropertyName does not have ownership.
This patch rewrite the point that should have ownership to Identifier.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::JSDOMWindow::putByIndex):

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::getInternalSlotFromObject):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::JSTestCustomNamedGetter::getOwnPropertySlotByIndex):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertySlotByIndex):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::putByIndex):

3:36 AM Changeset in webkit [181945] by Carlos Garcia Campos
  • 3 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r181773 - Source/WebCore:
REGRESSION (r109593): Clicking after last inline element could cause a crash.
https://bugs.webkit.org/show_bug.cgi?id=142880
rdar://problem/17222294

Reviewed by Ryosuke Niwa.

Test: editing/selection/click-after-last-inline-crash.html

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::closestLeafChildForLogicalLeftPosition):

LayoutTests:
Web Inspector: Adopt ES6 Class Syntax for all Model Objects
https://bugs.webkit.org/show_bug.cgi?id=142858

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-19
Reviewed by Timothy Hatcher.

  • inspector/model/parse-script-syntax-tree.html:

This test was calling a constructor without "new". Class
syntax enforces "new" and threw an exception.

3:34 AM Changeset in webkit [181944] by Carlos Garcia Campos
  • 3 edits in releases/WebKitGTK/webkit-2.8/Source/JavaScriptCore

Merge r181765 - JSCallee unnecessarily overrides a bunch of things in the method table.
<https://webkit.org/b/142855>

Reviewed by Geoffrey Garen.

Remove JSCallee method table overrides that simply call to base class.
This makes JSFunction property slot lookups slightly more efficient since
they can take the fast path when passing over JSCallee in the base class chain.

  • runtime/JSCallee.cpp:

(JSC::JSCallee::getOwnPropertySlot): Deleted.
(JSC::JSCallee::getOwnNonIndexPropertyNames): Deleted.
(JSC::JSCallee::put): Deleted.
(JSC::JSCallee::deleteProperty): Deleted.
(JSC::JSCallee::defineOwnProperty): Deleted.

  • runtime/JSCallee.h:
3:09 AM Changeset in webkit [181943] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[WK2] WebUserMediaClient::pageDestroyed() virtual method should be marked as override
https://bugs.webkit.org/show_bug.cgi?id=143046

Reviewed by Carlos Garcia Campos.

  • WebProcess/WebCoreSupport/WebUserMediaClient.h: Mark the WebUserMediaClient::pageDestroyed()

method, inherited from the WebCore::UserMediaClient, as an override.

3:05 AM Changeset in webkit [181942] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r181720 - Switching between two SVG images with no intrinsic sizes causes them to get the default SVG size instead of the container size.
https://bugs.webkit.org/show_bug.cgi?id=142805.

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-03-18
Reviewed by Darin Adler.
Source/WebCore:

The bug happens due to wrong logic in RenderImage::imageDimensionsChanged().
This function decides to setNeedsLayout() if the intrinsic size of the image
changes. If the size does not change, it only repaints the image rectangle.
When switching the src of the an image between two SVG images and both of
them have no intrinsic size, we do not updateInnerContentRect() and this
means an SVGImageForContainer is not going to be created for this image.
When the image is drawn, it is drawn directly from the SVGImage. And this
means the drawing has to be scaled by container_size / SVG_default_intrinsic_size

After figuring out that I need to updateInnerContentRect() to fix this bug,
I found out Blink has already changed this code to do the same thing. But
they also did more clean-up in this function. Here is the link
https://codereview.chromium.org/114323004. I think their change seems correct
although they did not say what exactly they were trying to fix.

The plan for repaintOrMarkForLayout(), which is the new name of this function,
is the following:

-- setNeedLayout() if the intrinsic size changes and it affects the size

of the image.

-- updateInnerContentRect() if the intrinsic size did not change but the

image has exiting layout.

-- repaint the image rectangle if layout is not needed.

This change also removes the call to computeLogicalWidthInRegion(), which is
almost running a layout for the image. This call figures out whether the image
needs to setNeedsLayout(). This call is unnecessary; the image needs to run a
layout if the intrinsic size has changed and it affects the size of the image.

Test: svg/as-image/svg-no-intrinsic-size-switching.html

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::styleDidChange): Change the function call.
(WebCore::RenderImage::imageChanged): Rename local variable and change the
function call.

(WebCore::RenderImage::updateIntrinsicSizeIfNeeded): Simplify this function.
Call setIntrinsicSize() with the new size unless the image is in error state.

(WebCore::RenderImage::repaintOrMarkForLayout): This a better name for this
function since it is called even if the intrinsic size was not changed.
(WebCore::RenderImage::imageDimensionsChanged): Deleted.

  • rendering/RenderImage.h: Rename imageDimensionsChanged() and change the

updateIntrinsicSizeIfNeeded() to return void.

  • rendering/svg/RenderSVGForeignObject.cpp:

(WebCore::RenderSVGForeignObject::paint): Code cleanup. This function can
only handle the paint phases PaintPhaseForeground and PaintPhaseSelection.
Use this information to simplify the logic and order of painting there.

LayoutTests:

  • svg/as-image/svg-no-intrinsic-size-switching-expected.html: Added.
  • svg/as-image/svg-no-intrinsic-size-switching.html: Added.

Ensure that switching the source of an <img> element between two SVG images,
which have no intrinsic sizes, gets the image the size of the container and
not the default SVG intrinsic size which is 300x150 pixels.

3:02 AM Changeset in webkit [181941] by Carlos Garcia Campos
  • 5 edits
    2 adds in releases/WebKitGTK/webkit-2.8

Merge r181710 - Avoid repaints when changing transform on an element with multiple background images
https://bugs.webkit.org/show_bug.cgi?id=142841

Reviewed by Zalan Bujtas.

Source/WebCore:

Replace the cheap test for changed images in RenderElement::updateFillImages()
with an exhaustive test that walks the entire list of background images,
since any ensuing repaint is way more expensive than a slightly more expensive check here.

Test: fast/repaint/multiple-backgrounds-style-change.html

  • rendering/RenderElement.cpp:

(WebCore::RenderElement::updateFillImages):

  • rendering/style/FillLayer.cpp:

(WebCore::layerImagesIdentical): See if both images are the same (either none
or both mask images, and same image pointer).
(WebCore::FillLayer::imagesIdentical): Walk the two FillLayer lists, checking the images
on each one. Returns false if we reach the end of one list before the other, or the images
are different.

  • rendering/style/FillLayer.h: New static function; static because

it compares two FillLayer lists, and I think that makes more sense than
a member function.

LayoutTests:

Test that changes transform on a composited element with 2 background images,
and tests for no repaints.

  • fast/repaint/multiple-backgrounds-style-change-expected.txt: Added.
  • fast/repaint/multiple-backgrounds-style-change.html: Added.
2:53 AM Changeset in webkit [181940] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r181709 - Pass cookies by reference in CookieHash functions
https://bugs.webkit.org/show_bug.cgi?id=142839

Reviewed by Sam Weinig.

  • platform/Cookie.h:

(WebCore::CookieHash::hash):
(WebCore::CookieHash::equal):

2:50 AM Changeset in webkit [181939] by Carlos Garcia Campos
  • 11 edits
    4 adds in releases/WebKitGTK/webkit-2.8

Merge r181691 - Flex and grid items should be painted as inline-blocks
https://bugs.webkit.org/show_bug.cgi?id=142266

Reviewed by Darin Adler.

Source/WebCore:

Based on Blink r157004 by <cbiesinger@chromium.org>.
https://src.chromium.org/viewvc/blink?revision=157004&view=revision

Both flexbox and grid specs define that the painting order of flex/grid
items is the same as inline blocks. See
http://dev.w3.org/csswg/css-flexbox/#painting and
http://dev.w3.org/csswg/css-grid/#z-order.

Extracted inline blocks painting code from InlineElementBox and moved to
a helper method that will be reused for flexboxes and grids.

Tests: css3/flexbox/flex-item-text-background-not-interleaved.html

fast/css-grid-layout/grid-item-text-background-not-interleaved.html

  • rendering/InlineElementBox.cpp:

(WebCore::InlineElementBox::paint): Move code to
RenderElement::paintAsInlineBlock().

  • rendering/RenderBlock.cpp:

(WebCore::RenderBlock::paintChild): Add new argument to paint children
as inline blocks.

  • rendering/RenderBlock.h: Define PaintType enmu and modify paintChild()

signature to add the new argument.

  • rendering/RenderElement.cpp:

(WebCore::paintPhase): Paint element in a phase.
(WebCore::RenderElement::paintAsInlineBlock): Code extracted from
InlineElementBox::paint().

  • rendering/RenderElement.h: Add new method signature.
  • rendering/RenderFlexibleBox.cpp:

(WebCore::RenderFlexibleBox::paintChildren): Call
RenderBlock::paintChild() with the new argument.

  • rendering/RenderGrid.cpp:

(WebCore::RenderGrid::paintChildren): Ditto.

LayoutTests:

  • css3/flexbox/flex-item-text-background-not-interleaved-expected.html: Added.
  • css3/flexbox/flex-item-text-background-not-interleaved.html: Added.
  • fast/css-grid-layout/float-not-protruding-into-next-grid-item-expected.html:

Add some vertical space to avoid issues with backgrounds.

  • fast/css-grid-layout/float-not-protruding-into-next-grid-item.html:

Ditto.

  • fast/css-grid-layout/grid-item-text-background-not-interleaved-expected.html: Added.
  • fast/css-grid-layout/grid-item-text-background-not-interleaved.html: Added.
2:38 AM Changeset in webkit [181938] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[GTK][WK2] WebPageProxy::failedToShowPopupMenu() virtual method should be marked as override
https://bugs.webkit.org/show_bug.cgi?id=143045

Reviewed by Carlos Garcia Campos.

  • UIProcess/WebPageProxy.h: Mark the failedToShowPopupMenu(), inherited from

the WebPopupMenuProxy::Client class, as overridden.

2:32 AM Changeset in webkit [181937] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[WK2] Clean up DrawingAreaImpl vtable overrides
https://bugs.webkit.org/show_bug.cgi?id=143044

Reviewed by Carlos Garcia Campos.

Declare virtual methods of the DrawingAreaImpl class as overridden where necessary.

  • WebProcess/WebPage/DrawingAreaImpl.h:

(WebKit::DrawingAreaImpl::layerTreeStateIsFrozen): Deleted.
(WebKit::DrawingAreaImpl::layerTreeHost): Deleted.

12:45 AM Changeset in webkit [181936] by bshafiei@apple.com
  • 5 edits in trunk/Source

Versioning.

12:40 AM Changeset in webkit [181935] by commit-queue@webkit.org
  • 7 edits in trunk

Unreviewed, rolling out r181932.
https://bugs.webkit.org/show_bug.cgi?id=143041

The test fails most of the time on bots (Requested by ap on
#webkit).

Reverted changeset:

"[Content Extensions] Add multi-DFA compiling and
interpreting."
https://bugs.webkit.org/show_bug.cgi?id=143010
http://trac.webkit.org/changeset/181932

Mar 24, 2015:

11:06 PM Changeset in webkit [181934] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

Source/WebCore/rendering/RenderThemeMac.mm:2181:118: error: null passed to a callee that requires a non-null argument [-Werror,-Wnonnull]
https://bugs.webkit.org/show_bug.cgi?id=143039

Unreviewed build fix for newer versions of OS X.

  • rendering/RenderThemeMac.mm: Define a null language parameter. This

seemed better than turning the clang warning off for just that
function.
(WebCore::AttachmentLayout::layOutTitle):
(WebCore::AttachmentLayout::layOutSubtitle):

10:29 PM Changeset in webkit [181933] by mitz@apple.com
  • 3 edits in trunk/Source/WebCore

Another attempt to fix the build.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/spi/cocoa/QuartzCoreSPI.h:
10:19 PM Changeset in webkit [181932] by achristensen@apple.com
  • 7 edits in trunk

[Content Extensions] Add multi-DFA compiling and interpreting.
https://bugs.webkit.org/show_bug.cgi?id=143010

Reviewed by Benjamin Poulain.

Source/WebCore:

  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::compileRuleList):
Compile multiple NFAs to DFAs.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Fixed a bug when there are no non-universal actions.
We still need to report that no ignore-previous-rules was hit to apply the
universal actions which are now accessed through DFABytecodeInterpreter::actionsFromDFARoot
and skipped in DFABytecodeInterpreter::interpret.

  • contentextensions/DFABytecodeCompiler.cpp:

(WebCore::ContentExtensions::DFABytecodeCompiler::compile):
Add a header for each DFA.

  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::actionsFromDFARoot):
(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):
Interpret as many DFAs as there are in the bytecode.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::testRequest):
(TestWebKitAPI::TEST_F):
Add some tests for ignore-previous-rules and large rulesets.

10:12 PM Changeset in webkit [181931] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Tried to fix the EWS build.

  • platform/spi/cocoa/QuartzCoreSPI.h:
9:27 PM Changeset in webkit [181930] by Joseph Pecoraro
  • 5 edits
    1 add in trunk/Source/WebInspectorUI

Web Inspector: IndexedDB / Databases ContentViews should have refresh button
https://bugs.webkit.org/show_bug.cgi?id=142996

Reviewed by Timothy Hatcher.

  • Localizations/en.lproj/localizedStrings.js:

Remove unused strings.

  • UserInterface/Images/ReloadFull.svg: Added.

This is the same as Reload.svg but adjusted to fill the viewbox edge to edge.
The only change is to the viewbox.

  • UserInterface/Protocol/RemoteObject.js:

(WebInspector.RemoteObject.prototype.release):
Some clients would call release not knowing if this was an object or not.
Act gracefully in the case that this was not an object that needs a
remote release.

  • UserInterface/Views/DatabaseTableContentView.js:

(WebInspector.DatabaseTableContentView):
(WebInspector.DatabaseTableContentView.prototype.get navigationItems):
(WebInspector.DatabaseTableContentView.prototype._queryError):
(WebInspector.DatabaseTableContentView.prototype._refreshButtonClicked):

  • UserInterface/Views/IndexedDatabaseObjectStoreContentView.js:

(WebInspector.IndexedDatabaseObjectStoreContentView):
(WebInspector.IndexedDatabaseObjectStoreContentView.prototype.get navigationItems):
(WebInspector.IndexedDatabaseObjectStoreContentView.prototype._fetchMoreData):
(WebInspector.IndexedDatabaseObjectStoreContentView.prototype._refreshButtonClicked):
Give the storage content views a refresh button to reload the content.

9:20 PM Changeset in webkit [181929] by Joseph Pecoraro
  • 20 edits in trunk

Setter should have a single formal parameter, Getter no parameters
https://bugs.webkit.org/show_bug.cgi?id=142903

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionInfo):
Enforce no parameters for getters and a single parameter
for setters, with informational error messages.

Source/WebInspectorUI:

  • UserInterface/Views/GradientSlider.js:

(WebInspector.GradientSliderKnob.prototype.get wellColor):
Fix a getter that was incorrectly taking a parameter.

LayoutTests:

Correct a bunch of setters in existing tests and add
tests for good/bad getter and setter syntax.

  • js/class-syntax-declaration-expected.txt:
  • js/dom/exception-sequencing.html:
  • js/dom/reserved-words-as-property-expected.txt:
  • js/dom/script-tests/implicit-call-with-global-reentry.js:

(testObject.set setterTest):

  • js/dom/script-tests/reserved-words-as-property.js:

(testWord):

  • js/for-in-cached-expected.txt:
  • js/object-literal-direct-put-expected.txt:
  • js/object-literal-syntax-expected.txt:
  • js/parser-syntax-check-expected.txt:
  • js/script-tests/class-syntax-declaration.js:
  • js/script-tests/class-syntax-super.js:

(class.Derived.extends.Base.set callBaseMethodInSetter):
(class.Derived.extends.Base.set baseMethodInGetterSetter):

  • js/script-tests/for-in-cached.js:
  • js/script-tests/object-literal-direct-put.js:
  • js/script-tests/object-literal-syntax.js:
  • js/script-tests/parser-syntax-check.js:
8:52 PM Changeset in webkit [181928] by commit-queue@webkit.org
  • 4 edits in trunk/Source/WebCore

Unreviewed, rolling out r181898 and r181909.
https://bugs.webkit.org/show_bug.cgi?id=143034

Broke fast/regions/auto-size/autoheight-two-pass-layout-
complex-002.html (Requested by ap on #webkit).

Reverted changesets:

"Improve the offsetWidth/Height layout optimization"
https://bugs.webkit.org/show_bug.cgi?id=143008
http://trac.webkit.org/changeset/181898

"Disable layout dimensions optimization for RenderRegions"
https://bugs.webkit.org/show_bug.cgi?id=143017
http://trac.webkit.org/changeset/181909

8:17 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
8:05 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
7:37 PM Changeset in webkit [181927] by rniwa@webkit.org
  • 2 edits in trunk/Source/WebKit2

Inspector doesn't get focused when opened in dock mode
https://bugs.webkit.org/show_bug.cgi?id=143030

Reviewed by Anders Carlsson.

The bug was caused by platformBringToFront and platformAttach calling makeFirstResponder on WKWebView,
which aren't intended to become the first responder. Fixed the bug by calling makeFirstResponder on the WKView
subview of the WKWebView, which is intended to be used as the first responder on behalf of the web view.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::platformBringToFront):
(WebKit::WebInspectorProxy::platformAttach):

7:26 PM WindowsWithoutCygwin edited by mmaxfield@apple.com
(diff)
7:18 PM Changeset in webkit [181926] by Chris Dumez
  • 3 edits
    2 adds in trunk

[WK2] Responses with 302 HTTP Status Code should not be cached
https://bugs.webkit.org/show_bug.cgi?id=143028
<rdar://problem/19714040>

Reviewed by Antti Koivisto.

Source/WebKit2:

Responses with 302 HTTP Status Code should not be cached as per
RFC 7231:
http://tools.ietf.org/html/rfc7231#section-6.1

This patch updates our disk cache policy accordingly.

Test: http/tests/cache/disk-cache/disk-cache-302-status-code.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canStore):

LayoutTests:

Add layout test to check that responses with 302 HTTP Status Code
are not cached.

  • http/tests/cache/disk-cache/disk-cache-302-status-code-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-302-status-code.html: Added.
7:17 PM WindowsWithoutCygwin created by mmaxfield@apple.com
6:28 PM Changeset in webkit [181925] by commit-queue@webkit.org
  • 5 edits in trunk

Scripts running in isolated world should not subject to a page's CSP about 'eval'.
https://bugs.webkit.org/show_bug.cgi?id=141316.

Patch by Zhuo Li <zachli@apple.com> on 2015-03-24
Reviewed by Geoffrey Garen.

Source/WebCore:

  • bindings/js/ScriptController.cpp:

(WebCore::ScriptController::initScript):
We should not impose the main world Content Security Policy onto the isolated world.

LayoutTests:

I added a new Content Security Policy directive, "script-src", so that we do not
allow 'unsafe-eval' in the main world.

Also I have to copy the whole function instead of using eval because
eval is subject to the main world Content Security Policy now.

  • http/tests/security/isolatedWorld/bypass-main-world-csp-expected.txt:
  • http/tests/security/isolatedWorld/bypass-main-world-csp.html:
6:18 PM Changeset in webkit [181924] by Joseph Pecoraro
  • 5 edits
    3 adds in trunk

ES6: Classes: Early return in sub-class constructor results in returning undefined instead of instance
https://bugs.webkit.org/show_bug.cgi?id=143012

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitReturn):
Fix handling of "undefined" when returned from a Derived class. It was
returning "undefined" when it should have returned "this".

LayoutTests:

  • js/class-constructor-return-expected.txt: Added.
  • js/class-constructor-return.html: Added.
  • js/script-tests/class-constructor-return.js: Added.

New test covering different return values from constructors.

  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-super.js:

Fix test. Returning undefined is the same as an implicit return
and should return this.

5:55 PM Changeset in webkit [181923] by Chris Dumez
  • 2 edits
    2 moves in trunk/Source/WebCore

[Mac] Use .cpp file extension instead of .mm for SharedTimerCF and PowerObserverMac
https://bugs.webkit.org/show_bug.cgi?id=143026

Reviewed by Andy Estes.

Use .cpp file extension instead of .mm for SharedTimerCF and
PowerObserverMac.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/cf/SharedTimerCF.cpp: Renamed from Source/WebCore/platform/cf/SharedTimerCF.mm.

(WebCore::timerFired):
Use WTF::AutodrainedPool instead of @autoreleasepool {}.

  • platform/mac/PowerObserverMac.cpp: Renamed from Source/WebCore/platform/mac/PowerObserverMac.mm.
5:19 PM Changeset in webkit [181922] by ggaren@apple.com
  • 17 edits
    4 adds in trunk/Source

REGRESSION (r181458): Heap use-after-free in JSSetIterator destructor
https://bugs.webkit.org/show_bug.cgi?id=142696

Reviewed and tweaked by Geoffrey Garen.

Source/JavaScriptCore:

Before r142556, JSSetIterator::destroy was not defined.
So accidentally MapData::const_iterator in JSSet was never destroyed.
But it had non trivial destructor, decrementing MapData->m_iteratorCount.

After r142556, JSSetIterator::destroy works.
It correctly destruct MapData::const_iterator and m_iteratorCount partially works.
But JSSetIterator::~JSSetIterator requires owned JSSet since it mutates MapData->m_iteratorCount.

It is guaranteed that JSSet is live since JSSetIterator has a reference to JSSet
and marks it in visitChildren (WriteBarrier<Unknown>).
However, the order of destructions is not guaranteed in GC-ed system.

Consider the following case,
allocate JSSet and subsequently allocate JSSetIterator.
And they resides in the separated MarkedBlock, <1> and <2>.

JSSet<1> <- JSSetIterator<2>

And after that, when performing GC, Marker decides that the above 2 objects are not marked.
And Marker also decides MarkedBlocks <1> and <2> can be sweeped.

First Sweeper sweep <1>, destruct JSSet<1> and free MarkedBlock<1>.
Second Sweeper sweep <2>, attempt to destruct JSSetIterator<2>.
However, JSSetIterator<2>'s destructor,
JSSetIterator::~JSSetIterator requires live JSSet<1>, it causes use-after-free.

In this patch, we introduce WeakGCMap into JSMap/JSSet to track live iterators.
When packing the removed elements in JSSet/JSMap, we apply the change to all live
iterators tracked by WeakGCMap.

WeakGCMap can only track JSCell since they are managed by GC.
So we drop JSSet/JSMap C++ style iterators. Instead of C++ style iterator, this patch
introduces JS style iterator signatures into C++ class IteratorData.
If we need to iterate over JSMap/JSSet, use JSSetIterator/JSMapIterator instead of using
IteratorData directly.

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2015-03-24

  • runtime/JSMap.cpp:

(JSC::JSMap::destroy):

  • runtime/JSMap.h:

(JSC::JSMap::JSMap):
(JSC::JSMap::begin): Deleted.
(JSC::JSMap::end): Deleted.

  • runtime/JSMapIterator.cpp:

(JSC::JSMapIterator::destroy):

  • runtime/JSMapIterator.h:

(JSC::JSMapIterator::next):
(JSC::JSMapIterator::nextKeyValue):
(JSC::JSMapIterator::iteratorData):
(JSC::JSMapIterator::JSMapIterator):

  • runtime/JSSet.cpp:

(JSC::JSSet::destroy):

  • runtime/JSSet.h:

(JSC::JSSet::JSSet):
(JSC::JSSet::begin): Deleted.
(JSC::JSSet::end): Deleted.

  • runtime/JSSetIterator.cpp:

(JSC::JSSetIterator::destroy):

  • runtime/JSSetIterator.h:

(JSC::JSSetIterator::next):
(JSC::JSSetIterator::iteratorData):
(JSC::JSSetIterator::JSSetIterator):

  • runtime/MapData.h:

(JSC::MapDataImpl::IteratorData::finish):
(JSC::MapDataImpl::IteratorData::isFinished):
(JSC::MapDataImpl::shouldPack):
(JSC::JSIterator>::MapDataImpl):
(JSC::JSIterator>::KeyType::KeyType):
(JSC::JSIterator>::IteratorData::IteratorData):
(JSC::JSIterator>::IteratorData::next):
(JSC::JSIterator>::IteratorData::ensureSlot):
(JSC::JSIterator>::IteratorData::applyMapDataPatch):
(JSC::JSIterator>::IteratorData::refreshCursor):
(JSC::MapDataImpl::const_iterator::key): Deleted.
(JSC::MapDataImpl::const_iterator::value): Deleted.
(JSC::MapDataImpl::const_iterator::operator++): Deleted.
(JSC::MapDataImpl::const_iterator::finish): Deleted.
(JSC::MapDataImpl::const_iterator::atEnd): Deleted.
(JSC::MapDataImpl::begin): Deleted.
(JSC::MapDataImpl::end): Deleted.
(JSC::MapDataImpl<Entry>::MapDataImpl): Deleted.
(JSC::MapDataImpl<Entry>::clear): Deleted.
(JSC::MapDataImpl<Entry>::KeyType::KeyType): Deleted.
(JSC::MapDataImpl<Entry>::const_iterator::internalIncrement): Deleted.
(JSC::MapDataImpl<Entry>::const_iterator::ensureSlot): Deleted.
(JSC::MapDataImpl<Entry>::const_iterator::const_iterator): Deleted.
(JSC::MapDataImpl<Entry>::const_iterator::~const_iterator): Deleted.
(JSC::MapDataImpl<Entry>::const_iterator::operator): Deleted.
(JSC::=): Deleted.

  • runtime/MapDataInlines.h:

(JSC::JSIterator>::clear):
(JSC::JSIterator>::find):
(JSC::JSIterator>::contains):
(JSC::JSIterator>::add):
(JSC::JSIterator>::set):
(JSC::JSIterator>::get):
(JSC::JSIterator>::remove):
(JSC::JSIterator>::replaceAndPackBackingStore):
(JSC::JSIterator>::replaceBackingStore):
(JSC::JSIterator>::ensureSpaceForAppend):
(JSC::JSIterator>::visitChildren):
(JSC::JSIterator>::copyBackingStore):
(JSC::JSIterator>::applyMapDataPatch):
(JSC::MapDataImpl<Entry>::find): Deleted.
(JSC::MapDataImpl<Entry>::contains): Deleted.
(JSC::MapDataImpl<Entry>::add): Deleted.
(JSC::MapDataImpl<Entry>::set): Deleted.
(JSC::MapDataImpl<Entry>::get): Deleted.
(JSC::MapDataImpl<Entry>::remove): Deleted.
(JSC::MapDataImpl<Entry>::replaceAndPackBackingStore): Deleted.
(JSC::MapDataImpl<Entry>::replaceBackingStore): Deleted.
(JSC::MapDataImpl<Entry>::ensureSpaceForAppend): Deleted.
(JSC::MapDataImpl<Entry>::visitChildren): Deleted.
(JSC::MapDataImpl<Entry>::copyBackingStore): Deleted.

  • runtime/MapPrototype.cpp:

(JSC::mapProtoFuncForEach):

  • runtime/SetPrototype.cpp:

(JSC::setProtoFuncForEach):

  • runtime/WeakGCMap.h:

(JSC::WeakGCMap::forEach):

  • tests/stress/modify-map-during-iteration.js: Added.

(testValue):
(identityPairs):
(.set if):
(var):
(set map):

  • tests/stress/modify-set-during-iteration.js: Added.

(testValue):
(set forEach):
(set delete):

Source/WebCore:

Use JSSetIterator/JSMapIterator to iterate over JSSet and JSMap.

Patch by Yusuke Suzuki <Yusuke Suzuki> on 2015-03-24

  • ForwardingHeaders/runtime/JSMapIterator.h: Added.
  • ForwardingHeaders/runtime/JSSetIterator.h: Added.
  • bindings/js/SerializedScriptValue.cpp:

(WebCore::CloneSerializer::serialize):

4:54 PM Changeset in webkit [181921] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Fix crash in WebKit::RemoteObjectRegistry::sendInvocation
https://bugs.webkit.org/show_bug.cgi?id=143027
rdar://problem/20208674

Reviewed by Sam Weinig.

  • WebProcess/InjectedBundle/API/mac/WKWebProcessPlugInBrowserContextController.mm:

(-[WKWebProcessPlugInBrowserContextController dealloc]):
Make sure to invalidate the _WKRemoteObjectRegistry like we do in the UI process.

4:46 PM Changeset in webkit [181920] by Chris Dumez
  • 6 edits
    2 adds
    1 delete in trunk

[WK2] Responses with 204 HTTP Status Code should be cacheable by default
https://bugs.webkit.org/show_bug.cgi?id=143020
<rdar://problem/20281529>

Reviewed by Antti Koivisto.

Source/WebKit2:

Make responses with 204 HTTP Status Code cacheable by default, as
per RFC 7231:
http://tools.ietf.org/html/rfc7231#section-6.3.5

Test: http/tests/cache/disk-cache/disk-cache-204-status-code.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canStore):

LayoutTests:

Add test to make sure that responses with 204 HTTP Status Code are
cacheable by default.

  • http/tests/cache/disk-cache/disk-cache-204-status-code-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-204-status-code.html: Added.
  • http/tests/cache/disk-cache/resources/cache-test.js:

Re-introduce support for generating responses with only headers (no body).
This was mistakenly dropped when I rebased my patch for r181895.

4:37 PM Changeset in webkit [181919] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] Remove unused keyboard code in WKSelectPopover class.
https://bugs.webkit.org/show_bug.cgi?id=143021

Reviewed by Joseph Pecoraro.

WKSelectPopover created an instance of UIKeyboard that was
initialized in initWithView but never used. Removing the
obsolete code.

  • UIProcess/ios/forms/WKFormSelectPopover.mm:

(-[WKSelectPopover initWithView:hasGroups:]):

4:25 PM Changeset in webkit [181918] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Tried to fix the iOS Simulator build.

  • platform/spi/cocoa/QuartzCoreSPI.h:
4:24 PM Changeset in webkit [181917] by benjamin@webkit.org
  • 4 edits in trunk

Make URL filter patterns matching consistent and add a simple canonicalization step
https://bugs.webkit.org/show_bug.cgi?id=142998

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-03-24
Reviewed by Alex Christensen.

Source/WebCore:

This patch makes two changes to the url filter input:
-Make the matching "Search" by default, the pattern can now appear anywhere

in the URL by default.

-Make the input a little less fragile: do not explode on valid input

that is not formatted in a certain way.

To implement the search behavior, I simply add an implict ".*" in front of the patterns
when that make sense.

To make the input more solid, we do some little modification on the input:
-Remove duplicated ".*".
-Remove matching suffixes that do not bring new information.
-Unify all the ".*" in the same format.

Why do that here? That should be done through a graph analysis on the machine.

The reason is this is incredibly cheap compared to the graph analysis. Any state
removed upfront will save the handling of several hundred nodes in the deterministic
graph.

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::Term::isKnownToMatchAnyString):
(WebCore::ContentExtensions::Term::isUniversalTransition):
(WebCore::ContentExtensions::GraphBuilder::finalize):
(WebCore::ContentExtensions::GraphBuilder::assertionBOL):
(WebCore::ContentExtensions::GraphBuilder::fail):
(WebCore::ContentExtensions::GraphBuilder::simplifySunkTerms):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
4:10 PM Changeset in webkit [181916] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: REGRESSION (r179286): ReferenceError: Can't find variable: selector
https://bugs.webkit.org/show_bug.cgi?id=143022

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-03-24
Reviewed by Timothy Hatcher.

Fix a regression where a missing variable statement causes a ReferenceError.

  • UserInterface/Models/DOMNodeStyles.js:
4:10 PM Changeset in webkit [181915] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r181671): Caused Timer-related crashes on iOS / WK1
https://bugs.webkit.org/show_bug.cgi?id=143025

Reviewed by Andy Estes.

Call CFRunLoopAddTimer() on WebThreadRunLoop() instead of
CFRunLoopGetCurrent() for iOS, as we did before r181671.

I inadvertently changed this in r181671 when merging the Mac
and iOS implementations.

No new tests, already covered by existing tests.

  • platform/cf/SharedTimerCF.mm:

(WebCore::setSharedTimerFireInterval):

3:56 PM Changeset in webkit [181914] by mark.lam@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

The ExecutionTimeLimit test should use its own JSGlobalContextRef.
<https://webkit.org/b/143024>

Reviewed by Geoffrey Garen.

Currently, the ExecutionTimeLimit test is using a JSGlobalContextRef
passed in from testapi.c. It should create its own for better
encapsulation of the test.

  • API/tests/ExecutionTimeLimitTest.cpp:

(currentCPUTimeAsJSFunctionCallback):
(testExecutionTimeLimit):

  • API/tests/ExecutionTimeLimitTest.h:
  • API/tests/testapi.c:

(main):

3:55 PM Changeset in webkit [181913] by Beth Dakin
  • 2 edits in trunk/LayoutTests

Another attempted test fix after http://trac.webkit.org/changeset/181907

  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
3:54 PM Changeset in webkit [181912] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Adopt ES6 Class Syntax for CSSStyleDeclarationTextEditor
https://bugs.webkit.org/show_bug.cgi?id=143019

Patch by Tobias Reiss <tobi+webkit@basecode.de> on 2015-03-24
Reviewed by Timothy Hatcher.

  • Convert CSSStyleDeclarationTextEditor to use class syntax
  • Convert constructor functions to constructor methods
  • Convert "constructor.method" to class static methods where possible
  • Convert all methods to method syntax, eliminate commas between methods
  • Convert all superclass calls in classes to use "super"
  • Removed FIXME from WebInspector.Object subclasses, added calls to super.
  • Fixed strict mode issues now that classes enforce strict mode (see below).
  • UserInterface/Views/CSSStyleDeclarationTextEditor.js:

Many function declarations modified.

3:47 PM Changeset in webkit [181911] by Beth Dakin
  • 2 edits in trunk/LayoutTests

Attempted test fix after http://trac.webkit.org/changeset/181907

  • platform/mac-mavericks/js/dom/global-constructors-attributes-expected.txt:
3:47 PM Changeset in webkit [181910] by mitz@apple.com
  • 4 edits in trunk/Source

Source/WebCore:
WebCore part of <rdar://problem/20282863> Transforms are flattened in snapshots of on-screen WKWebViews
https://bugs.webkit.org/show_bug.cgi?id=143023

Reviewed by Tim Horton.

  • platform/spi/cocoa/QuartzCoreSPI.h: Added the declaration of

CARenderServerRenderLayerWithTransform.

Source/WebKit2:
WebKit2 part of <rdar://problem/20282863> Transforms are flattened in snapshots of on-screen WKWebViews
https://bugs.webkit.org/show_bug.cgi?id=143023

Reviewed by Tim Horton.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _snapshotRect:intoImageOfWidth:completionHandler:]): If the view is in a
window, use CARenderServerRenderLayerWithTransform to synchronously capture a snapshot of
its layer tree into an IOSurfcae, then call the completion handler with an image created
from the IOSurface.

2:50 PM Changeset in webkit [181909] by hyatt@apple.com
  • 2 edits in trunk/Source/WebCore

Disable layout dimensions optimization for RenderRegions
https://bugs.webkit.org/show_bug.cgi?id=143017

Reviewed by Dean Jackson.

  • dom/Document.cpp:

(WebCore::Document::updateLayoutIfDimensionsOutOfDate):
Turn off the optimization for regions, since auto height regions can change size
without needing a layout.

2:39 PM Changeset in webkit [181908] by Joseph Pecoraro
  • 2 edits in trunk/LayoutTests

Unreviewed gardening after r181901.

  • platform/mac/http/tests/media/media-source/mediasource-sourcebuffer-mode-expected.txt:

Update the expected results for platform specific results that include
a stringified function.

2:31 PM Changeset in webkit [181907] by Beth Dakin
  • 37 edits
    3 adds in trunk

Add events related to force click gesture
https://bugs.webkit.org/show_bug.cgi?id=142836
-and corresponding-
rdar://problem/20210239

Reviewed by Dean Jackson.

Source/WebCore:

This patch adds six new events for the force click gesture:

webkitmouseforcewillbegin -> Event is sent just before mousedown to indicate that
force can be perceived if the user presses any harder. The author should prevent
default on this event to both prevent the user agent’s default force click
features and to receive the other 5 events.

webkitmouseforcechanged -> This event fires whenever force changes between the
mousedown and mouseup. It is a new type of mouse event that includes a force
variable which is a normalized number between 0 (corresponds to click) and 1
(corresponds to force click). In this patch, I have only added code to send this
event between mousedown and mouseforcedown, but as a followup patch, we plan to
send it through mouseup.

webkitmouseforcecancelled -> If the user releases their finger from the trackpad
after pressing hard enough to send webkitmouseforcewillbegin events but not hard
enough to force click, this event will be sent to indicate that the user bailed
out on the gesture.

webkitmouseforcedown -> The down part of the force click.

webkitmouseforceup -> The up part of the force click. This event is added in this
patch, but does not yet fire. That is work for a follow-up patch.

webkitmouseforceclick -> The equivalent of the click event for the force click.
Should fire just after webkitmouseforceup. This event is added in this patch, but
does not yet fire. That is work for a follow-up patch.

Add new files for WebKitMouseForceEvent to build systems.

  • DerivedSources.cpp:
  • DerivedSources.make:
  • WebCore.vcxproj/WebCore.vcxproj:
  • WebCore.vcxproj/WebCore.vcxproj.filters:
  • WebCore.xcodeproj/project.pbxproj:
  • WebCore.xcodeproj/project.pbxproj:

Plumbing for new events.

  • dom/Document.idl:

Code to dispatch the new events. Currently the code that calls these functions is
in WebKit2.

  • dom/Element.cpp:

(WebCore::Element::dispatchMouseForceWillBegin):
(WebCore::Element::dispatchMouseForceChanged):
(WebCore::Element::dispatchMouseForceDown):
(WebCore::Element::dispatchMouseForceUp):
(WebCore::Element::dispatchMouseForceClick):
(WebCore::Element::dispatchMouseForceCancelled):

  • dom/Element.h:

More plumbing.

  • dom/Element.idl:
  • dom/EventNames.h:
  • dom/EventNames.in:

Our new type of mouse event that includes force.

  • dom/WebKitMouseForceEvent.cpp: Added.

(WebCore::WebKitMouseForceEventInit::WebKitMouseForceEventInit):
(WebCore::WebKitMouseForceEvent::WebKitMouseForceEvent):
(WebCore::WebKitMouseForceEvent::~WebKitMouseForceEvent):
(WebCore::WebKitMouseForceEvent::eventInterface):

  • dom/WebKitMouseForceEvent.h: Added.
  • dom/WebKitMouseForceEvent.idl: Added.

More plumbing.

  • html/HTMLAttributeNames.in:
  • html/HTMLBodyElement.cpp:

(WebCore::HTMLBodyElement::createWindowEventHandlerNameMap):

  • html/HTMLBodyElement.idl:
  • html/HTMLElement.cpp:

(WebCore::HTMLElement::createEventHandlerNameMap):

  • page/DOMWindow.idl:
  • page/EventHandler.h:

(WebCore::EventHandler::lastMouseDownEvent):

Source/WebKit2:

ActionMenuHitTestResult has a new bool indicating whether to not the HitTestResult
will prevent default.

  • Shared/mac/ActionMenuHitTestResult.h:
  • Shared/mac/ActionMenuHitTestResult.mm:

(WebKit::ActionMenuHitTestResult::encode):
(WebKit::ActionMenuHitTestResult::decode):

Send immediateActionDidUpdate and the normalized force over the the WebProcess.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::immediateActionDidUpdate):

  • UIProcess/WebPageProxy.h:

We need a dummy animation controller when web content is overriding the default
behavior.

  • UIProcess/mac/WKImmediateActionController.mm:

Send along the update information.
(-[WKImmediateActionController immediateActionRecognizerDidUpdateAnimation:]):

Use the dummy animation controller if default has been prevented.
(-[WKImmediateActionController _defaultAnimationController]):
(-[WKImmediateActionController _updateImmediateActionItem]):

Keep track of whether m_lastActionMenuHitTes prevented the default immediate
action behavior.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Call dispatchMouseForceMayBegin() at hit test time.

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):

Call dispatchMouseForceChanged() if appropriate.
(WebKit::WebPage::immediateActionDidUpdate):

Call dispatchMouseForceCancelled() if appropriate.
(WebKit::WebPage::immediateActionDidCancel):

Call dispatchMouseForceDown() if appropriate.
(WebKit::WebPage::immediateActionDidComplete):

Source/WTF:

New enable flag for the events.

  • wtf/FeatureDefines.h:

LayoutTests:

  • fast/dom/event-handler-attributes-expected.txt:
  • fast/dom/event-handler-attributes.html:
  • platform/mac/js/dom/global-constructors-attributes-expected.txt:
2:17 PM Changeset in webkit [181906] by andersca@apple.com
  • 9 edits in trunk/Source

Fix designated initializer violations
https://bugs.webkit.org/show_bug.cgi?id=143016
rdar://problem/20268858

Reviewed by Dan Bernstein.

Source/WebCore:

Mark -[DOMObject init] as unavailable.

  • bindings/objc/DOMObject.h:
  • bindings/objc/DOMObject.mm:

(-[DOMObject init]):

Source/WebKit/mac:

Move -[WebBackForwardList initWithBackForwardList:] to the implementation instead of a category since
nobody calls it outside of WebBackForwardList.mm.

  • History/WebBackForwardList.mm:
  • History/WebBackForwardListInternal.h:

Source/WebKit2:

Move -[WKProcessPool _initWithConfiguration:] to a class extension so we can make it the designated initializer.

  • UIProcess/API/Cocoa/WKProcessPool.mm:

(-[WKProcessPool _initWithConfiguration:]):

  • UIProcess/API/Cocoa/WKProcessPoolPrivate.h:
2:16 PM Changeset in webkit [181905] by commit-queue@webkit.org
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Workaround issue causing uncaught exception in Inspector
https://bugs.webkit.org/show_bug.cgi?id=143015

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-24
Reviewed by Timothy Hatcher.

Workaround <https://webkit.org/b/143012> and avoid early returning in constructors.

  • UserInterface/Controllers/ReplayManager.js:

(WebInspector.ReplayManager.class.ReplayManager):

1:42 PM Changeset in webkit [181904] by Chris Dumez
  • 4 edits
    2 adds in trunk

[WK2] Responses with 404 HTTP Status Code should be cacheable by default
https://bugs.webkit.org/show_bug.cgi?id=143014
<rdar://problem/20280310>

Reviewed by Antti Koivisto.

Source/WebKit2:

Make responses with 404 HTTP Status Code cacheable by default, as
per RFC 7231:
http://tools.ietf.org/html/rfc7231#section-6.5.4

Test: http/tests/cache/disk-cache/disk-cache-404-status-code.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canStore):

LayoutTests:

Add test to make sure that responses with 404 HTTP Status Code are
cacheable by default.

  • http/tests/cache/disk-cache/disk-cache-404-status-code-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-404-status-code.html: Added.
  • http/tests/cache/disk-cache/resources/generate-response.cgi:
1:41 PM Changeset in webkit [181903] by Brian Burg
  • 6 edits
    1 copy
    1 add in trunk/Source/WebInspectorUI

Web Inspector: unify resizer implementations used by DataGrid and Sidebar
https://bugs.webkit.org/show_bug.cgi?id=142407

Reviewed by Timothy Hatcher.

Both of these implementations do the same thing slightly differently. Unify the code
and use the "glass pane" technique to preserve cursor while dragging over links or text.

This patch implements vertical and horizontal rule orientations. Further refactorings
to use this class may need to add "Indeterminate" orientation to support moving the inspector
window by its fake toolbar element.

  • UserInterface/Main.html:
  • UserInterface/Views/DataGrid.css:

(.data-grid .resizer):
(.data-grid-resizer): Deleted.

  • UserInterface/Views/DataGrid.js: Store Resizer instances rather than resizer elements.

Use symbols to secretly store neighbor column ids on the resizer objects. Stop using
WebInspector.elementDragStart, as I would like to deprecate it in favor of Resizer instances.

(WebInspector.DataGrid):
(WebInspector.DataGrid.prototype._positionResizerElements):
(WebInspector.DataGrid.prototype.resizerDragStarted):
(WebInspector.DataGrid.prototype.resizerDragging):
(WebInspector.DataGrid.prototype.resizerDragEnded):
(WebInspector.DataGrid.prototype._startResizerDragging): Deleted.
(WebInspector.DataGrid.prototype._resizerDragging): Deleted.
(WebInspector.DataGrid.prototype._endResizerDragging): Deleted.

  • UserInterface/Views/Resizer.css:

(.resizer):
(.resizer.vertical-rule):
(.resizer.horizontal-rule):
(.glass-pane-for-drag):

  • UserInterface/Views/Resizer.js: Added.

(WebInspector.Resizer):
(WebInspector.Resizer.prototype.get element):
(WebInspector.Resizer.prototype.get orientation):
(WebInspector.Resizer.prototype.get initialPosition):
(WebInspector.Resizer.prototype._currentPosition):
(WebInspector.Resizer.prototype._resizerMouseDown):
(WebInspector.Resizer.prototype._resizerMouseMoved):
(WebInspector.Resizer.prototype._resizerMouseUp):

  • UserInterface/Views/Sidebar.css:

(.sidebar > .resizer): Deleted.

  • UserInterface/Views/Sidebar.js:

(WebInspector.Sidebar):
(WebInspector.Sidebar.prototype.resizerDragStarted):
(WebInspector.Sidebar.prototype.resizerDragging):
(WebInspector.Sidebar.prototype.resizerDragEnded):
(WebInspector.Sidebar.prototype._navigationItemSelected):
(WebInspector.Sidebar.prototype._resizerMouseDown): Deleted.
(WebInspector.Sidebar.prototype._resizerMouseMoved): Deleted.
(WebInspector.Sidebar.prototype._resizerMouseUp): Deleted.

1:11 PM Changeset in webkit [181902] by Chris Dumez
  • 2 edits in trunk/Source/WebKit2

[WK2] Remove NetworkCache FIXME comment about caching responses to OPTIONS requests
https://bugs.webkit.org/show_bug.cgi?id=143009

Reviewed by Andreas Kling.

Remove NetworkCache FIXME comment about caching responses to OPTIONS
method as RFC 7234 says "Responses to the OPTIONS method are not
cacheable" [1].

[1] http://tools.ietf.org/html/rfc7231#page-31

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canRetrieve):

1:07 PM Changeset in webkit [181901] by commit-queue@webkit.org
  • 28 edits in trunk

ES6: Object Literal Methods toString is missing method name
https://bugs.webkit.org/show_bug.cgi?id=142992

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-24
Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Always stringify functions in the pattern:

"function " + <function name> + <text from opening parenthesis to closing brace>.

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString):
Update the path that was not stringifying in this pattern.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedFunctionExecutable::parametersStartOffset):

  • parser/Nodes.h:
  • runtime/Executable.cpp:

(JSC::FunctionExecutable::FunctionExecutable):

  • runtime/Executable.h:

(JSC::FunctionExecutable::parametersStartOffset):
Pass the already known function parameter opening parenthesis
start offset through to the FunctionExecutable.

  • tests/mozilla/js1_5/Scope/regress-185485.js:

(with.g):
Add back original space in this test that was removed by r181810
now that we have the space again in stringification.

LayoutTests:

  • js/class-syntax-default-constructor-expected.txt:

This test was already failing, it now fails in a different way.

  • js/object-literal-computed-methods-expected.txt:
  • js/object-literal-methods-expected.txt:

These tests now pass.

  • fast/dom/TreeWalker/acceptNode-filter-expected.txt:
  • js/destructuring-assignment-expected.txt:
  • js/dfg-redundant-load-of-captured-variable-proven-constant-expected.txt:
  • js/dfg-resolve-global-specific-dictionary-expected.txt:
  • js/dom/JSON-parse-expected.txt:
  • js/dom/JSON-stringify-expected.txt:
  • js/dom/dfg-strcat-over-objects-then-exit-on-it-expected.txt:
  • js/dom/function-prototype-expected.txt:
  • js/dom/toString-and-valueOf-override-expected.txt:
  • js/kde/lval-exceptions-expected.txt:
  • storage/domstorage/localstorage/string-conversion-expected.txt:
  • storage/domstorage/sessionstorage/string-conversion-expected.txt:
  • js/dom/script-tests/dfg-strcat-over-objects-then-exit-on-it.js:
  • js/script-tests/dfg-redundant-load-of-captured-variable-proven-constant.js:
  • js/script-tests/dfg-resolve-global-specific-dictionary.js:
  • js/dom/function-prototype.html:

Update tests to add expected whitespace for stringifying a function
with no name.

12:56 PM Changeset in webkit [181900] by benjamin@webkit.org
  • 3 edits
    2 adds in trunk

CSS Selectors Level 4: enable case-insensitive attribute matching by default
https://bugs.webkit.org/show_bug.cgi?id=142960

Reviewed by Andreas Kling.

Source/WebCore:

All open issues have been resolved, enable the feature by default.

Test: fast/css/attribute-selector-case-insensitive.html

  • css/CSSGrammar.y.in:

LayoutTests:

This test is imported from blink. That's the only test
they have for this feature.

  • fast/css/attribute-selector-case-insensitive-expected.txt: Added.
  • fast/css/attribute-selector-case-insensitive.html: Added.
12:53 PM Changeset in webkit [181899] by dino@apple.com
  • 3 edits in trunk/Source/WebCore

MediaControls: Scrubber and Time displays have the incorrect blending
https://bugs.webkit.org/show_bug.cgi?id=143011
<rdar://problem/20245251>

Reviewed by Eric Carlson.

The scrubber in media controls should use plus-darker blending. Then
the scrubber itself should use a slightly transparent black (55% opacity)
when drawing.

  • Modules/mediacontrols/mediaControlsiOS.css:

(audio::-webkit-media-controls-timeline): Add the blend mode.

  • Modules/mediacontrols/mediaControlsiOS.js:

(ControllerIOS.prototype.drawTimelineBackground): Start drawing with
transparency. I changed the order of rendering to make it
more clear we draw the three parts in left to right order.

12:13 PM Changeset in webkit [181898] by hyatt@apple.com
  • 4 edits in trunk/Source/WebCore

Improve the offsetWidth/Height layout optimization
https://bugs.webkit.org/show_bug.cgi?id=143008

Reviewed by Dean Jackson.

  • dom/Document.cpp:

(WebCore::Document::updateLayoutIfDimensionsOutOfDate):

  • dom/Document.h:

Change Element* to Element&. Clean up the dimension bits to use shifting. Remove both the inline and
the positioning restrictions on the optimization check.

  • dom/Element.cpp:

(WebCore::Element::offsetWidth):
(WebCore::Element::offsetHeight):
Change to use Element& instead of Element*.

(WebCore::Element::clientWidth):
(WebCore::Element::clientHeight):
(WebCore::Element::scrollWidth):
(WebCore::Element::scrollHeight):
Turn on the optimization for clientWidth/Height and scrollWidth/Height.

10:25 AM Changeset in webkit [181897] by yoav@yoav.ws
  • 5 edits
    8 adds
    1 delete in trunk

Stop image from displaying when src attribute is removed or emptied
https://bugs.webkit.org/show_bug.cgi?id=142677

Reviewed by Chris Dumez.

Source/WebCore:

Previously, we ignored empty attribute as failed URL, and didn't update the
renderer when an image was removed. This patch fixes that.

Tests: fast/dom/HTMLImageElement/image-empty-src.html

fast/dom/HTMLImageElement/image-remove-src.html

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::updateFromElement):

LayoutTests:

  • fast/dom/HTMLImageElement/image-empty-src-expected.html: Added.
  • fast/dom/HTMLImageElement/image-empty-src.html: Added.
  • fast/dom/HTMLImageElement/image-remove-src-expected.html: Added.
  • fast/dom/HTMLImageElement/image-remove-src.html: Added.
  • fast/dom/HTMLImageElement/image-empty-srcset-expected.html: Added.
  • fast/dom/HTMLImageElement/image-empty-srcset.html: Added.
  • fast/dom/HTMLImageElement/image-remove-srcset-expected.html: Added.
  • fast/dom/HTMLImageElement/image-remove-srcset.html: Added.
10:06 AM Changeset in webkit [181896] by Brent Fulgham
  • 4 edits in trunk/LayoutTests

[Win] Update baselines after r181889.
https://bugs.webkit.org/show_bug.cgi?id=141869

  • platform/win/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
  • platform/win/css3/selectors3/xml/css3-modsel-15c-expected.txt:
  • platform/win/fast/dom/NavigatorContentUtils/is-protocol-handler-registered-expected.txt:
9:50 AM Changeset in webkit [181895] by Chris Dumez
  • 4 edits
    3 adds in trunk

[WK2] NetworkCache retrievals fail for entries with no body
https://bugs.webkit.org/show_bug.cgi?id=142979
<rdar://problem/20264100>

Reviewed by Antti Koivisto.

Source/WebKit2:

NetworkCache retrievals were failing for entries with no body because
decodeEntry() doesn't correctly handle this case. In particular, the
following check fails:
"metaData.bodyOffset + metaData.bodySize == fileData.size()".
This is because bodyOffset is pageSize-aligned.

As a result, the following resource on apple.com is stored in the cache
but we fail to reuse it and reload it from the network every time:
http://images.apple.com/home/styles/promos.css

This patch updates decodeEntry() to create a null Data object for the
body if bodySize is 0.

  • NetworkProcess/cache/NetworkCacheDataCocoa.mm:

(WebKit::NetworkCache::Data::data):
Do not attempt to initialize m_data if m_dispatchData is null as the
call to dispatch_data_create_map() would then crash. We now return
null in this case. This is needed as decodeStorageEntry() in
NetworkCache.cpp constructs a SharedBuffer from
storageEntry.body.data() and the body may be null.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::decodeEntry):

LayoutTests:

Add network disk cache validation test for resources that have no body
(only headers).

  • http/tests/cache/disk-cache/disk-cache-validation-no-body-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-validation-no-body.html: Added.
  • http/tests/cache/disk-cache/resources/generate-response-no-body.cgi: Added.
9:44 AM Changeset in webkit [181894] by Chris Dumez
  • 7 edits
    13 moves
    4 adds in trunk

[WK2] The WebKit network cache does not cache responses with "Content-Disposition: attachment" header
https://bugs.webkit.org/show_bug.cgi?id=142989
<rdar://problem/20265992>

Reviewed by Antti Koivisto.

Source/WebKit2:

Update our WebKit network cache policy to cache responses with
"Content-Disposition: attachment" header. There is no reason we cannot
cache these and our memory cache already does.

This was causing a decent amount of cache misses in the wild. I have
noticed for example that when loading disney.com, we fail to cache the
following resources because of this policy:
http://pagead2.googlesyndication.com/pagead/osd.js
http://pagead2.googlesyndication.com/pagead/show_companion_ad.js

Those resources have Cache-Control headers that indicate they are meant
to be cacheable.

Test: http/tests/cache/disk-cache-validation-attachment.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::canStore):

LayoutTests:

Add layout test to check that resources whose response has the
"Content-Disposition: attachment" header are cacheable.

Also move all disk cache layout tests to a disk-cache sub-folder to
facilitate skipping on platforms that don't have the WebKit network
disk cache.

  • http/tests/cache/disk-cache/disk-cache-disable-expected.txt: Renamed from LayoutTests/http/tests/cache/disk-cache-disable-expected.txt.
  • http/tests/cache/disk-cache/disk-cache-disable.html: Renamed from LayoutTests/http/tests/cache/disk-cache-disable.html.
  • http/tests/cache/disk-cache/disk-cache-redirect-to-data-expected.txt: Renamed from LayoutTests/http/tests/cache/disk-cache-redirect-to-data-expected.txt.
  • http/tests/cache/disk-cache/disk-cache-redirect-to-data.html: Renamed from LayoutTests/http/tests/cache/disk-cache-redirect-to-data.html.
  • http/tests/cache/disk-cache/disk-cache-validation-attachment-expected.txt: Added.
  • http/tests/cache/disk-cache/disk-cache-validation-attachment.html: Added.
  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy-expected.txt: Renamed from LayoutTests/http/tests/cache/disk-cache-validation-back-navigation-policy-expected.txt.
  • http/tests/cache/disk-cache/disk-cache-validation-back-navigation-policy.html: Renamed from LayoutTests/http/tests/cache/disk-cache-validation-back-navigation-policy.html.
  • http/tests/cache/disk-cache/disk-cache-validation-expected.txt: Renamed from LayoutTests/http/tests/cache/disk-cache-validation-expected.txt.
  • http/tests/cache/disk-cache/disk-cache-validation.html: Renamed from LayoutTests/http/tests/cache/disk-cache-validation.html.
  • http/tests/cache/disk-cache/disk-cache-vary-cookie-expected.txt: Renamed from LayoutTests/http/tests/cache/disk-cache-vary-cookie-expected.txt.
  • http/tests/cache/disk-cache/disk-cache-vary-cookie.html: Renamed from LayoutTests/http/tests/cache/disk-cache-vary-cookie.html.
  • http/tests/cache/disk-cache/resources/cache-test.js: Renamed from LayoutTests/http/tests/cache/resources/cache-test.js.
  • http/tests/cache/disk-cache/resources/generate-response.cgi: Renamed from LayoutTests/http/tests/cache/resources/generate-response.cgi.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac-wk1/TestExpectations:
  • platform/win/TestExpectations:
8:18 AM Changeset in webkit [181893] by Philippe Normand
  • 3 edits
    1 move
    5 adds
    1 delete in trunk/Source/WebCore

[OpenWebRTC] RealtimeMediaSourceCenter implementation
https://bugs.webkit.org/show_bug.cgi?id=142476

Reviewed by Eric Carlson.

The old GStreamer MediaStreamCenter is replaced by the OpenWebRTC
RealtimeMediaSourceCenter. It is not yet able to correctly assess
MediaConstraints so it selects the first audio/video sources
available through OpenWebRTC.

  • PlatformEfl.cmake: Add new files to the build.
  • PlatformGTK.cmake: Ditto.
  • platform/mediastream/gstreamer/MediaStreamCenterGStreamer.cpp: Removed.
  • platform/mediastream/openwebrtc/OpenWebRTCUtilities.cpp: Added.

(WebCore::initializeOpenWebRTC): Simple function to initialize the
framework, it is going to be used by the PeerConnection backend as well.

  • platform/mediastream/openwebrtc/OpenWebRTCUtilities.h: Added.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.cpp: Added.

(WebCore::mediaSourcesAvailableCallback): Function invoked once
the media sources discovery succeeded within OpenWebRTC.
(WebCore::RealtimeMediaSourceCenter::platformCenter): Instantiate
the OpenWebRTC RealtimeMediaSourceCenter.
(WebCore::RealtimeMediaSourceCenterOwr::RealtimeMediaSourceCenterOwr):
(WebCore::RealtimeMediaSourceCenterOwr::~RealtimeMediaSourceCenterOwr):
(WebCore::RealtimeMediaSourceCenterOwr::validateRequestConstraints):
Schedule a discovery process for the capture sources.
(WebCore::RealtimeMediaSourceCenterOwr::createMediaStream): Pick
the first audio/video sources and create a MediaStream accordingly.
(WebCore::RealtimeMediaSourceCenterOwr::getMediaStreamTrackSources):
Not yet implemented.
(WebCore::RealtimeMediaSourceCenterOwr::mediaSourcesAvailable):
Method invoked once the capture sources process succeeded. Parse
them and create an internal cache of RealtimeMediaSources accordingly.
(WebCore::RealtimeMediaSourceCenterOwr::firstSource): Utility
function to fetch the first source of the given type from the
RealtimeMediaSources cache.

  • platform/mediastream/openwebrtc/RealtimeMediaSourceCenterOwr.h: Renamed from Source/WebCore/platform/mediastream/gstreamer/MediaStreamCenterGStreamer.h.
  • platform/mediastream/openwebrtc/RealtimeMediaSourceOwr.h: Added.
8:11 AM Changeset in webkit [181892] by Csaba Osztrogonác
  • 7 edits in trunk

[EFL] Add OpenWebRTC in jhbuild
https://bugs.webkit.org/show_bug.cgi?id=142778

Reviewed by Gyuyoung Kim.

Original patch by Philippe Normand <pnormand@igalia.com>

.:

  • Source/cmake/OptionsEfl.cmake: Look for OpenWebRTC library if

mediastream build is enabled.

Source/WebCore:

  • PlatformEfl.cmake: Add OpenWebRTC CFLAGS and LDFLAGS.

Tools:

  • efl/install-dependencies: Dependencies for OpenWebRTC.
  • efl/jhbuild.modules: build OpenWebRTC, libusrsctp, libnice and

the openwebrtc gst plugins.

3:05 AM Changeset in webkit [181891] by msaboff@apple.com
  • 39 edits
    3 adds in trunk

REGRESSION (172175-172177): Change in for...in processing causes properties added in loop to be enumerated
https://bugs.webkit.org/show_bug.cgi?id=142856

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Refactored the way the for .. in enumeration over objects is done. We used to make three C++ calls to
get info for three loops to iterate over indexed properties, structure properties and other properties,
respectively. We still have the three loops, but now we make one C++ call to get all the info needed
for all loops before we exectue any enumeration.

The JSPropertyEnumerator has a count of the indexed properties and a list of named properties.
The named properties are one list, with structured properties in the range [0,m_endStructurePropertyIndex)
and the generic properties in the range [m_endStructurePropertyIndex, m_endGenericPropertyIndex);

Eliminated the bytecodes op_get_structure_property_enumerator, op_get_generic_property_enumerator and
op_next_enumerator_pname.
Added the bytecodes op_get_property_enumerator, op_enumerator_structure_pname and op_enumerator_generic_pname.
The bytecodes op_enumerator_structure_pname and op_enumerator_generic_pname are similar except for what
end value we stop iterating on.

Made corresponding node changes to the DFG and FTL for the bytecode changes.

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitGetPropertyEnumerator):
(JSC::BytecodeGenerator::emitEnumeratorStructurePropertyName):
(JSC::BytecodeGenerator::emitEnumeratorGenericPropertyName):
(JSC::BytecodeGenerator::emitGetStructurePropertyEnumerator): Deleted.
(JSC::BytecodeGenerator::emitGetGenericPropertyEnumerator): Deleted.
(JSC::BytecodeGenerator::emitNextEnumeratorPropertyName): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ForInNode::emitMultiLoopBytecode):

  • dfg/DFGAbstractInterpreterInlines.h:

(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGClobberize.h:

(JSC::DFG::clobberize):

  • dfg/DFGDoesGC.cpp:

(JSC::DFG::doesGC):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::fixupNode):

  • dfg/DFGNodeType.h:
  • dfg/DFGPredictionPropagationPhase.cpp:

(JSC::DFG::PredictionPropagationPhase::propagate):

  • dfg/DFGSafeToExecute.h:

(JSC::DFG::safeToExecute):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::compile):

  • ftl/FTLAbstractHeapRepository.h:
  • ftl/FTLCapabilities.cpp:

(JSC::FTL::canCompile):

  • ftl/FTLLowerDFGToLLVM.cpp:

(JSC::FTL::LowerDFGToLLVM::compileNode):
(JSC::FTL::LowerDFGToLLVM::compileGetEnumerableLength):
(JSC::FTL::LowerDFGToLLVM::compileGetPropertyEnumerator):
(JSC::FTL::LowerDFGToLLVM::compileGetEnumeratorStructurePname):
(JSC::FTL::LowerDFGToLLVM::compileGetEnumeratorGenericPname):
(JSC::FTL::LowerDFGToLLVM::compileGetStructurePropertyEnumerator): Deleted.
(JSC::FTL::LowerDFGToLLVM::compileGetGenericPropertyEnumerator): Deleted.
(JSC::FTL::LowerDFGToLLVM::compileGetEnumeratorPname): Deleted.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_enumerator_structure_pname):
(JSC::JIT::emit_op_enumerator_generic_pname):
(JSC::JIT::emit_op_get_property_enumerator):
(JSC::JIT::emit_op_next_enumerator_pname): Deleted.
(JSC::JIT::emit_op_get_structure_property_enumerator): Deleted.
(JSC::JIT::emit_op_get_generic_property_enumerator): Deleted.

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_enumerator_structure_pname):
(JSC::JIT::emit_op_enumerator_generic_pname):
(JSC::JIT::emit_op_next_enumerator_pname): Deleted.

  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • llint/LowLevelInterpreter.asm:
  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:
  • runtime/JSPropertyNameEnumerator.cpp:

(JSC::JSPropertyNameEnumerator::create):
(JSC::JSPropertyNameEnumerator::finishCreation):

  • runtime/JSPropertyNameEnumerator.h:

(JSC::JSPropertyNameEnumerator::indexedLength):
(JSC::JSPropertyNameEnumerator::endStructurePropertyIndex):
(JSC::JSPropertyNameEnumerator::endGenericPropertyIndex):
(JSC::JSPropertyNameEnumerator::indexedLengthOffset):
(JSC::JSPropertyNameEnumerator::endStructurePropertyIndexOffset):
(JSC::JSPropertyNameEnumerator::endGenericPropertyIndexOffset):
(JSC::JSPropertyNameEnumerator::cachedInlineCapacityOffset):
(JSC::propertyNameEnumerator):
(JSC::JSPropertyNameEnumerator::cachedPropertyNamesLengthOffset): Deleted.
(JSC::structurePropertyNameEnumerator): Deleted.
(JSC::genericPropertyNameEnumerator): Deleted.

  • runtime/Structure.cpp:

(JSC::Structure::setCachedPropertyNameEnumerator):
(JSC::Structure::cachedPropertyNameEnumerator):
(JSC::Structure::canCachePropertyNameEnumerator):
(JSC::Structure::setCachedStructurePropertyNameEnumerator): Deleted.
(JSC::Structure::cachedStructurePropertyNameEnumerator): Deleted.
(JSC::Structure::setCachedGenericPropertyNameEnumerator): Deleted.
(JSC::Structure::cachedGenericPropertyNameEnumerator): Deleted.
(JSC::Structure::canCacheStructurePropertyNameEnumerator): Deleted.
(JSC::Structure::canCacheGenericPropertyNameEnumerator): Deleted.

  • runtime/Structure.h:
  • runtime/StructureRareData.cpp:

(JSC::StructureRareData::visitChildren):
(JSC::StructureRareData::cachedPropertyNameEnumerator):
(JSC::StructureRareData::setCachedPropertyNameEnumerator):
(JSC::StructureRareData::cachedStructurePropertyNameEnumerator): Deleted.
(JSC::StructureRareData::setCachedStructurePropertyNameEnumerator): Deleted.
(JSC::StructureRareData::cachedGenericPropertyNameEnumerator): Deleted.
(JSC::StructureRareData::setCachedGenericPropertyNameEnumerator): Deleted.

  • runtime/StructureRareData.h:
  • tests/stress/for-in-delete-during-iteration.js:

LayoutTests:

New tests and rebased one test.

  • js/for-in-modify-in-loop-expected.txt: Added.
  • js/for-in-modify-in-loop.html: Added.
  • js/script-tests/for-in-modify-in-loop.js: Added.

(haveSameProperties):
(each):
(testAdd):
(testAddDelete):

  • http/tests/security/cross-frame-access-enumeration-expected.txt: Rebased.
2:31 AM WebKitGTK/Gardening/Calendar edited by chavarria1991@gmail.com
(diff)
2:22 AM Changeset in webkit [181890] by msaboff@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Unreviewed build fix for debug builds.

  • runtime/ExceptionHelpers.cpp:

(JSC::invalidParameterInSourceAppender):

12:30 AM Changeset in webkit [181889] by saambarati1@gmail.com
  • 40 edits
    11 adds in trunk

Improve error messages in JSC
https://bugs.webkit.org/show_bug.cgi?id=141869

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

JavaScriptCore has some unintuitive error messages associated
with certain common errors. This patch changes some specific
error messages to be more understandable and also creates a
mechanism that will allow for easy modification of error messages
in the future. The specific errors we change are not a function
errors and invalid parameter errors.

(JSC::sizeOfVarargs):

  • jit/JITOperations.cpp:

op_throw_static_error always has a JSString as its argument.
There is no need to dance around this, and we should assert
that this always holds. This JSString represents the error
message we want to display to the user, so there is no need
to pass it into errorDescriptionForValue which will now place
quotes around the string.

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::opIn):

  • runtime/ErrorInstance.cpp:

(JSC::ErrorInstance::ErrorInstance):

  • runtime/ErrorInstance.h:

(JSC::ErrorInstance::hasSourceAppender):
(JSC::ErrorInstance::sourceAppender):
(JSC::ErrorInstance::setSourceAppender):
(JSC::ErrorInstance::clearSourceAppender):
(JSC::ErrorInstance::setRuntimeTypeForCause):
(JSC::ErrorInstance::runtimeTypeForCause):
(JSC::ErrorInstance::clearRuntimeTypeForCause):
(JSC::ErrorInstance::appendSourceToMessage): Deleted.
(JSC::ErrorInstance::setAppendSourceToMessage): Deleted.
(JSC::ErrorInstance::clearAppendSourceToMessage): Deleted.

  • runtime/ExceptionHelpers.cpp:

(JSC::errorDescriptionForValue):
(JSC::defaultApproximateSourceError):
(JSC::defaultSourceAppender):
(JSC::functionCallBase):
(JSC::notAFunctionSourceAppender):
(JSC::invalidParameterInSourceAppender):
(JSC::invalidParameterInstanceofSourceAppender):
(JSC::createError):
(JSC::createInvalidFunctionApplyParameterError):
(JSC::createInvalidInParameterError):
(JSC::createInvalidInstanceofParameterError):
(JSC::createNotAConstructorError):
(JSC::createNotAFunctionError):
(JSC::createNotAnObjectError):
(JSC::createInvalidParameterError): Deleted.

  • runtime/ExceptionHelpers.h:
  • runtime/JSObject.cpp:

(JSC::JSObject::hasInstance):

  • runtime/RuntimeType.cpp: Added.

(JSC::runtimeTypeForValue):
(JSC::runtimeTypeAsString):

  • runtime/RuntimeType.h: Added.
  • runtime/TypeProfilerLog.cpp:

(JSC::TypeProfilerLog::processLogEntries):

  • runtime/TypeSet.cpp:

(JSC::TypeSet::getRuntimeTypeForValue): Deleted.

  • runtime/TypeSet.h:
  • runtime/VM.cpp:

(JSC::appendSourceToError):
(JSC::VM::throwException):

LayoutTests:

  • fast/dom/NodeList/nodelist-item-call-as-function-expected.txt:
  • fast/dom/call-a-constructor-as-a-function-expected.txt:
  • fast/regex/dom/cross-frame-callable-expected.txt:
  • fast/selectors/closest-general-expected.txt:
  • http/tests/security/xss-DENIED-window-index-assign-expected.txt:
  • js/dom/exception-thrown-from-new-expected.txt:
  • js/exception-for-nonobject-expected.txt:
  • js/exception-function-apply-expected.txt: Added.
  • js/exception-function-apply.html: Added.
  • js/exception-in-expected.txt: Added.
  • js/exception-in.html: Added.
  • js/exception-instanceof-expected.txt: Added.
  • js/exception-instanceof.html: Added.
  • js/instance-of-immediates-expected.txt:
  • js/script-tests/exception-function-apply.js: Added.
  • js/script-tests/exception-in.js: Added.
  • js/script-tests/exception-instanceof.js: Added.
  • js/typedarray-constructors-expected.txt:
  • platform/mac-wk2/plugins/npruntime/object-from-destroyed-plugin-expected.txt:
  • platform/mac-wk2/plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt:
  • platform/mac/css3/selectors3/xhtml/css3-modsel-15c-expected.txt:
  • platform/mac/css3/selectors3/xml/css3-modsel-15c-expected.txt:
  • plugins/npruntime/object-from-destroyed-plugin-expected.txt:
  • plugins/npruntime/object-from-destroyed-plugin-in-subframe-expected.txt:
  • plugins/npruntime/plugin-scriptable-object-invoke-default-expected.txt:
  • sputnik/Conformance/12_Statement/12.1_Block/S12.1_A4_T1-expected.txt:
  • sputnik/Conformance/13_Function_Definition/S13_A17_T2-expected.txt:
  • sputnik/Conformance/15_Native_Objects/15.1_The_Global_Object/S15.1_A2_T1-expected.txt:
  • sputnik/Conformance/15_Native_Objects/15.2_Object/15.2.4/S15.2.4_A3-expected.txt:
  • svg/dom/svgpath-out-of-bounds-getPathSeg-expected.txt:

Mar 23, 2015:

11:47 PM Changeset in webkit [181888] by yoav@yoav.ws
  • 6 edits
    10 adds
    9 deletes in trunk

Update empty image canvas tests and fix a related bug
https://bugs.webkit.org/show_bug.cgi?id=142694

Reviewed by Chris Dumez.

Source/WebCore:

During the work on https://bugs.webkit.org/show_bug.cgi?id=142677
we encountered an issue with canvas tests related to empty image handling
when drawn or used as a pattern. After updating these tests, an issue with
pattern handling was encountered.

The spec, as well as Chrome's implementation, say that when an empty image
is used as a pattern, createPattern should return null. See
https://html.spec.whatwg.org/multipage/scripting.html#fill-and-stroke-styles:check-the-usability-of-the-image-argument
Instead, createPattern returned an exception in this case.
This patch fixes that and makes sure that it returns a null when image loading hasn't started.

Tests: canvas/philip/tests/2d.drawImage.incomplete.emptysrc.html

canvas/philip/tests/2d.drawImage.incomplete.nosrc.html
canvas/philip/tests/2d.drawImage.incomplete.removedsrc.html
canvas/philip/tests/2d.pattern.image.incomplete.emptysrc.html
canvas/philip/tests/2d.pattern.image.incomplete.removedsrc.html

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::createPattern): Return "null" if image is not fully decodeable.

LayoutTests:

Tests below imported from https://github.com/w3c/web-platform-tests/tree/master/2dcontext/drawing-images-to-the-canvas

  • canvas/philip/tests/2d.drawImage.incomplete-expected.txt: Removed.
  • canvas/philip/tests/2d.drawImage.incomplete.emptysrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.emptysrc.html: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.html: Removed.
  • canvas/philip/tests/2d.drawImage.incomplete.nosrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.nosrc.html: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.removedsrc-expected.txt: Added.
  • canvas/philip/tests/2d.drawImage.incomplete.removedsrc.html: Added.

Tests below imported from https://github.com/w3c/web-platform-tests/tree/master/2dcontext/fill-and-stroke-styles

  • canvas/philip/tests/2d.pattern.image.incomplete-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.empty-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.empty.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.emptysrc-expected.txt: Added.
  • canvas/philip/tests/2d.pattern.image.incomplete.emptysrc.html: Added.
  • canvas/philip/tests/2d.pattern.image.incomplete.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.omitted-expected.txt: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.omitted.html: Removed.
  • canvas/philip/tests/2d.pattern.image.incomplete.removedsrc-expected.txt: Added.

This test currently fails and will be fixed in https://bugs.webkit.org/show_bug.cgi?id=142677

  • canvas/philip/tests/2d.pattern.image.incomplete.removedsrc.html: Added.

Test below imported from https://chromium.googlesource.com/chromium/blink/+/master/LayoutTests/fast/canvas/

  • fast/canvas/canvas-empty-image-pattern.html: Aligned with spec/Chrome.
  • fast/canvas/canvas-empty-image-pattern-expected.txt: Aligned with spec/Chrome.
  • TestExpectations: Added 2d.pattern.image.incomplete.removedsrc.html as an expected failure.
10:37 PM Changeset in webkit [181887] by fpizlo@apple.com
  • 15 edits in trunk/Source

JSC should have a low-cost asynchronous disassembler
https://bugs.webkit.org/show_bug.cgi?id=142997

Reviewed by Mark Lam.
Source/JavaScriptCore:


This adds a JSC_asyncDisassembly option that disassembles on a thread. Disassembly
doesn't block execution. Some code will live a little longer because of this, since the
work tasks hold a ref to the code, but other than that there is basically no overhead.

At present, this isn't really a replacement for JSC_showDisassembly, since it doesn't
provide contextual IR information for Baseline and DFG disassemblies, and it doesn't do
the separate IR dumps for FTL. Using JSC_showDisassembly and friends along with
JSC_asyncDisassembly has bizarre behavior - so just choose one.

A simple way of understanding how great this is, is to run a small benchmark like
V8Spider/earley-boyer.

Performance without any disassembly flags: 60ms
Performance with JSC_showDisassembly=true: 477ms
Performance with JSC_asyncDisassembly=true: 65ms

So, the overhead of disassembly goes from 8x to 8%.

Note that JSC_asyncDisassembly=true does make it incorrect to run "time" as a way of
measuring benchmark performance. This is because at VM exit, we wait for all async
disassembly requests to finish. For example, for earley-boyer, we spend an extra ~130ms
after the benchmark completely finishes to finish the disassemblies. This small weirdness
should be OK for the intended use-cases, since all you have to do to get around it is to
measure the execution time of the benchmark payload rather than the end-to-end time of
launching the VM.

  • assembler/LinkBuffer.cpp:

(JSC::LinkBuffer::finalizeCodeWithDisassembly):

  • assembler/LinkBuffer.h:

(JSC::LinkBuffer::wasAlreadyDisassembled):
(JSC::LinkBuffer::didAlreadyDisassemble):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::disassemble):

  • dfg/DFGJITFinalizer.cpp:

(JSC::DFG::JITFinalizer::finalize):
(JSC::DFG::JITFinalizer::finalizeFunction):

  • disassembler/Disassembler.cpp:

(JSC::disassembleAsynchronously):
(JSC::waitForAsynchronousDisassembly):

  • disassembler/Disassembler.h:
  • ftl/FTLCompile.cpp:

(JSC::FTL::mmAllocateDataSection):

  • ftl/FTLLink.cpp:

(JSC::FTL::link):

  • jit/JIT.cpp:

(JSC::JIT::privateCompile):

  • jsc.cpp:
  • runtime/Options.h:
  • runtime/VM.cpp:

(JSC::VM::~VM):

Source/WTF:

  • wtf/StringPrintStream.h:
6:48 PM Changeset in webkit [181886] by fpizlo@apple.com
  • 1 edit
    2 copies
    1 move
    2 adds in trunk/LayoutTests

Move the bulk of the js/dom/const test into js/const, so that run-jsc-stress-tests runs it.

Rubber stamped by Andreas Kling and Michael Saboff.

  • js/const-expected.txt: Copied from LayoutTests/js/dom/const-expected.txt.
  • js/const.html: Copied from LayoutTests/js/dom/const.html.
  • js/dom/const-expected.txt: Replaced.
  • js/dom/const.html: Replaced.
  • js/resources/const.js: Removed.
  • js/script-tests/const.js: Copied from LayoutTests/js/resources/const.js.
6:28 PM Changeset in webkit [181885] by Joseph Pecoraro
  • 2 edits in trunk/Source/WebKit2

Unreviewed, another attempt to fix 32-bit build after r181881.

  • UIProcess/WebInspectorProxy.h:
6:12 PM Changeset in webkit [181884] by Joseph Pecoraro
  • 3 edits in trunk/Source/WebKit2

Unreviewed, attempt to fix 32-bit build after r181881.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:
6:01 PM Changeset in webkit [181883] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

Fix api tests after r181876.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
Always append a CSSDisplayNoneStyleSheet action if no ignore-previous-rules is seen.

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):
Changed an assertion to a null check.

5:44 PM Changeset in webkit [181882] by dino@apple.com
  • 6 edits in trunk/Source/WebCore

Timelines are sharing the same canvas background
https://bugs.webkit.org/show_bug.cgi?id=142994
<rdar://problem/20209466>

Reviewed by Brent Fulgham.

Since each MediaControl lives in an isolated world, we
can't rely on a global variable to provide a unique
identifier for a named canvas. The fix is to expose
WebCore's UUID generator, and have each canvas use
that for a name.

  • Modules/mediacontrols/MediaControlsHost.cpp:

(WebCore::MediaControlsHost::generateUUID): New method on the
MediaControlsHost that generates a UUID.

  • Modules/mediacontrols/MediaControlsHost.h:
  • Modules/mediacontrols/MediaControlsHost.idl:
  • Modules/mediacontrols/mediaControlsApple.js: Remove the global

variable unique ID that wasn't working, and instead get
an ID from the MediaControlsHost.
(Controller.prototype.createControls):

  • Modules/mediacontrols/mediaControlsiOS.js:

(ControllerIOS):

4:42 PM Changeset in webkit [181881] by timothy@apple.com
  • 7 edits in trunk/Source/WebKit2

Web Inspector: Support attaching to another view other than the WKView
https://bugs.webkit.org/show_bug.cgi?id=142892

Reviewed by Tim Horton.

  • UIProcess/API/C/WKInspector.cpp:

(WKInspectorAttach): Drive by fix so it used the last attachment side.

  • UIProcess/API/Cocoa/WKViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView _inspectorAttachmentView]): Added.
(-[WKView _setInspectorAttachmentView:]): Added.

  • UIProcess/WebInspectorProxy.cpp:

(WebKit::WebInspectorProxy::createInspectorPage):
(WebKit::WebInspectorProxy::attachAvailabilityChanged):
Use platformCanAttach as a final check incase there is a different
attachment view that the platform knows about.

  • UIProcess/WebInspectorProxy.h:

(WebKit::WebInspectorProxy::attachmentSide): Added.
(WebKit::WebInspectorProxy::platformCanAttach): Added.

  • UIProcess/mac/WebInspectorProxyMac.mm:

(WebKit::WebInspectorProxy::attachmentViewDidChange): Added.
(WebKit::WebInspectorProxy::closeTimerFired):
(WebKit::WebInspectorProxy::platformCreateInspectorPage):
(WebKit::WebInspectorProxy::platformCanAttach):
(WebKit::WebInspectorProxy::inspectedViewFrameDidChange):
(WebKit::WebInspectorProxy::platformInspectedWindowHeight):
(WebKit::WebInspectorProxy::platformInspectedWindowWidth):
(WebKit::WebInspectorProxy::platformAttach):
(WebKit::WebInspectorProxy::platformDetach):
Use the _inspectorAttachmentView and change how the frame change notification
is observed and follow the attachment view as it changes.

3:56 PM Changeset in webkit [181880] by Brent Fulgham
  • 2 edits in trunk/Tools

Regression(r181257): WTF_WorkQueue.Simple is flaky
https://bugs.webkit.org/show_bug.cgi?id=142560

Remove the check that the refCount has returned to one after the
individual tasks have completed. It's too nondeterministic when
the reference count will be reduced.

Reviewed by Alexey Proskuryakov

  • TestWebKitAPI/Tests/WTF/WorkQueue.cpp:

(TestWebKitAPI::TEST): Remove test that refCount is back to 1.

3:52 PM Changeset in webkit [181879] by Brent Fulgham
  • 7 edits in trunk/Source/WebCore

Scroll latching logic can get stuck in 'scrollable="no"' iframes
https://bugs.webkit.org/show_bug.cgi?id=142789
<rdar://problem/20129494>

Reviewed by Dean Jackson.

Clean up the EventHandler and latching code as follows:
(1) Do not handle iframe elements as part of the normal latching logic. Instead, iframes should

be evaluated during the 'platformCompleteWheelEvent' phase of processing as top-level scrolling
frames.

(2) Get rid of the ill-conceived notation that we should process non-mainframe and main-frame frames

different.

(3) Modify code to reflect that the scroll latching code really deals with overflow scrolling. Consequently,

the 'findEnclosingScrollableContainer' was renamed to 'findEnclosingOverflowScroll' and does not
treat iframe as a suitable target.

(4) Do not create a latching state object when the container being evaluated is already scrolled to the

extreme position in the direction of the mouse gesture. In this case, we want the enclosing frame
to be the latching target.

(5) Do not treat the state where the mouse wheel gesture has ended manual scrolling, but has not ended

momentum scrolling, as an appropriate time to select a latching target.

  • page/EventHandler.cpp:

(WebCore::EventHandler::platformCompleteWheelEvent): Modify signature to remove unneeded argument.
(WebCore::EventHandler::handleWheelEvent): Modify call to 'platformCompleteWheelEvent' to remove unused argument.

  • page/EventHandler.h:
  • page/mac/EventHandlerMac.mm:

(WebCore::findEnclosingOverflowScroll): Renamed from 'findEnclosingScrollableContainer' and revised per the
notes above.
(WebCore::EventHandler::platformPrepareForWheelEvents): Remove mainFrame vs. non-mainFrame code paths and
consolidate logic.
(WebCore::EventHandler::platformCompleteWheelEvent): Remove unused argument. The wheel event target is no
longer needed here, now that iframes are not processed by this code.
(WebCore::findEnclosingScrollableContainer): Deleted.

  • page/scrolling/ScrollLatchingState.cpp:

(WebCore::ScrollLatchingState::setPreviousWheelScrolledElement:) Switch to move operator for passing
a temporary RefPtr to the the function.

  • page/scrolling/ScrollLatchingState.h:
  • platform/PlatformWheelEvent.h:

(WebCore::PlatformWheelEvent::useLatchedEventElement): Recognize 'phase=ended, momentum=none' as a state
that should not cause latching state to be revised.

3:50 PM Changeset in webkit [181878] by andersca@apple.com
  • 2 edits in trunk/Source/WebCore

Try to fix the iOS build.

  • platform/network/mac/CookieJarMac.mm:
3:49 PM Changeset in webkit [181877] by aestes@apple.com
  • 10 edits in trunk/LayoutTests

[Content Filtering] Fix up a few mistakes in LayoutTests/contentfiltering/
https://bugs.webkit.org/show_bug.cgi?id=142991

Reviewed by Andreas Kling.

  • contentfiltering/allow-after-add-data-expected.html: Added HTML5 doctype.
  • contentfiltering/allow-after-finished-adding-data-expected.html: Ditto.
  • contentfiltering/allow-after-response-expected.html: Ditto.
  • contentfiltering/allow-after-unblock-request-expected.html: Ditto.
  • contentfiltering/block-after-add-data-expected.html: Ditto.
  • contentfiltering/block-after-finished-adding-data-expected.html: Ditto.
  • contentfiltering/block-after-response-expected.html: Ditto.
  • contentfiltering/block-after-unblock-request-expected.html: Ditto.
  • contentfiltering/resources/contentfiltering.js: Added a newline at the end of the file.
3:36 PM WebKitGTK/2.6.x edited by Michael Catanzaro
add two notes (diff)
3:34 PM Changeset in webkit [181876] by beidson@apple.com
  • 18 edits
    1 copy
    1 add in trunk

Content extensions should apply css selectors
https://bugs.webkit.org/show_bug.cgi?id=142604

Reviewed by Alex Christensen.

Source/WebCore:

Tests: http/tests/contentextensions/css-display-none.html

  • WebCore.xcodeproj/project.pbxproj:
  • contentextensions/ContentExtension.cpp:

(WebCore::ContentExtensions::ContentExtension::create):
(WebCore::ContentExtensions::ContentExtension::ContentExtension):
(WebCore::ContentExtensions::ContentExtension::globalDisplayNoneStyleSheet):

  • contentextensions/ContentExtension.h:

(WebCore::ContentExtensions::ContentExtension::identifier):
(WebCore::ContentExtensions::ContentExtension::compiledExtension):

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::addContentExtension):
(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):
(WebCore::ContentExtensions::ContentExtensionsBackend::globalDisplayNoneStyleSheet):

  • contentextensions/ContentExtensionsBackend.h:
  • contentextensions/DFABytecodeInterpreter.cpp:

(WebCore::ContentExtensions::DFABytecodeInterpreter::interpret):

  • dom/DocumentStyleSheetCollection.cpp:

(WebCore::DocumentStyleSheetCollection::maybeAddContentExtensionSheet):

  • dom/DocumentStyleSheetCollection.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::commitData):
(WebCore::DocumentLoader::startLoadingMainResource):
(WebCore::DocumentLoader::addPendingContentExtensionSheet):

  • loader/DocumentLoader.h:
  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

  • loader/cache/CachedResourceRequest.cpp:

(WebCore::CachedResourceRequest::setInitiator):

  • loader/cache/CachedResourceRequest.h:

(WebCore::CachedResourceRequest::initiatingDocumentLoader):

  • page/UserContentController.cpp:

(WebCore::UserContentController::globalDisplayNoneStyleSheet):
(WebCore::UserContentController::displayNoneCSSRule):

  • page/UserContentController.h:

LayoutTests:

  • http/tests/contentextensions/css-display-none-expected.txt:
  • http/tests/contentextensions/css-display-none.html:
  • http/tests/contentextensions/css-display-none.html.json:
3:31 PM Changeset in webkit [181875] by andersca@apple.com
  • 3 edits in trunk/Source/WebCore

-[_WKWebsiteDataStore removeDataOfTypes:modifiedSince:completionHandler:] doesn't remove cookies
https://bugs.webkit.org/show_bug.cgi?id=142990
rdar://problem/20241645

Reviewed by Andreas Kling.

Use the Mac version of deleteAllCookiesModifiedSince on iOS as well.

  • platform/network/cf/CookieJarCFNet.cpp:
  • platform/network/mac/CookieJarMac.mm:
3:05 PM Changeset in webkit [181874] by timothy_horton@apple.com
  • 5 edits in trunk/Source/WebKit2

Images shared to photos via action menu are padded with zeroes at the end
https://bugs.webkit.org/show_bug.cgi?id=142985

Reviewed by Anders Carlsson.

  • Shared/mac/ActionMenuHitTestResult.h:
  • Shared/mac/ActionMenuHitTestResult.mm:

(WebKit::ActionMenuHitTestResult::encode):
(WebKit::ActionMenuHitTestResult::decode):

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::performActionMenuHitTestAtLocation):
Send the size of the image separately from the SharedMemory.
The SharedMemory's size can be rounded up, so we need to keep the original
size around in order to write the data to disk.

  • UIProcess/mac/WKActionMenuController.mm:

(-[WKActionMenuController _hitTestResultImage]):
(-[WKActionMenuController _addImageToPhotos:]):
Use the image size instead of the SharedMemory size.

3:04 PM Changeset in webkit [181873] by Conrad Shultz
  • 2 edits in trunk/Source/WebCore

Replace uses of kCTFontSystemFontType
https://bugs.webkit.org/show_bug.cgi?id=142984

Reviewed by Tim Horton.

  • rendering/RenderThemeMac.mm:

(WebCore::AttachmentLayout::layOutTitle):
(WebCore::AttachmentLayout::layOutSubtitle):

3:00 PM Changeset in webkit [181872] by jonowells@apple.com
  • 7 edits
    4 adds in trunk/Source/WebInspectorUI

Web Inspector: Debugger sidebar should have a filter button for breakpoints
https://bugs.webkit.org/show_bug.cgi?id=142779

Reviewed by Timothy Hatcher.

Add the infrastructure for activation filter buttons that can appear next to the text filters at the bottom
of any navigation sidebar panel. These filter bar buttons have defined within them a function that returns
a boolean value that indicates whether the input, typically a tree element, should be filtered or not.

This infrastructure is then used to create a filter for the debugger sidebar that, when applied, only shows
scripts that have breakpoints set on them.

  • Localizations/en.lproj/localizedStrings.js: Updated.
  • UserInterface/Main.html: Files added.
  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel.showResourcesWithChildrenOnlyFilterFunction):
(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._addBreakpoint): Drive-by fix.
Add filter button to filter bar.

  • UserInterface/Views/FilterBar.css:

(.filter-bar > .navigation-bar > .item):
Style filter button.

  • UserInterface/Views/FilterBar.js:

(WebInspector.FilterBar):
(WebInspector.FilterBar.prototype.get filters):
(WebInspector.FilterBar.prototype.set filters):
(WebInspector.FilterBar.prototype.hasActiveFilters):
(WebInspector.FilterBar.prototype._handleFilterChanged):
(WebInspector.FilterBar.prototype._inputFieldChanged): Deleted.
Create space for filter bar buttons and set up event handlers to deal with them.

  • UserInterface/Views/FilterBarButton.js: Copied from Source/WebInspectorUI/UserInterface/Views/FilterBar.css.

(WebInspector.FilterBarButton):
(WebInspector.FilterBarButton.prototype.get filterFunction):
(WebInspector.FilterBarButton.prototype.toggle):
Create class for a filter bar button that stores a filter function.

  • UserInterface/Views/NavigationSidebarPanel.js:

(WebInspector.NavigationSidebarPanel):
(WebInspector.NavigationSidebarPanel.prototype.matchTreeElementAgainstFilterFunctions):
(WebInspector.NavigationSidebarPanel.prototype.applyFiltersToTreeElement):
(WebInspector.NavigationSidebarPanel.prototype._filterDidChange):
(WebInspector.NavigationSidebarPanel.prototype._updateFilter):
(WebInspector.NavigationSidebarPanel.prototype._textFilterDidChange): Deleted.
Add functionality to support button filters and process their corresponding functions correctly when filtering.

2:37 PM Changeset in webkit [181871] by dino@apple.com
  • 6 edits
    3 adds in trunk

ES7: Implement Array.prototype.includes
https://bugs.webkit.org/show_bug.cgi?id=142707

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Add support for the ES7 includes method on Arrays.
https://github.com/tc39/Array.prototype.includes

  • builtins/Array.prototype.js:

(includes): Implementation in JS.

  • runtime/ArrayPrototype.cpp: Add 'includes' to the lookup table.

LayoutTests:

  • js/array-includes-expected.txt: Added.
  • js/array-includes.html: Added.
  • js/script-tests/array-includes.js: Added.
  • js/script-tests/Object-getOwnPropertyNames.js: Add 'includes'.
  • js/Object-getOwnPropertyNames-expected.txt: Add 'includes'.
2:32 PM Changeset in webkit [181870] by dino@apple.com
  • 2 edits in trunk/Source/WebCore

kCTFontSystemFontType is deprecated in CoreText
https://bugs.webkit.org/show_bug.cgi?id=142981
<rdar://problem/20261171>

Reviewed by Beth Dakin.

Update to the non-deprecated version.

  • rendering/RenderThemeIOS.mm: kCTFontSystemFontType -> kCTFontUIFontSystem

(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):

1:52 PM Changeset in webkit [181869] by enrica@apple.com
  • 2 edits in trunk/Source/WebKit2

[iOS] WebContent crash attempting to select text with a gesture at RenderObject::absoluteBoundingBoxRect.
https://bugs.webkit.org/show_bug.cgi?id=142913
rdar://problem/16400033

Reviewed by Sam Weinig.

When looking for the best candidate range at the given position,
we should skip nodes that don't have a renderer.
This is a speculative fix.

  • WebProcess/WebPage/ios/WebPageIOS.mm:

(WebKit::WebPage::rangeForWebSelectionAtPosition):

1:48 PM Changeset in webkit [181868] by Joseph Pecoraro
  • 5 edits in trunk

defineGetter/defineSetter should throw exceptions
https://bugs.webkit.org/show_bug.cgi?id=142934

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
Throw exceptions when these functions are used directly.

LayoutTests:

  • js/property-getters-and-setters-expected.txt:
  • js/script-tests/property-getters-and-setters.js:
1:48 PM Changeset in webkit [181867] by Joseph Pecoraro
  • 2 edits in trunk/Source/JavaScriptCore

Fix DO_PROPERTYMAP_CONSTENCY_CHECK enabled build
https://bugs.webkit.org/show_bug.cgi?id=142952

Reviewed by Geoffrey Garen.

  • runtime/Structure.cpp:

(JSC::PropertyTable::checkConsistency):
The check offset method doesn't exist in PropertyTable, it exists in Structure.

(JSC::Structure::checkConsistency):
So move it here, and always put it at the start to match normal behavior.

1:42 PM Changeset in webkit [181866] by ap@apple.com
  • 7 edits in trunk/Source

REGRESSION (Yosemite): WKView visibility notifications are messed up
https://bugs.webkit.org/show_bug.cgi?id=142945

Reviewed by Tim Horton.

As these notifications cannot be used by NSView subclasses, create a separate
object for observing them.

Source/WebKit/mac:

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):
(-[WebView initSimpleHTMLDocumentWithStyle:frame:preferences:groupName:]):
(-[WebView addWindowObserversForWindow:]):
(-[WebView removeWindowObservers]):
(-[WebView viewWillMoveToWindow:]): Make sure that observers are removed even
if -[WebView close] is called manually.

  • WebView/WebViewData.h:
  • WebView/WebViewData.mm:

(-[WebWindowVisibilityObserver initWithView:]):
(-[WebWindowVisibilityObserver startObserving:]):
(-[WebWindowVisibilityObserver stopObserving:]):
(-[WebWindowVisibilityObserver _windowVisibilityChanged:]):

Source/WebKit2:

  • UIProcess/API/mac/WKView.mm:

(-[WKWindowVisibilityObserver initWithView:]):
(-[WKWindowVisibilityObserver startObserving:]):
(-[WKWindowVisibilityObserver stopObserving:]):
(-[WKWindowVisibilityObserver _windowDidOrderOnScreen:]):
(-[WKWindowVisibilityObserver _windowDidOrderOffScreen:]):
(-[WKView addWindowObserversForWindow:]):
(-[WKView removeWindowObservers]): Also, don't try to remove NSWindowWillOrderOffScreenNotification,
which we never start to observe.
(-[WKView initWithFrame:processPool:configuration:webView:]):

  • UIProcess/API/mac/WKViewInternal.h:
1:35 PM Changeset in webkit [181865] by eric.carlson@apple.com
  • 2 edits in trunk/Source/WebCore

[Mac] Enable fullscreen for MSE-based videos
https://bugs.webkit.org/show_bug.cgi?id=142971

Reviewed by Jer Noble.

  • platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.h:

(WebCore::MediaPlayerPrivateMediaSourceAVFObjC::supportsFullscreen): Return true;

1:34 PM Changeset in webkit [181864] by andersca@apple.com
  • 4 edits in trunk

Source/WebKit2:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again.
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

Add plug-in destruction protectors around message receiver code that can call out to NPObjects or JavaScript
where we need the plug-in to stay around after the call.

  • Shared/Plugins/NPObjectMessageReceiver.cpp:

(WebKit::NPObjectMessageReceiver::invoke):
(WebKit::NPObjectMessageReceiver::invokeDefault):
(WebKit::NPObjectMessageReceiver::getProperty):
(WebKit::NPObjectMessageReceiver::setProperty):
(WebKit::NPObjectMessageReceiver::construct):

LayoutTests:
Make platform/mac-wk2/plugins/destroy-during-async-npp-new.html work again
https://bugs.webkit.org/show_bug.cgi?id=133692
rdar://problem/17255947

Reviewed by Alexey Proskuryakov.

  • platform/mac-wk2/TestExpectations:

Unskip test.

1:31 PM Changeset in webkit [181863] by achristensen@apple.com
  • 3 edits in trunk/Source/WebCore

[MediaFoundation] Implement seek.
https://bugs.webkit.org/show_bug.cgi?id=142594

Reviewed by Darin Adler.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::seeking):
(WebCore::MediaPlayerPrivateMediaFoundation::seekDouble):
(WebCore::MediaPlayerPrivateMediaFoundation::durationDouble):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:
1:17 PM Changeset in webkit [181862] by mitz@apple.com
  • 2 edits in trunk/Source/WebCore

Fixed the build.

  • platform/graphics/cocoa/FontCocoa.mm:

(WebCore::Font::platformBoundsForGlyph): Switched to non-deprecated CTFontOrientation values.
(WebCore::Font::platformWidthForGlyph): Ditto.

1:06 PM Changeset in webkit [181861] by ap@apple.com
  • 2 edits in trunk/LayoutTests

accessibility/textarea-selected-text-range.html is flaky
https://bugs.webkit.org/show_bug.cgi?id=142976

  • platform/mac/TestExpectations: Marking as such.
12:20 PM Changeset in webkit [181860] by jer.noble@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Accessibility crashing because MediaPlayer is laying out UI off the main thread
https://bugs.webkit.org/show_bug.cgi?id=142970

Reviewed by Eric Carlson.

Return early after synchronously calling to the main thread to allocate the volume
view, to avoid re-allocating the volume view again on the web thread.

  • platform/audio/ios/MediaSessionManagerIOS.mm:

(-[WebMediaSessionHelper allocateVolumeView]):

12:13 PM Changeset in webkit [181859] by andersca@apple.com
  • 4 edits in trunk/Source/WebKit2

Put the WK_NULLABLE_SPECIFIER in the right place for block parameters
https://bugs.webkit.org/show_bug.cgi?id=142975
rdar://problem/19863930

Reviewed by Dan Bernstein.

  • UIProcess/API/Cocoa/WKNavigationDelegate.h:
  • UIProcess/API/Cocoa/WKUIDelegate.h:
  • UIProcess/API/Cocoa/WKWebView.h:
11:39 AM Changeset in webkit [181858] by timothy_horton@apple.com
  • 9 edits in trunk/Source

Add a share item to the link action menu
https://bugs.webkit.org/show_bug.cgi?id=142961
<rdar://problem/19198374>

Reviewed by Beth Dakin.

  • UIProcess/mac/WKActionMenuController.mm:

(-[WKActionMenuController _hitLinkURL]):
Factor out _hitLinkURL from various places.

(-[WKActionMenuController _openURLFromActionMenu:]):
(-[WKActionMenuController _addToReadingListFromActionMenu:]):
(-[WKActionMenuController _defaultMenuItemsForVideo]):
(-[WKActionMenuController _defaultMenuItemsForImage]):
(-[WKActionMenuController _createActionMenuItemForTag:]):
(-[WKActionMenuController _createShareActionMenuItemForTag:withItems:]):
Adopt -[NSMenuItem standardShareMenuItemWithItems].
All of the null-checking is unnecessary as it's impossible to enter
these functions with a null image/etc.

(-[WKActionMenuController _defaultMenuItemsForLink]):

  • Shared/API/c/WKActionMenuItemTypes.h:

Add a 'Share' item to the link menu.

  • WebView/WebActionMenuController.mm:

(-[WebActionMenuController _defaultMenuItemsForImage]):
(-[WebActionMenuController _defaultMenuItemsForVideo]):
(-[WebActionMenuController _createActionMenuItemForTag:]):
(-[WebActionMenuController _createShareActionMenuItemForTag:withItems:]):
Adopt -[NSMenuItem standardShareMenuItemWithItems].
All of the null-checking is unnecessary as it's impossible to enter
these functions with a null image/etc.
Also, remove a duplicate isDownloadableMedia check for the 'save to downloads' item.

(-[WebActionMenuController _defaultMenuItemsForLink]):

  • WebView/WebUIDelegatePrivate.h:

Add a 'Share' item to the link menu.

  • English.lproj/Localizable.strings:

Remove some now-unused strings.

  • platform/spi/mac/NSMenuSPI.h:

Add some SPI.

11:18 AM Changeset in webkit [181857] by ddkilzer@apple.com
  • 2 edits in trunk/Source/WebCore

[iOS] Build fix: CoreText deprecated kCTFontSystemFontType

Fix tracked by: <rdar://problem/20261171>

  • rendering/RenderThemeIOS.mm:

(WebCore::RenderThemeIOS::updateCachedSystemFontDescription):
Add clang pragmas.

11:07 AM Changeset in webkit [181856] by Brent Fulgham
  • 2 edits in trunk/Source/WebCore

Unreviewed test fix.

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseScrollSnapDestination): Remove new assertion.

9:57 AM Changeset in webkit [181855] by Brent Fulgham
  • 3 edits in trunk/Source/WebCore

scroll-snap-destination and scroll-snap-coordinate do not seem to work together properly
https://bugs.webkit.org/show_bug.cgi?id=142552
<rdar://problem/20114743>

Reviewed by Dean Jackson.

Revise the snap point logic as follows:
(1) Put the snap point destination handling in a helper function to make the rest of the code

easier to read.

(2) Make sure we always have a left-hand snap point (i.e., position 0), but don't add multiple

left-hand snap points.

(3) Create a helper function to determine if we should be working with the scroll snap 'elements'

behavior. We want to use this for scroll-snap-destination/scroll-snap-coordinate markup.

(4) Create per-element snap point offsets when using scroll-snap-destination/scroll-snap-coordinate.

  • css/CSSParser.cpp:

(WebCore::CSSParser::parseScrollSnapDestination): Add assertion to try to catch bad parser state.

  • page/scrolling/AxisScrollSnapOffsets.cpp:

(WebCore::destinationOffsetForViewSize): Added helper function to consolidate logic for handling
destination coordinates.
(WebCore::updateFromStyle): Make sure a left-hand snap point is always provided.
(WebCore::styleUsesElements): Added helper function.
(WebCore::updateSnapOffsetsForScrollableArea): Revise logic to generate 'per-element' snap point
offsets.

4:47 AM Changeset in webkit [181854] by Carlos Garcia Campos
  • 1 copy in releases/WebKitGTK/webkit-2.8.0

WebKitGTK+ 2.8.0

4:17 AM Changeset in webkit [181853] by gyuyoung.kim@samsung.com
  • 3 edits in trunk/Tools

[CMake][EFL] Put failure API test excutables into failure directory
https://bugs.webkit.org/show_bug.cgi?id=142965

Reviewed by Csaba Osztrogonác.

Move failing WK2 API test executables to *bin/TestWebKitAPI/WebKit2/failure* directory.

  • TestWebKitAPI/CMakeLists.txt: Fix a typo. Change *testBaseName* with *testName*.
  • TestWebKitAPI/PlatformEfl.cmake: Additionally remove unnecessary SHARED_CORE and comment for SeccompFilters test.
3:59 AM WebKitGTK/Roadmap edited by philn@igalia.com
(diff)
3:41 AM Changeset in webkit [181852] by Carlos Garcia Campos
  • 4 edits in releases/WebKitGTK/webkit-2.8

Unreviewed. Update OptionsGTK.cmake and NEWS for 2.8.0 release.

.:

  • Source/cmake/OptionsGTK.cmake: Bump version numbers.

Source/WebKit2:

  • gtk/NEWS: Add release notes for 2.8.0.
3:05 AM Changeset in webkit [181851] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Use std::abs() in ClickCounter::currentClickCountForGdkButtonEvent()
https://bugs.webkit.org/show_bug.cgi?id=142964

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(ClickCounter::currentClickCountForGdkButtonEvent): Use the STL's std::abs()
instead of C's abs(). The templated nature of std::abs() ensures the proper
computation that matches the types of the passed-in values, and shuts down
a warning when compiling with Clang.

3:02 AM Changeset in webkit [181850] by zandobersek@gmail.com
  • 3 edits in trunk/Source/WebKit2

[GTK][WK2] webkitBackForwardListChanged() should operate on a Vector reference
https://bugs.webkit.org/show_bug.cgi?id=142963

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitBackForwardList.cpp:

(webkitBackForwardListChanged): This function only reads from the passed-in
Vector of removed items, so only a const lvalue reference to the Vector
is needed.

  • UIProcess/API/gtk/WebKitBackForwardListPrivate.h:
2:14 AM Changeset in webkit [181849] by yoav@yoav.ws
  • 4 edits in trunk/Source/WebCore

Refactor ImageLoader's setting of CachedImage
https://bugs.webkit.org/show_bug.cgi?id=142825

Reviewed by Chris Dumez.

No new tests, since there's no functional change.

setImage and setImageWithoutConsideringPendingLoadEvent were not called with new
CachedImages and were not used as originally intended. That resulted in some dead code,
and confusion when going over the code.
This patch renames these methods into equivalent clearImage* methods, and deletes resulting dead code.

  • html/HTMLObjectElement.cpp:

(WebCore::HTMLObjectElement::renderFallbackContent): Changed setImage call to clearImage.

  • loader/ImageLoader.cpp:

(WebCore::ImageLoader::clearImage):
(WebCore::ImageLoader::clearImageWithoutConsideringPendingLoadEvent):
(WebCore::ImageLoader::notifyFinished):
(WebCore::ImageLoader::elementDidMoveToNewDocument):
(WebCore::ImageLoader::setImage): Deleted.
(WebCore::ImageLoader::setImageWithoutConsideringPendingLoadEvent): Deleted.

  • loader/ImageLoader.h:
2:12 AM Changeset in webkit [181848] by Carlos Garcia Campos
  • 6 edits in releases/WebKitGTK/webkit-2.8

Merge r181847 - [GTK] Add a configure option to build without Redirected XComposite Window
https://bugs.webkit.org/show_bug.cgi?id=142865

Reviewed by Žan Doberšek.

.:

The Redirected XComposite Window was added to support some
features like GtkOverlay, but in cases where we don't need such
features, it's more efficient to use the XID of the WebKitWebView
window as the native surface handle for the accelerated
compositing. This patch adds USE_REDIRECTED_XCOMPOSITE_WINDOW,
that is enabled by default for X11 target when OpenGL is enabled.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit2:

Use USE(REDIRECTED_XCOMPOSITE_WINDOW) instead of
USE(TEXTURE_MAPPER_GL) && PLATFORM(X11).

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseRealize): Use the XID of the WebKitWebView
window as native surface handle when REDIRECTED_XCOMPOSITE_WINDOW
is disabled.
(webkitWebViewRenderAcceleratedCompositingResults):
(resizeWebKitWebViewBaseFromAllocation):
(webkitWebViewBaseEnterAcceleratedCompositingMode):
(webkitWebViewBaseExitAcceleratedCompositingMode):

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:
  • UIProcess/gtk/RedirectedXCompositeWindow.h:
1:06 AM Changeset in webkit [181847] by Carlos Garcia Campos
  • 6 edits in trunk

[GTK] Add a configure option to build without Redirected XComposite Window
https://bugs.webkit.org/show_bug.cgi?id=142865

Reviewed by Žan Doberšek.

.:

The Redirected XComposite Window was added to support some
features like GtkOverlay, but in cases where we don't need such
features, it's more efficient to use the XID of the WebKitWebView
window as the native surface handle for the accelerated
compositing. This patch adds USE_REDIRECTED_XCOMPOSITE_WINDOW,
that is enabled by default for X11 target when OpenGL is enabled.

  • Source/cmake/OptionsGTK.cmake:

Source/WebKit2:

Use USE(REDIRECTED_XCOMPOSITE_WINDOW) instead of
USE(TEXTURE_MAPPER_GL) && PLATFORM(X11).

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseRealize): Use the XID of the WebKitWebView
window as native surface handle when REDIRECTED_XCOMPOSITE_WINDOW
is disabled.
(webkitWebViewRenderAcceleratedCompositingResults):
(resizeWebKitWebViewBaseFromAllocation):
(webkitWebViewBaseEnterAcceleratedCompositingMode):
(webkitWebViewBaseExitAcceleratedCompositingMode):

  • UIProcess/gtk/RedirectedXCompositeWindow.cpp:
  • UIProcess/gtk/RedirectedXCompositeWindow.h:

Mar 22, 2015:

11:58 PM Changeset in webkit [181846] by ap@apple.com
  • 2 edits in trunk/Source/WebKit/mac

Build fix.

  • WebView/WebView.mm: (-[WebView _showPlaybackTargetPicker:hasVideo:]):
10:04 PM Changeset in webkit [181845] by benjamin@webkit.org
  • 15 edits
    4 adds in trunk

CSS Selectors: fix attribute case-insensitive matching of Contain and List
https://bugs.webkit.org/show_bug.cgi?id=142932

Reviewed by Darin Adler.

Source/WebCore:

Fix the last two attribute selectors that were using full case-insensitive
match:

-Contain ([foo*=bar]).
-List (foo~=bar]).

Tests: fast/selectors/attribute-contains-value-matching-is-ascii-case-insensitive.html

fast/selectors/attribute-list-value-matching-is-ascii-case-insensitive.html

  • css/SelectorChecker.cpp:

(WebCore::attributeValueMatches):

  • cssjit/SelectorCompiler.cpp:

(WebCore::SelectorCompiler::attributeValueContains):
(WebCore::SelectorCompiler::attributeValueSpaceSeparetedListContains):

Source/WTF:

Add some utility functions to the string classes to find substrings
using ASCII case-insensitive comparisons.

  • wtf/text/AtomicString.h:

(WTF::AtomicString::contains):
Add the light version that only lock one register.

(WTF::AtomicString::containsIgnoringASCIICase):
(WTF::AtomicString::findIgnoringASCIICase):

  • wtf/text/StringCommon.h:

(WTF::findIgnoringASCIICase):
This is the common implementation used by StringView and StringImpl.

  • wtf/text/StringImpl.cpp:

(WTF::StringImpl::findIgnoringASCIICase):

  • wtf/text/StringImpl.h:
  • wtf/text/StringView.cpp:

(WTF::StringView::containsIgnoringASCIICase):
(WTF::StringView::findIgnoringASCIICase):

  • wtf/text/StringView.h:
  • wtf/text/WTFString.h:

(WTF::String::findIgnoringASCIICase):
(WTF::String::contains):
(WTF::String::containsIgnoringASCIICase):

Tools:

Add tests for the new features and fix some existing tests using the
stringFromUTF8() utility recently added by Dhi.

  • TestWebKitAPI/Tests/WTF/StringImpl.cpp:

(TestWebKitAPI::stringFromUTF8):

  • TestWebKitAPI/Tests/WTF/StringView.cpp:

LayoutTests:

  • fast/selectors/attribute-contains-value-matching-is-ascii-case-insensitive-expected.txt: Added.
  • fast/selectors/attribute-contains-value-matching-is-ascii-case-insensitive.html: Added.
  • fast/selectors/attribute-list-value-matching-is-ascii-case-insensitive-expected.txt: Added.
  • fast/selectors/attribute-list-value-matching-is-ascii-case-insensitive.html: Added.
10:02 PM Changeset in webkit [181844] by commit-queue@webkit.org
  • 35 edits in trunk/Source/WebInspectorUI

Web Inspector: Adopt ES6 Class Syntax for all Controller Objects
https://bugs.webkit.org/show_bug.cgi?id=142890

Patch by Matt Baker <Matt Baker> on 2015-03-22
Reviewed by Joseph Pecoraro.

  • Convert all UserInterface/Controllers objects to classes
  • Convert constructor functions to constructor methods
  • Convert "constructor.method" to class static methods where possible
  • Convert all methods to method syntax, eliminate commas between methods
  • Convert all superclass calls in classes to use "super"
  • Removed FIXME from WebInspector.Object subclasses, added calls to super.
  • Fixed strict mode issues now that classes enforce strict mode (see below).
  • Tools/PrettyPrinting/Formatter.js:
  • Tools/PrettyPrinting/FormatterContentBuilder.js:

Updated to match corresponding files in UserInterface/Controllers.

  • UserInterface/Controllers/*.js:

Many files modified mostly mechanically (regex find-replace).

  • UserInterface/Controllers/CodeMirrorCompletionController.js:
  • UserInterface/Controllers/FormatterContentBuilder.js:

Replaced const usage with var. Use of const is prohibited in strict mode, which is implicit within a class.

  • UserInterface/Controllers/CodeMirrorTokenTrackingController.js:
  • UserInterface/Controllers/DOMTreeManager.js:

Moved function declarations out of if statements. Strict mode does not allow function declarations in a lexically nested statement.

9:16 PM Feature Status created by benjamin@webkit.org
Bucnh of ideas for the status page.
8:41 PM Changeset in webkit [181843] by commit-queue@webkit.org
  • 2 edits in trunk/Tools

[GTK] install-dependencies should install orc
https://bugs.webkit.org/show_bug.cgi?id=142955

Patch by Michael Catanzaro <Michael Catanzaro> on 2015-03-22
Reviewed by Martin Robinson.

Install orc, needed by openwebrtc

  • gtk/install-dependencies:
7:47 PM Changeset in webkit [181842] by gyuyoung.kim@samsung.com
  • 2 edits in trunk/LayoutTests

[EFL] Update new flaky tests and remove duplicated failure test.

Unreviewed EFL gardening.

  • platform/efl/TestExpectations:

Remove duplicted attachment tests, and add new flaky tests regarding svg clip-path, pattern scale.

7:18 PM Changeset in webkit [181841] by fpizlo@apple.com
  • 5 edits
    1 delete in trunk/Source/JavaScriptCore

Remove DFG::ValueRecoveryOverride; it's been dead since we removed forward speculations
https://bugs.webkit.org/show_bug.cgi?id=142956

Rubber stamped by Gyuyoung Kim.

Just removing dead code.

  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • dfg/DFGOSRExit.h:
  • dfg/DFGOSRExitCompiler.cpp:
  • dfg/DFGValueRecoveryOverride.h: Removed.
7:04 PM Changeset in webkit [181840] by benjamin@webkit.org
  • 4 edits in trunk

Detect when url filter pattern with groups match the empty string
https://bugs.webkit.org/show_bug.cgi?id=142930

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-03-22
Reviewed by Sam Weinig.

Source/WebCore:

The previous test was only accounting for simple atoms. This patch extends
it to groups.

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::Term::quantify):
(WebCore::ContentExtensions::Term::matchesAtLeastOneCharacter):
(WebCore::ContentExtensions::GraphBuilder::finalize):
(WebCore::ContentExtensions::Term::quantifier): Deleted.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:
6:28 PM Changeset in webkit [181839] by gyuyoung.kim@samsung.com
  • 2 edits in trunk/LayoutTests

[EFL] Unreviewed EFL gradening on 23th Mar.

Skip attachment tests, unskip passing tests related with writing, webaudio.
Add new flaky tests.

  • platform/efl/TestExpectations:
6:15 PM WebKitGTK/Dependencies edited by Michael Catanzaro
typo fix (diff)
6:11 PM WebKitGTK/Dependencies edited by Michael Catanzaro
Add license warning for gnutls, since LGPLv3+ patent giveaway is … (diff)
6:08 PM Changeset in webkit [181838] by eric.carlson@apple.com
  • 20 edits
    2 adds in trunk/Source

[Mac] Enable WIRELESS_PLAYBACK_TARGET for WK1
https://bugs.webkit.org/show_bug.cgi?id=142940

Reviewed by Sam Weinig.

Source/WebCore:

  • dom/Document.cpp:

(WebCore::Document::didChoosePlaybackTarget): const-ify the didChoosePlaybackTarget argument.

  • dom/Document.h:
  • html/HTMLMediaSession.cpp:

(WebCore::HTMLMediaSession::didChoosePlaybackTarget): Ditto.

  • html/HTMLMediaSession.h:
  • page/Page.cpp:

(WebCore::Page::didChoosePlaybackTarget): Ditto.

  • page/Page.h:
  • platform/audio/MediaSession.h:
  • platform/graphics/MediaPlaybackTargetPickerClient.h:
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm:

(WebCore::MediaPlaybackTargetPickerMac::devicePicker): Ditto.

Source/WebKit/mac:

  • WebCoreSupport/WebChromeClient.h:
  • WebCoreSupport/WebChromeClient.mm:

(WebChromeClient::showPlaybackTargetPicker): New.
(WebChromeClient::startingMonitoringPlaybackTargets): New.
(WebChromeClient::stopMonitoringPlaybackTargets): New.

  • WebView/WebView.mm:

(-[WebView _close]): Invalidate and free the target picker.
(-[WebView _devicePicker]): New.
(-[WebView _showPlaybackTargetPicker:hasVideo:]): New.
(-[WebView _startingMonitoringPlaybackTargets]): New.
(-[WebView _stopMonitoringPlaybackTargets]): New.

  • WebView/WebMediaPlaybackTargetPicker.h:
  • WebView/WebMediaPlaybackTargetPicker.mm:

(WebMediaPlaybackTargetPicker::create): New.
(WebMediaPlaybackTargetPicker::WebMediaPlaybackTargetPicker): New.
(WebMediaPlaybackTargetPicker::showPlaybackTargetPicker): New.
(WebMediaPlaybackTargetPicker::startingMonitoringPlaybackTargets): New.
(WebMediaPlaybackTargetPicker::stopMonitoringPlaybackTargets): New.
(WebMediaPlaybackTargetPicker::didChoosePlaybackTarget): New.
(WebMediaPlaybackTargetPicker::externalOutputDeviceAvailableDidChange): New.
(WebMediaPlaybackTargetPicker::invalidate): New.
(WebMediaPlaybackTargetPicker::targetPicker): New.

  • WebView/WebViewData.h:

(WebMediaPlaybackTargetPicker::~WebMediaPlaybackTargetPicker):

  • WebView/WebViewData.mm:
  • WebView/WebViewInternal.h:

Source/WebKit2:

  • WebProcess/WebPage/mac/WebPageMac.mm:

(WebKit::WebPage::playbackTargetSelected): Argument to didChoosePlaybackTarget is now const.

3:50 PM Changeset in webkit [181837] by andersca@apple.com
  • 14 edits in trunk

_WKWebsiteDataStore should clear WebSQL databases
https://bugs.webkit.org/show_bug.cgi?id=142947
Source/WebCore:

Reviewed by Sam Weinig.

  • Modules/webdatabase/DatabaseTracker.cpp:

(WebCore::DatabaseTracker::trackerWithDatabasePath):
Add a hack so we can get at a tracker from the UI process.

(WebCore::DatabaseTracker::deleteDatabasesModifiedSince):
New function that deletes all databases modified after a given time.

  • Modules/webdatabase/DatabaseTracker.h:

Add new members and export the ones we want to call from WebKit2.

  • Modules/webdatabase/OriginLock.h:

Export the destructor.

Source/WebKit2:

rdar://problem/20242174

Reviewed by Sam Weinig.

  • Shared/WebsiteData/WebsiteDataTypes.h:

Add WebsiteDataTypeWebSQLDatabases.

  • UIProcess/API/Cocoa/APIWebsiteDataStoreCocoa.mm:

(API::WebsiteDataStore::defaultDataStoreConfiguration):
Initialize configuration.webSQLDatabaseDirectory.

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.h:

Add WKWebsiteDataTypeWebSQLDatabases.

  • UIProcess/API/Cocoa/_WKWebsiteDataRecord.mm:

(dataTypesToString):
Handle WKWebsiteDataTypeWebSQLDatabases.

  • UIProcess/API/Cocoa/_WKWebsiteDataRecordInternal.h:

(WebKit::toWebsiteDataTypes):
(WebKit::toWKWebsiteDataTypes):
Handle WKWebsiteDataTypeWebSQLDatabases and WebsiteDataTypes::WebsiteDataTypeWebSQLDatabases.

  • UIProcess/WebsiteData/WebsiteDataStore.cpp:

(WebKit::WebsiteDataStore::WebsiteDataStore):
Initialize m_webSQLDatabaseDirectory and add a queue member variable.

(WebKit::WebsiteDataStore::fetchData):
Fetch database origins.

(WebKit::WebsiteDataStore::removeData):
Remove databases.

  • UIProcess/WebsiteData/WebsiteDataStore.h:

Add new members.

Tools:

Reviewed by Sam Weinig.

Add a variable that keeps track of the types of data we want to operate on, for easier debugging.

  • MiniBrowser/mac/WK2BrowserWindowController.m:

(-[WK2BrowserWindowController fetchWebsiteData:]):
(-[WK2BrowserWindowController fetchAndClearWebsiteData:]):
(-[WK2BrowserWindowController clearWebsiteData:]):

2:44 PM Changeset in webkit [181836] by mitz@apple.com
  • 11 edits in trunk/Source/WebKit2

[iOS] Expose WebPageProxy::setInitialFocus as SPI
https://bugs.webkit.org/show_bug.cgi?id=142951

Reviewed by Anders Carlsson.

  • UIProcess/API/Cocoa/WKWebView.mm:

(-[WKWebView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]): New SPI.
Just calls through to WKWebContentView, but allows a nil completion handler.

  • UIProcess/API/Cocoa/WKWebViewPrivate.h:
  • UIProcess/API/mac/WKView.mm:

(-[WKView becomeFirstResponder]): Pass an empty lambda for the new callback parameter to
WebPageProxy::setInitialFocus.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::setInitialFocus): Added a void callback parameter and made sure to
call it.

  • UIProcess/WebPageProxy.h:
  • UIProcess/ios/WKContentViewInteraction.h:
  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _becomeFirstResponderWithSelectionMovingForward:completionHandler:]):
Added. Calls WebPageProxy::setInitialFocus, and once that completes, checks if anything was
focused and if so, becomes first responder, then calls the completion handler.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::setInitialFocus): Added a callbackID parameter, and made sure to send the
callback message. Added a temporary change of m_userIsInteracting to true, so that the UI
process won’t ignore any StartAssistingNode message resulting from the focus change.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in: Added a callbackID parameter to SetInitialFocus.
12:35 PM Changeset in webkit [181835] by fpizlo@apple.com
  • 4 edits in trunk/Source/JavaScriptCore

DFG OSR exit shouldn't assume that the frame count for exit is greater than the frame count in DFG
https://bugs.webkit.org/show_bug.cgi?id=142948

Reviewed by Sam Weinig.

It's necessary to ensure that the stack pointer accounts for the extent of our stack usage
since a signal may clobber the area below the stack pointer. When the DFG is executing,
the stack pointer accounts for the DFG's worst-case stack usage. When we OSR exit back to
baseline, we will use a different amount of stack. This is because baseline is a different
compiler. It will make different decisions. So it will use a different amount of stack.

This gets tricky when we are in the process of doing an OSR exit, because we are sort of
incrementally transforming the stack from how it looked in the DFG to how it will look in
baseline. The most conservative approach would be to set the stack pointer to the max of
DFG and baseline.

When this code was written, a reckless assumption was made: that the stack usage in
baseline is always at least as large as the stack usage in DFG. Based on this incorrect
assumption, the code first adjusts the stack pointer to account for the baseline stack
usage. This sort of usually works, because usually baseline does happen to use more stack.
But that's not an invariant. Nobody guarantees this. We will never make any changes that
would make this be guaranteed, because that would be antithetical to how optimizing
compilers work. The DFG should be allowed to use however much stack it decides that it
should use in order to get good performance, and it shouldn't try to guarantee that it
always uses less stack than baseline.

As such, we must always assume that the frame size for DFG execution (i.e.
frameRegisterCount) and the frame size in baseline once we exit (i.e.
requiredRegisterCountForExit) are two independent quantities and they have no
relationship.

Fortunately, though, this code can be made correct by just moving the stack adjustment to
just before we do conversions. This is because we have since changed the OSR exit
algorithm to first lift up all state from the DFG state into a scratch buffer, and then to
drop it out of the scratch buffer and into the stack according to the baseline layout. The
point just before conversions is the point where we have finished reading the DFG frame
and will not read it anymore, and we haven't started writing the baseline frame. So, at
this point it is safe to set the stack pointer to account for the frame size at exit.

This is benign because baseline happens to create larger frames than DFG.

  • dfg/DFGOSRExitCompiler32_64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompiler64.cpp:

(JSC::DFG::OSRExitCompiler::compileExit):

  • dfg/DFGOSRExitCompilerCommon.cpp:

(JSC::DFG::adjustAndJumpToTarget):

12:09 PM Changeset in webkit [181834] by fpizlo@apple.com
  • 2 edits in trunk/Source/JavaScriptCore

Shorten the number of iterations to 10,000 since that's enough to test all tiers.

Rubber stamped by Sam Weinig.

  • tests/stress/equals-masquerader.js:
11:25 AM Changeset in webkit [181833] by fpizlo@apple.com
  • 11 edits in trunk/Source/JavaScriptCore

tests/stress/*tdz* tests do 10x more iterations than necessary
https://bugs.webkit.org/show_bug.cgi?id=142946

Reviewed by Ryosuke Niwa.

The stress test harness runs all of these tests in various configurations. This includes
no-cjit, which has tier-up heuristics locked in such a way that 10,000 iterations is
enough to get to the highest tier. The only exceptions are very large functions or
functions that have some reoptimizations. That happens rarely, and when it does happen,
usually 20,000 iterations is enough.

Therefore, these tests use 10x too many iterations. This is bad, since these tests
allocate on each iteration, and so they run very slowly in debug mode.

  • tests/stress/class-syntax-no-loop-tdz.js:
  • tests/stress/class-syntax-no-tdz-in-catch.js:
  • tests/stress/class-syntax-no-tdz-in-conditional.js:
  • tests/stress/class-syntax-no-tdz-in-loop-no-inline-super.js:
  • tests/stress/class-syntax-no-tdz-in-loop.js:
  • tests/stress/class-syntax-no-tdz.js:
  • tests/stress/class-syntax-tdz-in-catch.js:
  • tests/stress/class-syntax-tdz-in-conditional.js:
  • tests/stress/class-syntax-tdz-in-loop.js:
  • tests/stress/class-syntax-tdz.js:

Mar 21, 2015:

9:55 PM Changeset in webkit [181832] by dino@apple.com
  • 37 edits
    1 copy
    4 adds in trunk

Remove the prefix for CSS Transforms
https://bugs.webkit.org/show_bug.cgi?id=142927
<rdar://problem/11568151>

Reviewed by Simon Fraser.

Source/WebCore:

Support the bare form of:

  • transform
  • transform-style
  • transform-origin
  • perspective
  • perspective-origin

For transform-style, we also still differentiate the prefixed property
because we may want to use that as an indicator of legacy content.

This is mostly a find and replace, but with some related naming
changes. The DOM interface for WebKitCSSTransformValue remains
unchanged.

Tests: transforms/2d/transform-2d-prefixed.html

transforms/3d/general/prefixed-3dtransform-values.html

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::propertyChangeMayRepaintNonDescendants):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue):
(WebCore::isKeywordPropertyID):
(WebCore::parseTranslateTransformValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseTransformOrigin):
(WebCore::CSSParser::parsePerspectiveOrigin):

  • css/CSSPropertyNames.in:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue):
(WebCore::StyleProperties::asText):

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::setMatrixValue):

  • html/track/VTTCue.cpp:

(WebCore::VTTCueBox::applyCSSProperties):

  • page/animation/AnimationController.cpp:

(WebCore::AnimationControllerPrivate::computeExtentOfAnimation):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::computeExtentOfTransformAnimation):

  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::computeExtentOfTransformAnimation):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation):
(WebCore::KeyframeAnimation::validateTransformFunctionList):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::validateTransformOperations):

  • platform/graphics/GraphicsLayerClient.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::propertyIdToString):
(WebCore::GraphicsLayerCA::moveOrCopyAnimations):
(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::isRunningTransformAnimation):
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::addAnimation):

  • platform/graphics/texmap/TextureMapperAnimation.cpp:

(WebCore::TextureMapperAnimation::applyInternal):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::syncAnimations):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation):
(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms):
(WebCore::CoordinatedGraphicsLayer::addAnimation):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::startTransition):
(WebCore::RenderLayerBacking::graphicsLayerToCSSProperty):
(WebCore::RenderLayerBacking::cssToGraphicsLayerProperty):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
(WebCore::RenderLayerCompositor::isRunningTransformAnimation):

  • svg/SVGElement.cpp:

(WebCore::populateAttributeNameToCSSPropertyIDMap):

Source/WebKit2:

Rename AnimatedPropertyWebkitTransform to AnimatedPropertyTransform.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:

(IPC::ArgumentCoder<TextureMapperAnimation>::encode):

LayoutTests:

Convert the helper functions for transforms to use the unprefixed
form, and copy some tests to make sure the prefixed form still works.

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/resources/property-names.js:
  • svg/css/getComputedStyle-basic-expected.txt:
  • transforms/2d/computed-style-origin-expected.txt:
  • transforms/2d/computed-style-origin.html:
  • transforms/2d/resources/prefixed-transform-test-utils.js: Copied from LayoutTests/transforms/2d/resources/transform-test-utils.js.

(floatingPointEqual):
(compareMatrices):
(testTransforms):

  • transforms/2d/resources/transform-test-utils.js:

(testTransforms):

  • transforms/2d/transform-2d-prefixed-expected.txt: Added.
  • transforms/2d/transform-2d-prefixed.html: Added.
  • transforms/3d/general/prefixed-3dtransform-values-expected.txt: Added.
  • transforms/3d/general/prefixed-3dtransform-values.html: Added.
  • transitions/transition-end-event-multiple-04-expected.txt:
  • transitions/transition-end-event-multiple-04.html:
  • transitions/transition-end-event-transform-expected.txt:
  • transitions/transition-end-event-transform.html:
9:08 PM Changeset in webkit [181831] by commit-queue@webkit.org
  • 11 edits in trunk

Fix a typo in Parser error message
https://bugs.webkit.org/show_bug.cgi?id=142942

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-21
Reviewed by Alexey Proskuryakov.

Source/JavaScriptCore:

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::emitSlow_op_resolve_scope):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emitSlow_op_resolve_scope):

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseClass):
Fix a common identifier typo.

LayoutTests:

  • js/class-syntax-declaration-expected.txt:
  • js/class-syntax-expression-expected.txt:
  • js/class-syntax-super-expected.txt:
  • js/script-tests/class-syntax-declaration.js:
  • js/script-tests/class-syntax-expression.js:
  • js/script-tests/class-syntax-super.js:
8:47 PM Changeset in webkit [181830] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Try to get debug bots green.

  • platform/win/TestExpectations:
8:14 PM Changeset in webkit [181829] by Joseph Pecoraro
  • 7 edits in trunk

Computed Property names should allow only AssignmentExpressions not any Expression
https://bugs.webkit.org/show_bug.cgi?id=142902

Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseProperty):
Limit computed expressions to just assignment expressions instead of
any expression (which allowed comma expressions).

LayoutTests:

  • js/basic-computed-property-name-expected.txt:
  • js/object-literal-computed-methods-expected.txt:
  • js/script-tests/basic-computed-property-name.js:

(runTest.runTest.runTest.runTest.runTest.runTest.runTest.runTestThrow):

  • js/script-tests/object-literal-computed-methods.js:

Test that comma expressions are not allowed in computed property/method names.

5:07 PM Changeset in webkit [181828] by akling@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

Make UnlinkedFunctionExecutable fit in a 128-byte cell.
<https://webkit.org/b/142939>

Reviewed by Mark Hahnenberg.

Re-arrange the members of UnlinkedFunctionExecutable so it can fit inside
a 128-byte heap cell instead of requiring a 256-byte one.

Threw in a static_assert to catch anyone pushing it over the limit again.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::UnlinkedFunctionExecutable):

  • bytecode/UnlinkedCodeBlock.h:

(JSC::UnlinkedFunctionExecutable::functionMode):

12:34 PM Changeset in webkit [181827] by benjamin@webkit.org
  • 1 edit
    2 adds in trunk/LayoutTests

Import the blink test fast/css/currentcolor-strict-mode.html
https://bugs.webkit.org/show_bug.cgi?id=142838

Patch by Benjamin Poulain <bpoulain@apple.com> on 2015-03-21
Reviewed by Darin Adler.

  • fast/css/currentcolor-strict-mode-expected.html: Added.
  • fast/css/currentcolor-strict-mode.html: Added.
8:48 AM Changeset in webkit [181826] by Csaba Osztrogonác
  • 2 edits in trunk/Source/WebKit2

[EFL][GTK] Make WebKit2's generate-forwarding-headers.pl less verbose
https://bugs.webkit.org/show_bug.cgi?id=142908

Reviewed by Žan Doberšek.

  • Scripts/generate-forwarding-headers.pl:

(createForwardingHeadersForFramework):

12:37 AM Changeset in webkit [181825] by commit-queue@webkit.org
  • 37 edits
    5 deletes in trunk

Unreviewed, rolling out r181824.
https://bugs.webkit.org/show_bug.cgi?id=142935

Broke Windows build (Requested by ap on #webkit).

Reverted changeset:

"Remove the prefix for CSS Transforms"
https://bugs.webkit.org/show_bug.cgi?id=142927
http://trac.webkit.org/changeset/181824

Mar 20, 2015:

11:54 PM Changeset in webkit [181824] by dino@apple.com
  • 37 edits
    1 copy
    4 adds in trunk

Remove the prefix for CSS Transforms
https://bugs.webkit.org/show_bug.cgi?id=142927
<rdar://problem/11568151>

Reviewed by Simon Fraser.

Source/WebCore:

Support the bare form of:

  • transform
  • transform-style
  • transform-origin
  • perspective
  • perspective-origin

For transform-style, we also still differentiate the prefixed property
because we may want to use that as an indicator of legacy content.

This is mostly a find and replace, but with some related naming
changes. The DOM interface for WebKitCSSTransformValue remains
unchanged.

Tests: transforms/2d/transform-2d-prefixed.html

transforms/3d/general/prefixed-3dtransform-values.html

  • bindings/js/JSCSSStyleDeclarationCustom.cpp:

(WebCore::propertyChangeMayRepaintNonDescendants):

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::isLayoutDependent):
(WebCore::ComputedStyleExtractor::propertyValue):

  • css/CSSParser.cpp:

(WebCore::isValidKeywordPropertyAndValue):
(WebCore::isKeywordPropertyID):
(WebCore::parseTranslateTransformValue):
(WebCore::CSSParser::parseValue):
(WebCore::CSSParser::parseTransformOrigin):
(WebCore::CSSParser::parsePerspectiveOrigin):

  • css/CSSPropertyNames.in:
  • css/StyleProperties.cpp:

(WebCore::StyleProperties::getPropertyValue):
(WebCore::StyleProperties::asText):

  • css/WebKitCSSMatrix.cpp:

(WebCore::WebKitCSSMatrix::setMatrixValue):

  • html/track/VTTCue.cpp:

(WebCore::VTTCueBox::applyCSSProperties):

  • page/animation/AnimationController.cpp:

(WebCore::AnimationControllerPrivate::computeExtentOfAnimation):

  • page/animation/CSSPropertyAnimation.cpp:

(WebCore::PropertyWrapperAcceleratedTransform::PropertyWrapperAcceleratedTransform):
(WebCore::CSSPropertyAnimationWrapperMap::CSSPropertyAnimationWrapperMap):

  • page/animation/CompositeAnimation.cpp:

(WebCore::CompositeAnimation::computeExtentOfTransformAnimation):

  • page/animation/ImplicitAnimation.cpp:

(WebCore::ImplicitAnimation::computeExtentOfTransformAnimation):

  • page/animation/KeyframeAnimation.cpp:

(WebCore::KeyframeAnimation::computeExtentOfTransformAnimation):
(WebCore::KeyframeAnimation::validateTransformFunctionList):

  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::validateTransformOperations):

  • platform/graphics/GraphicsLayerClient.h:
  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::propertyIdToString):
(WebCore::GraphicsLayerCA::moveOrCopyAnimations):
(WebCore::GraphicsLayerCA::addAnimation):
(WebCore::GraphicsLayerCA::isRunningTransformAnimation):
(WebCore::GraphicsLayerCA::createAnimationFromKeyframes):
(WebCore::GraphicsLayerCA::createTransformAnimationsFromKeyframes):

  • platform/graphics/texmap/GraphicsLayerTextureMapper.cpp:

(WebCore::GraphicsLayerTextureMapper::addAnimation):

  • platform/graphics/texmap/TextureMapperAnimation.cpp:

(WebCore::TextureMapperAnimation::applyInternal):

  • platform/graphics/texmap/TextureMapperLayer.cpp:

(WebCore::TextureMapperLayer::syncAnimations):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHasActiveTransformAnimation):
(WebCore::CoordinatedGraphicsLayer::selfOrAncestorHaveNonAffineTransforms):
(WebCore::CoordinatedGraphicsLayer::addAnimation):

  • rendering/RenderLayerBacking.cpp:

(WebCore::RenderLayerBacking::updateGeometry):
(WebCore::RenderLayerBacking::startAnimation):
(WebCore::RenderLayerBacking::startTransition):
(WebCore::RenderLayerBacking::graphicsLayerToCSSProperty):
(WebCore::RenderLayerBacking::cssToGraphicsLayerProperty):

  • rendering/RenderLayerCompositor.cpp:

(WebCore::RenderLayerCompositor::requiresCompositingForAnimation):
(WebCore::RenderLayerCompositor::isRunningTransformAnimation):

  • svg/SVGElement.cpp:

(WebCore::populateAttributeNameToCSSPropertyIDMap):

Source/WebKit2:

Rename AnimatedPropertyWebkitTransform to AnimatedPropertyTransform.

  • Shared/CoordinatedGraphics/CoordinatedGraphicsArgumentCoders.cpp:

(IPC::ArgumentCoder<TextureMapperAnimation>::encode):

LayoutTests:

Convert the helper functions for transforms to use the unprefixed
form, and copy some tests to make sure the prefixed form still works.

  • fast/css/getComputedStyle/computed-style-expected.txt:
  • fast/css/getComputedStyle/computed-style-without-renderer-expected.txt:
  • fast/css/getComputedStyle/resources/property-names.js:
  • svg/css/getComputedStyle-basic-expected.txt:
  • transforms/2d/computed-style-origin-expected.txt:
  • transforms/2d/computed-style-origin.html:
  • transforms/2d/resources/prefixed-transform-test-utils.js: Copied from LayoutTests/transforms/2d/resources/transform-test-utils.js.

(floatingPointEqual):
(compareMatrices):
(testTransforms):

  • transforms/2d/resources/transform-test-utils.js:

(testTransforms):

  • transforms/2d/transform-2d-prefixed-expected.txt: Added.
  • transforms/2d/transform-2d-prefixed.html: Added.
  • transforms/3d/general/prefixed-3dtransform-values-expected.txt: Added.
  • transforms/3d/general/prefixed-3dtransform-values.html: Added.
  • transitions/transition-end-event-multiple-04-expected.txt:
  • transitions/transition-end-event-multiple-04.html:
  • transitions/transition-end-event-transform-expected.txt:
  • transitions/transition-end-event-transform.html:
9:20 PM Changeset in webkit [181823] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Additional debug assertion documentation.

  • platform/win/TestExpectations:
8:09 PM Changeset in webkit [181822] by Brent Fulgham
  • 4 edits in branches/safari-600.5-branch/LayoutTests

Test gardening. Results are as expected based on code changes
on this branch.

  • css3/blending/blend-mode-blended-element-overlapping-composited-sibling-should-have-compositing-layer-expected.txt:
  • css3/blending/blend-mode-parent-of-composited-blended-has-layer-expected.txt:
  • css3/blending/blend-mode-with-composited-descendant-should-have-layer-expected.txt:
7:02 PM Changeset in webkit [181821] by mhahnenb@gmail.com
  • 3 edits
    1 add in trunk

GCTimer should know keep track of nested GC phases
https://bugs.webkit.org/show_bug.cgi?id=142675

Reviewed by Darin Adler.

Source/JavaScriptCore:

This improves the GC phase timing output in Heap.cpp by linking
phases nested inside other phases together, allowing tools
to compute how much time we're spending in various nested phases.

  • heap/Heap.cpp:

Tools:

Adds a tool to aid in parsing the GC phase timing output into a
tree-like structure based on the parent-child relationships
of nested GC phases.

  • Scripts/parse-gc-phase-timings: Added.

(Timing):
(Timing.init):
(Timing.unicode):
(Timing.str):
(Timing.repr):
(parse_input):
(print_timing_node):
(print_timing_tree):
(link_parents):
(main):

5:07 PM Changeset in webkit [181820] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] More debug assertions. Almost there!

  • platform/win/TestExpectations:
4:38 PM Changeset in webkit [181819] by Nikita Vasilyev
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: Fast typing lags in the Styles sidebar or Console
https://bugs.webkit.org/show_bug.cgi?id=142919

Asynchronous autocomplete causes a race condition in CodeMirror,
which results in skipped characters in while typing. Completing immediately
fixes the issues.

Reviewed by Timothy Hatcher.

  • UserInterface/Controllers/CodeMirrorCompletionController.js:

(WebInspector.CodeMirrorCompletionController.prototype.hideCompletions):
(WebInspector.CodeMirrorCompletionController.prototype._completeAtCurrentPosition):
(WebInspector.CodeMirrorCompletionController.prototype.):

4:37 PM Changeset in webkit [181818] by ggaren@apple.com
  • 7 edits in trunk/Source/JavaScriptCore

FunctionBodyNode should known where its parameters started
https://bugs.webkit.org/show_bug.cgi?id=142926

Reviewed by Ryosuke Niwa.

This will allow us to re-parse parameters instead of keeping the
parameters piece of the AST around forever.

I also took the opportunity to initialize most FunctionBodyNode data
members at construction time, to help clarify that they are set right.

  • parser/ASTBuilder.h:

(JSC::ASTBuilder::createFunctionExpr): No need to pass
functionKeywordStart here; we now provide it at FunctionBodyNode
creation time.

(JSC::ASTBuilder::createFunctionBody): Require everything we need at
construction time, including the start of our parameters.

(JSC::ASTBuilder::createGetterOrSetterProperty):
(JSC::ASTBuilder::createFuncDeclStatement): No need to pass
functionKeywordStart here; we now provide it at FunctionBodyNode
creation time.

(JSC::ASTBuilder::setFunctionNameStart): Deleted.

  • parser/Nodes.cpp:

(JSC::FunctionBodyNode::FunctionBodyNode): Initialize everything at
construction time.

  • parser/Nodes.h: Added a field for the location of our parameters.
  • parser/Parser.cpp:

(JSC::Parser<LexerType>::parseFunctionBody):
(JSC::Parser<LexerType>::parseFunctionInfo):
(JSC::Parser<LexerType>::parseFunctionDeclaration):
(JSC::Parser<LexerType>::parseClass):
(JSC::Parser<LexerType>::parsePropertyMethod):
(JSC::Parser<LexerType>::parseGetterSetter):
(JSC::Parser<LexerType>::parsePrimaryExpression):

  • parser/Parser.h: Refactored to match above interface changes.
  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::createFunctionExpr):
(JSC::SyntaxChecker::createFunctionBody):
(JSC::SyntaxChecker::createFuncDeclStatement):
(JSC::SyntaxChecker::createGetterOrSetterProperty): Refactored to match
above interface changes.

(JSC::SyntaxChecker::setFunctionNameStart): Deleted.

4:26 PM Changeset in webkit [181817] by fpizlo@apple.com
  • 5 edits
    2 adds in trunk/Source/JavaScriptCore

Observably effectful nodes in DFG IR should come last in their bytecode instruction (i.e. forExit section), except for Hint nodes
https://bugs.webkit.org/show_bug.cgi?id=142920

Reviewed by Oliver Hunt, Geoffrey Garen, and Mark Lam.

Observably effectful, n.: If we reexecute the bytecode instruction after this node has
executed, then something other than the bytecode instruction's specified outcome will
happen.

We almost never had observably effectful nodes except at the end of the bytecode
instruction. The exception is a lowered transitioning PutById:

PutStructure(@o, S1 -> S2)
PutByOffset(@o, @o, @v)

The PutStructure is observably effectful: if you try to reexecute the bytecode after
doing the PutStructure, then we'll most likely crash. The generic PutById handling means
first checking what the old structure of the object is; but if we reexecute, the old
structure will seem to be the new structure. But the property ensured by the new
structure hasn't been stored yet, so any attempt to load it or scan it will crash.

Intriguingly, however, none of the other operations involved in the PutById are
observably effectful. Consider this example:

PutByOffset(@o, @o, @v)
PutStructure(@o, S1 -> S2)

Note that the PutStructure node doesn't reallocate property storage; see further below
for an example that does that. Because no property storage is happening, we know that we
already had room for the new property. This means that the PutByOffset is no observable
until the PutStructure executes and "reveals" the property. Hence, PutByOffset is not
observably effectful.

Now consider this:

b: AllocatePropertyStorage(@o)
PutByOffset(@b, @o, @v)
PutStructure(@o, S1 -> S2)

Surprisingly, this is also safe, because the AllocatePropertyStorage is not observably
effectful. It *does* reallocate the property storage and the new property storage pointer
is stored into the object. But until the PutStructure occurs, the world will just think
that the reallocation didn't happen, in the sense that we'll think that the property
storage is using less memory than what we just allocated. That's harmless.

The AllocatePropertyStorage is safe in other ways, too. Even if we GC'd after the
AllocatePropertyStorage but before the PutByOffset (or before the PutStructure),
everything could be expected to be fine, so long as all of @o, @v and @b are on the
stack. If they are all on the stack, then the GC will leave the property storage alone
(so the extra memory we just allocated would be safe). The GC will not scan the part of
the property storage that contains @v, but that's fine, so long as @v is on the stack.

The better long-term solution is probably bug 142921.

But for now, this:

  • Fixes an object materialization bug, exemplified by the two tests, that previously crashed 100% of the time with FTL enabled and concurrent JIT disabled.


  • Allows us to remove the workaround introduced in r174856.
  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::handlePutById):

  • dfg/DFGConstantFoldingPhase.cpp:

(JSC::DFG::ConstantFoldingPhase::emitPutByOffset):

  • dfg/DFGFixupPhase.cpp:

(JSC::DFG::FixupPhase::insertCheck):
(JSC::DFG::FixupPhase::indexOfNode): Deleted.
(JSC::DFG::FixupPhase::indexOfFirstNodeOfExitOrigin): Deleted.

  • dfg/DFGInsertionSet.h:

(JSC::DFG::InsertionSet::insertOutOfOrder): Deleted.
(JSC::DFG::InsertionSet::insertOutOfOrderNode): Deleted.

  • tests/stress/materialize-past-butterfly-allocation.js: Added.

(bar):
(foo0):
(foo1):
(foo2):
(foo3):
(foo4):

  • tests/stress/materialize-past-put-structure.js: Added.

(foo):

4:09 PM Changeset in webkit [181816] by Chris Dumez
  • 3 edits in trunk/Source/WebKit2

[WK2] NetworkCache retrievals sometimes fail on browser startup
https://bugs.webkit.org/show_bug.cgi?id=142925
<rdar://problem/20245368>

Reviewed by Antti Koivisto.

NetworkCache retrievals sometimes fail on browser startup for resources
that are actually cached. The reason is that we are using a bloom filter
for performance reasons to avoid unnecessary disk I/O and this bloom
filter is populated on start up in a background thread by traversing the
cache files on disk. However, when restoring the tabs on start-up we
sometimes query this bloom filter before it is completely populated and
we thus fail to retrieve cached entries because we think they don't
exist and don't check the disk.

This patch adds an "isPopulatingContentsFilter" flag that is turned ON
on start up while we are populating the bloon filter. We then bypass
the bloom filter and send queries directly to disk on start up if this
flag is ON.

  • NetworkProcess/cache/NetworkCacheStorage.cpp:

(WebKit::NetworkCache::Storage::initialize):
(WebKit::NetworkCache::Storage::retrieve):
(WebKit::NetworkCache::Storage::dispatchPendingWriteOperations):
(WebKit::NetworkCache::Storage::dispatchHeaderWriteOperation):

  • NetworkProcess/cache/NetworkCacheStorage.h:

(WebKit::NetworkCache::Storage::cacheMayContain):

3:45 PM Changeset in webkit [181815] by Chris Dumez
  • 6 edits in trunk/Source/WebKit2

[WK2] Allow stale content when restoring the browser's session state
https://bugs.webkit.org/show_bug.cgi?id=142916
<rdar://problem/20243493>

Reviewed by Darin Adler.

Allow stale content when restoring the browser's session state
(restoring all tabs from previous session), e.g.

  • Via History > Reopen All windows from previous session on Safari
  • Happens on startup for MobileSafari

I have verified that using "Open in tabs" on a bookmarks folder
still does fresh loads (rdar://problem/8131355) as it is not using
the restoreFromSessionState() code path.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcessForReload):
(WebKit::WebPageProxy::reattachToWebProcessWithItem):
(WebKit::WebPageProxy::goForward):
(WebKit::WebPageProxy::goBack):
(WebKit::WebPageProxy::goToBackForwardItem):
(WebKit::WebPageProxy::restoreFromSessionState):

  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::goToBackForwardItem):

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:
2:35 PM Changeset in webkit [181814] by Yusuke Suzuki
  • 17 edits in trunk/Source

REGRESSION (r179429): Potential Use after free in JavaScriptCore`WTF::StringImpl::ref + 83
https://bugs.webkit.org/show_bug.cgi?id=142410

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Before this patch, added function JSValue::toPropertyKey returns PropertyName.
Since PropertyName doesn't have AtomicStringImpl ownership,
if Identifier is implicitly converted to PropertyName and Identifier is destructed,
PropertyName may refer freed AtomicStringImpl*.

This patch changes the result type of JSValue::toPropertyName from PropertyName to Identifier,
to keep AtomicStringImpl* ownership after the toPropertyName call is done.
And receive the result value as Identifier type to keep ownership in the caller side.

To catch the result of toPropertyKey as is, we catch the result of toPropertyName as auto.

However, now we don't need to have both Identifier and PropertyName.
So we'll merge PropertyName to Identifier in the subsequent patch.

  • dfg/DFGOperations.cpp:

(JSC::DFG::operationPutByValInternal):

  • jit/JITOperations.cpp:

(JSC::getByVal):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::getByVal):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.cpp:

(JSC::SLOW_PATH_DECL):

  • runtime/CommonSlowPaths.h:

(JSC::CommonSlowPaths::opIn):

  • runtime/JSCJSValue.h:
  • runtime/JSCJSValueInlines.h:

(JSC::JSValue::toPropertyKey):

  • runtime/ObjectConstructor.cpp:

(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorDefineProperty):

  • runtime/ObjectPrototype.cpp:

(JSC::objectProtoFuncPropertyIsEnumerable):

Source/WebCore:

The same issues are found in the existing code; PropertyName does not have ownership.
This patch rewrite the point that should have ownership to Identifier.

  • bindings/js/JSDOMWindowCustom.cpp:

(WebCore::JSDOMWindow::getOwnPropertySlotByIndex):
(WebCore::JSDOMWindow::putByIndex):

  • bindings/js/ReadableStreamJSSource.cpp:

(WebCore::getInternalSlotFromObject):

  • bindings/scripts/CodeGeneratorJS.pm:

(GenerateImplementation):

  • bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:

(WebCore::JSTestCustomNamedGetter::getOwnPropertySlotByIndex):

  • bindings/scripts/test/JS/JSTestEventTarget.cpp:

(WebCore::JSTestEventTarget::getOwnPropertySlotByIndex):

  • bindings/scripts/test/JS/JSTestInterface.cpp:

(WebCore::JSTestInterface::putByIndex):

2:32 PM Changeset in webkit [181813] by Simon Fraser
  • 3 edits in trunk/Source/WebCore

Log the slow-scrolling reasons (if any) on first commit of a ScrollingTreeFrameScrollingNodeMac
https://bugs.webkit.org/show_bug.cgi?id=142917

Reviewed by Beth Dakin.

The scrollperf test would fail to detect transitions between slow and fast scrolling
for new pages, because there was no logging when slow-scrolling scrolling tree was
torn down, and a new fast-scrolling tree constructed.

Fix by always logging the slow-scrolling reasons in the first update of the
ScrollingTreeFrameScrollingNodeMac, even when the slow-scrolling reasons haven't
changed.

  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h:
  • page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:

(WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac):
(WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):

2:23 PM Changeset in webkit [181812] by Beth Dakin
  • 2 edits in trunk/Source/WebKit2

[Immediate Actions] Should re-enable immediate actions for iBooks
https://bugs.webkit.org/show_bug.cgi?id=142915
-and corresponding-
rdar://problem/19585689

Reviewed by Tim Horton.

  • UIProcess/API/mac/WKView.mm:

(-[WKView initWithFrame:processPool:configuration:webView:]):

2:16 PM Changeset in webkit [181811] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Attempting to get EWS green.

  • platform/win/TestExpectations:
1:12 PM Changeset in webkit [181810] by ggaren@apple.com
  • 45 edits
    3 deletes in trunk

Function.prototype.toString should not decompile the AST
https://bugs.webkit.org/show_bug.cgi?id=142853

Reviewed by Sam Weinig.

Source/JavaScriptCore:

To recover the function parameter string, Function.prototype.toString
decompiles the function parameters from the AST. This is bad for a few
reasons:

(1) It requires us to keep pieces of the AST live forever. This is an
awkward design and a waste of memory.

(2) It doesn't match Firefox or Chrome (because it changes whitespace
and ES6 destructuring expressions).

(3) It doesn't scale to ES6 default argument parameters, which require
arbitrarily complex decompilation.

(4) It can counterfeit all the line numbers in a function (because
whitespace can include newlines).

(5) It's expensive, and we've seen cases where websites invoke
Function.prototype.toString a lot by accident.

The fix is to do what we do for the rest of the function: Just quote the
original source text.

Since this change inevitably changes some function stringification, I
took the opportunity to make our stringification match Firefox's and
Chrome's.

  • API/tests/testapi.c:

(assertEqualsAsUTF8String): Be more informative when this fails.

(main): Updated to match new stringification rules.

  • bytecode/UnlinkedCodeBlock.cpp:

(JSC::UnlinkedFunctionExecutable::paramString): Deleted. Yay!

  • bytecode/UnlinkedCodeBlock.h:
  • parser/Nodes.h:

(JSC::StatementNode::isFuncDeclNode): New helper for constructing
anonymous functions.

  • parser/SourceCode.h:

(JSC::SourceCode::SourceCode): Allow zero because WebCore wants it.

  • runtime/CodeCache.cpp:

(JSC::CodeCache::getFunctionExecutableFromGlobalCode): Updated for use
of function declaration over function expression.

  • runtime/Executable.cpp:

(JSC::FunctionExecutable::paramString): Deleted. Yay!

  • runtime/Executable.h:

(JSC::FunctionExecutable::parameterCount):

  • runtime/FunctionConstructor.cpp:

(JSC::constructFunctionSkippingEvalEnabledCheck): Added a newline after
the opening brace to match Firefox and Chrome, and a space after the comma
to match Firefox and WebKit coding style. Added the function name to
the text of the function so it would look right when stringify-ing. Switched
from parentheses to braces to produce a function declaration instead of
a function expression because we are required to exclude the function's
name from its scope, and that's what a function declaration does.

  • runtime/FunctionPrototype.cpp:

(JSC::functionProtoFuncToString): Removed an old workaround because the
library it worked around doesn't really exist anymore, and the behavior
doesn't match Firefox or Chrome. Use type profiling offsets instead of
function body offsets because we want to include the function name and
the parameter string, rather than stitching them in manually by
decompiling the AST.

(JSC::insertSemicolonIfNeeded): Deleted.

  • tests/mozilla/js1_2/function/tostring-1.js:
  • tests/mozilla/js1_5/Scope/regress-185485.js:

(with.g): Updated these test results for formatting changes.

Source/WebCore:

  • bindings/js/JSLazyEventListener.cpp:

(WebCore::JSLazyEventListener::initializeJSFunction): Adjust the line
number of attribute event listeners to account for the leading newline
now added by JavaScriptCore.

This solution is not perfect, but there are a lot of pre-existing problems
with line and column reporting for attribute event listeners, and this
preserves existing behavior with reasonable reliability.

LayoutTests:

Updated test results to match new rules for Function.prototype.toString.

  • fast/dom/TreeWalker/acceptNode-filter-expected.txt: Removed a space

because it was not in the original source.

  • fast/events/window-onerror2-expected.txt: Column number changed because

the event listener body starts on its own line now. This was a bit wrong
before and is still a bit wrong now in a different way.

  • fast/profiler/dead-time-expected.txt:
  • fast/profiler/inline-event-handler-expected.txt:
  • fast/profiler/stop-profiling-after-setTimeout-expected.txt: Line number

changed because WebCore shifts line nubmers on attribute event listeners
by one.

  • js/class-syntax-default-constructor-expected.txt: Constructor name

is not present now because it is not present in the source text. This
test failed before and it still fails now in a slightly different way.

  • js/destructuring-assignment-expected.txt: Destructuring arguments now

match their source text faithfully.

  • js/dfg-redundant-load-of-captured-variable-proven-constant-expected.txt:

Removed a space because it was not present in the original source text.

  • js/dfg-resolve-global-specific-dictionary-expected.txt: Ditto.
  • js/function-toString-semicolon-insertion-expected.txt: Removed.
  • js/script-tests/function-toString-semicolon-insertion.js: Removed.
  • js/function-toString-semicolon-insertion.html: Removed. This test checked

for a work-around that I have removed.

  • js/object-literal-computed-methods-expected.txt:
  • js/object-literal-methods-expected.txt: These tests fail because object

literal methods do not register their function names appropriately. This
was a pre-existing failure that is now more explicit.

  • js/dom/JSON-parse-expected.txt:
  • js/dom/JSON-stringify-expected.txt: Whitespace removed because it was

not present in the original.

  • js/dom/dfg-strcat-over-objects-then-exit-on-it-expected.txt: Ditto.
  • js/dom/function-prototype-expected.txt:
  • js/dom/function-prototype.html: Ditto.
  • js/dom/parse-error-external-script-in-new-Function-expected.txt: Line

changed by one due to new extra newline.

  • js/dom/script-start-end-locations-expected.txt: Lines and columns

changed due to new extra newline.

  • js/dom/toString-and-valueOf-override-expected.txt: Whitespace removed

because it was not present in the original.

  • js/dom/script-tests/dfg-strcat-over-objects-then-exit-on-it.js: Ditto.
  • js/kde/lval-exceptions-expected.txt: Ditto.
  • js/script-tests/dfg-redundant-load-of-captured-variable-proven-constant.js: Ditto.
  • js/script-tests/dfg-resolve-global-specific-dictionary.js: Ditto.
  • platform/mac/http/tests/media/media-source/mediasource-sourcebuffer-mode-expected.txt: Ditto.
  • storage/domstorage/localstorage/string-conversion-expected.txt: Ditto.
  • storage/domstorage/sessionstorage/string-conversion-expected.txt: Ditto.
  • userscripts/window-onerror-for-isolated-world-1-expected.txt:
  • userscripts/window-onerror-for-isolated-world-2-expected.txt: Line numbers

changed because of new anonymous function formatting. These line numbers
were wrong before and they are still wrong now.

12:14 PM Changeset in webkit [181809] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Add some skips to support EWS use.

  • platform/win/TestExpectations:
11:18 AM Changeset in webkit [181808] by achristensen@apple.com
  • 9 edits
    1 add in trunk/Source

Progress towards CMake on Mac.
https://bugs.webkit.org/show_bug.cgi?id=136003

Reviewed by Chris Dumez.

Source/WebCore:

  • PlatformMac.cmake:

Added some directories to create forwarding headers from.
Generate ObjC bindings.

Source/WebKit:

  • CMakeLists.txt:
  • PlatformMac.cmake: Added.

Source/WebKit2:

  • PlatformMac.cmake:

Add include directories and forwarding headers.

  • Shared/API/APIObject.h:

(API::ObjectImpl::operator new):

  • UIProcess/DrawingAreaProxy.h:

(WebKit::DrawingAreaProxy::intrinsicContentSizeDidChange):

  • UIProcess/mac/TiledCoreAnimationDrawingAreaProxy.h:

Fix some unused parameter warnings.

11:10 AM Changeset in webkit [181807] by commit-queue@webkit.org
  • 5 edits in trunk

SyntaxChecker assertion is trapped with computed property name and getter
https://bugs.webkit.org/show_bug.cgi?id=142863

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-20
Reviewed by Ryosuke Niwa.

Source/JavaScriptCore:

  • parser/SyntaxChecker.h:

(JSC::SyntaxChecker::getName):
Remove invalid assert. Computed properties will not have a name
and the calling code is checking for null expecting it. The
AST path (non-CheckingPath) already does this without the assert
so it is well tested.

LayoutTests:

  • js/basic-computed-property-name-expected.txt:
  • js/script-tests/basic-computed-property-name.js:

(a.string_appeared_here.runTest):
Add tests that wrap the expression in a function, this
will test the syntax checker.

11:08 AM Changeset in webkit [181806] by mark.lam@apple.com
  • 9 edits
    2 adds in trunk/Source/JavaScriptCore

JSCallbackObject<JSGlobalObject> should not destroy its JSCallbackObjectData before all its finalizers have been called.
<https://webkit.org/b/142846>

Reviewed by Geoffrey Garen.

Currently, JSCallbackObject<JSGlobalObject> registers weak finalizers via 2 mechanisms:

  1. JSCallbackObject<Parent>::init() registers a weak finalizer for all JSClassRef that a JSCallbackObject references.
  2. JSCallbackObject<JSGlobalObject>::create() registers a finalizer via vm.heap.addFinalizer() which destroys the JSCallbackObject.

The first finalizer is implemented as a virtual function of a JSCallbackObjectData
instance that will be destructed if the 2nd finalizer is called. Hence, if the
2nd finalizer if called first, the later invocation of the 1st finalizer will
result in a crash.

This patch fixes the issue by eliminating the finalizer registration in init().
Instead, we'll have the JSCallbackObject destructor call all the JSClassRef finalizers
if needed. This ensures that these finalizers are called before the JSCallbackObject
is destructor.

Also added assertions to a few Heap functions because JSCell::classInfo() expects
all objects that are allocated from MarkedBlock::Normal blocks to be derived from
JSDestructibleObject. These assertions will help us catch violations of this
expectation earlier.

  • API/JSCallbackObject.cpp:

(JSC::JSCallbackObjectData::finalize): Deleted.

  • API/JSCallbackObject.h:

(JSC::JSCallbackObjectData::~JSCallbackObjectData):

  • API/JSCallbackObjectFunctions.h:

(JSC::JSCallbackObject<Parent>::~JSCallbackObject):
(JSC::JSCallbackObject<Parent>::init):

  • API/tests/GlobalContextWithFinalizerTest.cpp: Added.

(finalize):
(testGlobalContextWithFinalizer):

  • API/tests/GlobalContextWithFinalizerTest.h: Added.
  • API/tests/testapi.c:

(main):

(JSC::Heap::allocateObjectOfType):
(JSC::Heap::subspaceForObjectOfType):
(JSC::Heap::allocatorForObjectOfType):

10:53 AM Changeset in webkit [181805] by peavo@outlook.com
  • 3 edits in trunk/Source/WebCore

[WinCairo] Crash when leaving page while video is playing.
https://bugs.webkit.org/show_bug.cgi?id=142578

Reviewed by Alex Christensen.

This can happen when there is an asynchronous event invoked from a video worker
thread, accessing the media player object after it has been deleted.
This is solved by resetting the media player pointer in the event object,
when the media player is deleted.

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.cpp:

(WebCore::MediaPlayerPrivateMediaFoundation::~MediaPlayerPrivateMediaFoundation):
(WebCore::MediaPlayerPrivateMediaFoundation::addListener):
(WebCore::MediaPlayerPrivateMediaFoundation::removeListener):
(WebCore::MediaPlayerPrivateMediaFoundation::notifyDeleted):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::AsyncCallback):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::~AsyncCallback):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::Invoke):
(WebCore::MediaPlayerPrivateMediaFoundation::AsyncCallback::onMediaPlayerDeleted):

  • platform/graphics/win/MediaPlayerPrivateMediaFoundation.h:

(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerListener::MediaPlayerListener):
(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerListener::~MediaPlayerListener):
(WebCore::MediaPlayerPrivateMediaFoundation::MediaPlayerListener::onMediaPlayerDeleted):

10:18 AM Changeset in webkit [181804] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Regression(r181782): Caused WebKit2.RestoreSessionStateContainingFormData API test to crash
https://bugs.webkit.org/show_bug.cgi?id=142911

Reviewed by Antti Koivisto.

Drop the isBackForwardLoadType(m_loadType) assertion in
FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad(). This assertion
used to hold true when goToBackForwardItem() was only called with
history navigation load types. However, after r181782, we use a Standard
load in the cases where we do not wish to display stale content (e.g.
restoring session state).

The assertion comment says "We only use cache-only loads to avoid
resubmitting forms". However, we then call loadDifferentDocumentItem()
which already takes care of using the ReturnCacheDataElseLoad cache
policy as the HistoryItem has form data and we pass
MayNotAttemptCacheOnlyLoadForFormSubmissionItem as parameter.

No new tests, covered by WebKit2.RestoreSessionStateContainingFormData
API test.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::retryAfterFailedCacheOnlyMainResourceLoad):

10:07 AM Changeset in webkit [181803] by ap@apple.com
  • 3 edits in trunk/LayoutTests

platform/mac/fast/loader/file-url-mimetypes-3.html fails when MS Office is installed
https://bugs.webkit.org/show_bug.cgi?id=142884

Reviewed by Tim Horton.

Disable a test for .xls until rdar://problem/20232251 is fixed. It is not particularly
relevant to a web browser which MIME type local Excel files get anyway.

  • platform/mac/fast/loader/file-url-mimetypes-3-expected.txt:
  • platform/mac/fast/loader/file-url-mimetypes-3.html:
9:47 AM Changeset in webkit [181802] by ap@apple.com
  • 1 edit
    1 add
    9 deletes in trunk/LayoutTests

[Mac] svg/text/non-bmp-positioning-lists.svg fails when MS Office is installed
https://bugs.webkit.org/show_bug.cgi?id=142861

Reviewed by Tim Horton.

Converted into a reftest. It would be nice to make tests not depend on installed
fonts in general, but that doesn't seem very feasible (rdar://problem/20000350).

  • platform/efl/svg/text/non-bmp-positioning-lists-expected.png: Removed.
  • platform/efl/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • platform/gtk/svg/text/non-bmp-positioning-lists-expected.png: Removed.
  • platform/gtk/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • platform/ios-sim-deprecated/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • platform/ios-simulator/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • platform/mac/svg/text/non-bmp-positioning-lists-expected.png: Removed.
  • platform/mac/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • platform/win/svg/text/non-bmp-positioning-lists-expected.txt: Removed.
  • svg/text/non-bmp-positioning-lists-expected.svg: Added.
8:57 AM Changeset in webkit [181801] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Temporarily turn of EWS Windows tests while I debug the test failure.

  • Scripts/webkitpy/common/config/ews.json:
4:26 AM Changeset in webkit [181800] by gyuyoung.kim@samsung.com
  • 3 edits in trunk/Source/WebKit2

[CMake] Remove duplicated cmake function calls in WebKit2/CMakeLists.txt
https://bugs.webkit.org/show_bug.cgi?id=142901

Reviewed by Csaba Osztrogonác.

add_depencencies(), install() can support multiple targets or location.
We don't need to call it twice.

  • CMakeLists.txt: Additionaly move -DBUILDING_WEBKIT to PlatformGTK.cmake,

because it is only used by GTK port.

4:06 AM Changeset in webkit [181799] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181798 - [GTK] Disable accelerated compositing on Wayland
https://bugs.webkit.org/show_bug.cgi?id=142877

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseCreateWebPage): As was done in the past, we should disable
accelerated compositing on Wayland until the proper support for it lands.

3:38 AM Changeset in webkit [181798] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Disable accelerated compositing on Wayland
https://bugs.webkit.org/show_bug.cgi?id=142877

Reviewed by Carlos Garcia Campos.

  • UIProcess/API/gtk/WebKitWebViewBase.cpp:

(webkitWebViewBaseCreateWebPage): As was done in the past, we should disable
accelerated compositing on Wayland until the proper support for it lands.

3:09 AM Changeset in webkit [181797] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening. Update attachment-foo tests to failure.
https://bugs.webkit.org/show_bug.cgi?id=142653

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-03-20

  • platform/efl/TestExpectations:
2:40 AM Changeset in webkit [181796] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

Unreviewed EFL gardening. Remove duplicate or ambiguous entry lines.
https://bugs.webkit.org/show_bug.cgi?id=142775

Patch by Hunseop Jeong <Hunseop Jeong> on 2015-03-20

  • platform/efl/TestExpectations:
2:36 AM Changeset in webkit [181795] by aestes@apple.com
  • 3 edits in trunk/Source/WebCore

[Content Filtering] Adopt NEFilterSource unblock handling
https://bugs.webkit.org/show_bug.cgi?id=142904

Reviewed by Andreas Kling.

  • platform/cocoa/NetworkExtensionContentFilter.mm:

(WebCore::NetworkExtensionContentFilter::unblockHandler):
Returned an unblock handler that calls -[NEFilterSource remediateWithDecisionHandler:].

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::unblockHandler): Used ASCIILiteral.

2:26 AM Changeset in webkit [181794] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8

Merge r181793 - [GTK] Search for the Wayland dependency when enabling Wayland target
https://bugs.webkit.org/show_bug.cgi?id=142876

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake: The Wayland dependency isn't a public

requirement of either the GTK+ or GDK pkg-config files, so we have to
search for it ourselves when WebKitGTK+ has been configured to support
the Wayland windowing target.

2:23 AM Changeset in webkit [181793] by zandobersek@gmail.com
  • 2 edits in trunk

[GTK] Search for the Wayland dependency when enabling Wayland target
https://bugs.webkit.org/show_bug.cgi?id=142876

Reviewed by Carlos Garcia Campos.

  • Source/cmake/OptionsGTK.cmake: The Wayland dependency isn't a public

requirement of either the GTK+ or GDK pkg-config files, so we have to
search for it ourselves when WebKitGTK+ has been configured to support
the Wayland windowing target.

2:00 AM Changeset in webkit [181792] by Philippe Normand
  • 2 edits in trunk/Tools

[GTK][jhbuild] Fix flakey failures due to unstable googlecode repository
https://bugs.webkit.org/show_bug.cgi?id=142867

Rubber-stamped by Csaba Osztrogon.

  • gtk/jhbuild.modules: Use Ossy's libusrsctp Github fork. Also use

a fixed revision for the openwebrtc-gst-plugins.

1:42 AM Changeset in webkit [181791] by aestes@apple.com
  • 30 edits
    4 adds in trunk

[Content Filtering] Add tests for unblock requests
https://bugs.webkit.org/show_bug.cgi?id=142900

Reviewed by Andreas Kling.

Source/WebCore:

Currently the iOS Parental Controls content filter has a mechanism for requesting that a page be unblocked.
WebKit implements this by listening for navigations originating from the filter's error page to a special URL,
and requesting the page be unblocked via platform API, which might cause UI to be displayed. If the unblock is
successful then we schedule a reload of the frame in order to display the unblocked document.

NetworkExtension also supports unblock requests, so in preparation for adopting its API, this patch allows
content filters to specify their own unblock request method, teaches MockContentFilter to provide such a method,
and writes tests to cover both allowed and denied unblock requests.

The content filter that blocks a load creates a ContentFilterUnblockHandler, passing it a lambda that is executed
when a navigation matches the filter's special unblock URL. Filters can also specify that a script be executed in
the context of its error page if the unblock is denied.

All platform content filters can handle unblock requests like this with the exception of iOS Parental Controls in WebKit2.
Since UI can be displayed by the system in this case, the request must be made from within the UI process. Therefore the
existing method is retained of serializing a WebFilterEvaluator and intercepting navigation policy calls in the UI process.

Tests: contentfiltering/allow-after-unblock-request.html

contentfiltering/block-after-unblock-request.html

  • bindings/js/JSMockContentFilterSettingsCustom.cpp:

(WebCore::JSMockContentFilterSettings::decisionPoint): Added some using statements for clarity.
(WebCore::JSMockContentFilterSettings::setDecisionPoint): Ditto.
(WebCore::toJSValue): Returns a JSValue from a Decision.
(WebCore::toDecision): Returns a Decision from a JSValue.
(WebCore::JSMockContentFilterSettings::decision): Used toJSValue.
(WebCore::JSMockContentFilterSettings::setDecision): Used toDecision.
(WebCore::JSMockContentFilterSettings::unblockRequestDecision): Used toJSValue.
(WebCore::JSMockContentFilterSettings::setUnblockRequestDecision): Used toDecision.

  • loader/ContentFilter.cpp:

(WebCore::ContentFilter::createIfNeeded): Passed a reference to the owning DocumentLoader.
(WebCore::ContentFilter::ContentFilter): Ditto.
(WebCore::ContentFilter::unblockHandler): If the unblockHandler requests that a script be executed when an
unblock request is denied, create a wrapper unblockHandler that executes that script in m_documentLoader's frame.

  • loader/ContentFilter.h:
  • loader/DocumentLoader.cpp:

(WebCore::DocumentLoader::responseReceived): Passed this to ContentFilter::createIfNeeded.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::prepareForLoadStart): Called PolicyChecker::prepareForLoadStart.

  • loader/PolicyChecker.cpp:

(WebCore::PolicyChecker::prepareForLoadStart): Reset m_contentFilterUnblockHandler.
(WebCore::PolicyChecker::checkNavigationPolicy): Moved logic to here from WebKit1's WebFrameLoaderClient.
Placing it here allows it to be shared between WebKit1 and WebKit2 (when the unblock handler does not need to
be called in the UI process).

  • loader/PolicyChecker.h:

(WebCore::PolicyChecker::setContentFilterUnblockHandler): Added.

  • page/Frame.h: Made Frame ThreadSafeRefCounted, since RefPtr<Frames> are captured in lambdas that can be

copied by background threads managed by the underlying platform.

  • platform/ContentFilterUnblockHandler.h:

(WebCore::ContentFilterUnblockHandler::unblockURLScheme): Returned the Apple content filter scheme.
(WebCore::ContentFilterUnblockHandler::unblockURLHost): Returned the unblock URL host.
(WebCore::ContentFilterUnblockHandler::clear): Deleted.

  • platform/PlatformContentFilter.h:

(WebCore::PlatformContentFilter::unblockRequestDeniedScript): Returned the unblock request denied script.

  • platform/cocoa/ContentFilterUnblockHandlerCocoa.mm:

(WebCore::ContentFilterUnblockHandler::ContentFilterUnblockHandler): Added a constructor that takes an
unblockURLHost and a UnblockRequesterFunction. Added an alternate constructor for iOS Parental Controls on
WebKit2 that takes an unblockURLHost and a WebFilterEvaluator.
(WebCore::ContentFilterUnblockHandler::needsUIProcess): Returned true if m_webFilterEvaluator is non-null.
(WebCore::ContentFilterUnblockHandler::encode): Encoded m_unblockURLHost in addition to m_webFilterEvaluator.
(WebCore::ContentFilterUnblockHandler::decode): Decoded m_unblockURLHost in addition to m_webFilterEvaluator.
(WebCore::ContentFilterUnblockHandler::canHandleRequest): Returned true if there is a either a m_unblockRequester
or a m_webFilterEvaluator and the request's host and scheme match those of the unblock request URL.
(WebCore::dispatchToMainThread): Added a helper to dispatch a block to the main thread. Then if the web thread
is enabled on iOS, dispatch it there.
(WebCore::ContentFilterUnblockHandler::requestUnblockAsync): Renamed from handleUnblockRequestAndDispatchIfSuccessful.
Requested an unblock using either m_unblockRequester or m_webFilterEvaluator, then called decisionHandler with the response.
(WebCore::scheme): Moved to ContentFilterUnblockHandler::unblockURLScheme.
(WebCore::ContentFilterUnblockHandler::handleUnblockRequestAndDispatchIfSuccessful): Renamed to requestUnblockAsync.

  • platform/cocoa/ParentalControlsContentFilter.mm:

(WebCore::ParentalControlsContentFilter::unblockHandler): Returned an unblock handler using the WebFilterEvaluator constructor.

  • testing/MockContentFilter.cpp: Added using statments for clarity.

(WebCore::settings): Added a helper to get MockContentFilterSettings::singleton().
(WebCore::MockContentFilter::canHandleResponse): Used the helper.
(WebCore::MockContentFilter::MockContentFilter): Took advantage of the using statements.
(WebCore::MockContentFilter::addData): Ditto.
(WebCore::MockContentFilter::finishedAddingData): Ditto.
(WebCore::MockContentFilter::unblockHandler): Returned a ContentFilterUnblockHandler that checks settings() for its decision.
(WebCore::MockContentFilter::unblockRequestDeniedScript): Returned the script to execute in MockContentFilter's
error page when an unblock request is denied.
(WebCore::MockContentFilter::maybeDetermineStatus): Took advantage of settings() and using statements.

  • testing/MockContentFilterSettings.cpp:

(WebCore::MockContentFilterSettings::unblockRequestURL): Constructed a static unblock URL and returned it.

  • testing/MockContentFilterSettings.h:

(WebCore::MockContentFilterSettings::unblockURLHost): Returned the filter's unblock URL host.
(WebCore::MockContentFilterSettings::unblockRequestDecision): Returns the decision to make for an unblock request.
(WebCore::MockContentFilterSettings::setUnblockRequestDecision): Sets the decision to make for an unblock request.

  • testing/MockContentFilterSettings.idl: Added the unblockRequestDecision and unblockRequestURL attributes.

Source/WebKit/mac:

  • WebCoreSupport/WebFrameLoaderClient.mm:

(WebFrameLoaderClient::dispatchDidStartProvisionalLoad): This now happens in PolicyChecker.
(WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): Ditto.

  • WebView/WebFrame.mm:

(-[WebFrame _contentFilterDidHandleNavigationAction:]): Deleted.

  • WebView/WebFrameInternal.h: Removed contentFilterUnblockHandler from WebFramePrivate.

Source/WebKit2:

  • UIProcess/Cocoa/WebPageProxyCocoa.mm:

(WebKit::WebPageProxy::contentFilterDidBlockLoadForFrame): Called WebFrameProxy::contentFilterDidBlockLoad.

  • UIProcess/WebFrameProxy.cpp:

(WebKit::WebFrameProxy::didStartProvisionalLoad): Assigned a default-constructed ContentFilterUnblockHandler instead of calling clear().
(WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation): Renamed from contentFilterDidHandleNavigationAction.
Updated to use ContentFilterUnblockHandler's new API.
(WebKit::WebFrameProxy::contentFilterDidHandleNavigationAction): Deleted.

  • UIProcess/WebFrameProxy.h:

(WebKit::WebFrameProxy::contentFilterDidBlockLoad): Renamed from setContentFilterUnblockHandler.
(WebKit::WebFrameProxy::setContentFilterUnblockHandler): Deleted.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::decidePolicyForNavigationAction): Called WebFrameProxy::didHandleContentFilterUnblockNavigation.

  • WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:

(WebKit::WebFrameLoaderClient::contentFilterDidBlockLoad): If the unblock handler needs the UI process,
send WebPageProxy::ContentFilterDidBlockLoadForFrame. Oterwise, call PolicyChecker::setContentFilterUnblockHandler.

LayoutTests:

Taught contentfiltering.js how to perform an unblock request test, and added tests for both allowed and blocked requests.

  • contentfiltering/allow-after-unblock-request-expected.html: Added.
  • contentfiltering/allow-after-unblock-request.html: Added.
  • contentfiltering/block-after-unblock-request-expected.html: Added.
  • contentfiltering/block-after-unblock-request.html: Added.
  • contentfiltering/resources/contentfiltering.js:

(testContentFiltering): Added an argument specifying if the decision applies to the initial load or the unblock request.
(_doTest): When testing unblock handling, navigate the test iframe to settings.unblockRequestURL when the error page is displayed.
If the unblock is denied, the test harness will call window.unblockRequestDenied(). If the unblock is successful,
the iframe will reload, which we detect by listening for its load event.

1:35 AM Changeset in webkit [181790] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebKit2

Merge r181789 - [GTK] Properly guard X11-specific code in BackingStore::createBackend()
https://bugs.webkit.org/show_bug.cgi?id=142875

Reviewed by Martin Robinson.

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::createBackend): Guard the GTK- and X11-specific
bit of code with PLATFORM(GTK) and PLATFORM(X11). Testing GDK_WINDOWING_X11
ensures that the GTK+ dependency has X11 support, but does not ensure
that WebKitGTK+ has been configured to build for X11 environments (which
is what PLATFORM(X11) ensures).

1:24 AM Changeset in webkit [181789] by zandobersek@gmail.com
  • 2 edits in trunk/Source/WebKit2

[GTK] Properly guard X11-specific code in BackingStore::createBackend()
https://bugs.webkit.org/show_bug.cgi?id=142875

Reviewed by Martin Robinson.

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::createBackend): Guard the GTK- and X11-specific
bit of code with PLATFORM(GTK) and PLATFORM(X11). Testing GDK_WINDOWING_X11
ensures that the GTK+ dependency has X11 support, but does not ensure
that WebKitGTK+ has been configured to build for X11 environments (which
is what PLATFORM(X11) ensures).

1:07 AM Changeset in webkit [181788] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r181787 - [GTK] Crash due to empty drag image during drag-and-drop
https://bugs.webkit.org/show_bug.cgi?id=142671

Reviewed by Philippe Normand.

Return early from ImageBuffer constructor if an empty size is
given. This is a speculative fix for a crash while starting a drag
and drop operation, that I haven't been able to reproduce.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer):

1:04 AM Changeset in webkit [181787] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] Crash due to empty drag image during drag-and-drop
https://bugs.webkit.org/show_bug.cgi?id=142671

Reviewed by Philippe Normand.

Return early from ImageBuffer constructor if an empty size is
given. This is a speculative fix for a crash while starting a drag
and drop operation, that I haven't been able to reproduce.

  • platform/graphics/cairo/ImageBufferCairo.cpp:

(WebCore::ImageBuffer::ImageBuffer):

1:02 AM Changeset in webkit [181786] by Csaba Osztrogonác
  • 3 edits in trunk

Unreviewed, kick the GTK bots to regenerate makefile.
https://bugs.webkit.org/show_bug.cgi?id=137394

  • Source/cmake/OptionsEfl.cmake: Revert my last accidenatal change.
  • Source/cmake/OptionsGTK.cmake: Really kick the GTK bots.
12:52 AM Changeset in webkit [181785] by Csaba Osztrogonác
  • 2 edits in trunk

Unreviewed, kick the GTK bots to regenerate makefile.
https://bugs.webkit.org/show_bug.cgi?id=137394

  • Source/cmake/OptionsEfl.cmake:

Mar 19, 2015:

11:01 PM Changeset in webkit [181784] by aestes@apple.com
  • 1 edit in trunk/LayoutTests/ChangeLog

Fixed a ChangeLog misspelling pointed out by Andreas.

10:58 PM Changeset in webkit [181783] by aestes@apple.com
  • 8 edits
    2 adds in trunk/LayoutTests

[Content Filtering] Give contentfiltering tests a JavaScript harness
https://bugs.webkit.org/show_bug.cgi?id=142899

Reviewed by Andreas Kling.

Create a JavaScript function to run the contentfiltering/ tests. This consolodates shared logic and will make
it easier to write new tests.

  • TestExpectations: Skipped a test that times out with the new harness (but it also failed before).
  • contentfiltering/allow-after-add-data.html: Called testContentFiltering().
  • contentfiltering/allow-after-finished-adding-data.html: Ditto.
  • contentfiltering/allow-after-response.html: Ditto.
  • contentfiltering/block-after-add-data.html: Ditto.
  • contentfiltering/block-after-finished-adding-data.html: Ditto.
  • contentfiltering/block-after-response.html: Ditto.
  • contentfiltering/resources/contentfiltering.js: Added.
10:45 PM Changeset in webkit [181782] by Chris Dumez
  • 8 edits in trunk/Source

[WK2] We should allow stale content when restoring a killed / crashed WebProcess
https://bugs.webkit.org/show_bug.cgi?id=142893
<rdar://problem/19633737>
<rdar://problem/19869257>

Reviewed by Antti Koivisto.

Source/WebCore:

Always use ReturnCacheDataElseLoad cache policy for history navigations.
Previously, we would use the default protocol cache policy for history
navigations if m_stateMachine.committedFirstRealDocumentLoad() returned
false so that we do not display stale content when restoring the session
state of Safari statup (rdar://problem/8131355). This is now handled
before reaching this method by no longer using "IndexedBackForward"
FrameLoadType when restoring session tabs, and using "Standard" load
type instead.

  • loader/FrameLoader.cpp:

(WebCore::FrameLoader::loadDifferentDocumentItem):

Source/WebKit2:

Allow stale content when restoring a killed / crashed WebProcess
(similarly to a history navigation). This is actually what was intended
as we call WebPage::goToBackForwardItem() in this case, which uses
IndexedBackForward load type. However, this value was then ignored in
FrameLoader::loadDifferentDocumentItem().

This patch gets rid of the special casing in
FrameLoader::loadDifferentDocumentItem() and makes it clear at call
sites when calling goToBackForwardItem() if we should allow stale
content or not. If goToBackForwardItem() is called with the
allowStaleContent flag off, we'll keep using the IndexedBackForward
frame load type. However, if the flag is on, we'll use the Standard
frame load type and do a fresh load.

  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::reattachToWebProcessForReload):
Set allowStaleContent flag to true as we want to allow stale content
when reloading a WebProcess after it crashed or was killed (behavior
change).

(WebKit::WebPageProxy::reattachToWebProcessWithItem):
Add allowStaleContent parameter so that call sites can decide which
policy to use.

(WebKit::WebPageProxy::goForward):
(WebKit::WebPageProxy::goBack):
Set allowStaleContent flag to true as this is our policy for history
navigations.

(WebKit::WebPageProxy::goToBackForwardItem):
Add allowStaleContent parameter so that the call site can let us know
what to do. This is useful as this is called not only for indexed
back / forward navigations (allowing stale content) but also for
restoring session state (forbidding state content:
<rdar://problem/8131355>).

(WebKit::WebPageProxy::restoreFromSessionState):
Call goToBackForwardItem() with allowStaleContent flag set to false
as users expect fresh contents in this case. This method is called
when:

  • Tabs are restored on Safari / MobileSafari startup
  • Tabs are restored via "History > Reopen All windows from last session"
  • UIProcess/WebPageProxy.h:
  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::goToBackForwardItem):
Add allowStaleContent parameter and use "Standard" frame load type
instead of "IndexedBackForward" if it is false. This is needed as
"IndexedBackForward" frame load type allows using stale content.

  • WebProcess/WebPage/WebPage.h:
  • WebProcess/WebPage/WebPage.messages.in:

Add allowStaleContent flag to GoToBackForwardItem message.

10:22 PM Changeset in webkit [181781] by aestes@apple.com
  • 6 edits
    1 copy
    2 moves in trunk/Source/WebCore

[Content Filtering] Move ContentFilter to from platform/ to loader/
https://bugs.webkit.org/show_bug.cgi?id=142897

Reviewed by Dan Bernstein.

ContentFilterCollection never contained any platform code, so it doesn't make sense for it to be in platform.
Move it to loader/, since ContentFilters are owned by DocumentLoaders, and just call it ContentFilter. Extract
the abstract part of ContentFilter into a new base class called PlatformContentFilter that each of the
individual filters inherit from.

  • WebCore.xcodeproj/project.pbxproj:
  • loader/ContentFilter.cpp: Renamed from Source/WebCore/platform/ContentFilter.cpp.

(WebCore::ContentFilter::types): Moved from ContentFilterCollection.
(WebCore::ContentFilter::createIfNeeded): Ditto.
(WebCore::ContentFilter::ContentFilter): Ditto.
(WebCore::ContentFilter::addData): Ditto.
(WebCore::ContentFilter::finishedAddingData): Ditto.
(WebCore::ContentFilter::needsMoreData): Ditto.
(WebCore::ContentFilter::didBlockData): Ditto.
(WebCore::ContentFilter::getReplacementData): Ditto.
(WebCore::ContentFilter::unblockHandler): Ditto.

  • loader/ContentFilter.h: Copied from Source/WebCore/platform/ContentFilter.h.

(WebCore::ContentFilter::type): Replaced a use of ContentFilterCollection.

  • platform/PlatformContentFilter.h: Renamed from Source/WebCore/platform/ContentFilter.h.
  • platform/cocoa/NetworkExtensionContentFilter.h: Inherited from PlatformContentFilter.
  • platform/cocoa/ParentalControlsContentFilter.h: Ditto.
  • testing/MockContentFilter.h: Ditto.
10:06 PM Changeset in webkit [181780] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Try to get the Debug bots green.

  • platform/win/TestExpectations:
10:02 PM Changeset in webkit [181779] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Skip an <attachment> test that times out on Windows.

Also mark two flakes I noticed on the test bots.

  • platform/win/TestExpectations:
9:47 PM Changeset in webkit [181778] by dino@apple.com
  • 12 edits
    4 adds in trunk

CSS Animations with triggers should map scroll position to duration
https://bugs.webkit.org/show_bug.cgi?id=142870
<rdar://problem/20227244>

Reviewed by Simon Fraser.

Source/WebCore:

Expose a prototype implementation of what will eventually be called
animation-timebase, mapping the scroll location to the duration of an
animation. This only applies if the animation has a start and end
trigger.

Test: animations/trigger-container-scroll-boundaries.html
Test: animations/trigger-container-scroll-empty.html

  • css/CSSComputedStyleDeclaration.cpp:

(WebCore::createAnimationTriggerValue): Change to downcast.

  • css/CSSToStyleMap.cpp:

(WebCore::CSSToStyleMap::mapAnimationTrigger): Fix a bug where I wasn't
telling the ScrollAnimationTrigger object whether or not it had
an end value. This wasn't visible before because we were not using
the end value.

  • page/animation/AnimationBase.cpp:

(WebCore::AnimationBase::fireAnimationEventsIfNeeded): Add a comment and
change to using a downcast.
(WebCore::AnimationBase::timeToNextService): Change to downcast.
(WebCore::AnimationBase::freezeAtTime): Whitespace cleanup.
(WebCore::AnimationBase::getElapsedTime): Calculate the elapsedTime based
on the scroll position relative to the start and end trigger spots.

  • page/animation/AnimationController.cpp:

(WebCore::AnimationControllerPrivate::updateAnimations): Since this
can potentially call into beginAnimationUpdateTime, it should have
an update blocker. This fixes the assert we were seeing in tests.
(WebCore::AnimationControllerPrivate::scrollWasUpdated): Keep track of the scroll
position so we don't need to ask for it all the time.

  • page/animation/AnimationControllerPrivate.h:

(WebCore::AnimationControllerPrivate::scrollPosition): New accessor.

  • platform/animation/AnimationTrigger.h: Add downcast macros.

(WebCore::ScrollAnimationTrigger::create): Calculate hasEndValue from the passed
parameters rather than a separate value.
(WebCore::ScrollAnimationTrigger::hasEndValue):
(WebCore::ScrollAnimationTrigger::ScrollAnimationTrigger):
(WebCore::ScrollAnimationTrigger::setHasEndValue): Deleted.

  • platform/graphics/ca/GraphicsLayerCA.cpp:

(WebCore::GraphicsLayerCA::animationCanBeAccelerated): If we have an
animation of this sort, we can't use a CAAnimation.

LayoutTests:

Add a new test that exercises an animation trigger over a scroll
region, and a test of the boundary condition. Also, unskip a test that
was failing due to a bug fixed in this patch.

  • animations/trigger-container-scroll-boundaries-expected.txt: Added.
  • animations/trigger-container-scroll-boundaries.html: Added.
  • animations/trigger-container-scroll-empty-expected.txt: Added.
  • animations/trigger-container-scroll-empty.html: Added.
  • platform/efl/TestExpectations:
  • platform/gtk/TestExpectations:
  • platform/mac/TestExpectations:
  • platform/win/TestExpectations:
8:51 PM Changeset in webkit [181777] by eric.carlson@apple.com
  • 9 edits
    4 moves in trunk/Source

[Mac] Move MediaPlaybackTargetPicker
https://bugs.webkit.org/show_bug.cgi?id=142889

Source/WebCore:

Move WebMediaPlaybackTargetPickerProxy from WK2 and rename as MediaPlaybackTargetPicker so it
can be used by both WK2 and WK1.

Reviewed by Tim Horton.

  • WebCore.xcodeproj/project.pbxproj:
  • platform/graphics/MediaPlaybackTargetPicker.cpp: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.cpp.
  • platform/graphics/MediaPlaybackTargetPicker.h: Copied from Source/WebKit2/UIProcess/WebMediaPlaybackTargetPickerProxy.h.
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.h: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h.
  • platform/graphics/avfoundation/objc/MediaPlaybackTargetPickerMac.mm: Copied from Source/WebKit2/UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm.

Source/WebKit2:

Move WebMediaPlaybackTargetPickerProxy to WebCore so it can be used by
both WK2 and WK1.

Reviewed by Tim Horton.

  • UIProcess/PageClient.h:
  • UIProcess/WebMediaPlaybackTargetPickerProxy.cpp: Removed.
  • UIProcess/WebMediaPlaybackTargetPickerProxy.h: Removed.
  • UIProcess/WebPageProxy.cpp:

(WebKit::WebPageProxy::devicePickerProxy):

  • UIProcess/WebPageProxy.h:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::createPlaybackTargetPicker):

  • UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.h: Removed.
  • UIProcess/mac/WebMediaPlaybackTargetPickerProxyMac.mm: Removed.
  • WebKit2.xcodeproj/project.pbxproj:
6:52 PM Changeset in webkit [181776] by jberlin@webkit.org
  • 2 edits in trunk/Source/WebKit2

32-bit build fix after r181770.

  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController initWithWindow:webView:]):

6:37 PM Changeset in webkit [181775] by andersca@apple.com
  • 2 edits in trunk/Source/WebKit2

Add support for deleting individual cache entries
https://bugs.webkit.org/show_bug.cgi?id=142886

Reviewed by Antti Koivisto.

  • NetworkProcess/NetworkProcess.cpp:

(WebKit::fetchDiskCacheEntries):
Remove an unnecessary call to cfURLCacheOrigins().

(WebKit::clearDiskCacheEntries):
Helper function for clearing disk cache entries. This handles both the old and new cache implementations.

(WebKit::NetworkProcess::deleteWebsiteDataForOrigins):
Call clearDiskCacheEntries if needed.

5:53 PM Changeset in webkit [181774] by rniwa@webkit.org
  • 2 edits in trunk/Tools

Unreviewed build fix. Don't try to report stats for all benchmarks.
Just report the geometric mean of preferred means.

  • Scripts/run-jsc-benchmarks:
5:47 PM Changeset in webkit [181773] by enrica@apple.com
  • 3 edits
    2 adds in trunk

Source/WebCore:
REGRESSION (r109593): Clicking after last inline element could cause a crash.
https://bugs.webkit.org/show_bug.cgi?id=142880
rdar://problem/17222294

Reviewed by Ryosuke Niwa.

Test: editing/selection/click-after-last-inline-crash.html

  • rendering/RootInlineBox.cpp:

(WebCore::RootInlineBox::closestLeafChildForLogicalLeftPosition):

LayoutTests:
Web Inspector: Adopt ES6 Class Syntax for all Model Objects
https://bugs.webkit.org/show_bug.cgi?id=142858

Patch by Joseph Pecoraro <Joseph Pecoraro> on 2015-03-19
Reviewed by Timothy Hatcher.

  • inspector/model/parse-script-syntax-tree.html:

This test was calling a constructor without "new". Class
syntax enforces "new" and threw an exception.

5:44 PM Changeset in webkit [181772] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

One more build fix after r181760.

  • page/EventHandler.cpp:

(WebCore::EventHandler::handleDrag):

5:38 PM Changeset in webkit [181771] by jberlin@webkit.org
  • 2 edits in trunk/Source/WebCore

Build fix after r181760.

  • rendering/RenderAttachment.h:
5:20 PM Changeset in webkit [181770] by jer.noble@apple.com
  • 6 edits in trunk/Source

[WK2][Mac] Fullscreen animations with mismatched aspect ratios are "squished".
https://bugs.webkit.org/show_bug.cgi?id=142132

Reviewed by Tim Horton.

Source/WebCore:

Add a new utility method to calculate a rect with a specific aspect ratio wrapping a smaller one.

  • platform/graphics/GeometryUtilities.cpp:

(WebCore::smallestRectWithAspectRatioAroundRect):

  • platform/graphics/GeometryUtilities.h:

Source/WebKit2:

Use CALayer animations for the transition into and out of fullscreen.

The fullscreen transition consists of three separate animations:

  1. An opacity animation for the black backdrop behind the fullscreen content
  2. A scale/translation animation from fullscreen element's initial screen to its final one.
  3. A clip animation from the fullscreen element's initial aspect ratio to its final one.

The opacity animation will apply to the fullscreen window's content view's layer's
background color. To separately animate the transform and mask of the web view's content, a
layer-backed subview is added to the content view, and the scale/translation & clip
animations are applied to its transform property and mask layer respectively.

Utility methods to create each animation have been added, and each includes a parameter for
the direction of the animation, so that the same methods can be used for entering and
exiting fullscreen transitions.

The user-visible changes to this new transition are when the aspect ratios of the initial
and final screen locations are different: previously the transition would use a scale
transform to "squish" the fullscreen content into the initial aspect ratio. The new
transition instead "clips" the fullscreen content to the initial aspect ratio. For common
operations such a <video> element with a different aspect ratio than the screen, this makes
the black letterbox "grow" during the transition, and makes the transition overall much
smoother.

  • UIProcess/mac/WKFullScreenWindowController.h:
  • UIProcess/mac/WKFullScreenWindowController.mm:

(-[WKFullScreenWindowController initWithWindow:webView:]): Create and initialze the clipping view.
(-[WKFullScreenWindowController applicationDidChangeScreenParameters:]): _backgroundWindow was removed.
(-[WKFullScreenWindowController enterFullScreen:]): Add the webView to the _clipView, not the contentView.
(-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]): _backgroundWindow,

_fadeAnimation, and _scaleAnimation are all removed.

(-[WKFullScreenWindowController finishedEnterFullScreenAnimation:]): Ditto.
(-[WKFullScreenWindowController finishedExitFullScreenAnimation:]): Ditto. Hide the contentView's

layer. Pause visibility updates.

(-[WKFullScreenWindowController completeFinishExitFullScreenAnimationAfterRepaint]): Resume visibility updates.
(-[WKFullScreenWindowController close]): _fadeAnimation and _scaleAnimation are removed.
(-[WKFullScreenWindowController customWindowsToEnterFullScreenForWindow:]): Return only the fullscreen

window.

(-[WKFullScreenWindowController customWindowsToExitFullScreenForWindow:]): Ditto.
(zoomAnimation): Added.
(maskAnimation): Added.
(fadeAnimation): Added.
(-[WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]): Use the utility

methods above to set up the animation.

(-[WKFullScreenWindowController _startExitFullScreenAnimationWithDuration:]): Ditto.
(createBackgroundFullscreenWindow): Deleted.
(windowFrameFromApparentFrames): Deleted.

5:18 PM Changeset in webkit [181769] by Joseph Pecoraro
  • 182 edits in trunk

Web Inspector: Adopt ES6 Class Syntax for all Model Objects
https://bugs.webkit.org/show_bug.cgi?id=142858

Reviewed by Timothy Hatcher.

Source/WebInspectorUI:

  • Convert WebInspector.Object to a class
  • Convert all UserInterface/Models objects to classes
  • Convert constructor functions to constructor methods
  • Convert "constructor.method" to class static methods where possible
  • Convert all methods to method syntax, eliminate commas between methods
  • Convert all superclass calls in classes to use "super"
  • Workaround <https://webkit.org/b/142862> and add empty constructors
  • Added "deprecated" prefix to addConstructorFunctions, since it is not needed with classes
  • Added many missing calls to super in constructors
  • Added FIXME to WebInspector.Object subclasses not yet moved to classes.
  • Cleaned up SourceMap global properties, moved to constructor instead of prototype
  • Cleaned up Timeline factory constructor to static "create" factory method
  • Fixed any style issues noticed in the mass edit
  • Fixed strict mode issues now that classes enforce strict mode
    • RunLoopTimelineRecord.js was missing a var for a local variable
    • "const" is not allowed, converted to "var"
    • "arguments.callee" is not allowed in strict mode
  • UserInterface//*.js:

Many files modified mostly mechanically.

LayoutTests:

  • inspector/model/parse-script-syntax-tree.html:

This test was calling a constructor without "new". Class
syntax enforces "new" and threw an exception.

4:52 PM Changeset in webkit [181768] by jonowells@apple.com
  • 3 edits in trunk/Source/WebInspectorUI

Web Inspector: Debugger sidebar header should say "Scripts" instead of "Breakpoints", appear only on pause
https://bugs.webkit.org/show_bug.cgi?id=142847

Reviewed by Timothy Hatcher.

Add a paused class on the debugger sidebar panel. Use that class to adjust the sidebar styles so that, when
the debugger is not paused: there is no header for the scripts section, there is no border beneath the scripts
section, and the scripts section cannot be collapsed (which could be done while the debugger is paused). The
header has changed to say "Scripts" instead of "Breakpoints" when it is showing.

  • UserInterface/Views/DebuggerSidebarPanel.css:

(.sidebar > .panel.navigation.debugger .details-section.scripts):
(.sidebar > .panel.navigation.debugger .details-section.scripts .header):
(.sidebar > .panel.navigation.debugger .details-section.scripts.collapsed > .content):
(.sidebar > .panel.navigation.debugger.paused .details-section.scripts):
(.sidebar > .panel.navigation.debugger.paused .details-section.scripts .header):
(.sidebar > .panel.navigation.debugger.paused .details-section.scripts.collapsed > .content):
Adjust styles to hide header and border.

  • UserInterface/Views/DebuggerSidebarPanel.js:

(WebInspector.DebuggerSidebarPanel):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidPause):
(WebInspector.DebuggerSidebarPanel.prototype._debuggerDidResume):
Add a paused class to the debugger sidebar when it is paused.

4:33 PM Changeset in webkit [181767] by matthew_hanson@apple.com
  • 2 edits in tags/Safari-601.1.23.3/Source/WebCore

Merge r181662. rdar://problem/20144648

4:26 PM Changeset in webkit [181766] by Chris Dumez
  • 5 edits in trunk/Source/WebCore

Get rid of "CachePolicyCache" cache policy
https://bugs.webkit.org/show_bug.cgi?id=142881

Reviewed by Antti Koivisto.

Get rid of "CachePolicyCache" cache policy as it is unused.

  • loader/cache/CachePolicy.h:
  • loader/cache/CachedResource.cpp:

(WebCore::CachedResource::mustRevalidateDueToCacheHeaders):

  • page/DiagnosticLoggingKeys.cpp:

(WebCore::DiagnosticLoggingKeys::mustRevalidateIsExpiredKey): Deleted.

  • page/DiagnosticLoggingKeys.h:
4:01 PM Changeset in webkit [181765] by akling@apple.com
  • 3 edits in trunk/Source/JavaScriptCore

JSCallee unnecessarily overrides a bunch of things in the method table.
<https://webkit.org/b/142855>

Reviewed by Geoffrey Garen.

Remove JSCallee method table overrides that simply call to base class.
This makes JSFunction property slot lookups slightly more efficient since
they can take the fast path when passing over JSCallee in the base class chain.

  • runtime/JSCallee.cpp:

(JSC::JSCallee::getOwnPropertySlot): Deleted.
(JSC::JSCallee::getOwnNonIndexPropertyNames): Deleted.
(JSC::JSCallee::put): Deleted.
(JSC::JSCallee::deleteProperty): Deleted.
(JSC::JSCallee::defineOwnProperty): Deleted.

  • runtime/JSCallee.h:
3:46 PM Changeset in webkit [181764] by rniwa@webkit.org
  • 2 edits in trunk/Tools

run-jsc-benchmarks should only report preferred mean
https://bugs.webkit.org/show_bug.cgi?id=142874

Reviewed by Geoffrey Garen.

Just collect statistics for the preferred mean.

  • Scripts/run-jsc-benchmarks:
3:39 PM Changeset in webkit [181763] by enrica@apple.com
  • 2 edits in trunk/Source/WebCore

[Content Extensions] Test regular expression parse failures.
https://bugs.webkit.org/show_bug.cgi?id=142872

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

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::GraphBuilder::finalize):
(WebCore::ContentExtensions::GraphBuilder::quantifyAtom):
(WebCore::ContentExtensions::URLFilterParser::addPattern):
(WebCore::ContentExtensions::URLFilterParser::statusString):

  • contentextensions/URLFilterParser.h:

Changed failures that can never happen to assertions.

3:37 PM Changeset in webkit [181762] by achristensen@apple.com
  • 5 edits in trunk

[Content Extensions] Test regular expression parse failures.
https://bugs.webkit.org/show_bug.cgi?id=142872

Reviewed by Benjamin Poulain.

Source/WebCore:

  • contentextensions/URLFilterParser.cpp:

(WebCore::ContentExtensions::GraphBuilder::finalize):
(WebCore::ContentExtensions::GraphBuilder::quantifyAtom):
(WebCore::ContentExtensions::URLFilterParser::addPattern):
(WebCore::ContentExtensions::URLFilterParser::statusString):

  • contentextensions/URLFilterParser.h:

Changed failures that can never happen to assertions.

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::testPatternStatus):
(TestWebKitAPI::TEST_F):
Added tests for each parsing status.

3:36 PM Changeset in webkit [181761] by rniwa@webkit.org
  • 5 edits in trunk/Websites/perf.webkit.org

Unreviewed build fixes.

  • public/include/manifest.php:

(Manifest::generate): These should be {} instead of [] when they're empty.

  • public/v2/data.js:

(Measurement.prototype.formattedRevisions): Don't assume previousRevisions[repositoryId] exits.

  • public/v2/manifest.js:

(App.Metric.fullName): Fixed the typo.

  • tests/admin-regenerate-manifest.js: Fixed the test.
2:59 PM Changeset in webkit [181760] by enrica@apple.com
  • 32 edits
    2 adds in trunk

<attachment> should put URLs on the pasteboard so that Finder can accept drops.
https://bugs.webkit.org/show_bug.cgi?id=142801
rdar://problem/19982527

Reviewed by Tim Horton.

Source/WebCore:

Test: editing/pasteboard/drag-and-drop-attachment-contenteditable.html

This patch adds all the necessary support to write attachment elements into
the pasteboard, including the promised type.

  • WebCore.xcodeproj/project.pbxproj:
  • page/DragActions.h:
  • page/DragClient.h:

(WebCore::DragClient::declareAndWriteAttachment):

  • page/DragController.cpp:

(WebCore::DragController::draggableElement):
(WebCore::DragController::startDrag):

  • page/DragController.h:

(WebCore::DragController::draggingAttachmentURL):

  • page/EventHandler.cpp:

(WebCore::EventHandler::dragHysteresisExceeded):
(WebCore::EventHandler::handleDrag):

  • page/mac/DragControllerMac.mm:

(WebCore::DragController::declareAndWriteAttachment):

  • page/win/DragControllerWin.cpp:

(WebCore::DragController::declareAndWriteAttachment):

  • platform/URL.cpp:

(WebCore::URL::fileURLWithFileSystemPath):

  • platform/URL.h:
  • rendering/HitTestResult.cpp:

(WebCore::HitTestResult::absoluteAttachmentURL):

  • rendering/HitTestResult.h:

Source/WebKit/mac:

This patch adds all the necessary support to write attachment elements into
the pasteboard, including the promised type in WK1.

  • Misc/WebNSPasteboardExtras.mm:

(-[NSPasteboard _web_declareAndWriteDragImageForElement:URL:title:archive:source:]):

  • WebCoreSupport/WebDragClient.h:
  • WebCoreSupport/WebDragClient.mm:

(WebDragClient::declareAndWriteAttachment):

  • WebView/WebHTMLView.mm:

(-[WebHTMLView namesOfPromisedFilesDroppedAtDestination:]):

  • WebView/WebUIDelegate.h:

Source/WebKit2:

This patch adds all the necessary support to write attachment elements into
the pasteboard, including the promised type in WK2.

  • UIProcess/API/mac/WKView.mm:

(-[WKView _setPromisedDataForImage:withFileName:withExtension:withTitle:withURL:withVisibleURL:withArchive:forPasteboard:]):
(-[WKView _setPromisedDataForAttachment:withExtension:withTitle:withURL:withVisibleURL:forPasteboard:]):
(-[WKView namesOfPromisedFilesDroppedAtDestination:]):
(-[WKView _setPromisedData:withFileName:withExtension:withTitle:withURL:withVisibleURL:withArchive:forPasteboard:]): Deleted.

  • UIProcess/API/mac/WKViewInternal.h:
  • UIProcess/PageClient.h:
  • UIProcess/WebPageProxy.h:
  • UIProcess/WebPageProxy.messages.in:
  • UIProcess/mac/PageClientImpl.h:
  • UIProcess/mac/PageClientImpl.mm:

(WebKit::PageClientImpl::setPromisedDataForImage):
(WebKit::PageClientImpl::setPromisedDataForAttachment):
(WebKit::PageClientImpl::setPromisedData): Deleted.

  • UIProcess/mac/WebPageProxyMac.mm:

(WebKit::WebPageProxy::setPromisedDataForImage):
(WebKit::WebPageProxy::setPromisedDataForAttachment):
(WebKit::WebPageProxy::setPromisedData): Deleted.

  • WebProcess/WebCoreSupport/WebDragClient.h:
  • WebProcess/WebCoreSupport/mac/WebDragClientMac.mm:

(WebKit::WebDragClient::declareAndWriteAttachment):
(WebKit::WebDragClient::declareAndWriteDragImage):

LayoutTests:

  • editing/pasteboard/drag-and-drop-attachment-contenteditable-expected.txt: Added.
  • editing/pasteboard/drag-and-drop-attachment-contenteditable.html: Added.
  • platform/mac-wk2/TestExpectations: Skipping new test on WK2 since it uses eventSender.
2:44 PM Changeset in webkit [181759] by jonowells@apple.com
  • 2 edits in trunk/Source/WebInspectorUI

Web Inspector: FilterBar for debugger sidebar hides breakpoints for displayed resources
https://bugs.webkit.org/show_bug.cgi?id=142777

Reviewed by Brian Burg.

Typing into the text input on the filter bar for the debugger sidebar no longer incorrectly hides the
breakpoints for scripts that match the text input.

  • UserInterface/Views/BreakpointTreeElement.js:

(WebInspector.BreakpointTreeElement.prototype.get filterableData): Added.

2:19 PM Changeset in webkit [181758] by akling@apple.com
  • 10 edits
    2 deletes in trunk/Source

DFGAllocator should use bmalloc's aligned allocator.
<https://webkit.org/b/142871>

Reviewed by Geoffrey Garen.

Source/JavaScriptCore:

Switch DFGAllocator to using bmalloc through fastAlignedMalloc().

  • dfg/DFGAllocator.h:

(JSC::DFG::Allocator<T>::allocateSlow):
(JSC::DFG::Allocator<T>::freeRegionsStartingAt):

  • heap/CopiedSpace.h:
  • heap/MarkedBlock.h:
  • heap/MarkedSpace.h:

Source/WTF:

Remove PageAllocationAligned since it has no more clients.

  • WTF.vcxproj/WTF.vcxproj:
  • WTF.vcxproj/WTF.vcxproj.filters:
  • WTF.xcodeproj/project.pbxproj:
  • wtf/CMakeLists.txt:
  • wtf/PageAllocationAligned.cpp: Removed.
  • wtf/PageAllocationAligned.h: Removed.
2:17 PM Changeset in webkit [181757] by Chris Dumez
  • 2 edits in trunk/Source/WebCore

Unreviewed, fix linking error after r181753.

Drop WEBCORE_EXPORT for Settings::minimumDOMTimerInterval() as it is
now inlined.

  • page/Settings.h:

(WebCore::Settings::minimumDOMTimerInterval):

2:16 PM Changeset in webkit [181756] by andersca@apple.com
  • 3 edits in trunk/Source/WebKit2

Cache::remove should take a Key instead of an entry
https://bugs.webkit.org/show_bug.cgi?id=142878

Reviewed by Antti Koivisto.

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::remove):

  • NetworkProcess/cache/NetworkCache.h:
1:50 PM Changeset in webkit [181755] by achristensen@apple.com
  • 2 edits in trunk/Tools

Fix API tests after r181754.

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(TestWebKitAPI::testRequest):

12:36 PM Changeset in webkit [181754] by beidson@apple.com
  • 11 edits in trunk

Part of content extensions should apply css selectors
https://bugs.webkit.org/show_bug.cgi?id=142604

Reviewed by Alex Christensen.

Source/WebCore:

Add a new action for applying the cached global stylesheet.

  • contentextensions/CompiledContentExtension.cpp:

(WebCore::ContentExtensions::CompiledContentExtension::globalDisplayNoneSelectors):

  • contentextensions/ContentExtensionActions.h:
  • contentextensions/ContentExtensionCompiler.cpp:

(WebCore::ContentExtensions::serializeActions):

  • contentextensions/ContentExtensionParser.cpp:

(WebCore::ContentExtensions::loadAction):

  • contentextensions/ContentExtensionRule.cpp:

(WebCore::ContentExtensions::Action::deserialize):

  • contentextensions/ContentExtensionRule.h:

(WebCore::ContentExtensions::Action::Action):
(WebCore::ContentExtensions::Action::operator==):
(WebCore::ContentExtensions::Action::stringArgument):
(WebCore::ContentExtensions::Action::cssSelector): Deleted.

  • contentextensions/ContentExtensionsBackend.cpp:

(WebCore::ContentExtensions::ContentExtensionsBackend::actionsForResourceLoad):

  • loader/cache/CachedResourceLoader.cpp:

(WebCore::CachedResourceLoader::requestResource):

Tools:

  • TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp:

(WebCore::ContentExtensions::operator<<):

12:22 PM Changeset in webkit [181753] by Chris Dumez
  • 15 edits in trunk/Source

Clean up DOMTimer related settings
https://bugs.webkit.org/show_bug.cgi?id=142837

Reviewed by Darin Adler.

Source/WebCore:

Clean up DOMTimer related settings:

  • Make default minimum timer interval 4ms instead of 10ms as all ports were setting it to 4ms and the specifications says 4ms.
  • Get rid of setters for default DOMTimer interval values as they are not set anymore.
  • Move default DOMTimer interval values from Settings to DOMTimer as those are global (not per-page) and not really settings.
  • Stop using abbreviations in the names (e.g. min -> minimum).
  • Move DOMTimer settings members from Page to Settings. There is no reason for those to be stored on the Page. The getters were private so call-sites had to go via Settings anyway. Also, call-sites already had to do a null check on the page to get the settings. It seems unfortunate for the settings to do another null-check on the page for retrieving the setting value from the page.
  • Inline the DOMTimer settings getters as these are trivial.
  • dom/Document.cpp:

(WebCore::Document::minimumTimerInterval):
(WebCore::Document::timerAlignmentInterval):

  • dom/ScriptExecutionContext.cpp:

(WebCore::ScriptExecutionContext::minimumTimerInterval):
(WebCore::ScriptExecutionContext::timerAlignmentInterval):

  • page/DOMTimer.h:
  • page/Page.cpp:

(WebCore::Page::Page):
(WebCore::Page::setTimerThrottlingEnabled):
(WebCore::Page::setMinimumTimerInterval): Deleted.
(WebCore::Page::minimumTimerInterval): Deleted.

  • page/Page.h:

(WebCore::Page::timerAlignmentInterval): Deleted.

  • page/Settings.cpp:

(WebCore::Settings::Settings):
(WebCore::Settings::setMinimumDOMTimerInterval):
(WebCore::Settings::setDOMTimerAlignmentInterval):
(WebCore::Settings::setHiddenPageDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::hiddenPageDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::setDefaultMinDOMTimerInterval): Deleted.
(WebCore::Settings::defaultMinDOMTimerInterval): Deleted.
(WebCore::Settings::setMinDOMTimerInterval): Deleted.
(WebCore::Settings::minDOMTimerInterval): Deleted.
(WebCore::Settings::setDefaultDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::defaultDOMTimerAlignmentInterval): Deleted.
(WebCore::Settings::domTimerAlignmentInterval): Deleted.

  • page/Settings.h:

(WebCore::Settings::minimumDOMTimerInterval):
(WebCore::Settings::domTimerAlignmentInterval):

  • testing/InternalSettings.cpp:

(WebCore::InternalSettings::Backup::Backup):
(WebCore::InternalSettings::Backup::restoreTo):
(WebCore::InternalSettings::setMinimumTimerInterval):

Source/WebKit/mac:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebView/WebView.mm:

(-[WebView _commonInitializationWithFrameName:groupName:]):

Source/WebKit/win:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebView.cpp:

(WebView::initWithFrame):
(WebView::defaultMinimumTimerInterval):

Source/WebKit2:

Stop setting the DOMTimers' default minimum interval to 4ms as this
is now the default.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::WebPage):

11:13 AM Changeset in webkit [181752] by Lucas Forschler
  • 5 edits in branches/safari-600.1.17-branch/Source

Versioning.

11:11 AM Changeset in webkit [181751] by Lucas Forschler
  • 1 copy in tags/Safari-600.1.17.10

New Tag.

10:52 AM Changeset in webkit [181750] by msaboff@apple.com
  • 7 edits in branches/safari-600.1.17-branch/Source

Merged r181628. <rdar://problem/19804738>

2015-03-16 Michael Saboff <msaboff@apple.com>

Windows X86-64 should use the fixed executable allocator
https://bugs.webkit.org/show_bug.cgi?id=142749

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Added jit/ExecutableAllocatorFixedVMPool.cpp to Windows build.

  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
  • JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
  • jit/ExecutableAllocatorFixedVMPool.cpp: Don't include unistd.h on Windows.

Source/WTF:

Set ENABLE_EXECUTABLE_ALLOCATOR_FIXED for Windows.
Needed to export MetaAllocator::currentStatistics() for use in JavaScriptCore.

  • wtf/MetaAllocator.h:
  • wtf/Platform.h:
10:14 AM Changeset in webkit [181749] by dino@apple.com
  • 2 edits in trunk/LayoutTests

http://webkit.org/b/142790

Temporarily skip animations/trigger-container-scroll-simple.html
while it is crashing.

  • platform/mac/TestExpectations:
9:42 AM Changeset in webkit [181748] by Brent Fulgham
  • 2 edits in trunk/Tools

[Win] Activate tests on EWS
https://bugs.webkit.org/show_bug.cgi?id=142850

Reviewed by Alexey Proskuryakov.

  • Scripts/webkitpy/common/config/ews.json: Add me as

the EWS bot watcher, and activate tests.

9:40 AM Changeset in webkit [181747] by Brent Fulgham
  • 2 edits in trunk/LayoutTests

[Win] Test gardening.

  • platform/win/TestExpectations:
6:25 AM Changeset in webkit [181746] by commit-queue@webkit.org
  • 2 edits in trunk/LayoutTests

[GTK] Skip Legacy WebNotifications test
https://bugs.webkit.org/show_bug.cgi?id=141962

The revision r177073 skips all legacy tests for notifications except from
http/tests/notifications/legacy/notification-request-permission-then-navigate.html
which was failing. We skip this test now too.

Patch by Marcos Chavarría Teijeiro <chavarria1991@gmail.com> on 2015-03-19
Reviewed by Carlos Garcia Campos.

  • platform/gtk/TestExpectations:
3:40 AM Changeset in webkit [181745] by Carlos Garcia Campos
  • 2 edits in releases/WebKitGTK/webkit-2.8/Source/WebCore

Merge r181744 - [GTK] Scrollbars look bad with GTK+ 3.16
https://bugs.webkit.org/show_bug.cgi?id=140800

Reviewed by Sergio Villar Senin.

Take margin into account when rendering scrollbars. This fixes the
huge scrollbars rendered with GTK+ 3.16. We don't need to check
the GTK+ version because in previous versions the marging were 0,
so the same code just works.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::adjustRectAccordingToMargin):
(WebCore::ScrollbarThemeGtk::paintTrackBackground):
(WebCore::ScrollbarThemeGtk::paintThumb):

3:24 AM Changeset in webkit [181744] by Carlos Garcia Campos
  • 2 edits in trunk/Source/WebCore

[GTK] Scrollbars look bad with GTK+ 3.16
https://bugs.webkit.org/show_bug.cgi?id=140800

Reviewed by Sergio Villar Senin.

Take margin into account when rendering scrollbars. This fixes the
huge scrollbars rendered with GTK+ 3.16. We don't need to check
the GTK+ version because in previous versions the marging were 0,
so the same code just works.

  • platform/gtk/ScrollbarThemeGtk.cpp:

(WebCore::adjustRectAccordingToMargin):
(WebCore::ScrollbarThemeGtk::paintTrackBackground):
(WebCore::ScrollbarThemeGtk::paintThumb):

2:01 AM Changeset in webkit [181743] by bshafiei@apple.com
  • 4 edits in tags/Safari-601.1.23.3/Source

Merged r181679. rdar://problem/20032670

1:58 AM Changeset in webkit [181742] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.3/Source/WebKit/mac

Merged r181674. rdar://problem/20032670

1:57 AM Changeset in webkit [181741] by bshafiei@apple.com
  • 6 edits in tags/Safari-601.1.23.3/Source

Merged r181668. rdar://problem/20032670

1:55 AM Changeset in webkit [181740] by bshafiei@apple.com
  • 3 edits in tags/Safari-601.1.23.3/Source/WebCore

Merged r181703. rdar://problem/19446938

1:53 AM Changeset in webkit [181739] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.3/Source/WebCore

Merged r181666. rdar://problem/19445803

1:51 AM Changeset in webkit [181738] by bshafiei@apple.com
  • 2 edits in tags/Safari-601.1.23.3/Source/WebCore

Merged r181616. rdar://problem/20184456

1:49 AM Changeset in webkit [181737] by bshafiei@apple.com
  • 7 edits
    4 copies in tags/Safari-601.1.23.3

Merged r181608. rdar://problem/20184456

1:27 AM Changeset in webkit [181736] by youenn.fablet@crf.canon.fr
  • 8 edits in trunk

[Streams API] Update ReadableStream API according new version of the specification
https://bugs.webkit.org/show_bug.cgi?id=142822

Reviewed by Benjamin Poulain.

Source/WebCore:

This patch updates the IDL of ReadableStream according the new version of the spec, which splits functionality between ReadableStream and ReadableStreamReader.
In particular, this patch removes read(), ready, closed and state from ReadableStream and it adds the getReader method.

Covered by updated readablestream-constructor.html test.

  • Modules/streams/ReadableStream.cpp:

(WebCore::ReadableStream::ReadableStream):
(WebCore::ReadableStream::state): Deleted.
(WebCore::ReadableStream::closed): Deleted.
(WebCore::ReadableStream::ready): Deleted.

  • Modules/streams/ReadableStream.h:

(WebCore::ReadableStream::internalState): Added to make mac build system happy, to be used by ReadableStreamReader.

  • Modules/streams/ReadableStream.idl:
  • bindings/js/JSReadableStreamCustom.cpp:

(WebCore::JSReadableStream::cancel):
(WebCore::JSReadableStream::getReader):
(WebCore::JSReadableStream::read): Deleted.
(WebCore::getOrCreatePromiseDeferredFromObject): Deleted.
(WebCore::readyPromiseSlotName): Deleted.
(WebCore::JSReadableStream::ready): Deleted.
(WebCore::closedPromiseSlotName): Deleted.
(WebCore::JSReadableStream::closed): Deleted.

LayoutTests:

Removing tests checking ready and closed.
Removing assertions checking read(), ready, closed and state.
Adding assertions to test getReader() and parameters of remaining methods.

  • streams/readablestream-constructor-expected.txt:
  • streams/readablestream-constructor.html:
1:19 AM Changeset in webkit [181735] by Csaba Osztrogonác
  • 4 edits in trunk

[GTK] Fix inspector userinterface related incremental build issue
https://bugs.webkit.org/show_bug.cgi?id=142849

Reviewed by Carlos Garcia Campos.

.:

  • Source/cmake/OptionsGTK.cmake: Revert r181733.

Tools:

  • Scripts/webkitdirs.pm:

(shouldRemoveCMakeCache):

12:54 AM Changeset in webkit [181734] by Chris Dumez
  • 4 edits in trunk

The network cache should ignore "cache-control: no-cache, must-revalidate" on history navigation
https://bugs.webkit.org/show_bug.cgi?id=142831
<rdar://problem/20209957>

Reviewed by Antti Koivisto.

Source/WebKit2:

The network cache should ignore "no-cache" and "must-revalidate" as
Cache-Control policy for history navigations to avoid unnecessary
revalidation in this case. Our memory cache already behaves this way.

On history navigation, our disk cache implementation currently
revalidates unconditionally resources if "cache-control: no-cache" is
used. It also revalidates expired resources if "cache-control:
must-revalidate" is used. This is sub-optimal.

RFC 7234 does not require us to do so [1]:
"""

User agents often have history mechanisms, such as "Back" buttons and
history lists, that can be used to redisplay a representation
retrieved earlier in a session.

The freshness model (Section 4.2) does not necessarily apply to
history mechanisms. That is, a history mechanism can display a
previous representation even if it has expired.

"""

Chrome and IE9+ [2] already ignore "cache-control: must-revalidate" on history navigation.

[1] https://tools.ietf.org/html/rfc7234#page-32
[2] http://blogs.msdn.com/b/ie/archive/2010/07/14/caching-improvements-in-internet-explorer-9.aspx

Test: http/tests/cache/disk-cache-validation-back-navigation-policy.html

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::decodeStorageEntry):

LayoutTests:

Rebaseline disk-cache-validation-back-navigation-policy.html test now
that we ignore "cache-control: no-cache, must-revalidate" on history
navigation. This is a progression.

  • http/tests/cache/disk-cache-validation-back-navigation-policy-expected.txt:
Note: See TracTimeline for information about the timeline view.