[Mac] Allow popup menus to override default appearance
[WebKit-https.git] / Source / WebCore / ChangeLog
1 2014-05-20  Dean Jackson  <dino@apple.com>
2
3         [Mac] Allow popup menus to override default appearance
4         https://bugs.webkit.org/show_bug.cgi?id=133129
5
6         Reviewed by Tim Horton.
7
8         WebKitSystemInterface's WKPopupMenu has a flag to hide
9         the arrows at the end of a popup-menu (e.g. <select>).
10         Expose that via adding a hasDefaultAppearance flag to
11         PopupMenuStyle, which then passes it on to WKSI.
12
13         * platform/PopupMenuStyle.h:
14         (WebCore::PopupMenuStyle::PopupMenuStyle): New flag in constructor.
15         (WebCore::PopupMenuStyle::hasDefaultAppearance): New flag.
16         * platform/mac/WebCoreSystemInterface.h: wkPopupMenu signature has changed to accept
17         the new flag.
18         * platform/mac/WebCoreSystemInterface.mm: Ditto.
19         * rendering/RenderMenuList.cpp:
20         (RenderMenuList::itemStyle): Pass in true as default appearance when creating
21         the PopupMenuStyle. We don't need it.
22         (RenderMenuList::menuStyle): In this case we pass in the negated value of
23         style().hasAppearance(), which indicates if we are overriding the built-in drawing.
24         * rendering/RenderSearchField.cpp:
25         (WebCore::RenderSearchField::menuStyle): Use true as the default value.
26
27 2014-05-20  Eric Carlson  <eric.carlson@apple.com>
28
29         [Mac] do not deactivate an audio session that has running I/O
30         https://bugs.webkit.org/show_bug.cgi?id=133127
31
32         Reviewed by Jer Noble.
33
34         * page/Settings.h:
35         (WebCore::Settings::setShouldManageAudioSessionCategory): Renamed from setShouldManageAudioSession.
36         (WebCore::Settings::shouldManageAudioSessionCategory): Renamed from shouldManageAudioSession.
37         (WebCore::Settings::setShouldManageAudioSession): Deleted.
38         (WebCore::Settings::shouldManageAudioSession): Deleted.
39
40         * platform/audio/mac/MediaSessionManagerMac.cpp:
41         (MediaSessionManager::updateSessionState): Don't deactivate the session if there are any
42             Video or Audio sessions.
43
44         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
45         (WebCore::MediaPlayerPrivateAVFoundationObjC::assetStatus): Drive-by change to log errors 
46             returned by -statusOfValueForKey:error: in debug builds.
47
48 2014-05-20  Beth Dakin  <bdakin@apple.com>
49
50         REGRESSION: All non-mainframe scrollbars don't paint after r169065
51         https://bugs.webkit.org/show_bug.cgi?id=133132
52         -and corresponding-
53         <rdar://problem/16968850>
54
55         Reviewed by Geoff Garen.
56
57         We should not universally return true here. This feature will only work for 
58         scrollbars with layers.
59         * platform/ScrollableArea.h:
60         * platform/Scrollbar.cpp:
61         (WebCore::Scrollbar::supportsUpdateOnSecondaryThread):
62
63 2014-05-20  Daniel Bates  <dabates@apple.com>
64
65         Element within flattened frame may update its scroll state during the layout phase of the wrong RenderView
66         https://bugs.webkit.org/show_bug.cgi?id=133013
67         <rdar://problem/16760154>
68
69         Reviewed by David Hyatt.
70
71         Fixes an issue where the scroll state of an element may be updated during the layout of the wrong
72         RenderView. In particular, the scroll state of an element inside a CSS flex box in a flattened
73         frame f is updated during the layout of the RenderView associated with the parent frame of f instead
74         of during the layout of the RenderView associated with f.
75
76         The layout machinery assumes that the scroll state of each scrollable element is updated before the
77         completion of layout for its associated RenderView. Currently we have logic to defer updating the scroll
78         state of a scrollable element until completion of recursive layout. For a page with a flattened frame, we
79         defer such updates until completion of layout for all RenderViews along the ancestor frame hierarchy of
80         each flattened frame regardless of the RenderView associated with the element that originated the
81         deferred scroll state request. Instead, only the RenderView associated with the element that deferred its
82         scroll state update should dispatch the scroll state update.
83
84         Tests: fast/frames/flattening/scrollable-flexbox-inside-iframe-with-zero-height-and-needs-full-repaint-crash.html
85                fast/frames/flattening/scrollable-flexbox-inside-iframe-with-zero-height-assertion-failure.html
86
87         * rendering/RenderBlock.cpp: Removed WTF::-prefix in typedef definition for ContinuationOutlineTableMap.
88         (WebCore::UpdateScrollInfoAfterLayoutTransaction::UpdateScrollInfoAfterLayoutTransaction): Added; a struct
89         that represents a RenderView v, nested transaction count, and a list of RenderBlocks in v that will need
90         to have their scroll state updated.
91         (WebCore::updateScrollInfoAfterLayoutTransactionStack): Added; returns the global stack of transactions.
92         (WebCore::RenderBlock::willBeDestroyed): Call removeFromUpdateScrollInfoAfterLayoutTransaction(), which
93         was formerly named as removeFromDelayedUpdateScrollInfoSet.
94         (WebCore::currentUpdateScrollInfoAfterLayoutTransaction): Added; returns the top-most transaction in the
95         global stack.
96         (WebCore::RenderBlock::beginUpdateScrollInfoAfterLayoutTransaction): Modified as appropriate to make use
97         of the global stack of transactions; formerly named startDelayUpdateScrollInfo.
98         (WebCore::RenderBlock::endAndCommitUpdateScrollInfoAfterLayoutTransaction): Modified as appropriate to
99         make use of the global stack of transactions; formerly named finishDelayUpdateScrollInfo.
100         (WebCore::RenderBlock::removeFromUpdateScrollInfoAfterLayoutTransaction): Modified as appropriate to make
101         use of the global stack of transactions; formerly named removeFromDelayedUpdateScrollInfoSet.
102         (WebCore::RenderBlock::updateScrollInfoAfterLayout): Modified as appropriate to make use of the global
103         stack of transactions.
104         (WebCore::RenderBlock::layout): Ditto.
105         (WebCore::RenderBlock::startDelayUpdateScrollInfo): Deleted.
106         (WebCore::RenderBlock::finishDelayUpdateScrollInfo): Deleted.
107         (WebCore::RenderBlock::removeFromDelayedUpdateScrollInfoSet): Deleted.
108         * rendering/RenderBlock.h:
109         * rendering/RenderBlockFlow.cpp:
110         (WebCore::RenderBlockFlow::willBeDestroyed): Call removeFromUpdateScrollInfoAfterLayoutTransaction(), which
111         was formerly named removeFromDelayedUpdateScrollInfoSet.
112         * rendering/RenderDeprecatedFlexibleBox.cpp:
113         (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox): Call {begin, end}UpdateScrollInfoAfterLayoutTransaction(),
114         which was formerly named {start, end}DelayUpdateScrollInfo.
115         (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox): Ditto.
116         * rendering/RenderFlexibleBox.cpp:
117         (WebCore::RenderFlexibleBox::layoutBlock): Ditto.
118
119 2014-05-20  Beth Dakin  <bdakin@apple.com>
120
121         REGRESSION (r169065): Mountain Lion run-api-tests failures: ASSERTION FAILED: 
122         Uncaught exception - -[NSRegularLegacyScrollerImp setPresentationValue:]: 
123         unrecognized selector sent to instance 0x7ff51aa38000
124         https://bugs.webkit.org/show_bug.cgi?id=133121
125
126         Reviewed by Tim Horton.
127
128         * platform/mac/ScrollbarThemeMac.mm:
129         (WebCore::ScrollbarThemeMac::setPaintCharacteristicsForScrollbar):
130
131 2014-05-19  Simon Fraser  <simon.fraser@apple.com>
132
133         REGRESSION (r169063) Fixed and sticky nodes misplaced on scrolling sometimes
134         https://bugs.webkit.org/show_bug.cgi?id=133106
135         <rdar://problem/16967648>
136
137         Reviewed by Sam Weinig.
138
139         Fix regression from r169063. That commit removed scrolledContentsLayers from 
140         frame scrolling nodes, but they do actually use them.
141         
142         So put them back; not in the base class, because they have a somewhat different
143         meaning for overflow scrolling and frame scrolling.
144
145         * WebCore.exp.in:
146         * page/scrolling/AsyncScrollingCoordinator.cpp:
147         (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
148         (WebCore::AsyncScrollingCoordinator::updateFrameScrollingNode):
149         * page/scrolling/AsyncScrollingCoordinator.h:
150         * page/scrolling/ScrollingCoordinator.h:
151         (WebCore::ScrollingCoordinator::updateFrameScrollingNode):
152         * page/scrolling/ScrollingStateFrameScrollingNode.cpp:
153         (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
154         (WebCore::ScrollingStateFrameScrollingNode::setScrolledContentsLayer):
155         * page/scrolling/ScrollingStateFrameScrollingNode.h:
156         * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm:
157         (WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):
158         * rendering/RenderLayerCompositor.cpp:
159         (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
160
161 2014-05-20  Radu Stavila  <stavila@adobe.com>
162
163         REGRESSION: [CSS Regions] Content flowed directly into the flow thread that ends up in the second region is not properly repainted
164         https://bugs.webkit.org/show_bug.cgi?id=133111
165
166         Reviewed by David Hyatt.
167
168         When computing the repaint rect of an element flowed into a flow thread, if the element is flowed directly into
169         the flow thread (meaning its containing block is the flow thread itself), the region's position within the flow
170         must no longer be taken into consideration, because its already included in the element's |topLeft|.
171
172         Test: fast/regions/hover-element-flowed-second-region.html
173
174         * rendering/RenderBox.cpp:
175         (WebCore::RenderBox::computeRectForRepaint):
176
177 2014-05-20  Alex Christensen  <achristensen@webkit.org>
178
179         Fix web timing assertion failure.
180         https://bugs.webkit.org/show_bug.cgi?id=133094
181         <rdar://problem/16966032>
182
183         Reviewed by Alexey Proskuryakov.
184
185         * platform/network/mac/ResourceHandleMac.mm:
186         (WebCore::ResourceHandle::getConnectionTimingData):
187         Set requestStart and responseStart to 0 instead of -1 to match the 
188         ResourceLoadTiming constructor and prevent the assertion failure in
189         PerformanceTiming::responseStart.
190
191 2014-05-20  Prashant Hiremath  <hiremathprashants@gmail.com>
192
193         Only set title on SVG documents
194         https://bugs.webkit.org/show_bug.cgi?id=133068
195
196         Reviewed by Dirk Schulze.
197
198         Test: svg/custom/html_document_set_title.html
199
200         * svg/SVGTitleElement.cpp:
201         (WebCore::SVGTitleElement::insertedInto):
202         (WebCore::SVGTitleElement::removedFrom):
203         (WebCore::SVGTitleElement::childrenChanged):
204
205 2014-05-20  peavo@outlook.com  <peavo@outlook.com>
206
207         [Curl] Invalid content in cache file, causes broken rendering.
208         https://bugs.webkit.org/show_bug.cgi?id=133069
209
210         Reviewed by Brent Fulgham.
211
212         When data for a url is received as multiple parts, the cache file for the url is truncated when opened for writing,
213         and will only contain the last part of data received.
214         This is fixed by only opening the file once, and close it after all data has been received.
215
216         * platform/network/curl/CurlCacheEntry.cpp:
217         (WebCore::CurlCacheEntry::CurlCacheEntry): Initialize cache file handle member.
218         (WebCore::CurlCacheEntry::~CurlCacheEntry): Close cache file.
219         (WebCore::CurlCacheEntry::saveCachedData): Only open cache file once to avoid truncating.
220         (WebCore::CurlCacheEntry::didFail): Close cache file.
221         (WebCore::CurlCacheEntry::didFinishLoading): Ditto.
222         (WebCore::CurlCacheEntry::openContentFile): Added method to open cache file.
223         (WebCore::CurlCacheEntry::closeContentFile): Added method to close cache file.
224         * platform/network/curl/CurlCacheEntry.h: Added file handle member, and methods to open and close cache file.
225
226 2014-05-20  Radu Stavila  <stavila@adobe.com>
227
228         [CSS Regions] Block incorrectly sized when containing an unsplittable box
229         https://bugs.webkit.org/show_bug.cgi?id=132601
230
231         Reviewed by Antti Koivisto.
232
233         When laying out elements in a region, when an inline element is encountered
234         the size of its parent must not be increased beyond the bottom of the current region,
235         unless if its the last region. This will ensure that the next sibling of the
236         inline element is correctly laid out at the top of the next region, instead
237         of leaving an empty space equal to the height of the overflow, as it did until now.
238
239         Tests: fast/regions/inline-block-inside-anonymous-overflow.html
240                fast/regions/inline-block-overflow.html
241
242         * rendering/RenderBlockFlow.cpp:
243         (WebCore::RenderBlockFlow::adjustLinePositionForPagination):
244         (WebCore::RenderBlockFlow::hasNextPage):
245         * rendering/RenderBlockFlow.h:
246         * rendering/RenderBlockLineLayout.cpp:
247         (WebCore::RenderBlockFlow::layoutRunsAndFloatsInRange):
248         (WebCore::RenderBlockFlow::linkToEndLineIfNeeded):
249         (WebCore::RenderBlockFlow::determineStartPosition):
250         (WebCore::RenderBlockFlow::checkPaginationAndFloatsAtEndLine):
251
252 2014-05-20  Mihnea Ovidenie  <mihnea@adobe.com>
253
254         [CSS Regions] Crash while painting block selection gaps in regions
255         https://bugs.webkit.org/show_bug.cgi?id=132720
256
257         Reviewed by David Hyatt.
258
259         The fix for WebKit bug https://bugs.webkit.org/show_bug.cgi?id=131511
260         allowed selection highlight to match the DOM selection when the start
261         and end point of the selection were in different flow threads. In order
262         to enable that, the selection was performed separately on view and
263         render flow threads, considered selection subtrees.
264
265         However, the start and end points for each selection subtree were computed
266         by means of Range class but it is not always possible to construct a valid
267         Range from two pairs of RenderObjects and offsets.
268
269         This patch keeps the substrees approach but instead of storing the endpoints
270         for each subtree in a Range and continuously extending the Range, it stores them
271         using the already available SelectionSubtreeRoot class. After the end points are
272         computed for each subtree and before processing the subtree selection, the end points
273         are adjusted in a similar fashion as the one used in FrameSelection::updateAppearance(),
274         to make sure we are passing the same expected information to the method implementing
275         the visible selection processing.
276
277         Test: fast/regions/selection-gaps-paint-crash.html
278
279         * rendering/RenderView.cpp:
280         (WebCore::RenderView::splitSelectionBetweenSubtrees):
281         * rendering/SelectionSubtreeRoot.cpp:
282         (WebCore::SelectionSubtreeRoot::adjustForVisibleSelection):
283         * rendering/SelectionSubtreeRoot.h:
284         (WebCore::SelectionSubtreeRoot::selectionClear):
285
286 2014-05-19  Simon Fraser  <simon.fraser@apple.com>
287
288         Scrolling pages with large TiledBacking content layers creates way too many tiles
289         https://bugs.webkit.org/show_bug.cgi?id=133101
290
291         Reviewed by Tim Horton.
292
293         Fix the GraphicsLayerCA::adjustTiledLayerVisibleRect() logic to avoid making giant rects if the old
294         and new visible rects don't overlap.
295
296         * platform/graphics/TiledBacking.h:
297         * platform/graphics/ca/GraphicsLayerCA.cpp:
298         (WebCore::GraphicsLayerCA::adjustTiledLayerVisibleRect):
299         * platform/graphics/ca/mac/TileController.h:
300
301 2014-05-19  Simon Fraser  <simon.fraser@apple.com>
302
303         Correctly maintain the "isInWindow" state for all TiledBackings
304         https://bugs.webkit.org/show_bug.cgi?id=133095
305
306         Reviewed by Tim Horton.
307         
308         We never updated the "isInWindow" state for TiledBacking that wasn't the RenderView's
309         backing. Fix it by having RenderLayerCompositor::setIsInWindow() recurse through all
310         layers (if necessary), updating their state. Also set the state on newly created
311         TiledBackings.
312
313         * rendering/RenderLayerCompositor.cpp:
314         (WebCore::RenderLayerCompositor::layerTiledBackingUsageChanged):
315         (WebCore::RenderLayerCompositor::setIsInWindowForLayerIncludingDescendants):
316         (WebCore::RenderLayerCompositor::setIsInWindow):
317         (WebCore::RenderLayerCompositor::pageTiledBacking): Deleted.
318         * rendering/RenderLayerCompositor.h:
319
320 2014-05-19  Dean Jackson  <dino@apple.com>
321
322         [iOS] Use status display for live streams
323         https://bugs.webkit.org/show_bug.cgi?id=133097
324
325         Reviewed by Sam Weinig.
326
327         Follow-on from https://bugs.webkit.org/show_bug.cgi?id=131390
328         Allow the iOS controls to use the status display field.
329
330         * Modules/mediacontrols/mediaControlsiOS.js:
331         (ControllerIOS.prototype.configureInlineControls): Live streams should
332         not have a timeline or rewind button.
333
334 2014-05-19  Myles C. Maxfield  <litherum@gmail.com>
335
336         Text decorations do not contribute to visual overflow
337         https://bugs.webkit.org/show_bug.cgi?id=132773
338
339         Reviewed by Antti Koivisto.
340
341         This patch creates a function, visualOverflowForDecorations, which computes
342         how much visual overflow to add around a text box due to text decorations. Most of the time,
343         text decorations are fully contained within the text box, so the result is usually 0.
344
345         This function exists within style/InlineTextBoxStyle.cpp, which is an added file. This is
346         so that it can be called from setLogicalWidthForTextRun() inside RenderBlockLineLayout.cpp
347         and from RenderStyle::changeAffectsVisualOverflow(). The former case passes in the full
348         InlineTextBox and the latter case just passes in a RenderStyle (because the InlineTextBox
349         is unavailable.)
350
351         This patch also modifies RenderTableSection::spannedColumns() to fix an off-by-one error
352         that was causing table borders to not be drawn when they existed right on the edge of
353         a repaint rect.
354
355         Tests: fast/css3-text/css3-text-decoration/repaint/underline-outside-of-layout-rect.html
356         Tests: fast/repaint/border-collapse-table-off-by-one-expected.html
357
358         * WebCore.vcxproj/WebCore.vcxproj: Adding reference to new InlineTextBoxStyle.cpp file
359         * WebCore.vcxproj/WebCore.vcxproj.filters: Adding reference to new InlineTextBoxStyle files
360         * WebCore.xcodeproj/project.pbxproj: Adding reference to new InlineTextBoxStyle files
361         * rendering/InlineTextBox.cpp:
362         (WebCore::computeUnderlineOffset): Moved to InlineTextBox.cpp
363         (WebCore::getWavyStrokeParameters): Moved to InlineTextBox.cpp
364         (WebCore::InlineTextBox::paintDecoration): Update to use newly refactored functions
365         * rendering/RenderBlockLineLayout.cpp:
366         (WebCore::setLogicalWidthForTextRun): Call visualOverflowForDecorations()
367         * rendering/RenderTableSection.cpp:
368         * rendering/RenderTableSelection.cpp: Fix off-by-one error when the boundary of a repaint
369         rect lies exactly on top of a table column position
370         * rendering/style/RenderStyle.cpp:
371         (WebCore::RenderStyle::changeAffectsVisualOverflow): Inspects shadows and text decorations
372         (WebCore::RenderStyle::changeRequiresLayout): Calls changeAffectsVisualOverflow()
373         (WebCore::RenderStyle::changeRequiresRepaintIfTextOrBorderOrOutline): Moved code from here
374         to changeAffectsVisualOverflow().
375         * rendering/style/RenderStyle.h: Function signature
376         * style/InlineTextBoxStyle.cpp: Added.
377         (WebCore::computeUnderlineOffset): Moved from InlineTextBox.cpp
378         (WebCore::getWavyStrokeParameters): Moved from InlineTextBox.cpp
379         (WebCore::extendIntToFloat): Convenience function for dealing with the fact that
380         underline bounding boxes use floats and GlyphOverflow uses ints
381         (WebCore::visualOverflowForDecorations): Given
382         vertical overflow bounds, possibly extend those to include location of
383         decorations.
384         * style/InlineTextBoxStyle.h: Added. Function signatures.
385         (WebCore::textDecorationStrokeThickness): Refactored from InlineTextBox.cpp
386         (WebCore::wavyOffsetFromDecoration): Refactored from InlineTextBox.cpp
387         * platform/graphics/Font.h:
388         (WebCore::GlyphOverflow::isEmpty): Convenience function
389         (WebCore::GlyphOverflow::extendTo): Convenience function
390
391 2014-05-19  Alex Christensen  <achristensen@webkit.org>
392
393         Unreviewed build fix after r169082
394
395         * platform/network/ResourceHandle.h:
396         Added NSDictionary declaration.
397
398 2014-05-19  Beth Dakin  <bdakin@apple.com>
399
400         REGRESSION: Standalone images need to take topContentInset into account
401         https://bugs.webkit.org/show_bug.cgi?id=133092
402         -and corresponding-
403         <rdar://problem/16945791>
404
405         Reviewed by Darin Adler.
406
407         The FrameView’s size is accurate in terms of the NSWindow size, but that is not 
408         really what the ImageDocument code is looking for here. The ImageDocument wants to 
409         know the size of the unobscured viewport area. We should use visibleSize() for 
410         that.
411         * html/ImageDocument.cpp:
412         (WebCore::ImageDocument::scale):
413         (WebCore::ImageDocument::imageFitsInWindow):
414         (WebCore::ImageDocument::imageClicked):
415
416 2014-05-19  Alex Christensen  <achristensen@webkit.org>
417
418         Collect web timing data on iOS.
419         https://bugs.webkit.org/show_bug.cgi?id=133075
420
421         Reviewed by Sam Weinig.
422
423         * platform/network/ResourceHandle.h:
424         Added setCollectsTimingData wrapper and getConnectionTimingData declarations.
425         getConnectionTimingData with a dictionary parameter is a private helper function.
426         * platform/network/cf/ResourceHandleCFNet.cpp:
427         (WebCore::ResourceHandle::start):
428         Call setCollectsTimingData wrapper when creating a connection to ensure that timing data is collected.
429         * platform/network/cf/ResourceHandleCFURLConnectionDelegate.cpp:
430         (WebCore::ResourceHandleCFURLConnectionDelegate::didReceiveResponseCallback):
431         * platform/network/cf/ResourceHandleCFURLConnectionDelegate.h:
432         * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.cpp:
433         (WebCore::ResourceHandleCFURLConnectionDelegateWithOperationQueue::didReceiveResponse):
434         * platform/network/cf/ResourceHandleCFURLConnectionDelegateWithOperationQueue.h:
435         * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.cpp:
436         (WebCore::SynchronousResourceHandleCFURLConnectionDelegate::didReceiveResponse):
437         * platform/network/cf/SynchronousResourceHandleCFURLConnectionDelegate.h:
438         Pass the CFURLConnectionRef to didReceiveResponse to get timing data from.
439         * platform/network/mac/ResourceHandleMac.mm:
440         (WebCore::ResourceHandle::getConnectionTimingData):
441         Moved from getTimingData to compile regardless of using CFNetwork and added wrapper with CFDictionaryRef.
442         (WebCore::ResourceHandle::setCollectsTimingData):
443         Added wrapper to call objc function from c++.
444         (WebCore::ResourceHandle::getTimingData):
445         Renamed to getConnectionTimingData.
446         * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
447         (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
448         * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
449         (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
450         Updated function name from getTimingData to getConnectionTimingData.
451
452 2014-05-19  Chris Fleizach  <cfleizach@apple.com>
453
454         AX: VoiceOver sees the WebArea out of order when topContentInset is used
455         https://bugs.webkit.org/show_bug.cgi?id=133091
456
457         Reviewed by Simon Fraser.
458
459         Modify the scroll view's frame so that it recognizes the content inset.
460         This is needed so that when VoiceOver sorts elements to create an ordering,
461         the web area is not ordered at the top of the screen.
462
463         Test: platform/mac-wk2/accessibility/content-inset-scrollview-frame.html
464
465         * accessibility/AccessibilityScrollView.cpp:
466         (WebCore::AccessibilityScrollView::elementRect):
467
468 2014-05-19  Beth Dakin  <bdakin@apple.com>
469
470         Scrollbars display incorrectly after switching between fast and slow scrolling 
471         mode, affects Find and real sites
472         https://bugs.webkit.org/show_bug.cgi?id=133077
473         -and corresponding-
474         <rdar://problem/16888608>
475
476         Reviewed by Tim Horton.
477
478         We should always return true here when updating on the secondary thread is 
479         supported. It does not need to be gated on whether we are actively taking 
480         advantage of that support at this moment.
481         * platform/Scrollbar.cpp:
482         (WebCore::Scrollbar::supportsUpdateOnSecondaryThread):
483
484         Always update the presentationValue whenever we update the doubleValue just to 
485         keep them in sync.
486         * platform/mac/ScrollbarThemeMac.mm:
487         (WebCore::ScrollbarThemeMac::setPaintCharacteristicsForScrollbar):
488
489 2014-05-19  Simon Fraser  <simon.fraser@apple.com>
490
491         Split scrolling tree ScrollingNodes into FrameScrollingNodes and OverflowScrollingNodes
492         https://bugs.webkit.org/show_bug.cgi?id=133022
493
494         Reviewed by Sam Weinig.
495
496         In both the scrolling state tree and the scrolling tree, split the "scrolling nodes"
497         into FrameScrolling and OverflowScrolling nodes.
498         
499         Move what was the "viewportSize" property onto the base class for the scrolling
500         nodes, calling it "scrollableAreaSize".
501         
502         Make minimum/maximumScrollPosition() virtual so we can share more code (and there
503         is more code sharing to be done in future).
504
505         * Configurations/WebCore.xcconfig: Remove ScrollingStateScrollingNodeMac.mm and ScrollingTreeScrollingNodeMac.mm
506         from the list, using #ifdefs in the file instead.
507         * WebCore.exp.in: Lots of exports.
508         * WebCore.xcodeproj/project.pbxproj: New files.
509         * page/scrolling/AsyncScrollingCoordinator.cpp:
510         (WebCore::AsyncScrollingCoordinator::frameViewLayoutUpdated):
511         (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
512         (WebCore::AsyncScrollingCoordinator::updateFrameScrollingNode):
513         (WebCore::AsyncScrollingCoordinator::updateOverflowScrollingNode):
514         (WebCore::AsyncScrollingCoordinator::recomputeWheelEventHandlerCountForFrameView):
515         (WebCore::AsyncScrollingCoordinator::updateScrollingNode): Deleted.
516         (WebCore::AsyncScrollingCoordinator::setScrollbarPaintersFromScrollbarsForNode): Deleted.
517         This tiny function didn't need to exist.
518         * page/scrolling/AsyncScrollingCoordinator.h:
519         * page/scrolling/ScrollingCoordinator.h:
520         (WebCore::ScrollingCoordinator::updateFrameScrollingNode):
521         (WebCore::ScrollingCoordinator::updateOverflowScrollingNode):
522         (WebCore::ScrollingCoordinator::updateScrollingNode): Deleted.
523         * page/scrolling/ScrollingStateFrameScrollingNode.cpp: Copied from Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp.
524         (WebCore::ScrollingStateFrameScrollingNode::create):
525         (WebCore::ScrollingStateFrameScrollingNode::ScrollingStateFrameScrollingNode):
526         (WebCore::ScrollingStateFrameScrollingNode::~ScrollingStateFrameScrollingNode):
527         (WebCore::ScrollingStateFrameScrollingNode::clone):
528         (WebCore::ScrollingStateFrameScrollingNode::setFrameScaleFactor):
529         (WebCore::ScrollingStateFrameScrollingNode::setNonFastScrollableRegion):
530         (WebCore::ScrollingStateFrameScrollingNode::setWheelEventHandlerCount):
531         (WebCore::ScrollingStateFrameScrollingNode::setSynchronousScrollingReasons):
532         (WebCore::ScrollingStateFrameScrollingNode::setScrollBehaviorForFixedElements):
533         (WebCore::ScrollingStateFrameScrollingNode::setHeaderHeight):
534         (WebCore::ScrollingStateFrameScrollingNode::setFooterHeight):
535         (WebCore::ScrollingStateFrameScrollingNode::setTopContentInset):
536         (WebCore::ScrollingStateFrameScrollingNode::setCounterScrollingLayer):
537         (WebCore::ScrollingStateFrameScrollingNode::setInsetClipLayer):
538         (WebCore::ScrollingStateFrameScrollingNode::setContentShadowLayer):
539         (WebCore::ScrollingStateFrameScrollingNode::setHeaderLayer):
540         (WebCore::ScrollingStateFrameScrollingNode::setFooterLayer):
541         (WebCore::ScrollingStateFrameScrollingNode::setScrollbarPaintersFromScrollbars):
542         (WebCore::ScrollingStateFrameScrollingNode::dumpProperties):
543         * page/scrolling/ScrollingStateFrameScrollingNode.h: Copied from Source/WebCore/page/scrolling/ScrollingStateScrollingNode.h.
544         * page/scrolling/ScrollingStateNode.h:
545         (WebCore::LayerRepresentation::layerID):
546         (WebCore::ScrollingStateNode::isFrameScrollingNode):
547         (WebCore::ScrollingStateNode::isOverflowScrollingNode):
548         * page/scrolling/ScrollingStateOverflowScrollingNode.cpp: Added.
549         (WebCore::ScrollingStateOverflowScrollingNode::create):
550         (WebCore::ScrollingStateOverflowScrollingNode::ScrollingStateOverflowScrollingNode):
551         (WebCore::ScrollingStateOverflowScrollingNode::~ScrollingStateOverflowScrollingNode):
552         (WebCore::ScrollingStateOverflowScrollingNode::clone):
553         (WebCore::ScrollingStateOverflowScrollingNode::setScrolledContentsLayer):
554         (WebCore::ScrollingStateOverflowScrollingNode::dumpProperties):
555         * page/scrolling/ScrollingStateOverflowScrollingNode.h: Copied from Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm.
556         (WebCore::ScrollingStateOverflowScrollingNode::scrolledContentsLayer):
557         * page/scrolling/ScrollingStateScrollingNode.cpp:
558         (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
559         (WebCore::ScrollingStateScrollingNode::setScrollableAreaSize):
560         (WebCore::ScrollingStateScrollingNode::setTotalContentsSize):
561         (WebCore::ScrollingStateScrollingNode::dumpProperties):
562         (WebCore::ScrollingStateScrollingNode::create): Deleted.
563         (WebCore::ScrollingStateScrollingNode::clone): Deleted.
564         (WebCore::ScrollingStateScrollingNode::setViewportSize): Deleted.
565         (WebCore::ScrollingStateScrollingNode::setFrameScaleFactor): Deleted.
566         (WebCore::ScrollingStateScrollingNode::setNonFastScrollableRegion): Deleted.
567         (WebCore::ScrollingStateScrollingNode::setWheelEventHandlerCount): Deleted.
568         (WebCore::ScrollingStateScrollingNode::setSynchronousScrollingReasons): Deleted.
569         (WebCore::ScrollingStateScrollingNode::setScrollBehaviorForFixedElements): Deleted.
570         (WebCore::ScrollingStateScrollingNode::setHeaderHeight): Deleted.
571         (WebCore::ScrollingStateScrollingNode::setFooterHeight): Deleted.
572         (WebCore::ScrollingStateScrollingNode::setTopContentInset): Deleted.
573         (WebCore::ScrollingStateScrollingNode::setScrolledContentsLayer): Deleted.
574         (WebCore::ScrollingStateScrollingNode::setCounterScrollingLayer): Deleted.
575         (WebCore::ScrollingStateScrollingNode::setInsetClipLayer): Deleted.
576         (WebCore::ScrollingStateScrollingNode::setContentShadowLayer): Deleted.
577         (WebCore::ScrollingStateScrollingNode::setHeaderLayer): Deleted.
578         (WebCore::ScrollingStateScrollingNode::setFooterLayer): Deleted.
579         (WebCore::ScrollingStateScrollingNode::setScrollbarPaintersFromScrollbars): Deleted.
580         * page/scrolling/ScrollingStateScrollingNode.h:
581         (WebCore::ScrollingStateScrollingNode::scrollableAreaSize):
582         (WebCore::ScrollingStateScrollingNode::totalContentsSize):
583         * page/scrolling/ScrollingStateTree.cpp:
584         (WebCore::ScrollingStateTree::attachNode):
585         (WebCore::ScrollingStateTree::commit):
586         * page/scrolling/ScrollingStateTree.h:
587         (WebCore::ScrollingStateTree::rootStateNode):
588         (WebCore::ScrollingStateTree::setRootStateNode):
589         * page/scrolling/ScrollingTree.cpp:
590         (WebCore::ScrollingTree::commitNewTreeState):
591         * page/scrolling/ScrollingTreeFrameScrollingNode.cpp: Added.
592         (WebCore::ScrollingTreeFrameScrollingNode::ScrollingTreeFrameScrollingNode):
593         (WebCore::ScrollingTreeFrameScrollingNode::~ScrollingTreeFrameScrollingNode):
594         (WebCore::ScrollingTreeFrameScrollingNode::updateBeforeChildren):
595         * page/scrolling/ScrollingTreeFrameScrollingNode.h: Copied from Source/WebCore/page/scrolling/ScrollingTreeScrollingNode.h.
596         (WebCore::ScrollingTreeFrameScrollingNode::updateLayersAfterDelegatedScroll):
597         (WebCore::ScrollingTreeFrameScrollingNode::synchronousScrollingReasons):
598         (WebCore::ScrollingTreeFrameScrollingNode::shouldUpdateScrollLayerPositionSynchronously):
599         (WebCore::ScrollingTreeFrameScrollingNode::frameScaleFactor):
600         (WebCore::ScrollingTreeFrameScrollingNode::headerHeight):
601         (WebCore::ScrollingTreeFrameScrollingNode::footerHeight):
602         (WebCore::ScrollingTreeFrameScrollingNode::topContentInset):
603         (WebCore::ScrollingTreeFrameScrollingNode::scrollBehaviorForFixedElements):
604         * page/scrolling/ScrollingTreeNode.h:
605         (WebCore::ScrollingTreeNode::isFrameScrollingNode):
606         (WebCore::ScrollingTreeNode::isOverflowScrollingNode):
607         * page/scrolling/ScrollingTreeOverflowScrollingNode.cpp: Copied from Source/WebKit2/UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h.
608         (WebCore::ScrollingTreeOverflowScrollingNode::ScrollingTreeOverflowScrollingNode):
609         (WebCore::ScrollingTreeOverflowScrollingNode::~ScrollingTreeOverflowScrollingNode):
610         * page/scrolling/ScrollingTreeOverflowScrollingNode.h: Copied from Source/WebKit2/UIProcess/Scrolling/ios/ScrollingTreeOverflowScrollingNodeIOS.h.
611         * page/scrolling/ScrollingTreeScrollingNode.cpp:
612         (WebCore::ScrollingTreeScrollingNode::ScrollingTreeScrollingNode):
613         (WebCore::ScrollingTreeScrollingNode::updateBeforeChildren):
614         (WebCore::ScrollingTreeScrollingNode::updateAfterChildren):
615         (WebCore::ScrollingTreeScrollingNode::setScrollPosition):
616         (WebCore::ScrollingTreeScrollingNode::setScrollPositionWithoutContentEdgeConstraints):
617         (WebCore::ScrollingTreeScrollingNode::minimumScrollPosition):
618         (WebCore::ScrollingTreeScrollingNode::maximumScrollPosition):
619         * page/scrolling/ScrollingTreeScrollingNode.h:
620         (WebCore::ScrollingTreeScrollingNode::scrollableAreaSize):
621         (WebCore::ScrollingTreeScrollingNode::totalContentsSize):
622         (WebCore::ScrollingTreeScrollingNode::totalContentsSizeForRubberBand):
623         (WebCore::ScrollingTreeScrollingNode::setTotalContentsSizeForRubberBand):
624         (WebCore::ScrollingTreeScrollingNode::synchronousScrollingReasons): Deleted.
625         (WebCore::ScrollingTreeScrollingNode::shouldUpdateScrollLayerPositionSynchronously): Deleted.
626         (WebCore::ScrollingTreeScrollingNode::viewportSize): Deleted.
627         (WebCore::ScrollingTreeScrollingNode::frameScaleFactor): Deleted.
628         (WebCore::ScrollingTreeScrollingNode::headerHeight): Deleted.
629         (WebCore::ScrollingTreeScrollingNode::footerHeight): Deleted.
630         (WebCore::ScrollingTreeScrollingNode::scrollBehaviorForFixedElements): Deleted.
631         (WebCore::ScrollingTreeScrollingNode::topContentInset): Deleted.
632         * page/scrolling/ios/ScrollingCoordinatorIOS.mm:
633         (WebCore::ScrollingCoordinatorIOS::createScrollingTreeNode):
634         * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.h: Renamed from Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.h.
635         (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollLayer):
636         * page/scrolling/ios/ScrollingTreeFrameScrollingNodeIOS.mm: Renamed from Source/WebCore/page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm.
637         (WebCore::ScrollingTreeFrameScrollingNodeIOS::create):
638         (WebCore::ScrollingTreeFrameScrollingNodeIOS::ScrollingTreeFrameScrollingNodeIOS):
639         (WebCore::ScrollingTreeFrameScrollingNodeIOS::~ScrollingTreeFrameScrollingNodeIOS):
640         (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateBeforeChildren):
641         (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateAfterChildren):
642         (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollPosition):
643         (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPosition):
644         (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollPositionWithoutContentEdgeConstraints):
645         (WebCore::ScrollingTreeFrameScrollingNodeIOS::setScrollLayerPosition):
646         (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterViewportChange):
647         (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateLayersAfterDelegatedScroll):
648         (WebCore::ScrollingTreeFrameScrollingNodeIOS::updateChildNodesAfterScroll):
649         (WebCore::ScrollingTreeFrameScrollingNodeIOS::minimumScrollPosition):
650         (WebCore::ScrollingTreeFrameScrollingNodeIOS::maximumScrollPosition):
651         (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollBy):
652         (WebCore::ScrollingTreeFrameScrollingNodeIOS::scrollByWithoutContentEdgeConstraints):
653         * page/scrolling/mac/ScrollingCoordinatorMac.mm:
654         (WebCore::ScrollingCoordinatorMac::createScrollingTreeNode):
655         * page/scrolling/mac/ScrollingStateFrameScrollingNodeMac.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingStateScrollingNodeMac.mm.
656         (WebCore::ScrollingStateFrameScrollingNode::setScrollbarPaintersFromScrollbars):
657         * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.h: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.h.
658         * page/scrolling/mac/ScrollingTreeFrameScrollingNodeMac.mm: Renamed from Source/WebCore/page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm.
659         (WebCore::ScrollingTreeFrameScrollingNodeMac::create):
660         (WebCore::ScrollingTreeFrameScrollingNodeMac::ScrollingTreeFrameScrollingNodeMac):
661         (WebCore::ScrollingTreeFrameScrollingNodeMac::~ScrollingTreeFrameScrollingNodeMac):
662         (WebCore::ScrollingTreeFrameScrollingNodeMac::updateBeforeChildren):
663         (WebCore::ScrollingTreeFrameScrollingNodeMac::updateAfterChildren):
664         (WebCore::ScrollingTreeFrameScrollingNodeMac::handleWheelEvent):
665         (WebCore::ScrollingTreeFrameScrollingNodeMac::allowsHorizontalStretching):
666         (WebCore::ScrollingTreeFrameScrollingNodeMac::allowsVerticalStretching):
667         (WebCore::ScrollingTreeFrameScrollingNodeMac::stretchAmount):
668         (WebCore::ScrollingTreeFrameScrollingNodeMac::pinnedInDirection):
669         (WebCore::ScrollingTreeFrameScrollingNodeMac::canScrollHorizontally):
670         (WebCore::ScrollingTreeFrameScrollingNodeMac::canScrollVertically):
671         (WebCore::ScrollingTreeFrameScrollingNodeMac::shouldRubberBandInDirection):
672         (WebCore::ScrollingTreeFrameScrollingNodeMac::absoluteScrollPosition):
673         (WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollBy):
674         (WebCore::ScrollingTreeFrameScrollingNodeMac::immediateScrollByWithoutContentEdgeConstraints):
675         (WebCore::ScrollingTreeFrameScrollingNodeMac::startSnapRubberbandTimer):
676         (WebCore::ScrollingTreeFrameScrollingNodeMac::stopSnapRubberbandTimer):
677         (WebCore::ScrollingTreeFrameScrollingNodeMac::adjustScrollPositionToBoundsIfNecessary):
678         (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollPosition):
679         (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPosition):
680         (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollPositionWithoutContentEdgeConstraints):
681         (WebCore::ScrollingTreeFrameScrollingNodeMac::setScrollLayerPosition):
682         (WebCore::ScrollingTreeFrameScrollingNodeMac::updateLayersAfterViewportChange):
683         (WebCore::ScrollingTreeFrameScrollingNodeMac::minimumScrollPosition):
684         (WebCore::ScrollingTreeFrameScrollingNodeMac::maximumScrollPosition):
685         (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollBy):
686         (WebCore::ScrollingTreeFrameScrollingNodeMac::scrollByWithoutContentEdgeConstraints):
687         (WebCore::ScrollingTreeFrameScrollingNodeMac::updateMainFramePinState):
688         (WebCore::ScrollingTreeFrameScrollingNodeMac::logExposedUnfilledArea):
689         (WebCore::logThreadedScrollingMode):
690         (WebCore::logWheelEventHandlerCountChanged):
691         * rendering/RenderLayerCompositor.cpp:
692         (WebCore::RenderLayerCompositor::updateScrollCoordinatedLayer):
693
694 2014-05-19  Simon Fraser  <simon.fraser@apple.com>
695
696         Images missing sometimes with composited clipping layers
697         https://bugs.webkit.org/show_bug.cgi?id=133065
698         <rdar://problem/15224559>
699
700         Reviewed by Beth Dakin.
701         
702         When support for solid colors on layers was added, a layer was considered a candidate
703         for the solid color optimization without regard to whether it had descendent layers
704         with "paintsIntoCompositedAncestor" requirements.
705         
706         Fix hasVisibleNonCompositingDescendantLayers(), renaming it to isPaintDestinationForDescendentLayers()
707         and having it take into account whether descendent layers need to paint into an
708         ancestor.
709         
710         Also, this test has to happen after those descendent layers have had their
711         compositing state updated, so move the isSimpleContainerCompositingLayer() to
712         a new updateAfterDescendents() function which is called from the various
713         places we do compositing-udpate-tree-walks.
714
715         Test: compositing/backing/solid-color-with-paints-into-ancestor.html
716
717         * rendering/RenderLayerBacking.cpp:
718         (WebCore::RenderLayerBacking::updateGeometry):
719         (WebCore::RenderLayerBacking::updateAfterDescendents):
720         (WebCore::RenderLayerBacking::paintsChildren):
721         (WebCore::compositedWithOwnBackingStore):
722         (WebCore::descendentLayerPaintsIntoAncestor):
723         (WebCore::RenderLayerBacking::isPaintDestinationForDescendentLayers):
724         (WebCore::hasVisibleNonCompositingDescendant): Deleted.
725         (WebCore::RenderLayerBacking::hasVisibleNonCompositingDescendantLayers): Deleted.
726         * rendering/RenderLayerBacking.h:
727         * rendering/RenderLayerCompositor.cpp:
728         (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
729         (WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
730         (WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
731
732 2014-05-19  Zalan Bujtas  <zalan@apple.com>
733
734         REGRESSION (r133351, sub-pixel layout): Right-to-left block with text-overflow: ellipsis truncates prematurely (breaks facebook.com Hebrew UI)
735         https://bugs.webkit.org/show_bug.cgi?id=112227
736
737         Reviewed by Maciej Stachowiak.
738
739         This patch removes unnecessary integral snapping of inlines at layout time.
740
741         The general rule of thumb of using round/floor/ceil at layout time is to not use them.
742  
743         When some computed values (x, y, width, height) get snapped during layout, while others don't,
744         intersecting/measuring mismatches could occur and they could end up producing visual artifacts such as truncations.
745         This patch also enables iframe content to be positioned on odd device pixel positions on retina displays.
746         
747         Tests: fast/frames/hidpi-position-iframe-on-device-pixel.html
748                fast/inline/hidpi-rtl-text-does-not-fit-line-and-gets-cut-off.html
749
750         * rendering/RenderBlock.h:
751         (WebCore::RenderBlock::logicalLeftOffsetForLine):
752         (WebCore::RenderBlock::pixelSnappedLogicalLeftOffsetForLine): Deleted.
753         (WebCore::RenderBlock::pixelSnappedLogicalRightOffsetForLine): Deleted.
754         * rendering/RenderBlockLineLayout.cpp:
755         (WebCore::updateLogicalInlinePositions):
756         (WebCore::RenderBlockFlow::deleteEllipsisLineBoxes):
757         (WebCore::RenderBlockFlow::checkLinesForTextOverflow):
758
759 2014-05-18  Chris Fleizach  <cfleizach@apple.com>
760
761         AX: iOS: using AXAttributeCacheEnabler is too slow for every accessibilityElementAtIndex:
762         https://bugs.webkit.org/show_bug.cgi?id=133043
763
764         Reviewed by Mario Sanchez Prada.
765
766         iOS Accessibility code tries to improve performance by caching attributes when accessing
767         elements through the platform API. However, those API calls can be used very frequently when 
768         iterating elements. Creating the AXAttributeCacheEnabler object and tearing it down is proving
769         to be the hottest code path in samples for accessibility access.
770
771         We need to move the logic for enabling/disabling the attribute cache to a level that can make
772         a more informed decision about when to enable/disable.
773
774         * accessibility/ios/WebAccessibilityObjectWrapperIOS.mm:
775         (-[WebAccessibilityObjectWrapper enableAttributeCaching]):
776         (-[WebAccessibilityObjectWrapper disableAttributeCaching]):
777         (-[WebAccessibilityObjectWrapper accessibilityElementCount]):
778         (-[WebAccessibilityObjectWrapper accessibilityElementAtIndex:]):
779         (-[WebAccessibilityObjectWrapper indexOfAccessibilityElement:]):
780
781 2014-05-18  Simon Fraser  <simon.fraser@apple.com>
782
783         Use RenderStyle& in more places in RenderLayerBacking
784         https://bugs.webkit.org/show_bug.cgi?id=133061
785
786         Reviewed by Andreas Kling.
787
788         Convert several member functions to use references to RenderStyle rather
789         than pointers. Move canCreateTiledImage() higher in the file (no code
790         changes). Other minor cleanup.
791
792         * rendering/RenderLayerBacking.cpp:
793         (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
794         (WebCore::RenderLayerBacking::updateOpacity):
795         (WebCore::RenderLayerBacking::updateTransform):
796         (WebCore::RenderLayerBacking::updateFilters):
797         (WebCore::RenderLayerBacking::updateBlendMode):
798         (WebCore::RenderLayerBacking::updateGeometry):
799         (WebCore::hasBoxDecorations):
800         (WebCore::canCreateTiledImage):
801         (WebCore::hasBoxDecorationsOrBackgroundImage):
802         (WebCore::hasPerspectiveOrPreserves3D):
803         (WebCore::supportsDirectBoxDecorationsComposition):
804         (WebCore::RenderLayerBacking::isSimpleContainerCompositingLayer):
805         (WebCore::RenderLayerBacking::contentChanged):
806         (WebCore::RenderLayerBacking::startTransition):
807         * rendering/RenderLayerBacking.h:
808
809 2014-05-17  Simon Fraser  <simon.fraser@apple.com>
810
811         Rename some RenderLayerBacking member functions
812         https://bugs.webkit.org/show_bug.cgi?id=133030
813
814         Reviewed by Sam Weinig.
815
816         Remove "GraphicsLayer" from some member function names on RenderLayerBacking.
817         
818         No behavior change.
819
820         * platform/graphics/avfoundation/cf/MediaPlayerPrivateAVFoundationCF.cpp:
821         (WebCore::AVFWrapper::createAVCFVideoLayer):
822         * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
823         (WebCore::MediaPlayerPrivateQTKit::createQTMovieLayer):
824         * rendering/RenderLayer.cpp:
825         (WebCore::RenderLayer::calculateClipRects):
826         * rendering/RenderLayerBacking.cpp:
827         (WebCore::RenderLayerBacking::updateAfterLayout):
828         (WebCore::RenderLayerBacking::updateConfiguration):
829         (WebCore::RenderLayerBacking::updateGeometry):
830         (WebCore::RenderLayerBacking::contentChanged):
831         (WebCore::RenderLayerBacking::setContentsNeedDisplayInRect):
832         (WebCore::RenderLayerBacking::updateGraphicsLayerConfiguration): Deleted.
833         (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry): Deleted.
834         * rendering/RenderLayerBacking.h:
835         * rendering/RenderLayerCompositor.cpp:
836         (WebCore::RenderLayerCompositor::updateLayerCompositingState):
837         (WebCore::RenderLayerCompositor::rebuildCompositingLayerTree):
838         (WebCore::RenderLayerCompositor::updateLayerTreeGeometry):
839         (WebCore::RenderLayerCompositor::updateCompositingDescendantGeometry):
840         (WebCore::RenderLayerCompositor::attachRootLayer):
841
842 2014-05-19  Antti Koivisto  <antti@apple.com>
843
844         Fix assertion failure with simple line layout debug borders enabled.
845
846         Rubber-stamped by Andreas Kling.
847
848         * rendering/SimpleLineLayoutFunctions.cpp:
849         (WebCore::SimpleLineLayout::paintDebugBorders): We shoudn't try to paint empty rects.
850
851 2014-05-18  Andreas Kling  <akling@apple.com>
852
853         Reduce constructor copypasta in RenderText and RenderElement.
854         <https://webkit.org/b/133056>
855
856         Use delegating constructors to remove duplicated initializer lists
857         from the constructors of RenderText and RenderElement.
858
859         Reviewed by Anders Carlsson.
860
861         * rendering/RenderElement.cpp:
862         (WebCore::RenderElement::RenderElement):
863         * rendering/RenderElement.h:
864         * rendering/RenderText.cpp:
865         (WebCore::RenderText::RenderText):
866         * rendering/RenderText.h:
867
868 2014-05-18  Brent Fulgham  <bfulgham@apple.com>
869
870         Crash during scroll when latched
871         https://bugs.webkit.org/show_bug.cgi?id=133064
872
873         Reviewed by Simon Fraser.
874
875         * page/mac/EventHandlerMac.mm:
876         (WebCore::EventHandler::platformPrepareForWheelEvents): Prevent dereference of NULL
877         wheelEventTarget argument.
878
879 2014-05-18  Svetlana Redchenko  <redchenko@yandex-team.ru>
880
881         Input ::selection pseudo class does not work leading to hidden selection
882         https://bugs.webkit.org/show_bug.cgi?id=38943
883
884         Reviewed by Darin Adler.
885
886         Test: fast/selectors/input-with-selection-pseudo-element.html
887
888         When text is selected inside input element, it should change the
889         color and background color according to the ::selection pseudo element.
890
891         * rendering/RenderObject.cpp:
892         (WebCore::RenderObject::selectionBackgroundColor):
893         (WebCore::RenderObject::selectionColor):
894         (WebCore::RenderObject::selectionPseudoStyle):
895         * rendering/RenderObject.h:
896
897 2014-05-18  Sam Weinig  <sam@webkit.org>
898
899         [WebKit2] Implement ScriptMessageHandlers
900         https://bugs.webkit.org/show_bug.cgi?id=133053
901
902         Reviewed by Anders Carlsson.
903
904         * DerivedSources.make:
905         * WebCore.exp.in:
906         * WebCore.xcodeproj/project.pbxproj:
907         * bindings/js/JSDOMWindowBase.cpp:
908         (WebCore::JSDOMWindowBase::finishCreation):
909         * bindings/js/JSUserMessageHandlersNamespaceCustom.cpp: Added.
910         (WebCore::JSUserMessageHandlersNamespace::getOwnPropertySlotDelegate):
911         * page/DOMWindow.cpp:
912         (WebCore::DOMWindow::shouldHaveWebKitNamespaceForWorld):
913         (WebCore::DOMWindow::webkitNamespace):
914         * page/DOMWindow.h:
915         * page/UserContentController.cpp:
916         (WebCore::UserContentController::addUserMessageHandlerDescriptor):
917         (WebCore::UserContentController::removeUserMessageHandlerDescriptor):
918         * page/UserContentController.h:
919         (WebCore::UserContentController::userMessageHandlerDescriptors):
920         * page/UserMessageHandler.cpp: Added.
921         (WebCore::UserMessageHandler::UserMessageHandler):
922         (WebCore::UserMessageHandler::~UserMessageHandler):
923         (WebCore::UserMessageHandler::postMessage):
924         (WebCore::UserMessageHandler::name):
925         (WebCore::UserMessageHandler::world):
926         * page/UserMessageHandler.h: Added.
927         (WebCore::UserMessageHandler::create):
928         * page/UserMessageHandler.idl: Added.
929         * page/UserMessageHandlerDescriptor.cpp: Added.
930         (WebCore::UserMessageHandlerDescriptor::UserMessageHandlerDescriptor):
931         (WebCore::UserMessageHandlerDescriptor::~UserMessageHandlerDescriptor):
932         (WebCore::UserMessageHandlerDescriptor::name):
933         (WebCore::UserMessageHandlerDescriptor::world):
934         * page/UserMessageHandlerDescriptor.h: Added.
935         (WebCore::UserMessageHandlerDescriptor::Client::~Client):
936         (WebCore::UserMessageHandlerDescriptor::create):
937         (WebCore::UserMessageHandlerDescriptor::client):
938         * page/UserMessageHandlerDescriptorTypes.h: Added.
939         * page/UserMessageHandlersNamespace.cpp: Added.
940         (WebCore::UserMessageHandlersNamespace::UserMessageHandlersNamespace):
941         (WebCore::UserMessageHandlersNamespace::~UserMessageHandlersNamespace):
942         (WebCore::UserMessageHandlersNamespace::handler):
943         * page/UserMessageHandlersNamespace.h: Added.
944         (WebCore::UserMessageHandlersNamespace::create):
945         * page/UserMessageHandlersNamespace.idl: Added.
946         * page/WebKitNamespace.cpp: Added.
947         (WebCore::WebKitNamespace::WebKitNamespace):
948         (WebCore::WebKitNamespace::~WebKitNamespace):
949         (WebCore::WebKitNamespace::messageHandlers):
950         * page/WebKitNamespace.h: Added.
951         (WebCore::WebKitNamespace::create):
952         * page/WebKitNamespace.idl: Added.
953
954 2014-05-18  Maciej Stachowiak  <mjs@apple.com>
955
956         REGRESSION (r156546): Default media controls are laid out incorrectly when media element is styled with direction:rtl
957         https://bugs.webkit.org/show_bug.cgi?id=132531
958         <rdar://problem/16806267>
959         
960         Reviewed by Mark Rowe.
961
962         This was already tested by the media/video-rtl.htm reftest, now unskipped.
963
964         * Modules/mediacontrols/mediaControlsApple.css:
965         (audio::-webkit-media-controls-panel): Add missing direction: ltr
966
967 2014-05-18  Rik Cabanier  <cabanier@adobe.com>
968
969         support for navigator.hardwareConcurrency
970         https://bugs.webkit.org/show_bug.cgi?id=132588
971
972         Reviewed by Filip Pizlo.
973
974         Added a new API that returns the number of CPU cores up to 8.
975
976         Test: fast/dom/navigator-hardwareConcurrency.html
977
978         * Configurations/FeatureDefines.xcconfig:
979         * page/Navigator.cpp:
980         (WebCore::Navigator::hardwareConcurrency):
981         * page/Navigator.h:
982         * page/Navigator.idl:
983
984 2014-05-18  Anders Carlsson  <andersca@apple.com>
985
986         Fix iOS build.
987
988         * WebCore.exp.in:
989         Move UserContentController symbols to the right place.
990
991 2014-05-18  Jon Lee  <jonlee@apple.com>
992
993         Build fix for r169006.
994
995         Unreviewed.
996
997         * loader/ResourceLoader.h: Return didCreateQuickLookHandle() to public.
998
999 2014-05-18  Antti Koivisto  <antti@apple.com>
1000
1001         REGRESSION (r160259): text-combine glyphs are not rendered
1002         https://bugs.webkit.org/show_bug.cgi?id=127324
1003
1004         Reviewed by Andreas Kling.
1005         
1006         The original text gets overwritten by a change that is supposed to affect rendered text only.
1007         Fixed by giving the text update functions well-defined purposes.
1008
1009         Test: fast/text/text-combine-rendering.html
1010
1011         * rendering/RenderCombineText.cpp:
1012         (WebCore::RenderCombineText::styleDidChange):
1013         (WebCore::RenderCombineText::setRenderedText):
1014         (WebCore::RenderCombineText::combineText):
1015         (WebCore::RenderCombineText::setTextInternal): Deleted.
1016         * rendering/RenderCombineText.h:
1017         * rendering/RenderCounter.cpp:
1018         (WebCore::RenderCounter::computePreferredLogicalWidths):
1019         * rendering/RenderText.cpp:
1020         (WebCore::RenderText::setRenderedText):
1021         
1022             This function now updates the rendered text but does not change the original.
1023             Get the original text by calling originalText().
1024
1025         (WebCore::RenderText::setText):
1026         
1027             This the only place original text now changes.
1028
1029         (WebCore::RenderText::setTextInternal): Deleted.
1030         
1031             Renamed to setRenderedText.
1032
1033         * rendering/RenderText.h:
1034         * rendering/svg/RenderSVGInlineText.cpp:
1035         (WebCore::RenderSVGInlineText::setRenderedText):
1036         (WebCore::RenderSVGInlineText::setTextInternal): Deleted.
1037         * rendering/svg/RenderSVGInlineText.h:
1038
1039 2014-05-17  Maciej Stachowiak  <mjs@apple.com>
1040
1041         Don't attempt to update id or name for nodes that are already removed
1042         https://bugs.webkit.org/show_bug.cgi?id=133041
1043
1044         Reviewed by Sam Weinig.
1045
1046         Tests: fast/dom/remove-element-with-id-that-was-inserted-on-DOMNodeRemoved.html
1047                fast/dom/remove-element-with-name-that-was-inserted-on-DOMNodeRemoved.html
1048
1049         * dom/Element.cpp:
1050         (WebCore::Element::removedFrom): Skip updating ids and names for an element not
1051         in a treescope, as we already do for elements not in a document.
1052
1053 2014-05-17  Alexey Proskuryakov  <ap@apple.com>
1054
1055         REGRESSION (NetworkProcess): Trying to use appcache fallback crashes in ApplicationCacheHost::scheduleLoadFallbackResourceFromApplicationCache
1056         https://bugs.webkit.org/show_bug.cgi?id=133007
1057         <rdar://problem/13702706>
1058
1059         appcache tests often fail on the Mac WebKit2 bot
1060         https://bugs.webkit.org/show_bug.cgi?id=82061
1061
1062         Reviewed by Maciej Stachowiak.
1063
1064         Covered by existing tests, which this patch enables.
1065
1066         * WebCore.exp.in: Export ResourceLoader::cancel(const ResourceError&). It used
1067         to be virtual, but marking subclasses final has resulted in the compiler calling
1068         it directly from WebKitLegacy framework. Seeing that no subclass overrides it,
1069         I then made it non-virtual.
1070         Also export ApplicationCacheHost functions that are now used from WebKit2.
1071
1072         * loader/ResourceLoader.h: Made the class abstract (as I didn't realize at first
1073         that it's always either a SubresourceLoader or a NetscapePlugInStreamLoader).
1074         Made ResourceHandleClient functions private, as they should never be called other
1075         than via a ResourceHandleClient pointer.
1076
1077         * loader/NetscapePlugInStreamLoader.h:
1078         * loader/SubresourceLoader.h:
1079         Marked these final.
1080
1081         * loader/ResourceLoader.cpp: (WebCore::ResourceLoader::willSwitchToSubstituteResource):
1082         Added a function to be called when switching to a substitute resource. We still
1083         need a ResourceLoader at this point, as substitute resource will be delivered through
1084         it, but we don't want it to continue its current load.
1085
1086         * loader/appcache/ApplicationCacheHost.cpp:
1087         (WebCore::ApplicationCacheHost::scheduleLoadFallbackResourceFromApplicationCache):
1088         Call the ResourceLoader function instead of using handle, which is null when
1089         using out of process networking.
1090
1091 2014-05-17  Andreas Kling  <akling@apple.com>
1092
1093         We shouldn't make a ScrollingThread on iOS.
1094         <https://webkit.org/b/133038>
1095         <rdar://problem/16947589>
1096
1097         Don't call ScrollingThred::dispatch() from the pressure relief
1098         code on iOS since that will end up instantiating a scrolling thread
1099         which we'd otherwise never have.
1100
1101         Reviewed by Sam Weinig.
1102
1103         * platform/MemoryPressureHandler.cpp:
1104         (WebCore::MemoryPressureHandler::releaseMemory):
1105
1106 2014-05-17  Piotr Grad  <p.grad@samsung.com>
1107
1108         Setting playback rate on video with media controller is not ignored.
1109         https://bugs.webkit.org/show_bug.cgi?id=129048
1110
1111         Reviewed by Jer Noble.
1112
1113         Replaced queries for m_playbackRate with effectivePlaybackRate()
1114         which includes media controller playback rate.
1115
1116         Test: media/video-controller-child-rate.html
1117
1118         * html/HTMLMediaElement.cpp:
1119         (WebCore::HTMLMediaElement::parseAttribute):
1120         * html/HTMLMediaElement.h:
1121
1122 2014-05-16  Anders Carlsson  <andersca@apple.com>
1123
1124         Expose WKUserScript as API
1125         https://bugs.webkit.org/show_bug.cgi?id=133017
1126         <rdar://problem/16948059>
1127
1128         Reviewed by Sam Weinig.
1129
1130         * WebCore.exp.in:
1131         Export symbols.
1132
1133         * WebCore.xcodeproj/project.pbxproj:
1134         Change UserContentController.h to be a private header.
1135
1136         * page/Page.cpp:
1137         (WebCore::Page::Page):
1138         Set m_userContentController from the page configuration and add it if it's not null.
1139
1140         * page/Page.h:
1141         Add UserContentController to PageClients.
1142
1143         * page/PageGroup.cpp:
1144         (WebCore::PageGroup::addPage):
1145         Only try to add a user content controller if the page doesn't already have one.
1146
1147         (WebCore::PageGroup::removePage):
1148         Only try to remove the user content controller if it's the group one.
1149
1150 2014-05-17  Andreas Kling  <akling@apple.com>
1151
1152         REGRESSION (r166422): All RenderBox objects grew 104 bytes from adding repaint timers.
1153         <https://webkit.org/b/133027>
1154         <rdar://problem/16867410>
1155
1156         Instead of storing a rarely-used repaint timer on every RenderBox, store one
1157         on the RenderView, and keep a hash set of renderers needing repaint.
1158
1159         Renderers get a flag tracking whether they have a pending lazy repaint.
1160         This way we can avoid hash lookups in the common case.
1161
1162         Also added a static assertion to catch RenderBox growing in the future.
1163
1164         Reviewed by Antti Koivisto.
1165
1166         * rendering/RenderBox.cpp:
1167         (WebCore::SameSizeAsRenderBox::~SameSizeAsRenderBox):
1168         (WebCore::RenderBox::RenderBox):
1169         (WebCore::RenderBox::~RenderBox):
1170         (WebCore::RenderBox::paintBoxDecorations):
1171         (WebCore::RenderBox::layoutOverflowRectForPropagation):
1172         * rendering/RenderBox.h:
1173         * rendering/RenderElement.cpp:
1174         (WebCore::RenderElement::RenderElement):
1175         * rendering/RenderElement.h:
1176         (WebCore::RenderElement::setRenderBoxNeedsLazyRepaint):
1177         (WebCore::RenderElement::renderBoxNeedsLazyRepaint):
1178         * rendering/RenderView.cpp:
1179         (WebCore::RenderView::RenderView):
1180         (WebCore::RenderView::scheduleLazyRepaint):
1181         (WebCore::RenderView::unscheduleLazyRepaint):
1182         (WebCore::RenderView::lazyRepaintTimerFired):
1183         * rendering/RenderView.h:
1184
1185 2014-05-16  Jer Noble  <jer.noble@apple.com>
1186
1187         [Mac][MSE] setCurrentTime() goes down fastSeek path in MediaPlayerPrivateMediaSourceAVFObjC.
1188         https://bugs.webkit.org/show_bug.cgi?id=133023
1189
1190         Reviewed by Eric Carlson.
1191
1192         When seeking a MSE video, do not go down the fastSeekForMediaTime() path if the
1193         seek resulted from a setCurrentTime() call. The logic can lead to attempted seeks
1194         before buffered ranges.
1195
1196         * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
1197         (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
1198         * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.h:
1199         * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
1200         (WebCore::MediaSourcePrivateAVFObjC::seekToTime):
1201
1202 2014-05-16  Benjamin Poulain  <bpoulain@apple.com>
1203
1204         [iOS] ScrollView::visibleContentRectInternal is bypassing the iOS code for unobscuredContentRect
1205         https://bugs.webkit.org/show_bug.cgi?id=133008
1206
1207         Reviewed by Simon Fraser.
1208
1209         * platform/ScrollView.cpp:
1210         (WebCore::ScrollView::visibleContentRectInternal):
1211         ScrollView::visibleContentRectInternal() was calling the internal implementation of visibleContentRect().
1212         That was skipping the iOS implementation and getting the framerect directly. That size is invalid on iOS
1213         when the exposed rect and unobscured rect are not the same.
1214
1215 2014-05-16  Jer Noble  <jer.noble@apple.com>
1216
1217         [Mac] naturalSize not updated when preload=metadata
1218         https://bugs.webkit.org/show_bug.cgi?id=132994
1219
1220         Reviewed by Eric Carlson.
1221
1222         Test: media/video-load-preload-metadata-naturalsize.html
1223
1224         When preload=metadata, we never create an AVPlayerItem, and therefore never receive a
1225         presentationSize KVO. When an AVAsset informs us that its tracks have changed, and there
1226         is no AVPlayerItem, recalculate presentation size based on the first video track's natural
1227         size.
1228
1229         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
1230         (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged):
1231         * platform/graphics/avfoundation/objc/MediaPlayerPrivateMediaSourceAVFObjC.mm:
1232         (WebCore::MediaPlayerPrivateMediaSourceAVFObjC::seekInternal):
1233
1234 2014-05-16  Simon Fraser  <simon.fraser@apple.com>
1235
1236         Remove "region-based columns" prefs
1237         https://bugs.webkit.org/show_bug.cgi?id=133006
1238         <rdar://problem/16945824>
1239
1240         Reviewed by Dave Hyatt.
1241
1242         Remove "region-based columns" prefs and related code, since this is only
1243         way to render columns now.
1244
1245         * page/Settings.in:
1246
1247 2014-05-16  Antti Koivisto  <antti@apple.com>
1248
1249         Link search area for touch events is too large in some cases
1250         https://bugs.webkit.org/show_bug.cgi?id=132988
1251         <rdar://problem/16917843>
1252
1253         Reviewed by Simon Fraser.
1254
1255         * page/ios/FrameIOS.mm:
1256         (WebCore::Frame::qualifyingNodeAtViewportLocation):
1257         
1258             - Adjust the search area to screen ppi.
1259             - Remove cut-off at scale 1. This made us pick physically far-away elements when zoomed in.
1260             
1261         * platform/PlatformScreen.h:
1262         * platform/ios/PlatformScreenIOS.mm:
1263         (WebCore::mobileGestaltFloatValue):
1264         (WebCore::screenPPIFactor):
1265
1266             Figure out screens physical PPI relative to a base.
1267
1268 2014-05-16  Jer Noble  <jer.noble@apple.com>
1269
1270         [MSE] Crash at  WebCore::SourceBuffer::~SourceBuffer + 110
1271         https://bugs.webkit.org/show_bug.cgi?id=132973
1272
1273         Reviewed by Eric Carlson.
1274
1275         Change SourceBuffer::m_private into a Ref<>, and add an assertion to
1276         SourceBufferPrivateAVFObjC's destructor if its client has not been cleared.
1277
1278         Eliminate unnecessary churn in MediaSourcePrivateAVFObjC by having the predicate
1279         functor take bare pointers, rather than a PassRefPtr.
1280
1281         The underlying problem seems to be in WebAVStreamDataParserListener. RefPtrs were
1282         being created off the main thread to a non-thread safe ref counted class. In some
1283         situations, this would result in double decrementing the ref, which would cause an
1284         early destruction of the underlying object. Instead replace these RefPtr strong
1285         pointers with explicit weak ones. Ensure the parser and its delegate are not freed
1286         before the append operation completes by passing strong pointers into the async
1287         append operation lambda.
1288
1289         There were a few places where we weren't null checking m_mediaSource before using it,
1290         and at least one place where we weren't clearing m_mediaSource.
1291
1292         * Modules/mediasource/SourceBuffer.cpp:
1293         (WebCore::SourceBuffer::SourceBuffer): Use Ref instead of RefPtr.
1294         (WebCore::SourceBuffer::appendBufferTimerFired): Ditto.
1295         * Modules/mediasource/SourceBuffer.h:
1296         * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
1297         (WebCore::MediaSourcePrivateAVFObjCHasAudio): Take a bare pointer, instead of a PassRefPtr.
1298         (WebCore::MediaSourcePrivateAVFObjCHasVideo): Ditto.
1299         * platform/graphics/avfoundation/objc/MediaSourcePrivateAVFObjC.mm:
1300         (WebCore::MediaSourcePrivateAVFObjC::removeSourceBuffer): Clear the back pointer when removing a buffer.
1301         * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.h:
1302         * platform/graphics/avfoundation/objc/SourceBufferPrivateAVFObjC.mm:
1303         (-[WebAVStreamDataParserListener initWithParser:parent:WebCore::]): Use WeakPtr instead of RefPtr.
1304         (-[WebAVStreamDataParserListener invalidate]): Ditto.
1305         (-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:]): Ditto.
1306         (-[WebAVStreamDataParserListener streamDataParser:didParseStreamDataAsAsset:withDiscontinuity:]): Ditto.
1307         (-[WebAVStreamDataParserListener streamDataParser:didFailToParseStreamDataWithError:]): Ditto.
1308         (-[WebAVStreamDataParserListener streamDataParser:didProvideMediaData:forTrackID:mediaType:flags:]): Ditto.
1309         (-[WebAVStreamDataParserListener streamDataParser:didReachEndOfTrackWithTrackID:mediaType:]): Ditto.
1310         (-[WebAVStreamDataParserListener streamDataParser:didProvideContentKeyRequestInitializationData:forTrackID:]): Ditto.
1311         (WebCore::SourceBufferPrivateAVFObjC::~SourceBufferPrivateAVFObjC):
1312         (WebCore::SourceBufferPrivateAVFObjC::append): Ditto.
1313
1314 2014-05-16  Zalan Bujtas  <zalan@apple.com>
1315
1316         Subpixel rendering: Push named flows in region to device pixel when painting.
1317         https://bugs.webkit.org/show_bug.cgi?id=132986
1318
1319         Reviewed by Simon Fraser.
1320
1321         Remove integral rounding when named flow sets the painting offset on the graphics context.
1322         Use device pixel snapping instead to ensure that we can paint on odd device pixel positions on retina displays. 
1323
1324         Test: fast/regions/hidpi-region-with-auto-margin-on-subpixel-position.html
1325
1326         * rendering/RenderLayer.cpp:
1327         (WebCore::RenderLayer::calculateClipRects):
1328
1329 2014-05-16  Radu Stavila  <stavila@adobe.com>
1330
1331         [CSS Regions] Add ASSERT to make sure using the flowThread cache does not return incorrect results
1332         https://bugs.webkit.org/show_bug.cgi?id=132906
1333
1334         Reviewed by Simon Fraser.
1335
1336         If flowThreadContainingBlock() is called on an object which is in a different
1337         flow thread than the one currently being laid out, this method will return an incorrect
1338         result. I added an assertion for that to make sure we catch and treat any such scenarios.
1339         For the moment, this assertion is only validated for regions, as multicol still has some issues.
1340
1341         No new tests required.
1342
1343         * rendering/RenderObject.cpp:
1344         (WebCore::RenderObject::locateFlowThreadContainingBlockNoCache):
1345         (WebCore::RenderObject::locateFlowThreadContainingBlock):
1346         * rendering/RenderObject.h:
1347
1348 2014-05-16  Martin Hock  <mhock@apple.com>
1349
1350         MemoryCache::addImageToCache should return the result of add().
1351         https://bugs.webkit.org/show_bug.cgi?id=132928
1352         <rdar://problem/16651547>
1353
1354         Reviewed by Alexey Proskuryakov.
1355
1356         API test: WebKit1.MemoryCacheADdImageToCache (MemoryCacheAddImageToCacheIOS.mm)
1357
1358         * loader/cache/MemoryCache.cpp:
1359         (WebCore::MemoryCache::addImageToCache):
1360
1361 2014-05-16  Andrei Bucur  <abucur@adobe.com>
1362
1363         [CSS Regions] Reduce the RenderRegion invasiveness in rendering code
1364         https://bugs.webkit.org/show_bug.cgi?id=132121
1365
1366         Reviewed by Antti Koivisto.
1367
1368         Remove the RenderRegion / RenderNamedFlowFragment parameters and fields from
1369         the painting / hit testing data structures and use a stateful approach to
1370         correctly handle regions.
1371
1372         When painting or hit testing, the current flow thread is saved along the current
1373         region. They are accessed through the |currentRenderNamedFlowFragment| helper
1374         method on RenderObject or RenderLayer.
1375
1376         The patch also changes a bunch of 0s to nullptrs.
1377
1378         Tests: No new tests, no functional change.
1379
1380         * html/shadow/MediaControlElements.cpp:
1381         (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
1382         * rendering/HitTestLocation.cpp:
1383         (WebCore::HitTestLocation::HitTestLocation):
1384         (WebCore::HitTestLocation::operator=):
1385         * rendering/HitTestLocation.h:
1386         (WebCore::HitTestLocation::region): Deleted.
1387         * rendering/HitTestResult.h:
1388         * rendering/PaintInfo.h:
1389         (WebCore::PaintInfo::PaintInfo):
1390         * rendering/RenderBlock.cpp:
1391         (WebCore::RenderBlock::paint):
1392         (WebCore::RenderBlock::paintObject):
1393         (WebCore::RenderBlock::selectionGaps):
1394         (WebCore::RenderBlock::nodeAtPoint):
1395         * rendering/RenderBox.cpp:
1396         (WebCore::RenderBox::nodeAtPoint):
1397         (WebCore::RenderBox::paintBoxDecorations):
1398         (WebCore::RenderBox::pushContentsClip):
1399         * rendering/RenderBoxModelObject.cpp:
1400         (WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
1401         (WebCore::RenderBoxModelObject::paintFillLayerExtended):
1402         * rendering/RenderBoxModelObject.h:
1403         * rendering/RenderLayer.cpp:
1404         (WebCore::RenderLayer::paint):
1405         (WebCore::RenderLayer::paintLayer):
1406         (WebCore::RenderLayer::paintLayerContents):
1407         (WebCore::RenderLayer::paintLayerByApplyingTransform):
1408         (WebCore::RenderLayer::collectFragments):
1409         (WebCore::RenderLayer::updatePaintingInfoForFragments):
1410         (WebCore::RenderLayer::paintTransformedLayerIntoFragments):
1411         (WebCore::RenderLayer::paintBackgroundForFragments):
1412         (WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
1413         (WebCore::RenderLayer::paintOutlineForFragments):
1414         (WebCore::RenderLayer::paintMaskForFragments):
1415         (WebCore::RenderLayer::hitTest):
1416         (WebCore::RenderLayer::hitTestFixedLayersInNamedFlows):
1417         (WebCore::RenderLayer::hitTestLayer):
1418         (WebCore::RenderLayer::hitTestTransformedLayerInFragments):
1419         (WebCore::RenderLayer::mapLayerClipRectsToFragmentationLayer):
1420         (WebCore::RenderLayer::calculateClipRects):
1421         * rendering/RenderLayer.h:
1422         * rendering/RenderLayerBacking.cpp:
1423         (WebCore::RenderLayerBacking::updateCompositedBounds):
1424         (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
1425         * rendering/RenderLayerCompositor.cpp:
1426         (WebCore::RenderLayerCompositor::addToOverlapMap):
1427         (WebCore::RenderLayerCompositor::clippedByAncestor):
1428         * rendering/RenderObject.cpp:
1429         (WebCore::RenderObject::currentRenderNamedFlowFragment):
1430         * rendering/RenderObject.h:
1431         * rendering/RenderReplaced.cpp:
1432         (WebCore::RenderReplaced::shouldPaint):
1433         * rendering/RenderReplica.cpp:
1434         (WebCore::RenderReplica::paint):
1435         * rendering/RenderTable.cpp:
1436         (WebCore::RenderTable::nodeAtPoint):
1437         * rendering/RenderTableSection.cpp:
1438         (WebCore::RenderTableSection::nodeAtPoint):
1439         * rendering/RenderTreeAsText.cpp:
1440         (WebCore::writeLayers):
1441         * rendering/RootInlineBox.cpp:
1442         (WebCore::RootInlineBox::paint):
1443         * rendering/svg/RenderSVGRoot.cpp:
1444         (WebCore::RenderSVGRoot::paintReplaced):
1445
1446 2014-05-16  Kiran  <kiran.guduru@samsung.com>
1447
1448         RTCDtmfSender default values need to be updated.
1449         https://bugs.webkit.org/show_bug.cgi?id=132952
1450
1451         Reviewed by Eric Carlson.
1452
1453         The default ToneDuration and ToneGap values are modified in the updated spec.
1454         So these values need to be updated.
1455
1456         Test: fast/mediastream/RTCPeerConnection-dtmf.html.
1457
1458         * Modules/mediastream/RTCDTMFSender.cpp:
1459
1460 2014-05-15  Daniel Bates  <dabates@apple.com>
1461
1462         Attempt to fix the Apple Mavericks Release, Apple MountainLion Release,
1463         Apple MountainLion Release (32-bit Build), EFL, and GTK builds following
1464         <http://trac.webkit.org/changeset/168921> (https://bugs.webkit.org/show_bug.cgi?id=132669)
1465
1466         * dom/ContainerNode.cpp: Include SVGElement.h for the definition of Node::hasTagName(const SVGQualifiedName&).
1467
1468 2014-05-15  Daniel Bates  <dabates@apple.com>
1469
1470         ASSERT_NOT_REACHED() in DocumentOrderedMap::get() when removing SVG subtree
1471         https://bugs.webkit.org/show_bug.cgi?id=132669
1472         <rdar://problem/14931432>
1473
1474         Reviewed by Brent Fulgham and Ryosuke Niwa.
1475
1476         Fixes an assertion failure when removing an SVG element with a duplicate id.
1477
1478         When removing an SVG element with id A we synchronously instruct each element that references A
1479         to find the first element with id A, call this N, from the document root and register itself to
1480         either receive subsequent notifications from N (say, there is another element with id A) or as
1481         waiting for an element with id A (say, N = nullptr; => we removed the last element with id A from
1482         the document). Because the elements that reference A perform this operation synchronously when
1483         removing an element they consult an transient state of the DocumentOrderedMap when querying for the
1484         element with id A.
1485     
1486         Without loss of generality, let E, E_1, E_2, and E_3 be elements, where E_1, E_2, E_3 are children
1487         of E in that order and E_1.id = E_2.id = A and E_3.href = #A (that is, it references an element
1488         with id A). Suppose we remove E then we remove E_1, update DocumentOrderedMap to decrement its count
1489         for id A, and notify E_3 to look for an element with id A. This leads to an assertion failure since
1490         DocumentOrderedMap expects to find an element with id A, E_2, but cannot find such an element when
1491         traversing from the document root because E was unlinked from the document root (i.e. E_2 is in a
1492         disjoint subtree).
1493
1494         Tests: svg/custom/change-id-of-use-during-removal.html
1495                svg/custom/remove-subtree-including-path-with-duplicate-id-referenced-by-later-textpath.html
1496                svg/custom/remove-subtree-including-text-with-duplicate-id-referenced-by-later-tref.html
1497                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-earlier-use.html
1498                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-later-animate.html
1499                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-later-feimage.html
1500                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-later-mpath.html
1501                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-later-use.html
1502                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-later-use2.html
1503                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-use-in-different-subtree.html
1504                svg/custom/remove-subtree-including-use-with-duplicate-id-referenced-by-use-with-duplicate-id-in-different-subtree.html
1505                svg/custom/remove-use-with-duplicate-id-referenced-by-later-use.html
1506
1507         * dom/ContainerNode.cpp:
1508         (WebCore::ContainerNode::removeChild): Call SVGDocumentExtensions::rebuildElements() after we remove
1509         a DOM subtree so that applicable SVG elements can update their referenced element when the DocumentOrderedMap
1510         is in a stable-state.
1511         (WebCore::ContainerNode::removeChildren): Ditto.
1512         * svg/SVGDocumentExtensions.cpp:
1513         (WebCore::SVGDocumentExtensions::rebuildElements): Added; notifies SVG elements that their href attribute
1514         changed so that they query the DocumentOrderedMap for the element they reference by id in their href attribute.
1515         (WebCore::SVGDocumentExtensions::clearTargetDependencies): Added; Called from removing
1516         an SVG element S from the DOM. Appends all elements that reference the id of S to the end of a Vector of
1517         elements to be rebuilt (when SVGDocumentExtensions::rebuildElements() is called) and notifies these elements
1518         that have been marked to be rebuilt so that they can invalidate their state (e.g. stop animating).
1519         (WebCore::SVGDocumentExtensions::rebuildAllElementReferencesForTarget): Changed to take its argument by reference
1520         (since it's always non-null) and simplified logic to synchronously notify SVG updates that their referenced element
1521         may have changed. Calling SVGElement::svgAttributeChanged() on an element E should at most remove the dependencies
1522         of E.
1523         * svg/SVGDocumentExtensions.h:
1524         * svg/SVGElement.cpp:
1525         (WebCore::SVGElement::~SVGElement): Substitute "*this" for "this" as SVGDocumentExtensions::rebuildAllElementReferencesForTarget()
1526         now takes a reference instead of a pointer.
1527         (WebCore::SVGElement::removedFrom): Modified to call SVGDocumentExtensions::clearTargetDependencies().
1528         (WebCore::SVGElement::attributeChanged): Substitute "*this" for "this" as SVGDocumentExtensions::rebuildAllElementReferencesForTarget()
1529         now takes a reference instead of a pointer.
1530         * svg/SVGElement.h:
1531         (WebCore::SVGElement::callClearTarget): Added; calls through to private virtual SVGElement::clearTarget().
1532         (WebCore::SVGElement::clearTarget): Added.
1533         * svg/SVGTRefElement.cpp:
1534         (WebCore::SVGTRefElement::clearTarget): Added.
1535         * svg/SVGTRefElement.h:
1536         * svg/animation/SVGSMILElement.cpp:
1537         (WebCore::SVGSMILElement::clearTarget): Added.
1538         * svg/animation/SVGSMILElement.h:
1539
1540 2014-05-15  Simon Fraser  <simon.fraser@apple.com>
1541
1542         [iOS WK2] When zoomed, fixed elements jump at the start of a scroll, and jump back at the end.
1543         https://bugs.webkit.org/show_bug.cgi?id=132978
1544         <rdar://problem/16894428>
1545
1546         Reviewed by Benjamin Poulain.
1547
1548         This was the actual cause of the bug; r168560 changed the rect passed in here
1549         to be the customFixedPositionRect rather than the unobscured rect, but we
1550         used it to call FrameView::rectForViewportConstrainedObjects() which gave back
1551         another bogus rect. So just use the rect passed in.
1552
1553         * page/scrolling/ios/ScrollingTreeScrollingNodeIOS.mm:
1554         (WebCore::ScrollingTreeScrollingNodeIOS::updateLayersAfterViewportChange):
1555
1556 2014-05-15  Daniel Bates  <dabates@apple.com>
1557
1558         SVG element may reference arbitrary DOM element before running its insertion logic
1559         https://bugs.webkit.org/show_bug.cgi?id=132757
1560         <rdar://problem/15703817>
1561
1562         Reviewed by Ryosuke Niwa.
1563
1564         Fixes an issue where an SVG element may reference an arbitrary DOM element e before e finished being
1565         inserted in the tree.
1566
1567         Currently when an SVG element A is inserted into a document we use document.getElementById() to find the
1568         element B it references (if any). If A is inserted before B and B has the same id as a later element in
1569         the document then A can find B before B is notified that its been inserted into the document (i.e. before
1570         Element::insertedFrom() is called on B). Instead, A should call document.getElementById() only after
1571         cessation of the insertion operation that inserted it to ensure that all inserted nodes (including B)
1572         processed their insertion-specific logic.
1573
1574         Tests: svg/custom/reparent-animate-element.html
1575                svg/custom/reparent-feimage-element.html
1576                svg/custom/reparent-mpath-element.html
1577                svg/custom/reparent-textpath-element.html
1578                svg/custom/reparent-tref-element.html
1579                svg/custom/reparent-use-element.html
1580
1581         * svg/SVGFEImageElement.cpp:
1582         (WebCore::SVGFEImageElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1583         we are called back to resolve our target element (i.e. call SVGFEImageElement::buildPendingResources())
1584         after the subtree we're in is inserted.
1585         (WebCore::SVGFEImageElement::didNotifySubtreeInsertions): Added; turns around and calls SVGFEImageElement::buildPendingResources().
1586         * svg/SVGFEImageElement.h:
1587         * svg/SVGMPathElement.cpp:
1588         (WebCore::SVGMPathElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1589         we are called back to resolve our target element (i.e. call SVGMPathElement::buildPendingResources())
1590         after the subtree we're in is inserted.
1591         (WebCore::SVGMPathElement::didNotifySubtreeInsertions): Added; turns around and calls SVGMPathElement::buildPendingResources().
1592         * svg/SVGMPathElement.h:
1593         * svg/SVGTRefElement.cpp:
1594         (WebCore::SVGTRefElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1595         we are called back to resolve our target element (i.e. call SVGTRefElement::buildPendingResources())
1596         after the subtree we're in is inserted.
1597         (WebCore::SVGTRefElement::didNotifySubtreeInsertions): Added; turns around and calls SVGTRefElement::buildPendingResources().
1598         * svg/SVGTRefElement.h:
1599         * svg/SVGTextPathElement.cpp:
1600         (WebCore::SVGTextPathElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1601         we are called back to resolve our target element (i.e. call SVGTextPathElement::buildPendingResources())
1602         after the subtree we're in is inserted.
1603         (WebCore::SVGTextPathElement::didNotifySubtreeInsertions): Added; turns around and calls SVGTextPathElement::buildPendingResources().
1604         * svg/SVGTextPathElement.h:
1605         * svg/SVGUseElement.cpp:
1606         (WebCore::SVGUseElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1607         we are called back to resolve our target element (i.e. call SVGUseElement::buildPendingResources()) after its subtree is
1608         inserted.
1609         (WebCore::SVGUseElement::didNotifySubtreeInsertions): Added; turns around and calls SVGUseElement::buildPendingResources().
1610         * svg/SVGUseElement.h:
1611         * svg/animation/SVGSMILElement.cpp:
1612         (WebCore::SVGSMILElement::insertedInto): Return InsertionShouldCallDidNotifySubtreeInsertions so that
1613         we are called back to resolve our target element (i.e. call SVGSMILElement::buildPendingResources())
1614         after the subtree we're in is inserted.
1615         (WebCore::SVGSMILElement::didNotifySubtreeInsertions): Added; turns around and calls SVGSMILElement::buildPendingResources().
1616         * svg/animation/SVGSMILElement.h:
1617
1618 2014-05-15  Mark Hahnenberg  <mhahnenberg@apple.com>
1619
1620         JSDOMWindow should not claim HasImpureGetOwnPropertySlot
1621         https://bugs.webkit.org/show_bug.cgi?id=132918
1622
1623         Reviewed by Geoffrey Garen.
1624
1625         Tests: js/cached-window-properties.html
1626                js/cached-window-prototype-properties.html
1627
1628         We now correctly handle the impurity of JSDOMWindow's custom getOwnPropertySlot without needing the 
1629         blanket HasImpureGetOwnPropertySlot. We do this through the use of watchpoints and by explicitly forbidding
1630         any caching beyond a certain point using PropertySlot::disableCaching. Getting rid of this flag will allow 
1631         us to cache many properties/methods on both the JSDOMWindow and its prototype, which are very commonly used 
1632         across the web.
1633
1634         * bindings/js/JSDOMWindowCustom.cpp:
1635         (WebCore::JSDOMWindow::getOwnPropertySlot):
1636         * bindings/scripts/CodeGeneratorJS.pm:
1637         (HasComplexGetOwnProperty):
1638         (InterfaceRequiresAttributesOnInstance):
1639         (InstanceOverridesGetOwnPropertySlot):
1640         (GenerateHeader):
1641
1642 2014-05-15  Alexey Proskuryakov  <ap@apple.com>
1643
1644         NetworkProcess crashes at ResourceHandle::continueDidReceiveResponse
1645         https://bugs.webkit.org/show_bug.cgi?id=132966
1646         <rdar://problem/16373694>
1647
1648         Reviewed by Brady Eidson.
1649
1650         Covered by many fast/files tests.
1651
1652         * platform/network/BlobResourceHandle.cpp: (WebCore::BlobResourceHandle::continueDidReceiveResponse):
1653         * platform/network/BlobResourceHandle.h:
1654         * platform/network/ResourceHandle.h:
1655         Don't call delegate's continueDidReceiveResponse when loading a blob:// URL,
1656         the delegate is null. On the Mac, we used to lazily create it, which was also wrong,
1657         but at least not observable.
1658
1659 2014-05-15  Commit Queue  <commit-queue@webkit.org>
1660
1661         Unreviewed, rolling out r168899.
1662         https://bugs.webkit.org/show_bug.cgi?id=132965
1663
1664         Broke some compositing regions tests on Mavericks (Requested
1665         by mihnea___ on #webkit).
1666
1667         Reverted changeset:
1668
1669         "[CSS Regions] Reduce the RenderRegion invasiveness in
1670         rendering code"
1671         https://bugs.webkit.org/show_bug.cgi?id=132121
1672         http://trac.webkit.org/changeset/168899
1673
1674 2014-05-15  Alex Christensen  <achristensen@webkit.org>
1675
1676         Add pointer lock to features without enabling it.
1677         https://bugs.webkit.org/show_bug.cgi?id=132961
1678
1679         Reviewed by Sam Weinig.
1680
1681         * Configurations/FeatureDefines.xcconfig:
1682         Added ENABLE_POINTER_LOCK to list of features.
1683         * WebCore.exp.in:
1684         Added linker symbols which differ with pointer lock enabled.
1685         * WebCore.xcodeproj/project.pbxproj:
1686         Added PointerLockController.cpp to build.
1687
1688 2014-05-15  Mark Hahnenberg  <mhahnenberg@apple.com>
1689
1690         Move subframe name getter lookup later in JSDOMWindow::getOwnPropertySlot
1691         https://bugs.webkit.org/show_bug.cgi?id=132922
1692
1693         Reviewed by Geoffrey Garen.
1694
1695         No new tests.
1696
1697         In JSDOMWindow::getOwnPropertySlot, we currently look for the property on the JSDOMWindow, 
1698         then we search the window's subframes for name getters, then we look in the window's prototype 
1699         chain. Apparently we were doing the lookup in this order to be compatible with Mozilla, but 
1700         Mozilla no longer implements this behavior. Instead, they do the lookup on the prototype before 
1701         looking for subframe name getters. We should change this to match Mozilla. This has the convenient 
1702         side effect of allowing us to cache lookups in the window's prototype chain.
1703
1704         * bindings/js/JSDOMWindowCustom.cpp:
1705         (WebCore::JSDOMWindow::getOwnPropertySlot):
1706
1707 2014-05-15  Simon Fraser  <simon.fraser@apple.com>
1708
1709         [UI-side compositing] Fix copying animations between layers, and pausing them
1710         https://bugs.webkit.org/show_bug.cgi?id=132943
1711         <rdar://problem/16906369&16906541>
1712
1713         Reviewed by Tim Horton.
1714
1715         Pass the animation key back to animationStarted(), though this isn't used
1716         when animations are running in-process.
1717
1718         * platform/graphics/ca/PlatformCALayer.h:
1719         * platform/graphics/ca/mac/PlatformCALayerMac.h:
1720         * platform/graphics/ca/mac/PlatformCALayerMac.mm:
1721         (-[WebAnimationDelegate animationDidStart:]):
1722         (PlatformCALayerMac::animationStarted):
1723         * platform/graphics/ca/win/PlatformCALayerWin.cpp:
1724         (PlatformCALayerWin::animationStarted):
1725         * platform/graphics/ca/win/PlatformCALayerWin.h:
1726
1727 2014-05-15  Andrei Bucur  <abucur@adobe.com>
1728
1729         [CSS Regions] Reduce the RenderRegion invasiveness in rendering code
1730         https://bugs.webkit.org/show_bug.cgi?id=132121
1731
1732         Reviewed by Antti Koivisto.
1733
1734         Remove the RenderRegion / RenderNamedFlowFragment parameters and fields from
1735         the painting / hit testing data structures and use a stateful approach to
1736         correctly handle regions.
1737
1738         When painting or hit testing, the current flow thread is saved along the current
1739         region. They are accessed through the |currentRenderNamedFlowFragment| helper
1740         method on RenderObject or RenderLayer.
1741
1742         The patch also changes a bunch of 0s to nullptrs.
1743
1744         Tests: No new tests, no functional change.
1745
1746         * html/shadow/MediaControlElements.cpp:
1747         (WebCore::MediaControlTextTrackContainerElement::createTextTrackRepresentationImage):
1748         * rendering/HitTestLocation.cpp:
1749         (WebCore::HitTestLocation::HitTestLocation):
1750         (WebCore::HitTestLocation::operator=):
1751         * rendering/HitTestLocation.h:
1752         (WebCore::HitTestLocation::region): Deleted.
1753         * rendering/HitTestResult.h:
1754         * rendering/PaintInfo.h:
1755         (WebCore::PaintInfo::PaintInfo):
1756         * rendering/RenderBlock.cpp:
1757         (WebCore::RenderBlock::paint):
1758         (WebCore::RenderBlock::paintObject):
1759         (WebCore::RenderBlock::selectionGaps):
1760         (WebCore::RenderBlock::nodeAtPoint):
1761         * rendering/RenderBox.cpp:
1762         (WebCore::RenderBox::nodeAtPoint):
1763         (WebCore::RenderBox::paintBoxDecorations):
1764         (WebCore::RenderBox::pushContentsClip):
1765         * rendering/RenderBoxModelObject.cpp:
1766         (WebCore::RenderBoxModelObject::paintMaskForTextFillBox):
1767         (WebCore::RenderBoxModelObject::paintFillLayerExtended):
1768         * rendering/RenderBoxModelObject.h:
1769         * rendering/RenderLayer.cpp:
1770         (WebCore::RenderLayer::paint):
1771         (WebCore::RenderLayer::paintLayer):
1772         (WebCore::RenderLayer::paintLayerContents):
1773         (WebCore::RenderLayer::paintLayerByApplyingTransform):
1774         (WebCore::RenderLayer::collectFragments):
1775         (WebCore::RenderLayer::updatePaintingInfoForFragments):
1776         (WebCore::RenderLayer::paintTransformedLayerIntoFragments):
1777         (WebCore::RenderLayer::paintBackgroundForFragments):
1778         (WebCore::RenderLayer::paintForegroundForFragmentsWithPhase):
1779         (WebCore::RenderLayer::paintOutlineForFragments):
1780         (WebCore::RenderLayer::paintMaskForFragments):
1781         (WebCore::RenderLayer::hitTest):
1782         (WebCore::RenderLayer::hitTestFixedLayersInNamedFlows):
1783         (WebCore::RenderLayer::hitTestLayer):
1784         (WebCore::RenderLayer::hitTestTransformedLayerInFragments):
1785         (WebCore::RenderLayer::mapLayerClipRectsToFragmentationLayer):
1786         (WebCore::RenderLayer::calculateClipRects):
1787         * rendering/RenderLayer.h:
1788         * rendering/RenderLayerBacking.cpp:
1789         (WebCore::RenderLayerBacking::updateCompositedBounds):
1790         (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
1791         * rendering/RenderLayerCompositor.cpp:
1792         (WebCore::RenderLayerCompositor::addToOverlapMap):
1793         (WebCore::RenderLayerCompositor::clippedByAncestor):
1794         * rendering/RenderObject.cpp:
1795         (WebCore::RenderObject::currentRenderNamedFlowFragment):
1796         * rendering/RenderObject.h:
1797         * rendering/RenderReplaced.cpp:
1798         (WebCore::RenderReplaced::shouldPaint):
1799         * rendering/RenderReplica.cpp:
1800         (WebCore::RenderReplica::paint):
1801         * rendering/RenderTable.cpp:
1802         (WebCore::RenderTable::nodeAtPoint):
1803         * rendering/RenderTableSection.cpp:
1804         (WebCore::RenderTableSection::nodeAtPoint):
1805         * rendering/RenderTreeAsText.cpp:
1806         (WebCore::writeLayers):
1807         * rendering/RootInlineBox.cpp:
1808         (WebCore::RootInlineBox::paint):
1809         * rendering/svg/RenderSVGRoot.cpp:
1810         (WebCore::RenderSVGRoot::paintReplaced):
1811
1812 2014-05-14  Simon Fraser  <simon.fraser@apple.com>
1813
1814         Clean up "has non-zero begin time" terminology in animations
1815         https://bugs.webkit.org/show_bug.cgi?id=132942
1816
1817         Reviewed by Tim Horton.
1818
1819         Change the "non-zero beginTime" terminology in the platform CA animations
1820         code to "explicit beginTime": this flag really means that we explicitly set
1821         the beginTime of the animation, rather than let CA set the beginTime when
1822         committing the animation. This flag is used for animations with negative
1823         delay, and when pausing.
1824         
1825         The WKNonZeroBeginTimeFlag key was spread across PlatformCALayerMac and PlatformCAAnimationMac,
1826         so hide it behind getter/setter functions.
1827         
1828         Remove lots of m_layer.get() in PlatformCAAnimationMac.
1829
1830         * platform/graphics/ca/mac/PlatformCAAnimationMac.h:
1831         * platform/graphics/ca/mac/PlatformCAAnimationMac.mm:
1832         (WebCore::hasExplicitBeginTime):
1833         (WebCore::setHasExplicitBeginTime):
1834         (PlatformCAAnimationMac::copy):
1835         (PlatformCAAnimationMac::keyPath):
1836         (PlatformCAAnimationMac::beginTime):
1837         (PlatformCAAnimationMac::setBeginTime):
1838         (PlatformCAAnimationMac::duration):
1839         (PlatformCAAnimationMac::setDuration):
1840         (PlatformCAAnimationMac::speed):
1841         (PlatformCAAnimationMac::setSpeed):
1842         (PlatformCAAnimationMac::timeOffset):
1843         (PlatformCAAnimationMac::setTimeOffset):
1844         (PlatformCAAnimationMac::repeatCount):
1845         (PlatformCAAnimationMac::setRepeatCount):
1846         (PlatformCAAnimationMac::autoreverses):
1847         (PlatformCAAnimationMac::setAutoreverses):
1848         (PlatformCAAnimationMac::fillMode):
1849         (PlatformCAAnimationMac::setFillMode):
1850         (PlatformCAAnimationMac::setTimingFunction):
1851         (PlatformCAAnimationMac::copyTimingFunctionFrom):
1852         (PlatformCAAnimationMac::isRemovedOnCompletion):
1853         (PlatformCAAnimationMac::setRemovedOnCompletion):
1854         (PlatformCAAnimationMac::isAdditive):
1855         (PlatformCAAnimationMac::setAdditive):
1856         (PlatformCAAnimationMac::valueFunction):
1857         (PlatformCAAnimationMac::setValueFunction):
1858         (hasNonZeroBeginTimeFlag): Deleted.
1859         (setNonZeroBeginTimeFlag): Deleted.
1860         * platform/graphics/ca/mac/PlatformCALayerMac.mm:
1861         (-[WebAnimationDelegate animationDidStart:]):
1862
1863 2014-05-15  Carlos Garcia Campos  <cgarcia@igalia.com>
1864
1865         [GTK] Compile all installed resources as GResources
1866         https://bugs.webkit.org/show_bug.cgi?id=131099
1867
1868         Reviewed by Philippe Normand.
1869
1870         * PlatformGTK.cmake: Do not install the resources.
1871         * platform/audio/gtk/AudioBusGtk.cpp:
1872         (WebCore::AudioBus::loadPlatformResource): Load the audio resource
1873         from GResources and use createBusFromInMemoryAudioFile().
1874         * platform/graphics/Image.h: Remove unsued function loadPlatformThemeIcon.
1875         * platform/graphics/gtk/ImageGtk.cpp:
1876         (WebCore::loadImageFromGResource): Load the given icon name from GResources.
1877         (WebCore::loadResourceSharedBuffer): Use char* instead of CString.
1878         (WebCore::loadMissingImageIconFromTheme): Try to load the missing
1879         icon from the current GTK icon theme.
1880         (WebCore::Image::loadPlatformResource): Call
1881         loadMissingImageIconFromTheme for missing icon or
1882         loadImageFromGResource for any other icon name.
1883         (WebCore::getPathToImageResource): Deleted.
1884         (WebCore::getThemeIconFileName): Deleted.
1885         (WebCore::loadImageFromFile): Deleted.
1886         (WebCore::Image::loadPlatformThemeIcon): Deleted.
1887
1888 2014-05-14  Beth Dakin  <bdakin@apple.com>
1889
1890         Tiled scrolling indicator needs to take topContentInset into account
1891         https://bugs.webkit.org/show_bug.cgi?id=132940
1892
1893         Reviewed by Simon Fraser.
1894
1895         The tiled scrolling indicator needs to move down by the value of the 
1896         topContentInset. This patch makes that happen by caching the topContentInset in 
1897         the TileController. This does feel a little silly since there is already a 
1898         function called setTiledScrollingIndicatorPosition() on TiledBacking. However, it 
1899         was often the case that calling that function had no effect because m_coverageMap 
1900         had not yet been created, and then the information was lost. So instead, we cache 
1901         the value.
1902
1903         Set TiledBacking’s copy of topContentInset whenever it changes for the FrameView.
1904         * page/FrameView.cpp:
1905         (WebCore::FrameView::topContentInsetDidChange):
1906
1907         New function to set the inset. Use the inset to position the coverage map.
1908         * platform/graphics/TiledBacking.h:
1909         * platform/graphics/ca/mac/TileController.h:
1910         * platform/graphics/ca/mac/TileController.mm:
1911         (WebCore::TileController::TileController):
1912         (WebCore::TileController::setTopContentInset):
1913
1914         When the coverage map is created, consult the value of the inset.
1915         * platform/graphics/ca/mac/TileCoverageMap.mm:
1916         (WebCore::TileCoverageMap::TileCoverageMap):
1917
1918         Once the backing has been ensured, set the inset.
1919         * rendering/RenderLayerCompositor.cpp:
1920         (WebCore::RenderLayerCompositor::updateBacking):
1921
1922 2014-05-14  Brent Fulgham  <bfulgham@apple.com>
1923
1924         Merge r1267628 from branch.
1925         <rdar://problem/15751219>
1926
1927             Pratik Solanki  <psolanki@apple.com>
1928
1929             Reviewed by Simon Fraser.",
1930
1931             TileController relied on the tiling mode in TileCache to determine if it should use low-res
1932             tiles when zooming. Unfortunately, sometimes the tiling mode gets set to Zooming even though
1933             it's actually a pan. Thus we can end up with blurry tiles. Fix this by adding a new flag on
1934             TileCache that controls this behavior and have UIKit set it only when we have an actual zoom
1935             operation.
1936  
1937         * platform/ios/LegacyTileCache.h:
1938         (WebCore::LegacyTileCache::tileControllerShouldUseLowScaleTiles):
1939         (WebCore::LegacyTileCache::setTileControllerShouldUseLowScaleTiles):
1940         * platform/ios/LegacyTileCache.mm:
1941         (WebCore::LegacyTileCache::LegacyTileCache):
1942         * platform/ios/wak/WAKWindow.h:
1943         * platform/ios/wak/WAKWindow.mm:
1944         (-[WAKWindow setTileControllerShouldUseLowScaleTiles:]):
1945         * rendering/RenderLayerCompositor.cpp:
1946         (WebCore::RenderLayerCompositor::contentsScaleMultiplierForNewTiles):
1947
1948 2014-05-14  Commit Queue  <commit-queue@webkit.org>
1949
1950         Unreviewed, rolling out r168750.
1951         https://bugs.webkit.org/show_bug.cgi?id=132935
1952
1953         Caused repaint bugs (Requested by weinig on #webkit).
1954
1955         Reverted changeset:
1956
1957         "Text decorations do not contribute to visual overflow"
1958         https://bugs.webkit.org/show_bug.cgi?id=132773
1959         http://trac.webkit.org/changeset/168750
1960
1961 2014-05-14  Simon Fraser  <simon.fraser@apple.com>
1962
1963         [New multicolumn] Spin in RenderMultiColumnSet::repaintFlowThreadContent()
1964         https://bugs.webkit.org/show_bug.cgi?id=132884
1965
1966         Reviewed by Beth Dakin.
1967
1968         On iOS, wikipedia pages can hang under RenderMultiColumnSet::repaintFlowThreadContent().
1969         It appears that computedColumnHeight is set to 0 in prepareForLayout, but layout never happens
1970         on the RenderMultiColumnSet in some cases, leaving the column height set to zero.
1971         This caused columnIndexAtOffset() to return bad values, which resulted in very long loops
1972         in repaintFlowThreadContent().
1973         
1974         This fix is a stop-gap.
1975
1976         * rendering/RenderMultiColumnSet.cpp:
1977         (WebCore::RenderMultiColumnSet::columnIndexAtOffset):
1978
1979 2014-05-14  Benjamin Poulain  <bpoulain@apple.com>
1980
1981         Remove FrameView::viewportConstrainedExtentRect, it is unused
1982         https://bugs.webkit.org/show_bug.cgi?id=132927
1983
1984         Reviewed by Simon Fraser.
1985
1986         * page/FrameView.cpp:
1987         (WebCore::FrameView::viewportConstrainedExtentRect): Deleted.
1988         * page/FrameView.h:
1989         Simon replaced this by viewportConstrainedVisibleContentRect, remove the old code.
1990
1991 2014-05-14  Matthew Hanson  <matthew_hanson@apple.com>
1992
1993         Only define MAX_GRID_TRACK_REPETITIONS if CSS_GRID_LAYOUT is enabled.
1994
1995         Reviewed by Dean Jackson.
1996
1997         This was causing -Wunused-const-variable errors.
1998
1999         * css/CSSParser.cpp: Add include guard.
2000
2001 2014-05-14  Beth Dakin  <bdakin@apple.com>
2002
2003         Tile cache has way too many tiles when pinch-zoomed in
2004         https://bugs.webkit.org/show_bug.cgi?id=132929
2005         -and corresponding-
2006         <rdar://problem/16527172>
2007
2008         Reviewed by Benjamin Poulain.
2009
2010         This patch makes the margin sizing functions return the set margin size scaled by 
2011         the TileGrid's scale. We also need to get rid of the old notion we used to have
2012         that margin tiles might be allowed to have a different size than the other tiles. 
2013         We don't want that. They should have the normal margin size, but they should
2014         affect the overall coverage area.
2015
2016         Scale by the TileGrid's scale.
2017         * platform/graphics/ca/mac/TileController.mm:
2018         (WebCore::TileController::topMarginHeight):
2019         (WebCore::TileController::bottomMarginHeight):
2020         (WebCore::TileController::leftMarginWidth):
2021         (WebCore::TileController::rightMarginWidth):
2022
2023         Get rid of adjustRectAtTileIndexForMargin() since we do not want to ever do this 
2024         adjustment. Use tileSize instead of margin size for all sizing computations.
2025         * platform/graphics/ca/mac/TileGrid.h:
2026         * platform/graphics/ca/mac/TileGrid.mm:
2027         (WebCore::TileGrid::rectForTileIndex):
2028         (WebCore::TileGrid::getTileIndexRangeForRect):
2029         (WebCore::TileGrid::adjustRectAtTileIndexForMargin): Deleted.
2030
2031 2014-05-14  Dean Jackson  <dino@apple.com>
2032
2033         [Mac] Search fields should not use centered look
2034         https://bugs.webkit.org/show_bug.cgi?id=132930
2035         <rdar://problem/16825842>
2036
2037         Reviewed by Beth Dakin.
2038
2039         We need to explicitly set the centeredLook property
2040         to NO on modern releases of Mac.
2041
2042         * rendering/RenderThemeMac.mm: Declare a new private property and set it to NO.
2043         (WebCore::RenderThemeMac::search):
2044
2045 2014-05-14  Zalan Bujtas  <zalan@apple.com>
2046
2047         Subpixel layout: Change Element.offset* client* scroll* return type to double.
2048         https://bugs.webkit.org/show_bug.cgi?id=132895
2049
2050         Reviewed by Simon Fraser.
2051
2052         This patch changes Element.offset*, Element.client* and Element.scroll* APIs return
2053         type from long to double to match the latest CSSOM View Module spec[1].
2054         Element.offset* and Element.client* do return subpixel values from now on.
2055         Element.scroll* still return integral values as the scrolling code hasn't adopted to subpixel rendering yet.
2056
2057         subpixelCSSOMElementMetricsEnabled setting is added to be able to turn this feature on/off
2058         from WK2 preferences. It toggles the return value from subpixel to floored integral.
2059         It does not change layout/rendering behavior.
2060
2061         Reference list of what other browsers do:
2062         IE: http://blogs.msdn.com/b/ie/archive/2012/02/17/sub-pixel-rendering-and-the-css-object-model.aspx
2063         Blink: http://www.chromestatus.com/features/5497402177880064
2064         Firefox: https://bugzilla.mozilla.org/show_bug.cgi?id=825607
2065
2066         [1] http://www.w3.org/TR/2013/WD-cssom-view-20131217/
2067
2068         Test: cssom/subpixel-offsetleft-top-width-height-values.html
2069
2070         * dom/Element.cpp:
2071         (WebCore::localZoomForRenderer):
2072         (WebCore::adjustForLocalZoom):
2073         (WebCore::convertToNonSubpixelValueIfNeeded):
2074         (WebCore::Element::offsetLeft):
2075         (WebCore::Element::offsetTop):
2076         (WebCore::Element::offsetWidth):
2077         (WebCore::Element::offsetHeight):
2078         (WebCore::Element::clientLeft):
2079         (WebCore::Element::clientTop):
2080         (WebCore::Element::clientWidth):
2081         (WebCore::Element::clientHeight):
2082         (WebCore::Element::scrollLeft):
2083         (WebCore::Element::scrollTop):
2084         (WebCore::Element::setScrollLeft):
2085         (WebCore::Element::setScrollTop):
2086         (WebCore::Element::scrollWidth):
2087         (WebCore::Element::scrollHeight):
2088         * dom/Element.h:
2089         * dom/Element.idl:
2090         * html/HTMLBodyElement.cpp:
2091         (WebCore::adjustForZoom):
2092         (WebCore::HTMLBodyElement::scrollLeft):
2093         (WebCore::HTMLBodyElement::setScrollLeft):
2094         (WebCore::HTMLBodyElement::scrollTop):
2095         (WebCore::HTMLBodyElement::setScrollTop):
2096         (WebCore::HTMLBodyElement::scrollHeight):
2097         (WebCore::HTMLBodyElement::scrollWidth):
2098         * html/HTMLBodyElement.h:
2099         * page/Settings.in:
2100
2101 2014-05-14  Brady Eidson  <beidson@apple.com>
2102
2103         Implement NSSharingServiceDelegate method "transitionImageForShareItem"
2104         <rdar://problem/16878020> and https://bugs.webkit.org/show_bug.cgi?id=132911
2105
2106         Reviewed by Tim Horton.
2107
2108         * WebCore.exp.in:
2109         * WebCore.xcodeproj/project.pbxproj:
2110
2111 2014-05-14  Alex Christensen  <achristensen@webkit.org>
2112
2113         Another unreviewed build fix.
2114
2115         * platform/network/mac/ResourceHandleMac.mm:
2116         (WebCore::ResourceHandle::getTimingData):
2117         Added necessary UNUSED_PARAMs.
2118
2119 2014-05-14  Alex Christensen  <achristensen@webkit.org>
2120
2121         Unreviewed build fix after r168849.
2122
2123         * platform/network/mac/ResourceHandleMac.mm:
2124         (WebCore::ResourceHandle::getTimingData):
2125         Protect use of timing data with ENABLE(WEB_TIMING).
2126
2127 2014-05-14  Alex Christensen  <achristensen@webkit.org>
2128
2129         Refactor duplicate code in web timing.
2130         https://bugs.webkit.org/show_bug.cgi?id=132917
2131
2132         Reviewed by Alexey Proskuryakov.
2133
2134         * platform/network/ResourceHandle.h:
2135         Added getTimingData declaration.
2136         * platform/network/mac/ResourceHandleMac.mm:
2137         (WebCore::ResourceHandle::getTimingData):
2138         * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
2139         (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
2140         * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
2141         (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
2142         Moved duplicate code to ResourceHandle.
2143
2144 2014-05-14  Alex Christensen  <achristensen@webkit.org>
2145
2146         Use references instead of pointers with ResourceLoadTiming.
2147         https://bugs.webkit.org/show_bug.cgi?id=132846
2148
2149         Reviewed by Alexey Proskuryakov.
2150
2151         * WebCore.exp.in:
2152         Removed ResourceResponseBase::setResourceLoadTiming linker symbol.
2153         * inspector/InspectorResourceAgent.cpp:
2154         (WebCore::buildObjectForResourceResponse):
2155         * page/PerformanceResourceTiming.cpp:
2156         (WebCore::PerformanceResourceTiming::domainLookupStart):
2157         (WebCore::PerformanceResourceTiming::domainLookupEnd):
2158         (WebCore::PerformanceResourceTiming::connectStart):
2159         (WebCore::PerformanceResourceTiming::connectEnd):
2160         (WebCore::PerformanceResourceTiming::secureConnectionStart):
2161         (WebCore::PerformanceResourceTiming::requestStart):
2162         Use references instead of pointers.
2163         * page/PerformanceResourceTiming.h:
2164         Make an instance instead of a RefPtr.
2165         * page/PerformanceTiming.cpp:
2166         (WebCore::PerformanceTiming::domainLookupStart):
2167         (WebCore::PerformanceTiming::domainLookupEnd):
2168         (WebCore::PerformanceTiming::connectStart):
2169         (WebCore::PerformanceTiming::connectEnd):
2170         (WebCore::PerformanceTiming::secureConnectionStart):
2171         (WebCore::PerformanceTiming::requestStart):
2172         (WebCore::PerformanceTiming::responseStart):
2173         Check to see if the loader exists, then use ResourceLoadTiming reference.
2174         (WebCore::PerformanceTiming::resourceLoadTiming): Deleted.
2175         * page/PerformanceTiming.h:
2176         Removed resourceLoadTiming declaration.
2177         * platform/network/ResourceLoadTiming.h:
2178         (WebCore::ResourceLoadTiming::ResourceLoadTiming):
2179         (WebCore::ResourceLoadTiming::operator=):
2180         Replaced reference counting with copy constructors.
2181         (WebCore::ResourceLoadTiming::create): Deleted.
2182         (WebCore::ResourceLoadTiming::deepCopy): Deleted.
2183         * platform/network/ResourceResponseBase.cpp:
2184         (WebCore::ResourceResponseBase::adopt):
2185         (WebCore::ResourceResponseBase::copyData):
2186         (WebCore::ResourceResponseBase::resourceLoadTiming):
2187         (WebCore::ResourceResponseBase::setResourceLoadTiming):
2188         (WebCore::ResourceResponseBase::compare):
2189         * platform/network/ResourceResponseBase.h:
2190         * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
2191         (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
2192         * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
2193         (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
2194         * platform/network/soup/ResourceHandleSoup.cpp:
2195         (WebCore::ResourceHandle::didStartRequest):
2196         (WebCore::networkEventCallback):
2197         Use references instead of pointers.
2198
2199 2014-05-14  Commit Queue  <commit-queue@webkit.org>
2200
2201         Unreviewed, rolling out r168837.
2202         https://bugs.webkit.org/show_bug.cgi?id=132913
2203
2204         The patch added an assertion which fires on 6 tests (Requested
2205         by ap on #webkit).
2206
2207         Reverted changeset:
2208
2209         "[CSS Regions] Add ASSERT to make sure using the flowThread
2210         cache does not return incorrect results"
2211         https://bugs.webkit.org/show_bug.cgi?id=132906
2212         http://trac.webkit.org/changeset/168837
2213
2214 2014-05-13  Jon Honeycutt  <jhoneycutt@apple.com>
2215
2216         Revert "Don't dispatch 'beforeload' event inside FrameView::layout()",
2217         commit 84fe8cf6fbe8b5de9a06300ca3ef6d0ffc96948c, and associated
2218         follow-up fixes:
2219
2220             "platform/mac/plugins/testplugin-onnew-onpaint.html failing after
2221                 r168668", commit c17be3bf5127baf94310af4b4b9bf5a57d29aaf4
2222             "[Win] Unreviewed build fix after r168668.", commit
2223                 4fa470ad12c38ee7d4c114541b6dd321181a8bc9
2224
2225         The original merged patch appears to have caused a regression in
2226         fast/dom/HTMLObjectElement/object-as-frame.html.
2227
2228         <https://bugs.webkit.org/show_bug.cgi?id=132886>
2229
2230         Reviewed by Alexey Proskuryakov.
2231
2232         * WebCore.exp.in:
2233         * dom/Document.cpp:
2234         (WebCore::Document::updateLayoutIgnorePendingStylesheets):
2235         * dom/Document.h:
2236         * html/HTMLAppletElement.cpp:
2237         (WebCore::HTMLAppletElement::renderWidgetForJSBindings):
2238         * html/HTMLEmbedElement.cpp:
2239         (WebCore::HTMLEmbedElement::renderWidgetForJSBindings):
2240         * html/HTMLObjectElement.cpp:
2241         (WebCore::HTMLObjectElement::renderWidgetForJSBindings):
2242         * page/FrameView.cpp:
2243         (WebCore::FrameView::FrameView):
2244         (WebCore::FrameView::reset):
2245         (WebCore::FrameView::flushAnyPendingPostLayoutTasks):
2246         (WebCore::FrameView::performPostLayoutTasks):
2247         (WebCore::FrameView::updateEmbeddedObjectsTimerFired): Deleted.
2248         * page/FrameView.h:
2249         * testing/Internals.cpp:
2250         (WebCore::Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks): Deleted.
2251         * testing/Internals.h:
2252         * testing/Internals.idl:
2253
2254 2014-05-14  Kiran  <kiran.guduru@samsung.com>
2255
2256         alidation for getUserMedia() errorCallback is missing.
2257         https://bugs.webkit.org/show_bug.cgi?id=132901
2258
2259         Reviewed by Darin Adler.
2260
2261         The patch adds the validation for getUserMedia errorCallBack
2262         and throws TypeMismatchError.
2263
2264         Test: fast/mediastream/getusermedia.html 
2265
2266         * Modules/mediastream/NavigatorUserMedia.cpp:
2267         (WebCore::NavigatorUserMedia::webkitGetUserMedia):
2268
2269 2014-05-14  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>
2270
2271         Remove CSS_STICKY_POSITION guards
2272         https://bugs.webkit.org/show_bug.cgi?id=132676
2273
2274         Reviewed by Simon Fraser.
2275
2276         * Configurations/FeatureDefines.xcconfig:
2277         * css/CSSParser.cpp:
2278         (WebCore::isValidKeywordPropertyAndValue):
2279         * css/CSSPrimitiveValueMappings.h:
2280         (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
2281         (WebCore::CSSPrimitiveValue::operator EPosition):
2282         * css/CSSValueKeywords.in:
2283         * editing/EditingStyle.cpp:
2284         (WebCore::EditingStyle::convertPositionStyle):
2285
2286 2014-05-14  Radu Stavila  <stavila@adobe.com>
2287
2288         [CSS Regions] Add ASSERT to make sure using the flowThread cache does not return incorrect results
2289         https://bugs.webkit.org/show_bug.cgi?id=132906
2290
2291         Reviewed by Andrei Bucur.
2292
2293         If flowThreadContainingBlock() is called on an object which is in a different
2294         flow thread than the one currently being laid out, this method will return an incorrect
2295         result. I added an assertion for that to make sure we catch and treat any such scenarios.
2296
2297         No new tests required.
2298
2299         * rendering/RenderObject.cpp:
2300         (WebCore::RenderObject::locateFlowThreadContainingBlockNoCache):
2301         (WebCore::RenderObject::locateFlowThreadContainingBlock):
2302         * rendering/RenderObject.h:
2303
2304 2014-05-14  Andrei Bucur  <abucur@adobe.com>
2305
2306         [CSS Regions] Don't relayout when updating the region range unless necessary
2307         https://bugs.webkit.org/show_bug.cgi?id=132120
2308
2309         Reviewed by Antti Koivisto.
2310
2311         The patch reduces the cases when a relayout is made for boxes that change the region range.
2312         This lowers the amount of nested layouts in most cases and produces big layout speedups for trees
2313         without overhanging floats.
2314
2315         Tests: Major performance improvement with speedups of 50-60% on:
2316         Layout/RegionsAuto.html, Layout/RegionsAutoMaxHeight.html and Layout/RegionsFixed.html
2317
2318         * rendering/RenderBlock.cpp:
2319         (WebCore::RenderBlock::updateRegionRangeForBoxChild): Ask the child box if it needs a relayout
2320         in case its region range changes.
2321         * rendering/RenderBlockFlow.cpp:
2322         (WebCore::RenderBlockFlow::layoutBlockChild): It's not necessary to do two layouts here because
2323         there's no block direction position change between them for the child.
2324         (WebCore::RenderBlockFlow::needsLayoutAfterRegionRangeChange): If the block doesn't have floats
2325         or if it expands to enclose the floats it doesn't need to relayout after a region range chage.
2326         It's not possible for it to have a float inside overflow that must be repositioned using the new
2327         range.
2328         * rendering/RenderBlockFlow.h:
2329         * rendering/RenderBox.h:
2330         (WebCore::RenderBox::needsLayoutAfterRegionRangeChange): By default don't relayout after a region
2331         range change.
2332
2333 2014-05-14  Antti Koivisto  <antti@apple.com>
2334
2335         RuleData should ref the StyleRule
2336         https://bugs.webkit.org/show_bug.cgi?id=132865
2337
2338         Reviewed by Andreas Kling.
2339
2340         As a defensive move make RuleData ref the StyleRule. 
2341         This adds some ref churn but the overall performance impact should be minimal.
2342
2343         * css/RuleSet.h:
2344         (WebCore::RuleData::rule):
2345
2346 2014-05-14  Antti Koivisto  <antti@apple.com>
2347
2348         GIF animations don't restart after scrolling on iOS WebKit1
2349         https://bugs.webkit.org/show_bug.cgi?id=132900
2350
2351         Reviewed by Andreas Kling.
2352
2353         * WebCore.exp.in:
2354
2355 2014-05-13  Andrei Bucur  <abucur@adobe.com>
2356
2357         [CSS Regions] Assertion failure in some cases with inline blocks
2358         https://bugs.webkit.org/show_bug.cgi?id=132859
2359
2360         Reviewed by Mihnea Ovidenie.
2361
2362         The patch hardens the conditions when the region range caches are
2363         populated to avoid desynchronizations when objects move during layout.
2364         This is true especially in the case of the boxes found inside
2365         inline blocks, that get their range from the containing line.
2366
2367         There is a new function |computedRegionRangeForBox| that will always
2368         return a region range for a box using a best effort algorithm. This should
2369         be used only when there's no need to cache region information.
2370
2371         This change also allows better control over the lifecycle of the
2372         |RenderBoxRegionInfo| objects stored on the regions. We can now iterate
2373         over the full range of the box when cleaning up the region box info. The
2374         same applies for the width change detection function.
2375
2376         Test: fast/regions/inline-block-shifted-region.html
2377
2378         * rendering/RenderBlockLineLayout.cpp:
2379         (WebCore::RenderBlockFlow::updateRegionForLine): Don't set the containing
2380         region if the block doesn't have a range. The returned value would not
2381         be correctly clamped.
2382         * rendering/RenderBox.cpp:
2383         (WebCore::RenderBlock::hasRegionRangeInFlowThread):
2384         * rendering/RenderBox.h:
2385         * rendering/RenderFlowThread.cpp:
2386         (WebCore::RenderFlowThread::removeRenderBoxRegionInfo): Iterate only over
2387         the range of the box, not from the start of the region chain.
2388         (WebCore::RenderFlowThread::logicalWidthChangedInRegionsForBlock): Same as
2389         above.
2390         (WebCore::RenderFlowThread::hasCachedRegionRangeForBox):
2391         (WebCore::RenderFlowThread::getRegionRangeForBoxFromCachedInfo):
2392         (WebCore::RenderFlowThread::getRegionRangeForBox):
2393         (WebCore::RenderFlowThread::computedRegionRangeForBox): Best effort function
2394         to determine the range of a box. It will always return something as long
2395         as the flow thread has regions.
2396         (WebCore::RenderFlowThread::objectShouldFragmentInFlowRegion): Use the new function
2397         to determine the range.
2398         * rendering/RenderFlowThread.h:
2399         * rendering/RenderNamedFlowThread.cpp:
2400         (WebCore::RenderNamedFlowThread::absoluteQuadsForBox): Use the new function to determine
2401         the range.
2402
2403 2014-05-13  Simon Fraser  <simon.fraser@apple.com>
2404
2405         Fix "ASSERTION FAILED: m_representation == PlatformLayerRepresentation" with UI-side compositing
2406         https://bugs.webkit.org/show_bug.cgi?id=132899
2407
2408         Reviewed by Beth Dakin.
2409
2410         Export some things
2411
2412         * WebCore.exp.in:
2413
2414 2014-05-13  Hans Muller  <hmuller@adobe.com>
2415
2416         [CSS Shapes] line height grows around polygon and incorrectly causes text to wrap to next line
2417         https://bugs.webkit.org/show_bug.cgi?id=131622
2418
2419         Reviewed by Bem Jones-Bey.
2420
2421         Corrected an earlier PolygonShape fix https://bugs.webkit.org/show_bug.cgi?id=132132
2422         When the top or bottom of a layout line is coincident with a polygon edge vertex, we
2423         only consider it an intersection if the edge extends into the line.
2424
2425         Test: fast/shapes/shape-outside-floats/shape-outside-edge-case.html
2426
2427         * rendering/shapes/PolygonShape.cpp:
2428         (WebCore::OffsetPolygonEdge::clippedEdgeXRange):
2429
2430 2014-05-13  Beth Dakin  <bdakin@apple.com>
2431
2432         m_layerForOverhangAreas is sometimes not positioned correctly when topContentInset 
2433         has changed
2434         https://bugs.webkit.org/show_bug.cgi?id=132898
2435         -and corresponding-
2436         <rdar://problem/16644710>
2437
2438         Reviewed by Anders Carlsson.
2439
2440         This function is called whenever the topContentInset changes, so use it as an 
2441         opportunity to ensure that m_layerForOverhangAreas has been positioned correctly.
2442         * rendering/RenderLayerCompositor.cpp:
2443         (WebCore::RenderLayerCompositor::frameViewDidChangeSize):
2444
2445         Everyone gets an anchor point!
2446         (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
2447
2448 2014-05-13  Dean Jackson  <dino@apple.com>
2449
2450         Attempted build fix after https://bugs.webkit.org/show_bug.cgi?id=132891
2451
2452         * page/PageDebuggable.cpp:
2453
2454 2014-05-13  Timothy Hatcher  <timothy@apple.com>
2455
2456         Force developerExtrasEnabled when a remote Inspector client connects.
2457
2458         https://bugs.webkit.org/show_bug.cgi?id=132891
2459
2460         Reviewed by Joseph Pecoraro.
2461
2462         * page/PageDebuggable.cpp:
2463         (WebCore::PageDebuggable::PageDebuggable): Initialize m_forcedDeveloperExtrasEnabled to false.
2464         (WebCore::PageDebuggable::connect): Set m_forcedDeveloperExtrasEnabled if the setting is changed.
2465         (WebCore::PageDebuggable::disconnect): Switch developerExtrasEnabled back to false
2466         if m_forcedDeveloperExtrasEnabled is true.
2467         * page/PageDebuggable.h: Added m_forcedDeveloperExtrasEnabled.
2468
2469 2014-05-13  Beth Dakin  <bdakin@apple.com>
2470
2471         REGRESSION (topContentInset): Searching through Facebook Messenger's chat causes 
2472         scrolling in News Feed
2473         https://bugs.webkit.org/show_bug.cgi?id=132889
2474         -and corresponding-
2475         <rdar://problem/16715716>
2476
2477         Reviewed by Simon Fraser.
2478
2479         First of all, scrollOffsetRelativeToDocument() was very poorly named. This patch 
2480         re-names it to the much more accurate documentScrollOffsetRelativeToViewOrigin(). 
2481         Re-naming it makes it clear that ONE call site was not getting the right offset. 
2482         That call site does not want to know the document’s position relative to the view 
2483         origin, but rather it wants to know the Document’s position relative to the 
2484         scrolling origin.
2485
2486         Export new name.
2487         * WebCore.exp.in:
2488
2489         Use newly re-named documentScrollPositionRelativeToViewOrigin().
2490         * page/FrameView.cpp:
2491         (WebCore::FrameView::convertToRenderer):
2492         * platform/ScrollView.cpp:
2493         (WebCore::ScrollView::documentScrollOffsetRelativeToViewOrigin):
2494         (WebCore::ScrollView::documentScrollPositionRelativeToViewOrigin):
2495         (WebCore::ScrollView::documentScrollOffsetRelativeToScrollableAreaOrigin):
2496         (WebCore::ScrollView::rootViewToContents):
2497         (WebCore::ScrollView::windowToContents):
2498         (WebCore::ScrollView::scrollOffsetRelativeToDocument): Deleted.
2499         (WebCore::ScrollView::scrollPositionRelativeToDocument): Deleted.
2500         * platform/ScrollView.h:
2501
2502         THIS is the spot that needs the new function, 
2503         documentScrollOffsetRelativeToScrollableAreaOrigin()()
2504         * rendering/RenderLayer.cpp:
2505         (WebCore::RenderLayer::scrollRectToVisible):
2506
2507 2014-05-13  Dean Jackson  <dino@apple.com>
2508
2509         [iOS] Page scale update messages for media controls should only fire at the end of zooming
2510         https://bugs.webkit.org/show_bug.cgi?id=132857
2511         <rdar://problem/16631009>
2512
2513         Reviewed by Simon Fraser.
2514
2515         As the user was zooming, the media controls that responded
2516         to the page scale (and resized themselves) would do so
2517         slightly out of sync with the screen refreshes, and it looked
2518         terrible. They really only need to get told at the end
2519         of the zoom that they need to relayout.
2520
2521         Allow setPageScaleFactor to accept another parameter
2522         that indicates if the change is stable. That way, changes
2523         during a user triggers zoom gesture can be ignored for
2524         media controls.
2525
2526         * WebCore.exp.in: Page::setPageScaleFactor takes a new parameter.
2527         * dom/Document.cpp:
2528         (WebCore::Document::pageScaleFactorChangedAndStable): Renamed from pageScaleFactorChanged.
2529         (WebCore::Document::pageScaleFactorChanged): Deleted.
2530         * dom/Document.h:
2531         * page/Page.cpp:
2532         (WebCore::Page::setPageScaleFactor): Accepts a new inStableState parameter,
2533         and tells the main frame that the scale factor has changed if it's stable.
2534         * page/Page.h:
2535
2536 2014-05-13  Eric Carlson  <eric.carlson@apple.com>
2537
2538         Unreviewed build fix after r168755.
2539
2540         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
2541         (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive):
2542
2543 2014-05-13  Eric Carlson  <eric.carlson@apple.com>
2544
2545         [Mac] hasVideo should return true when video is ready to display
2546         https://bugs.webkit.org/show_bug.cgi?id=132885
2547
2548         Reviewed by Jer Noble.
2549
2550         * html/HTMLMediaElement.cpp:
2551         (WebCore::HTMLMediaElement::parseAttribute):
2552
2553         * platform/graphics/avfoundation/objc/AudioTrackPrivateAVFObjC.mm:
2554         (WebCore::AudioTrackPrivateAVFObjC::resetPropertiesFromTrack): Don't change the
2555             enabled state of the AVPlayerItemTrack during setup.
2556
2557         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
2558         * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
2559         (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): Initialize
2560             m_cachedIsReadyForDisplay.
2561         (WebCore::MediaPlayerPrivateAVFoundationObjC::cancelLoad): Remove "enabled" KVO observers.
2562         (WebCore::MediaPlayerPrivateAVFoundationObjC::createVideoLayer): Observe "readyForDisplay"
2563             change notifications.
2564         (WebCore::MediaPlayerPrivateAVFoundationObjC::destroyVideoLayer): Remove for "readyForDisplay"
2565             observer.
2566         (WebCore::MediaPlayerPrivateAVFoundationObjC::hasAvailableVideoFrame): Return cached readyForDisplay
2567             state instead of polling every time.
2568         (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksChanged): Call setHasVideo(true) if the
2569             player layer is ready for display.
2570         (WebCore::MediaPlayerPrivateAVFoundationObjC::updateAudioTracks): Update logging.
2571         (WebCore::MediaPlayerPrivateAVFoundationObjC::updateVideoTracks): Ditto.
2572         (WebCore::MediaPlayerPrivateAVFoundationObjC::firstFrameAvailableDidChange): Cache readyForDisplay
2573             state, call tracksChanged() if we haven't seen a video track yet.
2574         (WebCore::MediaPlayerPrivateAVFoundationObjC::trackEnabledDidChange): New.
2575         (WebCore::MediaPlayerPrivateAVFoundationObjC::metadataDidArrive): Correct logging.
2576         (WebCore::MediaPlayerPrivateAVFoundationObjC::tracksDidChange): Remove old "enabled" listeners
2577             before release tracks, add new ones to new tracks.
2578         (WebCore::assetTrackMetadataKeyNames): Add "enabled" to the list of properties we require to 
2579             be loaded before announcing that metadata has loaded.
2580         (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): Observe 
2581             "readyForDisplay" and "enabled".
2582
2583         * platform/graphics/avfoundation/objc/VideoTrackPrivateAVFObjC.cpp:
2584         (WebCore::VideoTrackPrivateAVFObjC::resetPropertiesFromTrack): Don't change the
2585             enabled state of the AVPlayerItemTrack during setup.
2586
2587 2014-05-13  Myles C. Maxfield  <litherum@gmail.com>
2588
2589         Text decorations do not contribute to visual overflow
2590         https://bugs.webkit.org/show_bug.cgi?id=132773
2591
2592         Reviewed by Darin Adler.
2593
2594         Tests: fast/css3-text/css3-text-decoration/repaint/underline-outside-of-layout-rect.html
2595
2596         * rendering/InlineTextBox.cpp:
2597         (WebCore::textDecorationStrokeThickness): Refactor into a common function
2598         (WebCore::wavyOffsetFromDecoration): Ditto
2599         (WebCore::InlineTextBox::extendVerticalVisualOverflowForDecorations): Given
2600         vertical overflow bounds, possibly extend those to include location of
2601         decorations.
2602         (WebCore::InlineTextBox::paintDecoration): Use refactored functions.
2603         * rendering/InlineTextBox.h: Function signature
2604         * rendering/RenderBlockLineLayout.cpp:
2605         (WebCore::setLogicalWidthForTextRun): Call extendVerticalVisualOverflowForDecorations()
2606         * rendering/style/RenderStyle.cpp:
2607         (WebCore::RenderStyle::changeAffectsVisualOverflow): Inspects shadows and text decorations
2608         (WebCore::RenderStyle::changeRequiresLayout): Calls changeAffectsVisualOverflow()
2609         (WebCore::RenderStyle::changeRequiresRepaintIfTextOrBorderOrOutline): Moved code from here
2610         to changeAffectsVisualOverflow().
2611         * rendering/style/RenderStyle.h: Function signature
2612
2613 2014-05-13  Enrica Casucci  <enrica@apple.com>
2614
2615         REGRESSION (WebKit2): Zooming to text field leaves it partially hidden by the form assistant.
2616         https://bugs.webkit.org/show_bug.cgi?id=132879
2617         <rdar://problem/16318049>
2618
2619         Reviewed by Benjamin Poulain.
2620
2621         Adding some exports. The fix to setScrollPosition is to avoid clamping the scroll
2622         position when using delegate scrolling.
2623
2624         * WebCore.exp.in:
2625         * platform/ScrollView.cpp:
2626         (WebCore::ScrollView::setScrollPosition):
2627
2628 2014-05-13  Brady Eidson  <beidson@apple.com>
2629
2630         Followup to: Update positioning/drawing of the image controls button.
2631         <rdar://problem/16885077> and https://bugs.webkit.org/show_bug.cgi?id=132883
2632
2633         Reviewed by Tim Horton.
2634
2635         Cleared up the actual intent behind review feedback on the original patch.
2636
2637         * html/shadow/mac/ImageControlsButtonElementMac.cpp:
2638         (WebCore::ImageControlsButtonElementMac::maybeCreate):
2639
2640 2014-05-13  Brady Eidson  <beidson@apple.com>
2641
2642         Update positioning/drawing of the image controls button.
2643         <rdar://problem/16885077> and https://bugs.webkit.org/show_bug.cgi?id=132883
2644
2645         Reviewed by Tim Horton.
2646
2647         * html/shadow/mac/ImageControlsButtonElementMac.cpp:
2648         (WebCore::ImageControlsButtonElementMac::maybeCreate): Add inline style for top/right
2649           positioning based on the metrics from the render theme.
2650
2651         * html/shadow/mac/imageControlsMac.css:
2652         (.x-webkit-image-controls-button): Can’t hard code any positioning.
2653
2654         * rendering/RenderTheme.h:
2655         (WebCore::RenderTheme::imageControlsButtonPositionOffset):
2656         * rendering/RenderThemeMac.h:
2657         * rendering/RenderThemeMac.mm:
2658         (WebCore::RenderThemeMac::servicesRolloverButtonCell):
2659         (WebCore::RenderThemeMac::imageControlsButtonPositionOffset):
2660
2661 2014-05-13  Simon Fraser  <simon.fraser@apple.com>
2662
2663         [iOS WK2] background-attachment:fixed behaves very poorly
2664         https://bugs.webkit.org/show_bug.cgi?id=132881
2665         <rdar://problem/16789526>
2666
2667         Reviewed by Beth Dakin.
2668
2669         Remove the old ENABLE_FAST_MOBILE_SCROLLING code, and add a setting that
2670         controls whether fixed backgrounds paint relative to the document, which
2671         is enabled for iOS (WK1 and WK2). This setting is consulted when we repaint
2672         fixed backgrounds on scrolling, when we paint them, and when we decide to make
2673         a layer for fixed backgrounds.
2674         
2675         * page/Settings.cpp:
2676         * page/Settings.in:
2677         * rendering/RenderBoxModelObject.cpp:
2678         (WebCore::RenderBoxModelObject::calculateBackgroundImageGeometry):
2679         * rendering/RenderElement.cpp:
2680         (WebCore::RenderElement::styleWillChange):
2681         (WebCore::RenderElement::willBeRemovedFromTree):
2682         (WebCore::shouldRepaintFixedBackgroundsOnScroll): Deleted.
2683         * rendering/RenderLayerCompositor.cpp:
2684         (WebCore::RenderLayerCompositor::needsFixedRootBackgroundLayer):
2685
2686 2014-05-13  Zalan Bujtas  <zalan@apple.com>
2687
2688         REGRESSSION(r168528) Subpixel rendering: Selection rect is not positioned properly when SVG text is selected.
2689         https://bugs.webkit.org/show_bug.cgi?id=132868
2690
2691         Reviewed by Dirk Schulze.
2692
2693         Scale the selection rect. r168528 missed applying this final transform on the selection/painting rect.
2694
2695         Test: svg/text/hidpi-text-selection-rect-position.html
2696
2697         * rendering/svg/SVGInlineTextBox.cpp:
2698         (WebCore::SVGInlineTextBox::selectionRectForTextFragment):
2699
2700 2014-05-13  Martin Hodovan  <mhodovan.u-szeged@partner.samsung.com>
2701
2702         ASSERTION FAILED: leftCategory != CalcOther && rightCategory != CalcOther
2703         in WebCore::CSSCalcBinaryOperation::createSimplified
2704         https://bugs.webkit.org/show_bug.cgi?id=132870
2705
2706         According to the standard, calc() should be able to handle angle, time
2707         and frequency values as well: http://www.w3.org/TR/css3-values/#calc
2708
2709         Reviewed by Darin Adler.
2710
2711         Test: fast/css/calc-with-angle-time-frequency.html
2712
2713         * css/CSSCalculationValue.cpp:
2714         (WebCore::unitCategory):
2715         (WebCore::CSSCalcPrimitiveValue::createCalcExpression):
2716         (WebCore::CSSCalcPrimitiveValue::computeLengthPx):
2717         (WebCore::CSSCalcPrimitiveValue::addSubtractResult):
2718         (WebCore::CSSCalcPrimitiveValue::determineCategory):
2719         (WebCore::CSSCalcBinaryOperation::primitiveType)
2720         * css/CSSCalculationValue.h: extending CalculationCategory
2721         * css/CSSParser.cpp:
2722         (WebCore::CSSParser::validCalculationUnit):
2723         * css/CSSPrimitiveValue.cpp:
2724         (WebCore::CSSPrimitiveValue::primitiveType):
2725
2726 2014-05-13  Darin Adler  <darin@apple.com>
2727
2728         Try to fix the !ENABLE(ICONDATABASE) build
2729
2730         * loader/icon/IconDatabase.h: Include WTFString.h.
2731
2732 2014-05-13  Carlos Garcia Campos  <cgarcia@igalia.com>
2733
2734         REGRESSION(r167771): [GTK] Text fields and areas are rendered unthemed
2735         https://bugs.webkit.org/show_bug.cgi?id=132864
2736
2737         Reviewed by Philippe Normand.
2738
2739         This is because the virtual methods changed the API in the parent,
2740         and since we don't have the methods marked as override we didn't
2741         noticed it. After using override keyword for all virtual methods
2742         in the derived class another problem showed up, the ActiveListBox
2743         selection methods were incorrectly named.
2744
2745         * platform/gtk/RenderThemeGtk.cpp:
2746         (WebCore::RenderThemeGtk::paintTextArea): Update to API changes in the
2747         parent class.
2748         * platform/gtk/RenderThemeGtk.h: Mark all virtual methods as
2749         override and the class as final.
2750         * platform/gtk/RenderThemeGtk2.cpp:
2751         (WebCore::RenderThemeGtk::paintTextField): Update to API changes
2752         in the parent class.
2753         (WebCore::RenderThemeGtk::platformActiveListBoxSelectionBackgroundColor):
2754         (WebCore::RenderThemeGtk::platformInactiveListBoxSelectionBackgroundColor):
2755         (WebCore::RenderThemeGtk::platformActiveListBoxSelectionForegroundColor):
2756         (WebCore::RenderThemeGtk::platformInactiveListBoxSelectionForegroundColor):
2757         (WebCore::RenderThemeGtk::activeListBoxSelectionBackgroundColor): Deleted.
2758         (WebCore::RenderThemeGtk::inactiveListBoxSelectionBackgroundColor): Deleted.
2759         (WebCore::RenderThemeGtk::activeListBoxSelectionForegroundColor): Deleted.
2760         (WebCore::RenderThemeGtk::inactiveListBoxSelectionForegroundColor): Deleted.
2761         * platform/gtk/RenderThemeGtk3.cpp:
2762         (WebCore::RenderThemeGtk::paintTextField): Update to API changes
2763         in the parent class.
2764         (WebCore::RenderThemeGtk::platformActiveListBoxSelectionBackgroundColor):
2765         (WebCore::RenderThemeGtk::platformInactiveListBoxSelectionBackgroundColor):
2766         (WebCore::RenderThemeGtk::platformActiveListBoxSelectionForegroundColor):
2767         (WebCore::RenderThemeGtk::platformInactiveListBoxSelectionForegroundColor):
2768         (WebCore::RenderThemeGtk::activeListBoxSelectionBackgroundColor): Deleted.
2769         (WebCore::RenderThemeGtk::inactiveListBoxSelectionBackgroundColor): Deleted.
2770         (WebCore::RenderThemeGtk::activeListBoxSelectionForegroundColor): Deleted.
2771         (WebCore::RenderThemeGtk::inactiveListBoxSelectionForegroundColor): Deleted.
2772
2773 2014-05-13  Xabier Rodriguez Calvar  <calvaris@igalia.com>
2774
2775         [GStreamer] Move toGstClockTime to utilities
2776         https://bugs.webkit.org/show_bug.cgi?id=132702
2777
2778         Reviewed by Philippe Normand.
2779
2780         toGstClockTime should be in GStreamerUtilities and corrected typo
2781         in getGstPlayFlag.
2782
2783         No new tests needed.
2784
2785         * platform/graphics/gstreamer/GStreamerUtilities.cpp:
2786         (WebCore::getGstPlayFlag): Renamed from getGstPlaysFlag.
2787         (WebCore::toGstClockTime): Moved from MediaPlayerPrivateGStreamer.
2788         (WebCore::getGstPlaysFlag): Deleted.
2789         * platform/graphics/gstreamer/GStreamerUtilities.h:
2790         * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
2791         (WebCore::MediaPlayerPrivateGStreamer::setDownloadBuffering):
2792         Corrected getGstPlayFlag typo.
2793         (WebCore::toGstClockTime): Deleted.
2794
2795 2014-05-12  Darin Adler  <darin@apple.com>
2796
2797         Make a few icon database improvements
2798         https://bugs.webkit.org/show_bug.cgi?id=132812
2799
2800         Reviewed by Brady Eidson.
2801
2802         * WebCore.exp.in: Export more IconDatabase functions, since they are now called
2803         by WebKit2 through pointers to a class marked final.
2804
2805         * loader/icon/IconDatabase.cpp: Removed unneeded includes. Use override for
2806         virtual functions.
2807
2808         * loader/icon/IconDatabase.h: Removed unneeded includes. Marked the class final.
2809         Use override for virtual functions. Use a public constructor instead of a create
2810         function.
2811
2812         * loader/icon/IconDatabaseBase.h: Removed unneeded includes.
2813
2814 2014-05-13  Kiran  <kiran.guduru@samsung.com>
2815
2816         [MediaStream] MediaStream.addTrack Should not check for active state.
2817         https://bugs.webkit.org/show_bug.cgi?id=132558
2818
2819         Reviewed by Eric Carlson.
2820
2821         MediaStream.addTrack method is checking for active state of a
2822         MediaStream, but it should not check for active state while adding a Track.
2823
2824         Test: fast/mediastream/MediaStream-add-tracks-to-inactive-stream.html
2825
2826         * Modules/mediastream/MediaStream.cpp:
2827         (WebCore::MediaStream::addTrack):
2828
2829 2014-05-12  Mark Lam  <mark.lam@apple.com>
2830
2831         WebKit2 on iOS needs to capture the main thread's floating point environment.
2832         <https://webkit.org/b/132755>
2833
2834         Reviewed by Geoffrey Garen.
2835
2836         For iOS, WorkerThread::workerThread() expects to be able to initialize the
2837         worker thread's floating point environment to be the same as the one in the
2838         main thread.  The FP env of the main thread is expected to have been captured
2839         in the mainThreadFEnv global.  On WebKit2 for iOS, we neglected to initialize
2840         mainThreadFEnv.
2841
2842         We now introduce a FloatingPointEnvironment class that will encapsulate the main
2843         thread (aka "UIThread") fenv, and we'll call FloatingPointEnv::saveMainThreadEnvironment()
2844         from ChildProcess::platformInitialize() to ensure that the FloatingPointEnvironment
2845         singleton instance is initialized properly for WebKit2.
2846
2847         In the ChildProcess::platformInitialize(), we also need to initialize the ARMv7
2848         FP env to support denormalized numbers.  We'll do this before calling
2849         saveMainThreadEnvironment().
2850
2851         Tests: fast/workers/worker-floating-point.html
2852                js/floating-point-denormalized.html
2853
2854         * WebCore.exp.in:
2855         * WebCore.xcodeproj/project.pbxproj:
2856         * platform/ios/wak/FloatingPointEnvironment.cpp: Added.
2857         (WebCore::FloatingPointEnvironment::env):
2858         (WebCore::FloatingPointEnvironment::FloatingPointEnvironment):
2859         (WebCore::FloatingPointEnvironment::enableDenormalSupport):
2860         (WebCore::FloatingPointEnvironment::saveMainThreadEnvironment):
2861         (WebCore::FloatingPointEnvironment::propagateMainThreadEnvironment):
2862         * platform/ios/wak/FloatingPointEnvironment.h: Added.
2863         * platform/ios/wak/WebCoreThread.h:
2864         * platform/ios/wak/WebCoreThread.mm:
2865         (RunWebThread):
2866         (StartWebThread):
2867         * workers/WorkerThread.cpp:
2868         (WebCore::WorkerThread::workerThread):
2869
2870 2014-05-12  Dirk Schulze  <krit@webkit.org>
2871
2872         SVG root element accepts background color but fails to repaint it
2873         https://bugs.webkit.org/show_bug.cgi?id=63153
2874
2875         Reviewed by Dean Jackson.
2876
2877         This is back ported from Blink. Don't know the exact commit though.
2878         The patch checks if the SVGSVGElement is an outermost root element.
2879         If it is, mark the whole element for repaint.
2880
2881         Test: svg/custom/svg-root-background.html
2882
2883         * rendering/RenderBoxModelObject.cpp:
2884         (WebCore::RenderBoxModelObject::calculateHasBoxDecorations):
2885         (WebCore::RenderBoxModelObject::updateFromStyle):
2886         * rendering/RenderBoxModelObject.h:
2887         * rendering/svg/RenderSVGRoot.cpp:
2888         (WebCore::RenderSVGRoot::RenderSVGRoot):
2889         (WebCore::RenderSVGRoot::layout):
2890         (WebCore::RenderSVGRoot::paintReplaced):
2891         (WebCore::RenderSVGRoot::clippedOverflowRectForRepaint):
2892             This is a simple optimization by taking the necessary parts
2893             from RenderReplaced and SVGRenderSupport.
2894         * rendering/svg/RenderSVGRoot.h:
2895
2896 2014-05-12  Simon Fraser  <simon.fraser@apple.com>
2897
2898         [iOS] Fixed items are sometimes clipped after rubber-banding
2899         https://bugs.webkit.org/show_bug.cgi?id=132851
2900         <rdar://problem/16870790>
2901
2902         Reviewed by Benjamin Poulain.
2903
2904         On iOS fixed-position layers would get clipped to the document rect,
2905         but with rubber-banding, we can now have a custom fixed postion rect
2906         that extends outside the document rect.
2907         
2908         Another issue was that we would un-composite fixed elements sometimes
2909         when scrolling fast, again because they could fall outside of the document rect.
2910         
2911         A final issue was that pinching could reveal parts of fixed elements that should
2912         lie outside the viewport, rather than clipping the layers.
2913         
2914         Fix by converting both call points to use viewportConstrainedVisibleContentRect()
2915         rather than viewportConstrainedExtentRect(). On non-iOS platforms these are
2916         the same, but on iOS viewportConstrainedVisibleContentRect() uses the
2917         custom fixed position rect, which is the correct rect to intersect with.
2918
2919         * rendering/RenderLayerBacking.cpp:
2920         (WebCore::RenderLayerBacking::updateCompositedBounds):
2921         * rendering/RenderLayerCompositor.cpp:
2922         (WebCore::RenderLayerCompositor::requiresCompositingForPosition):
2923
2924 2014-05-06  Jon Honeycutt  <jhoneycutt@apple.com>
2925
2926         Don't dispatch 'beforeload' event inside FrameView::layout()
2927
2928         https://bugs.webkit.org/show_bug.cgi?id=132621
2929         <rdar://problem/15661470>
2930
2931         This merges Blink revision 162073 with minor renaming and style
2932         changes. From that commit:
2933
2934         Executing JavaScript code inside FrameView::layout() is problematic.
2935         e.g. an assertion failure tested in fast/events/beforeload-assertion.html.
2936         We should avoid it.
2937
2938         This CL makes 'beforeload' event dispatching for plugins and iframes asynchronous,
2939         except plugin access from JavaScript code (HTMLPlugInElement::
2940         renderWidgetForJSBindings).
2941
2942         Reviewed by Brent Fulgham.
2943
2944         Tests: fast/events/beforeload-assertion.html
2945                fast/events/beforeload-iframe-crash.html
2946                fast/events/beforeload-input-time-crash.html
2947
2948         * WebCore.exp.in:
2949         * dom/Document.cpp:
2950         (WebCore::Document::updateLayoutIgnorePendingStylesheets):
2951         * dom/Document.h:
2952         * html/HTMLAppletElement.cpp:
2953         (WebCore::HTMLAppletElement::renderWidgetForJSBindings):
2954         * html/HTMLEmbedElement.cpp:
2955         (WebCore::HTMLEmbedElement::renderWidgetForJSBindings):
2956         * html/HTMLObjectElement.cpp:
2957         (WebCore::HTMLObjectElement::renderWidgetForJSBindings):
2958         * page/FrameView.cpp:
2959         (WebCore::FrameView::FrameView):
2960         (WebCore::FrameView::reset):
2961         (WebCore::FrameView::updateEmbeddedObjectsTimerFired):
2962         (WebCore::FrameView::flushAnyPendingPostLayoutTasks):
2963         (WebCore::FrameView::performPostLayoutTasks):
2964         * page/FrameView.h:
2965         * testing/Internals.cpp:
2966         (WebCore::Internals::updateLayoutIgnorePendingStylesheetsAndRunPostLayoutTasks):
2967         * testing/Internals.h:
2968         * testing/Internals.idl:
2969
2970 2014-05-12  Roger Fong  <roger_fong@apple.com>
2971
2972         Limit number of active graphics contexts per web process.
2973         https://bugs.webkit.org/show_bug.cgi?id=132833.
2974         <rdar://problem/16888459>
2975
2976         Reviewed by Dean Jackson.
2977
2978         Test: webgl/many-contexts.html
2979
2980         * platform/graphics/GraphicsContext3D.h:
2981         * platform/graphics/mac/GraphicsContext3DMac.mm: Limit number of active contexts to 16.
2982         (WebCore::GraphicsContext3D::create):
2983         (WebCore::GraphicsContext3D::~GraphicsContext3D):
2984
2985 2014-05-12  Simon Fraser  <simon.fraser@apple.com>
2986
2987         Build fix fix.
2988
2989         * page/scrolling/ScrollingCoordinator.cpp:
2990         (WebCore::ScrollingCoordinator::contentShadowLayerForFrameView):
2991
2992 2014-05-12  Brent Fulgham  <bfulgham@apple.com>
2993
2994         DataDetectorUI doesn't update with resize
2995         https://bugs.webkit.org/show_bug.cgi?id=132830
2996         <rdar://problem/16871179>
2997
2998         Reviewed by Simon Fraser.
2999
3000         * editing/Editor.cpp:
3001         (WebCore::Editor::scanSelectionForTelephoneNumbers): Add public, no-argument
3002         version that can be called after layout changes.
3003         (WebCore::Editor::didLayout): Reprocess telephone number data
3004         since Ranges will have changed.
3005         * editing/Editor.h:
3006         * editing/FrameSelection.cpp:
3007         (WebCore::FrameSelection::updateDataDetectorsForSelection): Added.
3008         * editing/FrameSelection.h:
3009         * page/FrameView.cpp:
3010         (WebCore::FrameView::performPostLayoutTasks): Ask the FrameSelection to update the
3011         Range information for selected phone numbers.
3012
3013 2014-05-12  Simon Fraser  <simon.fraser@apple.com>
3014
3015         Fix the iOS build.
3016
3017         * page/scrolling/ScrollingCoordinator.cpp:
3018         (WebCore::ScrollingCoordinator::contentShadowLayerForFrameView):
3019
3020 2014-05-12  Simon Fraser  <simon.fraser@apple.com>
3021
3022         [iOS WK2] Fuzzy tiles on some sites on loading
3023         https://bugs.webkit.org/show_bug.cgi?id=132847
3024         <rdar://problem/16816178>
3025
3026         Reviewed by Benjamin Poulain.
3027
3028         Export WebCore::TileController::contentsScale() const
3029
3030         * WebCore.exp.in:
3031
3032 2014-05-12  Simon Fraser  <simon.fraser@apple.com>
3033
3034         Add debug dumping for ViewportConfiguration
3035         https://bugs.webkit.org/show_bug.cgi?id=132843
3036
3037         Reviewed by Benjamin Poulain.
3038
3039         Add some TextStream-based dumping for ViewportConfiguration.
3040
3041         * page/ViewportConfiguration.cpp:
3042         (WebCore::ViewportConfiguration::updateConfiguration):
3043         (WebCore::ViewportConfigurationTextStream::ViewportConfigurationTextStream):
3044         (WebCore::ViewportConfigurationTextStream::increaseIndent):
3045         (WebCore::ViewportConfigurationTextStream::decreaseIndent):
3046         (WebCore::dumpProperty):
3047         (WebCore::ViewportConfigurationTextStream::writeIndent):
3048         (WebCore::ViewportConfigurationTextStream::operator<<):
3049         (WebCore::ViewportConfiguration::description):
3050         (WebCore::ViewportConfiguration::dump):
3051         * page/ViewportConfiguration.h:
3052
3053 2014-05-12  Brady Eidson  <beidson@apple.com>
3054
3055         Followup to "Teach Editor to support more direct replacement of a Node"
3056         <rdar://problem/16817952> and https://bugs.webkit.org/show_bug.cgi?id=132834
3057
3058         Pair programmed and pair reviewed by Brady Eidson and Darin Adler.
3059
3060         * editing/mac/EditorMac.mm:
3061         (WebCore::maybeCopyNodeAttributesToFragment):
3062         (WebCore::Editor::replaceNodeFromPasteboard):
3063
3064 2014-05-12  Beth Dakin  <bdakin@apple.com>
3065
3066         Content shadow layer needs to move in sync with the content layer
3067         https://bugs.webkit.org/show_bug.cgi?id=132841
3068         -and corresponding-
3069         <rdar://problem/16641115>
3070
3071         Reviewed by Simon Fraser.
3072
3073         Now that the root content layer moves a little bit (for y scroll positions between 
3074         0 and topContentInset), the shadow layer needs to move along with it since the 
3075         shadow layer should always have the same position as the root content layer.
3076
3077         Set the root state node’s shadow layer, and update the position whenever the root 
3078         content layer’s position is updated.
3079         * page/scrolling/AsyncScrollingCoordinator.cpp:
3080         (WebCore::AsyncScrollingCoordinator::frameViewRootLayerDidChange):
3081         (WebCore::AsyncScrollingCoordinator::updateScrollPositionAfterAsyncScroll):
3082
3083         Fetch the compositor’s layerForContentShadow().
3084         * page/scrolling/ScrollingCoordinator.cpp:
3085         (WebCore::ScrollingCoordinator::contentShadowLayerForFrameView):
3086         * page/scrolling/ScrollingCoordinator.h:
3087
3088         Hook up the contentShadowLayer in the state node.
3089         * page/scrolling/ScrollingStateScrollingNode.cpp:
3090         (WebCore::ScrollingStateScrollingNode::ScrollingStateScrollingNode):
3091         (WebCore::ScrollingStateScrollingNode::setContentShadowLayer):
3092
3093         Hook it up in the ScrollingTreeNode as well. Move the layer whenever the m
3094         _scrolledContentsLayer is moved.
3095         * page/scrolling/ScrollingStateScrollingNode.h:
3096         * page/scrolling/mac/ScrollingTreeScrollingNodeMac.h:
3097         * page/scrolling/mac/ScrollingTreeScrollingNodeMac.mm:
3098         (WebCore::ScrollingTreeScrollingNodeMac::updateBeforeChildren):
3099         (WebCore::ScrollingTreeScrollingNodeMac::setScrollLayerPosition):
3100
3101         The shadow layer needs an anchor point now that we are moving it around.
3102         * rendering/RenderLayerCompositor.cpp:
3103         (WebCore::RenderLayerCompositor::updateOverflowControlsLayers):
3104
3105 2014-05-12  Dirk Schulze  <krit@webkit.org>
3106
3107         <svg> with opacity and compositing double-applies its opacity
3108         https://bugs.webkit.org/show_bug.cgi?id=116856
3109
3110         Reviewed by Simon Fraser.
3111
3112         The opacity is applied by the compositor. However, all SVG elements
3113         create transparency layers on their own to apply opacity. So did
3114         SVGSVGElement.
3115
3116         Added a check if the current element has a compositing layer and skip
3117         creating transparency layer if it has.
3118
3119         Test: svg/custom/composited-svg-with-opacity.html
3120
3121         * rendering/svg/SVGRenderingContext.cpp:
3122         (WebCore::SVGRenderingContext::prepareToRenderSVGContent):
3123
3124 2014-05-12  Brady Eidson  <beidson@apple.com>
3125
3126         Teach Editor to support more direct replacement of a Node
3127         <rdar://problem/16817952> and https://bugs.webkit.org/show_bug.cgi?id=132834
3128
3129         Reviewed by Enrica Casucci.
3130
3131         The new method "Editor::replaceNodeFromPasteboard" has the intent that the new DocumentFragment
3132         from the pasteboard is as similar to the old Node as possible.
3133
3134         In practice, the new DocumentFragment:
3135         1 - Can represent a single node that's missing various attributes the original Node had.
3136         2 - Can be an unwanted fragment of arbitrary depth when the replacement happens inside Mail.app
3137
3138         This fixes both of these issues.
3139
3140         Add a MailBlockquoteHandling enum class for various Editor operations to pass through to the
3141         ReplaceSelectionCommand:
3142         * editing/Editor.cpp:
3143         (WebCore::Editor::handleTextEvent):
3144         (WebCore::Editor::pasteAsFragment):
3145         (WebCore::Editor::pasteWithPasteboard):
3146         (WebCore::Editor::replaceSelectionWithFragment):
3147         * editing/Editor.h:
3148
3149         * dom/TextEvent.cpp:
3150         (WebCore::TextEvent::createForPlainTextPaste):
3151         (WebCore::TextEvent::createForFragmentPaste):
3152         (WebCore::TextEvent::TextEvent):
3153         * dom/TextEvent.h:
3154         (WebCore::TextEvent::mailBlockquoteHandling):
3155
3156         * editing/ReplaceSelectionCommand.cpp:
3157         (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand):
3158         (WebCore::ReplaceSelectionCommand::doApply): Consider whether or not this particular Editor
3159           operation was meant to give special consideration to Mail's Blockquotes.
3160         * editing/ReplaceSelectionCommand.h:
3161
3162         * editing/efl/EditorEfl.cpp:
3163         (WebCore::Editor::pasteWithPasteboard):
3164         * editing/ios/EditorIOS.mm:
3165         (WebCore::Editor::pasteWithPasteboard):
3166
3167         * editing/mac/EditorMac.mm:
3168         (WebCore::Editor::pasteWithPasteboard):
3169         (WebCore::Editor::readSelectionFromPasteboard):
3170         (WebCore::maybeCopyNodeAttributesToFragment): If the new DocumentFragment represents a single HTML node
3171           with the same tag name is the original HTML node, copy over most attributes from the original node.
3172         (WebCore::Editor::replaceNodeFromPasteboard): Create the fragment, run it through maybeCopyNodeAttributesToFragment.
3173
3174         * WebCore.exp.in:
3175
3176 2014-05-12  Alex Christensen  <achristensen@webkit.org>
3177
3178         Progress on web timing.
3179         https://bugs.webkit.org/show_bug.cgi?id=132574
3180
3181         Reviewed by Alexey Proskuryakov.
3182
3183         * CMakeLists.txt:
3184         Removed ResourceLoadTiming.cpp.
3185         * WebCore.exp.in:
3186         Added linker symbols for ResourceLoadTiming.
3187         * WebCore.xcodeproj/project.pbxproj:
3188         * WebCore.vcxproj/WebCore.vcxproj:
3189         * WebCore.vcxproj/WebCore.vcxproj.filters:
3190         Removed ResourceLoadTiming.cpp.
3191         * inspector/InspectorResourceAgent.cpp:
3192         (WebCore::buildObjectForTiming):
3193         * inspector/protocol/Network.json:
3194         Updated ResourceTiming structure.
3195         * loader/DocumentLoadTiming.cpp:
3196         (WebCore::DocumentLoadTiming::setNavigationStart):
3197         * loader/DocumentLoadTiming.h:
3198          Deleted unused setNavigationStart function.
3199         * page/Performance.idl:
3200         Updated spec URL.
3201         * page/PerformanceResourceTiming.cpp:
3202         (WebCore::PerformanceResourceTiming::domainLookupStart):
3203         (WebCore::PerformanceResourceTiming::domainLookupEnd):
3204         (WebCore::PerformanceResourceTiming::connectStart):
3205         (WebCore::PerformanceResourceTiming::secureConnectionStart):
3206         (WebCore::PerformanceResourceTiming::responseEnd):
3207         Updated ResourceLoadTiming member variable names.
3208         (WebCore::PerformanceResourceTiming::responseStart):
3209         * page/PerformanceResourceTiming.h:
3210         * page/PerformanceResourceTiming.idl:
3211         Deleted responseStart because it is not in the spec.
3212         * page/PerformanceTiming.cpp:
3213         (WebCore::PerformanceTiming::domainLookupStart):
3214         (WebCore::PerformanceTiming::domainLookupEnd):
3215         (WebCore::PerformanceTiming::connectStart):
3216         (WebCore::PerformanceTiming::secureConnectionStart):
3217         (WebCore::PerformanceTiming::requestStart):
3218         (WebCore::PerformanceTiming::responseStart):
3219         Updated ResourceLoadTiming member variable names.
3220         (WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute):
3221         Use navigationStart as base for resource load times.
3222         * page/PerformanceTiming.idl:
3223         Updated spec URL.
3224         * platform/network/HTTPParsers.h:
3225         Removed unused class declarations.
3226         * platform/network/ResourceHandle.h:
3227         Moved soup request time from ResourceLoadTiming to ResourceHandle.
3228         * platform/network/ResourceLoadTiming.cpp: Removed.
3229         * platform/network/ResourceLoadTiming.h:
3230         (WebCore::ResourceLoadTiming::deepCopy):
3231         (WebCore::ResourceLoadTiming::operator==):
3232         (WebCore::ResourceLoadTiming::ResourceLoadTiming):
3233         Updated ResourceLoadTiming member variable names.
3234         * platform/network/mac/ResourceHandleMac.mm:
3235         (WebCore::ResourceHandle::createNSURLConnection):
3236         Collect timing data.
3237         * platform/network/mac/WebCoreResourceHandleAsDelegate.mm:
3238         (-[WebCoreResourceHandleAsDelegate connection:didReceiveResponse:]):
3239         * platform/network/mac/WebCoreResourceHandleAsOperationQueueDelegate.mm:
3240         (-[WebCoreResourceHandleAsOperationQueueDelegate connection:didReceiveResponse:]):
3241         Save timing data to a ResourceLoadTiming on the ResourceResponse.
3242         * platform/network/soup/ResourceHandleSoup.cpp:
3243         (WebCore::gotHeadersCallback):
3244         (WebCore::restartedCallback):
3245         (WebCore::milisecondsSinceRequest):
3246         (WebCore::ResourceHandle::didStartRequest):
3247         (WebCore::networkEventCallback):
3248         (WebCore::createSoupMessageForHandleAndRequest):
3249         (WebCore::ResourceHandle::sendPendingRequest):
3250         Updated ResourceLoadTiming member variable names.
3251         (WebCore::wroteBodyCallback): Deleted.
3252
3253 2014-05-12  Dirk Schulze  <krit@webkit.org>
3254
3255         SVG outline property is broken and inefficient
3256         https://bugs.webkit.org/show_bug.cgi?id=113666
3257
3258         Reviewed by Dean Jackson.
3259
3260         Patch by Erik Dahlström backported from Blink.
3261
3262         "[SVG2] css 'outline' property should apply to svg elements 
3263
3264         The 'outline' property was only partially working in SVG before
3265         this patch, this makes it work on text and text content child
3266         elements too. 
3267
3268         This makes SVG render the outlines as part of the foreground paint
3269         phase. 
3270
3271         Partly based on Florin Malita's webkit patch https://bugs.webkit.org/show_bug.cgi?id=113666#c12."
3272
3273         Tests: svg/custom/outline-stacking-expected.svg
3274                svg/custom/outline-stacking.svg
3275                svg/custom/rgba-color-outline.svg
3276                svg/text/text-outline-expected.svg
3277                svg/text/text-outline-rgba.html
3278                svg/text/text-outline.html
3279                svg/text/textpath-outline-expected.svg
3280                svg/text/textpath-outline.svg
3281                svg/text/tspan-multiple-outline.svg
3282                svg/text/tspan-outline-2-expected.svg
3283                svg/text/tspan-outline-2.svg
3284                svg/text/tspan-outline-expected.svg
3285                svg/text/tspan-outline.html
3286
3287         * rendering/svg/RenderSVGContainer.cpp:
3288         (WebCore::RenderSVGContainer::paint): Draw outline in forground
3289             paint phase.
3290         * rendering/svg/RenderSVGImage.cpp:
3291         (WebCore::RenderSVGImage::paint): Draw outline in forground
3292             paint phase.
3293         * rendering/svg/RenderSVGRoot.cpp:
3294         (WebCore::RenderSVGRoot::paintReplaced): Pass paint offset.
3295         * rendering/svg/RenderSVGShape.cpp:
3296         (WebCore::RenderSVGShape::paint): Draw outline in forground
3297             paint phase.
3298         * rendering/svg/RenderSVGText.cpp:
3299         (WebCore::RenderSVGText::paint): Draw outline in forground
3300             paint phase.
3301         * rendering/svg/SVGInlineFlowBox.cpp:
3302         (WebCore::SVGInlineFlowBox::paint): Pass paint offset.
3303         * rendering/svg/SVGInlineTextBox.cpp:
3304         (WebCore::SVGInlineTextBox::paint): Draw outline in forground
3305             paint phase.
3306         * rendering/svg/SVGRootInlineBox.cpp:
3307         (WebCore::SVGRootInlineBox::paint): Pass paint offset.
3308
3309 2014-05-12  Beth Dakin  <bdakin@apple.com>
3310
3311         Layer for bottom overhang area needs to be offset by the topContentInset
3312         https://bugs.webkit.org/show_bug.cgi?id=132835
3313         -and corresponding-
3314         <rdar://problem/16641115>
3315
3316         Reviewed by Simon Fraser.
3317
3318         Push this layer down by the topContentInset in addition to the root layer height, 
3319         footer height, and header height.
3320         * rendering/RenderLayerCompositor.cpp:
3321         (WebCore::RenderLayerCompositor::updateLayerForBottomOverhangArea):
3322
3323 2014-05-09  Jon Honeycutt  <jhoneycutt@apple.com>
3324
3325         REGRESSION (r167818): editing/inserting/typing-space-to-trigger-smart-link.html fails on WebKit1 bots
3326
3327         <https://bugs.webkit.org/show_bug.cgi?id=132207>
3328         <rdar://problem/16730393>
3329
3330         Reverts the previous workaround in favor of a more specific fix for the
3331         null dereference.
3332
3333         Reviewed by Darin Adler.
3334
3335         * editing/ApplyStyleCommand.cpp:
3336         (WebCore::ApplyStyleCommand::applyInlineStyleToNodeRange):
3337         Check whether the run's start and end are still in the document, as
3338         removeConflictingInlineStyleFromRun() may have removed them.
3339
3340         * editing/CompositeEditCommand.cpp:
3341         (WebCore::CompositeEditCommand::apply):
3342         Reverted previous workaround.
3343         (WebCore::ApplyEditCommand::ReentrancyGuard::isRecursiveCall): Deleted.
3344         (WebCore::ApplyEditCommand::ReentrancyGuard::Scope::Scope): Deleted.
3345         (WebCore::ApplyEditCommand::ReentrancyGuard::Scope::~Scope): Deleted.
3346
3347 2014-05-12  Zan Dobersek  <zdobersek@igalia.com>
3348
3349         Clean up CrossThreadTask
3350         https://bugs.webkit.org/show_bug.cgi?id=132800
3351
3352         Reviewed by Darin Adler.
3353
3354         Remove the createCallbackTask overloads and the related CrossThreadTask helper classes.
3355
3356         Instead, have one simple CrossThreadTask class that derives from ScriptExecutionContext::Task.
3357         Its templated constructor takes in the method and the variadic pack of parameters. The cross-thread
3358         copies of the parameters are then bound to that method and the resulting bind expression is used to
3359         initialize the base class. The bind expression is constructed with a placeholder for the
3360         ScriptExecutionContext* parameter that's provided through ScriptExecutionContext::Task::performTask().
3361
3362         * Modules/websockets/ThreadableWebSocketChannelClientWrapper.cpp:
3363         (WebCore::ThreadableWebSocketChannelClientWrapper::didConnect):
3364         (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessage):
3365         (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveBinaryData):
3366         (WebCore::ThreadableWebSocketChannelClientWrapper::didUpdateBufferedAmount):
3367         (WebCore::ThreadableWebSocketChannelClientWrapper::didStartClosingHandshake):
3368         (WebCore::ThreadableWebSocketChannelClientWrapper::didClose):
3369         (WebCore::ThreadableWebSocketChannelClientWrapper::didReceiveMessageError):
3370         (WebCore::ThreadableWebSocketChannelClientWrapper::processPendingTasks):
3371         * Modules/websockets/WorkerThreadableWebSocketChannel.cpp:
3372         (WebCore::WorkerThreadableWebSocketChannel::Peer::send):
3373         (WebCore::WorkerThreadableWebSocketChannel::Peer::bufferedAmount):
3374         (WebCore::WorkerThreadableWebSocketChannel::Peer::didConnect):
3375         (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessage):
3376         (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveBinaryData):
3377         (WebCore::WorkerThreadableWebSocketChannel::Peer::didUpdateBufferedAmount):
3378         (WebCore::WorkerThreadableWebSocketChannel::Peer::didStartClosingHandshake):
3379         (WebCore::WorkerThreadableWebSocketChannel::Peer::didClose):
3380         (WebCore::WorkerThreadableWebSocketChannel::Peer::didReceiveMessageError):
3381         (WebCore::WorkerThreadableWebSocketChannel::Bridge::mainThreadInitialize):
3382         (WebCore::WorkerThreadableWebSocketChannel::Bridge::initialize):
3383         (WebCore::WorkerThreadableWebSocketChannel::Bridge::connect):
3384         (WebCore::WorkerThreadableWebSocketChannel::Bridge::send):
3385         (WebCore::WorkerThreadableWebSocketChannel::Bridge::bufferedAmount):
3386         (WebCore::WorkerThreadableWebSocketChannel::Bridge::close):
3387         (WebCore::WorkerThreadableWebSocketChannel::Bridge::fail):
3388         (WebCore::WorkerThreadableWebSocketChannel::Bridge::disconnect):
3389         (WebCore::WorkerThreadableWebSocketChannel::Bridge::suspend):
3390         (WebCore::WorkerThreadableWebSocketChannel::Bridge::resume):