Bug 1657974 - MOZ_LOG schedule and run of FrameRequestCallback, r=froydnj

Depends on D86740

Differential Revision: https://phabricator.services.mozilla.com/D86741
This commit is contained in:
Honza Bambas 2020-08-13 14:41:16 +00:00
parent b8311edfda
commit 2bc91fef35
4 changed files with 9 additions and 1 deletions

View File

@ -1197,7 +1197,9 @@ void Document::SelectorCache::NotifyExpired(SelectorCacheKey* aSelector) {
Document::FrameRequest::FrameRequest(FrameRequestCallback& aCallback,
int32_t aHandle)
: mCallback(&aCallback), mHandle(aHandle) {}
: mCallback(&aCallback), mHandle(aHandle) {
LogFrameRequestCallback::LogDispatch(mCallback);
}
Document::FrameRequest::~FrameRequest() = default;

View File

@ -1843,6 +1843,7 @@ void nsRefreshDriver::RunFrameRequestCallbacks(TimeStamp aNowTime) {
// MOZ_KnownLive is OK, because the stack array frameRequestCallbacks
// keeps callback alive and the mCallback strong reference can't be
// mutated by the call.
LogFrameRequestCallback::Run run(callback.mCallback);
MOZ_KnownLive(callback.mCallback)->Call(timeStamp);
}
}

View File

@ -700,6 +700,7 @@ template class LogTaskBase<IPC::Message>;
template class LogTaskBase<nsTimerImpl>;
template class LogTaskBase<Task>;
template class LogTaskBase<PresShell>;
template class LogTaskBase<dom::FrameRequestCallback>;
MOZ_THREAD_LOCAL(nsISerialEventTarget*)
SerialEventTargetGuard::sCurrentThreadTLS;

View File

@ -1953,6 +1953,9 @@ class LogTaskBase {
class MicroTaskRunnable;
class Task; // TaskController
class PresShell;
namespace dom {
class FrameRequestCallback;
} // namespace dom
// Specialized methods must be explicitly predeclared.
template <>
@ -1971,6 +1974,7 @@ typedef LogTaskBase<IPC::Message> LogIPCMessage;
typedef LogTaskBase<nsTimerImpl> LogTimerEvent;
typedef LogTaskBase<Task> LogTask;
typedef LogTaskBase<PresShell> LogPresShellObserver;
typedef LogTaskBase<dom::FrameRequestCallback> LogFrameRequestCallback;
// If you add new types don't forget to add:
// `template class LogTaskBase<YourType>;` to nsThreadUtils.cpp