Index: chrome/browser/in_process_webkit/indexed_db_context.cc |
diff --git a/chrome/browser/in_process_webkit/indexed_db_context.cc b/chrome/browser/in_process_webkit/indexed_db_context.cc |
index 7f492ac563930143b584c4bc3142696a0ff5bfd9..7aeb1b41283b213dbefd816eb204b21fb72f9011 100644 |
--- a/chrome/browser/in_process_webkit/indexed_db_context.cc |
+++ b/chrome/browser/in_process_webkit/indexed_db_context.cc |
@@ -10,6 +10,7 @@ |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/browser_thread.h" |
#include "chrome/browser/in_process_webkit/webkit_context.h" |
+#include "chrome/common/url_constants.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebCString.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebIDBDatabase.h" |
#include "third_party/WebKit/WebKit/chromium/public/WebIDBFactory.h" |
@@ -21,17 +22,45 @@ using WebKit::WebIDBDatabase; |
using WebKit::WebIDBFactory; |
using WebKit::WebSecurityOrigin; |
+namespace { |
+ |
+void ClearLocalState(const FilePath& indexeddb_path, |
+ const char* url_scheme_to_be_skipped) { |
+ file_util::FileEnumerator file_enumerator( |
+ indexeddb_path, false, file_util::FileEnumerator::FILES); |
+ // TODO(pastarmovj): We might need to consider exchanging this loop for |
+ // something more efficient in the future. |
+ for (FilePath file_path = file_enumerator.Next(); !file_path.empty(); |
+ file_path = file_enumerator.Next()) { |
+ if (file_path.Extension() != IndexedDBContext::kIndexedDBExtension) |
+ continue; |
+ WebSecurityOrigin origin = |
+ WebSecurityOrigin::createFromDatabaseIdentifier( |
+ webkit_glue::FilePathToWebString(file_path.BaseName())); |
+ if (!EqualsASCII(origin.protocol(), url_scheme_to_be_skipped)) |
+ file_util::Delete(file_path, false); |
+ } |
+} |
+ |
+} // namespace |
+ |
const FilePath::CharType IndexedDBContext::kIndexedDBDirectory[] = |
FILE_PATH_LITERAL("IndexedDB"); |
const FilePath::CharType IndexedDBContext::kIndexedDBExtension[] = |
FILE_PATH_LITERAL(".indexeddb"); |
-IndexedDBContext::IndexedDBContext(WebKitContext* webkit_context) |
- : webkit_context_(webkit_context) { |
+IndexedDBContext::IndexedDBContext(WebKitContext* webkit_context) { |
+ data_path_ = webkit_context->data_path().Append(kIndexedDBDirectory); |
} |
IndexedDBContext::~IndexedDBContext() { |
+ // Not being on the WEBKIT thread here means we are running in a unit test |
+ // where no clean up is needed. |
+ if (clear_local_state_on_exit_ && |
+ BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)) { |
+ ClearLocalState(data_path_, chrome::kExtensionScheme); |
+ } |
} |
WebIDBFactory* IndexedDBContext::GetIDBFactory() { |
@@ -43,29 +72,8 @@ WebIDBFactory* IndexedDBContext::GetIDBFactory() { |
FilePath IndexedDBContext::GetIndexedDBFilePath( |
const string16& origin_id) const { |
- FilePath storage_dir = webkit_context_->data_path().Append( |
- kIndexedDBDirectory); |
FilePath::StringType id = webkit_glue::WebStringToFilePathString(origin_id); |
- return storage_dir.Append(id.append(kIndexedDBExtension)); |
-} |
- |
-// static |
-void IndexedDBContext::ClearLocalState(const FilePath& profile_path, |
- const char* url_scheme_to_be_skipped) { |
- file_util::FileEnumerator file_enumerator(profile_path.Append( |
- kIndexedDBDirectory), false, file_util::FileEnumerator::FILES); |
- // TODO(pastarmovj): We might need to consider exchanging this loop for |
- // something more efficient in the future. |
- for (FilePath file_path = file_enumerator.Next(); !file_path.empty(); |
- file_path = file_enumerator.Next()) { |
- if (file_path.Extension() != IndexedDBContext::kIndexedDBExtension) |
- continue; |
- WebSecurityOrigin origin = |
- WebSecurityOrigin::createFromDatabaseIdentifier( |
- webkit_glue::FilePathToWebString(file_path.BaseName())); |
- if (!EqualsASCII(origin.protocol(), url_scheme_to_be_skipped)) |
- file_util::Delete(file_path, false); |
- } |
+ return data_path_.Append(id.append(kIndexedDBExtension)); |
} |
void IndexedDBContext::DeleteIndexedDBFile(const FilePath& file_path) { |