| Index: third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
|
| diff --git a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
|
| index 7df53a74a50a9c87e7d258b1f3cf56d67559efcf..888e84dd5168ef31483ea398fcac1602706063dd 100644
|
| --- a/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
|
| +++ b/third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp
|
| @@ -31,6 +31,7 @@
|
| #include "core/HTMLNames.h"
|
| #include "core/InputTypeNames.h"
|
| #include "core/dom/Document.h"
|
| +#include "core/dom/TaskRunnerHelper.h"
|
| #include "core/editing/EditingUtilities.h"
|
| #include "core/frame/FrameView.h"
|
| #include "core/frame/LocalFrame.h"
|
| @@ -97,7 +98,6 @@ AXObjectCacheImpl::AXObjectCacheImpl(Document& document)
|
| #if ENABLE(ASSERT)
|
| , m_hasBeenDisposed(false)
|
| #endif
|
| - , m_notificationPostTimer(this, &AXObjectCacheImpl::notificationPostTimerFired)
|
| {
|
| }
|
|
|
| @@ -108,7 +108,7 @@ AXObjectCacheImpl::~AXObjectCacheImpl()
|
|
|
| void AXObjectCacheImpl::dispose()
|
| {
|
| - m_notificationPostTimer.stop();
|
| + m_notificationPostCanceller.cancel();
|
|
|
| for (auto& entry : m_objects) {
|
| AXObject* obj = entry.value;
|
| @@ -648,10 +648,8 @@ void AXObjectCacheImpl::childrenChanged(AXObject* obj)
|
| obj->childrenChanged();
|
| }
|
|
|
| -void AXObjectCacheImpl::notificationPostTimerFired(TimerBase*)
|
| +void AXObjectCacheImpl::postNotificationsNow()
|
| {
|
| - m_notificationPostTimer.stop();
|
| -
|
| unsigned i = 0, count = m_notificationsToPost.size();
|
| for (i = 0; i < count; ++i) {
|
| AXObject* obj = m_notificationsToPost[i].first;
|
| @@ -708,8 +706,12 @@ void AXObjectCacheImpl::postNotification(AXObject* object, AXNotification notifi
|
| return;
|
|
|
| m_notificationsToPost.append(std::make_pair(object, notification));
|
| - if (!m_notificationPostTimer.isActive())
|
| - m_notificationPostTimer.startOneShot(0, BLINK_FROM_HERE);
|
| + if (m_notificationPostCanceller.isActive())
|
| + return;
|
| +
|
| + auto result = WTF::makeCancellable(WTF::bind(&AXObjectCacheImpl::postNotificationsNow, wrapWeakPersistent(this)));
|
| + m_notificationPostCanceller = std::move(result.canceller);
|
| + TaskRunnerHelper::get(TaskType::Internal, m_document)->postTask(BLINK_FROM_HERE, std::move(result.function));
|
| }
|
|
|
| bool AXObjectCacheImpl::isAriaOwned(const AXObject* child) const
|
|
|