OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" | 5 #include "content/browser/dom_storage/dom_storage_context_wrapper.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/bind.h" | 10 #include "base/bind.h" |
11 #include "base/bind_helpers.h" | 11 #include "base/bind_helpers.h" |
12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
13 #include "base/location.h" | 13 #include "base/message_loop/message_loop_proxy.h" |
14 #include "base/single_thread_task_runner.h" | |
15 #include "base/thread_task_runner_handle.h" | |
16 #include "content/browser/dom_storage/dom_storage_area.h" | 14 #include "content/browser/dom_storage/dom_storage_area.h" |
17 #include "content/browser/dom_storage/dom_storage_context_impl.h" | 15 #include "content/browser/dom_storage/dom_storage_context_impl.h" |
18 #include "content/browser/dom_storage/dom_storage_task_runner.h" | 16 #include "content/browser/dom_storage/dom_storage_task_runner.h" |
19 #include "content/browser/dom_storage/session_storage_namespace_impl.h" | 17 #include "content/browser/dom_storage/session_storage_namespace_impl.h" |
20 #include "content/public/browser/browser_thread.h" | 18 #include "content/public/browser/browser_thread.h" |
21 #include "content/public/browser/local_storage_usage_info.h" | 19 #include "content/public/browser/local_storage_usage_info.h" |
22 #include "content/public/browser/session_storage_usage_info.h" | 20 #include "content/public/browser/session_storage_usage_info.h" |
23 | 21 |
24 namespace content { | 22 namespace content { |
25 namespace { | 23 namespace { |
26 | 24 |
27 const char kLocalStorageDirectory[] = "Local Storage"; | 25 const char kLocalStorageDirectory[] = "Local Storage"; |
28 const char kSessionStorageDirectory[] = "Session Storage"; | 26 const char kSessionStorageDirectory[] = "Session Storage"; |
29 | 27 |
30 void InvokeLocalStorageUsageCallbackHelper( | 28 void InvokeLocalStorageUsageCallbackHelper( |
31 const DOMStorageContext::GetLocalStorageUsageCallback& callback, | 29 const DOMStorageContext::GetLocalStorageUsageCallback& callback, |
32 const std::vector<LocalStorageUsageInfo>* infos) { | 30 const std::vector<LocalStorageUsageInfo>* infos) { |
33 callback.Run(*infos); | 31 callback.Run(*infos); |
34 } | 32 } |
35 | 33 |
36 void GetLocalStorageUsageHelper( | 34 void GetLocalStorageUsageHelper( |
37 base::SingleThreadTaskRunner* reply_task_runner, | 35 base::MessageLoopProxy* reply_loop, |
38 DOMStorageContextImpl* context, | 36 DOMStorageContextImpl* context, |
39 const DOMStorageContext::GetLocalStorageUsageCallback& callback) { | 37 const DOMStorageContext::GetLocalStorageUsageCallback& callback) { |
40 std::vector<LocalStorageUsageInfo>* infos = | 38 std::vector<LocalStorageUsageInfo>* infos = |
41 new std::vector<LocalStorageUsageInfo>; | 39 new std::vector<LocalStorageUsageInfo>; |
42 context->GetLocalStorageUsage(infos, true); | 40 context->GetLocalStorageUsage(infos, true); |
43 reply_task_runner->PostTask( | 41 reply_loop->PostTask( |
44 FROM_HERE, base::Bind(&InvokeLocalStorageUsageCallbackHelper, callback, | 42 FROM_HERE, |
45 base::Owned(infos))); | 43 base::Bind(&InvokeLocalStorageUsageCallbackHelper, |
| 44 callback, base::Owned(infos))); |
46 } | 45 } |
47 | 46 |
48 void InvokeSessionStorageUsageCallbackHelper( | 47 void InvokeSessionStorageUsageCallbackHelper( |
49 const DOMStorageContext::GetSessionStorageUsageCallback& callback, | 48 const DOMStorageContext::GetSessionStorageUsageCallback& callback, |
50 const std::vector<SessionStorageUsageInfo>* infos) { | 49 const std::vector<SessionStorageUsageInfo>* infos) { |
51 callback.Run(*infos); | 50 callback.Run(*infos); |
52 } | 51 } |
53 | 52 |
54 void GetSessionStorageUsageHelper( | 53 void GetSessionStorageUsageHelper( |
55 base::SingleThreadTaskRunner* reply_task_runner, | 54 base::MessageLoopProxy* reply_loop, |
56 DOMStorageContextImpl* context, | 55 DOMStorageContextImpl* context, |
57 const DOMStorageContext::GetSessionStorageUsageCallback& callback) { | 56 const DOMStorageContext::GetSessionStorageUsageCallback& callback) { |
58 std::vector<SessionStorageUsageInfo>* infos = | 57 std::vector<SessionStorageUsageInfo>* infos = |
59 new std::vector<SessionStorageUsageInfo>; | 58 new std::vector<SessionStorageUsageInfo>; |
60 context->GetSessionStorageUsage(infos); | 59 context->GetSessionStorageUsage(infos); |
61 reply_task_runner->PostTask( | 60 reply_loop->PostTask( |
62 FROM_HERE, base::Bind(&InvokeSessionStorageUsageCallbackHelper, callback, | 61 FROM_HERE, |
63 base::Owned(infos))); | 62 base::Bind(&InvokeSessionStorageUsageCallbackHelper, |
| 63 callback, base::Owned(infos))); |
64 } | 64 } |
65 | 65 |
66 } // namespace | 66 } // namespace |
67 | 67 |
68 DOMStorageContextWrapper::DOMStorageContextWrapper( | 68 DOMStorageContextWrapper::DOMStorageContextWrapper( |
69 const base::FilePath& data_path, | 69 const base::FilePath& data_path, |
70 storage::SpecialStoragePolicy* special_storage_policy) { | 70 storage::SpecialStoragePolicy* special_storage_policy) { |
71 base::SequencedWorkerPool* worker_pool = BrowserThread::GetBlockingPool(); | 71 base::SequencedWorkerPool* worker_pool = BrowserThread::GetBlockingPool(); |
72 context_ = new DOMStorageContextImpl( | 72 context_ = new DOMStorageContextImpl( |
73 data_path.empty() ? data_path | 73 data_path.empty() ? data_path |
74 : data_path.AppendASCII(kLocalStorageDirectory), | 74 : data_path.AppendASCII(kLocalStorageDirectory), |
75 data_path.empty() ? data_path | 75 data_path.empty() ? data_path |
76 : data_path.AppendASCII(kSessionStorageDirectory), | 76 : data_path.AppendASCII(kSessionStorageDirectory), |
77 special_storage_policy, | 77 special_storage_policy, |
78 new DOMStorageWorkerPoolTaskRunner( | 78 new DOMStorageWorkerPoolTaskRunner( |
79 worker_pool, | 79 worker_pool, |
80 worker_pool->GetNamedSequenceToken("dom_storage_primary"), | 80 worker_pool->GetNamedSequenceToken("dom_storage_primary"), |
81 worker_pool->GetNamedSequenceToken("dom_storage_commit"), | 81 worker_pool->GetNamedSequenceToken("dom_storage_commit"), |
82 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO) | 82 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO) |
83 .get())); | 83 .get())); |
84 } | 84 } |
85 | 85 |
86 DOMStorageContextWrapper::~DOMStorageContextWrapper() { | 86 DOMStorageContextWrapper::~DOMStorageContextWrapper() { |
87 } | 87 } |
88 | 88 |
89 void DOMStorageContextWrapper::GetLocalStorageUsage( | 89 void DOMStorageContextWrapper::GetLocalStorageUsage( |
90 const GetLocalStorageUsageCallback& callback) { | 90 const GetLocalStorageUsageCallback& callback) { |
91 DCHECK(context_.get()); | 91 DCHECK(context_.get()); |
92 context_->task_runner()->PostShutdownBlockingTask( | 92 context_->task_runner() |
93 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, | 93 ->PostShutdownBlockingTask(FROM_HERE, |
94 base::Bind(&GetLocalStorageUsageHelper, | 94 DOMStorageTaskRunner::PRIMARY_SEQUENCE, |
95 base::ThreadTaskRunnerHandle::Get(), context_, callback)); | 95 base::Bind(&GetLocalStorageUsageHelper, |
| 96 base::MessageLoopProxy::current(), |
| 97 context_, |
| 98 callback)); |
96 } | 99 } |
97 | 100 |
98 void DOMStorageContextWrapper::GetSessionStorageUsage( | 101 void DOMStorageContextWrapper::GetSessionStorageUsage( |
99 const GetSessionStorageUsageCallback& callback) { | 102 const GetSessionStorageUsageCallback& callback) { |
100 DCHECK(context_.get()); | 103 DCHECK(context_.get()); |
101 context_->task_runner()->PostShutdownBlockingTask( | 104 context_->task_runner() |
102 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, | 105 ->PostShutdownBlockingTask(FROM_HERE, |
103 base::Bind(&GetSessionStorageUsageHelper, | 106 DOMStorageTaskRunner::PRIMARY_SEQUENCE, |
104 base::ThreadTaskRunnerHandle::Get(), context_, callback)); | 107 base::Bind(&GetSessionStorageUsageHelper, |
| 108 base::MessageLoopProxy::current(), |
| 109 context_, |
| 110 callback)); |
105 } | 111 } |
106 | 112 |
107 void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) { | 113 void DOMStorageContextWrapper::DeleteLocalStorage(const GURL& origin) { |
108 DCHECK(context_.get()); | 114 DCHECK(context_.get()); |
109 context_->task_runner()->PostShutdownBlockingTask( | 115 context_->task_runner()->PostShutdownBlockingTask( |
110 FROM_HERE, | 116 FROM_HERE, |
111 DOMStorageTaskRunner::PRIMARY_SEQUENCE, | 117 DOMStorageTaskRunner::PRIMARY_SEQUENCE, |
112 base::Bind(&DOMStorageContextImpl::DeleteLocalStorage, context_, origin)); | 118 base::Bind(&DOMStorageContextImpl::DeleteLocalStorage, context_, origin)); |
113 } | 119 } |
114 | 120 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 } | 166 } |
161 | 167 |
162 void DOMStorageContextWrapper::Flush() { | 168 void DOMStorageContextWrapper::Flush() { |
163 DCHECK(context_.get()); | 169 DCHECK(context_.get()); |
164 context_->task_runner()->PostShutdownBlockingTask( | 170 context_->task_runner()->PostShutdownBlockingTask( |
165 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, | 171 FROM_HERE, DOMStorageTaskRunner::PRIMARY_SEQUENCE, |
166 base::Bind(&DOMStorageContextImpl::Flush, context_)); | 172 base::Bind(&DOMStorageContextImpl::Flush, context_)); |
167 } | 173 } |
168 | 174 |
169 } // namespace content | 175 } // namespace content |
OLD | NEW |