AX: memoize expensive computation during blocks where tree doesn't change
https://bugs.webkit.org/show_bug.cgi?id=106497

Reviewed by Ryosuke Niwa.

Source/WebCore:

Add a cache for computed attributes of AXObjects.
The cache can be enabled at the start of a batch of
read-only operations on the accessibility tree, and
it's cleared automatically when the tree mutates.
Currently accessibilityIsIgnored is cached, since it's
frequently called and relatively expensive to compute.

No new tests.

* accessibility/AXObjectCache.cpp:
(WebCore):
(WebCore::AXComputedObjectAttributeCache::getIgnored):
(WebCore::AXComputedObjectAttributeCache::setIgnored):
(WebCore::AXObjectCache::postNotification):
(WebCore::AXObjectCache::nodeTextChangeNotification):
(WebCore::AXObjectCache::handleScrollbarUpdate):
(WebCore::AXObjectCache::startCachingComputedObjectAttributesUntilTreeMutates):
(WebCore::AXObjectCache::stopCachingComputedObjectAttributes):
* accessibility/AXObjectCache.h:
(AXComputedObjectAttributeCache):
(WebCore::AXComputedObjectAttributeCache::create):
(WebCore::AXComputedObjectAttributeCache::AXComputedObjectAttributeCache):
(WebCore::AXComputedObjectAttributeCache::CachedAXObjectAttributes::CachedAXObjectAttributes):
(CachedAXObjectAttributes):
(WebCore):
(WebCore::AXObjectCache::computedObjectAttributeCache):
(AXObjectCache):
(WebCore::AXComputedObjectAttributeCache::getIgnored):
(WebCore::AXComputedObjectAttributeCache::setIgnored):
(WebCore::startCachingComputedObjectAttributesUntilTreeMutates):
(WebCore::stopCachingComputedObjectAttributes):
* accessibility/AccessibilityObject.cpp:
(WebCore::AccessibilityObject::findMatchingObjects):
* accessibility/AccessibilityRenderObject.cpp:
(WebCore):
(WebCore::AccessibilityRenderObject::accessibilityIsIgnored):
(WebCore::AccessibilityRenderObject::computeAccessibilityIsIgnored):
* accessibility/AccessibilityRenderObject.h:
(AccessibilityRenderObject):

Source/WebKit/chromium:

Expose two methods to enable and disable caching of
computed WebAccessibilityObject attributes, to speed up
batch read-only operations.

* public/WebAccessibilityObject.h:
(WebAccessibilityObject):
* src/WebAccessibilityObject.cpp:
(WebKit::WebAccessibilityObject::startCachingComputedObjectAttributesUntilTreeMutates):
(WebKit):
(WebKit::WebAccessibilityObject::stopCachingComputedObjectAttributes):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141655 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Clean the String->AtomicString conversion for AnimationController::pauseAnimationAtTime
https://bugs.webkit.org/show_bug.cgi?id=108558

Patch by Benjamin Poulain <bpoulain@apple.com> on 2013-02-01
Reviewed by Dean Jackson.

.: 

* Source/autotools/symbols.filter:

Source/WebCore: 

This is a step torward killing the implicit conversion from String to AtomicString.

The animation name are AtomicString. The API is changed all the way to the callers
to take an AtomicString. When needed, we use explicit conversion.

* WebCore.exp.in:
* page/animation/AnimationController.cpp:
(WebCore::AnimationControllerPrivate::pauseAnimationAtTime):
(WebCore::AnimationController::pauseAnimationAtTime):
* page/animation/AnimationController.h:
(AnimationController):
* page/animation/AnimationControllerPrivate.h:
(AnimationControllerPrivate):
* page/animation/CompositeAnimation.cpp:
(WebCore::CompositeAnimation::pauseAnimationAtTime):
We should not null check the name. Getting a null name from the HashMap would be
an error from the tests, and the HashMap would never return a value anyway.
* testing/Internals.cpp:
(WebCore::Internals::pauseAnimationAtTimeOnPseudoElement):

Source/WebKit2: 

* WebProcess/InjectedBundle/API/c/WKBundleFrame.cpp:
(WKBundleFramePauseAnimationOnElementWithId):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::pauseAnimationOnElementWithId):
* WebProcess/WebPage/WebFrame.h:
(WebFrame):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141656 268f45cc-cd09-0410-ab3c-d52691b4dbfc