d5589734780694627368b4ef1dd7c6ebfd09622a
[WebKit-https.git] / Source / WebCore / ChangeLog
1 2011-12-17  Adrienne Walker  <enne@google.com>
2
3         [chromium] Reverting r103011, r103135 due to Aura test failures
4
5         Unreviewed gardening.
6
7         * platform/graphics/chromium/ContentLayerChromium.cpp:
8         (WebCore::ContentLayerChromium::~ContentLayerChromium):
9         * platform/graphics/chromium/GraphicsLayerChromium.cpp:
10         (WebCore::GraphicsLayerChromium::notifySyncRequired):
11         * platform/graphics/chromium/GraphicsLayerChromium.h:
12         * platform/graphics/chromium/ImageLayerChromium.cpp:
13         (WebCore::ImageLayerChromium::paintContentsIfDirty):
14         * platform/graphics/chromium/LayerChromium.cpp:
15         (WebCore::LayerChromium::setLayerTreeHost):
16         (WebCore::LayerChromium::setNeedsCommit):
17         (WebCore::LayerChromium::setParent):
18         (WebCore::LayerChromium::setMaskLayer):
19         * platform/graphics/chromium/LayerChromium.h:
20         (WebCore::LayerChromium::setReplicaLayer):
21         * platform/graphics/chromium/TiledLayerChromium.cpp:
22         (WebCore::TiledLayerChromium::setLayerTreeHost):
23         * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
24         (WebCore::CCLayerTreeHost::~CCLayerTreeHost):
25         (WebCore::CCLayerTreeHost::didRecreateGraphicsContext):
26         (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface):
27         (WebCore::CCLayerTreeHost::paintLayerContents):
28         * platform/graphics/chromium/cc/CCLayerTreeHost.h:
29         (WebCore::CCLayerTreeHost::setRootLayer):
30
31 2011-12-16  Chris Marrin  <cmarrin@apple.com>
32
33         Hardware acceleration of W3C Filter Effects
34         https://bugs.webkit.org/show_bug.cgi?id=68479
35
36         Reviewed by Simon Fraser.
37
38         Tests: css3/filters/effect-blur-hw.html
39                css3/filters/effect-combined-hw.html
40                css3/filters/effect-drop-shadow-hw.html
41                css3/filters/effect-grayscale-hw.html
42                css3/filters/effect-hue-rotate-hw.html
43                css3/filters/effect-invert-hw.html
44                css3/filters/effect-opacity-hw.html
45                css3/filters/effect-saturate-hw.html
46                css3/filters/effect-sepia-hw.html
47
48         Implement hardware acceleration of filters. If a filter is
49         on a RenderLayer and that layer has a GraphicsLayer, a test
50         is done to see if the desired filter can be rendered in hardware.
51         If so, skip rendering it when painting, and add the filters to the
52         CALayer. Currently Mac only, using CoreImage. Animation is done in
53         software, with the filters being recreated every frame. There are
54         some fidelity issues with the software renderer, but those will
55         be dealt with as bugs to be fixed.
56
57         * platform/graphics/GraphicsLayer.h: Pass down FilterOperations
58         (WebCore::GraphicsLayer::filter):
59         (WebCore::GraphicsLayer::setFilter):
60         * platform/graphics/ca/GraphicsLayerCA.cpp: Deferred passdown of FilterOperations to PlatformCALayer
61         (WebCore::GraphicsLayerCA::setFilter):
62         (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
63         (WebCore::GraphicsLayerCA::updateFilter):
64         (WebCore::GraphicsLayerCA::ensureStructuralLayer):
65         (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
66         * platform/graphics/ca/GraphicsLayerCA.h:
67         * platform/graphics/ca/PlatformCALayer.h:
68         * platform/graphics/ca/mac/PlatformCALayerMac.mm: Mac implementation using CI
69         (PlatformCALayer::setFilter):
70         (PlatformCALayer::filterCanBeComposited): Static function to tell GraphicsLayer if this Filter object can be rendered
71         * platform/graphics/filters/FilterOperations.cpp:
72         (WebCore::FilterOperations::operator=):
73         * platform/graphics/filters/FilterOperations.h:
74         (WebCore::FilterOperations::FilterOperations):
75         * rendering/RenderLayer.cpp: Pass filter object to GraphicsLayer
76         (WebCore::RenderLayer::rendersFilter):
77         (WebCore::RenderLayer::paintLayer):
78         (WebCore::RenderLayer::updateOrRemoveFilterEffect):
79         * rendering/RenderLayer.h:
80         * rendering/RenderLayerBacking.cpp:
81         (WebCore::RenderLayerBacking::RenderLayerBacking):
82         (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
83         (WebCore::RenderLayerBacking::updateLayerFilter):
84         (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
85         * rendering/RenderLayerBacking.h:
86         (WebCore::RenderLayerBacking::canCompositeFilter):
87
88 2011-12-17  Philippe Normand  <pnormand@igalia.com>
89
90         Unreviewed, GTK build fix after r103131.
91
92         * GNUmakefile.list.am: Fix typo... s/.cop/.cpp
93
94 2011-12-16  Benjamin Poulain  <bpoulain@apple.com>
95
96         FEComposite does not build when you disable filters on ARMv7
97         https://bugs.webkit.org/show_bug.cgi?id=74772
98
99         Reviewed by David Kilzer.
100
101         Add the missing ENABLE(FILTERS).
102
103         * platform/graphics/filters/arm/FECompositeArithmeticNEON.cpp:
104         * platform/graphics/filters/arm/FECompositeArithmeticNEON.h:
105
106 2011-12-16  Ryosuke Niwa  <rniwa@webkit.org>
107
108         Mac build fix after r103104.
109
110         * WebCore.xcodeproj/project.pbxproj:
111
112 2011-12-16  Adam Klein  <adamk@chromium.org>
113
114         Consolidate before-advice regarding attribute modification into a single method
115         https://bugs.webkit.org/show_bug.cgi?id=74752
116
117         Reviewed by Ryosuke Niwa.
118
119         Adds a willModifyAttribute method to Element, meant to be called
120         before an attribute on that Element is added/removed/changed.
121
122         Replace most calls to Element::updateId and all calls to
123         Element::enqueueAttributesMutationRecordIfRequested with calls to
124         willModifyAttribute. Moreover, enqueueAttributesMutation... can now
125         be private since its only caller is willModifyAttribute.
126
127         The only remaining direct calls to updateId are in cases the entire
128         NamedNodeMap is being replaced. These are implementation details of
129         WebCore that shouldn't be exposed via MutationObservers.
130
131         No new tests, no expected change in behavior.
132
133         * dom/Attr.cpp:
134         (WebCore::Attr::setValue):
135         (WebCore::Attr::childrenChanged): Besides the above change, use a
136         StringBuilder to build up value, and only do String -> AtomicString
137         conversion once.
138         * dom/Element.cpp:
139         (WebCore::Element::setAttributeInternal):
140         * dom/Element.h:
141         (WebCore::Element::willModifyAttribute):
142         * dom/NamedNodeMap.cpp:
143         (WebCore::NamedNodeMap::setNamedItem):
144         (WebCore::NamedNodeMap::removeNamedItem):
145
146 2011-12-16  James Robinson  <jamesr@chromium.org>
147
148         [chromium] CCLayerDelegate and WebLayerClient do not need notifySyncRequired
149         https://bugs.webkit.org/show_bug.cgi?id=74376
150
151         Reviewed by Kenneth Russell.
152
153         CCLayerDelegate::notifySyncRequired is an odd bit of interface that we originally cargo-culted from the
154         CoreAnimation compositor implementation. It is a mechanism by which a LayerChromium instance may request a new
155         frame via its CCLayerDelegate, which in WebCore is always a GraphicsLayerClient. In practice, all
156         implementations eventually ended up routing to CCLayerTreeHost::setNeedsCommit which then made the proper
157         scheduling decision.
158
159         This patch routes all changes that would have gone through CCLayerDelegate::notifySyncRequired directly to
160         CCLayerTreeHost::setNeedsCommit, which greatly simplifies the scheduling logic.
161
162         There is a large amount of unit test coverage for this change, largely in LayerChromiumTest
163
164         * platform/graphics/chromium/GraphicsLayerChromium.cpp:
165         * platform/graphics/chromium/GraphicsLayerChromium.h:
166         * platform/graphics/chromium/LayerChromium.cpp:
167         (WebCore::LayerChromium::setNeedsCommit):
168         (WebCore::LayerChromium::insertChild):
169         * platform/graphics/chromium/LayerChromium.h:
170         * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
171         (WebCore::CCLayerTreeHost::~CCLayerTreeHost):
172         (WebCore::CCLayerTreeHost::setRootLayer):
173         * platform/graphics/chromium/cc/CCLayerTreeHost.h:
174         * platform/graphics/chromium/cc/CCScopedThreadProxy.h:
175         (WebCore::CCScopedThreadProxy::runTaskIfNotShutdown):
176
177 2011-12-16  Adam Klein  <adamk@chromium.org>
178
179         Fix typo in MarkupTokenBase: rename takeAtributes to takeAttributes
180         https://bugs.webkit.org/show_bug.cgi?id=74766
181
182         Reviewed by Darin Adler.
183
184         * html/parser/HTMLConstructionSite.cpp:
185         (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML):
186         (WebCore::HTMLConstructionSite::insertScriptElement):
187         (WebCore::HTMLConstructionSite::createElement):
188         (WebCore::HTMLConstructionSite::createHTMLElement):
189         * html/parser/HTMLTreeBuilder.cpp:
190         (WebCore::HTMLTreeBuilder::attributesForIsindexInput):
191         * xml/parser/MarkupTokenBase.h:
192         (WebCore::AtomicMarkupTokenBase::takeAttributes):
193
194 2011-12-16  Adam Barth  <abarth@webkit.org>
195
196         <option><span><option> doesn't parse correctly
197         https://bugs.webkit.org/show_bug.cgi?id=74760
198
199         Reviewed by Eric Seidel.
200
201         The <option> start tag shouldn't be quite as aggressive in closing open
202         <option> tags.  I'm not sure whether this was a change in the spec or a
203         mistranscription, but this patch causes us to match the spec.  I've
204         checked the other optionTag checks, and they all seem to be correct.
205
206         * html/parser/HTMLTreeBuilder.cpp:
207
208 2011-12-16  Rafael Weinstein  <rafaelw@chromium.org>
209
210         [MutationObservers] Remove platform-dependent code in Document.cpp resulting from Mutation Event histogram collection
211         https://bugs.webkit.org/show_bug.cgi?id=73026
212
213         Reviewed by Ryosuke Niwa.
214
215         This patch adds platform/HistogramSupport which has an empty implementation for all ports
216         except Chromium.
217
218         No tests need. This patch is just a refactor.
219
220         * GNUmakefile.list.am:
221         * Target.pri:
222         * WebCore.gypi:
223         * WebCore.xcodeproj/project.pbxproj:
224         * dom/Document.cpp:
225         (WebCore::histogramMutationEventUsage):
226         (WebCore::Document::~Document):
227         * platform/HistogramSupport.h: Added.
228         (WebCore::HistogramSupport::histogramEnumeration):
229         * platform/chromium/HistogramSupportChromium.cpp: Added.
230         (WebCore::HistogramSupport::histogramEnumeration):
231
232 2011-12-16  Brady Eidson  <beidson@apple.com>
233
234         <rdar://problem/10576732> and https://bugs.webkit.org/show_bug.cgi?id=74533
235         REGRESSION(r102619): Reproducible crash closing window with video + poster image inside an object element
236
237         Reviewed by Darin Adler.
238
239         Test: media/crash-closing-page-with-media-as-plugin-fallback.html
240
241         At some point documentWillBecomeInactive() was overloaded to not only notify elements they were going in to the page
242         cache but also do some other work that was necessary during Document teardown.
243
244         This crash occurs because we're notifying elements they're going in to the page cache at document teardown, so this
245         patch breaks that work back out in to a separate function.
246
247         * dom/Document.cpp:
248         (WebCore::Document::detach): Remove obsolete comment.
249         (WebCore::Document::documentWillBecomeInactive): Handle only accelerated compositing cleanup.
250         (WebCore::Document::documentWillSuspendForPageCache): Call documentWillBecomeInactive before notifying elements of suspension.
251         (WebCore::Document::documentDidResumeFromPageCache):
252         (WebCore::Document::registerForPageCacheSuspensionCallbacks):
253         (WebCore::Document::unregisterForPageCacheSuspensionCallbacks):
254         * dom/Document.h:
255
256         * history/CachedFrame.cpp:
257         (WebCore::CachedFrameBase::restore): Call the renamed documentDidResumeFromPageCache.
258         (WebCore::CachedFrame::CachedFrame): Call documentWillSuspendForPageCache instead of documentDidBecomeInactive.
259
260         * loader/FrameLoader.cpp:
261         (WebCore::FrameLoader::commitProvisionalLoad): Call the renamed documentDidResumeFromPageCache.
262
263         * dom/Element.h:
264         (WebCore::Element::documentWillSuspendForPageCache): Renamed from documentWillBecomeInactive()
265         (WebCore::Element::documentDidResumeFromPageCache): Renamed from documentDidBecomeActive()
266
267         Change to the renamed registration and callbacks functions in the handful of classes that use them:
268         * html/HTMLFormElement.cpp:
269         (WebCore::HTMLFormElement::~HTMLFormElement):
270         (WebCore::HTMLFormElement::parseMappedAttribute):
271         (WebCore::HTMLFormElement::documentDidResumeFromPageCache):
272         (WebCore::HTMLFormElement::willMoveToNewOwnerDocument):
273         (WebCore::HTMLFormElement::didMoveToNewOwnerDocument):
274         * html/HTMLFormElement.h:
275
276         * html/HTMLInputElement.cpp:
277         (WebCore::HTMLInputElement::~HTMLInputElement):
278         (WebCore::HTMLInputElement::updateType):
279         (WebCore::HTMLInputElement::parseMappedAttribute):
280         (WebCore::HTMLInputElement::needsSuspensionCallback):
281         (WebCore::HTMLInputElement::registerForSuspensionCallbackIfNeeded):
282         (WebCore::HTMLInputElement::unregisterForSuspensionCallbackIfNeeded):
283         (WebCore::HTMLInputElement::documentDidResumeFromPageCache):
284         (WebCore::HTMLInputElement::willMoveToNewOwnerDocument):
285         (WebCore::HTMLInputElement::didMoveToNewOwnerDocument):
286         * html/HTMLInputElement.h:
287
288         * html/HTMLPlugInImageElement.cpp:
289         (WebCore::HTMLPlugInImageElement::~HTMLPlugInImageElement):
290         (WebCore::HTMLPlugInImageElement::createRenderer):
291         (WebCore::HTMLPlugInImageElement::willMoveToNewOwnerDocument):
292         (WebCore::HTMLPlugInImageElement::didMoveToNewOwnerDocument):
293         (WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache):
294         (WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache):
295         * html/HTMLPlugInImageElement.h:
296
297         * svg/SVGSVGElement.cpp:
298         (WebCore::SVGSVGElement::SVGSVGElement):
299         (WebCore::SVGSVGElement::~SVGSVGElement):
300         (WebCore::SVGSVGElement::willMoveToNewOwnerDocument):
301         (WebCore::SVGSVGElement::didMoveToNewOwnerDocument):
302         (WebCore::SVGSVGElement::documentWillSuspendForPageCache):
303         (WebCore::SVGSVGElement::documentDidResumeFromPageCache):
304         * svg/SVGSVGElement.h:
305
306 2011-12-16  Eric Penner  <epenner@google.com>
307
308         [chromium] Need to prepaint tiles in TiledLayerChromium
309         https://bugs.webkit.org/show_bug.cgi?id=72686
310
311         Reviewed by James Robinson.
312
313         Tests: TiledLayerChromiumTest (idlePaintOutOfMemory, pushIdlePaintTiles)
314
315         * platform/graphics/chromium/ContentLayerChromium.cpp:
316         (WebCore::ContentLayerChromium::idlePaintContentsIfDirty): added idle paint function
317         * platform/graphics/chromium/ContentLayerChromium.h: ditto
318         * platform/graphics/chromium/LayerChromium.h: ditto
319         (WebCore::LayerChromium::idlePaintContentsIfDirty): ditto
320         * platform/graphics/chromium/TextureManager.cpp:
321         (WebCore::TextureManager::protectTexture): removed assert for protecting a texture twice
322         * platform/graphics/chromium/TiledLayerChromium.cpp:
323         (WebCore::TiledLayerChromium::TiledLayerChromium):
324         (WebCore::TiledLayerChromium::cleanupResources):
325         (WebCore::TiledLayerChromium::updateCompositorResources): refactoring to use tile indices
326         (WebCore::TiledLayerChromium::prepareToUpdateTiles): refactored common code and made idle/visible versions
327         (WebCore::TiledLayerChromium::prepareToUpdate): ditto
328         (WebCore::TiledLayerChromium::prepareToUpdateIdle): ditto
329         (WebCore::TiledLayerChromium::needsIdlePaint): 
330         (WebCore::TiledLayerChromium::idlePaintRect):
331         * platform/graphics/chromium/TiledLayerChromium.h:
332         * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
333         (WebCore::CCLayerTreeHost::CCLayerTreeHost):
334         (WebCore::CCLayerTreeHost::compositeAndReadback): set flag to avoid idle paint durring composite and readback
335         (WebCore::CCLayerTreeHost::updateLayers): added idle flag parameter
336         (WebCore::CCLayerTreeHost::paintContentsIfDirty): ditto
337         (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface): ditto
338         (WebCore::CCLayerTreeHost::paintLayerContents): chooses idle or visible paint
339         * platform/graphics/chromium/cc/CCLayerTreeHost.h:
340
341 2011-12-16  Dean Jackson  <dino@apple.com>
342
343         Miscellaneous Filter updates to align with spec
344         https://bugs.webkit.org/show_bug.cgi?id=74736
345
346         Reviewed by Simon Fraser.
347
348         Combine a bunch of small updates to filters where
349         we were not compliant with the specification.
350
351         - blur() only takes one value, not two
352         - blur() does not accept percentages. This allowed us
353           to stop passing the borderBoxSize around while building
354           the filter chain or calculating visual overflow.
355         - gamma() and sharpen() removed
356         - brightness() and contrast() added
357
358         Tests: css3/filters/effect-brightness.html
359                css3/filters/effect-contrast.html
360
361         * css/CSSComputedStyleDeclaration.cpp:
362         (WebCore::CSSComputedStyleDeclaration::valueForFilter): Create new
363         variations on component transfer functions for brightness() and
364         contrast() effects. Also remove sharpen() and gamma().
365         * css/CSSParser.cpp:
366         (WebCore::filterInfoForName):
367         (WebCore::CSSParser::parseBuiltinFilterArguments): Ditto, and blur
368         only takes one argument.
369         * css/CSSStyleSelector.cpp:
370         (WebCore::filterOperationForType):
371         (WebCore::CSSStyleSelector::createFilterOperations): Ditto, and
372         use ->isPercentage() to test rather than getting the type.
373         * css/WebKitCSSFilterValue.cpp:
374         (WebCore::WebKitCSSFilterValue::customCssText):
375         * css/WebKitCSSFilterValue.h:
376         * css/WebKitCSSFilterValue.idl: Remove sharpen and gamma, add
377         brightness and contrast.
378         * platform/graphics/filters/FilterOperation.cpp:
379         (WebCore::BlurFilterOperation::blend): Blurs only need to blend
380         between one standard deviation parameter.
381         * platform/graphics/filters/FilterOperation.h: Remove sharpen and
382         gamma, add brightness and contrast.
383         (WebCore::BlurFilterOperation::create):
384         (WebCore::BlurFilterOperation::stdDeviation):
385         (WebCore::BlurFilterOperation::operator==):
386         (WebCore::BlurFilterOperation::BlurFilterOperation): Blur only takes
387         one standard deviation / radius parameter.
388         * platform/graphics/filters/FilterOperations.cpp:
389         (WebCore::outsetSizeForBlur):
390         (WebCore::FilterOperations::getOutsets): No need for borderBox now.
391         * platform/graphics/filters/FilterOperations.h:
392         * rendering/FilterEffectRenderer.cpp:
393         (WebCore::FilterEffectRenderer::build): Build new effect types.
394         * rendering/FilterEffectRenderer.h:
395         * rendering/RenderBox.cpp:
396         (WebCore::RenderBox::addVisualEffectOverflow): No need to pass
397         borderBox size when calculating overflow on filter.
398         * rendering/RenderLayer.cpp:
399         (WebCore::RenderLayer::updateOrRemoveFilterEffect):
400         * rendering/style/RenderStyle.h:
401         (WebCore::InheritedFlags::getFilterOutsets): Ditto.
402
403 2011-12-16  Andreas Kling  <kling@webkit.org>
404
405         Unreviewed debug build fix after r103115.
406
407         * dom/Document.cpp:
408         (WebCore::Document::cachedCollection):
409
410 2011-12-16  Mark Hahnenberg  <mhahnenberg@apple.com>
411
412         Windows test fix
413
414         No new tests.
415
416         Unreviewed test fix. All Windows tests were crashing when objects who were pointing to 
417         static data members across DLL boundaries were getting garbage in their pointers.
418
419         * WebCore.exp.in:
420         * bindings/js/JSDOMWrapper.cpp:
421         * bindings/js/JSDOMWrapper.h:
422
423 2011-12-16  Ryosuke Niwa  <rniwa@webkit.org>
424
425         Rename registerCommandFor(Undo|Redo) to register(Undo|Redo)Step
426         https://bugs.webkit.org/show_bug.cgi?id=74748
427
428         Reviewed by Eric Seidel.
429
430         Renamed registerCommandForUndo and registerCommandForRedo to
431         registerUndoStep and registerRedoStep respectively.
432
433         * editing/Editor.cpp:
434         (WebCore::Editor::appliedEditing):
435         (WebCore::Editor::unappliedEditing):
436         (WebCore::Editor::reappliedEditing):
437         * loader/EmptyClients.h:
438         (WebCore::EmptyEditorClient::registerUndoStep):
439         (WebCore::EmptyEditorClient::registerRedoStep):
440         * page/EditorClient.h:
441
442 2011-12-16  Tim Horton  <timothy_horton@apple.com>
443
444         Canvas should respect backing store scale ratio when used as drawImage() source
445         https://bugs.webkit.org/show_bug.cgi?id=74758
446         <rdar://problem/10350194>
447
448         Reviewed by Simon Fraser.
449
450         Interpret the source rectangle passed into drawImage() when using a Canvas source in the source Canvas coordinate space,
451         instead of in the backing store coordinate space, without changing the behavior of drawImage(canvas, x, y).
452
453         No new tests.
454
455         * html/HTMLCanvasElement.cpp:
456         (WebCore::HTMLCanvasElement::convertDeviceToLogical):
457         * html/HTMLCanvasElement.h:
458         * html/canvas/CanvasRenderingContext2D.cpp:
459         (WebCore::CanvasRenderingContext2D::drawImage):
460
461 2011-12-16  Anders Carlsson  <andersca@apple.com>
462
463         Subpixel antialiasing not working in tiled mode
464         https://bugs.webkit.org/show_bug.cgi?id=74759
465
466         Reviewed by Simon Fraser.
467
468         Call setContentsOpaque(true) on the main frame render view layer so subpixel aa will be used
469         when drawing text into that layer.
470
471         * rendering/RenderLayerBacking.cpp:
472         (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
473
474 2011-12-16  Ryosuke Niwa  <rniwa@webkit.org>
475
476         invalidateNodeListsCacheAfterAttributeChanged has too many callers
477         https://bugs.webkit.org/show_bug.cgi?id=74692
478
479         Reviewed by Sam Weinig.
480
481         Call invalidateNodeListsCacheAfterAttributeChanged in Element::updateAfterAttributeChanged instead of
482         parsedMappedAttribute of various elements. Also make invalidateNodeListsCacheAfterAttributeChanged take
483         the qualified name of the changed attribute so that we can exit early when the changed attribute isn't
484         one of attributes we care.
485
486         In addition, added a missing call to invalidateNodeListsCacheAfterAttributeChanged in Attr::setValue.
487
488         Test: fast/dom/Attr/invalidate-nodelist-after-attr-setvalue.html
489
490         * dom/Attr.cpp:
491         (WebCore::Attr::childrenChanged):
492         * dom/Element.cpp:
493         (WebCore::Element::updateAfterAttributeChanged):
494         * dom/NamedNodeMap.cpp:
495         (WebCore::NamedNodeMap::addAttribute):
496         (WebCore::NamedNodeMap::removeAttribute):
497         * dom/Node.cpp:
498         (WebCore::Node::invalidateNodeListsCacheAfterAttributeChanged):
499         * dom/Node.h:
500         * dom/StyledElement.cpp:
501         (WebCore::StyledElement::classAttributeChanged):
502         * html/HTMLAnchorElement.cpp:
503         (WebCore::HTMLAnchorElement::parseMappedAttribute):
504         * html/HTMLAppletElement.cpp:
505         (WebCore::HTMLAppletElement::parseMappedAttribute):
506         * html/HTMLElement.cpp:
507         (WebCore::HTMLElement::parseMappedAttribute):
508         * html/HTMLEmbedElement.cpp:
509         (WebCore::HTMLEmbedElement::parseMappedAttribute):
510         * html/HTMLFormElement.cpp:
511         (WebCore::HTMLFormElement::parseMappedAttribute):
512         * html/HTMLFrameElementBase.cpp:
513         (WebCore::HTMLFrameElementBase::parseMappedAttribute):
514         * html/HTMLIFrameElement.cpp:
515         (WebCore::HTMLIFrameElement::parseMappedAttribute):
516         * html/HTMLImageElement.cpp:
517         (WebCore::HTMLImageElement::parseMappedAttribute):
518         * html/HTMLMapElement.cpp:
519         (WebCore::HTMLMapElement::parseMappedAttribute):
520         * html/HTMLMetaElement.cpp:
521         (WebCore::HTMLMetaElement::parseMappedAttribute):
522         * html/HTMLObjectElement.cpp:
523         (WebCore::HTMLObjectElement::parseMappedAttribute):
524         * html/HTMLParamElement.cpp:
525         (WebCore::HTMLParamElement::parseMappedAttribute):
526
527 2011-12-16  Andreas Kling  <kling@webkit.org>
528
529         Cache and reuse HTMLCollections exposed by Document.
530         <http://webkit.org/b/71956>
531
532         Reviewed by Antti Koivisto.
533
534         Let Document cache the various HTMLCollection objects it exposes.
535         This is a behavior change in two ways:
536
537         1) The lifetime of returned collections is now tied to the lifetime
538            of the Document. This matches the behavior of Firefox and Opera.
539
540         2) The cached collections returned by document are now exactly equal
541            to those returned by subsequent calls to the same getters.
542
543         This reduces memory consumption by ~800 kB (on 64-bit) when loading
544         the full HTML5 spec. document.links was called 34001 times, yielding
545         34001 separate HTMLCollections, and now we only need 1.
546
547         The document.all collection retains the old behavior, as caching it
548         will be a bit more complicated.
549
550         To avoid a reference cycle between Document and HTMLCollection,
551         collections that are cached on Document do not retained their base
552         node pointer (controlled by a m_baseIsRetained flag.)
553
554         Tests: fast/dom/document-collection-idempotence.html
555                fast/dom/gc-9.html
556
557         * dom/Document.cpp:
558         (WebCore::Document::detach):
559         (WebCore::Document::cachedCollection):
560         (WebCore::Document::images):
561         (WebCore::Document::applets):
562         (WebCore::Document::embeds):
563         (WebCore::Document::plugins):
564         (WebCore::Document::objects):
565         (WebCore::Document::scripts):
566         (WebCore::Document::links):
567         (WebCore::Document::forms):
568         (WebCore::Document::anchors):
569         * dom/Document.h:
570         * html/HTMLCollection.cpp:
571         (WebCore::HTMLCollection::HTMLCollection):
572         (WebCore::HTMLCollection::createForCachingOnDocument):
573         (WebCore::HTMLCollection::~HTMLCollection):
574         (WebCore::HTMLCollection::itemAfter):
575         * html/HTMLCollection.h:
576         (WebCore::HTMLCollection::base):
577
578 2011-12-16  Anders Carlsson  <andersca@apple.com>
579
580         Add a pretty dumb tile cache to WebTileCacheLayer
581         https://bugs.webkit.org/show_bug.cgi?id=74753
582
583         Reviewed by Simon Fraser.
584
585         * WebCore.xcodeproj/project.pbxproj:
586         * platform/graphics/ca/GraphicsLayerCA.cpp:
587         (WebCore::GraphicsLayerCA::requiresTiledLayer):
588         If a layer is a tile cache layer, we never want to swap it out for a tiled layer.
589
590         (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
591         Assert that we don't have a tile cache layer.
592
593         * platform/graphics/ca/mac/PlatformCALayerMac.mm:
594         (PlatformCALayer::PlatformCALayer):
595         If we have a tile cache layer, add its tile container to the list of custom sublayers.
596
597         * platform/graphics/ca/mac/TileCache.h: Added.
598         (WebCore::TileCache::tileContainerLayer):
599         Return the tile container layer.
600
601         * platform/graphics/ca/mac/TileCache.mm: Added.
602         (WebCore::TileCache::tileCacheLayerBoundsChanged):
603         Resize the tile grid if necessary.
604
605         (WebCore::TileCache::setNeedsDisplayInRect):
606         Invalidate the necessary tiles.
607
608         (WebCore::TileCache::drawLayer):
609         Set up the transform and draw the layer.
610
611         (WebCore::TileCache::getTileRangeForRect):
612         Given a rect, return the range of tiles that it covers.
613
614         (WebCore::TileCache::numTilesForGridSize):
615         Given a size, return how many tiles are needed to completely cover it.
616
617         (WebCore::TileCache::resizeTileGrid):
618         Create new tile layers if needed, or reuse already existing ones.
619
620         (WebCore::TileCache::tileLayerAtPosition):
621         Given a position in the grid, return the tile layer.
622
623         (WebCore::TileCache::createTileLayer):
624         Create a WebTileLayer and set it up.
625
626         * platform/graphics/ca/mac/WebTileCacheLayer.h:
627         * platform/graphics/ca/mac/WebTileCacheLayer.mm:
628         (-[WebTileCacheLayer setBounds:]):
629         (-[WebTileCacheLayer setNeedsDisplayInRect:]):
630         (-[WebTileCacheLayer tileContainerLayer]):
631         Call down to the tile cache object.
632
633         * platform/graphics/ca/mac/WebTileLayer.h: Added.
634         * platform/graphics/ca/mac/WebTileLayer.mm: Added.
635
636         (-[WebTileLayer drawInContext:]):
637         Ask the tile cache to draw the given layer.
638
639         (-[WebTileLayer setTileCache:WebCore::]):
640
641 2011-12-16  Sam Weinig  <sam@webkit.org>
642
643         Give PlatformEvents a base class
644         https://bugs.webkit.org/show_bug.cgi?id=74685
645
646         Reviewed by Anders Carlsson.
647
648         Add a base class for PlatformMouseEvent, PlatformKeyboardEvent, PlatformWheelEvent
649         and PlatformGestureEvent and move Type enumeration and modifiers down to it.
650
651         * CMakeLists.txt:
652         * GNUmakefile.list.am:
653         * Target.pri:
654         * WebCore.exp.in:
655         * WebCore.gypi:
656         * WebCore.vcproj/WebCore.vcproj:
657         * WebCore.xcodeproj/project.pbxproj:
658         Add new files.
659
660         * platform/PlatformEvent.cpp: Added.
661         * platform/PlatformEvent.h: Added.
662         (WebCore::PlatformEvent::type):
663         (WebCore::PlatformEvent::shiftKey):
664         (WebCore::PlatformEvent::ctrlKey):
665         (WebCore::PlatformEvent::altKey):
666         (WebCore::PlatformEvent::metaKey):
667         (WebCore::PlatformEvent::modifiers):
668         (WebCore::PlatformEvent::PlatformEvent):
669         Add new class.
670
671         * accessibility/mac/WebAccessibilityObjectWrapper.mm:
672         (-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):
673         * dom/KeyboardEvent.cpp:
674         (WebCore::eventTypeForKeyboardEventType):
675         * dom/MouseEvent.cpp:
676         (WebCore::MouseEvent::create):
677         * page/DragController.cpp:
678         (WebCore::createMouseEvent):
679         * page/EventHandler.cpp:
680         (WebCore::EventHandler::handleGestureEvent):
681         (WebCore::EventHandler::sendContextMenuEventForKey):
682         (WebCore::EventHandler::fakeMouseMoveEventTimerFired):
683         (WebCore::EventHandler::handleAccessKey):
684         (WebCore::EventHandler::keyEvent):
685         (WebCore::EventHandler::handleDrag):
686         * page/blackberry/EventHandlerBlackBerry.cpp:
687         (WebCore::EventHandler::accessKeyModifiers):
688         * page/chromium/EventHandlerChromium.cpp:
689         (WebCore::EventHandler::accessKeyModifiers):
690         * page/efl/EventHandlerEfl.cpp:
691         (WebCore::EventHandler::accessKeyModifiers):
692         * page/gtk/EventHandlerGtk.cpp:
693         (WebCore::EventHandler::accessKeyModifiers):
694         * page/mac/EventHandlerMac.mm:
695         (WebCore::EventHandler::accessKeyModifiers):
696         * page/qt/EventHandlerQt.cpp:
697         (WebCore::EventHandler::accessKeyModifiers):
698         * page/win/EventHandlerWin.cpp:
699         (WebCore::EventHandler::accessKeyModifiers):
700         * page/wx/EventHandlerWx.cpp:
701         (WebCore::EventHandler::accessKeyModifiers):
702         * platform/PlatformGestureEvent.h:
703         (WebCore::PlatformGestureEvent::PlatformGestureEvent):
704         * platform/PlatformKeyboardEvent.h:
705         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
706         (WebCore::PlatformKeyboardEvent::isKeypad):
707         * platform/PlatformMouseEvent.h:
708         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
709         (WebCore::PlatformMouseEvent::button):
710         * platform/PlatformWheelEvent.h:
711         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
712         * platform/ScrollAnimatorNone.cpp:
713         (WebCore::ScrollAnimatorNone::zoom):
714         (WebCore::ScrollAnimatorNone::handleGestureEvent):
715         * platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:
716         (WebCore::toWebCorePlatformKeyboardEventType):
717         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
718         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
719         * platform/chromium/GestureRecognizerChromium.cpp:
720         (WebCore::GestureRecognizerChromium::appendTapDownGestureEvent):
721         (WebCore::GestureRecognizerChromium::appendClickGestureEvent):
722         (WebCore::GestureRecognizerChromium::appendDoubleClickGestureEvent):
723         (WebCore::GestureRecognizerChromium::appendScrollGestureBegin):
724         (WebCore::GestureRecognizerChromium::appendScrollGestureEnd):
725         (WebCore::GestureRecognizerChromium::appendScrollGestureUpdate):
726         * platform/chromium/PlatformKeyboardEventChromium.cpp:
727         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
728         * platform/chromium/PopupContainer.cpp:
729         (WebCore::PopupContainer::handleGestureEvent):
730         * platform/chromium/PopupListBox.cpp:
731         (WebCore::isCharacterTypeEvent):
732         (WebCore::PopupListBox::handleKeyEvent):
733         * platform/chromium/ScrollAnimatorChromiumMac.mm:
734         (WebCore::ScrollAnimatorChromiumMac::handleGestureEvent):
735         * platform/efl/PlatformKeyboardEventEfl.cpp:
736         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
737         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
738         * platform/efl/PlatformMouseEventEfl.cpp:
739         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
740         * platform/efl/PlatformWheelEventEfl.cpp:
741         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
742         * platform/gtk/PlatformKeyboardEventGtk.cpp:
743         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
744         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
745         * platform/gtk/PlatformMouseEventGtk.cpp:
746         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
747         * platform/gtk/PlatformWheelEventGtk.cpp:
748         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
749         * platform/ios/KeyEventIOS.mm:
750         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
751         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
752         * platform/mac/KeyEventMac.mm:
753         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
754         * platform/mac/PlatformMouseEventMac.mm:
755         (WebCore::mouseEventForNSEvent):
756         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
757         * platform/mac/ScrollAnimatorMac.mm:
758         (WebCore::ScrollAnimatorMac::handleGestureEvent):
759         * platform/mac/WheelEventMac.mm:
760         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
761         * platform/qt/PlatformKeyboardEventQt.cpp:
762         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
763         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
764         * platform/qt/PlatformMouseEventQt.cpp:
765         (WebCore::mouseEventTypeAndMouseButtonFromQEvent):
766         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
767         * platform/qt/WheelEventQt.cpp:
768         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
769         * platform/win/KeyEventWin.cpp:
770         (WebCore::isKeypadEvent):
771         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
772         * platform/win/PlatformMouseEventWin.cpp:
773         (WebCore::messageToEventType):
774         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
775         * platform/win/WheelEventWin.cpp:
776         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
777         * platform/wx/KeyboardEventWx.cpp:
778         (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
779         (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
780         * platform/wx/MouseEventWx.cpp:
781         (WebCore::typeFromMouseEvent):
782         (WebCore::PlatformMouseEvent::PlatformMouseEvent):
783         * platform/wx/MouseWheelEventWx.cpp:
784         (WebCore::PlatformWheelEvent::PlatformWheelEvent):
785         * plugins/mac/PluginViewMac.mm:
786         (WebCore::PluginView::handleKeyboardEvent):
787         * testing/Internals.cpp:
788         (WebCore::Internals::setZoomAnimatorTransform):
789         Switch to using new names/class modifier as necessary.
790
791 2011-12-16  Adam Barth  <abarth@webkit.org>
792
793         <!doctype html><div><body><frameset> doesn't parse correctly
794         https://bugs.webkit.org/show_bug.cgi?id=74745
795
796         Reviewed by Eric Seidel.
797
798         We were missing one place the spec tells us to set this bool.
799
800         Tests: html5lib/runner.html
801
802         * html/parser/HTMLTreeBuilder.cpp:
803
804 2011-12-16  Jarred Nicholls  <jarred@sencha.com>
805
806         Support HTML documents in XHR.responseXML
807         https://bugs.webkit.org/show_bug.cgi?id=74626
808
809         Latest W3C XHR spec details for the responseXML attribute:
810         http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
811         http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body
812
813         XHR.responseXML was not compliant per the latest editor's draft of the XHR spec.
814         The following compliance issue have been corrected:
815           - A responseType of "text" should disallow access to responseXML by throwing an InvalidState exception.
816           - When the error flag is toggled, responseXML should return "null" immediately and not attempt to create a new Document.
817           - responseXML should return a valid HTML document when the MIME type is "text/html", but only when the caller has
818             explicitly set responseType to "document".
819
820         Reviewed by Alexey Proskuryakov.
821
822         Tests: fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks.html
823                fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-strict.html
824                fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html
825                fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml.html
826                fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype.html
827                fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html
828
829         * xml/XMLHttpRequest.cpp:
830         (WebCore::XMLHttpRequest::responseXML):
831         (WebCore::XMLHttpRequest::clearResponseBuffers):
832         * xml/XMLHttpRequest.h: Rename m_responseXML to m_responseDocument
833         (WebCore::XMLHttpRequest::optionalResponseXML):
834
835 2011-12-16  Ryosuke Niwa  <rniwa@webkit.org>
836
837         Only EditCommandComposition should implement unapply and reapply
838         https://bugs.webkit.org/show_bug.cgi?id=74490
839
840         Reviewed by Eric Seidel.
841
842         Introduce new abstract class UndoStep to replace EditCommand for EditorClient, and make EditCommand
843         private to WebCore.
844
845         * GNUmakefile.list.am:
846         * Target.pri:
847         * WebCore.exp.in:
848         * WebCore.gypi:
849         * WebCore.vcproj/WebCore.vcproj:
850         * WebCore.xcodeproj/project.pbxproj:
851         * editing/CompositeEditCommand.cpp:
852         (WebCore::EditCommandComposition::create): Takes EditAction instead of boolean for CreateLinkCommand.
853         (WebCore::EditCommandComposition::EditCommandComposition): Ditto.
854         (WebCore::EditCommandComposition::unapply): Moved from EditCommand; we don't have to call isTopLevelCommand
855         anymore because EditCommandComposition is always top-level. In fact, the only thing unapply/reapply do
856         in addition to what doUnapply/doReapply do for sub-level commands is disabling and enabling delete button
857         and defining an event queue scope. However, these can be done at top-level command anyway, so we now only call
858         doApply for sub-level commands.
859         (WebCore::EditCommandComposition::reapply): Ditto.
860         (WebCore::EditCommandComposition::setStartingSelection): Added.
861         (WebCore::EditCommandComposition::setEndingSelection): Added.
862         (WebCore::applyCommand): Moved from EditCommand.
863         (WebCore::CompositeEditCommand::apply): Moved from EditCommand; doesn't call isTopLevelCommand for the same reason.
864         (WebCore::CompositeEditCommand::ensureComposition):
865         (WebCore::CompositeEditCommand::applyCommandToComposite): Call doApply instead of apply for the same reason.
866         * editing/CompositeEditCommand.h:
867         (WebCore::EditCommandComposition::wasCreateLinkCommand):
868         (WebCore::EditCommandComposition::startingSelection): Added.
869         (WebCore::EditCommandComposition::endingSelection): Added.
870         * editing/EditCommand.cpp:
871         (WebCore::EditCommand::setStartingSelection):
872         (WebCore::EditCommand::setEndingSelection):
873         (WebCore::SimpleEditCommand::doReapply): Moved from EditCommand.
874         * editing/EditCommand.h:
875         * editing/UndoStep.h: Added.
876         (WebCore::UndoStep::~UndoStep):
877         * loader/EmptyClients.h:
878         (WebCore::EmptyEditorClient::shouldInsertNode):
879         (WebCore::EmptyEditorClient::didSetSelectionTypesForPasteboard):
880         (WebCore::EmptyEditorClient::registerCommandForUndo): Takes UndoStep instead of EditCommand.
881         (WebCore::EmptyEditorClient::registerCommandForRedo): Ditto.
882         * page/EditorClient.h:
883
884 2011-12-16  Simon Fraser  <simon.fraser@apple.com>
885
886         Allow a PlatformCALayer to own its own sublayers
887         https://bugs.webkit.org/show_bug.cgi?id=74744
888
889         Reviewed by Anders Carlsson.
890
891         GraphicsLayerCA rebuilds the sublayer list of CALayers, which would
892         blow away any custom layers that a PlatformCALayer wants to maintain
893         as children.
894         
895         Make it possible for a PlatformLayerCA to indicate that it wants
896         a specific list of sublayers to be maintained as the first layers
897         in the child list.
898         
899         * platform/graphics/ca/GraphicsLayerCA.cpp:
900         (WebCore::GraphicsLayerCA::updateSublayerList):
901         * platform/graphics/ca/PlatformCALayer.h:
902         (WebCore::PlatformCALayer::customSublayers):
903         * platform/graphics/ca/mac/PlatformCALayerMac.mm:
904         (PlatformCALayer::PlatformCALayer):
905
906 2011-12-16  Adam Barth  <abarth@webkit.org>
907
908         <!DOCTYPE html><pre>&#x0a;&#x0a;A</pre> doesn't parse correctly
909         https://bugs.webkit.org/show_bug.cgi?id=74658
910
911         Reviewed by Darin Adler.
912
913         Previously, we handled skipping newlines after <pre> in the tokenizer,
914         which isn't how the spec handles them.  Instead, the spec skips them in
915         the tree builder.  This isn't usually observable, except in the case of
916         an HTML entity.  In that case, the tokenzier sees '&' (because the
917         entity hasn't been decoded yet), but the tree builder sees '\n' (the
918         decoded entity).  This patch fixes the bug by more closely aligning our
919         implementation with the spec.
920
921         Test: html5lib/runner.html
922
923         * html/parser/HTMLTokenizer.cpp:
924         (WebCore::HTMLTokenizer::reset):
925         (WebCore::HTMLTokenizer::nextToken):
926         * html/parser/HTMLTokenizer.h:
927         * html/parser/HTMLTreeBuilder.cpp:
928         (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::skipAtMostOneLeadingNewline):
929         (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
930         (WebCore::HTMLTreeBuilder::processStartTagForInBody):
931         (WebCore::HTMLTreeBuilder::processCharacterBuffer):
932         * html/parser/HTMLTreeBuilder.h:
933         * xml/parser/MarkupTokenizerBase.h:
934
935 2011-12-16  Joshua Bell  <jsbell@chromium.org>
936
937         IndexedDB: Implement IDBObjectStore.count() and IDBIndex.count()
938         https://bugs.webkit.org/show_bug.cgi?id=73686
939
940         Reviewed by Tony Chang.
941
942         These new methods open an internal cursor and iterate through the
943         results, returning the number of items found. Note that only
944         passing an IDBKeyRange is supported, not an IDBKey. Supporting
945         that will require some IDL/binding monkeying; several other
946         methods also need the same Key-or-KeyRange behavior.
947
948         Tests: storage/indexeddb/index-count.html
949                storage/indexeddb/objectstore-count.html
950
951         * bindings/v8/SerializedScriptValue.cpp:
952         (WebCore::SerializedScriptValue::numberValue):
953         * bindings/v8/SerializedScriptValue.h:
954         * storage/IDBIndex.cpp:
955         (WebCore::IDBIndex::openCursor):
956         (WebCore::IDBIndex::count):
957         * storage/IDBIndex.h:
958         (WebCore::IDBIndex::count):
959         * storage/IDBIndex.idl:
960         * storage/IDBIndexBackendImpl.cpp:
961         (WebCore::IDBIndexBackendImpl::countInternal):
962         (WebCore::IDBIndexBackendImpl::count):
963         * storage/IDBIndexBackendImpl.h:
964         * storage/IDBIndexBackendInterface.h:
965         * storage/IDBObjectStore.cpp:
966         (WebCore::IDBObjectStore::count):
967         * storage/IDBObjectStore.h:
968         (WebCore::IDBObjectStore::count):
969         * storage/IDBObjectStore.idl:
970         * storage/IDBObjectStoreBackendImpl.cpp:
971         (WebCore::IDBObjectStoreBackendImpl::count):
972         (WebCore::IDBObjectStoreBackendImpl::countInternal):
973         * storage/IDBObjectStoreBackendImpl.h:
974         * storage/IDBObjectStoreBackendInterface.h:
975
976 2011-12-16  Yael Aharon  <yael.aharon@nokia.com>
977
978         Audio file in video element has a size of 0x0 .
979         https://bugs.webkit.org/show_bug.cgi?id=74738
980
981         Reviewed by Kenneth Rohde Christiansen.
982
983         When the source of a video element has audio only, the intrinsic size of the video should
984         not be 0x0. Instead, it should be the same as as no media was loaded.
985
986         No new tests. An existing test is covering this case and was modified to reflect this change.
987
988         * rendering/RenderVideo.cpp:
989         (WebCore::RenderVideo::calculateIntrinsicSize):
990
991 2011-12-16  Alexis Menard  <alexis.menard@openbossa.org>
992
993         getComputedStyle for border-width is not implemented.
994         https://bugs.webkit.org/show_bug.cgi?id=74635
995
996         Reviewed by Tony Chang.
997
998         Implement getComputedStyle for border-width.
999
1000         Test: fast/css/getComputedStyle/getComputedStyle-border-width.html
1001
1002         * css/CSSComputedStyleDeclaration.cpp:
1003         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
1004
1005 2011-12-16  Branimir Lambov  <blambov@google.com>
1006
1007         [chromium] svg/clip-path/clip-in-mask.svg fails on Windows and Linux
1008         https://bugs.webkit.org/show_bug.cgi?id=53378
1009
1010         Reviewed by Tony Chang.
1011
1012         Fixes a problem in Skia's clipping layer code's handling of coordinate
1013         transformations that was causing all complex clipping (including text
1014         and/or masks) to fail.
1015
1016         The method beginLayerClippedToImage was taking rectangle coordinates
1017         in one local coordinate space, but it was applying them in a different  
1018         one because of the delay between the time it is called and the actual 
1019         application occurs in applyClipFromImage. The fix translates the 
1020         coordinates passed to beginLayerClippedToImage to absolute ones, so 
1021         that they are not affected by any change in the transform matrix, and 
1022         makes sure that applyClipFromImage clears the matrix before drawing
1023         the clip layer to correctly apply the absolute coordinates.
1024
1025         * platform/graphics/skia/PlatformContextSkia.cpp:
1026         (WebCore::PlatformContextSkia::beginLayerClippedToImage):
1027         (WebCore::PlatformContextSkia::applyClipFromImage):
1028         * platform/graphics/skia/PlatformContextSkia.h:
1029
1030 2011-12-16  Mark Hahnenberg  <mhahnenberg@apple.com>
1031
1032         De-virtualize destructors
1033         https://bugs.webkit.org/show_bug.cgi?id=74331
1034
1035         Reviewed by Geoffrey Garen.
1036
1037         No new tests.
1038
1039         Doing everything here that was done to the JSCell hierarchy in JavaScriptCore. 
1040         See the ChangeLog for this commit for a more in-depth description.
1041
1042         * WebCore.exp.in: Add/remove symbols.
1043         * bindings/js/JSCanvasRenderingContext2DCustom.cpp: Remove first arg from isJSArray call.
1044         (WebCore::JSCanvasRenderingContext2D::setWebkitLineDash):
1045         * bindings/js/JSDOMBinding.cpp: Add trival destructor assert for DOMConstructorObject 
1046         and DOMConstructorWithDocument.
1047         * bindings/js/JSDOMGlobalObject.cpp: Add static destroy.  Add implementation for 
1048         scriptExecutionContext that dispatches to different functions in subclasses 
1049         depending on our current ClassInfo.  We do this so that we can get rid of the 
1050         virtual-ness of scriptExecutionContext, because any virtual functions will throw 
1051         off the layout of the object and we'll crash at runtime.
1052         (WebCore::JSDOMGlobalObject::destroy):
1053         (WebCore::JSDOMGlobalObject::scriptExecutionContext):
1054         * bindings/js/JSDOMGlobalObject.h:
1055         * bindings/js/JSDOMWindowBase.cpp: Add static destroy.
1056         (WebCore::JSDOMWindowBase::destroy):
1057         * bindings/js/JSDOMWindowBase.h: De-virtualize scriptExecutionContext.
1058         * bindings/js/JSDOMWindowShell.cpp: Add static destroy.
1059         (WebCore::JSDOMWindowShell::destroy):
1060         * bindings/js/JSDOMWindowShell.h:
1061         * bindings/js/JSDOMWrapper.cpp: Add trivial destructor assert.
1062         * bindings/js/JSDOMWrapper.h: Add a ClassInfo to JSDOMWrapper since it now overrides 
1063         a MethodTable function. Remove vtableAnchor virtual function.
1064         * bindings/js/JSImageConstructor.cpp: Add trivial destructor assert.
1065         * bindings/js/JSNodeCustom.cpp: Change implementation of pushEventHandlerScope so that 
1066         it dispatches to the correct function depending on the 
1067         identity of the class as specified by the ClassInfo.  
1068         See JSDOMGlobalObject::scriptExecutionContext for explanation.
1069         (WebCore::JSNode::pushEventHandlerScope):
1070         * bindings/js/JSWebSocketCustom.cpp: Remove first arg to isJSArray call.
1071         (WebCore::JSWebSocketConstructor::constructJSWebSocket):
1072         * bindings/js/JSWorkerContextBase.cpp: Add static destroy.
1073         (WebCore::JSWorkerContextBase::destroy):
1074         * bindings/js/JSWorkerContextBase.h: 
1075         * bindings/js/ScriptValue.cpp: Remove first arg to isJSArray call.
1076         (WebCore::jsToInspectorValue): 
1077         * bindings/js/SerializedScriptValue.cpp: Ditto.
1078         (WebCore::CloneSerializer::isArray):
1079         (WebCore::CloneSerializer::getSparseIndex):
1080         * bindings/scripts/CodeGeneratorJS.pm:
1081         (GenerateHeader): Remove virtual-ness of any custom pushEventHandlerScope (see 
1082         JSNodeCustom::pushEventHandlerScope for explanation).  Remove virtual toBoolean 
1083         for anybody who masquerades as undefined, since our JSObject implementation handles 
1084         this based on the TypeInfo in the Structure. Add trivial destructor assert for any 
1085         class other than DOMWindow or WorkerContexts.
1086         (GenerateImplementation): Change ClassInfo definitions to use Base::s_info, since 
1087         typing the parent class more than once is duplication of information and increases 
1088         the likelihood of mistakes.  Pass ClassInfo to TypeArrayDescriptors instead of vptr. 
1089         (GenerateConstructorDefinition): Add trivial destructor assert for all generated constructors.
1090         * bridge/c/CRuntimeObject.cpp: Remove empty virtual destructor.
1091         * bridge/c/CRuntimeObject.h: 
1092         * bridge/jni/jsc/JavaRuntimeObject.cpp: Ditto.
1093         * bridge/jni/jsc/JavaRuntimeObject.h: 
1094         * bridge/objc/ObjCRuntimeObject.h: Ditto.
1095         * bridge/objc/ObjCRuntimeObject.mm:
1096         * bridge/objc/objc_runtime.h: Add static destroy for ObjcFallbackObjectImp. De-virtualize 
1097         toBoolean in the short term.  Need longer term fix.
1098         * bridge/objc/objc_runtime.mm:
1099         (JSC::Bindings::ObjcFallbackObjectImp::destroy):
1100         * bridge/qt/qt_runtime.cpp: Add static destroy to QtRuntimeMethod.
1101         (JSC::Bindings::QtRuntimeMethod::destroy):
1102         * bridge/qt/qt_runtime.h: De-virtualize ~QtRuntimeMethod.
1103         * bridge/runtime_array.cpp: De-virtualize destructor. Add static destroy.
1104         (JSC::RuntimeArray::destroy):
1105         * bridge/runtime_array.h:
1106         * bridge/runtime_method.cpp: Remove vtableAnchor. Add static destroy.
1107         (JSC::RuntimeMethod::destroy):
1108         * bridge/runtime_method.h:
1109         * bridge/runtime_object.cpp: Add static destroy.
1110         (JSC::Bindings::RuntimeObject::destroy):
1111         * bridge/runtime_object.h:
1112
1113 2011-12-15  Alexey Proskuryakov  <ap@apple.com>
1114
1115         Poor XPath performance when evaluating an expression that returns a lot of nodes
1116         https://bugs.webkit.org/show_bug.cgi?id=74665
1117         <rdar://problem/10517146>
1118
1119         Reviewed by Darin Adler.
1120
1121         No change in funcitonality. Well covered by existing tests (ran them with zero cutoff to
1122         execute the new code path).
1123
1124         Our sorting function is optimized for small node sets in large documents, and this is the
1125         opposite of it. Added another one that traverses the whole document, adding nodes from the
1126         node set to sorted list. That doesn't grow with the number of nodes nearly as fast.
1127
1128         Cutoff amount chosen for the document referenced in bug - this is roughly where the algorithms
1129         have the same performance on it.
1130
1131         * xml/XPathNodeSet.cpp:
1132         (WebCore::XPath::NodeSet::sort):
1133         (WebCore::XPath::findRootNode):
1134         (WebCore::XPath::NodeSet::traversalSort):
1135         * xml/XPathNodeSet.h:
1136
1137 2011-12-15  Antti Koivisto  <antti@apple.com>
1138
1139         https://bugs.webkit.org/show_bug.cgi?id=74677
1140         Count ResourceLoadScheduler suspends/resumes
1141
1142         Reviewed by Andreas Kling.
1143
1144         Using boolean is not robust when there are multiple clients calling suspendPendingRequests/resumePendingRequests.
1145         
1146         Increment and decrement suspend count instead of just setting/unsetting a boolean.
1147
1148         * loader/ResourceLoadScheduler.cpp:
1149         (WebCore::ResourceLoadScheduler::ResourceLoadScheduler):
1150         (WebCore::ResourceLoadScheduler::servePendingRequests):
1151         (WebCore::ResourceLoadScheduler::suspendPendingRequests):
1152         (WebCore::ResourceLoadScheduler::resumePendingRequests):
1153         * loader/ResourceLoadScheduler.h:
1154         (WebCore::ResourceLoadScheduler::isSuspendingPendingRequests):
1155
1156 2011-12-16  Adam Klein  <adamk@chromium.org>
1157
1158         Improve performance of ChildListMutationScope when no MutationObservers are present
1159         https://bugs.webkit.org/show_bug.cgi?id=74671
1160
1161         Reviewed by Ojan Vafai.
1162
1163         Inline ChildListMutationScope's methods (including constructor and
1164         destructor), and provide a fast-fail case when no mutation observers
1165         are present.
1166
1167         The code reorganization necessary for the above also removed the
1168         anonymous namespace in ChildListMutationScope.cpp, making both helper
1169         classes private inner classes of ChildListMutationScope.
1170
1171         No new tests, refactoring only.
1172
1173         * dom/ChildListMutationScope.cpp:
1174         (WebCore::ChildListMutationScope::MutationAccumulator::MutationAccumulator):
1175         (WebCore::ChildListMutationScope::MutationAccumulator::~MutationAccumulator):
1176         (WebCore::ChildListMutationScope::MutationAccumulator::isAddedNodeInOrder):
1177         (WebCore::ChildListMutationScope::MutationAccumulator::childAdded):
1178         (WebCore::ChildListMutationScope::MutationAccumulator::isRemovedNodeInOrder):
1179         (WebCore::ChildListMutationScope::MutationAccumulator::willRemoveChild):
1180         (WebCore::ChildListMutationScope::MutationAccumulator::enqueueMutationRecord):
1181         (WebCore::ChildListMutationScope::MutationAccumulator::clear):
1182         (WebCore::ChildListMutationScope::MutationAccumulator::isEmpty):
1183         (WebCore::ChildListMutationScope::MutationAccumulationRouter::MutationAccumulationRouter):
1184         (WebCore::ChildListMutationScope::MutationAccumulationRouter::~MutationAccumulationRouter):
1185         (WebCore::ChildListMutationScope::MutationAccumulationRouter::initialize):
1186         (WebCore::ChildListMutationScope::MutationAccumulationRouter::instance):
1187         (WebCore::ChildListMutationScope::MutationAccumulationRouter::childAdded):
1188         (WebCore::ChildListMutationScope::MutationAccumulationRouter::willRemoveChild):
1189         (WebCore::ChildListMutationScope::MutationAccumulationRouter::incrementScopingLevel):
1190         (WebCore::ChildListMutationScope::MutationAccumulationRouter::decrementScopingLevel):
1191         * dom/ChildListMutationScope.h:
1192         (WebCore::ChildListMutationScope::ChildListMutationScope):
1193         (WebCore::ChildListMutationScope::~ChildListMutationScope):
1194         (WebCore::ChildListMutationScope::childAdded):
1195         (WebCore::ChildListMutationScope::willRemoveChild):
1196
1197 2011-12-16  Dean Jackson  <dino@apple.com>
1198
1199         Filters need to affect visual overflow
1200         https://bugs.webkit.org/show_bug.cgi?id=71930
1201
1202         Reviewed by Simon Fraser.
1203
1204         Make sure filters are included in visual overflow.
1205         Add a new method to calculate the expansion of overflow
1206         region given a list of FilterOperations. This is a slight
1207         duplication of code from the rendering path, but is needed
1208         because overflow is calculated before the FilterEffect
1209         chain is built.
1210
1211         Also, filters were always rendered into their
1212         input rectangle which was wrong for any effect
1213         that produced a different sized result - drop-shadow
1214         and blur. This required two changes. First, FilterEffect
1215         needed a flag to decide whether or not to clip
1216         output to primitive regions (as required by SVG but not
1217         what we want here). Second, the rendering operation
1218         draws into the rectangle the filter claims is its painting
1219         rectangle.
1220
1221         Test: css3/filters/regions-expanding.html
1222
1223         * platform/graphics/filters/FEDropShadow.cpp:
1224         (WebCore::FEDropShadow::determineAbsolutePaintRect): Only
1225         clipToBounds if necessary.
1226         * platform/graphics/filters/FEGaussianBlur.cpp:
1227         (WebCore::FEGaussianBlur::calculateUnscaledKernelSize): CSS filters
1228         ask for the kernel size before the Filter object is created, so
1229         add a new method to return an unscaled kernel.
1230         (WebCore::FEGaussianBlur::calculateKernelSize):
1231         (WebCore::FEGaussianBlur::determineAbsolutePaintRect): Only
1232         clipToBounds if necessary.
1233         * platform/graphics/filters/FEGaussianBlur.h:
1234         * platform/graphics/filters/FEMorphology.cpp:
1235         (WebCore::FEMorphology::determineAbsolutePaintRect): Only
1236         clipToBounds if necessary.
1237         * platform/graphics/filters/FEOffset.cpp:
1238         (WebCore::FEOffset::determineAbsolutePaintRect): Only
1239         clipToBounds if necessary.
1240         * platform/graphics/filters/FilterEffect.cpp:
1241         (WebCore::FilterEffect::FilterEffect): Initialize clipToBounds
1242         as false so SVG remains unchanged.
1243         (WebCore::FilterEffect::determineAbsolutePaintRect): Only
1244         clipToBounds if necessary.
1245         * platform/graphics/filters/FilterEffect.h:
1246         (WebCore::FilterEffect::clipsToBounds):
1247         (WebCore::FilterEffect::setClipsToBounds):
1248         * rendering/FilterEffectRenderer.cpp:
1249         (WebCore::FilterEffectRenderer::build): Make sure we set our
1250         filters here to NOT clip to bounds.
1251         * rendering/FilterEffectRenderer.h:
1252         (WebCore::FilterEffectRenderer::outputRect): Asks the filter
1253         operation for the size of the result image.
1254         * rendering/RenderBlock.cpp:
1255         (WebCore::RenderBlock::computeOverflow):
1256         * rendering/RenderBox.cpp:
1257         (WebCore::RenderBox::addVisualEffectOverflow): Change the name
1258         from addBoxShadowAndBorderOverflow().
1259         * rendering/RenderBox.h:
1260         * rendering/RenderEmbeddedObject.cpp:
1261         (WebCore::RenderEmbeddedObject::layout):
1262         * rendering/RenderIFrame.cpp:
1263         (WebCore::RenderIFrame::layout):
1264         * rendering/RenderLayer.cpp:
1265         (WebCore::RenderLayer::paintLayer):
1266         * rendering/RenderLayerBacking.cpp:
1267         (WebCore::hasBoxDecorations): Change name from
1268         hasBorderOutlineOrShadow().
1269         (WebCore::hasBoxDecorationsOrBackground):
1270         (WebCore::hasBoxDecorationsOrBackgroundImage):
1271         * rendering/RenderReplaced.cpp:
1272         (WebCore::RenderReplaced::layout):
1273         * rendering/style/FilterOperations.cpp:
1274         (WebCore::outsetSizeForBlur): Return an IntSize that is the amount
1275         of offset.
1276         (WebCore::FilterOperations::hasOutsets):
1277         (WebCore::FilterOperations::getOutsets):
1278         * rendering/style/FilterOperations.h:
1279         * rendering/style/RenderStyle.h:
1280         (WebCore::InheritedFlags::getFilterOutsets):
1281         (WebCore::InheritedFlags::hasFilterOutsets):
1282         * svg/graphics/filters/SVGFEImage.cpp:
1283         (WebCore::FEImage::determineAbsolutePaintRect): Only
1284         clipToBounds if necessary.
1285
1286 2011-12-16  Alexis Menard  <alexis.menard@openbossa.org>, Jakub Wieczorek  <jwieczorek@webkit.org>
1287
1288         Add support for <ol reversed>.
1289         https://bugs.webkit.org/show_bug.cgi?id=36724
1290
1291         The reversed attribute makes an ordered list appear with marker values
1292         decreasing from n, where n is the number of items.
1293         See: http://www.whatwg.org/specs/web-apps/current-work/#attr-ol-reversed
1294
1295         Reviewed by Darin Adler.
1296
1297         Tests: fast/lists/ol-reversed-dynamic-simple.html
1298                fast/lists/ol-reversed-dynamic.html
1299                fast/lists/ol-reversed-nested-items.html
1300                fast/lists/ol-reversed-nested-list.html
1301                fast/lists/ol-reversed-simple.html
1302
1303         * html/HTMLAttributeNames.in:
1304         * html/HTMLOListElement.cpp:
1305         (WebCore::HTMLOListElement::HTMLOListElement):
1306         (WebCore::HTMLOListElement::parseMappedAttribute):
1307         (WebCore::HTMLOListElement::updateItemValues):
1308         (WebCore::HTMLOListElement::recalculateItemCount):
1309         * html/HTMLOListElement.h:
1310         (WebCore::HTMLOListElement::start):
1311         (WebCore::HTMLOListElement::isReversed):
1312         (WebCore::HTMLOListElement::itemCountChanged):
1313         (WebCore::HTMLOListElement::itemCount):
1314         * html/HTMLOListElement.idl:
1315         * rendering/RenderListItem.cpp:
1316         (WebCore::RenderListItem::nextListItem):
1317         (WebCore::previousListItem):
1318         (WebCore::RenderListItem::calcValue):
1319         (WebCore::RenderListItem::explicitValueChanged):
1320         (WebCore::previousOrNextItem):
1321         (WebCore::RenderListItem::updateListMarkerNumbers):
1322         * rendering/RenderListItem.h:
1323
1324 2011-12-16  Mikhail Naganov  <mnaganov@chromium.org>
1325
1326         Scroll non-visible edit controls and caret into the center of the view when starting typing.
1327         https://bugs.webkit.org/show_bug.cgi?id=65027
1328
1329         Reviewed by Ryosuke Niwa.
1330
1331         Tests: editing/input/caret-at-the-edge-of-contenteditable.html
1332                editing/input/caret-at-the-edge-of-input.html
1333                editing/input/reveal-caret-of-multiline-contenteditable.html
1334                editing/input/reveal-caret-of-multiline-input.html
1335                editing/input/reveal-contenteditable-on-input-vertically.html
1336                editing/input/reveal-contenteditable-on-paste-vertically.html
1337                editing/input/reveal-edit-on-input-vertically.html
1338                editing/input/reveal-edit-on-paste-vertically.html
1339
1340         * editing/Editor.cpp:
1341         (WebCore::Editor::insertTextWithoutSendingTextEvent):
1342         (WebCore::Editor::revealSelectionAfterEditingOperation):
1343
1344 2011-12-16  Ryosuke Niwa  <rniwa@webkit.org>
1345
1346         Touch RenderStyle in an attempt to fix linking errors on Chromium Windows bots.
1347
1348         * rendering/style/RenderStyle.h:
1349
1350 2011-12-14  Nat Duca  <nduca@chromium.org>
1351
1352         [chromium] DelayBasedTimeSource should not change its timebase on late ticks
1353         https://bugs.webkit.org/show_bug.cgi?id=74573
1354
1355         The original DelayBasedTimeSource was designed to shift its timebase
1356         to the tick time when a tick came back "late." The rationale was that it is
1357         better to just "start fresh" after a stutter. After profiling this,
1358         this time-rebasing just destabilizes frame rate anytime the thread gets
1359         loaded.  This patch keeps the timebase stationary, leading to vastly
1360         smoother framerates when the message loop is under load.
1361
1362         Reviewed by James Robinson.
1363
1364         * platform/graphics/chromium/cc/CCDelayBasedTimeSource.cpp:
1365         (WebCore::CCDelayBasedTimeSource::updateState):
1366
1367 2011-12-16  Sheriff Bot  <webkit.review.bot@gmail.com>
1368
1369         Unreviewed, rolling out r103062.
1370         http://trac.webkit.org/changeset/103062
1371         https://bugs.webkit.org/show_bug.cgi?id=74715
1372
1373         It broke many tests (Requested by Ossy on #webkit).
1374
1375         * html/HTMLAttributeNames.in:
1376         * html/HTMLOListElement.cpp:
1377         (WebCore::HTMLOListElement::HTMLOListElement):
1378         (WebCore::HTMLOListElement::parseMappedAttribute):
1379         * html/HTMLOListElement.h:
1380         (WebCore::HTMLOListElement::start):
1381         * html/HTMLOListElement.idl:
1382         * rendering/RenderListItem.cpp:
1383         (WebCore::previousListItem):
1384         (WebCore::RenderListItem::calcValue):
1385         (WebCore::RenderListItem::explicitValueChanged):
1386         (WebCore::RenderListItem::updateListMarkerNumbers):
1387         * rendering/RenderListItem.h:
1388
1389 2011-12-16  Alexis Menard  <alexis.menard@openbossa.org>, Jakub Wieczorek  <jwieczorek@webkit.org>
1390
1391         Add support for <ol reversed>.
1392         https://bugs.webkit.org/show_bug.cgi?id=36724
1393
1394         The reversed attribute makes an ordered list appear with marker values
1395         decreasing from n, where n is the number of items.
1396         See: http://www.whatwg.org/specs/web-apps/current-work/#attr-ol-reversed
1397
1398         Reviewed by Darin Adler.
1399
1400         Tests: fast/lists/ol-reversed-dynamic-simple.html
1401                fast/lists/ol-reversed-dynamic.html
1402                fast/lists/ol-reversed-nested-items.html
1403                fast/lists/ol-reversed-nested-list.html
1404                fast/lists/ol-reversed-simple.html
1405
1406         * html/HTMLAttributeNames.in:
1407         * html/HTMLOListElement.cpp:
1408         (WebCore::HTMLOListElement::HTMLOListElement):
1409         (WebCore::HTMLOListElement::parseMappedAttribute):
1410         (WebCore::HTMLOListElement::updateItemValues):
1411         (WebCore::HTMLOListElement::recalculateItemCount):
1412         * html/HTMLOListElement.h:
1413         (WebCore::HTMLOListElement::start):
1414         (WebCore::HTMLOListElement::isReversed):
1415         (WebCore::HTMLOListElement::itemCountChanged):
1416         (WebCore::HTMLOListElement::itemCount):
1417         * html/HTMLOListElement.idl:
1418         * rendering/RenderListItem.cpp:
1419         (WebCore::RenderListItem::nextListItem):
1420         (WebCore::previousListItem):
1421         (WebCore::RenderListItem::calcValue):
1422         (WebCore::RenderListItem::explicitValueChanged):
1423         (WebCore::previousOrNextItem):
1424         (WebCore::RenderListItem::updateListMarkerNumbers):
1425         * rendering/RenderListItem.h:
1426
1427 2011-12-15  Stephen White  <senorblanco@chromium.org>
1428
1429         Enable CSS_FILTERS in Chromium.
1430         https://bugs.webkit.org/show_bug.cgi?id=74334
1431
1432         Reviewed by Chris Marrin.
1433
1434         Covered by css3/filters (when enabled).
1435
1436         * platform/graphics/filters/FilterOperation.h:
1437         (WebCore::PassthroughFilterOperation::PassthroughFilterOperation):
1438         Since wingdi.h #define's PASSTHROUGH, #undef it after the includes.
1439
1440 2011-12-16  Patrick Gansterer  <paroga@webkit.org>
1441
1442         Unreviewed WinCE build fix after r102979.
1443
1444         Make everHadLayout() public accessible as it was before the change.
1445
1446         * rendering/RenderObject.h:
1447         (WebCore::RenderObject::everHadLayout):
1448
1449 2011-12-15  Hans Wennborg  <hans@chromium.org>
1450
1451         IndexedDB: Don't prefetch values from key cursors
1452         https://bugs.webkit.org/show_bug.cgi?id=74604
1453
1454         Reviewed by Tony Chang.
1455
1456         Since index key cursors don't have values, prefetching should not try
1457         to retrieve them. Doing so trips an ASSERT in debug builds.
1458
1459         This will be tested Chromium-side.
1460
1461         * storage/IDBCursorBackendImpl.cpp:
1462         (WebCore::IDBCursorBackendImpl::prefetchContinueInternal):
1463
1464 2011-12-16  Yosifumi Inoue  <yosin@chromium.org>
1465
1466         [Forms] The "maxlength" attribute on "textarea" tag miscounts hard newlines
1467         https://bugs.webkit.org/show_bug.cgi?id=74686
1468
1469         Reviewed by Kent Tamura.
1470
1471         This patch counts LF in textarea value as two for LF to CRLF conversion on submission.
1472
1473         No new tests. Existing tests cover all changes.
1474
1475         * html/HTMLTextAreaElement.cpp:
1476         (WebCore::computeLengthForSubmission): Count LF as 2 for CR LF conversion on submission.
1477         (WebCore::HTMLTextAreaElement::handleBeforeTextInsertedEvent): Use computeLengthForSubmission instead of numGraphemeClusters.
1478         (WebCore::HTMLTextAreaElement::tooLong): Use computeLengthForSubmission instead of numGraphemeClusters.
1479
1480 2011-12-16  Hajime Morrita  <morrita@chromium.org>
1481
1482         Unreviewed, rolling out r103045.
1483         http://trac.webkit.org/changeset/103045
1484         https://bugs.webkit.org/show_bug.cgi?id=74590
1485
1486         Breaks select-script-onchange.html on Chromium Windows
1487
1488         * html/HTMLSelectElement.cpp:
1489         (WebCore::HTMLSelectElement::typeAheadFind):
1490
1491 2011-12-16  Carlos Garcia Campos  <cgarcia@igalia.com>
1492
1493         Unreviewed. Fix make distcheck.
1494
1495         * GNUmakefile.list.am: Add missing header file.
1496
1497 2011-12-16  Yosifumi Inoue  <yosin@chromium.org>
1498
1499         [Forms] Selection change by type-ahead doesn't fire 'change' event
1500         https://bugs.webkit.org/show_bug.cgi?id=74590
1501
1502         Reviewed by Kent Tamura.
1503
1504         Fire onchange even for type ahead selection.
1505
1506         Test: fast/forms/select/menulist-type-ahead-find.html
1507
1508         * html/HTMLSelectElement.cpp:
1509         (WebCore::HTMLSelectElement::typeAheadFind): Add DispatchChangeEvent when
1510         calling selectOption method.
1511
1512 2011-12-16  Andreas Kling  <kling@webkit.org>
1513
1514         Don't call Document::body() twice in the same function.
1515         <http://webkit.org/b/74683>
1516
1517         Reviewed by Dan Bernstein.
1518
1519         Document::body() is O(n), so we should avoid calling it multiple
1520         times unnecessarily.
1521
1522         * dom/Document.cpp:
1523         (WebCore::Document::updateLayoutIgnorePendingStylesheets):
1524
1525 2011-12-16  Daniel Sievers  <sievers@chromium.org>
1526
1527         [Chromium] Add trace events for decoding and drawing images.
1528         https://bugs.webkit.org/show_bug.cgi?id=74547
1529
1530         Reviewed by James Robinson.
1531
1532         * platform/graphics/skia/ImageSkia.cpp:
1533         (WebCore::drawResampledBitmap):
1534         (WebCore::paintSkBitmap):
1535         (WebCore::Image::drawPattern):
1536         * platform/graphics/skia/NativeImageSkia.cpp:
1537         (WebCore::NativeImageSkia::resizedBitmap):
1538         * platform/image-decoders/bmp/BMPImageDecoder.cpp:
1539         (WebCore::BMPImageDecoder::decode):
1540         * platform/image-decoders/gif/GIFImageDecoder.cpp:
1541         (WebCore::GIFImageDecoder::decode):
1542         * platform/image-decoders/ico/ICOImageDecoder.cpp:
1543         (WebCore::ICOImageDecoder::decode):
1544         * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
1545         (WebCore::JPEGImageDecoder::decode):
1546         * platform/image-decoders/png/PNGImageDecoder.cpp:
1547         (WebCore::PNGImageDecoder::decode):
1548         * platform/image-decoders/webp/WEBPImageDecoder.cpp:
1549         (WebCore::WEBPImageDecoder::decode):
1550
1551 2011-12-15  Martin Robinson  <mrobinson@igalia.com>
1552
1553         Fix 'make dist' in preparation for the GTK+ release.
1554
1555         * GNUmakefile.list.am: Add missing header.
1556
1557 2011-12-15  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>
1558
1559         Don't create empty files on error.
1560         https://bugs.webkit.org/show_bug.cgi?id=74373
1561
1562         Reviewed by Ryosuke Niwa.
1563
1564         * css/makeprop.pl:
1565         * css/makevalues.pl:
1566         * make-hash-tools.pl:
1567
1568 2011-12-15  Yongjun Zhang  <yongjun_zhang@apple.com>
1569
1570         PODIntervalTree takes 1.7MB memory on www.nytimes.com.
1571         https://bugs.webkit.org/show_bug.cgi?id=73712
1572
1573         Reviewed by Kenneth Russell.
1574
1575         For a RenderBlock which has floating objects inside, we will create a PODIntervalTree and a PODArena with
1576         at least one 16KB chunk.  A page could have a large number of such RenderBlocks and they could take huge
1577         amount of memory.  To fix that, we can create a shared PODArena in the root RenderView.  Instead of having
1578         their own PODArena, each RenderBlock with floating objects could share this PODArena to reduce memory consumption.
1579
1580         The shared PODArena could grow unboundedly if we keep removing and adding floating objects.  We can fix that
1581         by reusing the freed memory in each chunk.  However, a PODArena could allocate objects of different sizes and
1582         it would be complex to keep track of the size for each allocation in PODArena.  To address that, this patch
1583         added class PODFreeListArena<T> which only allocates objects of type T (hence the same size).  We can then use a
1584         free list to track freed nodes inside the chunk and reuse the free nodes in future allocations.
1585
1586         Manually tested on nytimes.com and the heap consumption of PODIntervalTree reduced from 1.7MB to 16KB. Performance
1587         doesn't regress on test PerformanceTests/Layout/floats.html.
1588
1589         * WebCore.xcodeproj/project.pbxproj: add new header file PODFreeListArena.h.
1590         * platform/PODArena.h:
1591         (WebCore::PODArena::~PODArena): change dtor to virtual.
1592         (WebCore::PODArena::Chunk::~Chunk): ditto.
1593         * platform/PODFreeListArena.h: Added.
1594         (WebCore::PODFreeListArena::create): 
1595         (WebCore::PODFreeListArena::allocateObject): allocate an object.
1596         (WebCore::PODFreeListArena::freeObject): free an object, find the right chunk and update its free list.
1597         (WebCore::PODFreeListArena::allocate): allocate memory from the free list or current chunk.
1598         (WebCore::PODFreeListArena::FreeListChunk::FreeListChunk): add m_freeList to track freed cells.
1599         (WebCore::PODFreeListArena::FreeListChunk::allocate): reuse a free cell if there is one.
1600         (WebCore::PODFreeListArena::FreeListChunk::free): make the memory taken by this object is free, and link it to m_freeList.
1601         (WebCore::PODFreeListArena::FreeListChunk::contains): check if a pointer is inside this chunk.
1602         (WebCore::PODFreeListArena::FreeListChunk::hasFreeList): check if this chunk has free cells.
1603         * platform/PODRedBlackTree.h:
1604         (WebCore::PODRedBlackTree::PODRedBlackTree): take PODFreeListArena instead of PODArena, since nodes of a particular PODRedBlackTree
1605             is always of the same size.
1606         (WebCore::PODRedBlackTree::clear): mark all nodes before clearing the tree.
1607         (WebCore::PODRedBlackTree::initIfNeeded): add initIfNeeded to take an external PODFreeListArena.
1608         (WebCore::PODRedBlackTree::add):
1609         (WebCore::PODRedBlackTree::deleteNode): mark the node free in arena after it is removed from the tree.
1610         (WebCore::PODRedBlackTree::markFree): mark all node free in the tree.
1611         * rendering/RenderBlock.cpp:
1612         (WebCore::RenderBlock::insertFloatingObject):
1613         (WebCore::RenderBlock::addOverhangingFloats):
1614         (WebCore::RenderBlock::addIntrudingFloats):
1615         (WebCore::RenderBlock::FloatingObjects::computePlacedFloatsTree):  passing the shared PODFreeListArena to m_placedFloatsTree.
1616         * rendering/RenderBlock.h:
1617         (WebCore::RenderBlock::FloatingObjects::FloatingObjects):
1618         * rendering/RenderView.cpp:
1619         (WebCore::RenderView::intervalArena): create the shared PODFreeListArena lazily.
1620         * rendering/RenderView.h:
1621
1622 2011-12-15  Tony Chang  <tony@chromium.org>
1623
1624         Unreviewed, rollout r102825 because it didn't improve performance.
1625         https://bugs.webkit.org/show_bug.cgi?id=74622
1626
1627         * css/CSSStyleSelector.cpp:
1628         (WebCore::CSSStyleSelector::styleForElement):
1629         (WebCore::CSSStyleSelector::pseudoStyleForElement):
1630
1631 2011-12-15  Ryosuke Niwa  <rniwa@webkit.org>
1632
1633         sizeof(RenderObject) is 32 instead of 24 on Windows
1634         https://bugs.webkit.org/show_bug.cgi?id=74646
1635
1636         Reviewed by Darin Adler.
1637
1638         Make all bitfields in RenderObject to unsigned and wrap them around by RenderObjectBitfields.
1639         Also add a compilation time assertion to make sure we won't grow RenderObject's size unintentionally.
1640
1641         * rendering/RenderBlock.cpp:
1642         (WebCore::RenderBlock::layoutBlock):
1643         (WebCore::RenderBlock::layoutBlockChild):
1644         (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
1645         (WebCore::RenderBlock::layoutColumns):
1646         * rendering/RenderBlock.h:
1647         (WebCore::RenderBlock::FloatWithRect::FloatWithRect):
1648         * rendering/RenderObject.cpp:
1649         (WebCore::SameSizeAsRenderObject::~SameSizeAsRenderObject):
1650         (WebCore::RenderObject::RenderObject):
1651         (WebCore::RenderObject::markContainingBlocksForLayout):
1652         (WebCore::RenderObject::setPreferredLogicalWidthsDirty):
1653         (WebCore::RenderObject::invalidateContainerPreferredLogicalWidths):
1654         (WebCore::RenderObject::styleWillChange):
1655         (WebCore::RenderObject::styleDidChange):
1656         (WebCore::RenderObject::willBeDestroyed):
1657         (WebCore::RenderObject::updateDragState):
1658         * rendering/RenderObject.h:
1659         (WebCore::RenderObject::hasCounterNodeMap):
1660         (WebCore::RenderObject::setHasCounterNodeMap):
1661         (WebCore::RenderObject::childrenInline):
1662         (WebCore::RenderObject::setChildrenInline):
1663         (WebCore::RenderObject::hasColumns):
1664         (WebCore::RenderObject::setHasColumns):
1665         (WebCore::RenderObject::inRenderFlowThread):
1666         (WebCore::RenderObject::setInRenderFlowThread):
1667         (WebCore::RenderObject::isAnonymous):
1668         (WebCore::RenderObject::setIsAnonymous):
1669         (WebCore::RenderObject::isAnonymousBlock):
1670         (WebCore::RenderObject::isFloating):
1671         (WebCore::RenderObject::isPositioned):
1672         (WebCore::RenderObject::isRelPositioned):
1673         (WebCore::RenderObject::isText):
1674         (WebCore::RenderObject::isBox):
1675         (WebCore::RenderObject::isInline):
1676         (WebCore::RenderObject::isDragging):
1677         (WebCore::RenderObject::isReplaced):
1678         (WebCore::RenderObject::isHorizontalWritingMode):
1679         (WebCore::RenderObject::hasLayer):
1680         (WebCore::RenderObject::hasBoxDecorations):
1681         (WebCore::RenderObject::needsLayout):
1682         (WebCore::RenderObject::selfNeedsLayout):
1683         (WebCore::RenderObject::needsPositionedMovementLayout):
1684         (WebCore::RenderObject::needsPositionedMovementLayoutOnly):
1685         (WebCore::RenderObject::posChildNeedsLayout):
1686         (WebCore::RenderObject::needsSimplifiedNormalFlowLayout):
1687         (WebCore::RenderObject::normalChildNeedsLayout):
1688         (WebCore::RenderObject::preferredLogicalWidthsDirty):
1689         (WebCore::RenderObject::hasOverflowClip):
1690         (WebCore::RenderObject::hasTransform):
1691         (WebCore::RenderObject::node):
1692         (WebCore::RenderObject::setPositioned):
1693         (WebCore::RenderObject::setRelPositioned):
1694         (WebCore::RenderObject::setFloating):
1695         (WebCore::RenderObject::setInline):
1696         (WebCore::RenderObject::setHasBoxDecorations):
1697         (WebCore::RenderObject::setIsText):
1698         (WebCore::RenderObject::setIsBox):
1699         (WebCore::RenderObject::setReplaced):
1700         (WebCore::RenderObject::setHorizontalWritingMode):
1701         (WebCore::RenderObject::setHasOverflowClip):
1702         (WebCore::RenderObject::setHasLayer):
1703         (WebCore::RenderObject::setHasTransform):
1704         (WebCore::RenderObject::setHasReflection):
1705         (WebCore::RenderObject::hasReflection):
1706         (WebCore::RenderObject::setHasMarkupTruncation):
1707         (WebCore::RenderObject::hasMarkupTruncation):
1708         (WebCore::RenderObject::selectionState):
1709         (WebCore::RenderObject::setSelectionState):
1710         (WebCore::RenderObject::hasSelectedChildren):
1711         (WebCore::RenderObject::isMarginBeforeQuirk):
1712         (WebCore::RenderObject::isMarginAfterQuirk):
1713         (WebCore::RenderObject::setMarginBeforeQuirk):
1714         (WebCore::RenderObject::setMarginAfterQuirk):
1715         (WebCore::RenderObject::everHadLayout):
1716         (WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
1717         (WebCore::RenderObject::RenderObjectBitfields::selectionState):
1718         (WebCore::RenderObject::RenderObjectBitfields::setSelectionState):
1719         (WebCore::RenderObject::setNeedsPositionedMovementLayout):
1720         (WebCore::RenderObject::setNormalChildNeedsLayout):
1721         (WebCore::RenderObject::setPosChildNeedsLayout):
1722         (WebCore::RenderObject::setNeedsSimplifiedNormalFlowLayout):
1723         (WebCore::RenderObject::setPaintBackground):
1724         (WebCore::RenderObject::setIsDragging):
1725         (WebCore::RenderObject::setEverHadLayout):
1726         (WebCore::RenderObject::setNeedsLayout):
1727         (WebCore::RenderObject::setChildNeedsLayout):
1728         * rendering/RenderObjectChildList.cpp:
1729         (WebCore::RenderObjectChildList::removeChildNode):
1730         * rendering/svg/RenderSVGContainer.cpp:
1731         (WebCore::RenderSVGContainer::layout):
1732
1733 2011-12-15  Wei Charles  <charles.wei@torchmobile.com.cn>
1734
1735         [BlackBerry] Upstream BlackBerry porting of pluginView
1736         https://bugs.webkit.org/show_bug.cgi?id=73397
1737
1738         Reviewed by Daniel Bates.
1739
1740         No new tests for now.
1741
1742         * plugins/blackberry/PluginViewBlackBerry.cpp: Added.
1743
1744 2011-12-15  Joshua Bell  <jsbell@chromium.org>
1745
1746         IndexedDB: Can't pass DOMStringList to IDBDatabase.transaction()
1747         https://bugs.webkit.org/show_bug.cgi?id=74452
1748
1749         Reviewed by Adam Barth.
1750
1751         V8 code generator generated checks for DOMStringList arguments, then
1752         deferred to a function that only handled array inputs. This previously
1753         worked for IndexedDB because it would fall into a now-removed default
1754         handler.
1755
1756         Modified storage/indexeddb/transaction-basics.html to test this.
1757
1758         * bindings/v8/V8Binding.cpp:
1759         (WebCore::v8ValueToWebCoreDOMStringList):
1760
1761 2011-12-15  Adam Klein  <adamk@chromium.org>
1762
1763         Make Element::setAttributeInternal inline in an attempt to avoid function call overhead
1764         https://bugs.webkit.org/show_bug.cgi?id=74638
1765
1766         Reviewed by Andreas Kling.
1767
1768         In r102695, I factored common code in setAttribute into
1769         Element::setAttributeInternal. This may have caused a perf regression
1770         due to the extra function call, which inlining should eliminate.
1771
1772         Running Dromaeo locally suggests that this will improve performance
1773         by ~9% on the "dom-attr element.property = value" test (which assigns
1774         a value to an element's id).
1775
1776         * dom/Element.cpp:
1777         (WebCore::Element::setAttributeInternal):
1778
1779 2011-12-15  Mary Wu  <mary.wu@torchmobile.com.cn>
1780
1781         Upstream FileSystemBlackBerry.cpp into WebCore/platform/blackberry
1782         https://bugs.webkit.org/show_bug.cgi?id=74491
1783
1784         Reviewed by Rob Buis.
1785
1786         We are using POSIX porting of FileSystem, so here only implement other 
1787         necessary functions.
1788
1789         Initial upstream, no new tests.
1790
1791         * platform/blackberry/FileSystemBlackBerry.cpp: Added.
1792         (WebCore::homeDirectoryPath):
1793         (WebCore::fileSystemRepresentation):
1794         (WebCore::unloadModule):
1795         (WebCore::openTemporaryFile):
1796
1797 2011-12-15  Adrienne Walker  <enne@google.com>
1798
1799         [chromium] Clean up unnecessary leaf functions in GraphicsLayerChromium
1800         https://bugs.webkit.org/show_bug.cgi?id=74140
1801
1802         Reviewed by James Robinson.
1803
1804         Tested by existing compositor layout tests.
1805
1806         This is a follow-on cleanup to r102196, which made some of these
1807         functions less useful than they had been in the past.
1808
1809         * platform/graphics/chromium/GraphicsLayerChromium.cpp:
1810         (WebCore::GraphicsLayerChromium::setContentsOpaque):
1811         (WebCore::GraphicsLayerChromium::setBackfaceVisibility):
1812         (WebCore::GraphicsLayerChromium::updateLayerPreserves3D):
1813         * platform/graphics/chromium/GraphicsLayerChromium.h:
1814
1815 2011-12-15  Kenneth Russell  <kbr@google.com>
1816
1817         Unreviewed, rolling out r103000.
1818         http://trac.webkit.org/changeset/103000
1819         https://bugs.webkit.org/show_bug.cgi?id=74658
1820
1821         Does not handle text/plain documents correctly.
1822
1823         * html/parser/HTMLTokenizer.cpp:
1824         * html/parser/HTMLTokenizer.h:
1825         * html/parser/HTMLTreeBuilder.cpp:
1826         * html/parser/HTMLTreeBuilder.h:
1827         * xml/parser/MarkupTokenizerBase.h:
1828
1829 2011-12-15  James Robinson  <jamesr@chromium.org>
1830
1831         [chromium] Set the CCLayerTreeHost pointer on LayerChromium instances eagerly
1832         https://bugs.webkit.org/show_bug.cgi?id=74477
1833
1834         Reviewed by Kenneth Russell.
1835
1836         This enforces that the m_layerTreeHost pointer on LayerChromium instances is always up to date, instead of
1837         lazily setting it in the paintContents loop. There are two invariants:
1838         1.) If a LayerChromium is the root layer of a CCLayerTreeHost, or is reachable via the children, mask, or
1839         replica pointers from the root layer of a CCLayerTreeHost, then that LayerChromium's m_layerTreeHost pointer
1840         refers to that CCLayerTreeHost
1841         2.) If a LayerChromium is not a root layer or reachable from a root layer of any CCLayerTreeHost, its
1842         CCLayerTreeHost pointer is nil.
1843
1844         Covered by several new layout tests in LayerChromiumTest
1845
1846         * platform/graphics/chromium/LayerChromium.cpp:
1847         (WebCore::LayerChromium::setLayerTreeHost):
1848         (WebCore::LayerChromium::setParent):
1849         (WebCore::LayerChromium::setMaskLayer):
1850         (WebCore::LayerChromium::setReplicaLayer):
1851         * platform/graphics/chromium/LayerChromium.h:
1852         * platform/graphics/chromium/TiledLayerChromium.cpp:
1853         (WebCore::TiledLayerChromium::createTile):
1854         * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
1855         (WebCore::CCLayerTreeHost::setRootLayer):
1856         (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface):
1857         (WebCore::CCLayerTreeHost::paintLayerContents):
1858         * platform/graphics/chromium/cc/CCLayerTreeHost.h:
1859
1860 2011-12-15  Sheriff Bot  <webkit.review.bot@gmail.com>
1861
1862         Unreviewed, rolling out r102652 and r102717.
1863         http://trac.webkit.org/changeset/102652
1864         http://trac.webkit.org/changeset/102717
1865         https://bugs.webkit.org/show_bug.cgi?id=74674
1866
1867         Broke too many webs. (Requested by kling on #webkit).
1868
1869         * WebCore.exp.in:
1870
1871 2011-12-15  Anders Carlsson  <andersca@apple.com>
1872
1873         Lazily create the scrolling coordinator and add a setting for enabling it
1874         https://bugs.webkit.org/show_bug.cgi?id=74667
1875
1876         Reviewed by Darin Adler.
1877
1878         * WebCore.xcodeproj/project.pbxproj:
1879         Make ScrollingCoordinator.h a private header so it can be used in WebKit.
1880         * page/Page.cpp:
1881         (WebCore::Page::Page):
1882         Don't create the scrolling coordinator.
1883
1884         (WebCore::Page::~Page):
1885         Check for a null scrolling coordinator.
1886
1887         (WebCore::Page::scrollingCoordinator):
1888         Create the scrolling coordinator lazily.
1889
1890         * page/Settings.cpp:
1891         (WebCore::Settings::Settings):
1892         * page/Settings.h:
1893         (WebCore::Settings::setScrollingCoordinatorEnabled):
1894         (WebCore::Settings::scrollingCoordinatorEnabled):
1895         Add a setting for enabling the scrolling coordinator.
1896
1897         * rendering/RenderLayerBacking.cpp:
1898         (WebCore::RenderLayerBacking::RenderLayerBacking):
1899         Use a tile cache layer for the main frame when the scrolling coordinator is neabled.
1900
1901 2011-12-15  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
1902
1903         Unreviewed. Fix build break when data-transfer-items is enabled.
1904
1905         * platform/efl/ClipboardEfl.cpp:
1906         (WebCore::ClipboardEfl::items):
1907         * platform/efl/ClipboardEfl.h:
1908
1909 2011-12-15  Adam Barth  <abarth@webkit.org>
1910
1911         <ruby><div><p><rp> parses incorrectly
1912         https://bugs.webkit.org/show_bug.cgi?id=74668
1913
1914         Reviewed by Darin Adler.
1915
1916         This patch updates our implementation to match a change to the HTML5
1917         specification regarding how <ruby> elements parse.  Previously, <rp>
1918         and similar tags used to pop the stack up to the <ruby> element.  Now
1919         the popping does not occur.
1920
1921         Tests: html5lib/runner.html
1922
1923         * html/parser/HTMLTreeBuilder.cpp:
1924
1925 2011-12-15  Daniel Sievers  <sievers@chromium.org>
1926
1927         [Chromium] Avoid strdup() for extra argument when tracing is disabled.
1928         https://bugs.webkit.org/show_bug.cgi?id=74637
1929
1930         Reviewed by James Robinson.
1931
1932         * platform/chromium/TraceEvent.h:
1933         (WebCore::internal::ScopeTracer::ScopeTracer):
1934
1935 2011-12-15  Rafael Weinstein  <rafaelw@chromium.org>
1936
1937         [MutationObservers] Add a document-level flag that can trivially be checked to avoid doing unnessary work if mutation observers absent
1938         https://bugs.webkit.org/show_bug.cgi?id=74641
1939
1940         Reviewed by Ojan Vafai.
1941
1942         This patch adds a byte of flags to Document, of which three bits are used to signal if any
1943         node owned by the document has a Mutation Observer of the given type. This is used to
1944         reduce the cost of discovering there are none to a single (inlined) method call and bit-check.
1945         Also, a similar byte of flags which was used to optimize a particular case when mutation observers
1946         are present has been removed, with the reasoning that we should first focus on minimizing impact on
1947         the null-case before optimizing particular in-use cases.
1948
1949         Also, MutationObserverInterestGroup is broken out into its own file (which probably should have happened
1950         earlier, but now avoids a circular header dependency).
1951
1952         No tests needed. This patch is just a refactor.
1953
1954         * CMakeLists.txt:
1955         * GNUmakefile.list.am:
1956         * Target.pri:
1957         * WebCore.gypi:
1958         * WebCore.vcproj/WebCore.vcproj:
1959         * WebCore.xcodeproj/project.pbxproj:
1960         * css/CSSMutableStyleDeclaration.cpp:
1961         * dom/CharacterData.cpp:
1962         * dom/ChildListMutationScope.cpp:
1963         * dom/Document.cpp:
1964         (WebCore::Document::Document):
1965         * dom/Document.h:
1966         (WebCore::Document::hasMutationObserversOfType):
1967         (WebCore::Document::hasMutationObservers):
1968         (WebCore::Document::addMutationObserverTypes):
1969         * dom/Element.cpp:
1970         * dom/MutationObserverInterestGroup.cpp: Added.
1971         (WebCore::MutationObserverInterestGroup::createIfNeeded):
1972         (WebCore::MutationObserverInterestGroup::MutationObserverInterestGroup):
1973         (WebCore::MutationObserverInterestGroup::isOldValueRequested):
1974         (WebCore::MutationObserverInterestGroup::enqueueMutationRecord):
1975         * dom/MutationObserverInterestGroup.h: Copied from Source/WebCore/dom/WebKitMutationObserver.h.
1976         (WebCore::MutationObserverInterestGroup::createForChildListMutation):
1977         (WebCore::MutationObserverInterestGroup::createForCharacterDataMutation):
1978         (WebCore::MutationObserverInterestGroup::createForAttributesMutation):
1979         (WebCore::MutationObserverInterestGroup::hasOldValue):
1980         * dom/Node.cpp:
1981         (WebCore::Node::didMoveToNewOwnerDocument):
1982         (WebCore::Node::getRegisteredMutationObserversOfType):
1983         (WebCore::Node::notifyMutationObserversNodeWillDetach):
1984         * dom/Node.h:
1985         * dom/WebKitMutationObserver.cpp:
1986         (WebCore::WebKitMutationObserver::observe):
1987         * dom/WebKitMutationObserver.h:
1988
1989 2011-12-15  Adam Barth  <abarth@webkit.org>
1990
1991         <!DOCTYPE html><pre>&#x0a;&#x0a;A</pre> doesn't parse correctly
1992         https://bugs.webkit.org/show_bug.cgi?id=74658
1993
1994         Reviewed by Darin Adler.
1995
1996         Previously, we handled skipping newlines after <pre> in the tokenizer,
1997         which isn't how the spec handles them.  Instead, the spec skips them in
1998         the tree builder.  This isn't usually observable, except in the case of
1999         an HTML entity.  In that case, the tokenzier sees '&' (because the
2000         entity hasn't been decoded yet), but the tree builder sees '\n' (the
2001         decoded entity).  This patch fixes the bug by more closely aligning our
2002         implementation with the spec.
2003
2004         Test: html5lib/runner.html
2005
2006         * html/parser/HTMLTokenizer.cpp:
2007         (WebCore::HTMLTokenizer::reset):
2008         (WebCore::HTMLTokenizer::nextToken):
2009         * html/parser/HTMLTokenizer.h:
2010         * html/parser/HTMLTreeBuilder.cpp:
2011         (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::skipAtMostOneLeadingNewline):
2012         (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
2013         (WebCore::HTMLTreeBuilder::processStartTagForInBody):
2014         (WebCore::HTMLTreeBuilder::processCharacterBuffer):
2015         * html/parser/HTMLTreeBuilder.h:
2016         * xml/parser/MarkupTokenizerBase.h:
2017
2018 2011-12-15  Kenneth Russell  <kbr@google.com>
2019
2020         Unreviewed, rolling out r102989.
2021         http://trac.webkit.org/changeset/102989
2022         https://bugs.webkit.org/show_bug.cgi?id=74580
2023
2024         Caused SHOULD NOT BE REACHED assertions in debug builds.
2025
2026         * css/CSSComputedStyleDeclaration.cpp:
2027         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
2028         * css/CSSPrimitiveValueMappings.h:
2029         (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
2030         (WebCore::CSSPrimitiveValue::operator EBoxAlignment):
2031         * css/CSSStyleSelector.cpp:
2032         (WebCore::CSSStyleSelector::applyProperty):
2033         * rendering/RenderDeprecatedFlexibleBox.cpp:
2034         (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
2035         (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
2036         * rendering/RenderFullScreen.cpp:
2037         (createFullScreenStyle):
2038         * rendering/style/RenderStyle.h:
2039         (WebCore::InheritedFlags::boxPack):
2040         (WebCore::InheritedFlags::setBoxAlign):
2041         (WebCore::InheritedFlags::setBoxPack):
2042         (WebCore::InheritedFlags::initialBoxPack):
2043         * rendering/style/RenderStyleConstants.h:
2044         * rendering/style/StyleDeprecatedFlexibleBoxData.h:
2045
2046 2011-12-15  Ryosuke Niwa  <rniwa@webkit.org>
2047
2048         Touch make_name.pl in an attempt to make Qt bots happy.
2049
2050         * dom/make_names.pl:
2051         (printNamesHeaderFile):
2052
2053 2011-12-15  Kentaro Hara  <haraken@chromium.org>
2054
2055         Unreviewed. Rebaselined run-bindings-tests results.
2056
2057         * bindings/scripts/test/JS/JSFloat64Array.cpp:
2058         * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
2059         * bindings/scripts/test/JS/JSTestObj.cpp:
2060
2061 2011-12-15  Luke Macpherson   <macpherson@chromium.org>
2062
2063         Separate box alignment and box pack values into separate enums.
2064         https://bugs.webkit.org/show_bug.cgi?id=74580
2065
2066         Reviewed by Darin Adler.
2067
2068         No new tests / refactoring only.
2069
2070         Separating these types cleans up the code by removing several assertions that
2071         values are in the correct ranges, as this is ensured by the type system.
2072
2073         * css/CSSComputedStyleDeclaration.cpp:
2074         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
2075         * css/CSSPrimitiveValueMappings.h:
2076         (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
2077         (WebCore::CSSPrimitiveValue::operator EBoxPack):
2078         (WebCore::CSSPrimitiveValue::operator EBoxAlignment):
2079         * css/CSSStyleSelector.cpp:
2080         (WebCore::CSSStyleSelector::applyProperty):
2081         * rendering/RenderDeprecatedFlexibleBox.cpp:
2082         (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
2083         (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
2084         * rendering/RenderFullScreen.cpp:
2085         (createFullScreenStyle):
2086         * rendering/style/RenderStyle.h:
2087         (WebCore::InheritedFlags::boxPack):
2088         (WebCore::InheritedFlags::setBoxAlign):
2089         (WebCore::InheritedFlags::setBoxPack):
2090         (WebCore::InheritedFlags::initialBoxPack):
2091         * rendering/style/RenderStyleConstants.h:
2092         * rendering/style/StyleDeprecatedFlexibleBoxData.h:
2093
2094 2011-12-15  Kentaro Hara  <haraken@chromium.org>
2095
2096         REGRESSION(r102663): generate-bindings.pl runs every time
2097         https://bugs.webkit.org/show_bug.cgi?id=74481
2098
2099         Reviewed by Adam Barth.
2100
2101         See the comment #1 of bug 74481 for the cause of this bug.
2102
2103         This patch fixes generate-bindings.pl so that it generates .h and .cpp files
2104         even for IDL files that do not need .h and .cpp files. This is just to prevent
2105         build scripts from trying to generate .h and .cpp files at every build.
2106
2107         No new tests. No change in behavior.
2108
2109         * bindings/scripts/generate-bindings.pl:
2110         (generateEmptyHeaderAndCpp): Generates .h and .cpp files for IDL files
2111         that do not need .h and .cpp files.
2112         * bindings/scripts/test/CPP/CPPTestSupplemental.cpp: Added.
2113         * bindings/scripts/test/CPP/CPPTestSupplemental.h: Added.
2114         * bindings/scripts/test/GObject/GObjectTestSupplemental.cpp: Added.
2115         * bindings/scripts/test/GObject/GObjectTestSupplemental.h: Added.
2116         * bindings/scripts/test/JS/JSTestSupplemental.cpp: Added.
2117         * bindings/scripts/test/JS/JSTestSupplemental.h: Added.
2118         * bindings/scripts/test/ObjC/ObjCTestSupplemental.cpp: Added.
2119         * bindings/scripts/test/ObjC/ObjCTestSupplemental.h: Added.
2120         * bindings/scripts/test/V8/V8TestSupplemental.cpp: Added.
2121         * bindings/scripts/test/V8/V8TestSupplemental.h: Added.
2122
2123 2011-12-15  Jarred Nicholls  <jarred@sencha.com>
2124
2125         Unreviewed build fix. Mac build broken when CSS Filters enabled.
2126         Needed to move Filter headers out as private headers in WebCore.framework.
2127
2128         * WebCore.xcodeproj/project.pbxproj:
2129
2130 2011-12-15  Eric Seidel  <eric@webkit.org>
2131
2132         WebCore has two (disconnected) ways to keep track of updated widgets, should be unified
2133         https://bugs.webkit.org/show_bug.cgi?id=74367
2134
2135         Reviewed by Adam Barth.
2136
2137         It seems the FrameView updateWidgets set is needed for now,
2138         so just making FrameView::addWidgetToUpdate mark the DOM node
2139         as needing a widget update and later when it goes to call
2140         updateWidget() checking first if it needs an update.
2141
2142         No new tests, just adding an assert.
2143
2144         * html/HTMLEmbedElement.cpp:
2145         (WebCore::HTMLEmbedElement::updateWidget):
2146         * html/HTMLObjectElement.cpp:
2147         (WebCore::HTMLObjectElement::updateWidget):
2148         * html/HTMLPlugInImageElement.h:
2149         (WebCore::HTMLPlugInImageElement::needsWidgetUpdate):
2150         (WebCore::HTMLPlugInImageElement::setNeedsWidgetUpdate):
2151         * page/FrameView.cpp:
2152         (WebCore::FrameView::addWidgetToUpdate):
2153         (WebCore::FrameView::updateWidget):
2154
2155 2011-12-15  Alexandru Chiculita  <achicu@adobe.com>
2156
2157         Windows project file is broken. It has a missing </File> enclosing tag
2158         https://bugs.webkit.org/show_bug.cgi?id=74632
2159
2160         Reviewed by Anders Carlsson.
2161
2162         No new tests, just fixing the project file.
2163
2164         * WebCore.vcproj/WebCore.vcproj:
2165
2166 2011-12-15  Adam Barth  <abarth@webkit.org>
2167
2168         <table><tr><td><svg><desc><td> parses incorrectly
2169         https://bugs.webkit.org/show_bug.cgi?id=68106
2170
2171         Reviewed by Eric Seidel.
2172
2173         This patch updates our implementation of the HTML5 parser to account
2174         for recent changes in the spec.  The main change in this patch is to
2175         remove the "in foreign content" state from the tree builder.  Rather
2176         than maintaining this as a separate state, the parser now introspects
2177         on the stack of open elements to determine whether the parser is in
2178         foriegn content.  In the process, I've deleted some now-unused
2179         machinery in the tree builder.
2180
2181         Tested by the html5lib LayoutTests.  These tests show the progression
2182         in our spec compliance.
2183
2184         * html/parser/HTMLElementStack.cpp:
2185         * html/parser/HTMLElementStack.h:
2186         * html/parser/HTMLTreeBuilder.cpp:
2187         * html/parser/HTMLTreeBuilder.h:
2188         * mathml/mathattrs.in:
2189
2190 2011-12-15  Ryosuke Niwa  <rniwa@webkit.org>
2191
2192         m_hasCounterNodeMap and m_everHadLayout should be private to RenderObject
2193         https://bugs.webkit.org/show_bug.cgi?id=74645
2194
2195         Reviewed by Eric Seidel.
2196
2197         Made them private and added getters and setters as needed.
2198
2199         * rendering/RenderCounter.cpp:
2200         (WebCore::makeCounterNode):
2201         (WebCore::RenderCounter::destroyCounterNodes):
2202         (WebCore::updateCounters):
2203         (WebCore::RenderCounter::rendererStyleChanged):
2204         (showCounterRendererTree):
2205         * rendering/RenderFlowThread.cpp:
2206         (WebCore::RenderFlowThread::layout):
2207         * rendering/RenderObject.h:
2208         (WebCore::RenderObject::hasCounterNodeMap):
2209         (WebCore::RenderObject::setHasCounterNodeMap):
2210         (WebCore::RenderObject::everHadLayout):
2211         * rendering/svg/RenderSVGForeignObject.cpp:
2212         (WebCore::RenderSVGForeignObject::layout):
2213         * rendering/svg/RenderSVGImage.cpp:
2214         (WebCore::RenderSVGImage::layout):
2215         * rendering/svg/RenderSVGResourceContainer.cpp:
2216         (WebCore::RenderSVGResourceContainer::layout):
2217         * rendering/svg/RenderSVGResourceMarker.cpp:
2218         (WebCore::RenderSVGResourceMarker::layout):
2219         * rendering/svg/RenderSVGRoot.cpp:
2220         (WebCore::RenderSVGRoot::layout):
2221         * rendering/svg/RenderSVGShape.cpp:
2222         (WebCore::RenderSVGShape::layout):
2223         * rendering/svg/RenderSVGText.cpp:
2224         (WebCore::RenderSVGText::layout):
2225
2226 2011-12-15  Vsevolod Vlasov  <vsevik@chromium.org>
2227
2228         Not able to navigate the Resource tab options properly with arrow keys after adding the sticky-notes.
2229         https://bugs.webkit.org/show_bug.cgi?id=72013
2230
2231         Reviewed by Pavel Feldman.
2232
2233         * inspector/front-end/DatabaseQueryView.js:
2234         (WebInspector.DatabaseQueryView):
2235         (WebInspector.DatabaseQueryView.prototype._messagesClicked):
2236         * inspector/front-end/ResourcesPanel.js:
2237         (WebInspector.DatabaseTreeElement.prototype.onexpand):
2238
2239 2011-12-15  Anders Carlsson  <andersca@apple.com>
2240
2241         Add ScrollingCoordinator class and ENABLE_THREADED_SCROLLING define
2242         https://bugs.webkit.org/show_bug.cgi?id=74639
2243
2244         Reviewed by Andreas Kling.
2245
2246         Add a ScrollingCoordinator class and make it a member of Page. Tear it down
2247         when the page goes away.
2248
2249         * WebCore.xcodeproj/project.pbxproj:
2250         * page/Page.cpp:
2251         (WebCore::Page::Page):
2252         (WebCore::Page::~Page):
2253         * page/Page.h:
2254         (WebCore::Page::scrollingCoordinator):
2255         * page/ScrollingCoordinator.cpp: Added.
2256         (WebCore::ScrollingCoordinator::create):
2257         (WebCore::ScrollingCoordinator::ScrollingCoordinator):
2258         (WebCore::ScrollingCoordinator::~ScrollingCoordinator):
2259         (WebCore::ScrollingCoordinator::pageDestroyed):
2260         * page/ScrollingCoordinator.h: Added.
2261
2262 2011-12-15  Kenneth Russell  <kbr@google.com>
2263
2264         Rename WEBKIT_lose_context to WEBKIT_WEBGL_lose_context
2265         https://bugs.webkit.org/show_bug.cgi?id=71870
2266
2267         Reviewed by James Robinson.
2268
2269         Re-landing after original commit was rolled out.
2270
2271         Rename largely done with do-webcore-rename with a couple of
2272         necessary manual fixups. Ran WebGL layout tests.
2273
2274         * CMakeLists.txt:
2275         * DerivedSources.make:
2276         * DerivedSources.pri:
2277         * GNUmakefile.list.am:
2278         * Target.pri:
2279         * WebCore.gypi:
2280         * WebCore.xcodeproj/project.pbxproj:
2281         * bindings/js/JSWebGLRenderingContextCustom.cpp:
2282         (WebCore::toJS):
2283         * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
2284         (WebCore::toV8Object):
2285         * html/canvas/WebGLExtension.h:
2286         * html/canvas/WebGLLoseContext.cpp: Copied from Source/WebCore/html/canvas/WebKitLoseContext.cpp.
2287         (WebCore::WebGLLoseContext::WebGLLoseContext):
2288         (WebCore::WebGLLoseContext::~WebGLLoseContext):
2289         (WebCore::WebGLLoseContext::getName):
2290         (WebCore::WebGLLoseContext::create):
2291         (WebCore::WebGLLoseContext::loseContext):
2292         (WebCore::WebGLLoseContext::restoreContext):
2293         * html/canvas/WebGLLoseContext.h: Copied from Source/WebCore/html/canvas/WebKitLoseContext.h.
2294         * html/canvas/WebGLLoseContext.idl: Copied from Source/WebCore/html/canvas/WebKitLoseContext.idl.
2295         * html/canvas/WebGLRenderingContext.cpp:
2296         (WebCore::WebGLRenderingContext::getExtension):
2297         (WebCore::WebGLRenderingContext::getSupportedExtensions):
2298         (WebCore::WebGLRenderingContext::maybeRestoreContext):
2299         * html/canvas/WebGLRenderingContext.h:
2300         * html/canvas/WebKitLoseContext.cpp: Removed.
2301         * html/canvas/WebKitLoseContext.h: Removed.
2302         * html/canvas/WebKitLoseContext.idl: Removed.
2303
2304 2011-12-15  Brady Eidson  <beidson@apple.com>
2305
2306         https://bugs.webkit.org/show_bug.cgi?id=74631
2307         HTMLMediaElement should not register for document activation callbacks as it doesn't use them
2308
2309         Reviewed by Eric Carlson.
2310
2311         No new tests. (No behavior change, pruning useless code)
2312
2313         * html/HTMLMediaElement.cpp:
2314         (WebCore::HTMLMediaElement::HTMLMediaElement):
2315         (WebCore::HTMLMediaElement::~HTMLMediaElement):
2316         (WebCore::HTMLMediaElement::willMoveToNewOwnerDocument):
2317         (WebCore::HTMLMediaElement::didMoveToNewOwnerDocument):
2318
2319 2011-12-15  Eric Carlson  <eric.carlson@apple.com>
2320
2321         Text tracks should be treated differently according to their kind
2322         https://bugs.webkit.org/show_bug.cgi?id=72547
2323
2324         Reviewed by Sam Weinig.
2325
2326         Tests: media/track/track-default-attribute.html
2327                media/track/track-mode-not-changed-by-new-track.html
2328                media/track/track-mode-triggers-loading.html
2329
2330         * html/HTMLAudioElement.cpp:
2331         (WebCore::HTMLAudioElement::HTMLAudioElement): Add "createdByParser" parameter.
2332         (WebCore::HTMLAudioElement::create): Ditto.
2333         (WebCore::HTMLAudioElement::createForJSConstructor): Deal with constructor change.
2334         * html/HTMLAudioElement.h:
2335
2336         * html/HTMLMediaElement.cpp:
2337         (WebCore::HTMLMediaElement::HTMLMediaElement): Add "createdByParser" parameter. Initialize m_parsingInProgress.
2338         (WebCore::HTMLMediaElement::finishParsingChildren): Clear m_parsingInProgress. Schedule track
2339             loading if necessary.
2340         (WebCore::HTMLMediaElement::loadTimerFired): Call configureTextTracks not call scheduleLoad, 
2341             it just schedules the load timer again.
2342         (WebCore::HTMLMediaElement::prepareForLoad): Add all non-disabled track elements to a vector
2343             so we can prevent the media element's readyState from reaching HAVE_METADATA until the
2344             tracks are ready.
2345         (WebCore::HTMLMediaElement::textTracksAreReady): New. Return false unless all tracks that were
2346             not disabled when loading started have loaded or failed.
2347         (WebCore::HTMLMediaElement::textTrackReadyStateChanged): Call setReadyState when a track is
2348             stops loading.
2349         (WebCore::HTMLMediaElement::textTrackModeChanged): Trigger <track> loading when the mode
2350             changes to hidden or showing for the first time.
2351         (WebCore::HTMLMediaElement::setReadyState): Do not advance to HAVE_METADATA or higher while
2352             track elements are loading.
2353         (WebCore::HTMLMediaElement::addTrack): Removed.
2354         (WebCore::HTMLMediaElement::showingTrackWithSameKind): New.
2355         (WebCore::HTMLMediaElement::trackWasAdded):
2356         (WebCore::HTMLMediaElement::trackWillBeRemoved): Flag a track as unconfigured so it will be
2357             reconfigured if it is added to another element.
2358         (WebCore::HTMLMediaElement::userIsInterestedInThisLanguage): New.
2359         (WebCore::HTMLMediaElement::userIsInterestedInThisTrack): New. Consider user preferences.
2360         (WebCore::HTMLMediaElement::configureTextTrack): New. Configure a track as per the user's preferences.
2361         (WebCore::HTMLMediaElement::configureTextTracks): New. Configure all track elements.
2362         * html/HTMLMediaElement.h:
2363         * html/HTMLMediaElement.h:
2364
2365         * html/HTMLTagNames.in: Add constructorNeedsCreatedByParser to audio and video.
2366
2367         * html/HTMLTrackElement.cpp:
2368         (WebCore::HTMLTrackElement::HTMLTrackElement): Initialize m_hasBeenConfigured.
2369         * html/HTMLTrackElement.h:
2370         (WebCore::HTMLTrackElement::hasBeenConfigured):
2371         (WebCore::HTMLTrackElement::setHasBeenConfigured):
2372
2373         * html/HTMLVideoElement.cpp:
2374         (WebCore::HTMLVideoElement::HTMLVideoElement): Add "createdByParser" parameter.
2375         (WebCore::HTMLVideoElement::create): Ditto.
2376         * html/HTMLVideoElement.h:
2377
2378         * html/TextTrack.cpp:
2379         (WebCore::TextTrack::TextTrack): Initialize m_mode to DISABLED, not HIDDEN. Initialize m_showingByDefault.
2380         (WebCore::TextTrack::setMode): Clear the "showing by default" flag when a track's mode is
2381             explicitly set to SHOWING.
2382         (WebCore::TextTrack::mode): Return SHOWING whenever the "showing by default" flag is set.
2383         * html/TextTrack.h:
2384         (WebCore::TextTrack::showingByDefault):
2385         (WebCore::TextTrack::setShowingByDefault):
2386
2387         * html/TextTrackCue.cpp:
2388         (WebCore::TextTrackCue::isActive): Return false if a cue has no track, or if its track is disabled.
2389         (WebCore::TextTrackCue::setIsActive): Don't enable a cue if it has no track, or if its track
2390             is disabled.
2391
2392 2011-12-15  Brady Eidson  <beidson@apple.com>
2393
2394         Unreviewed, rolling out r102829.
2395         http://trac.webkit.org/changeset/102829
2396         https://bugs.webkit.org/show_bug.cgi?id=74533
2397
2398         Caused https://bugs.webkit.org/show_bug.cgi?id=74555
2399
2400         * html/HTMLPlugInImageElement.cpp:
2401         (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
2402         (WebCore::HTMLPlugInImageElement::willMoveToNewOwnerDocument):
2403         (WebCore::HTMLPlugInImageElement::didMoveToNewOwnerDocument):
2404         (WebCore::HTMLPlugInImageElement::documentWillBecomeInactive):
2405         (WebCore::HTMLPlugInImageElement::documentDidBecomeActive):
2406         * html/HTMLPlugInImageElement.h:
2407
2408 2011-12-15  James Simonsen  <simonjam@chromium.org>
2409
2410         [Navigation Timing] Use monotonicallyIncreasingTime() instead of currentTime()
2411         https://bugs.webkit.org/show_bug.cgi?id=58354
2412
2413         Reviewed by Pavel Feldman.
2414
2415         No new tests. Relies on existing webtiming-* tests.
2416
2417         * CMakeLists.txt:
2418         * GNUmakefile.list.am:
2419         * WebCore.gypi:
2420         * WebCore.pro:
2421         * WebCore.vcproj/WebCore.vcproj:
2422         * WebCore.xcodeproj/project.pbxproj:
2423         * dom/Document.cpp: Use monotonic times.
2424         (WebCore::Document::setReadyState):
2425         (WebCore::Document::finishedParsing):
2426         * inspector/InspectorInstrumentation.cpp:
2427         (WebCore::InspectorInstrumentation::didFinishLoadingImpl): Convert monotonicFinishTime to wall time if needed.
2428         * inspector/InspectorResourceAgent.cpp:
2429         (WebCore::buildObjectForTiming): Convert monotonic requestTime to wall time.
2430         (WebCore::buildObjectForResourceResponse): Plumbing for above.
2431         (WebCore::buildObjectForCachedResource): Ditto.
2432         (WebCore::InspectorResourceAgent::willSendRequest): Ditto.
2433         (WebCore::InspectorResourceAgent::didReceiveResponse): Ditto.
2434         (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache): Ditto.
2435         * loader/DocumentLoadTiming.cpp: Added.
2436         (WebCore::DocumentLoadTiming::DocumentLoadTiming):
2437         (WebCore::DocumentLoadTiming::setNavigationStart): Determine reference time and root reference time.
2438         (WebCore::DocumentLoadTiming::addRedirect): Moved logic from MainResourceLoader.
2439         (WebCore::DocumentLoadTiming::convertMonotonicTimeToDocumentTime): Helper to compute wall time from monotonic time.
2440         * loader/DocumentLoadTiming.h: Turned into class. Made times monotonic.
2441         (WebCore::DocumentLoadTiming::setUnloadEventStart):
2442         (WebCore::DocumentLoadTiming::setUnloadEventEnd):
2443         (WebCore::DocumentLoadTiming::setRedirectStart):
2444         (WebCore::DocumentLoadTiming::setRedirectEnd):
2445         (WebCore::DocumentLoadTiming::setFetchStart):
2446         (WebCore::DocumentLoadTiming::setResponseEnd):
2447         (WebCore::DocumentLoadTiming::setLoadEventStart):
2448         (WebCore::DocumentLoadTiming::setLoadEventEnd):
2449         (WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
2450         (WebCore::DocumentLoadTiming::navigationStart):
2451         (WebCore::DocumentLoadTiming::unloadEventStart):
2452         (WebCore::DocumentLoadTiming::unloadEventEnd):
2453         (WebCore::DocumentLoadTiming::redirectStart):
2454         (WebCore::DocumentLoadTiming::redirectEnd):
2455         (WebCore::DocumentLoadTiming::redirectCount):
2456         (WebCore::DocumentLoadTiming::fetchStart):
2457         (WebCore::DocumentLoadTiming::responseEnd):
2458         (WebCore::DocumentLoadTiming::loadEventStart):
2459         (WebCore::DocumentLoadTiming::loadEventEnd):
2460         (WebCore::DocumentLoadTiming::hasCrossOriginRedirect):
2461         (WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument):
2462         * loader/FrameLoader.cpp:
2463         (WebCore::FrameLoader::stopLoading):
2464         (WebCore::FrameLoader::commitProvisionalLoad):
2465         (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
2466         (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
2467         * loader/MainResourceLoader.cpp:
2468         (WebCore::MainResourceLoader::continueAfterNavigationPolicy):
2469         (WebCore::MainResourceLoader::willSendRequest): Moved logic to DocumentLoadTiming.
2470         (WebCore::MainResourceLoader::didReceiveData): Use monotonic time.
2471         (WebCore::MainResourceLoader::didFinishLoading): Ditto.
2472         (WebCore::MainResourceLoader::load):
2473         * page/DOMWindow.cpp:
2474         (WebCore::DOMWindow::dispatchLoadEvent):
2475         * page/DOMWindow.h: Removed dispatchTimedEvent. It doesn't really help in the new model.
2476         * page/PerformanceNavigation.cpp:
2477         (WebCore::PerformanceNavigation::redirectCount):
2478         * page/PerformanceTiming.cpp: Removed skew correction code. This should never happen now.
2479         (WebCore::PerformanceTiming::navigationStart):
2480         (WebCore::PerformanceTiming::unloadEventStart):
2481         (WebCore::PerformanceTiming::unloadEventEnd):
2482         (WebCore::PerformanceTiming::redirectStart):
2483         (WebCore::PerformanceTiming::redirectEnd):
2484         (WebCore::PerformanceTiming::fetchStart):
2485         (WebCore::PerformanceTiming::responseEnd):
2486         (WebCore::PerformanceTiming::domLoading):
2487         (WebCore::PerformanceTiming::domInteractive):
2488         (WebCore::PerformanceTiming::domContentLoadedEventStart):
2489         (WebCore::PerformanceTiming::domContentLoadedEventEnd):
2490         (WebCore::PerformanceTiming::domComplete):
2491         (WebCore::PerformanceTiming::loadEventStart):
2492         (WebCore::PerformanceTiming::loadEventEnd):
2493         (WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute): Used for ResourceLoadTiming.
2494         (WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds): Used for DocumentTiming and DocumentLoadTiming.
2495         * page/PerformanceTiming.h:
2496         * platform/network/ResourceLoadTiming.cpp:
2497         (WebCore::ResourceLoadTiming::convertResourceLoadTimeToDocumentTime):
2498         * platform/network/ResourceLoadTiming.h: Added helper function to convert to wall times. Added instructions for use.
2499
2500 2011-12-15  Martin Robinson  <mrobinson@igalia.com>
2501
2502         plugin crash
2503
2504         [GTK] Plugins sometimes crash WebKitGTK+ with Gdk-CRITICAL **: gdk_window_get_toplevel: assertion `GDK_IS_WINDOW (window)' failed
2505         https://bugs.webkit.org/show_bug.cgi?id=73719
2506
2507         Reviewed by Philippe Normand.
2508
2509         No new tests. It's difficult to test or reproduce this exact situation
2510         as it only occurs when running plugins under nspluginwrapper.
2511
2512         * plugins/gtk/PluginViewGtk.cpp:
2513         (WebCore::PluginView::platformGetValue): Properly handle when the plugin tries to
2514         get the window value when the GtkSocket is no longer realized.
2515
2516 2011-12-15  Martin Kosiba  <mkosiba@google.com>
2517
2518         Fix find on web pages with -webkit-user-select: none for Chromium
2519         https://bugs.webkit.org/show_bug.cgi?id=72281
2520
2521         Reviewed by Ryosuke Niwa.
2522
2523         Adding findStringAndScrollToVisible to Editor. This new method returns
2524         the new match as a range rather than modify the active selection.
2525
2526         Test: editing/text-iterator/findString-selection-disabled.html
2527
2528         * editing/Editor.cpp:
2529         (WebCore::Editor::findStringAndScrollToVisible):
2530         * editing/Editor.h:
2531
2532 2011-12-14  Anders Carlsson  <andersca@apple.com>
2533
2534         Add WTF::Function to wtf/Forward.h
2535         https://bugs.webkit.org/show_bug.cgi?id=74576
2536
2537         Reviewed by Adam Roben.
2538
2539         * bindings/scripts/CodeGeneratorJS.pm:
2540         (GenerateImplementation):
2541         Add a JSC:: qualifier to the Function flags to avoid ambiguities.
2542
2543 2011-12-15  Julien Chaffraix  <jchaffraix@webkit.org>
2544
2545         Hardware-backed renderLayer could avoid repainting during a positioned movement layout
2546         https://bugs.webkit.org/show_bug.cgi?id=74370
2547
2548         Reviewed by Simon Fraser.
2549
2550         Tests: compositing/absolute-position-changed-in-composited-layer.html
2551                compositing/absolute-position-changed-with-composited-parent-layer.html
2552                compositing/fixed-position-changed-in-composited-layer.html
2553                compositing/fixed-position-changed-within-composited-parent-layer.html
2554
2555         To be able to properly skip repainting after a positioned movement layout only, we
2556         needed to add more state to the current |setNeedsFullRepaint| method. As part of that
2557         we refactored the callers and internal fields to better match the new meaning.
2558
2559         * rendering/RenderBoxModelObject.cpp:
2560         (WebCore::RenderBoxModelObject::styleDidChange):
2561         Explicitely gave the RepaintStatus to setRepaintStatus.
2562
2563         * rendering/RenderLayer.cpp:
2564         (WebCore::RenderLayer::RenderLayer):
2565         (WebCore::RenderLayer::removeOnlyThisLayer):
2566         Updated those function after the renamings.
2567
2568         (WebCore::RenderLayer::updateLayerPositions):
2569         Ditto. Also added a sholdRepaintAfterLayout check.
2570
2571         (WebCore::RenderLayer::shouldRepaintAfterLayout):
2572         Heart of the optimization, if we just did a positioned movement layout of composited RenderLayer,
2573         then don't repaint. All the other cases should still trigger a repaint.
2574
2575         * rendering/RenderLayer.h:
2576         (WebCore::RenderLayer::setRepaintStatus):
2577         Renamed setNeedsFullRepaint to setRepaintStatus. Also added a new enum RepaintStatus.
2578
2579         * rendering/RenderObject.cpp:
2580         (WebCore::RenderObject::setLayerNeedsFullRepaint):
2581         Updated after the renamings.
2582
2583         (WebCore::RenderObject::setLayerNeedsFullRepaintForPositionedMovementLayout):
2584         New method that pass a new value to the RenderLayer.
2585
2586         * rendering/RenderObject.h:
2587         (WebCore::RenderObject::setNeedsPositionedMovementLayout):
2588         Switched the call to the dedicated method.
2589
2590 2011-12-15  Antti Koivisto  <antti@apple.com>
2591
2592         Don't invoke CSSStyleSelector::pushParent before Text::recalcTextStyle
2593         https://bugs.webkit.org/show_bug.cgi?id=74575
2594
2595         Reviewed by Darin Adler.
2596         
2597         Text::recalcTextStyle never enters the style selector so pushing the state is not necessary
2598
2599         * dom/Element.cpp:
2600         (WebCore::Element::recalcStyle):
2601
2602 2011-12-15  Chris Marrin  <cmarrin@apple.com>
2603
2604         Fixed error in Target.pri.
2605
2606         Unreviewed.
2607
2608         * Target.pri:
2609
2610 2011-12-15  Alexander Pavlov  <apavlov@chromium.org>
2611
2612         Web Inspector: #hex colors are not highlighted in CSS files
2613         https://bugs.webkit.org/show_bug.cgi?id=74570
2614
2615         Reviewed by Pavel Feldman.
2616
2617         Drive by: highlight color keywords as colors, not as keywords.
2618
2619         * inspector/front-end/CSSKeywordCompletions.js:
2620         (WebInspector.CSSKeywordCompletions.colors):
2621         * inspector/front-end/SourceCSSTokenizer.js:
2622         (WebInspector.SourceCSSTokenizer):
2623         (WebInspector.SourceCSSTokenizer.prototype.nextToken):
2624         * inspector/front-end/SourceCSSTokenizer.re2js:
2625
2626 2011-12-14  Chris Marrin  <cmarrin@apple.com>
2627
2628         Hardware acceleration of W3C Filter Effects
2629         https://bugs.webkit.org/show_bug.cgi?id=68479
2630
2631         Reviewed by Simon Fraser.
2632
2633         Move FilterOperation(s) to platform/graphics/filters so it can be used to pass filter information 
2634         down to GraphicsLayer for hardware acceleration. This leaves the CustomFilterOperation subclass in
2635         rendering/style since it has dependencies outside platform. Some part of that class will
2636         eventually need to be down in platform.
2637
2638         * CMakeLists.txt:
2639         * GNUmakefile.list.am:
2640         * Target.pri:
2641         * WebCore.gypi:
2642         * WebCore.vcproj/WebCore.vcproj:
2643         * WebCore.xcodeproj/project.pbxproj:
2644         * platform/graphics/filters/FilterOperation.cpp: Renamed from Source/WebCore/rendering/style/FilterOperation.cpp.
2645         (WebCore::BasicColorMatrixFilterOperation::blend):
2646         (WebCore::BasicColorMatrixFilterOperation::passthroughAmount):
2647         (WebCore::BasicComponentTransferFilterOperation::blend):
2648         (WebCore::BasicComponentTransferFilterOperation::passthroughAmount):
2649         (WebCore::GammaFilterOperation::blend):
2650         (WebCore::BlurFilterOperation::blend):
2651         (WebCore::DropShadowFilterOperation::blend):
2652         * platform/graphics/filters/FilterOperation.h: Renamed from Source/WebCore/rendering/style/FilterOperation.h.
2653         (WebCore::FilterOperation::~FilterOperation):
2654         (WebCore::FilterOperation::operator!=):
2655         (WebCore::FilterOperation::blend):
2656         (WebCore::FilterOperation::getOperationType):
2657         (WebCore::FilterOperation::isSameType):
2658         (WebCore::FilterOperation::FilterOperation):
2659         (WebCore::PassthroughFilterOperation::create):
2660         (WebCore::PassthroughFilterOperation::operator==):
2661         (WebCore::PassthroughFilterOperation::PassthroughFilterOperation):
2662         (WebCore::ReferenceFilterOperation::create):
2663         (WebCore::ReferenceFilterOperation::reference):
2664         (WebCore::ReferenceFilterOperation::operator==):
2665         (WebCore::ReferenceFilterOperation::ReferenceFilterOperation):
2666         (WebCore::BasicColorMatrixFilterOperation::create):
2667         (WebCore::BasicColorMatrixFilterOperation::amount):
2668         (WebCore::BasicColorMatrixFilterOperation::operator==):
2669         (WebCore::BasicColorMatrixFilterOperation::BasicColorMatrixFilterOperation):
2670         (WebCore::BasicComponentTransferFilterOperation::create):
2671         (WebCore::BasicComponentTransferFilterOperation::amount):
2672         (WebCore::BasicComponentTransferFilterOperation::operator==):
2673         (WebCore::BasicComponentTransferFilterOperation::BasicComponentTransferFilterOperation):
2674         (WebCore::GammaFilterOperation::create):
2675         (WebCore::GammaFilterOperation::amplitude):
2676         (WebCore::GammaFilterOperation::exponent):
2677         (WebCore::GammaFilterOperation::offset):
2678         (WebCore::GammaFilterOperation::operator==):
2679         (WebCore::GammaFilterOperation::GammaFilterOperation):
2680         (WebCore::BlurFilterOperation::create):
2681         (WebCore::BlurFilterOperation::stdDeviationX):
2682         (WebCore::BlurFilterOperation::stdDeviationY):
2683         (WebCore::BlurFilterOperation::operator==):
2684         (WebCore::BlurFilterOperation::BlurFilterOperation):
2685         (WebCore::SharpenFilterOperation::create):
2686         (WebCore::SharpenFilterOperation::amount):
2687         (WebCore::SharpenFilterOperation::radius):
2688         (WebCore::SharpenFilterOperation::threshold):
2689         (WebCore::SharpenFilterOperation::operator==):
2690         (WebCore::SharpenFilterOperation::SharpenFilterOperation):
2691         (WebCore::DropShadowFilterOperation::create):
2692         (WebCore::DropShadowFilterOperation::x):
2693         (WebCore::DropShadowFilterOperation::y):
2694         (WebCore::DropShadowFilterOperation::stdDeviation):
2695         (WebCore::DropShadowFilterOperation::color):
2696         (WebCore::DropShadowFilterOperation::operator==):
2697         (WebCore::DropShadowFilterOperation::DropShadowFilterOperation):
2698         * platform/graphics/filters/FilterOperations.cpp: Renamed from Source/WebCore/rendering/style/FilterOperations.cpp.
2699         (WebCore::FilterOperations::FilterOperations):
2700         (WebCore::FilterOperations::operator==):
2701         (WebCore::FilterOperations::operationsMatch):
2702         * platform/graphics/filters/FilterOperations.h: Renamed from Source/WebCore/rendering/style/FilterOperations.h.
2703         (WebCore::FilterOperations::operator!=):
2704         (WebCore::FilterOperations::clear):
2705         (WebCore::FilterOperations::operations):
2706         (WebCore::FilterOperations::size):
2707         (WebCore::FilterOperations::at):
2708
2709 2011-12-15  Igor Oliveira  <igor.oliveira@openbossa.org>
2710
2711         [Qt] Support requestAnimationFrame API
2712         https://bugs.webkit.org/show_bug.cgi?id=74528
2713
2714         Add necessary files to Target.pri when enabling requestAnimationFrame option.
2715
2716         Reviewed by Kenneth Rohde Christiansen.
2717
2718         * Target.pri:
2719
2720 2011-12-15  Otto Cheung  <ocheung@rim.com>
2721
2722         Removing BlackBerryCookieCache from the build system
2723         https://bugs.webkit.org/show_bug.cgi?id=74318
2724
2725         Reviewed by Rob Buis.
2726
2727         Removing any references to BlackBerryCookieCache in files that are upstreamed.
2728
2729         We are removing the BlackBerryCookieCache because the CookieManager cookie structure has been
2730         refactored to have a similar structure to the cache. Since the read speeds in both structures
2731         are similar, we no longer need the cache to speed up read performance.
2732
2733         No new tests, this patch by itself will not work. This patch is only removing
2734         the references to BlackBerryCookieCache in files that are upstreamed.
2735
2736         * PlatformBlackBerry.cmake:
2737         * platform/network/blackberry/NetworkJob.cpp:
2738         (WebCore::NetworkJob::handleNotifyHeaderReceived):
2739
2740 2011-12-15  Kenneth Rohde Christiansen  <kenneth@webkit.org>
2741
2742         [Qt] Mobile theme improvements
2743
2744         Rubberstamped by Simon Hausmann.
2745
2746         - Invert the gradient on the checkboxes
2747         - Make the buttons on the multi select combobox work on floats
2748         - Mini cleanups
2749
2750         * platform/qt/RenderThemeQtMobile.cpp:
2751         (WebCore::StylePainterMobile::drawCheckableBackground):
2752         (WebCore::StylePainterMobile::drawMultipleComboButton):
2753         (WebCore::StylePainterMobile::getButtonImageSize):
2754         (WebCore::StylePainterMobile::drawComboBox):
2755
2756 2011-12-15  Peter Rybin  <peter.rybin@gmail.com>
2757
2758         Web Inspector: CodeGeneratorInspector.py convert script conditions to precompiler #ifs
2759         https://bugs.webkit.org/show_bug.cgi?id=74534
2760
2761         Reviewed by Pavel Feldman.
2762
2763         Generator is rewritten to add #if's to output.
2764
2765         * inspector/CodeGeneratorInspector.py:
2766         (DomainNameFixes.get_fixed_data.Res.get_guard.Guard.generate_open):
2767         (DomainNameFixes.get_fixed_data.Res.get_guard.Guard):
2768         (DomainNameFixes.get_fixed_data.Res.get_guard.Guard.generate_close):
2769         (DomainNameFixes.get_fixed_data.Res):
2770         (DomainNameFixes.get_fixed_data.Res.get_guard):
2771         (Generator.go):
2772         (Generator.process_event):
2773         (Generator.process_command):
2774         (Generator.process_types):
2775
2776 2011-12-15  Jesus Sanchez-Palencia  <jesus.palencia@openbossa.org>
2777
2778         [Qt][WK2] Setting Download as action for navigation request crashes WebProcess
2779         https://bugs.webkit.org/show_bug.cgi?id=74526
2780
2781         Reviewed by Simon Hausmann.
2782
2783         Adding checks for networkcontext and networkAccessManager
2784         and return true in case they don't exist, following the same
2785         logic as if the CookieJar doesn't exist.
2786
2787         * platform/qt/ThirdPartyCookiesQt.cpp:
2788         (WebCore::thirdPartyCookiePolicyPermits):
2789
2790 2011-12-14  Tor Arne Vestbø  <tor.arne.vestbo@nokia.com>
2791
2792         [Qt] Get rid of layering violation in PluginViewQt
2793
2794         PluginViewQt has a layering violation in relying on QWebPagePrivate for
2795         the check if running under DRT. We remove this and add a specific flag
2796         in the PluginView for this check, enabled from DRTSupport. This isn't
2797         pretty, but an improvement over what's currently there.
2798
2799         Reviewed by Simon Hausmann.
2800
2801         * plugins/PluginView.h:
2802         * plugins/qt/PluginViewQt.cpp:
2803         (WebCore::PluginView::updatePluginWidget):
2804         (WebCore::setXKeyEventSpecificFields):
2805
2806 2011-12-14  Vsevolod Vlasov  <vsevik@chromium.org>
2807
2808         Web Inspector: Console should show network messages origins.
2809         https://bugs.webkit.org/show_bug.cgi?id=74521
2810
2811         Reviewed by Pavel Feldman.
2812
2813         * inspector/front-end/ConsoleMessage.js:
2814         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
2815
2816 2011-12-15  Rakesh KN  <rakesh.kn@motorola.com>
2817
2818         "user-select none" causes selection to incorrectly escape from clicked container
2819         https://bugs.webkit.org/show_bug.cgi?id=57289
2820
2821         Reviewed by Ryosuke Niwa.
2822
2823         Not selecting the nearest word from the target node if target node has -webkit-user-select:none
2824
2825         Test: fast/events/mouse-double-triple-click-should-not-select-next-node-for-user-select-none.html
2826
2827         * page/EventHandler.cpp:
2828         (WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart):
2829         If target node has webkit-user-select:none style then do not update the selection.
2830
2831 2011-12-13  Andrey Kosyakov  <caseq@chromium.org>
2832
2833         Web Inspector: Generated HAR is missing pages.startedDateTime
2834         https://bugs.webkit.org/show_bug.cgi?id=74188
2835
2836         Reviewed by Pavel Feldman.
2837
2838         * inspector/front-end/HAREntry.js:
2839         (WebInspector.HARLog.prototype._buildPages):
2840         * inspector/front-end/NetworkLog.js:
2841         (WebInspector.NetworkLog):
2842         (WebInspector.NetworkLog.prototype.get mainResourceStartTime):
2843         (WebInspector.NetworkLog.prototype._mainFrameNavigated):
2844         * inspector/front-end/NetworkPanel.js:
2845         (WebInspector.NetworkLogView.prototype._updateSummaryBar):
2846
2847 2011-12-15  Kenichi Ishibashi  <bashi@chromium.org>
2848
2849         Supports Unicode variation selector
2850         https://bugs.webkit.org/show_bug.cgi?id=50999
2851
2852         Reviewed by Nikolas Zimmermann.
2853
2854         Adds SimpleFontData::updateGlyphWithVariationSelector() which substitutes the
2855         glyph in question based on the selector. WidthIterator::advance() calls it
2856         when an unicode variation selector follows the character.
2857
2858         Test: fast/text/unicode-variation-selector.html
2859
2860         * platform/graphics/SimpleFontData.h: Added updateGlyphWithVariationSelector().
2861         * platform/graphics/SurrogatePairAwareTextIterator.cpp:
2862         (WebCore::isUnicodeBMPVariationSelector): Added.
2863         (WebCore::isUnicodeSupplementaryVariationSelector): Added.
2864         (WebCore::SurrogatePairAwareTextIterator::hasTrailingVariationSelector): Added.
2865         * platform/graphics/SurrogatePairAwareTextIterator.h:
2866         * platform/graphics/WidthIterator.cpp:
2867         (WebCore::WidthIterator::advance): Changed to detect variation selectors.
2868         * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
2869         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Added.
2870         * platform/graphics/chromium/SimpleFontDataLinux.cpp:
2871         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2872         * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
2873         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2874         * platform/graphics/mac/SimpleFontDataMac.mm:
2875         (WebCore::decomposeToUTF16): Ditto.
2876         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2877         * platform/graphics/pango/SimpleFontDataPango.cpp:
2878         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2879         * platform/graphics/qt/SimpleFontDataQt.cpp:
2880         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2881         * platform/graphics/win/SimpleFontDataWin.cpp:
2882         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2883         * platform/graphics/wince/SimpleFontDataWinCE.cpp:
2884         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2885         * platform/graphics/wx/SimpleFontDataWx.cpp:
2886         (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2887
2888 2011-12-15  Alexander Pavlov  <apavlov@chromium.org>
2889
2890         [v8] Expose the "filter" property in V8CSSStyleDeclaration
2891         https://bugs.webkit.org/show_bug.cgi?id=73426
2892
2893         Reviewed by Adam Barth.
2894
2895         Test: fast/css/style-enumerate-properties.html
2896
2897         The "filter" CSS property used to be masked to be compliant with JSC, but JSC has supported
2898         this property for quite a while.
2899
2900         * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp:
2901         (WebCore::hasCSSPropertyNamePrefix): clean up WTF prefixes
2902         (WebCore::cssPropertyInfo): remove the "wasFilter" flag
2903         (WebCore::V8CSSStyleDeclaration::namedPropertyEnumerator): remove the "filter" check
2904         (WebCore::V8CSSStyleDeclaration::namedPropertyGetter): return the "filter" value as v8String
2905
2906 2011-12-15  Hajime Morrita  <morrita@chromium.org>
2907
2908         Unreviewed build fix attempt for Chromium Mac.
2909
2910         * page/PerformanceTiming.h:
2911
2912 2011-12-15  Alexander Pavlov  <apavlov@chromium.org>
2913
2914         Unreviewed, build fix after r102906 (poor merge).
2915
2916         * inspector/front-end/ProfileView.js:
2917         (WebInspector.CPUProfileType.prototype.buttonClicked):
2918
2919 2011-12-15  Vsevolod Vlasov  <vsevik@chromium.org>
2920
2921         Unreviewed revert of r102696 ([Navigation Timing] Use monotonicallyIncreasingTime() instead of currentTime()).
2922         Breaks inspector's network panel timeline on chromium.
2923
2924         * CMakeLists.txt:
2925         * GNUmakefile.list.am:
2926         * Target.pri:
2927         * WebCore.gypi:
2928         * WebCore.vcproj/WebCore.vcproj:
2929         * WebCore.xcodeproj/project.pbxproj:
2930         * dom/Document.cpp:
2931         (WebCore::Document::setReadyState):
2932         (WebCore::Document::finishedParsing):
2933         * inspector/InspectorInstrumentation.cpp:
2934         (WebCore::InspectorInstrumentation::didFinishLoadingImpl):
2935         * inspector/InspectorResourceAgent.cpp:
2936         (WebCore::buildObjectForTiming):
2937         (WebCore::buildObjectForResourceResponse):
2938         (WebCore::buildObjectForCachedResource):
2939         (WebCore::InspectorResourceAgent::willSendRequest):
2940         (WebCore::InspectorResourceAgent::didReceiveResponse):
2941         (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
2942         * loader/DocumentLoadTiming.cpp: Removed.
2943         * loader/DocumentLoadTiming.h:
2944         (WebCore::DocumentLoadTiming::DocumentLoadTiming):
2945         * loader/FrameLoader.cpp:
2946         (WebCore::FrameLoader::stopLoading):
2947         (WebCore::FrameLoader::commitProvisionalLoad):
2948         (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
2949         (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
2950         * loader/MainResourceLoader.cpp:
2951         (WebCore::MainResourceLoader::continueAfterNavigationPolicy):
2952         (WebCore::MainResourceLoader::willSendRequest):
2953         (WebCore::MainResourceLoader::didReceiveData):
2954         (WebCore::MainResourceLoader::didFinishLoading):
2955         (WebCore::MainResourceLoader::load):
2956         * page/DOMWindow.cpp:
2957         (WebCore::DOMWindow::dispatchLoadEvent):
2958         (WebCore::DOMWindow::dispatchTimedEvent):
2959         * page/DOMWindow.h:
2960         * page/PerformanceNavigation.cpp:
2961         (WebCore::PerformanceNavigation::redirectCount):
2962         * page/PerformanceTiming.cpp:
2963         (WebCore::getPossiblySkewedTimeInKnownRange):
2964         (WebCore::PerformanceTiming::navigationStart):
2965         (WebCore::PerformanceTiming::unloadEventStart):
2966         (WebCore::PerformanceTiming::unloadEventEnd):
2967         (WebCore::PerformanceTiming::redirectStart):
2968         (WebCore::PerformanceTiming::redirectEnd):
2969         (WebCore::PerformanceTiming::fetchStart):
2970         (WebCore::PerformanceTiming::responseEnd):
2971         (WebCore::PerformanceTiming::domLoading):
2972         (WebCore::PerformanceTiming::domInteractive):
2973         (WebCore::PerformanceTiming::domContentLoadedEventStart):
2974         (WebCore::PerformanceTiming::domContentLoadedEventEnd):
2975         (WebCore::PerformanceTiming::domComplete):
2976         (WebCore::PerformanceTiming::loadEventStart):
2977         (WebCore::PerformanceTiming::loadEventEnd):
2978         (WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute):
2979         * page/PerformanceTiming.h:
2980         * platform/network/ResourceLoadTiming.cpp: Removed.
2981         * platform/network/ResourceLoadTiming.h:
2982
2983 2011-12-15  Alexander Pavlov  <apavlov@chromium.org>
2984
2985         Unreviewed, fix Closure compiler warnings after r102905.
2986
2987         * inspector/front-end/CSSStyleModel.js: Add JSDoc annotations
2988
2989 2011-12-14  Alexander Pavlov  <apavlov@chromium.org>
2990
2991         Web Inspector: make ProfilesPanel scale as the number of ProfileTypes grows
2992         https://bugs.webkit.org/show_bug.cgi?id=74391
2993
2994         Reviewed by Pavel Feldman.
2995
2996         Whenever a profile is started, this change disables all profile recording buttons, except the one
2997         that correponds to the running profile. Once the profiling is finished, all buttons get enabled back again.
2998
2999         * English.lproj/localizedStrings.js:
3000         * inspector/front-end/ProfileView.js:
3001         (WebInspector.CPUProfileView.profileCallback):
3002         (WebInspector.CPUProfileType.prototype.get buttonTooltip):
3003         (WebInspector.CPUProfileType.prototype.get buttonStyle):
3004         (WebInspector.CPUProfileType.prototype.buttonClicked):
3005         * inspector/front-end/ProfilesPanel.js:
3006         (WebInspector.ProfilesPanel.prototype.get statusBarItems.clickHandler):
3007         (WebInspector.ProfilesPanel.prototype.get statusBarItems):
3008         (WebInspector.ProfilesPanel.prototype._addProfileHeader):
3009         (WebInspector.ProfilesPanel.prototype.updateProfileTypeButtons):
3010         (WebInspector.ProfilesPanel.prototype._updateInterface):
3011         (WebInspector.ProfilesPanel.prototype.setRecordingProfile):
3012         (WebInspector.ProfilesPanel.prototype.takeHeapSnapshot):
3013         (WebInspector.ProfilesPanel.prototype._reportHeapSnapshotProgress):
3014         (WebInspector.ProfilerDispatcher.prototype.setRecordingProfile):
3015         * inspector/front-end/inspector.css:
3016         (.record-cpu-profile-status-bar-item .glyph):
3017         (.record-cpu-profile-status-bar-item.toggled-on .glyph):
3018
3019 2011-12-15  Alexander Pavlov  <apavlov@chromium.org>
3020
3021         Web Inspector: [Styles] Update selected DOM element styles whenever applicable media queries change
3022         https://bugs.webkit.org/show_bug.cgi?id=74292
3023
3024         The change introduces and handles in the frontend a new event type for the CSS domain,
3025         "mediaQueryResultChanged", which gets fired every time a viewport-dependent media feature
3026         changes its value. This allows users to see live changes of the (media-dependent) matched
3027         rules for inspected elements.
3028
3029         Reviewed by Pavel Feldman.
3030
3031         * inspector/CodeGeneratorInspector.py:
3032         (DomainNameFixes):
3033         * inspector/Inspector.json:
3034         * inspector/InspectorCSSAgent.cpp:
3035         (WebCore::InspectorCSSAgent::InspectorCSSAgent):
3036         (WebCore::InspectorCSSAgent::setFrontend):
3037         (WebCore::InspectorCSSAgent::clearFrontend):
3038         (WebCore::InspectorCSSAgent::restore):
3039         (WebCore::InspectorCSSAgent::enable):
3040         (WebCore::InspectorCSSAgent::disable):
3041         (WebCore::InspectorCSSAgent::mediaQueryResultChanged):
3042         * inspector/InspectorCSSAgent.h:
3043         * inspector/InspectorInstrumentation.cpp:
3044         (WebCore::InspectorInstrumentation::mediaQueryResultChangedImpl):
3045         * inspector/InspectorInstrumentation.h:
3046         (WebCore::InspectorInstrumentation::mediaQueryResultChanged):
3047         * inspector/front-end/CSSStyleModel.js:
3048         (WebInspector.CSSStyleModel):
3049         (WebInspector.CSSStyleModel.prototype.mediaQueryResultChanged):
3050         (WebInspector.CSSDispatcher):
3051         (WebInspector.CSSDispatcher.prototype.mediaQueryResultChanged):
3052         * inspector/front-end/MetricsSidebarPane.js:
3053         (WebInspector.MetricsSidebarPane):
3054         (WebInspector.MetricsSidebarPane.prototype._styleSheetOrMediaQueryResultChanged):
3055         * inspector/front-end/StylesSidebarPane.js:
3056         (WebInspector.StylesSidebarPane):
3057         (WebInspector.StylesSidebarPane.prototype._styleSheetOrMediaQueryResultChanged):
3058         * page/FrameView.cpp:
3059         (WebCore::FrameView::layout):
3060
3061 2011-12-14  Vsevolod Vlasov  <vsevik@chromium.org>
3062
3063         Web Inspector: [Regression] Network manager fails to show resource type and MIME type in incorrect MIME type console message.
3064         https://bugs.webkit.org/show_bug.cgi?id=74516
3065
3066         Reviewed by Pavel Feldman.
3067
3068         Test: http/tests/inspector/network/script-as-text-loading.html
3069
3070         * inspector/front-end/ConsoleMessage.js:
3071         (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
3072         * inspector/front-end/NetworkManager.js:
3073         (WebInspector.NetworkDispatcher.prototype._updateResourceWithResponse):
3074
3075 2011-11-03  Kent Tamura  <tkent@chromium.org>
3076
3077         A spin button changes the value incorrectly if it is clicked after touch events.
3078         https://bugs.webkit.org/show_bug.cgi?id=71181
3079
3080         Reviewed by Ryosuke Niwa.
3081
3082         SpinButtonElement assumed setHovered(true) was always called before a
3083         mousemove event in the element. It is not true for touch events.
3084
3085         We should not reset m_upDownState to Indetermiante in setHovered(true),
3086         and should reset it when the mouse pointer moves out.
3087
3088         This change fixes the flakiness of fast/forms/input-step-as-double.html.
3089
3090         Test: fast/events/touch/touch-before-pressing-spin-button.html
3091
3092         * html/shadow/TextControlInnerElements.cpp:
3093         (WebCore::SpinButtonElement::defaultEventHandler):
3094         Add an assertion that m_upDownState should not be Indetermiante.
3095         Reset m_upDownState to Indeterminate when the mouse pointer moves out
3096         from the element.
3097         (WebCore::SpinButtonElement::setHovered):
3098         Reset m_upDownState to Indeterminate when the element becomes unhovered.
3099
3100 2011-12-14  Lucas Forschler  <lforschler@apple.com>
3101     
3102         https://bugs.webkit.org/show_bug.cgi?id=74543
3103         Add CSS*.cpp to a new CSSAllInOne.cpp file with two exceptions:
3104             CSSProperty.cpp
3105             CSSPrimitiveValue.cpp
3106         Adding these two broke things with a templates problem that was not easily fixable.
3107
3108         Reviewed by Steve Falkenburg.
3109
3110         * WebCore.vcproj/WebCore.vcproj:
3111         * css/CSSAllInOne.cpp: Added.
3112
3113 2011-12-14  Tim Horton  <timothy_horton@apple.com>
3114
3115         Generated images should respect the accelerated state of the context they're going to be drawn into
3116         https://bugs.webkit.org/show_bug.cgi?id=74577
3117         <rdar://problem/10584392>
3118
3119         Reviewed by Simon Fraser.
3120
3121         The tiled code path for GeneratorGeneratedImage and CrossfadeGeneratedImage blindly creates
3122         an unaccelerated ImageBuffer. Instead, take into account the accelerated state of the destination context.
3123
3124         No new tests, as this is a simple performance improvement.
3125
3126         * platform/graphics/CrossfadeGeneratedImage.cpp:
3127         (WebCore::CrossfadeGeneratedImage::drawPattern):
3128         * platform/graphics/GeneratorGeneratedImage.cpp:
3129         (WebCore::GeneratorGeneratedImage::drawPattern):
3130
3131 2011-12-14  Ilya Tikhonovsky  <loislo@chromium.org>
3132
3133         Web Inspector: cleanup unused variable introduced at r102803
3134
3135         * inspector/front-end/NetworkManager.js:
3136         (WebInspector.NetworkManager.prototype.enableResourceTracking):
3137         (WebInspector.NetworkManager.prototype.disableResourceTracking):
3138
3139 2011-12-14  Wei James  <james.wei@intel.com>
3140
3141         fast path to accelerate processing in AudioBus::processWithGainFromMonoStereo
3142         https://bugs.webkit.org/show_bug.cgi?id=74054
3143
3144         Reviewed by Kenneth Russell.
3145
3146         Avoid de-zippering when the gain has converged on the targetGain. 
3147         It can get about 75% performance gain at most when all frames don't need
3148         de-zippering.
3149
3150         * platform/audio/AudioBus.cpp:
3151         (WebCore::AudioBus::processWithGainFromMonoStereo):
3152
3153 2011-12-14  Adam Klein  <adamk@chromium.org>
3154
3155         Optimize MutationObserverInterestGroup construction
3156         https://bugs.webkit.org/show_bug.cgi?id=74563
3157
3158         Reviewed by Ojan Vafai.
3159
3160         Inline MutationObserverInterestGroup's creation methods and fix an
3161         accidental pass-by-value in an attempt to further reduce the CPU
3162         footprint of MutationObservers.
3163
3164         No new tests, refactor only.
3165
3166         * dom/WebKitMutationObserver.cpp:
3167         (WebCore::MutationObserverInterestGroup::MutationObserverInterestGroup): Pass observers HashMap by reference.
3168         * dom/WebKitMutationObserver.h:
3169         (WebCore::MutationObserverInterestGroup::createForChildListMutation): Inline.
3170         (WebCore::MutationObserverInterestGroup::createForCharacterDataMutation): Inline.
3171         (WebCore::MutationObserverInterestGroup::createForAttributesMutation): Inline.
3172         (WebCore::MutationObserverInterestGroup::hasOldValue): Remove spurious inline keyword.
3173
3174 2011-12-14  Dominic Mazzoni  <dmazzoni@google.com>
3175
3176         Seeing crash in DRT after loading-iframe-sends-notification.html land
3177         https://bugs.webkit.org/show_bug.cgi?id=72624
3178
3179         When an iframe finishes loading, send an accessibility notification
3180         on the renderer, rather than on a parent node. The only reason it was
3181         being posted on a parent before was because there was no way to detect
3182         that in a test. This is simpler and now covered by the test.
3183
3184         Reviewed by Chris Fleizach.
3185
3186         Updates existing test:
3187         accessibility/loading-iframe-sends-notification.html
3188
3189         * dom/Document.cpp:
3190         (WebCore::Document::implicitClose):
3191
3192 2011-12-14  Nat Duca  <nduca@chromium.org>
3193
3194         [chromium] Add inhibitDraw to CCScheduler and drop root impl to prevent background flash on tab restore
3195         https://bugs.webkit.org/show_bug.cgi?id=74351
3196
3197         Reviewed by James Robinson.
3198
3199         * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
3200         (WebCore::CCLayerTreeHost::setNeedsCommit):
3201         (WebCore::CCLayerTreeHost::didBecomeInvisibleOnImplThread):
3202         * platform/graphics/chromium/cc/CCScheduler.cpp:
3203         (WebCore::CCScheduler::getNextAction):
3204         (WebCore::CCScheduler::processScheduledActions):
3205         * platform/graphics/chromium/cc/CCScheduler.h:
3206         * platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:
3207         (WebCore::CCSchedulerStateMachine::CCSchedulerStateMachine):
3208         (WebCore::CCSchedulerStateMachine::nextAction):
3209         * platform/graphics/chromium/cc/CCSchedulerStateMachine.h:
3210         (WebCore::CCSchedulerStateMachine::setInhibitDraw):
3211         * platform/graphics/chromium/cc/CCThreadProxy.cpp:
3212         (WebCore::CCThreadProxy::setVisibleOnImplThread):
3213         (WebCore::CCThreadProxy::inhibitDraw):
3214         * platform/graphics/chromium/cc/CCThreadProxy.h:
3215
3216 2011-12-14  Ken Buchanan  <kenrb@chromium.org>
3217
3218         Crash due to incorrect parsing of isolates
3219         https://bugs.webkit.org/show_bug.cgi?id=74311
3220         When <bdi> content is wrapped, all hell breaks loose
3221         https://bugs.webkit.org/show_bug.cgi?id=74396
3222
3223         Reviewed by Eric Seidel.
3224
3225         When an isolate was encountered during run layout, the entire isolate
3226         would be parsed, even if the run started in the middle of the isolate.
3227         This would sometimes cause parts of the isolate to be added multiple
3228         times as runs. This patch marks the starting position within the
3229         isolate so nothing is parsed twice.
3230
3231         This patch changes appendRun() so that when a run is added that is
3232         inside an isolate, it saves the start position of the run rather than
3233         the root. This allows constructBidiRuns() to resume parsing the
3234         isolate from the correct position.
3235
3236         The change to RenderBox partially reverts a previous change I had
3237         done. It makes sense to screen for the condition, as was previously
3238         the case.
3239
3240         This patch does not add the test case from 74396 because a separate
3241         bug is preventing it from rendering correctly.
3242
3243         * rendering/InlineIterator.h:
3244         (WebCore::addPlaceholderRunForIsolatedInline)
3245         (WebCore::IsolateTracker::addFakeRunIfNecessary)
3246         (WebCore::InlineBidiResolver::appendRun)
3247         * rendering/RenderBlockLineLayout.cpp:
3248         (WebCore::RenderBlockLineLayout::constructBidiRuns)
3249         * rendering/RenderBox.cpp:
3250         (WebCore::RenderBox::positionLineBox)
3251
3252 2011-12-14  Jing Zhao  <jingzhao@chromium.org>
3253
3254         Opening two popup menus by dispatchEvent() makes problems.
3255         https://bugs.webkit.org/show_bug.cgi?id=73304
3256
3257         Reviewed by Kent Tamura.
3258
3259         By using element.dispatchEvent(), a user written script can open two
3260         popup menus, which causes various problems in different platforms.
3261
3262         Add a hasOpenedPopup() method in ChromeClient and a wrapper in Chrome.
3263         In RenderMenuList::showPopup(), check if there is an opened popup menu
3264         before opening a new popup menu.
3265
3266         Test: fast/forms/select-popup-crash.html
3267
3268         * loader/EmptyClients.h: Overrides hasOpenedPopup().
3269         (WebCore::EmptyChromeClient::hasOpenedPopup): Returns false as a default case.
3270         * page/Chrome.cpp:
3271         (WebCore::Chrome::hasOpenedPopup): Calls ChromeClient::hasOpenedPopup().
3272         * page/Chrome.h: Declares hasOpenedPopup().
3273         * page/ChromeClient.h: Declares hasOpenedPopup() as a pure virtual function.
3274         * rendering/RenderMenuList.cpp:
3275         (WebCore::RenderMenuList::showPopup): Calls Chrome::hasOpenedPopup() before opening a new popup menu.
3276
3277 2011-12-14  Tony Chang  <tony@chromium.org>
3278
3279         Clean up style in CSSStyleSelector.cpp
3280         https://bugs.webkit.org/show_bug.cgi?id=74548
3281
3282         Reviewed by Ojan Vafai.
3283
3284         * css/CSSStyleSelector.cpp:
3285         (WebCore::CSSStyleSelector::styleForElement):
3286         (WebCore::CSSStyleSelector::pseudoStyleForElement):
3287
3288 2011-12-14  Kenneth Russell  <kbr@google.com>
3289
3290         Unreviewed, rolling out r102794.
3291         http://trac.webkit.org/changeset/102794
3292         https://bugs.webkit.org/show_bug.cgi?id=74220
3293
3294         Reapplying patch since it is not the cause of the problems
3295         described in bug 74220.
3296
3297         * bindings/v8/V8Proxy.cpp:
3298         (WebCore::V8Proxy::reportUnsafeAccessTo):
3299         * bindings/v8/V8Proxy.h:
3300         * bindings/v8/custom/V8CustomXPathNSResolver.cpp:
3301         (WebCore::V8CustomXPathNSResolver::lookupNamespaceURI):
3302
3303 2011-12-14  Sam Weinig  <weinig@apple.com>
3304
3305         Remove whitespace from InheritedPropertySheets attributes in
3306         vsprops files to appease the Visual Studio project migrator.
3307
3308         Reviewed by Adam Roben.
3309
3310         * WebCore.vcproj/QTMovieWinDebug.vsprops:
3311         * WebCore.vcproj/QTMovieWinDebugAll.vsprops:
3312         * WebCore.vcproj/QTMovieWinDebugCairoCFLite.vsprops:
3313         * WebCore.vcproj/QTMovieWinProduction.vsprops:
3314         * WebCore.vcproj/QTMovieWinRelease.vsprops:
3315         * WebCore.vcproj/QTMovieWinReleaseCairoCFLite.vsprops:
3316         * WebCore.vcproj/WebCoreDebug.vsprops:
3317         * WebCore.vcproj/WebCoreDebugAll.vsprops:
3318         * WebCore.vcproj/WebCoreDebugCairoCFLite.vsprops:
3319         * WebCore.vcproj/WebCoreProduction.vsprops:
3320         * WebCore.vcproj/WebCoreRelease.vsprops:
3321         * WebCore.vcproj/WebCoreReleaseCairoCFLite.vsprops:
3322
3323 2011-12-14  Enrica Casucci  <enrica@apple.com>
3324
3325         One more attempt to fix the release build (hopefully the last)
3326
3327         Unreviewed.
3328
3329         * editing/ReplaceSelectionCommand.cpp: Added NodeRenderStyle.h
3330
3331 2011-12-14  Kenneth Russell  <kbr@google.com>
3332
3333         Unreviewed, rolling out r102816.
3334         http://trac.webkit.org/changeset/102816
3335         https://bugs.webkit.org/show_bug.cgi?id=74415
3336
3337         Implicated in font-related crashes on Chromium canaries.
3338
3339         * platform/graphics/chromium/FontChromiumWin.cpp:
3340         (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::drawGlyphs):
3341         (WebCore::Font::drawGlyphs):
3342         * platform/graphics/chromium/FontPlatformDataChromiumWin.cpp:
3343         (WebCore::FontPlatformData::FontPlatformData):
3344         (WebCore::FontPlatformData::operator=):
3345         (WebCore::FontPlatformData::~FontPlatformData):
3346         * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
3347         (WebCore::FontPlatformData::size):
3348         (WebCore::FontPlatformData::hash):
3349         * platform/graphics/skia/SkiaFontWin.cpp:
3350         (WebCore::setupPaintForFont):
3351         (WebCore::paintSkiaText):
3352         * platform/graphics/skia/SkiaFontWin.h:
3353
3354 2011-12-14  Simon Fraser  <simon.fraser@apple.com>
3355
3356         Filter amounts should accept percentages
3357         https://bugs.webkit.org/show_bug.cgi?id=74531
3358
3359         Reviewed by Chris Marrin.
3360         
3361         Support percentage arguments for some filter functions, using the FPercent flag
3362         to validUnit(). Fix CSSStyleSelector::createFilterOperations() to do the divide by 100
3363         for percentages.
3364         
3365         Replaced isValidFilterArgument(), which just tested arguments one by one for validity, with
3366         parseBuiltinFilterArguments() which tests and creates the CSSValues at the same time, which
3367         is a little more efficient. It also allows filter-specific behavior to be more localized in this
3368         method.
3369
3370         Covered by existing tests.
3371
3372         * css/CSSParser.cpp:
3373         (WebCore::CSSParser::parseBuiltinFilterArguments):
3374         (WebCore::CSSParser::parseFilter):
3375         * css/CSSParser.h:
3376         * css/CSSStyleSelector.cpp:
3377         (WebCore::CSSStyleSelector::createFilterOperations):
3378
3379 2011-12-14  Enrica Casucci  <enrica@apple.com>
3380
3381         Build fix.
3382
3383         Unreviewed.
3384
3385         * editing/ReplaceSelectionCommand.cpp: Added include RenderStyle.h
3386
3387 2011-12-14  Hajime Morrita  <morrita@chromium.org>
3388
3389         JS_INLINE and WTF_INLINE should be visible from WebCore
3390         https://bugs.webkit.org/show_bug.cgi?id=73191
3391
3392         Reviewed by Kevin Ollivier.
3393
3394         - Moved export related definitions from config.h
3395           to ExportMacros.h, JSExportMacros.h and PlatformExportMacros.h
3396         - Added forwarding headers which are referred from config.h
3397
3398         No new tests. Only build related changes.
3399
3400         * ForwardingHeaders/runtime/JSExportMacros.h: Added.
3401         * ForwardingHeaders/wtf/ExportMacros.h: Added.
3402         * WebCore.xcodeproj/project.pbxproj:
3403         * config.h:
3404         * platform/PlatformExportMacros.h: Copied from Source/JavaScriptCore/wtf/ExportMacros.h.
3405
3406 2011-12-14  Enrica Casucci  <enrica@apple.com>
3407
3408         Need a way to produce leaner markup when pasting a fragment containing verbose markup
3409         https://bugs.webkit.org/show_bug.cgi?id=74514
3410         <rdar://problem/10208653>
3411
3412         Reviewed by Ryosuke Niwa.
3413
3414         This patch is another step in the direction of reducing the verbosity of the markup
3415         produced with editing operations.
3416         After the copied fragment is inserted in the document, it is analyzed to remove all
3417         the elements that don't contribute to the style. The decision is made comparing the
3418         render styles. As part of the cleanup, unstyled divs with single child element are
3419         removed. The logic to determine the blocks that can be removed is the same used in
3420         DeleteSelectionCommand and has been moved in CompositeEditCommand.
3421         
3422         Test: editing/pasteboard/paste-and-sanitize.html
3423
3424         * editing/CompositeEditCommand.cpp:
3425         (WebCore::CompositeEditCommand::isRemovableBlock): Implements logic to determine
3426         if a block can be removed.
3427         * editing/CompositeEditCommand.h: Added isRemovableBlock declaration.
3428         * editing/DeleteSelectionCommand.cpp:
3429         (WebCore::DeleteSelectionCommand::removeRedundantBlocks): Implemented using
3430         isRemovableBlock from CompositeEditCommand.
3431         * editing/Editor.cpp:
3432         (WebCore::Editor::replaceSelectionWithFragment): Added SanitizeFragment option.
3433         * editing/ReplaceSelectionCommand.cpp:
3434         (WebCore::ReplaceSelectionCommand::ReplaceSelectionCommand): Added initialization
3435         of m_sanitizeFragment member.
3436         (WebCore::ReplaceSelectionCommand::removeRedundantMarkup): New method implementing
3437         the cleanup logic.
3438         (WebCore::ReplaceSelectionCommand::doApply): Added call to removeRedundantMarkup
3439         after the fragment is inserted in the document.
3440         * editing/ReplaceSelectionCommand.h: Added new value to the enum CommandOption,
3441         a new member variable and the new method declaration.
3442
3443 2011-12-14  Adrienne Walker  <enne@google.com>
3444
3445         [chromium] Refactor tile drawing to be more data-driven
3446         https://bugs.webkit.org/show_bug.cgi?id=73059
3447
3448         Reviewed by James Robinson.
3449
3450         Partially tested by compositor layout tests. Debug borders and
3451         checkerboarding tested manually.
3452
3453         This is the first part of a move towards rendering quads on screen
3454         from a bag of data rather than in virtual CCLayerImpl::draw functions.
3455
3456         CCDrawQuad-derived classes store material-specific pieces of data to
3457         use when rendering. CCLayerImpl classes now create these CCDrawQuad
3458         objects rather than issuing direct GL commands. Where this data is
3459         shared between quads that come from the same layer, that data is
3460         stored in a CCSharedQuadState object rather than duplicated.
3461
3462         CCRenderPass is the class that holds the list of quads and the target
3463         surface that they draw into. Drawing a frame consists of drawing a
3464         series of render passes onto their respective surfaces.
3465
3466         CCLayerTreeHostImpl constructs these render passes from the output of
3467         calculateDrawTransformsAndVisibility by asking each layer to insert
3468         quads into a list and hands them off to LayerRendererChromium for
3469         rendering.
3470
3471         * WebCore.gypi:
3472         * platform/graphics/chromium/LayerRendererChromium.cpp:
3473         (WebCore::LayerRendererChromium::clearSurfaceForDebug):
3474         (WebCore::LayerRendererChromium::beginDrawingFrame):
3475         (WebCore::LayerRendererChromium::drawRenderPass):
3476         (WebCore::LayerRendererChromium::drawQuad):
3477         (WebCore::LayerRendererChromium::drawDebugBorderQuad):
3478         (WebCore::LayerRendererChromium::drawRenderSurfaceQuad):
3479         (WebCore::LayerRendererChromium::drawSolidColorQuad):
3480         (WebCore::tileUniformLocation):
3481         (WebCore::findTileProgramUniforms):
3482         (WebCore::LayerRendererChromium::drawTileQuad):
3483         (WebCore::LayerRendererChromium::drawCustomLayerQuad):
3484         (WebCore::LayerRendererChromium::finishDrawingFrame):
3485         (WebCore::LayerRendererChromium::useRenderSurface):
3486         * platform/graphics/chromium/LayerRendererChromium.h:
3487         * platform/graphics/chromium/ShaderChromium.h:
3488         (WebCore::FragmentTexAlphaBinding::edgeLocation):
3489         (WebCore::FragmentTexAlphaBinding::fragmentTexTransformLocation):
3490         (WebCore::FragmentTexOpaqueBinding::edgeLocation):
3491         (WebCore::FragmentTexOpaqueBinding::fragmentTexTransformLocation):
3492         * platform/graphics/chromium/TiledLayerChromium.cpp:
3493         (WebCore::TiledLayerChromium::pushPropertiesTo):
3494         * platform/graphics/chromium/cc/CCCustomLayerDrawQuad.cpp: Added.
3495         (WebCore::CCCustomLayerDrawQuad::create):
3496         (WebCore::CCCustomLayerDrawQuad::CCCustomLayerDrawQuad):
3497         * platform/graphics/chromium/cc/CCCustomLayerDrawQuad.h: Added.
3498         (WebCore::CCCustomLayerDrawQuad::layer):
3499         * platform/graphics/chromium/cc/CCDebugBorderDrawQuad.cpp: Added.
3500         (WebCore::CCDebugBorderDrawQuad::create):
3501         (WebCore::CCDebugBorderDrawQuad::CCDebugBorderDrawQuad):
3502         * platform/graphics/chromium/cc/CCDebugBorderDrawQuad.h: Added.
3503         (WebCore::CCDebugBorderDrawQuad::color):
3504         (WebCore::CCDebugBorderDrawQuad::width):
3505         * platform/graphics/chromium/cc/CCDrawQuad.cpp: Added.
3506         (WebCore::CCDrawQuad::CCDrawQuad):
3507         (WebCore::CCDrawQuad::toDebugBorderDrawQuad):
3508         (WebCore::CCDrawQuad::toRenderSurfaceDrawQuad):
3509         (WebCore::CCDrawQuad::toSolidColorDrawQuad):
3510         (WebCore::CCDrawQuad::toTileDrawQuad):
3511         (WebCore::CCDrawQuad::toCustomLayerDrawQuad):
3512         * platform/graphics/chromium/cc/CCDrawQuad.h: Added.
3513         (WebCore::CCDrawQuad::quadRect):
3514         (WebCore::CCDrawQuad::quadTransform):
3515         (WebCore::CCDrawQuad::layerTransform):
3516         (WebCore::CCDrawQuad::layerRect):
3517         (WebCore::CCDrawQuad::clipRect):
3518         (WebCore::CCDrawQuad::opacity):
3519         (WebCore::CCDrawQuad::drawsOpaque):
3520         (WebCore::CCDrawQuad::needsBlending):
3521         (WebCore::CCDrawQuad::isLayerAxisAlignedIntRect):
3522         (WebCore::CCDrawQuad::material):
3523         * platform/graphics/chromium/cc/CCLayerImpl.cpp:
3524         (WebCore::CCLayerImpl::createSharedQuadState):
3525         (WebCore::CCLayerImpl::appendQuads):
3526         (WebCore::CCLayerImpl::appendDebugBorderQuad):
3527         (WebCore::CCLayerImpl::quadTransform):
3528         * platform/graphics/chromium/cc/CCLayerImpl.h:
3529         * platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:
3530         (WebCore::CCLayerTreeHostImpl::trackDamageForAllSurfaces):
3531         (WebCore::computeScreenSpaceTransformForSurface):
3532         (WebCore::damageInSurfaceSpace):
3533         (WebCore::CCLayerTreeHostImpl::calculateRenderPasses):
3534         (WebCore::CCLayerTreeHostImpl::drawLayers):
3535         * platform/graphics/chromium/cc/CCLayerTreeHostImpl.h:
3536         * platform/graphics/chromium/cc/CCRenderPass.cpp: Added.
3537         (WebCore::CCRenderPass::create):
3538         (WebCore::CCRenderPass::CCRenderPass):
3539         (WebCore::CCRenderPass::appendQuadsForLayer):
3540         (WebCore::CCRenderPass::appendQuadsForRenderSurfaceLayer):
3541         * platform/graphics/chromium/cc/CCRenderPass.h: Added.
3542         (WebCore::CCRenderPass::quadList):
3543         (WebCore::CCRenderPass::targetSurface):
3544         (WebCore::CCRenderPass::setSurfaceDamageRect):
3545         (WebCore::CCRenderPass::surfaceDamageRect):
3546         * platform/graphics/chromium/cc/CCRenderSurfaceDrawQuad.cpp: Added.
3547         (WebCore::CCRenderSurfaceDrawQuad::create):
3548         (WebCore::CCRenderSurfaceDrawQuad::CCRenderSurfaceDrawQuad):
3549         * platform/graphics/chromium/cc/CCRenderSurfaceDrawQuad.h: Added.
3550         (WebCore::CCRenderSurfaceDrawQuad::layer):
3551         (WebCore::CCRenderSurfaceDrawQuad::surfaceDamageRect):
3552         * platform/graphics/chromium/cc/CCSharedQuadState.cpp: Added.
3553         (WebCore::CCSharedQuadState::create):
3554         (WebCore::CCSharedQuadState::CCSharedQuadState):
3555         (WebCore::CCSharedQuadState::isLayerAxisAlignedIntRect):
3556         * platform/graphics/chromium/cc/CCSharedQuadState.h: Added.
3557         (WebCore::CCSharedQuadState::quadTransform):
3558         (WebCore::CCSharedQuadState::layerTransform):
3559         (WebCore::CCSharedQuadState::layerRect):
3560         (WebCore::CCSharedQuadState::clipRect):
3561         (WebCore::CCSharedQuadState::opacity):
3562         (WebCore::CCSharedQuadState::isOpaque):
3563         * platform/graphics/chromium/cc/CCSolidColorDrawQuad.cpp: Added.
3564         (WebCore::CCSolidColorDrawQuad::create):
3565         (WebCore::CCSolidColorDrawQuad::CCSolidColorDrawQuad):
3566         * platform/graphics/chromium/cc/CCSolidColorDrawQuad.h: Added.
3567         (WebCore::CCSolidColorDrawQuad::color):
3568         * platform/graphics/chromium/cc/CCTileDrawQuad.cpp: Added.
3569         (WebCore::CCTileDrawQuad::create):
3570         (WebCore::CCTileDrawQuad::CCTileDrawQuad):
3571         * platform/graphics/chromium/cc/CCTileDrawQuad.h: Added.
3572         (WebCore::CCTileDrawQuad::textureId):
3573         (WebCore::CCTileDrawQuad::textureOffset):
3574         (WebCore::CCTileDrawQuad::textureSize):
3575         (WebCore::CCTileDrawQuad::textureFilter):
3576         (WebCore::CCTileDrawQuad::swizzleContents):
3577         (WebCore::CCTileDrawQuad::leftEdgeAA):
3578         (WebCore::CCTileDrawQuad::topEdgeAA):
3579         (WebCore::CCTileDrawQuad::rightEdgeAA):
3580         (WebCore::CCTileDrawQuad::bottomEdgeAA):
3581         (WebCore::CCTileDrawQuad::isAntialiased):
3582         * platform/graphics/chromium/cc/CCTiledLayerImpl.cpp:
3583         (WebCore::CCTiledLayerImpl::CCTiledLayerImpl):
3584         (WebCore::CCTiledLayerImpl::quadTransform):
3585         (WebCore::CCTiledLayerImpl::appendQuads):
3586         * platform/graphics/chromium/cc/CCTiledLayerImpl.h:
3587         (WebCore::CCTiledLayerImpl::setContentsSwizzled):
3588         (WebCore::CCTiledLayerImpl::contentsSwizzled):
3589
3590 2011-12-14  Ojan Vafai  <ojan@chromium.org>
3591
3592         Implement flexDirection and flexWrap and make flexFlow a proper shorthand.
3593         https://bugs.webkit.org/show_bug.cgi?id=74542
3594
3595         Reviewed by Tony Chang.
3596
3597         In a followup patch, I'll cleanup all the *Flow methods in RenderFlexibleBox.
3598
3599         Existing tests cover all the rendering behaviors, so only need to test
3600         the css property parsing.
3601
3602         * css/CSSComputedStyleDeclaration.cpp:
3603         (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
3604         * css/CSSMutableStyleDeclaration.cpp:
3605         (WebCore::CSSMutableStyleDeclaration::getPropertyValue):
3606         * css/CSSParser.cpp:
3607         (WebCore::CSSParser::parseValue):
3608         * css/CSSPrimitiveValueMappings.h:
3609         (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
3610         (WebCore::CSSPrimitiveValue::operator EFlexDirection):
3611         * css/CSSProperty.cpp:
3612         (WebCore::CSSProperty::isInheritedProperty):
3613         * css/CSSPropertyLonghand.cpp:
3614         (WebCore::initShorthandMap):
3615         * css/CSSPropertyNames.in:
3616         * css/CSSStyleApplyProperty.cpp:
3617         (WebCore::CSSStyleApplyProperty::CSSStyleApplyProperty):
3618         * css/CSSStyleSelector.cpp:
3619         (WebCore::CSSStyleSelector::applyProperty):
3620         * rendering/RenderBox.cpp:
3621         (WebCore::RenderBox::sizesToIntrinsicLogicalWidth):
3622         * rendering/RenderFlexibleBox.cpp:
3623         (WebCore::RenderFlexibleBox::isColumnFlow):
3624         (WebCore::RenderFlexibleBox::isLeftToRightFlow):
3625         (WebCore::RenderFlexibleBox::layoutAndPlaceChildren):
3626         (WebCore::RenderFlexibleBox::alignChildren):
3627         * rendering/style/RenderStyle.h:
3628         (WebCore::InheritedFlags::flexDirection):
3629         (WebCore::InheritedFlags::isColumnFlexDirection):
3630         (WebCore::InheritedFlags::setFlexDirection):
3631         (WebCore::InheritedFlags::initialFlexDirection):
3632         * rendering/style/RenderStyleConstants.h:
3633         * rendering/style/StyleFlexibleBoxData.cpp:
3634         (WebCore::StyleFlexibleBoxData::StyleFlexibleBoxData):
3635         (WebCore::StyleFlexibleBoxData::operator==):
3636         * rendering/style/StyleFlexibleBoxData.h:
3637
3638 2011-12-13  Jon Lee  <jonlee@apple.com>
3639
3640         Enable notifications on Mac.
3641
3642         Reviewed by Sam Weinig.
3643
3644         * Configurations/FeatureDefines.xcconfig:
3645
3646 2011-12-14  Ryosuke Niwa  <rniwa@webkit.org>
3647
3648         COMPILE_ASSERT in CSSStyleSelector.cpp doesn't compile on Windows
3649         https://bugs.webkit.org/show_bug.cgi?id=74327
3650
3651         Reviewed by Darin Adler.
3652
3653         Always use unsigned instead of bool and unsigned in the bitfields of RuleData to shrink
3654         its size under MSVC.
3655
3656         Unlike gcc and clang, MSVC pads each consecutive member variables of the same type
3657         in bitfields. e.g. if you have:
3658         sturct AB {
3659             unsigned m_1 : 31;
3660             bool m_2 : 1;
3661         }
3662         then MSVC pads m_1 and allocates sizeof(unsigned) * 2 for AB whereas gcc and clang
3663         only allocate sizeof(unsigned) * 1 for AB.
3664
3665         * css/CSSStyleSelector.cpp:
3666         (WebCore::RuleData::RuleData):
3667
3668 2011-12-14  Ryosuke Niwa  <rniwa@webkit.org>
3669
3670         NodeChildList shouldn't be in NodeListNodeData
3671         https://bugs.webkit.org/show_bug.cgi?id=73969
3672
3673         Reviewed by Sam Weinig.
3674
3675         Move NodeChildList out of NodeListNodeData to separate it from the other node lists in order to
3676         resolve the bug 73853. Unlike other DynamicNodeList, we don't need to invalidate NodeChildList
3677         on ancestors when children change. Moving ChildNodeList out of NodeListNodeData makes this difference
3678         apparent and makes DynamicNodeList::Caches in NodeListNodeData always held by a DynamicSubtreeNodeList,
3679         eliminating the need for hasOwnCaches() checks in various places.
3680
3681         Also renamed the existing DynamicNodeList to DynamicSubtreeNodeList and re-introduced DynamicNodeList
3682         from which DynamicSubtreeNodeList and ChildNodeList both inherit to share the code for itemWithName.
3683
3684         In addition, renamed registerDynamicNodeList and unregisterDynamicNodeList, which updates a counter for
3685         TreeScope::hasNodeListCaches, to registerDynamicSubtreeNodeList and unregisterDynamicSubtreeNodeList
3686         respectively. They are no longer called by ChildNodeList in order to avoid walking up the DOM tree
3687         inside invalidateNodeListsCacheAfterAttributeChanged and invalidateNodeListsCacheAfterChildrenChanged.
3688
3689         Test: fast/dom/childnode-item-after-itemname.html
3690
3691         * bindings/js/JSNodeListCustom.cpp:
3692         (WebCore::JSNodeListOwner::isReachableFromOpaqueRoots):
3693         * dom/ChildNodeList.cpp:
3694         (WebCore::ChildNodeList::ChildNodeList):
3695         (WebCore::ChildNodeList::length):
3696         (WebCore::ChildNodeList::item):
3697         (WebCore::ChildNodeList::nodeMatches):
3698         * dom/ChildNodeList.h:
3699         * dom/ClassNodeList.cpp:
3700         (WebCore::ClassNodeList::ClassNodeList):
3701         (WebCore::ClassNodeList::~ClassNodeList):
3702         * dom/ClassNodeList.h:
3703         * dom/ContainerNode.cpp:
3704         (WebCore::ContainerNode::childrenChanged):
3705         * dom/DynamicNodeList.cpp:
3706         (WebCore::DynamicSubtreeNodeList::DynamicSubtreeNodeList):
3707         (WebCore::DynamicSubtreeNodeList::~DynamicSubtreeNodeList):
3708         (WebCore::DynamicSubtreeNodeList::length):
3709         (WebCore::DynamicSubtreeNodeList::itemForwardsFromCurrent):
3710         (WebCore::DynamicSubtreeNodeList::itemBackwardsFromCurrent):
3711         (WebCore::DynamicSubtreeNodeList::item):
3712         (WebCore::DynamicNodeList::itemWithName):
3713         (WebCore::DynamicSubtreeNodeList::isDynamicNodeList):
3714         (WebCore::DynamicSubtreeNodeList::invalidateCache):
3715         (WebCore::DynamicSubtreeNodeList::Caches::Caches):
3716         (WebCore::DynamicSubtreeNodeList::Caches::create):
3717         (WebCore::DynamicSubtreeNodeList::Caches::reset):
3718         * dom/DynamicNodeList.h:
3719         (WebCore::DynamicNodeList::DynamicNodeList):
3720         (WebCore::DynamicNodeList::~DynamicNodeList):
3721         (WebCore::DynamicNodeList::node):
3722         (WebCore::DynamicSubtreeNodeList::rootNode):
3723         * dom/NameNodeList.cpp:
3724         (WebCore::NameNodeList::NameNodeList):
3725         (WebCore::NameNodeList::~NameNodeList):
3726         * dom/NameNodeList.h:
3727         * dom/Node.cpp:
3728         (WebCore::Node::childNodes):
3729         (WebCore::Node::registerDynamicSubtreeNodeList):
3730         (WebCore::Node::unregisterDynamicSubtreeNodeList):
3731         (WebCore::Node::invalidateNodeListsCacheAfterAttributeChanged):
3732         (WebCore::Node::invalidateNodeListsCacheAfterChildrenChanged):
3733         (WebCore::Node::removeCachedClassNodeList):
3734         (WebCore::Node::removeCachedNameNodeList):
3735         (WebCore::Node::removeCachedTagNodeList):
3736         (WebCore::Node::removeCachedLabelsNodeList):
3737         (WebCore::NodeListsNodeData::invalidateCaches):
3738         (WebCore::NodeListsNodeData::isEmpty):
3739         (WebCore::NodeRareData::clearChildNodeListCache):
3740         * dom/Node.h:
3741         * dom/NodeRareData.h:
3742         (WebCore::NodeRareData::nodeLists):
3743         (WebCore::NodeRareData::ensureChildNodeListCache):
3744         * dom/TagNodeList.cpp:
3745         (WebCore::TagNodeList::TagNodeList):
3746         (WebCore::TagNodeList::~TagNodeList):
3747         * dom/TagNodeList.h:
3748         * html/LabelsNodeList.cpp:
3749         (WebCore::LabelsNodeList::LabelsNodeList):
3750         * html/LabelsNodeList.h:
3751
3752 2011-12-14  Ryosuke Niwa  <rniwa@webkit.org>
3753
3754         Push more member functions from EditCommand to CompositeEditCommand
3755         https://bugs.webkit.org/show_bug.cgi?id=74249
3756
3757         Reviewed by Enrica Casucci.
3758
3759         Moved startingRootEditableElement and endingRootEditableElement from EditCommand to EditCommandComposition,
3760         and isTypingCommand, preservesTypingStyle, shouldRetainAutocorrectionIndicator,
3761         setShouldRetainAutocorrectionIndicator, and shouldStopCaretBlinking from EditCommand to CompositeEditCommand.
3762         Also removed EditCommand::updateLayout().
3763
3764         * editing/ApplyBlockElementCommand.cpp:
3765         (WebCore::ApplyBlockElementCommand::doApply):
3766         * editing/ApplyStyleCommand.cpp:
3767         (WebCore::ApplyStyleCommand::applyBlockStyle):
3768         (WebCore::ApplyStyleCommand::applyInlineStyle):
3769         * editing/CompositeEditCommand.cpp:
3770         (WebCore::EditCommandComposition::EditCommandComposition):
3771         (WebCore::EditCommandComposition::setStartingSelection):
3772         (WebCore::EditCommandComposition::setEndingSelection):
3773         (WebCore::CompositeEditCommand::preservesTypingStyle):
3774         (WebCore::CompositeEditCommand::isTypingCommand):
3775         (WebCore::CompositeEditCommand::shouldRetainAutocorrectionIndicator):
3776         (WebCore::CompositeEditCommand::setShouldRetainAutocorrectionIndicator):
3777         (WebCore::CompositeEditCommand::addBlockPlaceholderIfNeeded):
3778         (WebCore::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
3779         (WebCore::CompositeEditCommand::moveParagraphs):
3780         * editing/CompositeEditCommand.h:
3781         (WebCore::EditCommandComposition::startingRootEditableElement):
3782         (WebCore::EditCommandComposition::endingRootEditableElement):
3783         (WebCore::CompositeEditCommand::shouldStopCaretBlinking):
3784         * editing/DeleteSelectionCommand.cpp:
3785         (WebCore::DeleteSelectionCommand::removeNode):
3786         (WebCore::DeleteSelectionCommand::fixupWhitespace):
3787         * editing/EditCommand.cpp:
3788         (WebCore::EditCommand::apply):
3789         (WebCore::EditCommand::unapply):
3790         (WebCore::EditCommand::reapply):
3791         (WebCore::EditCommand::setStartingSelection):
3792         (WebCore::EditCommand::setEndingSelection):
3793         (WebCore::EditCommand::setParent):
3794         * editing/EditCommand.h:
3795         (WebCore::EditCommand::isEditCommandComposition):
3796         * editing/Editor.cpp:
3797         (WebCore::dispatchEditableContentChangedEvents):
3798         (WebCore::Editor::appliedEditing):
3799         (WebCore::Editor::unappliedEditing):
3800         (WebCore::Editor::reappliedEditing):
3801         * editing/Editor.h:
3802         (WebCore::Editor::lastEditCommand):
3803         * editing/FrameSelection.cpp:
3804         (WebCore::FrameSelection::updateAppearance):
3805         * editing/IndentOutdentCommand.cpp:
3806         (WebCore::IndentOutdentCommand::outdentParagraph):
3807         * editing/InsertLineBreakCommand.cpp:
3808         (WebCore::InsertLineBreakCommand::doApply):
3809         * editing/InsertParagraphSeparatorCommand.cpp:
3810         (WebCore::InsertParagraphSeparatorCommand::doApply):
3811         * editing/TypingCommand.cpp:
3812         (WebCore::TypingCommand::lastTypingCommandIfStillOpenForTyping):
3813         * editing/TypingCommand.h:
3814         (WebCore::TypingCommand::shouldRetainAutocorrectionIndicator):
3815
3816 2011-12-14  Tony Chang  <tony@chromium.org>
3817
3818         Fix compile on gcc on Mac.
3819
3820         css/CSSStyleSelector.cpp:1254:166: error: unused parameter 'regionForStyling' [-Werror,-Wunused-parameter,3]
3821         css/CSSStyleSelector.cpp:1425:134: error: unused parameter 'regionForStyling' [-Werror,-Wunused-parameter,3]
3822
3823         * css/CSSStyleSelector.cpp:
3824         (WebCore::CSSStyleSelector::styleForElement):
3825         (WebCore::CSSStyleSelector::pseudoStyleForElement):
3826
3827 2011-12-14  Brady Eidson  <beidson@apple.com>
3828
3829         <rdar://problem/10576732> and https://bugs.webkit.org/show_bug.cgi?id=74533
3830         REGRESSION(r102619): Reproducible crash closing window with video + poster image inside an object element
3831
3832         Reviewed by Darin Adler.
3833
3834         Test: media/crash-closing-page-with-media-as-plugin-fallback.html
3835
3836         Switch HTMLPlugInImageElement from using document activation callbacks to using the ActiveDOMObject
3837         mechanism which will prevent the unnecessary (and crashy) work at Document teardown:
3838         * html/HTMLPlugInImageElement.cpp:
3839         (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
3840         (WebCore::HTMLPlugInImageElement::canSuspend):
3841         (WebCore::HTMLPlugInImageElement::suspend):
3842         (WebCore::HTMLPlugInImageElement::resume):
3843         * html/HTMLPlugInImageElement.h:
3844
3845 2011-12-14  Adrienne Walker  <enne@google.com>
3846
3847         [chromium] Compositor needs to set texture filtering on canvas layers
3848         https://bugs.webkit.org/show_bug.cgi?id=74530
3849
3850         Reviewed by James Robinson.
3851
3852         * platform/graphics/chromium/cc/CCCanvasLayerImpl.cpp:
3853         (WebCore::CCCanvasLayerImpl::draw):
3854
3855 2011-12-14  Tony Chang  <tony@chromium.org>
3856
3857         Remove added calls to CSSStyleSelector to gain back another 2% in page cyclers
3858         https://bugs.webkit.org/show_bug.cgi?id=74537
3859
3860         Reviewed by Ojan Vafai.
3861
3862         In r102234, calls to initForRegionStyling() were added in CSSStyleSelector.
3863         There's still a 2% perf regression in chromium page cyclers, so try removing
3864         these calls.
3865
3866         * css/CSSStyleSelector.cpp:
3867         (WebCore::CSSStyleSelector::styleForElement):
3868         (WebCore::CSSStyleSelector::pseudoStyleForElement):
3869
3870 2011-12-14  Jonathan Backer  <backer@chromium.org>
3871
3872         [chromium] Plumb through flag for enabling partial swap
3873         https://bugs.webkit.org/show_bug.cgi?id=74513
3874
3875         Reviewed by James Robinson.
3876
3877         * page/Settings.h:
3878         (WebCore::Settings::setPartialSwapEnabled):
3879         (WebCore::Settings::partialSwapEnabled):
3880         * platform/graphics/chromium/LayerRendererChromium.cpp:
3881         (WebCore::LayerRendererChromium::initialize):
3882         * platform/graphics/chromium/cc/CCLayerTreeHost.h:
3883         (WebCore::CCSettings::CCSettings):
3884
3885 2011-12-14  Mike Reed  <reed@google.com>
3886
3887         [skia] cache typeface in FontPlatformData
3888         https://bugs.webkit.org/show_bug.cgi?id=74415
3889
3890         Reviewed by Stephen White.
3891
3892         No new tests. Existing tests apply, this is just an optimization
3893         to avoid looking up the typeface on each drawText call.
3894
3895         * platform/graphics/chromium/FontChromiumWin.cpp:
3896         (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::drawGlyphs):
3897         (WebCore::Font::drawGlyphs):
3898         * platform/graphics/chromium/FontPlatformDataChromiumWin.cpp:
3899         (WebCore::createTypefaceFromHFont):
3900         (WebCore::FontPlatformData::FontPlatformData):
3901         (WebCore::FontPlatformData::operator=):
3902         (WebCore::FontPlatformData::~FontPlatformData):
3903         * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
3904         (WebCore::FontPlatformData::typeface):
3905         (WebCore::FontPlatformData::lfQuality):
3906         (WebCore::FontPlatformData::hash):
3907         (WebCore::FontPlatformData::operator==):
3908         * platform/graphics/skia/SkiaFontWin.cpp:
3909         (WebCore::setupPaintForFont):
3910         (WebCore::paintSkiaText):
3911         * platform/graphics/skia/SkiaFontWin.h:
3912
3913 2011-12-14  Simon Fraser  <simon.fraser@apple.com>
3914
3915         Make -webkit-filter animatable
3916         https://bugs.webkit.org/show_bug.cgi?id=68476
3917
3918         Reviewed by Chris Marrin.
3919         
3920         Add -webkit-filter to the list of CSS properties that are animatable. Animate
3921         it like we do transforms, by looking for matching lists of filter functions.
3922         Each kind of filter operation has a blend() method that handles blending
3923         for that filter.
3924
3925         Test: css3/filters/filter-animation.html
3926
3927         * GNUmakefile.list.am: Add FilterOperation.cpp to the build.
3928         * Target.pri: Ditto
3929         * WebCore.gypi: Ditto
3930         * WebCore.vcproj/WebCore.vcproj: Ditto
3931         * WebCore.xcodeproj/project.pbxproj: Ditto
3932         * page/animation/AnimationBase.cpp:
3933         (WebCore::blendFunc): New blendFunc() for FilterOperations, which does per-filter blending.
3934         (WebCore::AnimationBase::ensurePropertyMap): Make PropertyWrapper for filters.
3935         (WebCore::AnimationBase::AnimationBase): Adjust initialization order.
3936         * page/animation/AnimationBase.h: Adjusted the member variable order to minimize padding.
3937         (WebCore::AnimationBase::filterFunctionListsMatch): Accessor for the flag.
3938         * page/animation/ImplicitAnimation.cpp:
3939         (WebCore::ImplicitAnimation::reset):
3940         (WebCore::ImplicitAnimation::validateTransformFunctionList): Adjust comment. The "is valid" terminology is confusing.
3941         (WebCore::ImplicitAnimation::checkForMatchingFilterFunctionLists): New method to check for matching lists
3942         of filter functions.
3943         * page/animation/ImplicitAnimation.h:
3944         * page/animation/KeyframeAnimation.cpp:
3945         (WebCore::KeyframeAnimation::KeyframeAnimation):
3946         (WebCore::KeyframeAnimation::checkForMatchingFilterFunctionLists): New method to check for matching lists
3947         of filter functions.
3948         * page/animation/KeyframeAnimation.h:
3949         * rendering/style/FilterOperation.cpp: Added.
3950         (WebCore::BasicColorMatrixFilterOperation::blend):
3951         (WebCore::BasicColorMatrixFilterOperation::passthroughAmount):
3952         (WebCore::BasicComponentTransferFilterOperation::blend):
3953         (WebCore::BasicComponentTransferFilterOperation::passthroughAmount): Different filters have
3954         different values for m_amount for the "passthrough" behavior. This method returns the appropriate value.
3955         (WebCore::GammaFilterOperation::blend):
3956         (WebCore::BlurFilterOperation::blend):
3957         (WebCore::DropShadowFilterOperation::blend):
3958         * rendering/style/FilterOperation.h:
3959         (WebCore::FilterOperation::blend):
3960         (WebCore::PassthroughFilterOperation::create): New "no-op" filter.
3961         (WebCore::PassthroughFilterOperation::operator==):
3962         (WebCore::PassthroughFilterOperation::PassthroughFilterOperation):
3963         * rendering/style/FilterOperations.cpp:
3964         (WebCore::FilterOperations::operationsMatch):
3965         * rendering/style/FilterOperations.h:
3966
3967 2011-12-14  Adam Klein  <adamk@chromium.org>
3968
3969         Broaden support for mutation observation of attributes
3970         https://bugs.webkit.org/show_bug.cgi?id=74448
3971
3972         Reviewed by Ryosuke Niwa.
3973
3974         The previously-landed MutationObserver support for attributes was incomplete:
3975         it didn't support mutations related to Attr nodes (methods on Attrs,
3976         setAttributeNode/removeAttributeNode on Element, or methods on NamedNodeMap).
3977
3978         This patch adds full support of mutation observation for all these cases,
3979         and adds test cases for all these situations.
3980
3981         * dom/Attr.cpp:
3982         (WebCore::Attr::setValue): Enqueue a mutation record when Attr.value is set from JS.
3983         (WebCore::Attr::childrenChanged): Enqueue a mutation record when an Attr's value
3984         changes to due additions/removals of Text children.
3985         * dom/Element.cpp:
3986         (WebCore::Element::enqueueAttributesMutationRecordIfRequested): Previously a static,
3987         expose as part of Element's interface to allow it to be re-used by NamedNodeMap and Attr.
3988         (WebCore::Element::removeAttribute): Remove enqueue call now handled by NamedNodeMap.
3989         (WebCore::Element::setAttributeInternal): Fixup call of enqueueAttributesMutationRecordIfRequested.
3990         * dom/Element.h:
3991         * dom/NamedNodeMap.cpp:
3992         (WebCore::NamedNodeMap::setNamedItem): Enqueue a mutation record when an attribute
3993         is changed via Element.attributes.setNamedItem from JS.
3994         (WebCore::NamedNodeMap::removeNamedItem): Enqueue a mutation record when an
3995         attribute is removed, either via Element.attributes.removeNamedItem or Element.removeAttribute.
3996
3997 2011-12-14  Raymond Toy  <rtoy@google.com>
3998
3999         * platform/audio/Distance.h (WebCore): 
4000
4001         Incorrect calculation for DistanceEffect linearGain
4002         https://bugs.webkit.org/show_bug.cgi?id=72871
4003
4004         Reviewed by Kenneth Russell.
4005
4006         Tests still need to be written for all distance models.  This
4007         does not add a new API and just corrects an implementation error. 
4008
4009         * platform/audio/Distance.cpp:
4010         (WebCore::DistanceEffect::linearGain): Implement correct
4011         linearGain function.  (Fix proposed by davidgaleano@hotmail.com.)
4012         * platform/audio/Distance.h: Add link to Open AL specification. 
4013         
4014
4015 2011-12-14  Ilya Tikhonovsky  <loislo@chromium.org>
4016
4017         Web Inspector: consider disabling network tracking while running the CPU profile.
4018         https://bugs.webkit.org/show_bug.cgi?id=74221
4019
4020         The WebCore instrumentation on the backend affects the performance of inspected page.
4021         As the result the CPU profiler's stats data are far away from the reality.
4022         Solution: the profiler code will temporary disable the resource tracking on backend.
4023         Side effect: the resource tree gets out of sinc because it uses Network Agent's notifications for updating the resource tree.