Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Unified Diff: third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.cpp

Issue 2328683003: Use per-frame WebTaskRunner with makeCancellable in AXObjectCacheImpl
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « third_party/WebKit/Source/modules/accessibility/AXObjectCacheImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698