Chromium Code Reviews| Index: content/browser/in_process_webkit/indexed_db_context.h |
| diff --git a/content/browser/in_process_webkit/indexed_db_context.h b/content/browser/in_process_webkit/indexed_db_context.h |
| index 2bd32e500405d5b363c84799975cd93cb739a156..849a97ab74d0c1dfead5a0dd3159f29fca88a3e0 100644 |
| --- a/content/browser/in_process_webkit/indexed_db_context.h |
| +++ b/content/browser/in_process_webkit/indexed_db_context.h |
| @@ -10,6 +10,7 @@ |
| #include "base/file_path.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/scoped_ptr.h" |
| +#include "content/browser/browser_thread.h" |
| class GURL; |
| class FilePath; |
| @@ -19,14 +20,26 @@ namespace WebKit { |
| class WebIDBFactory; |
| } |
| +namespace base { |
| +class MessageLoopProxy; |
| +} |
| + |
| namespace quota { |
| +class QuotaManagerProxy; |
| class SpecialStoragePolicy; |
| } |
| -class IndexedDBContext { |
| +struct DeleteOnWebKitThread; |
| + |
| +class IndexedDBContext : |
| + public base::RefCountedThreadSafe<IndexedDBContext, |
| + DeleteOnWebKitThread> { |
|
jam
2011/05/28 03:08:51
if you want to handle the leak in unittests, then
dgrogan
2011/05/31 23:26:07
Thanks. Done.
|
| public: |
| IndexedDBContext(WebKitContext* webkit_context, |
| - quota::SpecialStoragePolicy* special_storage_policy); |
| + quota::SpecialStoragePolicy* special_storage_policy, |
| + quota::QuotaManagerProxy* quota_manager_proxy, |
| + base::MessageLoopProxy* webkit_thread_loop); |
| + |
| ~IndexedDBContext(); |
| WebKit::WebIDBFactory* GetIDBFactory(); |
| @@ -69,7 +82,26 @@ class IndexedDBContext { |
| scoped_refptr<quota::SpecialStoragePolicy> special_storage_policy_; |
| + scoped_refptr<quota::QuotaManagerProxy> quota_manager_proxy_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(IndexedDBContext); |
| }; |
| +// This was copied from browser_thread.h and modified. |
| +struct DeleteOnWebKitThread { |
| + static void Destruct(const IndexedDBContext* x) { |
| + BrowserThread::ID thread = BrowserThread::WEBKIT; |
| + if (BrowserThread::CurrentlyOn(thread)) { |
| + delete x; |
| + } else { |
| + if (!BrowserThread::DeleteSoon(thread, FROM_HERE, x)) { |
| +#if defined(UNIT_TEST) |
| + LOG(INFO) << "DeleteSoon failed on thread, deleting locally" << thread; |
| + delete x; |
| +#endif // UNIT_TEST |
| + } |
| + } |
| + } |
| +}; |
| + |
| #endif // CONTENT_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CONTEXT_H_ |