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

Side by Side Diff: chrome/browser/in_process_webkit/dom_storage_context.cc

Issue 523139: Adds local storage nodes to cookie tree model and cookies view. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 years, 11 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) 2009 The Chromium Authors. All rights reserved. Use of this 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this
2 // source code is governed by a BSD-style license that can be found in the 2 // source code is governed by a BSD-style license that can be found in the
3 // LICENSE file. 3 // LICENSE file.
4 4
5 #include "chrome/browser/in_process_webkit/dom_storage_context.h" 5 #include "chrome/browser/in_process_webkit/dom_storage_context.h"
6 6
7 #include "base/file_path.h" 7 #include "base/file_path.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "chrome/browser/chrome_thread.h" 9 #include "chrome/browser/chrome_thread.h"
10 #include "chrome/browser/in_process_webkit/dom_storage_area.h" 10 #include "chrome/browser/in_process_webkit/dom_storage_area.h"
11 #include "chrome/browser/in_process_webkit/dom_storage_namespace.h" 11 #include "chrome/browser/in_process_webkit/dom_storage_namespace.h"
12 #include "chrome/browser/in_process_webkit/webkit_context.h" 12 #include "chrome/browser/in_process_webkit/webkit_context.h"
13 #include "chrome/common/dom_storage_common.h" 13 #include "chrome/common/dom_storage_common.h"
14 #include "webkit/glue/glue_util.h"
14 15
15 static const char* kLocalStorageDirectory = "Local Storage"; 16 const FilePath::CharType DOMStorageContext::kLocalStorageDirectory[] =
17 FILE_PATH_LITERAL("Local Storage");
18
19 const FilePath::CharType DOMStorageContext::kLocalStorageExtension[] =
20 FILE_PATH_LITERAL(".localstorage");
21
22 static const FilePath::CharType kLocalStorageOldPath[] =
23 FILE_PATH_LITERAL("localStorage");
16 24
17 // TODO(jorlow): Remove after Chrome 4 ships. 25 // TODO(jorlow): Remove after Chrome 4 ships.
18 static void MigrateLocalStorageDirectory(const FilePath& data_path) { 26 static void MigrateLocalStorageDirectory(const FilePath& data_path) {
19 FilePath new_path = data_path.AppendASCII(kLocalStorageDirectory); 27 FilePath new_path = data_path.Append(
20 FilePath old_path = data_path.AppendASCII("localStorage"); 28 DOMStorageContext::kLocalStorageDirectory);
29 FilePath old_path = data_path.Append(kLocalStorageOldPath);
21 if (!file_util::DirectoryExists(new_path) && 30 if (!file_util::DirectoryExists(new_path) &&
22 file_util::DirectoryExists(old_path)) { 31 file_util::DirectoryExists(old_path)) {
23 file_util::Move(old_path, new_path); 32 file_util::Move(old_path, new_path);
24 } 33 }
25 } 34 }
26 35
27 DOMStorageContext::DOMStorageContext(WebKitContext* webkit_context) 36 DOMStorageContext::DOMStorageContext(WebKitContext* webkit_context)
28 : last_storage_area_id_(0), 37 : last_storage_area_id_(0),
29 last_session_storage_namespace_id_on_ui_thread_(kLocalStorageNamespaceId), 38 last_session_storage_namespace_id_on_ui_thread_(kLocalStorageNamespaceId),
30 last_session_storage_namespace_id_on_io_thread_(kLocalStorageNamespaceId), 39 last_session_storage_namespace_id_on_io_thread_(kLocalStorageNamespaceId),
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 if (local_storage) 150 if (local_storage)
142 local_storage->PurgeMemory(); 151 local_storage->PurgeMemory();
143 } 152 }
144 153
145 void DOMStorageContext::DeleteDataModifiedSince(const base::Time& cutoff) { 154 void DOMStorageContext::DeleteDataModifiedSince(const base::Time& cutoff) {
146 // Make sure that we don't delete a database that's currently being accessed 155 // Make sure that we don't delete a database that's currently being accessed
147 // by unloading all of the databases temporarily. 156 // by unloading all of the databases temporarily.
148 PurgeMemory(); 157 PurgeMemory();
149 158
150 file_util::FileEnumerator file_enumerator( 159 file_util::FileEnumerator file_enumerator(
151 webkit_context_->data_path().AppendASCII(kLocalStorageDirectory), false, 160 webkit_context_->data_path().Append(kLocalStorageDirectory), false,
152 file_util::FileEnumerator::FILES); 161 file_util::FileEnumerator::FILES);
153 for (FilePath path = file_enumerator.Next(); !path.value().empty(); 162 for (FilePath path = file_enumerator.Next(); !path.value().empty();
154 path = file_enumerator.Next()) { 163 path = file_enumerator.Next()) {
155 file_util::FileEnumerator::FindInfo find_info; 164 file_util::FileEnumerator::FindInfo find_info;
156 file_enumerator.GetFindInfo(&find_info); 165 file_enumerator.GetFindInfo(&find_info);
157 if (file_util::HasFileBeenModifiedSince(find_info, cutoff)) 166 if (file_util::HasFileBeenModifiedSince(find_info, cutoff))
158 file_util::Delete(path, false); 167 file_util::Delete(path, false);
159 } 168 }
160 } 169 }
161 170
171 void DOMStorageContext::DeleteLocalStorageFile(const FilePath& file_path) {
172 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
173
174 // Make sure that we don't delete a database that's currently being accessed
175 // by unloading all of the databases temporarily.
176 // TODO(bulach): both this method and DeleteDataModifiedSince could purge
177 // only the memory used by the specific file instead of all memory at once.
178 // See http://code.google.com/p/chromium/issues/detail?id=32000
179 PurgeMemory();
180 file_util::Delete(file_path, false);
181 }
182
183 void DOMStorageContext::DeleteAllLocalStorageFiles() {
184 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
185
186 // Make sure that we don't delete a database that's currently being accessed
187 // by unloading all of the databases temporarily.
188 PurgeMemory();
189
190 file_util::FileEnumerator file_enumerator(
191 webkit_context_->data_path().Append(kLocalStorageDirectory), false,
192 file_util::FileEnumerator::FILES);
193 for (FilePath file_path = file_enumerator.Next(); !file_path.empty();
194 file_path = file_enumerator.Next()) {
195 if (file_path.Extension() == kLocalStorageExtension)
196 file_util::Delete(file_path, false);
197 }
198 }
199
162 DOMStorageNamespace* DOMStorageContext::CreateLocalStorage() { 200 DOMStorageNamespace* DOMStorageContext::CreateLocalStorage() {
163 FilePath data_path = webkit_context_->data_path(); 201 FilePath data_path = webkit_context_->data_path();
164 FilePath dir_path; 202 FilePath dir_path;
165 if (!data_path.empty()) { 203 if (!data_path.empty()) {
166 MigrateLocalStorageDirectory(data_path); 204 MigrateLocalStorageDirectory(data_path);
167 dir_path = data_path.AppendASCII(kLocalStorageDirectory); 205 dir_path = data_path.Append(kLocalStorageDirectory);
168 } 206 }
169 DOMStorageNamespace* new_namespace = 207 DOMStorageNamespace* new_namespace =
170 DOMStorageNamespace::CreateLocalStorageNamespace(this, dir_path); 208 DOMStorageNamespace::CreateLocalStorageNamespace(this, dir_path);
171 RegisterStorageNamespace(new_namespace); 209 RegisterStorageNamespace(new_namespace);
172 return new_namespace; 210 return new_namespace;
173 } 211 }
174 212
175 DOMStorageNamespace* DOMStorageContext::CreateSessionStorage( 213 DOMStorageNamespace* DOMStorageContext::CreateSessionStorage(
176 int64 namespace_id) { 214 int64 namespace_id) {
177 DOMStorageNamespace* new_namespace = 215 DOMStorageNamespace* new_namespace =
(...skipping 13 matching lines...) Expand all
191 /* static */ 229 /* static */
192 void DOMStorageContext::CompleteCloningSessionStorage( 230 void DOMStorageContext::CompleteCloningSessionStorage(
193 DOMStorageContext* context, int64 existing_id, int64 clone_id) { 231 DOMStorageContext* context, int64 existing_id, int64 clone_id) {
194 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT)); 232 DCHECK(ChromeThread::CurrentlyOn(ChromeThread::WEBKIT));
195 DOMStorageNamespace* existing_namespace = 233 DOMStorageNamespace* existing_namespace =
196 context->GetStorageNamespace(existing_id, false); 234 context->GetStorageNamespace(existing_id, false);
197 // If nothing exists, then there's nothing to clone. 235 // If nothing exists, then there's nothing to clone.
198 if (existing_namespace) 236 if (existing_namespace)
199 context->RegisterStorageNamespace(existing_namespace->Copy(clone_id)); 237 context->RegisterStorageNamespace(existing_namespace->Copy(clone_id));
200 } 238 }
OLDNEW
« no previous file with comments | « chrome/browser/in_process_webkit/dom_storage_context.h ('k') | chrome/browser/mock_browsing_data_local_storage_helper.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698