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

Side by Side Diff: content/browser/indexed_db/indexed_db_quota_client.cc

Issue 15564008: Migrate the IndexedDB backend from Blink to Chromium (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Update to ToT again Created 7 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/indexed_db/indexed_db_quota_client.h" 5 #include "content/browser/indexed_db/indexed_db_quota_client.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop_proxy.h" 10 #include "base/message_loop_proxy.h"
11 #include "content/browser/indexed_db/indexed_db_context_impl.h" 11 #include "content/browser/indexed_db/indexed_db_context_impl.h"
12 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
13 #include "net/base/net_util.h" 13 #include "net/base/net_util.h"
14 #include "webkit/browser/database/database_util.h" 14 #include "webkit/browser/database/database_util.h"
15 15
16 using quota::QuotaClient; 16 using quota::QuotaClient;
17 using webkit_database::DatabaseUtil; 17 using webkit_database::DatabaseUtil;
18 18
19 namespace content { 19 namespace content {
20 namespace { 20 namespace {
21 21
22 quota::QuotaStatusCode DeleteOriginDataOnWebKitThread( 22 quota::QuotaStatusCode DeleteOriginDataOnWebKitThread(
23 IndexedDBContextImpl* context, 23 IndexedDBContextImpl* context,
24 const GURL& origin) { 24 const GURL& origin) {
25 context->DeleteForOrigin(origin); 25 context->DeleteForOrigin(origin);
26 return quota::kQuotaStatusOk; 26 return quota::kQuotaStatusOk;
27 } 27 }
28 28
29 int64 GetOriginUsageOnWebKitThread( 29 int64 GetOriginUsageOnWebKitThread(IndexedDBContextImpl* context,
30 IndexedDBContextImpl* context, 30 const GURL& origin) {
31 const GURL& origin) {
32 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 31 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
33 return context->GetOriginDiskUsage(origin); 32 return context->GetOriginDiskUsage(origin);
34 } 33 }
35 34
36 void GetAllOriginsOnWebKitThread( 35 void GetAllOriginsOnWebKitThread(IndexedDBContextImpl* context,
37 IndexedDBContextImpl* context, 36 std::set<GURL>* origins_to_return) {
38 std::set<GURL>* origins_to_return) {
39 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 37 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
40 std::vector<GURL> all_origins = context->GetAllOrigins(); 38 std::vector<GURL> all_origins = context->GetAllOrigins();
41 origins_to_return->insert(all_origins.begin(), all_origins.end()); 39 origins_to_return->insert(all_origins.begin(), all_origins.end());
42 } 40 }
43 41
44 void DidGetOrigins( 42 void DidGetOrigins(const IndexedDBQuotaClient::GetOriginsCallback& callback,
45 const IndexedDBQuotaClient::GetOriginsCallback& callback, 43 const std::set<GURL>* origins) {
46 const std::set<GURL>* origins) {
47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
48 callback.Run(*origins); 45 callback.Run(*origins);
49 } 46 }
50 47
51 void GetOriginsForHostOnWebKitThread( 48 void GetOriginsForHostOnWebKitThread(IndexedDBContextImpl* context,
52 IndexedDBContextImpl* context, 49 const std::string& host,
53 const std::string& host, 50 std::set<GURL>* origins_to_return) {
54 std::set<GURL>* origins_to_return) {
55 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); 51 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED));
56 std::vector<GURL> all_origins = context->GetAllOrigins(); 52 std::vector<GURL> all_origins = context->GetAllOrigins();
57 for (std::vector<GURL>::const_iterator iter = all_origins.begin(); 53 for (std::vector<GURL>::const_iterator iter = all_origins.begin();
58 iter != all_origins.end(); ++iter) { 54 iter != all_origins.end();
55 ++iter) {
59 if (host == net::GetHostOrSpecFromURL(*iter)) 56 if (host == net::GetHostOrSpecFromURL(*iter))
60 origins_to_return->insert(*iter); 57 origins_to_return->insert(*iter);
61 } 58 }
62 } 59 }
63 60
64 } // namespace 61 } // namespace
65 62
66 // IndexedDBQuotaClient -------------------------------------------------------- 63 // IndexedDBQuotaClient --------------------------------------------------------
67 64
68 IndexedDBQuotaClient::IndexedDBQuotaClient( 65 IndexedDBQuotaClient::IndexedDBQuotaClient(
69 base::MessageLoopProxy* webkit_thread_message_loop, 66 base::MessageLoopProxy* webkit_thread_message_loop,
70 IndexedDBContextImpl* indexed_db_context) 67 IndexedDBContextImpl* indexed_db_context)
71 : webkit_thread_message_loop_(webkit_thread_message_loop), 68 : webkit_thread_message_loop_(webkit_thread_message_loop),
72 indexed_db_context_(indexed_db_context) { 69 indexed_db_context_(indexed_db_context) {}
73 }
74 70
75 IndexedDBQuotaClient::~IndexedDBQuotaClient() { 71 IndexedDBQuotaClient::~IndexedDBQuotaClient() {}
76 }
77 72
78 QuotaClient::ID IndexedDBQuotaClient::id() const { 73 QuotaClient::ID IndexedDBQuotaClient::id() const { return kIndexedDatabase; }
79 return kIndexedDatabase;
80 }
81 74
82 void IndexedDBQuotaClient::OnQuotaManagerDestroyed() { 75 void IndexedDBQuotaClient::OnQuotaManagerDestroyed() { delete this; }
83 delete this;
84 }
85 76
86 void IndexedDBQuotaClient::GetOriginUsage( 77 void IndexedDBQuotaClient::GetOriginUsage(const GURL& origin_url,
87 const GURL& origin_url, 78 quota::StorageType type,
88 quota::StorageType type, 79 const GetUsageCallback& callback) {
89 const GetUsageCallback& callback) {
90 DCHECK(!callback.is_null()); 80 DCHECK(!callback.is_null());
91 DCHECK(indexed_db_context_.get()); 81 DCHECK(indexed_db_context_.get());
92 82
93 // IndexedDB is in the temp namespace for now. 83 // IndexedDB is in the temp namespace for now.
94 if (type != quota::kStorageTypeTemporary) { 84 if (type != quota::kStorageTypeTemporary) {
95 callback.Run(0); 85 callback.Run(0);
96 return; 86 return;
97 } 87 }
98 88
99 base::PostTaskAndReplyWithResult( 89 base::PostTaskAndReplyWithResult(
100 webkit_thread_message_loop_, 90 webkit_thread_message_loop_,
101 FROM_HERE, 91 FROM_HERE,
102 base::Bind(&GetOriginUsageOnWebKitThread, 92 base::Bind(
103 indexed_db_context_, 93 &GetOriginUsageOnWebKitThread, indexed_db_context_, origin_url),
104 origin_url),
105 callback); 94 callback);
106 } 95 }
107 96
108 void IndexedDBQuotaClient::GetOriginsForType( 97 void IndexedDBQuotaClient::GetOriginsForType(
109 quota::StorageType type, 98 quota::StorageType type,
110 const GetOriginsCallback& callback) { 99 const GetOriginsCallback& callback) {
111 DCHECK(!callback.is_null()); 100 DCHECK(!callback.is_null());
112 DCHECK(indexed_db_context_.get()); 101 DCHECK(indexed_db_context_.get());
113 102
114 // All databases are in the temp namespace for now. 103 // All databases are in the temp namespace for now.
115 if (type != quota::kStorageTypeTemporary) { 104 if (type != quota::kStorageTypeTemporary) {
116 callback.Run(std::set<GURL>()); 105 callback.Run(std::set<GURL>());
117 return; 106 return;
118 } 107 }
119 108
120 std::set<GURL>* origins_to_return = new std::set<GURL>(); 109 std::set<GURL>* origins_to_return = new std::set<GURL>();
121 webkit_thread_message_loop_->PostTaskAndReply( 110 webkit_thread_message_loop_->PostTaskAndReply(
122 FROM_HERE, 111 FROM_HERE,
123 base::Bind(&GetAllOriginsOnWebKitThread, 112 base::Bind(&GetAllOriginsOnWebKitThread,
124 indexed_db_context_, 113 indexed_db_context_,
125 base::Unretained(origins_to_return)), 114 base::Unretained(origins_to_return)),
126 base::Bind(&DidGetOrigins, 115 base::Bind(&DidGetOrigins, callback, base::Owned(origins_to_return)));
127 callback,
128 base::Owned(origins_to_return)));
129 } 116 }
130 117
131 void IndexedDBQuotaClient::GetOriginsForHost( 118 void IndexedDBQuotaClient::GetOriginsForHost(
132 quota::StorageType type, 119 quota::StorageType type,
133 const std::string& host, 120 const std::string& host,
134 const GetOriginsCallback& callback) { 121 const GetOriginsCallback& callback) {
135 DCHECK(!callback.is_null()); 122 DCHECK(!callback.is_null());
136 DCHECK(indexed_db_context_.get()); 123 DCHECK(indexed_db_context_.get());
137 124
138 // All databases are in the temp namespace for now. 125 // All databases are in the temp namespace for now.
139 if (type != quota::kStorageTypeTemporary) { 126 if (type != quota::kStorageTypeTemporary) {
140 callback.Run(std::set<GURL>()); 127 callback.Run(std::set<GURL>());
141 return; 128 return;
142 } 129 }
143 130
144 std::set<GURL>* origins_to_return = new std::set<GURL>(); 131 std::set<GURL>* origins_to_return = new std::set<GURL>();
145 webkit_thread_message_loop_->PostTaskAndReply( 132 webkit_thread_message_loop_->PostTaskAndReply(
146 FROM_HERE, 133 FROM_HERE,
147 base::Bind(&GetOriginsForHostOnWebKitThread, 134 base::Bind(&GetOriginsForHostOnWebKitThread,
148 indexed_db_context_, 135 indexed_db_context_,
149 host, 136 host,
150 base::Unretained(origins_to_return)), 137 base::Unretained(origins_to_return)),
151 base::Bind(&DidGetOrigins, 138 base::Bind(&DidGetOrigins, callback, base::Owned(origins_to_return)));
152 callback,
153 base::Owned(origins_to_return)));
154 } 139 }
155 140
156 void IndexedDBQuotaClient::DeleteOriginData( 141 void IndexedDBQuotaClient::DeleteOriginData(const GURL& origin,
157 const GURL& origin, 142 quota::StorageType type,
158 quota::StorageType type, 143 const DeletionCallback& callback) {
159 const DeletionCallback& callback) {
160 if (type != quota::kStorageTypeTemporary) { 144 if (type != quota::kStorageTypeTemporary) {
161 callback.Run(quota::kQuotaErrorNotSupported); 145 callback.Run(quota::kQuotaErrorNotSupported);
162 return; 146 return;
163 } 147 }
164 148
165 base::PostTaskAndReplyWithResult( 149 base::PostTaskAndReplyWithResult(
166 webkit_thread_message_loop_, 150 webkit_thread_message_loop_,
167 FROM_HERE, 151 FROM_HERE,
168 base::Bind(&DeleteOriginDataOnWebKitThread, 152 base::Bind(&DeleteOriginDataOnWebKitThread, indexed_db_context_, origin),
169 indexed_db_context_,
170 origin),
171 callback); 153 callback);
172 } 154 }
173 155
174 } // namespace content 156 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/indexed_db/indexed_db_quota_client.h ('k') | content/browser/indexed_db/indexed_db_quota_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698