Index: Source/modules/webdatabase/SQLCallbackWrapper.h |
diff --git a/Source/modules/webdatabase/SQLCallbackWrapper.h b/Source/modules/webdatabase/SQLCallbackWrapper.h |
index 6343194507e994b95b217626731b9e05589f378d..e630b0af976139d80bb4bba1b99ff3494ec76db2 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) { |
@@ -65,21 +65,21 @@ public: |
return; |
} |
if (m_executionContext->isContextThread()) { |
- m_callback = 0; |
- m_executionContext = 0; |
+ m_callback.clear(); |
+ m_executionContext.clear(); |
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() |
{ |
MutexLocker locker(m_mutex); |
ASSERT(!m_callback || m_executionContext->isContextThread()); |
- m_executionContext = 0; |
+ m_executionContext.clear(); |
return m_callback.release(); |
} |
@@ -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; |
}; |