зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1186750 part 7 - Convert DispatchToOwningThread and DispatchOrAbandon to take already_AddRefed&&. r=dhylands
--HG-- extra : source : 59c373cbe96c9fd024aa022a8cc6fe3f60613f0e
This commit is contained in:
Родитель
0a6f6bbb07
Коммит
dd00635aba
|
@ -310,7 +310,7 @@ public:
|
||||||
nsresult CheckPermission(already_AddRefed<DeviceStorageRequest>&& aRequest);
|
nsresult CheckPermission(already_AddRefed<DeviceStorageRequest>&& aRequest);
|
||||||
|
|
||||||
bool IsOwningThread();
|
bool IsOwningThread();
|
||||||
nsresult DispatchToOwningThread(nsIRunnable* aRunnable);
|
nsresult DispatchToOwningThread(already_AddRefed<nsIRunnable>&& aRunnable);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
~nsDOMDeviceStorage();
|
~nsDOMDeviceStorage();
|
||||||
|
|
|
@ -2595,9 +2595,10 @@ nsDOMDeviceStorage::IsOwningThread()
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
nsDOMDeviceStorage::DispatchToOwningThread(nsIRunnable* aRunnable)
|
nsDOMDeviceStorage::DispatchToOwningThread(
|
||||||
|
already_AddRefed<nsIRunnable>&& aRunnable)
|
||||||
{
|
{
|
||||||
return mOwningThread->Dispatch(aRunnable, NS_DISPATCH_NORMAL);
|
return mOwningThread->Dispatch(Move(aRunnable), NS_DISPATCH_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* virtual */ JSObject*
|
/* virtual */ JSObject*
|
||||||
|
@ -3754,14 +3755,15 @@ DeviceStorageRequestManager::IsOwningThread()
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
DeviceStorageRequestManager::DispatchToOwningThread(nsIRunnable* aRunnable)
|
DeviceStorageRequestManager::DispatchToOwningThread(
|
||||||
|
already_AddRefed<nsIRunnable>&& aRunnable)
|
||||||
{
|
{
|
||||||
return mOwningThread->Dispatch(aRunnable, NS_DISPATCH_NORMAL);
|
return mOwningThread->Dispatch(Move(aRunnable), NS_DISPATCH_NORMAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
DeviceStorageRequestManager::DispatchOrAbandon(uint32_t aId,
|
DeviceStorageRequestManager::DispatchOrAbandon(
|
||||||
nsIRunnable* aRunnable)
|
uint32_t aId, already_AddRefed<nsIRunnable>&& aRunnable)
|
||||||
{
|
{
|
||||||
MutexAutoLock lock(mMutex);
|
MutexAutoLock lock(mMutex);
|
||||||
if (mShutdown) {
|
if (mShutdown) {
|
||||||
|
@ -3770,10 +3772,11 @@ DeviceStorageRequestManager::DispatchOrAbandon(uint32_t aId,
|
||||||
safe to be freed off the owner thread but the dispatch method
|
safe to be freed off the owner thread but the dispatch method
|
||||||
does not know that. */
|
does not know that. */
|
||||||
DS_LOG_DEBUG("shutdown %u", aId);
|
DS_LOG_DEBUG("shutdown %u", aId);
|
||||||
|
nsCOMPtr<nsIRunnable> runnable(aRunnable);
|
||||||
return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
|
return NS_ERROR_ILLEGAL_DURING_SHUTDOWN;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult rv = DispatchToOwningThread(aRunnable);
|
nsresult rv = DispatchToOwningThread(Move(aRunnable));
|
||||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||||
DS_LOG_ERROR("abandon %u", aId);
|
DS_LOG_ERROR("abandon %u", aId);
|
||||||
}
|
}
|
||||||
|
@ -3840,7 +3843,7 @@ DeviceStorageRequestManager::Resolve(uint32_t aId, bool aForceDispatch)
|
||||||
{
|
{
|
||||||
self->Resolve(aId, false);
|
self->Resolve(aId, false);
|
||||||
});
|
});
|
||||||
return DispatchOrAbandon(aId, r);
|
return DispatchOrAbandon(aId, r.forget());
|
||||||
}
|
}
|
||||||
|
|
||||||
DS_LOG_INFO("posted %u", aId);
|
DS_LOG_INFO("posted %u", aId);
|
||||||
|
@ -3872,7 +3875,7 @@ DeviceStorageRequestManager::Resolve(uint32_t aId, const nsString& aResult,
|
||||||
{
|
{
|
||||||
self->Resolve(aId, result, false);
|
self->Resolve(aId, result, false);
|
||||||
});
|
});
|
||||||
return DispatchOrAbandon(aId, r);
|
return DispatchOrAbandon(aId, r.forget());
|
||||||
}
|
}
|
||||||
|
|
||||||
DS_LOG_INFO("posted %u w/ %s", aId,
|
DS_LOG_INFO("posted %u w/ %s", aId,
|
||||||
|
@ -3917,7 +3920,7 @@ DeviceStorageRequestManager::Resolve(uint32_t aId, uint64_t aValue,
|
||||||
{
|
{
|
||||||
self->Resolve(aId, aValue, false);
|
self->Resolve(aId, aValue, false);
|
||||||
});
|
});
|
||||||
return DispatchOrAbandon(aId, r);
|
return DispatchOrAbandon(aId, r.forget());
|
||||||
}
|
}
|
||||||
|
|
||||||
DS_LOG_INFO("posted %u w/ %" PRIu64, aId, aValue);
|
DS_LOG_INFO("posted %u w/ %" PRIu64, aId, aValue);
|
||||||
|
@ -3997,7 +4000,7 @@ DeviceStorageRequestManager::Resolve(uint32_t aId, BlobImpl* aBlobImpl,
|
||||||
{
|
{
|
||||||
self->Resolve(aId, blobImpl, false);
|
self->Resolve(aId, blobImpl, false);
|
||||||
});
|
});
|
||||||
return DispatchOrAbandon(aId, r);
|
return DispatchOrAbandon(aId, r.forget());
|
||||||
}
|
}
|
||||||
|
|
||||||
DS_LOG_INFO("posted %u w/ %p", aId, aBlobImpl);
|
DS_LOG_INFO("posted %u w/ %p", aId, aBlobImpl);
|
||||||
|
@ -4125,7 +4128,7 @@ DeviceStorageRequestManager::Reject(uint32_t aId, const nsString& aReason)
|
||||||
|
|
||||||
self->RejectInternal(i, reason);
|
self->RejectInternal(i, reason);
|
||||||
});
|
});
|
||||||
return DispatchOrAbandon(aId, r);
|
return DispatchOrAbandon(aId, r.forget());
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
|
|
@ -245,7 +245,7 @@ public:
|
||||||
DeviceStorageRequestManager();
|
DeviceStorageRequestManager();
|
||||||
|
|
||||||
bool IsOwningThread();
|
bool IsOwningThread();
|
||||||
nsresult DispatchToOwningThread(nsIRunnable* aRunnable);
|
nsresult DispatchToOwningThread(already_AddRefed<nsIRunnable>&& aRunnable);
|
||||||
|
|
||||||
void StorePermission(size_t aAccess, bool aAllow);
|
void StorePermission(size_t aAccess, bool aAllow);
|
||||||
uint32_t CheckPermission(size_t aAccess);
|
uint32_t CheckPermission(size_t aAccess);
|
||||||
|
@ -290,7 +290,8 @@ private:
|
||||||
uint32_t CreateInternal(mozilla::dom::DOMRequest* aRequest, bool aCursor);
|
uint32_t CreateInternal(mozilla::dom::DOMRequest* aRequest, bool aCursor);
|
||||||
nsresult ResolveInternal(ListIndex aIndex, JS::HandleValue aResult);
|
nsresult ResolveInternal(ListIndex aIndex, JS::HandleValue aResult);
|
||||||
nsresult RejectInternal(ListIndex aIndex, const nsString& aReason);
|
nsresult RejectInternal(ListIndex aIndex, const nsString& aReason);
|
||||||
nsresult DispatchOrAbandon(uint32_t aId, nsIRunnable* aRunnable);
|
nsresult DispatchOrAbandon(uint32_t aId,
|
||||||
|
already_AddRefed<nsIRunnable>&& aRunnable);
|
||||||
ListType::index_type Find(uint32_t aId);
|
ListType::index_type Find(uint32_t aId);
|
||||||
|
|
||||||
nsCOMPtr<nsIThread> mOwningThread;
|
nsCOMPtr<nsIThread> mOwningThread;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче