From 2a9644c6f4699f0f8d5555790481fc0bd5e3fd0b Mon Sep 17 00:00:00 2001 From: "jamesr@chromium.org" Date: Wed, 19 Jun 2013 06:19:34 +0000 Subject: [PATCH] Use chromium logic for database identifier<->origin conversions This switches over to using the logic added in r206815 for database id / origin identification instead of WebSecurityOrigin. I'll delete the old code after this has landed. BUG=243095 TBR=thakis Review URL: https://chromiumcodereview.appspot.com/16879013 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@207191 0039d316-1c4b-4281-b951-d872f2087c98 --- .../extensions/extension_service_unittest.cc | 6 ++-- .../indexed_db_dispatcher_host.cc | 4 +-- .../indexed_db/indexed_db_context_impl.cc | 23 +++++++----- .../indexed_db/indexed_db_context_impl.h | 3 -- .../indexed_db/indexed_db_internals_ui.cc | 4 +-- .../indexed_db_quota_client_unittest.cc | 4 +-- .../browser/indexed_db/indexed_db_unittest.cc | 12 +++---- .../renderer_host/database_message_filter.cc | 4 +-- webkit/base/origin_url_conversions.cc | 36 ------------------- webkit/base/origin_url_conversions.h | 30 ---------------- webkit/base/webkit_base.gyp | 2 -- .../browser/database/database_quota_client.cc | 10 +++--- .../database_quota_client_unittest.cc | 6 ++-- webkit/browser/database/database_tracker.cc | 16 ++++----- .../database/database_tracker_unittest.cc | 24 ++++++------- webkit/browser/database/database_util.cc | 1 - .../database/database_util_unittest.cc | 6 ++-- .../browser/dom_storage/dom_storage_area.cc | 6 ++-- .../browser/fileapi/obfuscated_file_util.cc | 14 ++++---- webkit/common/database/database_identifier.cc | 12 +++++++ webkit/common/database/database_identifier.h | 5 +++ .../database/database_identifier_unittest.cc | 3 +- webkit/common/fileapi/file_system_util.cc | 4 +-- 23 files changed, 93 insertions(+), 142 deletions(-) delete mode 100644 webkit/base/origin_url_conversions.cc delete mode 100644 webkit/base/origin_url_conversions.h diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index 01656eaa04e4..7d9aca138619 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc @@ -104,9 +104,9 @@ #include "sync/protocol/sync.pb.h" #include "testing/gtest/include/gtest/gtest.h" #include "testing/platform_test.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_tracker.h" #include "webkit/browser/quota/quota_manager.h" +#include "webkit/common/database/database_identifier.h" #include "webkit/plugins/npapi/mock_plugin_list.h" #if defined(OS_CHROMEOS) @@ -3892,7 +3892,7 @@ TEST_F(ExtensionServiceTest, ClearExtensionData) { const Extension* extension = InstallCRX(path, INSTALL_NEW); ASSERT_TRUE(extension); GURL ext_url(extension->url()); - std::string origin_id = webkit_base::GetOriginIdentifierFromURL(ext_url); + std::string origin_id = webkit_database::GetIdentifierFromOrigin(ext_url); // Set a cookie for the extension. net::CookieMonster* cookie_monster = @@ -3992,7 +3992,7 @@ TEST_F(ExtensionServiceTest, ClearAppData) { extensions::AppLaunchInfo::GetFullLaunchURL(extension).GetOrigin()); EXPECT_TRUE(profile_->GetExtensionSpecialStoragePolicy()-> IsStorageUnlimited(origin1)); - std::string origin_id = webkit_base::GetOriginIdentifierFromURL(origin1); + std::string origin_id = webkit_database::GetIdentifierFromOrigin(origin1); // Install app2 from the same origin with unlimited storage. extension = PackAndInstallCRX(data_dir_.AppendASCII("app2"), INSTALL_NEW); diff --git a/content/browser/in_process_webkit/indexed_db_dispatcher_host.cc b/content/browser/in_process_webkit/indexed_db_dispatcher_host.cc index c8d063af2d40..c3f126e62c97 100644 --- a/content/browser/in_process_webkit/indexed_db_dispatcher_host.cc +++ b/content/browser/in_process_webkit/indexed_db_dispatcher_host.cc @@ -29,8 +29,8 @@ #include "third_party/WebKit/public/platform/WebIDBDatabaseError.h" #include "third_party/WebKit/public/platform/WebIDBDatabaseException.h" #include "webkit/base/file_path_string_conversions.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_util.h" +#include "webkit/common/database/database_identifier.h" using webkit_database::DatabaseUtil; using WebKit::WebIDBDatabaseError; @@ -233,7 +233,7 @@ void IndexedDBDispatcherHost::OnIDBFactoryOpen( base::FilePath indexed_db_path = indexed_db_context_->data_path(); GURL origin_url = - webkit_base::GetOriginURLFromIdentifier(params.database_identifier); + webkit_database::GetOriginFromIdentifier(params.database_identifier); DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT_DEPRECATED)); diff --git a/content/browser/indexed_db/indexed_db_context_impl.cc b/content/browser/indexed_db/indexed_db_context_impl.cc index 656953657914..d604f47ecd6d 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.cc +++ b/content/browser/indexed_db/indexed_db_context_impl.cc @@ -22,10 +22,10 @@ #include "content/public/common/content_switches.h" #include "third_party/WebKit/public/platform/WebString.h" #include "webkit/base/file_path_string_conversions.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_util.h" #include "webkit/browser/quota/quota_manager.h" #include "webkit/browser/quota/special_storage_policy.h" +#include "webkit/common/database/database_identifier.h" using webkit_database::DatabaseUtil; @@ -33,7 +33,10 @@ namespace content { const base::FilePath::CharType IndexedDBContextImpl::kIndexedDBDirectory[] = FILE_PATH_LITERAL("IndexedDB"); -const base::FilePath::CharType IndexedDBContextImpl::kIndexedDBExtension[] = +static const base::FilePath::CharType kIndexedDBExtension[] = + FILE_PATH_LITERAL(".indexeddb"); + +static const base::FilePath::CharType kLevelDBExtension[] = FILE_PATH_LITERAL(".leveldb"); namespace { @@ -48,9 +51,11 @@ void GetAllOriginsAndPaths(const base::FilePath& indexeddb_path, indexeddb_path, false, base::FileEnumerator::DIRECTORIES); for (base::FilePath file_path = file_enumerator.Next(); !file_path.empty(); file_path = file_enumerator.Next()) { - if (file_path.Extension() == IndexedDBContextImpl::kIndexedDBExtension) { - std::string origin_id = file_path.BaseName().MaybeAsASCII(); - origins->push_back(webkit_base::GetOriginURLFromIdentifier(origin_id)); + if (file_path.Extension() == kLevelDBExtension && + file_path.RemoveExtension().Extension() == kIndexedDBExtension) { + std::string origin_id = file_path.BaseName().RemoveExtension() + .RemoveExtension().MaybeAsASCII(); + origins->push_back(webkit_database::GetOriginFromIdentifier(origin_id)); if (file_paths) file_paths->push_back(file_path); } @@ -195,7 +200,7 @@ void IndexedDBContextImpl::ForceClose(const GURL& origin_url) { base::FilePath IndexedDBContextImpl::GetFilePath(const GURL& origin_url) { std::string origin_id = - webkit_base::GetOriginIdentifierFromURL(origin_url); + webkit_database::GetIdentifierFromOrigin(origin_url); return GetIndexedDBFilePath(origin_id); } @@ -303,15 +308,15 @@ base::FilePath IndexedDBContextImpl::GetIndexedDBFilePath( const std::string& origin_id) const { DCHECK(!data_path_.empty()); return data_path_.AppendASCII(origin_id). - AddExtension(FILE_PATH_LITERAL(".indexeddb")). - AddExtension(kIndexedDBExtension); + AddExtension(kIndexedDBExtension). + AddExtension(kLevelDBExtension); } int64 IndexedDBContextImpl::ReadUsageFromDisk(const GURL& origin_url) const { if (data_path_.empty()) return 0; std::string origin_id = - webkit_base::GetOriginIdentifierFromURL(origin_url); + webkit_database::GetIdentifierFromOrigin(origin_url); base::FilePath file_path = GetIndexedDBFilePath(origin_id); return file_util::ComputeDirectorySize(file_path); } diff --git a/content/browser/indexed_db/indexed_db_context_impl.h b/content/browser/indexed_db/indexed_db_context_impl.h index 268e326064a8..a486070f0884 100644 --- a/content/browser/indexed_db/indexed_db_context_impl.h +++ b/content/browser/indexed_db/indexed_db_context_impl.h @@ -48,9 +48,6 @@ class CONTENT_EXPORT IndexedDBContextImpl // The indexed db directory. static const base::FilePath::CharType kIndexedDBDirectory[]; - // The indexed db file extension. - static const base::FilePath::CharType kIndexedDBExtension[]; - // Disables the exit-time deletion of session-only data. void SetForceKeepSessionState() { force_keep_session_state_ = true; } diff --git a/content/browser/indexed_db/indexed_db_internals_ui.cc b/content/browser/indexed_db/indexed_db_internals_ui.cc index 01198d2f6731..c070e574ad11 100644 --- a/content/browser/indexed_db/indexed_db_internals_ui.cc +++ b/content/browser/indexed_db/indexed_db_internals_ui.cc @@ -26,7 +26,7 @@ #include "third_party/WebKit/public/platform/WebString.h" #include "third_party/zlib/google/zip.h" #include "webkit/base/file_path_string_conversions.h" -#include "webkit/base/origin_url_conversions.h" +#include "webkit/common/database/database_identifier.h" namespace content { @@ -206,7 +206,7 @@ void IndexedDBInternalsUI::DownloadOriginDataOnWebkitThread( base::FilePath temp_path = temp_dir.Take(); std::string origin_id = - webkit_base::GetOriginIdentifierFromURL(origin_url); + webkit_database::GetIdentifierFromOrigin(origin_url); base::FilePath zip_path = temp_path.AppendASCII(origin_id).AddExtension(FILE_PATH_LITERAL("zip")); diff --git a/content/browser/indexed_db/indexed_db_quota_client_unittest.cc b/content/browser/indexed_db/indexed_db_quota_client_unittest.cc index 61fe26b621e4..a0b9c744afae 100644 --- a/content/browser/indexed_db/indexed_db_quota_client_unittest.cc +++ b/content/browser/indexed_db/indexed_db_quota_client_unittest.cc @@ -16,7 +16,7 @@ #include "content/public/browser/storage_partition.h" #include "content/public/test/test_browser_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "webkit/base/origin_url_conversions.h" +#include "webkit/common/database/database_identifier.h" // Declared to shorten the line lengths. static const quota::StorageType kTemp = quota::kStorageTypeTemporary; @@ -128,7 +128,7 @@ class IndexedDBQuotaClientTest : public testing::Test { void AddFakeIndexedDB(const GURL& origin, int size) { base::FilePath file_path_origin = idb_context()->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(origin)); + webkit_database::GetIdentifierFromOrigin(origin)); if (!file_util::CreateDirectory(file_path_origin)) { LOG(ERROR) << "failed to file_util::CreateDirectory " << file_path_origin.value(); diff --git a/content/browser/indexed_db/indexed_db_unittest.cc b/content/browser/indexed_db/indexed_db_unittest.cc index 4c5a971d2e21..e5a8b3521530 100644 --- a/content/browser/indexed_db/indexed_db_unittest.cc +++ b/content/browser/indexed_db/indexed_db_unittest.cc @@ -11,10 +11,10 @@ #include "content/public/common/url_constants.h" #include "content/public/test/test_browser_context.h" #include "testing/gtest/include/gtest/gtest.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/quota/mock_special_storage_policy.h" #include "webkit/browser/quota/quota_manager.h" #include "webkit/browser/quota/special_storage_policy.h" +#include "webkit/common/database/database_identifier.h" namespace content { @@ -64,9 +64,9 @@ TEST_F(IndexedDBTest, ClearSessionOnlyDatabases) { idb_context->set_data_path_for_testing(temp_dir.path()); normal_path = idb_context->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(kNormalOrigin)); + webkit_database::GetIdentifierFromOrigin(kNormalOrigin)); session_only_path = idb_context->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(kSessionOnlyOrigin)); + webkit_database::GetIdentifierFromOrigin(kSessionOnlyOrigin)); ASSERT_TRUE(file_util::CreateDirectory(normal_path)); ASSERT_TRUE(file_util::CreateDirectory(session_only_path)); message_loop_.RunUntilIdle(); @@ -110,9 +110,9 @@ TEST_F(IndexedDBTest, SetForceKeepSessionState) { idb_context->SetForceKeepSessionState(); normal_path = idb_context->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(kNormalOrigin)); + webkit_database::GetIdentifierFromOrigin(kNormalOrigin)); session_only_path = idb_context->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(kSessionOnlyOrigin)); + webkit_database::GetIdentifierFromOrigin(kSessionOnlyOrigin)); ASSERT_TRUE(file_util::CreateDirectory(normal_path)); ASSERT_TRUE(file_util::CreateDirectory(session_only_path)); message_loop_.RunUntilIdle(); @@ -168,7 +168,7 @@ TEST_F(IndexedDBTest, ForceCloseOpenDatabasesOnDelete) { idb_context->set_data_path_for_testing(temp_dir.path()); test_path = idb_context->GetFilePathForTesting( - webkit_base::GetOriginIdentifierFromURL(kTestOrigin)); + webkit_database::GetIdentifierFromOrigin(kTestOrigin)); ASSERT_TRUE(file_util::CreateDirectory(test_path)); const bool kExpectForceClose = true; diff --git a/content/browser/renderer_host/database_message_filter.cc b/content/browser/renderer_host/database_message_filter.cc index 87afb3838566..fdb78c499d43 100644 --- a/content/browser/renderer_host/database_message_filter.cc +++ b/content/browser/renderer_host/database_message_filter.cc @@ -16,10 +16,10 @@ #include "content/public/common/result_codes.h" #include "googleurl/src/gurl.h" #include "third_party/sqlite/sqlite3.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_util.h" #include "webkit/browser/database/vfs_backend.h" #include "webkit/browser/quota/quota_manager.h" +#include "webkit/common/database/database_identifier.h" #if defined(OS_POSIX) #include "base/file_descriptor_posix.h" @@ -260,7 +260,7 @@ void DatabaseMessageFilter::OnDatabaseGetSpaceAvailable( } quota_manager->GetUsageAndQuota( - webkit_base::GetOriginURLFromIdentifier(origin_identifier), + webkit_database::GetOriginFromIdentifier(origin_identifier), quota::kStorageTypeTemporary, base::Bind(&DatabaseMessageFilter::OnDatabaseGetUsageAndQuota, this, reply_msg)); diff --git a/webkit/base/origin_url_conversions.cc b/webkit/base/origin_url_conversions.cc deleted file mode 100644 index e002d16c0638..000000000000 --- a/webkit/base/origin_url_conversions.cc +++ /dev/null @@ -1,36 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "webkit/base/origin_url_conversions.h" - -#include "base/strings/utf_string_conversions.h" -#include "googleurl/src/gurl.h" -#include "third_party/WebKit/public/platform/WebCString.h" -#include "third_party/WebKit/public/platform/WebString.h" -#include "third_party/WebKit/public/web/WebSecurityOrigin.h" - -namespace webkit_base { - -GURL GetOriginURLFromIdentifier(const std::string& identifier) { - WebKit::WebSecurityOrigin web_security_origin = - WebKit::WebSecurityOrigin::createFromDatabaseIdentifier( - WebKit::WebString::fromUTF8(identifier)); - - // We need this work-around for file:/// URIs as - // createFromDatabaseIdentifier returns null origin_url for them. - if (web_security_origin.isUnique()) { - if (identifier.find("file__") == 0) - return GURL("file:///"); - return GURL(); - } - - return GURL(web_security_origin.toString()); -} - -std::string GetOriginIdentifierFromURL(const GURL& url) { - return WebKit::WebSecurityOrigin::createFromString( - UTF8ToUTF16(url.spec())).databaseIdentifier().utf8(); -} - -} // namespace webkit_base diff --git a/webkit/base/origin_url_conversions.h b/webkit/base/origin_url_conversions.h deleted file mode 100644 index c7dcfcdf4a47..000000000000 --- a/webkit/base/origin_url_conversions.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef WEBKIT_BASE_ORIGIN_URL_CONVERSIONS_H_ -#define WEBKIT_BASE_ORIGIN_URL_CONVERSIONS_H_ - -#include -#include "webkit/base/webkit_base_export.h" - -class GURL; - -namespace webkit_base { - -// Returns the origin url for the given |identifier| and vice versa. -// The origin identifier string is a serialized form of a security origin -// and can be used as a path name as it contains no "/" or other possibly -// unsafe characters. (See WebKit's SecurityOrigin code for more details.) -// -// Example: -// "http://www.example.com:80/"'s identifier should look like: -// "http_www.example.host_80" -WEBKIT_BASE_EXPORT GURL GetOriginURLFromIdentifier( - const std::string& identifier); - -WEBKIT_BASE_EXPORT std::string GetOriginIdentifierFromURL(const GURL& url); - -} // namespace webkit_base - -#endif // WEBKIT_BASE_ORIGIN_URL_CONVERSIONS_H_ diff --git a/webkit/base/webkit_base.gyp b/webkit/base/webkit_base.gyp index 467bb133102b..9615bea4c7b7 100644 --- a/webkit/base/webkit_base.gyp +++ b/webkit/base/webkit_base.gyp @@ -20,8 +20,6 @@ 'data_element.h', 'file_path_string_conversions.cc', 'file_path_string_conversions.h', - 'origin_url_conversions.cc', - 'origin_url_conversions.h', 'webkit_base_export.h', ], }, diff --git a/webkit/browser/database/database_quota_client.cc b/webkit/browser/database/database_quota_client.cc index ae683d22f254..650edfe4c182 100644 --- a/webkit/browser/database/database_quota_client.cc +++ b/webkit/browser/database/database_quota_client.cc @@ -14,9 +14,9 @@ #include "base/task_runner_util.h" #include "net/base/net_errors.h" #include "net/base/net_util.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_tracker.h" #include "webkit/browser/database/database_util.h" +#include "webkit/common/database/database_identifier.h" using quota::QuotaClient; @@ -29,7 +29,7 @@ int64 GetOriginUsageOnDBThread( const GURL& origin_url) { OriginInfo info; if (db_tracker->GetOriginInfo( - webkit_base::GetOriginIdentifierFromURL(origin_url), &info)) + webkit_database::GetIdentifierFromOrigin(origin_url), &info)) return info.TotalSize(); return 0; } @@ -42,7 +42,7 @@ void GetOriginsOnDBThread( for (std::vector::const_iterator iter = origin_identifiers.begin(); iter != origin_identifiers.end(); ++iter) { - GURL origin = webkit_base::GetOriginURLFromIdentifier(*iter); + GURL origin = webkit_database::GetOriginFromIdentifier(*iter); origins_ptr->insert(origin); } } @@ -57,7 +57,7 @@ void GetOriginsForHostOnDBThread( for (std::vector::const_iterator iter = origin_identifiers.begin(); iter != origin_identifiers.end(); ++iter) { - GURL origin = webkit_base::GetOriginURLFromIdentifier(*iter); + GURL origin = webkit_database::GetOriginFromIdentifier(*iter); if (host == net::GetHostOrSpecFromURL(origin)) origins_ptr->insert(origin); } @@ -210,7 +210,7 @@ void DatabaseQuotaClient::DeleteOriginData( FROM_HERE, base::Bind(&DatabaseTracker::DeleteDataForOrigin, db_tracker_, - webkit_base::GetOriginIdentifierFromURL(origin), + webkit_database::GetIdentifierFromOrigin(origin), delete_callback), delete_callback); } diff --git a/webkit/browser/database/database_quota_client_unittest.cc b/webkit/browser/database/database_quota_client_unittest.cc index 2b8bd499549d..e6e4a7435f0e 100644 --- a/webkit/browser/database/database_quota_client_unittest.cc +++ b/webkit/browser/database/database_quota_client_unittest.cc @@ -12,10 +12,10 @@ #include "net/base/completion_callback.h" #include "net/base/net_errors.h" #include "testing/gtest/include/gtest/gtest.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_quota_client.h" #include "webkit/browser/database/database_tracker.h" #include "webkit/browser/database/database_util.h" +#include "webkit/common/database/database_identifier.h" namespace webkit_database { @@ -37,7 +37,7 @@ class MockDatabaseTracker : public DatabaseTracker { OriginInfo* info) OVERRIDE { std::map::const_iterator found = mock_origin_infos_.find( - webkit_base::GetOriginURLFromIdentifier(origin_identifier)); + webkit_database::GetOriginFromIdentifier(origin_identifier)); if (found == mock_origin_infos_.end()) return false; *info = OriginInfo(found->second); @@ -86,7 +86,7 @@ class MockDatabaseTracker : public DatabaseTracker { void AddMockDatabase(const GURL& origin, const char* name, int size) { MockOriginInfo& info = mock_origin_infos_[origin]; - info.set_origin(webkit_base::GetOriginIdentifierFromURL(origin)); + info.set_origin(webkit_database::GetIdentifierFromOrigin(origin)); info.AddMockDatabase(ASCIIToUTF16(name), size); } diff --git a/webkit/browser/database/database_tracker.cc b/webkit/browser/database/database_tracker.cc index 56dfd2c73e15..75a91055bede 100644 --- a/webkit/browser/database/database_tracker.cc +++ b/webkit/browser/database/database_tracker.cc @@ -20,12 +20,12 @@ #include "sql/meta_table.h" #include "sql/transaction.h" #include "third_party/sqlite/sqlite3.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_quota_client.h" #include "webkit/browser/database/database_util.h" #include "webkit/browser/database/databases_table.h" #include "webkit/browser/quota/quota_manager.h" #include "webkit/browser/quota/special_storage_policy.h" +#include "webkit/common/database/database_identifier.h" namespace webkit_database { @@ -122,7 +122,7 @@ void DatabaseTracker::DatabaseOpened(const std::string& origin_identifier, if (quota_manager_proxy_.get()) quota_manager_proxy_->NotifyStorageAccessed( quota::QuotaClient::kDatabase, - webkit_base::GetOriginURLFromIdentifier(origin_identifier), + webkit_database::GetOriginFromIdentifier(origin_identifier), quota::kStorageTypeTemporary); InsertOrUpdateDatabaseDetails(origin_identifier, database_name, @@ -157,7 +157,7 @@ void DatabaseTracker::DatabaseClosed(const std::string& origin_identifier, if (quota_manager_proxy_.get()) quota_manager_proxy_->NotifyStorageAccessed( quota::QuotaClient::kDatabase, - webkit_base::GetOriginURLFromIdentifier(origin_identifier), + webkit_database::GetOriginFromIdentifier(origin_identifier), quota::kStorageTypeTemporary); UpdateOpenDatabaseSizeAndNotify(origin_identifier, database_name); @@ -369,7 +369,7 @@ bool DatabaseTracker::DeleteClosedDatabase( if (quota_manager_proxy_.get() && db_file_size) quota_manager_proxy_->NotifyStorageModified( quota::QuotaClient::kDatabase, - webkit_base::GetOriginURLFromIdentifier(origin_identifier), + webkit_database::GetOriginFromIdentifier(origin_identifier), quota::kStorageTypeTemporary, -db_file_size); @@ -429,7 +429,7 @@ bool DatabaseTracker::DeleteOrigin(const std::string& origin_identifier, if (quota_manager_proxy_.get() && deleted_size) { quota_manager_proxy_->NotifyStorageModified( quota::QuotaClient::kDatabase, - webkit_base::GetOriginURLFromIdentifier(origin_identifier), + webkit_database::GetOriginFromIdentifier(origin_identifier), quota::kStorageTypeTemporary, -deleted_size); } @@ -616,7 +616,7 @@ int64 DatabaseTracker::UpdateOpenDatabaseInfoAndNotify( if (quota_manager_proxy_.get()) quota_manager_proxy_->NotifyStorageModified( quota::QuotaClient::kDatabase, - webkit_base::GetOriginURLFromIdentifier(origin_id), + webkit_database::GetOriginFromIdentifier(origin_id), quota::kStorageTypeTemporary, new_size - old_size); FOR_EACH_OBSERVER(Observer, observers_, OnDatabaseSizeChanged( @@ -687,7 +687,7 @@ int DatabaseTracker::DeleteDataModifiedSince( ori != origins_identifiers.end(); ++ori) { if (special_storage_policy_.get() && special_storage_policy_->IsStorageProtected( - webkit_base::GetOriginURLFromIdentifier(*ori))) { + webkit_database::GetOriginFromIdentifier(*ori))) { continue; } @@ -826,7 +826,7 @@ void DatabaseTracker::ClearSessionOnlyOrigins() { for (std::vector::iterator origin = origin_identifiers.begin(); origin != origin_identifiers.end(); ++origin) { - GURL origin_url = webkit_base::GetOriginURLFromIdentifier(*origin); + GURL origin_url = webkit_database::GetOriginFromIdentifier(*origin); if (!special_storage_policy_->IsStorageSessionOnly(origin_url)) continue; if (special_storage_policy_->IsStorageProtected(origin_url)) diff --git a/webkit/browser/database/database_tracker_unittest.cc b/webkit/browser/database/database_tracker_unittest.cc index 7e5d19776b4e..94f36a994d50 100644 --- a/webkit/browser/database/database_tracker_unittest.cc +++ b/webkit/browser/database/database_tracker_unittest.cc @@ -15,10 +15,10 @@ #include "net/base/test_completion_callback.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/sqlite/sqlite3.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_tracker.h" #include "webkit/browser/quota/mock_special_storage_policy.h" #include "webkit/browser/quota/quota_manager.h" +#include "webkit/common/database/database_identifier.h" namespace { @@ -205,9 +205,9 @@ class DatabaseTracker_TestHelper_Test { // Create and open three databases. int64 database_size = 0; const std::string kOrigin1 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); const std::string kOrigin2 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); const base::string16 kDB1 = ASCIIToUTF16("db1"); const base::string16 kDB2 = ASCIIToUTF16("db2"); const base::string16 kDB3 = ASCIIToUTF16("db3"); @@ -319,9 +319,9 @@ class DatabaseTracker_TestHelper_Test { // Open three new databases. int64 database_size = 0; const std::string kOrigin1 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); const std::string kOrigin2 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); const base::string16 kDB1 = ASCIIToUTF16("db1"); const base::string16 kDB2 = ASCIIToUTF16("db2"); const base::string16 kDB3 = ASCIIToUTF16("db3"); @@ -447,7 +447,7 @@ class DatabaseTracker_TestHelper_Test { static void DatabaseTrackerQuotaIntegration() { const GURL kOrigin(kOrigin1Url); const std::string kOriginId = - webkit_base::GetOriginIdentifierFromURL(kOrigin); + webkit_database::GetIdentifierFromOrigin(kOrigin); const base::string16 kName = ASCIIToUTF16("name"); const base::string16 kDescription = ASCIIToUTF16("description"); @@ -545,9 +545,9 @@ class DatabaseTracker_TestHelper_Test { static void DatabaseTrackerClearSessionOnlyDatabasesOnExit() { int64 database_size = 0; const std::string kOrigin1 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); const std::string kOrigin2 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); const base::string16 kDB1 = ASCIIToUTF16("db1"); const base::string16 kDB2 = ASCIIToUTF16("db2"); const base::string16 kDescription = ASCIIToUTF16("database_description"); @@ -625,9 +625,9 @@ class DatabaseTracker_TestHelper_Test { static void DatabaseTrackerSetForceKeepSessionState() { int64 database_size = 0; const std::string kOrigin1 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin1Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin1Url)); const std::string kOrigin2 = - webkit_base::GetOriginIdentifierFromURL(GURL(kOrigin2Url)); + webkit_database::GetIdentifierFromOrigin(GURL(kOrigin2Url)); const base::string16 kDB1 = ASCIIToUTF16("db1"); const base::string16 kDB2 = ASCIIToUTF16("db2"); const base::string16 kDescription = ASCIIToUTF16("database_description"); @@ -703,7 +703,7 @@ class DatabaseTracker_TestHelper_Test { static void EmptyDatabaseNameIsValid() { const GURL kOrigin(kOrigin1Url); const std::string kOriginId = - webkit_base::GetOriginIdentifierFromURL(kOrigin); + webkit_database::GetIdentifierFromOrigin(kOrigin); const base::string16 kEmptyName; const base::string16 kDescription(ASCIIToUTF16("description")); const base::string16 kChangedDescription( @@ -752,7 +752,7 @@ class DatabaseTracker_TestHelper_Test { static void HandleSqliteError() { const GURL kOrigin(kOrigin1Url); const std::string kOriginId = - webkit_base::GetOriginIdentifierFromURL(kOrigin); + webkit_database::GetIdentifierFromOrigin(kOrigin); const base::string16 kName(ASCIIToUTF16("name")); const base::string16 kDescription(ASCIIToUTF16("description")); diff --git a/webkit/browser/database/database_util.cc b/webkit/browser/database/database_util.cc index e74f76ce46bd..5b6fd2877368 100644 --- a/webkit/browser/database/database_util.cc +++ b/webkit/browser/database/database_util.cc @@ -7,7 +7,6 @@ #include "base/basictypes.h" #include "base/strings/utf_string_conversions.h" #include "third_party/WebKit/public/platform/WebString.h" -#include "third_party/WebKit/public/web/WebSecurityOrigin.h" #include "webkit/browser/database/database_tracker.h" #include "webkit/browser/database/vfs_backend.h" diff --git a/webkit/browser/database/database_util_unittest.cc b/webkit/browser/database/database_util_unittest.cc index 6a212645e602..e776b79010f2 100644 --- a/webkit/browser/database/database_util_unittest.cc +++ b/webkit/browser/database/database_util_unittest.cc @@ -5,8 +5,8 @@ #include "base/strings/string_piece.h" #include "base/strings/utf_string_conversions.h" #include "testing/gtest/include/gtest/gtest.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_util.h" +#include "webkit/common/database/database_identifier.h" using webkit_database::DatabaseUtil; @@ -29,8 +29,8 @@ static void TestVfsFilePath(bool expected_result, } static GURL ToAndFromOriginIdentifier(const GURL origin_url) { - std::string id = webkit_base::GetOriginIdentifierFromURL(origin_url); - return webkit_base::GetOriginURLFromIdentifier(id); + std::string id = webkit_database::GetIdentifierFromOrigin(origin_url); + return webkit_database::GetOriginFromIdentifier(id); } static void TestValidOriginIdentifier(bool expected_result, diff --git a/webkit/browser/dom_storage/dom_storage_area.cc b/webkit/browser/dom_storage/dom_storage_area.cc index fceac6a69c59..2e00d4dfd376 100644 --- a/webkit/browser/dom_storage/dom_storage_area.cc +++ b/webkit/browser/dom_storage/dom_storage_area.cc @@ -12,13 +12,13 @@ #include "base/time.h" #include "third_party/WebKit/public/platform/WebString.h" #include "webkit/base/file_path_string_conversions.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/database/database_util.h" #include "webkit/browser/dom_storage/dom_storage_namespace.h" #include "webkit/browser/dom_storage/dom_storage_task_runner.h" #include "webkit/browser/dom_storage/local_storage_database_adapter.h" #include "webkit/browser/dom_storage/session_storage_database.h" #include "webkit/browser/dom_storage/session_storage_database_adapter.h" +#include "webkit/common/database/database_identifier.h" #include "webkit/common/dom_storage/dom_storage_map.h" #include "webkit/common/dom_storage/dom_storage_types.h" #include "webkit/common/fileapi/file_system_util.h" @@ -41,7 +41,7 @@ const base::FilePath::CharType DomStorageArea::kDatabaseFileExtension[] = // static base::FilePath DomStorageArea::DatabaseFileNameFromOrigin(const GURL& origin) { - std::string filename = webkit_base::GetOriginIdentifierFromURL(origin); + std::string filename = webkit_database::GetIdentifierFromOrigin(origin); // There is no base::FilePath.AppendExtension() method, so start with just the // extension as the filename, and then InsertBeforeExtension the desired // name. @@ -54,7 +54,7 @@ GURL DomStorageArea::OriginFromDatabaseFileName(const base::FilePath& name) { DCHECK(name.MatchesExtension(kDatabaseFileExtension)); std::string origin_id = name.BaseName().RemoveExtension().MaybeAsASCII(); - return webkit_base::GetOriginURLFromIdentifier(origin_id); + return webkit_database::GetOriginFromIdentifier(origin_id); } DomStorageArea::DomStorageArea(const GURL& origin, const base::FilePath& directory, diff --git a/webkit/browser/fileapi/obfuscated_file_util.cc b/webkit/browser/fileapi/obfuscated_file_util.cc index f80421736b93..1a7d2bfdc2e4 100644 --- a/webkit/browser/fileapi/obfuscated_file_util.cc +++ b/webkit/browser/fileapi/obfuscated_file_util.cc @@ -19,7 +19,6 @@ #include "base/strings/utf_string_conversions.h" #include "base/time.h" #include "googleurl/src/gurl.h" -#include "webkit/base/origin_url_conversions.h" #include "webkit/browser/fileapi/file_observers.h" #include "webkit/browser/fileapi/file_system_context.h" #include "webkit/browser/fileapi/file_system_operation_context.h" @@ -31,6 +30,7 @@ #include "webkit/browser/fileapi/syncable/syncable_file_system_util.h" #include "webkit/browser/fileapi/timed_task_helper.h" #include "webkit/browser/quota/quota_manager.h" +#include "webkit/common/database/database_identifier.h" #include "webkit/common/fileapi/file_system_util.h" // Example of various paths: @@ -229,7 +229,7 @@ class ObfuscatedOriginEnumerator origins_.pop_back(); } current_ = record; - return webkit_base::GetOriginURLFromIdentifier(record.origin); + return webkit_database::GetOriginFromIdentifier(record.origin); } // Returns the current origin's information. @@ -933,7 +933,7 @@ bool ObfuscatedFileUtil::DeleteDirectoryForOriginAndType( InitOriginDatabase(false); if (origin_database_) { origin_database_->RemovePathForOrigin( - webkit_base::GetOriginIdentifierFromURL(origin)); + webkit_database::GetIdentifierFromOrigin(origin)); } if (!file_util::Delete(origin_path, true /* recursive */)) return false; @@ -975,7 +975,7 @@ bool ObfuscatedFileUtil::DestroyDirectoryDatabase( return true; } std::string key = - webkit_base::GetOriginIdentifierFromURL(origin) + + webkit_database::GetIdentifierFromOrigin(origin) + type_string; DirectoryMap::iterator iter = directories_.find(key); if (iter != directories_.end()) { @@ -1180,7 +1180,7 @@ std::string ObfuscatedFileUtil::GetDirectoryDatabaseKey( special_storage_policy_->HasIsolatedStorage(origin)) { return type_string; } - return webkit_base::GetOriginIdentifierFromURL(origin) + + return webkit_database::GetIdentifierFromOrigin(origin) + type_string; } @@ -1232,7 +1232,7 @@ base::FilePath ObfuscatedFileUtil::GetDirectoryForOrigin( return base::FilePath(); } base::FilePath directory_name; - std::string id = webkit_base::GetOriginIdentifierFromURL(origin); + std::string id = webkit_database::GetIdentifierFromOrigin(origin); bool exists_in_db = origin_database_->HasOriginPath(id); if (!exists_in_db && !create) { @@ -1319,7 +1319,7 @@ bool ObfuscatedFileUtil::InitOriginDatabase(bool create) { DCHECK(special_storage_policy_->HasIsolatedStorage(isolated_origin_)); origin_database_.reset( new SandboxIsolatedOriginDatabase( - webkit_base::GetOriginIdentifierFromURL(isolated_origin_), + webkit_database::GetIdentifierFromOrigin(isolated_origin_), file_system_directory_)); return true; } diff --git a/webkit/common/database/database_identifier.cc b/webkit/common/database/database_identifier.cc index 72e6cd66e29b..f432f38f9546 100644 --- a/webkit/common/database/database_identifier.cc +++ b/webkit/common/database/database_identifier.cc @@ -10,6 +10,16 @@ namespace webkit_database { +// static +std::string GetIdentifierFromOrigin(const GURL& origin) { + return DatabaseIdentifier::CreateFromOrigin(origin).ToString(); +} + +// static +GURL GetOriginFromIdentifier(const std::string& identifier) { + return DatabaseIdentifier::Parse(identifier).ToOrigin(); +} + static bool SchemeIsUnique(const std::string& scheme) { return scheme == "about" || scheme == "data" || scheme == "javascript"; } @@ -116,6 +126,8 @@ std::string DatabaseIdentifier::ToString() const { } GURL DatabaseIdentifier::ToOrigin() const { + if (is_file_) + return GURL("file:///"); if (is_unique_) return GURL(); if (port_ == 0) diff --git a/webkit/common/database/database_identifier.h b/webkit/common/database/database_identifier.h index 0d735c6f8528..dd261f00e178 100644 --- a/webkit/common/database/database_identifier.h +++ b/webkit/common/database/database_identifier.h @@ -11,6 +11,11 @@ namespace webkit_database { +WEBKIT_STORAGE_COMMON_EXPORT std::string GetIdentifierFromOrigin( + const GURL& origin); +WEBKIT_STORAGE_COMMON_EXPORT GURL GetOriginFromIdentifier( + const std::string& identifier); + class WEBKIT_STORAGE_COMMON_EXPORT DatabaseIdentifier { public: static const DatabaseIdentifier UniqueFileIdentifier(); diff --git a/webkit/common/database/database_identifier_unittest.cc b/webkit/common/database/database_identifier_unittest.cc index 141f7a6b744b..e0cd675e590c 100644 --- a/webkit/common/database/database_identifier_unittest.cc +++ b/webkit/common/database/database_identifier_unittest.cc @@ -188,7 +188,7 @@ TEST(DatabaseIdentifierTest, ExtractOriginDataFromIdentifier) { "http", "nondefaultport.net", 8001, GURL("http://nondefaultport.net:8001"), false}, {"file__0", - "", "", 0, GURL(), true}, + "", "", 0, GURL("file:///"), true}, {"__0", "", "", 0, GURL(), true}, {"http_foo_bar_baz.org_0", @@ -226,6 +226,7 @@ TEST(DatabaseIdentifierTest, ExtractOriginDataFromIdentifier) { "HtTp_NonCanonicalRepresenTation_0", "http_non_ascii.\xa1.com_0", "http_not_canonical_escape%3d_0", + "http_bytes_after_port_0abcd", }; for (size_t i = 0; i < ARRAYSIZE_UNSAFE(bogus_components); ++i) { diff --git a/webkit/common/fileapi/file_system_util.cc b/webkit/common/fileapi/file_system_util.cc index 0f178449e9d6..2ce3c99ce2c5 100644 --- a/webkit/common/fileapi/file_system_util.cc +++ b/webkit/common/fileapi/file_system_util.cc @@ -12,7 +12,7 @@ #include "base/strings/sys_string_conversions.h" #include "base/strings/utf_string_conversions.h" #include "googleurl/src/gurl.h" -#include "webkit/base/origin_url_conversions.h" +#include "webkit/common/database/database_identifier.h" namespace fileapi { @@ -169,7 +169,7 @@ GURL GetFileSystemRootURI(const GURL& origin_url, FileSystemType type) { std::string GetFileSystemName(const GURL& origin_url, FileSystemType type) { std::string origin_identifier = - webkit_base::GetOriginIdentifierFromURL(origin_url); + webkit_database::GetIdentifierFromOrigin(origin_url); std::string type_string = GetFileSystemTypeString(type); DCHECK(!type_string.empty()); return origin_identifier + ":" + type_string;