1 2011-12-17 David Barton <dbarton@mathscribe.com>
3 Radical sign drawn incorrectly due to refactoring typo
4 https://bugs.webkit.org/show_bug.cgi?id=74780
6 Reviewed by Dan Bernstein.
8 LayoutTests/mathml/presentation/roots.xhtml shows the bug, but apparently its .png
9 checksum is ok so run-webkit-tests can't detect the problem.
11 * rendering/mathml/RenderMathMLRoot.cpp:
12 (WebCore::RenderMathMLRoot::paint):
13 In revision 88250, one paintOffset should have been adjustedPaintOffset.
15 2011-12-17 Adrienne Walker <enne@google.com>
17 [chromium] Reverting r103011, r103135 due to Aura test failures
21 * platform/graphics/chromium/ContentLayerChromium.cpp:
22 (WebCore::ContentLayerChromium::~ContentLayerChromium):
23 * platform/graphics/chromium/GraphicsLayerChromium.cpp:
24 (WebCore::GraphicsLayerChromium::notifySyncRequired):
25 * platform/graphics/chromium/GraphicsLayerChromium.h:
26 * platform/graphics/chromium/ImageLayerChromium.cpp:
27 (WebCore::ImageLayerChromium::paintContentsIfDirty):
28 * platform/graphics/chromium/LayerChromium.cpp:
29 (WebCore::LayerChromium::setLayerTreeHost):
30 (WebCore::LayerChromium::setNeedsCommit):
31 (WebCore::LayerChromium::setParent):
32 (WebCore::LayerChromium::setMaskLayer):
33 * platform/graphics/chromium/LayerChromium.h:
34 (WebCore::LayerChromium::setReplicaLayer):
35 * platform/graphics/chromium/TiledLayerChromium.cpp:
36 (WebCore::TiledLayerChromium::setLayerTreeHost):
37 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
38 (WebCore::CCLayerTreeHost::~CCLayerTreeHost):
39 (WebCore::CCLayerTreeHost::didRecreateGraphicsContext):
40 (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface):
41 (WebCore::CCLayerTreeHost::paintLayerContents):
42 * platform/graphics/chromium/cc/CCLayerTreeHost.h:
43 (WebCore::CCLayerTreeHost::setRootLayer):
45 2011-12-16 Chris Marrin <cmarrin@apple.com>
47 Hardware acceleration of W3C Filter Effects
48 https://bugs.webkit.org/show_bug.cgi?id=68479
50 Reviewed by Simon Fraser.
52 Tests: css3/filters/effect-blur-hw.html
53 css3/filters/effect-combined-hw.html
54 css3/filters/effect-drop-shadow-hw.html
55 css3/filters/effect-grayscale-hw.html
56 css3/filters/effect-hue-rotate-hw.html
57 css3/filters/effect-invert-hw.html
58 css3/filters/effect-opacity-hw.html
59 css3/filters/effect-saturate-hw.html
60 css3/filters/effect-sepia-hw.html
62 Implement hardware acceleration of filters. If a filter is
63 on a RenderLayer and that layer has a GraphicsLayer, a test
64 is done to see if the desired filter can be rendered in hardware.
65 If so, skip rendering it when painting, and add the filters to the
66 CALayer. Currently Mac only, using CoreImage. Animation is done in
67 software, with the filters being recreated every frame. There are
68 some fidelity issues with the software renderer, but those will
69 be dealt with as bugs to be fixed.
71 * platform/graphics/GraphicsLayer.h: Pass down FilterOperations
72 (WebCore::GraphicsLayer::filter):
73 (WebCore::GraphicsLayer::setFilter):
74 * platform/graphics/ca/GraphicsLayerCA.cpp: Deferred passdown of FilterOperations to PlatformCALayer
75 (WebCore::GraphicsLayerCA::setFilter):
76 (WebCore::GraphicsLayerCA::commitLayerChangesBeforeSublayers):
77 (WebCore::GraphicsLayerCA::updateFilter):
78 (WebCore::GraphicsLayerCA::ensureStructuralLayer):
79 (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
80 * platform/graphics/ca/GraphicsLayerCA.h:
81 * platform/graphics/ca/PlatformCALayer.h:
82 * platform/graphics/ca/mac/PlatformCALayerMac.mm: Mac implementation using CI
83 (PlatformCALayer::setFilter):
84 (PlatformCALayer::filterCanBeComposited): Static function to tell GraphicsLayer if this Filter object can be rendered
85 * platform/graphics/filters/FilterOperations.cpp:
86 (WebCore::FilterOperations::operator=):
87 * platform/graphics/filters/FilterOperations.h:
88 (WebCore::FilterOperations::FilterOperations):
89 * rendering/RenderLayer.cpp: Pass filter object to GraphicsLayer
90 (WebCore::RenderLayer::rendersFilter):
91 (WebCore::RenderLayer::paintLayer):
92 (WebCore::RenderLayer::updateOrRemoveFilterEffect):
93 * rendering/RenderLayer.h:
94 * rendering/RenderLayerBacking.cpp:
95 (WebCore::RenderLayerBacking::RenderLayerBacking):
96 (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
97 (WebCore::RenderLayerBacking::updateLayerFilter):
98 (WebCore::RenderLayerBacking::updateGraphicsLayerGeometry):
99 * rendering/RenderLayerBacking.h:
100 (WebCore::RenderLayerBacking::canCompositeFilter):
102 2011-12-17 Philippe Normand <pnormand@igalia.com>
104 Unreviewed, GTK build fix after r103131.
106 * GNUmakefile.list.am: Fix typo... s/.cop/.cpp
108 2011-12-16 Benjamin Poulain <bpoulain@apple.com>
110 FEComposite does not build when you disable filters on ARMv7
111 https://bugs.webkit.org/show_bug.cgi?id=74772
113 Reviewed by David Kilzer.
115 Add the missing ENABLE(FILTERS).
117 * platform/graphics/filters/arm/FECompositeArithmeticNEON.cpp:
118 * platform/graphics/filters/arm/FECompositeArithmeticNEON.h:
120 2011-12-16 Ryosuke Niwa <rniwa@webkit.org>
122 Mac build fix after r103104.
124 * WebCore.xcodeproj/project.pbxproj:
126 2011-12-16 Adam Klein <adamk@chromium.org>
128 Consolidate before-advice regarding attribute modification into a single method
129 https://bugs.webkit.org/show_bug.cgi?id=74752
131 Reviewed by Ryosuke Niwa.
133 Adds a willModifyAttribute method to Element, meant to be called
134 before an attribute on that Element is added/removed/changed.
136 Replace most calls to Element::updateId and all calls to
137 Element::enqueueAttributesMutationRecordIfRequested with calls to
138 willModifyAttribute. Moreover, enqueueAttributesMutation... can now
139 be private since its only caller is willModifyAttribute.
141 The only remaining direct calls to updateId are in cases the entire
142 NamedNodeMap is being replaced. These are implementation details of
143 WebCore that shouldn't be exposed via MutationObservers.
145 No new tests, no expected change in behavior.
148 (WebCore::Attr::setValue):
149 (WebCore::Attr::childrenChanged): Besides the above change, use a
150 StringBuilder to build up value, and only do String -> AtomicString
153 (WebCore::Element::setAttributeInternal):
155 (WebCore::Element::willModifyAttribute):
156 * dom/NamedNodeMap.cpp:
157 (WebCore::NamedNodeMap::setNamedItem):
158 (WebCore::NamedNodeMap::removeNamedItem):
160 2011-12-16 James Robinson <jamesr@chromium.org>
162 [chromium] CCLayerDelegate and WebLayerClient do not need notifySyncRequired
163 https://bugs.webkit.org/show_bug.cgi?id=74376
165 Reviewed by Kenneth Russell.
167 CCLayerDelegate::notifySyncRequired is an odd bit of interface that we originally cargo-culted from the
168 CoreAnimation compositor implementation. It is a mechanism by which a LayerChromium instance may request a new
169 frame via its CCLayerDelegate, which in WebCore is always a GraphicsLayerClient. In practice, all
170 implementations eventually ended up routing to CCLayerTreeHost::setNeedsCommit which then made the proper
173 This patch routes all changes that would have gone through CCLayerDelegate::notifySyncRequired directly to
174 CCLayerTreeHost::setNeedsCommit, which greatly simplifies the scheduling logic.
176 There is a large amount of unit test coverage for this change, largely in LayerChromiumTest
178 * platform/graphics/chromium/GraphicsLayerChromium.cpp:
179 * platform/graphics/chromium/GraphicsLayerChromium.h:
180 * platform/graphics/chromium/LayerChromium.cpp:
181 (WebCore::LayerChromium::setNeedsCommit):
182 (WebCore::LayerChromium::insertChild):
183 * platform/graphics/chromium/LayerChromium.h:
184 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
185 (WebCore::CCLayerTreeHost::~CCLayerTreeHost):
186 (WebCore::CCLayerTreeHost::setRootLayer):
187 * platform/graphics/chromium/cc/CCLayerTreeHost.h:
188 * platform/graphics/chromium/cc/CCScopedThreadProxy.h:
189 (WebCore::CCScopedThreadProxy::runTaskIfNotShutdown):
191 2011-12-16 Adam Klein <adamk@chromium.org>
193 Fix typo in MarkupTokenBase: rename takeAtributes to takeAttributes
194 https://bugs.webkit.org/show_bug.cgi?id=74766
196 Reviewed by Darin Adler.
198 * html/parser/HTMLConstructionSite.cpp:
199 (WebCore::HTMLConstructionSite::insertHTMLHtmlStartTagBeforeHTML):
200 (WebCore::HTMLConstructionSite::insertScriptElement):
201 (WebCore::HTMLConstructionSite::createElement):
202 (WebCore::HTMLConstructionSite::createHTMLElement):
203 * html/parser/HTMLTreeBuilder.cpp:
204 (WebCore::HTMLTreeBuilder::attributesForIsindexInput):
205 * xml/parser/MarkupTokenBase.h:
206 (WebCore::AtomicMarkupTokenBase::takeAttributes):
208 2011-12-16 Adam Barth <abarth@webkit.org>
210 <option><span><option> doesn't parse correctly
211 https://bugs.webkit.org/show_bug.cgi?id=74760
213 Reviewed by Eric Seidel.
215 The <option> start tag shouldn't be quite as aggressive in closing open
216 <option> tags. I'm not sure whether this was a change in the spec or a
217 mistranscription, but this patch causes us to match the spec. I've
218 checked the other optionTag checks, and they all seem to be correct.
220 * html/parser/HTMLTreeBuilder.cpp:
222 2011-12-16 Rafael Weinstein <rafaelw@chromium.org>
224 [MutationObservers] Remove platform-dependent code in Document.cpp resulting from Mutation Event histogram collection
225 https://bugs.webkit.org/show_bug.cgi?id=73026
227 Reviewed by Ryosuke Niwa.
229 This patch adds platform/HistogramSupport which has an empty implementation for all ports
232 No tests need. This patch is just a refactor.
234 * GNUmakefile.list.am:
237 * WebCore.xcodeproj/project.pbxproj:
239 (WebCore::histogramMutationEventUsage):
240 (WebCore::Document::~Document):
241 * platform/HistogramSupport.h: Added.
242 (WebCore::HistogramSupport::histogramEnumeration):
243 * platform/chromium/HistogramSupportChromium.cpp: Added.
244 (WebCore::HistogramSupport::histogramEnumeration):
246 2011-12-16 Brady Eidson <beidson@apple.com>
248 <rdar://problem/10576732> and https://bugs.webkit.org/show_bug.cgi?id=74533
249 REGRESSION(r102619): Reproducible crash closing window with video + poster image inside an object element
251 Reviewed by Darin Adler.
253 Test: media/crash-closing-page-with-media-as-plugin-fallback.html
255 At some point documentWillBecomeInactive() was overloaded to not only notify elements they were going in to the page
256 cache but also do some other work that was necessary during Document teardown.
258 This crash occurs because we're notifying elements they're going in to the page cache at document teardown, so this
259 patch breaks that work back out in to a separate function.
262 (WebCore::Document::detach): Remove obsolete comment.
263 (WebCore::Document::documentWillBecomeInactive): Handle only accelerated compositing cleanup.
264 (WebCore::Document::documentWillSuspendForPageCache): Call documentWillBecomeInactive before notifying elements of suspension.
265 (WebCore::Document::documentDidResumeFromPageCache):
266 (WebCore::Document::registerForPageCacheSuspensionCallbacks):
267 (WebCore::Document::unregisterForPageCacheSuspensionCallbacks):
270 * history/CachedFrame.cpp:
271 (WebCore::CachedFrameBase::restore): Call the renamed documentDidResumeFromPageCache.
272 (WebCore::CachedFrame::CachedFrame): Call documentWillSuspendForPageCache instead of documentDidBecomeInactive.
274 * loader/FrameLoader.cpp:
275 (WebCore::FrameLoader::commitProvisionalLoad): Call the renamed documentDidResumeFromPageCache.
278 (WebCore::Element::documentWillSuspendForPageCache): Renamed from documentWillBecomeInactive()
279 (WebCore::Element::documentDidResumeFromPageCache): Renamed from documentDidBecomeActive()
281 Change to the renamed registration and callbacks functions in the handful of classes that use them:
282 * html/HTMLFormElement.cpp:
283 (WebCore::HTMLFormElement::~HTMLFormElement):
284 (WebCore::HTMLFormElement::parseMappedAttribute):
285 (WebCore::HTMLFormElement::documentDidResumeFromPageCache):
286 (WebCore::HTMLFormElement::willMoveToNewOwnerDocument):
287 (WebCore::HTMLFormElement::didMoveToNewOwnerDocument):
288 * html/HTMLFormElement.h:
290 * html/HTMLInputElement.cpp:
291 (WebCore::HTMLInputElement::~HTMLInputElement):
292 (WebCore::HTMLInputElement::updateType):
293 (WebCore::HTMLInputElement::parseMappedAttribute):
294 (WebCore::HTMLInputElement::needsSuspensionCallback):
295 (WebCore::HTMLInputElement::registerForSuspensionCallbackIfNeeded):
296 (WebCore::HTMLInputElement::unregisterForSuspensionCallbackIfNeeded):
297 (WebCore::HTMLInputElement::documentDidResumeFromPageCache):
298 (WebCore::HTMLInputElement::willMoveToNewOwnerDocument):
299 (WebCore::HTMLInputElement::didMoveToNewOwnerDocument):
300 * html/HTMLInputElement.h:
302 * html/HTMLPlugInImageElement.cpp:
303 (WebCore::HTMLPlugInImageElement::~HTMLPlugInImageElement):
304 (WebCore::HTMLPlugInImageElement::createRenderer):
305 (WebCore::HTMLPlugInImageElement::willMoveToNewOwnerDocument):
306 (WebCore::HTMLPlugInImageElement::didMoveToNewOwnerDocument):
307 (WebCore::HTMLPlugInImageElement::documentWillSuspendForPageCache):
308 (WebCore::HTMLPlugInImageElement::documentDidResumeFromPageCache):
309 * html/HTMLPlugInImageElement.h:
311 * svg/SVGSVGElement.cpp:
312 (WebCore::SVGSVGElement::SVGSVGElement):
313 (WebCore::SVGSVGElement::~SVGSVGElement):
314 (WebCore::SVGSVGElement::willMoveToNewOwnerDocument):
315 (WebCore::SVGSVGElement::didMoveToNewOwnerDocument):
316 (WebCore::SVGSVGElement::documentWillSuspendForPageCache):
317 (WebCore::SVGSVGElement::documentDidResumeFromPageCache):
318 * svg/SVGSVGElement.h:
320 2011-12-16 Eric Penner <epenner@google.com>
322 [chromium] Need to prepaint tiles in TiledLayerChromium
323 https://bugs.webkit.org/show_bug.cgi?id=72686
325 Reviewed by James Robinson.
327 Tests: TiledLayerChromiumTest (idlePaintOutOfMemory, pushIdlePaintTiles)
329 * platform/graphics/chromium/ContentLayerChromium.cpp:
330 (WebCore::ContentLayerChromium::idlePaintContentsIfDirty): added idle paint function
331 * platform/graphics/chromium/ContentLayerChromium.h: ditto
332 * platform/graphics/chromium/LayerChromium.h: ditto
333 (WebCore::LayerChromium::idlePaintContentsIfDirty): ditto
334 * platform/graphics/chromium/TextureManager.cpp:
335 (WebCore::TextureManager::protectTexture): removed assert for protecting a texture twice
336 * platform/graphics/chromium/TiledLayerChromium.cpp:
337 (WebCore::TiledLayerChromium::TiledLayerChromium):
338 (WebCore::TiledLayerChromium::cleanupResources):
339 (WebCore::TiledLayerChromium::updateCompositorResources): refactoring to use tile indices
340 (WebCore::TiledLayerChromium::prepareToUpdateTiles): refactored common code and made idle/visible versions
341 (WebCore::TiledLayerChromium::prepareToUpdate): ditto
342 (WebCore::TiledLayerChromium::prepareToUpdateIdle): ditto
343 (WebCore::TiledLayerChromium::needsIdlePaint):
344 (WebCore::TiledLayerChromium::idlePaintRect):
345 * platform/graphics/chromium/TiledLayerChromium.h:
346 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
347 (WebCore::CCLayerTreeHost::CCLayerTreeHost):
348 (WebCore::CCLayerTreeHost::compositeAndReadback): set flag to avoid idle paint durring composite and readback
349 (WebCore::CCLayerTreeHost::updateLayers): added idle flag parameter
350 (WebCore::CCLayerTreeHost::paintContentsIfDirty): ditto
351 (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface): ditto
352 (WebCore::CCLayerTreeHost::paintLayerContents): chooses idle or visible paint
353 * platform/graphics/chromium/cc/CCLayerTreeHost.h:
355 2011-12-16 Dean Jackson <dino@apple.com>
357 Miscellaneous Filter updates to align with spec
358 https://bugs.webkit.org/show_bug.cgi?id=74736
360 Reviewed by Simon Fraser.
362 Combine a bunch of small updates to filters where
363 we were not compliant with the specification.
365 - blur() only takes one value, not two
366 - blur() does not accept percentages. This allowed us
367 to stop passing the borderBoxSize around while building
368 the filter chain or calculating visual overflow.
369 - gamma() and sharpen() removed
370 - brightness() and contrast() added
372 Tests: css3/filters/effect-brightness.html
373 css3/filters/effect-contrast.html
375 * css/CSSComputedStyleDeclaration.cpp:
376 (WebCore::CSSComputedStyleDeclaration::valueForFilter): Create new
377 variations on component transfer functions for brightness() and
378 contrast() effects. Also remove sharpen() and gamma().
380 (WebCore::filterInfoForName):
381 (WebCore::CSSParser::parseBuiltinFilterArguments): Ditto, and blur
382 only takes one argument.
383 * css/CSSStyleSelector.cpp:
384 (WebCore::filterOperationForType):
385 (WebCore::CSSStyleSelector::createFilterOperations): Ditto, and
386 use ->isPercentage() to test rather than getting the type.
387 * css/WebKitCSSFilterValue.cpp:
388 (WebCore::WebKitCSSFilterValue::customCssText):
389 * css/WebKitCSSFilterValue.h:
390 * css/WebKitCSSFilterValue.idl: Remove sharpen and gamma, add
391 brightness and contrast.
392 * platform/graphics/filters/FilterOperation.cpp:
393 (WebCore::BlurFilterOperation::blend): Blurs only need to blend
394 between one standard deviation parameter.
395 * platform/graphics/filters/FilterOperation.h: Remove sharpen and
396 gamma, add brightness and contrast.
397 (WebCore::BlurFilterOperation::create):
398 (WebCore::BlurFilterOperation::stdDeviation):
399 (WebCore::BlurFilterOperation::operator==):
400 (WebCore::BlurFilterOperation::BlurFilterOperation): Blur only takes
401 one standard deviation / radius parameter.
402 * platform/graphics/filters/FilterOperations.cpp:
403 (WebCore::outsetSizeForBlur):
404 (WebCore::FilterOperations::getOutsets): No need for borderBox now.
405 * platform/graphics/filters/FilterOperations.h:
406 * rendering/FilterEffectRenderer.cpp:
407 (WebCore::FilterEffectRenderer::build): Build new effect types.
408 * rendering/FilterEffectRenderer.h:
409 * rendering/RenderBox.cpp:
410 (WebCore::RenderBox::addVisualEffectOverflow): No need to pass
411 borderBox size when calculating overflow on filter.
412 * rendering/RenderLayer.cpp:
413 (WebCore::RenderLayer::updateOrRemoveFilterEffect):
414 * rendering/style/RenderStyle.h:
415 (WebCore::InheritedFlags::getFilterOutsets): Ditto.
417 2011-12-16 Andreas Kling <kling@webkit.org>
419 Unreviewed debug build fix after r103115.
422 (WebCore::Document::cachedCollection):
424 2011-12-16 Mark Hahnenberg <mhahnenberg@apple.com>
430 Unreviewed test fix. All Windows tests were crashing when objects who were pointing to
431 static data members across DLL boundaries were getting garbage in their pointers.
434 * bindings/js/JSDOMWrapper.cpp:
435 * bindings/js/JSDOMWrapper.h:
437 2011-12-16 Ryosuke Niwa <rniwa@webkit.org>
439 Rename registerCommandFor(Undo|Redo) to register(Undo|Redo)Step
440 https://bugs.webkit.org/show_bug.cgi?id=74748
442 Reviewed by Eric Seidel.
444 Renamed registerCommandForUndo and registerCommandForRedo to
445 registerUndoStep and registerRedoStep respectively.
447 * editing/Editor.cpp:
448 (WebCore::Editor::appliedEditing):
449 (WebCore::Editor::unappliedEditing):
450 (WebCore::Editor::reappliedEditing):
451 * loader/EmptyClients.h:
452 (WebCore::EmptyEditorClient::registerUndoStep):
453 (WebCore::EmptyEditorClient::registerRedoStep):
454 * page/EditorClient.h:
456 2011-12-16 Tim Horton <timothy_horton@apple.com>
458 Canvas should respect backing store scale ratio when used as drawImage() source
459 https://bugs.webkit.org/show_bug.cgi?id=74758
460 <rdar://problem/10350194>
462 Reviewed by Simon Fraser.
464 Interpret the source rectangle passed into drawImage() when using a Canvas source in the source Canvas coordinate space,
465 instead of in the backing store coordinate space, without changing the behavior of drawImage(canvas, x, y).
469 * html/HTMLCanvasElement.cpp:
470 (WebCore::HTMLCanvasElement::convertDeviceToLogical):
471 * html/HTMLCanvasElement.h:
472 * html/canvas/CanvasRenderingContext2D.cpp:
473 (WebCore::CanvasRenderingContext2D::drawImage):
475 2011-12-16 Anders Carlsson <andersca@apple.com>
477 Subpixel antialiasing not working in tiled mode
478 https://bugs.webkit.org/show_bug.cgi?id=74759
480 Reviewed by Simon Fraser.
482 Call setContentsOpaque(true) on the main frame render view layer so subpixel aa will be used
483 when drawing text into that layer.
485 * rendering/RenderLayerBacking.cpp:
486 (WebCore::RenderLayerBacking::createPrimaryGraphicsLayer):
488 2011-12-16 Ryosuke Niwa <rniwa@webkit.org>
490 invalidateNodeListsCacheAfterAttributeChanged has too many callers
491 https://bugs.webkit.org/show_bug.cgi?id=74692
493 Reviewed by Sam Weinig.
495 Call invalidateNodeListsCacheAfterAttributeChanged in Element::updateAfterAttributeChanged instead of
496 parsedMappedAttribute of various elements. Also make invalidateNodeListsCacheAfterAttributeChanged take
497 the qualified name of the changed attribute so that we can exit early when the changed attribute isn't
498 one of attributes we care.
500 In addition, added a missing call to invalidateNodeListsCacheAfterAttributeChanged in Attr::setValue.
502 Test: fast/dom/Attr/invalidate-nodelist-after-attr-setvalue.html
505 (WebCore::Attr::childrenChanged):
507 (WebCore::Element::updateAfterAttributeChanged):
508 * dom/NamedNodeMap.cpp:
509 (WebCore::NamedNodeMap::addAttribute):
510 (WebCore::NamedNodeMap::removeAttribute):
512 (WebCore::Node::invalidateNodeListsCacheAfterAttributeChanged):
514 * dom/StyledElement.cpp:
515 (WebCore::StyledElement::classAttributeChanged):
516 * html/HTMLAnchorElement.cpp:
517 (WebCore::HTMLAnchorElement::parseMappedAttribute):
518 * html/HTMLAppletElement.cpp:
519 (WebCore::HTMLAppletElement::parseMappedAttribute):
520 * html/HTMLElement.cpp:
521 (WebCore::HTMLElement::parseMappedAttribute):
522 * html/HTMLEmbedElement.cpp:
523 (WebCore::HTMLEmbedElement::parseMappedAttribute):
524 * html/HTMLFormElement.cpp:
525 (WebCore::HTMLFormElement::parseMappedAttribute):
526 * html/HTMLFrameElementBase.cpp:
527 (WebCore::HTMLFrameElementBase::parseMappedAttribute):
528 * html/HTMLIFrameElement.cpp:
529 (WebCore::HTMLIFrameElement::parseMappedAttribute):
530 * html/HTMLImageElement.cpp:
531 (WebCore::HTMLImageElement::parseMappedAttribute):
532 * html/HTMLMapElement.cpp:
533 (WebCore::HTMLMapElement::parseMappedAttribute):
534 * html/HTMLMetaElement.cpp:
535 (WebCore::HTMLMetaElement::parseMappedAttribute):
536 * html/HTMLObjectElement.cpp:
537 (WebCore::HTMLObjectElement::parseMappedAttribute):
538 * html/HTMLParamElement.cpp:
539 (WebCore::HTMLParamElement::parseMappedAttribute):
541 2011-12-16 Andreas Kling <kling@webkit.org>
543 Cache and reuse HTMLCollections exposed by Document.
544 <http://webkit.org/b/71956>
546 Reviewed by Antti Koivisto.
548 Let Document cache the various HTMLCollection objects it exposes.
549 This is a behavior change in two ways:
551 1) The lifetime of returned collections is now tied to the lifetime
552 of the Document. This matches the behavior of Firefox and Opera.
554 2) The cached collections returned by document are now exactly equal
555 to those returned by subsequent calls to the same getters.
557 This reduces memory consumption by ~800 kB (on 64-bit) when loading
558 the full HTML5 spec. document.links was called 34001 times, yielding
559 34001 separate HTMLCollections, and now we only need 1.
561 The document.all collection retains the old behavior, as caching it
562 will be a bit more complicated.
564 To avoid a reference cycle between Document and HTMLCollection,
565 collections that are cached on Document do not retained their base
566 node pointer (controlled by a m_baseIsRetained flag.)
568 Tests: fast/dom/document-collection-idempotence.html
572 (WebCore::Document::detach):
573 (WebCore::Document::cachedCollection):
574 (WebCore::Document::images):
575 (WebCore::Document::applets):
576 (WebCore::Document::embeds):
577 (WebCore::Document::plugins):
578 (WebCore::Document::objects):
579 (WebCore::Document::scripts):
580 (WebCore::Document::links):
581 (WebCore::Document::forms):
582 (WebCore::Document::anchors):
584 * html/HTMLCollection.cpp:
585 (WebCore::HTMLCollection::HTMLCollection):
586 (WebCore::HTMLCollection::createForCachingOnDocument):
587 (WebCore::HTMLCollection::~HTMLCollection):
588 (WebCore::HTMLCollection::itemAfter):
589 * html/HTMLCollection.h:
590 (WebCore::HTMLCollection::base):
592 2011-12-16 Anders Carlsson <andersca@apple.com>
594 Add a pretty dumb tile cache to WebTileCacheLayer
595 https://bugs.webkit.org/show_bug.cgi?id=74753
597 Reviewed by Simon Fraser.
599 * WebCore.xcodeproj/project.pbxproj:
600 * platform/graphics/ca/GraphicsLayerCA.cpp:
601 (WebCore::GraphicsLayerCA::requiresTiledLayer):
602 If a layer is a tile cache layer, we never want to swap it out for a tiled layer.
604 (WebCore::GraphicsLayerCA::swapFromOrToTiledLayer):
605 Assert that we don't have a tile cache layer.
607 * platform/graphics/ca/mac/PlatformCALayerMac.mm:
608 (PlatformCALayer::PlatformCALayer):
609 If we have a tile cache layer, add its tile container to the list of custom sublayers.
611 * platform/graphics/ca/mac/TileCache.h: Added.
612 (WebCore::TileCache::tileContainerLayer):
613 Return the tile container layer.
615 * platform/graphics/ca/mac/TileCache.mm: Added.
616 (WebCore::TileCache::tileCacheLayerBoundsChanged):
617 Resize the tile grid if necessary.
619 (WebCore::TileCache::setNeedsDisplayInRect):
620 Invalidate the necessary tiles.
622 (WebCore::TileCache::drawLayer):
623 Set up the transform and draw the layer.
625 (WebCore::TileCache::getTileRangeForRect):
626 Given a rect, return the range of tiles that it covers.
628 (WebCore::TileCache::numTilesForGridSize):
629 Given a size, return how many tiles are needed to completely cover it.
631 (WebCore::TileCache::resizeTileGrid):
632 Create new tile layers if needed, or reuse already existing ones.
634 (WebCore::TileCache::tileLayerAtPosition):
635 Given a position in the grid, return the tile layer.
637 (WebCore::TileCache::createTileLayer):
638 Create a WebTileLayer and set it up.
640 * platform/graphics/ca/mac/WebTileCacheLayer.h:
641 * platform/graphics/ca/mac/WebTileCacheLayer.mm:
642 (-[WebTileCacheLayer setBounds:]):
643 (-[WebTileCacheLayer setNeedsDisplayInRect:]):
644 (-[WebTileCacheLayer tileContainerLayer]):
645 Call down to the tile cache object.
647 * platform/graphics/ca/mac/WebTileLayer.h: Added.
648 * platform/graphics/ca/mac/WebTileLayer.mm: Added.
650 (-[WebTileLayer drawInContext:]):
651 Ask the tile cache to draw the given layer.
653 (-[WebTileLayer setTileCache:WebCore::]):
655 2011-12-16 Sam Weinig <sam@webkit.org>
657 Give PlatformEvents a base class
658 https://bugs.webkit.org/show_bug.cgi?id=74685
660 Reviewed by Anders Carlsson.
662 Add a base class for PlatformMouseEvent, PlatformKeyboardEvent, PlatformWheelEvent
663 and PlatformGestureEvent and move Type enumeration and modifiers down to it.
666 * GNUmakefile.list.am:
670 * WebCore.vcproj/WebCore.vcproj:
671 * WebCore.xcodeproj/project.pbxproj:
674 * platform/PlatformEvent.cpp: Added.
675 * platform/PlatformEvent.h: Added.
676 (WebCore::PlatformEvent::type):
677 (WebCore::PlatformEvent::shiftKey):
678 (WebCore::PlatformEvent::ctrlKey):
679 (WebCore::PlatformEvent::altKey):
680 (WebCore::PlatformEvent::metaKey):
681 (WebCore::PlatformEvent::modifiers):
682 (WebCore::PlatformEvent::PlatformEvent):
685 * accessibility/mac/WebAccessibilityObjectWrapper.mm:
686 (-[WebAccessibilityObjectWrapper accessibilityShowContextMenu]):
687 * dom/KeyboardEvent.cpp:
688 (WebCore::eventTypeForKeyboardEventType):
689 * dom/MouseEvent.cpp:
690 (WebCore::MouseEvent::create):
691 * page/DragController.cpp:
692 (WebCore::createMouseEvent):
693 * page/EventHandler.cpp:
694 (WebCore::EventHandler::handleGestureEvent):
695 (WebCore::EventHandler::sendContextMenuEventForKey):
696 (WebCore::EventHandler::fakeMouseMoveEventTimerFired):
697 (WebCore::EventHandler::handleAccessKey):
698 (WebCore::EventHandler::keyEvent):
699 (WebCore::EventHandler::handleDrag):
700 * page/blackberry/EventHandlerBlackBerry.cpp:
701 (WebCore::EventHandler::accessKeyModifiers):
702 * page/chromium/EventHandlerChromium.cpp:
703 (WebCore::EventHandler::accessKeyModifiers):
704 * page/efl/EventHandlerEfl.cpp:
705 (WebCore::EventHandler::accessKeyModifiers):
706 * page/gtk/EventHandlerGtk.cpp:
707 (WebCore::EventHandler::accessKeyModifiers):
708 * page/mac/EventHandlerMac.mm:
709 (WebCore::EventHandler::accessKeyModifiers):
710 * page/qt/EventHandlerQt.cpp:
711 (WebCore::EventHandler::accessKeyModifiers):
712 * page/win/EventHandlerWin.cpp:
713 (WebCore::EventHandler::accessKeyModifiers):
714 * page/wx/EventHandlerWx.cpp:
715 (WebCore::EventHandler::accessKeyModifiers):
716 * platform/PlatformGestureEvent.h:
717 (WebCore::PlatformGestureEvent::PlatformGestureEvent):
718 * platform/PlatformKeyboardEvent.h:
719 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
720 (WebCore::PlatformKeyboardEvent::isKeypad):
721 * platform/PlatformMouseEvent.h:
722 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
723 (WebCore::PlatformMouseEvent::button):
724 * platform/PlatformWheelEvent.h:
725 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
726 * platform/ScrollAnimatorNone.cpp:
727 (WebCore::ScrollAnimatorNone::zoom):
728 (WebCore::ScrollAnimatorNone::handleGestureEvent):
729 * platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:
730 (WebCore::toWebCorePlatformKeyboardEventType):
731 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
732 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
733 * platform/chromium/GestureRecognizerChromium.cpp:
734 (WebCore::GestureRecognizerChromium::appendTapDownGestureEvent):
735 (WebCore::GestureRecognizerChromium::appendClickGestureEvent):
736 (WebCore::GestureRecognizerChromium::appendDoubleClickGestureEvent):
737 (WebCore::GestureRecognizerChromium::appendScrollGestureBegin):
738 (WebCore::GestureRecognizerChromium::appendScrollGestureEnd):
739 (WebCore::GestureRecognizerChromium::appendScrollGestureUpdate):
740 * platform/chromium/PlatformKeyboardEventChromium.cpp:
741 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
742 * platform/chromium/PopupContainer.cpp:
743 (WebCore::PopupContainer::handleGestureEvent):
744 * platform/chromium/PopupListBox.cpp:
745 (WebCore::isCharacterTypeEvent):
746 (WebCore::PopupListBox::handleKeyEvent):
747 * platform/chromium/ScrollAnimatorChromiumMac.mm:
748 (WebCore::ScrollAnimatorChromiumMac::handleGestureEvent):
749 * platform/efl/PlatformKeyboardEventEfl.cpp:
750 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
751 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
752 * platform/efl/PlatformMouseEventEfl.cpp:
753 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
754 * platform/efl/PlatformWheelEventEfl.cpp:
755 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
756 * platform/gtk/PlatformKeyboardEventGtk.cpp:
757 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
758 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
759 * platform/gtk/PlatformMouseEventGtk.cpp:
760 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
761 * platform/gtk/PlatformWheelEventGtk.cpp:
762 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
763 * platform/ios/KeyEventIOS.mm:
764 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
765 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
766 * platform/mac/KeyEventMac.mm:
767 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
768 * platform/mac/PlatformMouseEventMac.mm:
769 (WebCore::mouseEventForNSEvent):
770 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
771 * platform/mac/ScrollAnimatorMac.mm:
772 (WebCore::ScrollAnimatorMac::handleGestureEvent):
773 * platform/mac/WheelEventMac.mm:
774 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
775 * platform/qt/PlatformKeyboardEventQt.cpp:
776 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
777 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
778 * platform/qt/PlatformMouseEventQt.cpp:
779 (WebCore::mouseEventTypeAndMouseButtonFromQEvent):
780 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
781 * platform/qt/WheelEventQt.cpp:
782 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
783 * platform/win/KeyEventWin.cpp:
784 (WebCore::isKeypadEvent):
785 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
786 * platform/win/PlatformMouseEventWin.cpp:
787 (WebCore::messageToEventType):
788 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
789 * platform/win/WheelEventWin.cpp:
790 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
791 * platform/wx/KeyboardEventWx.cpp:
792 (WebCore::PlatformKeyboardEvent::PlatformKeyboardEvent):
793 (WebCore::PlatformKeyboardEvent::disambiguateKeyDownEvent):
794 * platform/wx/MouseEventWx.cpp:
795 (WebCore::typeFromMouseEvent):
796 (WebCore::PlatformMouseEvent::PlatformMouseEvent):
797 * platform/wx/MouseWheelEventWx.cpp:
798 (WebCore::PlatformWheelEvent::PlatformWheelEvent):
799 * plugins/mac/PluginViewMac.mm:
800 (WebCore::PluginView::handleKeyboardEvent):
801 * testing/Internals.cpp:
802 (WebCore::Internals::setZoomAnimatorTransform):
803 Switch to using new names/class modifier as necessary.
805 2011-12-16 Adam Barth <abarth@webkit.org>
807 <!doctype html><div><body><frameset> doesn't parse correctly
808 https://bugs.webkit.org/show_bug.cgi?id=74745
810 Reviewed by Eric Seidel.
812 We were missing one place the spec tells us to set this bool.
814 Tests: html5lib/runner.html
816 * html/parser/HTMLTreeBuilder.cpp:
818 2011-12-16 Jarred Nicholls <jarred@sencha.com>
820 Support HTML documents in XHR.responseXML
821 https://bugs.webkit.org/show_bug.cgi?id=74626
823 Latest W3C XHR spec details for the responseXML attribute:
824 http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#the-responsexml-attribute
825 http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#document-response-entity-body
827 XHR.responseXML was not compliant per the latest editor's draft of the XHR spec.
828 The following compliance issue have been corrected:
829 - A responseType of "text" should disallow access to responseXML by throwing an InvalidState exception.
830 - When the error flag is toggled, responseXML should return "null" immediately and not attempt to create a new Document.
831 - responseXML should return a valid HTML document when the MIME type is "text/html", but only when the caller has
832 explicitly set responseType to "document".
834 Reviewed by Alexey Proskuryakov.
836 Tests: fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-quirks.html
837 fast/xmlhttprequest/xmlhttprequest-responseXML-html-document-responsetype-strict.html
838 fast/xmlhttprequest/xmlhttprequest-responseXML-html-no-responsetype.html
839 fast/xmlhttprequest/xmlhttprequest-responseXML-invalid-xml.html
840 fast/xmlhttprequest/xmlhttprequest-responseXML-xml-document-responsetype.html
841 fast/xmlhttprequest/xmlhttprequest-responseXML-xml-text-responsetype.html
843 * xml/XMLHttpRequest.cpp:
844 (WebCore::XMLHttpRequest::responseXML):
845 (WebCore::XMLHttpRequest::clearResponseBuffers):
846 * xml/XMLHttpRequest.h: Rename m_responseXML to m_responseDocument
847 (WebCore::XMLHttpRequest::optionalResponseXML):
849 2011-12-16 Ryosuke Niwa <rniwa@webkit.org>
851 Only EditCommandComposition should implement unapply and reapply
852 https://bugs.webkit.org/show_bug.cgi?id=74490
854 Reviewed by Eric Seidel.
856 Introduce new abstract class UndoStep to replace EditCommand for EditorClient, and make EditCommand
859 * GNUmakefile.list.am:
863 * WebCore.vcproj/WebCore.vcproj:
864 * WebCore.xcodeproj/project.pbxproj:
865 * editing/CompositeEditCommand.cpp:
866 (WebCore::EditCommandComposition::create): Takes EditAction instead of boolean for CreateLinkCommand.
867 (WebCore::EditCommandComposition::EditCommandComposition): Ditto.
868 (WebCore::EditCommandComposition::unapply): Moved from EditCommand; we don't have to call isTopLevelCommand
869 anymore because EditCommandComposition is always top-level. In fact, the only thing unapply/reapply do
870 in addition to what doUnapply/doReapply do for sub-level commands is disabling and enabling delete button
871 and defining an event queue scope. However, these can be done at top-level command anyway, so we now only call
872 doApply for sub-level commands.
873 (WebCore::EditCommandComposition::reapply): Ditto.
874 (WebCore::EditCommandComposition::setStartingSelection): Added.
875 (WebCore::EditCommandComposition::setEndingSelection): Added.
876 (WebCore::applyCommand): Moved from EditCommand.
877 (WebCore::CompositeEditCommand::apply): Moved from EditCommand; doesn't call isTopLevelCommand for the same reason.
878 (WebCore::CompositeEditCommand::ensureComposition):
879 (WebCore::CompositeEditCommand::applyCommandToComposite): Call doApply instead of apply for the same reason.
880 * editing/CompositeEditCommand.h:
881 (WebCore::EditCommandComposition::wasCreateLinkCommand):
882 (WebCore::EditCommandComposition::startingSelection): Added.
883 (WebCore::EditCommandComposition::endingSelection): Added.
884 * editing/EditCommand.cpp:
885 (WebCore::EditCommand::setStartingSelection):
886 (WebCore::EditCommand::setEndingSelection):
887 (WebCore::SimpleEditCommand::doReapply): Moved from EditCommand.
888 * editing/EditCommand.h:
889 * editing/UndoStep.h: Added.
890 (WebCore::UndoStep::~UndoStep):
891 * loader/EmptyClients.h:
892 (WebCore::EmptyEditorClient::shouldInsertNode):
893 (WebCore::EmptyEditorClient::didSetSelectionTypesForPasteboard):
894 (WebCore::EmptyEditorClient::registerCommandForUndo): Takes UndoStep instead of EditCommand.
895 (WebCore::EmptyEditorClient::registerCommandForRedo): Ditto.
896 * page/EditorClient.h:
898 2011-12-16 Simon Fraser <simon.fraser@apple.com>
900 Allow a PlatformCALayer to own its own sublayers
901 https://bugs.webkit.org/show_bug.cgi?id=74744
903 Reviewed by Anders Carlsson.
905 GraphicsLayerCA rebuilds the sublayer list of CALayers, which would
906 blow away any custom layers that a PlatformCALayer wants to maintain
909 Make it possible for a PlatformLayerCA to indicate that it wants
910 a specific list of sublayers to be maintained as the first layers
913 * platform/graphics/ca/GraphicsLayerCA.cpp:
914 (WebCore::GraphicsLayerCA::updateSublayerList):
915 * platform/graphics/ca/PlatformCALayer.h:
916 (WebCore::PlatformCALayer::customSublayers):
917 * platform/graphics/ca/mac/PlatformCALayerMac.mm:
918 (PlatformCALayer::PlatformCALayer):
920 2011-12-16 Adam Barth <abarth@webkit.org>
922 <!DOCTYPE html><pre>

A</pre> doesn't parse correctly
923 https://bugs.webkit.org/show_bug.cgi?id=74658
925 Reviewed by Darin Adler.
927 Previously, we handled skipping newlines after <pre> in the tokenizer,
928 which isn't how the spec handles them. Instead, the spec skips them in
929 the tree builder. This isn't usually observable, except in the case of
930 an HTML entity. In that case, the tokenzier sees '&' (because the
931 entity hasn't been decoded yet), but the tree builder sees '\n' (the
932 decoded entity). This patch fixes the bug by more closely aligning our
933 implementation with the spec.
935 Test: html5lib/runner.html
937 * html/parser/HTMLTokenizer.cpp:
938 (WebCore::HTMLTokenizer::reset):
939 (WebCore::HTMLTokenizer::nextToken):
940 * html/parser/HTMLTokenizer.h:
941 * html/parser/HTMLTreeBuilder.cpp:
942 (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::skipAtMostOneLeadingNewline):
943 (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
944 (WebCore::HTMLTreeBuilder::processStartTagForInBody):
945 (WebCore::HTMLTreeBuilder::processCharacterBuffer):
946 * html/parser/HTMLTreeBuilder.h:
947 * xml/parser/MarkupTokenizerBase.h:
949 2011-12-16 Joshua Bell <jsbell@chromium.org>
951 IndexedDB: Implement IDBObjectStore.count() and IDBIndex.count()
952 https://bugs.webkit.org/show_bug.cgi?id=73686
954 Reviewed by Tony Chang.
956 These new methods open an internal cursor and iterate through the
957 results, returning the number of items found. Note that only
958 passing an IDBKeyRange is supported, not an IDBKey. Supporting
959 that will require some IDL/binding monkeying; several other
960 methods also need the same Key-or-KeyRange behavior.
962 Tests: storage/indexeddb/index-count.html
963 storage/indexeddb/objectstore-count.html
965 * bindings/v8/SerializedScriptValue.cpp:
966 (WebCore::SerializedScriptValue::numberValue):
967 * bindings/v8/SerializedScriptValue.h:
968 * storage/IDBIndex.cpp:
969 (WebCore::IDBIndex::openCursor):
970 (WebCore::IDBIndex::count):
971 * storage/IDBIndex.h:
972 (WebCore::IDBIndex::count):
973 * storage/IDBIndex.idl:
974 * storage/IDBIndexBackendImpl.cpp:
975 (WebCore::IDBIndexBackendImpl::countInternal):
976 (WebCore::IDBIndexBackendImpl::count):
977 * storage/IDBIndexBackendImpl.h:
978 * storage/IDBIndexBackendInterface.h:
979 * storage/IDBObjectStore.cpp:
980 (WebCore::IDBObjectStore::count):
981 * storage/IDBObjectStore.h:
982 (WebCore::IDBObjectStore::count):
983 * storage/IDBObjectStore.idl:
984 * storage/IDBObjectStoreBackendImpl.cpp:
985 (WebCore::IDBObjectStoreBackendImpl::count):
986 (WebCore::IDBObjectStoreBackendImpl::countInternal):
987 * storage/IDBObjectStoreBackendImpl.h:
988 * storage/IDBObjectStoreBackendInterface.h:
990 2011-12-16 Yael Aharon <yael.aharon@nokia.com>
992 Audio file in video element has a size of 0x0 .
993 https://bugs.webkit.org/show_bug.cgi?id=74738
995 Reviewed by Kenneth Rohde Christiansen.
997 When the source of a video element has audio only, the intrinsic size of the video should
998 not be 0x0. Instead, it should be the same as as no media was loaded.
1000 No new tests. An existing test is covering this case and was modified to reflect this change.
1002 * rendering/RenderVideo.cpp:
1003 (WebCore::RenderVideo::calculateIntrinsicSize):
1005 2011-12-16 Alexis Menard <alexis.menard@openbossa.org>
1007 getComputedStyle for border-width is not implemented.
1008 https://bugs.webkit.org/show_bug.cgi?id=74635
1010 Reviewed by Tony Chang.
1012 Implement getComputedStyle for border-width.
1014 Test: fast/css/getComputedStyle/getComputedStyle-border-width.html
1016 * css/CSSComputedStyleDeclaration.cpp:
1017 (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
1019 2011-12-16 Branimir Lambov <blambov@google.com>
1021 [chromium] svg/clip-path/clip-in-mask.svg fails on Windows and Linux
1022 https://bugs.webkit.org/show_bug.cgi?id=53378
1024 Reviewed by Tony Chang.
1026 Fixes a problem in Skia's clipping layer code's handling of coordinate
1027 transformations that was causing all complex clipping (including text
1028 and/or masks) to fail.
1030 The method beginLayerClippedToImage was taking rectangle coordinates
1031 in one local coordinate space, but it was applying them in a different
1032 one because of the delay between the time it is called and the actual
1033 application occurs in applyClipFromImage. The fix translates the
1034 coordinates passed to beginLayerClippedToImage to absolute ones, so
1035 that they are not affected by any change in the transform matrix, and
1036 makes sure that applyClipFromImage clears the matrix before drawing
1037 the clip layer to correctly apply the absolute coordinates.
1039 * platform/graphics/skia/PlatformContextSkia.cpp:
1040 (WebCore::PlatformContextSkia::beginLayerClippedToImage):
1041 (WebCore::PlatformContextSkia::applyClipFromImage):
1042 * platform/graphics/skia/PlatformContextSkia.h:
1044 2011-12-16 Mark Hahnenberg <mhahnenberg@apple.com>
1046 De-virtualize destructors
1047 https://bugs.webkit.org/show_bug.cgi?id=74331
1049 Reviewed by Geoffrey Garen.
1053 Doing everything here that was done to the JSCell hierarchy in JavaScriptCore.
1054 See the ChangeLog for this commit for a more in-depth description.
1056 * WebCore.exp.in: Add/remove symbols.
1057 * bindings/js/JSCanvasRenderingContext2DCustom.cpp: Remove first arg from isJSArray call.
1058 (WebCore::JSCanvasRenderingContext2D::setWebkitLineDash):
1059 * bindings/js/JSDOMBinding.cpp: Add trival destructor assert for DOMConstructorObject
1060 and DOMConstructorWithDocument.
1061 * bindings/js/JSDOMGlobalObject.cpp: Add static destroy. Add implementation for
1062 scriptExecutionContext that dispatches to different functions in subclasses
1063 depending on our current ClassInfo. We do this so that we can get rid of the
1064 virtual-ness of scriptExecutionContext, because any virtual functions will throw
1065 off the layout of the object and we'll crash at runtime.
1066 (WebCore::JSDOMGlobalObject::destroy):
1067 (WebCore::JSDOMGlobalObject::scriptExecutionContext):
1068 * bindings/js/JSDOMGlobalObject.h:
1069 * bindings/js/JSDOMWindowBase.cpp: Add static destroy.
1070 (WebCore::JSDOMWindowBase::destroy):
1071 * bindings/js/JSDOMWindowBase.h: De-virtualize scriptExecutionContext.
1072 * bindings/js/JSDOMWindowShell.cpp: Add static destroy.
1073 (WebCore::JSDOMWindowShell::destroy):
1074 * bindings/js/JSDOMWindowShell.h:
1075 * bindings/js/JSDOMWrapper.cpp: Add trivial destructor assert.
1076 * bindings/js/JSDOMWrapper.h: Add a ClassInfo to JSDOMWrapper since it now overrides
1077 a MethodTable function. Remove vtableAnchor virtual function.
1078 * bindings/js/JSImageConstructor.cpp: Add trivial destructor assert.
1079 * bindings/js/JSNodeCustom.cpp: Change implementation of pushEventHandlerScope so that
1080 it dispatches to the correct function depending on the
1081 identity of the class as specified by the ClassInfo.
1082 See JSDOMGlobalObject::scriptExecutionContext for explanation.
1083 (WebCore::JSNode::pushEventHandlerScope):
1084 * bindings/js/JSWebSocketCustom.cpp: Remove first arg to isJSArray call.
1085 (WebCore::JSWebSocketConstructor::constructJSWebSocket):
1086 * bindings/js/JSWorkerContextBase.cpp: Add static destroy.
1087 (WebCore::JSWorkerContextBase::destroy):
1088 * bindings/js/JSWorkerContextBase.h:
1089 * bindings/js/ScriptValue.cpp: Remove first arg to isJSArray call.
1090 (WebCore::jsToInspectorValue):
1091 * bindings/js/SerializedScriptValue.cpp: Ditto.
1092 (WebCore::CloneSerializer::isArray):
1093 (WebCore::CloneSerializer::getSparseIndex):
1094 * bindings/scripts/CodeGeneratorJS.pm:
1095 (GenerateHeader): Remove virtual-ness of any custom pushEventHandlerScope (see
1096 JSNodeCustom::pushEventHandlerScope for explanation). Remove virtual toBoolean
1097 for anybody who masquerades as undefined, since our JSObject implementation handles
1098 this based on the TypeInfo in the Structure. Add trivial destructor assert for any
1099 class other than DOMWindow or WorkerContexts.
1100 (GenerateImplementation): Change ClassInfo definitions to use Base::s_info, since
1101 typing the parent class more than once is duplication of information and increases
1102 the likelihood of mistakes. Pass ClassInfo to TypeArrayDescriptors instead of vptr.
1103 (GenerateConstructorDefinition): Add trivial destructor assert for all generated constructors.
1104 * bridge/c/CRuntimeObject.cpp: Remove empty virtual destructor.
1105 * bridge/c/CRuntimeObject.h:
1106 * bridge/jni/jsc/JavaRuntimeObject.cpp: Ditto.
1107 * bridge/jni/jsc/JavaRuntimeObject.h:
1108 * bridge/objc/ObjCRuntimeObject.h: Ditto.
1109 * bridge/objc/ObjCRuntimeObject.mm:
1110 * bridge/objc/objc_runtime.h: Add static destroy for ObjcFallbackObjectImp. De-virtualize
1111 toBoolean in the short term. Need longer term fix.
1112 * bridge/objc/objc_runtime.mm:
1113 (JSC::Bindings::ObjcFallbackObjectImp::destroy):
1114 * bridge/qt/qt_runtime.cpp: Add static destroy to QtRuntimeMethod.
1115 (JSC::Bindings::QtRuntimeMethod::destroy):
1116 * bridge/qt/qt_runtime.h: De-virtualize ~QtRuntimeMethod.
1117 * bridge/runtime_array.cpp: De-virtualize destructor. Add static destroy.
1118 (JSC::RuntimeArray::destroy):
1119 * bridge/runtime_array.h:
1120 * bridge/runtime_method.cpp: Remove vtableAnchor. Add static destroy.
1121 (JSC::RuntimeMethod::destroy):
1122 * bridge/runtime_method.h:
1123 * bridge/runtime_object.cpp: Add static destroy.
1124 (JSC::Bindings::RuntimeObject::destroy):
1125 * bridge/runtime_object.h:
1127 2011-12-15 Alexey Proskuryakov <ap@apple.com>
1129 Poor XPath performance when evaluating an expression that returns a lot of nodes
1130 https://bugs.webkit.org/show_bug.cgi?id=74665
1131 <rdar://problem/10517146>
1133 Reviewed by Darin Adler.
1135 No change in funcitonality. Well covered by existing tests (ran them with zero cutoff to
1136 execute the new code path).
1138 Our sorting function is optimized for small node sets in large documents, and this is the
1139 opposite of it. Added another one that traverses the whole document, adding nodes from the
1140 node set to sorted list. That doesn't grow with the number of nodes nearly as fast.
1142 Cutoff amount chosen for the document referenced in bug - this is roughly where the algorithms
1143 have the same performance on it.
1145 * xml/XPathNodeSet.cpp:
1146 (WebCore::XPath::NodeSet::sort):
1147 (WebCore::XPath::findRootNode):
1148 (WebCore::XPath::NodeSet::traversalSort):
1149 * xml/XPathNodeSet.h:
1151 2011-12-15 Antti Koivisto <antti@apple.com>
1153 https://bugs.webkit.org/show_bug.cgi?id=74677
1154 Count ResourceLoadScheduler suspends/resumes
1156 Reviewed by Andreas Kling.
1158 Using boolean is not robust when there are multiple clients calling suspendPendingRequests/resumePendingRequests.
1160 Increment and decrement suspend count instead of just setting/unsetting a boolean.
1162 * loader/ResourceLoadScheduler.cpp:
1163 (WebCore::ResourceLoadScheduler::ResourceLoadScheduler):
1164 (WebCore::ResourceLoadScheduler::servePendingRequests):
1165 (WebCore::ResourceLoadScheduler::suspendPendingRequests):
1166 (WebCore::ResourceLoadScheduler::resumePendingRequests):
1167 * loader/ResourceLoadScheduler.h:
1168 (WebCore::ResourceLoadScheduler::isSuspendingPendingRequests):
1170 2011-12-16 Adam Klein <adamk@chromium.org>
1172 Improve performance of ChildListMutationScope when no MutationObservers are present
1173 https://bugs.webkit.org/show_bug.cgi?id=74671
1175 Reviewed by Ojan Vafai.
1177 Inline ChildListMutationScope's methods (including constructor and
1178 destructor), and provide a fast-fail case when no mutation observers
1181 The code reorganization necessary for the above also removed the
1182 anonymous namespace in ChildListMutationScope.cpp, making both helper
1183 classes private inner classes of ChildListMutationScope.
1185 No new tests, refactoring only.
1187 * dom/ChildListMutationScope.cpp:
1188 (WebCore::ChildListMutationScope::MutationAccumulator::MutationAccumulator):
1189 (WebCore::ChildListMutationScope::MutationAccumulator::~MutationAccumulator):
1190 (WebCore::ChildListMutationScope::MutationAccumulator::isAddedNodeInOrder):
1191 (WebCore::ChildListMutationScope::MutationAccumulator::childAdded):
1192 (WebCore::ChildListMutationScope::MutationAccumulator::isRemovedNodeInOrder):
1193 (WebCore::ChildListMutationScope::MutationAccumulator::willRemoveChild):
1194 (WebCore::ChildListMutationScope::MutationAccumulator::enqueueMutationRecord):
1195 (WebCore::ChildListMutationScope::MutationAccumulator::clear):
1196 (WebCore::ChildListMutationScope::MutationAccumulator::isEmpty):
1197 (WebCore::ChildListMutationScope::MutationAccumulationRouter::MutationAccumulationRouter):
1198 (WebCore::ChildListMutationScope::MutationAccumulationRouter::~MutationAccumulationRouter):
1199 (WebCore::ChildListMutationScope::MutationAccumulationRouter::initialize):
1200 (WebCore::ChildListMutationScope::MutationAccumulationRouter::instance):
1201 (WebCore::ChildListMutationScope::MutationAccumulationRouter::childAdded):
1202 (WebCore::ChildListMutationScope::MutationAccumulationRouter::willRemoveChild):
1203 (WebCore::ChildListMutationScope::MutationAccumulationRouter::incrementScopingLevel):
1204 (WebCore::ChildListMutationScope::MutationAccumulationRouter::decrementScopingLevel):
1205 * dom/ChildListMutationScope.h:
1206 (WebCore::ChildListMutationScope::ChildListMutationScope):
1207 (WebCore::ChildListMutationScope::~ChildListMutationScope):
1208 (WebCore::ChildListMutationScope::childAdded):
1209 (WebCore::ChildListMutationScope::willRemoveChild):
1211 2011-12-16 Dean Jackson <dino@apple.com>
1213 Filters need to affect visual overflow
1214 https://bugs.webkit.org/show_bug.cgi?id=71930
1216 Reviewed by Simon Fraser.
1218 Make sure filters are included in visual overflow.
1219 Add a new method to calculate the expansion of overflow
1220 region given a list of FilterOperations. This is a slight
1221 duplication of code from the rendering path, but is needed
1222 because overflow is calculated before the FilterEffect
1225 Also, filters were always rendered into their
1226 input rectangle which was wrong for any effect
1227 that produced a different sized result - drop-shadow
1228 and blur. This required two changes. First, FilterEffect
1229 needed a flag to decide whether or not to clip
1230 output to primitive regions (as required by SVG but not
1231 what we want here). Second, the rendering operation
1232 draws into the rectangle the filter claims is its painting
1235 Test: css3/filters/regions-expanding.html
1237 * platform/graphics/filters/FEDropShadow.cpp:
1238 (WebCore::FEDropShadow::determineAbsolutePaintRect): Only
1239 clipToBounds if necessary.
1240 * platform/graphics/filters/FEGaussianBlur.cpp:
1241 (WebCore::FEGaussianBlur::calculateUnscaledKernelSize): CSS filters
1242 ask for the kernel size before the Filter object is created, so
1243 add a new method to return an unscaled kernel.
1244 (WebCore::FEGaussianBlur::calculateKernelSize):
1245 (WebCore::FEGaussianBlur::determineAbsolutePaintRect): Only
1246 clipToBounds if necessary.
1247 * platform/graphics/filters/FEGaussianBlur.h:
1248 * platform/graphics/filters/FEMorphology.cpp:
1249 (WebCore::FEMorphology::determineAbsolutePaintRect): Only
1250 clipToBounds if necessary.
1251 * platform/graphics/filters/FEOffset.cpp:
1252 (WebCore::FEOffset::determineAbsolutePaintRect): Only
1253 clipToBounds if necessary.
1254 * platform/graphics/filters/FilterEffect.cpp:
1255 (WebCore::FilterEffect::FilterEffect): Initialize clipToBounds
1256 as false so SVG remains unchanged.
1257 (WebCore::FilterEffect::determineAbsolutePaintRect): Only
1258 clipToBounds if necessary.
1259 * platform/graphics/filters/FilterEffect.h:
1260 (WebCore::FilterEffect::clipsToBounds):
1261 (WebCore::FilterEffect::setClipsToBounds):
1262 * rendering/FilterEffectRenderer.cpp:
1263 (WebCore::FilterEffectRenderer::build): Make sure we set our
1264 filters here to NOT clip to bounds.
1265 * rendering/FilterEffectRenderer.h:
1266 (WebCore::FilterEffectRenderer::outputRect): Asks the filter
1267 operation for the size of the result image.
1268 * rendering/RenderBlock.cpp:
1269 (WebCore::RenderBlock::computeOverflow):
1270 * rendering/RenderBox.cpp:
1271 (WebCore::RenderBox::addVisualEffectOverflow): Change the name
1272 from addBoxShadowAndBorderOverflow().
1273 * rendering/RenderBox.h:
1274 * rendering/RenderEmbeddedObject.cpp:
1275 (WebCore::RenderEmbeddedObject::layout):
1276 * rendering/RenderIFrame.cpp:
1277 (WebCore::RenderIFrame::layout):
1278 * rendering/RenderLayer.cpp:
1279 (WebCore::RenderLayer::paintLayer):
1280 * rendering/RenderLayerBacking.cpp:
1281 (WebCore::hasBoxDecorations): Change name from
1282 hasBorderOutlineOrShadow().
1283 (WebCore::hasBoxDecorationsOrBackground):
1284 (WebCore::hasBoxDecorationsOrBackgroundImage):
1285 * rendering/RenderReplaced.cpp:
1286 (WebCore::RenderReplaced::layout):
1287 * rendering/style/FilterOperations.cpp:
1288 (WebCore::outsetSizeForBlur): Return an IntSize that is the amount
1290 (WebCore::FilterOperations::hasOutsets):
1291 (WebCore::FilterOperations::getOutsets):
1292 * rendering/style/FilterOperations.h:
1293 * rendering/style/RenderStyle.h:
1294 (WebCore::InheritedFlags::getFilterOutsets):
1295 (WebCore::InheritedFlags::hasFilterOutsets):
1296 * svg/graphics/filters/SVGFEImage.cpp:
1297 (WebCore::FEImage::determineAbsolutePaintRect): Only
1298 clipToBounds if necessary.
1300 2011-12-16 Alexis Menard <alexis.menard@openbossa.org>, Jakub Wieczorek <jwieczorek@webkit.org>
1302 Add support for <ol reversed>.
1303 https://bugs.webkit.org/show_bug.cgi?id=36724
1305 The reversed attribute makes an ordered list appear with marker values
1306 decreasing from n, where n is the number of items.
1307 See: http://www.whatwg.org/specs/web-apps/current-work/#attr-ol-reversed
1309 Reviewed by Darin Adler.
1311 Tests: fast/lists/ol-reversed-dynamic-simple.html
1312 fast/lists/ol-reversed-dynamic.html
1313 fast/lists/ol-reversed-nested-items.html
1314 fast/lists/ol-reversed-nested-list.html
1315 fast/lists/ol-reversed-simple.html
1317 * html/HTMLAttributeNames.in:
1318 * html/HTMLOListElement.cpp:
1319 (WebCore::HTMLOListElement::HTMLOListElement):
1320 (WebCore::HTMLOListElement::parseMappedAttribute):
1321 (WebCore::HTMLOListElement::updateItemValues):
1322 (WebCore::HTMLOListElement::recalculateItemCount):
1323 * html/HTMLOListElement.h:
1324 (WebCore::HTMLOListElement::start):
1325 (WebCore::HTMLOListElement::isReversed):
1326 (WebCore::HTMLOListElement::itemCountChanged):
1327 (WebCore::HTMLOListElement::itemCount):
1328 * html/HTMLOListElement.idl:
1329 * rendering/RenderListItem.cpp:
1330 (WebCore::RenderListItem::nextListItem):
1331 (WebCore::previousListItem):
1332 (WebCore::RenderListItem::calcValue):
1333 (WebCore::RenderListItem::explicitValueChanged):
1334 (WebCore::previousOrNextItem):
1335 (WebCore::RenderListItem::updateListMarkerNumbers):
1336 * rendering/RenderListItem.h:
1338 2011-12-16 Mikhail Naganov <mnaganov@chromium.org>
1340 Scroll non-visible edit controls and caret into the center of the view when starting typing.
1341 https://bugs.webkit.org/show_bug.cgi?id=65027
1343 Reviewed by Ryosuke Niwa.
1345 Tests: editing/input/caret-at-the-edge-of-contenteditable.html
1346 editing/input/caret-at-the-edge-of-input.html
1347 editing/input/reveal-caret-of-multiline-contenteditable.html
1348 editing/input/reveal-caret-of-multiline-input.html
1349 editing/input/reveal-contenteditable-on-input-vertically.html
1350 editing/input/reveal-contenteditable-on-paste-vertically.html
1351 editing/input/reveal-edit-on-input-vertically.html
1352 editing/input/reveal-edit-on-paste-vertically.html
1354 * editing/Editor.cpp:
1355 (WebCore::Editor::insertTextWithoutSendingTextEvent):
1356 (WebCore::Editor::revealSelectionAfterEditingOperation):
1358 2011-12-16 Ryosuke Niwa <rniwa@webkit.org>
1360 Touch RenderStyle in an attempt to fix linking errors on Chromium Windows bots.
1362 * rendering/style/RenderStyle.h:
1364 2011-12-14 Nat Duca <nduca@chromium.org>
1366 [chromium] DelayBasedTimeSource should not change its timebase on late ticks
1367 https://bugs.webkit.org/show_bug.cgi?id=74573
1369 The original DelayBasedTimeSource was designed to shift its timebase
1370 to the tick time when a tick came back "late." The rationale was that it is
1371 better to just "start fresh" after a stutter. After profiling this,
1372 this time-rebasing just destabilizes frame rate anytime the thread gets
1373 loaded. This patch keeps the timebase stationary, leading to vastly
1374 smoother framerates when the message loop is under load.
1376 Reviewed by James Robinson.
1378 * platform/graphics/chromium/cc/CCDelayBasedTimeSource.cpp:
1379 (WebCore::CCDelayBasedTimeSource::updateState):
1381 2011-12-16 Sheriff Bot <webkit.review.bot@gmail.com>
1383 Unreviewed, rolling out r103062.
1384 http://trac.webkit.org/changeset/103062
1385 https://bugs.webkit.org/show_bug.cgi?id=74715
1387 It broke many tests (Requested by Ossy on #webkit).
1389 * html/HTMLAttributeNames.in:
1390 * html/HTMLOListElement.cpp:
1391 (WebCore::HTMLOListElement::HTMLOListElement):
1392 (WebCore::HTMLOListElement::parseMappedAttribute):
1393 * html/HTMLOListElement.h:
1394 (WebCore::HTMLOListElement::start):
1395 * html/HTMLOListElement.idl:
1396 * rendering/RenderListItem.cpp:
1397 (WebCore::previousListItem):
1398 (WebCore::RenderListItem::calcValue):
1399 (WebCore::RenderListItem::explicitValueChanged):
1400 (WebCore::RenderListItem::updateListMarkerNumbers):
1401 * rendering/RenderListItem.h:
1403 2011-12-16 Alexis Menard <alexis.menard@openbossa.org>, Jakub Wieczorek <jwieczorek@webkit.org>
1405 Add support for <ol reversed>.
1406 https://bugs.webkit.org/show_bug.cgi?id=36724
1408 The reversed attribute makes an ordered list appear with marker values
1409 decreasing from n, where n is the number of items.
1410 See: http://www.whatwg.org/specs/web-apps/current-work/#attr-ol-reversed
1412 Reviewed by Darin Adler.
1414 Tests: fast/lists/ol-reversed-dynamic-simple.html
1415 fast/lists/ol-reversed-dynamic.html
1416 fast/lists/ol-reversed-nested-items.html
1417 fast/lists/ol-reversed-nested-list.html
1418 fast/lists/ol-reversed-simple.html
1420 * html/HTMLAttributeNames.in:
1421 * html/HTMLOListElement.cpp:
1422 (WebCore::HTMLOListElement::HTMLOListElement):
1423 (WebCore::HTMLOListElement::parseMappedAttribute):
1424 (WebCore::HTMLOListElement::updateItemValues):
1425 (WebCore::HTMLOListElement::recalculateItemCount):
1426 * html/HTMLOListElement.h:
1427 (WebCore::HTMLOListElement::start):
1428 (WebCore::HTMLOListElement::isReversed):
1429 (WebCore::HTMLOListElement::itemCountChanged):
1430 (WebCore::HTMLOListElement::itemCount):
1431 * html/HTMLOListElement.idl:
1432 * rendering/RenderListItem.cpp:
1433 (WebCore::RenderListItem::nextListItem):
1434 (WebCore::previousListItem):
1435 (WebCore::RenderListItem::calcValue):
1436 (WebCore::RenderListItem::explicitValueChanged):
1437 (WebCore::previousOrNextItem):
1438 (WebCore::RenderListItem::updateListMarkerNumbers):
1439 * rendering/RenderListItem.h:
1441 2011-12-15 Stephen White <senorblanco@chromium.org>
1443 Enable CSS_FILTERS in Chromium.
1444 https://bugs.webkit.org/show_bug.cgi?id=74334
1446 Reviewed by Chris Marrin.
1448 Covered by css3/filters (when enabled).
1450 * platform/graphics/filters/FilterOperation.h:
1451 (WebCore::PassthroughFilterOperation::PassthroughFilterOperation):
1452 Since wingdi.h #define's PASSTHROUGH, #undef it after the includes.
1454 2011-12-16 Patrick Gansterer <paroga@webkit.org>
1456 Unreviewed WinCE build fix after r102979.
1458 Make everHadLayout() public accessible as it was before the change.
1460 * rendering/RenderObject.h:
1461 (WebCore::RenderObject::everHadLayout):
1463 2011-12-15 Hans Wennborg <hans@chromium.org>
1465 IndexedDB: Don't prefetch values from key cursors
1466 https://bugs.webkit.org/show_bug.cgi?id=74604
1468 Reviewed by Tony Chang.
1470 Since index key cursors don't have values, prefetching should not try
1471 to retrieve them. Doing so trips an ASSERT in debug builds.
1473 This will be tested Chromium-side.
1475 * storage/IDBCursorBackendImpl.cpp:
1476 (WebCore::IDBCursorBackendImpl::prefetchContinueInternal):
1478 2011-12-16 Yosifumi Inoue <yosin@chromium.org>
1480 [Forms] The "maxlength" attribute on "textarea" tag miscounts hard newlines
1481 https://bugs.webkit.org/show_bug.cgi?id=74686
1483 Reviewed by Kent Tamura.
1485 This patch counts LF in textarea value as two for LF to CRLF conversion on submission.
1487 No new tests. Existing tests cover all changes.
1489 * html/HTMLTextAreaElement.cpp:
1490 (WebCore::computeLengthForSubmission): Count LF as 2 for CR LF conversion on submission.
1491 (WebCore::HTMLTextAreaElement::handleBeforeTextInsertedEvent): Use computeLengthForSubmission instead of numGraphemeClusters.
1492 (WebCore::HTMLTextAreaElement::tooLong): Use computeLengthForSubmission instead of numGraphemeClusters.
1494 2011-12-16 Hajime Morrita <morrita@chromium.org>
1496 Unreviewed, rolling out r103045.
1497 http://trac.webkit.org/changeset/103045
1498 https://bugs.webkit.org/show_bug.cgi?id=74590
1500 Breaks select-script-onchange.html on Chromium Windows
1502 * html/HTMLSelectElement.cpp:
1503 (WebCore::HTMLSelectElement::typeAheadFind):
1505 2011-12-16 Carlos Garcia Campos <cgarcia@igalia.com>
1507 Unreviewed. Fix make distcheck.
1509 * GNUmakefile.list.am: Add missing header file.
1511 2011-12-16 Yosifumi Inoue <yosin@chromium.org>
1513 [Forms] Selection change by type-ahead doesn't fire 'change' event
1514 https://bugs.webkit.org/show_bug.cgi?id=74590
1516 Reviewed by Kent Tamura.
1518 Fire onchange even for type ahead selection.
1520 Test: fast/forms/select/menulist-type-ahead-find.html
1522 * html/HTMLSelectElement.cpp:
1523 (WebCore::HTMLSelectElement::typeAheadFind): Add DispatchChangeEvent when
1524 calling selectOption method.
1526 2011-12-16 Andreas Kling <kling@webkit.org>
1528 Don't call Document::body() twice in the same function.
1529 <http://webkit.org/b/74683>
1531 Reviewed by Dan Bernstein.
1533 Document::body() is O(n), so we should avoid calling it multiple
1534 times unnecessarily.
1537 (WebCore::Document::updateLayoutIgnorePendingStylesheets):
1539 2011-12-16 Daniel Sievers <sievers@chromium.org>
1541 [Chromium] Add trace events for decoding and drawing images.
1542 https://bugs.webkit.org/show_bug.cgi?id=74547
1544 Reviewed by James Robinson.
1546 * platform/graphics/skia/ImageSkia.cpp:
1547 (WebCore::drawResampledBitmap):
1548 (WebCore::paintSkBitmap):
1549 (WebCore::Image::drawPattern):
1550 * platform/graphics/skia/NativeImageSkia.cpp:
1551 (WebCore::NativeImageSkia::resizedBitmap):
1552 * platform/image-decoders/bmp/BMPImageDecoder.cpp:
1553 (WebCore::BMPImageDecoder::decode):
1554 * platform/image-decoders/gif/GIFImageDecoder.cpp:
1555 (WebCore::GIFImageDecoder::decode):
1556 * platform/image-decoders/ico/ICOImageDecoder.cpp:
1557 (WebCore::ICOImageDecoder::decode):
1558 * platform/image-decoders/jpeg/JPEGImageDecoder.cpp:
1559 (WebCore::JPEGImageDecoder::decode):
1560 * platform/image-decoders/png/PNGImageDecoder.cpp:
1561 (WebCore::PNGImageDecoder::decode):
1562 * platform/image-decoders/webp/WEBPImageDecoder.cpp:
1563 (WebCore::WEBPImageDecoder::decode):
1565 2011-12-15 Martin Robinson <mrobinson@igalia.com>
1567 Fix 'make dist' in preparation for the GTK+ release.
1569 * GNUmakefile.list.am: Add missing header.
1571 2011-12-15 Rafael Ávila de Espíndola <rafael.espindola@gmail.com>
1573 Don't create empty files on error.
1574 https://bugs.webkit.org/show_bug.cgi?id=74373
1576 Reviewed by Ryosuke Niwa.
1579 * css/makevalues.pl:
1580 * make-hash-tools.pl:
1582 2011-12-15 Yongjun Zhang <yongjun_zhang@apple.com>
1584 PODIntervalTree takes 1.7MB memory on www.nytimes.com.
1585 https://bugs.webkit.org/show_bug.cgi?id=73712
1587 Reviewed by Kenneth Russell.
1589 For a RenderBlock which has floating objects inside, we will create a PODIntervalTree and a PODArena with
1590 at least one 16KB chunk. A page could have a large number of such RenderBlocks and they could take huge
1591 amount of memory. To fix that, we can create a shared PODArena in the root RenderView. Instead of having
1592 their own PODArena, each RenderBlock with floating objects could share this PODArena to reduce memory consumption.
1594 The shared PODArena could grow unboundedly if we keep removing and adding floating objects. We can fix that
1595 by reusing the freed memory in each chunk. However, a PODArena could allocate objects of different sizes and
1596 it would be complex to keep track of the size for each allocation in PODArena. To address that, this patch
1597 added class PODFreeListArena<T> which only allocates objects of type T (hence the same size). We can then use a
1598 free list to track freed nodes inside the chunk and reuse the free nodes in future allocations.
1600 Manually tested on nytimes.com and the heap consumption of PODIntervalTree reduced from 1.7MB to 16KB. Performance
1601 doesn't regress on test PerformanceTests/Layout/floats.html.
1603 * WebCore.xcodeproj/project.pbxproj: add new header file PODFreeListArena.h.
1604 * platform/PODArena.h:
1605 (WebCore::PODArena::~PODArena): change dtor to virtual.
1606 (WebCore::PODArena::Chunk::~Chunk): ditto.
1607 * platform/PODFreeListArena.h: Added.
1608 (WebCore::PODFreeListArena::create):
1609 (WebCore::PODFreeListArena::allocateObject): allocate an object.
1610 (WebCore::PODFreeListArena::freeObject): free an object, find the right chunk and update its free list.
1611 (WebCore::PODFreeListArena::allocate): allocate memory from the free list or current chunk.
1612 (WebCore::PODFreeListArena::FreeListChunk::FreeListChunk): add m_freeList to track freed cells.
1613 (WebCore::PODFreeListArena::FreeListChunk::allocate): reuse a free cell if there is one.
1614 (WebCore::PODFreeListArena::FreeListChunk::free): make the memory taken by this object is free, and link it to m_freeList.
1615 (WebCore::PODFreeListArena::FreeListChunk::contains): check if a pointer is inside this chunk.
1616 (WebCore::PODFreeListArena::FreeListChunk::hasFreeList): check if this chunk has free cells.
1617 * platform/PODRedBlackTree.h:
1618 (WebCore::PODRedBlackTree::PODRedBlackTree): take PODFreeListArena instead of PODArena, since nodes of a particular PODRedBlackTree
1619 is always of the same size.
1620 (WebCore::PODRedBlackTree::clear): mark all nodes before clearing the tree.
1621 (WebCore::PODRedBlackTree::initIfNeeded): add initIfNeeded to take an external PODFreeListArena.
1622 (WebCore::PODRedBlackTree::add):
1623 (WebCore::PODRedBlackTree::deleteNode): mark the node free in arena after it is removed from the tree.
1624 (WebCore::PODRedBlackTree::markFree): mark all node free in the tree.
1625 * rendering/RenderBlock.cpp:
1626 (WebCore::RenderBlock::insertFloatingObject):
1627 (WebCore::RenderBlock::addOverhangingFloats):
1628 (WebCore::RenderBlock::addIntrudingFloats):
1629 (WebCore::RenderBlock::FloatingObjects::computePlacedFloatsTree): passing the shared PODFreeListArena to m_placedFloatsTree.
1630 * rendering/RenderBlock.h:
1631 (WebCore::RenderBlock::FloatingObjects::FloatingObjects):
1632 * rendering/RenderView.cpp:
1633 (WebCore::RenderView::intervalArena): create the shared PODFreeListArena lazily.
1634 * rendering/RenderView.h:
1636 2011-12-15 Tony Chang <tony@chromium.org>
1638 Unreviewed, rollout r102825 because it didn't improve performance.
1639 https://bugs.webkit.org/show_bug.cgi?id=74622
1641 * css/CSSStyleSelector.cpp:
1642 (WebCore::CSSStyleSelector::styleForElement):
1643 (WebCore::CSSStyleSelector::pseudoStyleForElement):
1645 2011-12-15 Ryosuke Niwa <rniwa@webkit.org>
1647 sizeof(RenderObject) is 32 instead of 24 on Windows
1648 https://bugs.webkit.org/show_bug.cgi?id=74646
1650 Reviewed by Darin Adler.
1652 Make all bitfields in RenderObject to unsigned and wrap them around by RenderObjectBitfields.
1653 Also add a compilation time assertion to make sure we won't grow RenderObject's size unintentionally.
1655 * rendering/RenderBlock.cpp:
1656 (WebCore::RenderBlock::layoutBlock):
1657 (WebCore::RenderBlock::layoutBlockChild):
1658 (WebCore::RenderBlock::markAllDescendantsWithFloatsForLayout):
1659 (WebCore::RenderBlock::layoutColumns):
1660 * rendering/RenderBlock.h:
1661 (WebCore::RenderBlock::FloatWithRect::FloatWithRect):
1662 * rendering/RenderObject.cpp:
1663 (WebCore::SameSizeAsRenderObject::~SameSizeAsRenderObject):
1664 (WebCore::RenderObject::RenderObject):
1665 (WebCore::RenderObject::markContainingBlocksForLayout):
1666 (WebCore::RenderObject::setPreferredLogicalWidthsDirty):
1667 (WebCore::RenderObject::invalidateContainerPreferredLogicalWidths):
1668 (WebCore::RenderObject::styleWillChange):
1669 (WebCore::RenderObject::styleDidChange):
1670 (WebCore::RenderObject::willBeDestroyed):
1671 (WebCore::RenderObject::updateDragState):
1672 * rendering/RenderObject.h:
1673 (WebCore::RenderObject::hasCounterNodeMap):
1674 (WebCore::RenderObject::setHasCounterNodeMap):
1675 (WebCore::RenderObject::childrenInline):
1676 (WebCore::RenderObject::setChildrenInline):
1677 (WebCore::RenderObject::hasColumns):
1678 (WebCore::RenderObject::setHasColumns):
1679 (WebCore::RenderObject::inRenderFlowThread):
1680 (WebCore::RenderObject::setInRenderFlowThread):
1681 (WebCore::RenderObject::isAnonymous):
1682 (WebCore::RenderObject::setIsAnonymous):
1683 (WebCore::RenderObject::isAnonymousBlock):
1684 (WebCore::RenderObject::isFloating):
1685 (WebCore::RenderObject::isPositioned):
1686 (WebCore::RenderObject::isRelPositioned):
1687 (WebCore::RenderObject::isText):
1688 (WebCore::RenderObject::isBox):
1689 (WebCore::RenderObject::isInline):
1690 (WebCore::RenderObject::isDragging):
1691 (WebCore::RenderObject::isReplaced):
1692 (WebCore::RenderObject::isHorizontalWritingMode):
1693 (WebCore::RenderObject::hasLayer):
1694 (WebCore::RenderObject::hasBoxDecorations):
1695 (WebCore::RenderObject::needsLayout):
1696 (WebCore::RenderObject::selfNeedsLayout):
1697 (WebCore::RenderObject::needsPositionedMovementLayout):
1698 (WebCore::RenderObject::needsPositionedMovementLayoutOnly):
1699 (WebCore::RenderObject::posChildNeedsLayout):
1700 (WebCore::RenderObject::needsSimplifiedNormalFlowLayout):
1701 (WebCore::RenderObject::normalChildNeedsLayout):
1702 (WebCore::RenderObject::preferredLogicalWidthsDirty):
1703 (WebCore::RenderObject::hasOverflowClip):
1704 (WebCore::RenderObject::hasTransform):
1705 (WebCore::RenderObject::node):
1706 (WebCore::RenderObject::setPositioned):
1707 (WebCore::RenderObject::setRelPositioned):
1708 (WebCore::RenderObject::setFloating):
1709 (WebCore::RenderObject::setInline):
1710 (WebCore::RenderObject::setHasBoxDecorations):
1711 (WebCore::RenderObject::setIsText):
1712 (WebCore::RenderObject::setIsBox):
1713 (WebCore::RenderObject::setReplaced):
1714 (WebCore::RenderObject::setHorizontalWritingMode):
1715 (WebCore::RenderObject::setHasOverflowClip):
1716 (WebCore::RenderObject::setHasLayer):
1717 (WebCore::RenderObject::setHasTransform):
1718 (WebCore::RenderObject::setHasReflection):
1719 (WebCore::RenderObject::hasReflection):
1720 (WebCore::RenderObject::setHasMarkupTruncation):
1721 (WebCore::RenderObject::hasMarkupTruncation):
1722 (WebCore::RenderObject::selectionState):
1723 (WebCore::RenderObject::setSelectionState):
1724 (WebCore::RenderObject::hasSelectedChildren):
1725 (WebCore::RenderObject::isMarginBeforeQuirk):
1726 (WebCore::RenderObject::isMarginAfterQuirk):
1727 (WebCore::RenderObject::setMarginBeforeQuirk):
1728 (WebCore::RenderObject::setMarginAfterQuirk):
1729 (WebCore::RenderObject::everHadLayout):
1730 (WebCore::RenderObject::RenderObjectBitfields::RenderObjectBitfields):
1731 (WebCore::RenderObject::RenderObjectBitfields::selectionState):
1732 (WebCore::RenderObject::RenderObjectBitfields::setSelectionState):
1733 (WebCore::RenderObject::setNeedsPositionedMovementLayout):
1734 (WebCore::RenderObject::setNormalChildNeedsLayout):
1735 (WebCore::RenderObject::setPosChildNeedsLayout):
1736 (WebCore::RenderObject::setNeedsSimplifiedNormalFlowLayout):
1737 (WebCore::RenderObject::setPaintBackground):
1738 (WebCore::RenderObject::setIsDragging):
1739 (WebCore::RenderObject::setEverHadLayout):
1740 (WebCore::RenderObject::setNeedsLayout):
1741 (WebCore::RenderObject::setChildNeedsLayout):
1742 * rendering/RenderObjectChildList.cpp:
1743 (WebCore::RenderObjectChildList::removeChildNode):
1744 * rendering/svg/RenderSVGContainer.cpp:
1745 (WebCore::RenderSVGContainer::layout):
1747 2011-12-15 Wei Charles <charles.wei@torchmobile.com.cn>
1749 [BlackBerry] Upstream BlackBerry porting of pluginView
1750 https://bugs.webkit.org/show_bug.cgi?id=73397
1752 Reviewed by Daniel Bates.
1754 No new tests for now.
1756 * plugins/blackberry/PluginViewBlackBerry.cpp: Added.
1758 2011-12-15 Joshua Bell <jsbell@chromium.org>
1760 IndexedDB: Can't pass DOMStringList to IDBDatabase.transaction()
1761 https://bugs.webkit.org/show_bug.cgi?id=74452
1763 Reviewed by Adam Barth.
1765 V8 code generator generated checks for DOMStringList arguments, then
1766 deferred to a function that only handled array inputs. This previously
1767 worked for IndexedDB because it would fall into a now-removed default
1770 Modified storage/indexeddb/transaction-basics.html to test this.
1772 * bindings/v8/V8Binding.cpp:
1773 (WebCore::v8ValueToWebCoreDOMStringList):
1775 2011-12-15 Adam Klein <adamk@chromium.org>
1777 Make Element::setAttributeInternal inline in an attempt to avoid function call overhead
1778 https://bugs.webkit.org/show_bug.cgi?id=74638
1780 Reviewed by Andreas Kling.
1782 In r102695, I factored common code in setAttribute into
1783 Element::setAttributeInternal. This may have caused a perf regression
1784 due to the extra function call, which inlining should eliminate.
1786 Running Dromaeo locally suggests that this will improve performance
1787 by ~9% on the "dom-attr element.property = value" test (which assigns
1788 a value to an element's id).
1791 (WebCore::Element::setAttributeInternal):
1793 2011-12-15 Mary Wu <mary.wu@torchmobile.com.cn>
1795 Upstream FileSystemBlackBerry.cpp into WebCore/platform/blackberry
1796 https://bugs.webkit.org/show_bug.cgi?id=74491
1798 Reviewed by Rob Buis.
1800 We are using POSIX porting of FileSystem, so here only implement other
1801 necessary functions.
1803 Initial upstream, no new tests.
1805 * platform/blackberry/FileSystemBlackBerry.cpp: Added.
1806 (WebCore::homeDirectoryPath):
1807 (WebCore::fileSystemRepresentation):
1808 (WebCore::unloadModule):
1809 (WebCore::openTemporaryFile):
1811 2011-12-15 Adrienne Walker <enne@google.com>
1813 [chromium] Clean up unnecessary leaf functions in GraphicsLayerChromium
1814 https://bugs.webkit.org/show_bug.cgi?id=74140
1816 Reviewed by James Robinson.
1818 Tested by existing compositor layout tests.
1820 This is a follow-on cleanup to r102196, which made some of these
1821 functions less useful than they had been in the past.
1823 * platform/graphics/chromium/GraphicsLayerChromium.cpp:
1824 (WebCore::GraphicsLayerChromium::setContentsOpaque):
1825 (WebCore::GraphicsLayerChromium::setBackfaceVisibility):
1826 (WebCore::GraphicsLayerChromium::updateLayerPreserves3D):
1827 * platform/graphics/chromium/GraphicsLayerChromium.h:
1829 2011-12-15 Kenneth Russell <kbr@google.com>
1831 Unreviewed, rolling out r103000.
1832 http://trac.webkit.org/changeset/103000
1833 https://bugs.webkit.org/show_bug.cgi?id=74658
1835 Does not handle text/plain documents correctly.
1837 * html/parser/HTMLTokenizer.cpp:
1838 * html/parser/HTMLTokenizer.h:
1839 * html/parser/HTMLTreeBuilder.cpp:
1840 * html/parser/HTMLTreeBuilder.h:
1841 * xml/parser/MarkupTokenizerBase.h:
1843 2011-12-15 James Robinson <jamesr@chromium.org>
1845 [chromium] Set the CCLayerTreeHost pointer on LayerChromium instances eagerly
1846 https://bugs.webkit.org/show_bug.cgi?id=74477
1848 Reviewed by Kenneth Russell.
1850 This enforces that the m_layerTreeHost pointer on LayerChromium instances is always up to date, instead of
1851 lazily setting it in the paintContents loop. There are two invariants:
1852 1.) If a LayerChromium is the root layer of a CCLayerTreeHost, or is reachable via the children, mask, or
1853 replica pointers from the root layer of a CCLayerTreeHost, then that LayerChromium's m_layerTreeHost pointer
1854 refers to that CCLayerTreeHost
1855 2.) If a LayerChromium is not a root layer or reachable from a root layer of any CCLayerTreeHost, its
1856 CCLayerTreeHost pointer is nil.
1858 Covered by several new layout tests in LayerChromiumTest
1860 * platform/graphics/chromium/LayerChromium.cpp:
1861 (WebCore::LayerChromium::setLayerTreeHost):
1862 (WebCore::LayerChromium::setParent):
1863 (WebCore::LayerChromium::setMaskLayer):
1864 (WebCore::LayerChromium::setReplicaLayer):
1865 * platform/graphics/chromium/LayerChromium.h:
1866 * platform/graphics/chromium/TiledLayerChromium.cpp:
1867 (WebCore::TiledLayerChromium::createTile):
1868 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
1869 (WebCore::CCLayerTreeHost::setRootLayer):
1870 (WebCore::CCLayerTreeHost::paintMaskAndReplicaForRenderSurface):
1871 (WebCore::CCLayerTreeHost::paintLayerContents):
1872 * platform/graphics/chromium/cc/CCLayerTreeHost.h:
1874 2011-12-15 Sheriff Bot <webkit.review.bot@gmail.com>
1876 Unreviewed, rolling out r102652 and r102717.
1877 http://trac.webkit.org/changeset/102652
1878 http://trac.webkit.org/changeset/102717
1879 https://bugs.webkit.org/show_bug.cgi?id=74674
1881 Broke too many webs. (Requested by kling on #webkit).
1885 2011-12-15 Anders Carlsson <andersca@apple.com>
1887 Lazily create the scrolling coordinator and add a setting for enabling it
1888 https://bugs.webkit.org/show_bug.cgi?id=74667
1890 Reviewed by Darin Adler.
1892 * WebCore.xcodeproj/project.pbxproj:
1893 Make ScrollingCoordinator.h a private header so it can be used in WebKit.
1895 (WebCore::Page::Page):
1896 Don't create the scrolling coordinator.
1898 (WebCore::Page::~Page):
1899 Check for a null scrolling coordinator.
1901 (WebCore::Page::scrollingCoordinator):
1902 Create the scrolling coordinator lazily.
1904 * page/Settings.cpp:
1905 (WebCore::Settings::Settings):
1907 (WebCore::Settings::setScrollingCoordinatorEnabled):
1908 (WebCore::Settings::scrollingCoordinatorEnabled):
1909 Add a setting for enabling the scrolling coordinator.
1911 * rendering/RenderLayerBacking.cpp:
1912 (WebCore::RenderLayerBacking::RenderLayerBacking):
1913 Use a tile cache layer for the main frame when the scrolling coordinator is neabled.
1915 2011-12-15 Gyuyoung Kim <gyuyoung.kim@samsung.com>
1917 Unreviewed. Fix build break when data-transfer-items is enabled.
1919 * platform/efl/ClipboardEfl.cpp:
1920 (WebCore::ClipboardEfl::items):
1921 * platform/efl/ClipboardEfl.h:
1923 2011-12-15 Adam Barth <abarth@webkit.org>
1925 <ruby><div><p><rp> parses incorrectly
1926 https://bugs.webkit.org/show_bug.cgi?id=74668
1928 Reviewed by Darin Adler.
1930 This patch updates our implementation to match a change to the HTML5
1931 specification regarding how <ruby> elements parse. Previously, <rp>
1932 and similar tags used to pop the stack up to the <ruby> element. Now
1933 the popping does not occur.
1935 Tests: html5lib/runner.html
1937 * html/parser/HTMLTreeBuilder.cpp:
1939 2011-12-15 Daniel Sievers <sievers@chromium.org>
1941 [Chromium] Avoid strdup() for extra argument when tracing is disabled.
1942 https://bugs.webkit.org/show_bug.cgi?id=74637
1944 Reviewed by James Robinson.
1946 * platform/chromium/TraceEvent.h:
1947 (WebCore::internal::ScopeTracer::ScopeTracer):
1949 2011-12-15 Rafael Weinstein <rafaelw@chromium.org>
1951 [MutationObservers] Add a document-level flag that can trivially be checked to avoid doing unnessary work if mutation observers absent
1952 https://bugs.webkit.org/show_bug.cgi?id=74641
1954 Reviewed by Ojan Vafai.
1956 This patch adds a byte of flags to Document, of which three bits are used to signal if any
1957 node owned by the document has a Mutation Observer of the given type. This is used to
1958 reduce the cost of discovering there are none to a single (inlined) method call and bit-check.
1959 Also, a similar byte of flags which was used to optimize a particular case when mutation observers
1960 are present has been removed, with the reasoning that we should first focus on minimizing impact on
1961 the null-case before optimizing particular in-use cases.
1963 Also, MutationObserverInterestGroup is broken out into its own file (which probably should have happened
1964 earlier, but now avoids a circular header dependency).
1966 No tests needed. This patch is just a refactor.
1969 * GNUmakefile.list.am:
1972 * WebCore.vcproj/WebCore.vcproj:
1973 * WebCore.xcodeproj/project.pbxproj:
1974 * css/CSSMutableStyleDeclaration.cpp:
1975 * dom/CharacterData.cpp:
1976 * dom/ChildListMutationScope.cpp:
1978 (WebCore::Document::Document):
1980 (WebCore::Document::hasMutationObserversOfType):
1981 (WebCore::Document::hasMutationObservers):
1982 (WebCore::Document::addMutationObserverTypes):
1984 * dom/MutationObserverInterestGroup.cpp: Added.
1985 (WebCore::MutationObserverInterestGroup::createIfNeeded):
1986 (WebCore::MutationObserverInterestGroup::MutationObserverInterestGroup):
1987 (WebCore::MutationObserverInterestGroup::isOldValueRequested):
1988 (WebCore::MutationObserverInterestGroup::enqueueMutationRecord):
1989 * dom/MutationObserverInterestGroup.h: Copied from Source/WebCore/dom/WebKitMutationObserver.h.
1990 (WebCore::MutationObserverInterestGroup::createForChildListMutation):
1991 (WebCore::MutationObserverInterestGroup::createForCharacterDataMutation):
1992 (WebCore::MutationObserverInterestGroup::createForAttributesMutation):
1993 (WebCore::MutationObserverInterestGroup::hasOldValue):
1995 (WebCore::Node::didMoveToNewOwnerDocument):
1996 (WebCore::Node::getRegisteredMutationObserversOfType):
1997 (WebCore::Node::notifyMutationObserversNodeWillDetach):
1999 * dom/WebKitMutationObserver.cpp:
2000 (WebCore::WebKitMutationObserver::observe):
2001 * dom/WebKitMutationObserver.h:
2003 2011-12-15 Adam Barth <abarth@webkit.org>
2005 <!DOCTYPE html><pre>

A</pre> doesn't parse correctly
2006 https://bugs.webkit.org/show_bug.cgi?id=74658
2008 Reviewed by Darin Adler.
2010 Previously, we handled skipping newlines after <pre> in the tokenizer,
2011 which isn't how the spec handles them. Instead, the spec skips them in
2012 the tree builder. This isn't usually observable, except in the case of
2013 an HTML entity. In that case, the tokenzier sees '&' (because the
2014 entity hasn't been decoded yet), but the tree builder sees '\n' (the
2015 decoded entity). This patch fixes the bug by more closely aligning our
2016 implementation with the spec.
2018 Test: html5lib/runner.html
2020 * html/parser/HTMLTokenizer.cpp:
2021 (WebCore::HTMLTokenizer::reset):
2022 (WebCore::HTMLTokenizer::nextToken):
2023 * html/parser/HTMLTokenizer.h:
2024 * html/parser/HTMLTreeBuilder.cpp:
2025 (WebCore::HTMLTreeBuilder::ExternalCharacterTokenBuffer::skipAtMostOneLeadingNewline):
2026 (WebCore::HTMLTreeBuilder::HTMLTreeBuilder):
2027 (WebCore::HTMLTreeBuilder::processStartTagForInBody):
2028 (WebCore::HTMLTreeBuilder::processCharacterBuffer):
2029 * html/parser/HTMLTreeBuilder.h:
2030 * xml/parser/MarkupTokenizerBase.h:
2032 2011-12-15 Kenneth Russell <kbr@google.com>
2034 Unreviewed, rolling out r102989.
2035 http://trac.webkit.org/changeset/102989
2036 https://bugs.webkit.org/show_bug.cgi?id=74580
2038 Caused SHOULD NOT BE REACHED assertions in debug builds.
2040 * css/CSSComputedStyleDeclaration.cpp:
2041 (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
2042 * css/CSSPrimitiveValueMappings.h:
2043 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
2044 (WebCore::CSSPrimitiveValue::operator EBoxAlignment):
2045 * css/CSSStyleSelector.cpp:
2046 (WebCore::CSSStyleSelector::applyProperty):
2047 * rendering/RenderDeprecatedFlexibleBox.cpp:
2048 (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
2049 (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
2050 * rendering/RenderFullScreen.cpp:
2051 (createFullScreenStyle):
2052 * rendering/style/RenderStyle.h:
2053 (WebCore::InheritedFlags::boxPack):
2054 (WebCore::InheritedFlags::setBoxAlign):
2055 (WebCore::InheritedFlags::setBoxPack):
2056 (WebCore::InheritedFlags::initialBoxPack):
2057 * rendering/style/RenderStyleConstants.h:
2058 * rendering/style/StyleDeprecatedFlexibleBoxData.h:
2060 2011-12-15 Ryosuke Niwa <rniwa@webkit.org>
2062 Touch make_name.pl in an attempt to make Qt bots happy.
2064 * dom/make_names.pl:
2065 (printNamesHeaderFile):
2067 2011-12-15 Kentaro Hara <haraken@chromium.org>
2069 Unreviewed. Rebaselined run-bindings-tests results.
2071 * bindings/scripts/test/JS/JSFloat64Array.cpp:
2072 * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
2073 * bindings/scripts/test/JS/JSTestObj.cpp:
2075 2011-12-15 Luke Macpherson <macpherson@chromium.org>
2077 Separate box alignment and box pack values into separate enums.
2078 https://bugs.webkit.org/show_bug.cgi?id=74580
2080 Reviewed by Darin Adler.
2082 No new tests / refactoring only.
2084 Separating these types cleans up the code by removing several assertions that
2085 values are in the correct ranges, as this is ensured by the type system.
2087 * css/CSSComputedStyleDeclaration.cpp:
2088 (WebCore::CSSComputedStyleDeclaration::getPropertyCSSValue):
2089 * css/CSSPrimitiveValueMappings.h:
2090 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
2091 (WebCore::CSSPrimitiveValue::operator EBoxPack):
2092 (WebCore::CSSPrimitiveValue::operator EBoxAlignment):
2093 * css/CSSStyleSelector.cpp:
2094 (WebCore::CSSStyleSelector::applyProperty):
2095 * rendering/RenderDeprecatedFlexibleBox.cpp:
2096 (WebCore::RenderDeprecatedFlexibleBox::layoutHorizontalBox):
2097 (WebCore::RenderDeprecatedFlexibleBox::layoutVerticalBox):
2098 * rendering/RenderFullScreen.cpp:
2099 (createFullScreenStyle):
2100 * rendering/style/RenderStyle.h:
2101 (WebCore::InheritedFlags::boxPack):
2102 (WebCore::InheritedFlags::setBoxAlign):
2103 (WebCore::InheritedFlags::setBoxPack):
2104 (WebCore::InheritedFlags::initialBoxPack):
2105 * rendering/style/RenderStyleConstants.h:
2106 * rendering/style/StyleDeprecatedFlexibleBoxData.h:
2108 2011-12-15 Kentaro Hara <haraken@chromium.org>
2110 REGRESSION(r102663): generate-bindings.pl runs every time
2111 https://bugs.webkit.org/show_bug.cgi?id=74481
2113 Reviewed by Adam Barth.
2115 See the comment #1 of bug 74481 for the cause of this bug.
2117 This patch fixes generate-bindings.pl so that it generates .h and .cpp files
2118 even for IDL files that do not need .h and .cpp files. This is just to prevent
2119 build scripts from trying to generate .h and .cpp files at every build.
2121 No new tests. No change in behavior.
2123 * bindings/scripts/generate-bindings.pl:
2124 (generateEmptyHeaderAndCpp): Generates .h and .cpp files for IDL files
2125 that do not need .h and .cpp files.
2126 * bindings/scripts/test/CPP/CPPTestSupplemental.cpp: Added.
2127 * bindings/scripts/test/CPP/CPPTestSupplemental.h: Added.
2128 * bindings/scripts/test/GObject/GObjectTestSupplemental.cpp: Added.
2129 * bindings/scripts/test/GObject/GObjectTestSupplemental.h: Added.
2130 * bindings/scripts/test/JS/JSTestSupplemental.cpp: Added.
2131 * bindings/scripts/test/JS/JSTestSupplemental.h: Added.
2132 * bindings/scripts/test/ObjC/ObjCTestSupplemental.cpp: Added.
2133 * bindings/scripts/test/ObjC/ObjCTestSupplemental.h: Added.
2134 * bindings/scripts/test/V8/V8TestSupplemental.cpp: Added.
2135 * bindings/scripts/test/V8/V8TestSupplemental.h: Added.
2137 2011-12-15 Jarred Nicholls <jarred@sencha.com>
2139 Unreviewed build fix. Mac build broken when CSS Filters enabled.
2140 Needed to move Filter headers out as private headers in WebCore.framework.
2142 * WebCore.xcodeproj/project.pbxproj:
2144 2011-12-15 Eric Seidel <eric@webkit.org>
2146 WebCore has two (disconnected) ways to keep track of updated widgets, should be unified
2147 https://bugs.webkit.org/show_bug.cgi?id=74367
2149 Reviewed by Adam Barth.
2151 It seems the FrameView updateWidgets set is needed for now,
2152 so just making FrameView::addWidgetToUpdate mark the DOM node
2153 as needing a widget update and later when it goes to call
2154 updateWidget() checking first if it needs an update.
2156 No new tests, just adding an assert.
2158 * html/HTMLEmbedElement.cpp:
2159 (WebCore::HTMLEmbedElement::updateWidget):
2160 * html/HTMLObjectElement.cpp:
2161 (WebCore::HTMLObjectElement::updateWidget):
2162 * html/HTMLPlugInImageElement.h:
2163 (WebCore::HTMLPlugInImageElement::needsWidgetUpdate):
2164 (WebCore::HTMLPlugInImageElement::setNeedsWidgetUpdate):
2165 * page/FrameView.cpp:
2166 (WebCore::FrameView::addWidgetToUpdate):
2167 (WebCore::FrameView::updateWidget):
2169 2011-12-15 Alexandru Chiculita <achicu@adobe.com>
2171 Windows project file is broken. It has a missing </File> enclosing tag
2172 https://bugs.webkit.org/show_bug.cgi?id=74632
2174 Reviewed by Anders Carlsson.
2176 No new tests, just fixing the project file.
2178 * WebCore.vcproj/WebCore.vcproj:
2180 2011-12-15 Adam Barth <abarth@webkit.org>
2182 <table><tr><td><svg><desc><td> parses incorrectly
2183 https://bugs.webkit.org/show_bug.cgi?id=68106
2185 Reviewed by Eric Seidel.
2187 This patch updates our implementation of the HTML5 parser to account
2188 for recent changes in the spec. The main change in this patch is to
2189 remove the "in foreign content" state from the tree builder. Rather
2190 than maintaining this as a separate state, the parser now introspects
2191 on the stack of open elements to determine whether the parser is in
2192 foriegn content. In the process, I've deleted some now-unused
2193 machinery in the tree builder.
2195 Tested by the html5lib LayoutTests. These tests show the progression
2196 in our spec compliance.
2198 * html/parser/HTMLElementStack.cpp:
2199 * html/parser/HTMLElementStack.h:
2200 * html/parser/HTMLTreeBuilder.cpp:
2201 * html/parser/HTMLTreeBuilder.h:
2202 * mathml/mathattrs.in:
2204 2011-12-15 Ryosuke Niwa <rniwa@webkit.org>
2206 m_hasCounterNodeMap and m_everHadLayout should be private to RenderObject
2207 https://bugs.webkit.org/show_bug.cgi?id=74645
2209 Reviewed by Eric Seidel.
2211 Made them private and added getters and setters as needed.
2213 * rendering/RenderCounter.cpp:
2214 (WebCore::makeCounterNode):
2215 (WebCore::RenderCounter::destroyCounterNodes):
2216 (WebCore::updateCounters):
2217 (WebCore::RenderCounter::rendererStyleChanged):
2218 (showCounterRendererTree):
2219 * rendering/RenderFlowThread.cpp:
2220 (WebCore::RenderFlowThread::layout):
2221 * rendering/RenderObject.h:
2222 (WebCore::RenderObject::hasCounterNodeMap):
2223 (WebCore::RenderObject::setHasCounterNodeMap):
2224 (WebCore::RenderObject::everHadLayout):
2225 * rendering/svg/RenderSVGForeignObject.cpp:
2226 (WebCore::RenderSVGForeignObject::layout):
2227 * rendering/svg/RenderSVGImage.cpp:
2228 (WebCore::RenderSVGImage::layout):
2229 * rendering/svg/RenderSVGResourceContainer.cpp:
2230 (WebCore::RenderSVGResourceContainer::layout):
2231 * rendering/svg/RenderSVGResourceMarker.cpp:
2232 (WebCore::RenderSVGResourceMarker::layout):
2233 * rendering/svg/RenderSVGRoot.cpp:
2234 (WebCore::RenderSVGRoot::layout):
2235 * rendering/svg/RenderSVGShape.cpp:
2236 (WebCore::RenderSVGShape::layout):
2237 * rendering/svg/RenderSVGText.cpp:
2238 (WebCore::RenderSVGText::layout):
2240 2011-12-15 Vsevolod Vlasov <vsevik@chromium.org>
2242 Not able to navigate the Resource tab options properly with arrow keys after adding the sticky-notes.
2243 https://bugs.webkit.org/show_bug.cgi?id=72013
2245 Reviewed by Pavel Feldman.
2247 * inspector/front-end/DatabaseQueryView.js:
2248 (WebInspector.DatabaseQueryView):
2249 (WebInspector.DatabaseQueryView.prototype._messagesClicked):
2250 * inspector/front-end/ResourcesPanel.js:
2251 (WebInspector.DatabaseTreeElement.prototype.onexpand):
2253 2011-12-15 Anders Carlsson <andersca@apple.com>
2255 Add ScrollingCoordinator class and ENABLE_THREADED_SCROLLING define
2256 https://bugs.webkit.org/show_bug.cgi?id=74639
2258 Reviewed by Andreas Kling.
2260 Add a ScrollingCoordinator class and make it a member of Page. Tear it down
2261 when the page goes away.
2263 * WebCore.xcodeproj/project.pbxproj:
2265 (WebCore::Page::Page):
2266 (WebCore::Page::~Page):
2268 (WebCore::Page::scrollingCoordinator):
2269 * page/ScrollingCoordinator.cpp: Added.
2270 (WebCore::ScrollingCoordinator::create):
2271 (WebCore::ScrollingCoordinator::ScrollingCoordinator):
2272 (WebCore::ScrollingCoordinator::~ScrollingCoordinator):
2273 (WebCore::ScrollingCoordinator::pageDestroyed):
2274 * page/ScrollingCoordinator.h: Added.
2276 2011-12-15 Kenneth Russell <kbr@google.com>
2278 Rename WEBKIT_lose_context to WEBKIT_WEBGL_lose_context
2279 https://bugs.webkit.org/show_bug.cgi?id=71870
2281 Reviewed by James Robinson.
2283 Re-landing after original commit was rolled out.
2285 Rename largely done with do-webcore-rename with a couple of
2286 necessary manual fixups. Ran WebGL layout tests.
2289 * DerivedSources.make:
2290 * DerivedSources.pri:
2291 * GNUmakefile.list.am:
2294 * WebCore.xcodeproj/project.pbxproj:
2295 * bindings/js/JSWebGLRenderingContextCustom.cpp:
2297 * bindings/v8/custom/V8WebGLRenderingContextCustom.cpp:
2298 (WebCore::toV8Object):
2299 * html/canvas/WebGLExtension.h:
2300 * html/canvas/WebGLLoseContext.cpp: Copied from Source/WebCore/html/canvas/WebKitLoseContext.cpp.
2301 (WebCore::WebGLLoseContext::WebGLLoseContext):
2302 (WebCore::WebGLLoseContext::~WebGLLoseContext):
2303 (WebCore::WebGLLoseContext::getName):
2304 (WebCore::WebGLLoseContext::create):
2305 (WebCore::WebGLLoseContext::loseContext):
2306 (WebCore::WebGLLoseContext::restoreContext):
2307 * html/canvas/WebGLLoseContext.h: Copied from Source/WebCore/html/canvas/WebKitLoseContext.h.
2308 * html/canvas/WebGLLoseContext.idl: Copied from Source/WebCore/html/canvas/WebKitLoseContext.idl.
2309 * html/canvas/WebGLRenderingContext.cpp:
2310 (WebCore::WebGLRenderingContext::getExtension):
2311 (WebCore::WebGLRenderingContext::getSupportedExtensions):
2312 (WebCore::WebGLRenderingContext::maybeRestoreContext):
2313 * html/canvas/WebGLRenderingContext.h:
2314 * html/canvas/WebKitLoseContext.cpp: Removed.
2315 * html/canvas/WebKitLoseContext.h: Removed.
2316 * html/canvas/WebKitLoseContext.idl: Removed.
2318 2011-12-15 Brady Eidson <beidson@apple.com>
2320 https://bugs.webkit.org/show_bug.cgi?id=74631
2321 HTMLMediaElement should not register for document activation callbacks as it doesn't use them
2323 Reviewed by Eric Carlson.
2325 No new tests. (No behavior change, pruning useless code)
2327 * html/HTMLMediaElement.cpp:
2328 (WebCore::HTMLMediaElement::HTMLMediaElement):
2329 (WebCore::HTMLMediaElement::~HTMLMediaElement):
2330 (WebCore::HTMLMediaElement::willMoveToNewOwnerDocument):
2331 (WebCore::HTMLMediaElement::didMoveToNewOwnerDocument):
2333 2011-12-15 Eric Carlson <eric.carlson@apple.com>
2335 Text tracks should be treated differently according to their kind
2336 https://bugs.webkit.org/show_bug.cgi?id=72547
2338 Reviewed by Sam Weinig.
2340 Tests: media/track/track-default-attribute.html
2341 media/track/track-mode-not-changed-by-new-track.html
2342 media/track/track-mode-triggers-loading.html
2344 * html/HTMLAudioElement.cpp:
2345 (WebCore::HTMLAudioElement::HTMLAudioElement): Add "createdByParser" parameter.
2346 (WebCore::HTMLAudioElement::create): Ditto.
2347 (WebCore::HTMLAudioElement::createForJSConstructor): Deal with constructor change.
2348 * html/HTMLAudioElement.h:
2350 * html/HTMLMediaElement.cpp:
2351 (WebCore::HTMLMediaElement::HTMLMediaElement): Add "createdByParser" parameter. Initialize m_parsingInProgress.
2352 (WebCore::HTMLMediaElement::finishParsingChildren): Clear m_parsingInProgress. Schedule track
2353 loading if necessary.
2354 (WebCore::HTMLMediaElement::loadTimerFired): Call configureTextTracks not call scheduleLoad,
2355 it just schedules the load timer again.
2356 (WebCore::HTMLMediaElement::prepareForLoad): Add all non-disabled track elements to a vector
2357 so we can prevent the media element's readyState from reaching HAVE_METADATA until the
2359 (WebCore::HTMLMediaElement::textTracksAreReady): New. Return false unless all tracks that were
2360 not disabled when loading started have loaded or failed.
2361 (WebCore::HTMLMediaElement::textTrackReadyStateChanged): Call setReadyState when a track is
2363 (WebCore::HTMLMediaElement::textTrackModeChanged): Trigger <track> loading when the mode
2364 changes to hidden or showing for the first time.
2365 (WebCore::HTMLMediaElement::setReadyState): Do not advance to HAVE_METADATA or higher while
2366 track elements are loading.
2367 (WebCore::HTMLMediaElement::addTrack): Removed.
2368 (WebCore::HTMLMediaElement::showingTrackWithSameKind): New.
2369 (WebCore::HTMLMediaElement::trackWasAdded):
2370 (WebCore::HTMLMediaElement::trackWillBeRemoved): Flag a track as unconfigured so it will be
2371 reconfigured if it is added to another element.
2372 (WebCore::HTMLMediaElement::userIsInterestedInThisLanguage): New.
2373 (WebCore::HTMLMediaElement::userIsInterestedInThisTrack): New. Consider user preferences.
2374 (WebCore::HTMLMediaElement::configureTextTrack): New. Configure a track as per the user's preferences.
2375 (WebCore::HTMLMediaElement::configureTextTracks): New. Configure all track elements.
2376 * html/HTMLMediaElement.h:
2377 * html/HTMLMediaElement.h:
2379 * html/HTMLTagNames.in: Add constructorNeedsCreatedByParser to audio and video.
2381 * html/HTMLTrackElement.cpp:
2382 (WebCore::HTMLTrackElement::HTMLTrackElement): Initialize m_hasBeenConfigured.
2383 * html/HTMLTrackElement.h:
2384 (WebCore::HTMLTrackElement::hasBeenConfigured):
2385 (WebCore::HTMLTrackElement::setHasBeenConfigured):
2387 * html/HTMLVideoElement.cpp:
2388 (WebCore::HTMLVideoElement::HTMLVideoElement): Add "createdByParser" parameter.
2389 (WebCore::HTMLVideoElement::create): Ditto.
2390 * html/HTMLVideoElement.h:
2392 * html/TextTrack.cpp:
2393 (WebCore::TextTrack::TextTrack): Initialize m_mode to DISABLED, not HIDDEN. Initialize m_showingByDefault.
2394 (WebCore::TextTrack::setMode): Clear the "showing by default" flag when a track's mode is
2395 explicitly set to SHOWING.
2396 (WebCore::TextTrack::mode): Return SHOWING whenever the "showing by default" flag is set.
2398 (WebCore::TextTrack::showingByDefault):
2399 (WebCore::TextTrack::setShowingByDefault):
2401 * html/TextTrackCue.cpp:
2402 (WebCore::TextTrackCue::isActive): Return false if a cue has no track, or if its track is disabled.
2403 (WebCore::TextTrackCue::setIsActive): Don't enable a cue if it has no track, or if its track
2406 2011-12-15 Brady Eidson <beidson@apple.com>
2408 Unreviewed, rolling out r102829.
2409 http://trac.webkit.org/changeset/102829
2410 https://bugs.webkit.org/show_bug.cgi?id=74533
2412 Caused https://bugs.webkit.org/show_bug.cgi?id=74555
2414 * html/HTMLPlugInImageElement.cpp:
2415 (WebCore::HTMLPlugInImageElement::HTMLPlugInImageElement):
2416 (WebCore::HTMLPlugInImageElement::willMoveToNewOwnerDocument):
2417 (WebCore::HTMLPlugInImageElement::didMoveToNewOwnerDocument):
2418 (WebCore::HTMLPlugInImageElement::documentWillBecomeInactive):
2419 (WebCore::HTMLPlugInImageElement::documentDidBecomeActive):
2420 * html/HTMLPlugInImageElement.h:
2422 2011-12-15 James Simonsen <simonjam@chromium.org>
2424 [Navigation Timing] Use monotonicallyIncreasingTime() instead of currentTime()
2425 https://bugs.webkit.org/show_bug.cgi?id=58354
2427 Reviewed by Pavel Feldman.
2429 No new tests. Relies on existing webtiming-* tests.
2432 * GNUmakefile.list.am:
2435 * WebCore.vcproj/WebCore.vcproj:
2436 * WebCore.xcodeproj/project.pbxproj:
2437 * dom/Document.cpp: Use monotonic times.
2438 (WebCore::Document::setReadyState):
2439 (WebCore::Document::finishedParsing):
2440 * inspector/InspectorInstrumentation.cpp:
2441 (WebCore::InspectorInstrumentation::didFinishLoadingImpl): Convert monotonicFinishTime to wall time if needed.
2442 * inspector/InspectorResourceAgent.cpp:
2443 (WebCore::buildObjectForTiming): Convert monotonic requestTime to wall time.
2444 (WebCore::buildObjectForResourceResponse): Plumbing for above.
2445 (WebCore::buildObjectForCachedResource): Ditto.
2446 (WebCore::InspectorResourceAgent::willSendRequest): Ditto.
2447 (WebCore::InspectorResourceAgent::didReceiveResponse): Ditto.
2448 (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache): Ditto.
2449 * loader/DocumentLoadTiming.cpp: Added.
2450 (WebCore::DocumentLoadTiming::DocumentLoadTiming):
2451 (WebCore::DocumentLoadTiming::setNavigationStart): Determine reference time and root reference time.
2452 (WebCore::DocumentLoadTiming::addRedirect): Moved logic from MainResourceLoader.
2453 (WebCore::DocumentLoadTiming::convertMonotonicTimeToDocumentTime): Helper to compute wall time from monotonic time.
2454 * loader/DocumentLoadTiming.h: Turned into class. Made times monotonic.
2455 (WebCore::DocumentLoadTiming::setUnloadEventStart):
2456 (WebCore::DocumentLoadTiming::setUnloadEventEnd):
2457 (WebCore::DocumentLoadTiming::setRedirectStart):
2458 (WebCore::DocumentLoadTiming::setRedirectEnd):
2459 (WebCore::DocumentLoadTiming::setFetchStart):
2460 (WebCore::DocumentLoadTiming::setResponseEnd):
2461 (WebCore::DocumentLoadTiming::setLoadEventStart):
2462 (WebCore::DocumentLoadTiming::setLoadEventEnd):
2463 (WebCore::DocumentLoadTiming::setHasSameOriginAsPreviousDocument):
2464 (WebCore::DocumentLoadTiming::navigationStart):
2465 (WebCore::DocumentLoadTiming::unloadEventStart):
2466 (WebCore::DocumentLoadTiming::unloadEventEnd):
2467 (WebCore::DocumentLoadTiming::redirectStart):
2468 (WebCore::DocumentLoadTiming::redirectEnd):
2469 (WebCore::DocumentLoadTiming::redirectCount):
2470 (WebCore::DocumentLoadTiming::fetchStart):
2471 (WebCore::DocumentLoadTiming::responseEnd):
2472 (WebCore::DocumentLoadTiming::loadEventStart):
2473 (WebCore::DocumentLoadTiming::loadEventEnd):
2474 (WebCore::DocumentLoadTiming::hasCrossOriginRedirect):
2475 (WebCore::DocumentLoadTiming::hasSameOriginAsPreviousDocument):
2476 * loader/FrameLoader.cpp:
2477 (WebCore::FrameLoader::stopLoading):
2478 (WebCore::FrameLoader::commitProvisionalLoad):
2479 (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
2480 (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
2481 * loader/MainResourceLoader.cpp:
2482 (WebCore::MainResourceLoader::continueAfterNavigationPolicy):
2483 (WebCore::MainResourceLoader::willSendRequest): Moved logic to DocumentLoadTiming.
2484 (WebCore::MainResourceLoader::didReceiveData): Use monotonic time.
2485 (WebCore::MainResourceLoader::didFinishLoading): Ditto.
2486 (WebCore::MainResourceLoader::load):
2487 * page/DOMWindow.cpp:
2488 (WebCore::DOMWindow::dispatchLoadEvent):
2489 * page/DOMWindow.h: Removed dispatchTimedEvent. It doesn't really help in the new model.
2490 * page/PerformanceNavigation.cpp:
2491 (WebCore::PerformanceNavigation::redirectCount):
2492 * page/PerformanceTiming.cpp: Removed skew correction code. This should never happen now.
2493 (WebCore::PerformanceTiming::navigationStart):
2494 (WebCore::PerformanceTiming::unloadEventStart):
2495 (WebCore::PerformanceTiming::unloadEventEnd):
2496 (WebCore::PerformanceTiming::redirectStart):
2497 (WebCore::PerformanceTiming::redirectEnd):
2498 (WebCore::PerformanceTiming::fetchStart):
2499 (WebCore::PerformanceTiming::responseEnd):
2500 (WebCore::PerformanceTiming::domLoading):
2501 (WebCore::PerformanceTiming::domInteractive):
2502 (WebCore::PerformanceTiming::domContentLoadedEventStart):
2503 (WebCore::PerformanceTiming::domContentLoadedEventEnd):
2504 (WebCore::PerformanceTiming::domComplete):
2505 (WebCore::PerformanceTiming::loadEventStart):
2506 (WebCore::PerformanceTiming::loadEventEnd):
2507 (WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute): Used for ResourceLoadTiming.
2508 (WebCore::PerformanceTiming::monotonicTimeToIntegerMilliseconds): Used for DocumentTiming and DocumentLoadTiming.
2509 * page/PerformanceTiming.h:
2510 * platform/network/ResourceLoadTiming.cpp:
2511 (WebCore::ResourceLoadTiming::convertResourceLoadTimeToDocumentTime):
2512 * platform/network/ResourceLoadTiming.h: Added helper function to convert to wall times. Added instructions for use.
2514 2011-12-15 Martin Robinson <mrobinson@igalia.com>
2518 [GTK] Plugins sometimes crash WebKitGTK+ with Gdk-CRITICAL **: gdk_window_get_toplevel: assertion `GDK_IS_WINDOW (window)' failed
2519 https://bugs.webkit.org/show_bug.cgi?id=73719
2521 Reviewed by Philippe Normand.
2523 No new tests. It's difficult to test or reproduce this exact situation
2524 as it only occurs when running plugins under nspluginwrapper.
2526 * plugins/gtk/PluginViewGtk.cpp:
2527 (WebCore::PluginView::platformGetValue): Properly handle when the plugin tries to
2528 get the window value when the GtkSocket is no longer realized.
2530 2011-12-15 Martin Kosiba <mkosiba@google.com>
2532 Fix find on web pages with -webkit-user-select: none for Chromium
2533 https://bugs.webkit.org/show_bug.cgi?id=72281
2535 Reviewed by Ryosuke Niwa.
2537 Adding findStringAndScrollToVisible to Editor. This new method returns
2538 the new match as a range rather than modify the active selection.
2540 Test: editing/text-iterator/findString-selection-disabled.html
2542 * editing/Editor.cpp:
2543 (WebCore::Editor::findStringAndScrollToVisible):
2546 2011-12-14 Anders Carlsson <andersca@apple.com>
2548 Add WTF::Function to wtf/Forward.h
2549 https://bugs.webkit.org/show_bug.cgi?id=74576
2551 Reviewed by Adam Roben.
2553 * bindings/scripts/CodeGeneratorJS.pm:
2554 (GenerateImplementation):
2555 Add a JSC:: qualifier to the Function flags to avoid ambiguities.
2557 2011-12-15 Julien Chaffraix <jchaffraix@webkit.org>
2559 Hardware-backed renderLayer could avoid repainting during a positioned movement layout
2560 https://bugs.webkit.org/show_bug.cgi?id=74370
2562 Reviewed by Simon Fraser.
2564 Tests: compositing/absolute-position-changed-in-composited-layer.html
2565 compositing/absolute-position-changed-with-composited-parent-layer.html
2566 compositing/fixed-position-changed-in-composited-layer.html
2567 compositing/fixed-position-changed-within-composited-parent-layer.html
2569 To be able to properly skip repainting after a positioned movement layout only, we
2570 needed to add more state to the current |setNeedsFullRepaint| method. As part of that
2571 we refactored the callers and internal fields to better match the new meaning.
2573 * rendering/RenderBoxModelObject.cpp:
2574 (WebCore::RenderBoxModelObject::styleDidChange):
2575 Explicitely gave the RepaintStatus to setRepaintStatus.
2577 * rendering/RenderLayer.cpp:
2578 (WebCore::RenderLayer::RenderLayer):
2579 (WebCore::RenderLayer::removeOnlyThisLayer):
2580 Updated those function after the renamings.
2582 (WebCore::RenderLayer::updateLayerPositions):
2583 Ditto. Also added a sholdRepaintAfterLayout check.
2585 (WebCore::RenderLayer::shouldRepaintAfterLayout):
2586 Heart of the optimization, if we just did a positioned movement layout of composited RenderLayer,
2587 then don't repaint. All the other cases should still trigger a repaint.
2589 * rendering/RenderLayer.h:
2590 (WebCore::RenderLayer::setRepaintStatus):
2591 Renamed setNeedsFullRepaint to setRepaintStatus. Also added a new enum RepaintStatus.
2593 * rendering/RenderObject.cpp:
2594 (WebCore::RenderObject::setLayerNeedsFullRepaint):
2595 Updated after the renamings.
2597 (WebCore::RenderObject::setLayerNeedsFullRepaintForPositionedMovementLayout):
2598 New method that pass a new value to the RenderLayer.
2600 * rendering/RenderObject.h:
2601 (WebCore::RenderObject::setNeedsPositionedMovementLayout):
2602 Switched the call to the dedicated method.
2604 2011-12-15 Antti Koivisto <antti@apple.com>
2606 Don't invoke CSSStyleSelector::pushParent before Text::recalcTextStyle
2607 https://bugs.webkit.org/show_bug.cgi?id=74575
2609 Reviewed by Darin Adler.
2611 Text::recalcTextStyle never enters the style selector so pushing the state is not necessary
2614 (WebCore::Element::recalcStyle):
2616 2011-12-15 Chris Marrin <cmarrin@apple.com>
2618 Fixed error in Target.pri.
2624 2011-12-15 Alexander Pavlov <apavlov@chromium.org>
2626 Web Inspector: #hex colors are not highlighted in CSS files
2627 https://bugs.webkit.org/show_bug.cgi?id=74570
2629 Reviewed by Pavel Feldman.
2631 Drive by: highlight color keywords as colors, not as keywords.
2633 * inspector/front-end/CSSKeywordCompletions.js:
2634 (WebInspector.CSSKeywordCompletions.colors):
2635 * inspector/front-end/SourceCSSTokenizer.js:
2636 (WebInspector.SourceCSSTokenizer):
2637 (WebInspector.SourceCSSTokenizer.prototype.nextToken):
2638 * inspector/front-end/SourceCSSTokenizer.re2js:
2640 2011-12-14 Chris Marrin <cmarrin@apple.com>
2642 Hardware acceleration of W3C Filter Effects
2643 https://bugs.webkit.org/show_bug.cgi?id=68479
2645 Reviewed by Simon Fraser.
2647 Move FilterOperation(s) to platform/graphics/filters so it can be used to pass filter information
2648 down to GraphicsLayer for hardware acceleration. This leaves the CustomFilterOperation subclass in
2649 rendering/style since it has dependencies outside platform. Some part of that class will
2650 eventually need to be down in platform.
2653 * GNUmakefile.list.am:
2656 * WebCore.vcproj/WebCore.vcproj:
2657 * WebCore.xcodeproj/project.pbxproj:
2658 * platform/graphics/filters/FilterOperation.cpp: Renamed from Source/WebCore/rendering/style/FilterOperation.cpp.
2659 (WebCore::BasicColorMatrixFilterOperation::blend):
2660 (WebCore::BasicColorMatrixFilterOperation::passthroughAmount):
2661 (WebCore::BasicComponentTransferFilterOperation::blend):
2662 (WebCore::BasicComponentTransferFilterOperation::passthroughAmount):
2663 (WebCore::GammaFilterOperation::blend):
2664 (WebCore::BlurFilterOperation::blend):
2665 (WebCore::DropShadowFilterOperation::blend):
2666 * platform/graphics/filters/FilterOperation.h: Renamed from Source/WebCore/rendering/style/FilterOperation.h.
2667 (WebCore::FilterOperation::~FilterOperation):
2668 (WebCore::FilterOperation::operator!=):
2669 (WebCore::FilterOperation::blend):
2670 (WebCore::FilterOperation::getOperationType):
2671 (WebCore::FilterOperation::isSameType):
2672 (WebCore::FilterOperation::FilterOperation):
2673 (WebCore::PassthroughFilterOperation::create):
2674 (WebCore::PassthroughFilterOperation::operator==):
2675 (WebCore::PassthroughFilterOperation::PassthroughFilterOperation):
2676 (WebCore::ReferenceFilterOperation::create):
2677 (WebCore::ReferenceFilterOperation::reference):
2678 (WebCore::ReferenceFilterOperation::operator==):
2679 (WebCore::ReferenceFilterOperation::ReferenceFilterOperation):
2680 (WebCore::BasicColorMatrixFilterOperation::create):
2681 (WebCore::BasicColorMatrixFilterOperation::amount):
2682 (WebCore::BasicColorMatrixFilterOperation::operator==):
2683 (WebCore::BasicColorMatrixFilterOperation::BasicColorMatrixFilterOperation):
2684 (WebCore::BasicComponentTransferFilterOperation::create):
2685 (WebCore::BasicComponentTransferFilterOperation::amount):
2686 (WebCore::BasicComponentTransferFilterOperation::operator==):
2687 (WebCore::BasicComponentTransferFilterOperation::BasicComponentTransferFilterOperation):
2688 (WebCore::GammaFilterOperation::create):
2689 (WebCore::GammaFilterOperation::amplitude):
2690 (WebCore::GammaFilterOperation::exponent):
2691 (WebCore::GammaFilterOperation::offset):
2692 (WebCore::GammaFilterOperation::operator==):
2693 (WebCore::GammaFilterOperation::GammaFilterOperation):
2694 (WebCore::BlurFilterOperation::create):
2695 (WebCore::BlurFilterOperation::stdDeviationX):
2696 (WebCore::BlurFilterOperation::stdDeviationY):
2697 (WebCore::BlurFilterOperation::operator==):
2698 (WebCore::BlurFilterOperation::BlurFilterOperation):
2699 (WebCore::SharpenFilterOperation::create):
2700 (WebCore::SharpenFilterOperation::amount):
2701 (WebCore::SharpenFilterOperation::radius):
2702 (WebCore::SharpenFilterOperation::threshold):
2703 (WebCore::SharpenFilterOperation::operator==):
2704 (WebCore::SharpenFilterOperation::SharpenFilterOperation):
2705 (WebCore::DropShadowFilterOperation::create):
2706 (WebCore::DropShadowFilterOperation::x):
2707 (WebCore::DropShadowFilterOperation::y):
2708 (WebCore::DropShadowFilterOperation::stdDeviation):
2709 (WebCore::DropShadowFilterOperation::color):
2710 (WebCore::DropShadowFilterOperation::operator==):
2711 (WebCore::DropShadowFilterOperation::DropShadowFilterOperation):
2712 * platform/graphics/filters/FilterOperations.cpp: Renamed from Source/WebCore/rendering/style/FilterOperations.cpp.
2713 (WebCore::FilterOperations::FilterOperations):
2714 (WebCore::FilterOperations::operator==):
2715 (WebCore::FilterOperations::operationsMatch):
2716 * platform/graphics/filters/FilterOperations.h: Renamed from Source/WebCore/rendering/style/FilterOperations.h.
2717 (WebCore::FilterOperations::operator!=):
2718 (WebCore::FilterOperations::clear):
2719 (WebCore::FilterOperations::operations):
2720 (WebCore::FilterOperations::size):
2721 (WebCore::FilterOperations::at):
2723 2011-12-15 Igor Oliveira <igor.oliveira@openbossa.org>
2725 [Qt] Support requestAnimationFrame API
2726 https://bugs.webkit.org/show_bug.cgi?id=74528
2728 Add necessary files to Target.pri when enabling requestAnimationFrame option.
2730 Reviewed by Kenneth Rohde Christiansen.
2734 2011-12-15 Otto Cheung <ocheung@rim.com>
2736 Removing BlackBerryCookieCache from the build system
2737 https://bugs.webkit.org/show_bug.cgi?id=74318
2739 Reviewed by Rob Buis.
2741 Removing any references to BlackBerryCookieCache in files that are upstreamed.
2743 We are removing the BlackBerryCookieCache because the CookieManager cookie structure has been
2744 refactored to have a similar structure to the cache. Since the read speeds in both structures
2745 are similar, we no longer need the cache to speed up read performance.
2747 No new tests, this patch by itself will not work. This patch is only removing
2748 the references to BlackBerryCookieCache in files that are upstreamed.
2750 * PlatformBlackBerry.cmake:
2751 * platform/network/blackberry/NetworkJob.cpp:
2752 (WebCore::NetworkJob::handleNotifyHeaderReceived):
2754 2011-12-15 Kenneth Rohde Christiansen <kenneth@webkit.org>
2756 [Qt] Mobile theme improvements
2758 Rubberstamped by Simon Hausmann.
2760 - Invert the gradient on the checkboxes
2761 - Make the buttons on the multi select combobox work on floats
2764 * platform/qt/RenderThemeQtMobile.cpp:
2765 (WebCore::StylePainterMobile::drawCheckableBackground):
2766 (WebCore::StylePainterMobile::drawMultipleComboButton):
2767 (WebCore::StylePainterMobile::getButtonImageSize):
2768 (WebCore::StylePainterMobile::drawComboBox):
2770 2011-12-15 Peter Rybin <peter.rybin@gmail.com>
2772 Web Inspector: CodeGeneratorInspector.py convert script conditions to precompiler #ifs
2773 https://bugs.webkit.org/show_bug.cgi?id=74534
2775 Reviewed by Pavel Feldman.
2777 Generator is rewritten to add #if's to output.
2779 * inspector/CodeGeneratorInspector.py:
2780 (DomainNameFixes.get_fixed_data.Res.get_guard.Guard.generate_open):
2781 (DomainNameFixes.get_fixed_data.Res.get_guard.Guard):
2782 (DomainNameFixes.get_fixed_data.Res.get_guard.Guard.generate_close):
2783 (DomainNameFixes.get_fixed_data.Res):
2784 (DomainNameFixes.get_fixed_data.Res.get_guard):
2786 (Generator.process_event):
2787 (Generator.process_command):
2788 (Generator.process_types):
2790 2011-12-15 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
2792 [Qt][WK2] Setting Download as action for navigation request crashes WebProcess
2793 https://bugs.webkit.org/show_bug.cgi?id=74526
2795 Reviewed by Simon Hausmann.
2797 Adding checks for networkcontext and networkAccessManager
2798 and return true in case they don't exist, following the same
2799 logic as if the CookieJar doesn't exist.
2801 * platform/qt/ThirdPartyCookiesQt.cpp:
2802 (WebCore::thirdPartyCookiePolicyPermits):
2804 2011-12-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
2806 [Qt] Get rid of layering violation in PluginViewQt
2808 PluginViewQt has a layering violation in relying on QWebPagePrivate for
2809 the check if running under DRT. We remove this and add a specific flag
2810 in the PluginView for this check, enabled from DRTSupport. This isn't
2811 pretty, but an improvement over what's currently there.
2813 Reviewed by Simon Hausmann.
2815 * plugins/PluginView.h:
2816 * plugins/qt/PluginViewQt.cpp:
2817 (WebCore::PluginView::updatePluginWidget):
2818 (WebCore::setXKeyEventSpecificFields):
2820 2011-12-14 Vsevolod Vlasov <vsevik@chromium.org>
2822 Web Inspector: Console should show network messages origins.
2823 https://bugs.webkit.org/show_bug.cgi?id=74521
2825 Reviewed by Pavel Feldman.
2827 * inspector/front-end/ConsoleMessage.js:
2828 (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
2830 2011-12-15 Rakesh KN <rakesh.kn@motorola.com>
2832 "user-select none" causes selection to incorrectly escape from clicked container
2833 https://bugs.webkit.org/show_bug.cgi?id=57289
2835 Reviewed by Ryosuke Niwa.
2837 Not selecting the nearest word from the target node if target node has -webkit-user-select:none
2839 Test: fast/events/mouse-double-triple-click-should-not-select-next-node-for-user-select-none.html
2841 * page/EventHandler.cpp:
2842 (WebCore::EventHandler::updateSelectionForMouseDownDispatchingSelectStart):
2843 If target node has webkit-user-select:none style then do not update the selection.
2845 2011-12-13 Andrey Kosyakov <caseq@chromium.org>
2847 Web Inspector: Generated HAR is missing pages.startedDateTime
2848 https://bugs.webkit.org/show_bug.cgi?id=74188
2850 Reviewed by Pavel Feldman.
2852 * inspector/front-end/HAREntry.js:
2853 (WebInspector.HARLog.prototype._buildPages):
2854 * inspector/front-end/NetworkLog.js:
2855 (WebInspector.NetworkLog):
2856 (WebInspector.NetworkLog.prototype.get mainResourceStartTime):
2857 (WebInspector.NetworkLog.prototype._mainFrameNavigated):
2858 * inspector/front-end/NetworkPanel.js:
2859 (WebInspector.NetworkLogView.prototype._updateSummaryBar):
2861 2011-12-15 Kenichi Ishibashi <bashi@chromium.org>
2863 Supports Unicode variation selector
2864 https://bugs.webkit.org/show_bug.cgi?id=50999
2866 Reviewed by Nikolas Zimmermann.
2868 Adds SimpleFontData::updateGlyphWithVariationSelector() which substitutes the
2869 glyph in question based on the selector. WidthIterator::advance() calls it
2870 when an unicode variation selector follows the character.
2872 Test: fast/text/unicode-variation-selector.html
2874 * platform/graphics/SimpleFontData.h: Added updateGlyphWithVariationSelector().
2875 * platform/graphics/SurrogatePairAwareTextIterator.cpp:
2876 (WebCore::isUnicodeBMPVariationSelector): Added.
2877 (WebCore::isUnicodeSupplementaryVariationSelector): Added.
2878 (WebCore::SurrogatePairAwareTextIterator::hasTrailingVariationSelector): Added.
2879 * platform/graphics/SurrogatePairAwareTextIterator.h:
2880 * platform/graphics/WidthIterator.cpp:
2881 (WebCore::WidthIterator::advance): Changed to detect variation selectors.
2882 * platform/graphics/chromium/SimpleFontDataChromiumWin.cpp:
2883 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Added.
2884 * platform/graphics/chromium/SimpleFontDataLinux.cpp:
2885 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2886 * platform/graphics/freetype/SimpleFontDataFreeType.cpp:
2887 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2888 * platform/graphics/mac/SimpleFontDataMac.mm:
2889 (WebCore::decomposeToUTF16): Ditto.
2890 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2891 * platform/graphics/pango/SimpleFontDataPango.cpp:
2892 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2893 * platform/graphics/qt/SimpleFontDataQt.cpp:
2894 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2895 * platform/graphics/win/SimpleFontDataWin.cpp:
2896 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2897 * platform/graphics/wince/SimpleFontDataWinCE.cpp:
2898 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2899 * platform/graphics/wx/SimpleFontDataWx.cpp:
2900 (WebCore::SimpleFontData::updateGlyphWithVariationSelector): Ditto.
2902 2011-12-15 Alexander Pavlov <apavlov@chromium.org>
2904 [v8] Expose the "filter" property in V8CSSStyleDeclaration
2905 https://bugs.webkit.org/show_bug.cgi?id=73426
2907 Reviewed by Adam Barth.
2909 Test: fast/css/style-enumerate-properties.html
2911 The "filter" CSS property used to be masked to be compliant with JSC, but JSC has supported
2912 this property for quite a while.
2914 * bindings/v8/custom/V8CSSStyleDeclarationCustom.cpp:
2915 (WebCore::hasCSSPropertyNamePrefix): clean up WTF prefixes
2916 (WebCore::cssPropertyInfo): remove the "wasFilter" flag
2917 (WebCore::V8CSSStyleDeclaration::namedPropertyEnumerator): remove the "filter" check
2918 (WebCore::V8CSSStyleDeclaration::namedPropertyGetter): return the "filter" value as v8String
2920 2011-12-15 Hajime Morrita <morrita@chromium.org>
2922 Unreviewed build fix attempt for Chromium Mac.
2924 * page/PerformanceTiming.h:
2926 2011-12-15 Alexander Pavlov <apavlov@chromium.org>
2928 Unreviewed, build fix after r102906 (poor merge).
2930 * inspector/front-end/ProfileView.js:
2931 (WebInspector.CPUProfileType.prototype.buttonClicked):
2933 2011-12-15 Vsevolod Vlasov <vsevik@chromium.org>
2935 Unreviewed revert of r102696 ([Navigation Timing] Use monotonicallyIncreasingTime() instead of currentTime()).
2936 Breaks inspector's network panel timeline on chromium.
2939 * GNUmakefile.list.am:
2942 * WebCore.vcproj/WebCore.vcproj:
2943 * WebCore.xcodeproj/project.pbxproj:
2945 (WebCore::Document::setReadyState):
2946 (WebCore::Document::finishedParsing):
2947 * inspector/InspectorInstrumentation.cpp:
2948 (WebCore::InspectorInstrumentation::didFinishLoadingImpl):
2949 * inspector/InspectorResourceAgent.cpp:
2950 (WebCore::buildObjectForTiming):
2951 (WebCore::buildObjectForResourceResponse):
2952 (WebCore::buildObjectForCachedResource):
2953 (WebCore::InspectorResourceAgent::willSendRequest):
2954 (WebCore::InspectorResourceAgent::didReceiveResponse):
2955 (WebCore::InspectorResourceAgent::didLoadResourceFromMemoryCache):
2956 * loader/DocumentLoadTiming.cpp: Removed.
2957 * loader/DocumentLoadTiming.h:
2958 (WebCore::DocumentLoadTiming::DocumentLoadTiming):
2959 * loader/FrameLoader.cpp:
2960 (WebCore::FrameLoader::stopLoading):
2961 (WebCore::FrameLoader::commitProvisionalLoad):
2962 (WebCore::FrameLoader::continueLoadAfterWillSubmitForm):
2963 (WebCore::FrameLoader::loadProvisionalItemFromCachedPage):
2964 * loader/MainResourceLoader.cpp:
2965 (WebCore::MainResourceLoader::continueAfterNavigationPolicy):
2966 (WebCore::MainResourceLoader::willSendRequest):
2967 (WebCore::MainResourceLoader::didReceiveData):
2968 (WebCore::MainResourceLoader::didFinishLoading):
2969 (WebCore::MainResourceLoader::load):
2970 * page/DOMWindow.cpp:
2971 (WebCore::DOMWindow::dispatchLoadEvent):
2972 (WebCore::DOMWindow::dispatchTimedEvent):
2974 * page/PerformanceNavigation.cpp:
2975 (WebCore::PerformanceNavigation::redirectCount):
2976 * page/PerformanceTiming.cpp:
2977 (WebCore::getPossiblySkewedTimeInKnownRange):
2978 (WebCore::PerformanceTiming::navigationStart):
2979 (WebCore::PerformanceTiming::unloadEventStart):
2980 (WebCore::PerformanceTiming::unloadEventEnd):
2981 (WebCore::PerformanceTiming::redirectStart):
2982 (WebCore::PerformanceTiming::redirectEnd):
2983 (WebCore::PerformanceTiming::fetchStart):
2984 (WebCore::PerformanceTiming::responseEnd):
2985 (WebCore::PerformanceTiming::domLoading):
2986 (WebCore::PerformanceTiming::domInteractive):
2987 (WebCore::PerformanceTiming::domContentLoadedEventStart):
2988 (WebCore::PerformanceTiming::domContentLoadedEventEnd):
2989 (WebCore::PerformanceTiming::domComplete):
2990 (WebCore::PerformanceTiming::loadEventStart):
2991 (WebCore::PerformanceTiming::loadEventEnd):
2992 (WebCore::PerformanceTiming::resourceLoadTimeRelativeToAbsolute):
2993 * page/PerformanceTiming.h:
2994 * platform/network/ResourceLoadTiming.cpp: Removed.
2995 * platform/network/ResourceLoadTiming.h:
2997 2011-12-15 Alexander Pavlov <apavlov@chromium.org>
2999 Unreviewed, fix Closure compiler warnings after r102905.
3001 * inspector/front-end/CSSStyleModel.js: Add JSDoc annotations
3003 2011-12-14 Alexander Pavlov <apavlov@chromium.org>
3005 Web Inspector: make ProfilesPanel scale as the number of ProfileTypes grows
3006 https://bugs.webkit.org/show_bug.cgi?id=74391
3008 Reviewed by Pavel Feldman.
3010 Whenever a profile is started, this change disables all profile recording buttons, except the one
3011 that correponds to the running profile. Once the profiling is finished, all buttons get enabled back again.
3013 * English.lproj/localizedStrings.js:
3014 * inspector/front-end/ProfileView.js:
3015 (WebInspector.CPUProfileView.profileCallback):
3016 (WebInspector.CPUProfileType.prototype.get buttonTooltip):
3017 (WebInspector.CPUProfileType.prototype.get buttonStyle):
3018 (WebInspector.CPUProfileType.prototype.buttonClicked):
3019 * inspector/front-end/ProfilesPanel.js:
3020 (WebInspector.ProfilesPanel.prototype.get statusBarItems.clickHandler):
3021 (WebInspector.ProfilesPanel.prototype.get statusBarItems):
3022 (WebInspector.ProfilesPanel.prototype._addProfileHeader):
3023 (WebInspector.ProfilesPanel.prototype.updateProfileTypeButtons):
3024 (WebInspector.ProfilesPanel.prototype._updateInterface):
3025 (WebInspector.ProfilesPanel.prototype.setRecordingProfile):
3026 (WebInspector.ProfilesPanel.prototype.takeHeapSnapshot):
3027 (WebInspector.ProfilesPanel.prototype._reportHeapSnapshotProgress):
3028 (WebInspector.ProfilerDispatcher.prototype.setRecordingProfile):
3029 * inspector/front-end/inspector.css:
3030 (.record-cpu-profile-status-bar-item .glyph):
3031 (.record-cpu-profile-status-bar-item.toggled-on .glyph):
3033 2011-12-15 Alexander Pavlov <apavlov@chromium.org>
3035 Web Inspector: [Styles] Update selected DOM element styles whenever applicable media queries change
3036 https://bugs.webkit.org/show_bug.cgi?id=74292
3038 The change introduces and handles in the frontend a new event type for the CSS domain,
3039 "mediaQueryResultChanged", which gets fired every time a viewport-dependent media feature
3040 changes its value. This allows users to see live changes of the (media-dependent) matched
3041 rules for inspected elements.
3043 Reviewed by Pavel Feldman.
3045 * inspector/CodeGeneratorInspector.py:
3047 * inspector/Inspector.json:
3048 * inspector/InspectorCSSAgent.cpp:
3049 (WebCore::InspectorCSSAgent::InspectorCSSAgent):
3050 (WebCore::InspectorCSSAgent::setFrontend):
3051 (WebCore::InspectorCSSAgent::clearFrontend):
3052 (WebCore::InspectorCSSAgent::restore):
3053 (WebCore::InspectorCSSAgent::enable):
3054 (WebCore::InspectorCSSAgent::disable):
3055 (WebCore::InspectorCSSAgent::mediaQueryResultChanged):
3056 * inspector/InspectorCSSAgent.h:
3057 * inspector/InspectorInstrumentation.cpp:
3058 (WebCore::InspectorInstrumentation::mediaQueryResultChangedImpl):
3059 * inspector/InspectorInstrumentation.h:
3060 (WebCore::InspectorInstrumentation::mediaQueryResultChanged):
3061 * inspector/front-end/CSSStyleModel.js:
3062 (WebInspector.CSSStyleModel):
3063 (WebInspector.CSSStyleModel.prototype.mediaQueryResultChanged):
3064 (WebInspector.CSSDispatcher):
3065 (WebInspector.CSSDispatcher.prototype.mediaQueryResultChanged):
3066 * inspector/front-end/MetricsSidebarPane.js:
3067 (WebInspector.MetricsSidebarPane):
3068 (WebInspector.MetricsSidebarPane.prototype._styleSheetOrMediaQueryResultChanged):
3069 * inspector/front-end/StylesSidebarPane.js:
3070 (WebInspector.StylesSidebarPane):
3071 (WebInspector.StylesSidebarPane.prototype._styleSheetOrMediaQueryResultChanged):
3072 * page/FrameView.cpp:
3073 (WebCore::FrameView::layout):
3075 2011-12-14 Vsevolod Vlasov <vsevik@chromium.org>
3077 Web Inspector: [Regression] Network manager fails to show resource type and MIME type in incorrect MIME type console message.
3078 https://bugs.webkit.org/show_bug.cgi?id=74516
3080 Reviewed by Pavel Feldman.
3082 Test: http/tests/inspector/network/script-as-text-loading.html
3084 * inspector/front-end/ConsoleMessage.js:
3085 (WebInspector.ConsoleMessageImpl.prototype._formatMessage):
3086 * inspector/front-end/NetworkManager.js:
3087 (WebInspector.NetworkDispatcher.prototype._updateResourceWithResponse):
3089 2011-11-03 Kent Tamura <tkent@chromium.org>
3091 A spin button changes the value incorrectly if it is clicked after touch events.
3092 https://bugs.webkit.org/show_bug.cgi?id=71181
3094 Reviewed by Ryosuke Niwa.
3096 SpinButtonElement assumed setHovered(true) was always called before a
3097 mousemove event in the element. It is not true for touch events.
3099 We should not reset m_upDownState to Indetermiante in setHovered(true),
3100 and should reset it when the mouse pointer moves out.
3102 This change fixes the flakiness of fast/forms/input-step-as-double.html.
3104 Test: fast/events/touch/touch-before-pressing-spin-button.html
3106 * html/shadow/TextControlInnerElements.cpp:
3107 (WebCore::SpinButtonElement::defaultEventHandler):
3108 Add an assertion that m_upDownState should not be Indetermiante.
3109 Reset m_upDownState to Indeterminate when the mouse pointer moves out
3111 (WebCore::SpinButtonElement::setHovered):
3112 Reset m_upDownState to Indeterminate when the element becomes unhovered.
3114 2011-12-14 Lucas Forschler <lforschler@apple.com>
3116 https://bugs.webkit.org/show_bug.cgi?id=74543
3117 Add CSS*.cpp to a new CSSAllInOne.cpp file with two exceptions:
3119 CSSPrimitiveValue.cpp
3120 Adding these two broke things with a templates problem that was not easily fixable.
3122 Reviewed by Steve Falkenburg.
3124 * WebCore.vcproj/WebCore.vcproj:
3125 * css/CSSAllInOne.cpp: Added.
3127 2011-12-14 Tim Horton <timothy_horton@apple.com>
3129 Generated images should respect the accelerated state of the context they're going to be drawn into
3130 https://bugs.webkit.org/show_bug.cgi?id=74577
3131 <rdar://problem/10584392>
3133 Reviewed by Simon Fraser.
3135 The tiled code path for GeneratorGeneratedImage and CrossfadeGeneratedImage blindly creates
3136 an unaccelerated ImageBuffer. Instead, take into account the accelerated state of the destination context.
3138 No new tests, as this is a simple performance improvement.
3140 * platform/graphics/CrossfadeGeneratedImage.cpp:
3141 (WebCore::CrossfadeGeneratedImage::drawPattern):
3142 * platform/graphics/GeneratorGeneratedImage.cpp:
3143 (WebCore::GeneratorGeneratedImage::drawPattern):
3145 2011-12-14 Ilya Tikhonovsky <loislo@chromium.org>
3147 Web Inspector: cleanup unused variable introduced at r102803
3149 * inspector/front-end/NetworkManager.js:
3150 (WebInspector.NetworkManager.prototype.enableResourceTracking):
3151 (WebInspector.NetworkManager.prototype.disableResourceTracking):
3153 2011-12-14 Wei James <james.wei@intel.com>
3155 fast path to accelerate processing in AudioBus::processWithGainFromMonoStereo
3156 https://bugs.webkit.org/show_bug.cgi?id=74054
3158 Reviewed by Kenneth Russell.
3160 Avoid de-zippering when the gain has converged on the targetGain.
3161 It can get about 75% performance gain at most when all frames don't need
3164 * platform/audio/AudioBus.cpp:
3165 (WebCore::AudioBus::processWithGainFromMonoStereo):
3167 2011-12-14 Adam Klein <adamk@chromium.org>
3169 Optimize MutationObserverInterestGroup construction
3170 https://bugs.webkit.org/show_bug.cgi?id=74563
3172 Reviewed by Ojan Vafai.
3174 Inline MutationObserverInterestGroup's creation methods and fix an
3175 accidental pass-by-value in an attempt to further reduce the CPU
3176 footprint of MutationObservers.
3178 No new tests, refactor only.
3180 * dom/WebKitMutationObserver.cpp:
3181 (WebCore::MutationObserverInterestGroup::MutationObserverInterestGroup): Pass observers HashMap by reference.
3182 * dom/WebKitMutationObserver.h:
3183 (WebCore::MutationObserverInterestGroup::createForChildListMutation): Inline.
3184 (WebCore::MutationObserverInterestGroup::createForCharacterDataMutation): Inline.
3185 (WebCore::MutationObserverInterestGroup::createForAttributesMutation): Inline.
3186 (WebCore::MutationObserverInterestGroup::hasOldValue): Remove spurious inline keyword.
3188 2011-12-14 Dominic Mazzoni <dmazzoni@google.com>
3190 Seeing crash in DRT after loading-iframe-sends-notification.html land
3191 https://bugs.webkit.org/show_bug.cgi?id=72624
3193 When an iframe finishes loading, send an accessibility notification
3194 on the renderer, rather than on a parent node. The only reason it was
3195 being posted on a parent before was because there was no way to detect
3196 that in a test. This is simpler and now covered by the test.
3198 Reviewed by Chris Fleizach.
3200 Updates existing test:
3201 accessibility/loading-iframe-sends-notification.html
3204 (WebCore::Document::implicitClose):
3206 2011-12-14 Nat Duca <nduca@chromium.org>
3208 [chromium] Add inhibitDraw to CCScheduler and drop root impl to prevent background flash on tab restore
3209 https://bugs.webkit.org/show_bug.cgi?id=74351
3211 Reviewed by James Robinson.
3213 * platform/graphics/chromium/cc/CCLayerTreeHost.cpp:
3214 (WebCore::CCLayerTreeHost::setNeedsCommit):
3215 (WebCore::CCLayerTreeHost::didBecomeInvisibleOnImplThread):
3216 * platform/graphics/chromium/cc/CCScheduler.cpp:
3217 (WebCore::CCScheduler::getNextAction):
3218 (WebCore::CCScheduler::processScheduledActions):
3219 * platform/graphics/chromium/cc/CCScheduler.h:
3220 * platform/graphics/chromium/cc/CCSchedulerStateMachine.cpp:
3221 (WebCore::CCSchedulerStateMachine::CCSchedulerStateMachine):
3222 (WebCore::CCSchedulerStateMachine::nextAction):
3223 * platform/graphics/chromium/cc/CCSchedulerStateMachine.h:
3224 (WebCore::CCSchedulerStateMachine::setInhibitDraw):
3225 * platform/graphics/chromium/cc/CCThreadProxy.cpp:
3226 (WebCore::CCThreadProxy::setVisibleOnImplThread):
3227 (WebCore::CCThreadProxy::inhibitDraw):
3228 * platform/graphics/chromium/cc/CCThreadProxy.h:
3230 2011-12-14 Ken Buchanan <kenrb@chromium.org>
3232 Crash due to incorrect parsing of isolates
3233 https://bugs.webkit.org/show_bug.cgi?id=74311
3234 When <bdi> content is wrapped, all hell breaks loose
3235 https://bugs.webkit.org/show_bug.cgi?id=74396
3237 Reviewed by Eric Seidel.
3239 When an isolate was encountered during run layout, the entire isolate
3240 would be parsed, even if the run started in the middle of the isolate.
3241 This would sometimes cause parts of the isolate to be added multiple
3242 times as runs. This patch marks the starting position within the
3243 isolate so nothing is parsed twice.
3245 This patch changes appendRun() so that when a run is added that is
3246 inside an isolate, it saves the start position of the run rather than
3247 the root. This allows constructBidiRuns() to resume parsing the
3248 isolate from the correct position.
3250 The change to RenderBox partially reverts a previous change I had
3251 done. It makes sense to screen for the condition, as was previously
3254 This patch does not add the test case from 74396 because a separate
3255 bug is preventing it from rendering correctly.
3257 * rendering/InlineIterator.h:
3258 (WebCore::addPlaceholderRunForIsolatedInline)
3259 (WebCore::IsolateTracker::addFakeRunIfNecessary)
3260 (WebCore::InlineBidiResolver::appendRun)
3261 * rendering/RenderBlockLineLayout.cpp:
3262 (WebCore::RenderBlockLineLayout::constructBidiRuns)
3263 * rendering/RenderBox.cpp:
3264 (WebCore::RenderBox::positionLineBox)
3266 2011-12-14 Jing Zhao <jingzhao@chromium.org>
3268 Opening two popup menus by dispatchEvent() makes problems.
3269 https://bugs.webkit.org/show_bug.cgi?id=73304
3271 Reviewed by Kent Tamura.
3273 By using element.dispatchEvent(), a user written script can open two
3274 popup menus, which causes various problems in different platforms.
3276 Add a hasOpenedPopup() method in ChromeClient and a wrapper in Chrome.
3277 In RenderMenuList::showPopup(), check if there is an opened popup menu
3278 before opening a new popup menu.
3280 Test: fast/forms/select-popup-crash.html
3282 * loader/EmptyClients.h: Overrides hasOpenedPopup().
3283 (WebCore::EmptyChromeClient::hasOpenedPopup): Returns false as a default case.
3285 (WebCore::Chrome::hasOpenedPopup): Calls ChromeClient::hasOpenedPopup().
3286 * page/Chrome.h: Declares hasOpenedPopup().
3287 * page/ChromeClient.h: Declares hasOpenedPopup() as a pure virtual function.
3288 * rendering/RenderMenuList.cpp:
3289 (WebCore::RenderMenuList::showPopup): Calls Chrome::hasOpenedPopup() before opening a new popup menu.
3291 2011-12-14 Tony Chang <tony@chromium.org>
3293 Clean up style in CSSStyleSelector.cpp
3294 https://bugs.webkit.org/show_bug.cgi?id=74548
3296 Reviewed by Ojan Vafai.
3298 * css/CSSStyleSelector.cpp:
3299 (WebCore::CSSStyleSelector::styleForElement):
3300 (WebCore::CSSStyleSelector::pseudoStyleForElement):
3302 2011-12-14 Kenneth Russell <kbr@google.com>
3304 Unreviewed, rolling out r102794.
3305 http://trac.webkit.org/changeset/102794
3306 https://bugs.webkit.org/show_bug.cgi?id=74220
3308 Reapplying patch since it is not the cause of the problems
3309 described in bug 74220.
3311 * bindings/v8/V8Proxy.cpp:
3312 (WebCore::V8Proxy::reportUnsafeAccessTo):
3313 * bindings/v8/V8Proxy.h:
3314 * bindings/v8/custom/V8CustomXPathNSResolver.cpp:
3315 (WebCore::V8CustomXPathNSResolver::lookupNamespaceURI):
3317 2011-12-14 Sam Weinig <weinig@apple.com>
3319 Remove whitespace from InheritedPropertySheets attributes in
3320 vsprops files to appease the Visual Studio project migrator.
3322 Reviewed by Adam Roben.
3324 * WebCore.vcproj/QTMovieWinDebug.vsprops:
3325 * WebCore.vcproj/QTMovieWinDebugAll.vsprops:
3326 * WebCore.vcproj/QTMovieWinDebugCairoCFLite.vsprops:
3327 * WebCore.vcproj/QTMovieWinProduction.vsprops:
3328 * WebCore.vcproj/QTMovieWinRelease.vsprops:
3329 * WebCore.vcproj/QTMovieWinReleaseCairoCFLite.vsprops:
3330 * WebCore.vcproj/WebCoreDebug.vsprops:
3331 * WebCore.vcproj/WebCoreDebugAll.vsprops:
3332 * WebCore.vcproj/WebCoreDebugCairoCFLite.vsprops:
3333 * WebCore.vcproj/WebCoreProduction.vsprops:
3334 * WebCore.vcproj/WebCoreRelease.vsprops:
3335 * WebCore.vcproj/WebCoreReleaseCairoCFLite.vsprops:
3337 2011-12-14 Enrica Casucci <enrica@apple.com>
3339 One more attempt to fix the release build (hopefully the last)
3343 * editing/ReplaceSelectionCommand.cpp: Added NodeRenderStyle.h
3345 2011-12-14 Kenneth Russell <kbr@google.com>
3347 Unreviewed, rolling out r102816.
3348 http://trac.webkit.org/changeset/102816
3349 https://bugs.webkit.org/show_bug.cgi?id=74415
3351 Implicated in font-related crashes on Chromium canaries.
3353 * platform/graphics/chromium/FontChromiumWin.cpp:
3354 (WebCore::TransparencyAwareFontPainter::TransparencyAwareGlyphPainter::drawGlyphs):
3355 (WebCore::Font::drawGlyphs):
3356 * platform/graphics/chromium/FontPlatformDataChromiumWin.cpp:
3357 (WebCore::FontPlatformData::FontPlatformData):
3358 (WebCore::FontPlatformData::operator=):
3359 (WebCore::FontPlatformData::~FontPlatformData):
3360 * platform/graphics/chromium/FontPlatformDataChromiumWin.h:
3361 (WebCore::FontPlatformData::size):
3362 (WebCore::FontPlatformData::hash):
3363 * platform/graphics/skia/SkiaFontWin.cpp:
3364 (WebCore::setupPaintForFont):
3365 (WebCore::paintSkiaText):
3366 * platform/graphics/skia/SkiaFontWin.h:
3368 2011-12-14 Simon Fraser <simon.fraser@apple.com>
3370 Filter amounts should accept percentages
3371 https://bugs.webkit.org/show_bug.cgi?id=74531
3373 Reviewed by Chris Marrin.
3375 Support percentage arguments for some filter functions, using the FPercent flag
3376 to validUnit(). Fix CSSStyleSelector::createFilterOperations() to do the divide by 100
3379 Replaced isValidFilterArgument(), which just tested arguments one by one for validity, with
3380 parseBuiltinFilterArguments() which tests and creates the CSSValues at the same time, which
3381 is a little more efficient. It also allows filter-specific behavior to be more localized in this
3384 Covered by existing tests.
3386 * css/CSSParser.cpp:
3387 (WebCore::CSSParser::parseBuiltinFilterArguments):
3388 (WebCore::CSSParser::parseFilter):
3390 * css/CSSStyleSelector.cpp:
3391 (WebCore::CSSStyleSelector::createFilterOperations):
3393 2011-12-14 Enrica Casucci <enrica@apple.com>
3399 * editing/ReplaceSelectionCommand.cpp: Added include RenderStyle.h
3401 2011-12-14 Hajime Morrita <morrita@chromium.org>
3403 JS_INLINE and WTF_INLINE should be visible from WebCore
3404 https://bugs.webkit.org/show_bug.cgi?id=73191
3406 Reviewed by Kevin Ollivier.
3408 - Moved export related definitions from config.h
3409 to ExportMacros.h, JSExportMacros.h and PlatformExportMacros.h
3410 - Added forwarding headers which are referred from config.h
3412 No new tests. Only build related changes.
3414 * ForwardingHeaders/runtime/JSExportMacros.h: Added.
3415 * ForwardingHeaders/wtf/ExportMacros.h: Added.
3416 * WebCore.xcodeproj/project.pbxproj:
3418 * platform/PlatformExportMacros.h: Copied from Source/JavaScriptCore/wtf/ExportMacros.h.
3420 2011-12-14 Enrica Casucci <enrica@apple.com>
3422 Need a way to produce leaner markup when pasting a fragment containing verbose markup
3423 https://bugs.webkit.org/show_bug.cgi?id=74514
3424 <rdar://problem/10208653>
3426 Reviewed by Ryosuke Niwa.
3428 This patch is another step in the direction of reducing the verbosity of the markup
3429 produced with editing operations.
3430 After the copied fragment is inserted in the document, it is analyzed to remove all
3431 the elements that don't contribute to the style. The decision is made comparing the
3432 render styles. As part of the cleanup, unstyled divs with single child element are
3433 removed. The logic to determine the blocks that can be removed is the same used in
3434 DeleteSelectionCommand and has been moved in CompositeEditCommand.
3436 Test: editing/pasteboard/paste-and-sanitize.html
3438 * editing/CompositeEditCommand.cpp:
3439 (WebCore::CompositeEditCommand::isRemovableBlock): Implements logic to determine
3440 if a block can be removed.
3441 * editing/CompositeEditCommand.h: Added isRemovableBlock declaration.
3442 * editing/DeleteSelectionCommand.cpp:
3443 (WebCore::DeleteSelectionCommand::removeRedundantBlocks): Implemented using
3444 isRemovableBlock from CompositeEditCommand.
3445 * editing/Editor.cpp: