diff options
Diffstat (limited to 'chrome')
47 files changed, 56 insertions, 4417 deletions
diff --git a/chrome/browser/browsing_data_indexed_db_helper.cc b/chrome/browser/browsing_data_indexed_db_helper.cc index 7afea58..0a03bf2 100644 --- a/chrome/browser/browsing_data_indexed_db_helper.cc +++ b/chrome/browser/browsing_data_indexed_db_helper.cc @@ -9,12 +9,12 @@ #include "base/scoped_ptr.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/profiles/profile.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +#include "content/browser/browser_thread.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "webkit/glue/webkit_glue.h" using WebKit::WebSecurityOrigin; diff --git a/chrome/browser/browsing_data_local_storage_helper.cc b/chrome/browser/browsing_data_local_storage_helper.cc index 8b42847..2b81f15 100644 --- a/chrome/browser/browsing_data_local_storage_helper.cc +++ b/chrome/browser/browsing_data_local_storage_helper.cc @@ -9,8 +9,8 @@ #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/browser_thread.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/profiles/profile.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebCString.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" diff --git a/chrome/browser/browsing_data_local_storage_helper_browsertest.cc b/chrome/browser/browsing_data_local_storage_helper_browsertest.cc index 90ee6b2..137ce56 100644 --- a/chrome/browser/browsing_data_local_storage_helper_browsertest.cc +++ b/chrome/browser/browsing_data_local_storage_helper_browsertest.cc @@ -9,14 +9,14 @@ #include "base/file_path.h" #include "base/file_util.h" #include "base/ref_counted.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/browser/in_process_webkit/webkit_thread.h" #include "chrome/browser/browsing_data_helper_browsertest.h" #include "chrome/browser/browsing_data_local_storage_helper.h" #include "chrome/test/in_process_browser_test.h" #include "chrome/test/testing_profile.h" #include "chrome/test/thread_test_helper.h" #include "chrome/test/ui_test_utils.h" +#include "content/browser/in_process_webkit/webkit_context.h" +#include "content/browser/in_process_webkit/webkit_thread.h" #include "testing/gtest/include/gtest/gtest.h" namespace { diff --git a/chrome/browser/browsing_data_remover.cc b/chrome/browser/browsing_data_remover.cc index 7a5183c..6361e30 100644 --- a/chrome/browser/browsing_data_remover.cc +++ b/chrome/browser/browsing_data_remover.cc @@ -10,11 +10,9 @@ #include "base/callback.h" #include "chrome/browser/autofill/personal_data_manager.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/browser_thread.h" #include "chrome/browser/download/download_manager.h" #include "chrome/browser/extensions/extension_service.h" #include "chrome/browser/history/history.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/metrics/user_metrics.h" #include "chrome/browser/net/chrome_net_log.h" @@ -30,6 +28,8 @@ #include "chrome/common/net/url_request_context_getter.h" #include "chrome/common/notification_source.h" #include "chrome/common/url_constants.h" +#include "content/browser/browser_thread.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "net/base/cookie_monster.h" #include "net/base/net_errors.h" #include "net/base/transport_security_state.h" diff --git a/chrome/browser/cookies_tree_model.cc b/chrome/browser/cookies_tree_model.cc index 311082f..db6bb23 100644 --- a/chrome/browser/cookies_tree_model.cc +++ b/chrome/browser/cookies_tree_model.cc @@ -13,7 +13,7 @@ #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "grit/app_resources.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" diff --git a/chrome/browser/debugger/devtools_window.cc b/chrome/browser/debugger/devtools_window.cc index 4bfe6a4..f613e76 100644 --- a/chrome/browser/debugger/devtools_window.cc +++ b/chrome/browser/debugger/devtools_window.cc @@ -13,15 +13,9 @@ #include "chrome/browser/debugger/devtools_manager.h" #include "chrome/browser/debugger/devtools_window.h" #include "chrome/browser/extensions/extension_service.h" -#include "chrome/browser/in_process_webkit/session_storage_namespace.h" #include "chrome/browser/load_notification_details.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/renderer_host/render_view_host.h" -#include "chrome/browser/tab_contents/navigation_controller.h" -#include "chrome/browser/tab_contents/navigation_entry.h" -#include "chrome/browser/tab_contents/tab_contents.h" -#include "chrome/browser/tab_contents/tab_contents_view.h" #include "chrome/browser/tabs/tab_strip_model.h" #include "chrome/browser/themes/browser_theme_provider.h" #include "chrome/browser/ui/browser.h" @@ -31,6 +25,12 @@ #include "chrome/common/pref_names.h" #include "chrome/common/render_messages.h" #include "chrome/common/url_constants.h" +#include "content/browser/in_process_webkit/session_storage_namespace.h" +#include "content/browser/renderer_host/render_view_host.h" +#include "content/browser/tab_contents/navigation_controller.h" +#include "content/browser/tab_contents/navigation_entry.h" +#include "content/browser/tab_contents/tab_contents.h" +#include "content/browser/tab_contents/tab_contents_view.h" #include "grit/generated_resources.h" const char DevToolsWindow::kDevToolsApp[] = "DevToolsApp"; diff --git a/chrome/browser/extensions/extension_data_deleter.cc b/chrome/browser/extensions/extension_data_deleter.cc index 05f51fa..b2d869c 100644 --- a/chrome/browser/extensions/extension_data_deleter.cc +++ b/chrome/browser/extensions/extension_data_deleter.cc @@ -4,10 +4,10 @@ #include "chrome/browser/extensions/extension_data_deleter.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/profiles/profile.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/net/url_request_context_getter.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "net/base/cookie_monster.h" #include "net/base/net_errors.h" #include "webkit/database/database_tracker.h" diff --git a/chrome/browser/extensions/extension_service_unittest.cc b/chrome/browser/extensions/extension_service_unittest.cc index 426be5c..1ee0f31 100644 --- a/chrome/browser/extensions/extension_service_unittest.cc +++ b/chrome/browser/extensions/extension_service_unittest.cc @@ -23,7 +23,6 @@ #include "base/utf_string_conversions.h" #include "base/version.h" #include "chrome/browser/appcache/chrome_appcache_service.h" -#include "chrome/browser/browser_thread.h" #include "chrome/browser/extensions/crx_installer.h" #include "chrome/browser/extensions/extension_creator.h" #include "chrome/browser/extensions/extension_error_reporter.h" @@ -33,8 +32,6 @@ #include "chrome/browser/extensions/external_pref_extension_loader.h" #include "chrome/browser/extensions/pack_extension_job.cc" #include "chrome/browser/file_system/browser_file_system_helper.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/prefs/browser_prefs.h" #include "chrome/browser/prefs/pref_service_mock_builder.h" #include "chrome/browser/prefs/scoped_pref_update.h" @@ -52,6 +49,9 @@ #include "chrome/common/pref_names.h" #include "chrome/common/url_constants.h" #include "chrome/test/testing_profile.h" +#include "content/browser/browser_thread.h" +#include "content/browser/in_process_webkit/dom_storage_context.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "googleurl/src/gurl.h" #include "net/base/cookie_monster.h" #include "net/base/cookie_options.h" diff --git a/chrome/browser/in_process_webkit/browser_webkitclient_impl.cc b/chrome/browser/in_process_webkit/browser_webkitclient_impl.cc deleted file mode 100644 index 0795f1b..0000000 --- a/chrome/browser/in_process_webkit/browser_webkitclient_impl.cc +++ /dev/null @@ -1,175 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/browser_webkitclient_impl.h" - -#include "base/file_util.h" -#include "base/logging.h" -#include "chrome/browser/in_process_webkit/dom_storage_message_filter.h" -#include "chrome/browser/in_process_webkit/indexed_db_key_utility_client.h" -#include "chrome/common/indexed_db_key.h" -#include "chrome/common/serialized_script_value.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebData.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" -#include "webkit/glue/webkit_glue.h" - -BrowserWebKitClientImpl::BrowserWebKitClientImpl() { - file_utilities_.set_sandbox_enabled(false); -} - -BrowserWebKitClientImpl::~BrowserWebKitClientImpl() { -} - -WebKit::WebClipboard* BrowserWebKitClientImpl::clipboard() { - NOTREACHED(); - return NULL; -} - -WebKit::WebMimeRegistry* BrowserWebKitClientImpl::mimeRegistry() { - NOTREACHED(); - return NULL; -} - -WebKit::WebFileUtilities* BrowserWebKitClientImpl::fileUtilities() { - return &file_utilities_; -} - -WebKit::WebSandboxSupport* BrowserWebKitClientImpl::sandboxSupport() { - NOTREACHED(); - return NULL; -} - -bool BrowserWebKitClientImpl::sandboxEnabled() { - return false; -} - -unsigned long long BrowserWebKitClientImpl::visitedLinkHash( - const char* canonical_url, - size_t length) { - NOTREACHED(); - return 0; -} - -bool BrowserWebKitClientImpl::isLinkVisited(unsigned long long link_hash) { - NOTREACHED(); - return false; -} - -WebKit::WebMessagePortChannel* -BrowserWebKitClientImpl::createMessagePortChannel() { - NOTREACHED(); - return NULL; -} - -void BrowserWebKitClientImpl::setCookies( - const WebKit::WebURL& url, - const WebKit::WebURL& first_party_for_cookies, - const WebKit::WebString& value) { - NOTREACHED(); -} - -WebKit::WebString BrowserWebKitClientImpl::cookies( - const WebKit::WebURL& url, - const WebKit::WebURL& first_party_for_cookies) { - NOTREACHED(); - return WebKit::WebString(); -} - -void BrowserWebKitClientImpl::prefetchHostName(const WebKit::WebString&) { - NOTREACHED(); -} - -WebKit::WebString BrowserWebKitClientImpl::defaultLocale() { - NOTREACHED(); - return WebKit::WebString(); -} - -WebKit::WebThemeEngine* BrowserWebKitClientImpl::themeEngine() { - NOTREACHED(); - return NULL; -} - -WebKit::WebURLLoader* BrowserWebKitClientImpl::createURLLoader() { - NOTREACHED(); - return NULL; -} - -WebKit::WebSocketStreamHandle* - BrowserWebKitClientImpl::createSocketStreamHandle() { - NOTREACHED(); - return NULL; -} - -void BrowserWebKitClientImpl::getPluginList(bool refresh, - WebKit::WebPluginListBuilder* builder) { - NOTREACHED(); -} - -WebKit::WebData BrowserWebKitClientImpl::loadResource(const char* name) { - NOTREACHED(); - return WebKit::WebData(); -} - -WebKit::WebStorageNamespace* -BrowserWebKitClientImpl::createLocalStorageNamespace( - const WebKit::WebString& path, unsigned quota) { - // The "WebStorage" interface is used for renderer WebKit -> browser WebKit - // communication only. "WebStorageClient" will be used for browser WebKit -> - // renderer WebKit. So this will never be implemented. - NOTREACHED(); - return 0; -} - -void BrowserWebKitClientImpl::dispatchStorageEvent( - const WebKit::WebString& key, const WebKit::WebString& old_value, - const WebKit::WebString& new_value, const WebKit::WebString& origin, - const WebKit::WebURL& url, bool is_local_storage) { - // TODO(jorlow): Implement - if (!is_local_storage) - return; - - DOMStorageMessageFilter::DispatchStorageEvent(key, old_value, new_value, - origin, url, is_local_storage); -} - -WebKit::WebSharedWorkerRepository* -BrowserWebKitClientImpl::sharedWorkerRepository() { - NOTREACHED(); - return NULL; -} - -int BrowserWebKitClientImpl::databaseDeleteFile( - const WebKit::WebString& vfs_file_name, bool sync_dir) { - const FilePath path = webkit_glue::WebStringToFilePath(vfs_file_name); - return file_util::Delete(path, false) ? 0 : 1; -} - -void BrowserWebKitClientImpl::createIDBKeysFromSerializedValuesAndKeyPath( - const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values, - const WebKit::WebString& keyPath, - WebKit::WebVector<WebKit::WebIDBKey>& keys) { - - std::vector<SerializedScriptValue> std_values; - size_t size = values.size(); - std_values.reserve(size); - for (size_t i = 0; i < size; ++i) - std_values.push_back(SerializedScriptValue(values[i])); - - std::vector<IndexedDBKey> std_keys; - IndexedDBKeyUtilityClient:: - CreateIDBKeysFromSerializedValuesAndKeyPath(std_values, keyPath, - &std_keys); - - keys = std_keys; -} - -WebKit::WebSerializedScriptValue -BrowserWebKitClientImpl::injectIDBKeyIntoSerializedValue( - const WebKit::WebIDBKey& key, const WebKit::WebSerializedScriptValue& value, - const WebKit::WebString& keyPath) { - return IndexedDBKeyUtilityClient::InjectIDBKeyIntoSerializedValue( - IndexedDBKey(key), SerializedScriptValue(value), keyPath); -} diff --git a/chrome/browser/in_process_webkit/browser_webkitclient_impl.h b/chrome/browser/in_process_webkit/browser_webkitclient_impl.h deleted file mode 100644 index e0dbae5..0000000 --- a/chrome/browser/in_process_webkit/browser_webkitclient_impl.h +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_BROWSER_WEBKITCLIENT_IMPL_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_BROWSER_WEBKITCLIENT_IMPL_H_ -#pragma once - -#include "webkit/glue/webfileutilities_impl.h" -#include "webkit/glue/webkitclient_impl.h" - -class IndexedDBKeyUtilityClient; - -class BrowserWebKitClientImpl : public webkit_glue::WebKitClientImpl { - public: - BrowserWebKitClientImpl(); - virtual ~BrowserWebKitClientImpl(); - - // WebKitClient methods: - virtual WebKit::WebClipboard* clipboard(); - virtual WebKit::WebMimeRegistry* mimeRegistry(); - virtual WebKit::WebFileUtilities* fileUtilities(); - virtual WebKit::WebSandboxSupport* sandboxSupport(); - virtual bool sandboxEnabled(); - virtual unsigned long long visitedLinkHash(const char* canonicalURL, - size_t length); - virtual bool isLinkVisited(unsigned long long linkHash); - virtual WebKit::WebMessagePortChannel* createMessagePortChannel(); - virtual void setCookies(const WebKit::WebURL& url, - const WebKit::WebURL& first_party_for_cookies, - const WebKit::WebString& value); - virtual WebKit::WebString cookies( - const WebKit::WebURL& url, - const WebKit::WebURL& first_party_for_cookies); - virtual void prefetchHostName(const WebKit::WebString&); - virtual WebKit::WebString defaultLocale(); - virtual WebKit::WebThemeEngine* themeEngine(); - virtual WebKit::WebURLLoader* createURLLoader(); - virtual WebKit::WebSocketStreamHandle* createSocketStreamHandle(); - virtual void getPluginList(bool refresh, WebKit::WebPluginListBuilder*); - virtual WebKit::WebData loadResource(const char* name); - virtual WebKit::WebStorageNamespace* createLocalStorageNamespace( - const WebKit::WebString& path, unsigned quota); - virtual void dispatchStorageEvent(const WebKit::WebString& key, - const WebKit::WebString& oldValue, const WebKit::WebString& newValue, - const WebKit::WebString& origin, const WebKit::WebURL& url, - bool isLocalStorage); - virtual WebKit::WebSharedWorkerRepository* sharedWorkerRepository(); - virtual int databaseDeleteFile(const WebKit::WebString& vfs_file_name, - bool sync_dir); - virtual void createIDBKeysFromSerializedValuesAndKeyPath( - const WebKit::WebVector<WebKit::WebSerializedScriptValue>& values, - const WebKit::WebString& keyPath, - WebKit::WebVector<WebKit::WebIDBKey>& keys); - virtual WebKit::WebSerializedScriptValue injectIDBKeyIntoSerializedValue( - const WebKit::WebIDBKey& key, - const WebKit::WebSerializedScriptValue& value, - const WebKit::WebString& keyPath); - - private: - webkit_glue::WebFileUtilitiesImpl file_utilities_; -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_BROWSER_WEBKITCLIENT_IMPL_H_ diff --git a/chrome/browser/in_process_webkit/dom_storage_area.cc b/chrome/browser/in_process_webkit/dom_storage_area.cc deleted file mode 100644 index d2953a2..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_area.cc +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/dom_storage_area.h" - -#include "base/task.h" -#include "chrome/browser/content_settings/host_content_settings_map.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/dom_storage_namespace.h" -#include "chrome/common/render_messages.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" -#include "webkit/glue/webkit_glue.h" - -using WebKit::WebSecurityOrigin; -using WebKit::WebStorageArea; -using WebKit::WebString; -using WebKit::WebURL; - -DOMStorageArea::DOMStorageArea( - const string16& origin, - int64 id, - DOMStorageNamespace* owner, - HostContentSettingsMap* host_content_settings_map) - : origin_(origin), - origin_url_(origin), - id_(id), - owner_(owner), - host_content_settings_map_(host_content_settings_map) { - DCHECK(owner_); - DCHECK(host_content_settings_map_); -} - -DOMStorageArea::~DOMStorageArea() { -} - -unsigned DOMStorageArea::Length() { - CreateWebStorageAreaIfNecessary(); - return storage_area_->length(); -} - -NullableString16 DOMStorageArea::Key(unsigned index) { - CreateWebStorageAreaIfNecessary(); - return storage_area_->key(index); -} - -NullableString16 DOMStorageArea::GetItem(const string16& key) { - CreateWebStorageAreaIfNecessary(); - return storage_area_->getItem(key); -} - -NullableString16 DOMStorageArea::SetItem( - const string16& key, const string16& value, - WebStorageArea::Result* result) { - if (!CheckContentSetting(key, value)) { - *result = WebStorageArea::ResultBlockedByPolicy; - return NullableString16(true); // Ignored if the content was blocked. - } - - CreateWebStorageAreaIfNecessary(); - WebString old_value; - storage_area_->setItem(key, value, WebURL(), *result, old_value); - return old_value; -} - -NullableString16 DOMStorageArea::RemoveItem(const string16& key) { - CreateWebStorageAreaIfNecessary(); - WebString old_value; - storage_area_->removeItem(key, WebURL(), old_value); - return old_value; -} - -bool DOMStorageArea::Clear() { - CreateWebStorageAreaIfNecessary(); - bool somethingCleared; - storage_area_->clear(WebURL(), somethingCleared); - return somethingCleared; -} - -void DOMStorageArea::PurgeMemory() { - storage_area_.reset(); -} - -void DOMStorageArea::CreateWebStorageAreaIfNecessary() { - if (!storage_area_.get()) - storage_area_.reset(owner_->CreateWebStorageArea(origin_)); -} - -bool DOMStorageArea::CheckContentSetting( - const string16& key, const string16& value) { - ContentSetting content_setting = - host_content_settings_map_->GetContentSetting( - origin_url_, CONTENT_SETTINGS_TYPE_COOKIES, ""); - return (content_setting != CONTENT_SETTING_BLOCK); -} diff --git a/chrome/browser/in_process_webkit/dom_storage_area.h b/chrome/browser/in_process_webkit/dom_storage_area.h deleted file mode 100644 index 950a2d2..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_area.h +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_AREA_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_AREA_H_ -#pragma once - -#include "base/hash_tables.h" -#include "base/nullable_string16.h" -#include "base/ref_counted.h" -#include "base/scoped_ptr.h" -#include "base/string16.h" -#include "chrome/common/dom_storage_common.h" -#include "googleurl/src/gurl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h" - -class DOMStorageNamespace; -class HostContentSettingsMap; - -// Only use on the WebKit thread. DOMStorageNamespace manages our registration -// with DOMStorageContext. -class DOMStorageArea { - public: - DOMStorageArea(const string16& origin, - int64 id, - DOMStorageNamespace* owner, - HostContentSettingsMap* host_content_settings_map); - ~DOMStorageArea(); - - unsigned Length(); - NullableString16 Key(unsigned index); - NullableString16 GetItem(const string16& key); - NullableString16 SetItem( - const string16& key, const string16& value, - WebKit::WebStorageArea::Result* result); - NullableString16 RemoveItem(const string16& key); - bool Clear(); - void PurgeMemory(); - - int64 id() const { return id_; } - - DOMStorageNamespace* owner() const { return owner_; } - - private: - // Creates the underlying WebStorageArea on demand. - void CreateWebStorageAreaIfNecessary(); - - // Used to see if setItem has permission to do its thing. - bool CheckContentSetting(const string16& key, const string16& value); - - // The origin this storage area represents. - string16 origin_; - GURL origin_url_; - - // The storage area we wrap. - scoped_ptr<WebKit::WebStorageArea> storage_area_; - - // Our storage area id. Unique to our parent WebKitContext. - int64 id_; - - // The DOMStorageNamespace that owns us. - DOMStorageNamespace* owner_; - - scoped_refptr<HostContentSettingsMap> host_content_settings_map_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageArea); -}; - -#if defined(COMPILER_GCC) -namespace __gnu_cxx { - -template<> -struct hash<DOMStorageArea*> { - std::size_t operator()(DOMStorageArea* const& p) const { - return reinterpret_cast<std::size_t>(p); - } -}; - -} // namespace __gnu_cxx -#endif - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_AREA_H_ diff --git a/chrome/browser/in_process_webkit/dom_storage_browsertest.cc b/chrome/browser/in_process_webkit/dom_storage_browsertest.cc deleted file mode 100644 index fac7d42..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_browsertest.cc +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (c) 2010 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 "base/file_path.h" -#include "base/file_util.h" -#include "base/scoped_temp_dir.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/test/in_process_browser_test.h" -#include "chrome/test/testing_profile.h" -#include "chrome/test/thread_test_helper.h" - -typedef InProcessBrowserTest DOMStorageBrowserTest; - -// In proc browser test is needed here because ClearLocalState indirectly calls -// WebKit's isMainThread through WebSecurityOrigin->SecurityOrigin. -IN_PROC_BROWSER_TEST_F(DOMStorageBrowserTest, ClearLocalState) { - // Create test files. - ScopedTempDir temp_dir; - ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); - FilePath domstorage_dir = temp_dir.path().Append( - DOMStorageContext::kLocalStorageDirectory); - ASSERT_TRUE(file_util::CreateDirectory(domstorage_dir)); - - FilePath::StringType file_name_1(FILE_PATH_LITERAL("http_foo_0")); - file_name_1.append(DOMStorageContext::kLocalStorageExtension); - FilePath::StringType file_name_2(FILE_PATH_LITERAL("chrome-extension_foo_0")); - file_name_2.append(DOMStorageContext::kLocalStorageExtension); - FilePath temp_file_path_1 = domstorage_dir.Append(file_name_1); - FilePath temp_file_path_2 = domstorage_dir.Append(file_name_2); - - ASSERT_EQ(1, file_util::WriteFile(temp_file_path_1, ".", 1)); - ASSERT_EQ(1, file_util::WriteFile(temp_file_path_2, "o", 1)); - - // Create the scope which will ensure we run the destructor of the webkit - // context which should trigger the clean up. - { - TestingProfile profile; - WebKitContext *webkit_context = profile.GetWebKitContext(); - webkit_context->dom_storage_context()->set_data_path(temp_dir.path()); - webkit_context->set_clear_local_state_on_exit(true); - } - // Make sure we wait until the destructor has run. - scoped_refptr<ThreadTestHelper> helper( - new ThreadTestHelper(BrowserThread::WEBKIT)); - ASSERT_TRUE(helper->Run()); - - // Because we specified https for scheme to be skipped the second file - // should survive and the first go into vanity. - ASSERT_FALSE(file_util::PathExists(temp_file_path_1)); - ASSERT_TRUE(file_util::PathExists(temp_file_path_2)); -} diff --git a/chrome/browser/in_process_webkit/dom_storage_context.cc b/chrome/browser/in_process_webkit/dom_storage_context.cc deleted file mode 100644 index 45eae2a..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_context.cc +++ /dev/null @@ -1,289 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/dom_storage_context.h" - -#include <algorithm> - -#include "base/file_path.h" -#include "base/file_util.h" -#include "base/string_util.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/in_process_webkit/dom_storage_area.h" -#include "chrome/browser/in_process_webkit/dom_storage_namespace.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/common/dom_storage_common.h" -#include "chrome/common/url_constants.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" -#include "webkit/glue/webkit_glue.h" - -using WebKit::WebSecurityOrigin; - -namespace { - -void ClearLocalState(const FilePath& domstorage_path, - const char* url_scheme_to_be_skipped) { - file_util::FileEnumerator file_enumerator( - domstorage_path, false, file_util::FileEnumerator::FILES); - for (FilePath file_path = file_enumerator.Next(); !file_path.empty(); - file_path = file_enumerator.Next()) { - if (file_path.Extension() == DOMStorageContext::kLocalStorageExtension) { - WebSecurityOrigin web_security_origin = - WebSecurityOrigin::createFromDatabaseIdentifier( - webkit_glue::FilePathToWebString(file_path.BaseName())); - if (!EqualsASCII(web_security_origin.protocol(), - url_scheme_to_be_skipped)) { - file_util::Delete(file_path, false); - } - } - } -} - -} // namespace - -const FilePath::CharType DOMStorageContext::kLocalStorageDirectory[] = - FILE_PATH_LITERAL("Local Storage"); - -const FilePath::CharType DOMStorageContext::kLocalStorageExtension[] = - FILE_PATH_LITERAL(".localstorage"); - -DOMStorageContext::DOMStorageContext(WebKitContext* webkit_context) - : last_storage_area_id_(0), - last_session_storage_namespace_id_on_ui_thread_(kLocalStorageNamespaceId), - last_session_storage_namespace_id_on_io_thread_(kLocalStorageNamespaceId), - clear_local_state_on_exit_(false) { - data_path_ = webkit_context->data_path(); -} - -DOMStorageContext::~DOMStorageContext() { - // This should not go away until all DOM Storage message filters have gone - // away. And they remove themselves from this list. - DCHECK(message_filter_set_.empty()); - - for (StorageNamespaceMap::iterator iter(storage_namespace_map_.begin()); - iter != storage_namespace_map_.end(); ++iter) { - delete iter->second; - } - - // 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_.Append(kLocalStorageDirectory), - chrome::kExtensionScheme); - } -} - -int64 DOMStorageContext::AllocateStorageAreaId() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - return ++last_storage_area_id_; -} - -int64 DOMStorageContext::AllocateSessionStorageNamespaceId() { - if (BrowserThread::CurrentlyOn(BrowserThread::UI)) - return ++last_session_storage_namespace_id_on_ui_thread_; - return --last_session_storage_namespace_id_on_io_thread_; -} - -int64 DOMStorageContext::CloneSessionStorage(int64 original_id) { - DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - int64 clone_id = AllocateSessionStorageNamespaceId(); - BrowserThread::PostTask( - BrowserThread::WEBKIT, FROM_HERE, NewRunnableFunction( - &DOMStorageContext::CompleteCloningSessionStorage, - this, original_id, clone_id)); - return clone_id; -} - -void DOMStorageContext::RegisterStorageArea(DOMStorageArea* storage_area) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - int64 id = storage_area->id(); - DCHECK(!GetStorageArea(id)); - storage_area_map_[id] = storage_area; -} - -void DOMStorageContext::UnregisterStorageArea(DOMStorageArea* storage_area) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - int64 id = storage_area->id(); - DCHECK(GetStorageArea(id)); - storage_area_map_.erase(id); -} - -DOMStorageArea* DOMStorageContext::GetStorageArea(int64 id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - StorageAreaMap::iterator iter = storage_area_map_.find(id); - if (iter == storage_area_map_.end()) - return NULL; - return iter->second; -} - -void DOMStorageContext::DeleteSessionStorageNamespace(int64 namespace_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - StorageNamespaceMap::iterator iter = - storage_namespace_map_.find(namespace_id); - if (iter == storage_namespace_map_.end()) - return; - DCHECK(iter->second->dom_storage_type() == DOM_STORAGE_SESSION); - delete iter->second; - storage_namespace_map_.erase(iter); -} - -DOMStorageNamespace* DOMStorageContext::GetStorageNamespace( - int64 id, bool allocation_allowed) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - StorageNamespaceMap::iterator iter = storage_namespace_map_.find(id); - if (iter != storage_namespace_map_.end()) - return iter->second; - if (!allocation_allowed) - return NULL; - if (id == kLocalStorageNamespaceId) - return CreateLocalStorage(); - return CreateSessionStorage(id); -} - -void DOMStorageContext::RegisterMessageFilter( - DOMStorageMessageFilter* message_filter) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - DCHECK(message_filter_set_.find(message_filter) == - message_filter_set_.end()); - message_filter_set_.insert(message_filter); -} - -void DOMStorageContext::UnregisterMessageFilter( - DOMStorageMessageFilter* message_filter) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - DCHECK(message_filter_set_.find(message_filter) != - message_filter_set_.end()); - message_filter_set_.erase(message_filter); -} - -const DOMStorageContext::MessageFilterSet* -DOMStorageContext::GetMessageFilterSet() const { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - return &message_filter_set_; -} - -void DOMStorageContext::PurgeMemory() { - // It is only safe to purge the memory from the LocalStorage namespace, - // because it is backed by disk and can be reloaded later. If we purge a - // SessionStorage namespace, its data will be gone forever, because it isn't - // currently backed by disk. - DOMStorageNamespace* local_storage = - GetStorageNamespace(kLocalStorageNamespaceId, false); - if (local_storage) - local_storage->PurgeMemory(); -} - -void DOMStorageContext::DeleteDataModifiedSince( - const base::Time& cutoff, - const char* url_scheme_to_be_skipped, - const std::vector<string16>& protected_origins) { - // Make sure that we don't delete a database that's currently being accessed - // by unloading all of the databases temporarily. - PurgeMemory(); - - file_util::FileEnumerator file_enumerator( - data_path_.Append(kLocalStorageDirectory), false, - file_util::FileEnumerator::FILES); - for (FilePath path = file_enumerator.Next(); !path.value().empty(); - path = file_enumerator.Next()) { - WebSecurityOrigin web_security_origin = - WebSecurityOrigin::createFromDatabaseIdentifier( - webkit_glue::FilePathToWebString(path.BaseName())); - if (EqualsASCII(web_security_origin.protocol(), url_scheme_to_be_skipped)) - continue; - - std::vector<string16>::const_iterator find_iter = - std::find(protected_origins.begin(), protected_origins.end(), - web_security_origin.databaseIdentifier()); - if (find_iter != protected_origins.end()) - continue; - - file_util::FileEnumerator::FindInfo find_info; - file_enumerator.GetFindInfo(&find_info); - if (file_util::HasFileBeenModifiedSince(find_info, cutoff)) - file_util::Delete(path, false); - } -} - -void DOMStorageContext::DeleteLocalStorageFile(const FilePath& file_path) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - - // Make sure that we don't delete a database that's currently being accessed - // by unloading all of the databases temporarily. - // TODO(bulach): both this method and DeleteDataModifiedSince could purge - // only the memory used by the specific file instead of all memory at once. - // See http://crbug.com/32000 - PurgeMemory(); - file_util::Delete(file_path, false); -} - -void DOMStorageContext::DeleteLocalStorageForOrigin(const string16& origin_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DeleteLocalStorageFile(GetLocalStorageFilePath(origin_id)); -} - -void DOMStorageContext::DeleteAllLocalStorageFiles() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - - // Make sure that we don't delete a database that's currently being accessed - // by unloading all of the databases temporarily. - PurgeMemory(); - - file_util::FileEnumerator file_enumerator( - data_path_.Append(kLocalStorageDirectory), false, - file_util::FileEnumerator::FILES); - for (FilePath file_path = file_enumerator.Next(); !file_path.empty(); - file_path = file_enumerator.Next()) { - if (file_path.Extension() == kLocalStorageExtension) - file_util::Delete(file_path, false); - } -} - -DOMStorageNamespace* DOMStorageContext::CreateLocalStorage() { - FilePath dir_path; - if (!data_path_.empty()) - dir_path = data_path_.Append(kLocalStorageDirectory); - DOMStorageNamespace* new_namespace = - DOMStorageNamespace::CreateLocalStorageNamespace(this, dir_path); - RegisterStorageNamespace(new_namespace); - return new_namespace; -} - -DOMStorageNamespace* DOMStorageContext::CreateSessionStorage( - int64 namespace_id) { - DOMStorageNamespace* new_namespace = - DOMStorageNamespace::CreateSessionStorageNamespace(this, namespace_id); - RegisterStorageNamespace(new_namespace); - return new_namespace; -} - -void DOMStorageContext::RegisterStorageNamespace( - DOMStorageNamespace* storage_namespace) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - int64 id = storage_namespace->id(); - DCHECK(!GetStorageNamespace(id, false)); - storage_namespace_map_[id] = storage_namespace; -} - -/* static */ -void DOMStorageContext::CompleteCloningSessionStorage( - DOMStorageContext* context, int64 existing_id, int64 clone_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageNamespace* existing_namespace = - context->GetStorageNamespace(existing_id, false); - // If nothing exists, then there's nothing to clone. - if (existing_namespace) - context->RegisterStorageNamespace(existing_namespace->Copy(clone_id)); -} - -FilePath DOMStorageContext::GetLocalStorageFilePath( - const string16& origin_id) const { - FilePath storageDir = data_path_.Append( - DOMStorageContext::kLocalStorageDirectory); - FilePath::StringType id = - webkit_glue::WebStringToFilePathString(origin_id); - return storageDir.Append(id.append(kLocalStorageExtension)); -} diff --git a/chrome/browser/in_process_webkit/dom_storage_context.h b/chrome/browser/in_process_webkit/dom_storage_context.h deleted file mode 100644 index 7b88671..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_context.h +++ /dev/null @@ -1,157 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_CONTEXT_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_CONTEXT_H_ -#pragma once - -#include <map> -#include <set> - -#include "base/file_path.h" -#include "base/string16.h" -#include "base/time.h" - -class DOMStorageArea; -class DOMStorageMessageFilter; -class DOMStorageNamespace; -class WebKitContext; - -// This is owned by WebKitContext and is all the dom storage information that's -// shared by all the DOMStorageMessageFilters that share the same profile. The -// specifics of responsibilities are fairly well documented here and in -// StorageNamespace and StorageArea. Everything is only to be accessed on the -// WebKit thread unless noted otherwise. -// -// NOTE: Virtual methods facilitate mocking functions for testing. -class DOMStorageContext { - public: - explicit DOMStorageContext(WebKitContext* webkit_context); - virtual ~DOMStorageContext(); - - // Invalid storage id. No storage session will ever report this value. - // Used in DOMStorageMessageFilter::OnStorageAreaId when coping with - // interactions with non-existent storage sessions. - static const int64 kInvalidStorageId = -1; - - // Allocate a new storage area id. Only call on the WebKit thread. - int64 AllocateStorageAreaId(); - - // Allocate a new session storage id. Only call on the UI or IO thread. - int64 AllocateSessionStorageNamespaceId(); - - // Clones a session storage namespace and returns the cloned namespaces' id. - // Only call on the IO thread. - int64 CloneSessionStorage(int64 original_id); - - // Various storage area methods. The storage area is owned by one of the - // namespaces that's owned by this class. - void RegisterStorageArea(DOMStorageArea* storage_area); - void UnregisterStorageArea(DOMStorageArea* storage_area); - DOMStorageArea* GetStorageArea(int64 id); - - // Called on WebKit thread when a session storage namespace can be deleted. - void DeleteSessionStorageNamespace(int64 namespace_id); - - // Get a namespace from an id. What's returned is owned by this class. If - // allocation_allowed is true, then this function will create the storage - // namespace if it hasn't been already. - DOMStorageNamespace* GetStorageNamespace(int64 id, bool allocation_allowed); - - // Sometimes an event from one DOM storage message filter requires - // communication to all of them. - typedef std::set<DOMStorageMessageFilter*> MessageFilterSet; - void RegisterMessageFilter(DOMStorageMessageFilter* message_filter); - void UnregisterMessageFilter(DOMStorageMessageFilter* MessageFilter); - const MessageFilterSet* GetMessageFilterSet() const; - - // Tells storage namespaces to purge any memory they do not need. - virtual void PurgeMemory(); - - // Delete any local storage files that have been touched since the cutoff - // date that's supplied. - void DeleteDataModifiedSince(const base::Time& cutoff, - const char* url_scheme_to_be_skipped, - const std::vector<string16>& protected_origins); - - // Deletes a single local storage file. - void DeleteLocalStorageFile(const FilePath& file_path); - - // Deletes the local storage file for the given origin. - void DeleteLocalStorageForOrigin(const string16& origin_id); - - // Deletes all local storage files. - void DeleteAllLocalStorageFiles(); - - // The local storage directory. - static const FilePath::CharType kLocalStorageDirectory[]; - - // The local storage file extension. - static const FilePath::CharType kLocalStorageExtension[]; - - // Get the file name of the local storage file for the given origin. - FilePath GetLocalStorageFilePath(const string16& origin_id) const; - - void set_clear_local_state_on_exit_(bool clear_local_state) { - clear_local_state_on_exit_ = clear_local_state; - } - -#ifdef UNIT_TEST - // For unit tests allow to override the |data_path_|. - void set_data_path(const FilePath& data_path) { data_path_ = data_path; } -#endif - - private: - // Get the local storage instance. The object is owned by this class. - DOMStorageNamespace* CreateLocalStorage(); - - // Get a new session storage namespace. The object is owned by this class. - DOMStorageNamespace* CreateSessionStorage(int64 namespace_id); - - // Used internally to register storage namespaces we create. - void RegisterStorageNamespace(DOMStorageNamespace* storage_namespace); - - // The WebKit thread half of CloneSessionStorage above. Static because - // DOMStorageContext isn't ref counted thus we can't use a runnable method. - // That said, we know this is safe because this class is destroyed on the - // WebKit thread, so there's no way it could be destroyed before this is run. - static void CompleteCloningSessionStorage(DOMStorageContext* context, - int64 existing_id, int64 clone_id); - - // The last used storage_area_id and storage_namespace_id's. For the storage - // namespaces, IDs allocated on the UI thread are positive and count up while - // IDs allocated on the IO thread are negative and count down. This allows us - // to allocate unique IDs on both without any locking. All storage area ids - // are allocated on the WebKit thread. - int64 last_storage_area_id_; - int64 last_session_storage_namespace_id_on_ui_thread_; - int64 last_session_storage_namespace_id_on_io_thread_; - - // True if the destructor should delete its files. - bool clear_local_state_on_exit_; - - // Path where the profile data is stored. - // TODO(pastarmovj): Keep in mind that unlike indexed db data_path_ variable - // this one still has to point to the upper level dir because of the - // MigrateLocalStorageDirectory function. Once this function disappears we can - // make it point directly to the dom storage path. - FilePath data_path_; - - // All the DOMStorageMessageFilters that are attached to us. ONLY USE ON THE - // IO THREAD! - MessageFilterSet message_filter_set_; - - // Maps ids to StorageAreas. We do NOT own these objects. StorageNamespace - // (which does own them) will notify us when we should remove the entries. - typedef std::map<int64, DOMStorageArea*> StorageAreaMap; - StorageAreaMap storage_area_map_; - - // Maps ids to StorageNamespaces. We own these objects. - typedef std::map<int64, DOMStorageNamespace*> StorageNamespaceMap; - StorageNamespaceMap storage_namespace_map_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageContext); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_CONTEXT_H_ diff --git a/chrome/browser/in_process_webkit/dom_storage_message_filter.cc b/chrome/browser/in_process_webkit/dom_storage_message_filter.cc deleted file mode 100644 index eaaff5c..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_message_filter.cc +++ /dev/null @@ -1,232 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/dom_storage_message_filter.h" - -#include "base/nullable_string16.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/in_process_webkit/dom_storage_area.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/dom_storage_namespace.h" -#include "chrome/browser/metrics/user_metrics.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/renderer_host/browser_render_process_host.h" -#include "chrome/browser/renderer_host/render_view_host_notification_task.h" -#include "chrome/common/dom_storage_messages.h" -#include "chrome/common/url_constants.h" -#include "googleurl/src/gurl.h" - -using WebKit::WebStorageArea; - -DOMStorageMessageFilter* DOMStorageMessageFilter::storage_event_message_filter = - NULL; -const GURL* DOMStorageMessageFilter::storage_event_url_ = NULL; - -DOMStorageMessageFilter:: -ScopedStorageEventContext::ScopedStorageEventContext( - DOMStorageMessageFilter* dispatcher_message_filter, const GURL* url) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DCHECK(!storage_event_message_filter); - DCHECK(!storage_event_url_); - storage_event_message_filter = dispatcher_message_filter; - storage_event_url_ = url; - DCHECK(storage_event_message_filter); - DCHECK(storage_event_url_); -} - -DOMStorageMessageFilter:: -ScopedStorageEventContext::~ScopedStorageEventContext() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DCHECK(storage_event_message_filter); - DCHECK(storage_event_url_); - storage_event_message_filter = NULL; - storage_event_url_ = NULL; -} - -DOMStorageMessageFilter::DOMStorageMessageFilter(int process_id, - Profile* profile) - : webkit_context_(profile->GetWebKitContext()), - process_id_(process_id), - host_content_settings_map_(profile->GetHostContentSettingsMap()) { -} - -DOMStorageMessageFilter::~DOMStorageMessageFilter() { - // This is not always true during testing. - if (peer_handle()) - Context()->UnregisterMessageFilter(this); -} - -void DOMStorageMessageFilter::OnChannelConnected(int32 peer_pid) { - BrowserMessageFilter::OnChannelConnected(peer_pid); - - Context()->RegisterMessageFilter(this); -} - -/* static */ -void DOMStorageMessageFilter::DispatchStorageEvent(const NullableString16& key, - const NullableString16& old_value, const NullableString16& new_value, - const string16& origin, const GURL& url, bool is_local_storage) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DCHECK(is_local_storage); // Only LocalStorage is implemented right now. - DCHECK(storage_event_message_filter); - DOMStorageMsg_Event_Params params; - params.key = key; - params.old_value = old_value; - params.new_value = new_value; - params.origin = origin; - params.url = *storage_event_url_; // The url passed in is junk. - params.storage_type = is_local_storage ? DOM_STORAGE_LOCAL - : DOM_STORAGE_SESSION; - // The storage_event_message_filter is the DOMStorageMessageFilter that is up - // in the current call stack since it caused the storage event to fire. - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, - NewRunnableMethod(storage_event_message_filter, - &DOMStorageMessageFilter::OnStorageEvent, params)); -} - -bool DOMStorageMessageFilter::OnMessageReceived(const IPC::Message& message, - bool* message_was_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(DOMStorageMessageFilter, message, *message_was_ok) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_StorageAreaId, OnStorageAreaId) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Length, OnLength) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Key, OnKey) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_GetItem, OnGetItem) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_SetItem, OnSetItem) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_RemoveItem, OnRemoveItem) - IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Clear, OnClear) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - - return handled; -} - -void DOMStorageMessageFilter::OnDestruct() const { - BrowserThread::DeleteOnIOThread::Destruct(this); -} - -void DOMStorageMessageFilter::OverrideThreadForMessage( - const IPC::Message& message, - BrowserThread::ID* thread) { - if (IPC_MESSAGE_CLASS(message) == DOMStorageMsgStart) - *thread = BrowserThread::WEBKIT; -} - -void DOMStorageMessageFilter::OnStorageAreaId(int64 namespace_id, - const string16& origin, - int64* storage_area_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - - DOMStorageNamespace* storage_namespace = - Context()->GetStorageNamespace(namespace_id, true); - if (!storage_namespace) { - *storage_area_id = DOMStorageContext::kInvalidStorageId; - return; - } - DOMStorageArea* storage_area = storage_namespace->GetStorageArea( - origin, host_content_settings_map_); - *storage_area_id = storage_area->id(); -} - -void DOMStorageMessageFilter::OnLength(int64 storage_area_id, - unsigned* length) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *length = 0; - } else { - *length = storage_area->Length(); - } -} - -void DOMStorageMessageFilter::OnKey(int64 storage_area_id, unsigned index, - NullableString16* key) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *key = NullableString16(true); - } else { - *key = storage_area->Key(index); - } -} - -void DOMStorageMessageFilter::OnGetItem(int64 storage_area_id, - const string16& key, - NullableString16* value) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *value = NullableString16(true); - } else { - *value = storage_area->GetItem(key); - } -} - -void DOMStorageMessageFilter::OnSetItem( - int render_view_id, int64 storage_area_id, const string16& key, - const string16& value, const GURL& url, - WebKit::WebStorageArea::Result* result, NullableString16* old_value) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *old_value = NullableString16(true); - *result = WebKit::WebStorageArea::ResultOK; - return; - } - - ScopedStorageEventContext scope(this, &url); - *old_value = storage_area->SetItem(key, value, result); - - // If content was blocked, tell the UI to display the blocked content icon. - if (render_view_id == MSG_ROUTING_CONTROL) { - DLOG(WARNING) << "setItem was not given a proper routing id"; - } else { - CallRenderViewHostContentSettingsDelegate( - process_id_, render_view_id, - &RenderViewHostDelegate::ContentSettings::OnLocalStorageAccessed, - url, storage_area->owner()->dom_storage_type(), - *result == WebStorageArea::ResultBlockedByPolicy); - } -} - -void DOMStorageMessageFilter::OnRemoveItem( - int64 storage_area_id, const string16& key, const GURL& url, - NullableString16* old_value) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *old_value = NullableString16(true); - return; - } - - ScopedStorageEventContext scope(this, &url); - *old_value = storage_area->RemoveItem(key); -} - -void DOMStorageMessageFilter::OnClear(int64 storage_area_id, const GURL& url, - bool* something_cleared) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DOMStorageArea* storage_area = Context()->GetStorageArea(storage_area_id); - if (!storage_area) { - *something_cleared = false; - return; - } - - ScopedStorageEventContext scope(this, &url); - *something_cleared = storage_area->Clear(); -} - -void DOMStorageMessageFilter::OnStorageEvent( - const DOMStorageMsg_Event_Params& params) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - const DOMStorageContext::MessageFilterSet* set = - Context()->GetMessageFilterSet(); - DOMStorageContext::MessageFilterSet::const_iterator cur = set->begin(); - while (cur != set->end()) { - // The renderer that generates the event handles it itself. - if (*cur != this) - (*cur)->Send(new DOMStorageMsg_Event(params)); - ++cur; - } -} diff --git a/chrome/browser/in_process_webkit/dom_storage_message_filter.h b/chrome/browser/in_process_webkit/dom_storage_message_filter.h deleted file mode 100644 index a8e9368..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_message_filter.h +++ /dev/null @@ -1,97 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_ -#pragma once - -#include "base/process.h" -#include "base/ref_counted.h" -#include "base/tracked.h" -#include "chrome/browser/browser_message_filter.h" -#include "chrome/browser/in_process_webkit/dom_storage_area.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/browser/content_settings/host_content_settings_map.h" -#include "chrome/common/dom_storage_common.h" -#include "ipc/ipc_message.h" - -class DOMStorageContext; -class GURL; -class Profile; -struct DOMStorageMsg_Event_Params; - -// This class handles the logistics of DOM Storage within the browser process. -// It mostly ferries information between IPCs and the WebKit implementations, -// but it also handles some special cases like when renderer processes die. -class DOMStorageMessageFilter : public BrowserMessageFilter { - public: - // Only call the constructor from the UI thread. - DOMStorageMessageFilter(int process_id, Profile* profile); - - // BrowserMessageFilter implementation - virtual void OnChannelConnected(int32 peer_pid); - virtual void OverrideThreadForMessage(const IPC::Message& message, - BrowserThread::ID* thread); - virtual bool OnMessageReceived(const IPC::Message& message, - bool* message_was_ok); - virtual void OnDestruct() const; - - // Only call on the WebKit thread. - static void DispatchStorageEvent(const NullableString16& key, - const NullableString16& old_value, const NullableString16& new_value, - const string16& origin, const GURL& url, bool is_local_storage); - - private: - friend class BrowserThread; - friend class DeleteTask<DOMStorageMessageFilter>; - ~DOMStorageMessageFilter(); - - // Message Handlers. - void OnStorageAreaId(int64 namespace_id, const string16& origin, - int64* storage_area_id); - void OnLength(int64 storage_area_id, unsigned* length); - void OnKey(int64 storage_area_id, unsigned index, NullableString16* key); - void OnGetItem(int64 storage_area_id, const string16& key, - NullableString16* value); - void OnSetItem(int render_view_id, int64 storage_area_id, const string16& key, - const string16& value, const GURL& url, - WebKit::WebStorageArea::Result* result, - NullableString16* old_value); - void OnRemoveItem(int64 storage_area_id, const string16& key, - const GURL& url, NullableString16* old_value); - void OnClear(int64 storage_area_id, const GURL& url, bool* something_cleared); - - // Only call on the IO thread. - void OnStorageEvent(const DOMStorageMsg_Event_Params& params); - - // A shortcut for accessing our context. - DOMStorageContext* Context() { - return webkit_context_->dom_storage_context(); - } - - // Use whenever there's a chance OnStorageEvent will be called. - class ScopedStorageEventContext { - public: - ScopedStorageEventContext( - DOMStorageMessageFilter* dispatcher_message_filter, - const GURL* url); - ~ScopedStorageEventContext(); - }; - - // Only access on the WebKit thread! Used for storage events. - static DOMStorageMessageFilter* storage_event_message_filter; - static const GURL* storage_event_url_; - - // Data shared between renderer processes with the same profile. - scoped_refptr<WebKitContext> webkit_context_; - - // Used to dispatch messages to the correct view host. - int process_id_; - - scoped_refptr<HostContentSettingsMap> host_content_settings_map_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageMessageFilter); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_MESSAGE_FILTER_H_ diff --git a/chrome/browser/in_process_webkit/dom_storage_message_filter_unittest.cc b/chrome/browser/in_process_webkit/dom_storage_message_filter_unittest.cc deleted file mode 100644 index c56ee71..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_message_filter_unittest.cc +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (c) 2009 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 "chrome/browser/in_process_webkit/dom_storage_message_filter.h" -#include "testing/gtest/include/gtest/gtest.h" - -// TODO(jorlow): Write me diff --git a/chrome/browser/in_process_webkit/dom_storage_namespace.cc b/chrome/browser/in_process_webkit/dom_storage_namespace.cc deleted file mode 100644 index 8097405..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_namespace.cc +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/dom_storage_namespace.h" - -#include "base/file_path.h" -#include "chrome/browser/in_process_webkit/dom_storage_area.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/dom_storage_message_filter.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h" -#include "webkit/glue/webkit_glue.h" - -using WebKit::WebStorageArea; -using WebKit::WebStorageNamespace; -using WebKit::WebString; - -/* static */ -DOMStorageNamespace* DOMStorageNamespace::CreateLocalStorageNamespace( - DOMStorageContext* dom_storage_context, const FilePath& data_dir_path) { - int64 id = kLocalStorageNamespaceId; - DCHECK(!dom_storage_context->GetStorageNamespace(id, false)); - return new DOMStorageNamespace(dom_storage_context, id, - webkit_glue::FilePathToWebString(data_dir_path), DOM_STORAGE_LOCAL); -} - -/* static */ -DOMStorageNamespace* DOMStorageNamespace::CreateSessionStorageNamespace( - DOMStorageContext* dom_storage_context, int64 id) { - DCHECK(!dom_storage_context->GetStorageNamespace(id, false)); - return new DOMStorageNamespace(dom_storage_context, id, WebString(), - DOM_STORAGE_SESSION); -} - -DOMStorageNamespace::DOMStorageNamespace(DOMStorageContext* dom_storage_context, - int64 id, - const WebString& data_dir_path, - DOMStorageType dom_storage_type) - : dom_storage_context_(dom_storage_context), - id_(id), - data_dir_path_(data_dir_path), - dom_storage_type_(dom_storage_type) { - DCHECK(dom_storage_context_); -} - -DOMStorageNamespace::~DOMStorageNamespace() { - // TODO(jorlow): If the DOMStorageContext is being destructed, there's no need - // to do these calls. Maybe we should add a fast path? - for (OriginToStorageAreaMap::iterator iter(origin_to_storage_area_.begin()); - iter != origin_to_storage_area_.end(); ++iter) { - dom_storage_context_->UnregisterStorageArea(iter->second); - delete iter->second; - } -} - -DOMStorageArea* DOMStorageNamespace::GetStorageArea( - const string16& origin, - HostContentSettingsMap* host_content_settings_map) { - // We may have already created it for another dispatcher host. - OriginToStorageAreaMap::iterator iter = origin_to_storage_area_.find(origin); - if (iter != origin_to_storage_area_.end()) - return iter->second; - - // We need to create a new one. - int64 id = dom_storage_context_->AllocateStorageAreaId(); - DCHECK(!dom_storage_context_->GetStorageArea(id)); - DOMStorageArea* storage_area = new DOMStorageArea(origin, id, this, - host_content_settings_map); - origin_to_storage_area_[origin] = storage_area; - dom_storage_context_->RegisterStorageArea(storage_area); - return storage_area; -} - -DOMStorageNamespace* DOMStorageNamespace::Copy(int64 id) { - DCHECK(dom_storage_type_ == DOM_STORAGE_SESSION); - DCHECK(!dom_storage_context_->GetStorageNamespace(id, false)); - DOMStorageNamespace* new_storage_namespace = new DOMStorageNamespace( - dom_storage_context_, id, data_dir_path_, dom_storage_type_); - // If we haven't used the namespace yet, there's nothing to copy. - if (storage_namespace_.get()) - new_storage_namespace->storage_namespace_.reset(storage_namespace_->copy()); - return new_storage_namespace; -} - -void DOMStorageNamespace::PurgeMemory() { - DCHECK(dom_storage_type_ == DOM_STORAGE_LOCAL); - for (OriginToStorageAreaMap::iterator iter(origin_to_storage_area_.begin()); - iter != origin_to_storage_area_.end(); ++iter) - iter->second->PurgeMemory(); - storage_namespace_.reset(); -} - -WebStorageArea* DOMStorageNamespace::CreateWebStorageArea( - const string16& origin) { - CreateWebStorageNamespaceIfNecessary(); - return storage_namespace_->createStorageArea(origin); -} - -void DOMStorageNamespace::CreateWebStorageNamespaceIfNecessary() { - if (storage_namespace_.get()) - return; - - if (dom_storage_type_ == DOM_STORAGE_LOCAL) { - storage_namespace_.reset( - WebStorageNamespace::createLocalStorageNamespace(data_dir_path_, - WebStorageNamespace::m_localStorageQuota)); - } else { - storage_namespace_.reset(WebStorageNamespace::createSessionStorageNamespace( - WebStorageNamespace::m_sessionStorageQuota)); - } -} diff --git a/chrome/browser/in_process_webkit/dom_storage_namespace.h b/chrome/browser/in_process_webkit/dom_storage_namespace.h deleted file mode 100644 index 79fc0db..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_namespace.h +++ /dev/null @@ -1,85 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_NAMESPACE_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_NAMESPACE_H_ -#pragma once - -#include "base/hash_tables.h" -#include "base/scoped_ptr.h" -#include "base/string16.h" -#include "chrome/common/dom_storage_common.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" - -class DOMStorageArea; -class DOMStorageContext; -class FilePath; -class HostContentSettingsMap; - -namespace WebKit { -class WebStorageArea; -class WebStorageNamespace; -} - -// Only to be used on the WebKit thread. -class DOMStorageNamespace { - public: - static DOMStorageNamespace* CreateLocalStorageNamespace( - DOMStorageContext* dom_storage_context, const FilePath& data_dir_path); - static DOMStorageNamespace* CreateSessionStorageNamespace( - DOMStorageContext* dom_storage_context, int64 namespace_id); - - ~DOMStorageNamespace(); - - DOMStorageArea* GetStorageArea(const string16& origin, - HostContentSettingsMap* map); - DOMStorageNamespace* Copy(int64 clone_namespace_id); - - void PurgeMemory(); - - const DOMStorageContext* dom_storage_context() const { - return dom_storage_context_; - } - int64 id() const { return id_; } - const WebKit::WebString& data_dir_path() const { return data_dir_path_; } - DOMStorageType dom_storage_type() const { return dom_storage_type_; } - - // Creates a WebStorageArea for the given origin. This should only be called - // by an owned DOMStorageArea. - WebKit::WebStorageArea* CreateWebStorageArea(const string16& origin); - - private: - // Called by the static factory methods above. - DOMStorageNamespace(DOMStorageContext* dom_storage_context, - int64 id, - const WebKit::WebString& data_dir_path, - DOMStorageType storage_type); - - // Creates the underlying WebStorageNamespace on demand. - void CreateWebStorageNamespaceIfNecessary(); - - // All the storage areas we own. - typedef base::hash_map<string16, DOMStorageArea*> OriginToStorageAreaMap; - OriginToStorageAreaMap origin_to_storage_area_; - - // The DOMStorageContext that owns us. - DOMStorageContext* dom_storage_context_; - - // The WebKit storage namespace we manage. - scoped_ptr<WebKit::WebStorageNamespace> storage_namespace_; - - // Our id. Unique to our parent WebKitContext class. - int64 id_; - - // The path used to create us, so we can recreate our WebStorageNamespace on - // demand. - WebKit::WebString data_dir_path_; - - // SessionStorage vs. LocalStorage. - const DOMStorageType dom_storage_type_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageNamespace); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_NAMESPACE_H_ diff --git a/chrome/browser/in_process_webkit/dom_storage_uitest.cc b/chrome/browser/in_process_webkit/dom_storage_uitest.cc deleted file mode 100644 index ac82728..0000000 --- a/chrome/browser/in_process_webkit/dom_storage_uitest.cc +++ /dev/null @@ -1,190 +0,0 @@ -// Copyright (c) 2011 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 "base/file_path.h" -#include "base/file_util.h" -#include "base/test/test_timeouts.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/test/automation/tab_proxy.h" -#include "chrome/test/ui/ui_layout_test.h" -#include "chrome/test/ui_test_utils.h" -#include "net/base/net_util.h" - -static const char* kRootFiles[] = { - "clear.html", -// "complex-keys.html", // Output too big for a cookie. crbug.com/33472 -// "complex-values.html", // crbug.com/33472 - "quota.html", - "remove-item.html", - "window-attributes-exist.html", - NULL -}; - -static const char* kEventsFiles[] = { -// "basic-body-attribute.html", // crbug.com/33472 -// "basic.html", // crbug.com/33472 -// "basic-setattribute.html", // crbug.com/33472 - "case-sensitive.html", - "documentURI.html", - NULL -}; - -static const char* kStorageFiles[] = { - "delete-removal.html", - "enumerate-storage.html", - "enumerate-with-length-and-key.html", - "index-get-and-set.html", - "simple-usage.html", - "string-conversion.html", -// "window-open.html", // TODO(jorlow): Fix - NULL -}; - -class DOMStorageTest : public UILayoutTest { - protected: - DOMStorageTest() - : UILayoutTest(), - test_dir_(FilePath(). - AppendASCII("storage").AppendASCII("domstorage")) { - } - - virtual ~DOMStorageTest() { } - - virtual void SetUp() { - launch_arguments_.AppendSwitch(switches::kDisablePopupBlocking); - UILayoutTest::SetUp(); - } - - // We require fast/js/resources for most of the DOM Storage layout tests. - // Add those to the list to be copied. - void AddJSTestResources() { - // Add other paths our tests require. - FilePath js_dir = FilePath(). - AppendASCII("fast").AppendASCII("js"); - AddResourceForLayoutTest(js_dir, FilePath().AppendASCII("resources")); - } - - // This is somewhat of a hack because we're running a real browser that - // actually persists the LocalStorage state vs. DRT and TestShell which don't. - // The correct fix is to fix the LayoutTests, but similar patches have been - // rejected in the past. - void ClearDOMStorage() { - scoped_refptr<TabProxy> tab(GetActiveTab()); - ASSERT_TRUE(tab.get()); - - const FilePath dir(FILE_PATH_LITERAL("layout_tests")); - const FilePath file(FILE_PATH_LITERAL("clear_dom_storage.html")); - GURL url = ui_test_utils::GetTestUrl(dir, file); - ASSERT_TRUE(tab->SetCookie(url, "")); - ASSERT_TRUE(tab->NavigateToURL(url)); - - WaitUntilCookieNonEmpty(tab.get(), url, "cleared", - TestTimeouts::action_max_timeout_ms()); - } - - // Runs each test in an array of strings until it hits a NULL. - void RunTests(const char** files) { - while (*files) { - ClearDOMStorage(); - RunLayoutTest(*files, kNoHttpPort); - ++files; - } - } - - FilePath test_dir_; -}; - - -TEST_F(DOMStorageTest, RootLayoutTests) { - InitializeForLayoutTest(test_dir_, FilePath(), kNoHttpPort); - AddJSTestResources(); - AddResourceForLayoutTest(test_dir_, FilePath().AppendASCII("script-tests")); - RunTests(kRootFiles); -} - -TEST_F(DOMStorageTest, EventLayoutTests) { - InitializeForLayoutTest(test_dir_, FilePath().AppendASCII("events"), - kNoHttpPort); - AddJSTestResources(); - AddResourceForLayoutTest(test_dir_, FilePath().AppendASCII("events"). - AppendASCII("resources")); - AddResourceForLayoutTest(test_dir_, FilePath().AppendASCII("events"). - AppendASCII("script-tests")); - RunTests(kEventsFiles); -} - -TEST_F(DOMStorageTest, LocalStorageLayoutTests) { - InitializeForLayoutTest(test_dir_, FilePath().AppendASCII("localstorage"), - kNoHttpPort); - AddJSTestResources(); - AddResourceForLayoutTest(test_dir_, FilePath().AppendASCII("localstorage"). - AppendASCII("resources")); - RunTests(kStorageFiles); -} - -TEST_F(DOMStorageTest, SessionStorageLayoutTests) { - InitializeForLayoutTest(test_dir_, FilePath().AppendASCII("sessionstorage"), - kNoHttpPort); - AddJSTestResources(); - AddResourceForLayoutTest(test_dir_, FilePath().AppendASCII("sessionstorage"). - AppendASCII("resources")); - RunTests(kStorageFiles); -} - -class DomStorageEmptyDatabaseTest : public UITest { - protected: - FilePath StorageDir() const { - FilePath storage_dir = user_data_dir(); - storage_dir = storage_dir.AppendASCII("Default"); - storage_dir = storage_dir.AppendASCII("Local Storage"); - return storage_dir; - } - - bool StorageDirIsEmpty() const { - FilePath storage_dir = StorageDir(); - if (!file_util::DirectoryExists(storage_dir)) - return true; - return file_util::IsDirectoryEmpty(storage_dir); - } - - GURL TestUrl() const { - FilePath test_dir = test_data_directory_; - FilePath test_file = test_dir.AppendASCII("dom_storage_empty_db.html"); - return net::FilePathToFileURL(test_file); - } -}; - -TEST_F(DomStorageEmptyDatabaseTest, EmptyDirAfterClear) { - NavigateToURL(TestUrl()); - ASSERT_TRUE(StorageDirIsEmpty()); - - NavigateToURL(GURL("javascript:set()")); - NavigateToURL(GURL("javascript:clear()")); - QuitBrowser(); - EXPECT_TRUE(StorageDirIsEmpty()); -} - -TEST_F(DomStorageEmptyDatabaseTest, EmptyDirAfterGet) { - NavigateToURL(TestUrl()); - ASSERT_TRUE(StorageDirIsEmpty()); - - NavigateToURL(GURL("javascript:get()")); - QuitBrowser(); - EXPECT_TRUE(StorageDirIsEmpty()); -} - -TEST_F(DomStorageEmptyDatabaseTest, NonEmptyDirAfterSet) { - NavigateToURL(TestUrl()); - ASSERT_TRUE(StorageDirIsEmpty()); - - NavigateToURL(GURL("javascript:set()")); - QuitBrowser(); - EXPECT_FALSE(StorageDirIsEmpty()); - - LaunchBrowserAndServer(); - NavigateToURL(TestUrl()); - NavigateToURL(GURL("javascript:clear()")); - QuitBrowser(); - EXPECT_TRUE(StorageDirIsEmpty()); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_browsertest.cc b/chrome/browser/in_process_webkit/indexed_db_browsertest.cc deleted file mode 100644 index 31640f2..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_browsertest.cc +++ /dev/null @@ -1,128 +0,0 @@ -// Copyright (c) 2010 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 "base/command_line.h" -#include "base/file_path.h" -#include "base/file_util.h" -#include "base/ref_counted.h" -#include "base/scoped_temp_dir.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/in_process_webkit/indexed_db_context.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/browser/tab_contents/tab_contents.h" -#include "chrome/browser/ui/browser.h" -#include "chrome/test/in_process_browser_test.h" -#include "chrome/test/testing_profile.h" -#include "chrome/test/thread_test_helper.h" -#include "chrome/test/ui_test_utils.h" - -// This browser test is aimed towards exercising the IndexedDB bindings and -// the actual implementation that lives in the browser side (in_process_webkit). -class IndexedDBBrowserTest : public InProcessBrowserTest { - public: - IndexedDBBrowserTest() { - EnableDOMAutomation(); - } - - GURL testUrl(const FilePath& file_path) { - const FilePath kTestDir(FILE_PATH_LITERAL("indexeddb")); - return ui_test_utils::GetTestUrl(kTestDir, file_path); - } - - void SimpleTest(const GURL& test_url) { - // The test page will perform tests on IndexedDB, then navigate to either - // a #pass or #fail ref. - LOG(INFO) << "Navigating to URL and blocking."; - ui_test_utils::NavigateToURLBlockUntilNavigationsComplete( - browser(), test_url, 2); - LOG(INFO) << "Navigation done."; - std::string result = browser()->GetSelectedTabContents()->GetURL().ref(); - if (result != "pass") { - std::string js_result; - ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( - browser()->GetSelectedTabContents()->render_view_host(), L"", - L"window.domAutomationController.send(getLog())", &js_result)); - FAIL() << "Failed: " << js_result; - } - } -}; - -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, CursorTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("cursor_test.html")))); -} - -// Flaky: http://crbug.com/70773 -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DISABLED_IndexTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("index_test.html")))); -} - -// Flaky: http://crbug.com/70773 -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DISABLED_KeyPathTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("key_path_test.html")))); -} - -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, TransactionGetTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("transaction_get_test.html")))); -} - -// Flaky: http://crbug.com/70773 -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DISABLED_ObjectStoreTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("object_store_test.html")))); -} - -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DatabaseTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("database_test.html")))); -} - -// Flaky: http://crbug.com/70773 -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DISABLED_TransactionTest) { - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("transaction_test.html")))); -} - -// Flaky: http://crbug.com/70773 -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, DISABLED_DoesntHangTest) { - SimpleTest(testUrl(FilePath( - FILE_PATH_LITERAL("transaction_run_forever.html")))); - ui_test_utils::CrashTab(browser()->GetSelectedTabContents()); - SimpleTest(testUrl(FilePath(FILE_PATH_LITERAL("transaction_test.html")))); -} - -// In proc browser test is needed here because ClearLocalState indirectly calls -// WebKit's isMainThread through WebSecurityOrigin->SecurityOrigin. -IN_PROC_BROWSER_TEST_F(IndexedDBBrowserTest, ClearLocalState) { - // Create test files. - ScopedTempDir temp_dir; - ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); - FilePath indexeddb_dir = temp_dir.path().Append( - IndexedDBContext::kIndexedDBDirectory); - ASSERT_TRUE(file_util::CreateDirectory(indexeddb_dir)); - - FilePath::StringType file_name_1(FILE_PATH_LITERAL("http_foo_0")); - file_name_1.append(IndexedDBContext::kIndexedDBExtension); - FilePath::StringType file_name_2(FILE_PATH_LITERAL("chrome-extension_foo_0")); - file_name_2.append(IndexedDBContext::kIndexedDBExtension); - FilePath temp_file_path_1 = indexeddb_dir.Append(file_name_1); - FilePath temp_file_path_2 = indexeddb_dir.Append(file_name_2); - - ASSERT_EQ(1, file_util::WriteFile(temp_file_path_1, ".", 1)); - ASSERT_EQ(1, file_util::WriteFile(temp_file_path_2, "o", 1)); - - // Create the scope which will ensure we run the destructor of the webkit - // context which should trigger the clean up. - { - TestingProfile profile; - WebKitContext *webkit_context = profile.GetWebKitContext(); - webkit_context->indexed_db_context()->set_data_path(indexeddb_dir); - webkit_context->set_clear_local_state_on_exit(true); - } - // Make sure we wait until the destructor has run. - scoped_refptr<ThreadTestHelper> helper( - new ThreadTestHelper(BrowserThread::WEBKIT)); - ASSERT_TRUE(helper->Run()); - - // Because we specified https for scheme to be skipped the second file - // should survive and the first go into vanity. - ASSERT_FALSE(file_util::PathExists(temp_file_path_1)); - ASSERT_TRUE(file_util::PathExists(temp_file_path_2)); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_callbacks.cc b/chrome/browser/in_process_webkit/indexed_db_callbacks.cc deleted file mode 100644 index c4584c6a..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_callbacks.cc +++ /dev/null @@ -1,77 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/indexed_db_callbacks.h" - -#include "chrome/common/indexed_db_messages.h" - -IndexedDBCallbacksBase::IndexedDBCallbacksBase( - IndexedDBDispatcherHost* dispatcher_host, - int32 response_id) - : dispatcher_host_(dispatcher_host), - response_id_(response_id) { -} - -IndexedDBCallbacksBase::~IndexedDBCallbacksBase() {} - -IndexedDBTransactionCallbacks::IndexedDBTransactionCallbacks( - IndexedDBDispatcherHost* dispatcher_host, - int transaction_id) - : dispatcher_host_(dispatcher_host), - transaction_id_(transaction_id) { -} - -IndexedDBTransactionCallbacks::~IndexedDBTransactionCallbacks() {} - -void IndexedDBCallbacksBase::onError(const WebKit::WebIDBDatabaseError& error) { - dispatcher_host_->Send(new IndexedDBMsg_CallbacksError( - response_id_, error.code(), error.message())); -} - -void IndexedDBCallbacksBase::onBlocked() { - dispatcher_host_->Send(new IndexedDBMsg_CallbacksBlocked(response_id_)); -} - -void IndexedDBTransactionCallbacks::onAbort() { - dispatcher_host_->Send( - new IndexedDBMsg_TransactionCallbacksAbort(transaction_id_)); -} - -void IndexedDBTransactionCallbacks::onComplete() { - dispatcher_host_->Send( - new IndexedDBMsg_TransactionCallbacksComplete(transaction_id_)); -} - -void IndexedDBTransactionCallbacks::onTimeout() { - dispatcher_host_->Send( - new IndexedDBMsg_TransactionCallbacksTimeout(transaction_id_)); -} - -void IndexedDBCallbacks<WebKit::WebIDBCursor>::onSuccess( - WebKit::WebIDBCursor* idb_object) { - int32 object_id = dispatcher_host()->Add(idb_object); - dispatcher_host()->Send( - new IndexedDBMsg_CallbacksSuccessIDBCursor(response_id(), object_id)); -} - -void IndexedDBCallbacks<WebKit::WebIDBCursor>::onSuccess( - const WebKit::WebSerializedScriptValue& value) { - dispatcher_host()->Send( - new IndexedDBMsg_CallbacksSuccessSerializedScriptValue( - response_id(), SerializedScriptValue(value))); -} - -void IndexedDBCallbacks<WebKit::WebIDBKey>::onSuccess( - const WebKit::WebIDBKey& value) { - dispatcher_host()->Send( - new IndexedDBMsg_CallbacksSuccessIndexedDBKey( - response_id(), IndexedDBKey(value))); -} - -void IndexedDBCallbacks<WebKit::WebSerializedScriptValue>::onSuccess( - const WebKit::WebSerializedScriptValue& value) { - dispatcher_host()->Send( - new IndexedDBMsg_CallbacksSuccessSerializedScriptValue( - response_id(), SerializedScriptValue(value))); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_callbacks.h b/chrome/browser/in_process_webkit/indexed_db_callbacks.h deleted file mode 100644 index b900d15..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_callbacks.h +++ /dev/null @@ -1,153 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CALLBACKS_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CALLBACKS_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/ref_counted.h" -#include "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCallbacks.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCursor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseError.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransaction.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransactionCallbacks.h" - -class IndexedDBMsg_CallbacksSuccessIDBDatabase; -class IndexedDBMsg_CallbacksSuccessIDBIndex; -class IndexedDBMsg_CallbacksSuccessIDBObjectStore; -class IndexedDBMsg_CallbacksSuccessIDBTransaction; - -// Template magic to figure out what message to send to the renderer based on -// which (overloaded) onSuccess method we expect to be called. -template <class Type> struct WebIDBToMsgHelper { }; -template <> struct WebIDBToMsgHelper<WebKit::WebIDBDatabase> { - typedef IndexedDBMsg_CallbacksSuccessIDBDatabase MsgType; -}; -template <> struct WebIDBToMsgHelper<WebKit::WebIDBIndex> { - typedef IndexedDBMsg_CallbacksSuccessIDBIndex MsgType; -}; -template <> struct WebIDBToMsgHelper<WebKit::WebIDBObjectStore> { - typedef IndexedDBMsg_CallbacksSuccessIDBObjectStore MsgType; -}; -template <> struct WebIDBToMsgHelper<WebKit::WebIDBTransaction> { - typedef IndexedDBMsg_CallbacksSuccessIDBTransaction MsgType; -}; - -// The code the following two classes share. -class IndexedDBCallbacksBase : public WebKit::WebIDBCallbacks { - public: - IndexedDBCallbacksBase(IndexedDBDispatcherHost* dispatcher_host, - int32 response_id); - - virtual ~IndexedDBCallbacksBase(); - - virtual void onError(const WebKit::WebIDBDatabaseError& error); - virtual void onBlocked(); - - protected: - IndexedDBDispatcherHost* dispatcher_host() const { - return dispatcher_host_.get(); - } - int32 response_id() const { return response_id_; } - - private: - scoped_refptr<IndexedDBDispatcherHost> dispatcher_host_; - int32 response_id_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBCallbacksBase); -}; - -// A WebIDBCallbacks implementation that returns an object of WebObjectType. -template <class WebObjectType> -class IndexedDBCallbacks : public IndexedDBCallbacksBase { - public: - IndexedDBCallbacks( - IndexedDBDispatcherHost* dispatcher_host, int32 response_id) - : IndexedDBCallbacksBase(dispatcher_host, response_id) { } - - virtual void onSuccess(WebObjectType* idb_object) { - int32 object_id = dispatcher_host()->Add(idb_object); - dispatcher_host()->Send( - new typename WebIDBToMsgHelper<WebObjectType>::MsgType(response_id(), - object_id)); - } - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBCallbacks); -}; - -// WebIDBCursor uses onSuccess(WebIDBCursor*) to indicate it has data, and -// onSuccess() without params to indicate it does not contain any data, i.e., -// there is no key within the key range, or it has reached the end. -template <> -class IndexedDBCallbacks<WebKit::WebIDBCursor> - : public IndexedDBCallbacksBase { - public: - IndexedDBCallbacks( - IndexedDBDispatcherHost* dispatcher_host, int32 response_id) - : IndexedDBCallbacksBase(dispatcher_host, response_id) { } - - virtual void onSuccess(WebKit::WebIDBCursor* idb_object); - virtual void onSuccess(const WebKit::WebSerializedScriptValue& value); - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBCallbacks); -}; - -// WebIDBKey is implemented in WebKit as opposed to being an interface Chromium -// implements. Thus we pass a const ___& version and thus we need this -// specialization. -template <> -class IndexedDBCallbacks<WebKit::WebIDBKey> - : public IndexedDBCallbacksBase { - public: - IndexedDBCallbacks( - IndexedDBDispatcherHost* dispatcher_host, int32 response_id) - : IndexedDBCallbacksBase(dispatcher_host, response_id) { } - - virtual void onSuccess(const WebKit::WebIDBKey& value); - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBCallbacks); -}; - -// WebSerializedScriptValue is implemented in WebKit as opposed to being an -// interface Chromium implements. Thus we pass a const ___& version and thus -// we need this specialization. -template <> -class IndexedDBCallbacks<WebKit::WebSerializedScriptValue> - : public IndexedDBCallbacksBase { - public: - IndexedDBCallbacks( - IndexedDBDispatcherHost* dispatcher_host, int32 response_id) - : IndexedDBCallbacksBase(dispatcher_host, response_id) { } - - virtual void onSuccess(const WebKit::WebSerializedScriptValue& value); - - private: - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBCallbacks); -}; - -class IndexedDBTransactionCallbacks - : public WebKit::WebIDBTransactionCallbacks { - public: - IndexedDBTransactionCallbacks(IndexedDBDispatcherHost* dispatcher_host, - int transaction_id); - - virtual ~IndexedDBTransactionCallbacks(); - - virtual void onAbort(); - - virtual void onComplete(); - - virtual void onTimeout(); - - private: - scoped_refptr<IndexedDBDispatcherHost> dispatcher_host_; - int transaction_id_; -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CALLBACKS_H_ diff --git a/chrome/browser/in_process_webkit/indexed_db_context.cc b/chrome/browser/in_process_webkit/indexed_db_context.cc deleted file mode 100644 index e2872a4..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_context.cc +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/indexed_db_context.h" - -#include "base/file_util.h" -#include "base/logging.h" -#include "base/string_util.h" -#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/Source/WebKit/chromium/public/WebCString.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" -#include "webkit/glue/webkit_glue.h" - -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) - : clear_local_state_on_exit_(false) { - 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() { - if (!idb_factory_.get()) - idb_factory_.reset(WebIDBFactory::create()); - DCHECK(idb_factory_.get()); - return idb_factory_.get(); -} - -FilePath IndexedDBContext::GetIndexedDBFilePath( - const string16& origin_id) const { - FilePath::StringType id = webkit_glue::WebStringToFilePathString(origin_id); - return data_path_.Append(id.append(kIndexedDBExtension)); -} - -void IndexedDBContext::DeleteIndexedDBFile(const FilePath& file_path) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - // TODO(pastarmovj): Close all database connections that use that file. - file_util::Delete(file_path, false); -} - -void IndexedDBContext::DeleteIndexedDBForOrigin(const string16& origin_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - // TODO(pastarmovj): Remove this check once we are safe to delete any time. - FilePath idb_file = GetIndexedDBFilePath(origin_id); - DCHECK_EQ(idb_file.BaseName().value().substr(0, strlen("chrome-extension")), - FILE_PATH_LITERAL("chrome-extension")); - DeleteIndexedDBFile(GetIndexedDBFilePath(origin_id)); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_context.h b/chrome/browser/in_process_webkit/indexed_db_context.h deleted file mode 100644 index 16f8a0f..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_context.h +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CONTEXT_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CONTEXT_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/file_path.h" -#include "base/scoped_ptr.h" - -class FilePath; -class WebKitContext; - -namespace WebKit { -class WebIDBFactory; -} - -class IndexedDBContext { - public: - explicit IndexedDBContext(WebKitContext* webkit_context); - ~IndexedDBContext(); - - WebKit::WebIDBFactory* GetIDBFactory(); - - // The indexed db directory. - static const FilePath::CharType kIndexedDBDirectory[]; - - // The indexed db file extension. - static const FilePath::CharType kIndexedDBExtension[]; - - // Get the file name of the indexed db file for the given origin. - FilePath GetIndexedDBFilePath(const string16& origin_id) const; - - void set_clear_local_state_on_exit(bool clear_local_state) { - clear_local_state_on_exit_ = clear_local_state; - } - - // Deletes a single indexed db file. - void DeleteIndexedDBFile(const FilePath& file_path); - - // Deletes all indexed db files for the given origin. - void DeleteIndexedDBForOrigin(const string16& origin_id); - -#ifdef UNIT_TEST - // For unit tests allow to override the |data_path_|. - void set_data_path(const FilePath& data_path) { data_path_ = data_path; } -#endif - - private: - scoped_ptr<WebKit::WebIDBFactory> idb_factory_; - - // Path where the indexed db data is stored - FilePath data_path_; - - // True if the destructor should delete its files. - bool clear_local_state_on_exit_; - - DISALLOW_COPY_AND_ASSIGN(IndexedDBContext); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_CONTEXT_H_ diff --git a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc b/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc deleted file mode 100644 index bf3da6c..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.cc +++ /dev/null @@ -1,1024 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" - -#include "base/command_line.h" -#include "base/utf_string_conversions.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/content_settings/host_content_settings_map.h" -#include "chrome/browser/in_process_webkit/indexed_db_callbacks.h" -#include "chrome/browser/metrics/user_metrics.h" -#include "chrome/browser/profiles/profile.h" -#include "chrome/browser/renderer_host/browser_render_process_host.h" -#include "chrome/browser/renderer_host/render_message_filter.h" -#include "chrome/browser/renderer_host/render_view_host_notification_task.h" -#include "chrome/common/chrome_switches.h" -#include "chrome/common/indexed_db_messages.h" -#include "chrome/common/result_codes.h" -#include "googleurl/src/gurl.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebDOMStringList.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBCursor.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabase.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBDatabaseError.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKeyRange.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBIndex.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBFactory.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBTransaction.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h" -#include "webkit/glue/webkit_glue.h" - -using WebKit::WebDOMStringList; -using WebKit::WebExceptionCode; -using WebKit::WebIDBCallbacks; -using WebKit::WebIDBCursor; -using WebKit::WebIDBDatabase; -using WebKit::WebIDBDatabaseError; -using WebKit::WebIDBIndex; -using WebKit::WebIDBKey; -using WebKit::WebIDBKeyRange; -using WebKit::WebIDBObjectStore; -using WebKit::WebIDBTransaction; -using WebKit::WebSecurityOrigin; -using WebKit::WebSerializedScriptValue; -using WebKit::WebVector; - -namespace { - -// FIXME: Replace this magic constant once we have a more sophisticated quota -// system. -static const uint64 kDefaultQuota = 5 * 1024 * 1024; - -template <class T> -void DeleteOnWebKitThread(T* obj) { - if (!BrowserThread::DeleteSoon(BrowserThread::WEBKIT, FROM_HERE, obj)) - delete obj; -} - -} - -IndexedDBDispatcherHost::IndexedDBDispatcherHost(int process_id, - Profile* profile) - : webkit_context_(profile->GetWebKitContext()), - host_content_settings_map_(profile->GetHostContentSettingsMap()), - ALLOW_THIS_IN_INITIALIZER_LIST(database_dispatcher_host_( - new DatabaseDispatcherHost(this))), - ALLOW_THIS_IN_INITIALIZER_LIST(index_dispatcher_host_( - new IndexDispatcherHost(this))), - ALLOW_THIS_IN_INITIALIZER_LIST(object_store_dispatcher_host_( - new ObjectStoreDispatcherHost(this))), - ALLOW_THIS_IN_INITIALIZER_LIST(cursor_dispatcher_host_( - new CursorDispatcherHost(this))), - ALLOW_THIS_IN_INITIALIZER_LIST(transaction_dispatcher_host_( - new TransactionDispatcherHost(this))), - process_id_(process_id) { - DCHECK(webkit_context_.get()); -} - -IndexedDBDispatcherHost::~IndexedDBDispatcherHost() { -} - -void IndexedDBDispatcherHost::OnChannelClosing() { - BrowserMessageFilter::OnChannelClosing(); - BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, database_dispatcher_host_.release()); - BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, index_dispatcher_host_.release()); - BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, - object_store_dispatcher_host_.release()); - BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, cursor_dispatcher_host_.release()); - BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, - transaction_dispatcher_host_.release()); -} - -void IndexedDBDispatcherHost::OverrideThreadForMessage( - const IPC::Message& message, - BrowserThread::ID* thread) { - if (IPC_MESSAGE_CLASS(message) == IndexedDBMsgStart) - *thread = BrowserThread::WEBKIT; -} - -bool IndexedDBDispatcherHost::OnMessageReceived(const IPC::Message& message, - bool* message_was_ok) { - if (IPC_MESSAGE_CLASS(message) != IndexedDBMsgStart) - return false; - - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - - bool handled = - database_dispatcher_host_->OnMessageReceived(message, message_was_ok) || - index_dispatcher_host_->OnMessageReceived(message, message_was_ok) || - object_store_dispatcher_host_->OnMessageReceived( - message, message_was_ok) || - cursor_dispatcher_host_->OnMessageReceived(message, message_was_ok) || - transaction_dispatcher_host_->OnMessageReceived(message, message_was_ok); - - if (!handled) { - handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost, message, *message_was_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_FactoryOpen, OnIDBFactoryOpen) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_FactoryDeleteDatabase, - OnIDBFactoryDeleteDatabase) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - } - - return handled; -} - -int32 IndexedDBDispatcherHost::Add(WebIDBCursor* idb_cursor) { - if (!cursor_dispatcher_host_.get()) { - delete idb_cursor; - return 0; - } - return cursor_dispatcher_host_->map_.Add(idb_cursor); -} - -int32 IndexedDBDispatcherHost::Add(WebIDBDatabase* idb_database) { - if (!database_dispatcher_host_.get()) { - delete idb_database; - return 0; - } - return database_dispatcher_host_->map_.Add(idb_database); -} - -int32 IndexedDBDispatcherHost::Add(WebIDBIndex* idb_index) { - if (!index_dispatcher_host_.get()) { - delete idb_index; - return 0; - } - if (!idb_index) - return 0; - return index_dispatcher_host_->map_.Add(idb_index); -} - -int32 IndexedDBDispatcherHost::Add(WebIDBObjectStore* idb_object_store) { - if (!object_store_dispatcher_host_.get()) { - delete idb_object_store; - return 0; - } - if (!idb_object_store) - return 0; - return object_store_dispatcher_host_->map_.Add(idb_object_store); -} - -int32 IndexedDBDispatcherHost::Add(WebIDBTransaction* idb_transaction) { - if (!transaction_dispatcher_host_.get()) { - delete idb_transaction; - return 0; - } - int32 id = transaction_dispatcher_host_->map_.Add(idb_transaction); - idb_transaction->setCallbacks(new IndexedDBTransactionCallbacks(this, id)); - return id; -} - -bool IndexedDBDispatcherHost::CheckContentSetting(const string16& origin, - const string16& description, - int routing_id, - int response_id) { - GURL host(string16(WebSecurityOrigin::createFromDatabaseIdentifier( - origin).toString())); - - ContentSetting content_setting = - host_content_settings_map_->GetContentSetting( - host, CONTENT_SETTINGS_TYPE_COOKIES, ""); - - CallRenderViewHostContentSettingsDelegate( - process_id_, routing_id, - &RenderViewHostDelegate::ContentSettings::OnIndexedDBAccessed, - host, description, content_setting == CONTENT_SETTING_BLOCK); - - if (content_setting == CONTENT_SETTING_BLOCK) { - // TODO(jorlow): Change this to the proper error code once we figure out - // one. - int error_code = 0; // Defined by the IndexedDB spec. - static string16 error_message = ASCIIToUTF16( - "The user denied permission to access the database."); - Send(new IndexedDBMsg_CallbacksError(response_id, error_code, - error_message)); - return false; - } - return true; -} - -void IndexedDBDispatcherHost::OnIDBFactoryOpen( - const IndexedDBHostMsg_FactoryOpen_Params& params) { - FilePath base_path = webkit_context_->data_path(); - FilePath indexed_db_path; - if (!base_path.empty()) { - indexed_db_path = base_path.Append( - IndexedDBContext::kIndexedDBDirectory); - } - - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - if (!CheckContentSetting(params.origin, params.name, params.routing_id, - params.response_id)) { - return; - } - - DCHECK(kDefaultQuota == params.maximum_size); - - uint64 quota = kDefaultQuota; - if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kUnlimitedQuotaForIndexedDB)) { - quota = 1024 * 1024 * 1024; // 1GB. More or less "unlimited". - } - - Context()->GetIDBFactory()->open( - params.name, - new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id), - WebSecurityOrigin::createFromDatabaseIdentifier(params.origin), NULL, - webkit_glue::FilePathToWebString(indexed_db_path), quota); -} - -void IndexedDBDispatcherHost::OnIDBFactoryDeleteDatabase( - const IndexedDBHostMsg_FactoryDeleteDatabase_Params& params) { - FilePath base_path = webkit_context_->data_path(); - FilePath indexed_db_path; - if (!base_path.empty()) { - indexed_db_path = base_path.Append( - IndexedDBContext::kIndexedDBDirectory); - } - - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - if (!CheckContentSetting(params.origin, params.name, params.routing_id, - params.response_id)) { - return; - } - - Context()->GetIDBFactory()->deleteDatabase( - params.name, - new IndexedDBCallbacks<WebIDBDatabase>(this, params.response_id), - WebSecurityOrigin::createFromDatabaseIdentifier(params.origin), NULL, - webkit_glue::FilePathToWebString(indexed_db_path)); -} - -////////////////////////////////////////////////////////////////////// -// Helper templates. -// - -template <typename ObjectType> -ObjectType* IndexedDBDispatcherHost::GetOrTerminateProcess( - IDMap<ObjectType, IDMapOwnPointer>* map, int32 return_object_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - ObjectType* return_object = map->Lookup(return_object_id); - if (!return_object) { - UserMetrics::RecordAction(UserMetricsAction("BadMessageTerminate_IDBMF")); - BadMessageReceived(); - } - return return_object; -} - -template <typename ReplyType, typename MapObjectType, typename Method> -void IndexedDBDispatcherHost::SyncGetter( - IDMap<MapObjectType, IDMapOwnPointer>* map, int32 object_id, - ReplyType* reply, Method method) { - MapObjectType* object = GetOrTerminateProcess(map, object_id); - if (!object) - return; - - *reply = (object->*method)(); -} - -template <typename ObjectType> -void IndexedDBDispatcherHost::DestroyObject( - IDMap<ObjectType, IDMapOwnPointer>* map, int32 object_id) { - GetOrTerminateProcess(map, object_id); - map->Remove(object_id); -} - - -////////////////////////////////////////////////////////////////////// -// IndexedDBDispatcherHost::DatabaseDispatcherHost -// - -IndexedDBDispatcherHost::DatabaseDispatcherHost::DatabaseDispatcherHost( - IndexedDBDispatcherHost* parent) - : parent_(parent) { - map_.set_check_on_null_data(true); -} - -IndexedDBDispatcherHost::DatabaseDispatcherHost::~DatabaseDispatcherHost() { -} - -bool IndexedDBDispatcherHost::DatabaseDispatcherHost::OnMessageReceived( - const IPC::Message& message, bool* msg_is_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::DatabaseDispatcherHost, - message, *msg_is_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseName, OnName) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseVersion, OnVersion) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseObjectStoreNames, - OnObjectStoreNames) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseCreateObjectStore, - OnCreateObjectStore) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDeleteObjectStore, - OnDeleteObjectStore) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseSetVersion, OnSetVersion) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseTransaction, OnTransaction) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseClose, OnClose) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_DatabaseDestroyed, OnDestroyed) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::Send( - IPC::Message* message) { - parent_->Send(message); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnName( - int32 object_id, string16* name) { - parent_->SyncGetter<string16>(&map_, object_id, name, &WebIDBDatabase::name); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnVersion( - int32 object_id, string16* version) { - parent_->SyncGetter<string16>( - &map_, object_id, version, &WebIDBDatabase::version); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnObjectStoreNames( - int32 idb_database_id, std::vector<string16>* object_stores) { - WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( - &map_, idb_database_id); - if (!idb_database) - return; - - WebDOMStringList web_object_stores = idb_database->objectStoreNames(); - object_stores->reserve(web_object_stores.length()); - for (unsigned i = 0; i < web_object_stores.length(); ++i) - object_stores->push_back(web_object_stores.item(i)); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnCreateObjectStore( - const IndexedDBHostMsg_DatabaseCreateObjectStore_Params& params, - int32* object_store_id, WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( - &map_, params.idb_database_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_database || !idb_transaction) - return; - - *ec = 0; - WebIDBObjectStore* object_store = idb_database->createObjectStore( - params.name, params.key_path, params.auto_increment, - *idb_transaction, *ec); - *object_store_id = *ec ? 0 : parent_->Add(object_store); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDeleteObjectStore( - int32 idb_database_id, - const string16& name, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( - &map_, idb_database_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_database || !idb_transaction) - return; - - *ec = 0; - idb_database->deleteObjectStore(name, *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnSetVersion( - int32 idb_database_id, - int32 response_id, - const string16& version, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBDatabase* idb_database = parent_->GetOrTerminateProcess( - &map_, idb_database_id); - if (!idb_database) - return; - - *ec = 0; - idb_database->setVersion( - version, - new IndexedDBCallbacks<WebIDBTransaction>(parent_, response_id), - *ec); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnTransaction( - int32 idb_database_id, - const std::vector<string16>& names, - int32 mode, - int32 timeout, - int32* idb_transaction_id, - WebKit::WebExceptionCode* ec) { - WebIDBDatabase* database = parent_->GetOrTerminateProcess( - &map_, idb_database_id); - if (!database) - return; - - WebDOMStringList object_stores; - for (std::vector<string16>::const_iterator it = names.begin(); - it != names.end(); ++it) { - object_stores.append(*it); - } - - *ec = 0; - WebIDBTransaction* transaction = database->transaction( - object_stores, mode, timeout, *ec); - DCHECK(!transaction != !*ec); - *idb_transaction_id = *ec ? 0 : parent_->Add(transaction); -} - -void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnClose( - int32 idb_database_id) { - WebIDBDatabase* database = parent_->GetOrTerminateProcess( - &map_, idb_database_id); - database->close(); -} - - void IndexedDBDispatcherHost::DatabaseDispatcherHost::OnDestroyed( - int32 object_id) { - parent_->DestroyObject(&map_, object_id); -} - - -////////////////////////////////////////////////////////////////////// -// IndexedDBDispatcherHost::IndexDispatcherHost -// - -IndexedDBDispatcherHost::IndexDispatcherHost::IndexDispatcherHost( - IndexedDBDispatcherHost* parent) - : parent_(parent) { - map_.set_check_on_null_data(true); -} - -IndexedDBDispatcherHost::IndexDispatcherHost::~IndexDispatcherHost() { -} - -bool IndexedDBDispatcherHost::IndexDispatcherHost::OnMessageReceived( - const IPC::Message& message, bool* msg_is_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::IndexDispatcherHost, - message, *msg_is_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexName, OnName) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexStoreName, OnStoreName) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexKeyPath, OnKeyPath) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexUnique, OnUnique) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenObjectCursor, - OnOpenObjectCursor) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexOpenKeyCursor, OnOpenKeyCursor) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetObject, OnGetObject) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexGetKey, OnGetKey) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_IndexDestroyed, OnDestroyed) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::Send( - IPC::Message* message) { - parent_->Send(message); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnName( - int32 object_id, string16* name) { - parent_->SyncGetter<string16>(&map_, object_id, name, &WebIDBIndex::name); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnStoreName( - int32 object_id, string16* store_name) { - parent_->SyncGetter<string16>( - &map_, object_id, store_name, &WebIDBIndex::storeName); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnKeyPath( - int32 object_id, NullableString16* key_path) { - parent_->SyncGetter<NullableString16>( - &map_, object_id, key_path, &WebIDBIndex::keyPath); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnUnique( - int32 object_id, bool* unique) { - parent_->SyncGetter<bool>(&map_, object_id, unique, &WebIDBIndex::unique); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenObjectCursor( - const IndexedDBHostMsg_IndexOpenCursor_Params& params, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( - &map_, params.idb_index_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_transaction || !idb_index) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); - idb_index->openObjectCursor( - WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, - params.upper_open), - params.direction, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnOpenKeyCursor( - const IndexedDBHostMsg_IndexOpenCursor_Params& params, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( - &map_, params.idb_index_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_transaction || !idb_index) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); - idb_index->openKeyCursor( - WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, - params.upper_open), - params.direction, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetObject( - int idb_index_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( - &map_, idb_index_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_transaction || !idb_index) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); - idb_index->getObject(key, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnGetKey( - int idb_index_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBIndex* idb_index = parent_->GetOrTerminateProcess( - &map_, idb_index_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_transaction || !idb_index) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebIDBKey>(parent_, response_id)); - idb_index->getKey(key, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::IndexDispatcherHost::OnDestroyed( - int32 object_id) { - parent_->DestroyObject(&map_, object_id); -} - -////////////////////////////////////////////////////////////////////// -// IndexedDBDispatcherHost::ObjectStoreDispatcherHost -// - -IndexedDBDispatcherHost::ObjectStoreDispatcherHost::ObjectStoreDispatcherHost( - IndexedDBDispatcherHost* parent) - : parent_(parent) { - map_.set_check_on_null_data(true); -} - -IndexedDBDispatcherHost:: -ObjectStoreDispatcherHost::~ObjectStoreDispatcherHost() { -} - -bool IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnMessageReceived( - const IPC::Message& message, bool* msg_is_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::ObjectStoreDispatcherHost, - message, *msg_is_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreName, OnName) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreKeyPath, OnKeyPath) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndexNames, OnIndexNames) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreGet, OnGet) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStorePut, OnPut) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDelete, OnDelete) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreClear, OnClear) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreCreateIndex, OnCreateIndex) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreIndex, OnIndex) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDeleteIndex, OnDeleteIndex) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreOpenCursor, OnOpenCursor) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_ObjectStoreDestroyed, OnDestroyed) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::Send( - IPC::Message* message) { - parent_->Send(message); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnName( - int32 object_id, string16* name) { - parent_->SyncGetter<string16>( - &map_, object_id, name, &WebIDBObjectStore::name); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnKeyPath( - int32 object_id, NullableString16* keyPath) { - parent_->SyncGetter<NullableString16>( - &map_, object_id, keyPath, &WebIDBObjectStore::keyPath); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnIndexNames( - int32 idb_object_store_id, std::vector<string16>* index_names) { - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - if (!idb_object_store) - return; - - WebDOMStringList web_index_names = idb_object_store->indexNames(); - index_names->reserve(web_index_names.length()); - for (unsigned i = 0; i < web_index_names.length(); ++i) - index_names->push_back(web_index_names.item(i)); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnGet( - int idb_object_store_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_transaction || !idb_object_store) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); - idb_object_store->get(key, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnPut( - const IndexedDBHostMsg_ObjectStorePut_Params& params, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, params.idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_transaction || !idb_object_store) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebIDBKey>(parent_, params.response_id)); - idb_object_store->put(params.serialized_value, params.key, params.put_mode, - callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDelete( - int idb_object_store_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_transaction || !idb_object_store) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); - idb_object_store->deleteFunction( - key, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnClear( - int idb_object_store_id, - int32 response_id, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_transaction || !idb_object_store) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id)); - idb_object_store->clear(callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnCreateIndex( - const IndexedDBHostMsg_ObjectStoreCreateIndex_Params& params, - int32* index_id, WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, params.idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_object_store || !idb_transaction) - return; - - *ec = 0; - WebIDBIndex* index = idb_object_store->createIndex( - params.name, params.key_path, params.unique, *idb_transaction, *ec); - *index_id = *ec ? 0 : parent_->Add(index); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnIndex( - int32 idb_object_store_id, - const string16& name, - int32* idb_index_id, - WebKit::WebExceptionCode* ec) { - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - if (!idb_object_store) - return; - - *ec = 0; - WebIDBIndex* index = idb_object_store->index(name, *ec); - *idb_index_id = parent_->Add(index); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDeleteIndex( - int32 idb_object_store_id, - const string16& name, - int32 transaction_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &map_, idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, transaction_id); - if (!idb_object_store || !idb_transaction) - return; - - *ec = 0; - idb_object_store->deleteIndex(name, *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnOpenCursor( - const IndexedDBHostMsg_ObjectStoreOpenCursor_Params& params, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBObjectStore* idb_object_store = parent_->GetOrTerminateProcess( - &parent_->object_store_dispatcher_host_->map_, - params.idb_object_store_id); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &parent_->transaction_dispatcher_host_->map_, params.transaction_id); - if (!idb_transaction || !idb_object_store) - return; - - *ec = 0; - scoped_ptr<WebIDBCallbacks> callbacks( - new IndexedDBCallbacks<WebIDBCursor>(parent_, params.response_id)); - idb_object_store->openCursor( - WebIDBKeyRange(params.lower_key, params.upper_key, params.lower_open, - params.upper_open), - params.direction, callbacks.release(), *idb_transaction, *ec); -} - -void IndexedDBDispatcherHost::ObjectStoreDispatcherHost::OnDestroyed( - int32 object_id) { - parent_->DestroyObject(&map_, object_id); -} - -////////////////////////////////////////////////////////////////////// -// IndexedDBDispatcherHost::CursorDispatcherHost -// - -IndexedDBDispatcherHost::CursorDispatcherHost::CursorDispatcherHost( - IndexedDBDispatcherHost* parent) - : parent_(parent) { - map_.set_check_on_null_data(true); -} - -IndexedDBDispatcherHost::CursorDispatcherHost::~CursorDispatcherHost() { -} - -bool IndexedDBDispatcherHost::CursorDispatcherHost::OnMessageReceived( - const IPC::Message& message, bool* msg_is_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::CursorDispatcherHost, - message, *msg_is_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDirection, OnDirection) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorKey, OnKey) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorValue, OnValue) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorUpdate, OnUpdate) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorContinue, OnContinue) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDelete, OnDelete) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_CursorDestroyed, OnDestroyed) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - - -void IndexedDBDispatcherHost::CursorDispatcherHost::Send( - IPC::Message* message) { - parent_->Send(message); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnDirection( - int32 object_id, int32* direction) { - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, object_id); - if (!idb_cursor) - return; - - *direction = idb_cursor->direction(); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnKey( - int32 object_id, IndexedDBKey* key) { - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, object_id); - if (!idb_cursor) - return; - - *key = IndexedDBKey(idb_cursor->key()); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnValue( - int32 object_id, - SerializedScriptValue* script_value, - IndexedDBKey* key) { - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, object_id); - if (!idb_cursor) - return; - - WebSerializedScriptValue temp_script_value; - WebIDBKey temp_key; - idb_cursor->value(temp_script_value, temp_key); - - *script_value = SerializedScriptValue(temp_script_value); - *key = IndexedDBKey(temp_key); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnUpdate( - int32 cursor_id, - int32 response_id, - const SerializedScriptValue& value, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); - if (!idb_cursor) - return; - - *ec = 0; - idb_cursor->update( - value, new IndexedDBCallbacks<WebIDBKey>(parent_, response_id), *ec); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnContinue( - int32 cursor_id, - int32 response_id, - const IndexedDBKey& key, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); - if (!idb_cursor) - return; - - *ec = 0; - idb_cursor->continueFunction( - key, new IndexedDBCallbacks<WebIDBCursor>(parent_, response_id), *ec); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnDelete( - int32 cursor_id, - int32 response_id, - WebKit::WebExceptionCode* ec) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBCursor* idb_cursor = parent_->GetOrTerminateProcess(&map_, cursor_id); - if (!idb_cursor) - return; - - *ec = 0; - // TODO(jorlow): This should be delete. - idb_cursor->remove( - new IndexedDBCallbacks<WebSerializedScriptValue>(parent_, response_id), *ec); -} - -void IndexedDBDispatcherHost::CursorDispatcherHost::OnDestroyed( - int32 object_id) { - parent_->DestroyObject(&map_, object_id); -} - -////////////////////////////////////////////////////////////////////// -// IndexedDBDispatcherHost::TransactionDispatcherHost -// - -IndexedDBDispatcherHost::TransactionDispatcherHost::TransactionDispatcherHost( - IndexedDBDispatcherHost* parent) - : parent_(parent) { - map_.set_check_on_null_data(true); -} - -IndexedDBDispatcherHost:: - TransactionDispatcherHost::~TransactionDispatcherHost() { - MapType::iterator it(&map_); - while (!it.IsAtEnd()) { - it.GetCurrentValue()->abort(); - it.Advance(); - } -} - -bool IndexedDBDispatcherHost::TransactionDispatcherHost::OnMessageReceived( - const IPC::Message& message, bool* msg_is_ok) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP_EX(IndexedDBDispatcherHost::TransactionDispatcherHost, - message, *msg_is_ok) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionAbort, OnAbort) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionMode, OnMode) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionObjectStore, OnObjectStore) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionDidCompleteTaskEvents, - OnDidCompleteTaskEvents) - IPC_MESSAGE_HANDLER(IndexedDBHostMsg_TransactionDestroyed, OnDestroyed) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void IndexedDBDispatcherHost::TransactionDispatcherHost::Send( - IPC::Message* message) { - parent_->Send(message); -} - -void IndexedDBDispatcherHost::TransactionDispatcherHost::OnAbort( - int32 transaction_id) { - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &map_, transaction_id); - if (!idb_transaction) - return; - - idb_transaction->abort(); -} - -void IndexedDBDispatcherHost::TransactionDispatcherHost::OnMode( - int32 transaction_id, - int* mode) { - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &map_, transaction_id); - if (!idb_transaction) - return; - - *mode = idb_transaction->mode(); -} - -void IndexedDBDispatcherHost::TransactionDispatcherHost::OnObjectStore( - int32 transaction_id, const string16& name, int32* object_store_id, - WebKit::WebExceptionCode* ec) { - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &map_, transaction_id); - if (!idb_transaction) - return; - - *ec = 0; - WebIDBObjectStore* object_store = idb_transaction->objectStore(name, *ec); - *object_store_id = object_store ? parent_->Add(object_store) : 0; -} - -void IndexedDBDispatcherHost:: - TransactionDispatcherHost::OnDidCompleteTaskEvents(int transaction_id) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - WebIDBTransaction* idb_transaction = parent_->GetOrTerminateProcess( - &map_, transaction_id); - if (!idb_transaction) - return; - - idb_transaction->didCompleteTaskEvents(); -} - -void IndexedDBDispatcherHost::TransactionDispatcherHost::OnDestroyed( - int32 object_id) { - parent_->DestroyObject(&map_, object_id); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h b/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h deleted file mode 100644 index da8a176..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h +++ /dev/null @@ -1,280 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_DISPATCHER_HOST_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_DISPATCHER_HOST_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/id_map.h" -#include "chrome/browser/browser_message_filter.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebExceptionCode.h" - -class HostContentSettingsMap; -class IndexedDBKey; -class NullableString16; -class Profile; -class SerializedScriptValue; -struct IndexedDBHostMsg_DatabaseCreateObjectStore_Params; -struct IndexedDBHostMsg_FactoryDeleteDatabase_Params; -struct IndexedDBHostMsg_FactoryOpen_Params; -struct IndexedDBHostMsg_IndexOpenCursor_Params; -struct IndexedDBHostMsg_ObjectStoreCreateIndex_Params; -struct IndexedDBHostMsg_ObjectStoreOpenCursor_Params; -struct IndexedDBHostMsg_ObjectStorePut_Params; - -namespace WebKit { -class WebIDBCursor; -class WebIDBDatabase; -class WebIDBIndex; -class WebIDBObjectStore; -class WebIDBTransaction; -} - -// Handles all IndexedDB related messages from a particular renderer process. -class IndexedDBDispatcherHost : public BrowserMessageFilter { - public: - // Only call the constructor from the UI thread. - IndexedDBDispatcherHost(int process_id, Profile* profile); - - // BrowserMessageFilter implementation. - virtual void OnChannelClosing(); - virtual void OverrideThreadForMessage(const IPC::Message& message, - BrowserThread::ID* thread); - virtual bool OnMessageReceived(const IPC::Message& message, - bool* message_was_ok); - - // A shortcut for accessing our context. - IndexedDBContext* Context() { - return webkit_context_->indexed_db_context(); - } - - // The various IndexedDBCallbacks children call these methods to add the - // results into the applicable map. See below for more details. - int32 Add(WebKit::WebIDBCursor* idb_cursor); - int32 Add(WebKit::WebIDBDatabase* idb_database); - int32 Add(WebKit::WebIDBIndex* idb_index); - int32 Add(WebKit::WebIDBObjectStore* idb_object_store); - int32 Add(WebKit::WebIDBTransaction* idb_transaction); - - private: - ~IndexedDBDispatcherHost(); - - // True if the given |origin| can use databases according to the content - // settings. - bool CheckContentSetting(const string16& origin, - const string16& description, - int routing_id, - int response_id); - - // Message processing. Most of the work is delegated to the dispatcher hosts - // below. - void OnIDBFactoryOpen(const IndexedDBHostMsg_FactoryOpen_Params& p); - - void OnIDBFactoryDeleteDatabase( - const IndexedDBHostMsg_FactoryDeleteDatabase_Params& p); - - // Helper templates. - template <class ReturnType> - ReturnType* GetOrTerminateProcess( - IDMap<ReturnType, IDMapOwnPointer>* map, int32 return_object_id); - - template <typename ReplyType, typename WebObjectType, typename Method> - void SyncGetter(IDMap<WebObjectType, IDMapOwnPointer>* map, int32 object_id, - ReplyType* reply, Method method); - - template <typename ObjectType> - void DestroyObject(IDMap<ObjectType, IDMapOwnPointer>* map, int32 object_id); - - class DatabaseDispatcherHost { - public: - explicit DatabaseDispatcherHost(IndexedDBDispatcherHost* parent); - ~DatabaseDispatcherHost(); - - bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok); - void Send(IPC::Message* message); - - void OnName(int32 idb_database_id, string16* name); - void OnVersion(int32 idb_database_id, string16* version); - void OnObjectStoreNames(int32 idb_database_id, - std::vector<string16>* object_stores); - void OnCreateObjectStore( - const IndexedDBHostMsg_DatabaseCreateObjectStore_Params& params, - int32* object_store_id, WebKit::WebExceptionCode* ec); - void OnDeleteObjectStore(int32 idb_database_id, - const string16& name, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnSetVersion(int32 idb_database_id, - int32 response_id, - const string16& version, - WebKit::WebExceptionCode* ec); - void OnTransaction(int32 idb_database_id, - const std::vector<string16>& names, - int32 mode, int32 timeout, - int32* idb_transaction_id, - WebKit::WebExceptionCode* ec); - void OnClose(int32 idb_database_id); - void OnDestroyed(int32 idb_database_id); - - IndexedDBDispatcherHost* parent_; - IDMap<WebKit::WebIDBDatabase, IDMapOwnPointer> map_; - }; - - class IndexDispatcherHost { - public: - explicit IndexDispatcherHost(IndexedDBDispatcherHost* parent); - ~IndexDispatcherHost(); - - bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok); - void Send(IPC::Message* message); - - void OnName(int32 idb_index_id, string16* name); - void OnStoreName(int32 idb_index_id, string16* store_name); - void OnKeyPath(int32 idb_index_id, NullableString16* key_path); - void OnUnique(int32 idb_index_id, bool* unique); - void OnOpenObjectCursor( - const IndexedDBHostMsg_IndexOpenCursor_Params& params, - WebKit::WebExceptionCode* ec); - void OnOpenKeyCursor(const IndexedDBHostMsg_IndexOpenCursor_Params& params, - WebKit::WebExceptionCode* ec); - void OnGetObject(int idb_index_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnGetKey(int idb_index_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnDestroyed(int32 idb_index_id); - - IndexedDBDispatcherHost* parent_; - IDMap<WebKit::WebIDBIndex, IDMapOwnPointer> map_; - }; - - class ObjectStoreDispatcherHost { - public: - explicit ObjectStoreDispatcherHost(IndexedDBDispatcherHost* parent); - ~ObjectStoreDispatcherHost(); - - bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok); - void Send(IPC::Message* message); - - void OnName(int32 idb_object_store_id, string16* name); - void OnKeyPath(int32 idb_object_store_id, NullableString16* keyPath); - void OnIndexNames(int32 idb_object_store_id, - std::vector<string16>* index_names); - void OnGet(int idb_object_store_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnPut(const IndexedDBHostMsg_ObjectStorePut_Params& params, - WebKit::WebExceptionCode* ec); - void OnDelete(int idb_object_store_id, - int32 response_id, - const IndexedDBKey& key, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnClear(int idb_object_store_id, - int32 response_id, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnCreateIndex( - const IndexedDBHostMsg_ObjectStoreCreateIndex_Params& params, - int32* index_id, - WebKit::WebExceptionCode* ec); - void OnIndex(int32 idb_object_store_id, - const string16& name, - int32* idb_index_id, - WebKit::WebExceptionCode* ec); - void OnDeleteIndex(int32 idb_object_store_id, - const string16& name, - int32 transaction_id, - WebKit::WebExceptionCode* ec); - void OnOpenCursor( - const IndexedDBHostMsg_ObjectStoreOpenCursor_Params& params, - WebKit::WebExceptionCode* ec); - void OnDestroyed(int32 idb_object_store_id); - - IndexedDBDispatcherHost* parent_; - IDMap<WebKit::WebIDBObjectStore, IDMapOwnPointer> map_; - }; - - class CursorDispatcherHost { - public: - explicit CursorDispatcherHost(IndexedDBDispatcherHost* parent); - ~CursorDispatcherHost(); - - bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok); - void Send(IPC::Message* message); - - void OnDirection(int32 idb_object_store_id, int32* direction); - void OnKey(int32 idb_object_store_id, IndexedDBKey* key); - void OnValue(int32 idb_object_store_id, - SerializedScriptValue* script_value, - IndexedDBKey* key); - void OnUpdate(int32 idb_object_store_id, - int32 response_id, - const SerializedScriptValue& value, - WebKit::WebExceptionCode* ec); - void OnContinue(int32 idb_object_store_id, - int32 response_id, - const IndexedDBKey& key, - WebKit::WebExceptionCode* ec); - void OnDelete(int32 idb_object_store_id, - int32 response_id, - WebKit::WebExceptionCode* ec); - void OnDestroyed(int32 idb_cursor_id); - - IndexedDBDispatcherHost* parent_; - IDMap<WebKit::WebIDBCursor, IDMapOwnPointer> map_; - }; - - class TransactionDispatcherHost { - public: - explicit TransactionDispatcherHost(IndexedDBDispatcherHost* parent); - ~TransactionDispatcherHost(); - - bool OnMessageReceived(const IPC::Message& message, bool *msg_is_ok); - void Send(IPC::Message* message); - - // TODO: add the rest of the transaction methods. - void OnAbort(int32 transaction_id); - void OnMode(int32 transaction_id, int* mode); - void OnObjectStore(int32 transaction_id, - const string16& name, - int32* object_store_id, - WebKit::WebExceptionCode* ec); - void OnDidCompleteTaskEvents(int transaction_id); - void OnDestroyed(int32 idb_transaction_id); - - IndexedDBDispatcherHost* parent_; - typedef IDMap<WebKit::WebIDBTransaction, IDMapOwnPointer> MapType; - MapType map_; - }; - - // Data shared between renderer processes with the same profile. - scoped_refptr<WebKitContext> webkit_context_; - - // Tells us whether the user wants to allow databases to be opened. - scoped_refptr<HostContentSettingsMap> host_content_settings_map_; - - // Only access on WebKit thread. - scoped_ptr<DatabaseDispatcherHost> database_dispatcher_host_; - scoped_ptr<IndexDispatcherHost> index_dispatcher_host_; - scoped_ptr<ObjectStoreDispatcherHost> object_store_dispatcher_host_; - scoped_ptr<CursorDispatcherHost> cursor_dispatcher_host_; - scoped_ptr<TransactionDispatcherHost> transaction_dispatcher_host_; - - // Used to dispatch messages to the correct view host. - int process_id_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(IndexedDBDispatcherHost); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_DISPATCHER_HOST_H_ diff --git a/chrome/browser/in_process_webkit/indexed_db_key_utility_client.cc b/chrome/browser/in_process_webkit/indexed_db_key_utility_client.cc deleted file mode 100644 index aec651f..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_key_utility_client.cc +++ /dev/null @@ -1,383 +0,0 @@ -// Copyright (c) 2009 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 "chrome/browser/in_process_webkit/indexed_db_key_utility_client.h" - -#include "base/lazy_instance.h" -#include "base/synchronization/waitable_event.h" -#include "chrome/browser/browser_process.h" -#include "chrome/browser/utility_process_host.h" -#include "chrome/common/indexed_db_key.h" -#include "chrome/common/serialized_script_value.h" - -// This class is used to obtain IndexedDBKeys from SerializedScriptValues -// given an IDBKeyPath. It uses UtilityProcess to do this inside a sandbox -// (a V8 lock is required there). At this level, all methods are synchronous -// as required by the caller. The public API is used on WEBKIT thread, -// but internally it moves around to UI and IO as needed. -class KeyUtilityClientImpl - : public base::RefCountedThreadSafe<KeyUtilityClientImpl> { - public: - KeyUtilityClientImpl(); - - // Starts the UtilityProcess. Must be called before any other method. - void StartUtilityProcess(); - - // Stops the UtilityProcess. No further keys can be created after this. - void Shutdown(); - - // Synchronously obtain the |keys| from |values| for the given |key_path|. - void CreateIDBKeysFromSerializedValuesAndKeyPath( - const std::vector<SerializedScriptValue>& values, - const string16& key_path, - std::vector<IndexedDBKey>* keys); - - // Synchronously inject |key| into |value| using the given |key_path|, - // returning the new value. - SerializedScriptValue InjectIDBKeyIntoSerializedValue( - const IndexedDBKey& key, - const SerializedScriptValue& value, - const string16& key_path); - - private: - class Client : public UtilityProcessHost::Client { - public: - explicit Client(KeyUtilityClientImpl* parent); - - // UtilityProcessHost::Client - virtual void OnProcessCrashed(int exit_code); - virtual void OnIDBKeysFromValuesAndKeyPathSucceeded( - int id, const std::vector<IndexedDBKey>& keys); - virtual void OnIDBKeysFromValuesAndKeyPathFailed(int id); - virtual void OnInjectIDBKeyFinished(const SerializedScriptValue& value); - - private: - KeyUtilityClientImpl* parent_; - - DISALLOW_COPY_AND_ASSIGN(Client); - }; - - friend class base::RefCountedThreadSafe<KeyUtilityClientImpl>; - ~KeyUtilityClientImpl(); - - void GetRDHAndStartUtilityProcess(); - void StartUtilityProcessInternal(ResourceDispatcherHost* rdh); - void EndUtilityProcessInternal(); - void CallStartIDBKeyFromValueAndKeyPathFromIOThread( - const std::vector<SerializedScriptValue>& values, - const string16& key_path); - void CallStartInjectIDBKeyFromIOThread( - const IndexedDBKey& key, - const SerializedScriptValue& value, - const string16& key_path); - - void SetKeys(const std::vector<IndexedDBKey>& keys); - void FinishCreatingKeys(); - void SetValueAfterInjection(const SerializedScriptValue& value); - void FinishInjectingKey(); - - base::WaitableEvent waitable_event_; - - // Used in both IO and WEBKIT threads, but guarded by WaitableEvent, i.e., - // these members are only set / read when the other thread is blocked. - enum State { - STATE_UNINITIALIZED, - STATE_INITIALIZED, - STATE_CREATING_KEYS, - STATE_INJECTING_KEY, - STATE_SHUTDOWN, - }; - State state_; - std::vector<IndexedDBKey> keys_; - SerializedScriptValue value_after_injection_; - - // Used in the IO thread. - UtilityProcessHost* utility_process_host_; - scoped_refptr<Client> client_; - - DISALLOW_COPY_AND_ASSIGN(KeyUtilityClientImpl); -}; - -// IndexedDBKeyUtilityClient definitions. - -static base::LazyInstance<IndexedDBKeyUtilityClient> client_instance( - base::LINKER_INITIALIZED); - -IndexedDBKeyUtilityClient::IndexedDBKeyUtilityClient() - : is_shutdown_(false) { - // Note that creating the impl_ object is deferred until it is first needed, - // as this class can be constructed even though it never gets used. -} - -IndexedDBKeyUtilityClient::~IndexedDBKeyUtilityClient() { - DCHECK(!impl_ || is_shutdown_); -} - -// static -void IndexedDBKeyUtilityClient::Shutdown() { - IndexedDBKeyUtilityClient* instance = client_instance.Pointer(); - if (!instance->impl_) - return; - - instance->is_shutdown_ = true; - instance->impl_->Shutdown(); -} - -// static -void IndexedDBKeyUtilityClient::CreateIDBKeysFromSerializedValuesAndKeyPath( - const std::vector<SerializedScriptValue>& values, - const string16& key_path, - std::vector<IndexedDBKey>* keys) { - IndexedDBKeyUtilityClient* instance = client_instance.Pointer(); - - if (instance->is_shutdown_) { - keys->clear(); - return; - } - - if (!instance->impl_) { - instance->impl_ = new KeyUtilityClientImpl(); - instance->impl_->StartUtilityProcess(); - } - - instance->impl_->CreateIDBKeysFromSerializedValuesAndKeyPath(values, key_path, - keys); -} - -// static -SerializedScriptValue -IndexedDBKeyUtilityClient::InjectIDBKeyIntoSerializedValue( - const IndexedDBKey& key, const SerializedScriptValue& value, - const string16& key_path) { - IndexedDBKeyUtilityClient* instance = client_instance.Pointer(); - - if (instance->is_shutdown_) - return SerializedScriptValue(); - - if (!instance->impl_) { - instance->impl_ = new KeyUtilityClientImpl(); - instance->impl_->StartUtilityProcess(); - } - - return instance->impl_->InjectIDBKeyIntoSerializedValue(key, value, key_path); -} - - - -// KeyUtilityClientImpl definitions. - -void KeyUtilityClientImpl::Shutdown() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - - utility_process_host_->EndBatchMode(); - utility_process_host_ = NULL; - client_ = NULL; - state_ = STATE_SHUTDOWN; -} - -KeyUtilityClientImpl::KeyUtilityClientImpl() - : waitable_event_(false, false), - state_(STATE_UNINITIALIZED), - utility_process_host_(NULL) { -} - -KeyUtilityClientImpl::~KeyUtilityClientImpl() { - DCHECK(state_ == STATE_UNINITIALIZED || state_ == STATE_SHUTDOWN); - DCHECK(!utility_process_host_); - DCHECK(!client_.get()); -} - -void KeyUtilityClientImpl::StartUtilityProcess() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - DCHECK(state_ == STATE_UNINITIALIZED); - - GetRDHAndStartUtilityProcess(); - bool ret = waitable_event_.Wait(); - - DCHECK(ret && state_ == STATE_INITIALIZED); -} - -void KeyUtilityClientImpl::CreateIDBKeysFromSerializedValuesAndKeyPath( - const std::vector<SerializedScriptValue>& values, - const string16& key_path, - std::vector<IndexedDBKey>* keys) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - if (state_ == STATE_SHUTDOWN) { - keys->clear(); - return; - } - - DCHECK(state_ == STATE_INITIALIZED); - - state_ = STATE_CREATING_KEYS; - CallStartIDBKeyFromValueAndKeyPathFromIOThread(values, key_path); - bool ret = waitable_event_.Wait(); - DCHECK(ret && state_ == STATE_INITIALIZED); - - *keys = keys_; -} - -SerializedScriptValue KeyUtilityClientImpl::InjectIDBKeyIntoSerializedValue( - const IndexedDBKey& key, - const SerializedScriptValue& value, - const string16& key_path) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - if (state_ == STATE_SHUTDOWN) - return SerializedScriptValue(); - - DCHECK(state_ == STATE_INITIALIZED); - - state_ = STATE_INJECTING_KEY; - CallStartInjectIDBKeyFromIOThread(key, value, key_path); - - bool ret = waitable_event_.Wait(); - DCHECK(ret && state_ == STATE_INITIALIZED); - - return value_after_injection_; -} - - -void KeyUtilityClientImpl::GetRDHAndStartUtilityProcess() { - // In order to start the UtilityProcess, we need to grab - // a pointer to the ResourceDispatcherHost. This can only - // be done on the UI thread. See the comment at the top of - // browser_process.h - if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) { - BrowserThread::PostTask( - BrowserThread::UI, FROM_HERE, - NewRunnableMethod( - this, - &KeyUtilityClientImpl::GetRDHAndStartUtilityProcess)); - return; - } - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - StartUtilityProcessInternal(g_browser_process->resource_dispatcher_host()); -} - -void KeyUtilityClientImpl::StartUtilityProcessInternal( - ResourceDispatcherHost* rdh) { - DCHECK(rdh); - // The ResourceDispatcherHost can only be used on the IO thread. - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - NewRunnableMethod( - this, - &KeyUtilityClientImpl::StartUtilityProcessInternal, - rdh)); - return; - } - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - DCHECK(state_ == STATE_UNINITIALIZED); - - client_ = new KeyUtilityClientImpl::Client(this); - utility_process_host_ = new UtilityProcessHost( - rdh, client_.get(), BrowserThread::IO); - utility_process_host_->StartBatchMode(); - state_ = STATE_INITIALIZED; - waitable_event_.Signal(); -} - -void KeyUtilityClientImpl::EndUtilityProcessInternal() { - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - NewRunnableMethod( - this, - &KeyUtilityClientImpl::EndUtilityProcessInternal)); - return; - } - - utility_process_host_->EndBatchMode(); - utility_process_host_ = NULL; - client_ = NULL; - state_ = STATE_SHUTDOWN; - waitable_event_.Signal(); -} - -void KeyUtilityClientImpl::CallStartIDBKeyFromValueAndKeyPathFromIOThread( - const std::vector<SerializedScriptValue>& values, - const string16& key_path) { - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - NewRunnableMethod(this, - &KeyUtilityClientImpl:: - CallStartIDBKeyFromValueAndKeyPathFromIOThread, - values, key_path)); - return; - } - - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - utility_process_host_->StartIDBKeysFromValuesAndKeyPath( - 0, values, key_path); -} - -void KeyUtilityClientImpl::CallStartInjectIDBKeyFromIOThread( - const IndexedDBKey& key, - const SerializedScriptValue& value, - const string16& key_path) { - if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) { - BrowserThread::PostTask( - BrowserThread::IO, FROM_HERE, - NewRunnableMethod(this, - &KeyUtilityClientImpl:: - CallStartInjectIDBKeyFromIOThread, - key, value, key_path)); - return; - } - - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - utility_process_host_->StartInjectIDBKey(key, value, key_path); -} - -void KeyUtilityClientImpl::SetKeys(const std::vector<IndexedDBKey>& keys) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - keys_ = keys; -} - -void KeyUtilityClientImpl::FinishCreatingKeys() { - DCHECK(state_ == STATE_CREATING_KEYS); - state_ = STATE_INITIALIZED; - waitable_event_.Signal(); -} - -void KeyUtilityClientImpl::SetValueAfterInjection( - const SerializedScriptValue& value) { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); - value_after_injection_ = value; -} - -void KeyUtilityClientImpl::FinishInjectingKey() { - DCHECK(state_ == STATE_INJECTING_KEY); - state_ = STATE_INITIALIZED; - waitable_event_.Signal(); -} - -KeyUtilityClientImpl::Client::Client(KeyUtilityClientImpl* parent) - : parent_(parent) { -} - -void KeyUtilityClientImpl::Client::OnProcessCrashed(int exit_code) { - if (parent_->state_ == STATE_CREATING_KEYS) - parent_->FinishCreatingKeys(); -} - -void KeyUtilityClientImpl::Client::OnIDBKeysFromValuesAndKeyPathSucceeded( - int id, const std::vector<IndexedDBKey>& keys) { - parent_->SetKeys(keys); - parent_->FinishCreatingKeys(); -} - -void KeyUtilityClientImpl::Client::OnInjectIDBKeyFinished( - const SerializedScriptValue& value) { - parent_->SetValueAfterInjection(value); - parent_->FinishInjectingKey(); -} - -void KeyUtilityClientImpl::Client::OnIDBKeysFromValuesAndKeyPathFailed( - int id) { - parent_->FinishCreatingKeys(); -} diff --git a/chrome/browser/in_process_webkit/indexed_db_key_utility_client.h b/chrome/browser/in_process_webkit/indexed_db_key_utility_client.h deleted file mode 100644 index 0c92a58..0000000 --- a/chrome/browser/in_process_webkit/indexed_db_key_utility_client.h +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_KEY_UTILITY_CLIENT_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_KEY_UTILITY_CLIENT_H_ -#pragma once - -#include <vector> - -#include "base/ref_counted.h" -#include "base/string16.h" - -class IndexedDBKey; -class SerializedScriptValue; -class KeyUtilityClientImpl; - -namespace base { -template <typename T> -struct DefaultLazyInstanceTraits; -} // namespace base - -// Class for obtaining IndexedDBKeys from the SerializedScriptValues given -// an IDBKeyPath. This class is a thin singleton wrapper around the -// KeyUtilityClientImpl, which does the real work. -class IndexedDBKeyUtilityClient { - public: - // Synchronously obtain the |keys| from |values| for the given |key_path|. - static void CreateIDBKeysFromSerializedValuesAndKeyPath( - const std::vector<SerializedScriptValue>& values, - const string16& key_path, - std::vector<IndexedDBKey>* keys); - - // Synchronously inject |key| into |value| using |key_path|. Returns the new - // value. - static SerializedScriptValue InjectIDBKeyIntoSerializedValue( - const IndexedDBKey& key, - const SerializedScriptValue& value, - const string16& key_path); - - // Shut down the underlying implementation. Must be called on the IO thread. - static void Shutdown(); - - private: - friend struct base::DefaultLazyInstanceTraits<IndexedDBKeyUtilityClient>; - IndexedDBKeyUtilityClient(); - ~IndexedDBKeyUtilityClient(); - - bool is_shutdown_; - - // The real client; laziliy instantiated. - scoped_refptr<KeyUtilityClientImpl> impl_; -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_INDEXED_DB_KEY_UTILITY_CLIENT_H_ diff --git a/chrome/browser/in_process_webkit/session_storage_namespace.cc b/chrome/browser/in_process_webkit/session_storage_namespace.cc deleted file mode 100644 index 98cc5e9..0000000 --- a/chrome/browser/in_process_webkit/session_storage_namespace.cc +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/session_storage_namespace.h" - -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/browser/profiles/profile.h" - -SessionStorageNamespace::SessionStorageNamespace(Profile* profile) - : webkit_context_(profile->GetWebKitContext()), - id_(webkit_context_->dom_storage_context() - ->AllocateSessionStorageNamespaceId()) { -} - -SessionStorageNamespace::SessionStorageNamespace(WebKitContext* webkit_context, - int64 id) - : webkit_context_(webkit_context), - id_(id) { -} - -SessionStorageNamespace::~SessionStorageNamespace() { - webkit_context_->DeleteSessionStorageNamespace(id_); -} - -SessionStorageNamespace* SessionStorageNamespace::Clone() { - return new SessionStorageNamespace( - webkit_context_, - webkit_context_->dom_storage_context()->CloneSessionStorage(id_)); -} diff --git a/chrome/browser/in_process_webkit/session_storage_namespace.h b/chrome/browser/in_process_webkit/session_storage_namespace.h deleted file mode 100644 index 364882a..0000000 --- a/chrome/browser/in_process_webkit/session_storage_namespace.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/ref_counted.h" - -class Profile; -class WebKitContext; - -// This is a ref-counted class that represents a SessionStorageNamespace. -// On destruction it ensures that the storage namespace is destroyed. -// NOTE: That if we're shutting down, we don't strictly need to do this, but -// it keeps valgrind happy. -class SessionStorageNamespace - : public base::RefCountedThreadSafe<SessionStorageNamespace> { - public: - explicit SessionStorageNamespace(Profile* profile); - - int64 id() const { return id_; } - - // The session storage namespace parameter allows multiple render views and - // tab contentses to share the same session storage (part of the WebStorage - // spec) space. Passing in NULL simply allocates a new one which is often the - // correct thing to do (especially in tests. - SessionStorageNamespace* Clone(); - - private: - SessionStorageNamespace(WebKitContext* webkit_context, int64 id); - - friend class base::RefCountedThreadSafe<SessionStorageNamespace>; - ~SessionStorageNamespace(); - - scoped_refptr<WebKitContext> webkit_context_; - - // The session storage namespace id. - int64 id_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(SessionStorageNamespace); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ diff --git a/chrome/browser/in_process_webkit/webkit_context.cc b/chrome/browser/in_process_webkit/webkit_context.cc deleted file mode 100644 index 0c723468..0000000 --- a/chrome/browser/in_process_webkit/webkit_context.cc +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright (c) 2010 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 "chrome/browser/in_process_webkit/webkit_context.h" - -#include "base/command_line.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/profiles/profile.h" - -WebKitContext::WebKitContext(Profile* profile, bool clear_local_state_on_exit) - : data_path_(profile->IsOffTheRecord() ? FilePath() : profile->GetPath()), - is_incognito_(profile->IsOffTheRecord()), - clear_local_state_on_exit_(clear_local_state_on_exit), - ALLOW_THIS_IN_INITIALIZER_LIST( - dom_storage_context_(new DOMStorageContext(this))), - ALLOW_THIS_IN_INITIALIZER_LIST( - indexed_db_context_(new IndexedDBContext(this))) { -} - -WebKitContext::~WebKitContext() { - // If the WebKit thread was ever spun up, delete the object there. The task - // will just get deleted if the WebKit thread isn't created (which only - // happens during testing). - dom_storage_context_->set_clear_local_state_on_exit_( - clear_local_state_on_exit_); - DOMStorageContext* dom_storage_context = dom_storage_context_.release(); - if (!BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, dom_storage_context)) { - // The WebKit thread wasn't created, and the task got deleted without - // freeing the DOMStorageContext, so delete it manually. - delete dom_storage_context; - } - - indexed_db_context_->set_clear_local_state_on_exit( - clear_local_state_on_exit_); - IndexedDBContext* indexed_db_context = indexed_db_context_.release(); - if (!BrowserThread::DeleteSoon( - BrowserThread::WEBKIT, FROM_HERE, indexed_db_context)) { - delete indexed_db_context; - } -} - -void WebKitContext::PurgeMemory() { - if (!BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)) { - BrowserThread::PostTask( - BrowserThread::WEBKIT, FROM_HERE, - NewRunnableMethod(this, &WebKitContext::PurgeMemory)); - return; - } - - dom_storage_context_->PurgeMemory(); -} - -void WebKitContext::DeleteDataModifiedSince( - const base::Time& cutoff, - const char* url_scheme_to_be_skipped, - const std::vector<string16>& protected_origins) { - if (!BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)) { - BrowserThread::PostTask( - BrowserThread::WEBKIT, FROM_HERE, - NewRunnableMethod(this, &WebKitContext::DeleteDataModifiedSince, - cutoff, url_scheme_to_be_skipped, protected_origins)); - return; - } - - dom_storage_context_->DeleteDataModifiedSince( - cutoff, url_scheme_to_be_skipped, protected_origins); -} - - -void WebKitContext::DeleteSessionStorageNamespace( - int64 session_storage_namespace_id) { - if (!BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)) { - BrowserThread::PostTask( - BrowserThread::WEBKIT, FROM_HERE, - NewRunnableMethod(this, &WebKitContext::DeleteSessionStorageNamespace, - session_storage_namespace_id)); - return; - } - - dom_storage_context_->DeleteSessionStorageNamespace( - session_storage_namespace_id); -} diff --git a/chrome/browser/in_process_webkit/webkit_context.h b/chrome/browser/in_process_webkit/webkit_context.h deleted file mode 100644 index 31a90fe..0000000 --- a/chrome/browser/in_process_webkit/webkit_context.h +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_CONTEXT_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_CONTEXT_H_ -#pragma once - -#include <vector> - -#include "base/file_path.h" -#include "base/ref_counted.h" -#include "base/scoped_ptr.h" -#include "base/time.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/indexed_db_context.h" - -class Profile; - -// There's one WebKitContext per profile. Various DispatcherHost classes -// have a pointer to the Context to store shared state. Unfortunately, this -// class has become a bit of a dumping ground for calls made on the UI thread -// that need to be proxied over to the WebKit thread. -// -// This class is created on the UI thread and accessed on the UI, IO, and WebKit -// threads. -class WebKitContext - : public base::RefCountedThreadSafe<WebKitContext> { - public: - explicit WebKitContext(Profile* profile, bool clear_local_state_on_exit); - - const FilePath& data_path() const { return data_path_; } - bool is_incognito() const { return is_incognito_; } - - DOMStorageContext* dom_storage_context() { - return dom_storage_context_.get(); - } - - IndexedDBContext* indexed_db_context() { - return indexed_db_context_.get(); - } - - void set_clear_local_state_on_exit(bool clear_local_state) { - clear_local_state_on_exit_ = clear_local_state; - } - -#ifdef UNIT_TEST - // For unit tests, allow specifying a DOMStorageContext directly so it can be - // mocked. - void set_dom_storage_context(DOMStorageContext* dom_storage_context) { - dom_storage_context_.reset(dom_storage_context); - } -#endif - - // Tells the DOMStorageContext to purge any memory it does not need. - void PurgeMemory(); - - // Tell all children (where applicable) to delete any objects that were - // last modified on or after the following time. - void DeleteDataModifiedSince(const base::Time& cutoff, - const char* url_scheme_to_be_skipped, - const std::vector<string16>& protected_origins); - - // Delete the session storage namespace associated with this id. Can be - // called from any thread. - void DeleteSessionStorageNamespace(int64 session_storage_namespace_id); - - private: - friend class base::RefCountedThreadSafe<WebKitContext>; - virtual ~WebKitContext(); - - // Copies of profile data that can be accessed on any thread. - const FilePath data_path_; - const bool is_incognito_; - - // True if the destructors of context objects should delete their files. - bool clear_local_state_on_exit_; - - scoped_ptr<DOMStorageContext> dom_storage_context_; - - scoped_ptr<IndexedDBContext> indexed_db_context_; - - DISALLOW_IMPLICIT_CONSTRUCTORS(WebKitContext); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_CONTEXT_H_ diff --git a/chrome/browser/in_process_webkit/webkit_context_unittest.cc b/chrome/browser/in_process_webkit/webkit_context_unittest.cc deleted file mode 100644 index c8870aab..0000000 --- a/chrome/browser/in_process_webkit/webkit_context_unittest.cc +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2009 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 "chrome/browser/browser_thread.h" -#include "chrome/browser/in_process_webkit/dom_storage_context.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" -#include "chrome/test/testing_profile.h" -#include "testing/gtest/include/gtest/gtest.h" - -class MockDOMStorageContext : public DOMStorageContext { - public: - explicit MockDOMStorageContext(WebKitContext* webkit_context) - : DOMStorageContext(webkit_context), - purge_count_(0) { - } - - virtual void PurgeMemory() { - EXPECT_FALSE(BrowserThread::CurrentlyOn(BrowserThread::UI)); - EXPECT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); - ++purge_count_; - } - - int purge_count() const { return purge_count_; } - - private: - int purge_count_; -}; - -TEST(WebKitContextTest, Basic) { - TestingProfile profile; - - scoped_refptr<WebKitContext> context1(new WebKitContext(&profile, false)); - EXPECT_TRUE(profile.GetPath() == context1->data_path()); - EXPECT_TRUE(profile.IsOffTheRecord() == context1->is_incognito()); - - scoped_refptr<WebKitContext> context2(new WebKitContext(&profile, false)); - EXPECT_TRUE(context1->data_path() == context2->data_path()); - EXPECT_TRUE(context1->is_incognito() == context2->is_incognito()); -} - -TEST(WebKitContextTest, PurgeMemory) { - // Start up a WebKit thread for the WebKitContext to call the - // DOMStorageContext on. - BrowserThread webkit_thread(BrowserThread::WEBKIT); - webkit_thread.Start(); - - // Create the contexts. - TestingProfile profile; - scoped_refptr<WebKitContext> context(new WebKitContext(&profile, false)); - MockDOMStorageContext* mock_context = - new MockDOMStorageContext(context.get()); - context->set_dom_storage_context(mock_context); // Takes ownership. - - // Ensure PurgeMemory() calls our mock object on the right thread. - EXPECT_EQ(0, mock_context->purge_count()); - context->PurgeMemory(); - webkit_thread.Stop(); // Blocks until all tasks are complete. - EXPECT_EQ(1, mock_context->purge_count()); -} diff --git a/chrome/browser/in_process_webkit/webkit_thread.cc b/chrome/browser/in_process_webkit/webkit_thread.cc deleted file mode 100644 index 3af9826..0000000 --- a/chrome/browser/in_process_webkit/webkit_thread.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2011 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 "chrome/browser/in_process_webkit/webkit_thread.h" - -#include "base/command_line.h" -#include "chrome/browser/in_process_webkit/browser_webkitclient_impl.h" -#include "chrome/common/chrome_switches.h" -#include "third_party/WebKit/Source/WebKit/chromium/public/WebKit.h" -#include "webkit/glue/webkit_glue.h" - -WebKitThread::WebKitThread() { -} - -// This happens on the UI thread after the IO thread has been shut down. -WebKitThread::~WebKitThread() { - // We can't just check CurrentlyOn(BrowserThread::UI) because in unit tests, - // MessageLoop::Current is sometimes NULL and other times valid and there's - // no BrowserThread object. Can't check that CurrentlyOn is not IO since - // some unit tests set that BrowserThread for other checks. - DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::WEBKIT)); -} - -void WebKitThread::Initialize() { - DCHECK(!webkit_thread_.get()); - - if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kSingleProcess)) { - // TODO(jorlow): We need a better story for single process mode. - return; - } - - webkit_thread_.reset(new InternalWebKitThread); - bool started = webkit_thread_->Start(); - DCHECK(started); -} - -WebKitThread::InternalWebKitThread::InternalWebKitThread() - : BrowserThread(BrowserThread::WEBKIT) { -} - -WebKitThread::InternalWebKitThread::~InternalWebKitThread() { - Stop(); -} - -void WebKitThread::InternalWebKitThread::Init() { - DCHECK(!webkit_client_.get()); - webkit_client_.reset(new BrowserWebKitClientImpl); - WebKit::initialize(webkit_client_.get()); - webkit_glue::EnableWebCoreLogChannels( - CommandLine::ForCurrentProcess()->GetSwitchValueASCII( - switches::kWebCoreLogChannels)); - - // If possible, post initialization tasks to this thread (rather than doing - // them now) so we don't block the UI thread any longer than we have to. -} - -void WebKitThread::InternalWebKitThread::CleanUp() { - DCHECK(webkit_client_.get()); - WebKit::shutdown(); -} diff --git a/chrome/browser/in_process_webkit/webkit_thread.h b/chrome/browser/in_process_webkit/webkit_thread.h deleted file mode 100644 index ed17434..0000000 --- a/chrome/browser/in_process_webkit/webkit_thread.h +++ /dev/null @@ -1,47 +0,0 @@ -// Copyright (c) 2010 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 CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_THREAD_H_ -#define CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_THREAD_H_ -#pragma once - -#include "base/basictypes.h" -#include "base/scoped_ptr.h" -#include "base/threading/thread.h" -#include "chrome/browser/browser_thread.h" - -class BrowserWebKitClientImpl; - -// This creates a WebKit main thread on instantiation (if not in -// --single-process mode) on construction and kills it on deletion. -class WebKitThread { - public: - // Called from the UI thread. - WebKitThread(); - ~WebKitThread(); - void Initialize(); - - private: - // Must be private so that we can carefully control its lifetime. - class InternalWebKitThread : public BrowserThread { - public: - InternalWebKitThread(); - virtual ~InternalWebKitThread(); - // Does the actual initialization and shutdown of WebKit. Called at the - // beginning and end of the thread's lifetime. - virtual void Init(); - virtual void CleanUp(); - - private: - // The WebKitClient implementation. Only access on WebKit thread. - scoped_ptr<BrowserWebKitClientImpl> webkit_client_; - }; - - // Pointer to the actual WebKitThread. - scoped_ptr<InternalWebKitThread> webkit_thread_; - - DISALLOW_COPY_AND_ASSIGN(WebKitThread); -}; - -#endif // CHROME_BROWSER_IN_PROCESS_WEBKIT_WEBKIT_THREAD_H_ diff --git a/chrome/browser/in_process_webkit/webkit_thread_unittest.cc b/chrome/browser/in_process_webkit/webkit_thread_unittest.cc deleted file mode 100644 index 63296ff3..0000000 --- a/chrome/browser/in_process_webkit/webkit_thread_unittest.cc +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (c) 2009 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 "chrome/browser/in_process_webkit/webkit_thread.h" -#include "testing/gtest/include/gtest/gtest.h" - -TEST(WebKitThreadTest, DISABLED_ExposedInBrowserThread) { - int* null = NULL; // Help the template system out. - EXPECT_FALSE(BrowserThread::DeleteSoon(BrowserThread::WEBKIT, - FROM_HERE, null)); - { - WebKitThread thread; - EXPECT_FALSE(BrowserThread::DeleteSoon(BrowserThread::WEBKIT, - FROM_HERE, null)); - thread.Initialize(); - EXPECT_TRUE(BrowserThread::DeleteSoon(BrowserThread::WEBKIT, - FROM_HERE, null)); - } - EXPECT_FALSE(BrowserThread::DeleteSoon(BrowserThread::WEBKIT, - FROM_HERE, null)); -} diff --git a/chrome/browser/io_thread.cc b/chrome/browser/io_thread.cc index 139bf9e..7839925 100644 --- a/chrome/browser/io_thread.cc +++ b/chrome/browser/io_thread.cc @@ -16,9 +16,6 @@ #include "base/string_util.h" #include "base/threading/thread_restrictions.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/browser_thread.h" -#include "chrome/browser/gpu_process_host.h" -#include "chrome/browser/in_process_webkit/indexed_db_key_utility_client.h" #include "chrome/browser/net/chrome_net_log.h" #include "chrome/browser/net/chrome_url_request_context.h" #include "chrome/browser/net/connect_interceptor.h" @@ -29,6 +26,9 @@ #include "chrome/common/net/raw_host_resolver_proc.h" #include "chrome/common/net/url_fetcher.h" #include "chrome/common/pref_names.h" +#include "content/browser/browser_thread.h" +#include "content/browser/gpu_process_host.h" +#include "content/browser/in_process_webkit/indexed_db_key_utility_client.h" #include "net/base/cert_verifier.h" #include "net/base/cookie_monster.h" #include "net/base/dnsrr_resolver.h" diff --git a/chrome/browser/memory_purger.cc b/chrome/browser/memory_purger.cc index 06c619e..d5716d1 100644 --- a/chrome/browser/memory_purger.cc +++ b/chrome/browser/memory_purger.cc @@ -10,16 +10,16 @@ #include "chrome/browser/browser_list.h" #include "chrome/browser/browser_process.h" #include "chrome/browser/history/history.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/profiles/profile_manager.h" -#include "chrome/browser/renderer_host/backing_store_manager.h" -#include "chrome/browser/renderer_host/render_process_host.h" -#include "chrome/browser/renderer_host/resource_dispatcher_host.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/webdata/web_data_service.h" #include "chrome/common/net/url_request_context_getter.h" #include "chrome/common/notification_service.h" #include "chrome/common/render_messages.h" +#include "content/browser/in_process_webkit/webkit_context.h" +#include "content/browser/renderer_host/backing_store_manager.h" +#include "content/browser/renderer_host/render_process_host.h" +#include "content/browser/renderer_host/resource_dispatcher_host.h" #include "net/proxy/proxy_resolver.h" #include "net/url_request/url_request_context.h" #include "third_party/tcmalloc/chromium/src/google/malloc_extension.h" diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc index f183856..11621eb 100644 --- a/chrome/browser/profiles/profile.cc +++ b/chrome/browser/profiles/profile.cc @@ -27,7 +27,6 @@ #include "chrome/browser/extensions/extension_process_manager.h" #include "chrome/browser/file_system/browser_file_system_helper.h" #include "chrome/browser/host_zoom_map.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/net/pref_proxy_config_service.h" #include "chrome/browser/notifications/desktop_notification_service.h" #include "chrome/browser/prefs/pref_service.h" @@ -44,6 +43,7 @@ #include "chrome/common/notification_service.h" #include "chrome/common/pref_names.h" #include "chrome/common/render_messages.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "grit/browser_resources.h" #include "grit/locale_settings.h" #include "net/base/transport_security_state.h" diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc index 91db2cd..2e4956d 100644 --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc @@ -47,7 +47,6 @@ #include "chrome/browser/history/history.h" #include "chrome/browser/history/top_sites.h" #include "chrome/browser/host_zoom_map.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/instant/instant_controller.h" #include "chrome/browser/net/chrome_url_request_context.h" #include "chrome/browser/net/gaia/token_service.h" @@ -93,6 +92,7 @@ #include "chrome/common/notification_service.h" #include "chrome/common/pref_names.h" #include "chrome/common/render_messages.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "grit/browser_resources.h" #include "grit/locale_settings.h" #include "net/base/transport_security_state.h" diff --git a/chrome/browser/renderer_host/browser_render_process_host.cc b/chrome/browser/renderer_host/browser_render_process_host.cc index f776ac1..e78dcf9 100644 --- a/chrome/browser/renderer_host/browser_render_process_host.cc +++ b/chrome/browser/renderer_host/browser_render_process_host.cc @@ -28,9 +28,7 @@ #include "base/threading/thread.h" #include "base/threading/thread_restrictions.h" #include "chrome/browser/appcache/appcache_dispatcher_host.h" -#include "chrome/browser/browser_child_process_host.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/child_process_security_policy.h" #include "chrome/browser/device_orientation/message_filter.h" #include "chrome/browser/extensions/extension_event_router.h" #include "chrome/browser/extensions/extension_function_dispatcher.h" @@ -39,30 +37,11 @@ #include "chrome/browser/extensions/user_script_master.h" #include "chrome/browser/file_system/file_system_dispatcher_host.h" #include "chrome/browser/geolocation/geolocation_dispatcher_host.h" -#include "chrome/browser/gpu_process_host.h" #include "chrome/browser/history/history.h" -#include "chrome/browser/in_process_webkit/dom_storage_message_filter.h" -#include "chrome/browser/in_process_webkit/indexed_db_dispatcher_host.h" #include "chrome/browser/io_thread.h" #include "chrome/browser/metrics/user_metrics.h" -#include "chrome/browser/mime_registry_message_filter.h" #include "chrome/browser/platform_util.h" -#include "chrome/browser/plugin_service.h" #include "chrome/browser/profiles/profile.h" -#include "chrome/browser/renderer_host/audio_renderer_host.h" -#include "chrome/browser/renderer_host/blob_message_filter.h" -#include "chrome/browser/renderer_host/database_message_filter.h" -#include "chrome/browser/renderer_host/file_utilities_message_filter.h" -#include "chrome/browser/renderer_host/gpu_message_filter.h" -#include "chrome/browser/renderer_host/pepper_file_message_filter.h" -#include "chrome/browser/renderer_host/pepper_message_filter.h" -#include "chrome/browser/renderer_host/render_message_filter.h" -#include "chrome/browser/renderer_host/render_view_host.h" -#include "chrome/browser/renderer_host/render_view_host_delegate.h" -#include "chrome/browser/renderer_host/render_widget_helper.h" -#include "chrome/browser/renderer_host/render_widget_host.h" -#include "chrome/browser/renderer_host/resource_message_filter.h" -#include "chrome/browser/renderer_host/socket_stream_dispatcher_host.h" #include "chrome/browser/renderer_host/web_cache_manager.h" #include "chrome/browser/safe_browsing/client_side_detection_service.h" #include "chrome/browser/search_engines/search_provider_install_state_message_filter.h" @@ -89,6 +68,27 @@ #include "chrome/common/result_codes.h" #include "chrome/renderer/render_process_impl.h" #include "chrome/renderer/render_thread.h" +#include "content/browser/browser_child_process_host.h" +#include "content/browser/child_process_security_policy.h" +#include "content/browser/gpu_process_host.h" +#include "content/browser/in_process_webkit/dom_storage_message_filter.h" +#include "content/browser/in_process_webkit/indexed_db_dispatcher_host.h" +#include "content/browser/mime_registry_message_filter.h" +#include "content/browser/plugin_service.h" +#include "content/browser/renderer_host/audio_renderer_host.h" +#include "content/browser/renderer_host/blob_message_filter.h" +#include "content/browser/renderer_host/database_message_filter.h" +#include "content/browser/renderer_host/file_utilities_message_filter.h" +#include "content/browser/renderer_host/gpu_message_filter.h" +#include "content/browser/renderer_host/pepper_file_message_filter.h" +#include "content/browser/renderer_host/pepper_message_filter.h" +#include "content/browser/renderer_host/render_message_filter.h" +#include "content/browser/renderer_host/render_view_host.h" +#include "content/browser/renderer_host/render_view_host_delegate.h" +#include "content/browser/renderer_host/render_widget_helper.h" +#include "content/browser/renderer_host/render_widget_host.h" +#include "content/browser/renderer_host/resource_message_filter.h" +#include "content/browser/renderer_host/socket_stream_dispatcher_host.h" #include "grit/generated_resources.h" #include "ipc/ipc_logging.h" #include "ipc/ipc_message.h" diff --git a/chrome/browser/sessions/tab_restore_service.h b/chrome/browser/sessions/tab_restore_service.h index 932de55..8ad7321 100644 --- a/chrome/browser/sessions/tab_restore_service.h +++ b/chrome/browser/sessions/tab_restore_service.h @@ -12,10 +12,10 @@ #include "base/observer_list.h" #include "base/time.h" -#include "chrome/browser/in_process_webkit/session_storage_namespace.h" #include "chrome/browser/sessions/base_session_service.h" #include "chrome/browser/sessions/session_id.h" #include "chrome/browser/sessions/session_types.h" +#include "content/browser/in_process_webkit/session_storage_namespace.h" class Browser; class NavigationController; diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 6db074f..7ec826f 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -1322,30 +1322,6 @@ 'browser/importer/safari_importer.mm', 'browser/importer/toolbar_importer.cc', 'browser/importer/toolbar_importer.h', - 'browser/in_process_webkit/browser_webkitclient_impl.cc', - 'browser/in_process_webkit/browser_webkitclient_impl.h', - 'browser/in_process_webkit/dom_storage_area.cc', - 'browser/in_process_webkit/dom_storage_area.h', - 'browser/in_process_webkit/dom_storage_context.cc', - 'browser/in_process_webkit/dom_storage_context.h', - 'browser/in_process_webkit/dom_storage_message_filter.cc', - 'browser/in_process_webkit/dom_storage_message_filter.h', - 'browser/in_process_webkit/dom_storage_namespace.cc', - 'browser/in_process_webkit/dom_storage_namespace.h', - 'browser/in_process_webkit/indexed_db_callbacks.cc', - 'browser/in_process_webkit/indexed_db_callbacks.h', - 'browser/in_process_webkit/indexed_db_context.cc', - 'browser/in_process_webkit/indexed_db_context.h', - 'browser/in_process_webkit/indexed_db_dispatcher_host.cc', - 'browser/in_process_webkit/indexed_db_dispatcher_host.h', - 'browser/in_process_webkit/indexed_db_key_utility_client.cc', - 'browser/in_process_webkit/indexed_db_key_utility_client.h', - 'browser/in_process_webkit/session_storage_namespace.cc', - 'browser/in_process_webkit/session_storage_namespace.h', - 'browser/in_process_webkit/webkit_context.cc', - 'browser/in_process_webkit/webkit_context.h', - 'browser/in_process_webkit/webkit_thread.cc', - 'browser/in_process_webkit/webkit_thread.h', 'browser/instant/instant_commit_type.h', 'browser/instant/instant_confirm_dialog.cc', 'browser/instant/instant_confirm_dialog.h', diff --git a/chrome/chrome_tests.gypi b/chrome/chrome_tests.gypi index 8c99ce1..1643398 100644 --- a/chrome/chrome_tests.gypi +++ b/chrome/chrome_tests.gypi @@ -557,7 +557,6 @@ 'browser/history/redirect_uitest.cc', 'browser/iframe_uitest.cc', 'browser/images_uitest.cc', - 'browser/in_process_webkit/dom_storage_uitest.cc', 'browser/locale_tests_uitest.cc', 'browser/media_uitest.cc', 'browser/metrics/metrics_service_uitest.cc', @@ -600,6 +599,7 @@ 'test/ui/sunspider_uitest.cc', 'test/ui/v8_benchmark_uitest.cc', 'worker/worker_uitest.cc', + '../content/browser/in_process_webkit/dom_storage_uitest.cc', '../content/browser/renderer_host/resource_dispatcher_host_uitest.cc', ], 'conditions': [ @@ -1359,9 +1359,6 @@ 'browser/importer/safari_importer_unittest.mm', 'browser/importer/toolbar_importer_unittest.cc', 'browser/instant/instant_loader_manager_unittest.cc', - 'browser/in_process_webkit/dom_storage_message_filter_unittest.cc', - 'browser/in_process_webkit/webkit_context_unittest.cc', - 'browser/in_process_webkit/webkit_thread_unittest.cc', 'browser/instant/promo_counter_unittest.cc', 'browser/keychain_mock_mac.cc', 'browser/keychain_mock_mac.h', @@ -1849,6 +1846,8 @@ '../content/browser/child_process_security_policy_unittest.cc', '../content/browser/gpu_blacklist_unittest.cc', '../content/browser/host_zoom_map_unittest.cc', + '../content/browser/in_process_webkit/webkit_context_unittest.cc', + '../content/browser/in_process_webkit/webkit_thread_unittest.cc', '../content/browser/plugin_service_unittest.cc', '../content/browser/renderer_host/audio_renderer_host_unittest.cc', '../content/browser/renderer_host/render_view_host_unittest.cc', @@ -2260,8 +2259,6 @@ 'browser/ui/gtk/view_id_util_browsertest.cc', 'browser/history/history_browsertest.cc', 'browser/idbbindingutilities_browsertest.cc', - 'browser/in_process_webkit/dom_storage_browsertest.cc', - 'browser/in_process_webkit/indexed_db_browsertest.cc', 'browser/net/cookie_policy_browsertest.cc', 'browser/net/ftp_browsertest.cc', 'browser/plugin_data_remover_browsertest.cc', @@ -2323,6 +2320,8 @@ 'test/render_view_test.cc', 'test/render_view_test.h', '../content/browser/child_process_security_policy_browsertest.cc', + '../content/browser/in_process_webkit/dom_storage_browsertest.cc', + '../content/browser/in_process_webkit/indexed_db_browsertest.cc', '../content/browser/plugin_service_browsertest.cc', '../content/browser/renderer_host/render_process_host_browsertest.cc', '../content/browser/renderer_host/render_view_host_browsertest.cc', diff --git a/chrome/test/testing_profile.cc b/chrome/test/testing_profile.cc index a797cf6..a9baafd 100644 --- a/chrome/test/testing_profile.cc +++ b/chrome/test/testing_profile.cc @@ -14,7 +14,6 @@ #include "base/string_number_conversions.h" #include "chrome/browser/autocomplete/autocomplete_classifier.h" #include "chrome/browser/bookmarks/bookmark_model.h" -#include "chrome/browser/browser_thread.h" #include "chrome/browser/content_settings/host_content_settings_map.h" #include "chrome/browser/custom_handlers/protocol_handler_registry.h" #include "chrome/browser/extensions/extension_pref_value_map.h" @@ -25,7 +24,6 @@ #include "chrome/browser/history/history.h" #include "chrome/browser/history/history_backend.h" #include "chrome/browser/history/top_sites.h" -#include "chrome/browser/in_process_webkit/webkit_context.h" #include "chrome/browser/net/gaia/token_service.h" #include "chrome/browser/net/pref_proxy_config_service.h" #include "chrome/browser/notifications/desktop_notification_service.h" @@ -46,6 +44,8 @@ #include "chrome/test/test_url_request_context_getter.h" #include "chrome/test/testing_pref_service.h" #include "chrome/test/ui_test_utils.h" +#include "content/browser/browser_thread.h" +#include "content/browser/in_process_webkit/webkit_context.h" #include "net/base/cookie_monster.h" #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_test_util.h" |