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

Unified Diff: Source/modules/webdatabase/SQLCallbackWrapper.h

Issue 103473002: Manage WebSQL callbacks with OwnPtr instead of refcounting (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years 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
Index: Source/modules/webdatabase/SQLCallbackWrapper.h
diff --git a/Source/modules/webdatabase/SQLCallbackWrapper.h b/Source/modules/webdatabase/SQLCallbackWrapper.h
index 6343194507e994b95b217626731b9e05589f378d..405e8cf7325e30af1178f38fa70268a1d456ae72 100644
--- a/Source/modules/webdatabase/SQLCallbackWrapper.h
+++ b/Source/modules/webdatabase/SQLCallbackWrapper.h
@@ -42,7 +42,7 @@ namespace WebCore {
// - by unwrapping and then dereferencing normally - on context thread only
template<typename T> class SQLCallbackWrapper {
public:
- SQLCallbackWrapper(PassRefPtr<T> callback, ExecutionContext* executionContext)
+ SQLCallbackWrapper(PassOwnPtr<T> callback, ExecutionContext* executionContext)
: m_callback(callback)
, m_executionContext(m_callback ? executionContext : 0)
{
@@ -57,7 +57,7 @@ public:
void clear()
{
ExecutionContext* context;
- T* callback;
+ OwnPtr<T> callback;
{
MutexLocker locker(m_mutex);
if (!m_callback) {
@@ -70,12 +70,12 @@ public:
return;
}
context = m_executionContext.release().leakRef();
- callback = m_callback.release().leakRef();
+ callback = m_callback.release();
}
- context->postTask(SafeReleaseTask::create(callback));
+ context->postTask(SafeReleaseTask::create(callback.release()));
}
- PassRefPtr<T> unwrap()
+ PassOwnPtr<T> unwrap()
abarth-chromium 2013/12/04 01:55:50 release() ?
adamk 2013/12/04 02:08:26 Don't want to touch this in this change; unwrap()
{
MutexLocker locker(m_mutex);
ASSERT(!m_callback || m_executionContext->isContextThread());
@@ -89,7 +89,7 @@ public:
private:
class SafeReleaseTask : public ExecutionContextTask {
public:
- static PassOwnPtr<SafeReleaseTask> create(T* callbackToRelease)
+ static PassOwnPtr<SafeReleaseTask> create(PassOwnPtr<T> callbackToRelease)
{
return adoptPtr(new SafeReleaseTask(callbackToRelease));
}
@@ -97,23 +97,23 @@ private:
virtual void performTask(ExecutionContext* context)
{
ASSERT(m_callbackToRelease && context && context->isContextThread());
- m_callbackToRelease->deref();
+ m_callbackToRelease.clear();
context->deref();
}
virtual bool isCleanupTask() const { return true; }
private:
- explicit SafeReleaseTask(T* callbackToRelease)
+ explicit SafeReleaseTask(PassOwnPtr<T> callbackToRelease)
: m_callbackToRelease(callbackToRelease)
{
}
- T* m_callbackToRelease;
+ OwnPtr<T> m_callbackToRelease;
};
Mutex m_mutex;
- RefPtr<T> m_callback;
+ OwnPtr<T> m_callback;
RefPtr<ExecutionContext> m_executionContext;
};

Powered by Google App Engine
This is Rietveld 408576698